Merge pull request #2274 from esdrubal/udpclientreceive
authorMarcos Henrich <marcoshenrich@gmail.com>
Wed, 13 Jan 2016 10:17:38 +0000 (10:17 +0000)
committerMarcos Henrich <marcoshenrich@gmail.com>
Wed, 13 Jan 2016 10:17:38 +0000 (10:17 +0000)
Fixes UdpClient.Receive with IPv6 endpoint

1361 files changed:
.gitignore
Makefile.am
README.md
acceptance-tests/.gitignore [new file with mode: 0644]
acceptance-tests/GCStressTests/AssemblyExtensions.cs [new file with mode: 0644]
acceptance-tests/GCStressTests/AssemblyLoadContext.cs [new file with mode: 0644]
acceptance-tests/Makefile.am [new file with mode: 0644]
acceptance-tests/README.md [new file with mode: 0644]
acceptance-tests/SUBMODULES.json [new file with mode: 0644]
acceptance-tests/versions.mk [new file with mode: 0644]
acceptance-tests/versions.py [new file with mode: 0755]
code_of_conduct.md [new file with mode: 0644]
configure.ac
data/Makefile.am
data/gdb-pre7.0/mono-gdb.py
data/gdb/mono-gdb.py
data/lldb/monobt.py [new file with mode: 0644]
eglib/src/gbytearray.c
eglib/src/glib.h
external/ikdasm
external/referencesource
libgc/alloc.c
libgc/finalize.c
libgc/include/gc.h
libgc/include/private/gc_priv.h
libgc/include/private/pthread_support.h
libgc/misc.c
libgc/pthread_support.c
libgc/solaris_threads.c
libgc/win32_threads.c
man/al.1
man/mono.1
man/signcode.1
mcs/Makefile
mcs/build/profiles/monotouch.make
mcs/build/profiles/monotouch_runtime.make
mcs/build/profiles/monotouch_tv.make
mcs/build/profiles/monotouch_tv_runtime.make [new file with mode: 0644]
mcs/build/profiles/monotouch_watch.make
mcs/build/profiles/monotouch_watch_runtime.make [new file with mode: 0644]
mcs/build/profiles/xammac.make
mcs/build/profiles/xammac_net_4_5.make
mcs/class/Accessibility/Accessibility-net_4_5.csproj [deleted file]
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_5.csproj [deleted file]
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-tests-net_4_5.csproj [deleted file]
mcs/class/Cscompmgd/Cscompmgd-net_4_5.csproj [deleted file]
mcs/class/Cscompmgd/Cscompmgd-tests-net_4_5.csproj [deleted file]
mcs/class/CustomMarshalers/CustomMarshalers-net_4_5.csproj [deleted file]
mcs/class/Facades/Makefile
mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Collections/System.Collections-net_4_5.csproj [deleted file]
mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations-net_4_5.csproj [deleted file]
mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync-net_4_5.csproj [deleted file]
mcs/class/Facades/System.ComponentModel/System.ComponentModel-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Diagnostics.Tracing/System.Diagnostics.Tracing-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Globalization/System.Globalization-net_4_5.csproj [deleted file]
mcs/class/Facades/System.IO.Compression/AssemblyInfo.cs [deleted file]
mcs/class/Facades/System.IO.Compression/Makefile [deleted file]
mcs/class/Facades/System.IO.Compression/System.IO.Compression-net_4_x.csproj [deleted file]
mcs/class/Facades/System.IO.Compression/System.IO.Compression.dll.sources [deleted file]
mcs/class/Facades/System.IO.Compression/TypeForwarders.cs [deleted file]
mcs/class/Facades/System.IO/System.IO-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Linq/System.Linq-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Net.Primitives/System.Net.Primitives-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Net.Requests/System.Net.Requests-net_4_5.csproj [deleted file]
mcs/class/Facades/System.ObjectModel/System.ObjectModel-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Reflection.Emit.ILGeneration/System.Reflection.Emit.ILGeneration-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Reflection.Emit.Lightweight/System.Reflection.Emit.Lightweight-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Reflection.Emit/System.Reflection.Emit-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Reflection/System.Reflection-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Runtime.InteropServices.WindowsRuntime/System.Runtime.InteropServices.WindowsRuntime-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Runtime/System.Runtime-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Security.Principal/System.Security.Principal-net_4_5.csproj [deleted file]
mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http-net_4_5.csproj [deleted file]
mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives-net_4_5.csproj [deleted file]
mcs/class/Facades/System.ServiceModel.Security/System.ServiceModel.Security-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions-net_4_5.sln [new file with mode: 0644]
mcs/class/Facades/System.Text.Encoding/System.Text.Encoding-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Threading.Timer/System.Threading.Timer-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Threading/System.Threading-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument-net_4_5.csproj [deleted file]
mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer-net_4_5.csproj [deleted file]
mcs/class/Facades/subdirs.make [new file with mode: 0644]
mcs/class/I18N/CJK/I18N.CJK-net_4_5.csproj [deleted file]
mcs/class/I18N/CJK/I18N.CJK-tests-net_4_5.csproj [deleted file]
mcs/class/I18N/Common/I18N-net_4_5.csproj [deleted file]
mcs/class/I18N/MidEast/I18N.MidEast-net_4_5.csproj [deleted file]
mcs/class/I18N/MidEast/I18N.MidEast-tests-net_4_5.csproj [deleted file]
mcs/class/I18N/Other/I18N.Other-net_4_5.csproj [deleted file]
mcs/class/I18N/Rare/I18N.Rare-net_4_5.csproj [deleted file]
mcs/class/I18N/West/I18N.West-net_4_5.csproj [deleted file]
mcs/class/I18N/West/I18N.West-tests-net_4_5.csproj [deleted file]
mcs/class/I18N/tools/ucm2cp.c
mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_4_5.csproj [deleted file]
mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj [deleted file]
mcs/class/Makefile
mcs/class/Microsoft.Build.Engine/Makefile
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Expression.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/MemberInvocationReference.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj [deleted file]
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-tests-net_4_5.csproj [deleted file]
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ProjectTest.cs
mcs/class/Microsoft.Build.Engine/Test/various/Properties.cs
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj [deleted file]
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-tests-net_4_5.csproj [deleted file]
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_5.csproj [deleted file]
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_x.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-tests-net_4_5.csproj [deleted file]
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-xbuild_12.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks.dll.sources
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/AssignProjectConfiguration.cs
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/XmlPeek.cs [new file with mode: 0644]
mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/CodeTaskFactoryTest.cs
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj [deleted file]
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-tests-net_4_5.csproj [deleted file]
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/TargetDotNetFrameworkVersion.cs
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs
mcs/class/Microsoft.Build/Microsoft.Build-net_4_5.csproj [deleted file]
mcs/class/Microsoft.Build/Microsoft.Build-tests-net_4_5.csproj [deleted file]
mcs/class/Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj [deleted file]
mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_4_5.csproj [deleted file]
mcs/class/Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj [deleted file]
mcs/class/Mono.C5/Mono.C5-net_4_5.csproj [deleted file]
mcs/class/Mono.C5/Mono.C5-tests-net_4_5.csproj [deleted file]
mcs/class/Mono.CSharp/Makefile
mcs/class/Mono.CSharp/Mono.CSharp-net_4_5.csproj [deleted file]
mcs/class/Mono.CSharp/Mono.CSharp-net_4_x.csproj
mcs/class/Mono.CSharp/Mono.CSharp-tests-net_4_5.csproj [deleted file]
mcs/class/Mono.CSharp/Test/Evaluator/ExpressionsTest.cs
mcs/class/Mono.Cairo/Mono.Cairo-net_4_5.csproj [deleted file]
mcs/class/Mono.Cairo/Mono.Cairo/Context.cs
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_5.csproj [deleted file]
mcs/class/Mono.Cecil/Mono.Cecil-net_4_5.csproj [deleted file]
mcs/class/Mono.CodeContracts/Mono.CodeContracts-net_4_5.csproj [deleted file]
mcs/class/Mono.CodeContracts/Mono.CodeContracts-tests-net_4_5.csproj [deleted file]
mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_5.csproj [deleted file]
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj [deleted file]
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-tests-net_4_5.csproj [deleted file]
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3_UTF16.cs
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/UnsafeNativeMethods.cs
mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_4_5.csproj [deleted file]
mcs/class/Mono.Data.Tds/Mono.Data.Tds-tests-net_4_5.csproj [deleted file]
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_4_5.csproj [deleted file]
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-tests-net_4_5.csproj [deleted file]
mcs/class/Mono.Http/Mono.Http-net_4_5.csproj [deleted file]
mcs/class/Mono.Management/Mono.Management-net_4_5.csproj [deleted file]
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_4_5.csproj [deleted file]
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-tests-net_4_5.csproj [deleted file]
mcs/class/Mono.Messaging/Mono.Messaging-net_4_5.csproj [deleted file]
mcs/class/Mono.Messaging/Mono.Messaging-tests-net_4_5.csproj [deleted file]
mcs/class/Mono.Options/Mono.Options-net_4_5.csproj [deleted file]
mcs/class/Mono.Options/Mono.Options-tests-net_4_5.csproj [deleted file]
mcs/class/Mono.Parallel/Mono.Parallel-net_4_5.csproj [deleted file]
mcs/class/Mono.Parallel/Mono.Parallel-tests-net_4_5.csproj [deleted file]
mcs/class/Mono.Posix/Mono.Posix-net_4_5.csproj [deleted file]
mcs/class/Mono.Posix/Mono.Posix-tests-net_4_5.csproj [deleted file]
mcs/class/Mono.Posix/Mono.Unix.Native/Stdlib.cs
mcs/class/Mono.Posix/Mono.Unix/UnixClient.cs
mcs/class/Mono.Posix/Mono.Unix/UnixSignal.cs
mcs/class/Mono.Posix/Test/Mono.Unix.Native/SocketTest.cs
mcs/class/Mono.Posix/Test/Mono.Unix/UnixSignalTest.cs
mcs/class/Mono.Security.Providers.DotNet/Makefile [new file with mode: 0644]
mcs/class/Mono.Security.Providers.DotNet/Mono.Security.Providers.DotNet-net_4_x.csproj [new file with mode: 0644]
mcs/class/Mono.Security.Providers.DotNet/Mono.Security.Providers.DotNet.dll.sources [new file with mode: 0644]
mcs/class/Mono.Security.Providers.DotNet/Mono.Security.Providers.DotNet/DotNetSslStreamImpl.cs [new file with mode: 0644]
mcs/class/Mono.Security.Providers.DotNet/Mono.Security.Providers.DotNet/DotNetTlsProvider.cs [new file with mode: 0644]
mcs/class/Mono.Security.Providers.DotNet/Properties/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Mono.Security.Providers.DotNet/README.md [new file with mode: 0644]
mcs/class/Mono.Security.Providers.NewSystemSource/Makefile [new file with mode: 0644]
mcs/class/Mono.Security.Providers.NewSystemSource/Mono.Security.Providers.NewSystemSource-net_4_x.csproj [new file with mode: 0644]
mcs/class/Mono.Security.Providers.NewSystemSource/Mono.Security.Providers.NewSystemSource.dll.sources [new file with mode: 0644]
mcs/class/Mono.Security.Providers.NewSystemSource/Properties/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Mono.Security.Providers.NewSystemSource/README.md [new file with mode: 0644]
mcs/class/Mono.Security.Providers.OldTls/Makefile [new file with mode: 0644]
mcs/class/Mono.Security.Providers.OldTls/Mono.Security.Providers.OldTls-net_4_x.csproj [new file with mode: 0644]
mcs/class/Mono.Security.Providers.OldTls/Mono.Security.Providers.OldTls.dll.sources [new file with mode: 0644]
mcs/class/Mono.Security.Providers.OldTls/Mono.Security.Providers.OldTls/OldTlsProvider.cs [new file with mode: 0644]
mcs/class/Mono.Security.Providers.OldTls/Properties/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_4_5.csproj [deleted file]
mcs/class/Mono.Security/Makefile
mcs/class/Mono.Security/Mono.Security-net_4_5.csproj [deleted file]
mcs/class/Mono.Security/Mono.Security-net_4_x.csproj
mcs/class/Mono.Security/Mono.Security-tests-net_4_5.csproj [deleted file]
mcs/class/Mono.Security/Mono.Security.Authenticode/AuthenticodeFormatter.cs
mcs/class/Mono.Security/Mono.Security.Interface/Alert.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/CertificateValidationHelper.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/CipherAlgorithmType.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/CipherSuiteCode.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/ExchangeAlgorithmType.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/HashAlgorithmType.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/IBufferOffsetSize.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/IMonoSslStream.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/IMonoTlsContext.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/IMonoTlsEventSink.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsConnectionInfo.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsProvider.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsProviderFactory.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsSettings.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/README.md [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/TlsException.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/TlsProtocolCode.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Interface/TlsProtocols.cs [new file with mode: 0644]
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificate.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificate.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/RecordProtocol.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ServerContext.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ServerRecordProtocol.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs
mcs/class/Mono.Security/Mono.Security.X509/PKCS12.cs
mcs/class/Mono.Security/Mono.Security.dll.sources
mcs/class/Mono.Security/mobile_Mono.Security.dll.sources [new file with mode: 0644]
mcs/class/Mono.Security/mobile_static_Mono.Security.dll.sources [new file with mode: 0644]
mcs/class/Mono.Security/monodroid_Mono.Security.dll.sources [new file with mode: 0644]
mcs/class/Mono.Security/monotouch_Mono.Security.dll.sources
mcs/class/Mono.Security/xammac_Mono.Security.dll.sources
mcs/class/Mono.Simd/Mono.Simd-net_4_5.csproj [deleted file]
mcs/class/Mono.Tasklets/Mono.Tasklets-net_4_5.csproj [deleted file]
mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_4_5.csproj [deleted file]
mcs/class/Mono.XBuild.Tasks/Mono.XBuild.Tasks-net_4_5.csproj [deleted file]
mcs/class/Mono.XBuild.Tasks/Mono.XBuild.Tasks-tests-net_4_5.csproj [deleted file]
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_5.csproj [deleted file]
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-tests-net_4_5.csproj [deleted file]
mcs/class/PEAPI/PEAPI-net_4_5.csproj [deleted file]
mcs/class/RabbitMQ.Client/src/apigen/RabbitMQ.Client.Apigen-net_4_5.csproj [deleted file]
mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_5.csproj [deleted file]
mcs/class/System.ComponentModel.Composition.4.5/System.ComponentModel.Composition-net_4_5.csproj [deleted file]
mcs/class/System.ComponentModel.DataAnnotations/DataAnnotationsResources.cs
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj [deleted file]
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_x.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-tests-net_4_5.csproj [deleted file]
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations.dll.sources
mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/DisplayAttributeTest.cs
mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/RegularExpressionAttributeTest.cs
mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/ValidationAttributeTest.cs
mcs/class/System.Configuration.Install/System.Configuration.Install-net_4_5.csproj [deleted file]
mcs/class/System.Configuration/System.Configuration-net_4_5.csproj [deleted file]
mcs/class/System.Configuration/System.Configuration-tests-net_4_5.csproj [deleted file]
mcs/class/System.Core/ReferenceSources/SR.cs
mcs/class/System.Core/System.Core-net_4_5.csproj [deleted file]
mcs/class/System.Core/System.Core-net_4_x.csproj
mcs/class/System.Core/System.Core-plaincore-net_4_5.csproj [deleted file]
mcs/class/System.Core/System.Core-plaincore-net_4_x.csproj
mcs/class/System.Core/System.Core-tests-net_4_5.csproj [deleted file]
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Call.cs
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Equal.cs
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_NotEqual.cs
mcs/class/System.Core/common_System.Core.dll.sources
mcs/class/System.Core/dynamic_System.Core.dll.sources
mcs/class/System.Core/interpreter_System.Core.dll.sources
mcs/class/System.Core/monotouch_tv_runtime_System.Core.dll.sources [new file with mode: 0644]
mcs/class/System.Core/monotouch_watch_runtime_System.Core.dll.sources [new file with mode: 0644]
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_4_5.csproj [deleted file]
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-tests-net_4_5.csproj [deleted file]
mcs/class/System.Data.Entity/System.Data.Entity-net_4_5.csproj [deleted file]
mcs/class/System.Data.Linq/System.Data.Linq-net_4_5.csproj [deleted file]
mcs/class/System.Data.Linq/System.Data.Linq-tests-net_4_5.csproj [deleted file]
mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_4_5.csproj [deleted file]
mcs/class/System.Data.OracleClient/System.Data.OracleClient-tests-net_4_5.csproj [deleted file]
mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_5.csproj [deleted file]
mcs/class/System.Data.Services/System.Data.Services-net_4_5.csproj [deleted file]
mcs/class/System.Data.Services/System.Data.Services-tests-net_4_5.csproj [deleted file]
mcs/class/System.Data/MobileStubs.cs [new file with mode: 0644]
mcs/class/System.Data/ReferenceSources/Res.cs
mcs/class/System.Data/System.Data-net_4_5.csproj [deleted file]
mcs/class/System.Data/System.Data-net_4_x.csproj
mcs/class/System.Data/System.Data-tests-net_4_5.csproj [deleted file]
mcs/class/System.Data/System.Data.SqlClient/SqlDataReader.cs
mcs/class/System.Data/Test/System.Data/DataViewTest.cs
mcs/class/System.Data/mobile_referencesource.sources
mcs/class/System.Data/referencesource.sources
mcs/class/System.Design/System.Design-net_4_5.csproj [deleted file]
mcs/class/System.Design/System.Design-tests-net_4_5.csproj [deleted file]
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols-net_4_5.csproj [deleted file]
mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_5.csproj [deleted file]
mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_x.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-tests-net_4_5.csproj [deleted file]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryObjectNotFoundException.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.dll.sources
mcs/class/System.Drawing.Design/System.Drawing.Design-net_4_5.csproj [deleted file]
mcs/class/System.Drawing/System.Drawing-net_4_5.csproj [deleted file]
mcs/class/System.Drawing/System.Drawing-tests-net_4_5.csproj [deleted file]
mcs/class/System.Drawing/System.Drawing/Color.cs
mcs/class/System.Drawing/System.Drawing/ColorTranslator.cs
mcs/class/System.Drawing/System.Drawing/KnownColors.cs
mcs/class/System.Drawing/System.Drawing/Point.cs
mcs/class/System.Drawing/System.Drawing/Rectangle.cs
mcs/class/System.Drawing/System.Drawing/Size.cs
mcs/class/System.Drawing/System.Drawing/SizeF.cs
mcs/class/System.Drawing/Test/System.Drawing/ColorTranslator.cs
mcs/class/System.Dynamic/System.Dynamic-net_4_5.csproj [deleted file]
mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj [deleted file]
mcs/class/System.IO.Compression.FileSystem/System.IO.Compression.FileSystem-net_4_5.csproj [deleted file]
mcs/class/System.IO.Compression/System.IO.Compression-net_4_5.csproj [deleted file]
mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj [deleted file]
mcs/class/System.IdentityModel/System.IdentityModel-net_4_5.csproj [deleted file]
mcs/class/System.IdentityModel/System.IdentityModel-tests-net_4_5.csproj [deleted file]
mcs/class/System.Json.Microsoft/System.Json.Microsoft-net_4_5.csproj [deleted file]
mcs/class/System.Json.Microsoft/System.Json.Microsoft-tests-net_4_5.csproj [deleted file]
mcs/class/System.Json/System.Json-net_4_5.csproj [deleted file]
mcs/class/System.Json/System.Json-tests-net_4_5.csproj [deleted file]
mcs/class/System.Management/System.Management-net_4_5.csproj [deleted file]
mcs/class/System.Messaging/System.Messaging-net_4_5.csproj [deleted file]
mcs/class/System.Messaging/System.Messaging-tests-net_4_5.csproj [deleted file]
mcs/class/System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj [deleted file]
mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest-net_4_5.csproj [deleted file]
mcs/class/System.Net.Http/System.Net.Http-net_4_5.csproj [deleted file]
mcs/class/System.Net.Http/System.Net.Http-tests-net_4_5.csproj [deleted file]
mcs/class/System.Net.Http/System.Net.Http/HttpClient.cs
mcs/class/System.Net.Http/Test/System.Net.Http/HttpClientTest.cs
mcs/class/System.Net/System.Net-net_4_5.csproj [deleted file]
mcs/class/System.Numerics/System.Numerics-net_4_5.csproj [deleted file]
mcs/class/System.Numerics/System.Numerics-tests-net_4_5.csproj [deleted file]
mcs/class/System.Reactive.Core/System.Reactive.Core-net_4_5.csproj [deleted file]
mcs/class/System.Reactive.Debugger/System.Reactive.Debugger-net_4_5.csproj [deleted file]
mcs/class/System.Reactive.Experimental/System.Reactive.Experimental-net_4_5.csproj [deleted file]
mcs/class/System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj [deleted file]
mcs/class/System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj [deleted file]
mcs/class/System.Reactive.Observable.Aliases/System.Reactive.Observable.Aliases-net_4_5.csproj [deleted file]
mcs/class/System.Reactive.PlatformServices/System.Reactive.PlatformServices-net_4_5.csproj [deleted file]
mcs/class/System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj [deleted file]
mcs/class/System.Reactive.Runtime.Remoting/System.Reactive.Runtime.Remoting-net_4_5.csproj [deleted file]
mcs/class/System.Reactive.Windows.Forms/System.Reactive.Windows.Forms-net_4_5.csproj [deleted file]
mcs/class/System.Reactive.Windows.Threading/System.Reactive.Windows.Threading-net_4_5.csproj [deleted file]
mcs/class/System.Runtime.Caching/ReferenceSources/CacheEntryCollection.cs
mcs/class/System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj [deleted file]
mcs/class/System.Runtime.Caching/System.Runtime.Caching-tests-net_4_5.csproj [deleted file]
mcs/class/System.Runtime.Caching/Test/System.Runtime.Caching/MemoryCacheTest.cs
mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-net_4_5.csproj [deleted file]
mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-tests-net_4_5.csproj [deleted file]
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_4_5.csproj [deleted file]
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-tests-net_4_5.csproj [deleted file]
mcs/class/System.Runtime.Remoting/Test/IpcChannelTest.cs
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj [deleted file]
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-tests-net_4_5.csproj [deleted file]
mcs/class/System.Runtime.Serialization/ReferenceSources/XmlFormatReaderGenerator_static.cs
mcs/class/System.Runtime.Serialization/ReferenceSources/XmlFormatWriterGenerator_static.cs
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-tests-net_4_5.csproj [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization_test.dll.sources
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization.Json/ChangeLog [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization.Json/JsonReaderTest.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization.Json/JsonWriterTest.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/Bug36100.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/DataContractSerializerTest_ISerializable.cs [new file with mode: 0644]
mcs/class/System.Security/System.Security-net_4_5.csproj [deleted file]
mcs/class/System.Security/System.Security-tests-net_4_5.csproj [deleted file]
mcs/class/System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj [deleted file]
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-net_4_5.csproj [deleted file]
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-tests-net_4_5.csproj [deleted file]
mcs/class/System.ServiceModel.Internals/Makefile
mcs/class/System.ServiceModel.Internals/MobileStubs.cs [new file with mode: 0644]
mcs/class/System.ServiceModel.Internals/mobile_System.ServiceModel.Internals.dll.sources [new file with mode: 0644]
mcs/class/System.ServiceModel.Internals/monotouch_System.ServiceModel.Internals.dll.sources [new file with mode: 0644]
mcs/class/System.ServiceModel.Internals/monotouch_tv_System.ServiceModel.Internals.dll.sources [new file with mode: 0644]
mcs/class/System.ServiceModel.Internals/xammac_System.ServiceModel.Internals.dll.sources [new file with mode: 0644]
mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing-net_4_5.csproj [deleted file]
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ChangeLog [deleted file]
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/DataContractJsonSerializer.cs [deleted file]
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/DataContractJsonSerializerSettings.cs [deleted file]
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/IXmlJsonReaderInitializer.cs [deleted file]
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/IXmlJsonWriterInitializer.cs [deleted file]
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReader.cs [deleted file]
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReaderWriterFactory.cs [deleted file]
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationReader.cs [deleted file]
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs [deleted file]
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonWriter.cs [deleted file]
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/TypeMap.cs [deleted file]
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_4_5.csproj [deleted file]
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-tests-net_4_5.csproj [deleted file]
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web_test.dll.sources
mcs/class/System.ServiceModel.Web/System.ServiceModel/WebHttpBinding.cs
mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/ChangeLog [deleted file]
mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs [deleted file]
mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/JsonReaderTest.cs [deleted file]
mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/JsonWriterTest.cs [deleted file]
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel/WebHttpBindingTest.cs
mcs/class/System.ServiceModel/System.ServiceModel-net_4_5.csproj [deleted file]
mcs/class/System.ServiceModel/System.ServiceModel-plainservice-net_4_5.csproj [deleted file]
mcs/class/System.ServiceModel/System.ServiceModel-tests-net_4_5.csproj [deleted file]
mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpListenerManager.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpReplyChannel.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels.NetTcp/TcpReplyChannel.cs
mcs/class/System.ServiceModel/System.ServiceModel/NetTcpBinding.cs
mcs/class/System.ServiceModel/System.ServiceModel/ServiceHost.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/MetadataExchangeBindingsTest.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceDebugBehaviorTest.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/Bug32886Test.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/Bug652331Test.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/Bug652331_2Test.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/ChannelDispatcherTest.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel/NetTcpBindingTest.cs
mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostTest.cs
mcs/class/System.ServiceProcess/System.ServiceProcess-net_4_5.csproj [deleted file]
mcs/class/System.ServiceProcess/System.ServiceProcess-tests-net_4_5.csproj [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowBlockOptions.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowLinkOptions.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowMessageHeader.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowMessageStatus.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/IDataflowBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/IPropagatorBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/IReceivableSourceBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/ISourceBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/ITargetBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/ActionBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/BatchBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/BatchedJoinBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/BroadcastBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/BufferBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/JoinBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/TransformBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/TransformManyBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/WriteOnceBlock.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ActionOnDispose.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/Common.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ConcurrentQueue.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/DataflowEtwProvider.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/EnumerableDebugView.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/IDebuggerDisplay.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/IProducerConsumerCollection.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ImmutableList.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/Padding.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ProducerConsumerQueues.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/QueuedMap.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ReorderingBuffer.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/SourceCore.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/SpscTargetCore.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/TargetCore.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/TargetRegistry.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/Threading.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Resources/Strings.resx [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/Makefile
mcs/class/System.Threading.Tasks.Dataflow/README.md [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/SR.cs [new file with mode: 0644]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-net_4_5.csproj [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-net_4_x.csproj
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-tests-net_4_5.csproj [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow.dll.sources
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ActionBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/AsyncExecutingMessageBox.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BatchBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BatchedJoinBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BatchedJoinBlock`3.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BroadcastBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BroadcastOutgoingQueue.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BufferBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ChooserBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/CompletionHelper.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowBlockOptions.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowLinkOptions.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowMessageHeader.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowMessageStatus.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ExecutingMessageBox.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ExecutingMessageBoxBase.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ExecutionDataflowBlockOptions.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/GroupingDataflowBlockOptions.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/IDataflowBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/IPropagatorBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/IReceivableSourceBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ISourceBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ITargetBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/JoinBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/JoinBlock`3.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/JoinTarget.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/MessageBox.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/NameHelper.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/NullTargetBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ObservableDataflowBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ObserverDataflowBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/OutgoingQueue.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/OutgoingQueueBase.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/OutputAvailableBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/PassingMessageBox.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/PredicateBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/PropagatorWrapperBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ReceiveBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/SendBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/TargetCollection.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/TransformBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/TransformManyBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/WriteOnceBlock.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow_test.dll.sources
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/ActionBlockTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/BatchBlockTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/BatchedJoinBlockTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/BatchedJoinBlock`3Test.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/BoundedCapacityTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/BroadcastBlockTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/ChooseTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/CompletionHelperTest.cs [deleted file]
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/CompletionTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/DataflowBlockTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/ExecutionBlocksTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/JoinBlockTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/JoinBlock`3Test.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/OptionsTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/OutputAvailableTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/PropagateCompletionTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/ReceivingTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/TransformBlockTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/TransformManyBlockTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/WriteOnceBlockTest.cs
mcs/class/System.Transactions/System.Transactions-net_4_5.csproj [deleted file]
mcs/class/System.Transactions/System.Transactions-tests-net_4_5.csproj [deleted file]
mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj [deleted file]
mcs/class/System.Web.Abstractions/System.Web.Abstractions-tests-net_4_5.csproj [deleted file]
mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj [deleted file]
mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_4_5.csproj [deleted file]
mcs/class/System.Web.DynamicData/System.Web.DynamicData-tests-net_4_5.csproj [deleted file]
mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_4_5.csproj [deleted file]
mcs/class/System.Web.Extensions/System.Web.Extensions-net_4_5.csproj [deleted file]
mcs/class/System.Web.Extensions/System.Web.Extensions-tests-net_4_5.csproj [deleted file]
mcs/class/System.Web.Http.SelfHost/System.Web.Http.SelfHost-net_4_5.csproj [deleted file]
mcs/class/System.Web.Http.WebHost/System.Web.Http.WebHost-net_4_5.csproj [deleted file]
mcs/class/System.Web.Http/System.Web.Http-net_4_5.csproj [deleted file]
mcs/class/System.Web.Mvc3/System.Web.Mvc3-net_4_5.csproj [deleted file]
mcs/class/System.Web.Razor/System.Web.Razor-net_4_5.csproj [deleted file]
mcs/class/System.Web.Routing/System.Web.Routing-net_4_5.csproj [deleted file]
mcs/class/System.Web.Routing/System.Web.Routing-tests-net_4_5.csproj [deleted file]
mcs/class/System.Web.Routing/Test/System.Web.Routing/RouteCollectionTest.cs
mcs/class/System.Web.Services/Makefile
mcs/class/System.Web.Services/System.Web.Services-net_4_5.csproj [deleted file]
mcs/class/System.Web.Services/System.Web.Services-tests-net_4_5.csproj [deleted file]
mcs/class/System.Web.Services/Test/System.Web.Services.Protocols/SocketResponder.cs
mcs/class/System.Web.WebPages.Deployment/System.Web.WebPages.Deployment-net_4_5.csproj [deleted file]
mcs/class/System.Web.WebPages.Razor/System.Web.WebPages.Razor-net_4_5.csproj [deleted file]
mcs/class/System.Web.WebPages/System.Web.WebPages-net_4_5.csproj [deleted file]
mcs/class/System.Web/System.Web-net_4_5.csproj [deleted file]
mcs/class/System.Web/System.Web-net_4_x.csproj
mcs/class/System.Web/System.Web-plainweb-net_4_5.csproj [deleted file]
mcs/class/System.Web/System.Web-plainweb-net_4_x.csproj
mcs/class/System.Web/System.Web-tests-net_4_5.csproj [deleted file]
mcs/class/System.Web/System.Web.Routing/RouteCollection.cs
mcs/class/System.Web/System.Web.UI.WebControls/SqlDataSourceView.cs
mcs/class/System.Web/System.Web.UI.WebControls/WebColorConverter.cs [deleted file]
mcs/class/System.Web/System.Web.Util/UrlUtils.cs
mcs/class/System.Web/System.Web.dll.sources
mcs/class/System.Web/Test/System.Web.UI.WebControls/WizardStepBaseTest.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-net_4_5.csproj [deleted file]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-tests-net_4_5.csproj [deleted file]
mcs/class/System.Windows.Forms/System.Windows.Forms-net_4_5.csproj [deleted file]
mcs/class/System.Windows.Forms/System.Windows.Forms-tests-net_4_5.csproj [deleted file]
mcs/class/System.Windows.Forms/System.Windows.Forms/ComboBox.cs
mcs/class/System.Windows.Forms/System.Windows.Forms/ListBox.cs
mcs/class/System.Windows.Forms/System.Windows.Forms/TextBox.cs
mcs/class/System.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
mcs/class/System.Windows.Forms/System.Windows.Forms/XEventQueue.cs
mcs/class/System.Windows.Forms/System.Windows.Forms/XplatUICarbon.cs
mcs/class/System.Windows.Forms/Test/System.Windows.Forms/TextBoxTest.cs
mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripControlHostTest.cs
mcs/class/System.Windows/System.Windows-net_4_5.csproj [deleted file]
mcs/class/System.XML/ReferenceSources/LocalAppContextSwitches.cs [new file with mode: 0644]
mcs/class/System.XML/System.Xml-bare-net_4_5.csproj [deleted file]
mcs/class/System.XML/System.Xml-bare-net_4_x.csproj
mcs/class/System.XML/System.Xml-net_4_5.csproj [deleted file]
mcs/class/System.XML/System.Xml-net_4_x.csproj
mcs/class/System.XML/System.Xml-tests-net_4_5.csproj [deleted file]
mcs/class/System.XML/System.Xml.Xsl/XslCompiledTransform_Mobile.cs
mcs/class/System.XML/System.Xml.dll.sources
mcs/class/System.XML/Test/System.Xml.Xsl/XslCompiledTransformTests.cs
mcs/class/System.XML/mobile_System.Xml.dll.sources
mcs/class/System.XML/monotouch_tv_runtime_System.Xml.dll.sources [new file with mode: 0644]
mcs/class/System.XML/monotouch_watch_runtime_System.Xml.dll.sources [new file with mode: 0644]
mcs/class/System.Xaml/System.Xaml-net_4_5.csproj [deleted file]
mcs/class/System.Xaml/System.Xaml-tests-net_4_5.csproj [deleted file]
mcs/class/System.Xml.Linq/System.Xml.Linq-net_4_5.csproj [deleted file]
mcs/class/System.Xml.Linq/System.Xml.Linq-tests-net_4_5.csproj [deleted file]
mcs/class/System.Xml.Linq/Test/System.Xml.Linq/ExtensionsTest.cs
mcs/class/System.Xml.Serialization/System.Xml.Serialization-net_4_5.csproj [deleted file]
mcs/class/System/Assembly/AssemblyInfo.cs
mcs/class/System/Documentation/en/System.Net/WebRequest.xml
mcs/class/System/Documentation/en/ns-System.Security.Cryptography.xml
mcs/class/System/Makefile
mcs/class/System/Microsoft.CSharp/CSharpCodeCompiler.cs
mcs/class/System/Mono.Http/NtlmClient.cs
mcs/class/System/Mono.Net.Security/CallbackHelpers.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/ChainValidationHelper.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/IMonoSslStream.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/IMonoTlsProvider.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/LegacySslStream.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MonoDefaultTlsProvider.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MonoSslStreamImpl.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MonoSslStreamWrapper.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MonoTlsProviderFactory.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MonoTlsProviderImpl.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MonoTlsProviderWrapper.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/MonoTlsStream.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/NoReflectionHelper.cs [new file with mode: 0644]
mcs/class/System/Mono.Net.Security/SystemCertificateValidator.cs [new file with mode: 0644]
mcs/class/System/ReferenceSources/Internal.cs [new file with mode: 0644]
mcs/class/System/ReferenceSources/Logging.cs
mcs/class/System/ReferenceSources/SR.cs
mcs/class/System/ReferenceSources/SR2.cs [new file with mode: 0644]
mcs/class/System/ReferenceSources/SSPIConfiguration.cs [new file with mode: 0644]
mcs/class/System/ReferenceSources/SSPISafeHandles.cs [new file with mode: 0644]
mcs/class/System/ReferenceSources/SSPIWrapper.cs [new file with mode: 0644]
mcs/class/System/ReferenceSources/SslStream.cs [new file with mode: 0644]
mcs/class/System/ReferenceSources/_SecureChannel.cs [new file with mode: 0644]
mcs/class/System/ReferenceSources/_SslState.cs [new file with mode: 0644]
mcs/class/System/ReferenceSources/_SslStream.cs [new file with mode: 0644]
mcs/class/System/System-bare-net_4_5.csproj [deleted file]
mcs/class/System/System-bare-net_4_x.csproj
mcs/class/System/System-net_4_5.csproj [deleted file]
mcs/class/System/System-net_4_x.csproj
mcs/class/System/System-secxml-net_4_5.csproj [deleted file]
mcs/class/System/System-secxml-net_4_x.csproj
mcs/class/System/System-tests-net_4_5.csproj [deleted file]
mcs/class/System/System.Diagnostics/DefaultTraceListener.cs
mcs/class/System/System.Diagnostics/Process.cs
mcs/class/System/System.IO/DefaultWatcher.cs
mcs/class/System/System.IO/KeventWatcher.cs
mcs/class/System/System.Net.Cache/ChangeLog [deleted file]
mcs/class/System/System.Net.Cache/HttpCacheAgeControl.cs [deleted file]
mcs/class/System/System.Net.Cache/HttpRequestCacheLevel.cs [deleted file]
mcs/class/System/System.Net.Cache/HttpRequestCachePolicy.cs [deleted file]
mcs/class/System/System.Net.Cache/RequestCacheLevel.cs [deleted file]
mcs/class/System/System.Net.Cache/RequestCachePolicy.cs [deleted file]
mcs/class/System/System.Net.Mail/Attachment.cs
mcs/class/System/System.Net.Mail/MailMessage.cs
mcs/class/System/System.Net.Mail/SmtpClient.cs
mcs/class/System/System.Net.Mime/ChangeLog [deleted file]
mcs/class/System/System.Net.Mime/ContentDisposition.cs [deleted file]
mcs/class/System/System.Net.Mime/ContentType.cs [deleted file]
mcs/class/System/System.Net.Mime/DispositionTypeNames.cs [deleted file]
mcs/class/System/System.Net.Mime/MediaTypeNames.cs [deleted file]
mcs/class/System/System.Net.Mime/TransferEncoding.cs [deleted file]
mcs/class/System/System.Net.NetworkInformation/GatewayIPAddressInformationCollection.cs
mcs/class/System/System.Net.NetworkInformation/IPAddressCollection.cs
mcs/class/System/System.Net.NetworkInformation/IPAddressInformationCollection.cs
mcs/class/System/System.Net.NetworkInformation/IPGlobalProperties.cs
mcs/class/System/System.Net.NetworkInformation/IPGlobalStatistics.cs
mcs/class/System/System.Net.NetworkInformation/IPInterfaceProperties.cs
mcs/class/System/System.Net.NetworkInformation/IPv4InterfaceProperties.cs
mcs/class/System/System.Net.NetworkInformation/IPv4InterfaceStatistics.cs
mcs/class/System/System.Net.NetworkInformation/IPv6InterfaceProperties.cs
mcs/class/System/System.Net.NetworkInformation/IcmpV4Statistics.cs
mcs/class/System/System.Net.NetworkInformation/IcmpV6Statistics.cs
mcs/class/System/System.Net.NetworkInformation/MulticastIPAddressInformationCollection.cs
mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs
mcs/class/System/System.Net.NetworkInformation/Ping.cs
mcs/class/System/System.Net.NetworkInformation/TcpStatistics.cs
mcs/class/System/System.Net.NetworkInformation/UdpStatistics.cs
mcs/class/System/System.Net.NetworkInformation/UnicastIPAddressInformation.cs
mcs/class/System/System.Net.NetworkInformation/UnicastIPAddressInformationCollection.cs
mcs/class/System/System.Net.Security/AuthenticatedStream.cs [deleted file]
mcs/class/System/System.Net.Security/AuthenticationLevel.cs [deleted file]
mcs/class/System/System.Net.Security/EncryptionPolicy.cs
mcs/class/System/System.Net.Security/LocalCertificateSelectionCallback.cs
mcs/class/System/System.Net.Security/ProtectionLevel.cs [deleted file]
mcs/class/System/System.Net.Security/RemoteCertificateValidationCallback.cs
mcs/class/System/System.Net.Security/SslPolicyErrors.cs
mcs/class/System/System.Net.Security/SslStream.cs
mcs/class/System/System.Net.Sockets/AddressFamily.cs [deleted file]
mcs/class/System/System.Net.Sockets/IOControlCode.cs [deleted file]
mcs/class/System/System.Net.Sockets/IPPacketInformation.cs [deleted file]
mcs/class/System/System.Net.Sockets/IPv6MulticastOption.cs [deleted file]
mcs/class/System/System.Net.Sockets/LingerOption.cs [deleted file]
mcs/class/System/System.Net.Sockets/MulticastOption.cs [deleted file]
mcs/class/System/System.Net.Sockets/NetworkStream.cs [deleted file]
mcs/class/System/System.Net.Sockets/ProtocolFamily.cs [deleted file]
mcs/class/System/System.Net.Sockets/ProtocolType.cs [deleted file]
mcs/class/System/System.Net.Sockets/SafeSocketHandle.cs
mcs/class/System/System.Net.Sockets/SelectMode.cs [deleted file]
mcs/class/System/System.Net.Sockets/Socket.cs
mcs/class/System/System.Net.Sockets/SocketAsyncResult.cs
mcs/class/System/System.Net.Sockets/SocketError.cs [deleted file]
mcs/class/System/System.Net.Sockets/SocketException.cs [deleted file]
mcs/class/System/System.Net.Sockets/SocketFlags.cs [deleted file]
mcs/class/System/System.Net.Sockets/SocketInformation.cs [deleted file]
mcs/class/System/System.Net.Sockets/SocketInformationOptions.cs [deleted file]
mcs/class/System/System.Net.Sockets/SocketOptionLevel.cs [deleted file]
mcs/class/System/System.Net.Sockets/SocketShutdown.cs [deleted file]
mcs/class/System/System.Net.Sockets/SocketType.cs [deleted file]
mcs/class/System/System.Net.Sockets/TransmitFileOptions.cs [deleted file]
mcs/class/System/System.Net.Sockets/UdpReceiveResult.cs [deleted file]
mcs/class/System/System.Net/EndPointListener.cs
mcs/class/System/System.Net/EndPointManager.cs
mcs/class/System/System.Net/FtpWebRequest.cs
mcs/class/System/System.Net/HttpConnection.cs
mcs/class/System/System.Net/HttpListener.cs
mcs/class/System/System.Net/HttpListenerRequest.cs
mcs/class/System/System.Net/HttpWebRequest.cs
mcs/class/System/System.Net/SecurityProtocolType.cs
mcs/class/System/System.Net/ServicePoint.cs
mcs/class/System/System.Net/ServicePointManager.cs
mcs/class/System/System.Net/WebConnection.cs
mcs/class/System/System.Net/WebHeaderCollection.cs
mcs/class/System/System.Net/WebRequest.cs
mcs/class/System/System.Runtime.InteropServices/ChangeLog [deleted file]
mcs/class/System/System.Runtime.InteropServices/DefaultParameterValueAttribute.cs [deleted file]
mcs/class/System/System.Runtime.InteropServices/HandleCollector.cs [deleted file]
mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/PublicKey.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X500DistinguishedName.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509BasicConstraintsExtension.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Certificate2.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Chain.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509EnhancedKeyUsageExtension.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509ExtensionCollection.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509KeyUsageExtension.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Store.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509SubjectKeyIdentifierExtension.cs
mcs/class/System/System.Security.Cryptography/AsnEncodedData.cs
mcs/class/System/System.dll.sources
mcs/class/System/System/AndroidPlatform.cs
mcs/class/System/System/Uri.cs
mcs/class/System/System/UriComponents.cs [deleted file]
mcs/class/System/System/UriFormat.cs [deleted file]
mcs/class/System/System/UriFormatException.cs [deleted file]
mcs/class/System/System/UriHostNameType.cs [deleted file]
mcs/class/System/System/UriIdnScope.cs [deleted file]
mcs/class/System/System/UriKind.cs [deleted file]
mcs/class/System/System/UriPartial.cs [deleted file]
mcs/class/System/Test/Microsoft.CSharp/CSharpCodeProviderTest.cs
mcs/class/System/Test/System.Diagnostics/ProcessStartInfoTest.cs
mcs/class/System/Test/System.Diagnostics/ProcessTest.cs
mcs/class/System/Test/System.Net.Mail/SmtpClientTest.cs
mcs/class/System/Test/System.Net.Mime/ContentDispositionTest.cs
mcs/class/System/Test/System.Net.NetworkInformation/NetworkInterfaceTest.cs
mcs/class/System/Test/System.Net.Sockets/SocketTest.cs
mcs/class/System/Test/System.Net.Sockets/UdpClientTest.cs
mcs/class/System/Test/System.Net/HttpListener2Test.cs
mcs/class/System/Test/System.Net/HttpListenerTest.cs
mcs/class/System/Test/System.Net/HttpWebRequestTest.cs
mcs/class/System/Test/System.Net/SocketResponder.cs
mcs/class/System/Test/System.Net/WebHeaderCollectionTest.cs
mcs/class/System/Test/System/UriTest.cs
mcs/class/System/mobile_System.dll.sources
mcs/class/System/mobile_static_System.dll.sources
mcs/class/System/monodroid_System.dll.sources
mcs/class/System/monotouch_System.dll.sources
mcs/class/System/monotouch_tv_runtime_System.dll.sources [new file with mode: 0644]
mcs/class/System/monotouch_watch_runtime_System.dll.sources [new file with mode: 0644]
mcs/class/SystemWebTestShim/SystemWebTestShim-net_4_5.csproj [deleted file]
mcs/class/WebMatrix.Data/WebMatrix.Data-net_4_5.csproj [deleted file]
mcs/class/WebMatrix.Data/WebMatrix.Data-tests-net_4_5.csproj [deleted file]
mcs/class/WindowsBase/WindowsBase-net_4_5.csproj [deleted file]
mcs/class/WindowsBase/WindowsBase-tests-net_4_5.csproj [deleted file]
mcs/class/corlib/Assembly/AssemblyInfo.cs
mcs/class/corlib/Makefile
mcs/class/corlib/Mono/Runtime.cs
mcs/class/corlib/ReferenceSources/AppContextSwitches.cs [new file with mode: 0644]
mcs/class/corlib/ReferenceSources/Array.cs
mcs/class/corlib/ReferenceSources/Buffer.cs
mcs/class/corlib/ReferenceSources/DefaultBinder.cs
mcs/class/corlib/ReferenceSources/JitHelpers.cs
mcs/class/corlib/ReferenceSources/RuntimeType.cs
mcs/class/corlib/System.Diagnostics.Tracing/EventAttribute.cs
mcs/class/corlib/System.Diagnostics.Tracing/EventKeywords.cs [deleted file]
mcs/class/corlib/System.Diagnostics.Tracing/EventLevel.cs [deleted file]
mcs/class/corlib/System.Diagnostics.Tracing/EventSource.cs
mcs/class/corlib/System.Diagnostics.Tracing/EventSourceSettings.cs [new file with mode: 0644]
mcs/class/corlib/System.Diagnostics/StackTrace.cs
mcs/class/corlib/System.Globalization/CultureInfo.cs
mcs/class/corlib/System.IO/MonoIO.cs
mcs/class/corlib/System.IO/Path.cs
mcs/class/corlib/System.Reflection.Emit/ModuleBuilder.cs
mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs
mcs/class/corlib/System.Reflection/MonoGenericMethod.cs
mcs/class/corlib/System.Runtime.Hosting/ApplicationActivator.cs
mcs/class/corlib/System.Runtime.Remoting.Contexts/Context.cs
mcs/class/corlib/System.Runtime.Remoting/RemotingServices.cs
mcs/class/corlib/System.Runtime.Versioning/CompatibilitySwitch.cs
mcs/class/corlib/System.Security.AccessControl/NativeObjectSecurity.cs
mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Certificate.cs
mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Certificate20.cs
mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509CertificateImpl.cs [new file with mode: 0644]
mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509CertificateImplMono.cs [new file with mode: 0644]
mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Helper.cs [new file with mode: 0644]
mcs/class/corlib/System.Security/SecurityState.cs
mcs/class/corlib/System.Threading/Thread.cs
mcs/class/corlib/System/AppDomain.cs
mcs/class/corlib/System/AppDomainInitializer.cs
mcs/class/corlib/System/AppDomainManager.cs
mcs/class/corlib/System/AppDomainManager_2_1.cs
mcs/class/corlib/System/AppDomainSetup.cs
mcs/class/corlib/System/Array.cs
mcs/class/corlib/System/Console.cs
mcs/class/corlib/System/Console.iOS.cs
mcs/class/corlib/System/Delegate.cs
mcs/class/corlib/System/Environment.cs
mcs/class/corlib/System/Exception.cs
mcs/class/corlib/System/MonoType.cs
mcs/class/corlib/System/MulticastDelegate.cs
mcs/class/corlib/System/TimeZoneInfo.cs
mcs/class/corlib/System/TypeIdentifier.cs [new file with mode: 0644]
mcs/class/corlib/System/TypeSpec.cs
mcs/class/corlib/Test/System.Diagnostics/StackTraceTest.cs
mcs/class/corlib/Test/System.Globalization/DateTimeFormatInfoTest.cs
mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs
mcs/class/corlib/Test/System.Reflection/AssemblyTest.cs
mcs/class/corlib/Test/System.Reflection/MethodInfoTest.cs
mcs/class/corlib/Test/System.Reflection/MonoGenericClassTest.cs
mcs/class/corlib/Test/System.Runtime.CompilerServices/RuntimeHelpersTest.cs
mcs/class/corlib/Test/System.Runtime.InteropServices/MarshalTest.cs
mcs/class/corlib/Test/System.Security.Cryptography.X509Certificates/X509CapiTest.cs
mcs/class/corlib/Test/System.Security.Cryptography/CspParametersTest.cs
mcs/class/corlib/Test/System.Security.Cryptography/RijndaelManagedTest.cs
mcs/class/corlib/Test/System.Security/SecurityStateTest.cs
mcs/class/corlib/Test/System.Threading/MutexTest.cs
mcs/class/corlib/Test/System.Threading/ThreadCas.cs
mcs/class/corlib/Test/System.Threading/ThreadPoolTest.cs
mcs/class/corlib/Test/System.Threading/ThreadTest.cs
mcs/class/corlib/Test/System/AppDomainCas.cs
mcs/class/corlib/Test/System/AppDomainManagerTest.cs
mcs/class/corlib/Test/System/AppDomainSetupTest.cs
mcs/class/corlib/Test/System/ArrayTest.cs
mcs/class/corlib/Test/System/AttributeTest.cs
mcs/class/corlib/Test/System/BufferTest.cs
mcs/class/corlib/Test/System/DateTimeOffsetTestCoreFx.cs [new file with mode: 0644]
mcs/class/corlib/Test/System/DateTimeTest.cs
mcs/class/corlib/Test/System/EnumTest.cs
mcs/class/corlib/Test/System/MathTest.cs
mcs/class/corlib/Test/System/StringComparerTest.cs
mcs/class/corlib/Test/System/StringTest.cs
mcs/class/corlib/Test/System/TimeZoneInfoTest.cs
mcs/class/corlib/Test/System/TypeTest.cs
mcs/class/corlib/corlib-basic.csproj
mcs/class/corlib/corlib-build.csproj
mcs/class/corlib/corlib-net_4_5.csproj [deleted file]
mcs/class/corlib/corlib-net_4_x.csproj
mcs/class/corlib/corlib-tests-net_4_5.csproj [deleted file]
mcs/class/corlib/corlib.dll.sources
mcs/class/corlib/corlib_test.dll.sources
mcs/class/corlib/monotouch_tv_runtime_corlib.dll.sources [new file with mode: 0644]
mcs/class/corlib/monotouch_watch_runtime_corlib.dll.sources [new file with mode: 0644]
mcs/class/dlr/Runtime/Microsoft.Dynamic/Interpreter/Instructions/EqualInstruction.cs
mcs/class/dlr/Runtime/Microsoft.Dynamic/Interpreter/Instructions/NotEqualInstruction.cs
mcs/class/dlr/Runtime/Microsoft.Dynamic/Interpreter/LightCompiler.cs
mcs/class/monodoc/Monodoc.Ecma/EcmaDesc.cs
mcs/class/monodoc/Test/Monodoc.Ecma/EcmaUrlTests.cs
mcs/class/monodoc/monodoc-net_4_5.csproj [deleted file]
mcs/class/monodoc/monodoc-tests-net_4_5.csproj [deleted file]
mcs/docs/Makefile
mcs/docs/compiler.txt
mcs/errors/cs0051-3.cs [new file with mode: 0644]
mcs/errors/cs0208-18.cs [new file with mode: 0644]
mcs/errors/cs0403-4.cs [new file with mode: 0644]
mcs/errors/cs0841-6.cs [new file with mode: 0644]
mcs/errors/cs9671.cs [new file with mode: 0644]
mcs/errors/cs9871.cs [deleted file]
mcs/jay/jay.vcproj [deleted file]
mcs/jay/jay.vcxproj
mcs/jay/jay2005.vcproj [deleted file]
mcs/jay/jay2008.vcproj [deleted file]
mcs/jay/jay2010.vcxproj [deleted file]
mcs/mcs/Makefile
mcs/mcs/anonymous.cs
mcs/mcs/class.cs
mcs/mcs/cs-parser.jay
mcs/mcs/cs-tokenizer.cs
mcs/mcs/decl.cs
mcs/mcs/driver.cs
mcs/mcs/ecore.cs
mcs/mcs/eval.cs
mcs/mcs/expression.cs
mcs/mcs/generic.cs
mcs/mcs/membercache.cs
mcs/mcs/namespace.cs
mcs/mcs/nullable.cs
mcs/mcs/settings.cs
mcs/mcs/statement.cs
mcs/nunit24/ConsoleRunner/nunit-console/ConsoleUi.cs
mcs/nunit24/ConsoleRunner/nunit-console/EventCollector.cs
mcs/nunit24/NUnitCore/core/BabysitterSupport.cs [new file with mode: 0644]
mcs/nunit24/NUnitCore/core/TestCase.cs
mcs/nunit24/NUnitCore/core/nunit.core.build
mcs/nunit24/NUnitCore/core/nunit.core.dll.csproj
mcs/nunit24/NUnitCore/core/nunit.core.dll.sources
mcs/nunit24/NUnitCore/core/nunit.core.dll_VS2005.csproj
mcs/tests/dtest-062.cs [new file with mode: 0644]
mcs/tests/gtest-409.cs
mcs/tests/gtest-540.cs
mcs/tests/gtest-635.cs [new file with mode: 0644]
mcs/tests/gtest-636.cs [new file with mode: 0644]
mcs/tests/gtest-autoproperty-21-lib.cs [new file with mode: 0644]
mcs/tests/gtest-autoproperty-21.cs [new file with mode: 0644]
mcs/tests/test-643.cs
mcs/tests/test-929.cs [new file with mode: 0644]
mcs/tests/test-930.cs [new file with mode: 0644]
mcs/tests/test-931.cs [new file with mode: 0644]
mcs/tests/test-932.cs [new file with mode: 0644]
mcs/tests/test-async-81.cs [new file with mode: 0644]
mcs/tests/test-null-operator-19.cs [new file with mode: 0644]
mcs/tests/test-null-operator-20.cs [new file with mode: 0644]
mcs/tests/test-null-operator-21.cs [new file with mode: 0644]
mcs/tests/test-null-operator-22.cs [new file with mode: 0644]
mcs/tests/test-xml-074-ref.xml [new file with mode: 0644]
mcs/tests/test-xml-074.cs [new file with mode: 0644]
mcs/tests/ver-il-net_4_x.xml
mcs/tools/corcompare/Makefile
mcs/tools/corcompare/mono-api-info.cs
mcs/tools/corcompare/mono-api-info.csproj
mcs/tools/csharp/getline.cs
mcs/tools/csharp/repl.cs
mcs/tools/ikdasm/ikdasm.exe.sources
mcs/tools/linker/Descriptors/mscorlib.xml
mcs/tools/linker/Mono.Linker.Steps/BlacklistStep.cs
mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs
mcs/tools/linker/Mono.Linker.Steps/ResolveFromXmlStep.cs
mcs/tools/macpack/LOADER
mcs/tools/mdoc/Makefile
mcs/tools/mdoc/Mono.Documentation/mdoc.cs
mcs/tools/mdoc/Mono.Documentation/monodocer.cs
mcs/tools/mdoc/Mono.Documentation/preserver.cs
mcs/tools/mdoc/Test/DocTest-DropNS-classic.cs
mcs/tools/mdoc/Test/DocTest-DropNS-unified.cs
mcs/tools/mdoc/Test/en.expected-dropns-classic-v1/MyFramework.MyNamespace/MyClass.xml
mcs/tools/mdoc/Test/en.expected-dropns-classic-withsecondary/MyFramework.MyNamespace/MyClass.xml
mcs/tools/mdoc/Test/en.expected-dropns-classic-withsecondary/MyFramework.MyOtherNamespace/MyOtherClass.xml
mcs/tools/mdoc/Test/en.expected-dropns-delete/MyFramework.MyNamespace/MyClass.xml
mcs/tools/mdoc/Test/en.expected-dropns-delete/MyFramework.MyNamespace/TypeOnlyInClassic.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/MyFramework.MyNamespace/MyClass.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/MyFramework.MyNamespace/OnlyInMulti.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/index.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/ns-MyFramework.MyNamespace.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/MyClass.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/OnlyInMulti.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-multi/index.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected-dropns-multi/ns-MyFramework.MyNamespace.xml [new file with mode: 0644]
mcs/tools/mdoc/Test/en.expected.delete/Mono.DocTest.Generic/GenericBase`1.xml
mcs/tools/mdoc/Test/en.expected.delete/Mono.DocTest/Widget.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml
mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1.xml
mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml
mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1.xml
mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget.xml
mcs/tools/mdoc/Test/msxdoc-expected.importslashdoc.xml
mcs/tools/mkbundle/mkbundle.cs
mcs/tools/mono-symbolicate/Makefile
mcs/tools/monop/outline.cs
mcs/tools/security/signcode.cs
mcs/tools/tuner/Mono.Tuner/ApplyPreserveAttributeBase.cs
mcs/tools/tuner/Mono.Tuner/PreserveCrypto.cs
mcs/tools/xbuild/Makefile
mcs/tools/xbuild/data/12.0/Microsoft.Common.targets
mcs/tools/xbuild/data/14.0/Microsoft.Common.targets
mcs/tools/xbuild/data/2.0/Microsoft.Common.targets
mcs/tools/xbuild/data/3.5/Microsoft.Common.targets
mcs/tools/xbuild/data/4.0/Microsoft.Common.targets
mcs/tools/xbuild/frameworks/net_4.6.1.xml [new file with mode: 0644]
mcs/tools/xbuild/frameworks/net_4.6.xml [new file with mode: 0644]
mono/arch/arm/arm-codegen.h
mono/arch/s390x/s390x-codegen.h
mono/cil/cil-opcodes.xml
mono/cil/opcode.def
mono/dis/dis-cil.c
mono/dis/dump.c
mono/dis/get.c
mono/dis/main.c
mono/io-layer/Makefile.am
mono/io-layer/collection.c [deleted file]
mono/io-layer/collection.h [deleted file]
mono/io-layer/error.c
mono/io-layer/event-private.h
mono/io-layer/events.c
mono/io-layer/handles-private.h
mono/io-layer/handles.c
mono/io-layer/io-portability.c
mono/io-layer/io.c
mono/io-layer/io.h
mono/io-layer/messages.c
mono/io-layer/misc-private.h [deleted file]
mono/io-layer/misc.c [deleted file]
mono/io-layer/mutexes.c
mono/io-layer/process-private.h
mono/io-layer/processes.c
mono/io-layer/processes.h
mono/io-layer/semaphores.c
mono/io-layer/shared.c
mono/io-layer/shared.h
mono/io-layer/sockets.c
mono/io-layer/sockets.h
mono/io-layer/thread-private.h
mono/io-layer/threads.h
mono/io-layer/versioninfo.c
mono/io-layer/wait.c
mono/io-layer/wapi-private.h
mono/io-layer/wapi-remap.h
mono/io-layer/wapi.h
mono/io-layer/wapi_glob.c
mono/io-layer/wthreads.c
mono/metadata/Makefile.am
mono/metadata/abi-details.h
mono/metadata/appdomain.c
mono/metadata/assembly.c
mono/metadata/attach.c
mono/metadata/boehm-gc.c
mono/metadata/class-internals.h
mono/metadata/class.c
mono/metadata/cominterop.c
mono/metadata/console-null.c
mono/metadata/console-unix.c
mono/metadata/console-win32.c
mono/metadata/culture-info-tables.h
mono/metadata/debug-helpers.c
mono/metadata/debug-mono-ppdb.c
mono/metadata/debug-mono-symfile.c
mono/metadata/domain-internals.h
mono/metadata/domain.c
mono/metadata/exception.c
mono/metadata/file-io.c
mono/metadata/file-io.h
mono/metadata/file-mmap-posix.c
mono/metadata/gc-internal.h [deleted file]
mono/metadata/gc-internals.h [new file with mode: 0644]
mono/metadata/gc.c
mono/metadata/handle-private.h [new file with mode: 0644]
mono/metadata/handle.c [new file with mode: 0644]
mono/metadata/handle.h [new file with mode: 0644]
mono/metadata/icall-def.h
mono/metadata/icall.c
mono/metadata/image-internals.h [new file with mode: 0644]
mono/metadata/image.c
mono/metadata/jit-info.c
mono/metadata/loader.c
mono/metadata/locales.c
mono/metadata/lock-tracer.c
mono/metadata/lock-tracer.h
mono/metadata/marshal.c
mono/metadata/marshal.h
mono/metadata/mempool.c
mono/metadata/mempool.h
mono/metadata/metadata-internals.h
mono/metadata/metadata-verify.c
mono/metadata/metadata.c
mono/metadata/method-builder.c
mono/metadata/monitor.c
mono/metadata/mono-basic-block.c
mono/metadata/mono-config.c
mono/metadata/mono-debug.c
mono/metadata/mono-debug.h
mono/metadata/mono-gc.h
mono/metadata/mono-hash.c
mono/metadata/mono-hash.h
mono/metadata/mono-perfcounters.c
mono/metadata/mono-ptr-array.h
mono/metadata/mono-security.c
mono/metadata/null-gc.c
mono/metadata/number-ms.c
mono/metadata/object-internals.h
mono/metadata/object-offsets.h
mono/metadata/object.c
mono/metadata/opcodes.c
mono/metadata/pedump.c
mono/metadata/process.c
mono/metadata/profiler.c
mono/metadata/reflection-internals.h
mono/metadata/reflection.c
mono/metadata/remoting.c
mono/metadata/row-indexes.h
mono/metadata/security-core-clr.c
mono/metadata/seq-points-data.c
mono/metadata/seq-points-data.h
mono/metadata/sgen-bridge-internal.h [deleted file]
mono/metadata/sgen-bridge-internals.h [new file with mode: 0644]
mono/metadata/sgen-bridge.c
mono/metadata/sgen-bridge.h
mono/metadata/sgen-client-mono.h
mono/metadata/sgen-mono.c
mono/metadata/sgen-new-bridge.c
mono/metadata/sgen-old-bridge.c
mono/metadata/sgen-os-coop.c
mono/metadata/sgen-os-mach.c
mono/metadata/sgen-os-posix.c
mono/metadata/sgen-os-win32.c
mono/metadata/sgen-stw.c
mono/metadata/sgen-tarjan-bridge.c
mono/metadata/sgen-toggleref.c
mono/metadata/socket-io.c
mono/metadata/socket-io.h
mono/metadata/string-icalls.c
mono/metadata/threadpool-ms-io-poll.c
mono/metadata/threadpool-ms-io.c
mono/metadata/threadpool-ms.c
mono/metadata/threads-types.h
mono/metadata/threads.c
mono/metadata/verify.c
mono/mini/Makefile.am.in
mono/mini/TestDriver.cs
mono/mini/abcremoval.c
mono/mini/alias-analysis.c
mono/mini/aot-compiler.c
mono/mini/aot-compiler.h [new file with mode: 0644]
mono/mini/aot-runtime.c
mono/mini/aot-tests.cs
mono/mini/arch-stubs.c
mono/mini/arrays.cs
mono/mini/basic-calls.cs
mono/mini/basic-float.cs
mono/mini/basic-long.cs
mono/mini/basic-math.cs
mono/mini/basic.cs
mono/mini/branch-opts.c
mono/mini/cpu-ia64.md
mono/mini/cpu-mips.md
mono/mini/cpu-ppc.md
mono/mini/cpu-ppc64.md
mono/mini/cpu-s390x.md
mono/mini/cpu-sparc.md
mono/mini/debug-mini.c
mono/mini/debugger-agent.c
mono/mini/decompose.c
mono/mini/devirtualization.cs
mono/mini/dominators.c
mono/mini/driver.c
mono/mini/dwarfwriter.c
mono/mini/emitnunit.pl
mono/mini/exceptions-amd64.c
mono/mini/exceptions-ia64.c
mono/mini/exceptions-sparc.c
mono/mini/exceptions-x86.c
mono/mini/exceptions.cs
mono/mini/gc-test.cs
mono/mini/generics.cs
mono/mini/genmdesc.c
mono/mini/graph.c
mono/mini/gshared.cs
mono/mini/helpers.c
mono/mini/iltests.il [new file with mode: 0644]
mono/mini/iltests.il.in [deleted file]
mono/mini/image-writer.c
mono/mini/ir-emit.h
mono/mini/jit-icalls.c
mono/mini/jit-icalls.h
mono/mini/jit.h
mono/mini/linear-scan.c
mono/mini/liveness.c
mono/mini/llvm-jit.cpp [new file with mode: 0644]
mono/mini/llvm-runtime.cpp [new file with mode: 0644]
mono/mini/llvm-runtime.h [new file with mode: 0644]
mono/mini/local-propagation.c
mono/mini/main.c
mono/mini/method-to-ir.c
mono/mini/mini-amd64.c
mono/mini/mini-amd64.h
mono/mini/mini-arm-tls.S
mono/mini/mini-arm-tls.h
mono/mini/mini-arm.c
mono/mini/mini-arm.h
mono/mini/mini-codegen.c
mono/mini/mini-darwin.c
mono/mini/mini-exceptions.c
mono/mini/mini-gc.c
mono/mini/mini-generic-sharing.c
mono/mini/mini-ia64.c
mono/mini/mini-llvm-cpp.cpp
mono/mini/mini-llvm-cpp.h
mono/mini/mini-llvm-loaded.c
mono/mini/mini-llvm.c
mono/mini/mini-llvm.h [new file with mode: 0644]
mono/mini/mini-mips.c
mono/mini/mini-ops.h
mono/mini/mini-posix.c
mono/mini/mini-ppc.c
mono/mini/mini-ppc.h
mono/mini/mini-runtime.c
mono/mini/mini-s390x.c
mono/mini/mini-s390x.h
mono/mini/mini-sparc.c
mono/mini/mini-trampolines.c
mono/mini/mini-windows.c
mono/mini/mini-x86.c
mono/mini/mini-x86.h
mono/mini/mini.c
mono/mini/mini.h
mono/mini/objects.cs
mono/mini/patch-info.h
mono/mini/seq-points.c
mono/mini/simd-intrinsics.c
mono/mini/ssa.c
mono/mini/tasklets.c
mono/mini/tasklets.h
mono/mini/test_op_il_seq_point.sh
mono/mini/test_op_il_seq_point_headerfooter.sh
mono/mini/trace.c
mono/mini/tramp-amd64.c
mono/mini/tramp-arm.c
mono/mini/tramp-s390x.c
mono/mini/tramp-x86.c
mono/mini/unwind.c
mono/profiler/Makefile.am
mono/profiler/decode.c
mono/profiler/mono-profiler-aot.c
mono/profiler/mono-profiler-iomap.c
mono/profiler/proflog.c
mono/profiler/ptestrunner.pl
mono/sgen/gc-internal-agnostic.h
mono/sgen/sgen-alloc.c
mono/sgen/sgen-cardtable.c
mono/sgen/sgen-conf.h
mono/sgen/sgen-copy-object.h
mono/sgen/sgen-debug.c
mono/sgen/sgen-descriptor.c
mono/sgen/sgen-fin-weak-hash.c
mono/sgen/sgen-gc.c
mono/sgen/sgen-gc.h
mono/sgen/sgen-gchandles.c
mono/sgen/sgen-gray.c
mono/sgen/sgen-hash-table.c
mono/sgen/sgen-hash-table.h
mono/sgen/sgen-internal.c
mono/sgen/sgen-los.c
mono/sgen/sgen-marksweep-drain-gray-stack.h
mono/sgen/sgen-marksweep-scan-object-concurrent.h
mono/sgen/sgen-marksweep.c
mono/sgen/sgen-memory-governor.c
mono/sgen/sgen-minor-scan-object.h
mono/sgen/sgen-nursery-allocator.c
mono/sgen/sgen-pinning-stats.c
mono/sgen/sgen-pinning.c
mono/sgen/sgen-pointer-queue.c
mono/sgen/sgen-protocol-def.h
mono/sgen/sgen-protocol.c
mono/sgen/sgen-split-nursery.c
mono/sgen/sgen-thread-pool.c
mono/sgen/sgen-workers.c
mono/sgen/sgen-workers.h
mono/tests/Makefile.am
mono/tests/bug-36848-a.cs [new file with mode: 0644]
mono/tests/bug-36848.cs [new file with mode: 0644]
mono/tests/delegate13.cs [new file with mode: 0644]
mono/tests/delegate7.cs
mono/tests/enum.cs
mono/tests/finalizer-wait.cs
mono/tests/libtest.c
mono/tests/pinvoke2.cs
mono/tests/pinvoke3.cs
mono/tests/sgen-bridge-major-fragmentation.cs
mono/tests/sgen-domain-unload-2.cs
mono/tests/sgen-new-threads-dont-join-stw.cs
mono/tests/test-driver
mono/tests/test-runner.cs
mono/tests/thread-static-init.cs
mono/tests/unhandled-exception-1.cs [new file with mode: 0644]
mono/tests/unhandled-exception-2.cs [new file with mode: 0644]
mono/tests/unhandled-exception-3.cs [new file with mode: 0644]
mono/tests/unhandled-exception-4.cs [new file with mode: 0644]
mono/tests/unhandled-exception-5.cs [new file with mode: 0644]
mono/tests/unhandled-exception-6.cs [new file with mode: 0644]
mono/tests/unhandled-exception-7.cs [new file with mode: 0644]
mono/tests/unhandled-exception-8.cs [new file with mode: 0644]
mono/tests/unhandled-exception.cs [deleted file]
mono/unit-tests/.gitignore
mono/unit-tests/Makefile.am
mono/unit-tests/test-conc-hashtable.c
mono/unit-tests/test-memfuncs.c
mono/unit-tests/test-mono-handle.c [new file with mode: 0644]
mono/unit-tests/test-mono-linked-list-set.c
mono/unit-tests/test-sgen-qsort.c
mono/utils/Makefile.am
mono/utils/atomic.c
mono/utils/bsearch.c
mono/utils/checked-build.c
mono/utils/checked-build.h
mono/utils/gc_wrapper.h
mono/utils/hazard-pointer.c
mono/utils/memfuncs.c
mono/utils/mono-codeman.c
mono/utils/mono-conc-hashtable.c
mono/utils/mono-conc-hashtable.h
mono/utils/mono-coop-mutex.h [new file with mode: 0644]
mono/utils/mono-coop-semaphore.h [new file with mode: 0644]
mono/utils/mono-counters.c
mono/utils/mono-linked-list-set.h
mono/utils/mono-logger-internal.h [deleted file]
mono/utils/mono-logger-internals.h [new file with mode: 0644]
mono/utils/mono-logger.c
mono/utils/mono-mmap-internal.h [deleted file]
mono/utils/mono-mmap-internals.h [new file with mode: 0644]
mono/utils/mono-mmap.c
mono/utils/mono-mutex.c [deleted file]
mono/utils/mono-mutex.h [deleted file]
mono/utils/mono-once.h [new file with mode: 0644]
mono/utils/mono-os-mutex.h [new file with mode: 0644]
mono/utils/mono-os-semaphore.h [new file with mode: 0644]
mono/utils/mono-proclib.c
mono/utils/mono-semaphore.c [deleted file]
mono/utils/mono-semaphore.h [deleted file]
mono/utils/mono-sigcontext.h
mono/utils/mono-stack-unwinding.h
mono/utils/mono-threads-api.h
mono/utils/mono-threads-coop.c
mono/utils/mono-threads-coop.h
mono/utils/mono-threads-mach-abort-syscall.c
mono/utils/mono-threads-mach.c
mono/utils/mono-threads-posix-abort-syscall.c
mono/utils/mono-threads-posix-signals.c
mono/utils/mono-threads-posix.c
mono/utils/mono-threads-windows-abort-syscall.c
mono/utils/mono-threads-windows.c
mono/utils/mono-threads.c
mono/utils/mono-threads.h
mono/utils/networking-posix.c
msvc/.gitignore
msvc/libmono.vcxproj
msvc/libmonoruntime.vcxproj
msvc/libmonoutils.vcxproj
msvc/masm.fixed.props
msvc/mono-profiler-codeanalyst.def [deleted file]
msvc/mono.def
msvc/mono.sln
msvc/mono.vcxproj
msvc/monodiet.vcxproj [deleted file]
msvc/monosgen.def
msvc/profiler-codeanalyst.vcxproj [deleted file]
msvc/profiler-cov.vcxproj [deleted file]
msvc/profiler-logging.vcxproj [deleted file]
msvc/scripts/.gitignore [new file with mode: 0644]
msvc/scripts/README
msvc/scripts/net_4_x.sln
msvc/scripts/order.xml
msvc/winsetup.bat
runtime/Makefile.am
runtime/mono-wrapper.in
samples/embed/testi.c [deleted file]
scripts/babysitter [new file with mode: 0755]
scripts/xbuild.in
support/map.h
support/signal.c
support/stdlib.c
support/sys-stat.c
tools/crash-bisector/Program.cs [new file with mode: 0644]
tools/crash-bisector/Properties/AssemblyInfo.cs [new file with mode: 0644]
tools/crash-bisector/README.md [new file with mode: 0644]
tools/crash-bisector/crash-bisector.csproj [new file with mode: 0644]
tools/crash-bisector/crash-bisector.sln [new file with mode: 0644]
tools/locale-builder/DateTimeFormatEntry.cs
tools/locale-builder/Driver.cs
tools/locale-builder/Patterns.cs
winconfig.h

index 1cb061f77894615a877ca23c16bcce6acb8e816d..3258779bae5618a8cfb4e68ad84b7959c1b2d9e7 100644 (file)
@@ -125,4 +125,5 @@ mono.h
 mono-*.tar.*
 tmpinst-dir.stamp
 msvc/scripts/inputs/
+extensions-config.h
 
index 330f8d00ce53851b060fc3b2128614ab3a2ee634..d48ca3110e8e7693c7110ccce764547772724328 100644 (file)
@@ -5,15 +5,15 @@ AM_CFLAGS = $(WERROR_CFLAGS)
 MONOTOUCH_SUBDIRS = $(libgc_dir) eglib/src mono
 
 if CROSS_COMPILING
-SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir)
+SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir) acceptance-tests
 # Keep in sync with SUBDIRS
 ## 'tools' is not normally built
-DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs
+DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs acceptance-tests
 else
-SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir)
+SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir) acceptance-tests
 # Keep in sync with SUBDIRS
 ## 'tools' is not normally built
-DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs
+DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs acceptance-tests
 endif
 
 all: update_submodules
@@ -25,13 +25,14 @@ update_submodules:
 .PHONY: update_submodules
 
 EXTRA_DIST= \
-        README.md \
-           LICENSE \
-           autogen.sh \
-           mkinstalldirs \
-           mono-uninstalled.pc.in \
-           winconfig.h \
-           external
+       README.md               \
+       LICENSE                 \
+       autogen.sh              \
+       mkinstalldirs           \
+       mono-uninstalled.pc.in  \
+       winconfig.h             \
+       code_of_conduct.md      \
+       external
 
 DISTCHECK_CONFIGURE_FLAGS = EXTERNAL_MCS=false EXTERNAL_RUNTIME=false
 
index e7ed2c4f704790abd401315f7dd1b001e7dd5e11..96559ab5c34307f3b10e964dfd4ce67b465ae4cc 100644 (file)
--- a/README.md
+++ b/README.md
@@ -37,8 +37,8 @@ Community supported architectures:
 [8]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-armhf/
 [9]: https://ci.appveyor.com/api/projects/status/1e61ebdfpbiei58v/branch/master?svg=true
 [10]: https://ci.appveyor.com/project/ajlennon/mono-817/branch/master
-[11]: http://jenkins.mono-project.com/job/test-mono-mainline-communityarchitectures/label=nealef-s390x-1/badge/icon
-[12]: http://jenkins.mono-project.com/job/test-mono-mainline-communityarchitectures/label=nealef-s390x-1/
+[11]: https://jenkins.mono-project.com/job/z/label=centos-s390x/badge/icon
+[12]: https://jenkins.mono-project.com/job/z/label=centos-s390x
 
 Compilation and Installation
 ============================
@@ -80,8 +80,7 @@ Testing and Installation
 You can run the mono and mcs test suites with the command: `make check`.
 
 Expect to find a few test suite failures. As a sanity check, you
-can compare the failures you got with [https://wrench.mono-project.com/Wrench/](https://wrench.mono-project.com/Wrench/)
-and [http://jenkins.mono-project.com/](http://jenkins.mono-project.com/).
+can compare the failures you got with [https://jenkins.mono-project.com/](https://jenkins.mono-project.com/).
 
 You can now install mono with: `make install`
 
diff --git a/acceptance-tests/.gitignore b/acceptance-tests/.gitignore
new file mode 100644 (file)
index 0000000..b250046
--- /dev/null
@@ -0,0 +1,6 @@
+Makefile.in
+Makefile
+*.exe
+*.dll
+*.mdb
+coreclr-testlist.txt
diff --git a/acceptance-tests/GCStressTests/AssemblyExtensions.cs b/acceptance-tests/GCStressTests/AssemblyExtensions.cs
new file mode 100644 (file)
index 0000000..418d5db
--- /dev/null
@@ -0,0 +1,14 @@
+using System;
+using System.IO;
+using System.Reflection;
+
+namespace System.Runtime.Loader
+{
+    public static class AssemblyExtensions
+    {
+        public static Type[] GetTypes(this Assembly assembly)
+        {
+            return assembly.GetTypes ();
+        }
+    }
+}
diff --git a/acceptance-tests/GCStressTests/AssemblyLoadContext.cs b/acceptance-tests/GCStressTests/AssemblyLoadContext.cs
new file mode 100644 (file)
index 0000000..b3a2c48
--- /dev/null
@@ -0,0 +1,41 @@
+using System;
+using System.IO;
+using System.Reflection;
+
+namespace System.Runtime.Loader
+{
+    public abstract class AssemblyLoadContext
+    {
+        protected abstract Assembly Load(AssemblyName assemblyName);
+
+        protected Assembly LoadFromAssemblyPath(string assemblyPath)
+        {
+            if (assemblyPath == null)
+                throw new ArgumentNullException("assemblyPath");
+
+            if (!Path.IsPathRooted(assemblyPath))
+                throw new ArgumentException("Gimme an absolute path " + assemblyPath + " XXX " + Path.GetPathRoot(assemblyPath), "assemblyPath");
+
+            return Assembly.LoadFrom (assemblyPath);
+        }
+
+        public Assembly LoadFromAssemblyName(AssemblyName assemblyName)
+        {
+            // AssemblyName is mutable. Cache the expected name before anybody gets a chance to modify it.
+            string requestedSimpleName = assemblyName.Name;
+
+            Assembly assembly = Load(assemblyName);
+            if (assembly == null)
+                throw new FileLoadException("File not found", requestedSimpleName);
+
+            return assembly;
+        }
+
+        public static AssemblyName GetAssemblyName(string assemblyPath)
+        {
+            if (!File.Exists (assemblyPath))
+                throw new Exception ("file not found");
+            return new AssemblyName (Path.GetFileName (assemblyPath));
+        }
+    }
+}
diff --git a/acceptance-tests/Makefile.am b/acceptance-tests/Makefile.am
new file mode 100644 (file)
index 0000000..68b9ff9
--- /dev/null
@@ -0,0 +1,5208 @@
+TOP=..
+ROSLYN_PATH=$(TOP)/../roslyn
+CORECLR_PATH=$(TOP)/../coreclr
+MSTESTSUITE_PATH=$(TOP)/../ms-test-suite
+
+include versions.mk
+
+EXTRA_DIST=README.md SUBMODULES.json versions.mk versions.py
+
+check-full: check-roslyn check-coreclr check-ms-test-suite
+
+CLASS=$(mcs_topdir)/class/lib/$(DEFAULT_PROFILE)
+
+with_mono_path = MONO_PATH=$(CLASS)
+RUNTIME = $(with_mono_path) $(abs_top_builddir)/runtime/mono-wrapper --debug
+MCS = $(RUNTIME) $(mcs_topdir)/class/lib/build/mcs.exe
+ILASM = $(RUNTIME) $(CLASS)/ilasm.exe
+
+check-ms-test-suite:
+       @if $(MAKE) validate-ms-test-suite RESET_VERSIONS=1; then \
+               $(MAKE) -C $(MSTESTSUITE_PATH)/conformance build MCS="$(MCS) -t:library -warn:1 -r:nunit.framework"; \
+               $(MAKE) -C $(MSTESTSUITE_PATH)/conformance run NUNIT-CONSOLE="$(RUNTIME) $(CLASS)/nunit-console.exe -nologo -exclude=MonoBug,BadTest" NUNIT_XML_RESULT=$(abs_top_builddir)/acceptance-tests/TestResult-ms-test-suite-conformance.xml; \
+               $(MAKE) -C $(MSTESTSUITE_PATH)/systemruntimebringup build MCS="$(MCS) -debug -warn:1"; \
+               $(MAKE) -C $(MSTESTSUITE_PATH)/systemruntimebringup run MONO="$(RUNTIME)"; \
+       else \
+               echo "*** [ms-test-suite] Getting the repository failed, you probably don't have access to this Xamarin-internal resource. Skipping."; \
+       fi
+
+check-roslyn:
+       @$(MAKE) validate-roslyn RESET_VERSIONS=1
+       @if [ -z $$PREFIX ]; then echo "You need to set PREFIX to the prefix of the Mono installation that should be used for testing Roslyn." && exit 1; fi
+       export MSBuildExtensionsPath=$$PREFIX/lib/mono/xbuild; \
+       MONO_DOTNET_PORTABLE_DIR=$$PREFIX/lib/mono/xbuild-frameworks/.NETPortable/; \
+       MONO_NUGET_TARGETS_DIR=$$PREFIX/lib/mono/xbuild/Microsoft/NuGet/; \
+       MONO_PORTABLE_TARGETS_DIR=$$PREFIX/lib/mono/xbuild/Microsoft/Portable/v5.0; \
+       if [ ! -d "$$MONO_DOTNET_PORTABLE_DIR/v5.0" ]; then \
+               mkdir -p $$MONO_DOTNET_PORTABLE_DIR; \
+               mkdir -p $$MONO_NUGET_TARGETS_DIR; \
+               mkdir -p $$MONO_PORTABLE_TARGETS_DIR; \
+               curl -SL "http://storage.bos.internalx.com/bot-provisioning/RoslynBuildDependencies.zip" > /tmp/RoslynBuildDependencies.zip; \
+               unzip -o /tmp/RoslynBuildDependencies.zip -d /tmp/RoslynBuildDependencies; \
+               cp -r /tmp/RoslynBuildDependencies/PortableReferenceAssemblies/* $$MONO_DOTNET_PORTABLE_DIR; \
+               cp /tmp/RoslynBuildDependencies/NuGetTargets/* $$MONO_NUGET_TARGETS_DIR; \
+               cp /tmp/RoslynBuildDependencies/PortableTargets/* $$MONO_PORTABLE_TARGETS_DIR; \
+       fi; \
+       cd $(ROSLYN_PATH); \
+       sed -i -e 'N; s/bootstrapArg=".*\n.*"/bootstrapArg=""/g' cibuild.sh; \
+       sed -i -e 's#-xml Binaries/\$$BUILD_CONFIGURATION/xUnitResults/#-nunit $(abs_top_builddir)/acceptance-tests/TestResult-#g' cibuild.sh; \
+       ./cibuild.sh --mono-path $$PREFIX/bin
+
+coreclr-validate:
+       $(MAKE) validate-coreclr RESET_VERSIONS=1
+
+coreclr-compile-tests: coreclr-validate
+       $(MAKE) -j4 $(CORECLR_TESTSI_CS)
+       $(MAKE) -j4 $(CORECLR_COREMANGLIB_TESTSI_CS)
+       $(MAKE) -j4 $(CORECLR_TESTSI_IL)
+
+# the CoreCLR IL tests use the System.Console facade, we need to copy it to the test directory
+# all the other tests rely on the coreclr-testlibrary.dll
+coreclr-runtest-basic: coreclr-validate test-runner.exe $(CORECLR_TESTSI_CS) $(CORECLR_TESTSI_IL)
+       @rm -f coreclr-testlist.txt
+       @$(call dumpvariabletofile, coreclr-testlist.txt, $(CORECLR_TESTSI_CS))
+       @$(call dumpvariabletofile, coreclr-testlist.txt, $(CORECLR_TESTSI_IL))
+       @for var in $(sort $(dir $(CORECLR_TESTSI_CS))); do ln -sf $(abspath coreclr-testlibrary.dll) "$$var"; done
+       @for var in $(sort $(dir $(CORECLR_TESTSI_IL))); do ln -sf "$(abspath $(CLASS)/Facades/System.Console.dll)" "$$var"; done
+       $(RUNTIME) ./test-runner.exe -j a --testsuite-name "coreclr" --expected-exit-code 100 --input-file coreclr-testlist.txt
+       @rm -f coreclr-testlist.txt
+
+coreclr-runtest-coremanglib: coreclr-validate test-runner.exe $(CORECLR_COREMANGLIB_TESTSI_CS)
+       @rm -f coreclr-testlist.txt
+       @$(call dumpvariabletofile, coreclr-testlist.txt, $(CORECLR_COREMANGLIB_TESTSI_CS))
+       @for var in $(sort $(dir $(CORECLR_COREMANGLIB_TESTSI_CS))); do ln -sf $(abspath coreclr-testlibrary.dll) "$$var"; done
+       $(RUNTIME) ./test-runner.exe -j a --testsuite-name "coreclr-coremanglib" --expected-exit-code 100 --input-file coreclr-testlist.txt
+       @rm -f coreclr-testlist.txt
+
+check-coreclr: coreclr-compile-tests coreclr-runtest-basic coreclr-runtest-coremanglib
+
+coreclr-gcstress: coreclr-validate GCStressTests.exe $(CORECLR_STRESSTESTSI_CS)
+       BVT_ROOT=$(realpath $(CORECLR_PATH)/tests/src/GC/Stress/Tests) $(RUNTIME) GCStressTests.exe $(CORECLR_PATH)/tests/src/GC/Stress/testmix_gc.config; if [ $$? -ne 100 ]; then exit 1; fi
+
+# Output a variable in $(2) to the file $(1), separated by newline characters
+# we need to do it in groups of 100 entries to make sure we don't exceed shell char limits
+# note: the variable is appended to the file
+define dumpvariabletofile
+echo $(wordlist 1, 100, $(2)) | tr " " "\n" >> $(1)
+$(if $(word 101, $(2)), $(call dumpvariabletofile, $(1), $(wordlist 101, $(words $(2)), $(2))))
+endef
+
+CORECLR_TEST_CS_SRC=           \
+       $(CORECLR_PATH)/tests/src/GC/Coverage/LargeObjectAlloc.cs       \
+       $(CORECLR_PATH)/tests/src/GC/Coverage/LargeObjectAlloc2.cs      \
+       $(CORECLR_PATH)/tests/src/GC/Regressions/v2.0-beta1/149926/149926.cs    \
+       $(CORECLR_PATH)/tests/src/GC/Regressions/v2.0-beta1/289745/289745.cs    \
+       $(CORECLR_PATH)/tests/src/GC/Regressions/v2.0-beta2/426480/426480.cs    \
+       $(CORECLR_PATH)/tests/src/GC/Regressions/v2.0-beta2/471729/471729.cs    \
+       $(CORECLR_PATH)/tests/src/GC/Regressions/v2.0-rtm/494226/494226.cs      \
+       $(CORECLR_PATH)/tests/src/GC/Regressions/v2.0-rtm/544701/544701.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Add1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/And1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/AndRef.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Args4.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Args5.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/AsgAdd1.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/AsgAnd1.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/AsgOr1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/AsgSub1.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/AsgXor1.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/BinaryRMW.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Call1.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/CnsBool.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/CnsLng1.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblAdd.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblAddConst.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblArea.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblArray.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblAvg2.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblAvg6.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblCall1.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblCall2.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblDist.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblDiv.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblDivConst.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblFillArray.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblMul.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblMulConst.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblNeg.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblRem.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblRoots.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblSub.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblSubConst.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/DblVar.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Eq1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPAdd.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPAddConst.cs \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPArea.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPArray.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPAvg2.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPAvg6.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPCall1.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPCall2.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPConvDbl2Lng.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPConvF2F.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPConvF2I.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPConvF2Lng.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPConvI2F.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPDist.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPDiv.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPDivConst.cs \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPError.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPFillArray.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPMath.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPMul.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPMulConst.cs \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPNeg.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPRem.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPRoots.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPSmall.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPSub.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPSubConst.cs \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FPVar.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FactorialRec.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FibLoop.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/FiboRec.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Gcd.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Ge1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Gt1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Ind1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/InitObj.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/InstanceCalls.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/IntArraySum.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/IntConv.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrue1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueEqDbl.cs \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueEqFP.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueEqInt1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueGeDbl.cs \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueGeFP.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueGeInt1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueGtDbl.cs \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueGtFP.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueGtInt1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueLeDbl.cs \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueLeFP.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueLeInt1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueLtDbl.cs \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueLtFP.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueLtInt1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueNeDbl.cs \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueNeFP.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/JTrueNeInt1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Jmp1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Le1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/LeftShift.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/LngConv.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Localloc.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/LocallocLarge.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/LongArgsAndReturn.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Lt1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Ne1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/NegRMW.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/NestedCall.cs \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/NotAndNeg.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/NotRMW.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/ObjAlloc.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/OpMembersOfStructLocal.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Or1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/OrRef.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/RightShiftRef.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Rotate.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/StaticCalls.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/StaticValueField.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/StructFldAddr.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/StructInstMethod.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Sub1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/SubRef.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Swap.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Switch.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Unbox.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/Xor1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/XorRef.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/addref.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/div1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/div2.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/divref.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/mul1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/mul2.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/mul3.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/mul4.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/CodeGenBringUpTests/rem1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/Arrays/complex1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/Arrays/complex2.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/Arrays/simple1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/Arrays/simple2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Generic_Test_CSharp_Base_1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Generic_Test_CSharp_Base_2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Generic_Test_CSharp_Base_3.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Generic_Test_CSharp_Base_4.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Generic_Test_CSharp_Base_6.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Generic_Test_CSharp_Peer_1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Generic_Test_CSharp_Peer_2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Generic_Test_CSharp_Peer_3.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Generic_Test_CSharp_Peer_4.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Generic_Test_CSharp_Peer_6.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Test_CSharp_Base_1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Test_CSharp_Base_2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Test_CSharp_Base_3.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Test_CSharp_Base_4.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Test_CSharp_Peer_1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Test_CSharp_Peer_2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Test_CSharp_Peer_3.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/CheckedCtor/Test_CSharp_Peer_4.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StrAccess/straccess1.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StrAccess/straccess2.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StrAccess/straccess3.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StrAccess/straccess4.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructPromote/SP1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructPromote/SP1a.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructPromote/SP1a2.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructPromote/SP1b.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructPromote/SP1c.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructPromote/SP1d.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructPromote/SP2.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructPromote/SP2a.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructPromote/SP2b.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructPromote/SP2c.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructPromote/SpAddr.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructPromote/SpAddrAT.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/TypedReference/TypedReference.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/UnrollLoop/Dev10_846218.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/UnrollLoop/loop1.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/UnrollLoop/loop4.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Bool_And_Op.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Bool_No_Op.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Bool_Or_Op.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Bool_Xor_Op.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Double_And_Op.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Double_No_Op.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Double_Or_Op.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Double_Xor_Op.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Float_And_Op.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Float_No_Op.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Float_Or_Op.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Float_Xor_Op.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Int_And_Op.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Int_No_Op.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Int_Or_Op.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/cmov/Int_Xor_Op.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/flowgraph/xaddmuly.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/33objref.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/cse1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/cse2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/lclfldadd.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/lclflddiv.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/lclfldmul.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/lclfldrem.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/lclfldsub.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/gettypetypeof/gettypetypeofmatrix.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/intrinsic/interlocked/IntrinsicTest_Overflow.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/intrinsic/interlocked/cmpxchg.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/intrinsic/interlocked/cse_cmpxchg.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/intrinsic/interlocked/nullchecksuppress.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/intrinsic/interlocked/regalloc1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/intrinsic/interlocked/regalloc2.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/intrinsic/pow/pow0.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/intrinsic/pow/pow1.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/intrinsic/pow/pow2.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/intrinsic/pow/pow3.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/lifetime/lifetime1.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/lifetime/lifetime2.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/localloc/localloc3.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/newarr/newarr.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/shift/int16.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/shift/int32.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/shift/int64.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/shift/uint16.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/shift/uint32.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/shift/uint64.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/shift/uint8.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/Struct01.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/Struct01_instance.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/class01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/class01_instance.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/class01_static.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/class02.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/class03.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/class04.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/class05.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/class06.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/class07.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/struc01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/struct01_static.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/struct02.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/struct03.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/struct04.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/struct05.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/struct06.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/Jagged/struct07.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/MultiDim/class01.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/MultiDim/class01_Instance.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/MultiDim/class01_static.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/MultiDim/struct01.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/MultiDim/struct01_Instance.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/ConstructedTypes/MultiDim/struct01_static.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/TypeParameters/Jagged/class01.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/TypeParameters/Jagged/struct01.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/TypeParameters/MultiDim/class01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Arrays/TypeParameters/MultiDim/struct01.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/ConstrainedCall/class1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/ConstrainedCall/class2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/ConstrainedCall/vt1.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/ConstrainedCall/vt2.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/ConstrainedCall/vt3.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/ConstrainedCall/vt4.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Constraints/Call_instance01.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Constraints/Call_static01.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Constraints/Convert_instance01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Constraints/Convert_static01.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Constraints/Transitive_instance01.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Constraints/Transitive_static01.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Conversions/Boxing/box_unbox01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Conversions/Reference/GenToGen01.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Conversions/Reference/GenToGen02.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Conversions/Reference/GenToGen03.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Conversions/Reference/GenToNonGen01.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Conversions/Reference/GenToNonGen02.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Conversions/Reference/GenToNonGen03.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Conversions/Reference/NonGenToGen01.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Conversions/Reference/NonGenToGen02.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Conversions/Reference/NonGenToGen03.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Coverage/chaos55915408cs.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Coverage/chaos56200037cs.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Coverage/chaos65204782cs.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Exceptions/general_class_instance01.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Exceptions/general_class_static01.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Exceptions/general_struct_instance01.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Exceptions/general_struct_static01.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Exceptions/specific_class_instance01.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Exceptions/specific_class_instance02.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Exceptions/specific_class_static01.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Exceptions/specific_class_static02.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Exceptions/specific_struct_instance01.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Exceptions/specific_struct_instance02.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Exceptions/specific_struct_static01.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Exceptions/specific_struct_static02.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Fields/instance_assignment_class01.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Fields/instance_assignment_struct01.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Fields/instance_equalnull_class01.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Fields/instance_equalnull_struct01.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Fields/instance_passing_class01.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Fields/instance_passing_struct01.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Fields/static_assignment_class01.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Fields/static_assignment_struct01.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Fields/static_equalnull_class01.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Fields/static_equalnull_struct01.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Fields/static_passing_class01.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Fields/static_passing_struct01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Classes/BaseClass01.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Classes/BaseClass02.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Classes/BaseClass03.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Classes/Baseclass04.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Classes/Baseclass05.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Classes/class01.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Classes/class02.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Classes/class03.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Interfaces/Class01.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Interfaces/Class02.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Interfaces/Class03.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Interfaces/Class04.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Interfaces/Class05.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Interfaces/Struct01.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Interfaces/Struct02.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Interfaces/Struct03.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Interfaces/Struct04.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Interfaces/Struct05.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Structs/struct01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Structs/struct02.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Instantiation/Structs/struct03.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Locals/instance_assignment_class01.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Locals/instance_assignment_struct01.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Locals/instance_equalnull_class01.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Locals/instance_equalnull_struct01.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Locals/instance_passing_class01.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Locals/instance_passing_struct01.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Locals/static_assignment_class01.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Locals/static_assignment_struct01.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Locals/static_equalnull_class01.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Locals/static_equalnull_struct01.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Locals/static_passing_class01.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Locals/static_passing_struct01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/MemberAccess/class_instance01.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/MemberAccess/class_static01.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/MemberAccess/interface_class01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/MemberAccess/interface_class02.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/MemberAccess/interface_struct01.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/MemberAccess/interface_struct02.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/MemberAccess/struct_instance01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/MemberAccess/struct_static01.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Parameters/instance_assignment_class01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Parameters/instance_assignment_struct01.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Parameters/instance_equalnull_class01.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Parameters/instance_equalnull_struct01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Parameters/instance_passing_class01.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Parameters/instance_passing_struct01.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Parameters/static_assignment_class01.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Parameters/static_assignment_struct01.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Parameters/static_equalnull_class01.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Parameters/static_equalnull_struct01.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Parameters/static_passing_class01.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Parameters/static_passing_struct01.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/TypeParameters/default_class01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/TypeParameters/default_struct01.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Typeof/Struct02.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Typeof/class01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Typeof/class02.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Typeof/class03.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Typeof/dynamicTypes.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Typeof/objectBoxing.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Typeof/refTypesdynamic.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Typeof/struct01.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Typeof/struct03.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/Typeof/valueTypeBoxing.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/lcs/lcs.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/lcs/lcs2.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/lcs/lcsbas.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/lcs/lcsbox.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/lcs/lcsmax.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/lcs/lcsmixed.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/lcs/lcsval.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/lcs/lcsvalbox.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/misc/arrres.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/misc/gcarr.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/misc/selfref.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/AsgOp/i4/i4.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/AsgOp/i4/i4flat.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/AsgOp/i8/i8.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/AsgOp/i8/i8flat.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/AsgOp/r4/r4.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/AsgOp/r4/r4flat.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/AsgOp/r8/r8.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/AsgOp/r8/r8flat.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Boxing/misc/enum.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Boxing/misc/nestval.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Boxing/misc/tailjump.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Coverage/b433189.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/FPtrunc/convr4a.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/FPtrunc/convr8a.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/25params/25param1a.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/25params/25param2a.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/25params/25param3a.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/SEH/catchfinally.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/SEH/catchfinally_tail.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/callvirt/test1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/ctor/val_ctor.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/deep/deep.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/recurse.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/implicit/obj.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/bool.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/byte.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/char.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/decimal.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/double.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/float.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/int.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/long.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/sbyte.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/short.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/uint.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/ulong.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/DataTypes/ushort.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/GaussJordan/classarr.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/GaussJordan/jaggedarr.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/GaussJordan/plainarr.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/GaussJordan/structarr.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/InnerProd/classarr.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/InnerProd/doublearr.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/InnerProd/intarr.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/InnerProd/jaggedarr.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/InnerProd/stringarr.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/InnerProd/structarr.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/basics/classarr.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/basics/doublearr.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/basics/jaggedarr.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/basics/stringarr.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/MDArray/basics/structarr.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/arithm32.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/arithm64.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/r4NaNadd.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/r4NaNdiv.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/r4NaNmul.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/r4NaNrem.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/r4NaNsub.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/r8NaNadd.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/r8NaNdiv.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/r8NaNmul.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/r8NaNrem.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/r8NaNsub.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Overflow/FloatInfinitiesToInt.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Overflow/FloatOvfToInt2.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/call.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/jumper.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/jumps.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/vtret.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/etc/ctor_recurse.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/etc/gc_nested.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/etc/han2.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/etc/han3.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/etc/han3_ctor.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/etc/han3_ref.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/etc/hanoi.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/etc/knight.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/etc/nested.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/identity/accum.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/identity/vcall.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/port/lcs.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/port/lcs_gcref.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/SEH/cast_throw.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/SEH/throw.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/castclass_call.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/castclass_ldarg.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/castclass_ldloc.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/castclass_newobj.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/isinst_call.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/isinst_ldarg.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/isinst_ldloc.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/isinst_newobj.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/iface/iface1.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/ilseq/commonBase.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/cctor/simple/precise1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/cctor/simple/precise1b.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/cctor/simple/precise2.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/cctor/simple/precise4.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/div/decimaldiv.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/div/i4div.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/div/i8div.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/div/negSignedMod.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/div/overlddiv.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/div/r4div.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/div/r8div.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/div/u4div.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/div/u8div.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/rem/decimalrem.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/rem/i4rem.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/rem/i8rem.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/rem/overldrem.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/rem/r4rem.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/rem/r8rem.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/rem/u4rem.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/divrem/rem/u8rem.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/eh/interactions/ehSO.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/eh/interactions/volatileFromFinally.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_c.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_f4.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_f8.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_i1.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_i2.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_i4.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_o.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_s.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/misc/explicit1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/misc/explicit2.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/misc/explicit3.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/misc/explicit4.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/misc/explicit5.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/misc/explicit6.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/misc/explicit7.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/misc/explicit8.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/rotate/rotarg_double.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/rotate/rotarg_float.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/rotate/rotarg_objref.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/rotate/rotarg_valref.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/bug614098/intToByte.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/bug619534/ehCodeMotion.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/bug619534/finallyclone.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/bug619534/twoEndFinallys.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/bug621705/ptuple_lost.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/bug647189/ssa_tuIsAddr.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug675304/arrayDim.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug675304/osrAddovershot.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug679008/GCOverReporting.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug679008/castClassEH.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug679008/sealedCastVariance.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug679008/singleRefField.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug679008/zeroInitStackSlot.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug723489/qMarkColon.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/inlining/bug505642/test.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/arrays/lcs_long.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/arrays/lcs_ulong.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/misc/binop.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/misc/box.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_addsub.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldc_div.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldc_mul.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldc_mulovf.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldfld_mul.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldfld_mulovf.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldsfld_mul.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldsfld_mulovf.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_muldiv.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/superlong/superlong.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/addsub.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/ldc_mul.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/ldc_mulovf.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/ldfld_mul.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/ldfld_mulovf.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/ldsfld_mul.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/ldsfld_mulovf.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/muldiv.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/nonvirtualcall/classic.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/nonvirtualcall/delegate.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/nonvirtualcall/generics.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/nonvirtualcall/generics2.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/nonvirtualcall/tailcall.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/nonvirtualcall/valuetype.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/array1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/array2.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/format.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/gcreport.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/lcs.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/native.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/virtcall.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall_v4/delegateParamCallTarget.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/operand/refanyval.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/operand/unbox.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-EJIT/V1-M09.5-PDC/b12008/b12008.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-EJIT/V1-M11-Beta1/b40089/b40089.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-EJIT/V1-M11-Beta1/b40138/b40138.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-EJIT/V1-M11-Beta1/b45679/b45679.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-EJIT/V1-M12-Beta2/b46847/b46847.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b11490/b11490.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b12399/b12399.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b12624/b12624.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b13569/b13569.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14716/b14716.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b15728/b15728.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16238/b16238.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16328/b16328.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16335/b16335.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16423/b16423.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b20913/b20913.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b22290/b22290.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b24727/b24727.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b24728/b24728.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25647/b25647.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26558/b26558.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26560/b26560.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26732/b26732.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26863/b26863.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b27811/b27811.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b27819/b27819.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b27824/b27824.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28037/b28037.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28042/b28042.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28776/b28776.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28787/b28787.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28790/b28790.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30126/b30126.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30128/b30128.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30630/b30630.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b31732/b31732.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b31748/b31748.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b31749/b31749.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b31763/b31763.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b31912/b31912.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b32303/b32303.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b32345/b32345.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b32560/b32560.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b32801/b32801.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b13170/b13170.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b13178/b13178.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b13647/b13647.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14057/b14057.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14059/b14059.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14277/b14277.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14314/b14314.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14367/b14367.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14396/b14396.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14422/b14422.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14428/b14428.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14443/b14443.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14616/b14616.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14624/b14624.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14640/b14640.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b14673/b14673.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b15155/b15155.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b15468/b15468.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b15526/b15526.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b15783/b15783.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b15786/b15786.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b15797/b15797.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b15864/b15864.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09/b16294/b16294.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b02051/b02051.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b02076/b02076.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05477/b05477.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b06464/b06464.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b06680/b06680.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b06859/b06859.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b06924/b06924.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b08944/b08944a.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b08944/b08944b.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b09287/b09287.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b09452/b09452.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b13330/b13330.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b13466/b13466.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b30586/b30586.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b31878/b31878.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b34945/b34945.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b36274/b36274.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b36332/b36332.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b36470/b36470.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b36471/b36471.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b36472/b36472.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b37131/b37131.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b37598/b37598.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b37608/b37608.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b37636/b37636.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b38403/b38403.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b38556/b38556.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b39217/b39217.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b39224/b39224.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b39951/b39951.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40141/b40141.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40216/b40216.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40221/b40221.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40496/b40496.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40521/b40521.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41063/b41063.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41234/b41234.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41391/b41391.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41470/b41470.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41488/b41488.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41495/b41495.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41621/b41621.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41918/b41918.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b42009/b42009.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b42013/b42013.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b42918/b42918.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b42929/b42929.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43010/b43010.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43313/b43313.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43719/b43719.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43958/b43958.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44193/b44193.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44297/b44297.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44410/b44410.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b45015/b45015.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b45259/b45259.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b45270/b45270.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b45458/b45458.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b45535/b45535.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b46170/b46170.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b46629/b46629.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b46641/b46641.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b46649/b46649.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b46867/b46867.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b47047/b47047.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b48248/b48248.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b48797/b48797.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b48805/b48805.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b48864/b48864.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b48872/b48872.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b48990/b48990a.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b48990/b48990b.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b49318/b49318.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b49322/b49322.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b49717/b49717.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31182/b31182.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31745/b31745.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31746/b31746.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31762/b31762.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31903/b31903.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31917/b31917.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b37646/b37646.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b38269/b38269.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b41852/b41852.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b47975/b47975.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b48929/b48929.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b49809/b49809.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b50042/b50042.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b50145/b50145.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b50145/b50145a.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b50145/b50145b.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b50145/b50145c.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b50535/b50535.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b51463/b51463.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b51469/b51469.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b51565/b51565.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b51870/b51870.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b52572/b52572.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b52578/b52578.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b52746/b52746.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b52760/b52760.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b52838/b52838.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b52839/b52839.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b54667/b54667.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55197/b55197.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b56149/b56149.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b56154/b56154.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b56159/b56159.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59297/b59297.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b60723/b60723.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b61028/b61028.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b61515/b61515.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b61640/b61640.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b62498/b62498.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b62555/b62555.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b62892/b62892.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b63183/b63183.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b68361/b68361.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b68634/b68634.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b71099/b71099.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b71120/b71120.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b71135/b71135.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b71155/b71155.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b71231/b71231.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b72136/b72136.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b72996/b72996.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b73921/b73921.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b74182/b74182.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b75250/b75250.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b75509/b75509.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b76590/b76590.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b77707/b77707.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b77713/b77713.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b78392/b78392.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b79418/b79418.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b80045/b80045.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b82866/b82866.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b83690/b83690.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b84836/b84836.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b91377/b91377.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b87284/b87284.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b88712/b88712.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b88793/b88793.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b88797/b88797.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b89277/b89277.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b89279/b89279.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b89506/b89506.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b89600/b89600.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b89946/b89946.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b91189/b91189.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b91230/b91230.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b91248/b91248.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b91855/b91855.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b91859/b91859.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b91867/b91867.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b91917/b91917.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b92568/b92568.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b92614/b92614.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b92693/b92693.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b93027/b93027.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M14-SP1/b119538/b119538a.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M14-SP1/b119538/b119538b.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-QFE/b148815/testclass.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.1-M1-Beta1/b119294/b119294.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.1-M1-Beta1/b130333/byteshift.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.1-M1-Beta1/b140711/b140711.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b102879/dblinf.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b124232/genisinst.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b169333/b169333.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b178119/hugemthfrm.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b178128/hugestruct.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b180381/constrained1.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b191926/ParamLimit.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b219940/struct01_gen.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b00735/b00735.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b02345/b02345.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b07211/byteshift.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b07900/rpPasses.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b08020/bbHndIndex.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b11762/b11762.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b16386/gtnop.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b16399/gtIsValid64RsltMul.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b19171/jmp2blk.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b30251/b578931.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b102533/DeadBlock.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b268908/vars2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b320147/1086745236.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b321799/repro.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b338014/vsw338014.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b405223/b405223.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b416667/b416667.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-RTM/b369916/b369916.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/dev10/b392262/b392262.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/dev10/b400791/b400971.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/dev10/b402658/b402658.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/dev11/DevDiv_376412/DevDiv_376412.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/DDB/b121938/ConstToString.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/DDB/b151497/NullCheckBoxedValuetypeReturn.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/DDB/b158861/b158861.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/DDB/b163200/b163200.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/DDB/b170362/b170362.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/DDB/b33183/b33183.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/DDB/b49778/b49778.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b106272/b106272.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b152292/b152292.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b565808/b565808.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b589202/b589202.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b598034/b598034.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b598649/b598649.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b602004/Inline_Vars2.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b608066/b608066.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b608198/b608198.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b609280/b609280.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b610562/b610562.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b610750/32vs64.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b610750/b610750.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b611219/b611219.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b72218/b72218.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/Dev11_457559/Dev11_457559.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/Dev11_5437/Dev11_5437.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/Dev11_617302/Dev11_617302.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/Dev11_646049/Dev11_646049.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/DevDiv2_10623/DevDiv2_10623.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/DevDiv2_8863/DevDiv2_8863.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/dev10_94677/loopvt.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/dev11_13912/dev11_13912.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/dev11_165544/seqpts.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev14/DevDiv_876169/DevDiv_876169.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/JitBlue/DevDiv_794115/DevDiv_794115.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/JitBlue/DevDiv_794631/DevDiv_794631.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/JitBlue/DevDiv_815940/DevDiv_815940.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/JitBlue/DevDiv_816617/DevDiv_816617.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/JitBlue/GitHub_1296/GitHub_1296.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/JitBlue/GitHub_1323/GitHub_1323.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b100336/emptytryfinally.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b103846/d.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b111130/makework.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b115253/hello2.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b119026/bug.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b119026/charbug.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b140298/test.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b141358/test.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b99219/b99219.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-Beta1/b102615/test1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-Beta1/b102860/structret1_1.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-Beta1/b102887/struct5_2.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-Beta1/b124409/ericcprop3.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-Beta1/b91074/pack8.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b10789/switch.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b10790/locals10K.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b10827/MT_DEATH.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b19112/divbyte.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b19112/divshort.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b102729/b102729.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b102763/gcparamonstack.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b102886/ovf.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b10828/redundant.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b19394/stringArray114.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b21015/test.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b26496/_1d6bgof.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b27978/gcparaminreg.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b27980/struct1.cs \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b28077/struct5_2.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b28141/structret1_1.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b29343/test.hfa12.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b184799/b184799.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b302558/_aopst1l.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b309539/_ba6c0ou.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b309548/_hngh669.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b311420/b311420.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b360587/repro.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-RTM/b539509/b539509.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/clr-x64-JIT/v4.0/DevDiv34372/overRepLocalOpt.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/148343.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/9_and_alloca2.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/9param.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/eh1.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/fgtest1.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/fgtest2.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/funclet.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/gcparaminreg.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/ret_struct_test1.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/ret_struct_test4.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/simple1.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct1.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct1_2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct1_4.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct1_5.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct2.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct2_2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct2_4.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct2_5.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct2_5_2.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct3.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct3_2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct3_4.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct3_5.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct4.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct4_2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct4_4.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct4_5.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct5.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct5_2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct5_4.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct5_5.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct6.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct6_2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct6_4.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct6_5.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct7_1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct8.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct9.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/struct9_2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp1_1.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp1_2.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp1_3.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp1_4.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp1_5.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp1_6.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp2_1.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp2_2.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp2_3.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp2_4.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp3_1.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp4_1.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp5_1.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfp6_1.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfpseh5_1.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structfpseh6_1.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structref1_1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret1_1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret1_2.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret1_3.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret2_1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret2_2.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret2_3.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret3_1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret3_2.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret3_3.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret4_1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret4_2.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret4_3.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret5_1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret5_2.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret5_3.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret6_1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret6_2.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structret6_3.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/structva1_1.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/test1.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/test2.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/test3.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/test_noalloca.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/misc/vbil.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/regress/vswhidbey/143837.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/gc/regress/vswhidbey/339415.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cg/CGRecurse/CGRecurseAAA.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cg/CGRecurse/CGRecurseAAC.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cg/CGRecurse/CGRecurseACA.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cg/CGRecurse/CGRecurseACC.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cg/cgstress/CgStress1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cg/cgstress/CgStress2.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cg/cgstress/CgStress3.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/HugeArray.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/HugeArray1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/HugeField1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/HugeField2.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/arrayexpr1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/arrayexpr2.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/fieldExprUnchecked1.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/fieldexpr1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/fieldexpr1_1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/fieldexpr2.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/hugeSimpleExpr1.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/hugeexpr1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/mixedexpr1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/pointerexpr1.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/pointerexpr1_1.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/simpleexpr1.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/simpleexpr1_1.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/simpleexpr2.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/simpleexpr3.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/simpleexpr4.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/staticFieldExpr1.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/staticFieldExpr1_1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/staticFieldExprUnchecked1.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/volatilefield.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cse/volatilestaticfield.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/inl/caninline.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/lim/lim_002.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/lur/lur_02.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/osr/osr001.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/rngchk/ArrayBound.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/rngchk/ArrayWith2Loops.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/rngchk/ArrayWithFunc.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/rngchk/BadMatrixMul.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/rngchk/JaggedArray.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/rngchk/MatrixMul.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/rngchk/RngchkStress1.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/rngchk/RngchkStress2.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/rngchk/RngchkStress3.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/rngchk/SimpleArray_01.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/asurt/143616/foo.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/ddb/103087/103087.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/ddb/113574/113574.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/ddb/132977/132977.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/ndpw/160545/simple.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/ndpw/21015/interior_pointer.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/102964/test.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/329169/test.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/373472/test.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/471729/test.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/517867/test.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/524070/test1.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/524070/test2.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/528315/simple-repro.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/538615/test1.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/539509/test1.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/541067/test1.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/543229/test.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/549880/test.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/601425/stret.cs \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/610378/BigFrame.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/ArrayOfStructs.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/DelegInstanceFtn.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/DelegStaticFtn.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/GenericStructs.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/InlineThrow.cs \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/Inline_DelegateStruct.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/Inline_GenericMethods.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/Inline_Handler.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/Inline_MultipleReturn.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/Inline_NewObj.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/Inline_NormalizeStack.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/Inline_RecursiveMethod.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/Inline_RecursiveMethod21.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/Inline_STARG.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/Inline_SideAffects.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/Inline_Vars.cs \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/ReturnStruct_Method.cs \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/StructAsParam_Method.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/StructInClass.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/Struct_Opcodes.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/args1.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/args2.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/args3.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/array.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/debug.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/deepcall.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/ifelse.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/indexer.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/inline.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/inline_Many.cs \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/inline_Recursion.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/interfaceCall.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/interfaceProperty.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/mathfunc.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/mthdimpl.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/property.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/size.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/throwTest.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/opt/Inline/trycatch.cs    \
+       $(CORECLR_PATH)/tests/src/Loader/regressions/classloader/main.cs        \
+       $(CORECLR_PATH)/tests/src/Loader/regressions/classloader/vsw307137.cs   \
+       $(CORECLR_PATH)/tests/src/Regressions/common/AboveStackLimit.cs \
+       $(CORECLR_PATH)/tests/src/Regressions/common/ArrayCopy.cs       \
+       $(CORECLR_PATH)/tests/src/Regressions/common/CompEx.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/common/DisableTransparencyEnforcement.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/common/Marshal.cs \
+       $(CORECLR_PATH)/tests/src/Regressions/common/ThreadCulture.cs   \
+       $(CORECLR_PATH)/tests/src/Regressions/common/ToLower.cs \
+       $(CORECLR_PATH)/tests/src/Regressions/common/avtest.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/common/date.cs    \
+       $(CORECLR_PATH)/tests/src/Regressions/common/interlock.cs       \
+       $(CORECLR_PATH)/tests/src/Regressions/common/pow3.cs    \
+       $(CORECLR_PATH)/tests/src/Regressions/common/test1307.cs        \
+       $(CORECLR_PATH)/tests/src/Regressions/common/testClass.cs       \
+       $(CORECLR_PATH)/tests/src/Regressions/common/testInterface.cs   \
+       $(CORECLR_PATH)/tests/src/Regressions/common/unsafe.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0014/avtest.cs    \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0028/thread08-simplified.cs       \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0044/nullable.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0046/istype.cs    \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0069/date.cs      \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0075/largearraytest.cs    \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0077/interlock.cs \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0080/delete_next_card_table.cs    \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0099/abovestacklimit.cs   \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0138/pow3.cs      \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0198/compex.cs    \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0202/threadculture.cs     \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0211/genrecur.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0275/marshal.cs   \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0308/tolower.cs   \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0342/unsafe.cs    \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0416/hello.cs     \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0487/test.cs      \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0570/test570.cs   \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0576/test0576.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0582/csgen.1.cs   \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0583/test583.cs   \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0584/test584.cs   \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0792/test0792.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0828/test0828.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0829/test0829.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0857/override.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0939/test0939.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0968/test968.cs   \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/1307/test1307.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/1333/testclass.cs \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/1333/testinterface.cs     \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/1337/test1337.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/1386/co1727ctor_oo.cs     \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/1402/test1402.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/1514/interlockexchange.cs \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/1534/test1534.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/1535/test1535.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/1549/test1549.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/72162/test72162.cs        \
+       $(CORECLR_PATH)/tests/src/Threading/ThreadStatics/ThreadStatic01.cs     \
+       $(CORECLR_PATH)/tests/src/Threading/ThreadStatics/ThreadStatic02.cs     \
+       $(CORECLR_PATH)/tests/src/Threading/ThreadStatics/ThreadStatic03.cs     \
+       $(CORECLR_PATH)/tests/src/Threading/ThreadStatics/ThreadStatic05.cs     \
+       $(CORECLR_PATH)/tests/src/Threading/ThreadStatics/ThreadStatic06.cs \
+       $(CORECLR_PATH)/tests/src/baseservices/compilerservices/dynamicobjectproperties/dev10_535767.cs \
+       $(CORECLR_PATH)/tests/src/baseservices/compilerservices/dynamicobjectproperties/test448035.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/genericexceptions01.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/genericexceptions02.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/genericexceptions03.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/genericexceptions04.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/genericexceptions05.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/genericexceptions06.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/genericexceptions07.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/genericexceptions08.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/nested-try-catch01.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/nested-try-catch02.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/nested-try-catch03.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/nested-try-catch04.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/nested-try-catch05.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/nested-try-catch06.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/nested-try-catch07.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/nested-try-catch08.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/nested-try-catch09.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/nested-try-catch10.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-finally-struct01.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-finally-struct02.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-finally-struct03.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-finally01.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-finally02.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-finally03.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-struct01.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-struct02.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-struct03.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-struct04.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-struct05.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-struct06.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-struct07.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-struct08.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch-struct09.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch01.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch02.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch03.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch04.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch05.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch06.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch07.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch08.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-catch09.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-finally-struct01.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-finally-struct02.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-finally-struct03.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-finally01.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-finally02.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-finally03.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter001.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter002.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter003.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter004.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter005.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter006.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter007.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter008.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter009.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter010.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter011.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter012.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter013.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter014.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter015.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter016.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter017.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/typeparameter018.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/regressions/whidbeybeta2/349379/349379.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/regressions/whidbeybeta2/366085/366085.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/regressions/whidbeym3.3/106011/106011.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/sharedexceptions/emptystacktrace/oomexception01.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/simple/finally.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/unittests/returnfromcatch.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/regression/v1/threads/functional/threadpool/cs_threadpoolnullchecks/cs_threadpoolnullchecks.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/currentculture/culturechangesecurity.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread01.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread02.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread03.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread04.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread05.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread06.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread07.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread08.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread09.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread10.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread11.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread12.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread13.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread14.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread15.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread16.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread17.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread18.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread19.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread20.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread21.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread22.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread23.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread24.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread25.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread26.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread27.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread28.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread29.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/syncdelegate/thread30.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread01.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread02.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread03.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread04.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread05.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread06.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread07.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread08.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread09.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread10.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread11.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread12.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread13.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread14.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread15.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread16.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread17.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread18.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread19.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread20.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread21.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread22.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread23.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread24.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread25.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread26.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread27.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread28.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread29.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/generics/threadstart/thread30.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/exchange/exchangeint.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/exchange/exchangelong.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/exchange/exchangetclass.cs \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/exchange/exchangetstring.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/monitor/enter/enternull.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/monitor/exit/exitnull.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/monitor/pulse/pulsenull.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/monitor/pulseall/pulseallnull.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/monitor/unownedlock/enterexitexit.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/monitor/unownedlock/noenterobject.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/monitor/unownedlock/noenterobjectnew.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/monitor/unownedlock/noentervaltype.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/readerwriterlockslim/singlereleasewriteddbug71632.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/readerwriterlockslim/tryenterfailureddbugs124485.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/readerwriterlockslim/upgrader.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/regressions/576463/576463.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/regressions/6906/repro.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/threadstatic/threadstatic01.cs \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/threadstatic/threadstatic02.cs \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/threadstatic/threadstatic03.cs \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/threadstatic/threadstatic05.cs \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/threadstatic/threadstatic06.cs \
+       $(CORECLR_PATH)/tests/src/hosting/coreclr/activation/sxshost/usercode.cs        \
+       $(CORECLR_PATH)/tests/src/hosting/stress/testset1/csgen.1.cs    \
+       $(CORECLR_PATH)/tests/src/hosting/stress/testset1/csgen.2.cs    \
+       $(CORECLR_PATH)/tests/src/hosting/stress/testset1/simple1.cs    \
+       $(CORECLR_PATH)/tests/src/managed/Compilation/HelloWorld.cs     \
+       $(CORECLR_PATH)/tests/src/reflection/regression/dev10bugs/dev10_629953.cs       \
+       $(CORECLR_PATH)/tests/src/reflection/regression/dev10bugs/dev10_630880.cs
+
+CORECLR_COREMANGLIB_TEST_CS_SRC=               \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/components/stopwatch/co9600ctor.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/components/stopwatch/co9604get_isrunning.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/action/actionctor.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/action/actioninvoke.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/activator/activatorcreateinstance2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/argumentexception/argumentexceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/argumentexception/argumentexceptionmessage.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/argumentnullexception/argumentnullexceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/argumentnullexception/argumentnullexceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/argumentoutofrangeexception/argumentoutofrangeexceptionctor.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/argumentoutofrangeexception/argumentoutofrangeexceptionctor2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/argumentoutofrangeexception/argumentoutofrangeexceptionmessage.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/arithmeticexception/arithmeticexceptionctor1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraybinarysearch1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraybinarysearch1b.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraybinarysearch2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraybinarysearch2b.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraybinarysearch3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraybinarysearch3b.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraybinarysearch4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraybinarysearch4b.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraybinarysearch5.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraybinarysearch5b.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraybinarysearch6.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayclear.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayclone.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraycopy1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraycopy2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraycopyto.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraycreateinstance1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraycreateinstance1b.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraycreateinstance2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraycreateinstance2b.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraygetenumerator.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraygetlength.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraygetlowerbound.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraygetupperbound.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraygetvalue.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraygetvalue1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraygetvalue2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraygetvalue2b.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayicollectionget_count.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayilistadd.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayilistclear.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayilistcontains.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayilistget_item.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayilistindexof.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayilistinsert.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayilistremove.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayilistremoveat.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayilistset_item.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayindexof1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayindexof1b.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayindexof2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayindexof2b.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayindexof3.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayindexof3b.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayindexof4.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayindexof4b.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayinitialize.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraylastindexof1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraylastindexof1b.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraylastindexof2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraylastindexof2b.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraylastindexof3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraylastindexof3b.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraylastindexof4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraylength.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayrank.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayreserse1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayreserse2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayreverse1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arrayreverse2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysetvalue1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysetvalue1b.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysetvalue2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysetvalue2b.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort10.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort11.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort12.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort13.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort14.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort1b.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort2b.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort3b.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort5.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort6.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort7.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort8.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/array/arraysort9.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/arraytypemismatchexception/arraytypemismatchexceptionctor1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/arraytypemismatchexception/arraytypemismatchexceptionctor2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/arraytypemismatchexception/arraytypemismatchexceptionctor3.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attribute/ddb125472_gethashcode.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attribute/gethashcode.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsall.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsassembly.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsclass.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsconstructor.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsdelegate.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsenum.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsevent.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsfield.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsgenericparameter.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsinterface.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsmethod.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsmodule.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsparameter.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsproperty.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsreturnvalue.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributetargets/attributetargetsstruct.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributeusageattribute/attributeusageattributeallowmultiple.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/attributeusageattribute/attributeusageattributector.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/badimageformatexception/badimageformatexceptionctor1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/badimageformatexception/badimageformatexceptionctor2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/badimageformatexception/badimageformatexceptionctor3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/badimageformatexception/badimageformatexceptionmessage.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/badimageformatexception/badimageformatexceptiontostring.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleancompareto_boolean.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleanequals_boolean.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleanequals_object.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleanfalsestring.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleangethashcode.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletoboolean.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletobyte.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletochar.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletodatetime.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletodecimal.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletodouble.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletoint16.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletoint32.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletoint64.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletosbyte.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletosingle.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletotype.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletouint16.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletouint32.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleaniconvertibletouint64.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleanparse.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleantostring.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleantruestring.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/boolean/booleantryparse.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteequals1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteequals2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/bytegethashcode.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletoboolean.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletobyte.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletochar.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletodatetime.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletodecimal.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletodouble.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletoint16.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletoint32.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletoint64.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletosbyte.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletosingle.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletotype.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletouint16.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletouint32.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteiconvertibletouint64.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/bytemaxvalue.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteminvalue.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteparse1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/byteparse3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/bytetostring1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/bytetostring2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/bytetostring3.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/bytetostring4.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/byte/bytetryparse.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charcompateto1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charequals1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charequals2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chargethashcode.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletoboolean.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletobyte.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletochar.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletodatetime.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletodecimal.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletodouble.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletoint16.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletoint32.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletoint64.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletosbyte.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletosingle.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletotype.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletouint16.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletouint32.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariconvertibletouint64.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariscontrol1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariscontrol2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charisdigit1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charisdigit2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charisletter1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charisletter2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charisletterordigit1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charisletterordigit2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charislower1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charislower2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charisnumber1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charisnumber2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charispunctuation2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charisseparator1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charisseparator2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charissurrogate1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charissurrogate2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charissurrogatepair1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charissurrogatepair2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charissymbol1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charisupper1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charisupper2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariswhitespace1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chariswhitespace2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charmaxvalue.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/charminvalue.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chartolower1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chartostring1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chartostring2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chartoupper1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/char/chartryparse.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/charenumerator/charenumeratorcurrent.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/charenumerator/charenumeratorienumeratorcurrent.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/charenumerator/charenumeratorienumgetcurrent.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/charenumerator/charenumeratormovenext.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/charenumerator/charenumeratorreset.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/clscompliantattribute/clscompliantattributector.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/clscompliantattribute/clscompliantattributeiscompliant.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/dictionaryentry/dictionaryentryctor.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/dictionaryentry/dictionaryentrykey.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/dictionaryentry/dictionaryentryvalue.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/comparer/comparercompare1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/comparer/comparercompare2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/comparer/comparerctor.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/comparer/comparerdefault.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryadd.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryclear.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionarycomparer.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionarycontainskey.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionarycontainsvalue.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionarycount.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryctor1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryctor2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryctor3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryctor4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryctor5.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryctor6.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionarygetenumerator.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryicollectionadd.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryicollectioncontains.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryicollectioncopyto.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryicollectioncopyto2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryicollectionisreadonly.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryicollectionisreadonly2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryicollectionissynchronized.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryicollectionissynchronized2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryicollectionremove.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryicollectionsyncroot.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryicollectionsyncroot2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionaryadd.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionarycontains.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionarygetenumerator.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionaryisfixedsize.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionaryisfixedsize2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionaryisreadonly.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionaryisreadonly2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionaryitem.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionaryitem2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionarykeys.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionarykeys2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionarykeys3.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionarykeys4.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionaryremove.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionaryvalue2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionaryvalue3.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionaryvalue4.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryidictionaryvalues.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryienumerablegetenumerator.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryienumerablegetenumerator2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionaryremove.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionary/dictionarytrygetvalue.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryenumerator/dictionaryenumeratorcurrent.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryenumerator/dictionaryenumeratordispose.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryenumerator/dictionaryenumeratoridictionaryenumeratorget_entry.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryenumerator/dictionaryenumeratoridictionaryenumeratorget_key.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryenumerator/dictionaryenumeratoridictionaryenumeratorget_value.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryenumerator/dictionaryenumeratorienumeratorget_current.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryenumerator/dictionaryenumeratorienumeratorreset.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryenumerator/dictionaryenumeratormovenext.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/keycollectioncopyto.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/keycollectioncount.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/keycollectionctor.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/keycollectiongetenumerator.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/systemcollectionsgenericicollectionadd.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/systemcollectionsgenericicollectionclear.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/systemcollectionsgenericicollectioncontains.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/systemcollectionsgenericicollectionisreadonly.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/systemcollectionsgenericicollectionremove.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/systemcollectionsgenericienumerablegetenumerator.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/systemcollectionsicollectioncopyto.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/systemcollectionsicollectionissynchronized.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/systemcollectionsicollectionsyncroot.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionarykeycollection/systemcollectionsienumerablegetenumerator.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/dictionaryvaluecollectioncopyto.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/dictionaryvaluecollectioncount.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/dictionaryvaluecollectionctor.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/dictionaryvaluecollectiongetenumerator.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/systemcollectionsicollectioncopyto.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/systemcollectionsicollectionissynchronized.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/systemcollectionsicollectionsyncroot.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/valuecollectiongenericicollectionadd.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/valuecollectiongenericicollectionclear.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/valuecollectiongenericicollectioncontains.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/valuecollectiongenericicollectionisreadonly.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/valuecollectiongenericicollectionremove.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/valuecollectiongenericienumerablegetenumerator.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictionaryvaluecollection/valuecollectionienumerablegetenumerator.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictkeycollenum/dictionarykeycollectionenumeratorcurrent.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictkeycollenum/dictionarykeycollectionenumeratordispose.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictkeycollenum/dictionarykeycollectionenumeratormovenext.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictkeycollenum/dictionaryvaluecollectionenumeratorcurrent.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictkeycollenum/dictionaryvaluecollectionenumeratordispose.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictkeycollenum/dictionaryvaluecollectionenumeratormovenext.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictkeycollenum/keycollectionenumeratorienumeratorcurrent.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictkeycollenum/keycollectionenumeratorienumeratorreset.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictkeycollenum/valuecollectionenumeratorienumeratorcurrent.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictkeycollenum/valuecollectionenumeratorienumeratorreset.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictvalcollenum/dictionaryvaluecollectionenumeratorcurrent.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictvalcollenum/dictionaryvaluecollectionenumeratordispose.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictvalcollenum/dictionaryvaluecollectionenumeratormovenext.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictvalcollenum/valuecollectionenumeratorienumeratorcurrent.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/dictvalcollenum/valuecollectionenumeratorienumeratorreset.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/equalitycomparer/equalitycomparerequals.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/equalitycomparer/equalitycomparergethashcode.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/equalitycomparer/equlitycomparerdefault.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/icollection/icollectionadd.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/icollection/icollectionclear.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/icollection/icollectioncontains.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/icollection/icollectioncopyto.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/icollection/icollectioncount.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/icollection/icollectionisreadonly.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/icollection/icollectionremove.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/idictionary/idictionarycontainskey.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/idictionary/idictionaryitem.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/idictionary/idictionarykeys.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/idictionary/idictionarytrygetvalue.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/idictionary/idictionaryvalues.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/ienumerable/ienumerablegetenumerator.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/ienumerator/ienumeratorcurrent.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/iequalitycomparer/iequalitycomparerequals.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/iequalitycomparer/iequalitycomparergethashcode.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/ilist/ilistindexof.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/ilist/ilistinsert.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/ilist/ilistitem.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/ilist/ilistremoveat.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/keynotfoundexception/keynotfoundexceptionctor1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/keynotfoundexception/keynotfoundexceptionctor2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/keyvaluepair/keyvaluepairctor.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/keyvaluepair/keyvaluepairkey.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/keyvaluepair/keyvaluepairtostring.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/keyvaluepair/keyvaluepairvalue.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/binarysearch1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/binarysearch2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/binarysearch3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/copyto1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/copyto2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/copyto3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listadd.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listaddrange.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listcapacity.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listclear.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listcontains.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listcount.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listctor1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listctor2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listctor3.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listforeach.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listgetenumerator.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listgetrange.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listicollectioncopyto.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listicollectionisreadonly.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listicollectionissynchronized.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listicollectionsyncroot.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listienumerablegetenumerator.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listienumerablegetenumerator2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listilistadd.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listilistcontains.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listilistindexof.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listilistinsert.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listilistisfixedsize.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listilistisreadonly.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listilistitem.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listilistremove.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listindexof1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listindexof2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listindexof3.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listinsertrange.cs.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listlastindexof1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listlastindexof2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listlastindexof3.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listremoveat.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listremoverange.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listreverse.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listreverse2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listtoarray.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/list/listtrimexcess.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queue/queueclear.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queue/queuecontains.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queue/queuecopyto.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queue/queuecount.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queue/queuector1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queue/queuector2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queue/queuector3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queue/queuedequeue.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queue/queueenqueue.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queue/queuegetenumerator.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queue/queuepeek.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queue/queuetoarray.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queueenumerator/enumeratorcurrent.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queueenumerator/enumeratordispose.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/queueenumerator/enumeratormovenext.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stack/stackclear.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stack/stackcontains.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stack/stackcopyto.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stack/stackcount.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stack/stackctor1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stack/stackctor2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stack/stackctor3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stack/stackgetenumerator.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stack/stackpeek.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stack/stackpop.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stack/stackpush.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stack/stacktoarray.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stackenumerator/stackenumeratorcurrent.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stackenumerator/stackenumeratordispose.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/generic/stackenumerator/stackenumeratormovenext.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/icollection/icollectioncopyto.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/icollection/icollectioncount.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/icollection/icollectionissynchronized.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/icollection/icollectionsyncroot.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/icomparer/icomparercompare.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/idictionary/idictionaryadd.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/idictionary/idictionaryclear.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/idictionary/idictionarycontains.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/idictionary/idictionarygetenumerator.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/idictionary/idictionaryisfixedsize.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/idictionary/idictionaryisreadonly.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/idictionary/idictionaryremove.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/ienumerator/ienumeratorcurrent.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/ienumerator/ienumeratormovenext.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/ienumerator/ienumeratorreset.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/ilist/ilistisfixedsize.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/collections/ilist/ilistitem.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/comparison/comparisonbegininvoke.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/comparison/comparisonendinvoke.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/comparison/comparisoninvoke.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/console/consoleseterror.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/console/consolesetout.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/convertchangetype2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/convertfrombase64chararray.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/convertfrombase64string.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttobase64chararray.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttobase64string1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttobase64string2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoboolean.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoboolean2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoboolean4.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoboolean5.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoboolean6.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoboolean7.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoboolean8.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttobyte.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttobyte1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttobyte2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttobyte3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttobyte4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttobyte6.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttobyte7.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttobyte8.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar10.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar11.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar12.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar13.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar14.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar15.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar16.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar5.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar6.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar7.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar8.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttochar9.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodatetime.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal10.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal11.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal12.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal13.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal14.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal15.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal16.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal17.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal18.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal5.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal6.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal8.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodecimal9.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble10.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble11.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble12.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble13.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble14.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble15.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble16.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble17.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble5.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble6.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble7.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble8.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttodouble9.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_10.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_11.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_16.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_17.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_18.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_5.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_6.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_7.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_8.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint16_9.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_10.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_11.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_16.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_17.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_18.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_5.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_6.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_7.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_8.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint32_9.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_10.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_11.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_16.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_17.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_18.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_5.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_6.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_7.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_8.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttoint64_9.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte10.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte11.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte16.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte5.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte6.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte7.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte8.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosbyte9.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosingle.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosingle13.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosingle14.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosingle15.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosingle16.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttosingle17.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring10.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring11.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring12.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring13.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring14.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring15.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring16.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring17.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring18.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring19.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring20.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring21.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring22.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring23.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring24.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring25.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring26.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring27.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring28.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring29.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring30.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring31.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring32.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring33.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring5.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring6.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring7.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring8.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttostring9.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint16.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint161.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint1610.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint1611.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint1612.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint1613.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint1614.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint1615.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint1616.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint1617.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint1618.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint162.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint163.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint164.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint165.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint166.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint167.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint168.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint169.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint32.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint321.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint3210.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint3211.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint3212.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint3213.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint3215.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint3216.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint3217.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint3218.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint3219.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint322.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint323.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint324.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint325.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint326.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint327.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint328.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint329.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint64.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint641.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint6410.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint6411.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint6412.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint6413.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint6414.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint6415.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint6416.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint6417.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint6418.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint642.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint643.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint644.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint645.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint646.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint647.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint648.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/convert/converttouint649.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimecompare.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimecompareto1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimector1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimector3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimector4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimector6.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimector7.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimedate.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimegethashcode.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimehour.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimekind.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimemaxvalue.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimemillisecond.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimeminute.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimeminvalue.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimenow.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimeparse1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimeparse2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimeparse3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimeparseexact1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimeparseexact2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimeparseexact3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimesecond.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimespecifykind.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimesubtract1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimesubtract2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimeticks.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimetimeofday.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimetoday.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimetofiletime.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimetofiletimeutc.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimetolocaltime.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimetostring1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimetostring2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimetostring3.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimeutcnow.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetimekind/datetimekindlocal.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetimekind/datetimekindunspecified.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetimekind/datetimekindutc.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dayofweek/dayofweekfriday.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dayofweek/dayofweekmonday.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dayofweek/dayofweeksaturday.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dayofweek/dayofweeksunday.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dayofweek/dayofweekthursday.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dayofweek/dayofweektuesday.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dayofweek/dayofweekwednesday.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimafloor.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaladd.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalcompare.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalctor1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalctor2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalctor3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalctor4.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalctor5.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalctor6.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalctor7.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalctor8.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaldivide.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalequals1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalequals2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalequals3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalgetbits.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalmaxvalue.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalminusone.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalminvalue.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalmultiply.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalnegate.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalone.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalparse.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalparse2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalparse3.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalparse4.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalremainder.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalsubtract.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltoboolean.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltobyte.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltobyte1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltochar.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltodatetime.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltodecimal.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltodouble.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltoint16.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltoint32.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltoint64.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltosbyte.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltosingle.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltostring1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltostring2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltostring3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltostring4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltouint16.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltouint32.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltouint64.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltruncate.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimaltryparse.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/decimal/decimalzero.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/delegate/delegatecombine1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/delegate/delegatecombineimpl.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/delegate/delegateequals1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/delegate/delegategethashcode1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/delegate/delegategetinvocationlist1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/delegate/delegateremove.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/delegate/delegateremoveimpl.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/diagnostics/conditionalattribute/conditionalattributeconditionstring.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/diagnostics/conditionalattribute/conditionalattributector.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/diagnostics/debuggingmodes/debuggingmodesdefault.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/diagnostics/debuggingmodes/debuggingmodesdisableoptimizations.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/diagnostics/debuggingmodes/debuggingmodesenableeditandcontinue.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/diagnostics/debuggingmodes/debuggingmodesignoresymbolstoresequencepoints.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/diagnostics/debuggingmodes/debuggingmodesnone.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dividebyzeroexception/dividebyzeroexceptionctor.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dividebyzeroexception/dividebyzeroexceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dividebyzeroexception/dividebyzeroexceptionctor3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dllnotfoundexception/dllnotfoundexception1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dllnotfoundexception/dllnotfoundexceptionctor2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/dllnotfoundexception/dllnotfoundexceptionctor3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doublecompareto1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleepsilon.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleequals1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleequals2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doublegethashcode.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleiconvertibletoboolean.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleiconvertibletobyte.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleiconvertibletodatetime.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleiconvertibletodecimal.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleiconvertibletodouble.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleiconvertibletoint16.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleiconvertibletoint32.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleiconvertibletoint64.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleiconvertibletosbyte.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleiconvertibletosingle.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleisinfinity.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleisnan.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleisnegativeinfinity.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleispositiveinfinity.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doublemaxvalue.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleminvalue.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doublenan.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doublenegativeinfinity.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubleparse3.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doublepositiveinfinity.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubletostring1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubletostring2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubletostring3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubletostring4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/double/doubletryparse.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/enum/enumiconvertibletoint64.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/enum/enumiconvertibletosingle.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/enum/enumiconvertibletotype.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/enum/enumiconvertibletouint16.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/enum/enumiconvertibletouint32.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/enum/enumiconvertibletouint64.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/enum/enumisdefined.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/enum/enumtoobjectb.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/enum/enumtostring.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/enum/enumtostring3.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/environment/environmentnewline.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/environment/environmentprocessorcount.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/environment/environmentprocessorcount_cti.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/eventargs/eventargsctor.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/eventhandler/eventhandlerinvoke.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/eventhandler_generic/eventhandlerbegininvoke.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/eventhandler_generic/eventhandlerctor.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/eventhandler_generic/eventhandlerendinvoke.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/eventhandler_generic/eventhandlerinvoke.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/exception/exceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/exception/exceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/exception/exceptionctor3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/exception/exceptiongetbaseexception.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/flagsattribute/flagsattributector.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/formatexception/formatexceptionctor1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/formatexception/formatexceptionctor2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/formatexception/formatexceptionctor3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/gc/gccollect.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/gc/gcgettotalmemory.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/gc/gckeepalive.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/gc/gcmaxgeneration.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/gc/gcreregisterforfinalize.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/gc/gcsuppressfinalize.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/gc/gcwaitforpendingfinalizers.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/calendarweekrule/calendarweekrulefirstday.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/calendarweekrule/calendarweekrulefirstfourdayweek.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/calendarweekrule/calendarweekrulefirstfullweek.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/charunicodeinfo/charunicodeinfogetnumericvalue1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/charunicodeinfo/charunicodeinfogetnumericvalue2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/charunicodeinfo/charunicodeinfogetunicodecategory1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/charunicodeinfo/charunicodeinfogetunicodecategory2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareinfo/compareinfocompare.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareinfo/compareinfocompare2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareinfo/compareinfoindexof.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareinfo/compareinfoindexof2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareinfo/compareinfoisprefix.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareinfo/compareinfoissuffix.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareinfo/compareinfolastindexof.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareoptions/compareoptionsignorecase.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareoptions/compareoptionsignorekanatype.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareoptions/compareoptionsignorenonspace.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareoptions/compareoptionsignoresymbols.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareoptions/compareoptionsignorewidth.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareoptions/compareoptionsnone.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareoptions/compareoptionsordinal.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareoptions/compareoptionsordinaligorecase.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/compareoptions/compareoptionsstringsort.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfoclone.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfocompareinfo.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfoconstructor2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfoenglishname.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfoequals.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfogetcultureinfo2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfogethashcode.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfoinvariantculture.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfoisneutralculture.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfoname.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfonativename.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfoparent.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinforeadonly.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfotextinfo.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfotostring.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/cultureinfo/cultureinfotwoletterisolanguagename.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinfoclone.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinfocurrentinfo.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinfogetabbreviateddayname.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinfogetabbreviatedmonthname.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinfogetdayname.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinfogetformat.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinfogetinstance.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinfogetmonthname.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinfoinvariantinfo.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinfoisreadonly.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinforeadonly.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinforfc1123pattern.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinfosortabledatetimepattern.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimeformatinfo/datetimeformatinfouniversalsortabledatetimepattern.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimestyles/datetimestyleallowinnerwhite.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimestyles/datetimestylesadjusttouniversal.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimestyles/datetimestylesallowleadingwhite.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimestyles/datetimestylesallowtrailingwhite.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimestyles/datetimestylesallowwhitespaces.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimestyles/datetimestylesassumelocal.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimestyles/datetimestylesassumeuniversal.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimestyles/datetimestylesnocurrentdatedefault.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimestyles/datetimestylesnone.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/datetimestyles/datetimestylesroundtripkind.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberformatinfo/numberformatinfoclone.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberformatinfo/numberformatinfoctor.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberformatinfo/numberformatinfocurrencydecimalseparator.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberformatinfo/numberformatinfocurrencygroupseparator.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberformatinfo/numberformatinfogetformat.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberformatinfo/numberformatinfogetinstance.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberformatinfo/numberformatinforeadonly.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesallowcurrencysymbol.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesallowdecimalpoint.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesallowexponent.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesallowhexspecifier.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesallowleadingsign.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesallowleadingwhite.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesallowparentheses.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesallowthousands.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesallowtrailingsign.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesallowtrailingwhite.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesany.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylescurrency.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesfloat.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstyleshexnumber.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesinteger.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesnone.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/numberstyles/numberstylesnumber.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/regioninfo/regioninfocurrencysymbol.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/regioninfo/regioninfocurrentregion.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/regioninfo/regioninfoequals.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/regioninfo/regioninfogethashcode.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/regioninfo/regioninfoismetric.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/regioninfo/regioninfoisocurrencysymbol.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/regioninfo/regioninfoname.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/regioninfo/regioninfotostring.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/regioninfo/regioninfotwoletterisoregionname.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/stringinfo/stringinfoctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/stringinfo/stringinfoctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/stringinfo/stringinfoequals.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/stringinfo/stringinfogethashcode.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/stringinfo/stringinfogetnexttextelement2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/stringinfo/stringinfogettextelementenumerator1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/stringinfo/stringinfogettextelementenumerator2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/stringinfo/stringinfolengthintextelements.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/stringinfo/stringinfoparsecombiningcharacters.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/stringinfo/stringinfostring.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/textelementenumerator/textelementenumeratorcurrent.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/textelementenumerator/textelementenumeratorelementindex.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/textelementenumerator/textelementenumeratorgettextelement.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/textelementenumerator/textelementenumeratormovenext.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/textelementenumerator/textelementenumeratorreset.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/textinfo/textinfoculturename.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/textinfo/textinfoequals.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/textinfo/textinfogethashcode.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/textinfo/textinfoisreadonly.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/textinfo/textinfotostring.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/textinfo/textinfotoupper1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/textinfo/textinfotoupper2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryclosepunctuation.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryconnectorpunctuation.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategorycontrol.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategorydashpunctuation.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategorydecimaldigitnumber.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryenclosingmark.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryfinalquotepunctuation.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryformat.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryinitialquotepunctuation.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryletternumber.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategorylineseparator.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategorylowercaseletter.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategorymathsymbol.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategorymodifierletter.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategorymodifiersymbol.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategorynonspacingmark.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryopenpunctuation.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryotherletter.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryothernotassigned.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryothernumber.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryotherpunctuation.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryothersymbol.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryparagraphseparator.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryprivateuse.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryspaceseparator.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryspacingcombiningmark.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategorysurrogate.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategorytitlecaseletter.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/globalization/unicodecategory/unicodecategoryuppercaseletter.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidcompareto1_cti.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidcompareto2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidctor1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidctor1_cti.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidctor2_cti.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidctor3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidctor3_cti.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidempty.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidequals1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidequals1_cti.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidequals2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidequals2_cti.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidequals3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidgethashcode.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidnewguid.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidtobytearray.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/guid/guidtostring1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/icomparable/icomparablecompareto.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/icomparable_generic/icomparable_genericcompareto.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/iconvertible/iconvertibletoboolean.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/iconvertible/iconvertibletobyte.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/iconvertible/iconvertibletochar.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/iconvertible/iconvertibletodatetime.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/iconvertible/iconvertibletodecimal.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/iconvertible/iconvertibletodouble.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/iconvertible/iconvertibletoint16.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/iconvertible/iconvertibletoint32.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/iconvertible/iconvertibletoint64.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/idisposable/idisposabledispose.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/iformatable/iformatabletostring.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/indexoutofrangeexception/indexoutofrangeexceptionctor1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/indexoutofrangeexception/indexoutofrangeexceptionctor2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/indexoutofrangeexception/indexoutofrangeexceptionctor3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32compareto1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32equals1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32equals2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32gethashcode.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletoboolean.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletobyte.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletochar.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletodatetime.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletodecimal.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletodouble.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletoint16.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletoint32.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletoint64.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletosbyte.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletosingle.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletotype.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletouint16.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletouint32.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32iconvertibletouint64.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32maxvalue.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32minvalue.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32parse1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32parse2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32parse3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32parse4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32tostring.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32tostring2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32tostring3.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32tostring4.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int/int32tryparse.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16equals1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16equals2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16gethashcode.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletoboolean.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletobyte.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletochar.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletodatetime.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletodecimal.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletodouble.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletoint16.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletoint32.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletoint64.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletosbyte.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletosingle.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletotype.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletouint16.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletouint32.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16iconvertibletouint64.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16maxvalue.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16minvalue.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16parse1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16parse2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16parse3.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16tostring.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16tostring2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int16/int16tryparse.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64compareto1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64equals1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64equals2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64gethashcode.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletoboolean.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletobyte.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletochar.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletodatetime.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletodecimal.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletodouble.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletoint16.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletoint32.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletoint64.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletosbyte.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletosingle.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletotype.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletouint16.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletouint32.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64iconvertibletouint64.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64maxvalue.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64minvalue.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64parse1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64parse2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64parse3.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64tostring1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64tostring2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64tostring3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/int64/int64tryparse.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/intptr/intptrctor_int32.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/intptr/intptrctor_int64.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/intptr/intptrctor_void.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/intptr/intptrequals.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/intptr/intptrgethashcode.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/intptr/intptrtoint32.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/intptr/intptrtoint64.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/intptr/intptrtopointer.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/intptr/intptrtostring.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/intptr/intptrzero.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/invalidcastexception/invalidcastexceptionctor1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/invalidcastexception/invalidcastexceptionctor2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/invalidcastexception/invalidcastexceptionctor3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/invalidoperationexception/invalidoperationexceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/invalidoperationexception/invalidoperationexceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/invalidoperationexception/invalidoperationexceptionctor3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/invalidprogramexception/invalidprogramexceptionctor1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/invalidprogramexception/invalidprogramexceptionctor2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/invalidprogramexception/invalidprogramexceptionctor3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/binarywriter/binarywriteroutstream.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/directorynotfoundexception/directorynotfoundexceptionctor1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/directorynotfoundexception/directorynotfoundexceptionctor2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/endofstreamexception/endofstreamexceptionctor1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/endofstreamexception/endofstreamexceptionctor2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileaccess/fileaccessenum.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileaccess/fileaccessread.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileaccess/fileaccessreadwrite.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileaccess/fileaccesswrite.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributesarchive.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributescompressed.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributesdeivce.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributesdirectory.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributesencrypted.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributesenum.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributeshidden.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributesnormal.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributesnotcontentindexed.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributesoffline.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributesreadonly.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributesreparsepoint.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributessystem.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileattributes/fileattributestemporary.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filemode/filemodeappend.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filemode/filemodecreate.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filemode/filemodecreatenew.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filemode/filemodeenum.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filemode/filemodeopen.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filemode/filemodeopenorcreate.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filemode/filemodetruncate.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filenotfoundexception/filenotfoundexceptionctor.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filenotfoundexception/filenotfoundexceptionctor1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filenotfoundexception/filenotfoundexceptionctor2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filenotfoundexception/filenotfoundexceptiongetmessage.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filenotfoundexception/filenotfoundexceptionmessage.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filenotfoundexception/filenotfoundexceptiontostring.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileshare/fileshareenum.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileshare/filesharenone.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileshare/fileshareread.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileshare/filesharereadwrite.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/fileshare/filesharewrite.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/filestream/filestreamdispose.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/ioexception/ioexceptionctor1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/ioexception/ioexceptionctor2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/memorystream/memorystreamctor.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/memorystream/memorystreamctor2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/memorystream/memorystreamctor3.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/memorystream/memorystreamctor4.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/memorystream/memorystreamctor5.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/memorystream/memorystreamctor6.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/memorystream/memorystreamctor7.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathaltdirectoryseparatorchar.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathchangeextension.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathcombine.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathdirectoryseparatorchar.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathgetdirectoryname.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathgetextension.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathgetfilename.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathgetfilenamewithoutextension.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathgetfullpath_extended.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathgetinvalidpathchars.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathhasextension.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathispathrooted.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathpathseparator.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/path/pathvolumeseparatorchar.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/pathtoolongexception/pathtoolongexceptionctor1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/pathtoolongexception/pathtoolongexceptionctor2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/seekorigin/seekoriginbegin.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/seekorigin/seekorigincurrent.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/seekorigin/seekoriginend.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/seekorigin/seekoriginenum.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/stream/streamdispose1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/stream/streamdispose2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/stream/streamnull.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/stream/streamreadtimeout.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/stream/streamwritetimeout.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/streamreader/streamreadernull.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/stringwriter/stringwriterencoding.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/textreader/textreadernull.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/io/textwriter/textwriternull.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathabs1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathabs2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathabs3.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathabs4.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathabs5.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathabs6.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathabs7.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathceiling.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathcos.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathe.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathexp.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathfloor.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathieeeremainder.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathlog10.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmax1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmax10.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmax11.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmax2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmax3.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmax4.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmax5.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmax6.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmax7.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmax8.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmax9.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmin1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmin10.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmin11.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmin2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmin3.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmin4.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmin5.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmin6.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmin7.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmin8.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathmin9.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathpi.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathpow.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathround1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathround2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathround3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathround4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathsign1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathsign2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathsign3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathsign4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathsign5.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathsign6.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathsign7.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathsin.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathsqrt.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/memberaccessexception/memberaccessexceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/memberaccessexception/memberaccessexceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/memberaccessexception/memberaccessexceptionctor3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/methodaccessexception/methodaccessexceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/methodaccessexception/methodaccessexceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/methodaccessexception/methodaccessexceptionctor3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/missingfieldexception/missingfieldexceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/missingfieldexception/missingfieldexceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/missingfieldexception/missingfieldexceptionctor3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/missingfieldexception/missingfieldexceptionmessage.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/missingmemberexception/missingmemberexceptionctor1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/missingmemberexception/missingmemberexceptionctor2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/missingmemberexception/missingmemberexceptionctor3.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/missingmemberexception/missingmemberexceptionmessage.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/missingmethodexception/missingmethodexceptionctor1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/missingmethodexception/missingmethodexceptionctor2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/missingmethodexception/missingmethodexceptionctor3.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/missingmethodexception/missingmethodexceptionmessage.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/notimplementedexception/notimplementedexceptionctor1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/notimplementedexception/notimplementedexceptionctor2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/notimplementedexception/notimplementedexceptionctor3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/notsupportedexception/notsupportedexceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/notsupportedexception/notsupportedexceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/notsupportedexception/notsupportedexceptionctor3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/nullable/nullablecompare.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/nullable/nullablector.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/nullable/nullableequals.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/nullable/nullableequals2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/nullable/nullablegethashcode.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/nullable/nullablegetunderlyingtype.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/nullable/nullablegetvalueordefault1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/nullable/nullablegetvalueordefault2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/nullable/nullablehasvalue.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/nullable/nullabletostring.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/nullable/nullablevalue.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/nullreferenceexception/nullreferenceexceptionctor1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/object/objectctor.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/object/objectequals1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/object/objectequals2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/object/objectfinalize.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/object/objectgethashcode.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/object/objectmemberwiseclone.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/object/objectreferenceequals.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/object/objecttostring.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/objectdisposedexception/objectdisposedexceptionmessage.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/objectdisposedexception/objectdisposedexceptionobjectname.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/obsoleteattribute/obsoleteattributector1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/obsoleteattribute/obsoleteattributector2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/obsoleteattribute/obsoleteattributector3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/obsoleteattribute/obsoleteattributeiserror.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/obsoleteattribute/obsoleteattributemessage.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/outofmemoryexception/outofmemoryexceptionctor1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/outofmemoryexception/outofmemoryexceptionctor2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/outofmemoryexception/outofmemoryexceptionctor3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/overflowexception/overflowexceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/overflowexception/overflowexceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/overflowexception/overflowexceptionctor3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/paramarrayattribute/paramarrayattributector.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/platformnotsupportedexception/platformnotsupportedexceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/platformnotsupportedexception/platformnotsupportedexceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/platformnotsupportedexception/platformnotsupportedexceptionctor3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/predicate/predicatebegininvoke.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/predicate/predicateendinvoke.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/predicate/predicateinvoke.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/random/randomctor1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/random/randomctor2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/random/randomnext1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/random/randomnext2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/random/randomnext3.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/random/randomnextbytes.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/random/randomnextdouble.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/random/randomsample.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/rankexception/rankexceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/rankexception/rankexceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/rankexception/rankexceptionctor3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/ambiguousmatchexception/ambiguousmatchexceptionctor1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/ambiguousmatchexception/ambiguousmatchexceptionctor2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/ambiguousmatchexception/ambiguousmatchexceptionctor3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblyconfigurationattribute/assemblyconfigurationattributeconfiguration.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblyconfigurationattribute/assemblyconfigurationattributector.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblydefaultaliasattribute/assemblydefaultaliasattributector.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblydefaultaliasattribute/assemblydefaultaliasattributedefaultalias.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblydelaysignattribute/assemblydelaysignattributector.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblydelaysignattribute/assemblydelaysignattributedelaysign.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblydescriptionattribute/assemblydescriptionattributector.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblydescriptionattribute/assemblydescriptionattributedescription.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblykeyfileattribute/assemblykeyfileattributector.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblykeyfileattribute/assemblykeyfileattributekeyfile.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblykeynameattribute/assemblykeynameattributector.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblykeynameattribute/assemblykeynameattributekeyname.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblyname/assemblynamegetpublickey.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblyname/assemblynamegetpublickeytoken.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblyname/assemblynamesetpublickey.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblyname/assemblynamesetpublickeytoken.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblyname/assemblynameversion.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblynameflags/assemblynameflagsenablejitcompileoptimizer.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblynameflags/assemblynameflagsenablejitcompiletracking.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblynameflags/assemblynameflagsnone.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblynameflags/assemblynameflagspublickey.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblynameflags/assemblynameflagsretargetable.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblytitleattribute/assemblytitleattributector.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assemblytitleattribute/assemblytitleattributetitle.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/callingconventions/callingconventionsany.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/callingconventions/callingconventionsexplicitthis.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/callingconventions/callingconventionshasthis.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/callingconventions/callingconventionsstandard.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/callingconventions/callingconventionsvarargs.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/constructorinfo/constructorinfoconstructorname.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/constructorinfo/constructorinfotypeconstructorname.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/defaultmemberattribute/defaultmemberattributector.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/defaultmemberattribute/defaultmemberattributemembername.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/flowcontrol/flowcontrolbranch.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/flowcontrol/flowcontrolcall.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/flowcontrol/flowcontrolcond_branch.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/flowcontrol/flowcontrolmeta.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/flowcontrol/flowcontrolnext.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/flowcontrol/flowcontrolreturn.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/flowcontrol/flowcontrolthrow.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodeequals1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodeequals2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodeflowcontrol.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodegethashcode.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodename.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodeopcodetype.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodeoperandtype.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesadd_ovf.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesadd_ovf_un.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesand.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesarglist.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbeq.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbeq_s.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbge.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbge_s.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbge_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbge_un_s.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbgt.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbgt_s.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbgt_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbgt_un_s.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesble.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesble_s.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesble_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesble_un_s.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesblt.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesblt_s.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesblt_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesblt_un_s.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbne_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbne_un_s.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbox.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbr.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbr_s.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbreak.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbrfalse.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbrfalse_s.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbrtrue.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesbrtrue_s.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodescall.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodescalli.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodescallvirt.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodescastclass.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesceq.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodescgt.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodescgt_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesckfinite.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesclt.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesclt_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconstrained.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_i.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_i1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_i2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_i4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_i8.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_i.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_i1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_i1_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_i2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_i2_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_i4.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_i4_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_i8.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_i8_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_i_un.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_u.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_u1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_u1_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_u2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_u2_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_u4.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_u4_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_u8.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_u8_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_ovf_u_un.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_r4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_r8.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_r_un.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_u.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_u1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_u2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_u4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesconv_u8.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodescpblk.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodescpobj.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesdiv.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesdiv_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesdup.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesendfilter.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesendfinally.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesinitblk.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesinitobj.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesisinst.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesize.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesjmp.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldarg.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldarg_0.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldarg_1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldarg_2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldarg_3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldarg_s.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldarga.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldarga_s.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i4.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i4_0.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i4_1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i4_2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i4_3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i4_4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i4_5.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i4_6.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i4_7.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i4_8.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i4_m1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i4_s.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_i8.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_r4.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldc_r8.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelem.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelem_i.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelem_i1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelem_i2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelem_i4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelem_i8.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelem_r4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelem_r8.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelem_ref.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelem_u1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelem_u2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelem_u4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldelema.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldfld.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldflda.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldftn.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldind_i.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldind_i1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldind_i2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldind_i4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldind_i8.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldind_r4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldind_r8.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldind_ref.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldind_u1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldind_u2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldind_u4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldlen.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldloc.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldloc_0.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldloc_1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldloc_2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldloc_3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldloc_s.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldloca.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldloca_s.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldnull.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldobj.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldsfld.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldsflda.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldstr.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldtoken.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesldvirtftn.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesleave.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesleave_s.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodeslocalloc.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesmkrefany.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesmul.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesmul_ovf.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesmul_ovf_un.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesneg.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesnewarr.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesnewobj.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesnop.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesnot.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesor.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodespop.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesprefix1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesprefix2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesprefix3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesprefix4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesprefix5.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesprefix6.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesprefix7.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesprefixref.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesreadonly.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesrefanytype.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesrefanyval.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesrem.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesrem_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesret.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesrethrow.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesshl.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesshr.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesshr_un.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodessizeof.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstarg.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstarg_s.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstelem.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstelem_i.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstelem_i1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstelem_i2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstelem_i4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstelem_i8.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstelem_r4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstelem_r8.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstelem_ref.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstfld.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstind_i.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstind_i1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstind_i2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstind_i4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstind_i8.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstind_r4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstind_r8.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstind_ref.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstloc.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstloc_0.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstloc_1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstloc_2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstloc_3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstloc_s.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstobj.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesstsfld.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodessub.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodessub_ovf.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodessub_ovf_un.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesswitch.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodestackbehaviourpop.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodestackbehaviourpush.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodestailcall.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodestakessinglebyteargument.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesthrow.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesunaligned.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesunbox.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesunbox_any.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesvolatile.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodesxor.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodetostring.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodes/opcodevalue.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodetype/opcodetypemacro.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodetype/opcodetypenternal.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodetype/opcodetypeobjmodel.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodetype/opcodetypeprefix.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/opcodetype/opcodetypeprimitive.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinlinebrtarget.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinlinefield.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinlinei.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinlinei8.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinlinemethod.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinlinenone.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinliner.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinlinesig.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinlinestring.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinlineswitch.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinlinetok.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinlinetype.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeinlinevar.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeshortinlinebrtarget.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeshortinlinei.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeshortinliner.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/operandtype/operandtypeshortinlinevar.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/packingsize/packingsize16.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/packingsize/packingsize2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/packingsize/packingsize4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/packingsize/packingsizesize1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/packingsize/packingsizesize128.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/packingsize/packingsizesize32.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/packingsize/packingsizesize64.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/packingsize/packingsizesize8.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/packingsize/packingsizeunspecified.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpop0.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpop1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpop1_pop1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopi.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopi_pop1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopi_popi.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopi_popi8.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopi_popi_popi.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopi_popr4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopi_popr8.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopref.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopref_pop1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopref_popi.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopref_popi_pop1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopref_popi_popi.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopref_popi_popi8.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopref_popi_popr4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopref_popi_popr8.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpopref_popi_popref.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpush0.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpush1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpush1_push1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpushi.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpushi8.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpushr4.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpushr8.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourpushref.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourvarpop.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/emit/stackbehaviour/stackbehaviourvarpush.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/eventattributes/eventattributesnone.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/eventattributes/eventattributesrtspecialname.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/eventattributes/eventattributesspecialname.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesassembly.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesfamandassem.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesfamily.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesfamorassem.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesfieldaccessmask.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributeshasdefault.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributeshasfieldrva.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesinitonly.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesliteral.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesnotserialized.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributespinvokeimpl.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesprivate.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesprivatescope.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributespublic.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesrtspecialname.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesspecialname.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/fieldattributes/fieldattributesstatic.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesabstract.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesfamandassem.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesfamily.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesfamorassem.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesfinal.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributeshassecurity.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributeshidebysig.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesmemberaccessmask.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesnewslot.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributespinvokeimpl.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesprivate.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesprivatescope.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributespublic.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesrequiresecobject.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesreuseslot.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesrtspecialname.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesspecialname.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesstatic.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesunmanagedexport.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesvirtual.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodattributes/methodattributesvtablelayoutmask.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributescodetypemask.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributesforwardref.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributesil.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributesinternalcall.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributesmanaged.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributesmanagedmask.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributesnative.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributesnoinlining.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributesoptil.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributespreservesig.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributesruntime.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributessynchronized.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/methodimplattributes/methodimplattributesunmanaged.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/parameterattributes/parameterattributeshasdefault.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/parameterattributes/parameterattributesin.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/parameterattributes/parameterattributesnone.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/parameterattributes/parameterattributesoptional.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/parameterattributes/parameterattributesout.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/parameterattributes/parameterattributesretval.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/propertyattributes/propertyattributeshasdefault.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/propertyattributes/propertyattributesnone.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/propertyattributes/propertyattributesrtspecialname.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/propertyattributes/propertyattributesspecialname.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/targetinvocationexception/targetinvocationexceptionctor1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/targetinvocationexception/targetinvocationexceptionctor2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/targetparametercountexception/targetparametercountexceptionctor1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/targetparametercountexception/targetparametercountexceptionctor2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/targetparametercountexception/targetparametercountexceptionctor3.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesabstract.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesansiclass.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesautoclass.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesautolayout.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesbeforefieldinit.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesclass.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesclasssemanticsmask.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesexplicitlayout.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributeshassecurity.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesimport.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesinterface.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributeslayoutmask.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesnestedassembly.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesnestedfamandassem.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesnestedfamily.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesnestedfamorassem.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesnestedprivate.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesnestedpublic.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributespublic.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesrtspecialname.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributessealed.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributessequentiallayout.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesserializable.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesspecialname.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesstringformatmask.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesunicodeclass.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattributesvisibilitymask.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/typeattributes/typeattribytesnotpublic.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/resources/missingmanifestresourceexception/missingmanifestresourceexceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/resources/missingmanifestresourceexception/missingmanifestresourceexceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/resources/missingmanifestresourceexception/missingmanifestresourceexceptionctor3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/resources/neutralresourceslanguageattribute/neutralresourceslanguageattributector.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/resources/neutralresourceslanguageattribute/neutralresourceslanguageattributeculturename.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/resources/satellitecontractversionattribute/satellitecontractversionattributector.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/resources/satellitecontractversionattribute/satellitecontractversionattributeversion.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/accessedthroughpropertyattribute/atpactor.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/accessedthroughpropertyattribute/atpapropertyname.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/compilationrelaxations/compilationrelaxationsattributector1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/compilergeneratedattribute/compilergeneratedattributector.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/customconstantattribute/customconstantattributector.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/indexernameattribute/indexernameattributector.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/internalsvisibletoattribute/internalsvisibletoattributeassemblyname.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/internalsvisibletoattribute/internalsvisibletoattributector.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/methodimploptions/methodimploptionsnoinlining.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/methodimploptions/methodimploptionspreservesig.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/runtimecompatibilityattribute/runtimecompatibilityattributector.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/runtimecompatibilityattribute/runtimecompatibilityattributewrapnonexceptionthrows.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/runtimehelpers/gethashcode.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/decimalconstantattribute/decimalconstantattributector.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/decimalconstantattribute/decimalconstantattributevalue.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/fixedbufferattribute/fixedbufferattributector.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/fixedbufferattribute/fixedbufferattributeelementtype.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/fixedbufferattribute/fixedbufferattributelength.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/callingconvention/callingconventionwinapi.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/charset/charsetunicode.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/fieldoffsetattribute/fieldoffsetattributector.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/fieldoffsetattribute/fieldoffsetattributevalue.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/gchandle/gchandleaddrofpinnedobject.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/gchandle/gchandlealloc1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/gchandle/gchandlefree.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/gchandle/gchandletarget.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/gchandletype/gchandletypenormal.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/gchandletype/gchandletypepinned.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/gchandletype/gchandletypeweak.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/gchandletype/gchandletypeweaktrackresurrection.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/inattribute/inattributector.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/layoutkind/layoutkindauto.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/layoutkind/layoutkindsequential.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshal/marshalgetlastwin32error.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshal/marshalreadint641.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshal/marshalsizeof1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshal/marshalsizeof2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshalasattribute/marshalasattributearraysubtype.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshalasattribute/marshalasattributector1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshalasattribute/marshalasattributector2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshalasattribute/marshalasattributemarshalcookie.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshalasattribute/marshalasattributemarshaltype.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshalasattribute/marshalasattributemarshaltyperef.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshalasattribute/marshalasattributesizeconst.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshalasattribute/marshalasattributesizeparamindex.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshalasattribute/marshalasattributevalue.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/outattribute/outattributector.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/preservesigattribute/preservesigattributector.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/safehandle/safehandlector_cti.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/safehandle/safehandledangerousaddref.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/safehandle/safehandledangerousgethandle.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/safehandle/safehandledangerousrelease.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/safehandle/safehandledispose1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/safehandle/safehandledispose2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/safehandle/safehandlehandle.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/safehandle/safehandleisclosed.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/safehandle/safehandleisinvalid.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/safehandle/safehandlesethandle.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/safehandle/safehandlesethandleasinvalid.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/structlayoutattribute/structlayoutattributecharset.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/structlayoutattribute/structlayoutattributector.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/structlayoutattribute/structlayoutattributepack.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/structlayoutattribute/structlayoutattributesize.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/structlayoutattribute/structlayoutattributevalue.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/unmanagedtype/unmanagedtype.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtimefieldhandle/runtimefieldhandleequals.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtimefieldhandle/runtimefieldhandlegethashcode.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtimemethodhandle/runtimemethodhandleequals.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtimemethodhandle/runtimemethodhanldegethashcode.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtimetypehandle/runtimetypehandleequals.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtimetypehandle/runtimetypehandlegethashcode.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbytecompareto2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteequals1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteequals2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbytegethashcode.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteiconvertibletoboolean.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteiconvertibletobyte.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteiconvertibletochar.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteiconvertibletodecimal.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteiconvertibletodouble.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteiconvertibletoint16.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteiconvertibletoint32.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteiconvertibletoint64.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteiconvertibletouint16.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteiconvertibletouint32.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteiconvertibletouint64.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbytemaxvalue.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteminvalue.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteparse1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteparse2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbyteparse3.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbytetostring1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbytetostring2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbytetostring3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/sbyte/sbytetryparse.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/security/securityexception/securityexceptionctor1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/security/securityexception/securityexceptionctor2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/security/securityexception/securityexceptionctor3.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/security/securityexception/securityexceptiontostring.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singleepsilon.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singlegethashcode.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singleisinfinity.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singleisnan.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singleisnegativeinfinity.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singleispositiveinfinity.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singlemaxvalue.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singleminvalue.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singlenan.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singleparse1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singleparse2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletoboolean.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletobyte.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletochar.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletodatetime.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletodecimal.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletodouble.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletoint16.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletoint32.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletoint64.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletosbyte.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletosingle.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletouint16.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletouint32.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletouint64.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/single/singletryparse.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringchars.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringcompare1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringcompare15.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringcompare2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringcompare5.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringcompare6.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringcompare9.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringcompareordinal1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringcompareordinal2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringcompareto1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringconcat1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringconcat2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringconcat3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringconcat4.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringconcat5.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringconcat6.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringconcat7.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringconcat8.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringcopyto.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringctor5.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringctorchar.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringempty.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringequals1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringequals2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringequals3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringequals6.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringformat1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringformat2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringgetenumerator.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringgethashcode.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringiconvertibletoboolean.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringiconvertibletobyte.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringiconvertibletochar.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringiconvertibletoint16.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringiconvertibletoint32.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringiconvertibletoint64.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringiconvertibletosbyte.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringiconvertibletouint16.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringiconvertibletouint32.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringiconvertibletouint64.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringienumerablegetenumerator.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringindexof10.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringinsert.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringisnullorempty.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringjoin.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringjoin1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringjoin2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringlength.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringpadleft.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringpadleft1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringpadleft2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringpadright.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringpadright1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringpadright2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringremove1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringremove2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringreplace1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringreplace2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringsplit1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringsubstring1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringsubstring2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringtochararray.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringtostring1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringtrim1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringtrim1b.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringtrim2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringtrim3.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/string/stringtrim4.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/stringcompare/stringcomparerctor.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/stringcomparer/stringcomparercompare2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/stringcomparer/stringcomparerequals1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/stringcomparer/stringcomparerequals3.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/stringcomparer/stringcomparergettype.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/stringcomparison/stringcomparisoncurrentculture.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/stringcomparison/stringcomparisoncurrentcultureignorecase.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/stringcomparison/stringcomparisonordinal.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/stringcomparison/stringcomparisonordinalignorecase.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/szarrayhelper/szarrayhelpersetitem.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/decoder/decoderctor.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/decoder/decoderreset.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoder/encoderctor.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodingbigendianunicode.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodingclone.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodingconvert1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodingconvert2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodingctor1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodingequals.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetbytecount.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetbytecount1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetbytecount2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetbytecount3.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetbytes1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetbytes2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetbytes3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetbytes4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetbytes5.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetcharcount.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetcharcount1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetcharcount2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetchars1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetchars2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetchars3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetdecoder.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetencoder.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetencoding2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetmaxbytecount.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetmaxcharcount.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetpreamble.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodinggetstring.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodingunicode.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodingutf8.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/encoding/encodingwebname.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend10.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend11.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend12.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend13.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend14.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend15.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend16.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend17.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend18.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend19.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend5.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend6.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend7.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend8.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderappend9.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuildercapacity.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuildercapacity_cti.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderchars.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderctor1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderctor2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderctor3.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderctor4.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderctor5.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderctor6.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderinsert.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderinsert3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderinsert4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderlength.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderlength_cti.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderremove.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderreplace1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderreplace2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderreplace3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuilderreplace4.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuildertostring1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/stringbuilder/stringbuildertostring2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodingctor1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodingequals.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodinggetbytecount1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodinggetbytecount2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodinggetbytes2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodinggetcharcount.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodinggetchars.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodinggetdecoder.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodinggetencoder.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodinggethashcode.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodinggetmaxbytecount.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodinggetmaxcharcount.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodinggetpreamble.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/unicodeencoding/unicodeencodinggetstring.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodingctor.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodingctor2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodingctor3.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodingequals.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggetbytecount1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggetbytecount2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggetbytes1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggetbytes2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggetcharcount.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggetchars.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggetdecoder.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggetencoder.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggethashcode.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggetmaxbytecount.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggetmaxcharcount.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggetpreamble.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/text/utf8encoding/utf8encodinggetstring.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/autoresetevent/autoreseteventctor.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/autoresetevent/autoreseteventreset.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/autoresetevent/autoreseteventset.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockedadd1.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockedadd2.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockedcompareexchange1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockedcompareexchange5.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockedcompareexchange6.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockedcompareexchange7.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockeddecrement1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockeddecrement2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockedexchange1.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockedexchange5.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockedexchange6.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockedexchange7.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockedincrement1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/interlocked/interlockedincrement2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/manualresetevent/manualreseteventctor.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/timeout/timeoutinfinite.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/waithandle/waithandlector.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/waithandle/waithandledispose1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/threading/waithandle/waithandledispose3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timeoutexception/timeoutexceptionctor1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timeoutexception/timeoutexceptionctor2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timeoutexception/timeoutexceptionctor3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanadd.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespancompare1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespancompareto2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanctor1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanctor2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanctor3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanctor4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanduration.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanequals1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanequals2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanequals3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanfromticks.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespangethashcode.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanmaxvalue.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanminvalue.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespannegate.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanticks.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanticksperday.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanticksperhour.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanticksperminute.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespantickspersecond.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespantotaldays.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespantotalhours.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespantotalmilliseconds.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespantotalminutes.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespantotalseconds.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespanzero.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typeequals1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typeequals2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typegetarrayrank.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typegetelementtype.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typegetgenerictypedefinition.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typegethashcode.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typegettype1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typegettype2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typegettypefromhandle.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typehaselementtypeimpl.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typeisbyrefimpl.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typeispointerimpl.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typemakearraytype1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typemakearraytype2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typemakebyreftype.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typemakepointertype.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/type/typetostring.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodeboolean.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodebyte.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodechar.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodedatetime.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodedecimal.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodedouble.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodeempty.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodeint16.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodeint32.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodeint64.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodeobject.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodesbyte.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodesingle.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodestring.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodeuint16.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodeuint32.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typecode/typecodeuint64.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typeloadexception/typeloadexceptionctor1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typeloadexception/typeloadexceptionctor2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typeloadexception/typeloadexceptionctor3.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/typeloadexception/typeloadexceptionmessage.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16compareto1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16equals1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16equals2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletoboolean.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletobyte.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletochar.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletodatetime.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletodecimal.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletodouble.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletoint16.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletoint32.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletoint64.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletosbyte.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletosingle.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletotype.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletouint16.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletouint32.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16iconvertibletouint64.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16parse1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16parse2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16parse3.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16tostring1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16tostring2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16tostring3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16tostring4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint16/uint16tryparse.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32compareto2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32equals1.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32equals2.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32gethashcode.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletoboolean.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletobyte.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletochar.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletodecimal.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletodouble.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletoint16.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletoint32.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletoint64.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletosbyte.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletosingle.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletotype.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletouint16.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletouint32.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32iconvertibletouint64.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32maxvalue.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32minvalue.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32parse1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32parse2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32parse3.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32tostring1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32tostring2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32tostring3.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32tostring4.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint32/uint32tryparse.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64gethashcode.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletoboolean.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletobyte.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletochar.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletodatetime.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletodecimal.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletodouble.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletoint16.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletoint32.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletoint64.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletosbyte.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletosingle.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletotype.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletouint16.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletouint32.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64iconvertibletouint64.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64maxvalue.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64minvalue.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64parse1.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64parse2.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64parse3.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64tostring1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64tostring2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uint64/uint64tryparse.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uintptr/uintptrctor_uint32.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uintptr/uintptrctor_uint64.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uintptr/uintptrctor_voidptr.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uintptr/uintptrequals.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uintptr/uintptrgethashcode.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uintptr/uintptrsize.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uintptr/uintptrtopointer.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uintptr/uintptrtostring.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uintptr/uintptrtouint32.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uintptr/uintptrtouint64.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/uintptr/uintptrzero.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/valuetype/valuetypeequals.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/valuetype/valuetypeequals2.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/version/versionbuild.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/version/versioncompareto2.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/version/versionctor4.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/version/versionequals1.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/version/versionequals2.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/version/versiongethashcode.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/version/versionmajor.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/version/versionrevision.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/version/versiontostring1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/version/versiontostring2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/weakreference/weakreferencector1.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/weakreference/weakreferencector2b.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/weakreference/weakreferenceisaliveb.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/weakreference/weakreferencetargetb.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/weakreference/weakreferencetrackresurrection_cti.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/buffer/asurt_99893.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/collections/generic/hashset/regression_dev10_609271.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/collections/generic/hashset/regression_dev10_624201.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/datetime/co7510parseexact_formatarray.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/generics/negativegenerics.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/miscellaneous/co6010delegateequalstwo.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/miscellaneous/co6031gethashcode.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/regressions/devdivbugs/113347/ddb113347.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/guid/guid_parsing.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/lazyt/lazyttf.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/text/encoding/shift_jis.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/version/version_parsing.cs
+
+CORECLR_STRESSTEST_CS_SRC=     \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/573277.cs     \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/MulDimJagAry.cs       \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/bestfit-finalize.cs   \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/ExpandHeap.cs \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/PlugGaps.cs   \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/concurrentspin2.cs    \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/GCQueue.cs    \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/SingLinkStay.cs       \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/GCSimulator.cs        \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/StressAllocator.cs    \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/doubLinkStay.cs       \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/GCVariant.cs  \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/ThdTreeGrowingObj.cs  \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/allocationwithpins.cs \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/pinstress.cs  \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/LeakGenThrd.cs        \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/b115557.cs    \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/plug.cs       \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/LargeObjectAllocPinned.cs     \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/LargeObjectAlloc2.cs  \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/LargeObjectAlloc4.cs  \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/LargeObjectAlloc.cs   \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/LargeObjectAlloc1.cs  \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/RedBlackTree.cs       \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/LargeObjectAlloc3.cs  \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Tests/DirectedGraph.cs
+
+CORECLR_STRESSTEST_RUNNER_CS_SRC=      \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/ReliabilityConfiguration.cs       \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/ReliabilityFramework.cs   \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/ReliabilityTest.cs        \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/ReliabilityTestSet.cs     \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/ReliabilityTestSet.cs     \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/RFLogging.cs      \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/DetourHelpers.cs  \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/LoaderClass.cs    \
+       GCStressTests/AssemblyLoadContext.cs    \
+       GCStressTests/AssemblyExtensions.cs
+
+CORECLR_TESTLIBRARY_CS_SRC =   \
+       $(CORECLR_PATH)/tests/src/Common/CoreCLRTestLibrary/TestFramework.cs    \
+       $(CORECLR_PATH)/tests/src/Common/CoreCLRTestLibrary/Utilities.cs        \
+       $(CORECLR_PATH)/tests/src/Common/CoreCLRTestLibrary/CalendarHelpers.cs  \
+       $(CORECLR_PATH)/tests/src/Common/CoreCLRTestLibrary/Generator.cs        \
+       $(CORECLR_PATH)/tests/src/Common/CoreCLRTestLibrary/EndianessChecker.cs \
+       $(CORECLR_PATH)/tests/src/Common/CoreCLRTestLibrary/GlobLocHelper.cs    \
+       $(CORECLR_PATH)/tests/src/Common/CoreCLRTestLibrary/Logging.cs
+
+# needs parameters:
+CORECLR_DISABLED_TEST_CS_SRC = $(CORECLR_PATH)/tests/src/Loader/regressions/polyrec/polyrec.cs
+
+# relies on env vars:
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/managed/Compilation/Compilation.cs    \
+       $(CORECLR_PATH)/tests/src/Loader/NativeLibs/FromNativePaths.cs
+
+# readytorun is a CoreCLR-specific feature:
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/readytorun/main.cs    \
+       $(CORECLR_PATH)/tests/src/readytorun/test.cs
+       
+# relies on a referenced managed or native assembly, to complicated here:
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/Regressions/assemblyref/assem.cs      \
+       $(CORECLR_PATH)/tests/src/Regressions/assemblyref/test.cs               \
+       $(CORECLR_PATH)/tests/src/Interop/ReversePInvoke/Marshalling/MarshalBoolArray.cs        \
+       $(CORECLR_PATH)/tests/src/Interop/NativeCallable/NativeCallableTest.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructABI/StructABI.OSX.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructABI/StructABI.Windows.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructABI/StructABI.Unix.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/StructABI/StructABI.cs
+
+# relies on a define:
+CORECLR_DISABLED_TEST_CS_SRC += $(CORECLR_PATH)/tests/src/Exceptions/Finalization/Finalizer.cs
+
+# exclude the CoreCLR GC stress framework for now, it needs special integration:
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/RFLogging.cs      \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/DetourHelpers.cs  \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/ReliabilityTest.cs        \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/ReliabilityTestSet.cs     \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/LoaderClass.cs    \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/ReliabilityConfiguration.cs       \
+       $(CORECLR_PATH)/tests/src/GC/Stress/Framework/ReliabilityFramework.cs
+
+# exclude the CoreCLR SIMD tests for now:
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/Mul.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/BoxUnbox.cs  \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/Dup.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/CircleInConvex.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/BitwiseOperations.cs \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/AbsGeneric.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/CreateGeneric.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/DivSignedUnsignedTest.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/StoreElement.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/Ldfld.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/LdfldGeneric.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/BugWithAVX.cs        \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/SqrtGeneric.cs       \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/Sums.cs      \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/Vector4.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/Ldind.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/MinMax.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/AddingSequence.cs    \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/AbsSqrt.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/Ctors.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/Vector3.cs   \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/CtorFromArray.cs     \
+       $(CORECLR_PATH)/tests/src/JIT/SIMD/Haar-likeFeaturesGeneric.cs
+
+# unused files
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/components/fileversioninfo/assembly1.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/regressions/17360/avhelper.cs  \
+       $(CORECLR_PATH)/tests/src/reflection/regression/reflectionrepromasterforsl/helper.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/threadstatic/threadstatic04helper.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/regression/v1/threads/hostedscenario/apunload/mgdhelper.cs       \
+       $(CORECLR_PATH)/tests/src/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/resources/resourcemanager/customculture.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/resources/resourcemanager/customculture.cs
+
+# Mono doesn't support ICastable
+CORECLR_DISABLED_TEST_CS_SRC += $(CORECLR_PATH)/tests/src/Interop/ICastable/Castable.cs
+
+# throws IndexOutOfRange exception even on .NET
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/compareexchange/compareexchangetclass.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/compareexchange/compareexchangetstring.cs
+
+# relies on other .cs files or each other
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/stress/sudoku/isudokugenerator.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/stress/sudoku/isudokuboard.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/stress/sudoku/stack.cs \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/stress/sudoku/isudokusolver.cs \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0041/body_double.cs       \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0041/expl_double_1.cs     \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0433/assem.cs     \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0433/test.cs      \
+       $(CORECLR_PATH)/tests/src/Regressions/expl_double/body_double.cs        \
+       $(CORECLR_PATH)/tests/src/Regressions/expl_double/expl_double_1.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/regressions/whidbeym3.3/302680/data.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/regressions/whidbeym3.3/302680/302680.cs
+
+# relies on mathtestlib.cs
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathtestlib.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathlog.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathatan.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathtan.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathsinh.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathacos.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathcosh.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathtanh.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/math/mathatan2.cs
+
+# relies on Trace.cs
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/unittests/innerfinally.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/unittests/trace.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/unittests/throwinfinally.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/unittests/baseclass.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/unittests/trycatchinfinally.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/unittests/rethrowandfinally.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/unittests/throwincatch.cs
+
+# relies on GCUtil.cs helper
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/GC/Features/HeapExpansion/GCUtil.cs   \
+       $(CORECLR_PATH)/tests/src/GC/Features/HeapExpansion/Finalizer.cs        \
+       $(CORECLR_PATH)/tests/src/GC/Features/HeapExpansion/Handles.cs
+
+# relies on GCUtil.cs helper
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/GC/Features/Pinning/PinningOther/GCUtil.cs    \
+       $(CORECLR_PATH)/tests/src/GC/Features/Pinning/PinningOther/PinnedMany.cs        \
+       $(CORECLR_PATH)/tests/src/GC/Features/Pinning/PinningOther/PinnedHandle.cs      \
+       $(CORECLR_PATH)/tests/src/GC/Features/Pinning/PinningOther/PinnedMultiple.cs    \
+       $(CORECLR_PATH)/tests/src/GC/Features/Pinning/PinningOther/PinnedObject.cs      \
+       $(CORECLR_PATH)/tests/src/GC/Features/Pinning/PinningOther/PinnedCollect.cs     \
+       $(CORECLR_PATH)/tests/src/GC/Features/Pinning/PinningOther/PinnedInt.cs
+
+# relies on helper.cs helper
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/baseservices/compilerservices/dynamicobjectproperties/testoverrides.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/compilerservices/dynamicobjectproperties/testapis.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/compilerservices/dynamicobjectproperties/testgc.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/compilerservices/dynamicobjectproperties/helper.cs
+
+# relies on helper.cs helper
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/weakreference/weakreferencector2.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/weakreference/helper.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/weakreference/weakreferenceisalive.cs
+
+# relies on cfdatetimetools.cs helper
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/cfdatetimetools.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/datetime/datetimeisdaylightsavingtime.cs
+       
+# relies on delegatedefinitions.cs helper
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/multicastdelegate/multicastdelegatector.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/multicastdelegate/multicastdelegategethashcode.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/multicastdelegate/multicastdelegategetinvocationlist.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/multicastdelegate/multicastdelegatecombineimpl.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/multicastdelegate/multicastdelegateequals.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/multicastdelegate/verificationagent.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/multicastdelegate/delegatedefinitions.cs
+
+# relies on timespansupport.cs helper
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespantostring_str.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/timespan/timespansupport.cs
+
+# relies on common.cs helper
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/generics/ng_standard.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/generics/common.cs
+
+# relies on a define
+CORECLR_DISABLED_TEST_CS_SRC += $(CORECLR_PATH)/tests/src/baseservices/finalization/finalizer.cs
+
+# requires a command line arg, don't bother with those for now
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartchar.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartdouble.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartfloat.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartshort.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartuint.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartneg1.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartnull.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartsbyte.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartbyte.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartneg4.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartdecimal.cs \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartlong.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartneg3.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartulong.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartstring.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartushort.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartgenerics.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartcast.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartnull2.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartint.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartdelegate.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartbool.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartobject.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/paramthreadstart/threadstartoperations.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/compareexchange/compareexchangelong.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/add/checkaddlong.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/add/interlockedaddlong.cs  \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/add/checkaddint.cs \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/add/interlockedaddint.cs   \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/add/interlockedaddlongwithsubtract.cs
+
+# has no entrypoint or Main method
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/baseservices/visibility/target.cs     \
+       $(CORECLR_PATH)/tests/src/GC/Scenarios/Boxing/doubLink.cs       \
+       $(CORECLR_PATH)/tests/src/GC/Scenarios/DoublinkList/DoubLink.cs \
+       $(CORECLR_PATH)/tests/src/GC/Scenarios/FinalNStruct/strmap.cs   \
+       $(CORECLR_PATH)/tests/src/GC/Regressions/v2.0-beta2/485617/Managed.cs   \
+       $(CORECLR_PATH)/tests/src/GC/Regressions/v2.0-beta2/476725/ManagedTest.cs       \
+       $(CORECLR_PATH)/tests/src/GC/API/GCSettings/ILatencyTest.cs     \
+       $(CORECLR_PATH)/tests/src/GC/API/GCSettings/InducedGen0GC.cs    \
+       $(CORECLR_PATH)/tests/src/GC/API/GCSettings/InducedGen2GC.cs    \
+       $(CORECLR_PATH)/tests/src/GC/API/GCSettings/InducedGen1GC.cs    \
+       $(CORECLR_PATH)/tests/src/hosting/coreclr/activation/sxshost/usercases.cs       \
+       $(CORECLR_PATH)/tests/src/hosting/coreclr/activation/sxshost/delegates.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/regression/v1/threads/functional/threadpool/cs_support/fibonacci.cs      \
+       $(CORECLR_PATH)/tests/src/baseservices/regression/v1/threads/functional/threadpool/cs_support/foo.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/regression/v1/threads/hostedscenario/apunloadtwo/sample.cs       \
+       $(CORECLR_PATH)/tests/src/baseservices/regression/v1/threads/functional/thread/tculturedll.cs   \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0341/usercode.cs  \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0341/platformcode.cs      \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/1380/forwarder1.cs        \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0694/criticalcode.cs      \
+       $(CORECLR_PATH)/tests/src/Regressions/coreclr/0149/sampleassembly.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/regressions/whidbeym3.3/293674/securedispatcher.cs    \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/regressions/v4.0/706099/managedcom.cs \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/regressions/v4.0/640474/other2.cs     \
+       $(CORECLR_PATH)/tests/src/baseservices/ilasm_ildasm/regression/dd130885/xlib.cs \
+       $(CORECLR_PATH)/tests/src/baseservices/ilasm_ildasm/regression/vswhidbey267905/267905.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/ilasm_ildasm/regression/vswhidbey395914/395914.cs        \
+       $(CORECLR_PATH)/tests/src/baseservices/ilasm_ildasm/regression/vswhidbey305155/305155.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/runtimehelpers/platformassembly.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/compilerservices/runtimehelpers/userassembly.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/dllimportattribute/dllimporttest.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/runtime/interopservices/marshal/oleaut32.cs    \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/delegate/testforotherassembly.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assembly/testassembly1.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/cti/system/reflection/assembly/testtarget.cs      \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/reflection/assembly/testassembly.cs       \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/exception/data_helper.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/reflection/assembly/server4.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/reflection/assembly/server3.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/reflection/assembly/server2.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/reflection/assembly/server1.cs     \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/miscellaneous/central.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/generics/nullabletypes.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/threatmodel/tests/critconstructorclass.cs \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/threatmodel/tests/testclassframeworkinternal.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/threatmodel/public/testclassframeworkinternal.cs  \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/threatmodel/public/testclass.cs   \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/threatmodel/tests/bindingtarget.cs        \
+       $(CORECLR_PATH)/tests/src/CoreMangLib/system/delegate/threatmodel/tests/testclass.cs
+       
+# samples (should probably be removed upstream)
+CORECLR_DISABLED_TEST_CS_SRC +=        \
+       $(CORECLR_PATH)/tests/src/hosting/samples/hosting/usercode/usercode.cs  \
+       $(CORECLR_PATH)/tests/src/hosting/samples/resolveevent/usercodedependency/usercodedependency.cs
+
+CORECLR_TEST_IL_SRC =                  \
+       $(CORECLR_PATH)/tests/src/JIT/BBT/Scenario4/Not-Int32.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/Convert/implicitConv.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/Convert/minopts_convu1.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/ExcepFilters/excepobj/excepobj.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/ExcepFilters/fault/fault.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/ExcepFilters/mixed/mixed.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/FaultHandlers/CallOrder/CallOrder.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/FaultHandlers/Nesting/Nesting.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/FaultHandlers/Simple/simple.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/IL/Tailcall/JitTailcall1.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/IL/Tailcall/Jittailcall2.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/IL/leave/leave2.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/IL/rethrow/rethrow1.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/IL/rethrow/rethrow2.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/Misc/SIDEEFFECTS/BadRegArgs.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/Misc/SIDEEFFECTS/SideEffects.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/Misc/function_pointer/funcptrtest.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/1/Box_Unbox.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/1/Desktop/add.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/1/add.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/1/arglist64.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/1/array_tests.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/1/cpblk.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/1/field_tests.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/1/fielda_tests.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/1/initblk.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/1/initobj.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/1/ldind_stind.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/1/ldloca.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/2/Box_Unbox.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/2/add.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/2/arglist64.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/2/array_tests.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/2/cpblk.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/2/field_tests.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/2/fielda_tests.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/2/initblk.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/2/initobj.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/2/ldind_stind.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/2/ldloca.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/4/Box_Unbox.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/4/Desktop/add.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/4/add.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/4/arglist64.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/4/array_tests.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/4/cpblk.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/4/field_tests.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/4/fielda_tests.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/4/initblk.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/4/initobj.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/4/ldind_stind.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/unaligned/4/ldloca.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/volatile/1/Box_Unbox.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/volatile/1/Desktop/add.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/volatile/1/add.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/volatile/1/arglist64.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/volatile/1/array_tests.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/volatile/1/cpblk.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/volatile/1/field_tests.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/volatile/1/fielda_tests.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/volatile/1/initblk.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/volatile/1/initobj.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/volatile/1/ldind_stind.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/PREFIX/volatile/1/ldloca.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/RVAInit/oddsize.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/UnrollLoop/loop3.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/array-il/simple3.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/badendfinally.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/badtailcall.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/byrefsubbyref1.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/calli2.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/ceeillegal.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/ldelemnullarr2.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/ldfldstatic1.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/ldfldunboxedvt.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/ldvirtftnsideeffect.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/nullsdarr.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/refanytype1.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/stfldstatic1.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/subovfun1.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/volatilldind.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/importer/volatilstind.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/arrgetlen.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/lcliimpl.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/ldsshrstsfld.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/ldvirtftncalli.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/ovfldiv2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/ovflrem2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/stfldstatic1.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/stfldstatic2.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/subbyref.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/switchdefaultonly1.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/switchdefaultonly2.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/switchdefaultonly3.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/trashreg.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/volatilecpobj.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/zeroinit.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/leave/catch1.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/leave/catch2.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/leave/catch3.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/leave/filter1.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/leave/filter2.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/leave/filter3.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/leave/try1.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/leave/try2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/leave/try3.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/refbyref/byrefconvert.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/shift/int8.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/shift/nativeint.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/shift/nativeuint.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/throwbox/fault.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/throwbox/filter.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/throwbox/finally.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/throwbox/rethrow.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/zeroinit/Dev10_863995.il \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/zeroinit/init_byte.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/zeroinit/init_int32.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/zeroinit/init_int64.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/zeroinit/init_struct.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/zeroinit/init_uint32.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/zeroinit/init_uint64.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/zeroinit/tail.il \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/ConstrainedCall/vt1.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/ConstrainedCall/vt2.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/ConstrainedCall/vt3.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Generics/regression/DDB148379/ddb148379.il        \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Base/add.il    \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/conv_ovf_i1_un.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_add_ovf_i1.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_add_ovf_i2.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_add_ovf_i4.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_add_ovf_i8.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_add_ovf_u1.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_add_ovf_u2.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_add_ovf_u4.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_add_ovf_u8.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_c_cpblk.il        \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_c_initblk.il      \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_c_nop.il  \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_c_ret.il  \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_c_switch.il       \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_ckfinite_r4.il    \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_ckfinite_r8.il    \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_i4_i1.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_i4_i2.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_i4_u4.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_i8_i4.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_i8_u8.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_r8_i.il  \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_r8_i4.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_r8_i8.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_u4_i.il  \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_u4_i4.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_u4_u1.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_u4_u2.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_u8_i8.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_conv_ovf_u8_u4.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_mul_ovf_i1.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_mul_ovf_i2.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_mul_ovf_i4.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_mul_ovf_i8.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_mul_ovf_u1.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_mul_ovf_u2.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_mul_ovf_u4.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_mul_ovf_u8.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_neg_i4.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_neg_i8.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_ret_i.il  \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_ret_i4.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_ret_i8.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_ret_r4.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_ret_r8.il \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_ret_ref.il        \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_sub_i.il  \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_sub_ovf_i1.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_sub_ovf_i2.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_sub_ovf_i4.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_sub_ovf_i8.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_sub_ovf_u1.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_sub_ovf_u2.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_sub_ovf_u4.il     \
+       $(CORECLR_PATH)/tests/src/JIT/IL_Conformance/Old/Conformance_Base/ldc_sub_ovf_u8.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/huge_struct.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/lcs/lcs_ldlen.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/misc/lengthm2.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/misc/selfref.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/range/negIndexRngChkElim.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Boxing/boxunbox/array.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Boxing/boxunbox/chain.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Boxing/boxunbox/local.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Boxing/misc/enum.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Boxing/misc/tailjump.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Coverage/b39946.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Coverage/b518440.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Coverage/hole.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/conv_i8_i.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/conv_i8_u.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_i.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u-ia64.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/i_conv.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/i_fld.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/i_flood.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/i_flow.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/i_prop.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/i_qsort1.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/i_qsort2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/i_ref.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/i_seq.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/i_vfld.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/ptr.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/qperm.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/sizeof-ia64.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/u_conv.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/u_fld.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/u_flood.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/u_flow.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/u_prop.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/u_qsort1.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/u_qsort2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/u_ref.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/u_seq.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ELEMENT_TYPE_IU/u_vfld.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/FPtrunc/convr4d.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/FPtrunc/convr8d.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/25params/25param1b.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/25params/25param1c.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/25params/25param3b.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/25params/25param3c.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/25params/25paramMixed.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/SEH/catchfault.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/SEH/catchfault_jmp.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/SEH/catchfault_tail.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/SEH/catchfinally_ind.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/SEH/catchfinally_jmp.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/SEH/catchfinally_jmpind.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/SEH/catchfinally_tail.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/callvirt/test1.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/callvirt/test2.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/callvirt/test3.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/ctor/val_cctor.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/ctor/val_ctor_newobj.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/deep/deep1.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/deep/deep2.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/ftn_t.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/instftn.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/instftn_t.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/recurse_calli.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/recurse_jmp.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/recurse_jmpi.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/recurse_tail_call.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/recurse_tail_calli.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/valftn.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/valftn_t.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/virtftn.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/fptr/virtftn_t.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/implicit/fr4.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/implicit/fr8.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/implicit/i4u2.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/implicit/i4u4.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/implicit/i8u8.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/implicit/ii1.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/implicit/ii2.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/implicit/ii4.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/implicit/iu2.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/implicit/iu4.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/implicit/objref.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Invoke/thiscall/thisnull.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/comp32.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/comp64.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/cond32.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/NaN/cond64.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/aa.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/calli.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/dd.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/ee.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/jumper1.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/jumper2.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/jumper3.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/jumper4.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/jumper5.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/vtret.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/callconv/vtret2.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/identity/accum.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/identity/livecall.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/VT/identity/volatile.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/SEH/castclass_catch.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/SEH/castclass_catch_neg.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/SEH/filter.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/SEH/isinst_catch.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/array/arrays.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/array/castclass_ldlen.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/array/isinst_ldlen.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/castclass_call.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/castclass_calli.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/castclass_ldarg.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/castclass_ldloc.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/isinst_call.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/isinst_calli.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/isinst_ldarg.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/isinst_ldloc.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/coverage/ldnull.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/iface/iface2.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/ilseq/typeEqualOp.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/cctor/misc/deadlock.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/cctor/simple/Desktop/prefldinit3.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/cctor/simple/prefldinit1.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/cctor/simple/prefldinit2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/cctor/simple/prefldinit4.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_c.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_f4.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_f8.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_i1.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_i2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_i4.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_o.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refarg_s.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refloc_c.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refloc_i1.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refloc_i2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refloc_i4.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refloc_o.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refloc_o2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refloc_r4.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refloc_r8.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/basic/refloc_u2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/funcptr/expl_funcptr_gc.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/funcptr/expl_funcptr_val.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/funcptr/seq_funcptr_gc.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/funcptr/seq_funcptr_val.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/misc/refarg_box_val.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/rotate/rotarg_double.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/rotate/rotarg_float.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/rotate/rotarg_objref.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/rotate/rotarg_valref.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/rotate/rotate_i4.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/explicit/rotate/rotate_u2.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/bug619534/ILStackAllocRepro.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/bug619534/twoEndFinallys.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug642944/GCMaskForGSCookie.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug679053/cpblkInt32.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug679053/flowgraph.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug679955/indexMinusOne.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug679955/volatileLocal1.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/flowgraph/dev10_bug679955/volatileLocal2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/arrays/hugedim.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/arrays/lcs_long.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/arrays/lcs_ulong.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/misc/binop.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/misc/box.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_addsub.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldc_div.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldc_mul.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldc_mulovf.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldfld_mul.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldfld_mulovf.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldsfld_mul.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_ldsfld_mulovf.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/signed/s_muldiv.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/superlong/superlong.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/addsub.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/ldc_mul.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/ldc_mulovf.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/ldfld_mul.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/ldfld_mulovf.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/ldsfld_mul.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/ldsfld_mulovf.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/int64/unsigned/muldiv.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ldtoken/ldtoken.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ldtoken/ldtokena.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/ldtoken/ptr_types.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/localloc/verify/verify01_dynamic.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/localloc/verify/verify01_large.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/localloc/verify/verify01_small.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/localloc/zeroinit/zeroinit01_large.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/localloc/zeroinit/zeroinit01_small.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/nonvirtualcall/generics2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/nonvirtualcall/tailcall.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/nonvirtualcall/valuetype.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/array1.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/array2.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/array3.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/native.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/seq.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/stress2.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/refany/u_native.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/compat_enum.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/compat_i2_bool.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/compat_i4_i1.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/compat_i4_u.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/compat_i_u2.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/compat_obj.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/compat_v.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/deep_array.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/deep_array_nz.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/deep_gc.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/deep_inst.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/deep_value.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/deep_virt.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/gcval.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/gcval_nested.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/gcval_sideeffect.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/recurse_ep.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/reference_i.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/test_2a.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/test_2b.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/test_2c.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/test_3b.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/test_mutual_rec.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/test_switch.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall/test_virt.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall_v4/smallFrame.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/tailcall_v4/tailcall_AV.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/varargs/callconv/gc_ctor.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/varargs/callconv/val_ctor.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/varargs/misc/Dev10_615402.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxblk/cpblk3.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxblk/initblk3.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/ldobj/ldobj_I.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/ldobj/ldobj_I8.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/ldobj/ldobj_R4.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/ldobj/ldobj_R8.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/ldobj/ldobj_U2.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/ldobj/ldobj_V.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/operand/const.il \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/operand/ldelema.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/operand/mdarray.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/operand/refanyval.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/xxobj/operand/unbox.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-EJIT/V1-M09.5-PDC/b16935/b16935.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-EJIT/V1-M11-Beta1/b44018/b44018.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-EJIT/V1-M11-Beta1/b45046/b45046.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-EJIT/V1-M12-Beta2/b26323/b26323.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-EJIT/V1-M12-Beta2/b35455/b35455.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b06440/b06440a.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b06440/b06440b.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b06440/b06440c.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b07341/b07341.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b09495/b09495.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b10665/b10665.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b10666/b10666.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b10894/b10894.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b10897/b10897.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b10939/b10939.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b10940/b10940a.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b10940/b10940b.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b11021/b11021.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b11413/b11413.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b11949/b11949.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b12274/b12274.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b12487/b12487.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b13509/b13509.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b13522/b13522.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b13586/b13586.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b13738/b13738.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14067/b14067a.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14067/b14067b.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14068/b14068.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14070/b14070.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14135/b14135.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14197/b14197.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14199/b14199.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14202/b14202.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14264/b14264.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14294/b14294.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14325/b14325.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14326/b14326.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14329/b14329.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14350/b14350.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14431/b14431.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14591/b14591.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14769/b14769.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14770/b14770.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14777/b14777.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14927/b14927.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b14928/b14928.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b15222/b15222.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b15244/b15244.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b15299/b15299.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16039/b16039.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16049/b16049.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16071/b16071.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16241/b16241.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16295/b16295.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16498/b16498.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16499/b16499a.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16499/b16499b.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16500/b16500.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16503/b16503.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16554/b16554.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16881/b16881a.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16881/b16881b.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16886/b16886.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16895/b16895.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16896/b16896.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16922/b16922.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16928/b16928.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b18852/b18852.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b20079/b20079.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b20217/b20217.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b20249/b20249.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25458/b25458.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25459/b25459.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25463/b25463.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25468/b25468-ia64.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25474/b25474.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25491/b25491.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25507/b25507.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25701/b25701-ia64.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25739/b25739.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25813/b25813.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25815/b25815.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25833/b25833.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b25835/b25835.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26020/b26020.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26153/b26153.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26155/b26155.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26332/b26332.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26512/b26512.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26748/b26748.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26888/b26888.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b26957/b26957.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b27535/b27535.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b27538/b27538.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b27564/b27564.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b27657/b27657.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b27658/b27658.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b27880/b27880.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b27883/b27883.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b27917/b27917.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28080/b28080.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28522/b28522.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28594/b28594.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28595/b28595.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28596/b28596.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28597/b28597.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28805/b28805.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28806/b28806.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28927/b28927.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b29583/b29583.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30125/b30125.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30792/b30792.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30799/b30799.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30838/b30838.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30862/b30862.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30864/b30864.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30869/b30869.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b30892/b30892.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b31102/b31102.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b31273/b31273.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b31321/b31321.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b31343/b31343.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b31448/b31448.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b32093/b32093.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b32374/b32374.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b32551/b32551a.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b32551/b32551b.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b34423/b34423.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b02043/b02043.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b02062/b02062.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b03995/b03995.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b04083/b04083.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b04250/b04250.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b04257/b04257.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b04306/b04306.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b04345/b04345.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b04384/b04384.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b04538/b04538.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b04574/b04574.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b04583/b04583.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b04612/b04612.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b04639/b04639.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b04726/b04726.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05214/b05214.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05617/b05617.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05619/b05619.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05621/b05621.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05622/b05622.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05637/b05637.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05639/b05639.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05737/b05737.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05740/b05740.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05773/b05773.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05780/b05780.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05784/b05784.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b05933/b05933.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b06435/b06435.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b06436/b06436.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b06595/b06595.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b06730/b06730.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b06754/b06754.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07082/b07082.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07411/b07411.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07458/b07458.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07704/b07704.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b08107/b08107.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b08109/b08109.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b08672/b08672.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b08797/b08797.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b09254/b09254.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b27873/b27873.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b29351/b29351.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b33759/b33759.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b33792/b33792.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b33888/b33888.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b33922/b33922.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b33928/b33928.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b35784/b35784.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b36030/b36030.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b39381/b39381.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b39397/b39397.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b39417/b39417.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b39455/b39455.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b39946/b39946.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40174/b40174.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40269/b40269.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40347/b40347.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40380/b40380.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40721/b40721.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40725/b40725.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41126/b41126.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41129/b41129.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41262/b41262.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41278/b41278.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41627/b41627.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b42387/b42387.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b42732/b42732.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43040/b43040.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43069/b43069.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43115/b43115.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43121/b43121.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43160/b43160.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43378/b43378.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43714/b43714.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43963/b43963.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43994/b43994.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44020/b44020.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44204/b44204.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44224/b44224.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44723/b44723.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44724/b44724.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44861/b44861.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44879/b44879.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44946/b44946.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44983/b44983.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44984/b44984.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44985/b44985.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b45439/b45439.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b45541/b45541.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b45956/b45956.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b45984/b45984.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b45985/b45985.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b46292/b46292.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b46569/b46569.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b46576/b46576.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b46583/b46583.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b46897/b46897.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b47022/b47022.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b47080/b47080-ia64.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b47093/b47093.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b47610/b47610.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b47885/b47885.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b47906/b47906.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b48350/b48350.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b48554/b48554a.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b48554/b48554b.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b48614/b48614.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b49101/b49101.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b49984/b49984.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b16122/b16122.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b18857/b18857.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b28598/b28598.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b28949/b28949a.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b30868/b30868.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31283/b31283.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31289/b31289.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31292/b31292.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31423/b31423.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31452/b31452.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31493/b31493.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31547/b31547.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31780/b31780.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31784/b31784.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b32613/b32613.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b32614/b32614.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b33125/b33125.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b33131/b33131.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b33135/b33135.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b33335/b33335.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b33361/b33361.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b33362/b33362.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b33388/b33388.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b33585/b33585.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b33586/b33586.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b34951/b34951.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b34952/b34952.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b34953/b34953.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b35315/b35315.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b35344/b35344.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b35348/b35348.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b35351/b35351.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b35354/b35354.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b35366/b35366.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b35486/b35486.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b35635/b35635.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b35779/b35779.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b36301/b36301.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b36302/b36302.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b36304/b36304.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b36975/b36975.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b37214/b37214.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b37215/b37215.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b37238/b37238.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b37256/b37256.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b37578/b37578.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b37830/b37830.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b40006/b40006.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b40347/b40347.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b46566/b46566.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b47471/b47471.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b47886/b47886.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b49104/b49104.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b49142/b49142.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b49435/b49435-ia64.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b50026/b50026.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b50027/b50027.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b50033/b50033.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b51420/b51420.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b51515/b51515.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b51575/b51575.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b53650/b53650.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b53662/b53662.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b53878/b53878.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b53884/b53884.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b53942/b53942a.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b53942/b53942b.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b53958/b53958.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b53977/b53977.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b53980/b53980.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b53994/b53994.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b53995/b53995.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b54565/b54565.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b54566/b54566.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b54611/b54611.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b54971/b54971.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55216/b55216.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55875/b55875.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55923/b55923.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b56066/b56066.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b56068/b56068.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b56174/b56174.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b56349/b56349.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b56780/b56780.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b57492/b57492.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b57493/b57493.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b57516/b57516.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b57518/b57518.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b57952/b57952.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b58358/b58358.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b58360/b58360.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b58689/b58689.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b58690/b58690.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b58866/b58866.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59319/b59319.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59320/b59320.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59337/b59337.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59477/b59477.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59478/b59478.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59508/b59508.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59554/b59554.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59647/b59647.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59782/b59782.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59822/b59822.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59857/b59857.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59858/b59858.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59947/b59947.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59948/b59948.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59949/b59949.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59952/b59952.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59953/b59953.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b60127/b60127.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b60142/b60142.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b60194/b60194.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b61025/b61025.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b61185/b61185.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b61215/b61215.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b62145/b62145.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b63552/b63552.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b63725/b63725.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b63726/b63726.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b63730/b63730.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b63732/b63732.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b63823/b63823.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b64026/b64026.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b64560/b64560.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b65087/b65087.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b65176/b65176.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b65407/b65407.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b66226/b66226.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b66425/b66425.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b66583/b66583.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b66620/b66620.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b66679/b66679.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b67351/b67351.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b67744/b67744.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b67819/b67819.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b67987/b67987.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b68028/b68028.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b68045/b68045.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b68872/b68872.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b69225/b69225.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b69227/b69227.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b69512/b69512.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b69528/b69528.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b69848/b69848.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b70267/b70267.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b70289/b70289.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b70335/b70335.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b70354/b70354.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b70808/b70808.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b70909/b70909.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b70964/b70964.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b70967/b70967.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b70992/b70992.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b70994/b70994.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b71003/b71003.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b71179/b71179.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b71318/b71318.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b71722/b71722.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b71831/b71831.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b71869/b71869.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b71999/b71999.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b72160/b72160.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b72161/b72161.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b72518/b72518.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b72522/b72522.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b72699/b72699.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b72828/b72828.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b73079/b73079.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b73207/b73207.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b73283/b73283.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b73786/b73786.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b74608/b74608.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b74937/b74937.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b74939/b74939.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b74976/b74976.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b75888/b75888.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b75890/b75890.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b75944/b75944.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b75945/b75945.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b77304/b77304.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b77806/b77806.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b77950/b77950.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b79250/b79250.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b80043/b80043.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b80824/b80824.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b81938/b81938.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b82160/b82160.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b82247/b82247.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b82249/b82249.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b82715/b82715.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b84909/b84909.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b84916/b84916.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b84971/b84971.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b85316/b85316.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b101147/b101147.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b85477/b85477.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b86139/b86139.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b89409/b89409.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b89546/b89546.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b90129/b90129.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b91021/b91021.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b91203/b91203.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b91223/b91223.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b91359/b91359.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b92736/b92736.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b94306/b94306.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M13-RTM/b99667/b99667.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-QFE/b147814/rembug.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-QFE/b147816/loop.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-QFE/b151440/params-mixed.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-QFE/b151440/params-none.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-QFE/b151440/params-object.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-QFE/b151440/params-value.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-QFE/b151440/static-mixed.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-QFE/b151440/static-object.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.1-M1-Beta1/b139895/b139895.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.1-M1-Beta1/b140118/b140118.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b147147/samabo.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b147924/bigdat.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b180381/constrained2.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b220968/1.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b223924/bug2.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b223932/bug3.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b223936/bug4.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b00722/b00722.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b04319/b04319.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b05623/b05623.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b06020/b06020.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b07369/b07369.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b07383/b07383.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b07947/b07947.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b13452/b13452.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b14617/b14617.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b15617/arrayDim.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M01/b18049/loop2.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b102962/t.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b102962/t2.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b102962/vc178279.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b115932/t.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b115932/t1.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b118260/b118260.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b138117/ldsfldainitonlyvt.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b091942/nullref.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b309555/x86-test-1084346006.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b323557/1087985874.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b353858/b353858.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b374944/helper.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b409617/b409617.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b415164/b415164.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b423755/Desktop/b423755.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-RTM/b471305/b471305.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-RTM/b475589/b475589.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-RTM/b489329/b489329.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-RTM/b518440/b518440.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-RTM/b598031/test.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-RTM/b598031/test2.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/dev10/b464149/b464149.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/DDB/b170362/b170362.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/DDB/b174294/spill.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/DDB/b176032/b176032.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b173313/b173313.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b193264/b193264.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/b48850/b48850.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/Dev11_468598/Test_HndIndex_10_Reordered.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/Dev11_b473131/b473131.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/Dev11_b473131/b473131_byte.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/Dev11_b473131/b473131_fld.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/Dev11_b473131/b473131_intptr.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/Dev11_b473131/b473131_struct.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/DevDiv2_11321/DevDiv2_11321.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/External/Dev11_90434/UseUnalignedDouble.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b102759/b102759.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b102870/b102870.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b103838/c.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b106158/branchoutoftry.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b108366/bug.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b108908/b108908.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b109721/bug.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b109878/rem_r4.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b112982/exceptobj.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b113286/array.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b114628/array.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b115103/b115103.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b141062/ericswitch.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b79852/b79852.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b79858/b79858.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b80365/b80365-ia64.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b80373/b80373.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b80737/fbug5.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b80738/fbug6.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b81763/b81763.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b81764/b81764.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b81766/b81766.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b84129/b84129.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b84131/b84131.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b84136/b84136.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b84586/b84586.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b84590/b84590.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b84592/b84592.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b84957/b84957.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b84958/b84958.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b84961/b84961.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b84962/b84962.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b85314/b85314.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b85315/b85315.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b85316/f2.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b85317/b85317.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b85564/b85564.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b85565/b85565.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b85566/b85566.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b92713/b92713.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/M00/b92726/b92726.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-Beta1/b223862/bug1.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-Beta1/b91953/2.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b10802/repro.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b10841/repro_good.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b11131/bug2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b11878/test_07.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b12022/test_10.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b12263/nullref.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b12343/test_04a.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b12390/test_04a.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b12425/test_17.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M01/b13691/init_byte.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b102518/hole.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b102844/tailcallcalli.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b14366/bug2.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b14368/bug4.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b14369/bug5.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b16198/decm010.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b16224/test_25.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b17023/test1a.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b17751/bug4.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b17904/test.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b22521/branch_06.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b22680/1.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b28158/test.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b28158/test64.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V1.2-M02/b29727/2.il       \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b309576/bug2.il \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b333008/b333008.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b356258/b356258.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b431098/b431098.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b450688/b450688.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-RTM/b460385/b460385.il        \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/clr-x64-JIT/v4.0/b602182/b602182.il    \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/v4/dev10_804810/dev10_804810.il        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/localloc/zeroinit/zeroinit01_large.il       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/localloc/zeroinit/zeroinit01_small.il       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cg/il/jmp.il    \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cg/il/ldftn.il  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cprop/Dev10_884217_IL.il        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cprop/cprop002.il       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/inl/inl001.il   \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/lim/lim_001.il  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/lur/lur_01.il   \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/osr/osr015.il   \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/regress/vswhidbey/223862/bne.il \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/regress/vswhidbey/223862/conv.il        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/regress/vswhidbey/223862/div.il \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/regress/vswhidbey/223862/mul1.il        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/regress/vswhidbey/223862/mul_exception.il       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/regress/vswhidbey/223862/rem.il \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/regress/vswhidbey/228572/conv.il        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/regress/vswhidbey/481244/foo.il \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/regress/vswhidbey/481244/foo2.il        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/ddb/118414/118414.il        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/ddb/127931/127931.il        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/phoenix/62322/test.il       \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/102974/test.il  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/153682/test.il  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/266693/test.il  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/333007/test1.il \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/336666/test1.il \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/373472/test.il  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/404708/test.il  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/460412/test.il  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/534486/exchange.il      \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/575343/test.il  \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/575343/test2.il \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/606733/Bug606733.il     \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/regress/vsw/607586/607586.il        \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/verif/sniff/fg/ver_fg_13.il \
+       $(CORECLR_PATH)/tests/src/JIT/opt/AssertionPropagation/CPropOverflow.il \
+       $(CORECLR_PATH)/tests/src/JIT/opt/DumpDisasm/JitMinOpts/BBCnt1.il       \
+       $(CORECLR_PATH)/tests/src/JIT/opt/DumpDisasm/JitMinOpts/CodeSize1.il    \
+       $(CORECLR_PATH)/tests/src/JIT/opt/DumpDisasm/JitMinOpts/InstrCnt1.il    \
+       $(CORECLR_PATH)/tests/src/JIT/opt/DumpDisasm/JitMinOpts/LVNumCnt1.il    \
+       $(CORECLR_PATH)/tests/src/JIT/opt/DumpDisasm/JitMinOpts/LVRefCnt1.il    \
+       $(CORECLR_PATH)/tests/src/JIT/opt/ETW/TailCallCases.il  \
+       $(CORECLR_PATH)/tests/src/JIT/opt/JitMinOpts/Perf/BBCnt0.il     \
+       $(CORECLR_PATH)/tests/src/JIT/opt/JitMinOpts/Perf/BBCnt1.il     \
+       $(CORECLR_PATH)/tests/src/JIT/opt/JitMinOpts/Perf/CodeSize0.il  \
+       $(CORECLR_PATH)/tests/src/JIT/opt/JitMinOpts/Perf/CodeSize1.il  \
+       $(CORECLR_PATH)/tests/src/JIT/opt/JitMinOpts/Perf/InstrCnt0.il  \
+       $(CORECLR_PATH)/tests/src/JIT/opt/JitMinOpts/Perf/InstrCnt1.il  \
+       $(CORECLR_PATH)/tests/src/JIT/opt/JitMinOpts/Perf/LVNumCnt0.il  \
+       $(CORECLR_PATH)/tests/src/JIT/opt/JitMinOpts/Perf/LVNumCnt1.il  \
+       $(CORECLR_PATH)/tests/src/JIT/opt/JitMinOpts/Perf/LVRefCnt0.il  \
+       $(CORECLR_PATH)/tests/src/JIT/opt/JitMinOpts/Perf/LVRefCnt1.il  \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-fault-struct01.il        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-fault-struct02.il        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-fault-struct03.il        \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-fault01.il       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-fault02.il       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-fault03.il       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-filter-finally01.il      \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-filter-finally02.il      \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/generics/try-filter-struct02.il       \
+       $(CORECLR_PATH)/tests/src/baseservices/exceptions/simple/fault.il       \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/compareexchange/compareexchangetneg.il     \
+       $(CORECLR_PATH)/tests/src/baseservices/threading/interlocked/exchange/exchangetneg.il
+
+# throws syntax error when processing with Mono ilasm:
+CORECLR_DISABLED_TEST_IL_SRC =                 \
+       $(CORECLR_PATH)/tests/src/JIT/jit64/opt/cprop/Dev10_844071.il           \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/Arrays/misc/initializearray_enum.il            \
+       $(CORECLR_PATH)/tests/src/JIT/Methodical/casts/SEH/isinst_catch_neg.il                  \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40199/b40199.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b40411/b40411.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41002/b41002.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41149/b41149.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41164/b41164.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43033/b43033.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b44657/b44657.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b49335/b49335.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b54006/b54006.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b409748/b409748.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.2/ddb/b429039/b429039.il                \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/v2.1/DDB/B168384/LdfldaHack.il     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-QFE/b151440/params-varargs.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/Dev11_468598/Test_HndIndex_10_Plain.il   \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/Dev11/External/Dev11_14131/VectorForwarder.il
+
+# pinvokes to win32 api, will need to move to HOST_WIN32 specific section:
+CORECLR_DISABLED_TEST_IL_SRC +=                        \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/pinvoke/jump.il  \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/pinvoke/sysinfo.il               \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/Desktop/callipinvoke.il                \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/coverage/oldtests/callipinvoke.il                                \
+       $(CORECLR_PATH)/tests/src/JIT/Directed/IL/PInvokeTail/tailwinapi.il                                     \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b28901/b28901.il      \
+       $(CORECLR_PATH)/tests/src/JIT/Regression/clr-x64-JIT/v2.1/b173569/b173569.il
+
+# find all CoreCLR *.il test files that aren't mentioned in this file
+CORECLR_DEFINED_IL_SRC = $(CORECLR_TEST_IL_SRC) $(CORECLR_DISABLED_TEST_IL_SRC)
+CORECLR_UPSTREAM_IL_SRC=$(shell find "$(CORECLR_PATH)/tests" -iname "*.il")
+CORECLR_IL_SRC_MISSING=$(filter-out $(CORECLR_DEFINED_IL_SRC),$(CORECLR_UPSTREAM_IL_SRC))
+
+# find all CoreCLR *.cs test files that aren't mentioned in this file
+CORECLR_DEFINED_CS_SRC = $(CORECLR_TEST_CS_SRC) $(CORECLR_COREMANGLIB_TEST_CS_SRC) $(CORECLR_TESTLIBRARY_CS_SRC) $(CORECLR_STRESSTEST_CS_SRC) $(CORECLR_DISABLED_TEST_CS_SRC)
+CORECLR_UPSTREAM_CS_SRC=$(shell find "$(CORECLR_PATH)/tests" -iname "*.cs")
+CORECLR_CS_SRC_MISSING=$(filter-out $(CORECLR_DEFINED_CS_SRC),$(CORECLR_UPSTREAM_CS_SRC))
+
+# print the CoreCLR test files not defined in this file
+# this is helpful when upstream adds new tests
+coreclr-list-missing-tests:
+       @echo
+       @echo CoreCLR tests missing from Makefile.am:
+       @echo $(CORECLR_IL_SRC_MISSING) | tr " " "\n"
+       @echo $(CORECLR_CS_SRC_MISSING) | tr " " "\n"
+
+CORECLR_TESTSI_CS=$(CORECLR_TEST_CS_SRC:.cs=.exe)
+CORECLR_TESTSI_IL=$(CORECLR_TEST_IL_SRC:.il=_il.exe)
+
+CORECLR_STRESSTESTSI_CS=$(CORECLR_STRESSTEST_CS_SRC:%.cs=%.exe)
+CORECLR_COREMANGLIB_TESTSI_CS=$(CORECLR_COREMANGLIB_TEST_CS_SRC:.cs=.exe)
+
+$(CORECLR_PATH)%_il.exe: $(CORECLR_PATH)%.il
+       $(ILASM) -out:$@ $<
+
+coreclr-testlibrary.dll: $(CORECLR_TESTLIBRARY_CS_SRC)
+       $(MCS) -unsafe -debug -target:library -d:WINCORESYS -d:MONO -out:$@ $(CORECLR_TESTLIBRARY_CS_SRC)
+
+$(CORECLR_PATH)%.exe: $(CORECLR_PATH)%.cs coreclr-testlibrary.dll
+       $(MCS) -unsafe -debug -nowarn:0162 -nowarn:0168 -nowarn:0219 -nowarn:0414 -nowarn:0618 -nowarn:0169 -nowarn:1690 -nowarn:0649 -nowarn:0612 -nowarn:3021 -nowarn:0197 -r:coreclr-testlibrary.dll -d:MONO -out:$@ $<
+
+test-runner.exe: $(top_srcdir)/mono/tests/test-runner.cs
+       $(MCS) -debug -out:$@ $<
+
+GCStressTests.exe: $(CORECLR_STRESSTEST_RUNNER_CS_SRC)
+       $(MCS) -out:$@ -debug -d:PROJECTK_BUILD $(CORECLR_STRESSTEST_RUNNER_CS_SRC)
+
+CLEANFILES = *.dll *.exe *.mdb $(CORECLR_STRESSTESTSI_CS) GCStressTests.exe coreclr-testlibrary.dll
+
+clean-local:
+       -rm -f $(CORECLR_TESTSI_CS)
+       -rm -f $(CORECLR_COREMANGLIB_TESTSI_CS)
+       -rm -f $(CORECLR_TESTSI_IL)
\ No newline at end of file
diff --git a/acceptance-tests/README.md b/acceptance-tests/README.md
new file mode 100644 (file)
index 0000000..3ca8102
--- /dev/null
@@ -0,0 +1,14 @@
+This directory contains acceptance tests, handled by optional non git submodule based submodules. Run the tests via "make check-full" (there are also targets for individual test suites).
+
+The SUBMODULES.json file stores information about the submodules, and make targets are used to check out submodules, check their versions, and update the submodule information.
+
+By convention, submodules repositories are at the same level as the mono repository.
+
+Make targets available:
+
+make check-<module> - Checks whenever <module> is checked out and matches the version in the info file.
+make reset-<module> - Clones <module>if neccesary and checks out the revision specified in the info file.
+make bump-<module> - Updates the revision stored in the info file for <module>.
+make bump-current-<module> - Updates the revision stored in the info file for <module> to the current revision.
+make commit-bump-<module> - Same as make bump-<module>, but commits the change.
+make commit-bump-current-<module> - Same as make bump-current-<module>, but commits the change.
diff --git a/acceptance-tests/SUBMODULES.json b/acceptance-tests/SUBMODULES.json
new file mode 100644 (file)
index 0000000..e0335f4
--- /dev/null
@@ -0,0 +1,26 @@
+[
+  {
+    "name": "roslyn", 
+    "url": "git://github.com/dotnet/roslyn.git", 
+    "rev": "322bd5b2bbf07df6a67de35cbcb2365484412f70", 
+    "remote-branch": "origin/master", 
+    "branch": "master", 
+    "directory": "roslyn"
+  }, 
+  {
+    "name": "coreclr", 
+    "url": "git://github.com/mono/coreclr.git", 
+    "rev": "96cf61f96b42cf9d013e641609cb7787f6e3a71f", 
+    "remote-branch": "origin/mono", 
+    "branch": "mono", 
+    "directory": "coreclr"
+  }, 
+  {
+    "name": "ms-test-suite", 
+    "url": "git@github.com:xamarin/ms-test-suite.git", 
+    "rev": "8eb26bd72a38e2c78675db45b13e89237dbdf4f2", 
+    "remote-branch": "origin/master", 
+    "branch": "master", 
+    "directory": "ms-test-suite"
+  }
+]
\ No newline at end of file
diff --git a/acceptance-tests/versions.mk b/acceptance-tests/versions.mk
new file mode 100644 (file)
index 0000000..7864669
--- /dev/null
@@ -0,0 +1,159 @@
+.PHONY: validate-versions reset-versions
+
+CONFIG=SUBMODULES.json
+
+# usage $(call ValidateVersionTemplate (name,MAKEFILE VAR,repo name))
+# usage $(call ValidateVersionTemplate (mono,MONO,mono))
+
+define ValidateVersionTemplate
+#$(eval REPOSITORY_$(2):=$(shell test -z $(3) && echo $(1) || echo "$(3)"))
+#$(eval DIRECTORY_$(2):=$(shell python versions.py get-dir $(1)))
+#$(eval DIRECTORY_$(2):=$(shell test -z $(DIRECTORY_$(2)) && echo $(1) || echo $(DIRECTORY_$(2))))
+#$(eval MODULE_$(2):=$(shell python versions.py get-url $(1)))
+#$(eval NEEDED_$(2)_VERSION:=$(shell python versions.py get-rev $(1)))
+#$(eval $(2)_BRANCH_AND_REMOTE:=$(shell python versions.py get-remote-branch $(1)))
+
+#$(eval $(2)_VERSION:=$$$$(shell cd $($(2)_PATH) 2>/dev/null && git rev-parse HEAD ))
+
+#$(eval NEEDED_$(2)_BRANCH:=$(word 2, $(subst /, ,$($(2)_BRANCH_AND_REMOTE))))
+#$(eval NEEDED_$(2)_REMOTE:=$(word 1, $(subst /, ,$($(2)_BRANCH_AND_REMOTE))))
+#$(eval $(2)_BRANCH:=$$$$(shell cd $($(2)_PATH) 2>/dev/null && git symbolic-ref --short HEAD 2>/dev/null))
+
+validate-$(1)::
+       @if test x$$(IGNORE_$(2)_VERSION) = "x"; then \
+           if test ! -d $($(2)_PATH); then \
+                       if test x$$(RESET_VERSIONS) != "x"; then \
+                               $(MAKE) reset-$(1) || exit 1; \
+                       else \
+                               echo "Your $(1) checkout is missing, please run 'make reset-$(1)'"; \
+                               touch .validate-versions-failure; \
+                       fi; \
+           else \
+                       if test "x$($(2)_VERSION)" != "x$(NEEDED_$(2)_VERSION)" ; then \
+                               if test x$$(RESET_VERSIONS) != "x"; then \
+                                       $(MAKE) reset-$(1) || exit 1; \
+                               else \
+                                   echo "Your $(1) version is out of date, please run 'make reset-$(1)' (found $($(2)_VERSION), expected $(NEEDED_$(2)_VERSION))"; \
+                                   test -z "$(BUILD_REVISION)" || $(MAKE) test-$(1); \
+                               touch .validate-versions-failure; \
+                               fi; \
+               elif test "x$($(2)_BRANCH)" != "x$(NEEDED_$(2)_BRANCH)" ; then \
+                               if test x$$(RESET_VERSIONS) != "x"; then \
+                                       test -z "$(BUILD_REVISION)" || $(MAKE) test-$(1); \
+                                       $(MAKE) reset-$(1) || exit 1; \
+                               else \
+                                   echo "Your $(1) branch is out of date, please run 'make reset-$(1)' (found $($(2)_BRANCH), expected $(NEEDED_$(2)_BRANCH))"; \
+                               touch .validate-versions-failure; \
+                               fi; \
+              fi; \
+           fi; \
+       fi
+
+test-$(1)::
+       @echo $(1)
+       @echo "   REPOSITORY_$(2)=$(REPOSITORY_$(2))"
+       @echo "   DIRECTORY_$(2)=$(DIRECTORY_$(2))"
+       @echo "   MODULE_$(2)=$(MODULE_$(2))"
+       @echo "   NEEDED_$(2)_VERSION=$(NEEDED_$(2)_VERSION)"
+       @echo "   $(2)_VERSION=$($(2)_VERSION)"
+       @echo "   $(2)_BRANCH_AND_REMOTE=$($(2)_BRANCH_AND_REMOTE)"
+       @echo "   NEEDED_$(2)_BRANCH=$(NEEDED_$(2)_BRANCH)"
+       @echo "   NEEDED_$(2)_REMOTE=$(NEEDED_$(2)_REMOTE)"
+       @echo "   $(2)_BRANCH=$($(2)_BRANCH)"
+       @echo "   $(2)_PATH=$($(2)_PATH) => $(abspath $($(2)_PATH))"
+
+reset-$(1)::
+       @if test -d $($(2)_PATH); then \
+               if ! (cd $($(2)_PATH) && git show $(NEEDED_$(2)_VERSION) >/dev/null 2>&1 && git log -1 $(NEEDED_$(2)_REMOTE) >/dev/null 2>&1) ; then \
+                       echo "*** git fetch `basename $$($(2)_PATH)`" && (cd $($(2)_PATH) && git fetch); \
+               fi;  \
+       else \
+               echo "*** git clone $(MODULE_$(2)) --recursive $(DIRECTORY_$(2))" && (cd `dirname $($(2)_PATH)` && git clone $(MODULE_$(2)) --recursive $(DIRECTORY_$(2)) || exit 1 ); \
+       fi
+       @if test x$$(IGNORE_$(2)_VERSION) = "x"; then \
+               echo "*** [$(1)] git checkout -f" $(NEEDED_$(2)_BRANCH) && (cd $($(2)_PATH) ; git checkout -f $(NEEDED_$(2)_BRANCH) || git checkout -f -b $($(2)_BRANCH_AND_REMOTE)); \
+               echo "*** [$(1)] git reset --hard $(NEEDED_$(2)_VERSION)" && (cd $($(2)_PATH) && git reset --hard $(NEEDED_$(2)_VERSION)); \
+       fi
+       @echo "*** [$(1)] git submodule update --init --recursive" && (cd $($(2)_PATH) && git submodule update --init --recursive)
+
+print-$(1)::
+       @printf "*** %-16s %-45s %s (%s)\n" "$(DIRECTORY_$(2))" "$(MODULE_$(2))" "$(NEEDED_$(2)_VERSION)" "$(NEEDED_$(2)_BRANCH)"
+
+.PHONY: validate-$(1) reset-$(1) print-$(1)
+
+reset-versions:: reset-$(1)
+validate-versions:: Validate-$(1)
+print-versions:: print-$(1)
+
+endef
+
+$(eval $(call ValidateVersionTemplate,roslyn,ROSLYN))
+$(eval $(call ValidateVersionTemplate,coreclr,CORECLR))
+$(eval $(call ValidateVersionTemplate,ms-test-suite,MSTESTSUITE))
+
+reset-versions::
+
+validate-versions::
+       @if test -e .validate-versions-failure; then  \
+               rm .validate-versions-failure; \
+               echo One or more modules needs update;  \
+               exit 1; \
+       else \
+               echo All dependent modules up to date;  \
+       fi
+
+reset:
+       @$(MAKE) validate-versions RESET_VERSIONS=1
+
+__bump-version-%:
+       @if [ "$(REV)" = "" ]; then echo "Usage: make bump-version-$* REV=<ref>"; exit 1; fi
+       python versions.py set-rev $* $(REV)
+       @if [ "$(COMMIT)" = "1" ]; then echo "[acceptance-tests] Bump $* to pick up $(REV)." | git commit -F - $(CONFIG); fi
+
+__bump-branch-%:
+       @if [ "$(BRANCH)" = "" ]; then echo "Usage: make bump-branch-$* BRANCH=<branch> REMOTE_BRANCH=<remote branch>"; exit 1; fi
+       @if [ "$(REMOTE_BRANCH)" == "" ]; then echo "Usage: make bump-branch-$* BRANCH=<branch> REMOTE_BRANCH=<remote branch>"; exit 1; fi
+       python versions.py set-branch $* $(BRANCH)
+       python versions.py set-remote-branch $* $(REMOTE_BRANCH)
+       @if [ "$(COMMIT)" = "1" ]; then echo "[acceptance-tests] Bump $* to switch to $(BRANCH) $(REMOTE BRANCH)." | git commit -F - $(CONFIG); fi
+
+__bump-current-version-%:
+       REV=$(shell cd $(TOP)/../$* && git log -1 --pretty=format:%H); \
+       python versions.py set-rev $* $$REV; \
+       if [ "$(COMMIT)" = "1" ]; then echo "[acceptance-tests] Bump $* to pick up $$REV:" | git commit -F - $(CONFIG); fi
+
+# Bump the given submodule to the revision given by the REV make variable
+# If COMMIT is 1, commit the change
+bump-roslyn: __bump-version-roslyn
+bump-coreclr: __bump-version-coreclr
+bump-ms-test-suite: __bump-version-ms-test-suite
+
+# Bump the given submodule to the branch given by the BRANCH/REMOTE_BRANCH make variables
+# If COMMIT is 1, commit the change
+bump-branch-roslyn: __bump-branch-roslyn
+bump-branch-coreclr: __bump-branch-coreclr
+bump-branch-ms-test-suite: __bump-branch-ms-test-suite
+
+# Bump the given submodule to its current GIT version
+# If COMMIT is 1, commit the change
+bump-current-roslyn: __bump-current-version-roslyn
+bump-current-coreclr: __bump-current-version-coreclr
+bump-current-ms-test-suite: __bump-current-version-ms-test-suite
+
+commit-bump-roslyn:
+       $(MAKE) bump-roslyn COMMIT=1
+
+commit-bump-coreclr:
+       $(MAKE) bump-coreclr COMMIT=1
+
+commit-bump-ms-test-suite:
+       $(MAKE) bump-ms-test-suite COMMIT=1
+
+commit-bump-current-roslyn:
+       $(MAKE) bump-current-roslyn COMMIT=1
+
+commit-bump-current-coreclr:
+       $(MAKE) bump-current-coreclr COMMIT=1
+
+commit-bump-current-ms-test-suite:
+       $(MAKE) bump-current-ms-test-suite COMMIT=1
diff --git a/acceptance-tests/versions.py b/acceptance-tests/versions.py
new file mode 100755 (executable)
index 0000000..5fff4f1
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+
+import sys
+import json
+
+def find_module(submodules, name):
+    for item in submodules:
+        if item["name"] == name:
+            return item
+
+    print "Not found"
+    sys.exit(1)
+
+
+if len(sys.argv) < 2:
+    print "Usage: versions.py <command>"
+    sys.exit(1)
+
+CONFIG_FILE = "SUBMODULES.json"
+command = sys.argv[1]
+
+submodules = json.load(open(CONFIG_FILE))
+
+if command == "get-rev":
+    mod = find_module(submodules, sys.argv[2])
+    print mod["rev"]
+elif command == "get-url":
+    mod = find_module(submodules, sys.argv[2])
+    print mod["url"]
+elif command == "get-dir":
+    mod = find_module(submodules, sys.argv[2])
+    print mod["directory"]
+elif command == "get-remote-branch":
+    mod = find_module(submodules, sys.argv[2])
+    print mod["remote-branch"]
+elif command == "set-rev":
+    mod = find_module(submodules, sys.argv[2])
+    mod["rev"] = sys.argv[3]
+    json.dump(submodules, open(CONFIG_FILE, "w"), indent = 2)
+elif command == "set-branch":
+    mod = find_module(submodules, sys.argv[2])
+    mod["branch"] = sys.argv[3]
+    json.dump(submodules, open(CONFIG_FILE, "w"), indent = 2)
+elif command == "set-remote-branch":
+    mod = find_module(submodules, sys.argv[2])
+    mod["remote-branch"] = sys.argv[3]
+    json.dump(submodules, open(CONFIG_FILE, "w"), indent = 2)
+elif command == "cat":
+    print json.dumps(submodules, indent = 2)
+else:
+    print "Unknown command "" + command + ""."
+    sys.exit(1)
diff --git a/code_of_conduct.md b/code_of_conduct.md
new file mode 100644 (file)
index 0000000..84bad19
--- /dev/null
@@ -0,0 +1,50 @@
+# Contributor Code of Conduct
+
+As contributors and maintainers of this project, and in the interest of
+fostering an open and welcoming community, we pledge to respect all people who
+contribute through reporting issues, posting feature requests, updating
+documentation, submitting pull requests or patches, and other activities.
+
+We are committed to making participation in this project a harassment-free
+experience for everyone, regardless of level of experience, gender, gender
+identity and expression, sexual orientation, disability, personal appearance,
+body size, race, ethnicity, age, religion, or nationality.
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery
+* Personal attacks
+* Trolling or insulting/derogatory comments
+* Public or private harassment
+* Publishing other's private information, such as physical or electronic
+  addresses, without explicit permission
+* Other unethical or unprofessional conduct
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+By adopting this Code of Conduct, project maintainers commit themselves to
+fairly and consistently applying these principles to every aspect of managing
+this project. Project maintainers who do not follow or enforce the Code of
+Conduct may be permanently removed from the project team.
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community.
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting a project maintainer at miguel@xamarin.com. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. Maintainers are
+obligated to maintain confidentiality with regard to the reporter of an
+incident.
+
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 1.3.0, available at
+[http://contributor-covenant.org/version/1/3/0/][version]
+
+[homepage]: http://contributor-covenant.org
+[version]: http://contributor-covenant.org/version/1/3/0/
index 3586a839fd5320c44ebb2e88911dab7c3b0606e1..5da2a242f3a7c68dc908294676b129a701670c0f 100644 (file)
@@ -1,7 +1,7 @@
 # Process this file with autoconf to produce a configure script.
 #AC_PREREQ([2.62])
 
-AC_INIT(mono, [4.3.0],
+AC_INIT(mono, [4.3.3],
         [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
 
 AC_CONFIG_SRCDIR([README.md])
@@ -417,7 +417,7 @@ AC_PROG_LD_GNU
 AM_ICONV()
 
 AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h sys/utime.h semaphore.h sys/un.h linux/rtc.h sys/syscall.h sys/mkdev.h sys/uio.h sys/param.h sys/sysctl.h libproc.h sys/prctl.h)
-AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h sys/inotify.h arpa/inet.h complex.h)
+AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h sys/inotify.h arpa/inet.h complex.h unwind.h)
 AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h],
                   [], [], [#include <stddef.h>
                  #include <sys/socket.h>
@@ -546,7 +546,7 @@ if test x"$GCC" = xyes; then
                if test "x$mono_cv_clang" = "xyes"; then
                   # https://bugzilla.samba.org/show_bug.cgi?id=8118
                   WARN="$WARN -Qunused-arguments"
-                  WARN="$WARN -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign"
+                  WARN="$WARN -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Wno-return-stack-address"
                fi
 else
        # The Sun Forte compiler complains about inline functions that access static variables
@@ -731,7 +731,7 @@ DISABLED_FEATURES=none
 AC_ARG_ENABLE(minimal, [  --enable-minimal=LIST      drop support for LIST subsystems.
      LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug, appdomains, verifier, 
      reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, perfcounters, normalization, assembly_remapping, shared_perfcounters, remoting,
-        security, sgen_remset, sgen_marksweep_par, sgen_marksweep_fixed, sgen_marksweep_fixed_par, sgen_copying, shared_handles.],
+        security, sgen_remset, sgen_marksweep_par, sgen_marksweep_fixed, sgen_marksweep_fixed_par, sgen_copying.],
 [
        for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do
                eval "mono_feature_disable_$feature='yes'"
@@ -743,7 +743,8 @@ AC_ARG_ENABLE(minimal, [  --enable-minimal=LIST      drop support for LIST subsy
 AC_DEFINE_UNQUOTED(DISABLED_FEATURES, "$DISABLED_FEATURES", [String of disabled features])
 
 if test "x$mono_feature_disable_aot" = "xyes"; then
-       AC_DEFINE(DISABLE_AOT_COMPILER, 1, [Disable AOT Compiler])
+       AC_DEFINE(DISABLE_AOT, 1, [Disable AOT Compiler])
+       enable_system_aot=no
        AC_MSG_NOTICE([Disabled AOT compiler])
 fi
 
@@ -905,11 +906,6 @@ if test "x$mono_feature_disable_sgen_copying" = "xyes"; then
        AC_MSG_NOTICE([Disabled major=copying support in SGEN.])
 fi
 
-if test "x$mono_feature_disable_shared_handles" = "xyes"; then
-       AC_DEFINE(DISABLE_SHARED_HANDLES, 1, [Disable inter-process shared handles])
-       AC_SUBST(DISABLE_SHARED_HANDLES)
-fi
-
 AC_ARG_ENABLE(executables, [  --disable-executables disable the build of the runtime executables], enable_executables=$enableval, enable_executables=yes)
 AM_CONDITIONAL(DISABLE_EXECUTABLES, test x$enable_executables = xno)
 
@@ -1077,6 +1073,12 @@ AC_CHECK_FUNCS(sigaction)
 AC_CHECK_FUNCS(kill)
 AC_CHECK_FUNCS(signal)
 
+# signal() is declared inline in Android headers
+# so we need to workaround it by overriding the check.
+if test x$platform_android = xyes; then
+       AC_DEFINE(HAVE_SIGNAL,1)
+fi
+
 if test x$host_win32 = xno; then
 
        dnl hires monotonic clock support
@@ -2436,15 +2438,6 @@ if test "x$ac_cv_have_dev_random" = "xno" \
 *** variable MONO_EGD_SOCKET to point to the daemon's socket to use that.
 ***]])
 fi
-AC_MSG_CHECKING([if inter-process shared handles are requested])
-# Same as --enable-minimal=shared_handles
-AC_ARG_ENABLE(shared-handles, [  --disable-shared-handles disable inter-process shared handles], try_shared_handles=$enableval, try_shared_handles=no)
-AC_MSG_RESULT($try_shared_handles)
-if test "x$try_shared_handles" != "xyes"; then
-       AC_DEFINE(DISABLE_SHARED_HANDLES, 1, [Disable inter-process shared handles])
-       AC_SUBST(DISABLE_SHARED_HANDLES)
-fi
 
 AC_ARG_ENABLE(bcl-opt, [  --disable-bcl-opt    BCL is compiled with no optimizations (allows accurate BCL debugging)], test_bcl_opt=$enableval, test_bcl_opt=yes)
 
@@ -2562,6 +2555,13 @@ if test "x$enable_nacl_gc" = "xyes"; then
 fi
 AC_SUBST(MONO_NACL_ALIGN_MASK_OFF)
 
+dnl **************************
+dnl *** AOT cross offsets  ***
+dnl **************************
+
+AC_ARG_WITH(cross-offsets, [  --with-cross-offsets=<offsets file path>    Explicit AOT cross offsets file],
+    AC_DEFINE_UNQUOTED(MONO_OFFSETS_FILE, "$withval", [AOT cross offsets file]))
+
 dnl **************
 dnl ***  LLVM  ***
 dnl **************
@@ -2569,6 +2569,7 @@ dnl **************
 AC_ARG_ENABLE(llvm,[  --enable-llvm    Enable the LLVM back-end], enable_llvm=$enableval, enable_llvm=no)
 AC_ARG_ENABLE(loadedllvm,[  --enable-loadedllvm        Load the LLVM back-end dynamically], enable_llvm=$enableval && enable_loadedllvm=$enableval, enable_loadedllvm=no)
 AC_ARG_ENABLE(llvm-version-check,[  --enable-llvm-version-check Check that the LLVM matches the version expected by mono], enable_llvm_version_check=$enableval, enable_llvm_version_check=no)
+AC_ARG_ENABLE(llvm-runtime,[  --enable-llvm-runtime    Enable runtime support for llvmonly code], enable_llvm_runtime=$enableval, enable_llvm_runtime=no)
 
 AC_ARG_WITH(llvm, [  --with-llvm=<llvm prefix>    Enable the LLVM back-end], enable_llvm=yes,)
 
@@ -2608,11 +2609,17 @@ if test "x$enable_llvm" = "xyes"; then
    LLVM_SYSTEM_LIBS=`$LLVM_CONFIG --system-libs 2>/dev/null | grep -- -`
    if test "x$host" != "x$target"; then
       # No need for jit libs
-      LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter`
+      LLVM_LIBS=`$LLVM_CONFIG --libs analysis core bitwriter`
    else
-      LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit $llvm_codegen`
+      LLVM_LIBS=`$LLVM_CONFIG --libs analysis core bitwriter jit mcjit $llvm_codegen`
+   fi
+   LLVM_LIBS="$LLVM_LIBS $LLVM_LDFLAGS $LLVM_SYSTEM_LIBS"
+   # The c++ standard library used by llvm doesn't show up in $LLVM_SYSTEM_LIBS so add it manually
+   if echo $LLVM_CXXFLAGS | grep -q -- '-stdlib=libc++'; then
+      LLVM_LIBS="$LLVM_LIBS -lc++"
+   else
+      LLVM_LIBS="$LLVM_LIBS -lstdc++"
    fi
-   LLVM_LIBS="$LLVM_LIBS $LLVM_LDFLAGS $LLVM_SYSTEM_LIBS -lstdc++"
 
    expected_llvm_version="3.4svn-mono-mono/e656cac"
 
@@ -2641,6 +2648,7 @@ if test "x$enable_llvm" = "xyes"; then
          -lLLVMARMAsmPrinter -lLLVMTableGen -lLLVMDebugInfo -lLLVMOption -lLLVMX86Disassembler \
          -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc \
          -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMJIT \
+         -lLLVMAnalysis -lLLVMTarget \
          -lLLVMIRReader -lLLVMAsmParser -lLLVMLineEditor -lLLVMMCAnalysis -lLLVMInstrumentation \
          -lLLVMInterpreter -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils \
          -lLLVMipa -lLLVMAnalysis -lLLVMProfileData -lLLVMMCJIT -lLLVMTarget -lLLVMRuntimeDyld \
@@ -2675,6 +2683,14 @@ if test "x$enable_loadedllvm" = "xyes"; then
 fi
 AM_CONDITIONAL(LOADED_LLVM, [test x$enable_loadedllvm = xyes])
 
+if test "x$enable_llvm" = "xyes"; then
+   enable_llvm_runtime=yes
+fi
+if test "x$enable_llvm_runtime" = "xyes"; then
+   AC_DEFINE(ENABLE_LLVM_RUNTIME, 1, [Runtime support code for llvm enabled])
+fi
+AM_CONDITIONAL(ENABLE_LLVM_RUNTIME, [test x$enable_llvm_runtime = xyes])
+
 TARGET="unknown"
 ACCESS_UNALIGNED="yes"
 
@@ -2695,6 +2711,7 @@ case "$host" in
        mips*)
                TARGET=MIPS;
                arch_target=mips;
+               with_tls=pthread;
                ACCESS_UNALIGNED="no"
 
                AC_MSG_CHECKING(for mips n32)
@@ -3161,7 +3178,8 @@ dnl
 SGEN_DEFINES=
 AC_ARG_WITH(sgen, [  --with-sgen=yes,no             Extra Generational GC, default=yes],[buildsgen=$with_sgen],[buildsgen=yes])
 if test x$buildsgen = xyes; then
-   SGEN_DEFINES="-DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR"
+   AC_DEFINE(HAVE_MOVING_COLLECTOR, 1, [Moving collector])
+   SGEN_DEFINES="-DHAVE_SGEN_GC"
    gc_msg="sgen and $gc_msg"
 fi
 AC_SUBST(SGEN_DEFINES)
@@ -3447,6 +3465,7 @@ AC_ARG_WITH(monodroid,       [  --with-monodroid=yes,no         If you want to b
 AC_ARG_WITH(monotouch,       [  --with-monotouch=yes,no         If you want to build the Xamarin.iOS assemblies (defaults to no)],    [], [with_monotouch=no])
 AC_ARG_WITH(monotouch_watch, [  --with-monotouch_watch=yes,no   If you want to build the Xamarin.WatchOS assemblies (defaults to no)],[], [with_monotouch_watch=no])
 AC_ARG_WITH(monotouch_tv,    [  --with-monotouch_tv=yes,no      If you want to build the Xamarin.TVOS assemblies (defaults to no)],   [], [with_monotouch_tv=no])
+AC_ARG_WITH(bitcode,         [  --with-bitcode=yes,no           If bitcode is enabled (defaults to no)],                              [], [with_bitcode=no])
 AC_ARG_WITH(xammac,          [  --with-xammac=yes,no            If you want to build the Xamarin.Mac assemblies (defaults to no)],    [], [with_xammac=no])
 
 OPROFILE=no
@@ -3560,6 +3579,7 @@ AM_CONDITIONAL(INSTALL_MONODROID, [test "x$with_monodroid" != "xno"])
 AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" != "xno"])
 AM_CONDITIONAL(INSTALL_MONOTOUCH_WATCH, [test "x$with_monotouch_watch" != "xno"])
 AM_CONDITIONAL(INSTALL_MONOTOUCH_TV, [test "x$with_monotouch_tv" != "xno"])
+AM_CONDITIONAL(BITCODE, test "x$with_bitcode" = "xyes")
 AM_CONDITIONAL(INSTALL_XAMMAC, [test "x$with_xammac" != "xno"])
 
 AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes)
@@ -3589,7 +3609,7 @@ AC_SUBST(X11)
 AC_SUBST(GDKX11)
 AC_SUBST(GTKX11)
 AC_SUBST(XINERAMA)
-AC_DEFINE_UNQUOTED(ARCHITECTURE,"$arch_target",[The architecture this is running on])
+AC_DEFINE_UNQUOTED(MONO_ARCHITECTURE,"$arch_target",[The architecture this is running on])
 AC_SUBST(arch_target)
 AC_SUBST(CFLAGS)
 AC_SUBST(CPPFLAGS)
@@ -3794,6 +3814,7 @@ AC_CONFIG_COMMANDS([nolock-libtool], [sed -e 's/lock_old_archive_extraction=yes/
 AC_OUTPUT([
 Makefile
 mono-uninstalled.pc
+acceptance-tests/Makefile
 scripts/mono-find-provides
 scripts/mono-find-requires
 mono/Makefile
index 2cfd5202b65cf01da419f10a70ccdeed2e40d0ed..b5b83fa69f1fd96a73d903f9e06498757f4efe78 100644 (file)
@@ -14,7 +14,8 @@ EXTRA_DIST =          \
        net_1_1/machine.config \
        gdb/mono-gdb.py \
        gdb/gdb-python.diff     \
-       lldb/mono.py
+       lldb/mono.py \
+       lldb/monobt.py
 
 pkgconfigdir = $(libdir)/pkgconfig
 
index 1c013e38611a3c8da5b833a1656113a7262cd4b3..eda0ba36da7fd0b2827b46b96a4374b4274139ca 100644 (file)
@@ -53,7 +53,7 @@ def stringify_class_name(ns, name):
     if ns == "":
         return name
     else:
-        return "%s.%s".format (ns, name)
+        return "{}.{}".format (ns, name)
 
 class ArrayPrinter:
     "Print a C# array"
@@ -66,7 +66,7 @@ class ArrayPrinter:
     def to_string(self):
         obj = self.val.cast (gdb.lookup_type ("MonoArray").pointer ()).dereference ()
         length = obj ['max_length']
-        return "%s [%d]".format (stringify_class_name (self.class_ns, self.class_name [0:len (self.class_name) - 2]), int (length))
+        return "{} [{}]".format (stringify_class_name (self.class_ns, self.class_name [0:len (self.class_name) - 2]), int (length))
         
 class ObjectPrinter:
     "Print a C# object"
@@ -96,7 +96,7 @@ class ObjectPrinter:
                     return (field.name, self.obj [field.name])
             except:
                 # Superclass
-                return (field.name, self.obj.cast (gdb.lookup_type ("%s".format (field.name))))
+                return (field.name, self.obj.cast (gdb.lookup_type ("{}".format (field.name))))
 
     def children(self):
         # FIXME: It would be easier if gdb.Value would support iteration itself
@@ -109,7 +109,7 @@ class ObjectPrinter:
             class_name = obj ['vtable'].dereference ()['klass'].dereference ()['name'].string ()
             if class_name [-2:len(class_name)] == "[]":
                 return {}.__iter__ ()
-            gdb_type = gdb.lookup_type ("struct %s_%s".format (class_ns.replace (".", "_"), class_name))
+            gdb_type = gdb.lookup_type ("struct {}_{}".format (class_ns.replace (".", "_"), class_name))
             return self._iterator(obj.cast (gdb_type))
         except:
             print (sys.exc_info ()[0])
@@ -129,12 +129,12 @@ class ObjectPrinter:
                 return ArrayPrinter (self.val,class_ns,class_name).to_string ()
             if class_ns != "":
                 try:
-                    gdb_type = gdb.lookup_type ("struct %s.%s".format (class_ns, class_name))
+                    gdb_type = gdb.lookup_type ("struct {}.{}".format (class_ns, class_name))
                 except:
                     # Maybe there is no debug info for that type
-                    return "%s.%s".format (class_ns, class_name)
+                    return "{}.{}".format (class_ns, class_name)
                 #return obj.cast (gdb_type)
-                return "%s.%s".format (class_ns, class_name)
+                return "{}.{}".format (class_ns, class_name)
             return class_name
         except:
             print (sys.exc_info ()[0])
@@ -154,9 +154,9 @@ class MonoMethodPrinter:
         val = self.val.dereference ()
         klass = val ["klass"].dereference ()
         class_name = stringify_class_name (klass ["name_space"].string (), klass ["name"].string ())
-        return "\"%s:%s ()\"".format (class_name, val ["name"].string ())
+        return "\"{}:{} ()\"".format (class_name, val ["name"].string ())
         # This returns more info but requires calling into the inferior
-        #return "\"%s\"".format (gdb.parse_and_eval ("mono_method_full_name (%s, 1)".format (str (int (self.val.cast (gdb.lookup_type ("guint64")))))).string ())
+        #return "\"{}\"".format (gdb.parse_and_eval ("mono_method_full_name ({}, 1)".format (str (int (self.val.cast (gdb.lookup_type ("guint64")))))).string ())
 
 class MonoClassPrinter:
     "Print a MonoClass structure"
@@ -169,9 +169,9 @@ class MonoClassPrinter:
             return "0x0"
         klass = self.val.dereference ()
         class_name = stringify_class_name (klass ["name_space"].string (), klass ["name"].string ())
-        return "\"%s\"".format (class_name)
+        return "\"{}\"".format (class_name)
         # This returns more info but requires calling into the inferior
-        #return "\"%s\"".format (gdb.parse_and_eval ("mono_type_full_name (&((MonoClass*)%s)->byval_arg)".format (str (int ((self.val).cast (gdb.lookup_type ("guint64")))))))
+        #return "\"{}\"".format (gdb.parse_and_eval ("mono_type_full_name (&((MonoClass*){})->byval_arg)".format (str (int ((self.val).cast (gdb.lookup_type ("guint64")))))))
 
 def lookup_pretty_printer(val):
     t = str (val.type)
@@ -217,9 +217,9 @@ class MonoSupport(object):
             new_size = os.stat ("xdb.s").st_size
             if new_size > self.s_size:
                 sofile = "xdb.so"
-                gdb.execute ("shell as -o xdb.o xdb.s && ld -shared -o %s xdb.o".format (sofile))
+                gdb.execute ("shell as -o xdb.o xdb.s && ld -shared -o {} xdb.o".format (sofile))
                 # FIXME: This prints messages which couldn't be turned off
-                gdb.execute ("add-symbol-file %s 0".format (sofile))
+                gdb.execute ("add-symbol-file {} 0".format (sofile))
                 self.s_size = new_size
 
 class RunHook (gdb.Command):
@@ -245,4 +245,4 @@ exec_file = gdb.current_objfile ().filename
 if os.stat (exec_file).st_size != os.lstat (exec_file).st_size:
     exec_file = os.readlink (exec_file)
 exec_dir = os.path.dirname (exec_file)
-gdb.execute ("source %s/%s-gdbinit".format (exec_dir, os.path.basename (exec_file)))
+gdb.execute ("source {}/{}-gdbinit".format (exec_dir, os.path.basename (exec_file)))
index f4dcfe72c09edbea4c3fcf23c19c3e0bbf1c0502..7d9eab5cb7007568e80686b5033fc23d6f862739 100644 (file)
@@ -48,7 +48,7 @@ def stringify_class_name(ns, name):
     if ns == "":
         return name
     else:
-        return "%s.%s".format (ns, name)
+        return "{}.{}".format (ns, name)
 
 class ArrayPrinter:
     "Print a C# array"
@@ -61,7 +61,7 @@ class ArrayPrinter:
     def to_string(self):
         obj = self.val.cast (gdb.lookup_type ("MonoArray").pointer ()).dereference ()
         length = obj ['max_length']
-        return "%s [%d]".format (stringify_class_name (self.class_ns, self.class_name [0:len(self.class_name) - 2]), int(length))
+        return "{} [{}]".format (stringify_class_name (self.class_ns, self.class_name [0:len(self.class_name) - 2]), int(length))
         
 class ObjectPrinter:
     "Print a C# object"
@@ -91,7 +91,7 @@ class ObjectPrinter:
                     return (field.name, self.obj [field.name])
             except:
                 # Superclass
-                return (field.name, self.obj.cast (gdb.lookup_type ("%s".format (field.name))))
+                return (field.name, self.obj.cast (gdb.lookup_type ("{}".format (field.name))))
 
     def children(self):
         # FIXME: It would be easier if gdb.Value would support iteration itself
@@ -105,7 +105,7 @@ class ObjectPrinter:
             if class_name [-2:len(class_name)] == "[]":
                 return {}.__iter__ ()
             try:
-                gdb_type = gdb.lookup_type ("struct %s_%s".format (class_ns.replace (".", "_"), class_name))
+                gdb_type = gdb.lookup_type ("struct {}_{}".format (class_ns.replace (".", "_"), class_name))
                 return self._iterator(obj.cast (gdb_type))
             except:
                 return {}.__iter__ ()
@@ -127,12 +127,12 @@ class ObjectPrinter:
                 return ArrayPrinter (self.val,class_ns,class_name).to_string ()
             if class_ns != "":
                 try:
-                    gdb_type = gdb.lookup_type ("struct %s.%s".format (class_ns, class_name))
+                    gdb_type = gdb.lookup_type ("struct {}.{}".format (class_ns, class_name))
                 except:
                     # Maybe there is no debug info for that type
-                    return "%s.%s".format (class_ns, class_name)
+                    return "{}.{}".format (class_ns, class_name)
                 #return obj.cast (gdb_type)
-                return "%s.%s".format (class_ns, class_name)
+                return "{}.{}".format (class_ns, class_name)
             return class_name
         except:
             print (sys.exc_info ()[0])
@@ -152,9 +152,9 @@ class MonoMethodPrinter:
         val = self.val.dereference ()
         klass = val ["klass"].dereference ()
         class_name = stringify_class_name (klass ["name_space"].string (), klass ["name"].string ())
-        return "\"%s:%s ()\"".format (class_name, val ["name"].string ())
+        return "\"{}:{} ()\"".format (class_name, val ["name"].string ())
         # This returns more info but requires calling into the inferior
-        #return "\"%s\"".format (gdb.parse_and_eval ("mono_method_full_name (%s, 1)".format (str (int (self.val.cast (gdb.lookup_type ("guint64")))))).string ())
+        #return "\"{}\"".format (gdb.parse_and_eval ("mono_method_full_name ({}, 1)".format (str (int (self.val.cast (gdb.lookup_type ("guint64")))))).string ())
 
 class MonoClassPrinter:
     "Print a MonoClass structure"
@@ -168,13 +168,13 @@ class MonoClassPrinter:
         klass = self.val.dereference ()
         class_name = stringify_class_name (klass ["name_space"].string (), klass ["name"].string ())
         if klass ["generic_class"].cast (gdb.lookup_type ("guint64")) != 0:
-            class_name = "%s<%s>".format (class_name, str (klass ["generic_class"]["context"]["class_inst"]))
+            class_name = "{}<{}>".format (class_name, str (klass ["generic_class"]["context"]["class_inst"]))
         if add_quotes:
-            return "\"%s\"".format (class_name)
+            return "\"{}\"".format (class_name)
         else:
             return class_name
         # This returns more info but requires calling into the inferior
-        #return "\"%s\"".format (gdb.parse_and_eval ("mono_type_full_name (&((MonoClass*)%s)->byval_arg)".format (str (int ((self.val).cast (gdb.lookup_type ("guint64")))))))
+        #return "\"{}\"".format (gdb.parse_and_eval ("mono_type_full_name (&((MonoClass*){})->byval_arg)".format (str (int ((self.val).cast (gdb.lookup_type ("guint64")))))))
 
     def to_string(self):
         try:
@@ -222,7 +222,7 @@ class MonoGenericClassPrinter:
         method_inst_str = ""
         if int(method_inst.cast (gdb.lookup_type ("guint64"))) != 0:
             method_inst_str  = str(method_inst)
-        return "%s, [%s], [%s]>".format (container_str, class_inst_str, method_inst_str)
+        return "{}, [{}], [{}]>".format (container_str, class_inst_str, method_inst_str)
 
     def to_string(self):
         try:
@@ -252,9 +252,9 @@ class MonoTypePrinter:
                 info = str(t ["data"]["generic_class"])
 
             if info != "":
-                return "{%s, %s}".format (kind, info)
+                return "{{}, {}}".format (kind, info)
             else:
-                return "{%s}".format (kind)
+                return "{{}}".format (kind)
         except:
             #print (sys.exc_info ()[0])
             #print (sys.exc_info ()[1])
@@ -283,7 +283,7 @@ class MonoMethodRgctxPrinter:
             if i > 0:
                 inst_str = inst_str + ", "
             inst_str = inst_str + type_printer.to_string ()
-        return "MRGCTX[%s, [%s]]".format (klass_printer.to_string(), inst_str)
+        return "MRGCTX[{}, [{}]]".format (klass_printer.to_string(), inst_str)
 
 class MonoVTablePrinter:
     "Print a MonoVTable structure"
@@ -298,7 +298,7 @@ class MonoVTablePrinter:
         klass = vtable ["klass"]
         klass_printer = MonoClassPrinter (klass)
 
-        return "vtable(%s)".format (klass_printer.to_string ())
+        return "vtable({})".format (klass_printer.to_string ())
 
 def lookup_pretty_printer(val):
     t = str (val.type)
diff --git a/data/lldb/monobt.py b/data/lldb/monobt.py
new file mode 100644 (file)
index 0000000..0e47138
--- /dev/null
@@ -0,0 +1,56 @@
+import lldb
+
+def print_frames(thread, num_frames, current_thread):
+    # TODO: Make output header similar to bt.
+    print '%c thread #%i' % ('*' if current_thread else ' ', thread.idx)
+
+    if current_thread:
+        selected_frame = thread.GetSelectedFrame()
+
+    for frame in thread.frames[:+num_frames]:
+        pc = str(frame.addr)
+        fmt = '  %c %s'
+        var = frame
+        if pc[0] == '0':
+            try:
+                framestr = frame.EvaluateExpression('(char*)mono_pmip((void*)%s)' % pc).summary[1:-1]
+                var = 'frame #%i: %s%s' % (frame.idx, pc, framestr)
+            except:
+                pass
+
+        print fmt % ('*' if current_thread and frame.idx == selected_frame.idx else ' ', var)
+
+def monobt(debugger, command, result, dict):
+    opts = {'all_bt': False, 'num_frames': None}
+
+    if command == 'all':
+        opts['all_bt'] = True
+    elif command.isdigit():
+        opts['num_frames'] = int(command)
+    elif command != '':
+        print 'error: monobt [<number>|all]'
+        return
+
+    target = debugger.GetSelectedTarget()
+    process = target.process
+
+    if not process.IsValid():
+        print 'error: invalid process'
+        return
+
+    if opts['all_bt']:
+        for thread in process.threads:
+            print_frames(thread, len(thread), process.selected_thread == thread)
+            print ''
+    else:
+        thread = process.selected_thread
+        num_frames = len(thread) if opts['num_frames'] is None else opts['num_frames']
+        print_frames(thread, num_frames, True)
+
+    return None
+
+def __lldb_init_module (debugger, dict):
+    # This initializer is being run from LLDB in the embedded command interpreter
+    # Add any commands contained in this module to LLDB
+    debugger.HandleCommand('command script add -f monobt.monobt monobt')
+    print '"monobt" command installed'
\ No newline at end of file
index 8702a4957a805c42d0b0354ed84a66f38dbeba82..f8231b4834f67f9116be1032fd02fed5798d153e 100644 (file)
@@ -49,3 +49,10 @@ g_byte_array_append (GByteArray *array,
 {
        return (GByteArray *)g_array_append_vals ((GArray *)array, data, len);
 }
+
+void
+g_byte_array_set_size (GByteArray *array, gint length)
+{
+       g_array_set_size ((GArray *)array, length);
+}
+
index 4b2c6d659d488344a085346673b86a6e9c2374c5..f5473bd2a5c0ee172cffe5de50d491768dfaa498 100644 (file)
@@ -486,6 +486,7 @@ struct _GByteArray {
 GByteArray *g_byte_array_new    (void);
 GByteArray* g_byte_array_append (GByteArray *array, const guint8 *data, guint len);
 guint8*  g_byte_array_free      (GByteArray *array, gboolean free_segment);
+void     g_byte_array_set_size  (GByteArray *array, gint length);
 
 /*
  * Array
index 3bf7a4b54385a2f3765a85c0bae23190169f5c0a..323eeecdf13c39527c53efa5f6c8487765ee42c0 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 3bf7a4b54385a2f3765a85c0bae23190169f5c0a
+Subproject commit 323eeecdf13c39527c53efa5f6c8487765ee42c0
index 05654b3d0159b3f8da53e4dcd7467ee8c60a4675..af10c8da53c277eebb42c597117560510dfce50c 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 05654b3d0159b3f8da53e4dcd7467ee8c60a4675
+Subproject commit af10c8da53c277eebb42c597117560510dfce50c
index b6bc1832c994da99c04ecbaa475200159c9103f4..2ffafd441d7ed48dde9265fb787ffb92c6ba806c 100644 (file)
@@ -644,9 +644,17 @@ GC_stop_func stop_func;
    }
 }
 
-void (*GC_notify_event) GC_PROTO((GCEventType e));
+void (*GC_notify_event) GC_PROTO((GC_EventType e));
 void (*GC_on_heap_resize) GC_PROTO((size_t new_size));
 
+GC_API void GC_set_on_collection_event (void (*fn) (GC_EventType))
+{
+       DCL_LOCK_STATE;
+       LOCK();
+       GC_notify_event = fn;
+       UNLOCK();
+}
+
 /* Finish up a collection.  Assumes lock is held, signals are disabled,        */
 /* but the world is otherwise running.                                 */
 void GC_finish_collection()
index 5626e8721370071bbefdbfb1710911b86a17bb50..39224f94ed695c24bbdedb2d2e1b7693b6be1e54 100644 (file)
@@ -313,7 +313,7 @@ typedef struct {
        GC_hidden_pointer weak_ref;
 } GCToggleRef;
 
-static int (*GC_toggleref_callback) (GC_PTR obj);
+static GC_ToggleRefStatus (*GC_toggleref_callback) (GC_PTR obj);
 static GCToggleRef *GC_toggleref_array;
 static int GC_toggleref_array_size;
 static int GC_toggleref_array_capacity;
@@ -326,7 +326,7 @@ GC_process_togglerefs (void)
        int toggle_ref_counts [3] = { 0, 0, 0 };
 
        for (i = w = 0; i < GC_toggleref_array_size; ++i) {
-               int res;
+               GC_ToggleRefStatus res;
                GCToggleRef r = GC_toggleref_array [i];
 
                GC_PTR obj;
@@ -341,14 +341,14 @@ GC_process_togglerefs (void)
                res = GC_toggleref_callback (obj);
                ++toggle_ref_counts [res];
                switch (res) {
-               case 0:
+               case GC_TOGGLE_REF_DROP:
                        break;
-               case 1:
+               case GC_TOGGLE_REF_STRONG:
                        GC_toggleref_array [w].strong_ref = obj;
                        GC_toggleref_array [w].weak_ref = (GC_hidden_pointer)NULL;
                        ++w;
                        break;
-               case 2:
+               case GC_TOGGLE_REF_WEAK:
                        GC_toggleref_array [w].strong_ref = NULL;
                        GC_toggleref_array [w].weak_ref = HIDE_POINTER (obj);
                        ++w;
@@ -370,7 +370,7 @@ GC_process_togglerefs (void)
 static void (*GC_object_finalized_proc) (GC_PTR obj);
 
 void
-GC_set_finalizer_notify_proc (void (*proc) (GC_PTR obj))
+GC_set_await_finalize_proc (void (*proc) (GC_PTR obj))
 {
        GC_object_finalized_proc = proc;
 }
@@ -423,17 +423,19 @@ static void GC_clear_togglerefs ()
 
 
 
-void GC_toggleref_register_callback(int (*proccess_toggleref) (GC_PTR obj))
+void GC_set_toggleref_func(GC_ToggleRefStatus (*proccess_toggleref) (GC_PTR obj))
 {
        GC_toggleref_callback = proccess_toggleref;
 }
 
-static void
+static GC_bool
 ensure_toggleref_capacity (int capacity)
 {
        if (!GC_toggleref_array) {
                GC_toggleref_array_capacity = 32;
                GC_toggleref_array = (GCToggleRef *) GC_INTERNAL_MALLOC_IGNORE_OFF_PAGE (GC_toggleref_array_capacity * sizeof (GCToggleRef), NORMAL);
+               if (!GC_toggleref_array)
+                       return FALSE;
        }
        if (GC_toggleref_array_size + capacity >= GC_toggleref_array_capacity) {
                GCToggleRef *tmp;
@@ -442,15 +444,19 @@ ensure_toggleref_capacity (int capacity)
                        GC_toggleref_array_capacity *= 2;
 
                tmp = (GCToggleRef *) GC_INTERNAL_MALLOC_IGNORE_OFF_PAGE (GC_toggleref_array_capacity * sizeof (GCToggleRef), NORMAL);
+               if (!tmp)
+                       return FALSE;
                memcpy (tmp, GC_toggleref_array, GC_toggleref_array_size * sizeof (GCToggleRef));
                GC_INTERNAL_FREE (GC_toggleref_array);
                GC_toggleref_array = tmp;
        }
+       return TRUE;
 }
 
-void
+int
 GC_toggleref_add (GC_PTR object, int strong_ref)
 {
+       int res = GC_SUCCESS;
     DCL_LOCK_STATE;
 # ifdef THREADS
        DISABLE_SIGNALS();
@@ -460,7 +466,10 @@ GC_toggleref_add (GC_PTR object, int strong_ref)
        if (!GC_toggleref_callback)
                goto end;
 
-       ensure_toggleref_capacity (1);
+       if (!ensure_toggleref_capacity (1)) {
+               res = GC_NO_MEMORY;
+               goto end;
+       }
        GC_toggleref_array [GC_toggleref_array_size].strong_ref = strong_ref ? object : NULL;
        GC_toggleref_array [GC_toggleref_array_size].weak_ref = strong_ref ? (GC_hidden_pointer)NULL : HIDE_POINTER (object);
        ++GC_toggleref_array_size;
@@ -470,6 +479,7 @@ end:
        UNLOCK();
        ENABLE_SIGNALS();
 # endif
+       return res;
 }
 
 
index dd7fb7a86c8d0f90eda6eb4e6aaaa762a28129d9..e7929918ad0bb9df8d12b07a7803f660a8a3244f 100644 (file)
@@ -104,11 +104,11 @@ typedef enum {
        GC_EVENT_POST_STOP_WORLD,
        GC_EVENT_PRE_START_WORLD,
        GC_EVENT_POST_START_WORLD
-} GCEventType;
+} GC_EventType;
 
-GC_API void (*GC_notify_event) GC_PROTO((GCEventType event_type));
-                       /* Invoked at specific points during every collection.
-                        */
+GC_API void GC_set_on_collection_event GC_PROTO((void (*) (GC_EventType)));
+                       /* Set callback invoked at specific points      */
+                       /* during every collection.                     */
                         
 GC_API void (*GC_on_heap_resize) GC_PROTO((size_t new_size));
                        /* Invoked when the heap grows or shrinks        */
@@ -431,7 +431,10 @@ int GC_get_suspend_signal GC_PROTO((void));
 
 /* Return the signal used by the gc to resume threads on posix platforms. */
 /* Return -1 otherwise. */
-int GC_get_restart_signal GC_PROTO((void));
+int GC_get_thr_restart_signal GC_PROTO((void));
+
+/* Explicitly enable GC_register_my_thread() invocation.               */
+GC_API void GC_allow_register_threads GC_PROTO((void));
 
 /* Disable garbage collection.  Even GC_gcollect calls will be                 */
 /* ineffective.                                                                */
@@ -773,13 +776,21 @@ GC_API int GC_unregister_disappearing_link GC_PROTO((GC_PTR * /* link */));
 GC_API int GC_register_long_link GC_PROTO((GC_PTR * /* link */, GC_PTR obj));
 GC_API int GC_unregister_long_link GC_PROTO((GC_PTR * /* link */));
 
+typedef enum {
+       GC_TOGGLE_REF_DROP,
+       GC_TOGGLE_REF_STRONG,
+       GC_TOGGLE_REF_WEAK
+} GC_ToggleRefStatus;
 
 /* toggleref support */
-GC_API void GC_toggleref_register_callback GC_PROTO((int (*proccess_toggleref) (GC_PTR obj)));
-GC_API void GC_toggleref_add (GC_PTR object, int strong_ref);
+GC_API void GC_set_toggleref_func GC_PROTO(
+               (GC_ToggleRefStatus (*proccess_toggleref) (GC_PTR obj)));
+GC_API int GC_toggleref_add (GC_PTR object, int strong_ref);
+       /* Returns GC_SUCCESS if registration succeeded (or no callback */
+       /* registered yet), GC_NO_MEMORY if failed for lack of memory.  */
 
 /* finalizer callback support */
-GC_API void GC_set_finalizer_notify_proc GC_PROTO((void (*object_finalized) (GC_PTR obj)));
+GC_API void GC_set_await_finalize_proc GC_PROTO((void (*object_finalized) (GC_PTR obj)));
 
 
 /* Returns !=0  if GC_invoke_finalizers has something to do.           */
@@ -859,6 +870,21 @@ GC_API GC_PTR GC_is_visible GC_PROTO((GC_PTR p));
 /* Always returns its argument.                                                */
 GC_API GC_PTR GC_is_valid_displacement GC_PROTO((GC_PTR        p));
 
+#define GC_SUCCESS 0
+#define GC_DUPLICATE 1         /* Was already registered.              */
+#define GC_NO_MEMORY 2         /* Failure due to lack of memory.       */
+#define GC_UNIMPLEMENTED 3     /* Not yet implemented on the platform. */
+
+/* Structure representing the base of a thread stack.                  */
+struct GC_stack_base {
+       void * mem_base; /* Base of memory stack. */
+};
+
+/* Register the current thread, with the indicated stack base.         */
+/* Returns GC_SUCCESS on success, GC_DUPLICATE if already registered.  */
+/* On some platforms it returns GC_UNIMPLEMENTED.                      */
+GC_API int GC_register_my_thread GC_PROTO((struct GC_stack_base *));
+
 /* Returns 1 if the calling thread is registered with the GC, 0 otherwise */
 GC_API int GC_thread_is_registered GC_PROTO((void));
 
@@ -949,7 +975,9 @@ extern void GC_thr_init(void);      /* Needed for Solaris/X86       */
 #if defined(GC_WIN32_THREADS) && !defined(__CYGWIN32__) && !defined(__CYGWIN__)
 # include <windows.h>
 
+# ifdef GC_INSIDE_DLL
    BOOL WINAPI GC_DllMain(HINSTANCE inst, ULONG reason, LPVOID reserved);
+# endif
 
   /*
    * All threads must be created using GC_CreateThread, so that they will be
index 10c095e7d2fa25183c42563e4897ec0e62c0d872..ab77402e4cd466eb3e5bcc6c82d597a54386fa78 100644 (file)
@@ -1214,6 +1214,8 @@ extern long GC_large_alloc_warn_suppressed;
   extern GC_bool GC_world_stopped;
 #endif
 
+extern void (*GC_notify_event) GC_PROTO((GC_EventType));
+
 /* Operations */
 # ifndef abs
 #   define abs(x)  ((x) < 0? (-(x)) : (x))
index 4046a2666b846d404ddf5edc4aada8945f5a00fd..bcb89b6a1982ab53a0ee338491c61a35997d0ba2 100644 (file)
 
 /* We use the allocation lock to protect thread-related data structures. */
 
+#ifdef THREAD_LOCAL_ALLOC
+#   if CPP_WORDSZ == 64 && defined(ALIGN_DOUBLE)
+#      define GRANULARITY 16
+#      define NFREELISTS 49
+#   else
+#      define GRANULARITY 8
+#      define NFREELISTS 65
+#   endif
+    struct thread_local_freelists {
+       ptr_t ptrfree_freelists[NFREELISTS];
+       ptr_t normal_freelists[NFREELISTS];
+#      ifdef GC_GCJ_SUPPORT
+           ptr_t gcj_freelists[NFREELISTS];
+#      endif
+    };
+#endif
+
 /* The set of all known threads.  We intercept thread creation and     */
 /* joins.                                                              */
 /* Protected by allocation/GC lock.                                    */
@@ -60,23 +77,12 @@ typedef struct GC_Thread_Rep {
                                /* reclamation of any data it might     */
                                /* reference.                           */
 #   ifdef THREAD_LOCAL_ALLOC
-#      if CPP_WORDSZ == 64 && defined(ALIGN_DOUBLE)
-#          define GRANULARITY 16
-#          define NFREELISTS 49
-#      else
-#          define GRANULARITY 8
-#          define NFREELISTS 65
-#      endif
        /* The ith free list corresponds to size i*GRANULARITY */
 #      define INDEX_FROM_BYTES(n) ((ADD_SLOP(n) + GRANULARITY - 1)/GRANULARITY)
 #      define BYTES_FROM_INDEX(i) ((i) * GRANULARITY - EXTRA_BYTES)
 #      define SMALL_ENOUGH(bytes) (ADD_SLOP(bytes) <= \
                                    (NFREELISTS-1)*GRANULARITY)
-       ptr_t ptrfree_freelists[NFREELISTS];
-       ptr_t normal_freelists[NFREELISTS];
-#      ifdef GC_GCJ_SUPPORT
-         ptr_t gcj_freelists[NFREELISTS];
-#      endif
+       struct thread_local_freelists tlfs;
                /* Free lists contain either a pointer or a small count */
                /* reflecting the number of granules allocated at that  */
                /* size.                                                */
index 3fa00a8b063b998163cb1df527fe9a802ee5f6fc..480759c57b9a750d505e053ca2f29a99a5c2a770 100644 (file)
@@ -480,7 +480,7 @@ int GC_get_suspend_signal GC_PROTO(())
 #endif
 }
 
-int GC_get_restart_signal GC_PROTO(())
+int GC_get_thr_restart_signal GC_PROTO(())
 {
 #if defined(SIG_THR_RESTART) && defined(GC_PTHREADS) && !defined(GC_MACOSX_THREADS) && !defined(GC_OPENBSD_THREADS)
        return SIG_THR_RESTART;
index a8c8b330a36d3f81462b2933ffaad2262ff412ea..623a94e7c8c22fb4c670d9fbff4e12869e087ee9 100644 (file)
@@ -294,17 +294,17 @@ void GC_init_thread_local(GC_thread p)
        ABORT("Failed to set thread specific allocation pointers");
     }
     for (i = 1; i < NFREELISTS; ++i) {
-       p -> ptrfree_freelists[i] = (ptr_t)1;
-       p -> normal_freelists[i] = (ptr_t)1;
+       p -> tlfs.ptrfree_freelists[i] = (ptr_t)1;
+       p -> tlfs.normal_freelists[i] = (ptr_t)1;
 #      ifdef GC_GCJ_SUPPORT
-         p -> gcj_freelists[i] = (ptr_t)1;
+         p -> tlfs.gcj_freelists[i] = (ptr_t)1;
 #      endif
     }   
     /* Set up the size 0 free lists.   */
-    p -> ptrfree_freelists[0] = (ptr_t)(&size_zero_object);
-    p -> normal_freelists[0] = (ptr_t)(&size_zero_object);
+    p -> tlfs.ptrfree_freelists[0] = (ptr_t)(&size_zero_object);
+    p -> tlfs.normal_freelists[0] = (ptr_t)(&size_zero_object);
 #   ifdef GC_GCJ_SUPPORT
-        p -> gcj_freelists[0] = (ptr_t)(-1);
+       p -> tlfs.gcj_freelists[0] = (ptr_t)(-1);
 #   endif
 }
 
@@ -320,10 +320,10 @@ void GC_destroy_thread_local(GC_thread p)
 #   ifndef HANDLE_FORK
       GC_ASSERT(GC_getspecific(GC_thread_key) == (void *)p);
 #   endif
-    return_freelists(p -> ptrfree_freelists, GC_aobjfreelist);
-    return_freelists(p -> normal_freelists, GC_objfreelist);
+    return_freelists(p -> tlfs.ptrfree_freelists, GC_aobjfreelist);
+    return_freelists(p -> tlfs.normal_freelists, GC_objfreelist);
 #   ifdef GC_GCJ_SUPPORT
-       return_freelists(p -> gcj_freelists, GC_gcjobjfreelist);
+       return_freelists(p -> tlfs.gcj_freelists, GC_gcjobjfreelist);
 #   endif
 }
 
@@ -357,7 +357,7 @@ GC_PTR GC_local_malloc(size_t bytes)
          GC_ASSERT(tsd == (void *)GC_lookup_thread(pthread_self()));
          UNLOCK();
 #      endif
-       my_fl = ((GC_thread)tsd) -> normal_freelists + index;
+       my_fl = ((GC_thread)tsd) -> tlfs.normal_freelists + index;
        my_entry = *my_fl;
        if (EXPECT((word)my_entry >= HBLKSIZE, 1)) {
            ptr_t next = obj_link(my_entry);
@@ -384,7 +384,7 @@ GC_PTR GC_local_malloc_atomic(size_t bytes)
     } else {
        int index = INDEX_FROM_BYTES(bytes);
        ptr_t * my_fl = ((GC_thread)GC_getspecific(GC_thread_key))
-                       -> ptrfree_freelists + index;
+                       -> tlfs.ptrfree_freelists + index;
        ptr_t my_entry = *my_fl;
     
        if (EXPECT((word)my_entry >= HBLKSIZE, 1)) {
@@ -424,7 +424,7 @@ GC_PTR GC_local_gcj_malloc(size_t bytes,
     } else {
        int index = INDEX_FROM_BYTES(bytes);
        ptr_t * my_fl = ((GC_thread)GC_getspecific(GC_thread_key))
-                       -> gcj_freelists + index;
+                       -> tlfs.gcj_freelists + index;
        ptr_t my_entry = *my_fl;
        if (EXPECT((word)my_entry >= HBLKSIZE, 1)) {
            GC_PTR result = (GC_PTR)my_entry;
@@ -463,7 +463,7 @@ GC_PTR GC_local_gcj_malloc(size_t bytes,
 void * GC_local_gcj_fast_malloc(size_t lw, void * ptr_to_struct_containing_descr)
 {
        ptr_t * my_fl = ((GC_thread)GC_getspecific(GC_thread_key))
-               -> gcj_freelists + lw;
+               -> tlfs.gcj_freelists + lw;
        ptr_t my_entry = *my_fl;
 
     GC_ASSERT(GC_gcj_malloc_initialized);
@@ -666,12 +666,12 @@ void GC_mark_thread_local_free_lists(void)
     for (i = 0; i < THREAD_TABLE_SZ; ++i) {
       for (p = GC_threads[i]; 0 != p; p = p -> next) {
        for (j = 1; j < NFREELISTS; ++j) {
-         q = p -> ptrfree_freelists[j];
+         q = p -> tlfs.ptrfree_freelists[j];
          if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
-         q = p -> normal_freelists[j];
+         q = p -> tlfs.normal_freelists[j];
          if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
 #        ifdef GC_GCJ_SUPPORT
-           q = p -> gcj_freelists[j];
+           q = p -> tlfs.gcj_freelists[j];
            if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
 #        endif /* GC_GCJ_SUPPORT */
        }
@@ -1462,13 +1462,18 @@ void * GC_start_routine_head(void * arg, void *base_addr,
     return me;
 }
 
-int GC_thread_register_foreign (void *base_addr)
+void GC_allow_register_threads (void)
+{
+    /* No-op for GC pre-v7. */
+}
+
+int GC_register_my_thread (struct GC_stack_base *sb)
 {
     struct start_info si = { 0, }; /* stacked for legibility & locking */
     GC_thread me;
 
 #   ifdef DEBUG_THREADS
-        GC_printf1( "GC_thread_register_foreign %p\n", &si );
+        GC_printf1( "GC_register_my_thread %p\n", &si );
 #   endif
 
     si.flags = FOREIGN_THREAD;
@@ -1476,12 +1481,13 @@ int GC_thread_register_foreign (void *base_addr)
     if (!parallel_initialized) GC_init_parallel();
     LOCK();
     if (!GC_thr_initialized) GC_thr_init();
-
+    me = GC_lookup_thread(pthread_self());
     UNLOCK();
+    if (me != NULL)
+       return GC_DUPLICATE;
 
-    me = GC_start_routine_head(&si, base_addr, NULL, NULL);
-
-    return me != NULL;
+    (void)GC_start_routine_head(&si, sb -> mem_base, NULL, NULL);
+    return GC_SUCCESS;
 }
 
 void * GC_start_routine(void * arg)
index 8ca8fa3b3a21323a6480fe54843a5109624c97db..e67c514c7988a59a7fea854669ac86f397405f98 100644 (file)
@@ -642,10 +642,15 @@ int GC_thread_is_registered (void)
        return ptr ? 1 : 0;
 }
 
-int GC_thread_register_foreign (void *base_addr)
+void GC_allow_register_threads (void)
+{
+       /* No-op for GC pre-v7. */
+}
+
+int GC_register_my_thread (struct GC_stack_base *sb)
 {
        /* FIXME: */
-       return 0;
+       return GC_UNIMPLEMENTED;
 }
 
 void GC_register_altstack (void *stack, int stack_size, void *altstack, int altstack_size)
index a60363b4d6f7a89833cfc96a5897b6018d2e63c0..16a6fb6d003a0bdd7091fe7001b114482fdb826a 100644 (file)
@@ -85,6 +85,22 @@ int GC_thread_is_registered (void)
 #endif
 }
 
+void GC_allow_register_threads (void)
+{
+    /* No-op for GC pre-v7. */
+}
+
+int GC_register_my_thread (struct GC_stack_base *sb)
+{
+#   if defined(GC_DLL) || defined(GC_INSIDE_DLL)
+       /* Registered by DllMain. */
+       return GC_DUPLICATE;
+#   else
+       /* TODO: Implement. */
+       return GC_UNIMPLEMENTED;
+#   endif
+}
+
 void GC_register_altstack (void *stack, int stack_size, void *altstack, int altstack_size)
 {
 }
index 3e4f1827126c934eff6248b35044300786a71e25..8bd0fc03ce5c46c4b3c0eedfdd4f9741a34e8dde 100644 (file)
--- a/man/al.1
+++ b/man/al.1
@@ -4,7 +4,7 @@ al, al2 \- Mono Assembly Linker
 .SH SYNOPSIS
 .B al [option] [source-files]
 .SH DESCRIPTION
-AL is the Mono assembly linkder. 
+AL is the Mono assembly linker. 
 .PP
 This linker is used to put together assemblies from a collection of
 modules (.netmodule files), assembly manifest files and resources.
index b3e13db1f78152f6d52bc5ab5d14eb196738504b..5783b6860872225fb2571b8abcb51abb7867c3f6 100644 (file)
@@ -124,6 +124,16 @@ This is currently an experimental feature as it is not complete.
 This instructs Mono to precompile code that has historically not been
 precompiled with AOT.   
 .TP
+.I data-outfile=FILE.dll.aotdata
+.Sp
+This instructs the AOT code generator to output certain data
+constructs into a separate file.   This can reduce the executable
+images some five to twenty percent.   Developers need to then ship the
+resulting aotdata as a resource and register a hook to load the data
+on demand by using the 
+.I mono_install_load_aot_data_hook
+method.
+.TP
 .I direct-pinvoke
 .Sp
 When this option is specified, P/Invoke methods are invoked directly
@@ -139,7 +149,8 @@ only supported by the ARM backend. In LLVM mode, this triple is passed on to the
 llc compiler.
 .TP
 .I nimt-trampolines=[number]
-When compiling in full aot mode, the IMT trampolines must be precreated
+When compiling in full aot mthis data at startup
+usingode, the IMT trampolines must be precreated
 in the AOT image.  You can add additional method trampolines with this argument.
 Defaults to 128.
 .TP
@@ -602,6 +613,16 @@ Currently this option is only supported on Linux.
 The maintainer options are only used by those developing the runtime
 itself, and not typically of interest to runtime users or developers.
 .TP
+\fB--bisect=optimization:filename\fR
+This flag is used by the automatic optimization bug bisector.  It
+takes an optimization flag and a filename of a file containing a list
+of full method names, one per line.  When it compiles one of the
+methods in the file it will use the optimization given, in addition to
+the optimizations that are otherwise enabled.  Note that if the
+optimization is enabled by default, you should disable it with `-O`,
+otherwise it will just apply to every method, whether it's in the file
+or not.
+.TP
 \fB--break method\fR
 Inserts a breakpoint before the method whose name is `method'
 (namespace.class:methodname).  Use `Main' as method name to insert a
@@ -931,7 +952,12 @@ by setting the option
 Turns off the garbage collection in Mono.  This should be only used
 for debugging purposes
 .TP
-\fBLVM_COUNT\fR
+\fBHTTP_PROXY\fR
+(Also \fBhttp_proxy\fR) If set, web requests using the Mono
+Class Library will be automatically proxied through the given URL.
+Not supported on Windows, Mac OS, iOS or Android. See also \fBNO_PROXY\fR.
+.TP
+\fBLLVM_COUNT\fR
 When Mono is compiled with LLVM support, this instructs the runtime to
 stop using LLVM after the specified number of methods are JITed.
 This is a tool used in diagnostics to help isolate problems in the
@@ -999,7 +1025,12 @@ where V is the architecture number 4, 5, 6, 7 and the options can be currently b
 .TP
 \fBMONO_ARM_FORCE_SOFT_FLOAT\fR
 When Mono is built with a soft float fallback on ARM and this variable is set to
-"1", Mono will always emit soft float code, even if a VFP unit is detected.
+"1", Mono will always emit soft float code, even if a VFP unit is
+detected.
+.TP
+\fBMONO_DARWIN_WATCHER_MAXFDS\fR
+This is a debugging aid used to force limits on the FileSystemWatcher
+implementation in Darwin.   There is no limit by default.
 .TP
 \fBMONO_DISABLE_AIO\fR
 If set, tells mono NOT to attempt using native asynchronous I/O services. In
@@ -1043,6 +1074,20 @@ For platforms that do not otherwise have a way of obtaining random bytes
 this can be set to the name of a file system socket on which an egd or
 prngd daemon is listening.
 .TP
+\fBMONO_ENABLE_COOP\fR
+This makes the Mono runtime and the SGen garbage collector run in cooperative
+mode as opposed to run on preemptive mode.   Preemptive mode is the mode
+that Mono has used historically, going back to the Boehm days, where the
+garbage collector would run at any point and suspend execution of all 
+threads as required to perform a garbage collection.  The cooperative mode
+on the other hand requires the cooperation of all threads to stop at a 
+safe point.   This makes for an easier to debug garbage collector.   As
+of Mono 4.3.0 it is a work in progress, and while it works, it has not
+been used extensively.   This option enabled the feature and allows us to
+find spots that need to be tuned for this mode of operation.   Alternatively,
+this mode can be enabled at compile time by using the --with-cooperative-gc
+flag when calling configure.
+.TP
 \fBMONO_ENABLE_SHM\fR
 Unix only: Enable support for cross-process handles.  Cross-process
 handles are used to expose process handles, thread handles, named
@@ -1341,12 +1386,13 @@ word, which is checked on each minor collection. Can be used to detect/debug
 heap corruption issues.
 
 .TP
-\fBdo-not-finalize\fR
+\fBdo-not-finalize(=\fIclasses\fB)\fR
 If enabled, finalizers will not be run.  Everything else will be
 unaffected: finalizable objects will still be put into the
 finalization queue where they survive until they're scheduled to
 finalize.  Once they're not in the queue anymore they will be
-collected regularly.
+collected regularly.  If a list of comma-separated class names is
+given, only objects from those classes will not be finalized.
 
 .TP
 \fBlog-finalizers\fR
@@ -1532,6 +1578,13 @@ ftps, smtps...).  The default is 'nocheck', which performs no revocation check
 at all. The other possible values are 'offline', which performs CRL check (not
 implemented yet) and 'online' which uses OCSP and CRL to verify the revocation
 status (not implemented yet).
+.TP
+\fBNO_PROXY\fR
+(Also \fBno_proxy\fR) If both \fBHTTP_PROXY\fR and \fBNO_PROXY\fR are
+set, \fBNO_PROXY\fR will be treated as a comma-separated list of "bypass" domains
+which will not be sent through the proxy. Domains in \fBNO_PROXY\fR may contain
+wildcards, as in "*.mono-project.com" or "build????.local". Not supported on
+Windows, Mac OS, iOS or Android.
 .SH ENVIRONMENT VARIABLES FOR DEBUGGING
 .TP
 \fBMONO_ASPNET_NODELETE\fR
@@ -1672,7 +1725,7 @@ since a live process contains more information than a core file.
 This option will suspend the program when an exception occurs.
 .TP
 \fBsuspend-on-unhandled\fR
-This option will suspend the program when an unhadled exception occurs.
+This option will suspend the program when an unhandled exception occurs.
 .ne
 .RE
 .TP
index b449eb1d304867a29d55e98842367bed64d5c70c..777182618cb16484fd4ee0e18b128ea3aa03bf9a 100644 (file)
@@ -27,9 +27,9 @@ The Private Key File (pvk) that contains the private key used to digitally
 sign the PE executable. This private key must match the public key inside the
 publisher X.509 certificate.
 .TP
-.I "-a md5 | sha1"
+.I "-a sha1 | md5"
 The hash algorithm used in the digital signature of the PE executable. The 
-default algorithm is MD5.
+default algorithm is SHA1.
 .TP
 .I "-$ individual | commercial"
 Add information about the publisher, i.e. if the signature is generated by an
index 35ae9f963f528d93e7a519e3423db8e2f474e19e..f6127157641bbf50f43ca438ecb8044ff927b3fa 100644 (file)
@@ -11,6 +11,8 @@ monotouch_SUBDIRS := build class
 monotouch_watch_SUBDIRS := build class
 monotouch_tv_SUBDIRS := build class
 monotouch_runtime_SUBDIRS := build class
+monotouch_watch_runtime_SUBDIRS := build class
+monotouch_tv_runtime_SUBDIRS := build class
 xammac_SUBDIRS := build class
 mobile_SUBDIRS := build class
 mobile_static_SUBDIRS := build class
@@ -65,6 +67,8 @@ $(_boot_:%=profile-do--monotouch--%):         profile-do--monotouch--%:
 $(_boot_:%=profile-do--monotouch_watch--%):   profile-do--monotouch_watch--%:   profile-do--build--%
 $(_boot_:%=profile-do--monotouch_tv--%):      profile-do--monotouch_tv--%:      profile-do--build--%
 $(_boot_:%=profile-do--monotouch_runtime--%):  profile-do--monotouch_runtime--%:  profile-do--build--%
+$(_boot_:%=profile-do--monotouch_watch_runtime--%):  profile-do--monotouch_watch_runtime--%:  profile-do--build--%
+$(_boot_:%=profile-do--monotouch_tv_runtime--%):     profile-do--monotouch_tv_runtime--%:     profile-do--build--%
 $(_boot_:%=profile-do--xammac--%):            profile-do--xammac--%:            profile-do--build--%
 $(_boot_:%=profile-do--xammac_net_4_5--%):    profile-do--xammac_net_4_5--%:           profile-do--build--%
 $(_boot_:%=profile-do--mobile--%):            profile-do--mobile--%:         profile-do--build--%
index bdeba2bac4e5701b52e7f365c5fcea413a2a0164..39d5443914fe7284745307a13b0c1e65b1c15c1e 100644 (file)
@@ -1,42 +1,4 @@
-#! -*- makefile -*-
+include $(topdir)/build/profiles/monotouch_runtime.make
 
-BOOTSTRAP_PROFILE = build
-
-BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
-MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
-
-# Use system resgen as we don't want local System.Windows.Forms dependency
-RESGEN := $(dir $(shell which $(EXTERNAL_MCS)))resgen2
-
-profile-check:
-       @:
-
-DEFAULT_REFERENCES = -r:mscorlib.dll
-
-PROFILE_MCS_FLAGS = \
-       -d:NET_1_1 \
-       -d:NET_2_0 \
-       -d:NET_2_1 \
-       -d:NET_3_5 \
-       -d:NET_4_0 \
-       -d:NET_4_5 \
-       -d:MOBILE,MOBILE_LEGACY \
-       -d:MONO \
-       -d:DISABLE_CAS_USE \
-       -d:MONOTOUCH \
-       -d:DISABLE_REMOTING \
-       -d:DISABLE_COM \
-       -d:FULL_AOT_RUNTIME \
-       -nowarn:1699 \
-       -nostdlib \
-       -lib:$(topdir)/class/lib/$(PROFILE) \
-       $(DEFAULT_REFERENCES) \
-       $(PLATFORM_DEBUG_FLAGS)
-
-FRAMEWORK_VERSION = 2.1
-NO_TEST = yes
-
-# the tuner takes care of the install
-NO_INSTALL = yes
-MOBILE_STATIC = yes
-MOBILE_PROFILE = yes
+PROFILE_MCS_FLAGS += \
+       -d:FULL_AOT_RUNTIME
index 8f42ec8acbe599b29d7311ddcdfab8c0202d7b6a..7e963cb73c0e257ef02707a6f868c3259f9bd882 100644 (file)
@@ -14,7 +14,25 @@ profile-check:
        @:
 
 DEFAULT_REFERENCES = -r:mscorlib.dll
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE  -d:MOBILE,MOBILE_LEGACY -d:MONOTOUCH -D:DISABLE_REMOTING -d:DISABLE_COM -nowarn:1699 -nostdlib -lib:$(topdir)/class/lib/$(PROFILE) $(DEFAULT_REFERENCES) $(PLATFORM_DEBUG_FLAGS)
+PROFILE_MCS_FLAGS = \
+       -d:NET_1_1 \
+       -d:NET_2_0 \
+       -d:NET_2_1 \
+       -d:NET_3_5 \
+       -d:NET_4_0 \
+       -d:NET_4_5 \
+       -d:MOBILE,MOBILE_LEGACY \
+       -d:MONO \
+       -d:DISABLE_CAS_USE \
+       -d:MONOTOUCH \
+       -d:DISABLE_REMOTING \
+       -d:DISABLE_COM \
+       -d:FEATURE_INTERCEPTABLE_THREADPOOL_CALLBACK \
+       -nowarn:1699 \
+       -nostdlib \
+       -lib:$(topdir)/class/lib/$(PROFILE) \
+       $(DEFAULT_REFERENCES) \
+       $(PLATFORM_DEBUG_FLAGS)
 
 FRAMEWORK_VERSION = 2.1
 
index b546e50c167aa20417d7cd6b1be9cc342890c34c..a375281243adff5dcea255507337a9b146136a53 100644 (file)
@@ -2,3 +2,8 @@ include $(topdir)/build/profiles/monotouch.make
 
 PROFILE_MCS_FLAGS += \
        -d:MONOTOUCH_TV
+
+NO_THREAD_ABORT=1
+NO_THREAD_SUSPEND_RESUME=1
+NO_MULTIPLE_APPDOMAINS=1
+NO_PROCESS_START=1
diff --git a/mcs/build/profiles/monotouch_tv_runtime.make b/mcs/build/profiles/monotouch_tv_runtime.make
new file mode 100644 (file)
index 0000000..552442a
--- /dev/null
@@ -0,0 +1,10 @@
+include $(topdir)/build/profiles/monotouch_runtime.make
+
+PROFILE_MCS_FLAGS += \
+       -d:MONOTOUCH_TV
+
+NO_THREAD_ABORT=1
+NO_THREAD_SUSPEND_RESUME=1
+# The binding generator (btv) still needs to execute processes,
+# so we need a System.dll that can do that.
+#NO_PROCESS_START=1
index eb2880175adf03f26a21f8325ec7dc188f79d43a..0242c20bf515ca05121382763c7a25f3d1d9e86d 100644 (file)
@@ -2,3 +2,8 @@ include $(topdir)/build/profiles/monotouch.make
 
 PROFILE_MCS_FLAGS += \
        -d:MONOTOUCH_WATCH
+
+NO_THREAD_ABORT=1
+NO_THREAD_SUSPEND_RESUME=1
+NO_MULTIPLE_APPDOMAINS=1
+NO_PROCESS_START=1
diff --git a/mcs/build/profiles/monotouch_watch_runtime.make b/mcs/build/profiles/monotouch_watch_runtime.make
new file mode 100644 (file)
index 0000000..7b3eb80
--- /dev/null
@@ -0,0 +1,10 @@
+include $(topdir)/build/profiles/monotouch_runtime.make
+
+PROFILE_MCS_FLAGS += \
+       -d:MONOTOUCH_WATCH
+
+NO_THREAD_ABORT=1
+NO_THREAD_SUSPEND_RESUME=1
+# The binding generator (bwatch) still needs to execute processes,
+# so we need a System.dll that can do that.
+#NO_PROCESS_START=1
index cbe7d38b210345b3879f995758d43bd647fba655..84a9389d478fc25b6562b3451b842157cbe3e4c7 100644 (file)
@@ -23,6 +23,7 @@ PROFILE_MCS_FLAGS = \
        -d:MOBILE \
        -d:MOBILE_DYNAMIC \
        -d:XAMMAC \
+       -d:FEATURE_INTERCEPTABLE_THREADPOOL_CALLBACK \
        -nowarn:1699 \
        -nostdlib \
        -lib:$(topdir)/class/lib/$(PROFILE) \
index 3a449bf96814ab9c1666ba2f1a98d6c9c45b401d..b64f0a4d93a7b612c80c05f9d021471ed35500b5 100644 (file)
@@ -1,5 +1,10 @@
 include $(topdir)/build/profiles/net_4_x.make
-PROFILE_MCS_FLAGS += -d:NO_SYSTEM_DRAWING_DEPENDENCY -d:NO_WINFORMS_DEPENDENCY -d:NO_SYSTEM_WEB_DEPENDENCY -d:XAMMAC_4_5
+PROFILE_MCS_FLAGS += \
+       -d:FEATURE_INTERCEPTABLE_THREADPOOL_CALLBACK \
+       -d:NO_SYSTEM_DRAWING_DEPENDENCY \
+       -d:NO_WINFORMS_DEPENDENCY \
+       -d:NO_SYSTEM_WEB_DEPENDENCY \
+       -d:XAMMAC_4_5
 XAMMAC_4_5=1
 NO_WINDOWS_BASE=1
 NO_SYSTEM_WEB_DEPENDENCY=1
diff --git a/mcs/class/Accessibility/Accessibility-net_4_5.csproj b/mcs/class/Accessibility/Accessibility-net_4_5.csproj
deleted file mode 100644 (file)
index db41186..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FACE8136-C95A-4788-90B2-DB0ECF7A020A}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Accessibility</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Accessibility\IAccessible.cs" />\r
-    <Compile Include="Accessibility\IAccessibleHandler.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_5.csproj b/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_5.csproj
deleted file mode 100644 (file)
index 5bc143a..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4399F601-CF0A-4D5B-9FCB-2EFB8A5D982E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlBuiltInValidationProvider.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlCompileContext.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlConfig.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlException.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlFilteredXmlReader.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlReader.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlRelaxngSupport.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlSimplified.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlStructures.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlValidatingReader.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlValidationProvider.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlValidator.cs" />\r
-    <Compile Include="Commons.Xml.Nvdl\NvdlXsdSupport.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng.Derivative\RdpContentType.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng.Derivative\RdpNameClasses.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng.Derivative\RdpObjects.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng.Derivative\RdpPatterns.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng.Derivative\Util.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng.Inference\RelaxngInference.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng.Rnc\RncTokenizer.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng.Rnc\RncWriter.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng.Rnc\XmlChar.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\Misc.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\RelaxngDatatype.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\RelaxngDatatypeProvider.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\RelaxngDefaultDatatypes.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\RelaxngException.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\RelaxngGrammar.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\RelaxngMergedProvider.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\RelaxngNameClass.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\RelaxngPattern.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\RelaxngPatternType.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\RelaxngReader.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\RelaxngValidatingReader.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng\XsdDatatypeProvider.cs" />\r
-    <Compile Include="Commons.Xml\XmlDefaultReader.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng.Rnc\RncParser.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/relaxng.rng">\r
-      <LogicalName>relaxng.rng</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-tests-net_4_5.csproj b/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 1eb68a2..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8017F2F8-5276-411F-A2C8-581BA6C9ED17}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <OutputPath>bin\Debug\Commons.Xml.Relaxng-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Commons.Xml.Relaxng_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\NvdlValidatingReaderTests.cs" />\r
-    <Compile Include="Test\RdpPatternTests.cs" />\r
-    <Compile Include="Test\RelaxngDatatypeProviderTests.cs" />\r
-    <Compile Include="Test\RelaxngReaderTests.cs" />\r
-    <Compile Include="Test\RelaxngValidatingReaderTests.cs" />\r
-    <Compile Include="Test\RncTests.cs" />\r
-    <Compile Include="Test\XsdDatatypeTests.cs" />\r
-    <Compile Include="Commons.Xml.Relaxng.Rnc\RncParser.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_5.csproj">\r
-      <Project>{4399F601-CF0A-4D5B-9FCB-2EFB8A5D982E}</Project>\r
-      <Name>Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/relaxng.rng">\r
-      <LogicalName>relaxng.rng</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Cscompmgd/Cscompmgd-net_4_5.csproj b/mcs/class/Cscompmgd/Cscompmgd-net_4_5.csproj
deleted file mode 100644 (file)
index d62e767..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7CC1624B-EBC8-45E6-A30B-951A31ADC150}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>cscompmgd</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.CSharp\Compiler.cs" />\r
-    <Compile Include="Microsoft.CSharp\CompilerError.cs" />\r
-    <Compile Include="Microsoft.CSharp\ErrorLevel.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Cscompmgd/Cscompmgd-tests-net_4_5.csproj b/mcs/class/Cscompmgd/Cscompmgd-tests-net_4_5.csproj
deleted file mode 100644 (file)
index dc9bf77..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{843703E1-7EE5-4D68-85CD-FBDA426C30F1}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <OutputPath>bin\Debug\Cscompmgd-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Cscompmgd_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Microsoft.CSharp\CompilerTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Cscompmgd\Cscompmgd-net_4_5.csproj">\r
-      <Project>{7CC1624B-EBC8-45E6-A30B-951A31ADC150}</Project>\r
-      <Name>Cscompmgd\Cscompmgd-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/CustomMarshalers/CustomMarshalers-net_4_5.csproj b/mcs/class/CustomMarshalers/CustomMarshalers-net_4_5.csproj
deleted file mode 100644 (file)
index cc675d2..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E957A4A5-677B-44C9-93A7-C11CE514C07B}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>CustomMarshalers</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include=".\System.Runtime.InteropServices.CustomMarshalers\EnumerableToDispatchMarshaler.cs" />\r
-    <Compile Include=".\System.Runtime.InteropServices.CustomMarshalers\EnumeratorToEnumVariantMarshaler.cs" />\r
-    <Compile Include=".\System.Runtime.InteropServices.CustomMarshalers\ExpandoToDispatchExMarshaler.cs" />\r
-    <Compile Include=".\System.Runtime.InteropServices.CustomMarshalers\TypeToTypeInfoMarshaler.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 960e47d285c5d65b19d6997c186ae6d122a2c26c..2f8847d707a580082df4139a81a1acf16835f4b2 100644 (file)
@@ -2,46 +2,7 @@ MCS_BUILD_DIR = ../../build
 
 thisdir = class/Facades
 
-monotouch_PARALLEL_SUBDIRS = System.Collections.Concurrent System.Collections System.ComponentModel.Annotations System.ComponentModel.EventBasedAsync System.ComponentModel \
-       System.Diagnostics.Contracts System.Diagnostics.Debug System.Diagnostics.Tracing System.Diagnostics.Tools System.Dynamic.Runtime System.Globalization System.IO System.Linq.Expressions \
-       System.Linq.Parallel System.Linq.Queryable System.Linq System.Net.NetworkInformation System.Net.Primitives System.Net.Requests System.ObjectModel \
-       System.Reflection.Extensions System.Reflection.Primitives System.Reflection System.Resources.ResourceManager System.Runtime.Extensions \
-       System.Runtime.InteropServices System.Runtime.InteropServices.WindowsRuntime System.Runtime.Numerics System.Runtime.Serialization.Json \
-       System.Runtime.Serialization.Primitives System.Runtime.Serialization.Xml System.Runtime System.Security.Principal System.ServiceModel.Http \
-       System.ServiceModel.Primitives System.ServiceModel.Security System.Text.Encoding.Extensions System.Text.Encoding System.Text.RegularExpressions System.Threading.Tasks.Parallel \
-       System.Threading.Tasks System.Threading.Timer System.Threading System.Xml.ReaderWriter System.Xml.XDocument System.Xml.XmlSerializer \
-       System.Runtime.Handles System.ServiceModel.Duplex System.ServiceModel.NetTcp \
-       Microsoft.Win32.Primitives Microsoft.Win32.Registry System.AppContext System.Collections.NonGeneric System.Collections.Specialized System.ComponentModel.Primitives \
-       System.ComponentModel.TypeConverter System.Console System.Data.Common System.Data.SqlClient System.Diagnostics.FileVersionInfo \
-       System.Diagnostics.Process System.Diagnostics.TextWriterTraceListener System.Diagnostics.TraceEvent System.Diagnostics.TraceSource System.Globalization.Calendars \
-       System.IO.Compression System.IO.Compression.ZipFile System.IO.FileSystem System.IO.FileSystem.DriveInfo System.IO.FileSystem.Primitives \
-       System.IO.IsolatedStorage System.IO.MemoryMappedFiles System.IO.UnmanagedMemoryStream System.Net.AuthenticationManager System.Net.Cache \
-       System.Net.HttpListener System.Net.Mail System.Net.NameResolution System.Net.Security System.Net.ServicePoint System.Net.Sockets \
-       System.Net.Utilities System.Net.WebHeaderCollection System.Net.WebSockets System.Net.WebSockets.Client System.Resources.ReaderWriter System.Runtime.CompilerServices.VisualC \
-       System.Security.AccessControl System.Security.Claims System.Security.Cryptography.DeriveBytes System.Security.Cryptography.Encoding System.Security.Cryptography.Encryption \
-       System.Security.Cryptography.Encryption.Aes System.Security.Cryptography.Encryption.ECDiffieHellman System.Security.Cryptography.Encryption.ECDsa System.Security.Cryptography.Hashing \
-       System.Security.Cryptography.Hashing.Algorithms System.Security.Cryptography.RSA System.Security.Cryptography.RandomNumberGenerator \
-       System.Security.Cryptography.X509Certificates System.Security.Principal.Windows System.Threading.Thread System.Threading.ThreadPool \
-       System.Xml.XPath System.Xml.XmlDocument System.Xml.Xsl.Primitives Microsoft.Win32.Registry.AccessControl System.Diagnostics.StackTrace System.Globalization.Extensions \
-       System.IO.FileSystem.AccessControl System.Private.CoreLib.InteropServices System.Private.CoreLib.Threading System.Reflection.TypeExtensions \
-       System.Security.SecureString System.Threading.AccessControl System.Threading.Overlapped System.Xml.XPath.XDocument
-
-reflection_PARALLEL_SUBDIRS = System.Reflection.Emit.ILGeneration System.Reflection.Emit.Lightweight System.Reflection.Emit
-
-mobile_static_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS)
-
-net_4_x_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS) $(reflection_PARALLEL_SUBDIRS) System.Diagnostics.PerformanceCounter \
-       System.IO.FileSystem.Watcher System.IO.Pipes System.Security.Cryptography.ProtectedData System.ServiceProcess.ServiceController System.Net.Http.WebRequestHandler
-
-monodroid_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS) $(reflection_PARALLEL_SUBDIRS)
-
-xammac_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS) $(reflection_PARALLEL_SUBDIRS)
-xammac_net_4_5_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS) $(reflection_PARALLEL_SUBDIRS)
-
-monotouch_watch_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS)
-monotouch_tv_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS)
-
-PROFILE_PARALLEL_SUBDIRS = $(net_4_x_PARALLEL_SUBDIRS)
+include subdirs.make
 
 #OVERRIDE_TARGET_ALL = yes
 
@@ -68,6 +29,7 @@ include $(MCS_BUILD_DIR)/rules.make
 dist-local: dist-default
 
 DIST_SUBDIRS = $(net_4_x_PARALLEL_SUBDIRS)
+DISTFILES=subdirs.make
 
 doc-update-local:
        @echo "not doing docs"
diff --git a/mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent-net_4_5.csproj b/mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent-net_4_5.csproj
deleted file mode 100644 (file)
index f85c52d..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{675F041D-3D9F-4195-B713-8BD1CA16E16E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Collections.Concurrent</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Collections/System.Collections-net_4_5.csproj b/mcs/class/Facades/System.Collections/System.Collections-net_4_5.csproj
deleted file mode 100644 (file)
index ef3f1ce..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{64CA4DB7-C8DA-49CC-A114-1C20038A0469}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Collections</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations-net_4_5.csproj b/mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations-net_4_5.csproj
deleted file mode 100644 (file)
index 5a472d8..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7B94E990-3BC4-44B6-98FF-102A3459AF92}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ComponentModel.Annotations</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync-net_4_5.csproj b/mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync-net_4_5.csproj
deleted file mode 100644 (file)
index d58e278..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F550AB44-48A5-47F1-8EBB-5BA1CAF3366E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ComponentModel.EventBasedAsync</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.ComponentModel/System.ComponentModel-net_4_5.csproj b/mcs/class/Facades/System.ComponentModel/System.ComponentModel-net_4_5.csproj
deleted file mode 100644 (file)
index ecf9c35..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A13F59CB-1F71-4ECE-82A1-9A3D6760E5D2}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ComponentModel</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts-net_4_5.csproj b/mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts-net_4_5.csproj
deleted file mode 100644 (file)
index e3fd280..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BDCFB32D-9CCE-4A2F-ABBB-490C3D49BBE0}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Diagnostics.Contracts</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug-net_4_5.csproj b/mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug-net_4_5.csproj
deleted file mode 100644 (file)
index 9e3361b..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{37D2FA30-09B8-4E38-982A-1890D7275F42}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Diagnostics.Debug</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools-net_4_5.csproj b/mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools-net_4_5.csproj
deleted file mode 100644 (file)
index f3b0dfd..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3A324F98-B121-44F2-B1AD-6DC4D3D27A89}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Diagnostics.Tools</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Diagnostics.Tracing/System.Diagnostics.Tracing-net_4_5.csproj b/mcs/class/Facades/System.Diagnostics.Tracing/System.Diagnostics.Tracing-net_4_5.csproj
deleted file mode 100644 (file)
index f3ae6df..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{34C2ACED-602C-41CD-AB40-3813B3420625}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Diagnostics.Tracing</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime-net_4_5.csproj b/mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime-net_4_5.csproj
deleted file mode 100644 (file)
index ca7f89b..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6E17967A-FBC5-4F44-AE4F-CBE1E70F862E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Dynamic.Runtime</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Globalization/System.Globalization-net_4_5.csproj b/mcs/class/Facades/System.Globalization/System.Globalization-net_4_5.csproj
deleted file mode 100644 (file)
index aba8b9f..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5DF5E924-6F3B-42DB-A3E0-1FB63028F189}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Globalization</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.IO.Compression/AssemblyInfo.cs b/mcs/class/Facades/System.IO.Compression/AssemblyInfo.cs
deleted file mode 100644 (file)
index 47a9c1f..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-// 
-// Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-[assembly: AssemblyTitle ("System.IO.Compression.dll")]
-[assembly: AssemblyDescription ("System.IO.Compression.dll")]
-[assembly: AssemblyDefaultAlias ("System.IO.Compression.dll")]
-[assembly: AssemblyCompany ("Xamarin, Inc.")]
-[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
-[assembly: AssemblyCopyright ("Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)")]
-[assembly: AssemblyVersion ("4.0.0.0")]
-[assembly: AssemblyInformationalVersion ("4.0.0.0")]
-[assembly: AssemblyFileVersion ("4.0.0.0")]
-[assembly: AssemblyDelaySign (true)]
-[assembly: AssemblyKeyFile ("../../msfinal.pub")]
-
-[assembly: ReferenceAssembly]
-
-
diff --git a/mcs/class/Facades/System.IO.Compression/Makefile b/mcs/class/Facades/System.IO.Compression/Makefile
deleted file mode 100644 (file)
index 282611a..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-MCS_BUILD_DIR = ../../../build
-
-thisdir = class/Facades/System.IO.Compression
-SUBDIRS = 
-include $(MCS_BUILD_DIR)/rules.make
-
-LIBRARY_SUBDIR = Facades
-LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
-
-LIBRARY = System.IO.Compression.dll
-
-KEY_FILE = ../../msfinal.pub
-SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
-LIB_REFS = System
-LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.IO.Compression.dll
-
-PLATFORM_DEBUG_FLAGS =
-
-NO_TEST = yes
-
-include $(MCS_BUILD_DIR)/library.make
-
-
diff --git a/mcs/class/Facades/System.IO.Compression/System.IO.Compression-net_4_x.csproj b/mcs/class/Facades/System.IO.Compression/System.IO.Compression-net_4_x.csproj
deleted file mode 100644 (file)
index 4c8cd21..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DA6DA8FE-0BF4-43C5-9BF8-896409EBDA70}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699,1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_x/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.IO.Compression</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699,1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699,1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_x.csproj">\r
-      <Project>{2CA6026B-2DC8-4C4C-A12C-1E8234049DB7}</Project>\r
-      <Name>corlib-net_4_x</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_x.csproj">\r
-      <Project>{2CA6026B-2DC8-4C4C-A12C-1E8234049DB7}</Project>\r
-      <Name>corlib-net_4_x</Name>\r
-    </ProjectReference>\r
-    <Reference Include="System.IO.Compression.dll">\r
-      <SpecificVersion>False</SpecificVersion>\r
-      <HintPath>System.IO.Compression.dll</HintPath>\r
-      <Private>False</Private>\r
-    </Reference>\r
-    <ProjectReference Include="../../System/System-net_4_x.csproj">\r
-      <Project>{2762E921-91A8-4C87-91E9-BA628013F753}</Project>\r
-      <Name>System-net_4_x</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.IO.Compression/System.IO.Compression.dll.sources b/mcs/class/Facades/System.IO.Compression/System.IO.Compression.dll.sources
deleted file mode 100644 (file)
index 8e33d4d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-TypeForwarders.cs
-AssemblyInfo.cs
-
diff --git a/mcs/class/Facades/System.IO.Compression/TypeForwarders.cs b/mcs/class/Facades/System.IO.Compression/TypeForwarders.cs
deleted file mode 100644 (file)
index 6747adb..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-// 
-// Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Compression.CompressionLevel))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Compression.CompressionMode))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Compression.DeflateStream))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Compression.GZipStream))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Compression.ZipArchive))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Compression.ZipArchiveEntry))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Compression.ZipArchiveMode))]
-
-
diff --git a/mcs/class/Facades/System.IO/System.IO-net_4_5.csproj b/mcs/class/Facades/System.IO/System.IO-net_4_5.csproj
deleted file mode 100644 (file)
index 568f694..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{188DBB84-D591-48CC-B8B2-E7E12A0EE0BE}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.IO</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions-net_4_5.csproj b/mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions-net_4_5.csproj
deleted file mode 100644 (file)
index 38174e5..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FD626146-F48C-4E29-9D4C-872FB5AEA5C1}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Linq.Expressions</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel-net_4_5.csproj b/mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel-net_4_5.csproj
deleted file mode 100644 (file)
index 71c2a1c..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F8EB53BB-0BD5-4775-9EE7-2D4C7403B898}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Linq.Parallel</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable-net_4_5.csproj b/mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable-net_4_5.csproj
deleted file mode 100644 (file)
index c762099..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C2025B80-1555-4CBE-8982-8E0DFCFC9F16}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Linq.Queryable</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Linq/System.Linq-net_4_5.csproj b/mcs/class/Facades/System.Linq/System.Linq-net_4_5.csproj
deleted file mode 100644 (file)
index d742875..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F97C589C-5F94-4C4F-B465-13432ABF4744}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Linq</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation-net_4_5.csproj b/mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation-net_4_5.csproj
deleted file mode 100644 (file)
index 8e4028e..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A2069635-0635-40BA-B82C-DC458AFB3A9E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Net.NetworkInformation</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Net.Primitives/System.Net.Primitives-net_4_5.csproj b/mcs/class/Facades/System.Net.Primitives/System.Net.Primitives-net_4_5.csproj
deleted file mode 100644 (file)
index 6982431..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D5541A16-CFFD-4699-BC6D-EE859A38737F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Net.Primitives</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Net.Requests/System.Net.Requests-net_4_5.csproj b/mcs/class/Facades/System.Net.Requests/System.Net.Requests-net_4_5.csproj
deleted file mode 100644 (file)
index 2f80022..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5DC73C5F-E943-473B-BE4D-0EB115C3F1AF}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Net.Requests</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.ObjectModel/System.ObjectModel-net_4_5.csproj b/mcs/class/Facades/System.ObjectModel/System.ObjectModel-net_4_5.csproj
deleted file mode 100644 (file)
index a65c450..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9A11D4E5-5C4C-471C-9912-AAB6C9851CF9}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ObjectModel</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Reflection.Emit.ILGeneration/System.Reflection.Emit.ILGeneration-net_4_5.csproj b/mcs/class/Facades/System.Reflection.Emit.ILGeneration/System.Reflection.Emit.ILGeneration-net_4_5.csproj
deleted file mode 100644 (file)
index 53fece0..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{71E1B60C-1AF2-4AE8-B5F5-118AC38B64DB}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reflection.Emit.ILGeneration</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Reflection.Emit.Lightweight/System.Reflection.Emit.Lightweight-net_4_5.csproj b/mcs/class/Facades/System.Reflection.Emit.Lightweight/System.Reflection.Emit.Lightweight-net_4_5.csproj
deleted file mode 100644 (file)
index a1a8005..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{56035DDD-F2DD-46ED-88EF-DF8636198D36}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reflection.Emit.Lightweight</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Reflection.Emit/System.Reflection.Emit-net_4_5.csproj b/mcs/class/Facades/System.Reflection.Emit/System.Reflection.Emit-net_4_5.csproj
deleted file mode 100644 (file)
index 99ca163..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6ABB9197-8B7B-4566-B42A-5B7A8CDE3D4E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reflection.Emit</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions-net_4_5.csproj b/mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions-net_4_5.csproj
deleted file mode 100644 (file)
index ad54afb..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{670D61FE-7031-4734-87FB-E7DC401F7D99}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reflection.Extensions</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives-net_4_5.csproj b/mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives-net_4_5.csproj
deleted file mode 100644 (file)
index 3b1cf96..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{080E1A07-4A13-4D86-966E-4BED488972E9}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reflection.Primitives</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Reflection/System.Reflection-net_4_5.csproj b/mcs/class/Facades/System.Reflection/System.Reflection-net_4_5.csproj
deleted file mode 100644 (file)
index b40c94c..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{00F1AED2-A30C-4FE4-9B8C-1DCB271AD050}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reflection</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager-net_4_5.csproj b/mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager-net_4_5.csproj
deleted file mode 100644 (file)
index 9d9d133..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4A4281A7-0EBB-4FA4-ABC8-354253A9DDAF}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Resources.ResourceManager</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions-net_4_5.csproj b/mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions-net_4_5.csproj
deleted file mode 100644 (file)
index 0fa1a43..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CD67F8F0-C543-4BBA-AB81-F6A9FCD4BD62}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Extensions</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Runtime.InteropServices.WindowsRuntime/System.Runtime.InteropServices.WindowsRuntime-net_4_5.csproj b/mcs/class/Facades/System.Runtime.InteropServices.WindowsRuntime/System.Runtime.InteropServices.WindowsRuntime-net_4_5.csproj
deleted file mode 100644 (file)
index 65e8631..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{045F952B-9AB3-4DB1-ADBB-D260B4B5E0E1}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.InteropServices.WindowsRuntime</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices-net_4_5.csproj b/mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices-net_4_5.csproj
deleted file mode 100644 (file)
index 6562fdf..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{516204B8-800B-4508-8DA1-E103A1985B5A}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.InteropServices</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics-net_4_5.csproj b/mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics-net_4_5.csproj
deleted file mode 100644 (file)
index 6819ca0..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{798C666E-FA52-4B49-B8E3-49167F2E0D26}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Numerics</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Numerics/System.Numerics-net_4_5.csproj">\r
-      <Project>{14631AC9-FDC6-4561-A04C-6913947C939E}</Project>\r
-      <Name>System.Numerics-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json-net_4_5.csproj b/mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json-net_4_5.csproj
deleted file mode 100644 (file)
index 7b20277..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{66CACE39-45D9-4F11-9606-CEDC9F4FB94E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Serialization.Json</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives-net_4_5.csproj b/mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives-net_4_5.csproj
deleted file mode 100644 (file)
index f08f7ca..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F113ADCC-80CA-4CCC-A59B-3628CB0F534C}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Serialization.Primitives</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml-net_4_5.csproj b/mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml-net_4_5.csproj
deleted file mode 100644 (file)
index b45c1bf..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5EC82F0C-7FAF-44DE-BD77-57CFE2FEB1D5}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Serialization.Xml</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Runtime/System.Runtime-net_4_5.csproj b/mcs/class/Facades/System.Runtime/System.Runtime-net_4_5.csproj
deleted file mode 100644 (file)
index 0f22c82..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FE41441F-91F5-48AC-84DA-23056DD7386B}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.ComponentModel.Composition.4.5/System.ComponentModel.Composition-net_4_5.csproj">\r
-      <Project>{81352E26-6AB7-4AA3-8FB1-28A476E82748}</Project>\r
-      <Name>System.ComponentModel.Composition-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Security.Principal/System.Security.Principal-net_4_5.csproj b/mcs/class/Facades/System.Security.Principal/System.Security.Principal-net_4_5.csproj
deleted file mode 100644 (file)
index 9784c71..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{09F21748-CA1B-49EF-BE06-64542DBDD927}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Security.Principal</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http-net_4_5.csproj b/mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http-net_4_5.csproj
deleted file mode 100644 (file)
index d249f67..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5FB7CE3D-3BF8-4539-AC0B-37A473DA75C6}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceModel.Http</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
-      <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives-net_4_5.csproj b/mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives-net_4_5.csproj
deleted file mode 100644 (file)
index 4679619..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{339D127E-6EC9-4DC2-A6E9-1306B4AAC18A}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceModel.Primitives</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
-      <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.ServiceModel.Security/System.ServiceModel.Security-net_4_5.csproj b/mcs/class/Facades/System.ServiceModel.Security/System.ServiceModel.Security-net_4_5.csproj
deleted file mode 100644 (file)
index 5f48298..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EF11BD41-8AF8-4A15-A6B7-344BC9852EF6}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceModel.Security</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
-      <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions-net_4_5.sln b/mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions-net_4_5.sln
new file mode 100644 (file)
index 0000000..82d6caa
--- /dev/null
@@ -0,0 +1,17 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 11.00\r
+# Visual Studio 2010\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Text.Encoding.Extensions-net_4_5", "System.Text.Encoding.Extensions-net_4_5.csproj", "{DEAA541C-1414-4C17-9DB1-F63F83B0C182}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Any CPU = Debug|Any CPU\r
+               Release|Any CPU = Release|Any CPU\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {DEAA541C-1414-4C17-9DB1-F63F83B0C182}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {DEAA541C-1414-4C17-9DB1-F63F83B0C182}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {DEAA541C-1414-4C17-9DB1-F63F83B0C182}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+               {DEAA541C-1414-4C17-9DB1-F63F83B0C182}.Release|Any CPU.Build.0 = Release|Any CPU\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/mcs/class/Facades/System.Text.Encoding/System.Text.Encoding-net_4_5.csproj b/mcs/class/Facades/System.Text.Encoding/System.Text.Encoding-net_4_5.csproj
deleted file mode 100644 (file)
index ce884f9..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4AB957DC-5A83-40D2-AB0B-DA1583C40181}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Text.Encoding</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions-net_4_5.csproj b/mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions-net_4_5.csproj
deleted file mode 100644 (file)
index a60fd9f..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{189011AC-76B3-4364-B999-A54B72B69DF7}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Text.RegularExpressions</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel-net_4_5.csproj b/mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel-net_4_5.csproj
deleted file mode 100644 (file)
index 144c522..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3FC77F23-AFB8-4FB6-A18F-5E76D6B4A309}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Threading.Tasks.Parallel</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks-net_4_5.csproj b/mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks-net_4_5.csproj
deleted file mode 100644 (file)
index fe3002c..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CA73F804-277A-40B5-A9F7-5E3FD913629B}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Threading.Tasks</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Threading.Timer/System.Threading.Timer-net_4_5.csproj b/mcs/class/Facades/System.Threading.Timer/System.Threading.Timer-net_4_5.csproj
deleted file mode 100644 (file)
index d2b3fc1..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{93FB6CF4-26B5-4D43-A485-E9A052A82749}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Threading.Timer</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Threading/System.Threading-net_4_5.csproj b/mcs/class/Facades/System.Threading/System.Threading-net_4_5.csproj
deleted file mode 100644 (file)
index 345389e..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4DE82EEA-1FE0-4D13-B1DA-7221E52CD3EE}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Threading</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter-net_4_5.csproj b/mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter-net_4_5.csproj
deleted file mode 100644 (file)
index 876bce7..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{32D7A81F-E7B5-4E08-BE4C-2BC0FF902C66}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Xml.ReaderWriter</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument-net_4_5.csproj b/mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument-net_4_5.csproj
deleted file mode 100644 (file)
index 9b565e5..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F47D56BD-BA6E-4503-B2FA-435A331338B5}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Xml.XDocument</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer-net_4_5.csproj b/mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer-net_4_5.csproj
deleted file mode 100644 (file)
index bbb6f75..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{799C90EA-628C-40EB-8C8C-6EA21B2ECE80}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5/Facades</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Xml.XmlSerializer</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../../msfinal.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1616,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Facades/subdirs.make b/mcs/class/Facades/subdirs.make
new file mode 100644 (file)
index 0000000..0e18045
--- /dev/null
@@ -0,0 +1,45 @@
+
+# This file should only contain SUBDIRS variables
+# Caution while renaming SUBDIRS variables as those are used outside mono repository.
+# ie: macccore/builds/Makefile
+
+monotouch_PARALLEL_SUBDIRS = System.Collections.Concurrent System.Collections System.ComponentModel.Annotations System.ComponentModel.EventBasedAsync System.ComponentModel \
+System.Diagnostics.Contracts System.Diagnostics.Debug System.Diagnostics.Tracing System.Diagnostics.Tools System.Dynamic.Runtime System.Globalization System.IO System.Linq.Expressions \
+System.Linq.Parallel System.Linq.Queryable System.Linq System.Net.NetworkInformation System.Net.Primitives System.Net.Requests System.ObjectModel \
+System.Reflection.Extensions System.Reflection.Primitives System.Reflection System.Resources.ResourceManager System.Runtime.Extensions \
+System.Runtime.InteropServices System.Runtime.InteropServices.WindowsRuntime System.Runtime.Numerics System.Runtime.Serialization.Json \
+System.Runtime.Serialization.Primitives System.Runtime.Serialization.Xml System.Runtime System.Security.Principal System.ServiceModel.Http \
+System.ServiceModel.Primitives System.ServiceModel.Security System.Text.Encoding.Extensions System.Text.Encoding System.Text.RegularExpressions System.Threading.Tasks.Parallel \
+System.Threading.Tasks System.Threading.Timer System.Threading System.Xml.ReaderWriter System.Xml.XDocument System.Xml.XmlSerializer \
+System.Runtime.Handles System.ServiceModel.Duplex System.ServiceModel.NetTcp \
+Microsoft.Win32.Primitives Microsoft.Win32.Registry System.AppContext System.Collections.NonGeneric System.Collections.Specialized System.ComponentModel.Primitives \
+System.ComponentModel.TypeConverter System.Console System.Data.Common System.Data.SqlClient System.Diagnostics.FileVersionInfo \
+System.Diagnostics.Process System.Diagnostics.TextWriterTraceListener System.Diagnostics.TraceEvent System.Diagnostics.TraceSource System.Globalization.Calendars \
+System.IO.Compression.ZipFile System.IO.FileSystem System.IO.FileSystem.DriveInfo System.IO.FileSystem.Primitives \
+System.IO.IsolatedStorage System.IO.MemoryMappedFiles System.IO.UnmanagedMemoryStream System.Net.AuthenticationManager System.Net.Cache \
+System.Net.HttpListener System.Net.Mail System.Net.NameResolution System.Net.Security System.Net.ServicePoint System.Net.Sockets \
+System.Net.Utilities System.Net.WebHeaderCollection System.Net.WebSockets System.Net.WebSockets.Client System.Resources.ReaderWriter System.Runtime.CompilerServices.VisualC \
+System.Security.AccessControl System.Security.Claims System.Security.Cryptography.DeriveBytes System.Security.Cryptography.Encoding System.Security.Cryptography.Encryption \
+System.Security.Cryptography.Encryption.Aes System.Security.Cryptography.Encryption.ECDiffieHellman System.Security.Cryptography.Encryption.ECDsa System.Security.Cryptography.Hashing \
+System.Security.Cryptography.Hashing.Algorithms System.Security.Cryptography.RSA System.Security.Cryptography.RandomNumberGenerator \
+System.Security.Cryptography.X509Certificates System.Security.Principal.Windows System.Threading.Thread System.Threading.ThreadPool \
+System.Xml.XPath System.Xml.XmlDocument System.Xml.Xsl.Primitives Microsoft.Win32.Registry.AccessControl System.Diagnostics.StackTrace System.Globalization.Extensions \
+System.IO.FileSystem.AccessControl System.Private.CoreLib.InteropServices System.Private.CoreLib.Threading System.Reflection.TypeExtensions \
+System.Security.SecureString System.Threading.AccessControl System.Threading.Overlapped System.Xml.XPath.XDocument
+
+reflection_PARALLEL_SUBDIRS = System.Reflection.Emit.ILGeneration System.Reflection.Emit.Lightweight System.Reflection.Emit
+
+mobile_static_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS)
+
+net_4_x_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS) $(reflection_PARALLEL_SUBDIRS) System.Diagnostics.PerformanceCounter \
+System.IO.FileSystem.Watcher System.IO.Pipes System.Security.Cryptography.ProtectedData System.ServiceProcess.ServiceController System.Net.Http.WebRequestHandler
+
+monodroid_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS) $(reflection_PARALLEL_SUBDIRS)
+
+xammac_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS) $(reflection_PARALLEL_SUBDIRS)
+xammac_net_4_5_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS) $(reflection_PARALLEL_SUBDIRS)
+
+monotouch_watch_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS)
+monotouch_tv_PARALLEL_SUBDIRS = $(monotouch_PARALLEL_SUBDIRS)
+
+PROFILE_PARALLEL_SUBDIRS = $(net_4_x_PARALLEL_SUBDIRS)
diff --git a/mcs/class/I18N/CJK/I18N.CJK-net_4_5.csproj b/mcs/class/I18N/CJK/I18N.CJK-net_4_5.csproj
deleted file mode 100644 (file)
index 5cbf46c..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E1E28FDB-826D-4FEB-B3B9-3FF98BD2E43F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>I18N.CJK</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;DISABLE_UNSAFE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>DISABLE_UNSAFE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="CodeTable.cs" />\r
-    <Compile Include="CP51932.cs" />\r
-    <Compile Include="CP932.cs" />\r
-    <Compile Include="CP936.cs" />\r
-    <Compile Include="CP949.cs" />\r
-    <Compile Include="CP950.cs" />\r
-    <Compile Include="DbcsConvert.cs" />\r
-    <Compile Include="DbcsEncoding.cs" />\r
-    <Compile Include="GB18030Encoding.cs" />\r
-    <Compile Include="GB18030Source.cs" />\r
-    <Compile Include="ISO2022JP.cs" />\r
-    <Compile Include="JISConvert.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Common/I18N-net_4_5.csproj">\r
-      <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>I18N-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="big5.table">\r
-      <LogicalName>big5.table</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="gb2312.table">\r
-      <LogicalName>gb2312.table</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="jis.table">\r
-      <LogicalName>jis.table</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="ks.table">\r
-      <LogicalName>ks.table</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="gb18030.table">\r
-      <LogicalName>gb18030.table</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/I18N/CJK/I18N.CJK-tests-net_4_5.csproj b/mcs/class/I18N/CJK/I18N.CJK-tests-net_4_5.csproj
deleted file mode 100644 (file)
index ba41310..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{06AF7FA1-1355-4A2F-8627-2AA11C5B2689}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\I18N.CJK-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>I18N.CJK_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;DISABLE_UNSAFE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>DISABLE_UNSAFE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\I18N.CJK.Test.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>Common\I18N-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\I18N\CJK\I18N.CJK-net_4_5.csproj">\r
-      <Project>{E1E28FDB-826D-4FEB-B3B9-3FF98BD2E43F}</Project>\r
-      <Name>CJK\I18N.CJK-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="big5.table">\r
-      <LogicalName>big5.table</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="gb2312.table">\r
-      <LogicalName>gb2312.table</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="jis.table">\r
-      <LogicalName>jis.table</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="ks.table">\r
-      <LogicalName>ks.table</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="gb18030.table">\r
-      <LogicalName>gb18030.table</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/I18N/Common/I18N-net_4_5.csproj b/mcs/class/I18N/Common/I18N-net_4_5.csproj
deleted file mode 100644 (file)
index e2a4948..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C337A9A4-3797-4339-AD23-493DF062CD76}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>I18N</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;DISABLE_UNSAFE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>DISABLE_UNSAFE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="ByteEncoding.cs" />\r
-    <Compile Include="ByteSafeEncoding.cs" />\r
-    <Compile Include="DefaultEncoder.cs" />\r
-    <Compile Include="Handlers.cs" />\r
-    <Compile Include="Manager.cs" />\r
-    <Compile Include="MonoEncoding.cs" />\r
-    <Compile Include="MonoSafeEncoding.cs" />\r
-    <Compile Include="Strings.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/I18N/MidEast/I18N.MidEast-net_4_5.csproj b/mcs/class/I18N/MidEast/I18N.MidEast-net_4_5.csproj
deleted file mode 100644 (file)
index 9fd9533..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C2ADDD2F-602B-4787-8688-F06C3DED0DA5}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>I18N.MidEast</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="CP1254.cs" />\r
-    <Compile Include="CP1255.cs" />\r
-    <Compile Include="CP1256.cs" />\r
-    <Compile Include="CP28596.cs" />\r
-    <Compile Include="CP28598.cs" />\r
-    <Compile Include="CP28599.cs" />\r
-    <Compile Include="CP38598.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Common/I18N-net_4_5.csproj">\r
-      <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>I18N-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/I18N/MidEast/I18N.MidEast-tests-net_4_5.csproj b/mcs/class/I18N/MidEast/I18N.MidEast-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 3dea5df..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3537138C-2770-42E5-BFFE-D690889FA603}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\I18N.MidEast-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>I18N.MidEast_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\I18N.MidEast.Test.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>Common\I18N-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\I18N\MidEast\I18N.MidEast-net_4_5.csproj">\r
-      <Project>{C2ADDD2F-602B-4787-8688-F06C3DED0DA5}</Project>\r
-      <Name>MidEast\I18N.MidEast-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/I18N/Other/I18N.Other-net_4_5.csproj b/mcs/class/I18N/Other/I18N.Other-net_4_5.csproj
deleted file mode 100644 (file)
index cb274ec..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B77661D6-F5C9-4FB2-8613-06F645D6E227}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>I18N.Other</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="CP1251.cs" />\r
-    <Compile Include="CP1257.cs" />\r
-    <Compile Include="CP1258.cs" />\r
-    <Compile Include="CP20866.cs" />\r
-    <Compile Include="CP21866.cs" />\r
-    <Compile Include="CP28594.cs" />\r
-    <Compile Include="CP28595.cs" />\r
-    <Compile Include="CP57002.cs" />\r
-    <Compile Include="CP874.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Common/I18N-net_4_5.csproj">\r
-      <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>I18N-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/I18N/Rare/I18N.Rare-net_4_5.csproj b/mcs/class/I18N/Rare/I18N.Rare-net_4_5.csproj
deleted file mode 100644 (file)
index 1029f77..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ED2E80E0-D1B2-48D3-8EF9-F20CB9D0FA98}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>I18N.Rare</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="CP1026.cs" />\r
-    <Compile Include="CP1047.cs" />\r
-    <Compile Include="CP1140.cs" />\r
-    <Compile Include="CP1141.cs" />\r
-    <Compile Include="CP1142.cs" />\r
-    <Compile Include="CP1143.cs" />\r
-    <Compile Include="CP1144.cs" />\r
-    <Compile Include="CP1145.cs" />\r
-    <Compile Include="CP1146.cs" />\r
-    <Compile Include="CP1147.cs" />\r
-    <Compile Include="CP1148.cs" />\r
-    <Compile Include="CP1149.cs" />\r
-    <Compile Include="CP20273.cs" />\r
-    <Compile Include="CP20277.cs" />\r
-    <Compile Include="CP20278.cs" />\r
-    <Compile Include="CP20280.cs" />\r
-    <Compile Include="CP20284.cs" />\r
-    <Compile Include="CP20285.cs" />\r
-    <Compile Include="CP20290.cs" />\r
-    <Compile Include="CP20297.cs" />\r
-    <Compile Include="CP20420.cs" />\r
-    <Compile Include="CP20424.cs" />\r
-    <Compile Include="CP20871.cs" />\r
-    <Compile Include="CP21025.cs" />\r
-    <Compile Include="CP37.cs" />\r
-    <Compile Include="CP500.cs" />\r
-    <Compile Include="CP708.cs" />\r
-    <Compile Include="CP852.cs" />\r
-    <Compile Include="CP855.cs" />\r
-    <Compile Include="CP857.cs" />\r
-    <Compile Include="CP858.cs" />\r
-    <Compile Include="CP862.cs" />\r
-    <Compile Include="CP864.cs" />\r
-    <Compile Include="CP866.cs" />\r
-    <Compile Include="CP869.cs" />\r
-    <Compile Include="CP870.cs" />\r
-    <Compile Include="CP875.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Common/I18N-net_4_5.csproj">\r
-      <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>I18N-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/I18N/West/I18N.West-net_4_5.csproj b/mcs/class/I18N/West/I18N.West-net_4_5.csproj
deleted file mode 100644 (file)
index 0d49f88..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C95AC6B1-7D75-40D5-8B6D-F62278587227}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>I18N.West</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="CP10000.cs" />\r
-    <Compile Include="CP10079.cs" />\r
-    <Compile Include="CP1250.cs" />\r
-    <Compile Include="CP1252.cs" />\r
-    <Compile Include="CP1253.cs" />\r
-    <Compile Include="CP28592.cs" />\r
-    <Compile Include="CP28593.cs" />\r
-    <Compile Include="CP28597.cs" />\r
-    <Compile Include="CP28605.cs" />\r
-    <Compile Include="CP437.cs" />\r
-    <Compile Include="CP850.cs" />\r
-    <Compile Include="CP860.cs" />\r
-    <Compile Include="CP861.cs" />\r
-    <Compile Include="CP863.cs" />\r
-    <Compile Include="CP865.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Common/I18N-net_4_5.csproj">\r
-      <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>I18N-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/I18N/West/I18N.West-tests-net_4_5.csproj b/mcs/class/I18N/West/I18N.West-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 90f2c06..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FB1F5992-FA12-4ABF-9614-43CC917A588F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\I18N.West-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>I18N.West_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\I18N.West.Test.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{C337A9A4-3797-4339-AD23-493DF062CD76}</Project>\r
-      <Name>Common\I18N-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\I18N\West\I18N.West-net_4_5.csproj">\r
-      <Project>{C95AC6B1-7D75-40D5-8B6D-F62278587227}</Project>\r
-      <Name>West\I18N.West-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index d788d7afb8162554063601b7515ba22d867d4a92..fd63372a9dfe6296036b42c30c88633ed86c0f1d 100644 (file)
@@ -691,9 +691,7 @@ static void printCharToByte(void)
        printf("\t\tint ch;\n");
        printf("\t\tint charIndex = 0;\n");
        printf("\t\tint byteIndex = 0;\n");
-       printf("#if NET_2_0\n");
        printf("\t\tEncoderFallbackBuffer buffer = null;\n");
-       printf("#endif\n");
        printf("\t\twhile (charCount > 0)\n");
        printf("\t\t{\n");
        printf("\t\t\tch = (int)(chars[charIndex]);\n");
diff --git a/mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_4_5.csproj b/mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_4_5.csproj
deleted file mode 100644 (file)
index 465ee15..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7A0D9630-19F1-4AC0-951C-D0F1EA609049}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>IBM.Data.DB2</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2ClientUtils.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2CLIWrapper.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2Command.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2CommandBuilder.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2Connection.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2ConnectionPool.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2ConnectionSettings.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2Constants.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2DataAdapter.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2DataReader.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2Environment.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2Error.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2ErrorCollection.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2Exception.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2InfoMessageEventHandler.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2OpenConnection.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2Parameter.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2ParameterCollection.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2RowUpdatedEventArgs.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2RowUpdatedEventHandler.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2RowUpdatingEventArgs.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2RowUpdatingEventHandler.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2Transaction.cs" />\r
-    <Compile Include=".\IBM.Data.DB2\DB2Type.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj b/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj
deleted file mode 100644 (file)
index 3bc4cbb..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0B587DBA-BA92-4B92-821A-AA200C612A7E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>ICSharpCode.SharpZipLib</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="ICSharpCode.SharpZipLib\AssemblyInfo.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\BZip2\BZip2.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\BZip2\BZip2Constants.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\BZip2\BZip2Exception.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\BZip2\BZip2InputStream.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\BZip2\BZip2OutputStream.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Checksums\Adler32.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Checksums\CRC32.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Checksums\IChecksum.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Checksums\StrangeCRC.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Core\FileSystemScanner.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Core\INameTransform.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Core\NameFilter.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Core\PathFilter.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Encryption\PkzipClassic.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\GZip\GZIPConstants.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\GZip\GZipException.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\GZip\GzipInputStream.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\GZip\GzipOutputStream.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Main.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\SharpZipBaseException.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Tar\InvalidHeaderException.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Tar\TarArchive.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Tar\TarBuffer.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Tar\TarEntry.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Tar\TarException.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Tar\TarHeader.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Tar\TarInputStream.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Tar\TarOutputStream.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\Deflater.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\DeflaterConstants.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\DeflaterEngine.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\DeflaterHuffman.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\DeflaterPending.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\Inflater.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\InflaterDynHeader.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\InflaterHuffmanTree.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\PendingBuffer.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\Streams\DeflaterOutputStream.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\Streams\InflaterInputStream.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\Streams\OutputWindow.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\Compression\Streams\StreamManipulator.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\FastZip.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\ZipConstants.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\ZipEntry.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\ZipException.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\ZipFile.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\ZipInputStream.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\ZipNameTransform.cs" />\r
-    <Compile Include="ICSharpCode.SharpZipLib\Zip\ZipOutputStream.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 3db8ff345c50e62f97eedf49e1dfe5b5ceada7af..64790f2005f35d3b1e2fcc2b9500325668655ba9 100644 (file)
@@ -51,7 +51,10 @@ mobile_common_dirs := \
        System.Windows \
        System.Xml.Serialization \
        Mono.CSharp     \
-       Microsoft.CSharp
+       Microsoft.CSharp \
+       Mono.Security.Providers.DotNet  \
+       Mono.Security.Providers.OldTls \
+       Mono.Security.Providers.NewSystemSource
 
 mobile_static_dirs := \
        $(mobile_common_dirs)   \
@@ -82,6 +85,9 @@ monotouch_runtime_dirs := \
        System.XML \
        Mono.CSharp
 
+monotouch_watch_runtime_dirs := $(monotouch_runtime_dirs)
+monotouch_tv_runtime_dirs := $(monotouch_runtime_dirs)
+
 xammac_4_5_dirs := \
        corlib  \
        System  \
@@ -124,6 +130,9 @@ xammac_4_5_dirs := \
        Mono.CompilerServices.SymbolWriter      \
        System.Data.Linq                \
        System.Net.Http \
+       Mono.Security.Providers.DotNet \
+       Mono.Security.Providers.OldTls \
+       Mono.Security.Providers.NewSystemSource \
        $(pcl_facade_dirs)
 
 net_4_x_dirs := \
@@ -251,6 +260,9 @@ net_4_x_parallel_dirs := \
        System.ComponentModel.Composition.4.5 \
        System.Windows \
        System.Xml.Serialization \
+       Mono.Security.Providers.DotNet \
+       Mono.Security.Providers.OldTls \
+       Mono.Security.Providers.NewSystemSource \
        System.DirectoryServices.Protocols      \
        RabbitMQ.Client                 \
        Microsoft.VisualC               \
@@ -274,6 +286,8 @@ monotouch_SUBDIRS := $(monotouch_dirs)
 monotouch_watch_SUBDIRS := $(monotouch_watch_dirs)
 monotouch_tv_SUBDIRS    := $(monotouch_tv_dirs)
 monotouch_runtime_SUBDIRS := $(monotouch_runtime_dirs)
+monotouch_watch_runtime_SUBDIRS := $(monotouch_watch_runtime_dirs)
+monotouch_tv_runtime_SUBDIRS := $(monotouch_tv_runtime_dirs)
 mobile_static_SUBDIRS := $(mobile_static_dirs)
 mobile_SUBDIRS := $(mobile_dynamic_dirs)
 xammac_SUBDIRS := $(xammac_dirs)
index a5cb54df4094ef4d71da78b5316f9efc21902607..47216dc7d240adcdc7aff86163e6c1514107b056 100644 (file)
@@ -26,13 +26,17 @@ EXTRA_DISTFILES = \
        Test/resources/*.*proj  \
        Test/resources/*.csproj
 
-Test/resources/TestTasks.dll: Test/resources/TestTasks.cs
-       $(CSCOMPILE) Test/resources/TestTasks.cs /r:$(XBUILD_FRAMEWORK) /r:$(XBUILD_UTILITIES) /target:library
+Test/resources/TestTasks-$(PROFILE).dll: Test/resources/TestTasks.cs
+       $(CSCOMPILE) /out:$@ Test/resources/TestTasks.cs /r:$(XBUILD_FRAMEWORK) /r:$(XBUILD_UTILITIES) /target:library
 
 clean-test-resources:
-       rm -f Test/resources/TestTasks.dll      
+       rm -f Test/resources/TestTasks*.dll Test/resources/TestTasks*.dll.mdb
 
-test-local: Test/resources/TestTasks.dll
+test-local: compile-resources
+
+compile-resources: Test/resources/TestTasks-$(PROFILE).dll
+       cp Test/resources/TestTasks-$(PROFILE).dll Test/resources/TestTasks.dll
+       cp Test/resources/TestTasks-$(PROFILE).dll.mdb Test/resources/TestTasks.dll.mdb
 
 clean-local: clean-test-resources
 
index ccfc0fa3a0ea8a46c1a5018af0732e84820892b4..3d4ab33ce506050ac40dfaf8e9a066a05f234719 100644 (file)
@@ -464,6 +464,8 @@ namespace Microsoft.Build.BuildEngine {
                        List<string> args = new List<string> ();
                        int parens = 0;
                        bool backticks = false;
+                       bool inDoubleQuotes = false;
+                       bool inSingleQuotes = false;
                        int start = pos;
                        for (; pos < text.Length; ++pos) {
                                var ch = text [pos];
@@ -476,6 +478,16 @@ namespace Microsoft.Build.BuildEngine {
                                if (backticks)
                                        continue;
 
+                               if(ch == '\'' && !inDoubleQuotes) {
+                                       inSingleQuotes = !inSingleQuotes;
+                                       continue;
+                               }
+
+                               if (ch == '\"' && !inSingleQuotes) {
+                                       inDoubleQuotes = !inDoubleQuotes;
+                                       continue;
+                               }
+
                                if (ch == '(') {
                                        ++parens;
                                        continue;
@@ -498,7 +510,7 @@ namespace Microsoft.Build.BuildEngine {
                                if (parens != 0)
                                        continue;
 
-                               if (ch == ',') {
+                               if (ch == ',' && !inDoubleQuotes && !inSingleQuotes) {
                                        args.Add (text.Substring (start, pos - start));
                                        start = pos + 1;
                                        continue;
index c2383e5025397d6e7c4487d992f2eff3d94351f5..cdc6c057fd57005c014735da540d0abc812b8917 100644 (file)
@@ -32,6 +32,7 @@ using System.Collections.Generic;
 using System.Reflection;
 using System.Globalization;
 using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
 using System.Text;
 
 namespace Microsoft.Build.BuildEngine
@@ -123,6 +124,14 @@ namespace Microsoft.Build.BuildEngine
                        return value;
                }
 
+               static string TrimFirstAndLast(string unTrimmed)
+               {
+                       if (unTrimmed.Length > 1 && Array.IndexOf (ArgumentTrimChars, unTrimmed [0]) != -1 && Array.IndexOf (ArgumentTrimChars, unTrimmed [unTrimmed.Length - 1]) != -1) {
+                               return unTrimmed.Substring (1, unTrimmed.Length - 2);
+                       }
+                       return unTrimmed;
+               }
+
                void ExpandArguments (Project project, ExpressionOptions options)
                {
                        for (int i = 0; i < Arguments.Count; ++i) {
@@ -133,7 +142,7 @@ namespace Microsoft.Build.BuildEngine
                                        arg = Expression.ParseAs<string> (arg, ParseOptions.None,
                                                project, options);
 
-                                       arg = arg.Trim (ArgumentTrimChars);
+                                       arg = TrimFirstAndLast (arg);
                                }
 
                                Arguments [i] = arg;
@@ -280,7 +289,10 @@ namespace Microsoft.Build.BuildEngine
 
                public ITaskItem[] ConvertToITaskItemArray (Project project, ExpressionOptions options)
                {
-                       throw new NotImplementedException ();
+                       var items = new ITaskItem[1];
+                       items[0] = new TaskItem (ConvertToString (project, options));
+
+                       return items;
                }
        }
 }
\ No newline at end of file
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj
deleted file mode 100644 (file)
index cbf99b3..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{54DFC5A7-7C1D-4BA5-A0F7-F0B312E1E076}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.Build.Engine</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\..\tools\xbuild\SolutionParser.cs" />\r
-    <Compile Include="..\..\tools\xbuild\XBuildConsts.cs" />\r
-    <Compile Include="..\Microsoft.Build.Framework\Mono.XBuild.Framework\AssemblyLoadInfo.cs" />\r
-    <Compile Include="..\Microsoft.Build.Utilities\Mono.XBuild.Utilities\MSBuildUtils.cs" />\r
-    <Compile Include="..\Microsoft.Build.Utilities\Mono.XBuild.Utilities\ReservedNameUtils.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BatchingImplBase.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildChoose.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildEngine.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildItem.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildItemGroup.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildItemGroupCollection.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildProperty.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildPropertyGroup.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildPropertyGroupCollection.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildSettings.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildTask.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItem.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItemGroup.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskPropertyGroup.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\BuildWhen.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ChangeType.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ColorResetter.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ColorSetter.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ConditionAndExpression.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ConditionExpression.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ConditionFactorExpresion.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ConditionFunctionExpression.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ConditionNotExpression.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ConditionOrExpression.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ConditionParser.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ConditionRelationalExpression.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ConditionTokenizer.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ConsoleLogger.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\DirectoryScanner.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\Engine.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\EventSource.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\Expression.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ExpressionCollection.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ExpressionEvaluationException.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ExpressionParseException.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\FileLogger.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\GroupingCollection.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\IBuildTask.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\Import.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ImportCollection.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ImportedProject.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\InternalLoggerException.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\InvalidProjectFileException.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\IReference.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ItemReference.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\LogExtensions.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\MemberInvocationReference.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\MetadataReference.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\PredefinedPropertyFunctions.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\Project.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ProjectLoadSettings.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\PropertyPosition.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\PropertyReference.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\Target.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\TargetBatchingImpl.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\TargetCollection.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\TaskBatchingImpl.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\TaskDatabase.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\TaskEngine.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\TaskExecutionMode.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\Token.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\Toolset.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ToolsetCollection.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\ToolsetDefinitionLocations.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\UnknownToolsVersionException.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\UsingTask.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\UsingTaskCollection.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\Utilities.cs" />\r
-    <Compile Include="Microsoft.Build.BuildEngine\WriteHandler.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{6E1C7BDE-7B9E-47B0-A7B2-1561822FE922}</Project>\r
-      <Name>Microsoft.Build.Utilities-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-tests-net_4_5.csproj b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 1a8564b..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EBF59584-3F6F-4881-B2FF-E4FBE2A4D1F1}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Microsoft.Build.Engine-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.Build.Engine_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\Microsoft.Build.Tasks\Test\Microsoft.Build.Tasks\TestMessageLogger.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\BuildChooseTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\BuildItemGroupCollectionTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\BuildItemGroupTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\BuildItemTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\BuildPropertyGroupCollectionTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\BuildPropertyGroupTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\BuildPropertyTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\BuildTaskTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\ConsoleLoggerTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\Consts.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\EngineTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\ImportCollectionTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\ImportTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\InternalLoggerExceptionTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\InvalidProjectFileExceptionTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\ProjectTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\TargetCollectionTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\TargetTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\TestNamespaceManager.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\UsingTaskCollectionTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\UsingTaskTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.BuildEngine\UtilitiesTest.cs" />\r
-    <Compile Include="Test\various\Build.cs" />\r
-    <Compile Include="Test\various\Conditions.cs" />\r
-    <Compile Include="Test\various\DefaultTasks.cs" />\r
-    <Compile Include="Test\various\EvaluationOrder.cs" />\r
-    <Compile Include="Test\various\Items.cs" />\r
-    <Compile Include="Test\various\ProjectElement.cs" />\r
-    <Compile Include="Test\various\Properties.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{54DFC5A7-7C1D-4BA5-A0F7-F0B312E1E076}</Project>\r
-      <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{6E1C7BDE-7B9E-47B0-A7B2-1561822FE922}</Project>\r
-      <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 48aba112fb9912a680cd586375c3d53ed7d0aa2d..594c0858777c80db3bceec5a5fb434aaef8ddb78 100644 (file)
@@ -67,7 +67,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                void Message (object sender, BuildMessageEventArgs args)
                {
                }
-               
+
                void Warning (object sender, BuildWarningEventArgs args)
                {
                }
@@ -97,7 +97,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                        Project project;
                        string documentString =
                                "<Project></Project>";
-                       
+
                        engine = new Engine (Consts.BinPath);
 
                        DateTime time = DateTime.Now;
@@ -127,7 +127,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                        Project project;
                        string documentString =
                                "<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"></Project>";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        DateTime time = DateTime.Now;
                        project = engine.CreateNewProject ();
@@ -310,7 +310,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
 
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
-                                       <Target 
+                                       <Target
                                                Name='Main'
                                                Inputs='a;b;c'
                                                Outputs='d;e;f'
@@ -345,7 +345,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                        Engine engine;
                        Project project;
                        IDictionary hashtable = new Hashtable ();
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                        <Target Name='Main'>
@@ -353,7 +353,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                        </Target>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
@@ -769,12 +769,12 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                {
                        Engine engine;
                        Project project;
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
@@ -787,15 +787,15 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                {
                        Engine engine;
                        Project project;
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        engine.GlobalProperties.SetProperty ("Property", "Value");
-                       
+
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
 
@@ -815,12 +815,12 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                {
                        Engine engine;
                        Project project;
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
@@ -834,7 +834,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                {
                        Engine engine;
                        Project project;
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                        <PropertyGroup>
@@ -842,7 +842,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                        </PropertyGroup>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
@@ -861,7 +861,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                {
                        Engine engine;
                        Project project;
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                        <PropertyGroup>
@@ -869,7 +869,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                        </PropertyGroup>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
@@ -914,7 +914,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                {
                        Engine engine;
                        Project project;
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
 
@@ -1076,18 +1076,18 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                        Assert.AreEqual (3, tl.TargetStartedEvents, "A1");
                        Assert.AreEqual (3, tl.TargetFinishedEvents, "A1");
                }
-               
+
                [Test]
                public void TestSchemaFile ()
                {
                        Engine engine;
                        Project project;
-                       
+
                        string documentString = @"
                                <Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
                                </Project>
                        ";
-                       
+
                        engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
@@ -2092,7 +2092,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                         <MeTAdata1>md3</MeTAdata1>
                         <Metadata2>md4</Metadata2>
                 </Abc>
-        </ItemGroup> 
+        </ItemGroup>
         <PropertyGroup><ProP1>ValueProp</ProP1></PropertyGroup>
        <Target Name=""Main"">
                <MesSAGE Text=""Full item: @(ABC)""/>
@@ -2159,7 +2159,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                        Path.Combine ("fr-FR", "Lib2.resources.dll"),
                                        "Lib4.dll", "Lib4" + debug_extn
                                },
-                               
+
                                // lib1
                                new string [] {
                                        // lib1 files
@@ -2216,7 +2216,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
 
                        Project project = engine.CreateNewProject ();
                        project.Load (Path.Combine (basepath, "Project01.sln.proj"));
-                       
+
                        bool result = project.Build ();
                        if (!result) {
                                logger.DumpMessages ();
@@ -2373,5 +2373,24 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
 
                        return project;
                }
+
+               [Test]
+               public void CheckCommaInQuotes ()
+               {
+                       string testString = "Test.string.with.Commas";
+                       string documentString = string.Format (@"
+                       <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                               <PropertyGroup>
+                                       <TestString>{0}</TestString>
+                                       <TestString2>$(TestString.Replace(&quot;.&quot;,&quot;,&quot;))</TestString2>
+                               </PropertyGroup>
+                       </Project>", testString);
+
+                       Project project = new Project ();
+      project.LoadXml (documentString);
+
+                       string result = project.EvaluatedProperties ["TestString2"].FinalValue;
+      Assert.AreEqual (testString.Replace (".", ","), result, "A1");
+               }
        }
 }
index 795a71230663dc1bc363989138e1b4d6ec189947..54f1c8a94cc2c935c49a573869ba9799aa6568df 100644 (file)
@@ -101,11 +101,17 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                                                        <Config>debug</Config>
                                                        <NullValue>null</NullValue>
                                                        <TargetValue>  </TargetValue>
+                                                       <StringWithQuotes>abc""def</StringWithQuotes>
                                                        <Prop1>$(Config.Substring(0,3)) </Prop1>
                                                        <Prop2>$(Config.Length )</Prop2>
                                                        <Prop3>$(Config.StartsWith ('DE', System.StringComparison.OrdinalIgnoreCase))</Prop3>
                                                        <Prop4>$(NullValue.StartsWith ('Te', StringComparison.OrdinalIgnoreCase))</Prop4>
                                                        <Prop5>$(TargetValue.Trim('\\'))</Prop5>
+                                                       <Prop6>$(StringWithQuotes.Replace('""', ""'""))</Prop6>
+                                                       <Prop7>$(StringWithQuotes.Replace('""', ''))</Prop7>
+                                                       <Prop8>$(StringWithQuotes.Replace('""', """"))</Prop8>
+                                                       <Prop9>$(StringWithQuotes.Replace('""', ``))</Prop9>
+                                                       <Prop9>$(StringWithQuotes.Replace(`c""d`, `2""'3`))</Prop9>
                                                </PropertyGroup>
                                        </Project>
                                ";
@@ -116,6 +122,10 @@ namespace MonoTests.Microsoft.Build.BuildEngine.Various {
                        Assert.AreEqual ("True", proj.GetEvaluatedProperty ("Prop3"), "#3");
                        Assert.AreEqual ("False", proj.GetEvaluatedProperty ("Prop4"), "#4");
                        Assert.AreEqual ("", proj.GetEvaluatedProperty ("Prop5"), "#5");
+                       Assert.AreEqual ("abc'def", proj.GetEvaluatedProperty ("Prop6"), "#6");
+                       Assert.AreEqual ("abcdef", proj.GetEvaluatedProperty ("Prop7"), "#7");
+                       Assert.AreEqual ("abcdef", proj.GetEvaluatedProperty ("Prop8"), "#8");
+                       Assert.AreEqual ("ab2\"'3ef", proj.GetEvaluatedProperty ("Prop9"), "#9");
                }
 
                [Test]
diff --git a/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj b/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj
deleted file mode 100644 (file)
index e9db279..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DA3B9FEE-8FBD-4587-B760-65420765256A}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.Build.Framework</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\..\tools\xbuild\XBuildConsts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\AnyEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildEngineResult.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildErrorEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildErrorEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildEventContext.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildFinishedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildFinishedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildMessageEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildMessageEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildStartedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildStartedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildStatusEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildStatusEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildWarningEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\BuildWarningEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\CustomBuildEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\CustomBuildEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ExternalProjectFinishedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ExternalProjectStartedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\IBuildEngine.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\IBuildEngine2.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\IBuildEngine3.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\IBuildEngine4.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ICancelableTask.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\IEventRedirector.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\IEventSource.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\IForwardingLogger.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ILogger.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\INodeLogger.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ITask.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ITaskFactory.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ITaskFactory2.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ITaskHost.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ITaskItem.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ITaskItem2.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\LazyFormattedBuildEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\LoadInSeparateAppDomainAttribute.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\LoggerException.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\LoggerVerbosity.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\MessageImportance.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\OutputAttribute.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ProjectFinishedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ProjectFinishedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ProjectStartedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\ProjectStartedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\RegisteredTaskObjectLifetime.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\RequiredAttribute.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\TargetFinishedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\TargetFinishedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\TargetStartedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\TargetStartedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\TaskCommandLineEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\TaskFinishedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\TaskFinishedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\TaskPropertyInfo.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\TaskStartedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Framework\TaskStartedEventHandler.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-tests-net_4_5.csproj b/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 20ea844..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6F4A0357-C391-41B0-A1E1-BCA43ED57C90}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Microsoft.Build.Framework-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.Build.Framework_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Microsoft.Build.Framework\BuildErrorEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\BuildEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\BuildEventContextTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\BuildFinishedEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\BuildMessageEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\BuildStartedEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\BuildWarningEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\ExternalProjectFinishedEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\ExternalProjectStartedEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\LoggerExceptionTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\ProjectFinishedEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\ProjectStartedEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\TargetFinishedEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\TargetStartedEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\TaskCommandLineEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\TaskFinishedEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Framework\TaskStartedEventArgsTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_5.csproj b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_5.csproj
deleted file mode 100644 (file)
index dac54af..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A76A398F-08C0-4B3D-A624-690717233736}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.Build.Tasks.v4.0</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\..\tools\xbuild\XBuildConsts.cs" />\r
-    <Compile Include="..\Microsoft.Build.Engine\Microsoft.Build.BuildEngine\DirectoryScanner.cs" />\r
-    <Compile Include="..\Microsoft.Build.Engine\Microsoft.Build.BuildEngine\UnknownToolsVersionException.cs" />\r
-    <Compile Include="..\Microsoft.Build.Utilities\Mono.XBuild.Utilities\MSBuildUtils.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\BootstrapperBuilder.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\BuildMessage.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\BuildMessageSeverity.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\BuildResults.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\BuildSettings.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\ComponentsLocation.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\IBootstrapperBuilder.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\IBuildMessage.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\IBuildResults.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\IBuildSettings.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\IProduct.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\IProductBuilder.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\IProductBuilderCollection.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\IProductCollection.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\Product.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\ProductBuilder.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\ProductBuilderCollection.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.Bootstrapper\ProductCollection.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\ApplicationIdentity.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\ApplicationManifest.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\AssemblyIdentity.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\AssemblyManifest.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\AssemblyReference.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\AssemblyReferenceCollection.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\AssemblyReferenceType.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\BaseReference.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\ComClass.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\DeployManifest.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\FileReference.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\FileReferenceCollection.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\Manifest.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\ManifestReader.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\ManifestWriter.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\OutputMessage.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\OutputMessageCollection.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\OutputMessageType.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\ProxyStub.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\SecurityUtilities.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\TrustInfo.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\TypeLib.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\UpdateMode.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\UpdateUnit.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Deployment.ManifestUtilities\WindowClass.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Hosting\ICscHostObject.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Hosting\ICscHostObject4.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks.Hosting\IVbcHostObject.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\AL.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\AppDomainIsolatedTaskExtension.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\AspNetCompiler.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\AssemblyResolver.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\AssignCulture.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\AssignLinkMetadata.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\AssignProjectConfiguration.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\AssignTargetPath.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\CallTarget.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\CodeTaskFactory.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\CombinePath.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\CommandLineBuilderExtension.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\Copy.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\CreateCSharpManifestResourceName.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\CreateItem.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\CreateManifestResourceName.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\CreateProperty.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\CreateTemporaryVCProject.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\CreateVisualBasicManifestResourceName.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\Csc.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\Delete.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\Error.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\Exec.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\ExtractedClassName.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\FindAppConfigFile.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\FindUnderPath.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\FormatUrl.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\FormatVersion.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\GenerateApplicationManifest.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\GenerateBootstrapper.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\GenerateDeploymentManifest.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\GenerateManifestBase.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\GenerateResource.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\GenerateTrustInfo.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\GetAssemblyIdentity.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\GetFrameworkPath.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\GetFrameworkSdkPath.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\GetReferenceAssemblyPaths.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\LC.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\MakeDir.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\ManagedCompiler.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\Message.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\MSBuild.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\ReadLinesFromFile.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\RegisterAssembly.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\RemoveDir.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\RemoveDuplicates.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\ResolveAssemblyReference.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\ResolvedReference.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\ResolveManifestFiles.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\ResolveProjectBase.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\SGen.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\SignFile.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\TaskExtension.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\TaskLoggingHelperExtension.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\ToolTaskExtension.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\Touch.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\UnregisterAssembly.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\UpdateManifest.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\Vbc.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\VCBuild.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\Warning.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\WriteCodeFragment.cs" />\r
-    <Compile Include="Microsoft.Build.Tasks\WriteLinesToFile.cs" />\r
-    <Compile Include="Mono.XBuild.Tasks.GenerateResourceInternal\PoResourceReader.cs" />\r
-    <Compile Include="Mono.XBuild.Tasks.GenerateResourceInternal\PoResourceWriter.cs" />\r
-    <Compile Include="Mono.XBuild.Tasks.GenerateResourceInternal\TxtResourceReader.cs" />\r
-    <Compile Include="Mono.XBuild.Tasks.GenerateResourceInternal\TxtResourceWriter.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{6E1C7BDE-7B9E-47B0-A7B2-1561822FE922}</Project>\r
-      <Name>Microsoft.Build.Utilities-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{54DFC5A7-7C1D-4BA5-A0F7-F0B312E1E076}</Project>\r
-      <Name>Microsoft.Build.Engine-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.XBuild.Tasks/Mono.XBuild.Tasks-net_4_5.csproj">\r
-      <Project>{73FB1B7E-09F9-4E7F-A63A-C407A93BCA59}</Project>\r
-      <Name>Mono.XBuild.Tasks-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index a3479d79693bfed6e60e51e553610107f5058f84..9bd62c80a9d97068530457ee669fc6391a41fa25 100644 (file)
     <Compile Include="Microsoft.Build.Tasks\Warning.cs" />\r
     <Compile Include="Microsoft.Build.Tasks\WriteCodeFragment.cs" />\r
     <Compile Include="Microsoft.Build.Tasks\WriteLinesToFile.cs" />\r
+    <Compile Include="Microsoft.Build.Tasks\XmlPeek.cs" />\r
     <Compile Include="Mono.XBuild.Tasks.GenerateResourceInternal\PoResourceReader.cs" />\r
     <Compile Include="Mono.XBuild.Tasks.GenerateResourceInternal\PoResourceWriter.cs" />\r
     <Compile Include="Mono.XBuild.Tasks.GenerateResourceInternal\TxtResourceReader.cs" />\r
diff --git a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-tests-net_4_5.csproj b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-tests-net_4_5.csproj
deleted file mode 100644 (file)
index ae75316..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{48DFBC3C-F8C1-488E-B1E2-15555551B796}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Microsoft.Build.Tasks-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.Build.Tasks_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\Microsoft.Build.Engine\Test\Microsoft.Build.BuildEngine\Consts.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\ALTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\AssignCultureTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\AssignProjectConfigurationTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\AssignTargetPathTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\CombinePathTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\CopyTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\CreateCSharpManifestResourceNameTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\CreateItemTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\CreatePropertyTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\CreateVisualBasicManifestResourceNameTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\CscTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\DeleteTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\ErrorTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\FindAppConfigFileTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\GetFrameworkPathTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\GetFrameworkSdkPathTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\LCTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\MakeDirTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\ManagedCompilerTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\MessageTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\RemoveDirTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\RemoveDuplicatesTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\ResolveAssemblyReferenceTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\TaskBatchingTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\TestEngine.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\TestMessageLogger.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\WarningTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Tasks\WriteLinesToFileTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5.csproj">\r
-      <Project>{A76A398F-08C0-4B3D-A624-690717233736}</Project>\r
-      <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{54DFC5A7-7C1D-4BA5-A0F7-F0B312E1E076}</Project>\r
-      <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.XBuild.Tasks\Mono.XBuild.Tasks-net_4_5.csproj">\r
-      <Project>{73FB1B7E-09F9-4E7F-A63A-C407A93BCA59}</Project>\r
-      <Name>Mono.XBuild.Tasks\Mono.XBuild.Tasks-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{6E1C7BDE-7B9E-47B0-A7B2-1561822FE922}</Project>\r
-      <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 92566e79f64ec14e55daf37c76f824280bd01e41..642da43767b659aef566f33acbaaf625c7cd4502 100644 (file)
     <Compile Include="Microsoft.Build.Tasks\VCBuild.cs" />\r
     <Compile Include="Microsoft.Build.Tasks\Warning.cs" />\r
     <Compile Include="Microsoft.Build.Tasks\WriteLinesToFile.cs" />\r
+    <Compile Include="Microsoft.Build.Tasks\XmlPeek.cs" />\r
     <Compile Include="Mono.XBuild.Tasks.GenerateResourceInternal\PoResourceReader.cs" />\r
     <Compile Include="Mono.XBuild.Tasks.GenerateResourceInternal\PoResourceWriter.cs" />\r
     <Compile Include="Mono.XBuild.Tasks.GenerateResourceInternal\TxtResourceReader.cs" />\r
index 2261d7af65e926d8406757b5752a382fcdd75949..8830df5151b59012308811ad9526594e39e61760 100644 (file)
@@ -112,6 +112,7 @@ Microsoft.Build.Tasks/VCBuild.cs
 Microsoft.Build.Tasks/Warning.cs
 Microsoft.Build.Tasks/WriteCodeFragment.cs
 Microsoft.Build.Tasks/WriteLinesToFile.cs
+Microsoft.Build.Tasks/XmlPeek.cs
 Mono.XBuild.Tasks.GenerateResourceInternal/PoResourceReader.cs
 Mono.XBuild.Tasks.GenerateResourceInternal/PoResourceWriter.cs
 Mono.XBuild.Tasks.GenerateResourceInternal/TxtResourceReader.cs
index 789af4762ae9dcc420eb0a44637bee260a9f96e3..6fd7954ab42c949f141c90ef3aeeec886a16c22d 100644 (file)
@@ -87,14 +87,15 @@ namespace Microsoft.Build.Tasks {
                                string config;
 
                                string guid_str = item.GetMetadata ("Project");
-                               Guid guid;
-                               if (!TryParseGuid (guid_str, out guid)) {
+
+                               Guid guid = Guid.Empty;
+                               if (!string.IsNullOrEmpty(guid_str) && !TryParseGuid (guid_str, out guid)) {
                                        Log.LogError ("Project reference '{0}' has invalid or missing guid for metadata 'Project'.",
                                                        item.ItemSpec);
                                        return false;
                                }
 
-                               if (guidToConfigPlatform.TryGetValue (guid, out config)) {
+                               if (guid != Guid.Empty && guidToConfigPlatform.TryGetValue (guid, out config)) {
                                        string [] parts = config.Split (new char [] {'|'}, 2);
 
                                        ITaskItem new_item = new TaskItem (item);
diff --git a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/XmlPeek.cs b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/XmlPeek.cs
new file mode 100644 (file)
index 0000000..1e8cc21
--- /dev/null
@@ -0,0 +1,371 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+//-----------------------------------------------------------------------
+// </copyright>
+// <summary>Returns the value specified by XPath.</summary>
+//-----------------------------------------------------------------------
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Security;
+using System.Security.Permissions;
+using System.Text;
+using System.Xml;
+using System.Xml.Xsl;
+using System.Xml.XPath;
+
+using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
+
+namespace Microsoft.Build.Tasks
+{
+       /// <summary>
+       /// A task that returns values as specified by XPath Query
+       /// from an XML file.
+       /// </summary>
+       public class XmlPeek : TaskExtension
+       {
+               #region Members
+
+               /// <summary>
+               /// The XML input as a file path.
+               /// </summary>
+               private ITaskItem _xmlInputPath;
+
+               /// <summary>
+               /// The XML input as a string.
+               /// </summary>
+               private string _xmlContent;
+
+               /// <summary>
+               /// The XPath Query.
+               /// </summary>
+               private string _query;
+
+               /// <summary>
+               /// The results that this task will return.
+               /// </summary>
+               private ITaskItem[] _result;
+
+               /// <summary>
+               /// The namespaces for XPath query's prefixes.
+               /// </summary>
+               private string _namespaces;
+
+               #endregion
+
+               #region Properties
+
+               /// <summary>
+               /// The XML input as a file path.
+               /// </summary>
+               public ITaskItem XmlInputPath {
+                       get {
+                               return _xmlInputPath;
+                       }
+
+                       set {
+                               _xmlInputPath = value;
+                       }
+               }
+
+               /// <summary>
+               /// The XML input as a string.
+               /// </summary>
+               public string XmlContent {
+                       get {
+                               return _xmlContent;
+                       }
+
+                       set {
+                               _xmlContent = value;
+                       }
+               }
+
+               /// <summary>
+               /// The XPath Query.
+               /// </summary>
+               public string Query {
+                       get {
+                               if (_query == null)
+                                       throw new ArgumentNullException ("Query");
+                               return _query;
+                       }
+
+                       set {
+                               _query = value;
+                       }
+               }
+
+               /// <summary>
+               /// The results returned by this task.
+               /// </summary>
+               [Output]
+               public ITaskItem[] Result {
+                       get {
+                               return _result;
+                       }
+               }
+
+               /// <summary>
+               /// The namespaces for XPath query's prefixes.
+               /// </summary>
+               public string Namespaces {
+                       get {
+                               return _namespaces;
+                       }
+
+                       set {
+                               _namespaces = value;
+                       }
+               }
+
+               #endregion
+
+
+               internal static bool IsCriticalException (Exception e)
+               {
+                       if (e is StackOverflowException
+                           || e is OutOfMemoryException
+                           || e is AccessViolationException) {
+                               return true;
+                       }
+                       return false;
+               }
+
+               /// <summary>
+               /// Executes the XMLPeek task.
+               /// </summary>
+               /// <returns>true if transformation succeeds.</returns>
+               public override bool Execute ()
+               {
+                       XmlInput xmlinput;
+                       if (_query == null)
+                               throw new ArgumentNullException ("Query");
+
+                       try {
+                               xmlinput = new XmlInput (_xmlInputPath, _xmlContent);
+                       } catch (Exception e) {
+                               if (IsCriticalException (e)) {
+                                       throw;
+                               }
+
+                               Log.LogErrorWithCodeFromResources ("XmlPeek.ArgumentError", e.Message);
+                               return false;
+                       }
+
+                       XPathDocument xpathdoc;
+                       try {
+                               // Load the XPath Document
+                               using (XmlReader xr = xmlinput.CreateReader ()) {
+                                       xpathdoc = new XPathDocument (xr);
+                                       xr.Close ();
+                               }
+                       } catch (Exception e) {
+                               if (IsCriticalException (e)) {
+                                       throw;
+                               }
+
+                               Log.LogErrorWithCodeFromResources ("XmlPeekPoke.InputFileError", _xmlInputPath.ItemSpec, e.Message);
+                               return false;
+                       } finally {
+                               xmlinput.CloseReader ();
+                       }
+
+                       XPathNavigator nav = xpathdoc.CreateNavigator ();
+                       XPathExpression expr = null;
+                       try {
+                               // Create the expression from query
+                               expr = nav.Compile (_query);
+                       } catch (Exception e) {
+                               if (IsCriticalException (e)) {
+                                       throw;
+                               }
+
+                               Log.LogErrorWithCodeFromResources ("XmlPeekPoke.XPathError", _query, e.Message);
+                               return false;
+                       }
+
+                       // Create the namespace manager and parse the input.
+                       XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager (nav.NameTable);
+
+                       try {
+                               LoadNamespaces (ref xmlNamespaceManager, _namespaces);
+                       } catch (Exception e) {
+                               if (IsCriticalException (e)) {
+                                       throw;
+                               }
+
+                               Log.LogErrorWithCodeFromResources ("XmlPeek.NamespacesError", e.Message);
+                               return false;
+                       }
+
+                       try {
+                               expr.SetContext (xmlNamespaceManager);
+                       } catch (XPathException e) {
+                               Log.LogErrorWithCodeFromResources ("XmlPeek.XPathContextError", e.Message);
+                               return false;
+                       }
+
+                       XPathNodeIterator iter = nav.Select (expr);
+
+                       List<string> peekValues = new List<string> ();
+                       while (iter.MoveNext ()) {
+                               if (iter.Current.NodeType == XPathNodeType.Attribute
+                                               || iter.Current.NodeType == XPathNodeType.Text) {
+                                       peekValues.Add (iter.Current.Value);
+                               } else {
+                                       peekValues.Add (iter.Current.OuterXml);
+                               }
+                       }
+
+                       _result = new ITaskItem[peekValues.Count];
+                       int i = 0;
+                       foreach (string item in peekValues) {
+                               _result [i++] = new TaskItem (item);
+
+                               // This can be logged a lot, so low importance
+                               Log.LogMessageFromResources (MessageImportance.Low, "XmlPeek.Found", item);
+                       }
+
+                       if (_result.Length == 0) {
+                               // Logged no more than once per execute of this task
+                               Log.LogMessageFromResources ("XmlPeek.NotFound");
+                       }
+
+                       return true;
+               }
+
+               /// <summary>
+               /// Loads the namespaces specified at Namespaces parameter to XmlNSManager.
+               /// </summary>
+               /// <param name="namespaceManager">The namespace manager to load namespaces to.</param>
+               /// <param name="namepaces">The namespaces as XML snippet.</param>
+               private void LoadNamespaces (ref XmlNamespaceManager namespaceManager, string namepaces)
+               {
+                       XmlDocument doc = new XmlDocument ();
+                       try {
+                               XmlReaderSettings settings = new XmlReaderSettings ();
+                               settings.DtdProcessing = DtdProcessing.Ignore;
+
+                               using (XmlReader reader = XmlReader.Create (new StringReader ("<Namespaces>" + namepaces + "</Namespaces>"), settings)) {
+                                       doc.Load (reader);
+                               }
+                       } catch (XmlException xe) {
+                               throw new ArgumentException ("The specified Namespaces attribute is not a well-formed XML fragment.", xe);
+                       }
+
+                       XmlNodeList xnl = doc.SelectNodes ("/Namespaces/*[local-name() = 'Namespace']");
+                       for (int i = 0; i < xnl.Count; i++) {
+                               XmlNode xn = xnl [i];
+
+                               if (xn.Attributes ["Prefix"] == null) {
+                                       throw new ArgumentException (string.Format ("The specified Namespaces attribute doesn't have attribute \"{0}\".", "Name"));
+                               }
+
+                               if (xn.Attributes ["Uri"] == null) {
+                                       throw new ArgumentException (string.Format ("The specified Namespaces attribute doesn't have attribute \"{0}\".", "Uri"));
+                               }
+
+                               namespaceManager.AddNamespace (xn.Attributes ["Prefix"].Value, xn.Attributes ["Uri"].Value);
+                       }
+               }
+
+               /// <summary>
+               /// This class prepares XML input from XMLInputPath and XMLContent parameters
+               /// </summary>
+               internal class XmlInput
+               {
+                       /// <summary>
+                       /// What XML input type are we at.
+                       /// </summary>
+                       private XmlModes _xmlMode;
+
+                       /// <summary>
+                       /// This either contains the raw Xml or the path to Xml file.
+                       /// </summary>
+                       private string _data;
+
+                       /// <summary>
+                       /// Filestream used to read XML.
+                       /// </summary>
+                       private FileStream _fs;
+
+                       /// <summary>
+                       /// Constructor.
+                       /// Only one parameter should be non null or will throw ArgumentException.
+                       /// </summary>
+                       /// <param name="xmlInputPath">The path to XML file or null.</param>
+                       /// <param name="xmlContent">The raw XML.</param>
+                       public XmlInput (ITaskItem xmlInputPath, string xmlContent)
+                       {
+                               if (xmlInputPath != null && xmlContent != null) {
+                                       throw new ArgumentException ("Only one of XmlContent or XmlInputPaths arguments can be set.");
+                               } else if (xmlInputPath == null && xmlContent == null) {
+                                       throw new ArgumentException ("One of XmlContent or XmlInputPaths arguments must be set.");
+                               }
+
+                               if (xmlInputPath != null) {
+                                       _xmlMode = XmlModes.XmlFile;
+                                       _data = xmlInputPath.ItemSpec;
+                               } else {
+                                       _xmlMode = XmlModes.Xml;
+                                       _data = xmlContent;
+                               }
+                       }
+
+                       /// <summary>
+                       /// Possible accepted types of XML input.
+                       /// </summary>
+                       public enum XmlModes
+                       {
+                               /// <summary>
+                               /// If the mode is a XML file.
+                               /// </summary>
+                               XmlFile,
+
+                               /// <summary>
+                               /// If the mode is a raw XML.
+                               /// </summary>
+                               Xml
+                       }
+
+                       /// <summary>
+                       /// Returns the current mode of the XmlInput
+                       /// </summary>
+                       public XmlModes XmlMode {
+                               get {
+                                       return _xmlMode;
+                               }
+                       }
+
+                       /// <summary>
+                       /// Creates correct reader based on the input type.
+                       /// </summary>
+                       /// <returns>The XmlReader object</returns>
+                       public XmlReader CreateReader ()
+                       {
+                               if (_xmlMode == XmlModes.XmlFile) {
+                                       _fs = new FileStream (_data, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
+                                       return XmlReader.Create (_fs);
+                               } else { // xmlModes.Xml 
+                                       return XmlReader.Create (new StringReader (_data));
+                               }
+                       }
+
+                       /// <summary>
+                       /// Closes the reader.
+                       /// </summary>
+                       public void CloseReader ()
+                       {
+                               if (_fs != null) {
+                                       _fs.Close ();
+                                       _fs = null;
+                               }
+                       }
+               }
+       }
+}
index e665a41cebfd6fa4869e4fbba2cdc3927fed736d..2b83e4dc5559141b393d4cba4aa4caac5d86fd79 100644 (file)
@@ -115,10 +115,10 @@ Log.LogWarning(""Message: "" + Message);
     AssemblyFile='$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll' >
     <ParameterGroup />
     <Task>
-      <Reference Include='System.Drawing' />
+      <Reference Include='System.Runtime.Serialization' />
       <Code Type='Fragment' Language='cs'>
 <![CDATA[
-Log.LogWarning(""Color: "" + System.Drawing.Color.CornflowerBlue);
+Log.LogWarning(""A GUID generated by System.Xml: "" + new System.Xml.UniqueId());
 ]]>      </Code>
     </Task>
   </UsingTask>
diff --git a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj
deleted file mode 100644 (file)
index a2bd202..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6E1C7BDE-7B9E-47B0-A7B2-1561822FE922}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.Build.Utilities.v4.0</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\..\tools\xbuild\XBuildConsts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\AppDomainIsolatedTask.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\CommandLineBuilder.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\HostObjectInitializationStatus.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\IAsyncOperation.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\IProcessAsyncOperation.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\Logger.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\MSBuildErrorParser.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\ProcessService.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\ProcessWrapper.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\TargetDotNetFrameworkVersion.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\Task.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\TaskItem.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\TaskLoggingHelper.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\ToolLocationHelper.cs" />\r
-    <Compile Include="Microsoft.Build.Utilities\ToolTask.cs" />\r
-    <Compile Include="Mono.XBuild.Utilities\MonoLocationHelper.cs" />\r
-    <Compile Include="Mono.XBuild.Utilities\MSBuildUtils.cs" />\r
-    <Compile Include="Mono.XBuild.Utilities\ReservedNameUtils.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-tests-net_4_5.csproj b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 9348f77..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DD1C0229-22E8-4C95-9CE5-4E656D48D15D}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Microsoft.Build.Utilities-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.Build.Utilities_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Microsoft.Build.Utilities\CommandLineBuilderTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Utilities\LoggerTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Utilities\TaskItemTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Utilities\TaskLoggingHelperTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Utilities\ToolTaskTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{6E1C7BDE-7B9E-47B0-A7B2-1561822FE922}</Project>\r
-      <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0.csproj">\r
-      <Project>{4E55B240-B470-43B4-ABDA-8C03E7B1BF8E}</Project>\r
-      <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index df09e1c8ec3abf2b7a8d939245646c51555e47ca..5a050e1a4aa8f5d30c680767a3ddee0020b6465a 100644 (file)
@@ -48,11 +48,12 @@ namespace Microsoft.Build.Utilities
                Version451,
 #endif
 #if XBUILD_14
-               Version453,
+               Version46,
+               Version461,
 #endif
 
 #if XBUILD_14
-               VersionLatest = Version453
+               VersionLatest = Version461
 #elif XBUILD_12
                VersionLatest = Version451
 #else
index 64ed0757a90fd04d1047d4af9ae78bd361c102f2..8806c73e72d08ba7d1f1068ba3e2bbda0a34032d 100644 (file)
@@ -61,41 +61,44 @@ namespace Microsoft.Build.Utilities
                        runningOnDotNet = !string.IsNullOrEmpty (windowsPath) && lib_mono_dir.StartsWith (windowsPath);
 
                        if (Environment.GetEnvironmentVariable ("TESTING_MONO") != null) {
-                               mono_dir = new string [] {
-                                       Path.Combine (lib_mono_dir, "net_1_0"),
-                                       Path.Combine (lib_mono_dir, "net_2_0"),
-                                       Path.Combine (lib_mono_dir, "net_2_0"),
-                                       Path.Combine (lib_mono_dir, "net_3_5"),
+                               mono_dir = new string [] {                   // TargetDotNetFrameworkVersion:
+                                       Path.Combine (lib_mono_dir, "net_1_0"),  // Version11
+                                       Path.Combine (lib_mono_dir, "net_2_0"),  // Version20
+                                       Path.Combine (lib_mono_dir, "net_2_0"),  // Version30
+                                       Path.Combine (lib_mono_dir, "net_3_5"),  // Version35
                                        // mono's 4.0 is not an actual framework directory with all tools etc
                                        // it's simply reference assemblies. So like .NET we consider 4.5 to
                                        // be a complete replacement for 4.0.
-                                       Path.Combine (lib_mono_dir, "net_4_x"),
-                                       Path.Combine (lib_mono_dir, "net_4_x"),
-                                       Path.Combine (lib_mono_dir, "net_4_x"),
-                                       Path.Combine (lib_mono_dir, "net_4_x")                                  
+                                       Path.Combine (lib_mono_dir, "net_4_x"),  // Version40
+                                       Path.Combine (lib_mono_dir, "net_4_x"),  // Version45
+                                       Path.Combine (lib_mono_dir, "net_4_x"),  // Version451
+                                       Path.Combine (lib_mono_dir, "net_4_x"),  // Version46
+                                       Path.Combine (lib_mono_dir, "net_4_x"),  // Version461
                                };      
                        } else if (runningOnDotNet) {
                                mono_dir = new string [] {
-                                       Path.Combine (lib_mono_dir, "v1.0.3705"),
-                                       Path.Combine (lib_mono_dir, "v2.0.50727"),
-                                       Path.Combine (lib_mono_dir, "v2.0.50727"),
-                                       Path.Combine (lib_mono_dir, "v3.5"),
-                                       Path.Combine (lib_mono_dir, "v4.0.30319"),
-                                       Path.Combine (lib_mono_dir, "v4.0.30319"),
-                                       Path.Combine (lib_mono_dir, "v4.0.30319"),
-                                       Path.Combine (lib_mono_dir, "v4.0.30319")                                       
+                                       Path.Combine (lib_mono_dir, "v1.0.3705"),   // Version11
+                                       Path.Combine (lib_mono_dir, "v2.0.50727"),  // Version20
+                                       Path.Combine (lib_mono_dir, "v2.0.50727"),  // Version30
+                                       Path.Combine (lib_mono_dir, "v3.5"),        // Version35
+                                       Path.Combine (lib_mono_dir, "v4.0.30319"),  // Version40
+                                       Path.Combine (lib_mono_dir, "v4.0.30319"),  // Version45
+                                       Path.Combine (lib_mono_dir, "v4.0.30319"),  // Version451
+                                       Path.Combine (lib_mono_dir, "v4.0.30319"),  // Version46
+                                       Path.Combine (lib_mono_dir, "v4.0.30319"),  // Version461
                                };
                        } else {
                                mono_dir = new string [] {
-                                       Path.Combine (lib_mono_dir, "1.0"),
-                                       Path.Combine (lib_mono_dir, "2.0"),
-                                       Path.Combine (lib_mono_dir, "2.0"),
-                                       Path.Combine (lib_mono_dir, "3.5"),
+                                       Path.Combine (lib_mono_dir, "1.0"),  // Version11
+                                       Path.Combine (lib_mono_dir, "2.0"),  // Version20
+                                       Path.Combine (lib_mono_dir, "2.0"),  // Version30
+                                       Path.Combine (lib_mono_dir, "3.5"),  // Version35
                                        // see comment above regarding 4.0/4.5
-                                       Path.Combine (lib_mono_dir, "4.5"),
-                                       Path.Combine (lib_mono_dir, "4.5"),
-                                       Path.Combine (lib_mono_dir, "4.5"),
-                                       Path.Combine (lib_mono_dir, "4.5")
+                                       Path.Combine (lib_mono_dir, "4.5"),  // Version40
+                                       Path.Combine (lib_mono_dir, "4.5"),  // Version45
+                                       Path.Combine (lib_mono_dir, "4.5"),  // Version451
+                                       Path.Combine (lib_mono_dir, "4.5"),  // Version46
+                                       Path.Combine (lib_mono_dir, "4.5"),  // Version461
                                };
                        }
 
diff --git a/mcs/class/Microsoft.Build/Microsoft.Build-net_4_5.csproj b/mcs/class/Microsoft.Build/Microsoft.Build-net_4_5.csproj
deleted file mode 100644 (file)
index 63ecb93..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1379065B-9195-4ED3-95A7-9508211A7A7E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.Build</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MICROSOFT_BUILD_DLL</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MICROSOFT_BUILD_DLL</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\..\tools\xbuild\XBuildConsts.cs" />\r
-    <Compile Include="..\Microsoft.Build.Engine\Microsoft.Build.BuildEngine\ColorResetter.cs" />\r
-    <Compile Include="..\Microsoft.Build.Engine\Microsoft.Build.BuildEngine\ColorSetter.cs" />\r
-    <Compile Include="..\Microsoft.Build.Engine\Microsoft.Build.BuildEngine\ConsoleLogger.cs" />\r
-    <Compile Include="..\Microsoft.Build.Engine\Microsoft.Build.BuildEngine\DirectoryScanner.cs" />\r
-    <Compile Include="..\Microsoft.Build.Engine\Microsoft.Build.BuildEngine\EventSource.cs" />\r
-    <Compile Include="..\Microsoft.Build.Engine\Microsoft.Build.BuildEngine\FileLogger.cs" />\r
-    <Compile Include="..\Microsoft.Build.Engine\Microsoft.Build.BuildEngine\WriteHandler.cs" />\r
-    <Compile Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities\TargetDotNetFrameworkVersion.cs" />\r
-    <Compile Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities\TaskItem.cs" />\r
-    <Compile Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities\ToolLocationHelper.cs" />\r
-    <Compile Include="..\Microsoft.Build.Utilities\Mono.XBuild.Utilities\MSBuildUtils.cs" />\r
-    <Compile Include="..\Microsoft.Build.Utilities\Mono.XBuild.Utilities\ReservedNameUtils.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ElementLocation.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectChooseElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectCommentElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectElementContainer.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectExtensionsElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectImportElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectImportGroupElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectItemDefinitionElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectItemDefinitionGroupElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectItemElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectItemGroupElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectMetadataElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectOnErrorElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectOtherwiseElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectOutputElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectPropertyElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectPropertyGroupElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectRootElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectTargetElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectTaskElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectUsingTaskBodyElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectUsingTaskElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectUsingTaskParameterElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\ProjectWhenElement.cs" />\r
-    <Compile Include="Microsoft.Build.Construction\UsingTaskParameterGroupElement.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\Project.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\ProjectChangedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\ProjectCollection.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\ProjectCollectionChangedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\ProjectCollectionChangedState.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\ProjectItem.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\ProjectItemDefinition.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\ProjectLoadSettings.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\ProjectMetadata.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\ProjectProperty.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\ProjectXmlChangedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\ResolvedImport.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\SubToolset.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\Toolset.cs" />\r
-    <Compile Include="Microsoft.Build.Evaluation\ToolsetDefinitionLocations.cs" />\r
-    <Compile Include="Microsoft.Build.Exceptions\BuildAbortedException.cs" />\r
-    <Compile Include="Microsoft.Build.Exceptions\InternalLoggerException.cs" />\r
-    <Compile Include="Microsoft.Build.Exceptions\InvalidProjectFileException.cs" />\r
-    <Compile Include="Microsoft.Build.Exceptions\InvalidToolsetDefinitionException.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\BuildManager.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\BuildParameters.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\BuildRequestData.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\BuildRequestDataFlags.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\BuildResult.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\BuildResultCode.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\BuildSubmission.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\BuildSubmissionCompleteCallback.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\HostServices.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ITargetResult.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\NodeAffinity.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\NodeEngineShutdownReason.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\OutOfProcNode.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectItemDefinitionInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectItemGroupTaskInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectItemGroupTaskItemInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectItemGroupTaskMetadataInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectItemInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectMetadataInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectOnErrorInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectPropertyGroupTaskInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectPropertyGroupTaskPropertyInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectPropertyInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectTargetInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectTargetInstanceChild.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectTaskInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectTaskInstanceChild.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectTaskOutputItemInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\ProjectTaskOutputPropertyInstance.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\TargetResult.cs" />\r
-    <Compile Include="Microsoft.Build.Execution\TargetResultCode.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\BuildEngine4.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\BuildNodeManager.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\BuildTaskDatabase.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\BuildTaskFactory.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\CollectionFromEnumerable.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\ExpressionConstructs.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\ExpressionEvaluator.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\ExpressionParserManual.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\ExpressionTokenizer.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\FilteredEnumerable.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\ProjectTaskItem.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\ReverseEnumerable.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\WindowsCompatibilityExtensions.cs" />\r
-    <Compile Include="Microsoft.Build.Logging\ConfigurableForwardingLogger.cs" />\r
-    <Compile Include="Microsoft.Build.Logging\ForwardingLoggerRecord.cs" />\r
-    <Compile Include="Microsoft.Build.Logging\LoggerDescription.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\ExpressionParser.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{54DFC5A7-7C1D-4BA5-A0F7-F0B312E1E076}</Project>\r
-      <Name>Microsoft.Build.Engine-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{54DFC5A7-7C1D-4BA5-A0F7-F0B312E1E076}</Project>\r
-      <Name>Microsoft.Build.Engine-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Microsoft.Build/Microsoft.Build-tests-net_4_5.csproj b/mcs/class/Microsoft.Build/Microsoft.Build-tests-net_4_5.csproj
deleted file mode 100644 (file)
index e82e1e5..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{328A697E-59B7-442A-AE1E-0D4C49C2D7E0}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Microsoft.Build-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.Build_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;MICROSOFT_BUILD_DLL</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;MICROSOFT_BUILD_DLL</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\FunctionalTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Construction\ProjectItemElementTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Construction\ProjectRootElementTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Evaluation\ProjectCollectionTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Evaluation\ProjectItemDefinitionTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Evaluation\ProjectItemTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Evaluation\ProjectPropertyTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Evaluation\ProjectTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Evaluation\ResolvedImportTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Evaluation\ToolsetTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Execution\BuildManagerTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Execution\BuildParametersTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Execution\BuildRequestDataTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Execution\BuildSubmissionTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Execution\ProjectInstanceTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Execution\ProjectMetadataInstanceTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Execution\ProjectTargetInstanceTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Internal\CollectionFromEnumerableTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Internal\ExpressionParserTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Logging\ConsoleLoggerTest.cs" />\r
-    <Compile Include="Test\Microsoft.Build.Logging\LoggerDescriptionTest.cs" />\r
-    <Compile Include="Microsoft.Build.Internal\ExpressionParser.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build\Microsoft.Build-net_4_5.csproj">\r
-      <Project>{1379065B-9195-4ED3-95A7-9508211A7A7E}</Project>\r
-      <Name>Microsoft.Build\Microsoft.Build-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{54DFC5A7-7C1D-4BA5-A0F7-F0B312E1E076}</Project>\r
-      <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{DA3B9FEE-8FBD-4587-B760-65420765256A}</Project>\r
-      <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{6E1C7BDE-7B9E-47B0-A7B2-1561822FE922}</Project>\r
-      <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj b/mcs/class/Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj
deleted file mode 100644 (file)
index f58a89f..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D554618C-5D38-413A-82BA-7A70B6FC61A3}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.CSharp</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\Binder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpArgumentInfo.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpArgumentInfoFlags.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpBinaryOperationBinder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpBinder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpBinderFlags.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpConvertBinder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpGetIndexBinder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpGetMemberBinder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpInvokeBinder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpInvokeConstructorBinder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpInvokeMemberBinder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpIsEventBinder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpSetIndexBinder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpSetMemberBinder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\CSharpUnaryOperationBinder.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\DynamicContext.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\ErrorPrinter.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\Extensions.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\RuntimeBinderContext.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\RuntimeBinderException.cs" />\r
-    <Compile Include="Microsoft.CSharp.RuntimeBinder\RuntimeBinderInternalCompilerException.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.CSharp/Mono.CSharp-net_4_5.csproj">\r
-      <Project>{811AC316-9CC2-497D-A45E-7B6B1E0E481B}</Project>\r
-      <Name>Mono.CSharp-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_4_5.csproj b/mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_4_5.csproj
deleted file mode 100644 (file)
index 880811d..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D2B40179-234C-4709-82A2-AE91FA7AD106}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.VisualC</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.VisualC\DebugInfoInPDBAttribute.cs" />\r
-    <Compile Include="Microsoft.VisualC\DecoratedNameAttribute.cs" />\r
-    <Compile Include="Microsoft.VisualC\IsConstModifier.cs" />\r
-    <Compile Include="Microsoft.VisualC\IsCXXReferenceModifier.cs" />\r
-    <Compile Include="Microsoft.VisualC\IsLongModifier.cs" />\r
-    <Compile Include="Microsoft.VisualC\IsSignedModifier.cs" />\r
-    <Compile Include="Microsoft.VisualC\IsVolatileModifier.cs" />\r
-    <Compile Include="Microsoft.VisualC\MiscellaneousBitsAttribute.cs" />\r
-    <Compile Include="Microsoft.VisualC\NeedsCopyConstructorModifier.cs" />\r
-    <Compile Include="Microsoft.VisualC\NoSignSpecifiedModifier.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj b/mcs/class/Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj
deleted file mode 100644 (file)
index 3117b57..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{50DC9191-2D18-4EDB-A929-4ECAB7981A1C}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Microsoft.Web.Infrastructure</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include=".\Microsoft.Web.Infrastructure.DynamicModuleHelper\DynamicModuleUtility.cs" />\r
-    <Compile Include=".\Microsoft.Web.Infrastructure.DynamicValidationHelper\LazyWebROCollection.cs" />\r
-    <Compile Include=".\Microsoft.Web.Infrastructure.DynamicValidationHelper\ValidationUtility.cs" />\r
-    <Compile Include=".\Microsoft.Web.Infrastructure\HttpContextHelper.cs" />\r
-    <Compile Include=".\Microsoft.Web.Infrastructure\InfrastructureHelper.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.C5/Mono.C5-net_4_5.csproj b/mcs/class/Mono.C5/Mono.C5-net_4_5.csproj
deleted file mode 100644 (file)
index 96531f1..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4A54C7EC-01F3-4C6E-9181-84F178FD0F97}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,169,219,414,1030,3001,3005,3006</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.C5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,169,219,414,1030,3001,3005,3006</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,169,219,414,1030,3001,3005,3006</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="C5\arrays\ArrayList.cs" />\r
-    <Compile Include="C5\arrays\CircularQueue.cs" />\r
-    <Compile Include="C5\arrays\HashedArrayList.cs" />\r
-    <Compile Include="C5\arrays\SortedArray.cs" />\r
-    <Compile Include="C5\AssemblyInfo.cs" />\r
-    <Compile Include="C5\Attributes.cs" />\r
-    <Compile Include="C5\Builtin.cs" />\r
-    <Compile Include="C5\Collections.cs" />\r
-    <Compile Include="C5\Comparer.cs" />\r
-    <Compile Include="C5\Delegates.cs" />\r
-    <Compile Include="C5\Dictionaries.cs" />\r
-    <Compile Include="C5\Enums.cs" />\r
-    <Compile Include="C5\Events.cs" />\r
-    <Compile Include="C5\Exceptions.cs" />\r
-    <Compile Include="C5\Formatting.cs" />\r
-    <Compile Include="C5\Hashers.cs" />\r
-    <Compile Include="C5\hashing\HashBag.cs" />\r
-    <Compile Include="C5\hashing\HashDictionary.cs" />\r
-    <Compile Include="C5\hashing\HashTable.cs" />\r
-    <Compile Include="C5\heaps\IntervalHeap.cs" />\r
-    <Compile Include="C5\Interfaces.cs" />\r
-    <Compile Include="C5\linkedlists\HashedLinkedList.cs" />\r
-    <Compile Include="C5\linkedlists\LinkedList.cs" />\r
-    <Compile Include="C5\MappedEnumerators.cs" />\r
-    <Compile Include="C5\Random.cs" />\r
-    <Compile Include="C5\Records.cs" />\r
-    <Compile Include="C5\Sorting.cs" />\r
-    <Compile Include="C5\trees\RedBlackTreeBag.cs" />\r
-    <Compile Include="C5\trees\RedBlackTreeDictionary.cs" />\r
-    <Compile Include="C5\trees\RedBlackTreeSet.cs" />\r
-    <Compile Include="C5\ViewSupport.cs" />\r
-    <Compile Include="C5\WrappedArray.cs" />\r
-    <Compile Include="C5\Wrappers.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.C5/Mono.C5-tests-net_4_5.csproj b/mcs/class/Mono.C5/Mono.C5-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 28308f2..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8D349606-02F4-4AAF-83AF-676A50F6D6B6}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,169,219,414,1030,3001,3005,3006,618,219,169</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.C5-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.C5_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,169,219,414,1030,3001,3005,3006,618,219,169</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,169,219,414,1030,3001,3005,3006,618,219,169</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\arrays\ArrayListTest.cs" />\r
-    <Compile Include="Test\arrays\CircularQueueTest.cs" />\r
-    <Compile Include="Test\arrays\HashedArrayListTest.cs" />\r
-    <Compile Include="Test\arrays\SortedArrayTests.cs" />\r
-    <Compile Include="Test\AssemblyInfo.cs" />\r
-    <Compile Include="Test\BasesTest.cs" />\r
-    <Compile Include="Test\hashing\HashBagTests.cs" />\r
-    <Compile Include="Test\hashing\HashDictionaryTests.cs" />\r
-    <Compile Include="Test\hashing\HashTableTests.cs" />\r
-    <Compile Include="Test\heaps\HeapTests.cs" />\r
-    <Compile Include="Test\InterfacesTest.cs" />\r
-    <Compile Include="Test\linkedlists\HashedLinkedListTest.cs" />\r
-    <Compile Include="Test\linkedlists\LinkedListTest.cs" />\r
-    <Compile Include="Test\Records.cs" />\r
-    <Compile Include="Test\Sorting.cs" />\r
-    <Compile Include="Test\SupportClasses.cs" />\r
-    <Compile Include="Test\templates\Clone.cs" />\r
-    <Compile Include="Test\templates\Events.cs" />\r
-    <Compile Include="Test\templates\GenericCollectionTester.cs" />\r
-    <Compile Include="Test\templates\List.cs" />\r
-    <Compile Include="Test\trees\Bag.cs" />\r
-    <Compile Include="Test\trees\Dictionary.cs" />\r
-    <Compile Include="Test\trees\RedBlackTreeSetTests.cs" />\r
-    <Compile Include="Test\WrappersTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.C5\Mono.C5-net_4_5.csproj">\r
-      <Project>{4A54C7EC-01F3-4C6E-9181-84F178FD0F97}</Project>\r
-      <Name>Mono.C5\Mono.C5-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index be27ecf831cb2e5bec4382db9b859225161c73e0..5fe1a18705aa43e4600800f4ed850a216c73066b 100644 (file)
@@ -11,7 +11,13 @@ ifdef MOBILE_STATIC
 LIB_MCS_FLAGS += -d:IOS_REFLECTION
 endif
 
+ifndef NO_THREAD_ABORT
+REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_THREAD_ABORT
+endif
+
 TEST_MCS_FLAGS = -r:System.Core.dll
 
+LIB_MCS_FLAGS += $(REFERENCE_SOURCES_FLAGS)
+
 include ../../build/library.make
 
diff --git a/mcs/class/Mono.CSharp/Mono.CSharp-net_4_5.csproj b/mcs/class/Mono.CSharp/Mono.CSharp-net_4_5.csproj
deleted file mode 100644 (file)
index 57e10a9..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{811AC316-9CC2-497D-A45E-7B6B1E0E481B}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.CSharp</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />\r
-    <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />\r
-    <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs" />\r
-    <Compile Include="..\..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
-    <Compile Include="..\..\mcs\anonymous.cs" />\r
-    <Compile Include="..\..\mcs\argument.cs" />\r
-    <Compile Include="..\..\mcs\assembly.cs" />\r
-    <Compile Include="..\..\mcs\assign.cs" />\r
-    <Compile Include="..\..\mcs\async.cs" />\r
-    <Compile Include="..\..\mcs\attribute.cs" />\r
-    <Compile Include="..\..\mcs\cfold.cs" />\r
-    <Compile Include="..\..\mcs\class.cs" />\r
-    <Compile Include="..\..\mcs\codegen.cs" />\r
-    <Compile Include="..\..\mcs\complete.cs" />\r
-    <Compile Include="..\..\mcs\const.cs" />\r
-    <Compile Include="..\..\mcs\constant.cs" />\r
-    <Compile Include="..\..\mcs\context.cs" />\r
-    <Compile Include="..\..\mcs\convert.cs" />\r
-    <Compile Include="..\..\mcs\cs-parser.cs" />\r
-    <Compile Include="..\..\mcs\cs-tokenizer.cs" />\r
-    <Compile Include="..\..\mcs\decl.cs" />\r
-    <Compile Include="..\..\mcs\delegate.cs" />\r
-    <Compile Include="..\..\mcs\doc.cs" />\r
-    <Compile Include="..\..\mcs\driver.cs" />\r
-    <Compile Include="..\..\mcs\dynamic.cs" />\r
-    <Compile Include="..\..\mcs\ecore.cs" />\r
-    <Compile Include="..\..\mcs\enum.cs" />\r
-    <Compile Include="..\..\mcs\eval.cs" />\r
-    <Compile Include="..\..\mcs\expression.cs" />\r
-    <Compile Include="..\..\mcs\field.cs" />\r
-    <Compile Include="..\..\mcs\flowanalysis.cs" />\r
-    <Compile Include="..\..\mcs\generic.cs" />\r
-    <Compile Include="..\..\mcs\import.cs" />\r
-    <Compile Include="..\..\mcs\iterators.cs" />\r
-    <Compile Include="..\..\mcs\lambda.cs" />\r
-    <Compile Include="..\..\mcs\linq.cs" />\r
-    <Compile Include="..\..\mcs\literal.cs" />\r
-    <Compile Include="..\..\mcs\location.cs" />\r
-    <Compile Include="..\..\mcs\membercache.cs" />\r
-    <Compile Include="..\..\mcs\method.cs" />\r
-    <Compile Include="..\..\mcs\modifiers.cs" />\r
-    <Compile Include="..\..\mcs\module.cs" />\r
-    <Compile Include="..\..\mcs\namespace.cs" />\r
-    <Compile Include="..\..\mcs\nullable.cs" />\r
-    <Compile Include="..\..\mcs\parameter.cs" />\r
-    <Compile Include="..\..\mcs\pending.cs" />\r
-    <Compile Include="..\..\mcs\property.cs" />\r
-    <Compile Include="..\..\mcs\reflection.cs" />\r
-    <Compile Include="..\..\mcs\report.cs" />\r
-    <Compile Include="..\..\mcs\settings.cs" />\r
-    <Compile Include="..\..\mcs\statement.cs" />\r
-    <Compile Include="..\..\mcs\support.cs" />\r
-    <Compile Include="..\..\mcs\typemanager.cs" />\r
-    <Compile Include="..\..\mcs\typespec.cs" />\r
-    <Compile Include="..\..\mcs\visit.cs" />\r
-    <Compile Include="..\..\tools\monop\outline.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 440042170c2b647bce469c7d2f3f06f9d002c58d..b36796d24395a480f418c81965978f4b9d4d11a6 100644 (file)
@@ -25,7 +25,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
+    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;MONO_FEATURE_THREAD_ABORT</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -33,7 +33,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
+    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;MONO_FEATURE_THREAD_ABORT</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
diff --git a/mcs/class/Mono.CSharp/Mono.CSharp-tests-net_4_5.csproj b/mcs/class/Mono.CSharp/Mono.CSharp-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 7635480..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{76213E4A-6D78-4274-9EB9-FCE25187E353}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.CSharp-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.CSharp_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\AssertReportPrinter.cs" />\r
-    <Compile Include="Test\Evaluator\BuildinCommands.cs" />\r
-    <Compile Include="Test\Evaluator\CompletionTest.cs" />\r
-    <Compile Include="Test\Evaluator\EvaluatorFixture.cs" />\r
-    <Compile Include="Test\Evaluator\EvaluatorTest.cs" />\r
-    <Compile Include="Test\Evaluator\ExpressionsTest.cs" />\r
-    <Compile Include="Test\Evaluator\TypesTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.CSharp\Mono.CSharp-net_4_5.csproj">\r
-      <Project>{811AC316-9CC2-497D-A45E-7B6B1E0E481B}</Project>\r
-      <Name>Mono.CSharp\Mono.CSharp-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 57b6e1c4bcd9200cc45d6815891aafc823b0975a..74fc4a03cf2cbd4605da80b3f3059eec57089057 100644 (file)
@@ -83,6 +83,26 @@ namespace MonoTests.EvaluatorTest
                        Evaluator.Evaluate ("File.Exists (\"/etc/passwd\");");
                }
 
+               [Test]
+               public void UsingWithError ()
+               {
+                       try {
+                               Evaluator.Run ("using System.DateTime;");
+                               Assert.Fail ("#1");
+                       } catch {
+                       }
+
+                       Evaluator.Evaluate ("1+1");
+               }
+
+               [Test]
+               public void UsingAlias ()
+               {
+                       Evaluator.Run("using System;");
+                       Evaluator.Run("using MyConsole = System.Console;");
+                       Evaluator.Run("Console.WriteLine(\"Hello World\")");
+               }
+
                [Test]
                public void WithTypeBuilders ()
                {
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo-net_4_5.csproj b/mcs/class/Mono.Cairo/Mono.Cairo-net_4_5.csproj
deleted file mode 100644 (file)
index 59a40bb..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C07C4C90-8F45-49A8-8F22-919577916756}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Cairo</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include=".\Mono.Cairo\Antialias.cs" />\r
-    <Compile Include=".\Mono.Cairo\Cairo.cs" />\r
-    <Compile Include=".\Mono.Cairo\CairoDebug.cs" />\r
-    <Compile Include=".\Mono.Cairo\Color.cs" />\r
-    <Compile Include=".\Mono.Cairo\Content.cs" />\r
-    <Compile Include=".\Mono.Cairo\Context.cs" />\r
-    <Compile Include=".\Mono.Cairo\DirectFBSurface.cs" />\r
-    <Compile Include=".\Mono.Cairo\Distance.cs" />\r
-    <Compile Include=".\Mono.Cairo\Extend.cs" />\r
-    <Compile Include=".\Mono.Cairo\FillRule.cs" />\r
-    <Compile Include=".\Mono.Cairo\Filter.cs" />\r
-    <Compile Include=".\Mono.Cairo\FontExtents.cs" />\r
-    <Compile Include=".\Mono.Cairo\FontFace.cs" />\r
-    <Compile Include=".\Mono.Cairo\FontOptions.cs" />\r
-    <Compile Include=".\Mono.Cairo\FontSlant.cs" />\r
-    <Compile Include=".\Mono.Cairo\FontType.cs" />\r
-    <Compile Include=".\Mono.Cairo\FontWeight.cs" />\r
-    <Compile Include=".\Mono.Cairo\Format.cs" />\r
-    <Compile Include=".\Mono.Cairo\GlitzSurface.cs" />\r
-    <Compile Include=".\Mono.Cairo\Glyph.cs" />\r
-    <Compile Include=".\Mono.Cairo\Gradient.cs" />\r
-    <Compile Include=".\Mono.Cairo\HintMetrics.cs" />\r
-    <Compile Include=".\Mono.Cairo\HintStyle.cs" />\r
-    <Compile Include=".\Mono.Cairo\ImageSurface.cs" />\r
-    <Compile Include=".\Mono.Cairo\LinearGradient.cs" />\r
-    <Compile Include=".\Mono.Cairo\LineCap.cs" />\r
-    <Compile Include=".\Mono.Cairo\LineJoin.cs" />\r
-    <Compile Include=".\Mono.Cairo\Matrix.cs" />\r
-    <Compile Include=".\Mono.Cairo\NativeMethods.cs" />\r
-    <Compile Include=".\Mono.Cairo\Operator.cs" />\r
-    <Compile Include=".\Mono.Cairo\Path.cs" />\r
-    <Compile Include=".\Mono.Cairo\Pattern.cs" />\r
-    <Compile Include=".\Mono.Cairo\PatternType.cs" />\r
-    <Compile Include=".\Mono.Cairo\PdfSurface.cs" />\r
-    <Compile Include=".\Mono.Cairo\Point.cs" />\r
-    <Compile Include=".\Mono.Cairo\PointD.cs" />\r
-    <Compile Include=".\Mono.Cairo\PSSurface.cs" />\r
-    <Compile Include=".\Mono.Cairo\RadialGradient.cs" />\r
-    <Compile Include=".\Mono.Cairo\Rectangle.cs" />\r
-    <Compile Include=".\Mono.Cairo\Region.cs" />\r
-    <Compile Include=".\Mono.Cairo\ScaledFont.cs" />\r
-    <Compile Include=".\Mono.Cairo\SolidPattern.cs" />\r
-    <Compile Include=".\Mono.Cairo\Status.cs" />\r
-    <Compile Include=".\Mono.Cairo\SubpixelOrder.cs" />\r
-    <Compile Include=".\Mono.Cairo\Surface.cs" />\r
-    <Compile Include=".\Mono.Cairo\SurfacePattern.cs" />\r
-    <Compile Include=".\Mono.Cairo\SurfaceType.cs" />\r
-    <Compile Include=".\Mono.Cairo\SvgSurface.cs" />\r
-    <Compile Include=".\Mono.Cairo\SvgVersion.cs" />\r
-    <Compile Include=".\Mono.Cairo\TextExtents.cs" />\r
-    <Compile Include=".\Mono.Cairo\Win32Surface.cs" />\r
-    <Compile Include=".\Mono.Cairo\XcbSurface.cs" />\r
-    <Compile Include=".\Mono.Cairo\XlibSurface.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 57cb86cd8b0e855c9f6ee28749240cd5e39766c0..7ca0dee45dd5f5ee5ebb41c273fc1c3373d62297 100644 (file)
@@ -230,7 +230,7 @@ namespace Cairo {
                        NativeMethods.cairo_set_dash (handle, dashes, dashes.Length, offset);
                }
 
-               [Obsolete("Use GetSource/GetSource")]
+               [Obsolete("Use GetSource/SetSource")]
                public Pattern Pattern {
                        set {
                                SetSource (value);
@@ -241,7 +241,7 @@ namespace Cairo {
                }
 
                //This is obsolete because it wasn't obvious it needed to be disposed
-               [Obsolete("Use GetSource/GetSource")]
+               [Obsolete("Use GetSource/SetSource")]
                public Pattern Source {
                        set {
                                SetSource (value);
diff --git a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_5.csproj b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_5.csproj
deleted file mode 100644 (file)
index 37147f3..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9ABB7BB9-5EA1-4081-B205-5658A602C1F5}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Cecil.Mdb</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../mono.snk</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;CECIL</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;CECIL</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\cecil\symbols\mdb\Mono.Cecil.Mdb\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\cecil\symbols\mdb\Mono.Cecil.Mdb\MdbReader.cs" />\r
-    <Compile Include="..\..\..\external\cecil\symbols\mdb\Mono.Cecil.Mdb\MdbWriter.cs" />\r
-    <Compile Include="..\..\..\external\cecil\symbols\mdb\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />\r
-    <Compile Include="..\..\..\external\cecil\symbols\mdb\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />\r
-    <Compile Include="..\..\..\external\cecil\symbols\mdb\Mono.CompilerServices.SymbolWriter\MonoSymbolWriter.cs" />\r
-    <Compile Include="..\..\..\external\cecil\symbols\mdb\Mono.CompilerServices.SymbolWriter\SymbolWriterImpl.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Cecil/Mono.Cecil-net_4_5.csproj">\r
-      <Project>{F6DD456E-ADE4-419D-997F-41ECA0CE79F7}</Project>\r
-      <Name>Mono.Cecil-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil-net_4_5.csproj b/mcs/class/Mono.Cecil/Mono.Cecil-net_4_5.csproj
deleted file mode 100644 (file)
index 39726d0..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F6DD456E-ADE4-419D-997F-41ECA0CE79F7}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Cecil</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../mono.snk</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\Code.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\CodeReader.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\CodeWriter.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\Document.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\ExceptionHandler.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\ILProcessor.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\Instruction.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\MethodBody.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\OpCode.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\OpCodes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\SequencePoint.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\Symbols.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\VariableDefinition.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Cil\VariableReference.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\BlobHeap.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\Buffers.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\CodedIndex.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\ElementType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\GuidHeap.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\Heap.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\MetadataToken.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\Row.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\StringHeap.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\TableHeap.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\TokenType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\UserStringHeap.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.Metadata\Utilities.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.PE\BinaryStreamReader.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.PE\BinaryStreamWriter.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.PE\ByteBuffer.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.PE\ByteBufferEqualityComparer.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.PE\DataDirectory.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.PE\Image.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.PE\ImageReader.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.PE\ImageWriter.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.PE\Section.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil.PE\TextMap.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\ArrayType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\AssemblyDefinition.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\AssemblyFlags.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\AssemblyHashAlgorithm.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\AssemblyLinkedResource.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\AssemblyNameDefinition.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\AssemblyNameReference.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\AssemblyReader.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\AssemblyWriter.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\BaseAssemblyResolver.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\CallSite.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\CustomAttribute.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\DefaultAssemblyResolver.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\EmbeddedResource.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\EventAttributes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\EventDefinition.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\EventReference.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\ExportedType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\FieldAttributes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\FieldDefinition.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\FieldReference.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\FileAttributes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\FunctionPointerType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\GenericInstanceMethod.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\GenericInstanceType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\GenericParameter.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\GenericParameterAttributes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\IConstantProvider.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\ICustomAttributeProvider.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\IGenericInstance.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\IGenericParameterProvider.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\IMarshalInfoProvider.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\IMemberDefinition.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\IMetadataScope.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\IMetadataTokenProvider.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\IMethodSignature.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\Import.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\LinkedResource.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\ManifestResourceAttributes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MarshalInfo.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MemberDefinitionCollection.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MemberReference.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MetadataResolver.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MetadataSystem.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MethodAttributes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MethodCallingConvention.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MethodDefinition.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MethodImplAttributes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MethodReference.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MethodReturnType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MethodSemanticsAttributes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\MethodSpecification.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\Modifiers.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\ModuleDefinition.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\ModuleKind.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\ModuleReference.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\NativeType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\ParameterAttributes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\ParameterDefinition.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\ParameterDefinitionCollection.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\ParameterReference.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\PinnedType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\PInvokeAttributes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\PInvokeInfo.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\PointerType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\PropertyAttributes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\PropertyDefinition.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\PropertyReference.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\ReferenceType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\Resource.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\SecurityDeclaration.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\SentinelType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\TargetRuntime.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\TypeAttributes.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\TypeDefinition.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\TypeDefinitionCollection.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\TypeParser.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\TypeReference.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\TypeSpecification.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\TypeSystem.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Cecil\VariantType.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Collections.Generic\Collection.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Collections.Generic\ReadOnlyCollection.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Security.Cryptography\CryptoConvert.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono.Security.Cryptography\CryptoService.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono\Actions.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono\Empty.cs" />\r
-    <Compile Include="..\..\..\external\cecil\Mono\Funcs.cs" />\r
-    <Compile Include="..\..\..\external\cecil\System.Runtime.CompilerServices\ExtensionAttribute.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.CodeContracts/Mono.CodeContracts-net_4_5.csproj b/mcs/class/Mono.CodeContracts/Mono.CodeContracts-net_4_5.csproj
deleted file mode 100644 (file)
index b8ca798..0000000
+++ /dev/null
@@ -1,473 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5A56819B-A874-42CF-991C-8DD1B97115B3}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.CodeContracts</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\Expr.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprAdd.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprBinaryOp.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprBinaryOpArithmetic.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprBinaryOpComparison.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprBlock.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprBox.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprCall.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprCompareEqual.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprCompareGreaterThan.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprCompareLessThan.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprConv.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprLoadArg.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprLoadConstant.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprNop.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprReturn.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprSub.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\ExprType.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.Ast\Sn.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.AstVisitors\CompileVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.AstVisitors\ExprVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.AstVisitors\InstructionExtentVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite.AstVisitors\SourcePositionVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite\AssemblyRef.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite\ConditionTextExtractor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite\ContractRequiresInfo.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite\ContractsRuntime.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite\Decompile.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite\ExprGen.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite\MethodInfo.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite\PerformRewrite.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite\Rewriter.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite\RewriterOptions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite\RewriterResults.cs" />\r
-    <Compile Include="Mono.CodeContracts.Rewrite\TransformContractsVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Drivers\AnalysisDriver.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Drivers\BasicAnalysisDriver.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Drivers\BasicMethodDriver.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Drivers\CodeContractsAnalysisDriver.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Drivers\IBasicAnalysisDriver.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Drivers\IBasicMethodDriver.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Drivers\IMethodAnalysis.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Drivers\IMethodAnalysisFixPoint.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Drivers\IMethodDriver.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Drivers\IMethodResult.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Decoding\FullExpressionDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Decoding\IFullExpressionDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Decoding\QueryVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Decoding\VisitorForIsBinaryExpression.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Decoding\VisitorForIsInst.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Decoding\VisitorForIsNull.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Decoding\VisitorForIsUnaryExpression.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Decoding\VisitorForSizeOf.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Decoding\VisitorForUnderlyingVariable.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Decoding\VisitorForValueOf.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Decoding\VisitorForVariable.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Decoding\VisitorForVariablesIn.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Expressions\BinaryExpr.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Expressions\ConstExpr.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Expressions\Expr.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Expressions\IsInstExpr.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Expressions\NullExpr.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Expressions\SizeOfExpr.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis.Expressions\UnaryExpr.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis\AnalysisDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis\AssumeDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis\ExprDomain.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis\ExpressionAnalysisFacade.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis\ExpressionDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis\ExpressionDecoderAdapter.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis\ExpressionPrinterFactory.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis\ILDecoderAdapter.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.ExpressionAnalysis\ValueAnalysis.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.Paths\AccessPathFilter.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.Paths\IVisibilityCheck.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.Paths\MethodCallPathElement.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.Paths\ParameterPathElement.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.Paths\PathElement.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.Paths\PathElement`1.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.Paths\PathElementBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.Paths\PathExtensions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.Paths\SpecialPathElement.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.Paths\SpecialPathElementKind.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.SymbolicGraph\AbstractDomainUpdate.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.SymbolicGraph\EdgeUpdate.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.SymbolicGraph\EliminateEdgeUpdate.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.SymbolicGraph\EqualityPair.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.SymbolicGraph\EqualityUpdate.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.SymbolicGraph\IMergeInfo.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.SymbolicGraph\MergeInfo.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.SymbolicGraph\MultiEdge.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.SymbolicGraph\MultiEdgeUpdate.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.SymbolicGraph\SymGraph.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.SymbolicGraph\SymGraphTerm.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis.SymbolicGraph\Update.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\AbstractType.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\AnalysisDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\Domain.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\FunctionsTable.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\HeapAnalysis.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\IAbstractDomainForEGraph.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\IConstantInfo.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\ISymGraph.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\LabeledSymbol.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\MethodWrapper.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\ParameterWrapper.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\StackToSymbolicAdapter.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\SymbolicValue.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\SymFunction.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\SymValue.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\TypeCache.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\ValueContextProvider.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\ValueDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.HeapAnalysis\Wrapper.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.NonNull\Analysis.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.NonNull\ExpressionAssertDischarger.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.NonNull\ExpressionAssumeDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.NonNull\NonNullAnalysisFacade.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.NonNull\NonNullDomain.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\AbstractInterpretationException.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\Analysers.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\Analysis.ConstantEvaluator.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\Analysis.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\Analysis.GenericNumericalAnalysis.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\Analysis.GenericValueAnalysis.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\AssumeFalseVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\AssumeTrueVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\BoxedExpressionDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\BoxedExpressionEncoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\BoxedVariable.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\ConstantEvaluatorVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\ConstToIntervalEvaluator.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\Counter.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\DisInterval.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\DisIntervalAssumer.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\DisIntervalContext.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\DisIntervalEnvironment.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\EvaluateArithmeticWithOverflow.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\EvaluateExpressionVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\ExpressionOperator.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\ExpressionType.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\ExpressionViaStringComparer.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\GenericExpressionVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\GenericTypeExpressionVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\GetThresholdVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IEnvironmentDomain.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IExpressionDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IExpressionEncoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IIntervalEnvironment.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\Interval.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IntervalAssumeFalseVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IntervalAssumer.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IntervalAssumerBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IntervalAssumeTrueVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IntervalBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IntervalContext.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IntervalContextBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IntervalEnvironment.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IntervalEnvironmentBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IntervalInference.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IntervalRationalAssumerBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\IntervalRationalContextBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\LongToIntegerConstantEvaluator.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\Monomial.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\ObjectExtensions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\Polynomial.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\Rational.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\RationalThreshold.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\Threshold.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\TresholdDB.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.Numerical\ValueExpressionDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.StackAnalysis\APCMap.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.StackAnalysis\SequenceGenerator.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.StackAnalysis\StackDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.StackAnalysis\StackDepthFactory.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.StackAnalysis\StackDepthProvider.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.StackAnalysis\StackInfo.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis.StackAnalysis\StackInfo`1.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\CodeLayer.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\CodeLayerFactory.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\ICodeLayer.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\IExpressionContext.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\IExpressionContextProvider.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\ILPrinter.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\IMethodContext.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\IMethodContextProvider.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\IStackContext.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\IStackContextProvider.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\IValueContext.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\IValueContextProvider.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Analysis\PrinterFactory.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\CodeVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\DefaultNodeVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\IAggregateVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\ICodeConsumer.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\IExpressionILVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\IILVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\ILVisitorBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\IMethodCodeConsumer.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\ISymbolicExpressionVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\ISyntheticILVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\NodeInspector.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\NodeVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST.Visitors\ValueCodeVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\ArrayTypeNode.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\AssemblyNode.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\AssignmentStatement.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\BinaryExpression.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\BinaryOperator.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Block.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\BlockExpression.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\BodyParser.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Branch.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\CatchFilter.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Class.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Construct.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\CoreSystemTypes.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\EndFinally.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Ensures.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\ExceptionHandler.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Expression.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\ExpressionStatement.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\FaultHandler.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Field.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Literal.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Local.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Member.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\MemberBinding.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Method.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\MethodCall.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\MethodContract.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\MethodContractElement.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Module.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\NaryExpression.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Node.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\NodeType.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\OperatorExtensions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Parameter.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Property.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Reference.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Requires.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Return.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Statement.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\This.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\TypeNode.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\UnaryExpression.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\UnaryOperator.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.AST\Variable.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ContractExtraction\ContractExtractor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ContractExtraction\ContractNodes.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ContractExtraction\GatherLocals.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ContractExtraction\HelperMethods.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ContractExtraction\RepresentationForAttribute.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Blocks\AssumeBlock.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Blocks\BlockBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Blocks\BlockWithLabels.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Blocks\CatchFilterEntryBlock.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Blocks\EnsuresBlock.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Blocks\EntryBlock.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Blocks\EntryExitBlock.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Blocks\LabelAdapter.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Blocks\MethodCallBlock.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Blocks\NewObjCallBlock.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines.Builders\BlockBuilder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines.Builders\BlockStartGatherer.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines.Builders\EnsuresFactory.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines.Builders\RequiresFactory.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines.Builders\SimpleSubroutineBuilder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines.Builders\SubroutineBuilder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines.Builders\SubroutineFactory.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines.Builders\SubroutineWithHandlersBuilder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\EnsuresSubroutine.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\FaultFinallySubroutineBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\FaultSubroutine.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\FinallySubroutine.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\MethodContractSubroutine.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\MethodSubroutine.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\OldScanStateMachine.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\OldValueSubroutine.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\RequiresSubroutine.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\SimpleSubroutine.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\SubroutineBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\SubroutineFacade.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow.Subroutines\SubroutineWithHandlers.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\APC.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\APCDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\CFGBlock.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\ContractFilteredCFG.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\ControlFlowGraph.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\Edge.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\EdgeMap.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\EdgeTag.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\EdgeTagExtensions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\EdgeVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\ICFG.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\IConstantInfo.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\IHandlerFilter.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\IMethodInfo.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\IStackInfo.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\RemoveBranchDelegator.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\Subroutine.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.ControlFlow\SubroutineKind.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataFlowAnalysis\DataFlowAnalysisBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataFlowAnalysis\EdgeBasedWidening.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataFlowAnalysis\EdgeConverter.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataFlowAnalysis\ForwardAnalysis.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataFlowAnalysis\ForwardDataFlowAnalysisBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataFlowAnalysis\IAnalysis.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataFlowAnalysis\IFixPointInfo.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataFlowAnalysis\IWidenStrategy.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataFlowAnalysis\Joiner.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataFlowAnalysis\StepWidening.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures.Patricia\BranchNode.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures.Patricia\EmptyNode.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures.Patricia\LeafNode.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures.Patricia\PatriciaTrieNode.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\AbstractWorkList.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\BooleanExtensions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\DecoratorHelper.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\DepthFirst.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\DoubleDictionary.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\DoubleImmutableMap.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\Dummy.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\EdgeVisitor.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\GraphWrapper.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\IGraph.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\IImmutableIntMap.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\IImmutableMap.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\IImmutableSet.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\IIndexable.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\ImmutableIntKeyMap.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\ImmutableIntMap.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\ImmutableMap.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\ImmutableSet.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\ImmutableSetExtensions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\Indexable.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\IPropertyCollection.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\IWorkList.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\Optional.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\Pair.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\PriorityQueue.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\PropertyCollection.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\Sequence.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\SequenceExtensions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\TypedKey.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\VisitStatus.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.DataStructures\WorkList.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Extensions\Extensions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Lattices\AbstractDomainExtensions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Lattices\EnvironmentDomain.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Lattices\FlatDomain.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Lattices\IAbstractDomain.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Lattices\SetDomain.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Providers\CodeContractDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Providers\CodeProviderImpl.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Providers\ICodeProvider.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Providers\IContractProvider.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Providers\IILDecoder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Providers\IMetaDataProvider.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Providers\IMethodCodeProvider.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Providers\MetaDataProvider.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Proving\AssertionFinder.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Proving\BasicFacts.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Proving\BoxedExpression.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Proving\BoxedExpressionExtensions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Proving\ComposedFactQuery.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Proving\ConstantPropagationFactQuery.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Proving\IFactBase.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Proving\IFactQuery.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static.Proving\SimpleLogicInference.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static\Checker.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static\CheckOptions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static\CheckResults.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static\DebugOptions.cs" />\r
-    <Compile Include="Mono.CodeContracts.Static\ProofOutcome.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Cecil/Mono.Cecil-net_4_5.csproj">\r
-      <Project>{F6DD456E-ADE4-419D-997F-41ECA0CE79F7}</Project>\r
-      <Name>Mono.Cecil-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_5.csproj">\r
-      <Project>{9ABB7BB9-5EA1-4081-B205-5658A602C1F5}</Project>\r
-      <Name>Mono.Cecil.Mdb-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.CodeContracts/Mono.CodeContracts-tests-net_4_5.csproj b/mcs/class/Mono.CodeContracts/Mono.CodeContracts-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 8dd4587..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ECA3830F-C627-47A4-8F3B-CB9C5172475D}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.CodeContracts-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.CodeContracts_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\RewriteAndLoad.cs" />\r
-    <Compile Include="Test\TestCCRewrite.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.CodeContracts\Mono.CodeContracts-net_4_5.csproj">\r
-      <Project>{5A56819B-A874-42CF-991C-8DD1B97115B3}</Project>\r
-      <Name>Mono.CodeContracts\Mono.CodeContracts-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_5.csproj b/mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_5.csproj
deleted file mode 100644 (file)
index 4de7301..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7980DE5E-4B22-4E00-AD22-7A570D207828}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.CompilerServices.SymbolWriter</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="MonoSymbolFile.cs" />\r
-    <Compile Include="MonoSymbolTable.cs" />\r
-    <Compile Include="MonoSymbolWriter.cs" />\r
-    <Compile Include="SourceMethodBuilder.cs" />\r
-    <Compile Include="SymbolWriterImpl.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj
deleted file mode 100644 (file)
index 37dd83e..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{41476FBD-C1CB-4B3C-8078-3281EB1E0EAB}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Data.Sqlite</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;SQLITE_STANDARD</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;SQLITE_STANDARD</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\LINQ\SQLiteConnection_Linq.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\LINQ\SQLiteFactory_Linq.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\MonoPInvokeCallbackAttribute.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLite3.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLite3_UTF16.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteBase.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteCommand.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteCommandBuilder.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteConnection.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteConnectionPool.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteConnectionStringBuilder.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteConvert.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteDataAdapter.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteDataReader.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SqliteDataSourceEnumerator.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteEnlistment.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteException.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteFactory.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteFunction.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteFunctionAttribute.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteKeyReader.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteMetaDataCollectionNames.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteParameter.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteParameterCollection.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteStatement.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SQLiteTransaction.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\SR.Designer.cs" />\r
-    <Compile Include="Mono.Data.Sqlite_2.0\UnsafeNativeMethods.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
-      <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/SR.resources">\r
-      <LogicalName>SR.resources</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/SQLiteCommand.bmp">\r
-      <LogicalName>SQLiteCommand.bmp</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/SQLiteConnection.bmp">\r
-      <LogicalName>SQLiteConnection.bmp</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/SQLiteDataAdapter.bmp">\r
-      <LogicalName>SQLiteDataAdapter.bmp</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-tests-net_4_5.csproj b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 1d5d64b..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D322C5A4-B938-4D3C-8309-27535751DFCC}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.Data.Sqlite-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Data.Sqlite_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;SQLITE_STANDARD</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;SQLITE_STANDARD</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\SqliteCommandUnitTests.cs" />\r
-    <Compile Include="Test\SqliteConnectionTest.cs" />\r
-    <Compile Include="Test\SqliteDataAdapterUnitTests.cs" />\r
-    <Compile Include="Test\SqliteDataReaderTest.cs" />\r
-    <Compile Include="Test\SqliteExceptionUnitTests.cs" />\r
-    <Compile Include="Test\SqliteFunctionTests.cs" />\r
-    <Compile Include="Test\SqliteParameterUnitTests.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{41476FBD-C1CB-4B3C-8078-3281EB1E0EAB}</Project>\r
-      <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/SR.resources">\r
-      <LogicalName>SR.resources</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/SQLiteCommand.bmp">\r
-      <LogicalName>SQLiteCommand.bmp</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/SQLiteConnection.bmp">\r
-      <LogicalName>SQLiteConnection.bmp</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/SQLiteDataAdapter.bmp">\r
-      <LogicalName>SQLiteDataAdapter.bmp</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index d2ef1f6316506238873624a00af6f19eea7c7ec1..6f757238cd4139809efe4ca4230369ff3344c0bc 100644 (file)
@@ -499,6 +499,8 @@ namespace Mono.Data.Sqlite
 #if !SQLITE_STANDARD\r
       int len;\r
       return UTF8ToString(UnsafeNativeMethods.sqlite3_column_origin_name_interop(stmt._sqlite_stmt, index, out len), len);\r
+#elif MONOTOUCH\r
+      throw new NotImplementedException ();\r
 #else\r
       return UTF8ToString(UnsafeNativeMethods.sqlite3_column_origin_name(stmt._sqlite_stmt, index), -1);\r
 #endif\r
@@ -509,6 +511,8 @@ namespace Mono.Data.Sqlite
 #if !SQLITE_STANDARD\r
       int len;\r
       return UTF8ToString(UnsafeNativeMethods.sqlite3_column_database_name_interop(stmt._sqlite_stmt, index, out len), len);\r
+#elif MONOTOUCH\r
+      throw new NotImplementedException ();\r
 #else\r
       return UTF8ToString(UnsafeNativeMethods.sqlite3_column_database_name(stmt._sqlite_stmt, index), -1);\r
 #endif\r
@@ -519,6 +523,8 @@ namespace Mono.Data.Sqlite
 #if !SQLITE_STANDARD\r
       int len;\r
       return UTF8ToString(UnsafeNativeMethods.sqlite3_column_table_name_interop(stmt._sqlite_stmt, index, out len), len);\r
+#elif MONOTOUCH\r
+      throw new NotImplementedException ();\r
 #else\r
       return UTF8ToString(UnsafeNativeMethods.sqlite3_column_table_name(stmt._sqlite_stmt, index), -1);\r
 #endif\r
@@ -923,6 +929,17 @@ namespace Mono.Data.Sqlite
       return UnsafeNativeMethods.sqlite3_aggregate_context(context, 1);\r
     }\r
 \r
+#if MONOTOUCH\r
+       internal override void SetPassword(byte[] passwordBytes)\r
+       {\r
+               throw new NotImplementedException ();\r
+       }\r
+\r
+       internal override void ChangePassword(byte[] newPasswordBytes)\r
+       {\r
+               throw new NotImplementedException ();\r
+       }\r
+#else\r
     internal override void SetPassword(byte[] passwordBytes)\r
     {\r
       int n = UnsafeNativeMethods.sqlite3_key(_sql, passwordBytes, passwordBytes.Length);\r
@@ -934,6 +951,7 @@ namespace Mono.Data.Sqlite
       int n = UnsafeNativeMethods.sqlite3_rekey(_sql, newPasswordBytes, (newPasswordBytes == null) ? 0 : newPasswordBytes.Length);\r
       if (n > 0) throw new SqliteException(n, SQLiteLastError());\r
     }\r
+#endif\r
                \r
 #if MONOTOUCH\r
     SQLiteUpdateCallback update_callback;\r
index 6ad8762b77667e80a0607906244496df5553ff61..16c7cdf3e66fe48ab168d96cce5cfa81f70c1819 100644 (file)
@@ -112,6 +112,8 @@ namespace Mono.Data.Sqlite
 #if !SQLITE_STANDARD\r
       int len;\r
       return UTF16ToString(UnsafeNativeMethods.sqlite3_column_origin_name16_interop(stmt._sqlite_stmt, index, out len), len);\r
+#elif MONOTOUCH\r
+      throw new NotImplementedException ();\r
 #else\r
       return UTF16ToString(UnsafeNativeMethods.sqlite3_column_origin_name16(stmt._sqlite_stmt, index), -1);\r
 #endif\r
@@ -122,6 +124,8 @@ namespace Mono.Data.Sqlite
 #if !SQLITE_STANDARD\r
       int len;\r
       return UTF16ToString(UnsafeNativeMethods.sqlite3_column_database_name16_interop(stmt._sqlite_stmt, index, out len), len);\r
+#elif MONOTOUCH\r
+      throw new NotImplementedException ();\r
 #else\r
       return UTF16ToString(UnsafeNativeMethods.sqlite3_column_database_name16(stmt._sqlite_stmt, index), -1);\r
 #endif\r
@@ -132,6 +136,8 @@ namespace Mono.Data.Sqlite
 #if !SQLITE_STANDARD\r
       int len;\r
       return UTF16ToString(UnsafeNativeMethods.sqlite3_column_table_name16_interop(stmt._sqlite_stmt, index, out len), len);\r
+#elif MONOTOUCH\r
+      throw new NotImplementedException ();\r
 #else\r
       return UTF16ToString(UnsafeNativeMethods.sqlite3_column_table_name16(stmt._sqlite_stmt, index), -1);\r
 #endif\r
index 4b440b951ed56cd07ede1b2c0f6aa3a3ebc21615..ba16a1763ff92b3141d7515bf8f463affd6c2ab4 100644 (file)
@@ -200,6 +200,8 @@ namespace Mono.Data.Sqlite
 #endif\r
     internal static extern IntPtr sqlite3_bind_parameter_name(IntPtr stmt, int index);\r
 \r
+// Apple does not include those symbols in it's libsqlite3\r
+#if !MONOTOUCH\r
 #if !PLATFORM_COMPACTFRAMEWORK\r
     [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]\r
 #else\r
@@ -213,6 +215,7 @@ namespace Mono.Data.Sqlite
     [DllImport(SQLITE_DLL)]\r
 #endif\r
     internal static extern IntPtr sqlite3_column_database_name16(IntPtr stmt, int index);\r
+#endif\r
 \r
 #if !PLATFORM_COMPACTFRAMEWORK\r
     [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]\r
@@ -242,6 +245,7 @@ namespace Mono.Data.Sqlite
 #endif\r
     internal static extern IntPtr sqlite3_column_name16(IntPtr stmt, int index);\r
 \r
+#if !MONOTOUCH\r
 #if !PLATFORM_COMPACTFRAMEWORK\r
     [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]\r
 #else\r
@@ -269,6 +273,7 @@ namespace Mono.Data.Sqlite
     [DllImport(SQLITE_DLL)]\r
 #endif\r
     internal static extern IntPtr sqlite3_column_table_name16(IntPtr stmt, int index);\r
+#endif // !MONOTOUCH\r
 \r
 #if !PLATFORM_COMPACTFRAMEWORK\r
     [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]\r
@@ -646,6 +651,7 @@ namespace Mono.Data.Sqlite
 #endif\r
     internal static extern void sqlite3_result_text16(IntPtr context, string strName, int nLen, IntPtr pvReserved);\r
 \r
+#if !MONOTOUCH\r
 #if !PLATFORM_COMPACTFRAMEWORK\r
     [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]\r
 #else\r
@@ -659,6 +665,7 @@ namespace Mono.Data.Sqlite
     [DllImport(SQLITE_DLL)]\r
 #endif\r
     internal static extern int sqlite3_rekey(IntPtr db, byte[] key, int keylen);\r
+#endif\r
 \r
 #if !PLATFORM_COMPACTFRAMEWORK\r
     [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]\r
diff --git a/mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_4_5.csproj b/mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_4_5.csproj
deleted file mode 100644 (file)
index e7455ca..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CB7949AC-5FA7-4FAB-893A-8FAF436BF514}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Data.Tds</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\Tds.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\Tds42.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\Tds50.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\Tds70.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\Tds80.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsAsyncResult.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsAsyncState.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsBigDecimal.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsBulkCopy.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsCollation.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsColumnStatus.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsColumnType.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsComm.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsConnectionParameters.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsConnectionPool.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsDataColumn.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsDataColumnCollection.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsDataRow.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsEnvPacketSubType.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsInternalError.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsInternalErrorCollection.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsInternalErrorMessageEventArgs.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsInternalErrorMessageEventHandler.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsInternalException.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsInternalInfoMessageEventArgs.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsInternalInfoMessageEventHandler.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsPacketSubType.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsPacketType.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsRpcProcId.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsTimeoutException.cs" />\r
-    <Compile Include="Mono.Data.Tds.Protocol\TdsVersion.cs" />\r
-    <Compile Include="Mono.Data.Tds\TdsMetaParameter.cs" />\r
-    <Compile Include="Mono.Data.Tds\TdsMetaParameterCollection.cs" />\r
-    <Compile Include="Mono.Data.Tds\TdsParameterDirection.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Data.Tds/Mono.Data.Tds-tests-net_4_5.csproj b/mcs/class/Mono.Data.Tds/Mono.Data.Tds-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 4fafd52..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E4210383-92E4-4D94-9BCD-7A1985EC45E1}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.Data.Tds-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Data.Tds_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\bug-4786.cs" />\r
-    <Compile Include="Test\ConnLifetime.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_5.csproj">\r
-      <Project>{CB7949AC-5FA7-4FAB-893A-8FAF436BF514}</Project>\r
-      <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Net\System.Net-net_4_0.csproj">\r
-      <Project>{018D907D-AF28-4DB2-8D7D-24AB62ED97BC}</Project>\r
-      <Name>System.Net\System.Net-net_4_0</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_4_5.csproj b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_4_5.csproj
deleted file mode 100644 (file)
index 6b469d8..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7DFAE255-C562-4F72-8DE4-4D578491A10A}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Debugger.Soft</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../mono.snk</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MONO_DATACONVERTER_STATIC_METHODS</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MONO_DATACONVERTER_STATIC_METHODS</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\AbsentInformationException.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\AppDomainCreateEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\AppDomainMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\AppDomainUnloadEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ArrayMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\AssemblyLoadEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\AssemblyLoadEventRequest.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\AssemblyMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\AssemblyUnloadEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\BreakpointEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\BreakpointEventRequest.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\Connection.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\CustomAttributeDataMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\CustomAttributeNamedArgumentMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\CustomAttributeTypedArgumentMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\DataConverter.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\EnumMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\Event.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\EventQueueImpl.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\EventRequest.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\EventSet.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\EventType.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ExceptionEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ExceptionEventRequest.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\FieldInfoMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\IInvokeAsyncResult.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ILExceptionHandler.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ILInstruction.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ILInterpreter.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\IMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\InterfaceMappingMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\InvalidStackFrameException.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\InvocationException.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\InvokeOptions.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ITargetProcess.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\LocalVariable.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\Location.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\MethodBodyMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\MethodEntryEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\MethodEntryEventRequest.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\MethodExitEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\MethodExitEventRequest.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\MethodMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\Mirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ModuleMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ObjectCollectedException.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ObjectMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ParameterInfoMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\PointerValue.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\PrimitiveValue.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\PropertyInfoMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\StackFrame.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\StepEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\StepEventRequest.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\StringMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\StructMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\SuspendPolicy.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ThreadDeathEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ThreadMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\ThreadStartEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\TypeLoadEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\TypeLoadEventRequest.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\TypeMirror.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\UserBreakEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\UserLogEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\Value.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\VirtualMachine.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\VirtualMachineManager.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\VMDeathEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\VMDisconnectedException.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\VMDisconnectEvent.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\VMMismatchException.cs" />\r
-    <Compile Include="Mono.Debugger.Soft\VMStartEvent.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Cecil/Mono.Cecil-net_4_5.csproj">\r
-      <Project>{F6DD456E-ADE4-419D-997F-41ECA0CE79F7}</Project>\r
-      <Name>Mono.Cecil-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-tests-net_4_5.csproj b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 66f61a9..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{52B1D397-D4B8-4EF1-98C7-61AD82FD4A58}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.Debugger.Soft-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Debugger.Soft_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\dtest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_5.csproj">\r
-      <Project>{7DFAE255-C562-4F72-8DE4-4D578491A10A}</Project>\r
-      <Name>Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_5.csproj">\r
-      <Project>{F6DD456E-ADE4-419D-997F-41ECA0CE79F7}</Project>\r
-      <Name>Mono.Cecil\Mono.Cecil-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Http/Mono.Http-net_4_5.csproj b/mcs/class/Mono.Http/Mono.Http-net_4_5.csproj
deleted file mode 100644 (file)
index a0c93b3..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8D430163-3294-4930-B9BA-510385010CE1}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Http</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Http.Configuration\AcceptEncodingConfig.cs" />\r
-    <Compile Include="Mono.Http.Configuration\AcceptEncodingSectionHandler.cs" />\r
-    <Compile Include="Mono.Http.Modules\AcceptEncodingModule.cs" />\r
-    <Compile Include="Mono.Http.Modules\AuthenticationModule.cs" />\r
-    <Compile Include="Mono.Http.Modules\BasicAuthenticationModule.cs" />\r
-    <Compile Include="Mono.Http.Modules\DigestAuthenticationModule.cs" />\r
-    <Compile Include="Mono.Http\GZipWebRequest.cs" />\r
-    <Compile Include="Mono.Http\GZipWebRequestCreator.cs" />\r
-    <Compile Include="Mono.Http\GZipWebResponse.cs" />\r
-    <Compile Include="Mono.Http\GZipWriteFilter.cs" />\r
-    <Compile Include="Mono.Http\NtlmClient.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj">\r
-      <Project>{0B587DBA-BA92-4B92-821A-AA200C612A7E}</Project>\r
-      <Name>ICSharpCode.SharpZipLib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Management/Mono.Management-net_4_5.csproj b/mcs/class/Mono.Management/Mono.Management-net_4_5.csproj
deleted file mode 100644 (file)
index 9e4ce31..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{38262197-48BD-4D8A-9968-4C6E60C814BB}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Management</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Attach\VirtualMachine.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Posix/Mono.Posix-net_4_5.csproj">\r
-      <Project>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</Project>\r
-      <Name>Mono.Posix-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_4_5.csproj b/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_4_5.csproj
deleted file mode 100644 (file)
index 6712867..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B96416B1-91AE-466C-BDD0-9A8FF4331E61}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Messaging.RabbitMQ</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include=".\Mono.Messaging.RabbitMQ\IMessagingContext.cs" />\r
-    <Compile Include=".\Mono.Messaging.RabbitMQ\MessageFactory.cs" />\r
-    <Compile Include=".\Mono.Messaging.RabbitMQ\MessagingContext.cs" />\r
-    <Compile Include=".\Mono.Messaging.RabbitMQ\MessagingContextPool.cs" />\r
-    <Compile Include=".\Mono.Messaging.RabbitMQ\RabbitMQMessageEnumerator.cs" />\r
-    <Compile Include=".\Mono.Messaging.RabbitMQ\RabbitMQMessageQueue.cs" />\r
-    <Compile Include=".\Mono.Messaging.RabbitMQ\RabbitMQMessageQueueTransaction.cs" />\r
-    <Compile Include=".\Mono.Messaging.RabbitMQ\RabbitMQMessagingProvider.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Messaging/System.Messaging-net_4_5.csproj">\r
-      <Project>{1CBEC0FC-5926-42FA-A0CF-A19617FABB78}</Project>\r
-      <Name>System.Messaging-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Messaging/Mono.Messaging-net_4_5.csproj">\r
-      <Project>{DDCC93B5-9425-4E9A-95DC-3400D0028508}</Project>\r
-      <Name>Mono.Messaging-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_5.csproj">\r
-      <Project>{55AA0C89-63D9-438E-A139-3ED9F72AE295}</Project>\r
-      <Name>RabbitMQ.Client-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-tests-net_4_5.csproj b/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 79c81c6..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B24C3A44-693C-4B91-BF99-A34445844673}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,618,219,169</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Messaging.RabbitMQ_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,618,219,169</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,618,219,169</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Mono.Messaging.RabbitMQ\BinaryMessageFormatterTest.cs" />\r
-    <Compile Include="Test\Mono.Messaging.RabbitMQ\FailuresTest.cs" />\r
-    <Compile Include="Test\Mono.Messaging.RabbitMQ\MessageBaseTest.cs" />\r
-    <Compile Include="Test\Mono.Messaging.RabbitMQ\MessageEnumeratorExceptionTest.cs" />\r
-    <Compile Include="Test\Mono.Messaging.RabbitMQ\MessageTest.cs" />\r
-    <Compile Include="Test\Mono.Messaging.RabbitMQ\MessagingContextPoolTest.cs" />\r
-    <Compile Include="Test\Mono.Messaging.RabbitMQ\RabbitMQMessagingProviderTest.cs" />\r
-    <Compile Include="Test\Mono.Messaging.RabbitMQ\TestUtils.cs" />\r
-    <Compile Include="Test\Mono.Messaging.RabbitMQ\XmlMessageFormatterTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_5.csproj">\r
-      <Project>{B96416B1-91AE-466C-BDD0-9A8FF4331E61}</Project>\r
-      <Name>Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{1CBEC0FC-5926-42FA-A0CF-A19617FABB78}</Project>\r
-      <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{DDCC93B5-9425-4E9A-95DC-3400D0028508}</Project>\r
-      <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_4_5.csproj">\r
-      <Project>{55AA0C89-63D9-438E-A139-3ED9F72AE295}</Project>\r
-      <Name>client\RabbitMQ.Client-net_4_5</Name>\r
-    </ProjectReference>\r
-    <Reference Include="nunit.mocks.dll">\r
-      <SpecificVersion>False</SpecificVersion>\r
-      <HintPath>nunit.mocks.dll</HintPath>\r
-      <Private>False</Private>\r
-    </Reference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Messaging/Mono.Messaging-net_4_5.csproj b/mcs/class/Mono.Messaging/Mono.Messaging-net_4_5.csproj
deleted file mode 100644 (file)
index 426d19b..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DDCC93B5-9425-4E9A-95DC-3400D0028508}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Messaging</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include=".\Mono.Messaging\AcknowledgeTypes.cs" />\r
-    <Compile Include=".\Mono.Messaging\Acknowledgment.cs" />\r
-    <Compile Include=".\Mono.Messaging\CompletedEventArgs.cs" />\r
-    <Compile Include=".\Mono.Messaging\CompletedEventHandler.cs" />\r
-    <Compile Include=".\Mono.Messaging\ConcurrentLinkedQueue.cs" />\r
-    <Compile Include=".\Mono.Messaging\ConnectionException.cs" />\r
-    <Compile Include=".\Mono.Messaging\CryptographicProviderType.cs" />\r
-    <Compile Include=".\Mono.Messaging\EncryptionAlgorithm.cs" />\r
-    <Compile Include=".\Mono.Messaging\EncryptionRequired.cs" />\r
-    <Compile Include=".\Mono.Messaging\HashAlgorithm.cs" />\r
-    <Compile Include=".\Mono.Messaging\IMessage.cs" />\r
-    <Compile Include=".\Mono.Messaging\IMessageEnumerator.cs" />\r
-    <Compile Include=".\Mono.Messaging\IMessageQueue.cs" />\r
-    <Compile Include=".\Mono.Messaging\IMessageQueueTransaction.cs" />\r
-    <Compile Include=".\Mono.Messaging\IMessagingProvider.cs" />\r
-    <Compile Include=".\Mono.Messaging\MessageBase.cs" />\r
-    <Compile Include=".\Mono.Messaging\MessagePriority.cs" />\r
-    <Compile Include=".\Mono.Messaging\MessageQueueBase.cs" />\r
-    <Compile Include=".\Mono.Messaging\MessageQueueTransactionStatus.cs" />\r
-    <Compile Include=".\Mono.Messaging\MessageQueueTransactionType.cs" />\r
-    <Compile Include=".\Mono.Messaging\MessageType.cs" />\r
-    <Compile Include=".\Mono.Messaging\MessageUnavailableException.cs" />\r
-    <Compile Include=".\Mono.Messaging\MessagingProviderLocator.cs" />\r
-    <Compile Include=".\Mono.Messaging\MonoMessagingException.cs" />\r
-    <Compile Include=".\Mono.Messaging\QueueReference.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Messaging/Mono.Messaging-tests-net_4_5.csproj b/mcs/class/Mono.Messaging/Mono.Messaging-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 77af523..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2AFCBA1D-10F6-4A5B-A68C-6817DA966A2D}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.Messaging-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Messaging_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Mono.Messaging\ConcurrentLinkedQueueTest.cs" />\r
-    <Compile Include="Test\Mono.Messaging\QueueReferenceTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{DDCC93B5-9425-4E9A-95DC-3400D0028508}</Project>\r
-      <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{5854BF27-FC35-44F5-BE59-580900694E32}</Project>\r
-      <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
-    </ProjectReference>\r
-    <Reference Include="nunit.mocks.dll">\r
-      <SpecificVersion>False</SpecificVersion>\r
-      <HintPath>nunit.mocks.dll</HintPath>\r
-      <Private>False</Private>\r
-    </Reference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Options/Mono.Options-net_4_5.csproj b/mcs/class/Mono.Options/Mono.Options-net_4_5.csproj
deleted file mode 100644 (file)
index 3d5c2b4..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6DAA3E35-6FC9-477B-9D4D-538D9ECE7283}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Options</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include=".\Mono.Options\Options.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Options/Mono.Options-tests-net_4_5.csproj b/mcs/class/Mono.Options/Mono.Options-tests-net_4_5.csproj
deleted file mode 100644 (file)
index d07237a..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4B6B2285-AE59-4E3A-8692-1E0479688BA1}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.Options-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Options_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Mono.Options\BaseRocksFixture.cs" />\r
-    <Compile Include="Test\Mono.Options\CollectionContract.cs" />\r
-    <Compile Include="Test\Mono.Options\ListContract.cs" />\r
-    <Compile Include="Test\Mono.Options\OptionContextTest.cs" />\r
-    <Compile Include="Test\Mono.Options\OptionSetTest.cs" />\r
-    <Compile Include="Test\Mono.Options\OptionTest.cs" />\r
-    <Compile Include="Test\Mono.Options\Utils.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Options\Mono.Options-net_4_5.csproj">\r
-      <Project>{6DAA3E35-6FC9-477B-9D4D-538D9ECE7283}</Project>\r
-      <Name>Mono.Options\Mono.Options-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</Project>\r
-      <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Parallel/Mono.Parallel-net_4_5.csproj b/mcs/class/Mono.Parallel/Mono.Parallel-net_4_5.csproj
deleted file mode 100644 (file)
index af4fe1c..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CA0DDCCE-2190-4D9B-88D6-237682D21BC3}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Parallel</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;INSIDE_MONO_PARALLEL</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;INSIDE_MONO_PARALLEL</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Collections.Concurrent\ConcurrentOrderedList.cs" />\r
-    <Compile Include="Mono.Collections.Concurrent\ConcurrentSkipList.cs" />\r
-    <Compile Include="Mono.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="Mono.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="Mono.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="Mono.Threading\AtomicBoolean.cs" />\r
-    <Compile Include="Mono.Threading\CSnzi.cs" />\r
-    <Compile Include="Mono.Threading\ReaderWriterLockSlimmer.cs" />\r
-    <Compile Include="Mono.Threading\Snzi.cs" />\r
-    <Compile Include="Mono.Threading\SpinLockWrapper.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Parallel/Mono.Parallel-tests-net_4_5.csproj b/mcs/class/Mono.Parallel/Mono.Parallel-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 837a9e3..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F408F42C-51DD-4A6F-AEEF-C2EA9F2D9012}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.Parallel-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Parallel_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Mono.Collections.Concurrent\CollectionStressTestHelper.cs" />\r
-    <Compile Include="Test\Mono.Collections.Concurrent\ConcurrentSkipListTests.cs" />\r
-    <Compile Include="Test\Mono.Threading\ParallelTestHelper.cs" />\r
-    <Compile Include="Test\Mono.Threading\SnziTests.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Parallel\Mono.Parallel-net_4_5.csproj">\r
-      <Project>{CA0DDCCE-2190-4D9B-88D6-237682D21BC3}</Project>\r
-      <Name>Mono.Parallel\Mono.Parallel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Posix/Mono.Posix-net_4_5.csproj b/mcs/class/Mono.Posix/Mono.Posix-net_4_5.csproj
deleted file mode 100644 (file)
index 7b48302..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,612</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Posix</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,612</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,612</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include=".\Mono.Posix\Catalog.cs" />\r
-    <Compile Include=".\Mono.Posix\PeerCred.cs" />\r
-    <Compile Include=".\Mono.Posix\Syscall.cs" />\r
-    <Compile Include=".\Mono.Posix\UnixEndPoint.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixBinaryClientFormatterSink.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixBinaryClientFormatterSinkProvider.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixBinaryCore.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixBinaryServerFormatterSink.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixBinaryServerFormatterSinkProvider.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixChannel.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixClientChannel.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixClientTransportSink.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixClientTransportSinkProvider.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixConnectionPool.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixMessageIO.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixServerChannel.cs" />\r
-    <Compile Include=".\Mono.Remoting.Channels.Unix\UnixServerTransportSink.cs" />\r
-    <Compile Include=".\Mono.Unix.Native\CdeclFunction.cs" />\r
-    <Compile Include=".\Mono.Unix.Native\FileNameMarshaler.cs" />\r
-    <Compile Include=".\Mono.Unix.Native\MapAttribute.cs" />\r
-    <Compile Include=".\Mono.Unix.Native\NativeConvert.cs" />\r
-    <Compile Include=".\Mono.Unix.Native\NativeConvert.generated.cs" />\r
-    <Compile Include=".\Mono.Unix.Native\RealTimeSignum.cs" />\r
-    <Compile Include=".\Mono.Unix.Native\Stdlib.cs" />\r
-    <Compile Include=".\Mono.Unix.Native\Syscall.cs" />\r
-    <Compile Include=".\Mono.Unix.Native\TypeAttributes.cs" />\r
-    <Compile Include=".\Mono.Unix\AbstractUnixEndPoint.cs" />\r
-    <Compile Include=".\Mono.Unix\Catalog.cs" />\r
-    <Compile Include=".\Mono.Unix\FileAccessPattern.cs" />\r
-    <Compile Include=".\Mono.Unix\FileAccessPermissions.cs" />\r
-    <Compile Include=".\Mono.Unix\FileHandleOperations.cs" />\r
-    <Compile Include=".\Mono.Unix\FileSpecialAttributes.cs" />\r
-    <Compile Include=".\Mono.Unix\FileTypes.cs" />\r
-    <Compile Include=".\Mono.Unix\PeerCred.cs" />\r
-    <Compile Include=".\Mono.Unix\StdioFileStream.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixClient.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixDirectoryInfo.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixDriveInfo.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixEncoding.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixEndPoint.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixEnvironment.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixFileInfo.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixFileSystemInfo.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixGroupInfo.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixIOException.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixListener.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixMarshal.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixPath.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixPipes.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixProcess.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixSignal.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixStream.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixSymbolicLinkInfo.cs" />\r
-    <Compile Include=".\Mono.Unix\UnixUserInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Posix/Mono.Posix-tests-net_4_5.csproj b/mcs/class/Mono.Posix/Mono.Posix-tests-net_4_5.csproj
deleted file mode 100644 (file)
index a0c5cf1..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7D57A17D-4F08-46F8-86D4-C54D0B84325F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,219,618</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.Posix-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Posix_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,219,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,219,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Mono.Unix.Native\RealTimeSignumTests.cs" />\r
-    <Compile Include="Test\Mono.Unix.Native\SocketTest.cs" />\r
-    <Compile Include="Test\Mono.Unix.Native\StdlibTest.cs" />\r
-    <Compile Include="Test\Mono.Unix\ReadlinkTest.cs" />\r
-    <Compile Include="Test\Mono.Unix\StdioFileStreamTest.cs" />\r
-    <Compile Include="Test\Mono.Unix\UnixEncodingTest.cs" />\r
-    <Compile Include="Test\Mono.Unix\UnixGroupTest.cs" />\r
-    <Compile Include="Test\Mono.Unix\UnixMarshalTest.cs" />\r
-    <Compile Include="Test\Mono.Unix\UnixPathTest.cs" />\r
-    <Compile Include="Test\Mono.Unix\UnixSignalTest.cs" />\r
-    <Compile Include="Test\Mono.Unix\UnixUserTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</Project>\r
-      <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</Project>\r
-      <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index c2e50b8d259eecf638d0c6738d2fe4ca677119f4..e4c34cba317f28629d885cb370e536fc3cabb29f 100644 (file)
@@ -381,6 +381,42 @@ namespace Mono.Unix.Native {
                internal const string LIBC = "msvcrt";
                internal const string MPH  = "MonoPosixHelper";
 
+               // It is possible for Mono.Posix and MonoPosixHelper to get out of sync,
+               // for example if NuGet does something weird. To mitigate this, anyone
+               // editing Mono.Posix needs to observe two rules:
+               //   1. When introducing C-interface changes to MonoPosixHelper, update
+               //      the version strings in VersionCheck below and also
+               //      Mono_Unix_VersionString in the C sources.
+               //   2. Any class which performs a DllImport on Stdlib.MPH needs to call
+               //      Stdlib.VersionCheck in its static constructor.
+
+               [DllImport (Stdlib.MPH, CallingConvention=CallingConvention.Cdecl,
+                               EntryPoint="Mono_Unix_VersionString")]
+               private static extern IntPtr VersionStringPtr ();
+               private static bool versionCheckPerformed = false;
+               internal static void VersionCheck ()
+               {
+                       if (versionCheckPerformed)
+                               return;
+
+                       // This string is arbitrary; it matters only that it is unique.
+                       string assemblyVersion = "MonoProject-2015-12-1";
+                       string nativeVersion = Marshal.PtrToStringAnsi (VersionStringPtr ());
+                       if (assemblyVersion != nativeVersion)
+                       {
+                               throw new Exception ("Mono.Posix assembly loaded with a different version (\""
+                                       + assemblyVersion + "\") than MonoPosixHelper (\"" + nativeVersion
+                                   + "\"). You may need to reinstall Mono.Posix.");
+                       }
+
+                       versionCheckPerformed = true;
+               }
+
+               static Stdlib ()
+               {
+                       VersionCheck ();
+               }
+
                internal Stdlib () {}
 
                #region <errno.h> Declarations
index 3609e53ef5719865d72fcc87d3eb9ef0a8ddb1e9..4e289998584d76968ce24d5ef2055a1c3922a4ed 100644 (file)
@@ -1,5 +1,5 @@
 //
-// UnixListener.cs
+// UnixClient.cs
 //
 // Authors:
 //     Joe Shaw (joeshaw@novell.com)
index 883e044aea137f147f8ba0dd4a61bc2f0cb50272..8e4eb5b84639c63cc417ce8b43634c484e3c7d2e 100644 (file)
@@ -39,6 +39,11 @@ namespace Mono.Unix {
                private int signum;
                private IntPtr signal_info;
 
+               static UnixSignal ()
+               {
+                       Stdlib.VersionCheck ();
+               }
+
                public UnixSignal (Signum signum)
                {
                        this.signum = NativeConvert.FromSignum (signum);
@@ -145,10 +150,12 @@ namespace Mono.Unix {
                        set {Interlocked.Exchange (ref Info->count, value);}
                }
 
+               // signum, count, write_fd, pipecnt, and pipelock are read from a signal handler thread
+               // count and pipelock are both read and written from the signal handler thread
                [Map]
                struct SignalInfo {
-                       public int signum, count, read_fd, write_fd, have_handler, pipecnt;
-                       public IntPtr handler;
+                       public int signum, count, read_fd, write_fd, pipecnt, pipelock, have_handler;
+                       public IntPtr handler; // Backed-up handler to restore when signal unregistered
                }
 
                #region WaitHandle overrides
index a82ee31d61df9ee5d51e0539ed7a1b9017a8ec52..a3891311dd562a6e4dfffc69fdfb2c2d7b4387df 100644 (file)
@@ -146,6 +146,7 @@ namespace MonoTests.Mono.Unix.Native
                public void SockOpt ()
                {
                        WithSockets (UnixAddressFamily.AF_UNIX, UnixSocketType.SOCK_STREAM, 0, (so1, so2) => {
+                               int value;
                                if (Syscall.getsockopt (so1, UnixSocketProtocol.SOL_SOCKET, UnixSocketOptionName.SO_REUSEADDR, out value) < 0)
                                        UnixMarshal.ThrowExceptionForLastError ();
                                Assert.AreEqual (0, value);
@@ -155,7 +156,6 @@ namespace MonoTests.Mono.Unix.Native
                                        UnixMarshal.ThrowExceptionForLastError ();
 
                                // Get and check SO_REUSEADDR
-                               int value;
                                if (Syscall.getsockopt (so1, UnixSocketProtocol.SOL_SOCKET, UnixSocketOptionName.SO_REUSEADDR, out value) < 0)
                                        UnixMarshal.ThrowExceptionForLastError ();
                                Assert.AreNotEqual (0, value);
index 14613104d9b7c0198895e604cd4fbc5149329719..d621ad51d4533a336398b6c87bb69069dc59d790 100644 (file)
@@ -456,6 +456,7 @@ namespace MonoTests.Mono.Unix {
                                s.Close ();
                }
 
+               // Create thread that issues many signals from a set of harmless signals
                static Thread CreateRaiseStormThread (int max)
                {
                        return new Thread (delegate () {
@@ -486,6 +487,7 @@ namespace MonoTests.Mono.Unix {
                        CloseSignals (usignals);
                }
 
+               // Create thread that repeatedly registers then unregisters signal handlers
                static Thread CreateSignalCreatorThread ()
                {
                        return new Thread (delegate () {
@@ -523,6 +525,7 @@ namespace MonoTests.Mono.Unix {
                        CloseSignals (usignals);
                }
 
+               // Create thread that blocks until at least one of the given signals is received
                static Thread CreateWaitAnyThread (params UnixSignal[] usignals)
                {
                        return new Thread (delegate () {
diff --git a/mcs/class/Mono.Security.Providers.DotNet/Makefile b/mcs/class/Mono.Security.Providers.DotNet/Makefile
new file mode 100644 (file)
index 0000000..a42b8c5
--- /dev/null
@@ -0,0 +1,14 @@
+thisdir = class/Mono.Security.Providers.DotNet
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = Mono.Security.Providers.DotNet.dll
+LIB_REFS = System Mono.Security
+LIB_MCS_FLAGS = -unsafe -nowarn:1030 -keyfile:../mono.pub -delaysign
+
+EXTRA_DISTFILES = README.md
+
+include ../../build/library.make
+
+$(the_lib): ../Mono.Security/Makefile
+
diff --git a/mcs/class/Mono.Security.Providers.DotNet/Mono.Security.Providers.DotNet-net_4_x.csproj b/mcs/class/Mono.Security.Providers.DotNet/Mono.Security.Providers.DotNet-net_4_x.csproj
new file mode 100644 (file)
index 0000000..5199a37
--- /dev/null
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <PropertyGroup>\r
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+    <ProductVersion>9.0.30729</ProductVersion>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
+    <ProjectGuid>{391EDD2B-85AC-4FCA-B607-AAD6C51E6799}</ProjectGuid>\r
+    <OutputType>Library</OutputType>\r
+    <NoWarn>1699,1030</NoWarn>\r
+    <OutputPath>./../../class/lib/net_4_x</OutputPath>\r
+    <NoStdLib>True</NoStdLib>\r
+    <NoConfig>True</NoConfig>\r
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
+    <AppDesignerFolder>Properties</AppDesignerFolder>\r
+    <RootNamespace>\r
+    </RootNamespace>\r
+    <AssemblyName>Mono.Security.Providers.DotNet</AssemblyName>\r
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
+    <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>\r
+    <SignAssembly>true</SignAssembly>\r
+    <DelaySign>true</DelaySign>\r
+  </PropertyGroup>\r
+  <PropertyGroup>\r
+    <AssemblyOriginatorKeyFile>../mono.pub</AssemblyOriginatorKeyFile>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+    <DebugSymbols>true</DebugSymbols>\r
+    <DebugType>full</DebugType>\r
+    <NoWarn>1699,1030</NoWarn>\r
+    <Optimize>false</Optimize>\r
+    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+    <DebugType>pdbonly</DebugType>\r
+    <NoWarn>1699,1030</NoWarn>\r
+    <Optimize>true</Optimize>\r
+    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
+  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
+  is a problem to compile the Mono mscorlib.dll -->\r
+  <PropertyGroup>\r
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
+  </PropertyGroup>\r
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
+  <ItemGroup>\r
+    <Compile Include="..\..\build\common\Consts.cs" />\r
+    <Compile Include="..\..\build\common\Locale.cs" />\r
+    <Compile Include=".\Mono.Security.Providers.DotNet\DotNetSslStreamImpl.cs" />\r
+    <Compile Include=".\Mono.Security.Providers.DotNet\DotNetTlsProvider.cs" />\r
+    <Compile Include=".\Properties\AssemblyInfo.cs" />\r  </ItemGroup>\r
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
+       Other similar extension points exist, see Microsoft.Common.targets.\r
+  <Target Name="BeforeBuild">\r
+  </Target>\r
+  <Target Name="AfterBuild">\r
+  </Target>\r
+  -->\r
+  <PropertyGroup>\r
+    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
+\r
+    </PreBuildEvent>\r
+    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+\r
+    </PreBuildEvent>\r
+\r
+    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
+\r
+    </PostBuildEvent>\r
+    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+\r
+    </PostBuildEvent>\r
+  </PropertyGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="../corlib/corlib-net_4_x.csproj">\r
+      <Project>{2CA6026B-2DC8-4C4C-A12C-1E8234049DB7}</Project>\r
+      <Name>corlib-net_4_x</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="../System/System-net_4_x.csproj">\r
+      <Project>{2762E921-91A8-4C87-91E9-BA628013F753}</Project>\r
+      <Name>System-net_4_x</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_x.csproj">\r
+      <Project>{42D59DE7-586F-4ACF-BDD5-E7869E39E3EF}</Project>\r
+      <Name>Mono.Security-net_4_x</Name>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Folder Include="Properties\" />\r
+  </ItemGroup>\r
+</Project>\r
+
diff --git a/mcs/class/Mono.Security.Providers.DotNet/Mono.Security.Providers.DotNet.dll.sources b/mcs/class/Mono.Security.Providers.DotNet/Mono.Security.Providers.DotNet.dll.sources
new file mode 100644 (file)
index 0000000..7afb9f3
--- /dev/null
@@ -0,0 +1,6 @@
+./Properties/AssemblyInfo.cs
+../../build/common/Consts.cs
+../../build/common/Locale.cs
+
+./Mono.Security.Providers.DotNet/DotNetTlsProvider.cs
+./Mono.Security.Providers.DotNet/DotNetSslStreamImpl.cs
diff --git a/mcs/class/Mono.Security.Providers.DotNet/Mono.Security.Providers.DotNet/DotNetSslStreamImpl.cs b/mcs/class/Mono.Security.Providers.DotNet/Mono.Security.Providers.DotNet/DotNetSslStreamImpl.cs
new file mode 100644 (file)
index 0000000..c6be703
--- /dev/null
@@ -0,0 +1,317 @@
+//
+// DotNetSslStreamImpl.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Threading.Tasks;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.Security.Cryptography;
+using MSI = Mono.Security.Interface;
+
+namespace Mono.Security.Providers.DotNet
+{
+       class DotNetSslStreamImpl : MSI.IMonoSslStream
+       {
+               DotNetTlsProvider provider;
+               SslStream impl;
+
+               internal SslStream Impl {
+                       get {
+                               CheckDisposed ();
+                               return impl;
+                       }
+               }
+
+               public DotNetSslStreamImpl (
+                       Stream innerStream, bool leaveInnerStreamOpen, DotNetTlsProvider provider,
+                       RemoteCertificateValidationCallback userCertificateValidationCallback,
+                       LocalCertificateSelectionCallback userCertificateSelectionCallback)
+               {
+                       this.provider = provider;
+                       impl = new SslStream (
+                               innerStream, leaveInnerStreamOpen,
+                               userCertificateValidationCallback,
+                               userCertificateSelectionCallback);
+               }
+
+               public void AuthenticateAsClient (string targetHost)
+               {
+                       Impl.AuthenticateAsClient (targetHost);
+               }
+
+               public void AuthenticateAsClient (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       Impl.AuthenticateAsClient (targetHost, clientCertificates, enabledSslProtocols, checkCertificateRevocation);
+               }
+
+               public IAsyncResult BeginAuthenticateAsClient (string targetHost, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsClient (targetHost, asyncCallback, asyncState);
+               }
+
+               public IAsyncResult BeginAuthenticateAsClient (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsClient (targetHost, clientCertificates, enabledSslProtocols, checkCertificateRevocation, asyncCallback, asyncState);
+               }
+
+               public void EndAuthenticateAsClient (IAsyncResult asyncResult)
+               {
+                       Impl.EndAuthenticateAsClient (asyncResult);
+               }
+
+               public void AuthenticateAsServer (X509Certificate serverCertificate)
+               {
+                       Impl.AuthenticateAsServer (serverCertificate);
+               }
+
+               public void AuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       Impl.AuthenticateAsServer (serverCertificate, clientCertificateRequired, enabledSslProtocols, checkCertificateRevocation);
+               }
+
+               public IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsServer (serverCertificate, asyncCallback, asyncState);
+               }
+
+               public IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsServer (serverCertificate, clientCertificateRequired, enabledSslProtocols, checkCertificateRevocation, asyncCallback, asyncState);
+               }
+
+               public void EndAuthenticateAsServer (IAsyncResult asyncResult)
+               {
+                       Impl.EndAuthenticateAsServer (asyncResult);
+               }
+
+               public Task AuthenticateAsClientAsync (string targetHost)
+               {
+                       return Impl.AuthenticateAsClientAsync (targetHost);
+               }
+
+               public Task AuthenticateAsClientAsync (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       return Impl.AuthenticateAsClientAsync (targetHost, clientCertificates, enabledSslProtocols, checkCertificateRevocation);
+               }
+
+               public Task AuthenticateAsServerAsync (X509Certificate serverCertificate)
+               {
+                       return Impl.AuthenticateAsServerAsync (serverCertificate);
+               }
+
+               public Task AuthenticateAsServerAsync (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       return Impl.AuthenticateAsServerAsync (serverCertificate, clientCertificateRequired, enabledSslProtocols, checkCertificateRevocation);
+               }
+
+               public void Flush ()
+               {
+                       Impl.Flush ();
+               }
+
+               public int Read (byte[] buffer, int offset, int count)
+               {
+                       return Impl.Read (buffer, offset, count);
+               }
+
+               public void Write (byte[] buffer)
+               {
+                       Impl.Write (buffer);
+               }
+
+               public void Write (byte[] buffer, int offset, int count)
+               {
+                       Impl.Write (buffer, offset, count);
+               }
+
+               public IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginRead (buffer, offset, count, asyncCallback, asyncState);
+               }
+
+               public int EndRead (IAsyncResult asyncResult)
+               {
+                       return Impl.EndRead (asyncResult);
+               }
+
+               public IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginWrite (buffer, offset, count, asyncCallback, asyncState);
+               }
+
+               public void EndWrite (IAsyncResult asyncResult)
+               {
+                       Impl.EndWrite (asyncResult);
+               }
+
+               public TransportContext TransportContext {
+                       get { throw new NotSupportedException (); }
+               }
+
+               public bool IsAuthenticated {
+                       get { return Impl.IsAuthenticated; }
+               }
+
+               public bool IsMutuallyAuthenticated {
+                       get { return Impl.IsMutuallyAuthenticated; }
+               }
+
+               public bool IsEncrypted {
+                       get { return Impl.IsEncrypted; }
+               }
+
+               public bool IsSigned {
+                       get { return Impl.IsSigned; }
+               }
+
+               public bool IsServer {
+                       get { return Impl.IsServer; }
+               }
+
+               public CipherAlgorithmType CipherAlgorithm {
+                       get { return Impl.CipherAlgorithm; }
+               }
+
+               public int CipherStrength {
+                       get { return Impl.CipherStrength; }
+               }
+
+               public HashAlgorithmType HashAlgorithm {
+                       get { return Impl.HashAlgorithm; }
+               }
+
+               public int HashStrength {
+                       get { return Impl.HashStrength; }
+               }
+
+               public ExchangeAlgorithmType KeyExchangeAlgorithm {
+                       get { return Impl.KeyExchangeAlgorithm; }
+               }
+
+               public int KeyExchangeStrength {
+                       get { return KeyExchangeStrength; }
+               }
+
+               public bool CanRead {
+                       get { return Impl.CanRead; }
+               }
+
+               public bool CanTimeout {
+                       get { return Impl.CanTimeout; }
+               }
+
+               public bool CanWrite {
+                       get { return Impl.CanWrite; }
+               }
+
+               public long Length {
+                       get { return Impl.Length; }
+               }
+
+               public long Position {
+                       get { return Impl.Position; }
+               }
+
+               public void SetLength (long value)
+               {
+                       Impl.SetLength (value);
+               }
+
+               public AuthenticatedStream AuthenticatedStream {
+                       get { return Impl; }
+               }
+
+               public int ReadTimeout {
+                       get { return Impl.ReadTimeout; }
+                       set { Impl.ReadTimeout = value; }
+               }
+
+               public int WriteTimeout {
+                       get { return Impl.WriteTimeout; }
+                       set { Impl.WriteTimeout = value; }
+               }
+
+               public bool CheckCertRevocationStatus {
+                       get { return Impl.CheckCertRevocationStatus; }
+               }
+
+               public X509Certificate InternalLocalCertificate {
+                       get {
+                               try {
+                                       return LocalCertificate;
+                               } catch {
+                                       return null;
+                               }
+                       }
+               }
+
+               public X509Certificate LocalCertificate {
+                       get { return Impl.LocalCertificate; }
+               }
+
+               public X509Certificate RemoteCertificate {
+                       get { return Impl.RemoteCertificate; }
+               }
+
+               public SslProtocols SslProtocol {
+                       get { return Impl.SslProtocol; }
+               }
+
+               MSI.MonoTlsProvider MSI.IMonoSslStream.Provider {
+                       get { return provider; }
+               }
+
+               MSI.MonoTlsConnectionInfo MSI.IMonoSslStream.GetConnectionInfo ()
+               {
+                       return null;
+               }
+
+               void CheckDisposed ()
+               {
+                       if (impl == null)
+                               throw new ObjectDisposedException ("MonoSslStream");
+               }
+
+               public void Dispose ()
+               {
+                       Dispose (true);
+                       GC.SuppressFinalize (this);
+               }
+
+               protected void Dispose (bool disposing)
+               {
+                       if (impl != null && disposing) {
+                               impl.Dispose ();
+                               impl = null;
+                       }
+               }
+       }
+}
+
diff --git a/mcs/class/Mono.Security.Providers.DotNet/Mono.Security.Providers.DotNet/DotNetTlsProvider.cs b/mcs/class/Mono.Security.Providers.DotNet/Mono.Security.Providers.DotNet/DotNetTlsProvider.cs
new file mode 100644 (file)
index 0000000..74b2a8e
--- /dev/null
@@ -0,0 +1,118 @@
+//
+// MonoDefaultTlsProvider.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+using Mono.Security.Interface;
+
+namespace Mono.Security.Providers.DotNet
+{
+       /*
+        * This provider only uses the public .NET APIs from System.dll.
+        * 
+        * It is primarily intended for testing.
+        */
+       public class DotNetTlsProvider : MonoTlsProvider
+       {
+               static readonly Guid id = new Guid ("3a7b3a26-0dbd-4572-a5b8-fdce766bf0dd");
+
+               public override Guid ID {
+                       get { return id; }
+               }
+
+               public override string Name {
+                       get { return "dotnet"; }
+               }
+
+               public override bool SupportsSslStream {
+                       get { return true; }
+               }
+
+               public override bool SupportsConnectionInfo {
+                       get { return false; }
+               }
+
+               public override bool SupportsMonoExtensions {
+                       get { return false; }
+               }
+
+               public override bool SupportsTlsContext {
+                       get { return false; }
+               }
+
+               public override SslProtocols SupportedProtocols {
+                       get { return (SslProtocols)ServicePointManager.SecurityProtocol; }
+               }
+
+               public override IMonoSslStream CreateSslStream (
+                       Stream innerStream, bool leaveInnerStreamOpen,
+                       MonoTlsSettings settings = null)
+               {
+                       if (settings != null)
+                               throw new NotSupportedException ("Mono-specific API Extensions not available.");
+
+                       RemoteCertificateValidationCallback validation_callback = null;
+                       LocalCertificateSelectionCallback selection_callback = null;
+
+                       if (settings != null) {
+                               validation_callback = ConvertCallback (settings.RemoteCertificateValidationCallback);
+                               selection_callback = ConvertCallback (settings.ClientCertificateSelectionCallback);
+                       }
+
+                       return new DotNetSslStreamImpl (innerStream, leaveInnerStreamOpen, this, validation_callback, selection_callback);
+               }
+
+               public override IMonoTlsContext CreateTlsContext (
+                       string hostname, bool serverMode, TlsProtocols protocolFlags,
+                       X509Certificate serverCertificate, X509CertificateCollection clientCertificates,
+                       bool remoteCertRequired, MonoEncryptionPolicy encryptionPolicy,
+                       MonoTlsSettings settings)
+               {
+                       throw new NotSupportedException ();
+               }
+
+               internal static RemoteCertificateValidationCallback ConvertCallback (MonoRemoteCertificateValidationCallback callback)
+               {
+                       if (callback == null)
+                               return null;
+
+                       return (s, c, ch, e) => callback (null, c, ch, (MonoSslPolicyErrors)e);
+               }
+
+               internal static LocalCertificateSelectionCallback ConvertCallback (MonoLocalCertificateSelectionCallback callback)
+               {
+                       if (callback == null)
+                               return null;
+
+                       return (s, t, lc, rc, ai) => callback (t, lc, rc, ai);
+               }
+
+       }
+}
+
diff --git a/mcs/class/Mono.Security.Providers.DotNet/Properties/AssemblyInfo.cs b/mcs/class/Mono.Security.Providers.DotNet/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..cbbd002
--- /dev/null
@@ -0,0 +1,46 @@
+//
+// AssemblyInfo.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Reflection;
+using System.Resources;
+using System.Security;
+using System.Security.Permissions;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about the system assembly
+
+[assembly: AssemblyVersion (Consts.FxVersion)]
+
+[assembly: AssemblyCompany ("MONO development team")]
+[assembly: AssemblyCopyright ("(c) 2015 Xamarin")]
+[assembly: AssemblyDescription ("Mono.Security.Providers.DotNet.dll")]
+[assembly: AssemblyProduct ("MONO CLI")]
+[assembly: AssemblyTitle ("Mono.Security.Providers.DotNet.dll")]
+[assembly: CLSCompliant (true)]
+[assembly: ComVisible (false)]
+[assembly: NeutralResourcesLanguage ("en-US")]
+
diff --git a/mcs/class/Mono.Security.Providers.DotNet/README.md b/mcs/class/Mono.Security.Providers.DotNet/README.md
new file mode 100644 (file)
index 0000000..4c47efd
--- /dev/null
@@ -0,0 +1 @@
+See mcs/class/Mono.Security.Providers.NewSystemSource/README.md for a detailed README.
diff --git a/mcs/class/Mono.Security.Providers.NewSystemSource/Makefile b/mcs/class/Mono.Security.Providers.NewSystemSource/Makefile
new file mode 100644 (file)
index 0000000..bf6b111
--- /dev/null
@@ -0,0 +1,21 @@
+thisdir = class/Mono.Security.Providers.NewSystemSource
+SUBDIRS = 
+include ../../build/rules.make
+
+ifdef MOBILE_PROFILE
+EXTERN_ALIAS_FLAGS = -r:Mono.Security
+else
+EXTERN_ALIAS_FLAGS = -d:MONO_SECURITY_ALIAS -r:MonoSecurity=Mono.Security
+endif
+
+LIBRARY = Mono.Security.Providers.NewSystemSource.dll
+LIB_REFS = System
+LIB_MCS_FLAGS = -d:SECURITY_DEP $(EXTERN_ALIAS_FLAGS) \
+       -unsafe -nowarn:1030 -keyfile:../mono.pub -delaysign -d:MONO -d:FEATURE_PAL -d:MONO_FEATURE_NEW_TLS \
+       -d:MONO_FEATURE_NEW_SYSTEM_SOURCE -d:DISABLE_CAS_USE
+
+EXTRA_DISTFILES = README.md
+
+include ../../build/library.make
+
+$(the_lib): ../Mono.Security/Makefile
diff --git a/mcs/class/Mono.Security.Providers.NewSystemSource/Mono.Security.Providers.NewSystemSource-net_4_x.csproj b/mcs/class/Mono.Security.Providers.NewSystemSource/Mono.Security.Providers.NewSystemSource-net_4_x.csproj
new file mode 100644 (file)
index 0000000..9df975f
--- /dev/null
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <PropertyGroup>\r
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+    <ProductVersion>9.0.30729</ProductVersion>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
+    <ProjectGuid>{0BB4541F-9B1A-4CBC-BEB1-00B31B37F74E}</ProjectGuid>\r
+    <OutputType>Library</OutputType>\r
+    <NoWarn>1699,1030</NoWarn>\r
+    <OutputPath>./../../class/lib/net_4_x</OutputPath>\r
+    <NoStdLib>True</NoStdLib>\r
+    <NoConfig>True</NoConfig>\r
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
+    <AppDesignerFolder>Properties</AppDesignerFolder>\r
+    <RootNamespace>\r
+    </RootNamespace>\r
+    <AssemblyName>Mono.Security.Providers.NewSystemSource</AssemblyName>\r
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
+    <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>\r
+    <SignAssembly>true</SignAssembly>\r
+    <DelaySign>true</DelaySign>\r
+  </PropertyGroup>\r
+  <PropertyGroup>\r
+    <AssemblyOriginatorKeyFile>../mono.pub</AssemblyOriginatorKeyFile>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+    <DebugSymbols>true</DebugSymbols>\r
+    <DebugType>full</DebugType>\r
+    <NoWarn>1699,1030</NoWarn>\r
+    <Optimize>false</Optimize>\r
+    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;SECURITY_DEP;MONO_SECURITY_ALIAS;MONO;FEATURE_PAL;MONO_FEATURE_NEW_TLS;MONO_FEATURE_NEW_SYSTEM_SOURCE;DISABLE_CAS_USE</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+    <DebugType>pdbonly</DebugType>\r
+    <NoWarn>1699,1030</NoWarn>\r
+    <Optimize>true</Optimize>\r
+    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;SECURITY_DEP;MONO_SECURITY_ALIAS;MONO;FEATURE_PAL;MONO_FEATURE_NEW_TLS;MONO_FEATURE_NEW_SYSTEM_SOURCE;DISABLE_CAS_USE</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
+  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
+  is a problem to compile the Mono mscorlib.dll -->\r
+  <PropertyGroup>\r
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
+  </PropertyGroup>\r
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
+  <ItemGroup>\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\InternalApis\NDP_Common\inc\PinnableBufferCache.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_NTAuthentication.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_SecureChannel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_SslSessionsCache.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Logging.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\SecureProtocols\_FixedSizeReader.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\SecureProtocols\_HelperAsyncResults.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\SecureProtocols\_SslState.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\SecureProtocols\_SslStream.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\SecureProtocols\SslStream.cs" />\r
+    <Compile Include="..\..\build\common\Consts.cs" />\r
+    <Compile Include="..\..\build\common\Locale.cs" />\r
+    <Compile Include="..\..\build\common\SR.cs" />\r
+    <Compile Include="..\System\Mono.Net.Security\CallbackHelpers.cs" />\r
+    <Compile Include="..\System\Mono.Net.Security\IMonoTlsProvider.cs" />\r
+    <Compile Include="..\System\Mono.Net.Security\MonoTlsProviderFactory.cs" />\r
+    <Compile Include="..\System\Mono.Net.Security\MonoTlsProviderWrapper.cs" />\r
+    <Compile Include="..\System\ReferenceSources\_SecureChannel.cs" />\r
+    <Compile Include="..\System\ReferenceSources\_SslState.cs" />\r
+    <Compile Include="..\System\ReferenceSources\_SslStream.cs" />\r
+    <Compile Include="..\System\ReferenceSources\Internal.cs" />\r
+    <Compile Include="..\System\ReferenceSources\SR.cs" />\r
+    <Compile Include="..\System\ReferenceSources\SR2.cs" />\r
+    <Compile Include="..\System\ReferenceSources\SslStream.cs" />\r
+    <Compile Include="..\System\ReferenceSources\SSPIConfiguration.cs" />\r
+    <Compile Include="..\System\ReferenceSources\SSPISafeHandles.cs" />\r
+    <Compile Include="..\System\ReferenceSources\SSPIWrapper.cs" />\r
+    <Compile Include=".\Properties\AssemblyInfo.cs" />\r  </ItemGroup>\r
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
+       Other similar extension points exist, see Microsoft.Common.targets.\r
+  <Target Name="BeforeBuild">\r
+  </Target>\r
+  <Target Name="AfterBuild">\r
+  </Target>\r
+  -->\r
+  <PropertyGroup>\r
+    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
+\r
+    </PreBuildEvent>\r
+    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+\r
+    </PreBuildEvent>\r
+\r
+    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
+\r
+    </PostBuildEvent>\r
+    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+\r
+    </PostBuildEvent>\r
+  </PropertyGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="../corlib/corlib-net_4_x.csproj">\r
+      <Project>{2CA6026B-2DC8-4C4C-A12C-1E8234049DB7}</Project>\r
+      <Name>corlib-net_4_x</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="../System/System-net_4_x.csproj">\r
+      <Project>{2762E921-91A8-4C87-91E9-BA628013F753}</Project>\r
+      <Name>System-net_4_x</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_x.csproj">\r
+      <Project>{42D59DE7-586F-4ACF-BDD5-E7869E39E3EF}</Project>\r
+      <Name>Mono.Security-net_4_x</Name>\r
+      <Aliases>MonoSecurity</Aliases>    </ProjectReference>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Folder Include="Properties\" />\r
+  </ItemGroup>\r
+</Project>\r
+
diff --git a/mcs/class/Mono.Security.Providers.NewSystemSource/Mono.Security.Providers.NewSystemSource.dll.sources b/mcs/class/Mono.Security.Providers.NewSystemSource/Mono.Security.Providers.NewSystemSource.dll.sources
new file mode 100644 (file)
index 0000000..80d1238
--- /dev/null
@@ -0,0 +1,32 @@
+./Properties/AssemblyInfo.cs
+../../build/common/SR.cs
+../../build/common/Consts.cs
+../../build/common/Locale.cs
+
+../../../external/referencesource/System/net/System/Net/Logging.cs
+../../../external/referencesource/System/net/System/Net/_SslSessionsCache.cs
+../../../external/referencesource/System/net/System/Net/_LazyAsyncResult.cs
+../../../external/referencesource/System/net/System/Net/_LoggingObject.cs
+../../../external/referencesource/System/net/System/Net/_NTAuthentication.cs
+../../../external/referencesource/System/net/System/Net/_SecureChannel.cs
+../../../external/referencesource/System/net/System/Net/SecureProtocols/SslStream.cs
+../../../external/referencesource/System/net/System/Net/SecureProtocols/_SslState.cs
+../../../external/referencesource/System/net/System/Net/SecureProtocols/_SslStream.cs
+../../../external/referencesource/System/net/System/Net/SecureProtocols/_FixedSizeReader.cs
+../../../external/referencesource/System/net/System/Net/SecureProtocols/_HelperAsyncResults.cs
+../../../external/referencesource/mscorlib/InternalApis/NDP_Common/inc/PinnableBufferCache.cs
+
+../System/ReferenceSources/SR.cs
+../System/ReferenceSources/SR2.cs
+../System/ReferenceSources/Internal.cs
+../System/ReferenceSources/SSPIWrapper.cs
+../System/ReferenceSources/SSPISafeHandles.cs
+../System/ReferenceSources/SslStream.cs
+../System/ReferenceSources/_SslState.cs
+../System/ReferenceSources/_SslStream.cs
+../System/ReferenceSources/_SecureChannel.cs
+../System/ReferenceSources/SSPIConfiguration.cs
+../System/Mono.Net.Security/CallbackHelpers.cs
+../System/Mono.Net.Security/IMonoTlsProvider.cs
+../System/Mono.Net.Security/MonoTlsProviderFactory.cs
+../System/Mono.Net.Security/MonoTlsProviderWrapper.cs
diff --git a/mcs/class/Mono.Security.Providers.NewSystemSource/Properties/AssemblyInfo.cs b/mcs/class/Mono.Security.Providers.NewSystemSource/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..b3178b8
--- /dev/null
@@ -0,0 +1,47 @@
+//
+// AssemblyInfo.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Reflection;
+using System.Resources;
+using System.Security;
+using System.Security.Permissions;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about the system assembly
+
+[assembly: AssemblyVersion (Consts.FxVersion)]
+
+[assembly: AssemblyCompany ("MONO development team")]
+[assembly: AssemblyCopyright ("(c) 2015 Xamarin")]
+[assembly: AssemblyDescription ("Mono.Security.Providers.NewSystemSource.dll")]
+[assembly: AssemblyProduct ("MONO CLI")]
+[assembly: AssemblyTitle ("Mono.Security.Providers.NewSystemSource.dll")]
+[assembly: CLSCompliant (true)]
+[assembly: ComVisible (false)]
+[assembly: NeutralResourcesLanguage ("en-US")]
+
+[assembly: InternalsVisibleTo ("Mono.Security.Providers.NewTls, PublicKey=002400000480000094000000060200000024000052534131000400001100000003336d6aed41624ca156ab579881fe90a576f1dfec48378fc94e4e440f4556776224e2d70c18996d91f36227f539fdb44340e07651f1455a489b29a7e6219a8f85e52b0f8588b4f8a857746a8468d37b556223d1452f3fcbaf0f269cdf1900ceb68f69485dc5887750d19571030c732331e00387d9b813a9ad52891087301793")]
diff --git a/mcs/class/Mono.Security.Providers.NewSystemSource/README.md b/mcs/class/Mono.Security.Providers.NewSystemSource/README.md
new file mode 100644 (file)
index 0000000..03447c0
--- /dev/null
@@ -0,0 +1,95 @@
+Mono.Security.Interface / Mono.Security.Providers
+=================================================
+
+This is not a public API yet, but will eventually become public.
+
+
+Mono.Security.Interface
+-----------------------
+
+`Mono.Security.Interface` provides an abstraction layer for the TLS
+APIs that are currently being used by Mono's class libraries.
+
+The main API entry points are `MonoTlsProviderFactory.GetProvider()`
+and `MonoTlsProviderFactory.InstallProvider()`.
+
+Mono.Net.Security
+-----------------
+
+`Mono.Net.Security` provides the internal implementation and lives
+inside `System.dll` as private and internal APIs.  `Mono.Security.dll`
+uses reflection to access these.
+
+On Mobile, the `Mono.Security.Interface` APIs are included as public
+APIs in `System.dll`.
+
+Mono.Security.Providers
+-----------------------
+
+Implementations of the `Mono.Security.Interface.MonoTlsProvider` class
+to provide TLS functionality.
+
+The default provider is inside `System.dll` - it will be used automatically
+if you don't explicitly install a custom provider, so simply call
+`MonoTlsProviderFactory.GetProvider()` to use it.
+
+* DotNet:
+  Provides the default `SslStream` implementation from `System.dll`, only using
+  public .NET types.
+  
+* NewSystemSource:
+  Compiles several referencesource files which would normally live inside
+  `System.dll` if we compiled it with their `SslStream` implementation.
+  
+  This allows to keep the code in `System.dll` as-is, while still providing the
+  new `SslStream`, which will be required by the new TLS code.
+  
+  `System.dll` needs to make its internals visible and we're using several compiler /
+  external alias tricks in here to make this work.
+  
+  In this configuration, `MONO_SYSTEM_ALIAS`, `MONO_FEATURE_NEW_TLS` and
+  `MONO_FEATURE_NEW_SYSTEM_SOURCE` (defining conditional for this configuration)
+  are defined.  We do not define `MONO_X509_ALIAS here`.
+  
+The `Mono.Security.Providers.DotNet` and `Mono.Security.Providers.NewSystemSource` directory is currently
+enabled in the top-level `Makefile`, but the resulting binaries should only be used to test the new TLS
+code and not shipped as stable APIs.
+
+Pending changes
+---------------
+
+This code is not actually being used in `System.dll` yet.  I have some
+local changes which will switch the existing code in `WebClient`,
+`SmptClient` and `FtpWebRequest` over, but these need to be carefully
+tested.
+
+At the moment, this work branch only provides new code and build
+changes, which shuffle some stuff around.  There are also several
+new files which are conditional and not actually being built by
+default.
+
+Build Configurations
+--------------------
+
+* Normal build:
+  Builds everything as before with some new APIs added, but without
+  modifying any existing functionality.
+  
+* Build with the `newtls` profile:
+  Builds `System.dll` with the new `SslStream` implementation from the
+  referencesource.  This is currently a "build then throw away" profile
+  and not enabled from the top-level Makefile.  The resulting `System.dll`
+  won't actually work at runtime since it's missing the new TLS code;
+  building it helps find problems and ensures that it will actually
+  be possible to build this once we deploy it.
+
+* Mono.Security.Providers:
+  The new TLS code requires the newly built `System` and `Mono.Security.Providers.NewSystemSource`
+  from this branch installed in the system.  It is recommended to install it
+  into a custom prefix and set that as custom runtime in Xamarin Studio.
+
+
+Last changed March 07th, 2015,
+Martin Baulig <martin.baulig@xamarin.com>
+
+
diff --git a/mcs/class/Mono.Security.Providers.OldTls/Makefile b/mcs/class/Mono.Security.Providers.OldTls/Makefile
new file mode 100644 (file)
index 0000000..5dc06c0
--- /dev/null
@@ -0,0 +1,12 @@
+thisdir = class/Mono.Security.Providers.OldTls
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = Mono.Security.Providers.OldTls.dll
+LIB_REFS = System Mono.Security
+LIB_MCS_FLAGS = -unsafe -nowarn:1030 -keyfile:../mono.pub -delaysign -d:SECURITY_DEP
+
+include ../../build/library.make
+
+$(the_lib): ../Mono.Security/Makefile
+
diff --git a/mcs/class/Mono.Security.Providers.OldTls/Mono.Security.Providers.OldTls-net_4_x.csproj b/mcs/class/Mono.Security.Providers.OldTls/Mono.Security.Providers.OldTls-net_4_x.csproj
new file mode 100644 (file)
index 0000000..7439af9
--- /dev/null
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <PropertyGroup>\r
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+    <ProductVersion>9.0.30729</ProductVersion>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
+    <ProjectGuid>{E485E885-59B1-4081-BC66-56AAAFD8771A}</ProjectGuid>\r
+    <OutputType>Library</OutputType>\r
+    <NoWarn>1699,1030</NoWarn>\r
+    <OutputPath>./../../class/lib/net_4_x</OutputPath>\r
+    <NoStdLib>True</NoStdLib>\r
+    <NoConfig>True</NoConfig>\r
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
+    <AppDesignerFolder>Properties</AppDesignerFolder>\r
+    <RootNamespace>\r
+    </RootNamespace>\r
+    <AssemblyName>Mono.Security.Providers.OldTls</AssemblyName>\r
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
+    <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+    <PropertyGroup>\r
+    <SignAssembly>true</SignAssembly>\r
+    <DelaySign>true</DelaySign>\r
+  </PropertyGroup>\r
+  <PropertyGroup>\r
+    <AssemblyOriginatorKeyFile>../mono.pub</AssemblyOriginatorKeyFile>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+    <DebugSymbols>true</DebugSymbols>\r
+    <DebugType>full</DebugType>\r
+    <NoWarn>1699,1030</NoWarn>\r
+    <Optimize>false</Optimize>\r
+    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;SECURITY_DEP</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+    <DebugType>pdbonly</DebugType>\r
+    <NoWarn>1699,1030</NoWarn>\r
+    <Optimize>true</Optimize>\r
+    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;SECURITY_DEP</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
+  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
+  is a problem to compile the Mono mscorlib.dll -->\r
+  <PropertyGroup>\r
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
+  </PropertyGroup>\r
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
+  <ItemGroup>\r
+    <Compile Include="..\..\build\common\Consts.cs" />\r
+    <Compile Include="..\..\build\common\Locale.cs" />\r
+    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD5SHA1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\TlsHMAC.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Client\TlsClientCertificate.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Client\TlsClientCertificateVerify.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Client\TlsClientFinished.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Client\TlsClientHello.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Client\TlsClientKeyExchange.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Client\TlsServerCertificate.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Client\TlsServerCertificateRequest.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Client\TlsServerFinished.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Client\TlsServerHello.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Client\TlsServerHelloDone.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Client\TlsServerKeyExchange.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Server\TlsClientCertificate.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Server\TlsClientCertificateVerify.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Server\TlsClientFinished.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Server\TlsClientHello.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Server\TlsClientKeyExchange.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Server\TlsServerCertificate.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Server\TlsServerCertificateRequest.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Server\TlsServerFinished.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Server\TlsServerHello.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Server\TlsServerHelloDone.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake.Server\TlsServerKeyExchange.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake\ClientCertificateType.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake\HandshakeMessage.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls.Handshake\HandshakeType.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\Alert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\CipherAlgorithmType.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\CipherSuite.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\CipherSuiteCollection.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\CipherSuiteFactory.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\ClientContext.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\ClientRecordProtocol.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\ClientSessionCache.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\ContentType.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\Context.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\DebugHelper.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\ExchangeAlgorithmType.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\HandshakeState.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\HashAlgorithmType.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\HttpsClientStream.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\RecordProtocol.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\RSASslSignatureDeformatter.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\RSASslSignatureFormatter.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\SecurityCompressionType.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\SecurityParameters.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\SecurityProtocolType.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\ServerContext.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\ServerRecordProtocol.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\SslCipherSuite.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\SslClientStream.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\SslHandshakeHash.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\SslServerStream.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\SslStreamBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\TlsCipherSuite.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\TlsClientSettings.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\TlsException.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\TlsServerSettings.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Protocol.Tls\TlsStream.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\AuthorityKeyIdentifierExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\ExtendedKeyUsageExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\GeneralNames.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\NetscapeCertTypeExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\SubjectAltNameExtension.cs" />\r
+    <Compile Include="..\System\Mono.Net.Security\LegacySslStream.cs" />\r
+    <Compile Include=".\Mono.Security.Providers.OldTls\OldTlsProvider.cs" />\r
+    <Compile Include=".\Properties\AssemblyInfo.cs" />\r  </ItemGroup>\r
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
+       Other similar extension points exist, see Microsoft.Common.targets.\r
+  <Target Name="BeforeBuild">\r
+  </Target>\r
+  <Target Name="AfterBuild">\r
+  </Target>\r
+  -->\r
+  <PropertyGroup>\r
+    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
+\r
+    </PreBuildEvent>\r
+    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+\r
+    </PreBuildEvent>\r
+\r
+    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
+\r
+    </PostBuildEvent>\r
+    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+\r
+    </PostBuildEvent>\r
+  </PropertyGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="../corlib/corlib-net_4_x.csproj">\r
+      <Project>{2CA6026B-2DC8-4C4C-A12C-1E8234049DB7}</Project>\r
+      <Name>corlib-net_4_x</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="../System/System-net_4_x.csproj">\r
+      <Project>{2762E921-91A8-4C87-91E9-BA628013F753}</Project>\r
+      <Name>System-net_4_x</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_x.csproj">\r
+      <Project>{42D59DE7-586F-4ACF-BDD5-E7869E39E3EF}</Project>\r
+      <Name>Mono.Security-net_4_x</Name>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Folder Include="Properties\" />\r
+  </ItemGroup>\r
+</Project>\r
+
diff --git a/mcs/class/Mono.Security.Providers.OldTls/Mono.Security.Providers.OldTls.dll.sources b/mcs/class/Mono.Security.Providers.OldTls/Mono.Security.Providers.OldTls.dll.sources
new file mode 100644 (file)
index 0000000..13653b8
--- /dev/null
@@ -0,0 +1,73 @@
+./Properties/AssemblyInfo.cs
+../../build/common/Consts.cs
+../../build/common/Locale.cs
+../../build/common/MonoTODOAttribute.cs
+
+./Mono.Security.Providers.OldTls/OldTlsProvider.cs
+../System/Mono.Net.Security/LegacySslStream.cs
+
+../Mono.Security/Mono.Security.Cryptography/MD5SHA1.cs
+../Mono.Security/Mono.Security.Cryptography/TlsHMAC.cs
+../Mono.Security/Mono.Security.Protocol.Tls/Alert.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteCollection.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteFactory.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientContext.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientRecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientSessionCache.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ContentType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/Context.cs
+../Mono.Security/Mono.Security.Protocol.Tls/DebugHelper.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HandshakeState.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityParameters.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ServerContext.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ServerRecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslCipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslHandshakeHash.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsCipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsClientSettings.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsException.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsServerSettings.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/ClientCertificateType.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeMessage.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeType.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificateRequest.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHelloDone.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificateVerify.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificateRequest.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHelloDone.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerKeyExchange.cs
+../Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/GeneralNames.cs
+../Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
diff --git a/mcs/class/Mono.Security.Providers.OldTls/Mono.Security.Providers.OldTls/OldTlsProvider.cs b/mcs/class/Mono.Security.Providers.OldTls/Mono.Security.Providers.OldTls/OldTlsProvider.cs
new file mode 100644 (file)
index 0000000..82bd9d5
--- /dev/null
@@ -0,0 +1,87 @@
+//
+// OldTlsProvider.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+using Mono.Security.Interface;
+using MNS = Mono.Net.Security;
+
+namespace Mono.Security.Providers.OldTls
+{
+       public class OldTlsProvider : MonoTlsProvider
+       {
+               static readonly Guid id = new Guid ("cf8baa0d-c6ed-40ae-b512-dec8d097e9af");
+
+               public override Guid ID {
+                       get { return id; }
+               }
+
+               public override string Name {
+                       get { return "old"; }
+               }
+
+               public override bool SupportsSslStream {
+                       get { return true; }
+               }
+
+               public override bool SupportsMonoExtensions {
+                       get { return false; }
+               }
+
+               public override bool SupportsConnectionInfo {
+                       get { return false; }
+               }
+
+               public override bool SupportsTlsContext {
+                       get { return false; }
+               }
+
+               public override SslProtocols SupportedProtocols {
+                       get { return SslProtocols.Tls; }
+               }
+
+               public override IMonoSslStream CreateSslStream (
+                       Stream innerStream, bool leaveInnerStreamOpen,
+                       MonoTlsSettings settings = null)
+               {
+                       var impl = new MNS.Private.LegacySslStream (innerStream, leaveInnerStreamOpen, this, settings);
+                       return new MNS.Private.MonoSslStreamImpl (impl);
+               }
+
+               public override IMonoTlsContext CreateTlsContext (
+                       string hostname, bool serverMode, TlsProtocols protocolFlags,
+                       X509Certificate serverCertificate, X509CertificateCollection clientCertificates,
+                       bool remoteCertRequired, MonoEncryptionPolicy encryptionPolicy,
+                       MonoTlsSettings settings)
+               {
+                       throw new NotSupportedException ();
+               }
+       }
+}
+
diff --git a/mcs/class/Mono.Security.Providers.OldTls/Properties/AssemblyInfo.cs b/mcs/class/Mono.Security.Providers.OldTls/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..923beca
--- /dev/null
@@ -0,0 +1,46 @@
+//
+// AssemblyInfo.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Reflection;
+using System.Resources;
+using System.Security;
+using System.Security.Permissions;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about the system assembly
+
+[assembly: AssemblyVersion (Consts.FxVersion)]
+
+[assembly: AssemblyCompany ("MONO development team")]
+[assembly: AssemblyCopyright ("(c) 2015 Xamarin")]
+[assembly: AssemblyDescription ("Mono.Security.Providers.OldTls.dll")]
+[assembly: AssemblyProduct ("MONO CLI")]
+[assembly: AssemblyTitle ("Mono.Security.Providers.OldTls.dll")]
+[assembly: CLSCompliant (true)]
+[assembly: ComVisible (false)]
+[assembly: NeutralResourcesLanguage ("en-US")]
+
diff --git a/mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_4_5.csproj b/mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_4_5.csproj
deleted file mode 100644 (file)
index 3a71124..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1DEB5FAA-15BC-46F1-BAFA-EE6DF0BB6F76}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Security.Win32</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CapiContext.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CapiHash.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CapiRandomNumberGenerator.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoAPI.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\MD2.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\MD2CryptoServiceProvider.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\MD4.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\MD4CryptoServiceProvider.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\MD5CryptoServiceProvider.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\RNGCryptoServiceProvider.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\SHA1CryptoServiceProvider.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index edb34ec36bf623cc729675ce4c3d8d1d641f1f66..eee0c8ff36d3643d70f9b3ca83afc58bdc87b9fe 100644 (file)
@@ -5,7 +5,7 @@ include ../../build/rules.make
 LIBRARY = Mono.Security.dll
 LOCAL_MCS_FLAGS = -lib:$(the_libdir_base)bare
 LIB_REFS = System
-LIB_MCS_FLAGS = -unsafe -nowarn:1030
+LIB_MCS_FLAGS = -unsafe -nowarn:1030,3009
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) -nowarn:169,219,618,672
 
 include ../../build/library.make
@@ -16,3 +16,10 @@ $(the_libdir_base)bare/System.dll:
        (cd ../System; $(MAKE) $@)
 
 .NOTPARALLEL: $(the_libdir_base)bare/System.dll
+
+EXTRA_DISTFILES = Mono.Security.Interface/README.md
+
+#
+# Update this comment to trigger a build in System
+# +1
+#
diff --git a/mcs/class/Mono.Security/Mono.Security-net_4_5.csproj b/mcs/class/Mono.Security/Mono.Security-net_4_5.csproj
deleted file mode 100644 (file)
index 78fe630..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D68D4FED-CA32-4800-A628-58BAE485562C}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1030</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Security</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1030</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1030</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include=".\Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
-    <Compile Include=".\Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
-    <Compile Include=".\Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
-    <Compile Include=".\Mono.Math.Prime\ConfidenceFactor.cs" />\r
-    <Compile Include=".\Mono.Math.Prime\PrimalityTests.cs" />\r
-    <Compile Include=".\Mono.Math\BigInteger.cs" />\r
-    <Compile Include=".\Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
-    <Compile Include=".\Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
-    <Compile Include=".\Mono.Security.Authenticode\AuthenticodeFormatter.cs" />\r
-    <Compile Include=".\Mono.Security.Authenticode\PrivateKey.cs" />\r
-    <Compile Include=".\Mono.Security.Authenticode\SoftwarePublisherCertificate.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\ARC4Managed.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\CryptoConvert.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\CryptoTools.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\DHKeyGeneration.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\DHParameters.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\DiffieHellman.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\DiffieHellmanManaged.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\MD2.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\MD2Managed.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\MD4.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\MD4Managed.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\MD5SHA1.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\PKCS1.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\PKCS8.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\RC4.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\RSAManaged.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\SHA224.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\SHA224Managed.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\SymmetricTransform.cs" />\r
-    <Compile Include=".\Mono.Security.Cryptography\TlsHMAC.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Ntlm\ChallengeResponse.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Ntlm\ChallengeResponse2.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Ntlm\MessageBase.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Ntlm\NtlmAuthLevel.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Ntlm\NtlmFlags.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Ntlm\NtlmSettings.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Ntlm\Type1Message.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Ntlm\Type2Message.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Ntlm\Type3Message.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Client\TlsClientCertificate.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Client\TlsClientCertificateVerify.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Client\TlsClientFinished.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Client\TlsClientHello.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Client\TlsClientKeyExchange.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Client\TlsServerCertificate.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Client\TlsServerCertificateRequest.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Client\TlsServerFinished.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Client\TlsServerHello.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Client\TlsServerHelloDone.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Client\TlsServerKeyExchange.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Server\TlsClientCertificate.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Server\TlsClientCertificateVerify.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Server\TlsClientFinished.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Server\TlsClientHello.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Server\TlsClientKeyExchange.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Server\TlsServerCertificate.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Server\TlsServerCertificateRequest.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Server\TlsServerFinished.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Server\TlsServerHello.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Server\TlsServerHelloDone.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake.Server\TlsServerKeyExchange.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake\ClientCertificateType.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake\HandshakeMessage.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls.Handshake\HandshakeType.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\Alert.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\CipherAlgorithmType.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\CipherSuite.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\CipherSuiteCollection.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\CipherSuiteFactory.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\ClientContext.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\ClientRecordProtocol.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\ClientSessionCache.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\ContentType.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\Context.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\DebugHelper.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\ExchangeAlgorithmType.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\HandshakeState.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\HashAlgorithmType.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\HttpsClientStream.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\RecordProtocol.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\RSASslSignatureDeformatter.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\RSASslSignatureFormatter.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\SecurityCompressionType.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\SecurityParameters.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\SecurityProtocolType.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\ServerContext.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\ServerRecordProtocol.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\SslCipherSuite.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\SslClientStream.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\SslHandshakeHash.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\SslServerStream.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\SslStreamBase.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\TlsCipherSuite.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\TlsClientSettings.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\TlsException.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\TlsServerSettings.cs" />\r
-    <Compile Include=".\Mono.Security.Protocol.Tls\TlsStream.cs" />\r
-    <Compile Include=".\Mono.Security.X509.Extensions\AuthorityKeyIdentifierExtension.cs" />\r
-    <Compile Include=".\Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
-    <Compile Include=".\Mono.Security.X509.Extensions\CertificatePoliciesExtension.cs" />\r
-    <Compile Include=".\Mono.Security.X509.Extensions\CRLDistributionPointsExtension.cs" />\r
-    <Compile Include=".\Mono.Security.X509.Extensions\ExtendedKeyUsageExtension.cs" />\r
-    <Compile Include=".\Mono.Security.X509.Extensions\GeneralNames.cs" />\r
-    <Compile Include=".\Mono.Security.X509.Extensions\KeyAttributesExtension.cs" />\r
-    <Compile Include=".\Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
-    <Compile Include=".\Mono.Security.X509.Extensions\NetscapeCertTypeExtension.cs" />\r
-    <Compile Include=".\Mono.Security.X509.Extensions\PrivateKeyUsagePeriodExtension.cs" />\r
-    <Compile Include=".\Mono.Security.X509.Extensions\SubjectAltNameExtension.cs" />\r
-    <Compile Include=".\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include=".\Mono.Security.X509\PKCS12.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X501Name.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X509Builder.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X509Certificate.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X509CertificateBuilder.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X509CertificateCollection.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X509Chain.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X509ChainStatusFlags.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X509CRL.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X509Extension.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X509Extensions.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X509Store.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X509StoreManager.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X509Stores.cs" />\r
-    <Compile Include=".\Mono.Security.X509\X520Attributes.cs" />\r
-    <Compile Include=".\Mono.Security\ASN1.cs" />\r
-    <Compile Include=".\Mono.Security\ASN1Convert.cs" />\r
-    <Compile Include=".\Mono.Security\BitConverterLE.cs" />\r
-    <Compile Include=".\Mono.Security\PKCS7.cs" />\r
-    <Compile Include=".\Mono.Security\StrongName.cs" />\r
-    <Compile Include=".\Mono.Xml\MiniParser.cs" />\r
-    <Compile Include=".\Mono.Xml\SecurityParser.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-bare-net_4_5.csproj">\r
-      <Project>{91CDF14E-F60F-4AB7-BC9D-5CBD7E669076}</Project>\r
-      <Name>System-bare-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index cc51fcf06ec991df2c4ae0382b46d3f0bff17163..879cb7e517f9fbade9d03dd78896f053de538af6 100644 (file)
     <Compile Include=".\Mono.Security.Cryptography\SHA224Managed.cs" />\r
     <Compile Include=".\Mono.Security.Cryptography\SymmetricTransform.cs" />\r
     <Compile Include=".\Mono.Security.Cryptography\TlsHMAC.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\Alert.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\CertificateValidationHelper.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\CipherAlgorithmType.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\CipherSuiteCode.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\ExchangeAlgorithmType.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\HashAlgorithmType.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\IBufferOffsetSize.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\IMonoSslStream.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\IMonoTlsContext.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\IMonoTlsEventSink.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\MonoTlsConnectionInfo.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\MonoTlsProvider.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\MonoTlsProviderFactory.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\MonoTlsSettings.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\TlsException.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\TlsProtocolCode.cs" />\r
+    <Compile Include=".\Mono.Security.Interface\TlsProtocols.cs" />\r
     <Compile Include=".\Mono.Security.Protocol.Ntlm\ChallengeResponse.cs" />\r
     <Compile Include=".\Mono.Security.Protocol.Ntlm\ChallengeResponse2.cs" />\r
     <Compile Include=".\Mono.Security.Protocol.Ntlm\MessageBase.cs" />\r
diff --git a/mcs/class/Mono.Security/Mono.Security-tests-net_4_5.csproj b/mcs/class/Mono.Security/Mono.Security-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 9f6dd3a..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{823040EA-6C7C-49B1-9CA3-9236C9B629F5}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1030,169,219,618,672</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.Security-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Security_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1030,169,219,618,672</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1030,169,219,618,672</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Mono.Math\ArithmeticBigTest.cs" />\r
-    <Compile Include="Test\Mono.Math\BigIntegerSetTest.cs" />\r
-    <Compile Include="Test\Mono.Math\BigIntegerTest.cs" />\r
-    <Compile Include="Test\Mono.Math\BitwiseTest.cs" />\r
-    <Compile Include="Test\Mono.Math\GcdBigTest.cs" />\r
-    <Compile Include="Test\Mono.Math\ModInverseBigTest.cs" />\r
-    <Compile Include="Test\Mono.Math\ModRingTest.cs" />\r
-    <Compile Include="Test\Mono.Math\PrimeGenerationTest.cs" />\r
-    <Compile Include="Test\Mono.Math\PrimeTestingTest.cs" />\r
-    <Compile Include="Test\Mono.Math\SearchGeneratorTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Authenticode\AuthenticodeDeformatterTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Authenticode\PrivateKeyTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Authenticode\SoftwarePublisherCertificateTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\ARC4ManagedTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\CryptoConvertTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\DiffieHellmanManagedTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\KeyPairPersistenceTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\MD2ManagedTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\MD2Test.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\MD4ManagedTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\MD4Test.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\PKCS1Test.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\PKCS8Test.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\RSAManagedTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\SHA224ManagedTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Cryptography\SHA224Test.cs" />\r
-    <Compile Include="Test\Mono.Security.Protocol.Ntlm\ChallengeResponseTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Protocol.Ntlm\MessageBaseTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type1MessageTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type2MessageTest.cs" />\r
-    <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type3MessageTest.cs" />\r
-    <Compile Include="Test\Mono.Security.X509.Extensions\AuthorityKeyIdentifierExtensionTest.cs" />\r
-    <Compile Include="Test\Mono.Security.X509.Extensions\BasicConstraintsExtensionTest.cs" />\r
-    <Compile Include="Test\Mono.Security.X509.Extensions\ExtendedKeyUsageExtensionTest.cs" />\r
-    <Compile Include="Test\Mono.Security.X509.Extensions\KeyUsageExtensionTest.cs" />\r
-    <Compile Include="Test\Mono.Security.X509.Extensions\SubjectAltNameExtensionTest.cs" />\r
-    <Compile Include="Test\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtensionTest.cs" />\r
-    <Compile Include="Test\Mono.Security.X509\PKCS12Test.cs" />\r
-    <Compile Include="Test\Mono.Security.X509\X501NameTest.cs" />\r
-    <Compile Include="Test\Mono.Security.X509\X509CertificateTest.cs" />\r
-    <Compile Include="Test\Mono.Security.X509\X509CrlTest.cs" />\r
-    <Compile Include="Test\Mono.Security.X509\X520AttributesTest.cs" />\r
-    <Compile Include="Test\Mono.Security\ASN1ConvertTest.cs" />\r
-    <Compile Include="Test\Mono.Security\PKCS7Test.cs" />\r
-    <Compile Include="Test\Mono.Security\StrongNameTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 3790c194f013bccf2564bb7c3115a8beec129d24..f91a3a959487c58d2204eb36917fe3076b84e101 100644 (file)
@@ -77,7 +77,7 @@ namespace Mono.Security.Authenticode {
                public string Hash {
                        get { 
                                if (hash == null)
-                                       hash = "MD5";
+                                       hash = "SHA1";
                                return hash; 
                        }
                        set {
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/Alert.cs b/mcs/class/Mono.Security/Mono.Security.Interface/Alert.cs
new file mode 100644 (file)
index 0000000..fdd0948
--- /dev/null
@@ -0,0 +1,277 @@
+//
+// Alert.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+namespace Mono.Security.Interface
+{
+       #region Enumerations
+
+       public enum AlertLevel : byte
+       {
+               Warning = 1,
+               Fatal   = 2
+       }
+
+       public enum AlertDescription : byte
+       {
+               CloseNotify                     = 0,
+               UnexpectedMessage               = 10,
+               BadRecordMAC                    = 20,
+               DecryptionFailed_RESERVED       = 21,
+               RecordOverflow                  = 22,
+               DecompressionFailure            = 30,
+               HandshakeFailure                = 40,
+               NoCertificate_RESERVED          = 41,   // should be used in SSL3
+               BadCertificate                  = 42,
+               UnsupportedCertificate          = 43,
+               CertificateRevoked              = 44,
+               CertificateExpired              = 45,
+               CertificateUnknown              = 46,
+               IlegalParameter                 = 47,
+               UnknownCA                       = 48,
+               AccessDenied                    = 49,
+               DecodeError                     = 50,
+               DecryptError                    = 51,
+               ExportRestriction               = 60,
+               ProtocolVersion                 = 70,
+               InsuficientSecurity             = 71,
+               InternalError                   = 80,
+               UserCancelled                   = 90,
+               NoRenegotiation                 = 100,
+               UnsupportedExtension            = 110
+       }
+
+       #endregion
+       
+       public class Alert
+       {
+               #region Fields
+
+               private AlertLevel                      level;
+               private AlertDescription        description;
+
+               #endregion
+
+               #region Properties
+
+               public AlertLevel Level
+               {
+                       get { return this.level; }
+               }
+
+               public AlertDescription Description
+               {
+                       get { return this.description; }
+               }
+
+               public string Message
+               {
+                       get { return Alert.GetAlertMessage(this.description); }
+               }
+
+               public bool IsWarning
+               {
+                       get { return this.level == AlertLevel.Warning ? true : false; }
+               }
+
+               /*
+               public bool IsFatal
+               {
+                       get { return this.level == AlertLevel.Fatal ? true : false; }
+               }
+               */
+
+               public bool IsCloseNotify
+               {
+                       get
+                       {
+                               if (this.IsWarning &&
+                                       this.description == AlertDescription.CloseNotify)
+                               {
+                                       return true;
+                               }
+
+                               return false;
+                       }
+               }
+
+               #endregion
+
+               #region Constructors
+
+               public Alert(AlertDescription description)
+               {
+                       this.description = description;
+                       this.inferAlertLevel();
+               }
+
+               public Alert(
+                       AlertLevel                      level,
+                       AlertDescription        description)
+               {
+                       this.level                      = level;
+                       this.description        = description;
+               }
+
+               #endregion
+
+               #region Private Methods
+
+               private void inferAlertLevel()
+               {
+                       switch (description)
+                       {
+                               case AlertDescription.CloseNotify:
+                               case AlertDescription.NoRenegotiation:
+                               case AlertDescription.UserCancelled:
+                                       this.level = AlertLevel.Warning;
+                                       break;
+
+                               case AlertDescription.AccessDenied:
+                               case AlertDescription.BadCertificate:
+                               case AlertDescription.BadRecordMAC:
+                               case AlertDescription.CertificateExpired:
+                               case AlertDescription.CertificateRevoked:
+                               case AlertDescription.CertificateUnknown:
+                               case AlertDescription.DecodeError:
+                               case AlertDescription.DecompressionFailure:
+                               case AlertDescription.DecryptError:
+                               case AlertDescription.DecryptionFailed_RESERVED:
+                               case AlertDescription.ExportRestriction:
+                               case AlertDescription.HandshakeFailure:
+                               case AlertDescription.IlegalParameter:
+                               case AlertDescription.InsuficientSecurity:
+                               case AlertDescription.InternalError:
+                               case AlertDescription.ProtocolVersion:
+                               case AlertDescription.RecordOverflow:
+                               case AlertDescription.UnexpectedMessage:
+                               case AlertDescription.UnknownCA:
+                               case AlertDescription.UnsupportedCertificate:
+                               case AlertDescription.UnsupportedExtension:
+                               default:
+                                       this.level = AlertLevel.Fatal;
+                                       break;
+                       }
+               }
+               
+               #endregion
+
+               public override string ToString ()
+               {
+                       return string.Format ("[Alert: {0}:{1}]", Level, Description);
+               }
+
+               #region Static Methods
+
+               public static string GetAlertMessage(AlertDescription description)
+               {
+                       #if (DEBUG)
+                       switch (description)
+                       {
+                               case AlertDescription.AccessDenied:
+                                       return "An inappropriate message was received.";
+
+                               case AlertDescription.BadCertificate:
+                                       return "TLSCiphertext decrypted in an invalid way.";
+
+                               case AlertDescription.BadRecordMAC:
+                                       return "Record with an incorrect MAC.";
+
+                               case AlertDescription.CertificateExpired:
+                                       return "Certificate has expired or is not currently valid";
+
+                               case AlertDescription.CertificateRevoked:
+                                       return "Certificate was revoked by its signer.";
+                                       
+                               case AlertDescription.CertificateUnknown:
+                                       return "Certificate Unknown.";
+
+                               case AlertDescription.CloseNotify:
+                                       return "Connection closed";
+
+                               case AlertDescription.DecodeError:
+                                       return "A message could not be decoded because some field was out of the specified range or the length of the message was incorrect.";
+
+                               case AlertDescription.DecompressionFailure:
+                                       return "The decompression function received improper input (e.g. data that would expand to excessive length).";
+
+                               case AlertDescription.DecryptError:
+                                       return "TLSCiphertext decrypted in an invalid way: either it wasn`t an even multiple of the block length or its padding values, when checked, weren`t correct.";
+
+                               case AlertDescription.DecryptionFailed_RESERVED:
+                                       return "Handshake cryptographic operation failed, including being unable to correctly verify a signature, decrypt a key exchange, or validate finished message.";
+
+                               case AlertDescription.ExportRestriction:
+                                       return "Negotiation not in compliance with export restrictions was detected.";
+
+                               case AlertDescription.HandshakeFailure:
+                                       return "Unable to negotiate an acceptable set of security parameters given the options available.";
+
+                               case AlertDescription.IlegalParameter:
+                                       return "A field in the handshake was out of range or inconsistent with other fields.";
+                                       
+                               case AlertDescription.InsuficientSecurity:
+                                       return "Negotiation has failed specifically because the server requires ciphers more secure than those supported by the client.";
+                                       
+                               case AlertDescription.InternalError:
+                                       return "Internal error unrelated to the peer or the correctness of the protocol makes it impossible to continue.";
+
+                               case AlertDescription.NoRenegotiation:
+                                       return "Invalid renegotiation.";
+
+                               case AlertDescription.ProtocolVersion:
+                                       return "Unsupported protocol version.";
+
+                               case AlertDescription.RecordOverflow:
+                                       return "Invalid length on TLSCiphertext record or TLSCompressed record.";
+
+                               case AlertDescription.UnexpectedMessage:
+                                       return "Invalid message received.";
+
+                               case AlertDescription.UnknownCA:
+                                       return "CA can't be identified as a trusted CA.";
+
+                               case AlertDescription.UnsupportedCertificate:
+                                       return "Certificate was of an unsupported type.";
+
+                               case AlertDescription.UserCancelled:
+                                       return "Handshake cancelled by user.";
+
+                               case AlertDescription.UnsupportedExtension:
+                                       return "Unsupported extension.";
+
+                               default:
+                                       return "";
+                       }
+                       #else
+                       return "The authentication or decryption has failed.";
+                       #endif
+               }
+
+               #endregion
+       }
+}
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/CertificateValidationHelper.cs b/mcs/class/Mono.Security/Mono.Security.Interface/CertificateValidationHelper.cs
new file mode 100644 (file)
index 0000000..fc90108
--- /dev/null
@@ -0,0 +1,161 @@
+//
+// CertificateValidationHelper.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Threading;
+using System.Security.Cryptography.X509Certificates;
+using Mono.Security.Protocol.Tls;
+using MX = Mono.Security.X509;
+using Mono.Net.Security;
+
+namespace Mono.Security.Interface
+{
+       public class ValidationResult
+       {
+               bool trusted;
+               bool user_denied;
+               int error_code;
+               MonoSslPolicyErrors? policy_errors;
+
+               public ValidationResult (bool trusted, bool user_denied, int error_code, MonoSslPolicyErrors? policy_errors)
+               {
+                       this.trusted = trusted;
+                       this.user_denied = user_denied;
+                       this.error_code = error_code;
+                       this.policy_errors = policy_errors;
+               }
+
+               internal ValidationResult (bool trusted, bool user_denied, int error_code)
+               {
+                       this.trusted = trusted;
+                       this.user_denied = user_denied;
+                       this.error_code = error_code;
+               }
+
+               public bool Trusted {
+                       get { return trusted; }
+               }
+
+               public bool UserDenied {
+                       get { return user_denied; }
+               }
+
+               public int ErrorCode {
+                       get { return error_code; }
+               }
+
+               public MonoSslPolicyErrors? PolicyErrors {
+                       get { return policy_errors; }
+               }
+       }
+
+       /**
+        * Internal interface - do not implement
+        */
+       public interface ICertificateValidator
+       {
+               MonoTlsSettings Settings {
+                       get;
+               }
+
+               /*
+                * Returns `true` if a client certificate has been selected (which could be `null`).
+                */
+               bool SelectClientCertificate (
+                       string targetHost, X509CertificateCollection localCertificates, X509Certificate remoteCertificate,
+                       string[] acceptableIssuers, out X509Certificate clientCertificate);
+
+               /*
+                * If @serverMode is true, then we're a server and want to validate a certificate that we received from a client.
+                */
+               ValidationResult ValidateCertificate (string targetHost, bool serverMode, X509CertificateCollection certificates);
+
+               /*
+                * On OS X and Mobile, the @chain will be initialized with the @certificates, but not actually built.
+                */
+               bool InvokeSystemValidator (
+                       string targetHost, bool serverMode, X509CertificateCollection certificates,
+                       X509Chain chain, ref MonoSslPolicyErrors errors, ref int status11);
+       }
+
+       public static class CertificateValidationHelper
+       {
+               const string SecurityLibrary = "/System/Library/Frameworks/Security.framework/Security";
+               static readonly bool noX509Chain;
+               static readonly bool supportsTrustAnchors;
+
+               static CertificateValidationHelper ()
+               {
+                       #if MONOTOUCH || XAMMAC
+                       noX509Chain = true;
+                       supportsTrustAnchors = true;
+                       #elif MONODROID
+                       noX509Chain = true;
+                       supportsTrustAnchors = false;
+                       #else
+                       if (File.Exists (SecurityLibrary)) {
+                               noX509Chain = true;
+                               supportsTrustAnchors = true;
+                       } else {
+                               noX509Chain = false;
+                               supportsTrustAnchors = false;
+                       }
+                       #endif
+               }
+
+               public static bool SupportsX509Chain {
+                       get { return !noX509Chain; }
+               }
+
+               public static bool SupportsTrustAnchors {
+                       get { return supportsTrustAnchors; }
+               }
+
+               static ICertificateValidator GetDefaultValidator (MonoTlsProvider provider, MonoTlsSettings settings)
+               {
+                       return (ICertificateValidator)NoReflectionHelper.GetDefaultCertificateValidator (provider, settings);
+               }
+
+               /*
+                * Internal API, intended to be used by MonoTlsProvider implementations.
+                */
+               public static ICertificateValidator GetValidator (MonoTlsProvider provider, MonoTlsSettings settings)
+               {
+                       return GetDefaultValidator (provider, settings);
+               }
+
+               /*
+                * Use this overloaded version in user code.
+                */
+               public static ICertificateValidator GetValidator (MonoTlsSettings settings)
+               {
+                       return GetDefaultValidator (null, settings);
+               }
+       }
+}
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/CipherAlgorithmType.cs b/mcs/class/Mono.Security/Mono.Security.Interface/CipherAlgorithmType.cs
new file mode 100644 (file)
index 0000000..4a54fa7
--- /dev/null
@@ -0,0 +1,39 @@
+//
+// CipherAlgorithmType.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+namespace Mono.Security.Interface
+{
+       public enum CipherAlgorithmType
+       {
+               None,
+               Aes128,
+               Aes256,
+               AesGcm128,
+               AesGcm256
+       }
+}
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/CipherSuiteCode.cs b/mcs/class/Mono.Security/Mono.Security.Interface/CipherSuiteCode.cs
new file mode 100644 (file)
index 0000000..66980df
--- /dev/null
@@ -0,0 +1,398 @@
+//
+// CipherSuiteCode.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+namespace Mono.Security.Interface
+{
+       /// <summary>
+       /// RFC 2246 A.5
+       /// </summary>
+       public enum CipherSuiteCode : ushort
+       {
+               TLS_NULL_WITH_NULL_NULL = 0x0000,
+               TLS_RSA_WITH_NULL_MD5 = 0x0001,
+               TLS_RSA_WITH_NULL_SHA = 0x0002,
+               TLS_RSA_EXPORT_WITH_RC4_40_MD5 = 0x0003,
+               TLS_RSA_WITH_RC4_128_MD5 = 0x0004,
+               TLS_RSA_WITH_RC4_128_SHA = 0x0005,
+               TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = 0x0006,
+               TLS_RSA_WITH_IDEA_CBC_SHA = 0x0007,
+               TLS_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0008,
+               TLS_RSA_WITH_DES_CBC_SHA = 0x0009,
+               TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x000A,
+               TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x000B,
+               TLS_DH_DSS_WITH_DES_CBC_SHA = 0x000C,
+               TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA = 0x000D,
+               TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x000E,
+               TLS_DH_RSA_WITH_DES_CBC_SHA = 0x000F,
+               TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA = 0x0010,
+               TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x0011,
+               TLS_DHE_DSS_WITH_DES_CBC_SHA = 0x0012,
+               TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = 0x0013,
+               TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0014,
+               TLS_DHE_RSA_WITH_DES_CBC_SHA = 0x0015,
+               TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x0016,
+               TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 = 0x0017,
+               TLS_DH_anon_WITH_RC4_128_MD5 = 0x0018,
+               TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA = 0x0019,
+               TLS_DH_anon_WITH_DES_CBC_SHA = 0x001A,
+               TLS_DH_anon_WITH_3DES_EDE_CBC_SHA = 0x001B,
+
+               /*
+                * Note: The cipher suite values { 0x00, 0x1C } and { 0x00, 0x1D } are reserved to avoid
+                * collision with Fortezza-based cipher suites in SSL 3.
+               */
+
+               /*
+                * RFC 3268
+               */
+               TLS_RSA_WITH_AES_128_CBC_SHA = 0x002F,
+               TLS_DH_DSS_WITH_AES_128_CBC_SHA = 0x0030,
+               TLS_DH_RSA_WITH_AES_128_CBC_SHA = 0x0031,
+               TLS_DHE_DSS_WITH_AES_128_CBC_SHA = 0x0032,
+               TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x0033,
+               TLS_DH_anon_WITH_AES_128_CBC_SHA = 0x0034,
+               TLS_RSA_WITH_AES_256_CBC_SHA = 0x0035,
+               TLS_DH_DSS_WITH_AES_256_CBC_SHA = 0x0036,
+               TLS_DH_RSA_WITH_AES_256_CBC_SHA = 0x0037,
+               TLS_DHE_DSS_WITH_AES_256_CBC_SHA = 0x0038,
+               TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x0039,
+               TLS_DH_anon_WITH_AES_256_CBC_SHA = 0x003A,
+
+               /*
+                * RFC 5932
+               */
+               TLS_RSA_WITH_CAMELLIA_128_CBC_SHA = 0x0041,
+               TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA = 0x0042,
+               TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA = 0x0043,
+               TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA = 0x0044,
+               TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA = 0x0045,
+               TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA = 0x0046,
+
+               TLS_RSA_WITH_CAMELLIA_256_CBC_SHA = 0x0084,
+               TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA = 0x0085,
+               TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA = 0x0086,
+               TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA = 0x0087,
+               TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA = 0x0088,
+               TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA = 0x0089,
+
+               TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BA,
+               TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BB,
+               TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BC,
+               TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BD,
+               TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BE,
+               TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BF,
+
+               TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C0,
+               TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C1,
+               TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C2,
+               TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C3,
+               TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C4,
+               TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C5,
+
+               /*
+                * RFC 4162
+               */
+               TLS_RSA_WITH_SEED_CBC_SHA = 0x0096,
+               TLS_DH_DSS_WITH_SEED_CBC_SHA = 0x0097,
+               TLS_DH_RSA_WITH_SEED_CBC_SHA = 0x0098,
+               TLS_DHE_DSS_WITH_SEED_CBC_SHA = 0x0099,
+               TLS_DHE_RSA_WITH_SEED_CBC_SHA = 0x009A,
+               TLS_DH_anon_WITH_SEED_CBC_SHA = 0x009B,
+
+               /*
+                * RFC 4279
+               */
+               TLS_PSK_WITH_RC4_128_SHA = 0x008A,
+               TLS_PSK_WITH_3DES_EDE_CBC_SHA = 0x008B,
+               TLS_PSK_WITH_AES_128_CBC_SHA = 0x008C,
+               TLS_PSK_WITH_AES_256_CBC_SHA = 0x008D,
+               TLS_DHE_PSK_WITH_RC4_128_SHA = 0x008E,
+               TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA = 0x008F,
+               TLS_DHE_PSK_WITH_AES_128_CBC_SHA = 0x0090,
+               TLS_DHE_PSK_WITH_AES_256_CBC_SHA = 0x0091,
+               TLS_RSA_PSK_WITH_RC4_128_SHA = 0x0092,
+               TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA = 0x0093,
+               TLS_RSA_PSK_WITH_AES_128_CBC_SHA = 0x0094,
+               TLS_RSA_PSK_WITH_AES_256_CBC_SHA = 0x0095,
+
+               /*
+                * RFC 4492
+               */
+               TLS_ECDH_ECDSA_WITH_NULL_SHA = 0xC001,
+               TLS_ECDH_ECDSA_WITH_RC4_128_SHA = 0xC002,
+               TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA = 0xC003,
+               TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA = 0xC004,
+               TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA = 0xC005,
+               TLS_ECDHE_ECDSA_WITH_NULL_SHA = 0xC006,
+               TLS_ECDHE_ECDSA_WITH_RC4_128_SHA = 0xC007,
+               TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA = 0xC008,
+               TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 0xC009,
+               TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 0xC00A,
+               TLS_ECDH_RSA_WITH_NULL_SHA = 0xC00B,
+               TLS_ECDH_RSA_WITH_RC4_128_SHA = 0xC00C,
+               TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA = 0xC00D,
+               TLS_ECDH_RSA_WITH_AES_128_CBC_SHA = 0xC00E,
+               TLS_ECDH_RSA_WITH_AES_256_CBC_SHA = 0xC00F,
+               TLS_ECDHE_RSA_WITH_NULL_SHA = 0xC010,
+               TLS_ECDHE_RSA_WITH_RC4_128_SHA = 0xC011,
+               TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA = 0xC012,
+               TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 0xC013,
+               TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 0xC014,
+               TLS_ECDH_anon_WITH_NULL_SHA = 0xC015,
+               TLS_ECDH_anon_WITH_RC4_128_SHA = 0xC016,
+               TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA = 0xC017,
+               TLS_ECDH_anon_WITH_AES_128_CBC_SHA = 0xC018,
+               TLS_ECDH_anon_WITH_AES_256_CBC_SHA = 0xC019,
+
+               /*
+                * RFC 4785
+               */
+               TLS_PSK_WITH_NULL_SHA = 0x002C,
+               TLS_DHE_PSK_WITH_NULL_SHA = 0x002D,
+               TLS_RSA_PSK_WITH_NULL_SHA = 0x002E,
+
+               /*
+                * RFC 5054
+               */
+               TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA = 0xC01A,
+               TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA = 0xC01B,
+               TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA = 0xC01C,
+               TLS_SRP_SHA_WITH_AES_128_CBC_SHA = 0xC01D,
+               TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA = 0xC01E,
+               TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA = 0xC01F,
+               TLS_SRP_SHA_WITH_AES_256_CBC_SHA = 0xC020,
+               TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA = 0xC021,
+               TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA = 0xC022,
+
+               /*
+                * RFC 5246
+               */
+               TLS_RSA_WITH_NULL_SHA256 = 0x003B,
+               TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x003C,
+               TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x003D,
+               TLS_DH_DSS_WITH_AES_128_CBC_SHA256 = 0x003E,
+               TLS_DH_RSA_WITH_AES_128_CBC_SHA256 = 0x003F,
+               TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 = 0x0040,
+               TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 = 0x0067,
+               TLS_DH_DSS_WITH_AES_256_CBC_SHA256 = 0x0068,
+               TLS_DH_RSA_WITH_AES_256_CBC_SHA256 = 0x0069,
+               TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 = 0x006A,
+               TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 = 0x006B,
+               TLS_DH_anon_WITH_AES_128_CBC_SHA256 = 0x006C,
+               TLS_DH_anon_WITH_AES_256_CBC_SHA256 = 0x006D,
+
+               /*
+                * RFC 5288
+               */
+               TLS_RSA_WITH_AES_128_GCM_SHA256 = 0x009C,
+               TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x009D,
+               TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 = 0x009E,
+               TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = 0x009F,
+               TLS_DH_RSA_WITH_AES_128_GCM_SHA256 = 0x00A0,
+               TLS_DH_RSA_WITH_AES_256_GCM_SHA384 = 0x00A1,
+               TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 = 0x00A2,
+               TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 = 0x00A3,
+               TLS_DH_DSS_WITH_AES_128_GCM_SHA256 = 0x00A4,
+               TLS_DH_DSS_WITH_AES_256_GCM_SHA384 = 0x00A5,
+               TLS_DH_anon_WITH_AES_128_GCM_SHA256 = 0x00A6,
+               TLS_DH_anon_WITH_AES_256_GCM_SHA384 = 0x00A7,
+
+               /*
+                * RFC 5289
+               */
+               TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 0xC023,
+               TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = 0xC024,
+               TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 = 0xC025,
+               TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 = 0xC026,
+               TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 0xC027,
+               TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = 0xC028,
+               TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 = 0xC029,
+               TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 = 0xC02A,
+               TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 0xC02B,
+               TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 0xC02C,
+               TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 = 0xC02D,
+               TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 = 0xC02E,
+               TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 0xC02F,
+               TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 0xC030,
+               TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 = 0xC031,
+               TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 = 0xC032,
+
+               /*
+                * RFC 5487
+               */
+               TLS_PSK_WITH_AES_128_GCM_SHA256 = 0x00A8,
+               TLS_PSK_WITH_AES_256_GCM_SHA384 = 0x00A9,
+               TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 = 0x00AA,
+               TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 = 0x00AB,
+               TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 = 0x00AC,
+               TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 = 0x00AD,
+               TLS_PSK_WITH_AES_128_CBC_SHA256 = 0x00AE,
+               TLS_PSK_WITH_AES_256_CBC_SHA384 = 0x00AF,
+               TLS_PSK_WITH_NULL_SHA256 = 0x00B0,
+               TLS_PSK_WITH_NULL_SHA384 = 0x00B1,
+               TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 = 0x00B2,
+               TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 = 0x00B3,
+               TLS_DHE_PSK_WITH_NULL_SHA256 = 0x00B4,
+               TLS_DHE_PSK_WITH_NULL_SHA384 = 0x00B5,
+               TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 = 0x00B6,
+               TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 = 0x00B7,
+               TLS_RSA_PSK_WITH_NULL_SHA256 = 0x00B8,
+               TLS_RSA_PSK_WITH_NULL_SHA384 = 0x00B9,
+
+               /*
+                * RFC 5489
+               */
+               TLS_ECDHE_PSK_WITH_RC4_128_SHA = 0xC033,
+               TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA = 0xC034,
+               TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA = 0xC035,
+               TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA = 0xC036,
+               TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 = 0xC037,
+               TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 = 0xC038,
+               TLS_ECDHE_PSK_WITH_NULL_SHA = 0xC039,
+               TLS_ECDHE_PSK_WITH_NULL_SHA256 = 0xC03A,
+               TLS_ECDHE_PSK_WITH_NULL_SHA384 = 0xC03B,
+
+               /*
+                * RFC 5746
+               */
+               TLS_EMPTY_RENEGOTIATION_INFO_SCSV = 0x00FF,
+
+               /*
+                * RFC 6367
+               */
+               TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 = 0xC072,
+               TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 = 0xC073,
+               TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 = 0xC074,
+               TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 = 0xC075,
+               TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0xC076,
+               TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 = 0xC077,
+               TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0xC078,
+               TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 = 0xC079,
+
+               TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC07A,
+               TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC07B,
+               TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC07C,
+               TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC07D,
+               TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC07E,
+               TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC07F,
+               TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256 = 0xC080,
+               TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384 = 0xC081,
+               TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256 = 0xC082,
+               TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384 = 0xC083,
+               TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256 = 0xC084,
+               TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384 = 0xC085,
+               TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC086,
+               TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC087,
+               TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC088,
+               TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC089,
+               TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC08A,
+               TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC08B,
+               TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC08C,
+               TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC08D,
+
+               TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 = 0xC08E,
+               TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 = 0xC08F,
+               TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 = 0xC090,
+               TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 = 0xC091,
+               TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 = 0xC092,
+               TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 = 0xC093,
+               TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 = 0xC094,
+               TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 = 0xC095,
+               TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 = 0xC096,
+               TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 = 0xC097,
+               TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 = 0xC098,
+               TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 = 0xC099,
+               TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 = 0xC09A,
+               TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 = 0xC09B,
+
+               /*
+                * RFC 6655
+               */
+               TLS_RSA_WITH_AES_128_CCM = 0xC09C,
+               TLS_RSA_WITH_AES_256_CCM = 0xC09D,
+               TLS_DHE_RSA_WITH_AES_128_CCM = 0xC09E,
+               TLS_DHE_RSA_WITH_AES_256_CCM = 0xC09F,
+               TLS_RSA_WITH_AES_128_CCM_8 = 0xC0A0,
+               TLS_RSA_WITH_AES_256_CCM_8 = 0xC0A1,
+               TLS_DHE_RSA_WITH_AES_128_CCM_8 = 0xC0A2,
+               TLS_DHE_RSA_WITH_AES_256_CCM_8 = 0xC0A3,
+               TLS_PSK_WITH_AES_128_CCM = 0xC0A4,
+               TLS_PSK_WITH_AES_256_CCM = 0xC0A5,
+               TLS_DHE_PSK_WITH_AES_128_CCM = 0xC0A6,
+               TLS_DHE_PSK_WITH_AES_256_CCM = 0xC0A7,
+               TLS_PSK_WITH_AES_128_CCM_8 = 0xC0A8,
+               TLS_PSK_WITH_AES_256_CCM_8 = 0xC0A9,
+               TLS_PSK_DHE_WITH_AES_128_CCM_8 = 0xC0AA,
+               TLS_PSK_DHE_WITH_AES_256_CCM_8 = 0xC0AB,
+
+               /*
+                * draft-agl-tls-chacha20poly1305-04
+               */
+               TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 = 0xCC13,
+               TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 = 0xCC14,
+               TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 = 0xCC15,
+
+               /*
+                * draft-josefsson-salsa20-tls-04
+               */
+               TLS_RSA_WITH_ESTREAM_SALSA20_SHA1 = 0xE410,
+               TLS_RSA_WITH_SALSA20_SHA1 = 0xE411,
+               TLS_ECDHE_RSA_WITH_ESTREAM_SALSA20_SHA1 = 0xE412,
+               TLS_ECDHE_RSA_WITH_SALSA20_SHA1 = 0xE413,
+               TLS_ECDHE_ECDSA_WITH_ESTREAM_SALSA20_SHA1 = 0xE414,
+               TLS_ECDHE_ECDSA_WITH_SALSA20_SHA1 = 0xE415,
+               TLS_PSK_WITH_ESTREAM_SALSA20_SHA1 = 0xE416,
+               TLS_PSK_WITH_SALSA20_SHA1 = 0xE417,
+               TLS_ECDHE_PSK_WITH_ESTREAM_SALSA20_SHA1 = 0xE418,
+               TLS_ECDHE_PSK_WITH_SALSA20_SHA1 = 0xE419,
+               TLS_RSA_PSK_WITH_ESTREAM_SALSA20_SHA1 = 0xE41A,
+               TLS_RSA_PSK_WITH_SALSA20_SHA1 = 0xE41B,
+               TLS_DHE_PSK_WITH_ESTREAM_SALSA20_SHA1 = 0xE41C,
+               TLS_DHE_PSK_WITH_SALSA20_SHA1 = 0xE41D,
+               TLS_DHE_RSA_WITH_ESTREAM_SALSA20_SHA1 = 0xE41E,
+               TLS_DHE_RSA_WITH_SALSA20_SHA1 = 0xE41F,
+
+               /*
+                * draft-ietf-tls-downgrade-scsv-00
+               */
+               TLS_FALLBACK_SCSV = 0x5600,
+
+               /*
+               public static bool IsScsv (int cipherSuite)
+               {
+                       switch (cipherSuite) {
+                       case TLS_EMPTY_RENEGOTIATION_INFO_SCSV:
+                       case TLS_FALLBACK_SCSV:
+                               return true,
+                       default:
+                               return false,
+                       }
+               }
+               */
+       }
+}
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/ExchangeAlgorithmType.cs b/mcs/class/Mono.Security/Mono.Security.Interface/ExchangeAlgorithmType.cs
new file mode 100644 (file)
index 0000000..c7a70aa
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// ExchangeAlgorithmType.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+namespace Mono.Security.Interface
+{
+       public enum ExchangeAlgorithmType
+       {
+               None,
+               Dhe,
+               Rsa,
+               EcDhe
+       }
+}
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/HashAlgorithmType.cs b/mcs/class/Mono.Security/Mono.Security.Interface/HashAlgorithmType.cs
new file mode 100644 (file)
index 0000000..549e0b6
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// HashAlgorithmType.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+namespace Mono.Security.Interface
+{
+       public enum HashAlgorithmType
+       {
+               // These values refer to the @HashAlgorithm enumeration in the TLS 1.2 spec.
+               None    = 0,
+               Md5     = 1,
+               Sha1    = 2,
+               Sha224  = 3,
+               Sha256  = 4,
+               Sha384  = 5,
+               Sha512  = 6,
+               Unknown = 255,
+
+               // Mono-specific addition, allowing us to reuse it IHashAlgorithm API for TLS 1.0 / 1.1.
+               Md5Sha1 = 254
+       }
+}
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/IBufferOffsetSize.cs b/mcs/class/Mono.Security/Mono.Security.Interface/IBufferOffsetSize.cs
new file mode 100644 (file)
index 0000000..93b422c
--- /dev/null
@@ -0,0 +1,43 @@
+//
+// IBufferOffsetSize.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+namespace Mono.Security.Interface
+{
+       public interface IBufferOffsetSize
+       {
+               byte[] Buffer {
+                       get;
+               }
+
+               int Offset {
+                       get;
+               }
+
+               int Size {
+                       get;
+               }
+       }
+}
+
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/IMonoSslStream.cs b/mcs/class/Mono.Security/Mono.Security.Interface/IMonoSslStream.cs
new file mode 100644 (file)
index 0000000..0098be9
--- /dev/null
@@ -0,0 +1,195 @@
+//
+// IMonoSslStream.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Threading.Tasks;
+using SSA = System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.Security.Cryptography;
+using Mono.Net.Security;
+
+namespace Mono.Security.Interface
+{
+       public interface IMonoSslStream : IDisposable
+       {
+               void AuthenticateAsClient (string targetHost);
+
+               void AuthenticateAsClient (string targetHost, X509CertificateCollection clientCertificates, SSA.SslProtocols enabledSslProtocols, bool checkCertificateRevocation);
+
+               IAsyncResult BeginAuthenticateAsClient (string targetHost, AsyncCallback asyncCallback, object asyncState);
+
+               IAsyncResult BeginAuthenticateAsClient (string targetHost, X509CertificateCollection clientCertificates, SSA.SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState);
+
+               void EndAuthenticateAsClient (IAsyncResult asyncResult);
+
+               void AuthenticateAsServer (X509Certificate serverCertificate);
+
+               void AuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SSA.SslProtocols enabledSslProtocols, bool checkCertificateRevocation);
+
+               IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, AsyncCallback asyncCallback, object asyncState);
+
+               IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SSA.SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState);
+
+               void EndAuthenticateAsServer (IAsyncResult asyncResult);
+
+               Task AuthenticateAsClientAsync (string targetHost);
+
+               Task AuthenticateAsClientAsync (string targetHost, X509CertificateCollection clientCertificates, SSA.SslProtocols enabledSslProtocols, bool checkCertificateRevocation);
+
+               Task AuthenticateAsServerAsync (X509Certificate serverCertificate);
+
+               Task AuthenticateAsServerAsync (X509Certificate serverCertificate, bool clientCertificateRequired, SSA.SslProtocols enabledSslProtocols, bool checkCertificateRevocation);
+
+               void Flush ();
+
+               int Read (byte[] buffer, int offset, int count);
+
+               void Write (byte[] buffer);
+
+               void Write (byte[] buffer, int offset, int count);
+
+               IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState);
+
+               int EndRead (IAsyncResult asyncResult);
+
+               IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState);
+
+               void EndWrite (IAsyncResult asyncResult);
+
+               TransportContext TransportContext {
+                       get;
+               }
+
+               bool IsAuthenticated {
+                       get;
+               }
+
+               bool IsMutuallyAuthenticated {
+                       get;
+               }
+
+               bool IsEncrypted {
+                       get;
+               }
+
+               bool IsSigned {
+                       get;
+               }
+
+               bool IsServer {
+                       get;
+               }
+
+               SSA.CipherAlgorithmType CipherAlgorithm {
+                       get;
+               }
+
+               int CipherStrength {
+                       get;
+               }
+
+               SSA.HashAlgorithmType HashAlgorithm {
+                       get;
+               }
+
+               int HashStrength {
+                       get;
+               }
+
+               SSA.ExchangeAlgorithmType KeyExchangeAlgorithm {
+                       get;
+               }
+
+               int KeyExchangeStrength {
+                       get;
+               }
+
+               bool CanRead {
+                       get;
+               }
+
+               bool CanTimeout {
+                       get;
+               }
+
+               bool CanWrite {
+                       get;
+               }
+
+               long Length {
+                       get;
+               }
+
+               long Position {
+                       get;
+               }
+
+               void SetLength (long value);
+
+               AuthenticatedStream AuthenticatedStream {
+                       get;
+               }
+
+               int ReadTimeout {
+                       get; set;
+               }
+
+               int WriteTimeout {
+                       get; set;
+               }
+
+               bool CheckCertRevocationStatus {
+                       get;
+               }
+
+               X509Certificate InternalLocalCertificate {
+                       get;
+               }
+
+               X509Certificate LocalCertificate {
+                       get;
+               }
+
+               X509Certificate RemoteCertificate {
+                       get;
+               }
+
+               SSA.SslProtocols SslProtocol {
+                       get;
+               }
+
+               MonoTlsProvider Provider {
+                       get;
+               }
+
+
+               MonoTlsConnectionInfo GetConnectionInfo ();
+       }
+}
+
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/IMonoTlsContext.cs b/mcs/class/Mono.Security/Mono.Security.Interface/IMonoTlsContext.cs
new file mode 100644 (file)
index 0000000..508bdc4
--- /dev/null
@@ -0,0 +1,71 @@
+//
+// IMonoTlsContext.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Security.Cryptography;
+using System.Security.Cryptography.X509Certificates;
+
+namespace Mono.Security.Interface
+{
+       public interface IMonoTlsContext : IDisposable
+       {
+               bool IsServer {
+                       get;
+               }
+
+               bool IsValid {
+                       get;
+               }
+
+               void Initialize (IMonoTlsEventSink eventSink);
+
+               bool HasCredentials {
+                       get;
+               }
+
+               void SetCertificate (X509Certificate certificate, AsymmetricAlgorithm privateKey);
+
+               int GenerateNextToken (IBufferOffsetSize incoming, out IBufferOffsetSize outgoing);
+
+               int EncryptMessage (ref IBufferOffsetSize incoming);
+
+               int DecryptMessage (ref IBufferOffsetSize incoming);
+
+               bool ReceivedCloseNotify {
+                       get;
+               }
+
+               byte[] CreateCloseNotify ();
+
+               byte[] CreateHelloRequest ();
+
+               X509Certificate GetRemoteCertificate (out X509CertificateCollection remoteCertificateStore);
+
+               bool VerifyRemoteCertificate ();
+
+               MonoTlsConnectionInfo GetConnectionInfo ();
+       }
+}
+
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/IMonoTlsEventSink.cs b/mcs/class/Mono.Security/Mono.Security.Interface/IMonoTlsEventSink.cs
new file mode 100644 (file)
index 0000000..3772930
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// IMonoTlsEventSink.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+
+namespace Mono.Security.Interface
+{
+       public interface IMonoTlsEventSink
+       {
+               void Error (Exception exception);
+
+               void ReceivedCloseNotify ();
+       }
+}
+
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsConnectionInfo.cs b/mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsConnectionInfo.cs
new file mode 100644 (file)
index 0000000..4bc5f43
--- /dev/null
@@ -0,0 +1,58 @@
+//
+// MonoTlsConnectionInfo.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+
+namespace Mono.Security.Interface
+{
+       public class MonoTlsConnectionInfo
+       {
+               public CipherSuiteCode CipherSuiteCode {
+                       get; set;
+               }
+
+               public TlsProtocols ProtocolVersion {
+                       get; set;
+               }
+
+               public CipherAlgorithmType CipherAlgorithmType {
+                       get; set;
+               }
+
+               public HashAlgorithmType HashAlgorithmType {
+                       get; set;
+               }
+
+               public ExchangeAlgorithmType ExchangeAlgorithmType {
+                       get; set;
+               }
+
+               public override string ToString ()
+               {
+                       return string.Format ("[MonoTlsConnectionInfo: {0}:{1}]", ProtocolVersion, CipherSuiteCode);
+               }
+       }
+}
+
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsProvider.cs b/mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsProvider.cs
new file mode 100644 (file)
index 0000000..740d795
--- /dev/null
@@ -0,0 +1,170 @@
+//
+// MonoTlsProvider.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+using Mono.Security.Protocol.Tls;
+
+namespace Mono.Security.Interface
+{
+       /*
+        * Unfortunately, we can't use the public definitions from System.dll here, so we need to
+        * copy these.
+        *
+        * The @MonoRemoteCertificateValidationCallback also has an additional 'targetHost' argument.
+        *
+        */
+
+       [Flags]
+       public enum MonoSslPolicyErrors
+       {
+               None = 0,
+               RemoteCertificateNotAvailable = 1,
+               RemoteCertificateNameMismatch = 2,
+               RemoteCertificateChainErrors = 4,
+       }
+
+       public enum MonoEncryptionPolicy
+       {
+               // Prohibit null ciphers (current system defaults)
+               RequireEncryption = 0,
+
+               // Add null ciphers to current system defaults
+               AllowNoEncryption,
+
+               // Request null ciphers only
+               NoEncryption
+       }
+
+       public delegate bool MonoRemoteCertificateValidationCallback (
+               string targetHost, X509Certificate certificate, X509Chain chain, MonoSslPolicyErrors sslPolicyErrors);
+
+       public delegate X509Certificate MonoLocalCertificateSelectionCallback (
+               string targetHost, X509CertificateCollection localCertificates, X509Certificate remoteCertificate,
+               string[] acceptableIssuers);
+
+       public abstract class MonoTlsProvider
+       {
+               public abstract Guid ID {
+                       get;
+               }
+
+               public abstract string Name {
+                       get;
+               }
+
+#region SslStream
+
+               /*
+                * This section abstracts the @SslStream class.
+                *
+                */
+
+               public abstract bool SupportsSslStream {
+                       get;
+               }
+
+               /*
+                * Does this provider support IMonoSslStream.GetConnectionInfo() ?
+                */
+               public abstract bool SupportsConnectionInfo {
+                       get;
+               }
+
+               /*
+                * Whether or not this TLS Provider supports Mono-specific extensions
+                * (via @MonoTlsSettings).
+                */
+               public abstract bool SupportsMonoExtensions {
+                       get;
+               }
+
+               public abstract SslProtocols SupportedProtocols {
+                       get;
+               }
+
+               /*
+                * Obtain a @IMonoSslStream instance.
+                *
+                */
+               public abstract IMonoSslStream CreateSslStream (
+                       Stream innerStream, bool leaveInnerStreamOpen,
+                       MonoTlsSettings settings = null);
+
+#endregion
+
+#region Certificate Validation
+
+               /*
+                * Allows a TLS provider to provide a custom system certificiate validator.
+                */
+               public virtual bool HasCustomSystemCertificateValidator {
+                       get { return false; }
+               }
+
+               /*
+                * If @serverMode is true, then we're a server and want to validate a certificate
+                * that we received from a client.
+                *
+                * On OS X and Mobile, the @chain will be initialized with the @certificates, but not actually built.
+                *
+                * Returns `true` if certificate validation has been performed and `false` to invoke the
+                * default system validator.
+                */
+               public virtual bool InvokeSystemCertificateValidator (
+                       ICertificateValidator validator, string targetHost, bool serverMode,
+                       X509CertificateCollection certificates, X509Chain chain, out bool success,
+                       ref MonoSslPolicyErrors errors, ref int status11)
+               {
+                       success = false;
+                       return false;
+               }
+
+#endregion
+
+#region Manged SSPI
+
+               /*
+                * The managed SSPI implementation from the new TLS code.
+                */
+
+               public abstract bool SupportsTlsContext {
+                       get;
+               }
+
+               public abstract IMonoTlsContext CreateTlsContext (
+                       string hostname, bool serverMode, TlsProtocols protocolFlags,
+                       X509Certificate serverCertificate, X509CertificateCollection clientCertificates,
+                       bool remoteCertRequired, MonoEncryptionPolicy encryptionPolicy,
+                       MonoTlsSettings settings);
+
+#endregion
+       }
+}
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsProviderFactory.cs b/mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsProviderFactory.cs
new file mode 100644 (file)
index 0000000..9548da0
--- /dev/null
@@ -0,0 +1,108 @@
+//
+// MonoTlsProviderFactory.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Net;
+using System.Net.Security;
+using System.Security.Cryptography.X509Certificates;
+using Mono.Net.Security;
+
+namespace Mono.Security.Interface
+{
+       /*
+        * Public API front-end to System.dll's version.
+        *
+        * Keep in sync with System/Mono.Net.Security/MonoTlsProviderFactory.cs.
+        */
+       public static partial class MonoTlsProviderFactory
+       {
+               /*
+                * Returns the currently installed @MonoTlsProvider, falling back to the default one.
+                *
+                * This method throws @NotSupportedException if no TLS Provider can be found.
+                */
+               public static MonoTlsProvider GetProvider ()
+               {
+                       return (MonoTlsProvider)NoReflectionHelper.GetProvider ();
+               }
+
+               /*
+                * Returns the default @MonoTlsProvider.
+                *
+                * This method throws @NotSupportedException if no TLS Provider can be found.
+                */
+               public static MonoTlsProvider GetDefaultProvider ()
+               {
+                       return (MonoTlsProvider)NoReflectionHelper.GetDefaultProvider ();
+               }
+
+               /*
+                * GetProvider() attempts to load and install the default provider and throws on error.
+                *
+                * This property checks whether a provider has previously been installed by a call
+                * to either GetProvider() or InstallProvider().
+                *
+                */
+               public static bool HasProvider {
+                       get {
+                               return NoReflectionHelper.HasProvider;
+                       }
+               }
+
+               /*
+                * Installs a custom TLS Provider.
+                *
+                * May only be called at application startup and will throw
+                * @InvalidOperationException if a provider has already been installed.
+                */
+               public static void InstallProvider (MonoTlsProvider provider)
+               {
+                       NoReflectionHelper.InstallProvider (provider);
+               }
+
+               /*
+                * Create @HttpWebRequest with the specified @provider (may be null to use the default one).
+                * 
+                * NOTE: This needs to be written as "System.Uri" to avoid ambiguity with Mono.Security.Uri in the
+                *        mobile build.
+                * 
+                */
+               public static HttpWebRequest CreateHttpsRequest (System.Uri requestUri, MonoTlsProvider provider, MonoTlsSettings settings = null)
+               {
+                       return NoReflectionHelper.CreateHttpsRequest (requestUri, provider, settings);
+               }
+
+               public static HttpListener CreateHttpListener (X509Certificate certificate, MonoTlsProvider provider = null, MonoTlsSettings settings = null)
+               {
+                       return (HttpListener)NoReflectionHelper.CreateHttpListener (certificate, provider, settings);
+               }
+
+               public static IMonoSslStream GetMonoSslStream (SslStream stream)
+               {
+                       return (IMonoSslStream)NoReflectionHelper.GetMonoSslStream (stream);
+               }
+       }
+}
+
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsSettings.cs b/mcs/class/Mono.Security/Mono.Security.Interface/MonoTlsSettings.cs
new file mode 100644 (file)
index 0000000..7e42720
--- /dev/null
@@ -0,0 +1,165 @@
+//
+// MonoTlsSettings.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Threading;
+using System.Security.Cryptography.X509Certificates;
+
+namespace Mono.Security.Interface
+{
+       public sealed class MonoTlsSettings
+       {
+               public MonoRemoteCertificateValidationCallback RemoteCertificateValidationCallback {
+                       get; set;
+               }
+
+               public MonoLocalCertificateSelectionCallback ClientCertificateSelectionCallback {
+                       get; set;
+               }
+
+               public bool CheckCertificateName {
+                       get { return checkCertName; }
+                       set { checkCertName = value; }
+               }
+
+               public bool CheckCertificateRevocationStatus {
+                       get { return checkCertRevocationStatus; }
+                       set { checkCertRevocationStatus = value; }
+               }
+
+               public bool UseServicePointManagerCallback {
+                       get { return useServicePointManagerCallback; }
+                       set { useServicePointManagerCallback = value; }
+               }
+
+               public bool SkipSystemValidators {
+                       get { return skipSystemValidators; }
+                       set { skipSystemValidators = value; }
+               }
+
+               public bool CallbackNeedsCertificateChain {
+                       get { return callbackNeedsChain; }
+                       set { callbackNeedsChain = value; }
+               }
+
+               /*
+                * This is only supported if CertificateValidationHelper.SupportsTrustAnchors is true.
+                */
+               public X509CertificateCollection TrustAnchors {
+                       get; set;
+               }
+
+               public object UserSettings {
+                       get; set;
+               }
+
+               /*
+                * If you set this here, then it will override 'ServicePointManager.SecurityProtocol'.
+                */
+               public TlsProtocols? EnabledProtocols {
+                       get; set;
+               }
+
+               bool cloned = false;
+               bool checkCertName = true;
+               bool checkCertRevocationStatus = false;
+               bool useServicePointManagerCallback = true;
+               bool skipSystemValidators = false;
+               bool callbackNeedsChain = true;
+               ICertificateValidator certificateValidator;
+
+               public MonoTlsSettings ()
+               {
+               }
+
+               static MonoTlsSettings defaultSettings;
+
+               public static MonoTlsSettings DefaultSettings {
+                       get {
+                               if (defaultSettings == null)
+                                       Interlocked.CompareExchange (ref defaultSettings, new MonoTlsSettings (), null);
+                               return defaultSettings;
+                       }
+                       set {
+                               defaultSettings = value ?? new MonoTlsSettings ();
+                       }
+               }
+
+               public static MonoTlsSettings CopyDefaultSettings ()
+               {
+                       return DefaultSettings.Clone ();
+               }
+
+               #region Private APIs
+
+               /*
+                * Private APIs - do not use!
+                * 
+                * This is only public to avoid making our internals visible to System.dll.
+                * 
+                */
+
+               [Obsolete ("Do not use outside System.dll!")]
+               public ICertificateValidator CertificateValidator {
+                       get { return certificateValidator; }
+               }
+
+               [Obsolete ("Do not use outside System.dll!")]
+               public MonoTlsSettings CloneWithValidator (ICertificateValidator validator)
+               {
+                       if (cloned) {
+                               this.certificateValidator = validator;
+                               return this;
+                       }
+
+                       var copy = new MonoTlsSettings (this);
+                       copy.certificateValidator = validator;
+                       return copy;
+               }
+
+               public MonoTlsSettings Clone ()
+               {
+                       return new MonoTlsSettings (this);
+               }
+
+               MonoTlsSettings (MonoTlsSettings other)
+               {
+                       RemoteCertificateValidationCallback = other.RemoteCertificateValidationCallback;
+                       ClientCertificateSelectionCallback = other.ClientCertificateSelectionCallback;
+                       checkCertName = other.checkCertName;
+                       checkCertRevocationStatus = other.checkCertRevocationStatus;
+                       UseServicePointManagerCallback = other.useServicePointManagerCallback;
+                       skipSystemValidators = other.skipSystemValidators;
+                       callbackNeedsChain = other.callbackNeedsChain;
+                       UserSettings = other.UserSettings;
+                       EnabledProtocols = other.EnabledProtocols;
+                       TrustAnchors = other.TrustAnchors;
+                       cloned = true;
+               }
+
+               #endregion
+       }
+}
+
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/README.md b/mcs/class/Mono.Security/Mono.Security.Interface/README.md
new file mode 100644 (file)
index 0000000..4c47efd
--- /dev/null
@@ -0,0 +1 @@
+See mcs/class/Mono.Security.Providers.NewSystemSource/README.md for a detailed README.
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/TlsException.cs b/mcs/class/Mono.Security/Mono.Security.Interface/TlsException.cs
new file mode 100644 (file)
index 0000000..fabf4ee
--- /dev/null
@@ -0,0 +1,84 @@
+//
+// TlsException.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace Mono.Security.Interface
+{
+       public sealed class TlsException : Exception
+       {
+               #region Fields
+
+               private Alert alert;
+
+               #endregion
+
+               #region Properties
+
+               public Alert Alert {
+                       get { return this.alert; }
+               }
+
+               #endregion
+
+               #region Constructors
+
+               public TlsException (Alert alert)
+                       : this (alert, alert.Description.ToString())
+               {
+               }
+
+               public TlsException (Alert alert, string message)
+                       : base (message)
+               {
+                       this.alert = alert;
+               }
+
+               public TlsException (AlertLevel level, AlertDescription description)
+                       : this (new Alert (level, description))
+               {
+               }
+
+               public TlsException (AlertDescription description)
+                       : this (new Alert (description))
+               {
+               }
+
+               public TlsException (AlertDescription description, string message)
+                       : this (new Alert (description), message)
+               {
+               }
+
+               public TlsException (AlertDescription description, string format, params object[] args)
+                       : this (new Alert (description), string.Format (format, args))
+               {
+               }
+
+               #endregion
+       }
+}
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/TlsProtocolCode.cs b/mcs/class/Mono.Security/Mono.Security.Interface/TlsProtocolCode.cs
new file mode 100644 (file)
index 0000000..e5a8e09
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// TlsProtocolCode.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+namespace Mono.Security.Interface
+{
+       public enum TlsProtocolCode : short
+       {
+               Tls10 = 0x301,
+               Tls11 = 0x302,
+               Tls12 = 0x303
+       }
+}
+
diff --git a/mcs/class/Mono.Security/Mono.Security.Interface/TlsProtocols.cs b/mcs/class/Mono.Security/Mono.Security.Interface/TlsProtocols.cs
new file mode 100644 (file)
index 0000000..614a25a
--- /dev/null
@@ -0,0 +1,49 @@
+//
+// TlsProtocols.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+namespace Mono.Security.Interface
+{
+       [Flags]
+       // Keep in sync with SchProtocols / native SChannel.h
+       // Unfortunately, the definition in System.dll is not public, so we need to duplicate it here.
+       public enum TlsProtocols {
+               Zero                = 0,
+               Tls10Client         = 0x00000080,
+               Tls10Server         = 0x00000040,
+               Tls10               = (Tls10Client | Tls10Server),
+               Tls11Client         = 0x00000200,
+               Tls11Server         = 0x00000100,
+               Tls11               = (Tls11Client | Tls11Server),
+               Tls12Client         = 0x00000800,
+               Tls12Server         = 0x00000400,
+               Tls12               = (Tls12Client | Tls12Server),
+               ClientMask          = (Tls10Client | Tls11Client | Tls12Client),
+               ServerMask          = (Tls10Server | Tls11Server | Tls12Server)
+       };
+}
+
index 0855f8d6dd7935b632ecaeb49750330feb9e1efd..7472e719400329eba68ad4a29c2d59c870c13a06 100644 (file)
@@ -89,7 +89,7 @@ namespace Mono.Security.Protocol.Ntlm {
                public Type3Message (Type2Message type2) : base (3)
                {
                        _type2 = type2;
-                       _level = DefaultAuthLevel;
+                       _level = NtlmSettings.DefaultAuthLevel;
                        _challenge = (byte[]) type2.Nonce.Clone ();
 
                        _domain = type2.TargetName;
@@ -269,11 +269,13 @@ namespace Mono.Security.Protocol.Ntlm {
                                        throw new InvalidOperationException (
                                                "Refusing to use legacy-mode LM/NTLM authentication " +
                                                        "unless explicitly enabled using DefaultAuthLevel.");
-                               
+
+                               #pragma warning disable 618
                                using (var legacy = new ChallengeResponse (_password, _challenge)) {
                                        lm = legacy.LM;
                                        ntlm = legacy.NT;
                                }
+                               #pragma warning restore 618
                        } else {
                                ChallengeResponse2.Compute (_type2, _level, _username, _password, _domain, out lm, out ntlm);
                        }
index d59769b0a7e0774f6daf3ee6acfbd08c1f8f566b..f92ad900e84de0dc65e7169d767c6164d76139da 100644 (file)
@@ -131,6 +131,7 @@ namespace Mono.Security.Protocol.Tls.Handshake.Client
 
                private X509Certificate FindParentCertificate (X509Certificate cert)
                {
+                       #pragma warning disable 618
                        // This certificate is the root certificate
                        if (cert.GetName () == cert.GetIssuerName ())
                                return null;
@@ -140,6 +141,7 @@ namespace Mono.Security.Protocol.Tls.Handshake.Client
                                        return certificate;
                        }
                        return null;
+                       #pragma warning restore 618
                }
 
                #endregion
index dae12cc401347bd88c129e381b7f5202c8f33311..a96b415ef0c56c338ae57dedbe6b9e27f53d3645 100644 (file)
@@ -33,6 +33,8 @@ using X509Cert = System.Security.Cryptography.X509Certificates;
 using Mono.Security.X509;
 using Mono.Security.X509.Extensions;
 
+using Mono.Security.Interface;
+
 namespace Mono.Security.Protocol.Tls.Handshake.Client
 {
        internal class TlsServerCertificate : HandshakeMessage
index 15d8dd6554f682895a9e91eac26e353cac91c254..6ef5db41018589c964b7a12aeb1559bc4a1a714e 100644 (file)
@@ -56,6 +56,10 @@ namespace Mono.Security.Protocol.Tls.Handshake.Server
                        }
                }
 
+               public bool HasCertificate {
+                       get { return clientCertificates.Count > 0; }
+               }
+
                #endregion
 
                #region Protected Methods
index 9937f287dce27809915ff32a608d2ba8e2c085f7..6eb85f53890b16458a3a157d016ab467303dfe72 100644 (file)
@@ -39,6 +39,7 @@ namespace Mono.Security.Protocol.Tls {
 
        // Note: DO NOT REUSE this class - instead use SslClientStream
 
+       [Obsolete ("This class is obsolete and will be removed shortly.")]
        internal class HttpsClientStream : SslClientStream {
 
                private HttpWebRequest _request;
index e194013a637afde4ebff8792f8cc2e8884ba4381..30270c801c8d6afc88219ea863d2957d9457632a 100644 (file)
@@ -597,7 +597,7 @@ namespace Mono.Security.Protocol.Tls
                        try {
                                SendAlert(alert);
                        } catch (Exception alertEx) {
-                               ex = new IOException (string.Format ("Error while sending TLS Alert ({0}:{1}): {2}", alert.Level, alert.Description, ex), ex);
+                               ex = new IOException (string.Format ("Error while sending TLS Alert ({0}:{1}): {2}", alert.Level, alert.Description, ex), alertEx);
                        }
                }
 
index 1c819023bea372184f7dd2d0eba922d77983761b..a1bbd02ae795f09767f6a64ed7fb5fd0c30dac10 100644 (file)
@@ -28,6 +28,7 @@ using System.Security.Cryptography;
 using System.Security.Cryptography.X509Certificates;
 
 using Mono.Security.Protocol.Tls.Handshake;
+using Mono.Security.Interface;
 using MonoX509 = Mono.Security.X509;
 
 namespace Mono.Security.Protocol.Tls
@@ -83,14 +84,16 @@ namespace Mono.Security.Protocol.Tls
 
                        this.ServerSettings.UpdateCertificateRSA();
 
-                       // Build the chain for the certificate and if the chain is correct, add all certificates 
-                       // (except the root certificate [FIRST ONE] ... the client is supposed to know that one,
-                       // otherwise the whole concept of a trusted chain doesn't work out ... 
-                       MonoX509.X509Chain chain = new MonoX509.X509Chain (MonoX509.X509StoreManager.IntermediateCACertificates);
+                       if (CertificateValidationHelper.SupportsX509Chain) {
+                               // Build the chain for the certificate and if the chain is correct, add all certificates 
+                               // (except the root certificate [FIRST ONE] ... the client is supposed to know that one,
+                               // otherwise the whole concept of a trusted chain doesn't work out ... 
+                               MonoX509.X509Chain chain = new MonoX509.X509Chain (MonoX509.X509StoreManager.IntermediateCACertificates);
 
-                       if (chain.Build (cert)) {
-                               for (int j = chain.Chain.Count - 1; j > 0; j--)
-                                       ServerSettings.Certificates.Add (chain.Chain [j]);
+                               if (chain.Build (cert)) {
+                                       for (int j = chain.Chain.Count - 1; j > 0; j--)
+                                               ServerSettings.Certificates.Add (chain.Chain [j]);
+                               }
                        }
 
                        // Add requested certificate types
@@ -98,15 +101,16 @@ namespace Mono.Security.Protocol.Tls
                        for (int j = 0; j < this.ServerSettings.CertificateTypes.Length; j++)
                                ServerSettings.CertificateTypes [j] = ClientCertificateType.RSA;
 
-                       // Add certificate authorities
-                       MonoX509.X509CertificateCollection trusted = MonoX509.X509StoreManager.TrustedRootCertificates;
-                       string[] list = new string [trusted.Count];
-                       int i = 0;
-                       foreach (MonoX509.X509Certificate root in trusted)
-                       {
-                               list [i++] = root.IssuerName;
+                       if (CertificateValidationHelper.SupportsX509Chain) {
+                               // Add certificate authorities
+                               MonoX509.X509CertificateCollection trusted = MonoX509.X509StoreManager.TrustedRootCertificates;
+                               string[] list = new string [trusted.Count];
+                               int i = 0;
+                               foreach (MonoX509.X509Certificate root in trusted) {
+                                       list [i++] = root.IssuerName;
+                               }
+                               this.ServerSettings.DistinguisedNames = list;
                        }
-                       this.ServerSettings.DistinguisedNames = list;
                }
 
                #endregion
index 31c2547902beeb8bc2fba4d4d4b27b27d7e783e8..f8207297cb365599e88d4fcaf7847afa877f14d9 100644 (file)
@@ -119,7 +119,8 @@ namespace Mono.Security.Protocol.Tls
 
                                case HandshakeType.Finished:
                                        // Certificates are optional, but if provided, they should send a CertificateVerify
-                                       bool check = (cert == null) ? (last == HandshakeType.ClientKeyExchange) : (last == HandshakeType.CertificateVerify);
+                                       bool hasCert = cert != null && cert.HasCertificate;
+                                       bool check = hasCert ? (last == HandshakeType.CertificateVerify) : (last == HandshakeType.ClientKeyExchange);
                                        // ChangeCipherSpecDone is not an handshake message (it's a content type) but still needs to be happens before finished
                                        if (check && context.ChangeCipherSpecDone) {
                                                context.ChangeCipherSpecDone = false;
@@ -131,7 +132,6 @@ namespace Mono.Security.Protocol.Tls
                                        throw new TlsException(AlertDescription.UnexpectedMessage, String.Format(CultureInfo.CurrentUICulture,
                                                                                                                 "Unknown server handshake message received ({0})", 
                                                                                                                 type.ToString()));
-                                       break;
                        }
                        throw new TlsException (AlertDescription.HandshakeFailiure, String.Format ("Protocol error, unexpected protocol transition from {0} to {1}", last, type));
                }
index 2936122c4bd9d5826363fc35f453beab2145405b..39680547b0568d7a024a592e16d9c4ebf4f935de 100644 (file)
@@ -32,6 +32,7 @@ using System.Security.Cryptography.X509Certificates;
 using System.Threading;
 
 using Mono.Security.Protocol.Tls.Handshake;
+using Mono.Security.Interface;
 
 namespace Mono.Security.Protocol.Tls
 {
@@ -46,36 +47,6 @@ namespace Mono.Security.Protocol.Tls
                X509Certificate certificate, 
                int[]                   certificateErrors);
 
-#if INSIDE_SYSTEM
-       internal
-#else
-       public
-#endif
-       class ValidationResult {
-               bool trusted;
-               bool user_denied;
-               int error_code;
-
-               public ValidationResult (bool trusted, bool user_denied, int error_code)
-               {
-                       this.trusted = trusted;
-                       this.user_denied = user_denied;
-                       this.error_code = error_code;
-               }
-
-               public bool Trusted {
-                       get { return trusted; }
-               }
-
-               public bool UserDenied {
-                       get { return user_denied; }
-               }
-
-               public int ErrorCode {
-                       get { return error_code; }
-               }
-       }
-
 #if INSIDE_SYSTEM
        internal
 #else
index fb8ede4b90537578d7196e259638dc9185d9f9e1..f93ab4425e02609d16ed3a6aedb31a491b312679 100644 (file)
@@ -31,6 +31,7 @@ using System.Security.Cryptography;
 using System.Security.Cryptography.X509Certificates;
 
 using Mono.Security.Protocol.Tls.Handshake;
+using Mono.Security.Interface;
 
 namespace Mono.Security.Protocol.Tls
 {
index 41271cdb3267a0cca279e766a3167b6143da7c96..ffd1adc2050134e7a4fe83792a5b6f631d6fd2f3 100644 (file)
@@ -31,6 +31,8 @@ using System.Security.Cryptography;
 using System.Security.Cryptography.X509Certificates;
 using System.Threading;
 
+using Mono.Security.Interface;
+
 namespace Mono.Security.Protocol.Tls
 {
 #if INSIDE_SYSTEM
@@ -631,15 +633,14 @@ namespace Mono.Security.Protocol.Tls
                // record and return are the records (may be more than one) we have
                private void InternalReadCallback(IAsyncResult result)
                {
-                       if (this.disposed)
-                               return;
-
                        object[] state = (object[])result.AsyncState;
                        byte[] recbuf = (byte[])state[0];
                        InternalAsyncResult internalResult = (InternalAsyncResult)state[1];
 
                        try
                        {
+                               this.checkDisposed();
+                               
                                int n = innerStream.EndRead(result);
                                if (n > 0)
                                {
@@ -793,13 +794,11 @@ namespace Mono.Security.Protocol.Tls
 
                private void InternalWriteCallback(IAsyncResult ar)
                {
-                       if (this.disposed)
-                               return;
-                       
                        InternalAsyncResult internalResult = (InternalAsyncResult)ar.AsyncState;
 
                        try
                        {
+                               this.checkDisposed();
                                this.innerStream.EndWrite(ar);
                                internalResult.SetComplete();
                        }
index 62ed9c7a3fc404104b19f30d9802fdc053eaf14c..fc8ac2bb306ec90519e2c0e4da4afd84d6a90bd1 100644 (file)
@@ -430,6 +430,10 @@ namespace Mono.Security.X509 {
 
                public string Password {
                        set {
+                               // Clear old password.
+                               if (_password != null)
+                                       Array.Clear (_password, 0, _password.Length);
+                               _password = null;
                                if (value != null) {
                                        if (value.Length > 0) {
                                                int size = value.Length;
@@ -447,9 +451,6 @@ namespace Mono.Security.X509 {
                                                // double-byte (Unicode) NULL (0x00) - see bug #79617
                                                _password = new byte[2];
                                        }
-                               } else {
-                                       // no password
-                                       _password = null;
                                }
                        }
                }
index e28f10f066c51bab6e18bf5b2079803824b626f1..7d6e4aaca19172150a6f2e8f4d3f3d4c8ed95aa7 100644 (file)
 ./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerKeyExchange.cs
 ./Mono.Xml/MiniParser.cs
 ./Mono.Xml/SecurityParser.cs
+
+./Mono.Security.Interface/Alert.cs
+./Mono.Security.Interface/CertificateValidationHelper.cs
+./Mono.Security.Interface/CipherAlgorithmType.cs
+./Mono.Security.Interface/CipherSuiteCode.cs
+./Mono.Security.Interface/ExchangeAlgorithmType.cs
+./Mono.Security.Interface/HashAlgorithmType.cs
+./Mono.Security.Interface/IBufferOffsetSize.cs
+./Mono.Security.Interface/IMonoTlsEventSink.cs
+./Mono.Security.Interface/IMonoTlsContext.cs
+./Mono.Security.Interface/IMonoSslStream.cs
+./Mono.Security.Interface/MonoTlsConnectionInfo.cs
+./Mono.Security.Interface/MonoTlsProvider.cs
+./Mono.Security.Interface/MonoTlsProviderFactory.cs
+./Mono.Security.Interface/MonoTlsSettings.cs
+./Mono.Security.Interface/TlsException.cs
+./Mono.Security.Interface/TlsProtocolCode.cs
+./Mono.Security.Interface/TlsProtocols.cs
diff --git a/mcs/class/Mono.Security/mobile_Mono.Security.dll.sources b/mcs/class/Mono.Security/mobile_Mono.Security.dll.sources
new file mode 100644 (file)
index 0000000..dba5c34
--- /dev/null
@@ -0,0 +1,132 @@
+./Assembly/AssemblyInfo.cs
+../../build/common/Consts.cs
+../../build/common/Locale.cs
+./Mono.Math/BigInteger.cs
+./Mono.Math.Prime/ConfidenceFactor.cs
+./Mono.Math.Prime/PrimalityTests.cs
+./Mono.Math.Prime.Generator/NextPrimeFinder.cs
+./Mono.Math.Prime.Generator/PrimeGeneratorBase.cs
+./Mono.Math.Prime.Generator/SequentialSearchPrimeGeneratorBase.cs
+./Mono.Security/ASN1.cs
+./Mono.Security/ASN1Convert.cs
+./Mono.Security/BitConverterLE.cs
+./Mono.Security/PKCS7.cs
+./Mono.Security/StrongName.cs
+./Mono.Security.Authenticode/AuthenticodeBase.cs
+./Mono.Security.Authenticode/AuthenticodeDeformatter.cs
+./Mono.Security.Authenticode/AuthenticodeFormatter.cs
+./Mono.Security.Authenticode/SoftwarePublisherCertificate.cs
+./Mono.Security.Authenticode/PrivateKey.cs
+./Mono.Security.Cryptography/CryptoConvert.cs
+./Mono.Security.Cryptography/CryptoTools.cs
+./Mono.Security.Cryptography/DHKeyGeneration.cs
+./Mono.Security.Cryptography/DHParameters.cs
+./Mono.Security.Cryptography/DiffieHellman.cs
+./Mono.Security.Cryptography/DiffieHellmanManaged.cs
+./Mono.Security.Cryptography/KeyPairPersistence.cs
+./Mono.Security.Cryptography/MD2.cs
+./Mono.Security.Cryptography/MD4.cs
+./Mono.Security.Cryptography/PKCS1.cs
+./Mono.Security.Cryptography/PKCS8.cs
+./Mono.Security.Cryptography/RC4.cs
+./Mono.Security.Cryptography/RSAManaged.cs
+./Mono.Security.Cryptography/SHA224.cs
+./Mono.Security.Cryptography/SymmetricTransform.cs
+./Mono.Security.X509/PKCS12.cs
+./Mono.Security.X509/X501Name.cs
+./Mono.Security.X509/X509Builder.cs
+./Mono.Security.X509/X509Certificate.cs
+./Mono.Security.X509/X509CertificateCollection.cs
+./Mono.Security.X509/X509CertificateBuilder.cs
+./Mono.Security.X509/X509Chain.cs
+./Mono.Security.X509/X509ChainStatusFlags.cs
+./Mono.Security.X509/X509CRL.cs
+./Mono.Security.X509/X509Extension.cs
+./Mono.Security.X509/X509Extensions.cs
+./Mono.Security.X509/X509Store.cs
+./Mono.Security.X509/X509StoreManager.cs
+./Mono.Security.X509/X509Stores.cs
+./Mono.Security.X509/X520Attributes.cs
+./Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
+./Mono.Security.X509.Extensions/BasicConstraintsExtension.cs
+./Mono.Security.X509.Extensions/CRLDistributionPointsExtension.cs
+./Mono.Security.X509.Extensions/CertificatePoliciesExtension.cs
+./Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
+./Mono.Security.X509.Extensions/GeneralNames.cs
+./Mono.Security.X509.Extensions/KeyAttributesExtension.cs
+./Mono.Security.X509.Extensions/KeyUsageExtension.cs
+./Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
+./Mono.Security.X509.Extensions/PrivateKeyUsagePeriodExtension.cs
+./Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
+./Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs
+./Mono.Security.Cryptography/TlsHMAC.cs
+./Mono.Security.Cryptography/MD5SHA1.cs
+./Mono.Security.Protocol.Ntlm/ChallengeResponse.cs
+./Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs
+./Mono.Security.Protocol.Ntlm/MessageBase.cs
+./Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs
+./Mono.Security.Protocol.Ntlm/NtlmFlags.cs
+./Mono.Security.Protocol.Ntlm/NtlmSettings.cs
+./Mono.Security.Protocol.Ntlm/Type1Message.cs
+./Mono.Security.Protocol.Ntlm/Type2Message.cs
+./Mono.Security.Protocol.Ntlm/Type3Message.cs
+./Mono.Security.Protocol.Tls/Alert.cs
+./Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
+./Mono.Security.Protocol.Tls/CipherSuite.cs
+./Mono.Security.Protocol.Tls/CipherSuiteCollection.cs
+./Mono.Security.Protocol.Tls/CipherSuiteFactory.cs
+./Mono.Security.Protocol.Tls/ClientContext.cs
+./Mono.Security.Protocol.Tls/ClientRecordProtocol.cs
+./Mono.Security.Protocol.Tls/ClientSessionCache.cs
+./Mono.Security.Protocol.Tls/ContentType.cs
+./Mono.Security.Protocol.Tls/Context.cs
+./Mono.Security.Protocol.Tls/DebugHelper.cs
+./Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
+./Mono.Security.Protocol.Tls/HandshakeState.cs
+./Mono.Security.Protocol.Tls/HashAlgorithmType.cs
+./Mono.Security.Protocol.Tls/HttpsClientStream.cs
+./Mono.Security.Protocol.Tls/RecordProtocol.cs
+./Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
+./Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
+./Mono.Security.Protocol.Tls/SecurityCompressionType.cs
+./Mono.Security.Protocol.Tls/SecurityParameters.cs
+./Mono.Security.Protocol.Tls/SecurityProtocolType.cs
+./Mono.Security.Protocol.Tls/ServerContext.cs
+./Mono.Security.Protocol.Tls/ServerRecordProtocol.cs
+./Mono.Security.Protocol.Tls/SslClientStream.cs
+./Mono.Security.Protocol.Tls/SslCipherSuite.cs
+./Mono.Security.Protocol.Tls/SslHandshakeHash.cs
+./Mono.Security.Protocol.Tls/SslServerStream.cs
+./Mono.Security.Protocol.Tls/SslStreamBase.cs
+./Mono.Security.Protocol.Tls/TlsCipherSuite.cs
+./Mono.Security.Protocol.Tls/TlsClientSettings.cs
+./Mono.Security.Protocol.Tls/TlsException.cs
+./Mono.Security.Protocol.Tls/TlsServerSettings.cs
+./Mono.Security.Protocol.Tls/TlsStream.cs
+./Mono.Security.Protocol.Tls.Handshake/ClientCertificateType.cs
+./Mono.Security.Protocol.Tls.Handshake/HandshakeMessage.cs
+./Mono.Security.Protocol.Tls.Handshake/HandshakeType.cs
+./Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificate.cs
+./Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs
+./Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs
+./Mono.Security.Protocol.Tls.Handshake.Client/TlsClientHello.cs
+./Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs
+./Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
+./Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificateRequest.cs
+./Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs
+./Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHello.cs
+./Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHelloDone.cs
+./Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs
+./Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificate.cs
+./Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificateVerify.cs
+./Mono.Security.Protocol.Tls.Handshake.Server/TlsClientFinished.cs
+./Mono.Security.Protocol.Tls.Handshake.Server/TlsClientHello.cs
+./Mono.Security.Protocol.Tls.Handshake.Server/TlsClientKeyExchange.cs
+./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificate.cs
+./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificateRequest.cs
+./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerFinished.cs
+./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHello.cs
+./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHelloDone.cs
+./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerKeyExchange.cs
+./Mono.Xml/MiniParser.cs
+./Mono.Xml/SecurityParser.cs
diff --git a/mcs/class/Mono.Security/mobile_static_Mono.Security.dll.sources b/mcs/class/Mono.Security/mobile_static_Mono.Security.dll.sources
new file mode 100644 (file)
index 0000000..87eaa00
--- /dev/null
@@ -0,0 +1,5 @@
+#include mobile_Mono.Security.dll.sources
+./Mono.Security.Cryptography/ARC4Managed.cs
+./Mono.Security.Cryptography/MD2Managed.cs
+./Mono.Security.Cryptography/MD4Managed.cs
+./Mono.Security.Cryptography/SHA224Managed.cs
diff --git a/mcs/class/Mono.Security/monodroid_Mono.Security.dll.sources b/mcs/class/Mono.Security/monodroid_Mono.Security.dll.sources
new file mode 100644 (file)
index 0000000..87eaa00
--- /dev/null
@@ -0,0 +1,5 @@
+#include mobile_Mono.Security.dll.sources
+./Mono.Security.Cryptography/ARC4Managed.cs
+./Mono.Security.Cryptography/MD2Managed.cs
+./Mono.Security.Cryptography/MD4Managed.cs
+./Mono.Security.Cryptography/SHA224Managed.cs
index dba5c34020948fc64bac9fa1063dc72d127dbaa7..513dc61bd4fdea8fdd3c87a8df120f01c13ccd9d 100644 (file)
@@ -1,132 +1 @@
-./Assembly/AssemblyInfo.cs
-../../build/common/Consts.cs
-../../build/common/Locale.cs
-./Mono.Math/BigInteger.cs
-./Mono.Math.Prime/ConfidenceFactor.cs
-./Mono.Math.Prime/PrimalityTests.cs
-./Mono.Math.Prime.Generator/NextPrimeFinder.cs
-./Mono.Math.Prime.Generator/PrimeGeneratorBase.cs
-./Mono.Math.Prime.Generator/SequentialSearchPrimeGeneratorBase.cs
-./Mono.Security/ASN1.cs
-./Mono.Security/ASN1Convert.cs
-./Mono.Security/BitConverterLE.cs
-./Mono.Security/PKCS7.cs
-./Mono.Security/StrongName.cs
-./Mono.Security.Authenticode/AuthenticodeBase.cs
-./Mono.Security.Authenticode/AuthenticodeDeformatter.cs
-./Mono.Security.Authenticode/AuthenticodeFormatter.cs
-./Mono.Security.Authenticode/SoftwarePublisherCertificate.cs
-./Mono.Security.Authenticode/PrivateKey.cs
-./Mono.Security.Cryptography/CryptoConvert.cs
-./Mono.Security.Cryptography/CryptoTools.cs
-./Mono.Security.Cryptography/DHKeyGeneration.cs
-./Mono.Security.Cryptography/DHParameters.cs
-./Mono.Security.Cryptography/DiffieHellman.cs
-./Mono.Security.Cryptography/DiffieHellmanManaged.cs
-./Mono.Security.Cryptography/KeyPairPersistence.cs
-./Mono.Security.Cryptography/MD2.cs
-./Mono.Security.Cryptography/MD4.cs
-./Mono.Security.Cryptography/PKCS1.cs
-./Mono.Security.Cryptography/PKCS8.cs
-./Mono.Security.Cryptography/RC4.cs
-./Mono.Security.Cryptography/RSAManaged.cs
-./Mono.Security.Cryptography/SHA224.cs
-./Mono.Security.Cryptography/SymmetricTransform.cs
-./Mono.Security.X509/PKCS12.cs
-./Mono.Security.X509/X501Name.cs
-./Mono.Security.X509/X509Builder.cs
-./Mono.Security.X509/X509Certificate.cs
-./Mono.Security.X509/X509CertificateCollection.cs
-./Mono.Security.X509/X509CertificateBuilder.cs
-./Mono.Security.X509/X509Chain.cs
-./Mono.Security.X509/X509ChainStatusFlags.cs
-./Mono.Security.X509/X509CRL.cs
-./Mono.Security.X509/X509Extension.cs
-./Mono.Security.X509/X509Extensions.cs
-./Mono.Security.X509/X509Store.cs
-./Mono.Security.X509/X509StoreManager.cs
-./Mono.Security.X509/X509Stores.cs
-./Mono.Security.X509/X520Attributes.cs
-./Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
-./Mono.Security.X509.Extensions/BasicConstraintsExtension.cs
-./Mono.Security.X509.Extensions/CRLDistributionPointsExtension.cs
-./Mono.Security.X509.Extensions/CertificatePoliciesExtension.cs
-./Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
-./Mono.Security.X509.Extensions/GeneralNames.cs
-./Mono.Security.X509.Extensions/KeyAttributesExtension.cs
-./Mono.Security.X509.Extensions/KeyUsageExtension.cs
-./Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
-./Mono.Security.X509.Extensions/PrivateKeyUsagePeriodExtension.cs
-./Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
-./Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs
-./Mono.Security.Cryptography/TlsHMAC.cs
-./Mono.Security.Cryptography/MD5SHA1.cs
-./Mono.Security.Protocol.Ntlm/ChallengeResponse.cs
-./Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs
-./Mono.Security.Protocol.Ntlm/MessageBase.cs
-./Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs
-./Mono.Security.Protocol.Ntlm/NtlmFlags.cs
-./Mono.Security.Protocol.Ntlm/NtlmSettings.cs
-./Mono.Security.Protocol.Ntlm/Type1Message.cs
-./Mono.Security.Protocol.Ntlm/Type2Message.cs
-./Mono.Security.Protocol.Ntlm/Type3Message.cs
-./Mono.Security.Protocol.Tls/Alert.cs
-./Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
-./Mono.Security.Protocol.Tls/CipherSuite.cs
-./Mono.Security.Protocol.Tls/CipherSuiteCollection.cs
-./Mono.Security.Protocol.Tls/CipherSuiteFactory.cs
-./Mono.Security.Protocol.Tls/ClientContext.cs
-./Mono.Security.Protocol.Tls/ClientRecordProtocol.cs
-./Mono.Security.Protocol.Tls/ClientSessionCache.cs
-./Mono.Security.Protocol.Tls/ContentType.cs
-./Mono.Security.Protocol.Tls/Context.cs
-./Mono.Security.Protocol.Tls/DebugHelper.cs
-./Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
-./Mono.Security.Protocol.Tls/HandshakeState.cs
-./Mono.Security.Protocol.Tls/HashAlgorithmType.cs
-./Mono.Security.Protocol.Tls/HttpsClientStream.cs
-./Mono.Security.Protocol.Tls/RecordProtocol.cs
-./Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
-./Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
-./Mono.Security.Protocol.Tls/SecurityCompressionType.cs
-./Mono.Security.Protocol.Tls/SecurityParameters.cs
-./Mono.Security.Protocol.Tls/SecurityProtocolType.cs
-./Mono.Security.Protocol.Tls/ServerContext.cs
-./Mono.Security.Protocol.Tls/ServerRecordProtocol.cs
-./Mono.Security.Protocol.Tls/SslClientStream.cs
-./Mono.Security.Protocol.Tls/SslCipherSuite.cs
-./Mono.Security.Protocol.Tls/SslHandshakeHash.cs
-./Mono.Security.Protocol.Tls/SslServerStream.cs
-./Mono.Security.Protocol.Tls/SslStreamBase.cs
-./Mono.Security.Protocol.Tls/TlsCipherSuite.cs
-./Mono.Security.Protocol.Tls/TlsClientSettings.cs
-./Mono.Security.Protocol.Tls/TlsException.cs
-./Mono.Security.Protocol.Tls/TlsServerSettings.cs
-./Mono.Security.Protocol.Tls/TlsStream.cs
-./Mono.Security.Protocol.Tls.Handshake/ClientCertificateType.cs
-./Mono.Security.Protocol.Tls.Handshake/HandshakeMessage.cs
-./Mono.Security.Protocol.Tls.Handshake/HandshakeType.cs
-./Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificate.cs
-./Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs
-./Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs
-./Mono.Security.Protocol.Tls.Handshake.Client/TlsClientHello.cs
-./Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs
-./Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
-./Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificateRequest.cs
-./Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs
-./Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHello.cs
-./Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHelloDone.cs
-./Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs
-./Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificate.cs
-./Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificateVerify.cs
-./Mono.Security.Protocol.Tls.Handshake.Server/TlsClientFinished.cs
-./Mono.Security.Protocol.Tls.Handshake.Server/TlsClientHello.cs
-./Mono.Security.Protocol.Tls.Handshake.Server/TlsClientKeyExchange.cs
-./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificate.cs
-./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificateRequest.cs
-./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerFinished.cs
-./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHello.cs
-./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHelloDone.cs
-./Mono.Security.Protocol.Tls.Handshake.Server/TlsServerKeyExchange.cs
-./Mono.Xml/MiniParser.cs
-./Mono.Xml/SecurityParser.cs
+#include mobile_Mono.Security.dll.sources
index 007d94062fdb70cb05646bb898007a9acd567817..1379fa79d8038df905a3a62f2e9bf124b648466d 100644 (file)
@@ -1 +1,2 @@
-#include monotouch_Mono.Security.dll.sources
\ No newline at end of file
+#include monotouch_Mono.Security.dll.sources
+
diff --git a/mcs/class/Mono.Simd/Mono.Simd-net_4_5.csproj b/mcs/class/Mono.Simd/Mono.Simd-net_4_5.csproj
deleted file mode 100644 (file)
index 267cff6..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DA829B50-E4EF-40B3-9156-F1CB488D1D73}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Simd</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Simd\AccelerationAttribute.cs" />\r
-    <Compile Include="Mono.Simd\AccelMode.cs" />\r
-    <Compile Include="Mono.Simd\ArrayExtensions.cs" />\r
-    <Compile Include="Mono.Simd\SimdRuntime.cs" />\r
-    <Compile Include="Mono.Simd\Vector16b.cs" />\r
-    <Compile Include="Mono.Simd\Vector16sb.cs" />\r
-    <Compile Include="Mono.Simd\Vector2d.cs" />\r
-    <Compile Include="Mono.Simd\Vector2l.cs" />\r
-    <Compile Include="Mono.Simd\Vector2ul.cs" />\r
-    <Compile Include="Mono.Simd\Vector4f.cs" />\r
-    <Compile Include="Mono.Simd\Vector4i.cs" />\r
-    <Compile Include="Mono.Simd\Vector4ui.cs" />\r
-    <Compile Include="Mono.Simd\Vector8s.cs" />\r
-    <Compile Include="Mono.Simd\Vector8us.cs" />\r
-    <Compile Include="Mono.Simd\VectorOperations.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.Tasklets/Mono.Tasklets-net_4_5.csproj b/mcs/class/Mono.Tasklets/Mono.Tasklets-net_4_5.csproj
deleted file mode 100644 (file)
index 0f1cac0..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{03182F0E-A8A9-42FE-B4BD-915B16DF8B16}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.Tasklets</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Tasklets\Continuation.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_4_5.csproj b/mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_4_5.csproj
deleted file mode 100644 (file)
index 1ef082e..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1D660912-8164-4499-A2D7-A3B2FE742E17}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.WebBrowser</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Mozilla\AsciiString.cs" />\r
-    <Compile Include="Mono.Mozilla\Base.cs" />\r
-    <Compile Include="Mono.Mozilla\Callback.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\Attribute.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\AttributeCollection.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\ContentListener.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\Document.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\DocumentEncoder.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\DocumentType.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\DOMImplementation.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\DOMObject.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\Element.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\EventListener.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\History.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\HTMLElement.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\HTMLElementCollection.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\NamedNodeMap.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\Navigation.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\Node.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\NodeList.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\Stream.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\Stylesheet.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\StylesheetList.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\Window.cs" />\r
-    <Compile Include="Mono.Mozilla\DOM\WindowCollection.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\extras\DocumentEncoderFlags.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\extras\NodeType.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\extras\nsIReadSegmentFun.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\extras\nsITimerCallbackDelegate.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\extras\nsIWriteSegmentFun.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\extras\Options.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIAccessibilityService.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIAccessible.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIAccessibleDocument.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIAccessibleRelation.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIAccessibleRetrieval.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIAccessNode.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIArray.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsICancelable.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIChannel.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIClassInfo.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDocCharset.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDocumentEncoder.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDocumentEncoderNodeFixup.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMAbstractView.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMAttr.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMBarProp.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMCDATASection.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMCharacterData.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMComment.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMCounter.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMCSSPrimitiveValue.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMCSSRule.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMCSSRuleList.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMCSSStyleDeclaration.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMCSSStyleSheet.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMCSSValue.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMDocument.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMDocumentEvent.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMDocumentFragment.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMDocumentRange.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMDocumentStyle.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMDocumentType.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMDocumentView.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMDOMImplementation.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMDOMStringList.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMElement.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMEntityReference.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMEvent.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMEventListener.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMEventTarget.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMHTMLBodyElement.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMHTMLCollection.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMHTMLDocument.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMHTMLElement.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMHTMLStyleElement.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMKeyEvent.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMMediaList.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMMouseEvent.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMNamedNodeMap.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMNode.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMNodeList.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMNSHTMLElement.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMNSRange.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMProcessingInstruction.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMRange.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMRect.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMRGBColor.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMStyleSheet.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMStyleSheetList.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMText.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMUIEvent.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMViewCSS.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMWindow.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIDOMWindowCollection.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIErrorService.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIFile.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIHistoryEntry.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIInputStream.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIInterfaceRequestor.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIIOService.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsILoadGroup.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIObserver.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIOutputStream.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIPersistentProperties.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIPrefBranch.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIPrefService.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIProperties.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIProtocolHandler.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIRequest.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIRequestObserver.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsISelection.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIServiceManager.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsISHistory.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsISHistoryListener.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsISimpleEnumerator.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIStreamListener.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsITimer.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsITimerCallback.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIURI.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIURIContentListener.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIWeakReference.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIWebBrowser.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIWebBrowserChrome.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIWebBrowserChromeFocus.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIWebBrowserFocus.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIWebBrowserPersist.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIWebBrowserStream.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIWebNavigation.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIWebProgress.cs" />\r
-    <Compile Include="Mono.Mozilla\interfaces\nsIWebProgressListener.cs" />\r
-    <Compile Include="Mono.Mozilla\UniString.cs" />\r
-    <Compile Include="Mono.Mozilla\WebBrowser.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\EventArgs.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\EventHandlers.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IAttribute.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IAttributeCollection.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IDocument.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IDocumentType.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IDOMImplementation.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IElement.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IElementCollection.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IHistory.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IMediaList.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\INamedNodeMap.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\INavigation.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\INode.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\INodeList.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IStylesheet.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IStylesheetList.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IWindow.cs" />\r
-    <Compile Include="Mono.WebBrowser\DOM\IWindowCollection.cs" />\r
-    <Compile Include="Mono.WebBrowser\Exception.cs" />\r
-    <Compile Include="Mono.WebBrowser\IWebBrowser.cs" />\r
-    <Compile Include="Mono.WebBrowser\Manager.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.XBuild.Tasks/Mono.XBuild.Tasks-net_4_5.csproj b/mcs/class/Mono.XBuild.Tasks/Mono.XBuild.Tasks-net_4_5.csproj
deleted file mode 100644 (file)
index b1dbdd2..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{73FB1B7E-09F9-4E7F-A63A-C407A93BCA59}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.XBuild.Tasks</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\..\tools\xbuild\XBuildConsts.cs" />\r
-    <Compile Include="..\Microsoft.Build.Utilities\Mono.XBuild.Utilities\MSBuildUtils.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.XBuild.Tasks\LibraryPcFileCache.cs" />\r
-    <Compile Include="Mono.XBuild.Tasks\PcFileCache.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Mono.XBuild.Tasks/Mono.XBuild.Tasks-tests-net_4_5.csproj b/mcs/class/Mono.XBuild.Tasks/Mono.XBuild.Tasks-tests-net_4_5.csproj
deleted file mode 100644 (file)
index d088f09..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2A967FCC-19E4-407D-9187-9D2126768B18}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Mono.XBuild.Tasks-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Mono.XBuild.Tasks_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Mono.XBuild.Tasks\PcFileCacheTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.XBuild.Tasks\Mono.XBuild.Tasks-net_4_5.csproj">\r
-      <Project>{73FB1B7E-09F9-4E7F-A63A-C407A93BCA59}</Project>\r
-      <Name>Mono.XBuild.Tasks\Mono.XBuild.Tasks-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_5.csproj b/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_5.csproj
deleted file mode 100644 (file)
index 21a258b..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E6070FFA-2CBA-4C24-99C1-63A4F5052821}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,612</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Novell.Directory.Ldap</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,612</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,612</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs.in" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Boolean.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Choice.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Decoder.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Encoder.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Enumerated.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Identifier.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Integer.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Length.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Null.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Numeric.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Object.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1OctetString.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Sequence.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1SequenceOf.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Set.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1SetOf.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Structured.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\Asn1Tagged.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\LBERDecoder.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Asn1\LBEREncoder.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Controls\LdapEntryChangeControl.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Controls\LdapPersistSearchControl.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Controls\LdapSortControl.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Controls\LdapSortKey.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Controls\LdapSortResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Controls\LdapVirtualListControl.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Controls\LdapVirtualListResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\BaseEdirEventData.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\BinderyObjectEventData.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\ChangeAddressEventData.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\ConnectionStateEventData.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\DebugEventData.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\DebugParameter.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\DSETimeStamp.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\EntryEventData.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\GeneralDSEventData.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\ModuleStateEventData.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\NetworkAddressEventData.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\ReferralAddress.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\SecurityEquivalenceEventData.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir.EventData\ValueEventData.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir\EdirEventArgs.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir\EdirEventConstants.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir\EdirEventIntermediateResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir\EdirEventSource.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir\EdirEventSpecifier.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir\MonitorEventRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events.Edir\MonitorEventResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events\BaseEventArgs.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events\DirectoryEventArgs.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events\DirectoryExceptionEventArgs.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events\LdapEventArgs.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events\LdapEventConstants.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events\LdapEventSource.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events\PSearchEventSource.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events\SearchReferralEventArgs.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Events\SearchResultEventArgs.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\AbortPartitionOperationRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\AddReplicaRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\BackupRestoreConstants.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\ChangeReplicaTypeRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\GetBindDNRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\GetBindDNResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\GetEffectivePrivilegesRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\GetEffectivePrivilegesResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\GetReplicaInfoRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\GetReplicaInfoResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\GetReplicationFilterRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\GetReplicationFilterResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\LdapBackupRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\LdapBackupResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\LdapRestoreRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\ListReplicasRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\ListReplicasResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\MergePartitionsRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\NamingContextConstants.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\PartitionEntryCountRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\PartitionEntryCountResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\PartitionSyncRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\ReceiveAllUpdatesRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\RefreshLdapServerRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\RemoveOrphanPartitionRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\RemoveReplicaRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\ReplicationConstants.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\SchemaSyncRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\SendAllUpdatesRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\SetReplicationFilterRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\SplitOrphanPartitionRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\SplitPartitionRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Extensions\TriggerBackgroundProcessRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcAbandonRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcAddRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcAddResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcAssertionValue.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcAttributeDescription.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcAttributeDescriptionList.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcAttributeList.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcAttributeTypeAndValues.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcAttributeValue.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcAttributeValueAssertion.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcAuthenticationChoice.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcBindRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcBindResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcCompareRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcCompareResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcControl.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcControls.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcDelRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcDelResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcExtendedRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcExtendedResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcFilter.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcIntermediateResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcLdapDN.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcLdapMessage.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcLdapOID.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcLdapResult.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcLdapString.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcLdapSuperDN.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcMatchingRuleAssertion.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcMatchingRuleId.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcMessageID.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcModifyDNRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcModifyDNResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcModifyRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcModifyResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcReferral.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcRelativeLdapDN.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcSaslCredentials.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcSearchRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcSearchResultDone.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcSearchResultEntry.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcSearchResultReference.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcSubstringFilter.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Rfc2251\RfcUnbindRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\ArrayEnumeration.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\AttributeQualifier.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\Base64.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\BindProperties.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\CharacterTypes.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\DN.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\EnumeratedIterator.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\ExceptionMessages.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\ExtResponseFactory.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\IntermediateResponseFactory.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\RDN.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\ReferralInfo.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\ResourcesHandler.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\RespControlVector.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\RespExtensionSet.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\ResultCodeMessages.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\SchemaParser.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\SchemaTokenCreator.cs" />\r
-    <Compile Include="Novell.Directory.Ldap.Utilclass\TokenTypes.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\AssemblyInfo.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\AuthenticationTypes.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\Connection.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\InterThreadException.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapAbandonRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapAddRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapAttribute.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapAttributeSchema.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapAttributeSet.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapAuthHandler.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapAuthProvider.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapBindHandler.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapBindRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapCompareAttrNames.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapCompareRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapConnection.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapConstraints.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapControl.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapDeleteRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapDITContentRuleSchema.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapDITStructureRuleSchema.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapDN.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapDSConstants.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapEntry.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapException.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapExtendedOperation.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapExtendedRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapExtendedResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapIntermediateResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapLocalException.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapMatchingRuleSchema.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapMatchingRuleUseSchema.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapMessage.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapMessageQueue.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapModification.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapModifyDNRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapModifyRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapNameFormSchema.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapObjectClassSchema.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapReferralException.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapReferralHandler.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapResponse.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapResponseQueue.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapSchema.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapSchemaElement.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapSearchConstraints.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapSearchQueue.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapSearchRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapSearchResult.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapSearchResultReference.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapSearchResults.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapSyntaxSchema.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapUnbindRequest.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapUnsolicitedNotificationListener.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\LdapUrl.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\Message.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\MessageAgent.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\MessageVector.cs" />\r
-    <Compile Include="Novell.Directory.Ldap\SupportClass.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Novell.Directory.Ldap.Utilclass/ResultCodeMessages.resources">\r
-      <LogicalName>ResultCodeMessages.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-tests-net_4_5.csproj b/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 8c4f23a..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EE523013-EA6C-449D-B2F2-3414EDFB4406}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\Novell.Directory.Ldap-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>Novell.Directory.Ldap_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\bug-436775_Test.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5.csproj">\r
-      <Project>{E6070FFA-2CBA-4C24-99C1-63A4F5052821}</Project>\r
-      <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/PEAPI/PEAPI-net_4_5.csproj b/mcs/class/PEAPI/PEAPI-net_4_5.csproj
deleted file mode 100644 (file)
index 1af9fa8..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{127B367D-2E2C-4F7F-A13E-0F7307D96F2D}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,414,618</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>PEAPI</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,414,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,414,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Code.cs" />\r
-    <Compile Include="Metadata.cs" />\r
-    <Compile Include="PEAPI.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/RabbitMQ.Client/src/apigen/RabbitMQ.Client.Apigen-net_4_5.csproj b/mcs/class/RabbitMQ.Client/src/apigen/RabbitMQ.Client.Apigen-net_4_5.csproj
deleted file mode 100644 (file)
index 170672a..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{71FBB832-7D96-4B79-A7F6-CCC43FE70291}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>RabbitMQ.Client.Apigen</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\client\api\AmqpTimestamp.cs" />\r
-    <Compile Include="..\client\api\IBasicConsumer.cs" />\r
-    <Compile Include="..\client\api\IBasicProperties.cs" />\r
-    <Compile Include="..\client\api\IContentHeader.cs" />\r
-    <Compile Include="..\client\api\IFileProperties.cs" />\r
-    <Compile Include="..\client\api\IModel.cs" />\r
-    <Compile Include="..\client\api\IStreamProperties.cs" />\r
-    <Compile Include="..\client\api\PublicationAddress.cs" />\r
-    <Compile Include="..\client\api\ShutdownEventArgs.cs" />\r
-    <Compile Include="..\client\api\ShutdownInitiator.cs" />\r
-    <Compile Include="..\client\events\BasicReturnEventArgs.cs" />\r
-    <Compile Include="..\client\events\BasicReturnEventHandler.cs" />\r
-    <Compile Include="..\client\events\CallbackExceptionEventArgs.cs" />\r
-    <Compile Include="..\client\events\CallbackExceptionEventHandler.cs" />\r
-    <Compile Include="..\client\events\ModelShutdownEventHandler.cs" />\r
-    <Compile Include="AmqpClass.cs" />\r
-    <Compile Include="AmqpEntity.cs" />\r
-    <Compile Include="AmqpField.cs" />\r
-    <Compile Include="AmqpMethod.cs" />\r
-    <Compile Include="Apigen.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_5.csproj b/mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_5.csproj
deleted file mode 100644 (file)
index 02d97be..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{55AA0C89-63D9-438E-A139-3ED9F72AE295}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>./../../../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>RabbitMQ.Client</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\docs\specs\net_4_5-api-0-8.cs" />\r
-    <Compile Include="..\..\docs\specs\net_4_5-api-0-9.cs" />\r
-    <Compile Include="..\..\docs\specs\net_4_5-api-qpid-0-8.cs" />\r
-    <Compile Include="..\util\BlockingCell.cs" />\r
-    <Compile Include="..\util\DebugUtil.cs" />\r
-    <Compile Include="..\util\Either.cs" />\r
-    <Compile Include="..\util\IntAllocator.cs" />\r
-    <Compile Include="..\util\NetworkBinaryReader.cs" />\r
-    <Compile Include="..\util\NetworkBinaryWriter.cs" />\r
-    <Compile Include="..\util\Semaphore.cs" />\r
-    <Compile Include="..\util\SharedQueue.cs" />\r
-    <Compile Include="..\util\XmlUtil.cs" />\r
-    <Compile Include=".\api\AmqpTcpEndpoint.cs" />\r
-    <Compile Include=".\api\AmqpTimestamp.cs" />\r
-    <Compile Include=".\api\AmqpVersion.cs" />\r
-    <Compile Include=".\api\BinaryTableValue.cs" />\r
-    <Compile Include=".\api\ConnectionFactory.cs" />\r
-    <Compile Include=".\api\DefaultBasicConsumer.cs" />\r
-    <Compile Include=".\api\ExchangeType.cs" />\r
-    <Compile Include=".\api\IBasicConsumer.cs" />\r
-    <Compile Include=".\api\IBasicProperties.cs" />\r
-    <Compile Include=".\api\IConnection.cs" />\r
-    <Compile Include=".\api\IContentHeader.cs" />\r
-    <Compile Include=".\api\IFileProperties.cs" />\r
-    <Compile Include=".\api\IMethod.cs" />\r
-    <Compile Include=".\api\IModel.cs" />\r
-    <Compile Include=".\api\IProtocol.cs" />\r
-    <Compile Include=".\api\IStreamProperties.cs" />\r
-    <Compile Include=".\api\Protocols.cs" />\r
-    <Compile Include=".\api\PublicationAddress.cs" />\r
-    <Compile Include=".\api\QueueingBasicConsumer.cs" />\r
-    <Compile Include=".\api\ShutdownEventArgs.cs" />\r
-    <Compile Include=".\api\ShutdownInitiator.cs" />\r
-    <Compile Include=".\api\ShutdownReportEntry.cs" />\r
-    <Compile Include=".\api\SslHelper.cs" />\r
-    <Compile Include=".\api\SslOption.cs" />\r
-    <Compile Include=".\AssemblyInfo.cs" />\r
-    <Compile Include=".\content\BasicMessageBuilder.cs" />\r
-    <Compile Include=".\content\BasicMessageReader.cs" />\r
-    <Compile Include=".\content\BytesMessageBuilder.cs" />\r
-    <Compile Include=".\content\BytesMessageReader.cs" />\r
-    <Compile Include=".\content\BytesWireFormatting.cs" />\r
-    <Compile Include=".\content\IBytesMessageBuilder.cs" />\r
-    <Compile Include=".\content\IBytesMessageReader.cs" />\r
-    <Compile Include=".\content\IMapMessageBuilder.cs" />\r
-    <Compile Include=".\content\IMapMessageReader.cs" />\r
-    <Compile Include=".\content\IMessageBuilder.cs" />\r
-    <Compile Include=".\content\IMessageReader.cs" />\r
-    <Compile Include=".\content\IStreamMessageBuilder.cs" />\r
-    <Compile Include=".\content\IStreamMessageReader.cs" />\r
-    <Compile Include=".\content\MapMessageBuilder.cs" />\r
-    <Compile Include=".\content\MapMessageReader.cs" />\r
-    <Compile Include=".\content\MapWireFormatting.cs" />\r
-    <Compile Include=".\content\PrimitiveParser.cs" />\r
-    <Compile Include=".\content\StreamMessageBuilder.cs" />\r
-    <Compile Include=".\content\StreamMessageReader.cs" />\r
-    <Compile Include=".\content\StreamWireFormatting.cs" />\r
-    <Compile Include=".\events\BasicDeliverEventArgs.cs" />\r
-    <Compile Include=".\events\BasicDeliverEventHandler.cs" />\r
-    <Compile Include=".\events\BasicReturnEventArgs.cs" />\r
-    <Compile Include=".\events\BasicReturnEventHandler.cs" />\r
-    <Compile Include=".\events\CallbackExceptionEventArgs.cs" />\r
-    <Compile Include=".\events\CallbackExceptionEventHandler.cs" />\r
-    <Compile Include=".\events\ConnectionShutdownEventHandler.cs" />\r
-    <Compile Include=".\events\ConsumerEventArgs.cs" />\r
-    <Compile Include=".\events\ConsumerEventHandler.cs" />\r
-    <Compile Include=".\events\ConsumerShutdownEventHandler.cs" />\r
-    <Compile Include=".\events\EventingBasicConsumer.cs" />\r
-    <Compile Include=".\events\ModelShutdownEventHandler.cs" />\r
-    <Compile Include=".\exceptions\AlreadyClosedException.cs" />\r
-    <Compile Include=".\exceptions\BrokerUnreachableException.cs" />\r
-    <Compile Include=".\exceptions\ChannelAllocationException.cs" />\r
-    <Compile Include=".\exceptions\OperationInterruptedException.cs" />\r
-    <Compile Include=".\exceptions\PacketNotRecognizedException.cs" />\r
-    <Compile Include=".\exceptions\PossibleAuthenticationFailureException.cs" />\r
-    <Compile Include=".\exceptions\ProtocolVersionMismatchException.cs" />\r
-    <Compile Include=".\exceptions\UnexpectedMethodException.cs" />\r
-    <Compile Include=".\exceptions\UnsupportedMethodException.cs" />\r
-    <Compile Include=".\exceptions\UnsupportedMethodFieldException.cs" />\r
-    <Compile Include=".\exceptions\WireFormattingException.cs" />\r
-    <Compile Include=".\impl\AbstractProtocolBase.cs" />\r
-    <Compile Include=".\impl\BasicProperties.cs" />\r
-    <Compile Include=".\impl\ChannelErrorException.cs" />\r
-    <Compile Include=".\impl\Command.cs" />\r
-    <Compile Include=".\impl\CommandAssembler.cs" />\r
-    <Compile Include=".\impl\ConnectionBase.cs" />\r
-    <Compile Include=".\impl\ConnectionStartDetails.cs" />\r
-    <Compile Include=".\impl\ContentHeaderBase.cs" />\r
-    <Compile Include=".\impl\ContentHeaderPropertyReader.cs" />\r
-    <Compile Include=".\impl\ContentHeaderPropertyWriter.cs" />\r
-    <Compile Include=".\impl\FileProperties.cs" />\r
-    <Compile Include=".\impl\Frame.cs" />\r
-    <Compile Include=".\impl\HardProtocolException.cs" />\r
-    <Compile Include=".\impl\IFrameHandler.cs" />\r
-    <Compile Include=".\impl\IRpcContinuation.cs" />\r
-    <Compile Include=".\impl\ISession.cs" />\r
-    <Compile Include=".\impl\MainSession.cs" />\r
-    <Compile Include=".\impl\MalformedFrameException.cs" />\r
-    <Compile Include=".\impl\MethodArgumentReader.cs" />\r
-    <Compile Include=".\impl\MethodArgumentWriter.cs" />\r
-    <Compile Include=".\impl\MethodBase.cs" />\r
-    <Compile Include=".\impl\ModelBase.cs" />\r
-    <Compile Include=".\impl\ProtocolException.cs" />\r
-    <Compile Include=".\impl\QuiescingSession.cs" />\r
-    <Compile Include=".\impl\RedirectException.cs" />\r
-    <Compile Include=".\impl\RpcContinuationQueue.cs" />\r
-    <Compile Include=".\impl\Session.cs" />\r
-    <Compile Include=".\impl\SessionBase.cs" />\r
-    <Compile Include=".\impl\SessionManager.cs" />\r
-    <Compile Include=".\impl\ShutdownContinuation.cs" />\r
-    <Compile Include=".\impl\SimpleBlockingRpcContinuation.cs" />\r
-    <Compile Include=".\impl\SocketFrameHandler_0_9.cs" />\r
-    <Compile Include=".\impl\SoftProtocolException.cs" />\r
-    <Compile Include=".\impl\StreamProperties.cs" />\r
-    <Compile Include=".\impl\SyntaxError.cs" />\r
-    <Compile Include=".\impl\UnexpectedFrameException.cs" />\r
-    <Compile Include=".\impl\UnknownClassOrMethodException.cs" />\r
-    <Compile Include=".\impl\v0_8\Connection.cs" />\r
-    <Compile Include=".\impl\v0_8\ProtocolBase.cs" />\r
-    <Compile Include=".\impl\v0_8qpid\Connection.cs" />\r
-    <Compile Include=".\impl\v0_8qpid\ProtocolBase.cs" />\r
-    <Compile Include=".\impl\v0_9\Connection.cs" />\r
-    <Compile Include=".\impl\v0_9\ProtocolBase.cs" />\r
-    <Compile Include=".\impl\WireFormatting.cs" />\r
-    <Compile Include=".\messagepatterns\SimpleRpcClient.cs" />\r
-    <Compile Include=".\messagepatterns\SimpleRpcServer.cs" />\r
-    <Compile Include=".\messagepatterns\Subscription.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../../../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../../../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.ComponentModel.Composition.4.5/System.ComponentModel.Composition-net_4_5.csproj b/mcs/class/System.ComponentModel.Composition.4.5/System.ComponentModel.Composition-net_4_5.csproj
deleted file mode 100644 (file)
index 55921ab..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{81352E26-6AB7-4AA3-8FB1-28A476E82748}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,219,414</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ComponentModel.Composition</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,219,414</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;CLR40;USE_ECMA_KEY;FEATURE_REFLECTIONCONTEXT;FEATURE_REFLECTIONFILEIO;FEATURE_SERIALIZATION;FEATURE_SLIMLOCK</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,219,414</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;CLR40;USE_ECMA_KEY;FEATURE_REFLECTIONCONTEXT;FEATURE_REFLECTIONFILEIO;FEATURE_SERIALIZATION;FEATURE_SLIMLOCK</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="src\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="src\ComponentModel\ContractAdditions.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\Assumes.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\Assumes.InternalErrorException.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\AttributeServices.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\Collections\CollectionServices.CollectionOfObject.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\Collections\CollectionServices.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\Collections\EnumerableCardinality.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\Collections\WeakReferenceCollection.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\ContractServices.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\GenerationServices.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\LazyServices.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\Lock.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\Lock.Reader.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\Lock.Writer.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\ReflectionInvoke.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\ReflectionServices.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\Requires.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\Runtime\Serialization\SerializationServices.cs" />\r
-    <Compile Include="src\ComponentModel\Microsoft\Internal\StringComparers.cs" />\r
-    <Compile Include="src\ComponentModel\PlatformWorkarounds.cs" />\r
-    <Compile Include="src\ComponentModel\Strings.Designer.cs" />\r
-    <Compile Include="src\ComponentModel\SuppressMessages.cs" />\r
-    <Compile Include="src\ComponentModel\SuppressMessagesBaselined.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\AttributedModel\AttributedExportDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\AttributedModel\AttributedModelDiscovery.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\AttributedModel\AttributedPartCreationInfo.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\AttributedModelServices.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\CatalogReflectionContextAttribute.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ChangeRejectedException.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\CompositionContractMismatchException.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\CompositionError.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\CompositionErrorDebuggerProxy.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\CompositionErrorId.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\CompositionException.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\CompositionExceptionDebuggerProxy.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\CompositionResult.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\CompositionResultOfT.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ConstraintServices.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ContractNameServices.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\CreationPolicy.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Diagnostics\CompositionTrace.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Diagnostics\CompositionTraceId.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Diagnostics\CompositionTraceSource.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Diagnostics\SilverlightTraceWriter.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Diagnostics\TraceSourceTraceWriter.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Diagnostics\TraceWriter.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ErrorBuilder.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ExceptionBuilder.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ExportAttribute.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ExportCardinalityCheckResult.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ExportFactoryOfT.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ExportFactoryOfTTMetadata.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ExportLifetimeContextOfT.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ExportMetadataAttribute.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ExportServices.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ExportServices.DisposableLazy.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\AggregateCatalog.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\AggregateExportProvider.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ApplicationCatalog.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\AssemblyCatalog.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\AssemblyCatalogDebuggerProxy.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\AtomicComposition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\AtomicCompositionExtensions.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CatalogExportProvider.CatalogChangeProxy.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CatalogExportProvider.CatalogExport.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CatalogExportProvider.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CatalogExportProvider.FactoryExport.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CatalogExportProvider.PartCreatorExport.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CatalogExportProvider.ScopeFactoryExport.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CatalogExportProvider.ScopeManager.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CatalogExtensions.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ComposablePartCatalogChangeEventArgs.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ComposablePartCatalogCollection.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ComposablePartExportProvider.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CompositionBatch.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CompositionBatch.SingleExportComposablePart.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CompositionConstants.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CompositionContainer.CompositionServiceShim.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CompositionContainer.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CompositionLock.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CompositionOptions.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CompositionScopeDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CompositionScopeDefinitionDebuggerProxy.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CompositionService.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\CompositionServices.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\DirectoryCatalog.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ExportProvider.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ExportProvider.GetExportOverrides.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ExportsChangeEventArgs.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\FilteredCatalog.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\FilteredCatalog.DependenciesTraversal.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\FilteredCatalog.DependentsTraversal.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\FilteredCatalog.IComposablePartCatalogTraversal.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\FilteredCatalog.Traversal.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ImportEngine.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ImportEngine.EngineContext.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ImportEngine.PartManager.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ImportEngine.RecompositionManager.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ImportSourceImportDefinitionHelpers.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\INotifyComposablePartCatalogChanged.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\ScopingExtensions.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Hosting\TypeCatalog.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\IAttributedImport.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ICompositionService.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ImportAttribute.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ImportCardinalityMismatchException.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ImportCardinalityMismatchExceptionDebuggerProxy.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ImportingConstructorAttribute.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ImportManyAttribute.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ImportSource.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\InheritedExportAttribute.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\IPartImportsSatisfiedNotification.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\MetadataAttributeAttribute.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\MetadataServices.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\MetadataViewGenerator.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\MetadataViewImplementationAttribute.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\MetadataViewProvider.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\PartCreationPolicyAttribute.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\PartMetadataAttribute.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\PartNotDiscoverableAttribute.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\ComposablePart.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\ComposablePartCatalog.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\ComposablePartCatalogDebuggerProxy.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\ComposablePartDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\ComposablePartException.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\ComposablePartExceptionDebuggerProxy.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\CompositionElement.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\CompositionElementDebuggerProxy.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\CompositionElementExtensions.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\ContractBasedImportDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\Export.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\ExportDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\ExportedDelegate.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\ICompositionElement.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\ImportCardinality.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\ImportDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\IPartCreatorImportDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\PrimitivesServices.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\Primitives\SerializableCompositionElement.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\DisposableReflectionComposablePart.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ExportfactoryCreator.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ExportfactoryCreator.LifetimeContext.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ExportingMember.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\GenericServices.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\GenericSpecializationPartCreationInfo.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ImportingItem.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ImportingMember.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ImportingParameter.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ImportType.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\IReflectionPartCreationInfo.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\LazyMemberInfo.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\PartCreatorExportDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\PartCreatorMemberImportDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\PartCreatorParameterImportDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionComposablePart.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionComposablePartDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionExtensions.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionField.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionImportDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionItem.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionItemType.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionMember.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionMemberExportDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionMemberImportDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionMethod.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionModelServices.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionParameter.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionParameterImportDefinition.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionProperty.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionType.cs" />\r
-    <Compile Include="src\ComponentModel\System\ComponentModel\Composition\ReflectionModel\ReflectionWritableMember.cs" />\r
-    <Compile Include="src\ComponentModel\System\LazyOfTTMetadata.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Microsoft.Internal.Strings.resources">\r
-      <LogicalName>Microsoft.Internal.Strings.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index 2427cdd39ae7d12b1c09c8aae58a6a8c49818d2b..ed196f9e643cb60ec97a6aba8fa299b73fb69ced 100644 (file)
@@ -3,57 +3,57 @@ namespace System.ComponentModel.DataAnnotations.Resources
 static class DataAnnotationsResources
 {
        public const string ArgumentIsNullOrWhitespace = "The argument '{0}' cannot be null, empty or contain only white space.";
-       public const string AssociatedMetadataTypeTypeDescriptor_MetadataTypeContainsUnknownProperties = "AssociatedMetadataTypeTypeDescriptor_MetadataTypeContainsUnknownProperties";
-       public const string AttributeStore_Unknown_Property = "AttributeStore_Unknown_Property";
-       public const string Common_PropertyNotFound = "Common_PropertyNotFound";
+       public const string AssociatedMetadataTypeTypeDescriptor_MetadataTypeContainsUnknownProperties = "The associated metadata type for type '{0}' contains the following unknown properties or fields: {1}. Please make sure that the names of these members match the names of the properties on the main type.";
+       public const string AttributeStore_Unknown_Property = "The type '{0}' does not contain a public property named '{1}'.";
+       public const string Common_PropertyNotFound = "The property {0}.{1} could not be found.";
        public const string CompareAttribute_MustMatch = "'{0}' and '{1}' do not match.";
-       public const string CompareAttribute_UnknownProperty = "CompareAttribute_UnknownProperty";
-       public const string CreditCardAttribute_Invalid = "CreditCardAttribute_Invalid";
-       public const string CustomValidationAttribute_Method_Must_Return_ValidationResult = "CustomValidationAttribute_Method_Must_Return_ValidationResult";
-       public const string CustomValidationAttribute_Method_Not_Found = "CustomValidationAttribute_Method_Not_Found";
-       public const string CustomValidationAttribute_Method_Required = "CustomValidationAttribute_Method_Required";
-       public const string CustomValidationAttribute_Method_Signature = "CustomValidationAttribute_Method_Signature";
-       public const string CustomValidationAttribute_Type_Conversion_Failed = "CustomValidationAttribute_Type_Conversion_Failed";
-       public const string CustomValidationAttribute_Type_Must_Be_Public = "CustomValidationAttribute_Type_Must_Be_Public";
+       public const string CompareAttribute_UnknownProperty = "Could not find a property named {0}.";
+       public const string CreditCardAttribute_Invalid = "The {0} field is not a valid credit card number.";
+       public const string CustomValidationAttribute_Method_Must_Return_ValidationResult = "The CustomValidationAttribute method '{0}' in type '{1}' must return System.ComponentModel.DataAnnotations.ValidationResult.  Use System.ComponentModel.DataAnnotations.ValidationResult.Success to represent success.";
+       public const string CustomValidationAttribute_Method_Not_Found = "The CustomValidationAttribute method '{0}' does not exist in type '{1}' or is not public and static.";
+       public const string CustomValidationAttribute_Method_Required = "The CustomValidationAttribute.Method was not specified.";
+       public const string CustomValidationAttribute_Method_Signature = "The CustomValidationAttribute method '{0}' in type '{1}' must match the expected signature: public static ValidationResult {0}(object value, ValidationContext context).  The value can be strongly typed.  The ValidationContext parameter is optional.";
+       public const string CustomValidationAttribute_Type_Conversion_Failed = "Could not convert the value of type '{0}' to '{1}' as expected by method {2}.{3}.";
+       public const string CustomValidationAttribute_Type_Must_Be_Public = "The custom validation type '{0}' must be public.";
        public const string CustomValidationAttribute_ValidationError = "{0} is not valid.";
-       public const string CustomValidationAttribute_ValidatorType_Required = "CustomValidationAttribute_ValidatorType_Required";
-       public const string DataTypeAttribute_EmptyDataTypeString = "DataTypeAttribute_EmptyDataTypeString";
+       public const string CustomValidationAttribute_ValidatorType_Required = "The CustomValidationAttribute.ValidatorType was not specified.";
+       public const string DataTypeAttribute_EmptyDataTypeString = "The custom DataType string cannot be null or empty.";
        public const string DisplayAttribute_PropertyNotSet = "The {0} property has not been set.  Use the {1} method to get the value.";
-       public const string EmailAddressAttribute_Invalid = "The {0} field is not a valid email address";
-       public const string EnumDataTypeAttribute_TypeCannotBeNull = "EnumDataTypeAttribute_TypeCannotBeNull";
-       public const string EnumDataTypeAttribute_TypeNeedsToBeAnEnum = "EnumDataTypeAttribute_TypeNeedsToBeAnEnum";
-       public const string FileExtensionsAttribute_Invalid = "FileExtensionsAttribute_Invalid";
-       public const string LocalizableString_LocalizationFailed = "Cannot retrieve property '{0}' because localization failed. Type '{1}' is not public or does not contain a public static string property with the name '{2}'.";
+       public const string EmailAddressAttribute_Invalid = "The {0} field is not a valid e-mail address.";
+       public const string EnumDataTypeAttribute_TypeCannotBeNull = "The type provided for EnumDataTypeAttribute cannot be null.";
+       public const string EnumDataTypeAttribute_TypeNeedsToBeAnEnum = "The type '{0}' needs to represent an enumeration type.";
+       public const string FileExtensionsAttribute_Invalid = "The {0} field only accepts files with the following extensions: {1}";
+       public const string LocalizableString_LocalizationFailed = "Cannot retrieve property '{0}' because localization failed.  Type '{1}' is not public or does not contain a public static string property with the name '{2}'.";
        public const string MaxLengthAttribute_InvalidMaxLength = "MaxLengthAttribute must have a Length value that is greater than zero. Use MaxLength() without parameters to indicate that the string or array can have the maximum allowable length.";
        public const string MaxLengthAttribute_ValidationError = "The field {0} must be a string or array type with a maximum length of '{1}'.";
-       public const string MetadataTypeAttribute_TypeCannotBeNull = "MetadataTypeAttribute_TypeCannotBeNull";
+       public const string MetadataTypeAttribute_TypeCannotBeNull = "MetadataClassType cannot be null.";
        public const string MinLengthAttribute_InvalidMinLength = "MinLengthAttribute must have a Length value that is zero or greater.";
-       public const string MinLengthAttribute_ValidationError = "The field {0} must be a string or array type with a minimum length of '{1}'";
-       public const string PhoneAttribute_Invalid = "PhoneAttribute_Invalid";
-       public const string RangeAttribute_ArbitraryTypeNotIComparable = "RangeAttribute_ArbitraryTypeNotIComparable";
-       public const string RangeAttribute_MinGreaterThanMax = "RangeAttribute_MinGreaterThanMax";
-       public const string RangeAttribute_Must_Set_Min_And_Max = "RangeAttribute_Must_Set_Min_And_Max";
-       public const string RangeAttribute_Must_Set_Operand_Type = "RangeAttribute_Must_Set_Operand_Type";
+       public const string MinLengthAttribute_ValidationError = "The field {0} must be a string or array type with a minimum length of '{1}'.";
+       public const string PhoneAttribute_Invalid = "The {0} field is not a valid phone number.";
+       public const string RangeAttribute_ArbitraryTypeNotIComparable = "The type {0} must implement {1}.";
+       public const string RangeAttribute_MinGreaterThanMax = "The maximum value '{0}' must be greater than or equal to the minimum value '{1}'.";
+       public const string RangeAttribute_Must_Set_Min_And_Max = "The minimum and maximum values must be set.";
+       public const string RangeAttribute_Must_Set_Operand_Type = "The OperandType must be set when strings are used for minimum and maximum values.";
        public const string RangeAttribute_ValidationError = "The field {0} must be between {1} and {2}.";
-       public const string RegexAttribute_ValidationError = "The field {0} must match the regular expression {1}.";
+       public const string RegexAttribute_ValidationError = "The field {0} must match the regular expression '{1}'.";
        public const string RegularExpressionAttribute_Empty_Pattern = "The pattern must be set to a valid regular expression.";
        public const string RequiredAttribute_ValidationError = "The {0} field is required.";
-       public const string StringLengthAttribute_InvalidMaxLength = "StringLengthAttribute_InvalidMaxLength";
+       public const string StringLengthAttribute_InvalidMaxLength = "The maximum length must be a nonnegative integer.";
        public const string StringLengthAttribute_ValidationError = "The field {0} must be a string with a maximum length of {1}.";
-       public const string StringLengthAttribute_ValidationErrorIncludingMinimum = "StringLengthAttribute_ValidationErrorIncludingMinimum";
-       public const string UIHintImplementation_ControlParameterKeyIsNotAString = "UIHintImplementation_ControlParameterKeyIsNotAString";
-       public const string UIHintImplementation_ControlParameterKeyIsNull = "UIHintImplementation_ControlParameterKeyIsNull";
-       public const string UIHintImplementation_ControlParameterKeyOccursMoreThanOnce = "UIHintImplementation_ControlParameterKeyOccursMoreThanOnce";
-       public const string UIHintImplementation_NeedEvenNumberOfControlParameters = "UIHintImplementation_NeedEvenNumberOfControlParameters";
-       public const string UrlAttribute_Invalid = "UrlAttribute_Invalid";
-       public const string ValidationAttribute_Cannot_Set_ErrorMessage_And_Resource = "ValidationAttribute_Cannot_Set_ErrorMessage_And_Resource";
-       public const string ValidationAttribute_IsValid_NotImplemented = "ValidationAttribute_IsValid_NotImplemented";
-       public const string ValidationAttribute_NeedBothResourceTypeAndResourceName = "ValidationAttribute_NeedBothResourceTypeAndResourceName";
-       public const string ValidationAttribute_ResourcePropertyNotStringType = "ValidationAttribute_ResourcePropertyNotStringType";
-       public const string ValidationAttribute_ResourceTypeDoesNotHaveProperty = "ValidationAttribute_ResourceTypeDoesNotHaveProperty";
+       public const string StringLengthAttribute_ValidationErrorIncludingMinimum = "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.";
+       public const string UIHintImplementation_ControlParameterKeyIsNotAString = "The key parameter at position {0} with value '{1}' is not a string. Every key control parameter must be a string.";
+       public const string UIHintImplementation_ControlParameterKeyIsNull = "The key parameter at position {0} is null. Every key control parameter must be a string.";
+       public const string UIHintImplementation_ControlParameterKeyOccursMoreThanOnce = "The key parameter at position {0} with value '{1}' occurs more than once.";
+       public const string UIHintImplementation_NeedEvenNumberOfControlParameters = "The number of control parameters must be even.";
+       public const string UrlAttribute_Invalid = "The {0} field is not a valid fully-qualified http, https, or ftp URL.";
+       public const string ValidationAttribute_Cannot_Set_ErrorMessage_And_Resource = "Either ErrorMessageString or ErrorMessageResourceName must be set, but not both.";
+       public const string ValidationAttribute_IsValid_NotImplemented = "IsValid(object value) has not been implemented by this class.  The preferred entry point is GetValidationResult() and classes should override IsValid(object value, ValidationContext context).";
+       public const string ValidationAttribute_NeedBothResourceTypeAndResourceName = "Both ErrorMessageResourceType and ErrorMessageResourceName need to be set on this attribute.";
+       public const string ValidationAttribute_ResourcePropertyNotStringType = "The property '{0}' on resource type '{1}' is not a string type.";
+       public const string ValidationAttribute_ResourceTypeDoesNotHaveProperty = "The resource type '{0}' does not have an accessible static property named '{1}'.";
        public const string ValidationAttribute_ValidationError = "The field {0} is invalid.";
-       public const string ValidationContextServiceContainer_ItemAlreadyExists = "ValidationContextServiceContainer_ItemAlreadyExists";
-       public const string Validator_InstanceMustMatchValidationContextInstance = "Validator_InstanceMustMatchValidationContextInstance";
-       public const string Validator_Property_Value_Wrong_Type = "Validator_Property_Value_Wrong_Type";
+       public const string ValidationContextServiceContainer_ItemAlreadyExists = "A service of type '{0}' already exists in the container.";
+       public const string Validator_InstanceMustMatchValidationContextInstance = "The instance provided must match the ObjectInstance on the ValidationContext supplied.";
+       public const string Validator_Property_Value_Wrong_Type = "The value for property '{0}' must be of type '{1}'.";
 }
 }
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj
deleted file mode 100644 (file)
index ff8fad5..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,414</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ComponentModel.DataAnnotations</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,414</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,414</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\AssociatedMetadataTypeTypeDescriptionProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\AssociatedMetadataTypeTypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\AssociationAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\BindableTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\CompareAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\ConcurrencyCheckAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\CreditCardAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\CustomValidationAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\DataType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\DataTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\DisplayAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\DisplayColumnAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\DisplayFormatAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\EditableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\EmailAddressAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\EnumDataTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\FileExtensionsAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\FilterUIHintAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\IValidatableObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\KeyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\LocalizableString.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\MaxLengthAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\MetadataPropertyDescriptorWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\MetadataTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\MinLengthAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\PhoneAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\RangeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\RegularExpressionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\RequiredAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\ScaffoldAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\Schema\ColumnAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\Schema\ComplexTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\Schema\DatabaseGeneratedAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\Schema\DatabaseGeneratedOption.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\Schema\ForeignKeyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\Schema\InversePropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\Schema\NotMappedAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\Schema\TableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\StringLengthAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\TimestampAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\UIHintAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\UrlAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\ValidationAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\ValidationAttributeStore.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\ValidationContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\ValidationException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\ValidationResult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\Validator.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="DataAnnotationsResources.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 01fed3a3c9d16967ef346c7884e0214e38c93724..b74efc8504c7464f5373678b535588a3611a11a9 100644 (file)
@@ -45,6 +45,7 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
+    <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\AppSettings.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\AssociatedMetadataTypeTypeDescriptionProvider.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\AssociatedMetadataTypeTypeDescriptor.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.ComponentModel.DataAnnotations\DataAnnotations\AssociationAttribute.cs" />\r
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-tests-net_4_5.csproj b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 30eddfa..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D3974636-0E65-4A2C-9FA8-118264995BC1}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ComponentModel.DataAnnotations_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\System.Web.DynamicData\Test\Common\AssertExtensions.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\AssociatedMetadataTypeTypeDescriptionProviderTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\AssociationAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\CompareAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\CreditCardAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\CustomValidationAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\DisplayAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\EmailAddressAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\EnumDataTypeAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\FileExtensionsAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\FilterUIHintAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\PhoneAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\RangeAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\RegularExpressionAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\RequiredAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\StringLengthAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\UIHintAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\ValidationAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\ValidationContextTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\ValidationResultTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.DataAnnotations\ValidatorTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 9bcea0403eb9d96f2ab0f339913116102381996e..ddebaf5f6d75f3244caf8c8ca8d6406fdae12c6e 100644 (file)
@@ -1,5 +1,6 @@
 ../../build/common/Consts.cs
 Assembly/AssemblyInfo.cs
+../../../external/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/AppSettings.cs
 ../../../external/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/AssociatedMetadataTypeTypeDescriptionProvider.cs
 ../../../external/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/AssociatedMetadataTypeTypeDescriptor.cs
 ../../../external/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/AssociationAttribute.cs
index c9db2ac448d8eb8128ab40e3dd2091149470f03c..5096568c1694125c55d16c42a3c31eeb1ba4c969 100644 (file)
@@ -70,7 +70,7 @@ namespace MonoTests.System.ComponentModel.DataAnnotations
        public class DisplayAttributeTests
        {
                const string property_not_set_message = "The {0} property has not been set.  Use the Get{0} method to get the value.";
-               const string localization_failed_message = "Cannot retrieve property '{0}' because localization failed. Type '{1}' is not public or does not contain a public static string property with the name '{2}'.";
+               const string localization_failed_message = "Cannot retrieve property '{0}' because localization failed.  Type '{1}' is not public or does not contain a public static string property with the name '{2}'.";
        
                [Test]
                public void StringProperties_ReturnLiteralValues_Success()
index 2462517cffa24875aad607175647b6923ef635c3..bb9852e1fc926e1801d541103b4a7772bf688fa3 100644 (file)
@@ -56,7 +56,7 @@ namespace MonoTests.System.ComponentModel.DataAnnotations
                        var rea = new RegularExpressionAttributePoker (@"[A-Za-z]");
                        Assert.AreEqual (@"[A-Za-z]", rea.Pattern, "Patterns not saved correctly.");
                        Assert.AreEqual (null, rea.ErrorMessage, "Error message not null when not yet matched.");
-                       Assert.AreEqual ("The field {0} must match the regular expression {1}.", rea.GetErrorMessageString (), "Error message not valid.");
+                       Assert.AreEqual ("The field {0} must match the regular expression '{1}'.", rea.GetErrorMessageString (), "Error message not valid.");
                }
 
                [Test]
@@ -64,7 +64,7 @@ namespace MonoTests.System.ComponentModel.DataAnnotations
                {
                        var rea = new RegularExpressionAttributePoker (@"[A-Za-z]");
 
-                       Assert.AreEqual ("The field MyField must match the regular expression [A-Za-z].", 
+                       Assert.AreEqual ("The field MyField must match the regular expression '[A-Za-z]'.", 
                                rea.FormatErrorMessage ("MyField"), 
                                "Error message not correctly formatted.");
 
index cc19b39d2cf45fb0feddabceadf8bd2aa5dc39c9..0d8bdc4e4ab759342f59669904c7ec0954e65e74 100644 (file)
@@ -402,7 +402,7 @@ namespace MonoTests.System.ComponentModel.DataAnnotations
                }
 
                [Test]
-               public void IsValid_Object_ValidationContext_CrossCallsWithNIEX ()
+               public void IsValid_Object_No_User_EntryPoint ()
                {
                        var attr = new ValidateSomethingAttribute ();
 
@@ -419,23 +419,8 @@ namespace MonoTests.System.ComponentModel.DataAnnotations
                                // at MonoTests.System.ComponentModel.DataAnnotations.ValidationAttributeTest.IsValid_Object_ValidationContext_02() in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidationAttributeTest.cs:line 514
                                attr.IsValid ("stuff");
                        }, "#A1");
-
-                       AssertExtensions.Throws<NotImplementedException> (() => {
-                               // And this one is thrown from the IsValid (object) overload!
-                               //
-                               // MonoTests.System.ComponentModel.DataAnnotations.ValidationAttributeTest.IsValid_Object_ValidationContext_CrossCallsWithNIEX:
-                               // System.NotImplementedException : IsValid(object value) has not been implemented by this class.  The preferred entry point is GetValidationResult() and classes should override IsValid(object value, ValidationContext context).
-                               //
-                               // at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value)
-                               // at MonoTests.System.ComponentModel.DataAnnotations.ValidateSomethingAttribute.IsValid(Object value, ValidationContext validationContext) in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidationAttributeTest.cs:line 660
-                               // at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value)
-                               // at MonoTests.System.ComponentModel.DataAnnotations.ValidateSomethingAttribute.IsValid(Object value, ValidationContext validationContext) in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidationAttributeTest.cs:line 660
-                               // at MonoTests.System.ComponentModel.DataAnnotations.ValidateSomethingAttribute.CallIsValid(Object value, ValidationContext validationContext) in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidationAttributeTest.cs:line 667
-                               // at MonoTests.System.ComponentModel.DataAnnotations.ValidationAttributeTest.IsValid_Object_ValidationContext_CrossCallsWithNIEX() in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidationAttributeTest.cs:line 530
-
-                               attr.CallIsValid ("stuff", null);
-                       }, "#A2");
                }
+               
                [Test]
                public void Validate_Object_ValidationContext ()
                {
@@ -543,25 +528,11 @@ namespace MonoTests.System.ComponentModel.DataAnnotations
                        return base.FormatErrorMessage (name);
                }
        }
+       
        class ValidateSomethingAttribute : ValidationAttribute
        {
-               public override bool IsValid (object value)
-               {
-                       return base.IsValid (value, null) == ValidationResult.Success;
-               }
-
-               protected override ValidationResult IsValid (object value, ValidationContext validationContext)
-               {
-                       if (base.IsValid (value))
-                               return ValidationResult.Success;
-                       return new ValidationResult ("failed to validate in base class");
-               }
-
-               public ValidationResult CallIsValid (object value, ValidationContext validationContext)
-               {
-                       return IsValid (value, validationContext);
-               }
        }
+
        class FooErrorMessageProvider
        {
                public static string ErrorProperty1
diff --git a/mcs/class/System.Configuration.Install/System.Configuration.Install-net_4_5.csproj b/mcs/class/System.Configuration.Install/System.Configuration.Install-net_4_5.csproj
deleted file mode 100644 (file)
index 270a0e2..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E6E1740E-37DD-487C-8947-F1C0612D4738}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Configuration.Install</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Configuration.Install\AssemblyInstaller.cs" />\r
-    <Compile Include="System.Configuration.Install\ComponentInstaller.cs" />\r
-    <Compile Include="System.Configuration.Install\IManagedInstaller.cs" />\r
-    <Compile Include="System.Configuration.Install\InstallContext.cs" />\r
-    <Compile Include="System.Configuration.Install\Installer.cs" />\r
-    <Compile Include="System.Configuration.Install\InstallerCollection.cs" />\r
-    <Compile Include="System.Configuration.Install\InstallEventArgs.cs" />\r
-    <Compile Include="System.Configuration.Install\InstallEventHandler.cs" />\r
-    <Compile Include="System.Configuration.Install\InstallException.cs" />\r
-    <Compile Include="System.Configuration.Install\ManagedInstallerClass.cs" />\r
-    <Compile Include="System.Configuration.Install\TransactedInstaller.cs" />\r
-    <Compile Include="System.Configuration.Install\UninstallAction.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogInstaller.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterInstaller.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Configuration/System.Configuration-net_4_5.csproj b/mcs/class/System.Configuration/System.Configuration-net_4_5.csproj
deleted file mode 100644 (file)
index 9b52ce2..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Configuration</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Configuration.Internal\DelegatingConfigHost.cs" />\r
-    <Compile Include="System.Configuration.Internal\IConfigErrorInfo.cs" />\r
-    <Compile Include="System.Configuration.Internal\IConfigSystem.cs" />\r
-    <Compile Include="System.Configuration.Internal\IConfigurationManagerHelper.cs" />\r
-    <Compile Include="System.Configuration.Internal\IConfigurationManagerInternal.cs" />\r
-    <Compile Include="System.Configuration.Internal\IInternalConfigClientHost.cs" />\r
-    <Compile Include="System.Configuration.Internal\IInternalConfigConfigurationFactory.cs" />\r
-    <Compile Include="System.Configuration.Internal\IInternalConfigHost.cs" />\r
-    <Compile Include="System.Configuration.Internal\IInternalConfigRecord.cs" />\r
-    <Compile Include="System.Configuration.Internal\IInternalConfigRoot.cs" />\r
-    <Compile Include="System.Configuration.Internal\IInternalConfigSettingsFactory.cs" />\r
-    <Compile Include="System.Configuration.Internal\IInternalConfigSystem.cs" />\r
-    <Compile Include="System.Configuration.Internal\InternalConfigEventArgs.cs" />\r
-    <Compile Include="System.Configuration.Internal\InternalConfigEventHandler.cs" />\r
-    <Compile Include="System.Configuration.Internal\StreamChangeCallback.cs" />\r
-    <Compile Include="System.Configuration.Provider\ProviderBase.cs" />\r
-    <Compile Include="System.Configuration.Provider\ProviderCollection.cs" />\r
-    <Compile Include="System.Configuration.Provider\ProviderException.cs" />\r
-    <Compile Include="System.Configuration\AppSettingsSection.cs" />\r
-    <Compile Include="System.Configuration\CallbackValidator.cs" />\r
-    <Compile Include="System.Configuration\CallbackValidatorAttribute.cs" />\r
-    <Compile Include="System.Configuration\ClientConfigurationSystem.cs" />\r
-    <Compile Include="System.Configuration\CommaDelimitedStringCollection.cs" />\r
-    <Compile Include="System.Configuration\CommaDelimitedStringCollectionConverter.cs" />\r
-    <Compile Include="System.Configuration\ConfigHelper.cs" />\r
-    <Compile Include="System.Configuration\ConfigInfo.cs" />\r
-    <Compile Include="System.Configuration\Configuration.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationAllowDefinition.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationAllowExeDefinition.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationCollectionAttribute.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationConverterBase.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationElement.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationElementCollection.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationElementCollectionType.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationElementProperty.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationErrorsException.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationFileMap.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationLocation.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationLocationCollection.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationLockCollection.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationManager.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationPermission.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationPermissionAttribute.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationProperty.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationPropertyAttribute.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationPropertyCollection.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationPropertyOptions.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationRemoveElement.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationSaveEventArgs.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationSaveEventHandler.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationSaveMode.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationSection.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationSectionCollection.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationSectionGroup.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationSectionGroupCollection.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationUserLevel.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationValidatorAttribute.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationValidatorBase.cs" />\r
-    <Compile Include="System.Configuration\ConfigXmlTextReader.cs" />\r
-    <Compile Include="System.Configuration\ConnectionStringSettings.cs" />\r
-    <Compile Include="System.Configuration\ConnectionStringSettingsCollection.cs" />\r
-    <Compile Include="System.Configuration\ConnectionStringsSection.cs" />\r
-    <Compile Include="System.Configuration\ContextInformation.cs" />\r
-    <Compile Include="System.Configuration\DefaultSection.cs" />\r
-    <Compile Include="System.Configuration\DefaultValidator.cs" />\r
-    <Compile Include="System.Configuration\DpapiProtectedConfigurationProvider.cs" />\r
-    <Compile Include="System.Configuration\ElementInformation.cs" />\r
-    <Compile Include="System.Configuration\ExeConfigurationFileMap.cs" />\r
-    <Compile Include="System.Configuration\ExeContext.cs" />\r
-    <Compile Include="System.Configuration\GenericEnumConverter.cs" />\r
-    <Compile Include="System.Configuration\IConfigXmlNode.cs" />\r
-    <Compile Include="System.Configuration\IgnoreSection.cs" />\r
-    <Compile Include="System.Configuration\InfiniteIntConverter.cs" />\r
-    <Compile Include="System.Configuration\InfiniteTimeSpanConverter.cs" />\r
-    <Compile Include="System.Configuration\IntegerValidator.cs" />\r
-    <Compile Include="System.Configuration\IntegerValidatorAttribute.cs" />\r
-    <Compile Include="System.Configuration\InternalConfigurationFactory.cs" />\r
-    <Compile Include="System.Configuration\InternalConfigurationHost.cs" />\r
-    <Compile Include="System.Configuration\InternalConfigurationRoot.cs" />\r
-    <Compile Include="System.Configuration\KeyValueConfigurationCollection.cs" />\r
-    <Compile Include="System.Configuration\KeyValueConfigurationElement.cs" />\r
-    <Compile Include="System.Configuration\KeyValueInternalCollection.cs" />\r
-    <Compile Include="System.Configuration\LongValidator.cs" />\r
-    <Compile Include="System.Configuration\LongValidatorAttribute.cs" />\r
-    <Compile Include="System.Configuration\NameValueConfigurationCollection.cs" />\r
-    <Compile Include="System.Configuration\NameValueConfigurationElement.cs" />\r
-    <Compile Include="System.Configuration\PositiveTimeSpanValidator.cs" />\r
-    <Compile Include="System.Configuration\PositiveTimeSpanValidatorAttribute.cs" />\r
-    <Compile Include="System.Configuration\PropertyInformation.cs" />\r
-    <Compile Include="System.Configuration\PropertyInformationCollection.cs" />\r
-    <Compile Include="System.Configuration\PropertyValueOrigin.cs" />\r
-    <Compile Include="System.Configuration\ProtectedConfiguration.cs" />\r
-    <Compile Include="System.Configuration\ProtectedConfigurationProvider.cs" />\r
-    <Compile Include="System.Configuration\ProtectedConfigurationProviderCollection.cs" />\r
-    <Compile Include="System.Configuration\ProtectedConfigurationSection.cs" />\r
-    <Compile Include="System.Configuration\ProtectedProviderSettings.cs" />\r
-    <Compile Include="System.Configuration\ProviderSettings.cs" />\r
-    <Compile Include="System.Configuration\ProviderSettingsCollection.cs" />\r
-    <Compile Include="System.Configuration\RegexStringValidator.cs" />\r
-    <Compile Include="System.Configuration\RegexStringValidatorAttribute.cs" />\r
-    <Compile Include="System.Configuration\RsaProtectedConfigurationProvider.cs" />\r
-    <Compile Include="System.Configuration\SectionGroupInfo.cs" />\r
-    <Compile Include="System.Configuration\SectionInfo.cs" />\r
-    <Compile Include="System.Configuration\SectionInformation.cs" />\r
-    <Compile Include="System.Configuration\StringValidator.cs" />\r
-    <Compile Include="System.Configuration\StringValidatorAttribute.cs" />\r
-    <Compile Include="System.Configuration\SubclassTypeValidator.cs" />\r
-    <Compile Include="System.Configuration\SubclassTypeValidatorAttribute.cs" />\r
-    <Compile Include="System.Configuration\TimeSpanMinutesConverter.cs" />\r
-    <Compile Include="System.Configuration\TimeSpanMinutesOrInfiniteConverter.cs" />\r
-    <Compile Include="System.Configuration\TimeSpanSecondsConverter.cs" />\r
-    <Compile Include="System.Configuration\TimeSpanSecondsOrInfiniteConverter.cs" />\r
-    <Compile Include="System.Configuration\TimeSpanValidator.cs" />\r
-    <Compile Include="System.Configuration\TimeSpanValidatorAttribute.cs" />\r
-    <Compile Include="System.Configuration\TypeNameConverter.cs" />\r
-    <Compile Include="System.Configuration\ValidatorCallback.cs" />\r
-    <Compile Include="System.Configuration\WhiteSpaceTrimStringConverter.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-secxml-net_4_5.csproj">\r
-      <Project>{46F151F2-A422-4A1B-9D29-2E148CE73629}</Project>\r
-      <Name>System-secxml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-bare-net_4_5.csproj">\r
-      <Project>{21FB091E-0F84-479E-AB16-6503D36852F9}</Project>\r
-      <Name>System.Xml-bare-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Security/System.Security-net_4_5.csproj">\r
-      <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Configuration/System.Configuration-tests-net_4_5.csproj b/mcs/class/System.Configuration/System.Configuration-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 2ff30cc..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9A11832B-834C-4518-98E3-0E301CAD589D}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>bin\Debug\System.Configuration-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Configuration_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Configuration.Provider\ProviderBaseTest.cs" />\r
-    <Compile Include="Test\System.Configuration.Provider\ProviderCollectionTest.cs" />\r
-    <Compile Include="Test\System.Configuration\AppSettingsSectionTest.cs" />
-    <Compile Include="Test\System.Configuration\CallbackValidatorTest.cs" />\r
-    <Compile Include="Test\System.Configuration\CommaDelimitedStringCollectionConverterTest.cs" />\r
-    <Compile Include="Test\System.Configuration\CommaDelimitedStringCollectionTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ConfigurationElementTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ConfigurationErrorsExceptionTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ConfigurationLockCollectionTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ConfigurationManagerTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ConfigurationPermissionTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ConfigurationPropertyTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ConfigurationSaveTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ConfigurationSectionGroupTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ConfigurationSectionTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ConnectionStringSettingsTest.cs" />\r
-    <Compile Include="Test\System.Configuration\DefaultValidatorTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ExeConfigurationFileMapTest.cs" />\r
-    <Compile Include="Test\System.Configuration\GenericEnumConverterTest.cs" />\r
-    <Compile Include="Test\System.Configuration\InfiniteIntConverterTest.cs" />\r
-    <Compile Include="Test\System.Configuration\InfiniteTimeSpanConverterTest.cs" />\r
-    <Compile Include="Test\System.Configuration\IntegerValidatorTest.cs" />\r
-    <Compile Include="Test\System.Configuration\KeyValueConfigurationCollectionTest.cs" />\r
-    <Compile Include="Test\System.Configuration\KeyValueConfigurationElementTest.cs" />\r
-    <Compile Include="Test\System.Configuration\LongValidatorTest.cs" />\r
-    <Compile Include="Test\System.Configuration\PositiveTimeSpanValidatorTest.cs" />\r
-    <Compile Include="Test\System.Configuration\RegexStringValidatorTest.cs" />\r
-    <Compile Include="Test\System.Configuration\StringValidatorTest.cs" />\r
-    <Compile Include="Test\System.Configuration\SubclassTypeValidatorTest.cs" />\r
-    <Compile Include="Test\System.Configuration\TimeSpanMinutesConverterTest.cs" />\r
-    <Compile Include="Test\System.Configuration\TimeSpanMinutesOrInfiniteConverterTest.cs" />\r
-    <Compile Include="Test\System.Configuration\TimeSpanSecondsConverterTest.cs" />\r
-    <Compile Include="Test\System.Configuration\TimeSpanSecondsOrInfiniteConverterTest.cs" />\r
-    <Compile Include="Test\System.Configuration\TimeSpanValidatorTest.cs" />\r
-    <Compile Include="Test\System.Configuration\TypeNameConverterTest.cs" />\r
-    <Compile Include="Test\System.Configuration\WhiteSpaceTrimStringConverterTest.cs" />\r
-    <Compile Include="Test\Util\TestLabel.cs" />\r
-    <Compile Include="Test\Util\TestUtil.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-1.csproj">\r
-      <Project>{6822DF7D-F859-4F02-9946-F138AA756A0E}</Project>\r
-      <Name>System\System-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security\System.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index c52050141f7f7d6a3b8e8200fdd77ff4d93adf22..e38c5a16763b02e76ff18ecd7a5fbf31751d7614 100644 (file)
@@ -100,8 +100,10 @@ partial class SR
        public const string Cryptography_UnknownEllipticCurve = "Cryptography_UnknownEllipticCurve";
        public const string Cryptography_UnknownEllipticCurveAlgorithm = "Cryptography_UnknownEllipticCurveAlgorithm";
        public const string Cryptography_UnknownPaddingMode = "Cryptography_UnknownPaddingMode";
+       public const string Cryptography_HashAlgorithmNameNullOrEmpty = "Cryptography_HashAlgorithmNameNullOrEmpty";
 
        public const string InvalidOperation_ViewIsNull = "InvalidOperation_ViewIsNull";
        public const string ObjectDisposed_ViewAccessorClosed = "ObjectDisposed_ViewAccessorClosed";
        public const string NotSupported_MMViewStreamsFixedLength = "NotSupported_MMViewStreamsFixedLength";
+       public const string NotSupported_SubclassOverride = "NotSupported_SubclassOverride";
 }
diff --git a/mcs/class/System.Core/System.Core-net_4_5.csproj b/mcs/class/System.Core/System.Core-net_4_5.csproj
deleted file mode 100644 (file)
index 2b21409..0000000
+++ /dev/null
@@ -1,407 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Core</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;FEATURE_PAL;PFX_LEGACY_3_5;FEATURE_NETCORE;INSIDE_SYSCORE;LIBC;NET_3_5;FEATURE_CORE_DLR;FEATURE_REFEMIT;FEATURE_PDBEMIT</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;FEATURE_PAL;PFX_LEGACY_3_5;FEATURE_NETCORE;INSIDE_SYSCORE;LIBC;NET_3_5;FEATURE_CORE_DLR;FEATURE_REFEMIT;FEATURE_PDBEMIT</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Ast\DynamicExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Ast\ExpressionVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\Action.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\Extension.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\Function.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\StrongBox.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Collections\Generic\BitHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Collections\Generic\HashSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Collections\Generic\HashSetDebugView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Collections\Generic\HashSetEqualityComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\FuncAndAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\InvalidTimeZoneException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\IO\Enums.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\IO\MemoryMappedFiles\Enums.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\IO\MemoryMappedFiles\MemoryMappedFileSecurity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Enumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Expressions\ExpressionVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\IQueryable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Channels\AsynchronousChannel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Channels\SynchronousChannel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\AggregationMinMaxHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\EmptyEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\EnumerableWrapperWeakToStrong.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\IParallelPartitionable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\OrderedParallelQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\ParallelEnumerableWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\ParallelQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\QueryAggregationOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\RangeEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\RepeatEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\ArrayMergeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\AsynchronousChannelMergeEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\DefaultMergeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\IMergeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\MergeEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\MergeExecutor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\OrderPreservingMergeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\OrderPreservingPipeliningMergeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\SynchronousChannelMergeEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\HashRepartitionEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\HashRepartitionStream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\IPartitionedStreamRecipient.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\OrderedHashRepartitionEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\OrderedHashRepartitionStream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\PartitionedDataSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\PartitionedStream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\UnorderedHashRepartitionStream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\AssociativeAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\ExceptQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\GroupJoinQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\HashJoinQueryOperatorEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\IntersectQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\JoinQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\UnionQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\ZipQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\BinaryQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\CountAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\DecimalAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\DecimalMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\DecimalSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\DoubleAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\DoubleMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\DoubleSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\FloatAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\FloatMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\FloatSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\InlinedAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\InlinedAggregationOperatorEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\IntAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\IntMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\IntSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\LongAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\LongCountAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\LongMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\LongSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableDecimalAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableDecimalMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableDecimalSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableDoubleAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableDoubleMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableDoubleSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableFloatAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableFloatMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableFloatSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableIntAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableIntMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableIntSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableLongAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableLongMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableLongSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\ListQueryResults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Options\OrderingQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Options\QueryExecutionOption.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\OrdinalIndexState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\PartitionedStreamMerger.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\PartitionerQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\QueryOpeningEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\QueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\QueryOperatorEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\QueryResults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\QuerySettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\ScanQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\AnyAllSearchOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\ConcatQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\ContainsSearchOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\DefaultIfEmptyQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\DistinctQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\ElementAtQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\FirstQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\ForAllOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\GroupByQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\IndexedSelectQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\IndexedWhereQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\LastQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\ReverseQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\SelectManyQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\SelectQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\SingleQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\SortQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\TakeOrSkipQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\TakeOrSkipWhileQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\WhereQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\UnaryQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\CancellationState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\OrderPreservingPipeliningSpoolingTask.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\OrderPreservingSpoolingTask.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\QueryLifecycle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\QueryTask.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\QueryTaskGroupState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\Scheduling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\SpoolingTask.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\SpoolingTaskBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\CancellableEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\ExceptionAggregator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\ExchangeUtilities.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\FixedMaxHeap.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\GrowingArray.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\HashLookup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\IntValueEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\ListChunk.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\Lookup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\Pair.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\PairComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\ReverseComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\Shared.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\Sorting.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\TraceHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\Util.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\Wrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\WrapperEqualityComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\ParallelEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\ParallelExecutionMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\ParallelMergeOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\SequenceQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\TypeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Runtime\CompilerServices\DynamicAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Runtime\CompilerServices\ExecutionScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Security\Cryptography\Aes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Security\Cryptography\AesManaged.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\threading\ReaderWriterLockSlim\LockRecursionException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\threading\ReaderWriterLockSlim\ReaderWriterLockSlim.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\threading\Tasks\TaskExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\TimeZoneInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\TimeZoneNotFoundException.cs" />\r
-    <Compile Include="..\..\build\common\SR.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\BinaryOperationBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\BindingRestrictions.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\CallInfo.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\CallSite.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\CallSiteBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\CallSiteHelpers.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\CallSiteOps.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\ConvertBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\CreateInstanceBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\DeleteIndexBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\DeleteMemberBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\DynamicMetaObject.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\DynamicMetaObjectBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\DynamicObject.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\ExpandoClass.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\ExpandoObject.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\GetIndexBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\GetMemberBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\IDynamicMetaObjectProvider.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\IInvokeOnGetBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\InvokeBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\InvokeMemberBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\RuleCache.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\SetIndexBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\SetMemberBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\UnaryOperationBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\UpdateDelegates.Generated.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\BinaryExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\BlockExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\CatchBlock.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ConditionalExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ConstantExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\DebugInfoExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\DebugViewWriter.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\DefaultExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ElementInit.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\Expression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\Expression.DebuggerProxy.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ExpressionStringBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ExpressionType.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\GotoExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\IArgumentProvider.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\IndexExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\InvocationExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\LabelExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\LabelTarget.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\LambdaExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ListArgumentProvider.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ListInitExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\LoopExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MemberAssignment.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MemberBinding.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MemberExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MemberInitExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MemberListBinding.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MemberMemberBinding.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MethodCallExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\NewArrayExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\NewExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ParameterExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\RuntimeVariablesExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\SwitchCase.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\SwitchExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\SymbolDocumentInfo.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\TryExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\TypeBinaryExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\TypeUtils.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\UnaryExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\AnalyzedTree.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\AssemblyGen.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\BoundConstants.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\Closure.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\CompilerScope.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\CompilerScope.Storage.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\ConstantCheck.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\DebugInfoGenerator.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\DelegateHelpers.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\DelegateHelpers.Generated.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\ExpressionQuoter.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\HoistedLocals.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\ILGen.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\KeyedQueue.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LabelInfo.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Address.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Binary.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.ControlFlow.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Expressions.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Generated.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Lambda.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Logical.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Statements.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Unary.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\OffsetTrackingILGenerator.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\RuntimeVariableList.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\Set.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\StackSpiller.Bindings.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\StackSpiller.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\StackSpiller.Generated.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\StackSpiller.Temps.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\SymbolDocumentGenerator.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\SymbolGuids.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\VariableBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\CacheDict.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\CollectionExtensions.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\ContractUtils.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\ExceptionFactory.Generated.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\Helpers.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\IRuntimeVariables.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\ReadOnlyCollectionBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\ReadOnlyDictionary.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\ReferenceEqualityComparer.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\ReflectionUtils.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\TrueReadOnlyCollection.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\TypeExtensions.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.Win32.SafeHandles\SafeMemoryMappedFileHandle.cs" />\r
-    <Compile Include="Microsoft.Win32.SafeHandles\SafeMemoryMappedViewHandle.cs" />\r
-    <Compile Include="Microsoft.Win32.SafeHandles\SafePipeHandle.cs" />\r
-    <Compile Include="ReferenceSources\Error.cs" />\r
-    <Compile Include="ReferenceSources\SR.cs" />\r
-    <Compile Include="ReferenceSources\Strings.cs" />\r
-    <Compile Include="System.IO.MemoryMappedFiles\MemoryMappedFile.cs" />\r
-    <Compile Include="System.IO.MemoryMappedFiles\MemoryMappedViewAccessor.cs" />\r
-    <Compile Include="System.IO.MemoryMappedFiles\MemoryMappedViewStream.cs" />\r
-    <Compile Include="System.IO.Pipes\AnonymousPipeClientStream.cs" />\r
-    <Compile Include="System.IO.Pipes\AnonymousPipeServerStream.cs" />\r
-    <Compile Include="System.IO.Pipes\NamedPipeClientStream.cs" />\r
-    <Compile Include="System.IO.Pipes\NamedPipeServerStream.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeAccessRights.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeAccessRule.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeAuditRule.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeDirection.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeInterfaces.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeOptions.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeSecurity.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeStream.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeStreamImpersonationWorker.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeTransmissionMode.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeUnix.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeWin32.cs" />\r
-    <Compile Include="System.Security.Cryptography\AesCryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\AesTransform.cs" />\r
-    <Compile Include="System.Security.Cryptography\CngAlgorithm.cs" />\r
-    <Compile Include="System.Security.Cryptography\CngAlgorithmGroup.cs" />\r
-    <Compile Include="System.Security.Cryptography\MD5Cng.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA1Cng.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA256Cng.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA256CryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA384Cng.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA384CryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA512Cng.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA512CryptoServiceProvider.cs" />\r
-    <Compile Include="System\Util.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Posix/Mono.Posix-net_4_5.csproj">\r
-      <Project>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</Project>\r
-      <Name>Mono.Posix-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 27c7975c9a94592ec5a1c5f9c62383a6287a82e3..f789945f01b6cdcb57bf03b6bf45c348d10f3588 100644 (file)
@@ -47,6 +47,8 @@
   <ItemGroup>\r
     <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Ast\DynamicExpression.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Ast\ExpressionVisitor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Ast\IArgumentProvider.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Ast\IDynamicExpression.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\Action.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\Extension.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\Function.cs" />\r
     <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ExpressionStringBuilder.cs" />\r
     <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ExpressionType.cs" />\r
     <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\GotoExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\IArgumentProvider.cs" />\r
     <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\IndexExpression.cs" />\r
     <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\InvocationExpression.cs" />\r
     <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\LabelExpression.cs" />\r
diff --git a/mcs/class/System.Core/System.Core-plaincore-net_4_5.csproj b/mcs/class/System.Core/System.Core-plaincore-net_4_5.csproj
deleted file mode 100644 (file)
index fb9f148..0000000
+++ /dev/null
@@ -1,407 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7503D2B9-9ABB-451B-9193-08223A29603F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5/plaincore</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Core</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;FEATURE_PAL;PFX_LEGACY_3_5;FEATURE_NETCORE;INSIDE_SYSCORE;LIBC;NET_3_5;FEATURE_CORE_DLR;FEATURE_REFEMIT;FEATURE_PDBEMIT</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;FEATURE_PAL;PFX_LEGACY_3_5;FEATURE_NETCORE;INSIDE_SYSCORE;LIBC;NET_3_5;FEATURE_CORE_DLR;FEATURE_REFEMIT;FEATURE_PDBEMIT</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Ast\DynamicExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Ast\ExpressionVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\Action.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\Extension.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\Function.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\StrongBox.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Collections\Generic\BitHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Collections\Generic\HashSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Collections\Generic\HashSetDebugView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Collections\Generic\HashSetEqualityComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\FuncAndAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\InvalidTimeZoneException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\IO\Enums.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\IO\MemoryMappedFiles\Enums.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\IO\MemoryMappedFiles\MemoryMappedFileSecurity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Enumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Expressions\ExpressionVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\IQueryable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Channels\AsynchronousChannel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Channels\SynchronousChannel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\AggregationMinMaxHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\EmptyEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\EnumerableWrapperWeakToStrong.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\IParallelPartitionable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\OrderedParallelQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\ParallelEnumerableWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\ParallelQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\QueryAggregationOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\RangeEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Enumerables\RepeatEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\ArrayMergeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\AsynchronousChannelMergeEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\DefaultMergeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\IMergeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\MergeEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\MergeExecutor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\OrderPreservingMergeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\OrderPreservingPipeliningMergeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Merging\SynchronousChannelMergeEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\HashRepartitionEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\HashRepartitionStream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\IPartitionedStreamRecipient.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\OrderedHashRepartitionEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\OrderedHashRepartitionStream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\PartitionedDataSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\PartitionedStream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Partitioning\UnorderedHashRepartitionStream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\AssociativeAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\ExceptQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\GroupJoinQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\HashJoinQueryOperatorEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\IntersectQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\JoinQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\UnionQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Binary\ZipQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\BinaryQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\CountAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\DecimalAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\DecimalMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\DecimalSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\DoubleAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\DoubleMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\DoubleSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\FloatAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\FloatMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\FloatSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\InlinedAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\InlinedAggregationOperatorEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\IntAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\IntMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\IntSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\LongAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\LongCountAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\LongMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\LongSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableDecimalAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableDecimalMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableDecimalSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableDoubleAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableDoubleMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableDoubleSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableFloatAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableFloatMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableFloatSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableIntAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableIntMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableIntSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableLongAverageAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableLongMinMaxAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Inlined\NullableLongSumAggregationOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\ListQueryResults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Options\OrderingQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Options\QueryExecutionOption.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\OrdinalIndexState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\PartitionedStreamMerger.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\PartitionerQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\QueryOpeningEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\QueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\QueryOperatorEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\QueryResults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\QuerySettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\ScanQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\AnyAllSearchOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\ConcatQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\ContainsSearchOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\DefaultIfEmptyQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\DistinctQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\ElementAtQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\FirstQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\ForAllOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\GroupByQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\IndexedSelectQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\IndexedWhereQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\LastQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\ReverseQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\SelectManyQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\SelectQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\SingleQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\SortQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\TakeOrSkipQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\TakeOrSkipWhileQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\Unary\WhereQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\QueryOperators\UnaryQueryOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\CancellationState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\OrderPreservingPipeliningSpoolingTask.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\OrderPreservingSpoolingTask.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\QueryLifecycle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\QueryTask.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\QueryTaskGroupState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\Scheduling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\SpoolingTask.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Scheduling\SpoolingTaskBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\CancellableEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\ExceptionAggregator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\ExchangeUtilities.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\FixedMaxHeap.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\GrowingArray.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\HashLookup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\IntValueEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\ListChunk.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\Lookup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\Pair.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\PairComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\ReverseComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\Shared.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\Sorting.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\TraceHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\Util.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\Wrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\Parallel\Utils\WrapperEqualityComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\ParallelEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\ParallelExecutionMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\ParallelMergeOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\SequenceQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Linq\TypeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Runtime\CompilerServices\DynamicAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Runtime\CompilerServices\ExecutionScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Security\Cryptography\Aes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\Security\Cryptography\AesManaged.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\threading\ReaderWriterLockSlim\LockRecursionException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\threading\ReaderWriterLockSlim\ReaderWriterLockSlim.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\threading\Tasks\TaskExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\TimeZoneInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Core\System\TimeZoneNotFoundException.cs" />\r
-    <Compile Include="..\..\build\common\SR.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\BinaryOperationBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\BindingRestrictions.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\CallInfo.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\CallSite.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\CallSiteBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\CallSiteHelpers.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\CallSiteOps.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\ConvertBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\CreateInstanceBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\DeleteIndexBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\DeleteMemberBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\DynamicMetaObject.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\DynamicMetaObjectBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\DynamicObject.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\ExpandoClass.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\ExpandoObject.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\GetIndexBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\GetMemberBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\IDynamicMetaObjectProvider.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\IInvokeOnGetBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\InvokeBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\InvokeMemberBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\RuleCache.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\SetIndexBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\SetMemberBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\UnaryOperationBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Actions\UpdateDelegates.Generated.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\BinaryExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\BlockExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\CatchBlock.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ConditionalExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ConstantExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\DebugInfoExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\DebugViewWriter.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\DefaultExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ElementInit.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\Expression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\Expression.DebuggerProxy.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ExpressionStringBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ExpressionType.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\GotoExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\IArgumentProvider.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\IndexExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\InvocationExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\LabelExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\LabelTarget.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\LambdaExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ListArgumentProvider.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ListInitExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\LoopExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MemberAssignment.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MemberBinding.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MemberExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MemberInitExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MemberListBinding.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MemberMemberBinding.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\MethodCallExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\NewArrayExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\NewExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ParameterExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\RuntimeVariablesExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\SwitchCase.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\SwitchExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\SymbolDocumentInfo.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\TryExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\TypeBinaryExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\TypeUtils.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\UnaryExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\AnalyzedTree.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\AssemblyGen.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\BoundConstants.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\Closure.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\CompilerScope.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\CompilerScope.Storage.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\ConstantCheck.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\DebugInfoGenerator.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\DelegateHelpers.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\DelegateHelpers.Generated.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\ExpressionQuoter.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\HoistedLocals.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\ILGen.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\KeyedQueue.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LabelInfo.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Address.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Binary.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.ControlFlow.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Expressions.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Generated.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Lambda.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Logical.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Statements.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\LambdaCompiler.Unary.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\OffsetTrackingILGenerator.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\RuntimeVariableList.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\Set.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\StackSpiller.Bindings.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\StackSpiller.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\StackSpiller.Generated.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\StackSpiller.Temps.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\SymbolDocumentGenerator.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\SymbolGuids.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Compiler\VariableBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\CacheDict.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\CollectionExtensions.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\ContractUtils.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\ExceptionFactory.Generated.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\Helpers.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\IRuntimeVariables.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\ReadOnlyCollectionBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\ReadOnlyDictionary.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\ReferenceEqualityComparer.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\ReflectionUtils.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\TrueReadOnlyCollection.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Utils\TypeExtensions.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.Win32.SafeHandles\SafeMemoryMappedFileHandle.cs" />\r
-    <Compile Include="Microsoft.Win32.SafeHandles\SafeMemoryMappedViewHandle.cs" />\r
-    <Compile Include="Microsoft.Win32.SafeHandles\SafePipeHandle.cs" />\r
-    <Compile Include="ReferenceSources\Error.cs" />\r
-    <Compile Include="ReferenceSources\SR.cs" />\r
-    <Compile Include="ReferenceSources\Strings.cs" />\r
-    <Compile Include="System.IO.MemoryMappedFiles\MemoryMappedFile.cs" />\r
-    <Compile Include="System.IO.MemoryMappedFiles\MemoryMappedViewAccessor.cs" />\r
-    <Compile Include="System.IO.MemoryMappedFiles\MemoryMappedViewStream.cs" />\r
-    <Compile Include="System.IO.Pipes\AnonymousPipeClientStream.cs" />\r
-    <Compile Include="System.IO.Pipes\AnonymousPipeServerStream.cs" />\r
-    <Compile Include="System.IO.Pipes\NamedPipeClientStream.cs" />\r
-    <Compile Include="System.IO.Pipes\NamedPipeServerStream.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeAccessRights.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeAccessRule.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeAuditRule.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeDirection.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeInterfaces.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeOptions.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeSecurity.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeStream.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeStreamImpersonationWorker.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeTransmissionMode.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeUnix.cs" />\r
-    <Compile Include="System.IO.Pipes\PipeWin32.cs" />\r
-    <Compile Include="System.Security.Cryptography\AesCryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\AesTransform.cs" />\r
-    <Compile Include="System.Security.Cryptography\CngAlgorithm.cs" />\r
-    <Compile Include="System.Security.Cryptography\CngAlgorithmGroup.cs" />\r
-    <Compile Include="System.Security.Cryptography\MD5Cng.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA1Cng.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA256Cng.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA256CryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA384Cng.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA384CryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA512Cng.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA512CryptoServiceProvider.cs" />\r
-    <Compile Include="System\Util.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Posix/Mono.Posix-net_4_5.csproj">\r
-      <Project>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</Project>\r
-      <Name>Mono.Posix-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 8e4141ca05c0fa214b135697003f9c56b0a1481d..ef334979b349500834ed67ff23d5bf1c00dc244e 100644 (file)
@@ -47,6 +47,8 @@
   <ItemGroup>\r
     <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Ast\DynamicExpression.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Ast\ExpressionVisitor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Ast\IArgumentProvider.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Ast\IDynamicExpression.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\Action.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\Extension.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Core\Microsoft\Scripting\Utils\Function.cs" />\r
     <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ExpressionStringBuilder.cs" />\r
     <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\ExpressionType.cs" />\r
     <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\GotoExpression.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\IArgumentProvider.cs" />\r
     <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\IndexExpression.cs" />\r
     <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\InvocationExpression.cs" />\r
     <Compile Include="..\dlr\Runtime\Microsoft.Scripting.Core\Ast\LabelExpression.cs" />\r
diff --git a/mcs/class/System.Core/System.Core-tests-net_4_5.csproj b/mcs/class/System.Core/System.Core-tests-net_4_5.csproj
deleted file mode 100644 (file)
index c4764d9..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A4B33044-86DB-4146-8588-1F9400124B85}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <OutputPath>bin\Debug\System.Core-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Core_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;INSIDE_SYSCORE;LIBC;NET_3_5;FEATURE_CORE_DLR;FEATURE_REFEMIT;FEATURE_PDBEMIT</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;INSIDE_SYSCORE;LIBC;NET_3_5;FEATURE_CORE_DLR;FEATURE_REFEMIT;FEATURE_PDBEMIT</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\corlib\Test\System.Security.Cryptography\HashAlgorithmTest.cs" />\r
-    <Compile Include="..\corlib\Test\System.Security.Cryptography\SHA1Test.cs" />\r
-    <Compile Include="..\corlib\Test\System.Security.Cryptography\SHA256Test.cs" />\r
-    <Compile Include="..\corlib\Test\System.Security.Cryptography\SHA384Test.cs" />\r
-    <Compile Include="..\corlib\Test\System.Security.Cryptography\SHA512Test.cs" />\r
-    <Compile Include="Test\System.Collections.Generic\HashSetTest.cs" />\r
-    <Compile Include="Test\System.IO.MemoryMappedFiles\MemoryMappedFileTest.cs" />\r
-    <Compile Include="Test\System.IO.Pipes\PipeSecurityTest.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Add.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_AddChecked.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_And.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_AndAlso.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_ArrayIndex.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_ArrayLength.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Bind.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Call.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Coalesce.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Condition.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Constant.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Convert.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Divide.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_ElementInit.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Equal.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_ExclusiveOr.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Field.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_GreaterThan.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_GreaterThanOrEqual.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Invoke.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Lambda.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_LeftShift.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_LessThan.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_LessThanOrEqual.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Lift.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_ListBind.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_ListInit.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_MakeBinary.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_MemberBind.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_MemberInit.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Modulo.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Multiply.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_MultiplyChecked.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Negate.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_New.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_NewArrayBounds.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_NewArrayInit.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Not.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_NotEqual.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Or.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_OrElse.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Power.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Property.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_PropertyOrField.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Quote.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_RightShift.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Subtract.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_SubtractChecked.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_TypeAs.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_TypeIs.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_UnaryPlus.cs" />\r
-    <Compile Include="Test\System.Linq.Expressions\ExpressionTest_Utils.cs" />\r
-    <Compile Include="Test\System.Linq\EnumerableAsQueryableTest.cs" />\r
-    <Compile Include="Test\System.Linq\EnumerableFixture.cs" />\r
-    <Compile Include="Test\System.Linq\EnumerableMoreTest.cs" />\r
-    <Compile Include="Test\System.Linq\EnumerableTest.cs" />\r
-    <Compile Include="Test\System.Linq\LookupTest.cs" />\r
-    <Compile Include="Test\System.Linq\ParallelEnumerableTests.cs" />\r
-    <Compile Include="Test\System.Linq\ParallelTestHelper.cs" />\r
-    <Compile Include="Test\System.Runtime.CompilerServices\DynamicAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\AesCryptoServiceProviderTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\AesManagedTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CngAlgorithmGroupTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CngAlgorithmTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\MD5CngTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA1CngTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA256CngTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA256CryptoServiceProviderTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA384CngTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA384CryptoServiceProviderTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA512CngTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA512CryptoServiceProviderTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks\TaskExtensionsTests.cs" />\r
-    <Compile Include="Test\System.Threading\ReaderWriterLockSlimTest.cs" />\r
-    <Compile Include="Test\System\TimeZoneInfo.AdjustmentRuleTest.cs" />\r
-    <Compile Include="Test\System\TimeZoneInfo.TransitionTimeTest.cs" />\r
-    <Compile Include="Test\System\TimeZoneInfoTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System\System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</Project>\r
-      <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 1edb2fa98eca01cbaac72ac28d970ab1a013a35d..976b50109d0c0b4deba28eb9ff0d7e29016a876b 100644 (file)
@@ -239,6 +239,17 @@ namespace MonoTests.System.Linq.Expressions {
                        return 42;
                }
 
+               [Test]
+               public void CallMethodOnDateTime ()
+               {
+                       var left = Expression.Call (Expression.Constant (DateTime.Now), typeof(DateTime).GetMethod ("AddDays"), Expression.Constant (-5.0));
+                       var right = Expression.Constant (DateTime.Today.AddDays (1));
+                       var expr = Expression.GreaterThan (left, right);
+
+                       var eq = Expression.Lambda<Func<bool>> (expr).Compile ();
+                       Assert.IsFalse (eq ());
+               }
+
                [Test]
                [Category ("NotDotNet")] // http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=339351
                [ExpectedException (typeof (ArgumentException))]
@@ -382,7 +393,6 @@ namespace MonoTests.System.Linq.Expressions {
                }
 
                [Test]
-               [Category ("NotWorkingInterpreter")]
                public void Connect282702 ()
                {
                        var lambda = Expression.Lambda<Func<Func<int>>> (
index ac32152973f1d06c45fb897253f98fb089d1f1ad..5364c0fe3abe1948a00bdbbc064a5d043d2b24d8 100644 (file)
@@ -90,6 +90,18 @@ namespace MonoTests.System.Linq.Expressions
                        Assert.IsFalse (eq ());
                }
 
+               [Test]
+               public void StringWithNull ()
+               {
+                       BinaryExpression expr = Expression.Equal (Expression.Constant ("a"), Expression.Constant (null));
+                       Assert.AreEqual (ExpressionType.Equal, expr.NodeType);
+                       Assert.AreEqual (typeof (bool), expr.Type);
+                       Assert.IsNull (expr.Method);
+
+                       var eq = Expression.Lambda<Func<bool>> (expr).Compile ();
+                       Assert.IsFalse (eq ());
+               }
+
                [Test]
                public void Nullable_LiftToNull_SetToFalse ()
                {
index 24722033eb25a27086792e2d54dd25e92c992e70..6ac2a8a81fcf2bfad28ad74a3e3135afdf5ec2e8 100644 (file)
@@ -79,6 +79,30 @@ namespace MonoTests.System.Linq.Expressions
                        Assert.AreEqual ("(1 != 2)", expr.ToString ());
                }
 
+               [Test]
+               public void PrimitiveNonNumeric ()
+               {
+                       BinaryExpression expr = Expression.NotEqual (Expression.Constant ('a'), Expression.Constant ('b'));
+                       Assert.AreEqual (ExpressionType.NotEqual, expr.NodeType);
+                       Assert.AreEqual (typeof (bool), expr.Type);
+                       Assert.IsNull (expr.Method);
+
+                       var eq = Expression.Lambda<Func<bool>> (expr).Compile ();
+                       Assert.IsTrue (eq ());
+               }
+
+               [Test]
+               public void StringWithNull ()
+               {
+                       BinaryExpression expr = Expression.NotEqual (Expression.Constant ("a"), Expression.Constant (null));
+                       Assert.AreEqual (ExpressionType.NotEqual, expr.NodeType);
+                       Assert.AreEqual (typeof (bool), expr.Type);
+                       Assert.IsNull (expr.Method);
+
+                       var eq = Expression.Lambda<Func<bool>> (expr).Compile ();
+                       Assert.IsTrue (eq ());
+               }
+
                [Test]
                public void Nullable_LiftToNull_SetToFalse ()
                {
index 0a4369fdd4e4d01fb980ac14f247360a54d18f1d..455930f26f82bc136fbfc566879b9fa8f2e7bbc8 100644 (file)
@@ -13,6 +13,8 @@ ReferenceSources/Strings.cs
 
 ../../../external/referencesource/System.Core/Microsoft/Scripting/Ast/DynamicExpression.cs
 ../../../external/referencesource/System.Core/Microsoft/Scripting/Ast/ExpressionVisitor.cs
+../../../external/referencesource/System.Core/Microsoft/Scripting/Ast/IArgumentProvider.cs
+../../../external/referencesource/System.Core/Microsoft/Scripting/Ast/IDynamicExpression.cs
 
 ../../../external/referencesource/System.Core/Microsoft/Scripting/Utils/Action.cs
 ../../../external/referencesource/System.Core/Microsoft/Scripting/Utils/Extension.cs
index e42df4d1fdd093295aa22b1334053a7d013378a7..212c2d3891dbb5d5f8adfe00df45b65da2ed74dc 100644 (file)
@@ -40,7 +40,6 @@
 ../dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionStringBuilder.cs
 ../dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionType.cs
 ../dlr/Runtime/Microsoft.Scripting.Core/Ast/GotoExpression.cs
-../dlr/Runtime/Microsoft.Scripting.Core/Ast/IArgumentProvider.cs
 ../dlr/Runtime/Microsoft.Scripting.Core/Ast/IndexExpression.cs
 ../dlr/Runtime/Microsoft.Scripting.Core/Ast/InvocationExpression.cs
 ../dlr/Runtime/Microsoft.Scripting.Core/Ast/LabelExpression.cs
index 6e08ab06b36f1a35028dbbd4c9b58a8829a367a6..d7d4730292a40a5c0fbd56ec667174a6ed873184 100644 (file)
@@ -40,7 +40,6 @@
 ../dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionStringBuilder.cs
 ../dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionType.cs
 ../dlr/Runtime/Microsoft.Scripting.Core/Ast/GotoExpression.cs
-../dlr/Runtime/Microsoft.Scripting.Core/Ast/IArgumentProvider.cs
 ../dlr/Runtime/Microsoft.Scripting.Core/Ast/IndexExpression.cs
 ../dlr/Runtime/Microsoft.Scripting.Core/Ast/InvocationExpression.cs
 ../dlr/Runtime/Microsoft.Scripting.Core/Ast/LabelExpression.cs
diff --git a/mcs/class/System.Core/monotouch_tv_runtime_System.Core.dll.sources b/mcs/class/System.Core/monotouch_tv_runtime_System.Core.dll.sources
new file mode 100644 (file)
index 0000000..b050f33
--- /dev/null
@@ -0,0 +1 @@
+#include monotouch_System.Core.dll.sources
diff --git a/mcs/class/System.Core/monotouch_watch_runtime_System.Core.dll.sources b/mcs/class/System.Core/monotouch_watch_runtime_System.Core.dll.sources
new file mode 100644 (file)
index 0000000..b050f33
--- /dev/null
@@ -0,0 +1 @@
+#include monotouch_System.Core.dll.sources
diff --git a/mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_4_5.csproj b/mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_4_5.csproj
deleted file mode 100644 (file)
index 2f31775..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9D2DBCBA-6C1E-405B-BCBA-20406EA9501F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Data.DataSetExtensions</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.DataSetExtensions\System\Data\DataRowComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.DataSetExtensions\System\Data\DataRowExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.DataSetExtensions\System\Data\DataSetUtil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.DataSetExtensions\System\Data\DataTableExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.DataSetExtensions\System\Data\EnumerableRowCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.DataSetExtensions\System\Data\EnumerableRowCollectionExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.DataSetExtensions\System\Data\LinqDataView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.DataSetExtensions\System\Data\OrderedEnumerableRowCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.DataSetExtensions\System\Data\SortExpressionBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.DataSetExtensions\System\Data\TypedTableBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.DataSetExtensions\System\Data\TypedTableBaseExtensions.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="ReferenceSources\Strings.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-tests-net_4_5.csproj b/mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 53fc2d1..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{11D5C200-2AF3-49AD-8F72-2E239EB9D5D7}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,219,169</NoWarn>\r
-    <OutputPath>bin\Debug\System.Data.DataSetExtensions-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Data.DataSetExtensions_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,219,169</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,219,169</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Data\DataRowComparerTest.cs" />\r
-    <Compile Include="Test\System.Data\DataRowExtensionsTest.cs" />\r
-    <Compile Include="Test\System.Data\DataTableExtensionsTest.cs" />\r
-    <Compile Include="Test\System.Data\EnumerableRowCollectionTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_5.csproj">\r
-      <Project>{9D2DBCBA-6C1E-405B-BCBA-20406EA9501F}</Project>\r
-      <Name>System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{85F119B8-8463-4D6F-9852-DAB8C4070BD5}</Project>\r
-      <Name>System.Web\System.Web-net_4_5-1</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Data.Entity/System.Data.Entity-net_4_5.csproj b/mcs/class/System.Data.Entity/System.Data.Entity-net_4_5.csproj
deleted file mode 100644 (file)
index a441309..0000000
+++ /dev/null
@@ -1,840 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E902CD82-23AC-456B-9F4B-51CC193275F8}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Data.Entity</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\misc\HResults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\AbstractExpressions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\Aggregates.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\BasicCommandTreeVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\BasicExpressionVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DbCommandTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DbDeleteCommandTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DbExpressionVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DbExpressionVisitor_TResultType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DbFunctionCommandTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DbInsertCommandTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DbLambda.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DbModificationClause.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DbModificationCommandTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DbQueryCommandTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DbSetClause.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DbUpdateCommandTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\DefaultExpressionVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\ExpressionBindings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\ExpressionBuilder\DbExpressionBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\ExpressionBuilder\EdmFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\ExpressionBuilder\Internal\ArgumentValidation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\ExpressionBuilder\Internal\EnumerableValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\ExpressionBuilder\Row.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\ExpressionBuilder\Spatial\SpatialEdmFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\Internal\DbExpressionRules.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\Internal\ExpressionCopier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\Internal\ExpressionDumper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\Internal\ExpressionKeyGen.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\Internal\ExpressionList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\Internal\ExpressionPrinter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\Internal\ParameterRetriever.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\Internal\PatternMatchRules.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\Internal\Validator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\Internal\ViewSimplifier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\Internal\XmlExpressionDumper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\OperatorExpressions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\RelationalExpressions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\CommandTrees\ValueExpressions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\DataRecord.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\DataRecordInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\DbCommandDefinition.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\DbProviderManifest.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\DbProviderServices.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\DbXmlEnabledProviderManifest.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntityRecordInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\AliasedExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\AstNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\BuiltInExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\CaseExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\Command.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\ConstructorExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\CreateRefExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\DotExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\FunctionDefinition.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\GroupAggregateExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\GroupPartitionExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\Identifier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\Literal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\MethodExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\NamespaceImport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\NavigationExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\ParenExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\QueryExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\QueryParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\QueryStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\RefExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\AST\TypeDefinition.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\CqlErrorHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\CqlLexer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\CqlLexerHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\CqlParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\CqlParserHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\CqlQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\EntitySqlParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\FunctionOverloadResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\ParseResult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\ParserOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\SemanticAnalyzer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\SemanticResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\StaticContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntitySql\TypeResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\EntityUtil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\FieldMetadata.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\FieldNameLookup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\DbTypeMap.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\Materialization\ColumnMapKeyBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\Materialization\CompensatingCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\Materialization\Coordinator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\Materialization\CoordinatorFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\Materialization\CoordinatorScratchpad.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\Materialization\RecordState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\Materialization\RecordStateFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\Materialization\RecordStateScratchpad.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\Materialization\Shaper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\Materialization\ShaperFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\Materialization\Translator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\Materialization\Util.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Internal\MultipartIdentifier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\QueryCache\CompiledQueryCacheEntry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\QueryCache\CompiledQueryCacheKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\QueryCache\EntityClientCacheKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\QueryCache\EntitySqlQueryCacheKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\QueryCache\LinqQueryCacheKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\QueryCache\QueryCacheEntry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\QueryCache\QueryCacheKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\QueryCache\QueryCacheManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\QueryCache\ShaperFactoryQueryCacheKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\AliasGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\BoolExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\Clause.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\ConversionContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\DomainConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\IdentifierService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\KnowledgeBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\Literal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\NegationPusher.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\Sentence.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\Simplifier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\Solver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\Vertex.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Boolean\Visitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\ByValueEqualityComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\CommandHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\DisposableCollectionWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Helpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\InternalBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\KeyToListMap.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Memoizer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\MetadataHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\ModifiableIteratorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Pair.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Set.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\Singleton.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\StringUtil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\ThreadSafeList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\TrailingSpaceComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Common\Utils\TreePrinter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\DbConnectionOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\DbParameterCollectionHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\DbParameterHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\EntityAdapter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\EntityCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\EntityCommandDefinition.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\EntityConnection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\EntityConnectionStringBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\EntityDataReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\EntityParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\EntityParameterCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\EntityProviderFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\EntityProviderServices.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\EntityTransaction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityClient\NameValuePair.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityCommandCompilationException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityCommandExecutionException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\Action.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\BooleanFacetDescriptionElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ByteFacetDescriptionElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\CollectionKind.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\CollectionTypeElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ConcurrencyMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\Documentation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\EntityContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\EntityContainerAssociationSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\EntityContainerAssociationSetEnd.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\EntityContainerEntitySet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\EntityContainerEntitySetDefiningQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\EntityContainerRelationshipSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\EntityContainerRelationshipSetEnd.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\EntityKeyElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ErrorCode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\FacetDescriptionElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\FacetEnabledSchemaElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\FilteredSchemaElementLookUpTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\Function.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\FunctionCommandText.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\FunctionImportElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\IntegerFacetDescriptionElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\IRelationship.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\IRelationshipEnd.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ISchemaElementLookUpTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ItemType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\KeyProperty.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ModelFunction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ModelFunctionTypeElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\NavigationProperty.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\OnOperation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\Operation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\Parameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\PrimitiveSchema.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\Property.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ReferenceSchema.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ReferenceTypeElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ReferentialConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ReferentialConstraintRoleElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\Relationship.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\RelationshipEnd.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\RelationshipEndCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ReturnType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ReturnValue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\RowTypeElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\RowTypePropertyElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ScalarType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\Schema.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\SchemaComplexType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\SchemaDataModelOption.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\SchemaElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\SchemaElementLookUpTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\SchemaElementLookUpTableEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\SchemaEnumMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\SchemaEnumType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\SchemaLookupTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\SchemaManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\SchemaType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\SridFacetDescriptionElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\StoreGeneratedPattern.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\StructuredProperty.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\StructuredType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\TextElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\TypeElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\TypeModifier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\TypeRefElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\TypeUsageBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\Utils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\ValidationHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityModel\SchemaObjectModel\XmlSchemaResource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntitySqlException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\EntityState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\IEntityAdapter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\IEntityStateEntry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\IEntityStateManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\IExtendedDataRecord.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\InternalMappingException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\InvalidCommandTreeException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\BaseMetadataMappingVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\DefaultObjectMappingItemCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\EntityViewContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\EntityViewGenerationAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\FunctionImportMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\FunctionImportMapping.ReturnTypeRenameMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\FunctionImportMappingComposable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\FunctionImportMappingNonComposable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Mapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\MappingItemCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\MetadataMappingHasherVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\MetadataMappingHasherVisitor.HashSourceBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ObjectAssociationEndMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ObjectComplexPropertyMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ObjectMemberMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ObjectMslConstructs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ObjectNavigationPropertyMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ObjectPropertyMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ObjectTypeMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageAssociationSetMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageAssociationTypeMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageComplexPropertyMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageComplexTypeMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageConditionPropertyMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageEndPropertyMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageEntityContainerMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageEntitySetMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageEntityTypeMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageMappingErrorCode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageMappingFragment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageMappingItemCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageMappingItemCollection.ViewDictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageMappingItemLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageModificationFunctionMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageMslConstructs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StoragePropertyMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageScalarPropertyMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageSetMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\StorageTypeMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\AssociationSetMetadata.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\ChangeNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\CompositeKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\DynamicUpdateCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\ExtractedStateEntry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\ExtractorMetadata.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\FunctionMappingTranslator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\FunctionUpdateCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\Graph.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\KeyManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\Propagator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\Propagator.Evaluator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\Propagator.ExtentPlaceholderCreator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\Propagator.JoinPropagator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\Propagator.JoinPropagator.JoinPredicateVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\Propagator.JoinPropagator.SubstitutingCloneVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\PropagatorFlags.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\PropagatorResult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\RecordConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\RelationshipConstraintValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\SourceInterpreter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\TableChangeProcessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\UndirectedGraph.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\UpdateCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\UpdateCommandOrderer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\UpdateCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\UpdateExpressionVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\UpdateTranslator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\Update\Internal\ViewLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\BasicViewGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CellCreator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CellPartitioner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CellTreeSimplifier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\ConfigViewGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CqlGeneration\AliasedSlot.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CqlGeneration\BooleanProjectedSlot.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CqlGeneration\CaseCqlBlock.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CqlGeneration\CqlBlock.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CqlGeneration\CqlIdentifiers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CqlGeneration\CqlWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CqlGeneration\ExtentCqlBlock.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CqlGeneration\JoinCqlBlock.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CqlGeneration\SlotInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CqlGeneration\UnionCqlBlock.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\CqlGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\DiscriminatorMap.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\GeneratedView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\QueryRewriting\FragmentQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\QueryRewriting\FragmentQueryKB.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\QueryRewriting\FragmentQueryProcessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\QueryRewriting\QueryRewriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\QueryRewriting\RewritingPass.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\QueryRewriting\RewritingProcessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\QueryRewriting\RewritingSimplifier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\QueryRewriting\RewritingValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\QueryRewriting\RoleBoolean.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\QueryRewriting\Tile.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\BoolExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\BoolExpressionVisitors.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\BoolLiteral.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\CaseStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\CaseStatementProjectedSlot.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\Cell.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\CellIdBoolean.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\CellLabel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\CellQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\CellTreeNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\CellTreeNodeVisitors.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\CellTreeOpType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\Constant.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\ConstantProjectedSlot.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\Domain.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\ErrorLog.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\LeafCellTreeNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\LeftCellWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\MemberDomainMap.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\MemberMaps.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\MemberPath.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\MemberProjectedSlot.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\MemberProjectionIndex.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\MemberRestriction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\NegatedConstant.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\OpCellTreeNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\ProjectedSlot.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\QualifiedCellIdBoolean.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\ScalarConstant.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\ScalarRestriction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\TypeConstant.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\TypeRestriction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Structures\WithStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Utils\ExceptionHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Utils\ExternalCalls.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Utils\ViewGenErrorCode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validation\BasicCellRelation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validation\BasicKeyConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validation\CellRelation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validation\ConstraintBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validation\ErrorPatternMatcher.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validation\ExtentKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validation\ForeignConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validation\KeyConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validation\SchemaConstraints.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validation\ViewCellRelation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validation\ViewCellSlot.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validation\ViewKeyConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\Validator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\ViewgenContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\ViewGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\ViewgenGatekeeper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewGeneration\ViewGenResults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Mapping\ViewValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\MappingException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\AspProxy.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\CacheForPrimitiveTypes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ClrPerspective.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\CustomAssemblyResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\DataSpace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\DefaultAssemblyResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\AssociationEndMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\AssociationSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\AssociationSetEnd.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\AssociationType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\AttributeKind.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\BuiltInKind.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\CollectionType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\ComplexType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\Documentation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EdmConstants.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EdmFunction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EdmMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EdmProperty.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EdmType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EntityContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EntitySet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EntitySetBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EntitySetBaseCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EntityType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EntityTypeBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EnumMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\EnumType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\Facet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\FacetDescription.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\FacetValueContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\FacetValues.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\FilteredReadOnlyMetadataCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\FunctionParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\GlobalItem.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\ItemCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\LightweightCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\MemberCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\MetadataCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\MetadataItem.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\MetadataItem_Static.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\MetadataProperty.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\MetadataPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\MetadataPropertyCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\MetadataPropertyvalue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\NavigationProperty.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\NavigationPropertyAccessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\OperationAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\ParameterMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\PrimitiveType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\PrimitiveTypeKind.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\Provider\ClrProviderManifest.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\Provider\EdmProviderManifest.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\Provider\EdmProviderManifestFunctionBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\Provider\EdmProviderManifestSpatialFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\ReadOnlyMetadataCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\ReferentialConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\RefType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\RelationshipEndMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\RelationshipMultiplicity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\RelationshipSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\RelationshipType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\RowType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\SafeLink.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\SafeLinkCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\SimpleType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\StructuralType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\TypeUsage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Edm\util.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\EdmError.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\EdmItemCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\EdmItemCollection.OcAssemblyCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\EdmItemError.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\EdmSchemaError.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\EdmSchemaErrorSeverity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\EdmValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Helper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\MappingMetadataHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\MetadataArtifactAssemblyResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\MetadataArtifactLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\MetadataArtifactLoaderComposite.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\MetadataArtifactLoaderCompositeFile.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\MetadataArtifactLoaderCompositeResource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\MetadataArtifactLoaderFile.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\MetadataArtifactLoaderResource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\MetadataArtifactLoaderXmlReaderWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\MetadataCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\MetadataWorkspace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ModelPerspective.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectItemCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\AssemblyCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\AssemblyCacheEntry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\ImmutableAssemblyCacheEntry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\KnownAssembliesSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\KnownAssemblyEntry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\LoadMessageLogger.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\LockedAssemblyCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\MetadataAssemblyHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\MutableAssemblyCacheEntry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\ObjectItemAssemblyLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\ObjectItemAttributeAssemblyLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\ObjectItemCachedAssemblyLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\ObjectItemConventionAssemblyLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\ObjectItemLoadingSessionData.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ObjectLayer\ObjectItemNoOpAssemblyLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\ParameterTypeSemantics.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\Perspective.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\StoreItemCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\StoreItemCollection.Loader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\TargetPerspective.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\TypeHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\TypeSemantics.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Metadata\XmlConstants.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\MetadataException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\ObjectNotFoundException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\AdditionalEntityFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\CompiledQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\ComplexObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EdmComplexPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EdmComplexTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EdmEntityTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EdmEnumTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EdmFunctionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EdmPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EdmRelationshipNavigationPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EdmRelationshipRoleAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EdmScalarPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EdmSchemaAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EdmTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EntityCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EntityObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EntityReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\EntityReference_TResultType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\IEntityChangeTracker.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\IEntityWithChangeTracker.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\IEntityWithKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\IEntityWithRelationships.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\IRelatedEnd.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\IRelationshipFixer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\RelatedEnd.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\RelationshipFixer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\RelationshipKind.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\RelationshipManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\RelationshipNavigation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataClasses\StructuralObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\DataRecordObjectView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\BindingContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\CompiledELinqQueryState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\ELinqQueryState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\EntityExpressionVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\ExpressionConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\ExpressionVisitorHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\Funcletizer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\InitializerFacet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\LinqExpressionNormalizer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\MethodCallTranslator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\ObjectQueryProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\OrderByLifter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\ReflectionUtil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\SpatialMethodCallTranslator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\SpatialPropertyTranslator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\Translator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ELinq\TypeSystem.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\EntityEntry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\EntityFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\FieldDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\BaseEntityWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\ComplexTypeMaterializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\EntityProxyFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\EntityProxyTypeInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\EntitySqlQueryBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\EntitySqlQueryState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\EntityWithChangeTrackerStrategy.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\EntityWithKeyStrategy.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\EntityWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\EntityWrapperFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\ForeignKeyFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\IChangeTrackingStrategy.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\IEntityKeyStrategy.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\IEntityWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\IPropertyAccessorStrategy.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\LazyLoadBehavior.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\LightweightEntityWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\NullEntityWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\ObjectFullSpanRewriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\ObjectQueryExecutionPlan.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\ObjectQueryState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\ObjectSpanRewriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\PocoEntityKeyStrategy.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\PocoPropertyAccessorStrategy.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\SnapshotChangeTrackingStrategy.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Internal\TransactionManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\IObjectSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\IObjectView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\IObjectViewData.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\MergeOption.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\NextResultGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectMaterializedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectParameterCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectQuery_EntitySqlExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectQuery_TResultType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectResult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectResult_TResultType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectStateEntry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectStateEntryBaseUpdatableDataRecord.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectStateEntryDbDataRecord.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectStateEntryDbUpdatableDataRecord.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectStateEntryOriginalDbUpdatableDataRecord.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectStateManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectStateManagerMetadata.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectViewEntityCollectionData.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectViewFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectViewListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ObjectViewQueryResultData.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\ProxyDataContractResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\RefreshMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\RelationshipEntry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\RelationshipWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\SaveOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\Span.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\SpanIndex.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\SqlClient\SqlFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Objects\SqlClient\SqlSpatialFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\OptimisticConcurrencyException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\PropertyConstraintException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\ProviderIncompatibleException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\AncillaryOps.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\BasicValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\ColumnMap.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\ColumnMapCopier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\ColumnMapFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\ColumnMapVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\Command.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\Dump.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\ExplicitDiscriminatorMap.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\Metadata.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\NodeCounter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\NodeInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\Nodes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\OpCopier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\Ops.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\PhysicalOps.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\RelOps.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\RelPropertyHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\Rule.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\RulePatternOps.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\RuleProcessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\ScalarOps.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\Vars.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\InternalTrees\Visitors.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\AggregatePushdown.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\CodeGen.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\ColumnMapProcessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\ColumnMapTranslator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\CommandPlan.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\ConstraintManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\CTreeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\ITreeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\JoinElimination.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\JoinGraph.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\KeyPullup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\NestPullup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\NominalTypeEliminator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\Normalizer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\PlanCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\PlanCompilerUtil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\Predicate.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\PreProcessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\ProjectionPruner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\PropertyPushdownHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\PropertyRef.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\ProviderCommandInfoUtils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\StructuredTypeInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\SubqueryTrackingVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\TransformationRules.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\TypeInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\TypeUtils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\Validator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\VarInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\VarRefManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\PlanCompiler\VarRemapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\ResultAssembly\BridgeDataReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Query\ResultAssembly\BridgeDataRecord.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Spatial\DbGeography.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Spatial\DbGeographyWellKnownValue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Spatial\DbGeometry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Spatial\DbGeometryWellKnownValue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Spatial\DbSpatialDataReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Spatial\DbSpatialServices.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Spatial\DefaultSpatialServices.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Spatial\ExtensionMethods.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Spatial\Internal\SpatialExceptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\Spatial\SpatialHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\IDbSpatialValue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\DmlSqlGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\ISqlFragment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\JoinSymbol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\OptionalColumn.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\Sql8ConformanceChecker.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\Sql8ExpressionRewriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\SqlBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\SqlFunctionCallHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\SqlGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\SqlSelectClauseBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\SqlSelectStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\SqlWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\Symbol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\SymbolPair.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\SymbolTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\SymbolUsageManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlGen\TopClause.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlProviderManifest.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlProviderServices.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlProviderUtilities.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlSpatialDataReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlSpatialServices.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlSpatialServices.Generated.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlTypesAssembly.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\SqlClient\SqlVersion.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\System\Data\UpdateException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.Entity\Util\AppSettings.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\SR.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="EntityRes.cs" />\r
-    <Compile Include="EntityResCategoryAttribute.cs" />\r
-    <Compile Include="EntityResDescriptionAttribute.cs" />\r
-    <Compile Include="Error.cs" />\r
-    <Compile Include="Strings.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
-      <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Data.Linq/System.Data.Linq-net_4_5.csproj b/mcs/class/System.Data.Linq/System.Data.Linq-net_4_5.csproj
deleted file mode 100644 (file)
index 8318ea1..0000000
+++ /dev/null
@@ -1,429 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Data.Linq</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MONO_STRICT;MONO_DEPLOY</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MONO_STRICT;MONO_DEPLOY</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="src\DbLinq.Firebird\FirebirdDataContext.cs" />\r
-    <Compile Include="src\DbLinq.Firebird\FirebirdExpressionTranslator.cs" />\r
-    <Compile Include="src\DbLinq.Firebird\FirebirdSchemaLoader.Columns.cs" />\r
-    <Compile Include="src\DbLinq.Firebird\FirebirdSchemaLoader.Constraints.cs" />\r
-    <Compile Include="src\DbLinq.Firebird\FirebirdSchemaLoader.cs" />\r
-    <Compile Include="src\DbLinq.Firebird\FirebirdSchemaLoader.StoredProcedures.cs" />\r
-    <Compile Include="src\DbLinq.Firebird\FirebirdSchemaLoader.Tables.cs" />\r
-    <Compile Include="src\DbLinq.Firebird\FirebirdSqlProvider.cs" />\r
-    <Compile Include="src\DbLinq.Firebird\FirebirdVendor.cs" />\r
-    <Compile Include="src\DbLinq.Ingres\IngresDataContext.cs" />\r
-    <Compile Include="src\DbLinq.Ingres\IngresSchemaLoader.Columns.cs" />\r
-    <Compile Include="src\DbLinq.Ingres\IngresSchemaLoader.Constraints.cs" />\r
-    <Compile Include="src\DbLinq.Ingres\IngresSchemaLoader.cs" />\r
-    <Compile Include="src\DbLinq.Ingres\IngresSchemaLoader.StoredProcedures.cs" />\r
-    <Compile Include="src\DbLinq.Ingres\IngresSchemaLoader.Tables.cs" />\r
-    <Compile Include="src\DbLinq.Ingres\IngresSqlProvider.cs" />\r
-    <Compile Include="src\DbLinq.Ingres\IngresVendor.cs" />\r
-    <Compile Include="src\DbLinq.MySql\MySqlDataContext.cs" />\r
-    <Compile Include="src\DbLinq.MySql\MySqlSchemaLoader.Columns.cs" />\r
-    <Compile Include="src\DbLinq.MySql\MySqlSchemaLoader.Constraints.cs" />\r
-    <Compile Include="src\DbLinq.MySql\MySqlSchemaLoader.cs" />\r
-    <Compile Include="src\DbLinq.MySql\MySqlSchemaLoader.StoredProcedures.cs" />\r
-    <Compile Include="src\DbLinq.MySql\MySqlSchemaLoader.Tables.cs" />\r
-    <Compile Include="src\DbLinq.MySql\MySqlSqlProvider.cs" />\r
-    <Compile Include="src\DbLinq.MySql\MySqlVendor.cs" />\r
-    <Compile Include="src\DbLinq.Oracle\OracleDataContext.cs" />\r
-    <Compile Include="src\DbLinq.Oracle\OracleSchemaLoader.Columns.cs" />\r
-    <Compile Include="src\DbLinq.Oracle\OracleSchemaLoader.Constraints.cs" />\r
-    <Compile Include="src\DbLinq.Oracle\OracleSchemaLoader.cs" />\r
-    <Compile Include="src\DbLinq.Oracle\OracleSchemaLoader.StoredProcedures.cs" />\r
-    <Compile Include="src\DbLinq.Oracle\OracleSchemaLoader.Tables.cs" />\r
-    <Compile Include="src\DbLinq.Oracle\OracleSqlProvider.cs" />\r
-    <Compile Include="src\DbLinq.Oracle\OracleVendor.cs" />\r
-    <Compile Include="src\DbLinq.PostgreSql\PgsqlDataContext.cs" />\r
-    <Compile Include="src\DbLinq.PostgreSql\PgsqlSchemaLoader.Columns.cs" />\r
-    <Compile Include="src\DbLinq.PostgreSql\PgsqlSchemaLoader.Constraints.cs" />\r
-    <Compile Include="src\DbLinq.PostgreSql\PgsqlSchemaLoader.cs" />\r
-    <Compile Include="src\DbLinq.PostgreSql\PgsqlSchemaLoader.StoredProcedures.cs" />\r
-    <Compile Include="src\DbLinq.PostgreSql\PgsqlSchemaLoader.Tables.cs" />\r
-    <Compile Include="src\DbLinq.PostgreSql\PgsqlSqlProvider.cs" />\r
-    <Compile Include="src\DbLinq.PostgreSql\PgsqlVendor.cs" />\r
-    <Compile Include="src\DbLinq.Sqlite\Schema\DataCommand.cs" />\r
-    <Compile Include="src\DbLinq.Sqlite\SqliteDataContext.cs" />\r
-    <Compile Include="src\DbLinq.Sqlite\SqliteSchemaLoader.Columns.cs" />\r
-    <Compile Include="src\DbLinq.Sqlite\SqliteSchemaLoader.Constraints.cs" />\r
-    <Compile Include="src\DbLinq.Sqlite\SqliteSchemaLoader.cs" />\r
-    <Compile Include="src\DbLinq.Sqlite\SqliteSchemaLoader.Tables.cs" />\r
-    <Compile Include="src\DbLinq.Sqlite\SqliteSqlProvider.cs" />\r
-    <Compile Include="src\DbLinq.Sqlite\SqliteVendor.cs" />\r
-    <Compile Include="src\DbLinq.SqlServer\SqlServerDataContext.cs" />\r
-    <Compile Include="src\DbLinq.SqlServer\SqlServerExpressionTranslator.cs" />\r
-    <Compile Include="src\DbLinq.SqlServer\SqlServerSchemaLoader.cs" />\r
-    <Compile Include="src\DbLinq.SqlServer\SqlServerSqlProvider.cs" />\r
-    <Compile Include="src\DbLinq.SqlServer\SqlServerTypeConversions.cs" />\r
-    <Compile Include="src\DbLinq.SqlServer\SqlServerVendor.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\ChangeAction.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\ChangeSet.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Database\IDatabaseContext.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Database\IDatabaseTransaction.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Database\Implementation\DatabaseConnection.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Database\Implementation\DatabaseContext.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Database\Implementation\DatabaseTransaction.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Database\Implementation\TransactionalCommand.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Database\ITransactionalCommand.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\DataContext.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\DataLoadOptions.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\DBLinqExtendedAttributte.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\EntityRef.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\EntitySet.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Identity\IdentityKey.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Identity\IIdentityProvider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Identity\IIdentityReader.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Identity\IIdentityReaderFactory.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Identity\Implementation\IdentityProviderReader.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Identity\Implementation\IdentityReader.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Identity\Implementation\IdentityReaderFactory.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\IExecuteResult.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\IMemberModificationHandler.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Implementation\DisabledEntityTracker.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Implementation\EntityState.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Implementation\EntityTrack.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Implementation\EntityTracker.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Implementation\IEntityTracker.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Implementation\MemberModificationHandler.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Implementation\QueryProvider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Implementation\VendorProvider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\ITable.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\IVendorProvider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Mapping\AttributedAbstractMetaDataMember.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Mapping\AttributedAssociationMetaDataMember.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Mapping\AttributedColumnMetaDataMember.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Mapping\AttributedMetaAssociation.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Mapping\AttributedMetaFunction.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Mapping\AttributedMetaModel.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Mapping\AttributedMetaTable.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Mapping\AttributedMetaType.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Mapping\AttributeMappingSource.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Mapping\LambdaMetaAccessor.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Mapping\MappingContext.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Mapping\XmlMappingSource.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\RefreshMode.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sql\SqlLiteralPart.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sql\SqlParameterPart.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sql\SqlPart.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sql\SqlStatement.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sql\SqlStatementBuilder.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\SqlClient\FirebirdProvider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\SqlClient\IngresProvider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\SqlClient\MySqlProvider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\SqlClient\OracleProvider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\SqlClient\PostgreSqlProvider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\SqlClient\Sql2000Provider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\SqlClient\Sql2005Provider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\SqlClient\Sql2008Provider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\SqlClient\SqliteProvider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\SqlClient\SqlServerProvider.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\AbstractQuery.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\BuilderContext.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\DeleteQuery.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\DirectQuery.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Error.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionChain.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\ExpressionMutatorExtensions.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\ExpressionMutatorFactory.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\BinaryExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\ConditionalExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\ConstantExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\IMemberBindingMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\InvocationExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\LambdaExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\ListInitExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\MemberAssignmentMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\MemberBindingMutatorFactory.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\MemberExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\MemberInitExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\MemberListBindingMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\MemberMemberBindingMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\MethodCallExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\NewArrayExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\NewExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\ParameterExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\TypeBinaryExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionMutator\Implementation\UnaryExpressionMutator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionPrecedence.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionQuery.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\ColumnExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\CustomExpressionType.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\EntitySetExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\ExpressionTranslator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\GroupExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\IExecutableExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\IMutableExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\InputParameterExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\MetaTableExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\MutableExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\ObjectInputParameterExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\ObjectOutputParameterExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\OperandsMutableExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\OrderByExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\SelectExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\SelectOperatorType.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\SpecialExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\SpecialExpressionType.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\StartIndexOffsetExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\SubSelectExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\TableExpression.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Expressions\TableJoinType.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ExpressionTier.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\IDataMapper.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\IDataRecordReader.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\IExpressionDispatcher.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\IExpressionLanguageParser.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\IExpressionOptimizer.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\IExpressionQualifier.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\DataMapper.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\DataRecordReader.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\ExpressionDispatcher.Analyzer.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\ExpressionDispatcher.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\ExpressionDispatcher.Registrar.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\ExpressionLanguageParser.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\ExpressionOptimizer.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\ExpressionQualifier.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\LineGrouping.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\PrequelAnalyzer.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\QueryBuilder.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\QueryBuilder.Upsert.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\QueryCache.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\QueryRunner.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\SpecialExpressionTranslator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\Implementation\SqlBuilder.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\IPrequelAnalyzer.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\IQueryBuilder.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\IQueryCache.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\IQueryRunner.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ISpecialExpressionTranslator.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ISqlBuilder.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\ParameterizedQuery.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\QueryContext.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\SelectQuery.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Sugar\UpsertQuery.cs" />\r
-    <Compile Include="src\DbLinq\Data\Linq\Table.cs" />\r
-    <Compile Include="src\DbLinq\DbLinqToDoAttribute.cs" />\r
-    <Compile Include="src\DbLinq\Factory\DbLinqAttribute.cs" />\r
-    <Compile Include="src\DbLinq\Factory\Implementation\ReflectionObjectFactory.cs" />\r
-    <Compile Include="src\DbLinq\Factory\IObjectFactory.cs" />\r
-    <Compile Include="src\DbLinq\Factory\ObjectFactory.cs" />\r
-    <Compile Include="src\DbLinq\Language\ILanguages.cs" />\r
-    <Compile Include="src\DbLinq\Language\ILanguageWords.cs" />\r
-    <Compile Include="src\DbLinq\Language\Implementation\AbstractEndPluralWords.cs" />\r
-    <Compile Include="src\DbLinq\Language\Implementation\AbstractWords.cs" />\r
-    <Compile Include="src\DbLinq\Language\Implementation\Languages.cs" />\r
-    <Compile Include="src\DbLinq\Language\Implementation\NoLanguageWords.cs" />\r
-    <Compile Include="src\DbLinq\Schema\AssociationName.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Case.cs" />\r
-    <Compile Include="src\DbLinq\Schema\ColumnName.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Dbml\Adapter\ArrayAdapter.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Dbml\Adapter\CsvArrayAdapter.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Dbml\Adapter\EnumType.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Dbml\Adapter\INamedType.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Dbml\Adapter\ISimpleList.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Dbml\Adapter\SpecifiedPropertyUpdater.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Dbml\DatabaseSerializer.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Dbml\DbmlSchema.Adapter.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Dbml\DbmlSchema.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Dbml\DbmlSerializer.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Implementation\NameFormatter.cs" />\r
-    <Compile Include="src\DbLinq\Schema\INameFormatter.cs" />\r
-    <Compile Include="src\DbLinq\Schema\Name.cs" />\r
-    <Compile Include="src\DbLinq\Schema\NameFormat.cs" />\r
-    <Compile Include="src\DbLinq\Schema\ParameterName.cs" />\r
-    <Compile Include="src\DbLinq\Schema\ProcedureName.cs" />\r
-    <Compile Include="src\DbLinq\Schema\SchemaName.cs" />\r
-    <Compile Include="src\DbLinq\Schema\TableName.cs" />\r
-    <Compile Include="src\DbLinq\Schema\WordsExtraction.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\Binary.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\ChangeConflictCollection.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\ChangeConflictException.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\CompiledQuery.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\ConflictMode.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\DBConvert.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\DuplicateKeyException.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\ForeignKeyReferenceAlreadyHasValueException.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\IFunctionResult.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\IMultipleResults.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\ISingleResult.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\Link.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\MemberChangeConflict.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\ModifiedMemberInfo.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\ObjectChangeConflict.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\AssociationAttribute.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\AutoSync.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\ColumnAttribute.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\DataAttribute.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\DatabaseAttribute.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\FunctionAttribute.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\InheritanceMappingAttribute.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\MappingSource.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\MetaAccessor.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\MetaAccessor_2.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\MetaAssociation.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\MetaDataMember.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\MetaFunction.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\MetaModel.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\MetaParameter.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\MetaTable.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\MetaType.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\ParameterAttribute.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\ProviderAttribute.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\ResultTypeAttribute.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\TableAttribute.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.Mapping\UpdateCheck.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.SqlClient.Implementation\ObjectMaterializer.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.SqlClient\SqlHelpers.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.SqlClient\SqlMethods.cs" />\r
-    <Compile Include="src\DbLinq\System.Data.Linq\System.Data.Linq.SqlClient\SqlProvider.cs" />\r
-    <Compile Include="src\DbLinq\Util\DataCommand.cs" />\r
-    <Compile Include="src\DbLinq\Util\DbmlExtensions.cs" />\r
-    <Compile Include="src\DbLinq\Util\ExpressionChainEqualityComparer.cs" />\r
-    <Compile Include="src\DbLinq\Util\ExpressionEqualityComparer.cs" />\r
-    <Compile Include="src\DbLinq\Util\IDataRecordExtensions.cs" />\r
-    <Compile Include="src\DbLinq\Util\IDataTypeExtensions.cs" />\r
-    <Compile Include="src\DbLinq\Util\IDbDataParameterExtensions.cs" />\r
-    <Compile Include="src\DbLinq\Util\IThreadSafeDictionary.cs" />\r
-    <Compile Include="src\DbLinq\Util\LambdaComparer.cs" />\r
-    <Compile Include="src\DbLinq\Util\MemberInfoExtensions.cs" />\r
-    <Compile Include="src\DbLinq\Util\Output.cs" />\r
-    <Compile Include="src\DbLinq\Util\OutputLevel.cs" />\r
-    <Compile Include="src\DbLinq\Util\Page.cs" />\r
-    <Compile Include="src\DbLinq\Util\Profiler.cs" />\r
-    <Compile Include="src\DbLinq\Util\QuotesHelper.cs" />\r
-    <Compile Include="src\DbLinq\Util\ReferenceEqualityComparer.cs" />\r
-    <Compile Include="src\DbLinq\Util\ReflectionExtensions.cs" />\r
-    <Compile Include="src\DbLinq\Util\ReflectionUtility.cs" />\r
-    <Compile Include="src\DbLinq\Util\StringExtensions.cs" />\r
-    <Compile Include="src\DbLinq\Util\TextWriterExtension.cs" />\r
-    <Compile Include="src\DbLinq\Util\ThreadSafeDictionary.cs" />\r
-    <Compile Include="src\DbLinq\Util\TypeConvert.cs" />\r
-    <Compile Include="src\DbLinq\Util\TypeExtensions.cs" />\r
-    <Compile Include="src\DbLinq\Util\TypeLoader.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\DbSchemaLoader.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\IDataName.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\IDataTableColumn.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\IDataType.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\Implementation\SchemaLoader.Columns.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\Implementation\SchemaLoader.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\Implementation\SchemaLoader.DataName.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\Implementation\SchemaLoader.DataTableColumn.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\Implementation\SchemaLoader.ForeignKey.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\Implementation\SchemaLoader.Name.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\Implementation\SchemaLoader.StoredProcedures.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\Implementation\SchemaLoader.Tables.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\Implementation\SchemaLoader.TypeMapping.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\Implementation\SqlProvider.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\Implementation\Vendor.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\Implementation\Vendor.ProcedureResult.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\INameAliases.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\ISchemaLoader.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\ISqlProvider.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\IVendor.cs" />\r
-    <Compile Include="src\DbLinq\Vendor\VendorAttribute.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="./src/DbLinq/Schema/Dbml/DbmlSchema.xsd">\r
-      <LogicalName>DbLinq.Schema.Dbml.DbmlSchema.xsd</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Data.Linq/System.Data.Linq-tests-net_4_5.csproj b/mcs/class/System.Data.Linq/System.Data.Linq-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 369d86a..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6A75FB46-8799-403B-A06C-EFF389CB297D}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Data.Linq-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Data.Linq_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;MONO_STRICT;MONO_DEPLOY</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;MONO_STRICT;MONO_DEPLOY</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="src\DbLinq.SqlServer\Test\MsSqlDataContextTest.cs" />\r
-    <Compile Include="src\DbLinq\Test\BinaryTest.cs" />\r
-    <Compile Include="src\DbLinq\Test\DataContextTest.cs" />\r
-    <Compile Include="src\DbLinq\Test\EntitySetTest.cs" />\r
-    <Compile Include="src\DbLinq\Test\NullProvider.cs" />\r
-    <Compile Include="src\DbLinq\Test\PeopleTable.cs" />\r
-    <Compile Include="src\DbLinq\Test\Providers\DataContextTestBase.cs" />\r
-    <Compile Include="src\DbLinq\Test\TableTest.cs" />\r
-    <Compile Include="Test\dummy.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="./src/DbLinq/Schema/Dbml/DbmlSchema.xsd">\r
-      <LogicalName>DbLinq.Schema.Dbml.DbmlSchema.xsd</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_4_5.csproj b/mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_4_5.csproj
deleted file mode 100644 (file)
index e2bbd97..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DB464643-D49E-43CE-B565-FE5446A79FC1}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Data.OracleClient</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciAttributeType.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciBindHandle.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciCalls.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciColumnInfo.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciCredentialType.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciDataType.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciDateTimeDescriptor.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciDefineHandle.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciDescriptorHandle.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciEnvironmentHandle.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciEnvironmentMode.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciErrorHandle.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciErrorInfo.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciExecuteMode.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciHandle.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciHandleType.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciIntervalDescriptor.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciLobLocator.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciLobType.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciNlsServiceType.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciParameterDescriptor.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciPointerType.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciRowIdDescriptor.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciServerHandle.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciServiceHandle.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciSessionHandle.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciSessionMode.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciStatementHandle.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciStatementLanguage.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciStatementMode.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciStatementType.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciTransactionFlags.cs" />\r
-    <Compile Include="System.Data.OracleClient.Oci\OciTransactionHandle.cs" />\r
-    <Compile Include="System.Data.OracleClient\OciGlue.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleBFile.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleBinary.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleBoolean.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleClientFactory.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleCommand.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleCommandBuilder.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleConnection.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleConnectionPool.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleConnectionPoolManager.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleConnectionStringBuilder.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleDataAdapter.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleDataReader.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleDateTime.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleException.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleInfoMessageEventArgs.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleInfoMessageEventHandler.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleLob.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleLobOpenMode.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleMonthSpan.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleNumber.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleParameter.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleParameterCollection.cs" />\r
-    <Compile Include="System.Data.OracleClient\OraclePermission.cs" />\r
-    <Compile Include="System.Data.OracleClient\OraclePermissionAttribute.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleRowUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleRowUpdatedEventHandler.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleRowUpdatingEventArgs.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleRowUpdatingEventHandler.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleString.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleTimeSpan.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleTransaction.cs" />\r
-    <Compile Include="System.Data.OracleClient\OracleType.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Data.OracleClient/System.Data.OracleClient-tests-net_4_5.csproj b/mcs/class/System.Data.OracleClient/System.Data.OracleClient-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 8cf6060..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{55B68673-F6AA-4D45-82BB-ADEAAC6C44F0}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>bin\Debug\System.Data.OracleClient-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Data.OracleClient_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\MonoTests.System.Data.Utils\ADONetTesterClass.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\MonoTests.System.Data.Utils\ConnectedDataProvider.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\MonoTests.System.Data.Utils\DbTypeParameter.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\MonoTests.System.Data.Utils\DbTypeParametersCollection.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\MonoTests.System.Data.Utils\GHTBase.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommand\OracleCommand_CommandText.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommand\OracleCommand_CommandTimeout.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommand\OracleCommand_CommandType.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommand\OracleCommand_Connection.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommand\OracleCommand_Dispose.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommand\OracleCommand_ExecuteNonQuery.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommand\OracleCommand_ExecuteReader.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommand\OracleCommand_ExecuteScalar.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommand\OracleCommand_New.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommand\OracleCommand_Parameters.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommand\OracleCommand_Prepare.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommand\OracleCommand_Transaction.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleCommandBuilder\OracleCommandBuilder_DeriveParameters_O.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\IDBConnection_For_Oracle.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_BeginTransaction.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_ChangeDatabase.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_Close.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_ConnectionString.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_ConnectionTimeout.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_CreateCommand.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_Database.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_DataSource.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_Equals.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_InfoMessage.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_New.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_State.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleConnection\OracleConnection_StateChange.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_AcceptChangesDuringFill.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_ContinueUpdateOnError.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_ctor.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_ctor_O.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_ctor_SO.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_ctor_SS.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_DeleteCommand.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_Dispose.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_Fill_1.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_Fill_2.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_Fill_3.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_Fill_Ds.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_Fill_Ds_Int_Int_Str.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_Fill_DsStr.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_Fill_Dt.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_FillError.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_FillSchema_DS.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_FillSchema_DSS.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_FillSchema_DsSt.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_FillSchema_DtSch.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_GetFillParameters.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_InsertCommand.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_MissingMappingAction.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_MissingSchemaAction.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_RowUpdated.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_RowUpdating.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_SelectCommand.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_TableMappings.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_ToString.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_Update_Dr.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_Update_Ds.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_Update_DsStr.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_Update_Dt.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataAdapter\OracleDataAdapter_UpdateCommand.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_Close.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_ctor.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_Depth.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetBoolean.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetByte_I.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetBytes_IIBII.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetChars.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetDataTypeName.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetDateTime.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetDecimal_I.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetDouble_I.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetFieldType.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetFloat_I.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetGuiid_I.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetInt16.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetInt32_I.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetInt64.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetName_I.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetOrdinal.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetSchemaTable.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetString_I.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetTimeSpan_I.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetValue.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_GetValues.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_HasRows.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_IsDBNull.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_Item.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_NextResult.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_Read.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleDataReader\OracleDataReader_RecordsAffected.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleParameter\OracleParameter_ctor.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleParameter\OracleParameter_ctor_SO.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleParameter\OracleParameter_ctor_SOIPBBBSDO.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleParameter\OracleParameter_ctor_SOtype.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleParameter\OracleParameter_ctor_SOtype_IS.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleParameter\OracleParameter_ctor_SOtypeI.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleParameterCollection\OracleParameterCollection_Add.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleParameterCollection\OracleParameterCollection_Contains.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleParameterCollection\OracleParameterCollection_Count.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleTransaction\OracleTransaction_Begin.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleTransaction\OracleTransaction_Commit.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleTransaction\OracleTransaction_Connection.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleTransaction\OracleTransaction_ctor.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleTransaction\OracleTransaction_IsolationLevel.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleTransaction\OracleTransaction_Rollback.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.jvm\OracleType\OracleType_Date.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient.Oci\OciDefineHandleTest.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient\OracleCommandTest.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient\OracleConnectionTest.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient\OracleDataAdapterTest.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient\OracleLobTest.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient\OracleParameterCollectionTest.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient\OracleParameterTest.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient\OraclePermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Data.OracleClient\OracleTimeSpanTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data.OracleClient\System.Data.OracleClient-net_4_5.csproj">\r
-      <Project>{DB464643-D49E-43CE-B565-FE5446A79FC1}</Project>\r
-      <Name>System.Data.OracleClient\System.Data.OracleClient-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_5.csproj b/mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_5.csproj
deleted file mode 100644 (file)
index 71ed260..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E9B87AE3-9A05-4146-83CC-082BE32D8EB2}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Data.Services.Client</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include=".\Client\Parameterized.System.Data.Services.Client.cs" />\r
-    <Compile Include=".\Client\System.Data.Services.Client.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\DataServiceExpressionVisitor.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\DataServiceQueryProvider.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\Evaluator.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\ExpressionNormalizer.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\ExpressionVisitor.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\ExpressionWriter.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\FilterQueryOptionExpression.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\InputBinder.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\InputReferenceExpression.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\NavigationPropertySingletonExpression.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\OrderByQueryOptionExpression.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\ParameterReplacerVisitor.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\PathBox.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\ProjectionAnalyzer.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\ProjectionQueryOptionExpression.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\ProjectionRewriter.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\QueryComponents.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\QueryOptionExpression.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\ReflectionUtil.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\ResourceBinder.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\ResourceExpression.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\ResourceExpressionType.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\ResourceSetExpression.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\SkipQueryOptionExpression.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\TakeQueryOptionExpression.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\TypeSystem.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\UriHelper.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ALinq\UriWriter.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ArraySet.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\AtomContentProperty.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\AtomDataKind.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\AtomEntry.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\AtomFeed.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\AtomMaterializer.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\AtomMaterializerLog.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\AtomParser.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\BaseAsyncResult.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\BatchStream.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\BatchStreamState.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Binding\BindingEntityInfo.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Binding\BindingGraph.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Binding\BindingObserver.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Binding\BindingUtils.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Binding\DataServiceCollectionOfT.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Binding\DataServiceEntityAttribute.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Binding\DataServiceSaveChangesEventArgs.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Binding\EntityChangedParams.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Binding\EntityCollectionChangedParams.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Binding\LoadCompletedEventArgs.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ChangesetResponse.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ClientConvert.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ClientType.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceClientException.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceContext.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceEntityAttribute.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceKeyAttribute.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceProtocolVersion.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceQuery.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceQueryContinuation.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceQueryException.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceQueryOfT.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceRequest.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceRequestArgs.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceRequestException.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceRequestOfT.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceResponse.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\DataServiceStreamResponse.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Descriptor.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\EntityDescriptor.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\EntityPropertyMappingAttribute.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\EntityStates.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Epm\EpmSyndicationContentSerializer.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Error.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\GetReadStreamResult.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\HasStreamAttribute.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\LinkDescriptor.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\MaterializeFromAtom.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\MediaEntryAttribute.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\MemberAssignmentAnalysis.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\MergeOption.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\MimeTypePropertyAttribute.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\OpenObject.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\OpenObjectAttribute.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\OperationResponse.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ProjectionPath.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ProjectionPathBuilder.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ProjectionPathSegment.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ProjectionPlan.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ProjectionPlanCompiler.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\QueryOperationResponseOfT.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\QueryResponse.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\QueryResult.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ReadingWritingEntityEventArgs.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\ReferenceEqualityComparer.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\SaveChangesOptions.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\SendingRequestEventArgs.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Util.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\WebUtil.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Xml\XmlAtomErrorReader.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\Xml\XmlWrappingReader.cs" />\r
-    <Compile Include=".\Client\System\Data\Services\Client\XmlUtil.cs" />\r
-    <Compile Include=".\Server\System\Data\Services\Epm\EpmContentSerializerBase.cs" />\r
-    <Compile Include=".\Server\System\Data\Services\Epm\EpmCustomContentSerializer.cs" />\r
-    <Compile Include=".\Server\System\Data\Services\Epm\EpmCustomContentWriterNodeData.cs" />\r
-    <Compile Include=".\Server\System\Data\Services\Epm\EpmSourcePathSegment.cs" />\r
-    <Compile Include=".\Server\System\Data\Services\Epm\EpmSourceTree.cs" />\r
-    <Compile Include=".\Server\System\Data\Services\Epm\EpmTargetPathSegment.cs" />\r
-    <Compile Include=".\Server\System\Data\Services\Epm\EpmTargetTree.cs" />\r
-    <Compile Include=".\Server\System\Data\Services\HttpProcessUtility.cs" />\r
-    <Compile Include=".\Server\System\Data\Services\Parsing\WebConvert.cs" />\r
-    <Compile Include=".\Server\System\Data\Services\Providers\EntityPropertyMappingInfo.cs" />\r
-    <Compile Include=".\Server\System\Data\Services\XmlConstants.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../WindowsBase/WindowsBase-net_4_5.csproj">\r
-      <Project>{8E6ED7D5-3B08-4A83-905E-8FB4CF0C160D}</Project>\r
-      <Name>WindowsBase-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Client/System.Data.Services.Client.resources">\r
-      <LogicalName>System.Data.Services.Client.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Data.Services/System.Data.Services-net_4_5.csproj b/mcs/class/System.Data.Services/System.Data.Services-net_4_5.csproj
deleted file mode 100644 (file)
index 9801ed8..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F3B101A1-2CC5-416E-9C64-AABAB5D4A625}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Data.Services</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include=".\System.Data.Services\ChangeInterceptorAttribute.cs" />\r
-    <Compile Include=".\System.Data.Services\DataService.cs" />\r
-    <Compile Include=".\System.Data.Services\DataServiceException.cs" />\r
-    <Compile Include=".\System.Data.Services\DataServiceHost.cs" />\r
-    <Compile Include=".\System.Data.Services\DataServiceHostFactory.cs" />\r
-    <Compile Include=".\System.Data.Services\EntitySetRights.cs" />\r
-    <Compile Include=".\System.Data.Services\ETagAttribute.cs" />\r
-    <Compile Include=".\System.Data.Services\ExpandSegment.cs" />\r
-    <Compile Include=".\System.Data.Services\ExpandSegmentCollection.cs" />\r
-    <Compile Include=".\System.Data.Services\HandleExceptionArgs.cs" />\r
-    <Compile Include=".\System.Data.Services\IDataServiceConfiguration.cs" />\r
-    <Compile Include=".\System.Data.Services\IDataServiceHost.cs" />\r
-    <Compile Include=".\System.Data.Services\IExpandedResult.cs" />\r
-    <Compile Include=".\System.Data.Services\IExpandProvider.cs" />\r
-    <Compile Include=".\System.Data.Services\IgnorePropertiesAttribute.cs" />\r
-    <Compile Include=".\System.Data.Services\IRequestHandler.cs" />\r
-    <Compile Include=".\System.Data.Services\IUpdatable.cs" />\r
-    <Compile Include=".\System.Data.Services\MimeTypeAttribute.cs" />\r
-    <Compile Include=".\System.Data.Services\ProcessRequestArgs.cs" />\r
-    <Compile Include=".\System.Data.Services\QueryInterceptorAttribute.cs" />\r
-    <Compile Include=".\System.Data.Services\ServiceOperationRights.cs" />\r
-    <Compile Include=".\System.Data.Services\SingleResultAttribute.cs" />\r
-    <Compile Include=".\System.Data.Services\UpdateOperations.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`1.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`10.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`11.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`12.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`13.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`2.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`3.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`4.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`5.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`6.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`7.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`8.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ExpandedWrapper`9.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ProjectedWrapper.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ProjectedWrapper0.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ProjectedWrapper1.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ProjectedWrapper2.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ProjectedWrapper3.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ProjectedWrapper4.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ProjectedWrapper5.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ProjectedWrapper6.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ProjectedWrapper7.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ProjectedWrapper8.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ProjectedWrapperMany.cs" />\r
-    <Compile Include="System.Data.Services.Internal\ProjectedWrapperManyEnd.cs" />\r
-    <Compile Include="System.Data.Services.Providers\DataServiceProviderMethods.cs" />\r
-    <Compile Include="System.Data.Services.Providers\IDataServiceMetadataProvider.cs" />\r
-    <Compile Include="System.Data.Services.Providers\IDataServicePagingProvider.cs" />\r
-    <Compile Include="System.Data.Services.Providers\IDataServiceQueryProvider.cs" />\r
-    <Compile Include="System.Data.Services.Providers\IDataServiceStreamProvider.cs" />\r
-    <Compile Include="System.Data.Services.Providers\IDataServiceUpdateProvider.cs" />\r
-    <Compile Include="System.Data.Services.Providers\OpenTypeMethods.cs" />\r
-    <Compile Include="System.Data.Services.Providers\ResourceAssociationSet.cs" />\r
-    <Compile Include="System.Data.Services.Providers\ResourceAssociationSetEnd.cs" />\r
-    <Compile Include="System.Data.Services.Providers\ResourceProperty.cs" />\r
-    <Compile Include="System.Data.Services.Providers\ResourcePropertyKind.cs" />\r
-    <Compile Include="System.Data.Services.Providers\ResourceSet.cs" />\r
-    <Compile Include="System.Data.Services.Providers\ResourceType.cs" />\r
-    <Compile Include="System.Data.Services.Providers\ResourceTypeKind.cs" />\r
-    <Compile Include="System.Data.Services.Providers\ServiceOperation.cs" />\r
-    <Compile Include="System.Data.Services.Providers\ServiceOperationParameter.cs" />\r
-    <Compile Include="System.Data.Services.Providers\ServiceOperationResultKind.cs" />\r
-    <Compile Include="System.Data.Services\DataServiceBehavior.cs" />\r
-    <Compile Include="System.Data.Services\DataServiceConfiguration.cs" />\r
-    <Compile Include="System.Data.Services\DataServiceOperationContext.cs" />\r
-    <Compile Include="System.Data.Services\DataServiceProcessingPipeline.cs" />\r
-    <Compile Include="System.Data.Services\DataServiceProcessingPipelineEventArgs.cs" />\r
-    <Compile Include="System.Data.Services\IDataServiceHost2.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
-      <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel.Web/System.ServiceModel.Web-net_4_5.csproj">\r
-      <Project>{BD4DF654-42EE-40E8-A3F4-8A80959E7879}</Project>\r
-      <Name>System.ServiceModel.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data.Services.Client/System.Data.Services.Client-net_4_5.csproj">\r
-      <Project>{E9B87AE3-9A05-4146-83CC-082BE32D8EB2}</Project>\r
-      <Name>System.Data.Services.Client-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj">\r
-      <Project>{E537F31B-BCB7-4935-ABF3-DF2FAC48DCB3}</Project>\r
-      <Name>System.ServiceModel.Activation-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Data.Services/System.Data.Services-tests-net_4_5.csproj b/mcs/class/System.Data.Services/System.Data.Services-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 7241ba3..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A39E95C7-A667-472B-8A53-798974756DBD}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Data.Services-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Data.Services_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\System.Web.DynamicData\Test\Common\AssertExtensions.cs" />\r
-    <Compile Include="Test\.\ChangeInterceptorAttributeTests.cs" />\r
-    <Compile Include="Test\.\DataServiceExceptionTests.cs" />\r
-    <Compile Include="Test\.\DataServiceTests.cs" />\r
-    <Compile Include="Test\.\ETagAttributeTests.cs" />\r
-    <Compile Include="Test\.\ExpandSegmentCollectionTests.cs" />\r
-    <Compile Include="Test\.\ExpandSegmentTests.cs" />\r
-    <Compile Include="Test\.\IgnorePropertiesAttributeTests.cs" />\r
-    <Compile Include="Test\.\MimeTypeAttributeTests.cs" />\r
-    <Compile Include="Test\.\QueryInterceptorAttributeTests.cs" />\r
-    <Compile Include="Test\.\System.Data.Services.Providers\DataServiceProviderMethodsTest.cs" />\r
-    <Compile Include="Test\.\System.Data.Services.Providers\ResourceTypeTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data.Services\System.Data.Services-net_4_5.csproj">\r
-      <Project>{F3B101A1-2CC5-416E-9C64-AABAB5D4A625}</Project>\r
-      <Name>System.Data.Services\System.Data.Services-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5-1.csproj">\r
-      <Project>{F1316A49-176B-4E68-8A5F-1BA718289D46}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Data/MobileStubs.cs b/mcs/class/System.Data/MobileStubs.cs
new file mode 100644 (file)
index 0000000..10a235e
--- /dev/null
@@ -0,0 +1,94 @@
+// help building System.Data without win32-specific p/invokes
+
+using System;
+using System.Diagnostics;
+
+internal static partial class Bid {
+    internal enum ApiGroup : uint {
+               Pooling     = 0x00001000,
+               Correlation = 0x00040000,
+       }
+       
+    internal static bool AdvancedOn {
+        get { return false; }
+    }
+
+    internal static bool IsOn (ApiGroup flag)
+       {
+        return false;
+    }
+
+       [Conditional ("BID")]
+       internal static void Trace (params object[] a)
+       {
+       }
+
+       [Conditional ("BID")]
+       internal static void PoolerTrace (params object[] a)
+       {
+       }
+
+       // out method can't be conditional
+       internal static void ScopeEnter (out IntPtr p, params object[] a)
+       {
+               p = IntPtr.Zero;
+       }
+       
+       [Conditional ("BID")]
+       internal static void ScopeLeave (ref IntPtr a)
+       {
+       }
+       
+       // out method can't be conditional
+       internal static void PoolerScopeEnter (out IntPtr p, string a, System.Int32 b)
+       {
+               p = IntPtr.Zero;
+       }
+}
+
+[ConditionalAttribute ("CODE_ANALYSIS")]
+[AttributeUsage (AttributeTargets.Method)]
+internal sealed class BidMethodAttribute : Attribute {
+}
+
+[ConditionalAttribute ("CODE_ANALYSIS")]
+[AttributeUsage (AttributeTargets.Parameter | AttributeTargets.Method, AllowMultiple=true)]
+internal sealed class BidArgumentTypeAttribute : Attribute {
+       internal BidArgumentTypeAttribute (Type bidArgumentType)
+       {
+       }
+}
+
+namespace System.Data.Common {
+
+       internal static class UnsafeNativeMethods {
+               
+               // note: likely unreachable code - as this never worked on mono
+               internal static int lstrlenW (IntPtr p)
+               {
+                       throw new NotImplementedException ();
+               }
+               
+               static internal int CreateWellKnownSid (int sidType, byte[] domainSid, byte[] resultSid, ref uint resultSidLength )
+               {
+                       return -1;
+               }
+               
+               static internal bool CheckTokenMembership (IntPtr tokenHandle, byte[] sidToCheck, out bool isMember)
+               {
+                       isMember = false;
+                       return false;
+               }
+               
+               static internal bool GetTokenInformation (IntPtr tokenHandle, uint token_class, IntPtr tokenStruct, uint tokenInformationLength, ref uint tokenString)
+               {
+                       return false;
+               }
+               
+               static internal bool ConvertSidToStringSidW (IntPtr sid, out IntPtr stringSid)
+               {
+                       stringSid = IntPtr.Zero;
+                       return false;
+               }
+       }
+}
index 8857315f80701e4513ce27884ecbe02ecab3e619..9c13a85f121a16c04d8d700d54dbb82e070eb1a3 100644 (file)
@@ -2,1725 +2,1233 @@ namespace System.Data {
        static partial class Res {
 
 
+public const string ADP_BadParameterName = "ADP_BadParameterName";
+public const string ADP_CalledTwice = "ADP_CalledTwice";
+public const string ADP_ClosedConnectionError = "ADP_ClosedConnectionError";
+public const string ADP_CollectionIndexInt32 = "ADP_CollectionIndexInt32";
+public const string ADP_CollectionIndexString = "ADP_CollectionIndexString";
+public const string ADP_CollectionInvalidType = "ADP_CollectionInvalidType";
+public const string ADP_CollectionIsNotParent = "ADP_CollectionIsNotParent";
+public const string ADP_CollectionNullValue = "ADP_CollectionNullValue";
+public const string ADP_CollectionRemoveInvalidObject = "ADP_CollectionRemoveInvalidObject";
+public const string ADP_CollectionUniqueValue = "ADP_CollectionUniqueValue";
+public const string ADP_ColumnSchemaExpression = "ADP_ColumnSchemaExpression";
+public const string ADP_ColumnSchemaMismatch = "ADP_ColumnSchemaMismatch";
+public const string ADP_ColumnSchemaMissing1 = "ADP_ColumnSchemaMissing1";
+public const string ADP_ColumnSchemaMissing2 = "ADP_ColumnSchemaMissing2";
+public const string ADP_CommandTextRequired = "ADP_CommandTextRequired";
+public const string ADP_ComputerNameEx = "ADP_ComputerNameEx";
+public const string ADP_ConnecitonRequired_UpdateRows = "ADP_ConnecitonRequired_UpdateRows";
+public const string ADP_ConnectionAlreadyOpen = "ADP_ConnectionAlreadyOpen";
+public const string ADP_ConnectionIsDisabled = "ADP_ConnectionIsDisabled";
+public const string ADP_ConnectionRequired = "ADP_ConnectionRequired";
+public const string ADP_ConnectionRequired_Batch = "ADP_ConnectionRequired_Batch";
+public const string ADP_ConnectionRequired_Clone = "ADP_ConnectionRequired_Clone";
+public const string ADP_ConnectionRequired_Delete = "ADP_ConnectionRequired_Delete";
+public const string ADP_ConnectionRequired_Fill = "ADP_ConnectionRequired_Fill";
+public const string ADP_ConnectionRequired_FillPage = "ADP_ConnectionRequired_FillPage";
+public const string ADP_ConnectionRequired_FillSchema = "ADP_ConnectionRequired_FillSchema";
+public const string ADP_ConnectionRequired_Insert = "ADP_ConnectionRequired_Insert";
+public const string ADP_ConnectionRequired_Update = "ADP_ConnectionRequired_Update";
+public const string ADP_ConnectionStateMsg = "ADP_ConnectionStateMsg";
+public const string ADP_ConnectionStateMsg_Closed = "ADP_ConnectionStateMsg_Closed";
+public const string ADP_ConnectionStateMsg_Connecting = "ADP_ConnectionStateMsg_Connecting";
+public const string ADP_ConnectionStateMsg_Open = "ADP_ConnectionStateMsg_Open";
+public const string ADP_ConnectionStateMsg_OpenExecuting = "ADP_ConnectionStateMsg_OpenExecuting";
+public const string ADP_ConnectionStateMsg_OpenFetching = "ADP_ConnectionStateMsg_OpenFetching";
+public const string ADP_ConnectionStringSyntax = "ADP_ConnectionStringSyntax";
+public const string ADP_DBConcurrencyExceptionMessage = "ADP_DBConcurrencyExceptionMessage";
+public const string ADP_DataReaderClosed = "ADP_DataReaderClosed";
+public const string ADP_DataReaderNoData = "ADP_DataReaderNoData";
+public const string ADP_DatabaseNameTooLong = "ADP_DatabaseNameTooLong";
+public const string ADP_DbRecordReadOnly = "ADP_DbRecordReadOnly";
+public const string ADP_DbTypeNotSupported = "ADP_DbTypeNotSupported";
+public const string ADP_DelegatedTransactionPresent = "ADP_DelegatedTransactionPresent";
+public const string ADP_DeriveParametersNotSupported = "ADP_DeriveParametersNotSupported";
+public const string ADP_DoubleValuedProperty = "ADP_DoubleValuedProperty";
+public const string ADP_DynamicSQLJoinUnsupported = "ADP_DynamicSQLJoinUnsupported";
+public const string ADP_DynamicSQLNestedQuote = "ADP_DynamicSQLNestedQuote";
+public const string ADP_DynamicSQLNoKeyInfoDelete = "ADP_DynamicSQLNoKeyInfoDelete";
+public const string ADP_DynamicSQLNoKeyInfoRowVersionDelete = "ADP_DynamicSQLNoKeyInfoRowVersionDelete";
+public const string ADP_DynamicSQLNoKeyInfoRowVersionUpdate = "ADP_DynamicSQLNoKeyInfoRowVersionUpdate";
+public const string ADP_DynamicSQLNoKeyInfoUpdate = "ADP_DynamicSQLNoKeyInfoUpdate";
+public const string ADP_DynamicSQLNoTableInfo = "ADP_DynamicSQLNoTableInfo";
+public const string ADP_EmptyArray = "ADP_EmptyArray";
+public const string ADP_EmptyDatabaseName = "ADP_EmptyDatabaseName";
+public const string ADP_EmptyKeyValue = "ADP_EmptyKeyValue";
+public const string ADP_EmptyString = "ADP_EmptyString";
+public const string ADP_EvenLengthLiteralValue = "ADP_EvenLengthLiteralValue";
+public const string ADP_FillChapterAutoIncrement = "ADP_FillChapterAutoIncrement";
+public const string ADP_FillRequiresSourceTableName = "ADP_FillRequiresSourceTableName";
+public const string ADP_FillSchemaRequiresSourceTableName = "ADP_FillSchemaRequiresSourceTableName";
+public const string ADP_HexDigitLiteralValue = "ADP_HexDigitLiteralValue";
+public const string ADP_IncorrectAsyncResult = "ADP_IncorrectAsyncResult";
+public const string ADP_InternalConnectionError = "ADP_InternalConnectionError";
+public const string ADP_InternalProviderError = "ADP_InternalProviderError";
+public const string ADP_InvalidArgumentLength = "ADP_InvalidArgumentLength";
+public const string ADP_InvalidArgumentValue = "ADP_InvalidArgumentValue";
+public const string ADP_InvalidCommandTimeout = "ADP_InvalidCommandTimeout";
+public const string ADP_InvalidConnectTimeoutValue = "ADP_InvalidConnectTimeoutValue";
+public const string ADP_InvalidConnectionOptionValue = "ADP_InvalidConnectionOptionValue";
+public const string ADP_InvalidConnectionOptionValueLength = "ADP_InvalidConnectionOptionValueLength";
+public const string ADP_InvalidDataDirectory = "ADP_InvalidDataDirectory";
+public const string ADP_InvalidDataLength2 = "ADP_InvalidDataLength2";
+public const string ADP_InvalidDataType = "ADP_InvalidDataType";
+public const string ADP_InvalidDateTimeDigits = "ADP_InvalidDateTimeDigits";
+public const string ADP_InvalidDestinationBufferIndex = "ADP_InvalidDestinationBufferIndex";
+public const string ADP_InvalidEnumerationValue = "ADP_InvalidEnumerationValue";
+public const string ADP_InvalidFormatValue = "ADP_InvalidFormatValue";
+public const string ADP_InvalidImplicitConversion = "ADP_InvalidImplicitConversion";
+public const string ADP_InvalidKey = "ADP_InvalidKey";
+public const string ADP_InvalidMaxRecords = "ADP_InvalidMaxRecords";
+public const string ADP_InvalidMaximumScale = "ADP_InvalidMaximumScale";
+public const string ADP_InvalidMetaDataValue = "ADP_InvalidMetaDataValue";
+public const string ADP_InvalidMinMaxPoolSizeValues = "ADP_InvalidMinMaxPoolSizeValues";
+public const string ADP_InvalidMixedUsageOfAccessTokenAndAuthentication = "ADP_InvalidMixedUsageOfAccessTokenAndAuthentication";
+public const string ADP_InvalidMixedUsageOfAccessTokenAndContextConnection = "ADP_InvalidMixedUsageOfAccessTokenAndContextConnection";
+public const string ADP_InvalidMixedUsageOfAccessTokenAndCredential = "ADP_InvalidMixedUsageOfAccessTokenAndCredential";
+public const string ADP_InvalidMixedUsageOfAccessTokenAndIntegratedSecurity = "ADP_InvalidMixedUsageOfAccessTokenAndIntegratedSecurity";
+public const string ADP_InvalidMixedUsageOfAccessTokenAndUserIDPassword = "ADP_InvalidMixedUsageOfAccessTokenAndUserIDPassword";
+public const string ADP_InvalidMixedUsageOfCredentialAndAccessToken = "ADP_InvalidMixedUsageOfCredentialAndAccessToken";
+public const string ADP_InvalidMixedUsageOfSecureAndClearCredential = "ADP_InvalidMixedUsageOfSecureAndClearCredential";
+public const string ADP_InvalidMixedUsageOfSecureCredentialAndContextConnection = "ADP_InvalidMixedUsageOfSecureCredentialAndContextConnection";
+public const string ADP_InvalidMixedUsageOfSecureCredentialAndIntegratedSecurity = "ADP_InvalidMixedUsageOfSecureCredentialAndIntegratedSecurity";
+public const string ADP_InvalidOffsetValue = "ADP_InvalidOffsetValue";
+public const string ADP_InvalidPrefixSuffix = "ADP_InvalidPrefixSuffix";
+public const string ADP_InvalidSeekOrigin = "ADP_InvalidSeekOrigin";
+public const string ADP_InvalidSizeValue = "ADP_InvalidSizeValue";
+public const string ADP_InvalidSourceBufferIndex = "ADP_InvalidSourceBufferIndex";
+public const string ADP_InvalidSourceColumn = "ADP_InvalidSourceColumn";
+public const string ADP_InvalidSourceTable = "ADP_InvalidSourceTable";
+public const string ADP_InvalidStartRecord = "ADP_InvalidStartRecord";
+public const string ADP_InvalidUDL = "ADP_InvalidUDL";
+public const string ADP_InvalidValue = "ADP_InvalidValue";
+public const string ADP_InvalidXMLBadVersion = "ADP_InvalidXMLBadVersion";
+public const string ADP_KeywordNotSupported = "ADP_KeywordNotSupported";
+public const string ADP_LiteralValueIsInvalid = "ADP_LiteralValueIsInvalid";
+public const string ADP_LocalTransactionPresent = "ADP_LocalTransactionPresent";
+public const string ADP_MismatchedAsyncResult = "ADP_MismatchedAsyncResult";
+public const string ADP_MissingColumnMapping = "ADP_MissingColumnMapping";
+public const string ADP_MissingConnectionOptionValue = "ADP_MissingConnectionOptionValue";
+public const string ADP_MissingDataReaderFieldType = "ADP_MissingDataReaderFieldType";
+public const string ADP_MissingSelectCommand = "ADP_MissingSelectCommand";
+public const string ADP_MissingSourceCommand = "ADP_MissingSourceCommand";
+public const string ADP_MissingSourceCommandConnection = "ADP_MissingSourceCommandConnection";
+public const string ADP_MissingTableMapping = "ADP_MissingTableMapping";
+public const string ADP_MissingTableMappingDestination = "ADP_MissingTableMappingDestination";
+public const string ADP_MissingTableSchema = "ADP_MissingTableSchema";
+public const string ADP_InvalidMultipartName = "ADP_InvalidMultipartName";
+public const string ADP_InvalidMultipartNameQuoteUsage = "ADP_InvalidMultipartNameQuoteUsage";
+public const string ADP_InvalidMultipartNameToManyParts = "ADP_InvalidMultipartNameToManyParts";
+public const string ADP_MultipleReturnValue = "ADP_MultipleReturnValue";
+public const string ADP_MustBeReadOnly = "ADP_MustBeReadOnly";
+public const string ADP_NegativeParameter = "ADP_NegativeParameter";
+public const string ADP_NoConnectionString = "ADP_NoConnectionString";
+public const string ADP_NoQuoteChange = "ADP_NoQuoteChange";
+public const string ADP_NoStoredProcedureExists = "ADP_NoStoredProcedureExists";
+public const string ADP_NonPooledOpenTimeout = "ADP_NonPooledOpenTimeout";
+public const string ADP_NonSeqByteAccess = "ADP_NonSeqByteAccess";
+public const string ADP_NonSequentialColumnAccess = "ADP_NonSequentialColumnAccess";
+public const string ADP_NotAPermissionElement = "ADP_NotAPermissionElement";
+public const string ADP_NotRowType = "ADP_NotRowType";
+public const string ADP_NotSupportedEnumerationValue = "ADP_NotSupportedEnumerationValue";
+public const string ADP_NumericToDecimalOverflow = "ADP_NumericToDecimalOverflow";
+public const string ADP_OdbcNoTypesFromProvider = "ADP_OdbcNoTypesFromProvider";
+public const string ADP_OffsetOutOfRangeException = "ADP_OffsetOutOfRangeException";
+public const string ADP_OnlyOneTableForStartRecordOrMaxRecords = "ADP_OnlyOneTableForStartRecordOrMaxRecords";
+public const string ADP_OpenConnectionPropertySet = "ADP_OpenConnectionPropertySet";
+public const string ADP_OpenConnectionRequired = "ADP_OpenConnectionRequired";
+public const string ADP_OpenConnectionRequired_Clone = "ADP_OpenConnectionRequired_Clone";
+public const string ADP_OpenConnectionRequired_Delete = "ADP_OpenConnectionRequired_Delete";
+public const string ADP_OpenConnectionRequired_Insert = "ADP_OpenConnectionRequired_Insert";
+public const string ADP_OpenConnectionRequired_Update = "ADP_OpenConnectionRequired_Update";
+public const string ADP_OpenReaderExists = "ADP_OpenReaderExists";
+public const string ADP_OperationAborted = "ADP_OperationAborted";
+public const string ADP_OperationAbortedExceptionMessage = "ADP_OperationAbortedExceptionMessage";
+public const string ADP_ParallelTransactionsNotSupported = "ADP_ParallelTransactionsNotSupported";
+public const string ADP_ParameterConversionFailed = "ADP_ParameterConversionFailed";
+public const string ADP_ParameterValueOutOfRange = "ADP_ParameterValueOutOfRange";
+public const string ADP_PendingAsyncOperation = "ADP_PendingAsyncOperation";
+public const string ADP_PermissionTypeMismatch = "ADP_PermissionTypeMismatch";
+public const string ADP_PooledOpenTimeout = "ADP_PooledOpenTimeout";
+public const string ADP_PrepareParameterScale = "ADP_PrepareParameterScale";
+public const string ADP_PrepareParameterSize = "ADP_PrepareParameterSize";
+public const string ADP_PrepareParameterType = "ADP_PrepareParameterType";
+public const string ADP_PropertyNotSupported = "ADP_PropertyNotSupported";
+public const string ADP_QuotePrefixNotSet = "ADP_QuotePrefixNotSet";
+public const string ADP_ResultsNotAllowedDuringBatch = "ADP_ResultsNotAllowedDuringBatch";
+public const string ADP_RowUpdatedErrors = "ADP_RowUpdatedErrors";
+public const string ADP_RowUpdatingErrors = "ADP_RowUpdatingErrors";
+public const string ADP_SingleValuedProperty = "ADP_SingleValuedProperty";
+public const string ADP_StreamClosed = "ADP_StreamClosed";
+public const string ADP_TransactionCompleted = "ADP_TransactionCompleted";
+public const string ADP_TransactionCompletedButNotDisposed = "ADP_TransactionCompletedButNotDisposed";
+public const string ADP_TransactionConnectionMismatch = "ADP_TransactionConnectionMismatch";
+public const string ADP_TransactionPresent = "ADP_TransactionPresent";
+public const string ADP_TransactionRequired = "ADP_TransactionRequired";
+public const string ADP_TransactionZombied = "ADP_TransactionZombied";
+public const string ADP_UdlFileError = "ADP_UdlFileError";
+public const string ADP_UnableToCreateBooleanLiteral = "ADP_UnableToCreateBooleanLiteral";
+public const string ADP_UninitializedParameterSize = "ADP_UninitializedParameterSize";
+public const string ADP_UnknownDataType = "ADP_UnknownDataType";
+public const string ADP_UnknownDataTypeCode = "ADP_UnknownDataTypeCode";
+public const string ADP_UnsupportedNativeDataTypeOleDb = "ADP_UnsupportedNativeDataTypeOleDb";
+public const string ADP_UnwantedStatementType = "ADP_UnwantedStatementType";
+public const string ADP_UpdateConcurrencyViolation_Batch = "ADP_UpdateConcurrencyViolation_Batch";
+public const string ADP_UpdateConcurrencyViolation_Delete = "ADP_UpdateConcurrencyViolation_Delete";
+public const string ADP_UpdateConcurrencyViolation_Update = "ADP_UpdateConcurrencyViolation_Update";
+public const string ADP_UpdateMismatchRowTable = "ADP_UpdateMismatchRowTable";
+public const string ADP_UpdateRequiresCommandClone = "ADP_UpdateRequiresCommandClone";
+public const string ADP_UpdateRequiresCommandDelete = "ADP_UpdateRequiresCommandDelete";
+public const string ADP_UpdateRequiresCommandInsert = "ADP_UpdateRequiresCommandInsert";
+public const string ADP_UpdateRequiresCommandSelect = "ADP_UpdateRequiresCommandSelect";
+public const string ADP_UpdateRequiresCommandUpdate = "ADP_UpdateRequiresCommandUpdate";
+public const string ADP_UpdateRequiresSourceTable = "ADP_UpdateRequiresSourceTable";
+public const string ADP_UpdateRequiresSourceTableName = "ADP_UpdateRequiresSourceTableName";
+public const string ADP_VersionDoesNotSupportDataType = "ADP_VersionDoesNotSupportDataType";
+public const string CodeGen_DuplicateTableName = "CodeGen_DuplicateTableName";
+public const string CodeGen_InvalidIdentifier = "CodeGen_InvalidIdentifier";
+public const string CodeGen_NoCtor0 = "CodeGen_NoCtor0";
+public const string CodeGen_NoCtor1 = "CodeGen_NoCtor1";
+public const string CodeGen_TypeCantBeNull = "CodeGen_TypeCantBeNull";
+public const string ConfigBaseElementsOnly = "ConfigBaseElementsOnly";
+public const string ConfigBaseNoChildNodes = "ConfigBaseNoChildNodes";
+public const string ConfigProviderInvalid = "ConfigProviderInvalid";
+public const string ConfigProviderMissing = "ConfigProviderMissing";
+public const string ConfigProviderNotFound = "ConfigProviderNotFound";
+public const string ConfigProviderNotInstalled = "ConfigProviderNotInstalled";
+public const string ConfigRequiredAttributeEmpty = "ConfigRequiredAttributeEmpty";
+public const string ConfigRequiredAttributeMissing = "ConfigRequiredAttributeMissing";
+public const string ConfigSectionsUnique = "ConfigSectionsUnique";
+public const string ConfigUnrecognizedAttributes = "ConfigUnrecognizedAttributes";
+public const string ConfigUnrecognizedElement = "ConfigUnrecognizedElement";
+public const string Config_base_elements_only = "Config_base_elements_only";
+public const string Config_base_no_child_nodes = "Config_base_no_child_nodes";
+public const string Config_base_required_attribute_empty = "Config_base_required_attribute_empty";
+public const string Config_base_required_attribute_missing = "Config_base_required_attribute_missing";
+public const string Config_base_unrecognized_attribute = "Config_base_unrecognized_attribute";
+public const string Config_base_unrecognized_element = "Config_base_unrecognized_element";
+public const string ConstraintNameDescr = "ConstraintNameDescr";
+public const string ConstraintTableDescr = "ConstraintTableDescr";
+public const string DataAdapter_AcceptChangesDuringFill = "DataAdapter_AcceptChangesDuringFill";
+public const string DataAdapter_AcceptChangesDuringUpdate = "DataAdapter_AcceptChangesDuringUpdate";
+public const string DataAdapter_ContinueUpdateOnError = "DataAdapter_ContinueUpdateOnError";
+public const string DataAdapter_FillError = "DataAdapter_FillError";
+public const string DataAdapter_FillLoadOption = "DataAdapter_FillLoadOption";
+public const string DataAdapter_MissingMappingAction = "DataAdapter_MissingMappingAction";
+public const string DataAdapter_MissingSchemaAction = "DataAdapter_MissingSchemaAction";
+public const string DataAdapter_ReturnProviderSpecificTypes = "DataAdapter_ReturnProviderSpecificTypes";
+public const string DataAdapter_TableMappings = "DataAdapter_TableMappings";
+public const string DataCategory_Action = "DataCategory_Action";
+public const string DataCategory_Advanced = "DataCategory_Advanced";
+public const string DataCategory_Behavior = "DataCategory_Behavior";
+public const string DataCategory_ConnectionResilency = "DataCategory_ConnectionResilency";
+public const string DataCategory_Context = "DataCategory_Context";
+public const string DataCategory_Data = "DataCategory_Data";
+public const string DataCategory_Fill = "DataCategory_Fill";
+public const string DataCategory_InfoMessage = "DataCategory_InfoMessage";
+public const string DataCategory_Initialization = "DataCategory_Initialization";
+public const string DataCategory_Mapping = "DataCategory_Mapping";
+public const string DataCategory_NamedConnectionString = "DataCategory_NamedConnectionString";
+public const string DataCategory_Notification = "DataCategory_Notification";
+public const string DataCategory_Pooling = "DataCategory_Pooling";
+public const string DataCategory_Replication = "DataCategory_Replication";
+public const string DataCategory_Schema = "DataCategory_Schema";
+public const string DataCategory_Security = "DataCategory_Security";
+public const string DataCategory_Source = "DataCategory_Source";
+public const string DataCategory_StateChange = "DataCategory_StateChange";
+public const string DataCategory_StatementCompleted = "DataCategory_StatementCompleted";
+public const string DataCategory_Update = "DataCategory_Update";
+public const string DataCategory_Xml = "DataCategory_Xml";
+public const string DataColumnAllowNullDescr = "DataColumnAllowNullDescr";
+public const string DataColumnAutoIncrementDescr = "DataColumnAutoIncrementDescr";
+public const string DataColumnAutoIncrementSeedDescr = "DataColumnAutoIncrementSeedDescr";
+public const string DataColumnAutoIncrementStepDescr = "DataColumnAutoIncrementStepDescr";
+public const string DataColumnCaptionDescr = "DataColumnCaptionDescr";
+public const string DataColumnColumnNameDescr = "DataColumnColumnNameDescr";
+public const string DataColumnDataTableDescr = "DataColumnDataTableDescr";
+public const string DataColumnDataTypeDescr = "DataColumnDataTypeDescr";
+public const string DataColumnDateTimeModeDescr = "DataColumnDateTimeModeDescr";
+public const string DataColumnDefaultValueDescr = "DataColumnDefaultValueDescr";
+public const string DataColumnExpressionDescr = "DataColumnExpressionDescr";
+public const string DataColumnMappingDescr = "DataColumnMappingDescr";
+public const string DataColumnMapping_DataSetColumn = "DataColumnMapping_DataSetColumn";
+public const string DataColumnMapping_SourceColumn = "DataColumnMapping_SourceColumn";
+public const string DataColumnMappings_Count = "DataColumnMappings_Count";
+public const string DataColumnMappings_Item = "DataColumnMappings_Item";
+public const string DataColumnMaxLengthDescr = "DataColumnMaxLengthDescr";
+public const string DataColumnNamespaceDescr = "DataColumnNamespaceDescr";
+public const string DataColumnOrdinalDescr = "DataColumnOrdinalDescr";
+public const string DataColumnPrefixDescr = "DataColumnPrefixDescr";
+public const string DataColumnReadOnlyDescr = "DataColumnReadOnlyDescr";
+public const string DataColumnUniqueDescr = "DataColumnUniqueDescr";
+public const string DataColumn_AutoIncrementAndDefaultValue = "DataColumn_AutoIncrementAndDefaultValue";
+public const string DataColumn_AutoIncrementAndExpression = "DataColumn_AutoIncrementAndExpression";
+public const string DataColumn_AutoIncrementCannotSetIfHasData = "DataColumn_AutoIncrementCannotSetIfHasData";
+public const string DataColumn_AutoIncrementSeed = "DataColumn_AutoIncrementSeed";
+public const string DataColumn_CannotChangeNamespace = "DataColumn_CannotChangeNamespace";
+public const string DataColumn_CannotSetDateTimeModeForNonDateTimeColumns = "DataColumn_CannotSetDateTimeModeForNonDateTimeColumns";
+public const string DataColumn_CannotSetMaxLength = "DataColumn_CannotSetMaxLength";
+public const string DataColumn_CannotSetMaxLength2 = "DataColumn_CannotSetMaxLength2";
+public const string DataColumn_CannotSetToNull = "DataColumn_CannotSetToNull";
+public const string DataColumn_CannotSimpleContent = "DataColumn_CannotSimpleContent";
+public const string DataColumn_CannotSimpleContentType = "DataColumn_CannotSimpleContentType";
+public const string DataColumn_ChangeDataType = "DataColumn_ChangeDataType";
+public const string DataColumn_DateTimeMode = "DataColumn_DateTimeMode";
+public const string DataColumn_DefaultValueAndAutoIncrement = "DataColumn_DefaultValueAndAutoIncrement";
+public const string DataColumn_DefaultValueColumnDataType = "DataColumn_DefaultValueColumnDataType";
+public const string DataColumn_DefaultValueDataType = "DataColumn_DefaultValueDataType";
+public const string DataColumn_DefaultValueDataType1 = "DataColumn_DefaultValueDataType1";
+public const string DataColumn_ExceedMaxLength = "DataColumn_ExceedMaxLength";
+public const string DataColumn_ExpressionAndConstraint = "DataColumn_ExpressionAndConstraint";
+public const string DataColumn_ExpressionAndReadOnly = "DataColumn_ExpressionAndReadOnly";
+public const string DataColumn_ExpressionAndUnique = "DataColumn_ExpressionAndUnique";
+public const string DataColumn_ExpressionCircular = "DataColumn_ExpressionCircular";
+public const string DataColumn_ExpressionInConstraint = "DataColumn_ExpressionInConstraint";
+public const string DataColumn_HasToBeStringType = "DataColumn_HasToBeStringType";
+public const string DataColumn_INullableUDTwithoutStaticNull = "DataColumn_INullableUDTwithoutStaticNull";
+public const string DataColumn_InvalidDataColumnMapping = "DataColumn_InvalidDataColumnMapping";
+public const string DataColumn_LongerThanMaxLength = "DataColumn_LongerThanMaxLength";
+public const string DataColumn_NameRequired = "DataColumn_NameRequired";
+public const string DataColumn_NonUniqueValues = "DataColumn_NonUniqueValues";
+public const string DataColumn_NotAllowDBNull = "DataColumn_NotAllowDBNull";
+public const string DataColumn_NotInAnyTable = "DataColumn_NotInAnyTable";
+public const string DataColumn_NotInTheTable = "DataColumn_NotInTheTable";
+public const string DataColumn_NotInTheUnderlyingTable = "DataColumn_NotInTheUnderlyingTable";
+public const string DataColumn_NullDataType = "DataColumn_NullDataType";
+public const string DataColumn_NullKeyValues = "DataColumn_NullKeyValues";
+public const string DataColumn_NullValues = "DataColumn_NullValues";
+public const string DataColumn_NullableTypesNotSupported = "DataColumn_NullableTypesNotSupported";
+public const string DataColumn_OrdinalExceedMaximun = "DataColumn_OrdinalExceedMaximun";
+public const string DataColumn_ReadOnly = "DataColumn_ReadOnly";
+public const string DataColumn_ReadOnlyAndExpression = "DataColumn_ReadOnlyAndExpression";
+public const string DataColumn_SetAddedAndModifiedCalledOnNonUnchanged = "DataColumn_SetAddedAndModifiedCalledOnNonUnchanged";
+public const string DataColumn_SetFailed = "DataColumn_SetFailed";
+public const string DataColumn_UDTImplementsIChangeTrackingButnotIRevertible = "DataColumn_UDTImplementsIChangeTrackingButnotIRevertible";
+public const string DataColumn_UniqueAndExpression = "DataColumn_UniqueAndExpression";
+public const string DataColumns_Add1 = "DataColumns_Add1";
+public const string DataColumns_Add2 = "DataColumns_Add2";
+public const string DataColumns_Add3 = "DataColumns_Add3";
+public const string DataColumns_Add4 = "DataColumns_Add4";
+public const string DataColumns_AddDuplicate = "DataColumns_AddDuplicate";
+public const string DataColumns_AddDuplicate2 = "DataColumns_AddDuplicate2";
+public const string DataColumns_AddDuplicate3 = "DataColumns_AddDuplicate3";
+public const string DataColumns_OutOfRange = "DataColumns_OutOfRange";
+public const string DataColumns_Remove = "DataColumns_Remove";
+public const string DataColumns_RemoveChildKey = "DataColumns_RemoveChildKey";
+public const string DataColumns_RemoveConstraint = "DataColumns_RemoveConstraint";
+public const string DataColumns_RemoveExpression = "DataColumns_RemoveExpression";
+public const string DataColumns_RemovePrimaryKey = "DataColumns_RemovePrimaryKey";
+public const string DataConstraint_AddFailed = "DataConstraint_AddFailed";
+public const string DataConstraint_AddPrimaryKeyConstraint = "DataConstraint_AddPrimaryKeyConstraint";
+public const string DataConstraint_BadObjectPropertyAccess = "DataConstraint_BadObjectPropertyAccess";
+public const string DataConstraint_CantAddConstraintToMultipleNestedTable = "DataConstraint_CantAddConstraintToMultipleNestedTable";
+public const string DataConstraint_CascadeDelete = "DataConstraint_CascadeDelete";
+public const string DataConstraint_CascadeUpdate = "DataConstraint_CascadeUpdate";
+public const string DataConstraint_ClearParentTable = "DataConstraint_ClearParentTable";
+public const string DataConstraint_Duplicate = "DataConstraint_Duplicate";
+public const string DataConstraint_DuplicateName = "DataConstraint_DuplicateName";
+public const string DataConstraint_ForeignKeyViolation = "DataConstraint_ForeignKeyViolation";
+public const string DataConstraint_ForeignTable = "DataConstraint_ForeignTable";
+public const string DataConstraint_NeededForForeignKeyConstraint = "DataConstraint_NeededForForeignKeyConstraint";
+public const string DataConstraint_NoName = "DataConstraint_NoName";
+public const string DataConstraint_NotInTheTable = "DataConstraint_NotInTheTable";
+public const string DataConstraint_OutOfRange = "DataConstraint_OutOfRange";
+public const string DataConstraint_ParentValues = "DataConstraint_ParentValues";
+public const string DataConstraint_RemoveFailed = "DataConstraint_RemoveFailed";
+public const string DataConstraint_RemoveParentRow = "DataConstraint_RemoveParentRow";
+public const string DataConstraint_UniqueViolation = "DataConstraint_UniqueViolation";
+public const string DataConstraint_Violation = "DataConstraint_Violation";
+public const string DataConstraint_ViolationValue = "DataConstraint_ViolationValue";
+public const string DataDom_CloneNode = "DataDom_CloneNode";
+public const string DataDom_ColumnMappingChange  = "DataDom_ColumnMappingChange";
+public const string DataDom_ColumnNameChange  = "DataDom_ColumnNameChange";
+public const string DataDom_ColumnNamespaceChange  = "DataDom_ColumnNamespaceChange";
+public const string DataDom_DataSetNameChange  = "DataDom_DataSetNameChange";
+public const string DataDom_DataSetNestedRelationsChange  = "DataDom_DataSetNestedRelationsChange";
+public const string DataDom_DataSetNull = "DataDom_DataSetNull";
+public const string DataDom_DataSetTablesChange  = "DataDom_DataSetTablesChange";
+public const string DataDom_EnforceConstraintsShouldBeOff  = "DataDom_EnforceConstraintsShouldBeOff";
+public const string DataDom_Foliation = "DataDom_Foliation";
+public const string DataDom_MultipleDataSet = "DataDom_MultipleDataSet";
+public const string DataDom_MultipleLoad  = "DataDom_MultipleLoad";
+public const string DataDom_NotSupport_Clear  = "DataDom_NotSupport_Clear";
+public const string DataDom_NotSupport_EntRef  = "DataDom_NotSupport_EntRef";
+public const string DataDom_NotSupport_GetElementById  = "DataDom_NotSupport_GetElementById";
+public const string DataDom_TableColumnsChange  = "DataDom_TableColumnsChange";
+public const string DataDom_TableNameChange  = "DataDom_TableNameChange";
+public const string DataDom_TableNamespaceChange  = "DataDom_TableNamespaceChange";
+public const string DataIndex_FindWithoutSortOrder = "DataIndex_FindWithoutSortOrder";
+public const string DataIndex_KeyLength = "DataIndex_KeyLength";
+public const string DataIndex_RecordStateRange = "DataIndex_RecordStateRange";
+public const string DataKey_DuplicateColumns = "DataKey_DuplicateColumns";
+public const string DataKey_NoColumns = "DataKey_NoColumns";
+public const string DataKey_RemovePrimaryKey = "DataKey_RemovePrimaryKey";
+public const string DataKey_RemovePrimaryKey1 = "DataKey_RemovePrimaryKey1";
+public const string DataKey_TableMismatch = "DataKey_TableMismatch";
+public const string DataKey_TooManyColumns = "DataKey_TooManyColumns";
+public const string DataMerge_DataTypeMismatch = "DataMerge_DataTypeMismatch";
+public const string DataMerge_MissingColumnDefinition = "DataMerge_MissingColumnDefinition";
+public const string DataMerge_MissingConstraint = "DataMerge_MissingConstraint";
+public const string DataMerge_MissingDefinition = "DataMerge_MissingDefinition";
+public const string DataMerge_PrimaryKeyColumnsMismatch = "DataMerge_PrimaryKeyColumnsMismatch";
+public const string DataMerge_PrimaryKeyMismatch = "DataMerge_PrimaryKeyMismatch";
+public const string DataMerge_ReltionKeyColumnsMismatch = "DataMerge_ReltionKeyColumnsMismatch";
+public const string DataROWView_PropertyNotFound = "DataROWView_PropertyNotFound";
+public const string DataRelationChildColumnsDescr = "DataRelationChildColumnsDescr";
+public const string DataRelationNested = "DataRelationNested";
+public const string DataRelationParentColumnsDescr = "DataRelationParentColumnsDescr";
+public const string DataRelationRelationNameDescr = "DataRelationRelationNameDescr";
+public const string DataRelation_AlreadyExists = "DataRelation_AlreadyExists";
+public const string DataRelation_AlreadyInOtherDataSet = "DataRelation_AlreadyInOtherDataSet";
+public const string DataRelation_AlreadyInTheDataSet = "DataRelation_AlreadyInTheDataSet";
+public const string DataRelation_CaseLocaleMismatch = "DataRelation_CaseLocaleMismatch";
+public const string DataRelation_ChildTableMismatch = "DataRelation_ChildTableMismatch";
+public const string DataRelation_ColumnsTypeMismatch = "DataRelation_ColumnsTypeMismatch";
+public const string DataRelation_DataSetMismatch = "DataRelation_DataSetMismatch";
+public const string DataRelation_DoesNotExist = "DataRelation_DoesNotExist";
+public const string DataRelation_DuplicateName = "DataRelation_DuplicateName";
+public const string DataRelation_ForeignDataSet = "DataRelation_ForeignDataSet";
+public const string DataRelation_ForeignRow = "DataRelation_ForeignRow";
+public const string DataRelation_ForeignTable = "DataRelation_ForeignTable";
+public const string DataRelation_GetParentRowTableMismatch = "DataRelation_GetParentRowTableMismatch";
+public const string DataRelation_InValidNamespaceInNestedRelation = "DataRelation_InValidNamespaceInNestedRelation";
+public const string DataRelation_InValidNestedRelation = "DataRelation_InValidNestedRelation";
+public const string DataRelation_KeyColumnsIdentical = "DataRelation_KeyColumnsIdentical";
+public const string DataRelation_KeyLengthMismatch = "DataRelation_KeyLengthMismatch";
+public const string DataRelation_KeyZeroLength = "DataRelation_KeyZeroLength";
+public const string DataRelation_LoopInNestedRelations = "DataRelation_LoopInNestedRelations";
+public const string DataRelation_NoName = "DataRelation_NoName";
+public const string DataRelation_NotInTheDataSet = "DataRelation_NotInTheDataSet";
+public const string DataRelation_OutOfRange = "DataRelation_OutOfRange";
+public const string DataRelation_ParentOrChildColumnsDoNotHaveDataSet = "DataRelation_ParentOrChildColumnsDoNotHaveDataSet";
+public const string DataRelation_ParentTableMismatch = "DataRelation_ParentTableMismatch";
+public const string DataRelation_RelationNestedReadOnly = "DataRelation_RelationNestedReadOnly";
+public const string DataRelation_SetParentRowTableMismatch = "DataRelation_SetParentRowTableMismatch";
+public const string DataRelation_TableCantBeNestedInTwoTables = "DataRelation_TableCantBeNestedInTwoTables";
+public const string DataRelation_TableNull = "DataRelation_TableNull";
+public const string DataRelation_TableWasRemoved = "DataRelation_TableWasRemoved";
+public const string DataRelation_TablesInDifferentSets = "DataRelation_TablesInDifferentSets";
+public const string DataRow_AlreadyDeleted = "DataRow_AlreadyDeleted";
+public const string DataRow_AlreadyInOtherCollection = "DataRow_AlreadyInOtherCollection";
+public const string DataRow_AlreadyInTheCollection = "DataRow_AlreadyInTheCollection";
+public const string DataRow_AlreadyRemoved = "DataRow_AlreadyRemoved";
+public const string DataRow_BeginEditInRowChanging = "DataRow_BeginEditInRowChanging";
+public const string DataRow_CancelEditInRowChanging = "DataRow_CancelEditInRowChanging";
+public const string DataRow_DeleteInRowDeleting = "DataRow_DeleteInRowDeleting";
+public const string DataRow_DeletedRowInaccessible = "DataRow_DeletedRowInaccessible";
+public const string DataRow_EditInRowChanging = "DataRow_EditInRowChanging";
+public const string DataRow_Empty = "DataRow_Empty";
+public const string DataRow_EndEditInRowChanging = "DataRow_EndEditInRowChanging";
+public const string DataRow_InvalidRowBitPattern = "DataRow_InvalidRowBitPattern";
+public const string DataRow_InvalidVersion = "DataRow_InvalidVersion";
+public const string DataRow_MultipleParents = "DataRow_MultipleParents";
+public const string DataRow_NoCurrentData = "DataRow_NoCurrentData";
+public const string DataRow_NoOriginalData = "DataRow_NoOriginalData";
+public const string DataRow_NoProposedData = "DataRow_NoProposedData";
+public const string DataRow_NotInTheDataSet = "DataRow_NotInTheDataSet";
+public const string DataRow_NotInTheTable = "DataRow_NotInTheTable";
+public const string DataRow_OutOfRange = "DataRow_OutOfRange";
+public const string DataRow_ParentRowNotInTheDataSet = "DataRow_ParentRowNotInTheDataSet";
+public const string DataRow_RemovedFromTheTable = "DataRow_RemovedFromTheTable";
+public const string DataRow_RowInsertMissing = "DataRow_RowInsertMissing";
+public const string DataRow_RowInsertOutOfRange = "DataRow_RowInsertOutOfRange";
+public const string DataRow_RowInsertTwice = "DataRow_RowInsertTwice";
+public const string DataRow_RowOutOfRange = "DataRow_RowOutOfRange";
+public const string DataRow_ValuesArrayLength = "DataRow_ValuesArrayLength";
+public const string DataSetCaseSensitiveDescr = "DataSetCaseSensitiveDescr";
+public const string DataSetDataSetNameDescr = "DataSetDataSetNameDescr";
+public const string DataSetDefaultViewDescr = "DataSetDefaultViewDescr";
+public const string DataSetDescr = "DataSetDescr";
+public const string DataSetEnforceConstraintsDescr = "DataSetEnforceConstraintsDescr";
+public const string DataSetHasErrorsDescr = "DataSetHasErrorsDescr";
+public const string DataSetInitializedDescr = "DataSetInitializedDescr";
+public const string DataSetLocaleDescr = "DataSetLocaleDescr";
+public const string DataSetMergeFailedDescr = "DataSetMergeFailedDescr";
+public const string DataSetNamespaceDescr = "DataSetNamespaceDescr";
+public const string DataSetPrefixDescr = "DataSetPrefixDescr";
+public const string DataSetRelationsDescr = "DataSetRelationsDescr";
+public const string DataSetTablesDescr = "DataSetTablesDescr";
+public const string DataSet_CannotChangeCaseLocale = "DataSet_CannotChangeCaseLocale";
+public const string DataSet_CannotChangeSchemaSerializationMode = "DataSet_CannotChangeSchemaSerializationMode";
+public const string DataSet_DefaultConstraintException = "DataSet_DefaultConstraintException";
+public const string DataSet_DefaultDataException = "DataSet_DefaultDataException";
+public const string DataSet_DefaultDeletedRowInaccessibleException = "DataSet_DefaultDeletedRowInaccessibleException";
+public const string DataSet_DefaultDuplicateNameException = "DataSet_DefaultDuplicateNameException";
+public const string DataSet_DefaultInRowChangingEventException = "DataSet_DefaultInRowChangingEventException";
+public const string DataSet_DefaultInvalidConstraintException = "DataSet_DefaultInvalidConstraintException";
+public const string DataSet_DefaultMissingPrimaryKeyException = "DataSet_DefaultMissingPrimaryKeyException";
+public const string DataSet_DefaultNoNullAllowedException = "DataSet_DefaultNoNullAllowedException";
+public const string DataSet_DefaultReadOnlyException = "DataSet_DefaultReadOnlyException";
+public const string DataSet_DefaultRowNotInTableException = "DataSet_DefaultRowNotInTableException";
+public const string DataSet_DefaultVersionNotFoundException = "DataSet_DefaultVersionNotFoundException";
+public const string DataSet_SetDataSetNameConflicting = "DataSet_SetDataSetNameConflicting";
+public const string DataSet_SetNameToEmpty = "DataSet_SetNameToEmpty";
+public const string DataSet_UnsupportedSchema = "DataSet_UnsupportedSchema";
+public const string DataStorage_AggregateException = "DataStorage_AggregateException";
+public const string DataStorage_IComparableNotDefined = "DataStorage_IComparableNotDefined";
+public const string DataStorage_InvalidStorageType = "DataStorage_InvalidStorageType";
+public const string DataStorage_ProblematicChars = "DataStorage_ProblematicChars";
+public const string DataStorage_SetInvalidDataType = "DataStorage_SetInvalidDataType";
+public const string DataTableCaseSensitiveDescr = "DataTableCaseSensitiveDescr";
+public const string DataTableChildRelationsDescr = "DataTableChildRelationsDescr";
+public const string DataTableColumnChangedDescr = "DataTableColumnChangedDescr";
+public const string DataTableColumnChangingDescr = "DataTableColumnChangingDescr";
+public const string DataTableColumnsDescr = "DataTableColumnsDescr";
+public const string DataTableConstraintsDescr = "DataTableConstraintsDescr";
+public const string DataTableDataSetDescr = "DataTableDataSetDescr";
+public const string DataTableDefaultViewDescr = "DataTableDefaultViewDescr";
+public const string DataTableDisplayExpressionDescr = "DataTableDisplayExpressionDescr";
+public const string DataTableHasErrorsDescr = "DataTableHasErrorsDescr";
+public const string DataTableLocaleDescr = "DataTableLocaleDescr";
+public const string DataTableMapping_ColumnMappings = "DataTableMapping_ColumnMappings";
+public const string DataTableMapping_DataSetTable = "DataTableMapping_DataSetTable";
+public const string DataTableMapping_SourceTable = "DataTableMapping_SourceTable";
+public const string DataTableMappings_Count = "DataTableMappings_Count";
+public const string DataTableMappings_Item = "DataTableMappings_Item";
+public const string DataTableMinimumCapacityDescr = "DataTableMinimumCapacityDescr";
+public const string DataTableNamespaceDescr = "DataTableNamespaceDescr";
+public const string DataTableParentRelationsDescr = "DataTableParentRelationsDescr";
+public const string DataTablePrefixDescr = "DataTablePrefixDescr";
+public const string DataTablePrimaryKeyDescr = "DataTablePrimaryKeyDescr";
+public const string DataTableReader_ArgumentContainsNullValue = "DataTableReader_ArgumentContainsNullValue";
+public const string DataTableReader_CannotCreateDataReaderOnEmptyDataSet = "DataTableReader_CannotCreateDataReaderOnEmptyDataSet";
+public const string DataTableReader_DataTableCleared = "DataTableReader_DataTableCleared";
+public const string DataTableReader_DataTableReaderArgumentIsEmpty = "DataTableReader_DataTableReaderArgumentIsEmpty";
+public const string DataTableReader_InvalidDataTableReader = "DataTableReader_InvalidDataTableReader";
+public const string DataTableReader_InvalidRowInDataTableReader = "DataTableReader_InvalidRowInDataTableReader";
+public const string DataTableReader_SchemaInvalidDataTableReader = "DataTableReader_SchemaInvalidDataTableReader";
+public const string DataTableRowChangedDescr = "DataTableRowChangedDescr";
+public const string DataTableRowChangingDescr = "DataTableRowChangingDescr";
+public const string DataTableRowDeletedDescr = "DataTableRowDeletedDescr";
+public const string DataTableRowDeletingDescr = "DataTableRowDeletingDescr";
+public const string DataTableRowsClearedDescr = "DataTableRowsClearedDescr";
+public const string DataTableRowsClearingDescr = "DataTableRowsClearingDescr";
+public const string DataTableRowsDescr = "DataTableRowsDescr";
+public const string DataTableRowsNewRowDescr = "DataTableRowsNewRowDescr";
+public const string DataTableSerializeHierarchy = "DataTableSerializeHierarchy";
+public const string DataTableTableNameDescr = "DataTableTableNameDescr";
+public const string DataTable_AlreadyInOtherDataSet = "DataTable_AlreadyInOtherDataSet";
+public const string DataTable_AlreadyInTheDataSet = "DataTable_AlreadyInTheDataSet";
+public const string DataTable_CanNotRemoteDataTable = "DataTable_CanNotRemoteDataTable";
+public const string DataTable_CanNotSerializeDataTableHierarchy = "DataTable_CanNotSerializeDataTableHierarchy";
+public const string DataTable_CanNotSerializeDataTableWithEmptyName = "DataTable_CanNotSerializeDataTableWithEmptyName";
+public const string DataTable_CanNotSetRemotingFormat = "DataTable_CanNotSetRemotingFormat";
+public const string DataTable_CannotAddToSimpleContent = "DataTable_CannotAddToSimpleContent";
+public const string DataTable_DatasetConflictingName = "DataTable_DatasetConflictingName";
+public const string DataTable_DuplicateName = "DataTable_DuplicateName";
+public const string DataTable_DuplicateName2 = "DataTable_DuplicateName2";
+public const string DataTable_ForeignPrimaryKey = "DataTable_ForeignPrimaryKey";
+public const string DataTable_InConstraint = "DataTable_InConstraint";
+public const string DataTable_InRelation = "DataTable_InRelation";
+public const string DataTable_InvalidSortString = "DataTable_InvalidSortString";
+public const string DataTable_MissingPrimaryKey = "DataTable_MissingPrimaryKey";
+public const string DataTable_MultipleSimpleContentColumns = "DataTable_MultipleSimpleContentColumns";
+public const string DataTable_NoName = "DataTable_NoName";
+public const string DataTable_NotInTheDataSet = "DataTable_NotInTheDataSet";
+public const string DataTable_OutOfRange = "DataTable_OutOfRange";
+public const string DataTable_SelfnestedDatasetConflictingName = "DataTable_SelfnestedDatasetConflictingName";
+public const string DataTable_TableNotFound = "DataTable_TableNotFound";
+public const string DataViewAllowDeleteDescr = "DataViewAllowDeleteDescr";
+public const string DataViewAllowEditDescr = "DataViewAllowEditDescr";
+public const string DataViewAllowNewDescr = "DataViewAllowNewDescr";
+public const string DataViewApplyDefaultSortDescr = "DataViewApplyDefaultSortDescr";
+public const string DataViewCountDescr = "DataViewCountDescr";
+public const string DataViewDataViewManagerDescr = "DataViewDataViewManagerDescr";
+public const string DataViewIsOpenDescr = "DataViewIsOpenDescr";
+public const string DataViewListChangedDescr = "DataViewListChangedDescr";
+public const string DataViewManagerDataSetDescr = "DataViewManagerDataSetDescr";
+public const string DataViewManagerTableSettingsDescr = "DataViewManagerTableSettingsDescr";
+public const string DataViewRowFilterDescr = "DataViewRowFilterDescr";
+public const string DataViewRowStateFilterDescr = "DataViewRowStateFilterDescr";
+public const string DataViewSortDescr = "DataViewSortDescr";
+public const string DataViewTableDescr = "DataViewTableDescr";
+public const string DataView_AddExternalObject = "DataView_AddExternalObject";
+public const string DataView_AddNewNotAllowNull = "DataView_AddNewNotAllowNull";
+public const string DataView_CanNotBindTable = "DataView_CanNotBindTable";
+public const string DataView_CanNotClear = "DataView_CanNotClear";
+public const string DataView_CanNotDelete = "DataView_CanNotDelete";
+public const string DataView_CanNotEdit = "DataView_CanNotEdit";
+public const string DataView_CanNotSetDataSet = "DataView_CanNotSetDataSet";
+public const string DataView_CanNotSetTable = "DataView_CanNotSetTable";
+public const string DataView_CanNotUse = "DataView_CanNotUse";
+public const string DataView_CanNotUseDataViewManager = "DataView_CanNotUseDataViewManager";
+public const string DataView_CreateChildView = "DataView_CreateChildView";
+public const string DataView_GetElementIndex = "DataView_GetElementIndex";
+public const string DataView_InsertExternalObject = "DataView_InsertExternalObject";
+public const string DataView_NotOpen = "DataView_NotOpen";
+public const string DataView_RemoveExternalObject = "DataView_RemoveExternalObject";
+public const string DataView_SetDataSetFailed = "DataView_SetDataSetFailed";
+public const string DataView_SetFailed = "DataView_SetFailed";
+public const string DataView_SetIListObject = "DataView_SetIListObject";
+public const string DataView_SetRowStateFilter = "DataView_SetRowStateFilter";
+public const string DataView_SetTable = "DataView_SetTable";
+public const string Data_ArgumentContainsNull = "Data_ArgumentContainsNull";
+public const string Data_ArgumentNull = "Data_ArgumentNull";
+public const string Data_ArgumentOutOfRange = "Data_ArgumentOutOfRange";
+public const string Data_CannotModifyCollection = "Data_CannotModifyCollection";
+public const string Data_CaseInsensitiveNameConflict = "Data_CaseInsensitiveNameConflict";
+public const string Data_EnforceConstraints = "Data_EnforceConstraints";
+public const string Data_InvalidOffsetLength = "Data_InvalidOffsetLength";
+public const string Data_NamespaceNameConflict = "Data_NamespaceNameConflict";
+public const string DbCommandBuilder_CatalogLocation = "DbCommandBuilder_CatalogLocation";
+public const string DbCommandBuilder_CatalogSeparator = "DbCommandBuilder_CatalogSeparator";
+public const string DbCommandBuilder_ConflictOption = "DbCommandBuilder_ConflictOption";
+public const string DbCommandBuilder_DataAdapter = "DbCommandBuilder_DataAdapter";
+public const string DbCommandBuilder_QuotePrefix = "DbCommandBuilder_QuotePrefix";
+public const string DbCommandBuilder_QuoteSuffix = "DbCommandBuilder_QuoteSuffix";
+public const string DbCommandBuilder_SchemaSeparator = "DbCommandBuilder_SchemaSeparator";
+public const string DbCommandBuilder_SetAllValues = "DbCommandBuilder_SetAllValues";
+public const string DbCommand_CommandText = "DbCommand_CommandText";
+public const string DbCommand_CommandTimeout = "DbCommand_CommandTimeout";
+public const string DbCommand_CommandType = "DbCommand_CommandType";
+public const string DbCommand_Connection = "DbCommand_Connection";
+public const string DbCommand_Parameters = "DbCommand_Parameters";
+public const string DbCommand_StatementCompleted = "DbCommand_StatementCompleted";
+public const string DbCommand_Transaction = "DbCommand_Transaction";
+public const string DbCommand_UpdatedRowSource = "DbCommand_UpdatedRowSource";
+public const string DbConnectionString_ApplicationIntent = "DbConnectionString_ApplicationIntent";
+public const string DbConnectionString_ApplicationName = "DbConnectionString_ApplicationName";
+public const string DbConnectionString_AsynchronousProcessing = "DbConnectionString_AsynchronousProcessing";
+public const string DbConnectionString_AttachDBFilename = "DbConnectionString_AttachDBFilename";
+public const string DbConnectionString_Authentication = "DbConnectionString_Authentication";
+public const string DbConnectionString_ConnectRetryCount = "DbConnectionString_ConnectRetryCount";
+public const string DbConnectionString_ConnectRetryInterval = "DbConnectionString_ConnectRetryInterval";
+public const string DbConnectionString_ConnectTimeout = "DbConnectionString_ConnectTimeout";
+public const string DbConnectionString_ConnectionReset = "DbConnectionString_ConnectionReset";
+public const string DbConnectionString_ConnectionString = "DbConnectionString_ConnectionString";
+public const string DbConnectionString_ContextConnection = "DbConnectionString_ContextConnection";
+public const string DbConnectionString_CurrentLanguage = "DbConnectionString_CurrentLanguage";
+public const string DbConnectionString_DSN = "DbConnectionString_DSN";
+public const string DbConnectionString_DataSource = "DbConnectionString_DataSource";
+public const string DbConnectionString_Driver = "DbConnectionString_Driver";
+public const string DbConnectionString_Encrypt = "DbConnectionString_Encrypt";
+public const string DbConnectionString_Enlist = "DbConnectionString_Enlist";
+public const string DbConnectionString_FailoverPartner = "DbConnectionString_FailoverPartner";
+public const string DbConnectionString_FileName = "DbConnectionString_FileName";
+public const string DbConnectionString_InitialCatalog = "DbConnectionString_InitialCatalog";
+public const string DbConnectionString_IntegratedSecurity = "DbConnectionString_IntegratedSecurity";
+public const string DbConnectionString_LoadBalanceTimeout = "DbConnectionString_LoadBalanceTimeout";
+public const string DbConnectionString_MaxPoolSize = "DbConnectionString_MaxPoolSize";
+public const string DbConnectionString_MinPoolSize = "DbConnectionString_MinPoolSize";
+public const string DbConnectionString_MultiSubnetFailover = "DbConnectionString_MultiSubnetFailover";
+public const string DbConnectionString_MultipleActiveResultSets = "DbConnectionString_MultipleActiveResultSets";
+public const string DbConnectionString_NamedConnection = "DbConnectionString_NamedConnection";
+public const string DbConnectionString_NetworkLibrary = "DbConnectionString_NetworkLibrary";
+public const string DbConnectionString_OleDbServices = "DbConnectionString_OleDbServices";
+public const string DbConnectionString_PacketSize = "DbConnectionString_PacketSize";
+public const string DbConnectionString_Password = "DbConnectionString_Password";
+public const string DbConnectionString_PersistSecurityInfo = "DbConnectionString_PersistSecurityInfo";
+public const string DbConnectionString_Pooling = "DbConnectionString_Pooling";
+public const string DbConnectionString_Provider = "DbConnectionString_Provider";
+public const string DbConnectionString_Replication  = "DbConnectionString_Replication";
+public const string DbConnectionString_TransactionBinding = "DbConnectionString_TransactionBinding";
+public const string DbConnectionString_TrustServerCertificate = "DbConnectionString_TrustServerCertificate";
+public const string DbConnectionString_TypeSystemVersion = "DbConnectionString_TypeSystemVersion";
+public const string DbConnectionString_UserID = "DbConnectionString_UserID";
+public const string DbConnectionString_UserInstance = "DbConnectionString_UserInstance";
+public const string DbConnectionString_WorkstationID = "DbConnectionString_WorkstationID";
+public const string DbConnection_InfoMessage = "DbConnection_InfoMessage";
+public const string DbConnection_State = "DbConnection_State";
+public const string DbConnection_StateChange = "DbConnection_StateChange";
+public const string DbDataAdapter_DeleteCommand = "DbDataAdapter_DeleteCommand";
+public const string DbDataAdapter_InsertCommand = "DbDataAdapter_InsertCommand";
+public const string DbDataAdapter_RowUpdated = "DbDataAdapter_RowUpdated";
+public const string DbDataAdapter_RowUpdating = "DbDataAdapter_RowUpdating";
+public const string DbDataAdapter_SelectCommand = "DbDataAdapter_SelectCommand";
+public const string DbDataAdapter_UpdateBatchSize = "DbDataAdapter_UpdateBatchSize";
+public const string DbDataAdapter_UpdateCommand = "DbDataAdapter_UpdateCommand";
+public const string DbDataParameter_Precision = "DbDataParameter_Precision";
+public const string DbDataParameter_Scale = "DbDataParameter_Scale";
+public const string DbParameter_DbType = "DbParameter_DbType";
+public const string DbParameter_Direction = "DbParameter_Direction";
+public const string DbParameter_Offset = "DbParameter_Offset";
+public const string DbParameter_ParameterName = "DbParameter_ParameterName";
+public const string DbParameter_Size = "DbParameter_Size";
+public const string DbParameter_SourceColumn = "DbParameter_SourceColumn";
+public const string DbParameter_SourceColumnNullMapping = "DbParameter_SourceColumnNullMapping";
+public const string DbParameter_SourceVersion = "DbParameter_SourceVersion";
+public const string DbParameter_Value = "DbParameter_Value";
+public const string Expr_AggregateArgument = "Expr_AggregateArgument";
+public const string Expr_AggregateUnbound = "Expr_AggregateUnbound";
+public const string Expr_AmbiguousBinop = "Expr_AmbiguousBinop";
+public const string Expr_ArgumentOutofRange = "Expr_ArgumentOutofRange";
+public const string Expr_ArgumentType = "Expr_ArgumentType";
+public const string Expr_ArgumentTypeInteger = "Expr_ArgumentTypeInteger";
+public const string Expr_BindFailure = "Expr_BindFailure";
+public const string Expr_ComputeNotAggregate = "Expr_ComputeNotAggregate";
+public const string Expr_DatatypeConvertion = "Expr_DatatypeConvertion";
+public const string Expr_DatavalueConvertion = "Expr_DatavalueConvertion";
+public const string Expr_EvalNoContext = "Expr_EvalNoContext";
+public const string Expr_ExpressionTooComplex = "Expr_ExpressionTooComplex";
+public const string Expr_ExpressionUnbound = "Expr_ExpressionUnbound";
+public const string Expr_FilterConvertion = "Expr_FilterConvertion";
+public const string Expr_FunctionArgumentCount = "Expr_FunctionArgumentCount";
+public const string Expr_InWithoutList = "Expr_InWithoutList";
+public const string Expr_InWithoutParentheses = "Expr_InWithoutParentheses";
+public const string Expr_InvalidDate = "Expr_InvalidDate";
+public const string Expr_InvalidHoursArgument = "Expr_InvalidHoursArgument";
+public const string Expr_InvalidMinutesArgument = "Expr_InvalidMinutesArgument";
+public const string Expr_InvalidName = "Expr_InvalidName";
+public const string Expr_InvalidNameBracketing = "Expr_InvalidNameBracketing";
+public const string Expr_InvalidPattern = "Expr_InvalidPattern";
+public const string Expr_InvalidString = "Expr_InvalidString";
+public const string Expr_InvalidTimeZoneRange = "Expr_InvalidTimeZoneRange";
+public const string Expr_InvalidType = "Expr_InvalidType";
+public const string Expr_InvokeArgument = "Expr_InvokeArgument";
+public const string Expr_IsSyntax = "Expr_IsSyntax";
+public const string Expr_LookupArgument = "Expr_LookupArgument";
+public const string Expr_MismatchKindandTimeSpan = "Expr_MismatchKindandTimeSpan";
+public const string Expr_MissingOperand = "Expr_MissingOperand";
+public const string Expr_MissingOperandBefore = "Expr_MissingOperandBefore";
+public const string Expr_MissingRightParen = "Expr_MissingRightParen";
+public const string Expr_NYI = "Expr_NYI";
+public const string Expr_NonConstantArgument = "Expr_NonConstantArgument";
+public const string Expr_Overflow = "Expr_Overflow";
+public const string Expr_Syntax = "Expr_Syntax";
+public const string Expr_TooManyRightParentheses = "Expr_TooManyRightParentheses";
+public const string Expr_TypeMismatch = "Expr_TypeMismatch";
+public const string Expr_TypeMismatchInBinop = "Expr_TypeMismatchInBinop";
+public const string Expr_UnboundName = "Expr_UnboundName";
+public const string Expr_UndefinedFunction = "Expr_UndefinedFunction";
+public const string Expr_UnknownToken = "Expr_UnknownToken";
+public const string Expr_UnknownToken1 = "Expr_UnknownToken1";
+public const string Expr_UnresolvedRelation = "Expr_UnresolvedRelation";
+public const string Expr_UnsupportedOperator = "Expr_UnsupportedOperator";
+public const string Expr_UnsupportedType = "Expr_UnsupportedType";
+public const string ExtendedPropertiesDescr = "ExtendedPropertiesDescr";
+public const string ForeignKeyConstraintAcceptRejectRuleDescr = "ForeignKeyConstraintAcceptRejectRuleDescr";
+public const string ForeignKeyConstraintChildColumnsDescr = "ForeignKeyConstraintChildColumnsDescr";
+public const string ForeignKeyConstraintDeleteRuleDescr = "ForeignKeyConstraintDeleteRuleDescr";
+public const string ForeignKeyConstraintParentColumnsDescr = "ForeignKeyConstraintParentColumnsDescr";
+public const string ForeignKeyConstraintUpdateRuleDescr = "ForeignKeyConstraintUpdateRuleDescr";
+public const string ForeignKeyRelatedTableDescr = "ForeignKeyRelatedTableDescr";
+public const string IEnumerableOfSqlDataRecordHasNoRows = "IEnumerableOfSqlDataRecordHasNoRows";
+public const string InvalidSchemaTableOrdinals = "InvalidSchemaTableOrdinals";
+public const string KeyConstraintColumnsDescr = "KeyConstraintColumnsDescr";
+public const string KeyConstraintIsPrimaryKeyDescr = "KeyConstraintIsPrimaryKeyDescr";
+public const string Load_ReadOnlyDataModified = "Load_ReadOnlyDataModified";
+public const string MDF_AmbigousCollectionName = "MDF_AmbigousCollectionName";
+public const string MDF_CollectionNameISNotUnique = "MDF_CollectionNameISNotUnique";
+public const string MDF_DataTableDoesNotExist = "MDF_DataTableDoesNotExist";
+public const string MDF_IncorrectNumberOfDataSourceInformationRows = "MDF_IncorrectNumberOfDataSourceInformationRows";
+public const string MDF_InvalidRestrictionValue = "MDF_InvalidRestrictionValue";
+public const string MDF_InvalidXml = "MDF_InvalidXml";
+public const string MDF_InvalidXmlInvalidValue = "MDF_InvalidXmlInvalidValue";
+public const string MDF_InvalidXmlMissingColumn = "MDF_InvalidXmlMissingColumn";
+public const string MDF_MissingDataSourceInformationColumn = "MDF_MissingDataSourceInformationColumn";
+public const string MDF_MissingRestrictionColumn = "MDF_MissingRestrictionColumn";
+public const string MDF_MissingRestrictionRow = "MDF_MissingRestrictionRow";
+public const string MDF_NoColumns = "MDF_NoColumns";
+public const string MDF_QueryFailed = "MDF_QueryFailed";
+public const string MDF_TooManyRestrictions = "MDF_TooManyRestrictions";
+public const string MDF_UnableToBuildCollection = "MDF_UnableToBuildCollection";
+public const string MDF_UndefinedCollection = "MDF_UndefinedCollection";
+public const string MDF_UndefinedPopulationMechanism = "MDF_UndefinedPopulationMechanism";
+public const string MDF_UnsupportedVersion = "MDF_UnsupportedVersion";
+public const string MetaType_SingleValuedStructNotSupported = "MetaType_SingleValuedStructNotSupported";
+public const string NamedSimpleType_InvalidDuplicateNamedSimpleTypeDelaration = "NamedSimpleType_InvalidDuplicateNamedSimpleTypeDelaration";
+public const string NullSchemaTableDataTypeNotSupported = "NullSchemaTableDataTypeNotSupported";
+public const string ODBC_GetSchemaRestrictionRequired = "ODBC_GetSchemaRestrictionRequired";
+public const string ODBC_NotSupportedEnumerationValue = "ODBC_NotSupportedEnumerationValue";
+public const string ODBC_ODBCCommandText = "ODBC_ODBCCommandText";
+public const string OLEDB_OLEDBCommandText = "OLEDB_OLEDBCommandText";
+public const string OdbcCommandBuilder_DataAdapter = "OdbcCommandBuilder_DataAdapter";
+public const string OdbcConnection_ConnectionString = "OdbcConnection_ConnectionString";
+public const string OdbcConnection_ConnectionStringTooLong = "OdbcConnection_ConnectionStringTooLong";
+public const string OdbcConnection_ConnectionTimeout = "OdbcConnection_ConnectionTimeout";
+public const string OdbcConnection_DataSource = "OdbcConnection_DataSource";
+public const string OdbcConnection_Database = "OdbcConnection_Database";
+public const string OdbcConnection_Driver = "OdbcConnection_Driver";
+public const string OdbcConnection_ServerVersion = "OdbcConnection_ServerVersion";
+public const string OdbcParameter_OdbcType = "OdbcParameter_OdbcType";
+public const string Odbc_CantAllocateEnvironmentHandle = "Odbc_CantAllocateEnvironmentHandle";
+public const string Odbc_CantEnableConnectionpooling = "Odbc_CantEnableConnectionpooling";
+public const string Odbc_CantSetPropertyOnOpenConnection = "Odbc_CantSetPropertyOnOpenConnection";
+public const string Odbc_ConnectionClosed = "Odbc_ConnectionClosed";
+public const string Odbc_ExceptionMessage = "Odbc_ExceptionMessage";
+public const string Odbc_FailedToGetDescriptorHandle = "Odbc_FailedToGetDescriptorHandle";
+public const string Odbc_MDACWrongVersion = "Odbc_MDACWrongVersion";
+public const string Odbc_NegativeArgument = "Odbc_NegativeArgument";
+public const string Odbc_NoMappingForSqlTransactionLevel = "Odbc_NoMappingForSqlTransactionLevel";
+public const string Odbc_NotInTransaction = "Odbc_NotInTransaction";
+public const string Odbc_OpenConnectionNoOwner = "Odbc_OpenConnectionNoOwner";
+public const string Odbc_UnknownSQLType = "Odbc_UnknownSQLType";
+public const string OleDbCommandBuilder_DataAdapter = "OleDbCommandBuilder_DataAdapter";
+public const string OleDbConnection_ConnectionString = "OleDbConnection_ConnectionString";
+public const string OleDbConnection_ConnectionTimeout = "OleDbConnection_ConnectionTimeout";
+public const string OleDbConnection_DataSource = "OleDbConnection_DataSource";
+public const string OleDbConnection_Database = "OleDbConnection_Database";
+public const string OleDbConnection_Provider = "OleDbConnection_Provider";
+public const string OleDbConnection_ServerVersion = "OleDbConnection_ServerVersion";
+public const string OleDbParameter_OleDbType = "OleDbParameter_OleDbType";
+public const string OleDb_AsynchronousNotSupported = "OleDb_AsynchronousNotSupported";
+public const string OleDb_BadAccessor = "OleDb_BadAccessor";
+public const string OleDb_BadStatusRowAccessor = "OleDb_BadStatusRowAccessor";
+public const string OleDb_BadStatus_ParamAcc = "OleDb_BadStatus_ParamAcc";
+public const string OleDb_CantConvertValue = "OleDb_CantConvertValue";
+public const string OleDb_CantCreate = "OleDb_CantCreate";
+public const string OleDb_CommandParameterBadAccessor = "OleDb_CommandParameterBadAccessor";
+public const string OleDb_CommandParameterCantConvertValue = "OleDb_CommandParameterCantConvertValue";
+public const string OleDb_CommandParameterDataOverflow = "OleDb_CommandParameterDataOverflow";
+public const string OleDb_CommandParameterDefault = "OleDb_CommandParameterDefault";
+public const string OleDb_CommandParameterError = "OleDb_CommandParameterError";
+public const string OleDb_CommandParameterSignMismatch = "OleDb_CommandParameterSignMismatch";
+public const string OleDb_CommandParameterUnavailable = "OleDb_CommandParameterUnavailable";
+public const string OleDb_CommandTextNotSupported = "OleDb_CommandTextNotSupported";
+public const string OleDb_ConfigUnableToLoadXmlMetaDataFile = "OleDb_ConfigUnableToLoadXmlMetaDataFile";
+public const string OleDb_ConfigWrongNumberOfValues = "OleDb_ConfigWrongNumberOfValues";
+public const string OleDb_DBBindingGetVector = "OleDb_DBBindingGetVector";
+public const string OleDb_DataOverflow = "OleDb_DataOverflow";
+public const string OleDb_FailedGetDescription = "OleDb_FailedGetDescription";
+public const string OleDb_FailedGetSource = "OleDb_FailedGetSource";
+public const string OleDb_Fill_EmptyRecord = "OleDb_Fill_EmptyRecord";
+public const string OleDb_Fill_EmptyRecordSet = "OleDb_Fill_EmptyRecordSet";
+public const string OleDb_Fill_NotADODB = "OleDb_Fill_NotADODB";
+public const string OleDb_GVtUnknown = "OleDb_GVtUnknown";
+public const string OleDb_IDBInfoNotSupported = "OleDb_IDBInfoNotSupported";
+public const string OleDb_ISourcesRowsetNotSupported = "OleDb_ISourcesRowsetNotSupported";
+public const string OleDb_InvalidProviderSpecified = "OleDb_InvalidProviderSpecified";
+public const string OleDb_InvalidRestrictionsDbInfoKeywords = "OleDb_InvalidRestrictionsDbInfoKeywords";
+public const string OleDb_InvalidRestrictionsDbInfoLiteral = "OleDb_InvalidRestrictionsDbInfoLiteral";
+public const string OleDb_InvalidRestrictionsSchemaGuids = "OleDb_InvalidRestrictionsSchemaGuids";
+public const string OleDb_MDACNotAvailable = "OleDb_MDACNotAvailable";
+public const string OleDb_MDACWrongVersion = "OleDb_MDACWrongVersion";
+public const string OleDb_MSDASQLNotSupported = "OleDb_MSDASQLNotSupported";
+public const string OleDb_NoErrorInformation = "OleDb_NoErrorInformation";
+public const string OleDb_NoErrorInformation2 = "OleDb_NoErrorInformation2";
+public const string OleDb_NoErrorMessage = "OleDb_NoErrorMessage";
+public const string OleDb_NoProviderSpecified = "OleDb_NoProviderSpecified";
+public const string OleDb_NoProviderSupportForParameters = "OleDb_NoProviderSupportForParameters";
+public const string OleDb_NoProviderSupportForSProcResetParameters = "OleDb_NoProviderSupportForSProcResetParameters";
+public const string OleDb_NotSupportedSchemaTable = "OleDb_NotSupportedSchemaTable";
+public const string OleDb_PossiblePromptNotUserInteractive = "OleDb_PossiblePromptNotUserInteractive";
+public const string OleDb_PropertyBadColumn = "OleDb_PropertyBadColumn";
+public const string OleDb_PropertyBadOption = "OleDb_PropertyBadOption";
+public const string OleDb_PropertyBadValue = "OleDb_PropertyBadValue";
+public const string OleDb_PropertyConflicting = "OleDb_PropertyConflicting";
+public const string OleDb_PropertyNotAllSettable = "OleDb_PropertyNotAllSettable";
+public const string OleDb_PropertyNotAvailable = "OleDb_PropertyNotAvailable";
+public const string OleDb_PropertyNotSet = "OleDb_PropertyNotSet";
+public const string OleDb_PropertyNotSettable = "OleDb_PropertyNotSettable";
+public const string OleDb_PropertyNotSupported = "OleDb_PropertyNotSupported";
+public const string OleDb_PropertyStatusUnknown = "OleDb_PropertyStatusUnknown";
+public const string OleDb_ProviderUnavailable = "OleDb_ProviderUnavailable";
+public const string OleDb_SVtUnknown = "OleDb_SVtUnknown";
+public const string OleDb_SchemaRowsetsNotSupported = "OleDb_SchemaRowsetsNotSupported";
+public const string OleDb_SignMismatch = "OleDb_SignMismatch";
+public const string OleDb_ThreadApartmentState = "OleDb_ThreadApartmentState";
+public const string OleDb_TransactionsNotSupported = "OleDb_TransactionsNotSupported";
+public const string OleDb_Unavailable = "OleDb_Unavailable";
+public const string OleDb_UnexpectedStatusValue = "OleDb_UnexpectedStatusValue";
+public const string OleDb_UninitializedParameters = "OleDb_UninitializedParameters";
+public const string Range_Argument = "Range_Argument";
+public const string Range_NullRange = "Range_NullRange";
+public const string RbTree_EnumerationBroken = "RbTree_EnumerationBroken";
+public const string RbTree_InvalidState = "RbTree_InvalidState";
+public const string RecordManager_MinimumCapacity = "RecordManager_MinimumCapacity";
+public const string SQLCR_AllAttemptsFailed = "SQLCR_AllAttemptsFailed";
+public const string SQLCR_EncryptionChanged = "SQLCR_EncryptionChanged";
+public const string SQLCR_InvalidConnectRetryCountValue = "SQLCR_InvalidConnectRetryCountValue";
+public const string SQLCR_InvalidConnectRetryIntervalValue = "SQLCR_InvalidConnectRetryIntervalValue";
+public const string SQLCR_NextAttemptWillExceedQueryTimeout = "SQLCR_NextAttemptWillExceedQueryTimeout";
+public const string SQLCR_NoCRAckAtReconnection = "SQLCR_NoCRAckAtReconnection";
+public const string SQLCR_TDSVestionNotPreserved = "SQLCR_TDSVestionNotPreserved";
+public const string SQLCR_UnrecoverableClient = "SQLCR_UnrecoverableClient";
+public const string SQLCR_UnrecoverableServer = "SQLCR_UnrecoverableServer";
+public const string SQLMSF_FailoverPartnerNotSupported = "SQLMSF_FailoverPartnerNotSupported";
+public const string SQLNotify_AlreadyHasCommand = "SQLNotify_AlreadyHasCommand";
+public const string SQLNotify_ErrorFormat = "SQLNotify_ErrorFormat";
+public const string SQLROR_FailoverNotSupported = "SQLROR_FailoverNotSupported";
+public const string SQLROR_InvalidRoutingInfo = "SQLROR_InvalidRoutingInfo";
+public const string SQLROR_RecursiveRoutingNotSupported = "SQLROR_RecursiveRoutingNotSupported";
+public const string SQLROR_TimeoutAfterRoutingInfo = "SQLROR_TimeoutAfterRoutingInfo";
+public const string SQLROR_UnexpectedRoutingInfo = "SQLROR_UnexpectedRoutingInfo";
+public const string SQLTVP_TableTypeCanOnlyBeParameter = "SQLTVP_TableTypeCanOnlyBeParameter";
+public const string SQLUDT_InvalidSqlType = "SQLUDT_InvalidSqlType";
+public const string SQLUDT_InvalidUdtTypeName = "SQLUDT_InvalidUdtTypeName";
+public const string SQLUDT_MaxByteSizeValue = "SQLUDT_MaxByteSizeValue";
+public const string SQLUDT_Unexpected = "SQLUDT_Unexpected";
+public const string SQLUDT_UnexpectedUdtTypeName = "SQLUDT_UnexpectedUdtTypeName";
+public const string SQL_ADALFailure = "SQL_ADALFailure";
+public const string SQL_ADALInitializeError = "SQL_ADALInitializeError";
+public const string SQL_ADALInnerException = "SQL_ADALInnerException";
+public const string SQL_ArgumentLengthMismatch = "SQL_ArgumentLengthMismatch";
+public const string SQL_AsyncConnectionRequired = "SQL_AsyncConnectionRequired";
+public const string SQL_AsyncOperationCompleted = "SQL_AsyncOperationCompleted";
+public const string SQL_AuthenticationAndIntegratedSecurity = "SQL_AuthenticationAndIntegratedSecurity";
+public const string SQL_BatchedUpdatesNotAvailableOnContextConnection = "SQL_BatchedUpdatesNotAvailableOnContextConnection";
+public const string SQL_BulkCopyDestinationTableName = "SQL_BulkCopyDestinationTableName";
+public const string SQL_BulkLoadCannotConvertValue = "SQL_BulkLoadCannotConvertValue";
+public const string SQL_BulkLoadConflictingTransactionOption = "SQL_BulkLoadConflictingTransactionOption";
+public const string SQL_BulkLoadExistingTransaction = "SQL_BulkLoadExistingTransaction";
+public const string SQL_BulkLoadInvalidDestinationTable = "SQL_BulkLoadInvalidDestinationTable";
+public const string SQL_BulkLoadInvalidOperationInsideEvent = "SQL_BulkLoadInvalidOperationInsideEvent";
+public const string SQL_BulkLoadInvalidTimeout = "SQL_BulkLoadInvalidTimeout";
+public const string SQL_BulkLoadInvalidVariantValue = "SQL_BulkLoadInvalidVariantValue";
+public const string SQL_BulkLoadMappingInaccessible = "SQL_BulkLoadMappingInaccessible";
+public const string SQL_BulkLoadMappingsNamesOrOrdinalsOnly = "SQL_BulkLoadMappingsNamesOrOrdinalsOnly";
+public const string SQL_BulkLoadMissingDestinationTable = "SQL_BulkLoadMissingDestinationTable";
+public const string SQL_BulkLoadNoCollation = "SQL_BulkLoadNoCollation";
+public const string SQL_BulkLoadNonMatchingColumnMapping = "SQL_BulkLoadNonMatchingColumnMapping";
+public const string SQL_BulkLoadNonMatchingColumnName = "SQL_BulkLoadNonMatchingColumnName";
+public const string SQL_BulkLoadNotAllowDBNull = "SQL_BulkLoadNotAllowDBNull";
+public const string SQL_BulkLoadPendingOperation = "SQL_BulkLoadPendingOperation";
+public const string SQL_BulkLoadStringTooLong = "SQL_BulkLoadStringTooLong";
+public const string SQL_CannotGetDTCAddress = "SQL_CannotGetDTCAddress";
+public const string SQL_CannotModifyPropertyAsyncOperationInProgress = "SQL_CannotModifyPropertyAsyncOperationInProgress";
+public const string SQL_ChangePasswordArgumentMissing = "SQL_ChangePasswordArgumentMissing";
+public const string SQL_ChangePasswordConflictsWithSSPI = "SQL_ChangePasswordConflictsWithSSPI";
+public const string SQL_ChangePasswordRequiresYukon = "SQL_ChangePasswordRequiresYukon";
+public const string SQL_ChangePasswordUseOfUnallowedKey = "SQL_ChangePasswordUseOfUnallowedKey";
+public const string SQL_ConnectionDoomed = "SQL_ConnectionDoomed";
+public const string SQL_ConnectionLockedForBcpEvent = "SQL_ConnectionLockedForBcpEvent";
+public const string SQL_ContextAllowsLimitedKeywords = "SQL_ContextAllowsLimitedKeywords";
+public const string SQL_ContextAllowsOnlyTypeSystem2005 = "SQL_ContextAllowsOnlyTypeSystem2005";
+public const string SQL_ContextConnectionIsInUse = "SQL_ContextConnectionIsInUse";
+public const string SQL_ContextUnavailableOutOfProc = "SQL_ContextUnavailableOutOfProc";
+public const string SQL_ContextUnavailableWhileInProc = "SQL_ContextUnavailableWhileInProc";
+public const string SQL_CredentialsNotProvided = "SQL_CredentialsNotProvided";
+public const string SQL_CultureIdError = "SQL_CultureIdError";
+public const string SQL_Duration_Login_Begin = "SQL_Duration_Login_Begin";
+public const string SQL_Duration_Login_ProcessConnectionAuth = "SQL_Duration_Login_ProcessConnectionAuth";
+public const string SQL_Duration_PostLogin = "SQL_Duration_PostLogin";
+public const string SQL_Duration_PreLoginHandshake = "SQL_Duration_PreLoginHandshake";
+public const string SQL_Duration_PreLogin_Begin = "SQL_Duration_PreLogin_Begin";
+public const string SQL_EncryptionNotSupportedByClient = "SQL_EncryptionNotSupportedByClient";
+public const string SQL_EncryptionNotSupportedByServer = "SQL_EncryptionNotSupportedByServer";
+public const string SQL_EnumeratedRecordFieldCountChanged = "SQL_EnumeratedRecordFieldCountChanged";
+public const string SQL_EnumeratedRecordMetaDataChanged = "SQL_EnumeratedRecordMetaDataChanged";
+public const string SQL_ExClientConnectionId = "SQL_ExClientConnectionId";
+public const string SQL_ExErrorNumberStateClass = "SQL_ExErrorNumberStateClass";
+public const string SQL_ExOriginalClientConnectionId = "SQL_ExOriginalClientConnectionId";
+public const string SQL_ExRoutingDestination = "SQL_ExRoutingDestination";
+public const string SQL_ExceedsMaxDataLength = "SQL_ExceedsMaxDataLength";
+public const string SQL_FatalTimeout = "SQL_FatalTimeout";
+public const string SQL_InstanceFailure = "SQL_InstanceFailure";
+public const string SQL_IntegratedWithUserIDAndPassword = "SQL_IntegratedWithUserIDAndPassword";
+public const string SQL_InvalidBufferSizeOrIndex = "SQL_InvalidBufferSizeOrIndex";
+public const string SQL_InvalidDataLength = "SQL_InvalidDataLength";
+public const string SQL_InvalidInternalPacketSize = "SQL_InvalidInternalPacketSize";
+public const string SQL_InvalidOptionLength = "SQL_InvalidOptionLength";
+public const string SQL_InvalidPacketSizeValue = "SQL_InvalidPacketSizeValue";
+public const string SQL_InvalidParameterNameLength = "SQL_InvalidParameterNameLength";
+public const string SQL_InvalidParameterTypeNameFormat = "SQL_InvalidParameterTypeNameFormat";
+public const string SQL_InvalidPartnerConfiguration = "SQL_InvalidPartnerConfiguration";
+public const string SQL_InvalidRead = "SQL_InvalidRead";
+public const string SQL_InvalidSQLServerVersionUnknown = "SQL_InvalidSQLServerVersionUnknown";
+public const string SQL_InvalidSSPIPacketSize = "SQL_InvalidSSPIPacketSize";
+public const string SQL_InvalidSqlDbTypeWithOneAllowedType = "SQL_InvalidSqlDbTypeWithOneAllowedType";
+public const string SQL_InvalidTDSPacketSize = "SQL_InvalidTDSPacketSize";
+public const string SQL_InvalidTDSVersion = "SQL_InvalidTDSVersion";
+public const string SQL_InvalidUdt3PartNameFormat = "SQL_InvalidUdt3PartNameFormat";
+public const string SQL_MarsUnsupportedOnConnection = "SQL_MarsUnsupportedOnConnection";
+public const string SQL_MoneyOverflow = "SQL_MoneyOverflow";
+public const string SQL_NestedTransactionScopesNotSupported = "SQL_NestedTransactionScopesNotSupported";
+public const string SQL_NonBlobColumn = "SQL_NonBlobColumn";
+public const string SQL_NonCharColumn = "SQL_NonCharColumn";
+public const string SQL_NonLocalSSEInstance = "SQL_NonLocalSSEInstance";
+public const string SQL_NonXmlResult = "SQL_NonXmlResult";
+public const string SQL_NotAvailableOnContextConnection = "SQL_NotAvailableOnContextConnection";
+public const string SQL_NotSupportedEnumerationValue = "SQL_NotSupportedEnumerationValue";
+public const string SQL_NotificationsNotAvailableOnContextConnection = "SQL_NotificationsNotAvailableOnContextConnection";
+public const string SQL_NotificationsRequireYukon = "SQL_NotificationsRequireYukon";
+public const string SQL_NullEmptyTransactionName = "SQL_NullEmptyTransactionName";
+public const string SQL_OpenResultCountExceeded = "SQL_OpenResultCountExceeded";
+public const string SQL_OperationCancelled = "SQL_OperationCancelled";
+public const string SQL_ParameterInvalidVariant = "SQL_ParameterInvalidVariant";
+public const string SQL_ParameterTypeNameRequired = "SQL_ParameterTypeNameRequired";
+public const string SQL_ParsingErrorAuthLibraryType = "SQL_ParsingErrorAuthLibraryType";
+public const string SQL_ParsingErrorFeatureId = "SQL_ParsingErrorFeatureId";
+public const string SQL_ParsingErrorLength = "SQL_ParsingErrorLength";
+public const string SQL_ParsingErrorOffset = "SQL_ParsingErrorOffset";
+public const string SQL_ParsingErrorStatus = "SQL_ParsingErrorStatus";
+public const string SQL_ParsingErrorToken = "SQL_ParsingErrorToken";
+public const string SQL_ParsingErrorValue = "SQL_ParsingErrorValue";
+public const string SQL_ParsingErrorWithState = "SQL_ParsingErrorWithState";
+public const string SQL_PendingBeginXXXExists = "SQL_PendingBeginXXXExists";
+public const string SQL_PipeErrorRequiresSendEnd = "SQL_PipeErrorRequiresSendEnd";
+public const string SQL_PrecisionValueOutOfRange = "SQL_PrecisionValueOutOfRange";
+public const string SQL_SNIPacketAllocationFailure = "SQL_SNIPacketAllocationFailure";
+public const string SQL_SSPIGenerateError = "SQL_SSPIGenerateError";
+public const string SQL_SSPIInitializeError = "SQL_SSPIInitializeError";
+public const string SQL_ScaleValueOutOfRange = "SQL_ScaleValueOutOfRange";
+public const string SQL_SettingCredentialWithIntegrated = "SQL_SettingCredentialWithIntegrated";
+public const string SQL_SettingIntegratedWithCredential = "SQL_SettingIntegratedWithCredential";
+public const string SQL_SevereError = "SQL_SevereError";
+public const string SQL_SmallDateTimeOverflow = "SQL_SmallDateTimeOverflow";
+public const string SQL_SnapshotNotSupported = "SQL_SnapshotNotSupported";
+public const string SQL_SqlCommandCommandText = "SQL_SqlCommandCommandText";
+public const string SQL_SqlRecordReadOnly = "SQL_SqlRecordReadOnly";
+public const string SQL_SqlRecordReadOnly2 = "SQL_SqlRecordReadOnly2";
+public const string SQL_SqlResultSetClosed = "SQL_SqlResultSetClosed";
+public const string SQL_SqlResultSetClosed2 = "SQL_SqlResultSetClosed2";
+public const string SQL_SqlResultSetCommandNotInSameConnection = "SQL_SqlResultSetCommandNotInSameConnection";
+public const string SQL_SqlResultSetNoAcceptableCursor = "SQL_SqlResultSetNoAcceptableCursor";
+public const string SQL_SqlResultSetRowDeleted = "SQL_SqlResultSetRowDeleted";
+public const string SQL_SqlResultSetRowDeleted2 = "SQL_SqlResultSetRowDeleted2";
+public const string SQL_StreamNotSupportOnColumnType = "SQL_StreamNotSupportOnColumnType";
+public const string SQL_StreamReadNotSupported = "SQL_StreamReadNotSupported";
+public const string SQL_StreamSeekNotSupported = "SQL_StreamSeekNotSupported";
+public const string SQL_StreamWriteNotSupported = "SQL_StreamWriteNotSupported";
+public const string SQL_TDSParserTableName = "SQL_TDSParserTableName";
+public const string SQL_TextReaderNotSupportOnColumnType = "SQL_TextReaderNotSupportOnColumnType";
+public const string SQL_TimeOverflow = "SQL_TimeOverflow";
+public const string SQL_TimeScaleValueOutOfRange = "SQL_TimeScaleValueOutOfRange";
+public const string SQL_Timeout = "SQL_Timeout";
+public const string SQL_Timeout_FailoverInfo = "SQL_Timeout_FailoverInfo";
+public const string SQL_Timeout_Login_Begin = "SQL_Timeout_Login_Begin";
+public const string SQL_Timeout_Login_ProcessConnectionAuth = "SQL_Timeout_Login_ProcessConnectionAuth";
+public const string SQL_Timeout_PostLogin = "SQL_Timeout_PostLogin";
+public const string SQL_Timeout_PreLogin_Begin = "SQL_Timeout_PreLogin_Begin";
+public const string SQL_Timeout_PreLogin_ConsumeHandshake = "SQL_Timeout_PreLogin_ConsumeHandshake";
+public const string SQL_Timeout_PreLogin_InitializeConnection = "SQL_Timeout_PreLogin_InitializeConnection";
+public const string SQL_Timeout_PreLogin_SendHandshake = "SQL_Timeout_PreLogin_SendHandshake";
+public const string SQL_Timeout_RoutingDestinationInfo = "SQL_Timeout_RoutingDestinationInfo";
+public const string SQL_TooManyValues = "SQL_TooManyValues";
+public const string SQL_TypeName = "SQL_TypeName";
+public const string SQL_UDTTypeName = "SQL_UDTTypeName";
+public const string SQL_UnexpectedSmiEvent = "SQL_UnexpectedSmiEvent";
+public const string SQL_UnknownSysTxIsolationLevel = "SQL_UnknownSysTxIsolationLevel";
+public const string SQL_UserInstanceFailoverNotCompatible = "SQL_UserInstanceFailoverNotCompatible";
+public const string SQL_UserInstanceFailure = "SQL_UserInstanceFailure";
+public const string SQL_UserInstanceNotAvailableInProc = "SQL_UserInstanceNotAvailableInProc";
+public const string SQL_WrongType = "SQL_WrongType";
+public const string SQL_XmlReaderNotSupportOnColumnType = "SQL_XmlReaderNotSupportOnColumnType";
+public const string Snix_PreLogin = "Snix_PreLogin";
+public const string SqlCommandBuilder_DataAdapter = "SqlCommandBuilder_DataAdapter";
+public const string SqlCommand_Notification = "SqlCommand_Notification";
+public const string SqlCommand_NotificationAutoEnlist = "SqlCommand_NotificationAutoEnlist";
+public const string SqlConnection_AccessToken = "SqlConnection_AccessToken";
+public const string SqlConnection_ClientConnectionId = "SqlConnection_ClientConnectionId";
+public const string SqlConnection_ConnectionString = "SqlConnection_ConnectionString";
+public const string SqlConnection_ConnectionTimeout = "SqlConnection_ConnectionTimeout";
+public const string SqlConnection_Credential = "SqlConnection_Credential";
+public const string SqlConnection_DataSource = "SqlConnection_DataSource";
+public const string SqlConnection_Database = "SqlConnection_Database";
+public const string SqlConnection_PacketSize = "SqlConnection_PacketSize";
+public const string SqlConnection_ServerVersion = "SqlConnection_ServerVersion";
+public const string SqlConnection_StatisticsEnabled = "SqlConnection_StatisticsEnabled";
+public const string SqlConnection_WorkstationId = "SqlConnection_WorkstationId";
+public const string SqlConvert_ConvertFailed = "SqlConvert_ConvertFailed";
+public const string SqlDelegatedTransaction_PromotionFailed = "SqlDelegatedTransaction_PromotionFailed";
+public const string SqlDependency_AddCommandDependency = "SqlDependency_AddCommandDependency";
+public const string SqlDependency_DatabaseBrokerDisabled = "SqlDependency_DatabaseBrokerDisabled";
+public const string SqlDependency_DefaultOptionsButNoStart = "SqlDependency_DefaultOptionsButNoStart";
+public const string SqlDependency_DuplicateStart = "SqlDependency_DuplicateStart";
+public const string SqlDependency_EventNoDuplicate = "SqlDependency_EventNoDuplicate";
+public const string SqlDependency_HasChanges = "SqlDependency_HasChanges";
+public const string SqlDependency_Id = "SqlDependency_Id";
+public const string SqlDependency_IdMismatch = "SqlDependency_IdMismatch";
+public const string SqlDependency_InvalidTimeout = "SqlDependency_InvalidTimeout";
+public const string SqlDependency_NoMatchingServerDatabaseStart = "SqlDependency_NoMatchingServerDatabaseStart";
+public const string SqlDependency_NoMatchingServerStart = "SqlDependency_NoMatchingServerStart";
+public const string SqlDependency_OnChange = "SqlDependency_OnChange";
+public const string SqlFileStream_FileAlreadyInTransaction  = "SqlFileStream_FileAlreadyInTransaction";
+public const string SqlFileStream_InvalidParameter  = "SqlFileStream_InvalidParameter";
+public const string SqlFileStream_InvalidPath = "SqlFileStream_InvalidPath";
+public const string SqlFileStream_PathNotValidDiskResource  = "SqlFileStream_PathNotValidDiskResource";
+public const string SqlMetaData_InvalidSqlDbTypeForConstructorFormat = "SqlMetaData_InvalidSqlDbTypeForConstructorFormat";
+public const string SqlMetaData_NameTooLong = "SqlMetaData_NameTooLong";
+public const string SqlMetaData_NoMetadata = "SqlMetaData_NoMetadata";
+public const string SqlMetaData_SpecifyBothSortOrderAndOrdinal = "SqlMetaData_SpecifyBothSortOrderAndOrdinal";
+public const string SqlMisc_AlreadyFilledMessage = "SqlMisc_AlreadyFilledMessage";
+public const string SqlMisc_ArithOverflowMessage = "SqlMisc_ArithOverflowMessage";
+public const string SqlMisc_BufferInsufficientMessage = "SqlMisc_BufferInsufficientMessage";
+public const string SqlMisc_ClosedXmlReaderMessage = "SqlMisc_ClosedXmlReaderMessage";
+public const string SqlMisc_CompareDiffCollationMessage = "SqlMisc_CompareDiffCollationMessage";
+public const string SqlMisc_ConcatDiffCollationMessage = "SqlMisc_ConcatDiffCollationMessage";
+public const string SqlMisc_ConversionOverflowMessage = "SqlMisc_ConversionOverflowMessage";
+public const string SqlMisc_DateTimeOverflowMessage = "SqlMisc_DateTimeOverflowMessage";
+public const string SqlMisc_DivideByZeroMessage = "SqlMisc_DivideByZeroMessage";
+public const string SqlMisc_FormatMessage = "SqlMisc_FormatMessage";
+public const string SqlMisc_InvalidArraySizeMessage = "SqlMisc_InvalidArraySizeMessage";
+public const string SqlMisc_InvalidDateTimeMessage = "SqlMisc_InvalidDateTimeMessage";
+public const string SqlMisc_InvalidFlagMessage = "SqlMisc_InvalidFlagMessage";
+public const string SqlMisc_InvalidOpStreamClosed = "SqlMisc_InvalidOpStreamClosed";
+public const string SqlMisc_InvalidOpStreamNonReadable = "SqlMisc_InvalidOpStreamNonReadable";
+public const string SqlMisc_InvalidOpStreamNonSeekable = "SqlMisc_InvalidOpStreamNonSeekable";
+public const string SqlMisc_InvalidOpStreamNonWritable = "SqlMisc_InvalidOpStreamNonWritable";
+public const string SqlMisc_InvalidPrecScaleMessage = "SqlMisc_InvalidPrecScaleMessage";
+public const string SqlMisc_MessageString = "SqlMisc_MessageString";
+public const string SqlMisc_NoBufferMessage = "SqlMisc_NoBufferMessage";
+public const string SqlMisc_NotFilledMessage = "SqlMisc_NotFilledMessage";
+public const string SqlMisc_NullString = "SqlMisc_NullString";
+public const string SqlMisc_NullValueMessage = "SqlMisc_NullValueMessage";
+public const string SqlMisc_NumeToDecOverflowMessage = "SqlMisc_NumeToDecOverflowMessage";
+public const string SqlMisc_SqlTypeMessage = "SqlMisc_SqlTypeMessage";
+public const string SqlMisc_StreamErrorMessage = "SqlMisc_StreamErrorMessage";
+public const string SqlMisc_SubclassMustOverride = "SqlMisc_SubclassMustOverride";
+public const string SqlMisc_TimeZoneSpecifiedMessage = "SqlMisc_TimeZoneSpecifiedMessage";
+public const string SqlMisc_TruncationMaxDataMessage = "SqlMisc_TruncationMaxDataMessage";
+public const string SqlMisc_TruncationMessage = "SqlMisc_TruncationMessage";
+public const string SqlMisc_WriteNonZeroOffsetOnNullMessage = "SqlMisc_WriteNonZeroOffsetOnNullMessage";
+public const string SqlMisc_WriteOffsetLargerThanLenMessage = "SqlMisc_WriteOffsetLargerThanLenMessage";
+public const string SqlNotify_SqlDepCannotBeCreatedInProc = "SqlNotify_SqlDepCannotBeCreatedInProc";
+public const string SqlParameter_DBNullNotSupportedForTVP = "SqlParameter_DBNullNotSupportedForTVP";
+public const string SqlParameter_InvalidTableDerivedPrecisionForTvp = "SqlParameter_InvalidTableDerivedPrecisionForTvp";
+public const string SqlParameter_ParameterName = "SqlParameter_ParameterName";
+public const string SqlParameter_SqlDbType = "SqlParameter_SqlDbType";
+public const string SqlParameter_UnexpectedTypeNameForNonStruct = "SqlParameter_UnexpectedTypeNameForNonStruct";
+public const string SqlParameter_UnsupportedTVPOutputParameter = "SqlParameter_UnsupportedTVPOutputParameter";
+public const string SqlParameter_XmlSchemaCollectionDatabase = "SqlParameter_XmlSchemaCollectionDatabase";
+public const string SqlParameter_XmlSchemaCollectionName = "SqlParameter_XmlSchemaCollectionName";
+public const string SqlParameter_XmlSchemaCollectionOwningSchema = "SqlParameter_XmlSchemaCollectionOwningSchema";
+public const string SqlPipe_AlreadyHasAnOpenResultSet = "SqlPipe_AlreadyHasAnOpenResultSet";
+public const string SqlPipe_CommandHookedUpToNonContextConnection = "SqlPipe_CommandHookedUpToNonContextConnection";
+public const string SqlPipe_DoesNotHaveAnOpenResultSet = "SqlPipe_DoesNotHaveAnOpenResultSet";
+public const string SqlPipe_IsBusy = "SqlPipe_IsBusy";
+public const string SqlPipe_MessageTooLong = "SqlPipe_MessageTooLong";
+public const string SqlProvider_DuplicateSortOrdinal = "SqlProvider_DuplicateSortOrdinal";
+public const string SqlProvider_InvalidDataColumnMaxLength = "SqlProvider_InvalidDataColumnMaxLength";
+public const string SqlProvider_InvalidDataColumnType = "SqlProvider_InvalidDataColumnType";
+public const string SqlProvider_MissingSortOrdinal = "SqlProvider_MissingSortOrdinal";
+public const string SqlProvider_NotEnoughColumnsInStructuredType = "SqlProvider_NotEnoughColumnsInStructuredType";
+public const string SqlProvider_SortOrdinalGreaterThanFieldCount = "SqlProvider_SortOrdinalGreaterThanFieldCount";
+public const string SqlUdtReason_NoUdtAttribute = "SqlUdtReason_NoUdtAttribute";
+public const string SqlUdt_InvalidUdtMessage = "SqlUdt_InvalidUdtMessage";
+public const string Sql_BulkLoadLcidMismatch = "Sql_BulkLoadLcidMismatch";
+public const string Sql_CanotCreateNormalizer = "Sql_CanotCreateNormalizer";
+public const string Sql_InternalError = "Sql_InternalError";
+public const string Sql_MismatchedMetaDataDirectionArrayLengths = "Sql_MismatchedMetaDataDirectionArrayLengths";
+public const string Sql_NullCommandText = "Sql_NullCommandText";
+public const string TCE_BatchedUpdateColumnEncryptionSettingMismatch = "TCE_BatchedUpdateColumnEncryptionSettingMismatch";
+public const string TCE_CanOnlyCallOnce = "TCE_CanOnlyCallOnce";
+public const string TCE_CertificateNotFound = "TCE_CertificateNotFound";
+public const string TCE_CertificateNotFoundSysErr = "TCE_CertificateNotFoundSysErr";
+public const string TCE_CertificateWithNoPrivateKey = "TCE_CertificateWithNoPrivateKey";
+public const string TCE_CertificateWithNoPrivateKeySysErr = "TCE_CertificateWithNoPrivateKeySysErr";
+public const string TCE_ColumnDecryptionFailed = "TCE_ColumnDecryptionFailed";
+public const string TCE_DbConnectionString_ColumnEncryptionSetting = "TCE_DbConnectionString_ColumnEncryptionSetting";
+public const string TCE_DecryptionFailed = "TCE_DecryptionFailed";
+public const string TCE_EmptyCertificateThumbprint = "TCE_EmptyCertificateThumbprint";
+public const string TCE_EmptyCertificateThumbprintSysErr = "TCE_EmptyCertificateThumbprintSysErr";
+public const string TCE_EmptyColumnEncryptionKey = "TCE_EmptyColumnEncryptionKey";
+public const string TCE_EmptyEncryptedColumnEncryptionKey = "TCE_EmptyEncryptedColumnEncryptionKey";
+public const string TCE_EmptyProviderName = "TCE_EmptyProviderName";
+public const string TCE_InvalidAlgorithmVersion = "TCE_InvalidAlgorithmVersion";
+public const string TCE_InvalidAlgorithmVersionInEncryptedCEK = "TCE_InvalidAlgorithmVersionInEncryptedCEK";
+public const string TCE_InvalidAuthenticationTag = "TCE_InvalidAuthenticationTag";
+public const string TCE_InvalidCertificateLocation = "TCE_InvalidCertificateLocation";
+public const string TCE_InvalidCertificateLocationSysErr = "TCE_InvalidCertificateLocationSysErr";
+public const string TCE_InvalidCertificatePath = "TCE_InvalidCertificatePath";
+public const string TCE_InvalidCertificatePathSysErr = "TCE_InvalidCertificatePathSysErr";
+public const string TCE_InvalidCertificateSignature = "TCE_InvalidCertificateSignature";
+public const string TCE_InvalidCertificateStore = "TCE_InvalidCertificateStore";
+public const string TCE_InvalidCertificateStoreSysErr = "TCE_InvalidCertificateStoreSysErr";
+public const string TCE_InvalidCipherTextSize = "TCE_InvalidCipherTextSize";
+public const string TCE_InvalidCiphertextLengthInEncryptedCEK = "TCE_InvalidCiphertextLengthInEncryptedCEK";
+public const string TCE_InvalidCustomKeyStoreProviderName = "TCE_InvalidCustomKeyStoreProviderName";
+public const string TCE_InvalidEncryptionKeyOrdinal = "TCE_InvalidEncryptionKeyOrdinal";
+public const string TCE_InvalidEncryptionType = "TCE_InvalidEncryptionType";
+public const string TCE_InvalidKeyEncryptionAlgorithm = "TCE_InvalidKeyEncryptionAlgorithm";
+public const string TCE_InvalidKeyEncryptionAlgorithmSysErr = "TCE_InvalidKeyEncryptionAlgorithmSysErr";
+public const string TCE_InvalidKeySize = "TCE_InvalidKeySize";
+public const string TCE_InvalidSignatureInEncryptedCEK = "TCE_InvalidSignatureInEncryptedCEK";
+public const string TCE_KeyDecryptionFailed = "TCE_KeyDecryptionFailed";
+public const string TCE_KeyDecryptionFailedCertStore = "TCE_KeyDecryptionFailedCertStore";
+public const string TCE_LargeCertificatePathLength = "TCE_LargeCertificatePathLength";
+public const string TCE_LargeCertificatePathLengthSysErr = "TCE_LargeCertificatePathLengthSysErr";
+public const string TCE_NotSupportedByServer = "TCE_NotSupportedByServer";
+public const string TCE_NullCertificatePath = "TCE_NullCertificatePath";
+public const string TCE_NullCertificatePathSysErr = "TCE_NullCertificatePathSysErr";
+public const string TCE_NullCipherText = "TCE_NullCipherText";
+public const string TCE_NullColumnEncryptionAlgorithm = "TCE_NullColumnEncryptionAlgorithm";
+public const string TCE_NullColumnEncryptionKey = "TCE_NullColumnEncryptionKey";
+public const string TCE_NullColumnEncryptionKeySysErr = "TCE_NullColumnEncryptionKeySysErr";
+public const string TCE_NullCustomKeyStoreProviderDictionary = "TCE_NullCustomKeyStoreProviderDictionary";
+public const string TCE_NullEncryptedColumnEncryptionKey = "TCE_NullEncryptedColumnEncryptionKey";
+public const string TCE_NullKeyEncryptionAlgorithm = "TCE_NullKeyEncryptionAlgorithm";
+public const string TCE_NullKeyEncryptionAlgorithmSysErr = "TCE_NullKeyEncryptionAlgorithmSysErr";
+public const string TCE_NullPlainText = "TCE_NullPlainText";
+public const string TCE_NullProviderValue = "TCE_NullProviderValue";
+public const string TCE_ParamDecryptionFailed = "TCE_ParamDecryptionFailed";
+public const string TCE_ParamEncryptionFailed = "TCE_ParamEncryptionFailed";
+public const string TCE_ParamEncryptionMetaDataMissing = "TCE_ParamEncryptionMetaDataMissing";
+public const string TCE_ParamInvalidForceColumnEncryptionSetting = "TCE_ParamInvalidForceColumnEncryptionSetting";
+public const string TCE_ParamUnExpectedEncryptionMetadata = "TCE_ParamUnExpectedEncryptionMetadata";
+public const string TCE_ProcEncryptionMetaDataMissing = "TCE_ProcEncryptionMetaDataMissing";
+public const string TCE_SequentialAccessNotSupportedOnEncryptedColumn = "TCE_SequentialAccessNotSupportedOnEncryptedColumn";
+public const string TCE_SqlCommand_ColumnEncryptionSetting = "TCE_SqlCommand_ColumnEncryptionSetting";
+public const string TCE_SqlConnection_TrustedColumnMasterKeyPaths = "TCE_SqlConnection_TrustedColumnMasterKeyPaths";
+public const string TCE_SqlParameter_ForceColumnEncryption = "TCE_SqlParameter_ForceColumnEncryption";
+public const string TCE_StreamNotSupportOnEncryptedColumn = "TCE_StreamNotSupportOnEncryptedColumn";
+public const string TCE_UnexpectedDescribeParamFormat = "TCE_UnexpectedDescribeParamFormat";
+public const string TCE_UnknownColumnEncryptionAlgorithm = "TCE_UnknownColumnEncryptionAlgorithm";
+public const string TCE_UnknownColumnEncryptionAlgorithmId = "TCE_UnknownColumnEncryptionAlgorithmId";
+public const string TCE_UnrecognizedKeyStoreProviderName = "TCE_UnrecognizedKeyStoreProviderName";
+public const string TCE_UnsupportedDatatype = "TCE_UnsupportedDatatype";
+public const string TCE_UnsupportedNormalizationVersion = "TCE_UnsupportedNormalizationVersion";
+public const string TCE_UntrustedKeyPath = "TCE_UntrustedKeyPath";
+public const string TCE_VeryLargeCiphertext = "TCE_VeryLargeCiphertext";
+public const string Xml_AttributeValues = "Xml_AttributeValues";
+public const string Xml_CanNotDeserializeObjectType = "Xml_CanNotDeserializeObjectType";
+public const string Xml_CannotConvert = "Xml_CannotConvert";
+public const string Xml_CannotInstantiateAbstract = "Xml_CannotInstantiateAbstract";
+public const string Xml_CircularComplexType = "Xml_CircularComplexType";
+public const string Xml_ColumnConflict = "Xml_ColumnConflict";
+public const string Xml_DataTableInferenceNotSupported = "Xml_DataTableInferenceNotSupported";
+public const string Xml_DatatypeNotDefined = "Xml_DatatypeNotDefined";
+public const string Xml_DuplicateConstraint = "Xml_DuplicateConstraint";
+public const string Xml_DynamicWithoutXmlSerializable = "Xml_DynamicWithoutXmlSerializable";
+public const string Xml_ElementTypeNotFound = "Xml_ElementTypeNotFound";
+public const string Xml_FoundEntity = "Xml_FoundEntity";
+public const string Xml_InvalidField = "Xml_InvalidField";
+public const string Xml_InvalidKey = "Xml_InvalidKey";
+public const string Xml_InvalidPrefix = "Xml_InvalidPrefix";
+public const string Xml_InvalidSelector = "Xml_InvalidSelector";
+public const string Xml_IsDataSetAttributeMissingInSchema = "Xml_IsDataSetAttributeMissingInSchema";
+public const string Xml_MergeDuplicateDeclaration = "Xml_MergeDuplicateDeclaration";
+public const string Xml_MismatchKeyLength = "Xml_MismatchKeyLength";
+public const string Xml_MissingAttribute = "Xml_MissingAttribute";
+public const string Xml_MissingRefer = "Xml_MissingRefer";
+public const string Xml_MissingSQL = "Xml_MissingSQL";
+public const string Xml_MissingTable = "Xml_MissingTable";
+public const string Xml_MultipleParentRows = "Xml_MultipleParentRows";
+public const string Xml_MultipleTargetConverterEmpty = "Xml_MultipleTargetConverterEmpty";
+public const string Xml_MultipleTargetConverterError = "Xml_MultipleTargetConverterError";
+public const string Xml_NestedCircular = "Xml_NestedCircular";
+public const string Xml_PolymorphismNotSupported = "Xml_PolymorphismNotSupported";
+public const string Xml_RelationChildKeyMissing = "Xml_RelationChildKeyMissing";
+public const string Xml_RelationChildNameMissing = "Xml_RelationChildNameMissing";
+public const string Xml_RelationParentNameMissing = "Xml_RelationParentNameMissing";
+public const string Xml_RelationTableKeyMissing = "Xml_RelationTableKeyMissing";
+public const string Xml_SimpleTypeNotSupported = "Xml_SimpleTypeNotSupported";
+public const string Xml_TooManyIsDataSetAtributeInSchema = "Xml_TooManyIsDataSetAtributeInSchema";
+public const string Xml_UndefinedDatatype = "Xml_UndefinedDatatype";
+public const string Xml_ValueOutOfRange = "Xml_ValueOutOfRange";
+public const string collectionChangedEventDescr = "collectionChangedEventDescr";
+public const string DbConnectionString_TransparentNetworkIPResolution = "DbConnectionString_TransparentNetworkIPResolution";
+public const string TCE_NullCspPathSysErr = "TCE_NullCspPathSysErr";
+public const string TCE_NullCspPath = "TCE_NullCspPath";
+public const string TCE_NullCngPathSysErr = "TCE_NullCngPathSysErr";
+public const string TCE_NullCngPath = "TCE_NullCngPath";
+public const string TCE_InvalidCspPathSysErr = "TCE_InvalidCspPathSysErr";
+public const string TCE_InvalidCspPath = "TCE_InvalidCspPath";
+public const string TCE_InvalidCngPathSysErr = "TCE_InvalidCngPathSysErr";
+public const string TCE_InvalidCngPath = "TCE_InvalidCngPath";
+public const string TCE_EmptyCspNameSysErr = "TCE_EmptyCspNameSysErr";
+public const string TCE_EmptyCspName = "TCE_EmptyCspName";
+public const string TCE_EmptyCngNameSysErr = "TCE_EmptyCngNameSysErr";
+public const string TCE_EmptyCngName = "TCE_EmptyCngName";
+public const string TCE_EmptyCspKeyIdSysErr = "TCE_EmptyCspKeyIdSysErr";
+public const string TCE_EmptyCspKeyId = "TCE_EmptyCspKeyId";
+public const string TCE_EmptyCngKeyIdSysErr = "TCE_EmptyCngKeyIdSysErr";
+public const string TCE_EmptyCngKeyId = "TCE_EmptyCngKeyId";
+public const string TCE_InvalidCspNameSysErr = "TCE_InvalidCspNameSysErr";
+public const string TCE_InvalidCspName = "TCE_InvalidCspName";
+public const string TCE_InvalidCspKeyIdSysErr = "TCE_InvalidCspKeyIdSysErr";
+public const string TCE_InvalidCspKeyId = "TCE_InvalidCspKeyId";
+public const string TCE_InvalidCngKeySysErr = "TCE_InvalidCngKeySysErr";
+public const string TCE_InvalidCngKey = "TCE_InvalidCngKey";
+public const string TCE_InvalidCiphertextLengthInEncryptedCEKCsp = "TCE_InvalidCiphertextLengthInEncryptedCEKCsp";
+public const string TCE_InvalidCiphertextLengthInEncryptedCEKCng = "TCE_InvalidCiphertextLengthInEncryptedCEKCng";
+public const string TCE_InvalidSignatureInEncryptedCEKCsp = "TCE_InvalidSignatureInEncryptedCEKCsp";
+public const string TCE_InvalidSignatureInEncryptedCEKCng = "TCE_InvalidSignatureInEncryptedCEKCng";
+public const string TCE_InvalidSignature = "TCE_InvalidSignature";
+public const string GT_Disabled = "GT_Disabled";
+public const string GT_UnsupportedSysTxVersion = "GT_UnsupportedSysTxVersion";
 
-
-
-
-
-
-
-
-
-
-
-
-
-public const string ADP_Ascending = @"Ascending";
-public const string ADP_CollectionIndexInt32 = @"Invalid index {0} for this {1} with Count={2}.";
-public const string ADP_CollectionIndexString = @"An {0} with {1} '{2}' is not contained by this {3}.";
-public const string ADP_CollectionInvalidType = @"The {0} only accepts non-null {1} type objects, not {2} objects.";
-public const string ADP_CollectionIsNotParent = @"The {0} is already contained by another {1}.";
-public const string ADP_CollectionIsParent = @"The {0} with is already contained by this {1}.";
-public const string ADP_CollectionNullValue = @"The {0} only accepts non-null {1} type objects.";
-public const string ADP_CollectionRemoveInvalidObject = @"Attempted to remove an {0} that is not contained by this {1}.";
-public const string ADP_CollectionUniqueValue = @"The {0}.{1} is required to be unique, '{2}' already exists in the collection.";
-public const string ADP_ConnectionAlreadyOpen = @"The connection was not closed. {0}";
-public const string ADP_ConnectionStateMsg_Closed = @"The connection's current state is closed.";
-public const string ADP_ConnectionStateMsg_Connecting = @"The connection's current state is connecting.";
-public const string ADP_ConnectionStateMsg_Open = @"The connection's current state is open.";
-public const string ADP_ConnectionStateMsg_OpenExecuting = @"The connection's current state is executing.";
-public const string ADP_ConnectionStateMsg_OpenFetching = @"The connection's current state is fetching.";
-public const string ADP_ConnectionStateMsg = @"The connection's current state: {0}.";
-public const string ADP_ConnectionStringSyntax = @"Format of the initialization string does not conform to specification starting at index {0}.";
-public const string ADP_DataReaderClosed = @"Invalid attempt to call {0} when reader is closed.";
-public const string ADP_DelegatedTransactionPresent = @"Cannot enlist in the transaction because the connection is the primary connection for a delegated or promoted transaction.";
-public const string ADP_Descending = @"Descending";
-public const string ADP_EmptyString = @"Expecting non-empty string for '{0}' parameter.";
-public const string ADP_InternalConnectionError = @"Internal DbConnection Error: {0}";
-public const string ADP_InvalidDataDirectory = @"The DataDirectory substitute is not a string.";
-public const string ADP_InvalidEnumerationValue = @"The {0} enumeration value, {1}, is invalid.";
-public const string ADP_InvalidKey = @"Invalid keyword, contain one or more of 'no characters', 'control characters', 'leading or trailing whitespace' or 'leading semicolons'.";
-public const string ADP_InvalidOffsetValue = @"Invalid parameter Offset value '{0}'. The value must be greater than or equal to 0.";
-public const string ADP_InvalidValue = @"The value contains embedded nulls (\\u0000).";
-public const string ADP_InvalidXMLBadVersion = @"Invalid Xml; can only parse elements of version one.";
-public const string ADP_NoConnectionString = @"The ConnectionString property has not been initialized.";
-public const string ADP_NonCLSException = @"A Non CLS Exception was caught.";
-public const string ADP_NotAPermissionElement = @"Given security element is not a permission element.";
-public const string ADP_OpenConnectionPropertySet = @"Not allowed to change the '{0}' property. {1}";
-public const string ADP_PendingAsyncOperation = @"Can not start another operation while there is an asynchronous operation pending.";
-public const string ADP_PermissionTypeMismatch = @"Type mismatch.";
-public const string ADP_PooledOpenTimeout = @"Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.";
-public const string ADP_NonPooledOpenTimeout = @"Timeout attempting to open the connection.  The time period elapsed prior to attempting to open the connection has been exceeded.  This may have occurred because of too many simultaneous non-pooled connection attempts.";
-public const string ADP_InvalidMixedUsageOfSecureAndClearCredential = @"Cannot use Credential with UserID, UID, Password, or PWD connection string keywords.";
-public const string ADP_InvalidMixedUsageOfSecureCredentialAndIntegratedSecurity = @"Cannot use Credential with Integrated Security connection string keyword.";
-public const string ADP_InvalidMixedUsageOfSecureCredentialAndContextConnection = @"Cannot use Credential with Context Connection keyword.";
-public const string ADP_MustBeReadOnly = @"{0} must be marked as read only.";
-public const string DataCategory_Data = @"Data";
-public const string DataCategory_StateChange = @"StateChange";
-public const string DataCategory_Update = @"Update";
-public const string DbCommand_CommandTimeout = @"Time to wait for command to execute.";
-public const string DbConnection_State = @"The ConnectionState indicating whether the connection is open or closed.";
-public const string DbConnection_StateChange = @"Event triggered when the connection changes state.";
-public const string DbParameter_DbType = @"The parameter generic type.";
-public const string DbParameter_Direction = @"Input, output, or bidirectional parameter.";
-public const string DbParameter_IsNullable = @"a design-time property used for strongly typed code-generation.";
-public const string DbParameter_Offset = @"Offset in variable length data types.";
-public const string DbParameter_ParameterName = @"Name of the parameter.";
-public const string DbParameter_Size = @"Size of variable length data types (string & arrays).";
-public const string DbParameter_SourceColumn = @"When used by a DataAdapter.Update, the source column name that is used to find the DataSetColumn name in the ColumnMappings. This is to copy a value between the parameter and a data row.";
-public const string DbParameter_SourceVersion = @"When used by a DataAdapter.Update (UpdateCommand only), the version of the DataRow value that is used to update the data source.";
-public const string DbParameter_SourceColumnNullMapping = @"When used by DataAdapter.Update, the parameter value is changed from DBNull.Value into (Int32)1 or (Int32)0 if non-null.";
-public const string DbParameter_Value = @"Value of the parameter.";
-public const string MDF_QueryFailed = @"Unable to build the '{0}' collection because execution of the SQL query failed. See the inner exception for details.";
-public const string MDF_TooManyRestrictions = @"More restrictions were provided than the requested schema ('{0}') supports.";
-public const string MDF_InvalidRestrictionValue = @" '{2}' is not a valid value for the '{1}' restriction of the '{0}' schema collection.";
-public const string MDF_UndefinedCollection = @"The requested collection ({0}) is not defined.";
-public const string MDF_UndefinedPopulationMechanism = @"The population mechanism '{0}' is not defined.";
-public const string MDF_UnsupportedVersion = @"The requested collection ({0}) is not supported by this version of the provider.";
-public const string MDF_MissingDataSourceInformationColumn = @"One of the required DataSourceInformation tables columns is missing.";
-public const string MDF_IncorrectNumberOfDataSourceInformationRows = @"The DataSourceInformation table must contain exactly one row.";
-public const string MDF_MissingRestrictionColumn = @" One or more of the required columns of the restrictions collection is missing.";
-public const string MDF_MissingRestrictionRow = @" A restriction exists for which there is no matching row in the restrictions collection.";
-public const string MDF_NoColumns = @"The schema table contains no columns.";
-public const string MDF_UnableToBuildCollection = @"Unable to build schema collection '{0}';";
-public const string MDF_AmbigousCollectionName = @"The collection name '{0}' matches at least two collections with the same name but with different case, but does not match any of them exactly.";
-public const string MDF_CollectionNameISNotUnique = @"There are multiple collections named '{0}'.";
-public const string MDF_DataTableDoesNotExist = @"The collection '{0}' is missing from the metadata XML.";
-public const string MDF_InvalidXml = @"The metadata XML is invalid.";
-public const string MDF_InvalidXmlMissingColumn = @"The metadata XML is invalid. The {0} collection must contain a {1} column and it must be a string column.";
-public const string MDF_InvalidXmlInvalidValue = @"The metadata XML is invalid. The {1} column of the {0} collection must contain a non-empty string.";
-
-
-
-
-
-
-public const string DataCategory_Action = @"Action";
-public const string DataCategory_Behavior = @"Behavior";
-
-public const string DataCategory_Fill = @"Fill";
-public const string DataCategory_InfoMessage = @"InfoMessage";
-public const string DataCategory_Mapping = @"Mapping";
-public const string DataCategory_StatementCompleted = @"StatementCompleted";
-
-
-public const string DataCategory_Udt = @"UDT";
-public const string DataCategory_Notification = @"Notification";
-public const string DataCategory_Schema = @"Schema";
-public const string DataCategory_Xml = @"XML";
-
-public const string DataCategory_Advanced = @"Advanced";
-public const string DataCategory_Context = @"Context";
-public const string DataCategory_Initialization = @"Initialization";
-public const string DataCategory_Pooling = @"Pooling";
-public const string DataCategory_NamedConnectionString = @"Named ConnectionString";
-public const string DataCategory_Security = @"Security";
-public const string DataCategory_Source = @"Source";
-public const string DataCategory_Replication = @"Replication";
-public const string DataCategory_ConnectionResilency = @"Connection Resiliency";
-
-
-
-public const string ExtendedPropertiesDescr = @"The collection that holds custom user information.";
-
-
-public const string DataSetCaseSensitiveDescr = @"Indicates whether comparing strings within the DataSet is case sensitive.";
-public const string DataSetDataSetNameDescr = @"The name of this DataSet.";
-public const string DataSetDefaultViewDescr = @"Indicates a custom ""view"" of the data contained by the DataSet. This view allows filtering, searching, and navigating through the custom data view.";
-public const string DataSetEnforceConstraintsDescr = @"Indicates whether constraint rules are to be followed.";
-public const string DataSetHasErrorsDescr = @"Indicates that the DataSet has errors.";
-public const string DataSetLocaleDescr = @"Indicates a locale under which to compare strings within the DataSet.";
-public const string DataSetNamespaceDescr = @"Indicates the XML uri namespace for the root element pointed at by this DataSet.";
-public const string DataSetPrefixDescr = @"Indicates the prefix of the namespace used for this DataSet.";
-public const string DataSetRelationsDescr = @"The collection that holds the relations for this DataSet.";
-public const string DataSetTablesDescr = @"The collection that holds the tables for this DataSet.";
-public const string DataSetMergeFailedDescr = @"Occurs when it is not possible to merge schemas for two tables with the same name.";
-public const string DataSetInitializedDescr = @"Occurs after Initialization is finished.";
-public const string DataSetDescr = @"Represents an in-memory cache of data.";
-
-
-public const string DataTableCaseSensitiveDescr = @"Indicates whether comparing strings within the table is case sensitive.";
-public const string DataTableChildRelationsDescr = @"Returns the child relations for this table.";
-public const string DataTableColumnsDescr = @"The collection that holds the columns for this table.";
-public const string DataTableConstraintsDescr = @"The collection that holds the constraints for this table.";
-public const string DataTableDataSetDescr = @"Indicates the DataSet to which this table belongs.";
-public const string DataTableDefaultViewDescr = @"This is the default DataView for the table.";
-public const string DataTableDisplayExpressionDescr = @"The expression used to compute the data-bound value of this row.";
-public const string DataTableHasErrorsDescr = @"Returns whether the table has errors.";
-public const string DataTableLocaleDescr = @"Indicates a locale under which to compare strings within the table.";
-public const string DataTableMinimumCapacityDescr = @"Indicates an initial starting size for this table.";
-public const string DataTableNamespaceDescr = @"Indicates the XML uri namespace for the elements contained in this table.";
-public const string DataTablePrefixDescr = @"Indicates the Prefix of the namespace used for this table in XML representation.";
-public const string DataTableParentRelationsDescr = @"Returns the parent relations for this table.";
-public const string DataTablePrimaryKeyDescr = @"Indicates the column(s) that represent the primary key for this table.";
-public const string DataTableRowsDescr = @"Indicates the collection that holds the rows of data for this table.";
-public const string DataTableTableNameDescr = @"Indicates the name used to look up this table in the Tables collection of a DataSet.";
-
-
-public const string DataTableRowChangedDescr = @"Occurs after a row in the table has been successfully edited.";
-public const string DataTableRowChangingDescr = @"Occurs when the row is being changed so that the event handler can modify or cancel the change. The user can modify values in the row and should throw an  exception to cancel the edit.";
-public const string DataTableRowDeletedDescr = @"Occurs after a row in the table has been successfully deleted.";
-public const string DataTableRowDeletingDescr = @"Occurs when a row in the table marked for deletion.  Throw an exception to cancel the deletion.";
-public const string DataTableColumnChangingDescr = @"Occurs when a value has been submitted for this column.  The user can modify the proposed value and should throw an exception to cancel the edit.";
-public const string DataTableColumnChangedDescr = @"Occurs when a value has been changed for this column.";
-public const string DataTableRowsClearingDescr = @"Occurs prior to clearing all rows from the table.";
-public const string DataTableRowsClearedDescr = @"Occurs after all rows in the table has been successfully cleared.";
-public const string DataTableRowsNewRowDescr = @"Occurs after a new DataRow has been instantiated.";
-
-
-public const string DataRelationRelationNameDescr = @"The name used to look up this relation in the Relations collection of a DataSet.";
-public const string DataRelationChildColumnsDescr = @"Indicates the child columns of this relation.";
-public const string DataRelationParentColumnsDescr = @"Indicates the parent columns of this relation.";
-public const string DataRelationNested = @"Indicates whether relations are nested.";
-
-
-public const string ForeignKeyConstraintDeleteRuleDescr = @"For deletions, indicates what kind of cascading should take place across this relation.";
-public const string ForeignKeyConstraintUpdateRuleDescr = @"For updates, indicates what kind of cascading should take place across this relation.";
-public const string ForeignKeyConstraintAcceptRejectRuleDescr = @"For accept and reject changes, indicates what kind of cascading should take place across this relation.";
-public const string ForeignKeyConstraintChildColumnsDescr = @"Indicates the child columns of this constraint.";
-public const string ForeignKeyConstraintParentColumnsDescr = @"Indicates the parent columns of this constraint.";
-public const string ForeignKeyRelatedTableDescr = @"Indicates the child table of this constraint.";
-public const string KeyConstraintColumnsDescr = @"Indicates the columns of this constraint.";
-public const string KeyConstraintIsPrimaryKeyDescr = @"Indicates if this constraint is a primary key.";
-public const string ConstraintNameDescr = @"Indicates the name of this constraint.";
-public const string ConstraintTableDescr = @"Indicates the table of this constraint.";
-
-
-public const string DataColumnAllowNullDescr = @"Indicates whether null values are allowed in this column.";
-public const string DataColumnAutoIncrementDescr = @"Indicates whether the column automatically increments itself for new rows added to the table.  The type of this column must be Int16, Int32, or Int64.";
-public const string DataColumnAutoIncrementSeedDescr = @"Indicates the starting value for an AutoIncrement column.";
-public const string DataColumnAutoIncrementStepDescr = @"Indicates the increment used by an AutoIncrement column.";
-public const string DataColumnCaptionDescr = @"Indicates the default user-interface caption for this column.";
-public const string DataColumnColumnNameDescr = @"Indicates the name used to look up this column in the Columns collection of a DataTable.";
-public const string DataColumnDataTableDescr = @"Returns the DataTable to which this column belongs.";
-public const string DataColumnDataTypeDescr = @"Indicates the type of data stored in this column.";
-public const string DataColumnDefaultValueDescr = @"Indicates the default column value used when adding new rows to the table.";
-public const string DataColumnExpressionDescr = @"Indicates the value that this column computes for each row based on other columns instead of taking user input.";
-public const string DataColumnMappingDescr = @"Indicates how this column persists in XML: as an attribute, element, simple content node, or nothing.";
-public const string DataColumnNamespaceDescr = @"Indicates the XML uri for elements or attributes stored in this column.";
-public const string DataColumnPrefixDescr = @"Indicates the Prefix used for this DataColumn in xml representation.";
-public const string DataColumnOrdinalDescr = @"Indicates the index of this column in the Columns collection.";
-public const string DataColumnReadOnlyDescr = @"Indicates whether this column allows changes once a row has been added to the table.";
-public const string DataColumnUniqueDescr = @"Indicates whether this column should restrict its values in the rows of the table to be unique.";
-public const string DataColumnMaxLengthDescr = @"Indicates the maximum length of the value this column allows.";
-public const string DataColumnDateTimeModeDescr = @"Indicates DateTimeMode of this DataColumn.";
-
-
-
-public const string DataViewAllowDeleteDescr = @"Indicates whether this DataView and the user interface associated with it allows deletes.";
-public const string DataViewAllowEditDescr = @"Indicates whether this DataView and the user interface associated with it allows edits.";
-public const string DataViewAllowNewDescr = @"Indicates whether this DataView and the user interface associated with it allows new rows to be added.";
-public const string DataViewCountDescr = @"Returns the number of items currently in this view.";
-public const string DataViewDataViewManagerDescr = @"This returns a pointer to back to the DataViewManager that owns this DataSet (if any).";
-public const string DataViewIsOpenDescr = @"Indicates whether the view is open.";
-public const string DataViewRowFilterDescr = @"Indicates an expression used to filter the data returned by this DataView.";
-public const string DataViewRowStateFilterDescr = @"Indicates the versions of data returned by this DataView.";
-public const string DataViewSortDescr = @"Indicates the names of the column and the order in which data is returned by this DataView.";
-public const string DataViewApplyDefaultSortDescr = @"Indicates whether to use the default sort if the Sort property is not set.";
-public const string DataViewTableDescr = @"Indicates the table this DataView uses to get data.";
-public const string DataViewListChangedDescr = @"Indicates that the data returned by this DataView has somehow changed.";
-
-
-public const string DataViewManagerDataSetDescr = @"Indicates the source of data for this DataViewManager.";
-public const string DataViewManagerTableSettingsDescr = @"Indicates the sorting/filtering/state settings for any table in the corresponding DataSet.";
-
-
-
-
-public const string Xml_SimpleTypeNotSupported = @"DataSet doesn't support 'union' or 'list' as simpleType.";
-public const string Xml_MissingAttribute = @"Invalid {0} syntax: missing required '{1}' attribute.";
-public const string Xml_ValueOutOfRange = @"Value '{1}' is invalid for attribute '{0}'.";
-public const string Xml_AttributeValues = @"The value of attribute '{0}' should be '{1}' or '{2}'.";
-public const string Xml_ElementTypeNotFound = @"Cannot find ElementType name='{0}'.";
-public const string Xml_RelationParentNameMissing = @"Parent table name is missing in relation '{0}'.";
-public const string Xml_RelationChildNameMissing = @"Child table name is missing in relation '{0}'.";
-public const string Xml_RelationTableKeyMissing = @"Parent table key is missing in relation '{0}'.";
-public const string Xml_RelationChildKeyMissing = @"Child table key is missing in relation '{0}'.";
-public const string Xml_UndefinedDatatype = @"Undefined data type: '{0}'.";
-public const string Xml_DatatypeNotDefined = @"Data type not defined.";
-public const string Xml_InvalidField = @"Invalid XPath selection inside field node. Cannot find: {0}.";
-public const string Xml_InvalidSelector = @"Invalid XPath selection inside selector node: {0}.";
-public const string Xml_InvalidKey = @"Invalid 'Key' node inside constraint named: {0}.";
-public const string Xml_DuplicateConstraint = @"The constraint name {0} is already used in the schema.";
-public const string Xml_CannotConvert = @" Cannot convert '{0}' to type '{1}'.";
-public const string Xml_MissingRefer = @"Missing '{0}' part in '{1}' constraint named '{2}'.";
-public const string Xml_MismatchKeyLength = @"Invalid Relation definition: different length keys.";
-public const string Xml_CircularComplexType = @"DataSet doesn't allow the circular reference in the ComplexType named '{0}'.";
-public const string Xml_CannotInstantiateAbstract = @"DataSet cannot instantiate an abstract ComplexType for the node {0}.";
-public const string Xml_MultipleTargetConverterError = @"An error occurred with the multiple target converter while writing an Xml Schema.  See the inner exception for details.";
-public const string Xml_MultipleTargetConverterEmpty = @"An error occurred with the multiple target converter while writing an Xml Schema.  A null or empty string was returned.";
-
-public const string Xml_MergeDuplicateDeclaration = @"Duplicated declaration '{0}'.";
-public const string Xml_MissingTable = @"Cannot load diffGram. Table '{0}' is missing in the destination dataset.";
-public const string Xml_MissingSQL = @"Cannot load diffGram. The 'sql' node is missing.";
-public const string Xml_ColumnConflict = @"Column name '{0}' is defined for different mapping types.";
-public const string Xml_InvalidPrefix = @"Prefix '{0}' is not valid, because it contains special characters.";
-public const string Xml_NestedCircular = @"Circular reference in self-nested table '{0}'.";
-public const string Xml_FoundEntity = @"DataSet cannot expand entities. Use XmlValidatingReader and set the EntityHandling property accordingly.";
-public const string Xml_PolymorphismNotSupported = @"Type '{0}' does not implement IXmlSerializable interface therefore can not proceed with serialization.";
-public const string Xml_CanNotDeserializeObjectType = @"Unable to proceed with deserialization. Data does not implement IXMLSerializable, therefore polymorphism is not supported.";
-public const string Xml_DataTableInferenceNotSupported = @"DataTable does not support schema inference from Xml.";
-public const string Xml_MultipleParentRows = @"Cannot proceed with serializing DataTable '{0}'. It contains a DataRow which has multiple parent rows on the same Foreign Key.";
-public const string Xml_IsDataSetAttributeMissingInSchema = @"IsDataSet attribute is missing in input Schema.";
-public const string Xml_TooManyIsDataSetAtributeInSchema = @"Cannot determine the DataSet Element. IsDataSet attribute exist more than once.";
-public const string Xml_DynamicWithoutXmlSerializable = @"DataSet will not serialize types that implement IDynamicMetaObjectProvider but do not also implement IXmlSerializable.";
-
-
-
-public const string Expr_NYI = @"The feature not implemented. {0}.";
-public const string Expr_MissingOperand = @"Syntax error: Missing operand after '{0}' operator.";
-public const string Expr_TypeMismatch = @"Type mismatch in expression '{0}'.";
-public const string Expr_ExpressionTooComplex = @"Expression is too complex.";
-public const string Expr_UnboundName = @"Cannot find column [{0}].";
-public const string Expr_InvalidString = @"The expression contains an invalid string constant: {0}.";
-public const string Expr_UndefinedFunction = @"The expression contains undefined function call {0}().";
-public const string Expr_Syntax = @"Syntax error in the expression.";
-public const string Expr_FunctionArgumentCount = @"Invalid number of arguments: function {0}().";
-public const string Expr_MissingRightParen = @"The expression is missing the closing parenthesis.";
-public const string Expr_UnknownToken = @"Cannot interpret token '{0}' at position {1}.";
-public const string Expr_UnknownToken1 = @"Expected {0}, but actual token at the position {2} is {1}.";
-public const string Expr_DatatypeConvertion = @"Cannot convert from {0} to {1}.";
-public const string Expr_DatavalueConvertion = @"Cannot convert value '{0}' to Type: {1}.";
-public const string Expr_InvalidName = @"Invalid column name [{0}].";
-public const string Expr_InvalidDate = @"The expression contains invalid date constant '{0}'.";
-public const string Expr_NonConstantArgument = @"Only constant expressions are allowed in the expression list for the IN operator.";
-public const string Expr_InvalidPattern = @"Error in Like operator: the string pattern '{0}' is invalid.";
-public const string Expr_InWithoutParentheses = @"Syntax error: The items following the IN keyword must be separated by commas and be enclosed in parentheses.";
-public const string Expr_ArgumentType = @"Type mismatch in function argument: {0}(), argument {1}, expected {2}.";
-public const string Expr_ArgumentTypeInteger = @"Type mismatch in function argument: {0}(), argument {1}, expected one of the Integer types.";
-public const string Expr_TypeMismatchInBinop = @"Cannot perform '{0}' operation on {1} and {2}.";
-public const string Expr_AmbiguousBinop = @"Operator '{0}' is ambiguous on operands of type '{1}' and '{2}'. Cannot mix signed and unsigned types. Please use explicit Convert() function.";
-public const string Expr_InWithoutList = @"Syntax error: The IN keyword must be followed by a non-empty list of expressions separated by commas, and also must be enclosed in parentheses.";
-public const string Expr_UnsupportedOperator = @"The expression contains unsupported operator '{0}'.";
-public const string Expr_InvalidNameBracketing = @"The expression contains invalid name: '{0}'.";
-public const string Expr_MissingOperandBefore = @"Syntax error: Missing operand before '{0}' operator.";
-public const string Expr_TooManyRightParentheses = @"The expression has too many closing parentheses.";
-public const string Expr_UnresolvedRelation = @"The table [{0}] involved in more than one relation. You must explicitly mention a relation name in the expression '{1}'.";
-public const string Expr_AggregateArgument = @"Syntax error in aggregate argument: Expecting a single column argument with possible 'Child' qualifier.";
-public const string Expr_AggregateUnbound = @"Unbound reference in the aggregate expression '{0}'.";
-public const string Expr_EvalNoContext = @"Cannot evaluate non-constant expression without current row.";
-public const string Expr_ExpressionUnbound = @"Unbound reference in the expression '{0}'.";
-public const string Expr_ComputeNotAggregate = @"Cannot evaluate. Expression '{0}' is not an aggregate.";
-public const string Expr_FilterConvertion = @"Filter expression '{0}' does not evaluate to a Boolean term.";
-public const string Expr_InvalidType = @"Invalid type name '{0}'.";
-public const string Expr_LookupArgument = @"Syntax error in Lookup expression: Expecting keyword 'Parent' followed by a single column argument with possible relation qualifier: Parent[(<relation_name>)].<column_name>.";
-public const string Expr_InvokeArgument = @"Need a row or a table to Invoke DataFilter.";
-public const string Expr_ArgumentOutofRange = @"{0}() argument is out of range.";
-public const string Expr_IsSyntax = @"Syntax error: Invalid usage of 'Is' operator. Correct syntax: <expression> Is [Not] Null.";
-public const string Expr_Overflow = @"Value is either too large or too small for Type '{0}'.";
-public const string Expr_DivideByZero = @"Divide by zero error encountered.";
-public const string Expr_BindFailure = @"Cannot find the parent relation '{0}'.";
-public const string Expr_InvalidHoursArgument = @"'hours' argument is out of range. Value must be between -14 and +14.";
-public const string Expr_InvalidMinutesArgument = @"'minutes' argument is out of range. Value must be between -59 and +59.";
-public const string Expr_InvalidTimeZoneRange = @"Provided range for time one exceeds total of 14 hours.";
-public const string Expr_MismatchKindandTimeSpan = @"Kind property of provided DateTime argument, does not match 'hours' and 'minutes' arguments.";
-public const string Expr_UnsupportedType = @"A DataColumn of type '{0}' does not support expression.";
-
-
-
-
-public const string Data_EnforceConstraints = @"Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.";
-public const string Data_CannotModifyCollection = @"Collection itself is not modifiable.";
-public const string Data_CaseInsensitiveNameConflict = @"The given name '{0}' matches at least two names in the collection object with different cases, but does not match either of them with the same case.";
-public const string Data_NamespaceNameConflict = @"The given name '{0}' matches at least two names in the collection object with different namespaces.";
-public const string Data_InvalidOffsetLength = @"Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.";
-
-public const string Data_ArgumentOutOfRange = @"'{0}' argument is out of range.";
-public const string Data_ArgumentNull = @"'{0}' argument cannot be null.";
-public const string Data_ArgumentContainsNull = @"'{0}' argument contains null value.";
-
-public const string DataColumns_OutOfRange = @"Cannot find column {0}.";
-public const string DataColumns_Add1 = @"Column '{0}' already belongs to this DataTable.";
-public const string DataColumns_Add2 = @"Column '{0}' already belongs to another DataTable.";
-public const string DataColumns_Add3 = @"Cannot have more than one SimpleContent columns in a DataTable.";
-public const string DataColumns_Add4 = @"Cannot add a SimpleContent column to a table containing element columns or nested relations.";
-public const string DataColumns_AddDuplicate = @"A column named '{0}' already belongs to this DataTable.";
-public const string DataColumns_AddDuplicate2 = @"Cannot add a column named '{0}': a nested table with the same name already belongs to this DataTable.";
-public const string DataColumns_AddDuplicate3 = @"A column named '{0}' already belongs to this DataTable: cannot set a nested table name to the same name.";
-public const string DataColumns_Remove = @"Cannot remove a column that doesn't belong to this table.";
-public const string DataColumns_RemovePrimaryKey = @"Cannot remove this column, because it's part of the primary key.";
-public const string DataColumns_RemoveChildKey = @"Cannot remove this column, because it is part of the parent key for relationship {0}.";
-public const string DataColumns_RemoveConstraint = @"Cannot remove this column, because it is a part of the constraint {0} on the table {1}.";
-public const string DataColumns_RemoveExpression = @"Cannot remove this column, because it is part of an expression: {0} = {1}.";
-
-public const string DataColumn_AutoIncrementAndExpression = @"Cannot set AutoIncrement property for a computed column.";
-public const string DataColumn_AutoIncrementAndDefaultValue = @"Cannot set AutoIncrement property for a column with DefaultValue set.";
-public const string DataColumn_DefaultValueAndAutoIncrement = @"Cannot set a DefaultValue on an AutoIncrement column.";
-public const string DataColumn_AutoIncrementSeed = @"AutoIncrementStep must be a non-zero value.";
-public const string DataColumn_NameRequired = @"ColumnName is required when it is part of a DataTable.";
-public const string DataColumn_ChangeDataType = @"Cannot change DataType of a column once it has data.";
-public const string DataColumn_NullDataType = @"Column requires a valid DataType.";
-public const string DataColumn_DefaultValueDataType = @"The DefaultValue for column {0} is of type {1} and cannot be converted to {2}.";
-public const string DataColumn_DefaultValueDataType1 = @"The DefaultValue for the column is of type {0} and cannot be converted to {1}.";
-public const string DataColumn_DefaultValueColumnDataType = @"The DefaultValue for column {0} is of type {1}, but the column is of type {2}.";
-public const string DataColumn_ReadOnlyAndExpression = @"Cannot change ReadOnly property for the expression column.";
-public const string DataColumn_UniqueAndExpression = @"Cannot change Unique property for the expression column.";
-public const string DataColumn_ExpressionAndUnique = @"Cannot create an expression on a column that has AutoIncrement or Unique.";
-public const string DataColumn_ExpressionAndReadOnly = @"Cannot set expression because column cannot be made ReadOnly.";
-public const string DataColumn_ExpressionAndConstraint = @"Cannot set Expression property on column {0}, because it is a part of a constraint.";
-public const string DataColumn_ExpressionInConstraint = @"Cannot create a constraint based on Expression column {0}.";
-public const string DataColumn_ExpressionCircular = @"Cannot set Expression property due to circular reference in the expression.";
-public const string DataColumn_NullKeyValues = @"Column '{0}' has null values in it.";
-public const string DataColumn_NullValues = @"Column '{0}' does not allow nulls.";
-public const string DataColumn_ReadOnly = @"Column '{0}' is read only.";
-public const string DataColumn_NonUniqueValues = @"Column '{0}' contains non-unique values.";
-public const string DataColumn_NotInTheTable = @"Column '{0}' does not belong to table {1}.";
-public const string DataColumn_NotInAnyTable = @"Column must belong to a table.";
-public const string DataColumn_SetFailed = @"Couldn't store <{0}> in {1} Column.  Expected type is {2}.";
-public const string DataColumn_CannotSetToNull = @"Cannot set Column '{0}' to be null. Please use DBNull instead.";
-public const string DataColumn_LongerThanMaxLength = @"Cannot set column '{0}'. The value violates the MaxLength limit of this column.";
-public const string DataColumn_HasToBeStringType = @"MaxLength applies to string data type only. You cannot set Column '{0}' property MaxLength to be non-negative number.";
-public const string DataColumn_CannotSetMaxLength = @"Cannot set Column '{0}' property MaxLength to '{1}'. There is at least one string in the table longer than the new limit.";
-public const string DataColumn_CannotSetMaxLength2 = @"Cannot set Column '{0}' property MaxLength. The Column is SimpleContent.";
-public const string DataColumn_CannotSimpleContentType = @"Cannot set Column '{0}' property DataType to {1}. The Column is SimpleContent.";
-public const string DataColumn_CannotSimpleContent = @"Cannot set Column '{0}' property MappingType to SimpleContent. The Column DataType is {1}.";
-public const string DataColumn_ExceedMaxLength = @"Column '{0}' exceeds the MaxLength limit.";
-public const string DataColumn_NotAllowDBNull = @"Column '{0}' does not allow DBNull.Value.";
-public const string DataColumn_CannotChangeNamespace = @"Cannot change the Column '{0}' property Namespace. The Column is SimpleContent.";
-public const string DataColumn_AutoIncrementCannotSetIfHasData = @"Cannot change AutoIncrement of a DataColumn with type '{0}' once it has data.";
-public const string DataColumn_NotInTheUnderlyingTable = @"Column '{0}' does not belong to underlying table '{1}'.";
-public const string DataColumn_InvalidDataColumnMapping = @"DataColumn with type '{0}' is a complexType. Can not serialize value of a complex type as Attribute";
-public const string DataColumn_CannotSetDateTimeModeForNonDateTimeColumns = @"The DateTimeMode can be set only on DataColumns of type DateTime.";
-public const string DataColumn_InvalidDateTimeMode = @"'{0}' is Invalid DataSetDateTime value.";
-public const string DataColumn_DateTimeMode = @"Cannot change DateTimeMode from '{0}' to '{1}' once the table has data.";
-public const string DataColumn_INullableUDTwithoutStaticNull = @"Type '{0}' does not contain static Null property or field.";
-public const string DataColumn_UDTImplementsIChangeTrackingButnotIRevertible = @"Type '{0}' does not implement IRevertibleChangeTracking; therefore can not proceed with RejectChanges().";
-public const string DataColumn_SetAddedAndModifiedCalledOnNonUnchanged = @"SetAdded and SetModified can only be called on DataRows with Unchanged DataRowState.";
-public const string DataColumn_OrdinalExceedMaximun = @"Ordinal '{0}' exceeds the maximum number.";
-public const string DataColumn_NullableTypesNotSupported = @"DataSet does not support System.Nullable<>.";
-
-public const string DataConstraint_NoName = @"Cannot change the name of a constraint to empty string when it is in the ConstraintCollection.";
-public const string DataConstraint_Violation = @"Cannot enforce constraints on constraint {0}.";
-public const string DataConstraint_ViolationValue = @"Column '{0}' is constrained to be unique.  Value '{1}' is already present.";
-public const string DataConstraint_NotInTheTable = @"Constraint '{0}' does not belong to this DataTable.";
-public const string DataConstraint_OutOfRange = @"Cannot find constraint {0}.";
-public const string DataConstraint_Duplicate = @"Constraint matches constraint named {0} already in collection.";
-public const string DataConstraint_DuplicateName = @"A Constraint named '{0}' already belongs to this DataTable.";
-public const string DataConstraint_UniqueViolation = @"These columns don't currently have unique values.";
-public const string DataConstraint_ForeignTable = @"These columns don't point to this table.";
-public const string DataConstraint_ParentValues = @"This constraint cannot be enabled as not all values have corresponding parent values.";
-public const string DataConstraint_AddFailed = @"This constraint cannot be added since ForeignKey doesn't belong to table {0}.";
-public const string DataConstraint_RemoveFailed = @"Cannot remove a constraint that doesn't belong to this table.";
-public const string DataConstraint_NeededForForeignKeyConstraint = @"Cannot remove unique constraint '{0}'. Remove foreign key constraint '{1}' first.";
-public const string DataConstraint_CascadeDelete = @"Cannot delete this row because constraints are enforced on relation {0}, and deleting this row will strand child rows.";
-public const string DataConstraint_CascadeUpdate = @"Cannot make this change because constraints are enforced on relation {0}, and changing this value will strand child rows.";
-public const string DataConstraint_ClearParentTable = @"Cannot clear table {0} because ForeignKeyConstraint {1} enforces constraints and there are child rows in {2}.";
-public const string DataConstraint_ForeignKeyViolation = @"ForeignKeyConstraint {0} requires the child key values ({1}) to exist in the parent table.";
-public const string DataConstraint_BadObjectPropertyAccess = @"Property not accessible because '{0}'.";
-public const string DataConstraint_RemoveParentRow = @"Cannot remove this row because it has child rows, and constraints on relation {0} are enforced.";
-public const string DataConstraint_AddPrimaryKeyConstraint = @"Cannot add primary key constraint since primary key is already set for the table.";
-public const string DataConstraint_CantAddConstraintToMultipleNestedTable = @"Cannot add constraint to DataTable '{0}' which is a child table in two nested relations.";
-
-public const string DataKey_TableMismatch = @"Cannot create a Key from Columns that belong to different tables.";
-public const string DataKey_NoColumns = @"Cannot have 0 columns.";
-public const string DataKey_TooManyColumns = @"Cannot have more than {0} columns.";
-public const string DataKey_DuplicateColumns = @"Cannot create a Key when the same column is listed more than once: '{0}'";
-public const string DataKey_RemovePrimaryKey = @"Cannot remove unique constraint since it's the primary key of a table.";
-public const string DataKey_RemovePrimaryKey1 = @"Cannot remove unique constraint since it's the primary key of table {0}.";
-
-public const string DataRelation_ColumnsTypeMismatch = @"Parent Columns and Child Columns don't have type-matching columns.";
-public const string DataRelation_KeyColumnsIdentical = @"ParentKey and ChildKey are identical.";
-public const string DataRelation_KeyLengthMismatch = @"ParentColumns and ChildColumns should be the same length.";
-public const string DataRelation_KeyZeroLength = @"ParentColumns and ChildColumns must not be zero length.";
-public const string DataRelation_ForeignRow = @"The row doesn't belong to the same DataSet as this relation.";
-public const string DataRelation_NoName = @"RelationName is required when it is part of a DataSet.";
-public const string DataRelation_ForeignTable = @"GetChildRows requires a row whose Table is {0}, but the specified row's Table is {1}.";
-public const string DataRelation_ForeignDataSet = @"This relation should connect two tables in this DataSet to be added to this DataSet.";
-public const string DataRelation_GetParentRowTableMismatch = @"GetParentRow requires a row whose Table is {0}, but the specified row's Table is {1}.";
-public const string DataRelation_SetParentRowTableMismatch = @"SetParentRow requires a child row whose Table is {0}, but the specified row's Table is {1}.";
-public const string DataRelation_DataSetMismatch = @"Cannot have a relationship between tables in different DataSets.";
-public const string DataRelation_TablesInDifferentSets = @"Cannot create a relation between tables in different DataSets.";
-public const string DataRelation_AlreadyExists = @"A relation already exists for these child columns.";
-public const string DataRelation_DoesNotExist = @"This relation doesn't belong to this relation collection.";
-public const string DataRelation_AlreadyInOtherDataSet = @"This relation already belongs to another DataSet.";
-public const string DataRelation_AlreadyInTheDataSet = @"This relation already belongs to this DataSet.";
-public const string DataRelation_DuplicateName = @"A Relation named '{0}' already belongs to this DataSet.";
-public const string DataRelation_NotInTheDataSet = @"Relation {0} does not belong to this DataSet.";
-public const string DataRelation_OutOfRange = @"Cannot find relation {0}.";
-public const string DataRelation_TableNull = @"Cannot create a collection on a null table.";
-public const string DataRelation_TableWasRemoved = @"The table this collection displays relations for has been removed from its DataSet.";
-public const string DataRelation_ChildTableMismatch = @"Cannot add a relation to this table's ParentRelation collection where this table isn't the child table.";
-public const string DataRelation_ParentTableMismatch = @"Cannot add a relation to this table's ChildRelation collection where this table isn't the parent table.";
-public const string DataRelation_RelationNestedReadOnly = @"Cannot set the 'Nested' property to false for this relation.";
-public const string DataRelation_TableCantBeNestedInTwoTables = @"The same table '{0}' cannot be the child table in two nested relations.";
-public const string DataRelation_LoopInNestedRelations = @"The table ({0}) cannot be the child table to itself in nested relations.";
-public const string DataRelation_CaseLocaleMismatch = @"Cannot add a DataRelation or Constraint that has different Locale or CaseSensitive settings between its parent and child tables.";
-public const string DataRelation_ParentOrChildColumnsDoNotHaveDataSet = @"Cannot create a DataRelation if Parent or Child Columns are not in a DataSet.";
-public const string DataRelation_InValidNestedRelation = @"Nested table '{0}' which inherits its namespace cannot have multiple parent tables in different namespaces.";
-public const string DataRelation_InValidNamespaceInNestedRelation = @"Nested table '{0}' with empty namespace cannot have multiple parent tables in different namespaces.";
-
-public const string DataRow_NotInTheDataSet = @"The row doesn't belong to the same DataSet as this relation.";
-public const string DataRow_NotInTheTable = @"Cannot perform this operation on a row not in the table.";
-public const string DataRow_ParentRowNotInTheDataSet = @"This relation and child row don't belong to same DataSet.";
-public const string DataRow_EditInRowChanging = @"Cannot change a proposed value in the RowChanging event.";
-public const string DataRow_EndEditInRowChanging = @"Cannot call EndEdit() inside an OnRowChanging event.";
-public const string DataRow_BeginEditInRowChanging = @"Cannot call BeginEdit() inside the RowChanging event.";
-public const string DataRow_CancelEditInRowChanging = @"Cannot call CancelEdit() inside an OnRowChanging event.  Throw an exception to cancel this update.";
-public const string DataRow_DeleteInRowDeleting = @"Cannot call Delete inside an OnRowDeleting event.  Throw an exception to cancel this delete.";
-public const string DataRow_ValuesArrayLength = @"Input array is longer than the number of columns in this table.";
-public const string DataRow_NoCurrentData = @"There is no Current data to access.";
-public const string DataRow_NoOriginalData = @"There is no Original data to access.";
-public const string DataRow_NoProposedData = @"There is no Proposed data to access.";
-public const string DataRow_RemovedFromTheTable = @"This row has been removed from a table and does not have any data.  BeginEdit() will allow creation of new data in this row.";
-public const string DataRow_DeletedRowInaccessible = @"Deleted row information cannot be accessed through the row.";
-public const string DataRow_InvalidVersion = @"Version must be Original, Current, or Proposed.";
-public const string DataRow_OutOfRange = @"There is no row at position {0}.";
-public const string DataRow_RowInsertOutOfRange = @"The row insert position {0} is invalid.";
-public const string DataRow_RowInsertTwice = @"The rowOrder value={0} has been found twice for table named '{1}'.";
-public const string DataRow_RowInsertMissing = @"Values are missing in the rowOrder sequence for table '{0}'.";
-public const string DataRow_RowOutOfRange = @"The given DataRow is not in the current DataRowCollection.";
-public const string DataRow_AlreadyInOtherCollection = @"This row already belongs to another table.";
-public const string DataRow_AlreadyInTheCollection = @"This row already belongs to this table.";
-public const string DataRow_AlreadyDeleted = @"Cannot delete this row since it's already deleted.";
-public const string DataRow_Empty = @"This row is empty.";
-public const string DataRow_AlreadyRemoved = @"Cannot remove a row that's already been removed.";
-public const string DataRow_MultipleParents = @"A child row has multiple parents.";
-public const string DataRow_InvalidRowBitPattern = @"Unrecognized row state bit pattern.";
-
-public const string DataSet_SetNameToEmpty = @"Cannot change the name of the DataSet to an empty string.";
-public const string DataSet_SetDataSetNameConflicting = @"The name '{0}' is invalid. A DataSet cannot have the same name of the DataTable.";
-public const string DataSet_UnsupportedSchema = @"The schema namespace is invalid. Please use this one instead: {0}.";
-public const string DataSet_CannotChangeCaseLocale = @"Cannot change CaseSensitive or Locale property. This change would lead to at least one DataRelation or Constraint to have different Locale or CaseSensitive settings between its related tables.";
-public const string DataSet_CannotChangeSchemaSerializationMode = @"SchemaSerializationMode property can be set only if it is overridden by derived DataSet.";
-
-public const string DataTable_ForeignPrimaryKey = @"PrimaryKey columns do not belong to this table.";
-public const string DataTable_CannotAddToSimpleContent = @"Cannot add a nested relation or an element column to a table containing a SimpleContent column.";
-public const string DataTable_NoName = @"TableName is required when it is part of a DataSet.";
-public const string DataTable_MultipleSimpleContentColumns = @"DataTable already has a simple content column.";
-public const string DataTable_MissingPrimaryKey = @"Table doesn't have a primary key.";
-public const string DataTable_InvalidSortString = @" {0} isn't a valid Sort string entry.";
-public const string DataTable_CanNotSerializeDataTableHierarchy = @"Cannot serialize the DataTable. A DataTable being used in one or more DataColumn expressions is not a descendant of current DataTable.";
-public const string DataTable_CanNotRemoteDataTable = @"This DataTable can only be remoted as part of DataSet. One or more Expression Columns has reference to other DataTable(s).";
-public const string DataTable_CanNotSetRemotingFormat = @"Cannot have different remoting format property value for DataSet and DataTable.";
-public const string DataTable_CanNotSerializeDataTableWithEmptyName = @"Cannot serialize the DataTable. DataTable name is not set.";
-
-public const string DataTable_DuplicateName = @"A DataTable named '{0}' already belongs to this DataSet.";
-public const string DataTable_DuplicateName2 = @"A DataTable named '{0}' with the same Namespace '{1}' already belongs to this DataSet.";
-public const string DataTable_SelfnestedDatasetConflictingName = @"The table ({0}) cannot be the child table to itself in a nested relation: the DataSet name conflicts with the table name.";
-public const string DataTable_DatasetConflictingName = @"The name '{0}' is invalid. A DataTable cannot have the same name of the DataSet.";
-public const string DataTable_AlreadyInOtherDataSet = @"DataTable already belongs to another DataSet.";
-public const string DataTable_AlreadyInTheDataSet = @"DataTable already belongs to this DataSet.";
-public const string DataTable_NotInTheDataSet = @"Table {0} does not belong to this DataSet.";
-public const string DataTable_OutOfRange = @"Cannot find table {0}.";
-public const string DataTable_InRelation = @"Cannot remove a table that has existing relations.  Remove relations first.";
-public const string DataTable_InConstraint = @"Cannot remove table {0}, because it referenced in ForeignKeyConstraint {1}.  Remove the constraint first.";
-public const string DataTable_TableNotFound = @"DataTable '{0}' does not match to any DataTable in source.";
-
-public const string DataMerge_MissingDefinition = @"Target DataSet missing definition for {0}.";
-public const string DataMerge_MissingConstraint = @"Target DataSet missing {0} {1}.";
-public const string DataMerge_DataTypeMismatch = @"<target>.{0} and <source>.{0} have conflicting properties: DataType property mismatch.";
-public const string DataMerge_PrimaryKeyMismatch = @"<target>.PrimaryKey and <source>.PrimaryKey have different Length.";
-public const string DataMerge_PrimaryKeyColumnsMismatch = @"Mismatch columns in the PrimaryKey : <target>.{0} versus <source>.{1}.";
-public const string DataMerge_ReltionKeyColumnsMismatch = @"Relation {0} cannot be merged, because keys have mismatch columns.";
-public const string DataMerge_MissingColumnDefinition = @"Target table {0} missing definition for column {1}.";
-public const string DataMerge_MissingPrimaryKeyColumnInSource = @"PrimaryKey column {0} does not exist in source Table.";
-
-public const string DataIndex_RecordStateRange = @"The RowStates parameter must be set to a valid combination of values from the DataViewRowState enumeration.";
-public const string DataIndex_FindWithoutSortOrder = @"Find finds a row based on a Sort order, and no Sort order is specified.";
-public const string DataIndex_KeyLength = @"Expecting {0} value(s) for the key being indexed, but received {1} value(s).";
-
-public const string DataStorage_AggregateException = @"Invalid usage of aggregate function {0}() and Type: {1}.";
-public const string DataStorage_InvalidStorageType = @"Invalid storage type: {0}.";
-public const string DataStorage_ProblematicChars = @"The DataSet Xml persistency does not support the value '{0}' as Char value, please use Byte storage instead.";
-public const string DataStorage_SetInvalidDataType = @"Type of value has a mismatch with column type";
-public const string DataStorage_IComparableNotDefined = @" Type '{0}' does not implement IComparable interface. Comparison cannot be done.";
-
-public const string DataView_SetFailed = @"Cannot set {0}.";
-public const string DataView_SetDataSetFailed = @"Cannot change DataSet on a DataViewManager that's already the default view for a DataSet.";
-public const string DataView_SetRowStateFilter = @"RowStateFilter cannot show ModifiedOriginals and ModifiedCurrents at the same time.";
-public const string DataView_SetTable = @"Cannot change Table property on a DefaultView or a DataView coming from a DataViewManager.";
-public const string DataView_CanNotSetDataSet = @"Cannot change DataSet property once it is set.";
-public const string DataView_CanNotUseDataViewManager = @"DataSet must be set prior to using DataViewManager.";
-public const string DataView_CanNotSetTable = @"Cannot change Table property once it is set.";
-public const string DataView_CanNotUse = @"DataTable must be set prior to using DataView.";
-public const string DataView_CanNotBindTable = @"Cannot bind to DataTable with no name.";
-public const string DataView_SetIListObject = @"Cannot set an object into this list.";
-public const string DataView_AddNewNotAllowNull = @"Cannot call AddNew on a DataView where AllowNew is false.";
-public const string DataView_NotOpen = @"DataView is not open.";
-public const string DataView_CreateChildView = @"The relation is not parented to the table to which this DataView points.";
-public const string DataView_CanNotDelete = @"Cannot delete on a DataSource where AllowDelete is false.";
-public const string DataView_CanNotEdit = @"Cannot edit on a DataSource where AllowEdit is false.";
-public const string DataView_GetElementIndex = @"Index {0} is either negative or above rows count.";
-public const string DataView_AddExternalObject = @"Cannot add external objects to this list.";
-public const string DataView_CanNotClear = @"Cannot clear this list.";
-public const string DataView_InsertExternalObject = @"Cannot insert external objects to this list.";
-public const string DataView_RemoveExternalObject = @"Cannot remove objects not in the list.";
-
-public const string DataROWView_PropertyNotFound = @"{0} is neither a DataColumn nor a DataRelation for table {1}.";
-
-public const string Range_Argument = @"Min ({0}) must be less than or equal to max ({1}) in a Range object.";
-public const string Range_NullRange = @"This is a null range.";
-public const string RecordManager_MinimumCapacity = @"MinimumCapacity must be non-negative.";
-
-
-public const string CodeGen_InvalidIdentifier = @"Cannot generate identifier for name '{0}'.";
-public const string CodeGen_DuplicateTableName = @"There is more than one table with the same name '{0}' (even if namespace is different).";
-public const string CodeGen_TypeCantBeNull = @"Column '{0}': Type '{1}' cannot be null.";
-public const string CodeGen_NoCtor0 = @"Column '{0}': Type '{1}' does not have parameterless constructor.";
-public const string CodeGen_NoCtor1 = @"Column '{0}': Type '{1}' does not have constructor with string argument.";
-
-
-
-public const string SqlConvert_ConvertFailed = @" Cannot convert object of type '{0}' to object of type '{1}'.";
-
-
-public const string DataSet_DefaultDataException = @"Data Exception.";
-public const string DataSet_DefaultConstraintException = @"Constraint Exception.";
-public const string DataSet_DefaultDeletedRowInaccessibleException = @"Deleted rows inaccessible.";
-public const string DataSet_DefaultDuplicateNameException = @"Duplicate name not allowed.";
-public const string DataSet_DefaultInRowChangingEventException = @"Operation not supported in the RowChanging event.";
-public const string DataSet_DefaultInvalidConstraintException = @"Invalid constraint.";
-public const string DataSet_DefaultMissingPrimaryKeyException = @"Missing primary key.";
-public const string DataSet_DefaultNoNullAllowedException = @"Null not allowed.";
-public const string DataSet_DefaultReadOnlyException = @"Column is marked read only.";
-public const string DataSet_DefaultRowNotInTableException = @"Row not found in table.";
-public const string DataSet_DefaultVersionNotFoundException = @"Version not found.";
-
-
-public const string Load_ReadOnlyDataModified = @"ReadOnly Data is Modified.";
-
-
-
-public const string DataTableReader_InvalidDataTableReader = @"DataTableReader is invalid for current DataTable '{0}'.";
-public const string DataTableReader_SchemaInvalidDataTableReader = @"Schema of current DataTable '{0}' in DataTableReader has changed, DataTableReader is invalid.";
-public const string DataTableReader_CannotCreateDataReaderOnEmptyDataSet = @"DataTableReader Cannot be created. There is no DataTable in DataSet.";
-public const string DataTableReader_DataTableReaderArgumentIsEmpty = @"Cannot create DataTableReader. Argument is Empty.";
-public const string DataTableReader_ArgumentContainsNullValue = @"Cannot create DataTableReader. Arguments contain null value.";
-public const string DataTableReader_InvalidRowInDataTableReader = @"Current DataRow is either in Deleted or Detached state.";
-
-public const string DataTableReader_DataTableCleared = @"Current DataTable '{0}' is empty. There is no DataRow in DataTable.";
-
-
-
-
-public const string RbTree_InvalidState = @"DataTable internal index is corrupted: '{0}'.";
-public const string RbTree_EnumerationBroken = @"Collection was modified; enumeration operation might not execute.";
-
-
-public const string NamedSimpleType_InvalidDuplicateNamedSimpleTypeDelaration = @"Simple type '{0}' has already be declared with different '{1}'.";
-
-
-
-public const string DataDom_Foliation = @"Invalid foliation.";
-public const string DataDom_TableNameChange = @"Cannot change the table name once the associated DataSet is mapped to a loaded XML document.";
-public const string DataDom_TableNamespaceChange = @"Cannot change the table namespace once the associated DataSet is mapped to a loaded XML document.";
-public const string DataDom_ColumnNameChange = @"Cannot change the column name once the associated DataSet is mapped to a loaded XML document.";
-public const string DataDom_ColumnNamespaceChange = @"Cannot change the column namespace once the associated DataSet is mapped to a loaded XML document.";
-public const string DataDom_ColumnMappingChange = @"Cannot change the ColumnMapping property once the associated DataSet is mapped to a loaded XML document.";
-public const string DataDom_TableColumnsChange = @"Cannot add or remove columns from the table once the DataSet is mapped to a loaded XML document.";
-public const string DataDom_DataSetTablesChange = @"Cannot add or remove tables from the DataSet once the DataSet is mapped to a loaded XML document.";
-public const string DataDom_DataSetNestedRelationsChange = @"Cannot add, remove, or change Nested relations from the DataSet once the DataSet is mapped to a loaded XML document.";
-public const string DataDom_DataSetNull = @"The DataSet parameter is invalid. It cannot be null.";
-public const string DataDom_DataSetNameChange = @"Cannot change the DataSet name once the DataSet is mapped to a loaded XML document.";
-public const string DataDom_CloneNode = @"This type of node cannot be cloned: {0}.";
-public const string DataDom_MultipleLoad = @"Cannot load XmlDataDocument if it already contains data. Please use a new XmlDataDocument.";
-public const string DataDom_MultipleDataSet = @"DataSet can be associated with at most one XmlDataDocument. Cannot associate the DataSet with the current XmlDataDocument because the DataSet is already associated with another XmlDataDocument.";
-public const string DataDom_EnforceConstraintsShouldBeOff = @"Please set DataSet.EnforceConstraints == false before trying to edit XmlDataDocument using XML operations.";
-public const string DataDom_NotSupport_GetElementById = @"GetElementById() is not supported on DataDocument.";
-public const string DataDom_NotSupport_EntRef = @"Cannot create entity references on DataDocument.";
-public const string DataDom_NotSupport_Clear = @"Clear function on DateSet and DataTable is not supported on XmlDataDocument.";
-
-
-
-
-public const string StrongTyping_CannotRemoveColumn = @"Cannot remove column since it is built in to this dataSet.";
-public const string StrongTyping_CananotRemoveRelation = @"Cannot remove relation since it is built in to this dataSet.";
-public const string propertyChangedEventDescr = @"Occurs whenever a property for this control changes.";
-public const string collectionChangedEventDescr = @"Occurs whenever this collection's membership changes.";
-public const string StrongTyping_CananotAccessDBNull = @"Cannot get value because it is DBNull.";
-
-
-
-
-
-
-public const string ADP_PropertyNotSupported = @"The '{0}' property requires Microsoft WindowsNT or a WindowsNT based operating system.";
-
-
-public const string ConfigProviderNotFound = @"Unable to find the requested .Net Framework Data Provider.  It may not be installed.";
-public const string ConfigProviderInvalid = @"The requested .Net Framework Data Provider's implementation does not have an Instance field of a System.Data.Common.DbProviderFactory derived type.";
-public const string ConfigProviderNotInstalled = @"Failed to find or load the registered .Net Framework Data Provider.";
-public const string ConfigProviderMissing = @"The missing .Net Framework Data Provider's assembly qualified name is required.";
-
-
-public const string ConfigBaseElementsOnly = @"Only elements allowed.";
-public const string ConfigBaseNoChildNodes = @"Child nodes not allowed.";
-public const string ConfigUnrecognizedAttributes = @"Unrecognized attribute '{0}'.";
-public const string ConfigUnrecognizedElement = @"Unrecognized element.";
-public const string ConfigSectionsUnique = @"The '{0}' section can only appear once per config file.";
-public const string ConfigRequiredAttributeMissing = @"Required attribute '{0}' not found.";
-public const string ConfigRequiredAttributeEmpty = @"Required attribute '{0}' cannot be empty.";
-
-public const string ADP_EmptyArray = @"Expecting non-empty array for '{0}' parameter.";
-
-
-public const string ADP_SingleValuedProperty = @"The only acceptable value for the property '{0}' is '{1}'.";
-public const string ADP_DoubleValuedProperty = @"The acceptable values for the property '{0}' are '{1}' or '{2}'.";
-public const string ADP_InvalidPrefixSuffix = @"Specified QuotePrefix and QuoteSuffix values do not match.";
-
-public const string ADP_InvalidArgumentLength = @"The length of argument '{0}' exceeds it's limit of '{1}'.";
-
-
-
-
-
-public const string SQL_WrongType = @"Expecting argument of type {1}, but received type {0}.";
-
-
-
-public const string ADP_InvalidConnectionOptionValue = @"Invalid value for key '{0}'.";
-public const string ADP_MissingConnectionOptionValue = @"Use of key '{0}' requires the key '{1}' to be present.";
-public const string ADP_InvalidConnectionOptionValueLength = @"The value's length for key '{0}' exceeds it's limit of '{1}'.";
-
-
-public const string ADP_KeywordNotSupported = @"Keyword not supported: '{0}'.";
-
-
-public const string ADP_UdlFileError = @"Unable to load the UDL file.";
-public const string ADP_InvalidUDL = @"Invalid UDL file.";
-
-
-
-
-
-public const string ADP_InternalProviderError = @"Internal .Net Framework Data Provider error {0}.";
-
-
-
-
-
-
-
-
-
-
-public const string ADP_NoQuoteChange = @"The QuotePrefix and QuoteSuffix properties cannot be changed once an Insert, Update, or Delete command has been generated.";
-public const string ADP_MissingSourceCommand = @"The DataAdapter.SelectCommand property needs to be initialized.";
-public const string ADP_MissingSourceCommandConnection = @"The DataAdapter.SelectCommand.Connection property needs to be initialized;";
-
-
-public const string ADP_InvalidMultipartName = @"{0} ""{1}"".";
-public const string ADP_InvalidMultipartNameQuoteUsage = @"{0} ""{1}"", incorrect usage of quotes.";
-public const string ADP_InvalidMultipartNameToManyParts = @"{0} ""{1}"", the current limit of ""{2}"" is insufficient.";
-
-
-public const string SQL_BulkCopyDestinationTableName = @"SqlBulkCopy.WriteToServer failed because the SqlBulkCopy.DestinationTableName is an invalid multipart name";
-public const string SQL_TDSParserTableName = @"Processing of results from SQL Server failed because of an invalid multipart name";
-public const string SQL_UDTTypeName = @"SqlParameter.UdtTypeName is an invalid multipart name";
-public const string SQL_TypeName = @"SqlParameter.TypeName is an invalid multipart name";
-public const string SQL_SqlCommandCommandText = @"SqlCommand.DeriveParameters failed because the SqlCommand.CommandText property value is an invalid multipart name";
-public const string ODBC_ODBCCommandText = @"OdbcCommandBuilder.DeriveParameters failed because the OdbcCommand.CommandText property value is an invalid multipart name";
-public const string OLEDB_OLEDBCommandText = @"OleDbCommandBuilder.DeriveParameters failed because the OleDbCommandBuilder.CommandText property value is an invalid multipart name";
-
-
-public const string SQLMSF_FailoverPartnerNotSupported = @"Connecting to a mirrored SQL Server instance using the MultiSubnetFailover connection option is not supported.";
-
-
-
-
-
-
-
-
-
-
-
-
-
-public const string ADP_ColumnSchemaExpression = @"The column mapping from SourceColumn '{0}' failed because the DataColumn '{1}' is a computed column.";
-public const string ADP_ColumnSchemaMismatch = @"Inconvertible type mismatch between SourceColumn '{0}' of {1} and the DataColumn '{2}' of {3}.";
-public const string ADP_ColumnSchemaMissing1 = @"Missing the DataColumn '{0}' for the SourceColumn '{2}'.";
-public const string ADP_ColumnSchemaMissing2 = @"Missing the DataColumn '{0}' in the DataTable '{1}' for the SourceColumn '{2}'.";
-
-
-
-public const string ADP_InvalidSourceColumn = @"SourceColumn is required to be a non-empty string.";
-
-public const string ADP_MissingColumnMapping = @"Missing SourceColumn mapping for '{0}'.";
-
-
-
-
-public const string ADP_NotSupportedEnumerationValue = @"The {0} enumeration value, {1}, is not supported by the {2} method.";
-public const string ODBC_NotSupportedEnumerationValue = @"The {0} enumeration value, {1}, is not supported by the .Net Framework Odbc Data Provider.";
-public const string OLEDB_NotSupportedEnumerationValue = @"The {0} enumeration value, {1}, is not supported by the .Net Framework OleDb Data Provider.";
-public const string SQL_NotSupportedEnumerationValue = @"The {0} enumeration value, {1}, is not supported by the .Net Framework SqlClient Data Provider.";
-
-
-
-public const string ADP_ComputerNameEx = @"Unable to retrieve the ComputerNameDnsFullyQualified, {0}.";
-
-
-
-public const string ADP_MissingTableSchema = @"Missing the '{0}' DataTable for the '{1}' SourceTable.";
-
-
-
-public const string ADP_InvalidSourceTable = @"SourceTable is required to be a non-empty string";
-
-public const string ADP_MissingTableMapping = @"Missing SourceTable mapping: '{0}'";
-
-
-
-public const string ADP_CommandTextRequired = @"{0}: CommandText property has not been initialized";
-public const string ADP_ConnectionRequired = @"{0}: Connection property has not been initialized.";
-public const string ADP_OpenConnectionRequired = @"{0} requires an open and available Connection. {1}";
-
-public const string ADP_ConnectionRequired_Fill = @"Fill: SelectCommand.Connection property has not been initialized.";
-public const string ADP_ConnectionRequired_FillPage = @"FillPage: SelectCommand.Connection property has not been initialized.";
-public const string ADP_ConnectionRequired_FillSchema = @"FillSchema: SelectCommand.Connection property has not been initialized.";
-public const string ADP_ConnectionRequired_Insert = @"Update requires the InsertCommand to have a connection object. The Connection property of the InsertCommand has not been initialized.";
-public const string ADP_ConnectionRequired_Update = @"Update requires the UpdateCommand to have a connection object. The Connection property of the UpdateCommand has not been initialized.";
-public const string ADP_ConnectionRequired_Delete = @"Update requires the DeleteCommand to have a connection object. The Connection property of the DeleteCommand has not been initialized.";
-public const string ADP_ConnectionRequired_Batch = @"Update requires a connection object.  The Connection property has not been initialized.";
-public const string ADP_ConnectionRequired_Clone = @"Update requires the command clone to have a connection object. The Connection property of the command clone has not been initialized.";
-public const string ADP_ConnecitonRequired_UpdateRows = @"Update requires a connection.";
-
-public const string ADP_OpenConnectionRequired_Insert = @"Update requires the {0}Command to have an open connection object. {1}";
-public const string ADP_OpenConnectionRequired_Update = @"Update requires the {0}Command to have an open connection object. {1}";
-public const string ADP_OpenConnectionRequired_Delete = @"Update requires the {0}Command to have an open connection object. {1}";
-public const string ADP_OpenConnectionRequired_Clone = @"Update requires the updating command to have an open connection object. {1}";
-
-public const string ADP_NoStoredProcedureExists = @"The stored procedure '{0}' doesn't exist.";
-public const string ADP_TransactionCompleted = @"The transaction assigned to this command must be the most nested pending local transaction.";
-public const string ADP_TransactionConnectionMismatch = @"The transaction is either not associated with the current connection or has been completed.";
-public const string ADP_TransactionCompletedButNotDisposed = @"The transaction associated with the current connection has completed but has not been disposed.  The transaction must be disposed before the connection can be used to execute SQL statements.";
-public const string ADP_TransactionRequired = @"{0} requires the command to have a transaction when the connection assigned to the command is in a pending local transaction.  The Transaction property of the command has not been initialized.";
-public const string ADP_OpenResultSetExists = @"There is already an open SqlResultSet associated with this command which must be closed first.";
-public const string ADP_OpenReaderExists = @"There is already an open DataReader associated with this Command which must be closed first.";
-public const string ADP_DeriveParametersNotSupported = @"{0} DeriveParameters only supports CommandType.StoredProcedure, not CommandType.{1}.";
-public const string ADP_CalledTwice = @"The method '{0}' cannot be called more than once for the same execution.";
-public const string ADP_IncorrectAsyncResult = @"Incorrect async result.";
-
-
-
-public const string ADP_MissingSelectCommand = @"The SelectCommand property has not been initialized before calling '{0}'.";
-public const string ADP_UnwantedStatementType = @"The StatementType {0} is not expected here.";
-
-
-
-public const string ADP_FillSchemaRequiresSourceTableName = @"FillSchema: expected a non-empty string for the SourceTable name.";
-
-
-
-public const string ADP_InvalidMaxRecords = @"The MaxRecords value of {0} is invalid; the value must be >= 0.";
-public const string ADP_InvalidStartRecord = @"The StartRecord value of {0} is invalid; the value must be >= 0.";
-
-public const string ADP_FillRequiresSourceTableName = @"Fill: expected a non-empty string for the SourceTable name.";
-public const string ADP_FillChapterAutoIncrement = @"Hierarchical chapter columns must map to an AutoIncrement DataColumn.";
-public const string ADP_MissingDataReaderFieldType = @"DataReader.GetFieldType({0}) returned null.";
-public const string ADP_OnlyOneTableForStartRecordOrMaxRecords = @"Only specify one item in the dataTables array when using non-zero values for startRecords or maxRecords.";
-
-
-public const string ADP_UpdateRequiresSourceTable = @"Update unable to find TableMapping['{0}'] or DataTable '{0}'.";
-public const string ADP_UpdateRequiresSourceTableName = @"Update: expected a non-empty SourceTable name.";
-public const string ADP_MissingTableMappingDestination = @"Missing TableMapping when TableMapping.DataSetTable='{0}'.";
-
-public const string ADP_UpdateRequiresCommandClone = @"Update requires the command clone to be valid.";
-public const string ADP_UpdateRequiresCommandSelect = @"Auto SQL generation during Update requires a valid SelectCommand.";
-public const string ADP_UpdateRequiresCommandInsert = @"Update requires a valid InsertCommand when passed DataRow collection with new rows.";
-public const string ADP_UpdateRequiresCommandUpdate = @"Update requires a valid UpdateCommand when passed DataRow collection with modified rows.";
-public const string ADP_UpdateRequiresCommandDelete = @"Update requires a valid DeleteCommand when passed DataRow collection with deleted rows.";
-
-
-public const string ADP_UpdateMismatchRowTable = @"DataRow[{0}] is from a different DataTable than DataRow[0].";
-public const string ADP_RowUpdatedErrors = @"RowUpdatedEvent: Errors occurred; no additional is information available.";
-public const string ADP_RowUpdatingErrors = @"RowUpdatingEvent: Errors occurred; no additional is information available.";
-
-public const string ADP_ResultsNotAllowedDuringBatch = @"When batching, the command's UpdatedRowSource property value of UpdateRowSource.FirstReturnedRecord or UpdateRowSource.Both is invalid.";
-
-public const string ADP_UpdateConcurrencyViolation_Update = @"Concurrency violation: the UpdateCommand affected {0} of the expected {1} records.";
-public const string ADP_UpdateConcurrencyViolation_Delete = @"Concurrency violation: the DeleteCommand affected {0} of the expected {1} records.";
-public const string ADP_UpdateConcurrencyViolation_Batch = @"Concurrency violation: the batched command affected {0} of the expected {1} records.";
-
-
-public const string ADP_InvalidCommandTimeout = @"Invalid CommandTimeout value {0}; the value must be >= 0.";
-
-public const string ADP_UninitializedParameterSize = @"{1}[{0}]: the Size property has an invalid size of 0.";
-public const string ADP_PrepareParameterType = @"{0}.Prepare method requires all parameters to have an explicitly set type.";
-public const string ADP_PrepareParameterSize = @"{0}.Prepare method requires all variable length parameters to have an explicitly set non-zero Size.";
-public const string ADP_PrepareParameterScale = @"{0}.Prepare method requires parameters of type '{1}' have an explicitly set Precision and Scale.";
-public const string ADP_MismatchedAsyncResult = @"Mismatched end method call for asyncResult.  Expected call to {0} but {1} was called instead.";
-
-
-
-public const string ADP_ClosedConnectionError = @"Invalid operation. The connection is closed.";
-
-public const string ADP_ConnectionIsDisabled = @"The connection has been disabled.";
-
-public const string ADP_LocalTransactionPresent = @"Cannot enlist in the transaction because a local transaction is in progress on the connection.  Finish local transaction and retry.";
-public const string ADP_TransactionPresent = @"Connection currently has transaction enlisted.  Finish current transaction and retry.";
-
-public const string ADP_EmptyDatabaseName = @"Database cannot be null, the empty string, or string of only whitespace.";
-public const string ADP_DatabaseNameTooLong = @"The argument is too long.";
-public const string ADP_InvalidConnectTimeoutValue = @"Invalid 'Connect Timeout' value which must be an integer >= 0.";
-
-
-
-
-public const string ADP_InvalidSourceBufferIndex = @"Invalid source buffer (size of {0}) offset: {1}";
-public const string ADP_InvalidDestinationBufferIndex = @"Invalid destination buffer (size of {0}) offset: {1}";
-
-public const string ADP_DataReaderNoData = @"No data exists for the row/column.";
-
-
-public const string ADP_NumericToDecimalOverflow = @"The numerical value is too large to fit into a 96 bit decimal.";
-
-
-public const string ADP_StreamClosed = @"Invalid attempt to {0} when stream is closed.";
-public const string ADP_InvalidSeekOrigin = @"Specified SeekOrigin value is invalid.";
-
-
-public const string ADP_DynamicSQLJoinUnsupported = @"Dynamic SQL generation is not supported against multiple base tables.";
-public const string ADP_DynamicSQLNoTableInfo = @"Dynamic SQL generation is not supported against a SelectCommand that does not return any base table information.";
-public const string ADP_DynamicSQLNoKeyInfoDelete = @"Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not return any key column information.";
-public const string ADP_DynamicSQLNoKeyInfoUpdate = @"Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.";
-public const string ADP_DynamicSQLNoKeyInfoRowVersionDelete = @"Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not contain a row version column.";
-public const string ADP_DynamicSQLNoKeyInfoRowVersionUpdate = @"Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not contain a row version column.";
-public const string ADP_DynamicSQLNestedQuote = @"Dynamic SQL generation not supported against table names '{0}' that contain the QuotePrefix or QuoteSuffix character '{1}'.";
-public const string ADP_NonSequentialColumnAccess = @"Invalid attempt to read from column ordinal '{0}'.  With CommandBehavior.SequentialAccess, you may only read from column ordinal '{1}' or greater.";
-
-public const string ADP_InvalidDateTimeDigits = @"Data type '{0}' can not be formatted as a literal because it has an invalid date time digits.";
-public const string ADP_InvalidFormatValue = @"The value can not be formatted as a literal of the requested type.";
-public const string ADP_InvalidMaximumScale = @"Data type '{0}' can not be formatted as a literal because it has an invalid maximum scale.";
-public const string ADP_LiteralValueIsInvalid = @"The literal value provided is not a valid literal for the data type '{0}'.";
-public const string ADP_EvenLengthLiteralValue = @"'{0}':The length of the literal value must be even.";
-public const string ADP_HexDigitLiteralValue = @"'{0}':The literal value must be a string with hexadecimal digits";
-public const string ADP_QuotePrefixNotSet = @"{0} requires open connection when the quote prefix has not been set.";
-public const string ADP_UnableToCreateBooleanLiteral = @"Can not determine the correct boolean literal values. Boolean literals can not be created.";
-public const string ADP_UnsupportedNativeDataTypeOleDb = @"Literals of the native data type associated with data type '{0}' are not supported.";
-
-
-
-public const string ADP_InvalidDataType = @"The parameter data type of {0} is invalid.";
-public const string ADP_UnknownDataType = @"No mapping exists from object type {0} to a known managed provider native type.";
-public const string ADP_UnknownDataTypeCode = @"Unable to handle an unknown TypeCode {0} returned by Type {1}.";
-public const string ADP_DbTypeNotSupported = @"No mapping exists from DbType {0} to a known {1}.";
-public const string ADP_VersionDoesNotSupportDataType = @"The version of SQL Server in use does not support datatype '{0}'.";
-public const string ADP_ParameterValueOutOfRange = @"Parameter value '{0}' is out of range.";
-public const string ADP_BadParameterName = @"Specified parameter name '{0}' is not valid.";
-public const string ADP_MultipleReturnValue = @"Multiple return value parameters are not supported.";
-
-
-public const string ADP_InvalidSizeValue = @"Invalid parameter Size value '{0}'. The value must be greater than or equal to 0.";
-public const string ADP_NegativeParameter = @"Invalid value for argument '{0}'. The value must be greater than or equal to 0.";
-
-public const string ADP_InvalidMetaDataValue = @"Invalid value for this metadata.";
-public const string ADP_NotRowType = @"Metadata must be SqlDbType.Row";
-public const string ADP_ParameterConversionFailed = @"Failed to convert parameter value from a {0} to a {1}.";
-
-
-
-public const string ADP_ParallelTransactionsNotSupported = @"{0} does not support parallel transactions.";
-public const string ADP_TransactionZombied = @"This {0} has completed; it is no longer usable.";
-
-public const string ADP_DbRecordReadOnly = @"'{0}' cannot be called when the record is read only.";
-
-
-public const string ADP_DbDataUpdatableRecordReadOnly = @"'{0}' cannot be called when the DbDataRecord is read only.";
-public const string ADP_InvalidImplicitConversion = @"Implicit conversion of object type '{0}' to data type '{1}' is not supported.";
-
-public const string ADP_InvalidBufferSizeOrIndex = @"Buffer offset '{1}' plus the bytes available '{0}' is greater than the length of the passed in buffer.";
-public const string ADP_InvalidDataLength = @"Data length '{0}' is less than 0.";
-public const string ADP_InvalidDataLength2 = @"Specified length '{0}' is out of range.";
-public const string ADP_NonSeqByteAccess = @"Invalid {2} attempt at dataIndex '{0}'.  With CommandBehavior.SequentialAccess, you may only read from dataIndex '{1}' or greater.";
-
-public const string ADP_OffsetOutOfRangeException = @"Offset must refer to a location within the value.";
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-public const string ODBC_GetSchemaRestrictionRequired = @"""The ODBC managed provider requires that the TABLE_NAME restriction be specified and non-null for the GetSchema indexes collection.";
-
-
-public const string ADP_InvalidArgumentValue = @"Invalid argument value for method '{0}'.";
-
-
-
-
-public const string ADP_OdbcNoTypesFromProvider = @"The ODBC provider did not return results from SQLGETTYPEINFO.";
-
-
-
-public const string ADP_NullDataTable = @"Unexpected null DataTable argument";
-public const string ADP_NullDataSet = @"Unexpected null DataSet argument.";
-
-
-
-public const string OdbcConnection_ConnectionStringTooLong = @"Connection string exceeds maximum allowed length of {0}.";
-
-public const string Odbc_GetTypeMapping_UnknownType = @"{0} - unable to map type.";
-public const string Odbc_UnknownSQLType = @"Unknown SQL type - {0}.";
-public const string Odbc_UnknownURTType = @"Unknown URT type - {0}.";
-public const string Odbc_NegativeArgument = @"Invalid negative argument!";
-public const string Odbc_CantSetPropertyOnOpenConnection = @"Can't set property on an open connection.";
-public const string Odbc_NoMappingForSqlTransactionLevel = @"No valid mapping for a SQL_TRANSACTION '{0}' to a System.Data.IsolationLevel enumeration value.";
-public const string Odbc_CantEnableConnectionpooling = @"{0} - unable to enable connection pooling...";
-public const string Odbc_CantAllocateEnvironmentHandle = @"{0} - unable to allocate an environment handle.";
-public const string Odbc_FailedToGetDescriptorHandle = @"{0} - unable to get descriptor handle.";
-public const string Odbc_NotInTransaction = @"Not in a transaction";
-public const string Odbc_UnknownOdbcType = @"Invalid OdbcType enumeration value={0}.";
-public const string Odbc_NullData = @"Use IsDBNull when DBNull.Value data is expected.";
-public const string Odbc_ExceptionMessage = @"{0} [{1}] {2}";
-public const string Odbc_ExceptionNoInfoMsg = @"{0} - no error information available";
-
-public const string Odbc_ConnectionClosed = @"The connection is closed.";
-public const string Odbc_OpenConnectionNoOwner = @"An internal connection does not have an owner.";
-
-
-
-
-public const string Odbc_MDACWrongVersion = @"The .Net Framework Odbc Data Provider requires Microsoft Data Access Components(MDAC) version 2.6 or later.  Version {0} was found currently installed.";
-public const string OleDb_MDACWrongVersion = @"The .Net Framework OleDb Data Provider requires Microsoft Data Access Components(MDAC) version 2.6 or later.  Version {0} was found currently installed.";
-
-
-
-public const string OleDb_SchemaRowsetsNotSupported = @"'{0}' interface is not supported by the '{1}' provider.  GetOleDbSchemaTable is unavailable with the current provider.";
-public const string OleDb_NoErrorInformation2 = @"'{0}' failed with no error message available, result code: {1}.";
-public const string OleDb_NoErrorInformation = @"No error message available, result code: {0}.";
-public const string OleDb_MDACNotAvailable = @"The .Net Framework Data Providers require Microsoft Data Access Components(MDAC).  Please install Microsoft Data Access Components(MDAC) version 2.6 or later.";
-public const string OleDb_MSDASQLNotSupported = @"The .Net Framework Data Provider for OLEDB (System.Data.OleDb) does not support the Microsoft OLE DB Provider for ODBC Drivers (MSDASQL). Use the .Net Framework Data Provider for ODBC (System.Data.Odbc).";
-public const string OleDb_PossiblePromptNotUserInteractive = @"The .Net Framework Data Provider for OLEDB will not allow the OLE DB Provider to prompt the user in a non-interactive environment.";
-public const string OleDb_ProviderUnavailable = @"The '{0}' provider is not registered on the local machine.";
-public const string OleDb_CommandTextNotSupported = @"The ICommandText interface is not supported by the '{0}' provider. Use CommandType.TableDirect instead.";
-public const string OleDb_TransactionsNotSupported = @"The ITransactionLocal interface is not supported by the '{0}' provider.  Local transactions are unavailable with the current provider.";
-public const string OleDb_ConnectionStringSyntax = @"Format of the initialization string does not conform to the OLE DB specification.  Starting around char[{0}] in the connection string.";
-public const string OleDb_AsynchronousNotSupported = @"'Asynchronous Processing' is not a supported feature of the .Net Framework Data OLE DB Provider(System.Data.OleDb).";
-public const string OleDb_NoProviderSpecified = @"An OLE DB Provider was not specified in the ConnectionString.  An example would be, 'Provider=SQLOLEDB;'.";
-public const string OleDb_InvalidProviderSpecified = @"The OLE DB Provider specified in the ConnectionString is too long.";
-public const string OleDb_InvalidRestrictionsDbInfoKeywords = @"No restrictions are expected for the DbInfoKeywords OleDbSchemaGuid.";
-public const string OleDb_InvalidRestrictionsDbInfoLiteral = @"No restrictions are expected for the DbInfoLiterals OleDbSchemaGuid.";
-public const string OleDb_InvalidRestrictionsSchemaGuids = @"No restrictions are expected for the schema guid OleDbSchemaGuid.";
-public const string OleDb_NotSupportedSchemaTable = @"The {0} OleDbSchemaGuid is not a supported schema by the '{1}' provider.";
-public const string OleDb_ConfigWrongNumberOfValues = @"The '{0}' configuration setting has the wrong number of values.";
-public const string OleDb_ConfigUnableToLoadXmlMetaDataFile = @"Unable to load the XML file specified in configuration setting '{0}'.";
-
-
-public const string OleDb_CommandParameterBadAccessor = @"Command parameter[{0}] '{1}' is invalid.";
-public const string OleDb_CommandParameterCantConvertValue = @"Command parameter[{0}] '{1}' data value could not be converted for reasons other than sign mismatch or data overflow.";
-public const string OleDb_CommandParameterSignMismatch = @"Conversion failed for command parameter[{0}] '{1}' because the data value was signed and the type used by the provider was unsigned.";
-public const string OleDb_CommandParameterDataOverflow = @"Conversion failed for command parameter[{0}] '{1}' because the data value overflowed the type used by the provider.";
-public const string OleDb_CommandParameterUnavailable = @"Provider encountered an error while sending command parameter[{0}] '{1}' value and stopped processing.";
-public const string OleDb_CommandParameterDefault = @"Parameter[{0}] '{1}' has no default value.";
-public const string OleDb_CommandParameterError = @"Error occurred with parameter[{0}]: {1}.";
-
-public const string OleDb_BadStatus_ParamAcc = @"System.Data.OleDb.OleDbDataAdapter internal error: invalid parameter accessor: {0} {1}.";
-public const string OleDb_UninitializedParameters = @"Parameter[{0}]: the OleDbType property is uninitialized: OleDbType.{1}.";
-public const string OleDb_NoProviderSupportForParameters = @"The ICommandWithParameters interface is not supported by the '{0}' provider.  Command parameters are unsupported with the current provider.";
-public const string OleDb_NoProviderSupportForSProcResetParameters = @"Retrieving procedure parameter information is not supported by the '{0}' provider.";
-
-
-public const string OleDb_CanNotDetermineDecimalSeparator = @"Can not determine the server's decimal separator. Non-integer numeric literals can not be created.";
-
-
-public const string OleDb_Fill_NotADODB = @"Object is not an ADODB.RecordSet or an ADODB.Record.";
-public const string OleDb_Fill_EmptyRecordSet = @"Unable to retrieve the '{0}' interface from the ADODB.RecordSet object.";
-public const string OleDb_Fill_EmptyRecord = @"Unable to retrieve the IRow interface from the ADODB.Record object.";
-
-
-public const string OleDb_ISourcesRowsetNotSupported = @"Type does not support the OLE DB interface ISourcesRowset";
-
-
-public const string OleDb_IDBInfoNotSupported = @"Cannot construct the ReservedWords schema collection because the provider does not support IDBInfo.";
-
-
-
-public const string OleDb_PropertyNotSupported = @"The property's value was not set because the provider did not support the '{0}' property, or the consumer attempted to get or set values of properties not in the Initialization property group and the data source object is uninitialized.";
-public const string OleDb_PropertyBadValue = @"Failed to initialize the '{0}' property for one of the following reasons:\r\n\tThe value data type was not the data type of the property or was not null. For example, the property was DBPROP_MEMORYUSAGE, which has a data type of Int32, and the data type was Int64.\r\n\tThe value was not a valid value. For example, the property was DBPROP_MEMORYUSAGE and the value was negative.\r\n\tThe value was a valid value for the property and the provider supports the property as a settable property, but the provider does not support the value specified. This includes the case where the value was added to the property in OLE DB after the provider was written.";
-public const string OleDb_PropertyBadOption = @"The value of Options was invalid.";
-public const string OleDb_PropertyBadColumn = @"The ColumnID element was invalid.";
-public const string OleDb_PropertyNotAllSettable = @"A '{0}' property was specified to be applied to all columns but could not be applied to one or more of them.";
-public const string OleDb_PropertyNotSettable = @"The '{0}' property was read-only, or the consumer attempted to set values of properties in the Initialization property group after the data source object was initialized. Consumers can set the value of a read-only property to its current value. This status is also returned if a settable column property could not be set for the particular column.";
-public const string OleDb_PropertyNotSet = @"The optional '{0}' property's value was not set to the specified value and setting the property to the specified value was not possible.";
-public const string OleDb_PropertyConflicting = @"The '{0}'property's value was not set because doing so would have conflicted with an existing property.";
-public const string OleDb_PropertyNotAvailable = @"(Reserved).";
-public const string OleDb_PropertyStatusUnknown = @"The provider returned an unknown DBPROPSTATUS_ value '{0}'.";
-
-
-
-public const string OleDb_BadAccessor = @"Accessor validation was deferred and was performed while the method returned data. The binding was invalid for this column or parameter.";
-public const string OleDb_BadStatusRowAccessor = @"OleDbDataAdapter internal error: invalid row set accessor: Ordinal={0} Status={1}.";
-public const string OleDb_CantConvertValue = @"The data value could not be converted for reasons other than sign mismatch or data overflow. For example, the data was corrupted in the data store but the row was still retrievable.";
-public const string OleDb_CantCreate = @"The provider could not allocate memory in which to return {0} data.";
-public const string OleDb_DataOverflow = @"Conversion failed because the {0} data value overflowed the type specified for the {0} value part in the consumer's buffer.";
-public const string OleDb_GVtUnknown = @"OleDbDataAdapter internal error: [get] Unknown OLE DB data type: 0x{0} ({1}).";
-public const string OleDb_SignMismatch = @"Conversion failed because the {0} data value was signed and the type specified for the {0} value part in the consumer's buffer was unsigned.";
-public const string OleDb_SVtUnknown = @"OleDbDataAdapter internal error: [set] Unknown OLE DB data type: 0x{0} ({1}).";
-public const string OleDb_Unavailable = @"The provider could not determine the {0} value. For example, the row was just created, the default for the {0} column was not available, and the consumer had not yet set a new {0} value.";
-public const string OleDb_UnexpectedStatusValue = @"OLE DB Provider returned an unexpected status value of {0}.";
-public const string OleDb_ThreadApartmentState = @"The OleDbDataReader.Read must be used from the same thread on which is was created if that thread's ApartmentState was not ApartmentState.MTA.";
-
-public const string OleDb_NoErrorMessage = @"Unspecified error: {0}";
-public const string OleDb_FailedGetDescription = @"IErrorInfo.GetDescription failed with {0}.";
-public const string OleDb_FailedGetSource = @"IErrorInfo.GetSource failed with {0}.";
-public const string OleDb_DBBindingGetVector = @"DBTYPE_VECTOR data is not supported by the .Net Framework Data OLE DB Provider(System.Data.OleDb).";
-
-
-
-
-
-
-public const string ADP_InvalidMinMaxPoolSizeValues = @"Invalid min or max pool size values, min pool size cannot be greater than the max pool size.";
-public const string ADP_ObsoleteKeyword = @"The '{0}' keyword is obsolete. Use '{1}' instead.";
-public const string SQL_CannotGetDTCAddress = @"Unable to get the address of the distributed transaction coordinator for the server, from the server.  Is DTC enabled on the server?";
-public const string SQL_InvalidOptionLength = @"The length of the value for the connection parameter <{0}> exceeds the maximum allowed 65535 characters.";
-public const string SQL_InvalidPacketSizeValue = @"Invalid 'Packet Size'.  The value must be an integer >= 512 and <= 32768.";
-public const string SQL_NullEmptyTransactionName = @"Invalid transaction or invalid name for a point at which to save within the transaction.";
-public const string SQL_SnapshotNotSupported = @"The {0} enumeration value, {1}, is not supported by SQL Server 7.0 or SQL Server 2000.";
-public const string SQL_UserInstanceFailoverNotCompatible = @"User Instance and Failover are not compatible options.  Please choose only one of the two in the connection string.";
-
-public const string SQL_EncryptionNotSupportedByClient = @"The instance of SQL Server you attempted to connect to requires encryption but this machine does not support it.";
-public const string SQL_EncryptionNotSupportedByServer = @"The instance of SQL Server you attempted to connect to does not support encryption.";
-public const string SQL_InvalidSQLServerVersionUnknown = @"Unsupported SQL Server version.  The .Net Framework SqlClient Data Provider can only be used with SQL Server versions 7.0 and later.";
-
-public const string SQL_CannotModifyPropertyAsyncOperationInProgress = @"{0} cannot be changed while async operation is in progress.";
-public const string SQL_AsyncConnectionRequired = @"This command requires an asynchronous connection. Set \""Asynchronous Processing=true\"" in the connection string.";
-public const string SQL_FatalTimeout = @"Timeout expired.  The connection has been broken as a result.";
-public const string SQL_InstanceFailure = @"Instance failure.";
-
-public const string SQL_ChangePasswordArgumentMissing = @"The '{0}' argument must not be null or empty.";
-public const string SQL_ChangePasswordConflictsWithSSPI = @"ChangePassword can only be used with SQL authentication, not with integrated security.";
-public const string SQL_ChangePasswordUseOfUnallowedKey = @"The keyword '{0}' must not be specified in the connectionString argument to ChangePassword.";
-public const string SQL_UnknownSysTxIsolationLevel = @"Unrecognized System.Transactions.IsolationLevel enumeration value: {0}.";
-public const string SQL_InvalidPartnerConfiguration = @"Server {0}, database {1} is not configured for database mirroring.";
-public const string SQL_MarsUnsupportedOnConnection = @"The connection does not support MultipleActiveResultSets.";
-
-
-public const string SQL_ChangePasswordRequiresYukon = @"ChangePassword requires SQL Server 9.0 or later.";
-public const string SQL_NonLocalSSEInstance = @"SSE Instance re-direction is not supported for non-local user instances.";
-
-
-
-public const string SQL_AsyncOperationCompleted = @"The asynchronous operation has already completed.";
-public const string SQL_PendingBeginXXXExists = @"The command execution cannot proceed due to a pending asynchronous operation already in progress.";
-public const string SQL_NonXmlResult = @"Invalid command sent to ExecuteXmlReader.  The command must return an Xml result.";
-
-public const string SQL_NotificationsRequireYukon = @"Notifications require SQL Server 9.0 or later.";
-
-
-
-public const string SQL_InvalidUdt3PartNameFormat = @"Invalid 3 part name format for UdtTypeName.";
-public const string SQL_InvalidParameterTypeNameFormat = @"Invalid 3 part name format for TypeName.";
-public const string SQL_InvalidParameterNameLength = @"The length of the parameter '{0}' exceeds the limit of 128 characters.";
-public const string SQL_PrecisionValueOutOfRange = @"Precision value '{0}' is either less than 0 or greater than the maximum allowed precision of 38.";
-public const string SQL_ScaleValueOutOfRange = @"Scale value '{0}' is either less than 0 or greater than the maximum allowed scale of 38.";
-public const string SQL_TimeScaleValueOutOfRange = @"Scale value '{0}' is either less than 0 or greater than the maximum allowed scale of 7.";
-
-public const string SQL_ParameterInvalidVariant = @"Parameter '{0}' exceeds the size limit for the sql_variant datatype.";
-public const string SQL_ParameterTypeNameRequired = @"The {0} type parameter '{1}' must have a valid type name.";
-
-
-
-
-
-public const string SQL_InvalidInternalPacketSize = @"Invalid internal packet size:";
-public const string SQL_InvalidTDSVersion = @"The SQL Server instance returned an invalid or unsupported protocol version during login negotiation.";
-public const string SQL_InvalidTDSPacketSize = @"Invalid Packet Size.";
-public const string SQL_ParsingError = @"Internal connection fatal error.";
-public const string SQL_ConnectionLockedForBcpEvent = @"The connection cannot be used because there is an ongoing operation that must be finished.";
-public const string SQL_SNIPacketAllocationFailure = @"Memory allocation for internal connection failed.";
-
-public const string SQL_SmallDateTimeOverflow = @"SqlDbType.SmallDateTime overflow.  Value '{0}' is out of range.  Must be between 1/1/1900 12:00:00 AM and 6/6/2079 11:59:59 PM.";
-public const string SQL_TimeOverflow = @"SqlDbType.Time overflow.  Value '{0}' is out of range.  Must be between 00:00:00.0000000 and 23:59:59.9999999.";
-public const string SQL_MoneyOverflow = @"SqlDbType.SmallMoney overflow.  Value '{0}' is out of range.  Must be between -214,748.3648 and 214,748.3647.";
-
-public const string SQL_CultureIdError = @"The Collation specified by SQL Server is not supported.";
-public const string SQL_OperationCancelled = @"Operation cancelled by user.";
-public const string SQL_SevereError = @"A severe error occurred on the current command.  The results, if any, should be discarded.";
-public const string SQL_SSPIGenerateError = @"The target principal name is incorrect.  Cannot generate SSPI context.";
-public const string SQL_InvalidSSPIPacketSize = @"Invalid SSPI packet size.";
-public const string SQL_SSPIInitializeError = @"Cannot initialize SSPI package.";
-public const string SQL_Timeout = @"Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.";
-public const string SQL_Timeout_PreLogin_Begin = @"Connection Timeout Expired.  The timeout period elapsed at the start of the pre-login phase.  This could be because of insufficient time provided for connection timeout.";
-public const string SQL_Timeout_PreLogin_InitializeConnection = @"Connection Timeout Expired.  The timeout period elapsed while attempting to create and initialize a socket to the server.  This could be either because the server was unreachable or unable to respond back in time.";
-public const string SQL_Timeout_PreLogin_SendHandshake = @"Connection Timeout Expired.  The timeout period elapsed while making a pre-login handshake request.  This could be because the server was unable to respond back in time.";
-public const string SQL_Timeout_PreLogin_ConsumeHandshake = @"Connection Timeout Expired.  The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement.  This could be because the pre-login handshake failed or the server was unable to respond back in time.";
-public const string SQL_Timeout_Login_Begin = @"Connection Timeout Expired.  The timeout period elapsed at the start of the login phase.  This could be because of insufficient time provided for connection timeout.";
-public const string SQL_Timeout_Login_ProcessConnectionAuth = @"Connection Timeout Expired.  The timeout period elapsed while attempting to authenticate the login.  This could be because the server failed to authenticate the user or the server was unable to respond back in time.";
-public const string SQL_Timeout_PostLogin = @"Connection Timeout Expired.  The timeout period elapsed during the post-login phase.  The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections.";
-public const string SQL_Timeout_FailoverInfo = @"This failure occured while attempting to connect to the {0} server.";
-public const string SQL_Timeout_RoutingDestinationInfo = @"This failure occurred while attempting to connect to the routing destination. The duration spent while attempting to connect to the original server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; authentication={3}; [Post-Login] complete={4};  ";
-public const string SQL_Duration_PreLogin_Begin = @"The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0};";
-public const string SQL_Duration_PreLoginHandshake = @"The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; ";
-public const string SQL_Duration_Login_Begin = @"The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; ";
-public const string SQL_Duration_Login_ProcessConnectionAuth = @"The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; authentication={3}; ";
-public const string SQL_Duration_PostLogin = @"The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; authentication={3}; [Post-Login] complete={4}; ";
-public const string SQL_UserInstanceFailure = @"A user instance was requested in the connection string but the server specified does not support this option.";
-
-
-
-public const string SQL_ExceedsMaxDataLength = @"Specified data length {0} exceeds the allowed maximum length of {1}.";
-
-public const string SQL_InvalidRead = @"Invalid attempt to read when no data is present.";
-public const string SQL_NonBlobColumn = @"Invalid attempt to GetBytes on column '{0}'.  The GetBytes function can only be used on columns of type Text, NText, or Image.";
-public const string SQL_NonCharColumn = @"Invalid attempt to GetChars on column '{0}'.  The GetChars function can only be used on columns of type Text, NText, Xml, VarChar or NVarChar.";
-public const string SQL_StreamNotSupportOnColumnType = @"Invalid attempt to GetStream on column '{0}'. The GetStream function can only be used on columns of type Binary, Image, Udt or VarBinary.";
-public const string SQL_TextReaderNotSupportOnColumnType = @"Invalid attempt to GetTextReader on column '{0}'. The GetTextReader function can only be used on columns of type Char, NChar, NText, NVarChar, Text or VarChar.";
-public const string SQL_XmlReaderNotSupportOnColumnType = @"Invalid attempt to GetXmlReader on column '{0}'. The GetXmlReader function can only be used on columns of type Xml.";
-
-public const string SQL_InvalidBufferSizeOrIndex = @"Buffer offset '{1}' plus the bytes available '{0}' is greater than the length of the passed in buffer.";
-public const string SQL_InvalidDataLength = @"Data length '{0}' is less than 0.";
-
-
-
-public const string SQL_SqlResultSetClosed = @"Invalid attempt to call method {0} when SqlResultSet is closed.";
-public const string SQL_SqlResultSetClosed2 = @"Operation cannot be completed because the SqlResultSet is closed.";
-public const string SQL_SqlRecordReadOnly = @"'{0}' cannot be called when the record is read only.";
-public const string SQL_SqlRecordReadOnly2 = @"Operation cannot be completed because the record is read only.";
-public const string SQL_SqlResultSetRowDeleted = @"Invalid attempt to call method {0} when the current row is deleted";
-public const string SQL_SqlResultSetRowDeleted2 = @"Operation cannot be completed because the current row is deleted";
-public const string SQL_SqlResultSetCommandNotInSameConnection = @"Operation cannot be completed because the command that created the SqlResultSet has been dissociated from the original connection. SqlResultSet is closed.";
-public const string SQL_SqlResultSetNoAcceptableCursor = @"SqlResultSet could not be created for the given query with the desired options.";
-
-public const string SQL_SqlUpdatableRecordReadOnly = @"'{0}' cannot be called when the SqlDataRecord is read only.";
-
-
-
-public const string SQL_BulkLoadMappingInaccessible = @"The mapped collection is in use and cannot be accessed at this time;";
-public const string SQL_BulkLoadMappingsNamesOrOrdinalsOnly = @"Mappings must be either all name or all ordinal based.";
-public const string SQL_BulkLoadCannotConvertValue = @"The given value of type {0} from the data source cannot be converted to type {1} of the specified target column.";
-public const string SQL_BulkLoadNonMatchingColumnMapping = @"The given ColumnMapping does not match up with any column in the source or destination.";
-public const string SQL_BulkLoadNonMatchingColumnName = @"The given ColumnName '{0}' does not match up with any column in data source.";
-public const string SQL_BulkLoadStringTooLong = @"String or binary data would be truncated.";
-public const string SQL_BulkLoadInvalidTimeout = @"Timeout Value '{0}' is less than 0.";
-public const string SQL_BulkLoadInvalidVariantValue = @"Value cannot be converted to SqlVariant.";
-public const string SQL_BulkLoadExistingTransaction = @"Unexpected existing transaction.";
-public const string SQL_BulkLoadNoCollation = @"Failed to obtain column collation information for the destination table. If the table is not in the current database the name must be qualified using the database name (e.g. [mydb]..[mytable](e.g. [mydb]..[mytable]); this also applies to temporary-tables (e.g. #mytable would be specified as tempdb..#mytable).";
-public const string SQL_BulkLoadConflictingTransactionOption = @"Must not specify SqlBulkCopyOption.UseInternalTransaction and pass an external Transaction at the same time.";
-public const string SQL_BulkLoadInvalidOperationInsideEvent = @"Function must not be called during event.";
-public const string SQL_BulkLoadMissingDestinationTable = @"The DestinationTableName property must be set before calling this method.";
-public const string SQL_BulkLoadInvalidDestinationTable = @"Cannot access destination table '{0}'.";
-public const string SQL_BulkLoadNotAllowDBNull = @"Column '{0}' does not allow DBNull.Value.";
-public const string Sql_BulkLoadLcidMismatch = @"The locale id '{0}' of the source column '{1}' and the locale id '{2}' of the destination column '{3}' do not match.";
-public const string SQL_BulkLoadPendingOperation = @"Attempt to invoke bulk copy on an object that has a pending operation.";
-
-
-
-public const string SQL_ConnectionDoomed = @"The requested operation cannot be completed because the connection has been broken.";
-public const string SQL_OpenResultCountExceeded = @"Open result count exceeded.";
-
-
-
-public const string SQL_BatchedUpdatesNotAvailableOnContextConnection = @"Batching updates is not supported on the context connection.";
-public const string SQL_ContextAllowsLimitedKeywords = @"The only additional connection string keyword that may be used when requesting the context connection is the Type System Version keyword.";
-public const string SQL_ContextAllowsOnlyTypeSystem2005 = @"The context connection does not support Type System Version=SQL Server 2000.";
-public const string SQL_ContextConnectionIsInUse = @"The context connection is already in use.";
-public const string SQL_ContextUnavailableOutOfProc = @"The requested operation requires a SqlClr context, which is only available when running in the Sql Server process.";
-public const string SQL_ContextUnavailableWhileInProc = @"The requested operation requires a Sql Server execution thread.  The current thread was started by user code or other non-Sql Server engine code.";
-public const string SQL_NestedTransactionScopesNotSupported = @"Nested TransactionScopes are not supported.";
-public const string SQL_NotAvailableOnContextConnection = @"The requested operation is not available on the context connection.";
-public const string SQL_NotificationsNotAvailableOnContextConnection = @"Notifications are not available on the context connection.";
-public const string SQL_UnexpectedSmiEvent = @"Unexpected server event: {0}.";
-public const string SQL_UserInstanceNotAvailableInProc = @"User instances are not allowed when running in the Sql Server process.";
-public const string SQL_ArgumentLengthMismatch = @"The length of '{0}' must match the length of '{1}'.";
-public const string SQL_InvalidSqlDbTypeWithOneAllowedType = @"The SqlDbType '{0}' is invalid for {1}.  Only {2} is supported.";
-public const string SQL_PipeErrorRequiresSendEnd = @"An error occurred with a prior row sent to the SqlPipe.  SendResultsEnd must be called before anything else con be sent.";
-public const string SQL_TooManyValues = @"Too many values.";
-public const string SQL_StreamWriteNotSupported = @"The Stream does not support writing.";
-public const string SQL_StreamReadNotSupported = @"The Stream does not support reading.";
-public const string SQL_StreamSeekNotSupported = @"The Stream does not support seeking.";
-
-
-
-public const string SQL_ExClientConnectionId = @"ClientConnectionId:{0}";
-public const string SQL_ExErrorNumberStateClass = @"Error Number:{0},State:{1},Class:{2}";
-public const string SQL_ExOriginalClientConnectionId = @"ClientConnectionId before routing:{0}";
-public const string SQL_ExRoutingDestination = @"Routing Destination:{0}";
-
-
-
-public const string SqlMisc_NullString = @"Null";
-public const string SqlMisc_MessageString = @"Message";
-public const string SqlMisc_ArithOverflowMessage = @"Arithmetic Overflow.";
-public const string SqlMisc_DivideByZeroMessage = @"Divide by zero error encountered.";
-public const string SqlMisc_NullValueMessage = @"Data is Null. This method or property cannot be called on Null values.";
-public const string SqlMisc_TruncationMessage = @"Numeric arithmetic causes truncation.";
-public const string SqlMisc_DateTimeOverflowMessage = @"SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.";
-public const string SqlMisc_ConcatDiffCollationMessage = @"Two strings to be concatenated have different collation.";
-public const string SqlMisc_CompareDiffCollationMessage = @"Two strings to be compared have different collation.";
-public const string SqlMisc_InvalidFlagMessage = @"Invalid flag value.";
-public const string SqlMisc_NumeToDecOverflowMessage = @"Conversion from SqlDecimal to Decimal overflows.";
-public const string SqlMisc_ConversionOverflowMessage = @"Conversion overflows.";
-public const string SqlMisc_InvalidDateTimeMessage = @"Invalid SqlDateTime.";
-public const string SqlMisc_TimeZoneSpecifiedMessage = @"A time zone was specified. SqlDateTime does not support time zones.";
-public const string SqlMisc_InvalidArraySizeMessage = @"Invalid array size.";
-public const string SqlMisc_InvalidPrecScaleMessage = @"Invalid numeric precision/scale.";
-public const string SqlMisc_FormatMessage = @"The input wasn't in a correct format.";
-public const string SqlMisc_SqlTypeMessage = @"SqlType error.";
-public const string SqlMisc_LenTooLargeMessage = @"The SqlBytes and SqlChars don't support length of more than 2GB in this version.";
-public const string SqlMisc_StreamErrorMessage = @"An error occurred while reading.";
-public const string SqlMisc_StreamClosedMessage = @"Stream has been closed or disposed.";
-public const string SqlMisc_NoBufferMessage = @"There is no buffer. Read or write operation failed.";
-public const string SqlMisc_SetNonZeroLenOnNullMessage = @"Cannot set to non-zero length, because current value is Null.";
-public const string SqlMisc_BufferInsufficientMessage = @"The buffer is insufficient. Read or write operation failed.";
-public const string SqlMisc_WriteNonZeroOffsetOnNullMessage = @"Cannot write to non-zero offset, because current value is Null.";
-public const string SqlMisc_WriteOffsetLargerThanLenMessage = @"Cannot write from an offset that is larger than current length. It would leave uninitialized data in the buffer.";
-public const string SqlMisc_TruncationMaxDataMessage = @"Data returned is larger than 2Gb in size. Use SequentialAccess command behavior in order to get all of the data.";
-public const string SqlMisc_InvalidFirstDayMessage = @"Argument to GetDayOfWeek must be integer between 1 and 7.";
-public const string SqlMisc_NotFilledMessage = @"SQL Type has not been loaded with data.";
-public const string SqlMisc_AlreadyFilledMessage = @"SQL Type has already been loaded with data.";
-public const string SqlMisc_ClosedXmlReaderMessage = @"Invalid attempt to access a closed XmlReader.";
-public const string SqlMisc_InvalidOpStreamClosed = @"Invalid attempt to call {0} when the stream is closed.";
-public const string SqlMisc_InvalidOpStreamNonWritable = @"Invalid attempt to call {0} when the stream non-writable.";
-public const string SqlMisc_InvalidOpStreamNonReadable = @"Invalid attempt to call {0} when the stream non-readable.";
-public const string SqlMisc_InvalidOpStreamNonSeekable = @"Invalid attempt to call {0} when the stream is non-seekable.";
-public const string SqlMisc_SubclassMustOverride = @"Subclass did not override a required method.";
-
-
-
-
-public const string Sql_CanotCreateNormalizer = @"Cannot create normalizer for '{0}'.";
-public const string Sql_InternalError = @"Internal Error";
-public const string Sql_NullCommandText = @"Command parameter must have a non null and non empty command text.";
-public const string Sql_MismatchedMetaDataDirectionArrayLengths = @"MetaData parameter array must have length equivalent to ParameterDirection array argument.";
-
-
-public const string ADP_AdapterMappingExceptionMessage = @"Data adapter mapping error.";
-public const string ADP_DataAdapterExceptionMessage = @"Data adapter error.";
-public const string ADP_DBConcurrencyExceptionMessage = @"DB concurrency violation.";
-public const string ADP_OperationAborted = @"Operation aborted.";
-public const string ADP_OperationAbortedExceptionMessage = @"Operation aborted due to an exception (see InnerException for details).";
-
-
-
-
-
-public const string DataAdapter_AcceptChangesDuringFill = @"Whether or not Fill will call DataRow.AcceptChanges.";
-public const string DataAdapter_AcceptChangesDuringUpdate = @"Whether or not Update will call DataRow.AcceptChanges.";
-public const string DataAdapter_ContinueUpdateOnError = @"Whether or not to continue to the next DataRow when the Update events, RowUpdating and RowUpdated, Status is UpdateStatus.ErrorsOccurred.";
-public const string DataAdapter_FillLoadOption = @"How the adapter fills the DataTable from the DataReader.";
-public const string DataAdapter_MissingMappingAction = @"The action taken when a table or column in the TableMappings is missing.";
-public const string DataAdapter_MissingSchemaAction = @"The action taken when a table or column in the DataSet is missing.";
-public const string DataAdapter_TableMappings = @"How to map source table to DataSet table.";
-public const string DataAdapter_FillError = @"Event triggered when a recoverable error occurs during Fill.";
-public const string DataAdapter_ReturnProviderSpecificTypes = @"Should Fill return provider specific values or common CLSCompliant values.";
-
-
-public const string DataColumnMapping_DataSetColumn = @"DataColumn.ColumnName";
-public const string DataColumnMapping_SourceColumn = @"Source column name - case sensitive.";
-
-
-public const string DataColumnMappings_Count = @"The number of items in the collection";
-public const string DataColumnMappings_Item = @"The specified DataColumnMapping object.";
-
-
-public const string DataTableMapping_ColumnMappings = @"Individual columns mappings when this table mapping is matched.";
-public const string DataTableMapping_DataSetTable = @"DataTable.TableName";
-public const string DataTableMapping_SourceTable = @"The DataTableMapping source table name. This name is case sensitive.";
-
-
-public const string DataTableMappings_Count = @"The number of items in the collection";
-public const string DataTableMappings_Item = @"The specified DataTableMapping object";
-
-
-public const string DbDataAdapter_DeleteCommand = @"Used during Update for deleted rows in DataSet.";
-public const string DbDataAdapter_InsertCommand = @"Used during Update for new rows in DataSet.";
-public const string DbDataAdapter_SelectCommand = @"Used during Fill/FillSchema.";
-public const string DbDataAdapter_UpdateCommand = @"Used during Update for modified rows in DataSet.";
-public const string DbDataAdapter_RowUpdated = @"Event triggered before every DataRow during Update.";
-public const string DbDataAdapter_RowUpdating = @"Event triggered after every DataRow during Update.";
-public const string DbDataAdapter_UpdateBatchSize = @"Number of rows to batch together before executing against the data source.";
-
-
-public const string DbTable_Connection = @"Connection used if the the Select/Insert/Update/DeleteCommands do not already have a connection.";
-public const string DbTable_DeleteCommand = @"Used during Update for deleted rows in the DataTable.";
-public const string DbTable_InsertCommand = @"Used during Update for new rows in the DataTable.";
-public const string DbTable_SelectCommand = @"Used during Fill.";
-public const string DbTable_UpdateCommand = @"Used during Update for modified rows in the DataTable.";
-public const string DbTable_ReturnProviderSpecificTypes = @"Should Fill return provider specific values or common CLSCompliant values.";
-public const string DbTable_TableMapping = @"How to map source table to DataTable.";
-public const string DbTable_ConflictDetection = @"How are the Insert/Update/DeleteCommands generated when not set by the user.";
-public const string DbTable_UpdateBatchSize = @"Number of rows to batch together before executing against the data source.";
-
-
-
-public const string DbConnectionString_ConnectionString = @"The connection string used to connect to the Data Source.";
-public const string DbConnectionString_Driver = @"The name of the ODBC Driver to use when connecting to the Data Source.";
-public const string DbConnectionString_DSN = @"The DSN to use when connecting to the Data Source.";
-public const string DbConnectionString_AdoNetPooler = @"When true, indicates that managed connection pooling should be used.";
-public const string DbConnectionString_FileName = @"The UDL file to use when connecting to the Data Source.";
-public const string DbConnectionString_OleDbServices = @"Specifies which OLE DB Services to enable or disable with the OleDb Provider.";
-public const string DbConnectionString_Provider = @"The name of the OLE DB Provider to use when connecting to the Data Source.";
-public const string DbConnectionString_ApplicationName = @"The name of the application.";
-public const string DbConnectionString_AsynchronousProcessing = @"When true, enables usage of the Asynchronous functionality in the .Net Framework Data Provider.";
-public const string DbConnectionString_AttachDBFilename = @"The name of the primary file, including the full path name, of an attachable database.";
-public const string DbConnectionString_ConnectTimeout = @"The length of time (in seconds) to wait for a connection to the server before terminating the attempt and generating an error.";
-public const string DbConnectionString_ConnectionReset = @"When true, indicates the connection state is reset when removed from the pool.";
-public const string DbConnectionString_ContextConnection = @"When true, indicates the connection should be from the Sql Server context.  Available only when running in the Sql Server process.";
-public const string DbConnectionString_CurrentLanguage = @"The SQL Server Language record name.";
-public const string DbConnectionString_DataSource = @"Indicates the name of the data source to connect to.";
-public const string DbConnectionString_Encrypt = @"When true, SQL Server uses SSL encryption for all data sent between the client and server if the server has a certificate installed.";
-public const string DbConnectionString_Enlist = @"Sessions in a Component Services (or MTS, if you are using Microsoft Windows NT) environment should automatically be enlisted in a global transaction where required.";
-public const string DbConnectionString_InitialCatalog = @"The name of the initial catalog or database in the data source.";
-public const string DbConnectionString_FailoverPartner = @"The name or network address of the instance of SQL Server that acts as a failover partner.";
-public const string DbConnectionString_IntegratedSecurity = @"Whether the connection is to be a secure connection or not.";
-public const string DbConnectionString_LoadBalanceTimeout = @"The minimum amount of time (in seconds) for this connection to live in the pool before being destroyed.";
-public const string DbConnectionString_MaxPoolSize = @"The maximum number of connections allowed in the pool.";
-public const string DbConnectionString_MinPoolSize = @"The minimum number of connections allowed in the pool.";
-public const string DbConnectionString_MultipleActiveResultSets = @"When true, multiple result sets can be returned and read from one connection.";
-public const string DbConnectionString_MultiSubnetFailover = @"If your application is connecting to a high-availability, disaster recovery (AlwaysOn) availability group (AG) on different subnets, MultiSubnetFailover=Yes configures SqlConnection to provide faster detection of and connection to the (currently) active server.";
-public const string DbConnectionString_NetworkLibrary = @"The network library used to establish a connection to an instance of SQL Server.";
-public const string DbConnectionString_PacketSize = @"Size in bytes of the network packets used to communicate with an instance of SQL Server.";
-public const string DbConnectionString_Password = @"Indicates the password to be used when connecting to the data source.";
-public const string DbConnectionString_PersistSecurityInfo = @"When false, security-sensitive information, such as the password, is not returned as part of the connection if the connection is open or has ever been in an open state.";
-public const string DbConnectionString_Pooling = @"When true, the connection object is drawn from the appropriate pool, or if necessary, is created and added to the appropriate pool.";
-public const string DbConnectionString_Replication = @"Used by SQL Server in Replication.";
-public const string DbConnectionString_TransactionBinding = @"Indicates binding behavior of connection to a System.Transactions Transaction when enlisted.";
-public const string DbConnectionString_TrustServerCertificate = @"When true (and encrypt=true), SQL Server uses SSL encryption for all data sent between the client and server without validating the server certificate.";
-public const string DbConnectionString_TypeSystemVersion = @"Indicates which server type system the provider will expose through the DataReader.";
-public const string DbConnectionString_UserID = @"Indicates the user ID to be used when connecting to the data source.";
-public const string DbConnectionString_UserInstance = @"Indicates whether the connection will be re-directed to connect to an instance of SQL Server running under the user's account.";
-public const string DbConnectionString_WorkstationID = @"The name of the workstation connecting to SQL Server.";
-public const string DbConnectionString_ApplicationIntent = @"Declares the application workload type when connecting to a server.";
-
-public const string DbConnectionString_ConnectRetryCount = @"Number of attempts to restore connection.";
-public const string DbConnectionString_ConnectRetryInterval = @"Delay between attempts to restore connection.";
-
-
-
-
-public const string OdbcConnection_ConnectionString = @"Information used to connect to a Data Source.";
-public const string OdbcConnection_ConnectionTimeout = @"Current connection timeout value, not settable in the ConnectionString.";
-public const string OdbcConnection_Database = @"Current data source catalog value, 'Database=X' in the connection string.";
-public const string OdbcConnection_DataSource = @"Current data source, 'Server=X' in the connection string.";
-public const string OdbcConnection_Driver = @"Current ODBC driver.";
-public const string OdbcConnection_ServerVersion = @"Version of the product accessed by the ODBC Driver.";
-
-public const string OleDbConnection_ConnectionString = @"Information used to connect to a Data Source.";
-public const string OleDbConnection_ConnectionTimeout = @"Current connection timeout value, 'Connect Timeout=X' in the ConnectionString.";
-public const string OleDbConnection_Database = @"Current data source catalog value, 'Initial Catalog=X' in the connection string.";
-public const string OleDbConnection_DataSource = @"Current data source, 'Data Source=X' in the connection string.";
-public const string OleDbConnection_Provider = @"Current OLE DB provider ProgID, 'Provider=X' in the connection string.";
-public const string OleDbConnection_ServerVersion = @"Version of the product accessed by the OLE DB Provider.";
-
-public const string SqlConnection_Asynchronous = @"State of connection, synchronous or asynchronous.  'Asynchronous Processing=x' in the connection string.";
-public const string SqlConnection_Replication = @"Information used to connect for replication.";
-public const string SqlConnection_ConnectionString = @"Information used to connect to a DataSource, such as 'Data Source=x;Initial Catalog=x;Integrated Security=SSPI'.";
-public const string SqlConnection_ConnectionTimeout = @"Current connection timeout value, 'Connect Timeout=X' in the ConnectionString.";
-public const string SqlConnection_Database = @"Current SQL Server database, 'Initial Catalog=X' in the connection string.";
-public const string SqlConnection_DataSource = @"Current SqlServer that the connection is opened to, 'Data Source=X' in the connection string.";
-public const string SqlConnection_PacketSize = @"Network packet size, 'Packet Size=x' in the connection string.";
-public const string SqlConnection_ServerVersion = @"Version of the SQL Server accessed by the SqlConnection.";
-public const string SqlConnection_WorkstationId = @"Workstation Id, 'Workstation ID=x' in the connection string.";
-public const string SqlConnection_StatisticsEnabled = @"Collect statistics for this connection.";
-public const string SqlConnection_ClientConnectionId = @"A guid to represent the physical connection.";
-public const string SqlConnection_Credential = @"User Id and secure password to use for authentication.";
-
-
-public const string DbConnection_InfoMessage = @"Event triggered when messages arrive from the DataSource.";
-
-
-
-
-
-public const string DbCommand_CommandText = @"Command text to execute.";
-
-public const string DbCommand_CommandType = @"How to interpret the CommandText.";
-public const string DbCommand_Connection = @"Connection used by the command.";
-public const string DbCommand_Parameters = @"The parameters collection.";
-public const string DbCommand_Transaction = @"The transaction used by the command.";
-public const string DbCommand_UpdatedRowSource = @"When used by a DataAdapter.Update, how command results are applied to the current DataRow.";
-public const string DbCommand_StatementCompleted = @"When records are affected by a given statement by the execution of the command.";
-
-public const string SqlCommand_Notification = @"Notification values used by Microsoft SQL Server.";
-public const string SqlCommand_NotificationAutoEnlist = @"Automatic enlistment in notifications used by Microsoft SQL Server.";
-
-
-public const string DbCommandBuilder_ConflictOption = @"How the where clause is auto-generated for the Update and Delete commands when not specified by the user.";
-public const string DbCommandBuilder_CatalogLocation = @"Indicates the position of the catalog name in a qualified table name in a text command.";
-public const string DbCommandBuilder_CatalogSeparator = @"The character that separates the catalog name from the rest of the identifier in a text command.";
-public const string DbCommandBuilder_SchemaSeparator = @"The character that separates the schema name from the rest of the identifier in a text command.";
-public const string DbCommandBuilder_QuotePrefix = @"The prefix string wrapped around sql objects.";
-public const string DbCommandBuilder_QuoteSuffix = @"The suffix string wrapped around sql objects.";
-public const string DbCommandBuilder_DataAdapter = @"The DataAdapter for which to automatically generate Commands.";
-public const string DbCommandBuilder_SchemaLocation = @"Use schema from DataTable or the SelectCommand.";
-public const string DbCommandBuilder_SetAllValues = @"How the set clause is auto-generated for the Update command when not specified by the user.";
-
-public const string OdbcCommandBuilder_DataAdapter = @"The DataAdapter for which to automatically generate OdbcCommands";
-public const string OdbcCommandBuilder_QuotePrefix = @"The character used in a text command as the opening quote for quoting identifiers that contain special characters.";
-public const string OdbcCommandBuilder_QuoteSuffix = @"The character used in a text command as the closing quote for quoting identifiers that contain special characters.";
-
-public const string OleDbCommandBuilder_DataAdapter = @"The DataAdapter for which to automatically generate OleDbCommands";
-public const string OleDbCommandBuilder_DecimalSeparator = @"The decimal separator used in numeric literals.";
-public const string OleDbCommandBuilder_QuotePrefix = @"The prefix string wrapped around sql objects";
-public const string OleDbCommandBuilder_QuoteSuffix = @"The suffix string wrapped around sql objects";
-
-public const string SqlCommandBuilder_DataAdapter = @"The DataAdapter for which to automatically generate SqlCommands";
-public const string SqlCommandBuilder_DecimalSeparator = @"The decimal separator used in numeric literals.";
-public const string SqlCommandBuilder_QuotePrefix = @"The character used in a text command as the opening quote for quoting identifiers that contain special characters.";
-public const string SqlCommandBuilder_QuoteSuffix = @"The character used in a text command as the closing quote for quoting identifiers that contain special characters.";
-
-
-
-
-
-
-
-
-
-
-
-
-public const string DbDataParameter_Precision = @"Only necessary to set for decimal and numeric parameters when using with Prepare, FillSchema and CommandBuilder scenarios.";
-public const string DbDataParameter_Scale = @"Only necessary to set for decimal and numeric parameters when using with Prepare, FillSchema and CommandBuilder scenarios.";
-
-
-
-public const string OdbcParameter_OdbcType = @"The parameter native type.";
-
-public const string OleDbParameter_OleDbType = @"The parameter native type.";
-
-public const string SqlParameter_ParameterName = @"Name of the parameter, like '@p1'";
-public const string SqlParameter_SqlDbType = @"The parameter native type.";
-public const string SqlParameter_TypeName = @"The server's name for the type.";
-public const string SqlParameter_Offset = @"Offset in variable length data types.";
-public const string SqlParameter_XmlSchemaCollectionDatabase = @"XmlSchemaCollectionDatabase";
-public const string SqlParameter_XmlSchemaCollectionOwningSchema = @"XmlSchemaCollectionOwningSchema";
-public const string SqlParameter_XmlSchemaCollectionName = @"XmlSchemaCollectionName";
-public const string SqlParameter_UnsupportedTVPOutputParameter = @"ParameterDirection '{0}' specified for parameter '{1}' is not supported. Table-valued parameters only support ParameterDirection.Input.";
-public const string SqlParameter_DBNullNotSupportedForTVP = @"DBNull value for parameter '{0}' is not supported. Table-valued parameters cannot be DBNull.";
-public const string SqlParameter_InvalidTableDerivedPrecisionForTvp = @"Precision '{0}' required to send all values in column '{1}' exceeds the maximum supported precision '{2}'. The values must all fit in a single precision.";
-public const string SqlParameter_UnexpectedTypeNameForNonStruct = @"TypeName specified for parameter '{0}'.  TypeName must only be set for Structured parameters.";
-public const string MetaType_SingleValuedStructNotSupported = @"SqlDbType.Structured type is only supported for multiple valued types.";
-public const string NullSchemaTableDataTypeNotSupported = @"DateType column for field '{0}' in schema table is null.  DataType must be non-null.";
-public const string InvalidSchemaTableOrdinals = @"Invalid column ordinals in schema table.  ColumnOrdinals, if present, must not have duplicates or gaps.";
-public const string SQL_EnumeratedRecordMetaDataChanged = @"Metadata for field '{0}' of record '{1}' did not match the original record's metadata.";
-public const string SQL_EnumeratedRecordFieldCountChanged = @"Number of fields in record '{0}' does not match the number in the original record.";
-
-
-
-
-public const string SQLUDT_MaxByteSizeValue = @"range: 0-8000";
-
-public const string SQLUDT_Unexpected = @"unexpected error encountered in SqlClient data provider. {0}";
-public const string SQLUDT_InvalidDbId = @"Unable to get Type Info for {0},{1}";
-public const string SQLUDT_CantLoadAssembly = @"The provider has failed to load the following assembly: {0}";
-public const string SQLUDT_InvalidUdtTypeName = @"UdtTypeName property must be set for UDT parameters.";
-
-
-public const string SQLUDT_UnexpectedUdtTypeName = @"UdtTypeName property must be set only for UDT parameters.";
-public const string SQLUDT_InvalidSqlType = @"Specified type is not registered on the target server.{0}.";
-public const string SQLUDT_InWhereClause = @"UDT parameters not permitted in the where clause unless part of the primary key.";
-
-public const string SqlUdt_InvalidUdtMessage = @"'{0}' is an invalid user defined type, reason: {1}.";
-public const string SqlUdtReason_MultipleSerFormats = @"supports both in-memory and user-defined formats";
-public const string SqlUdtReason_CannotSupportNative = @"Native format can't be supported.";
-public const string SqlUdtReason_CannotSupportUserDefined = @"does not implement IBinarySerialize";
-public const string SqlUdtReason_NotSerializable = @"not serializable";
-public const string SqlUdtReason_NoPublicConstructors = @"no public constructors";
-public const string SqlUdtReason_NotNullable = @"does not implement INullable";
-public const string SqlUdtReason_NoPublicConstructor = @"does not have a public constructor";
-public const string SqlUdtReason_NoUdtAttribute = @"no UDT attribute";
-public const string SqlUdtReason_MaplessNotYetSupported = @"Serialization without mapping is not yet supported.";
-public const string SqlUdtReason_ParseMethodMissing = @"'public static x Parse(System.Data.SqlTypes.SqlString)' method is missing";
-public const string SqlUdtReason_ToStringMethodMissing = @"'public override string ToString()' method is missing";
-public const string SqlUdtReason_NullPropertyMissing = @"'public static x Null { get; }' method is missing";
-public const string SqlUdtReason_NativeFormatNoFieldSupport = @"Native format does not support fields (directly or through another field) of type '{0}'";
-public const string SqlUdtReason_TypeNotPublic = @"Type is not public";
-public const string SqlUdtReason_NativeUdtNotSequentialLayout = @"Native UDT not sequential layout due to type '{0}'";
-public const string SqlUdtReason_NativeUdtMaxByteSize = @"Native UDT specifies a max byte size";
-public const string SqlUdtReason_NonSerializableField = @"field '{0}' is marked non-serialized";
-public const string SqlUdtReason_NativeFormatExplictLayoutNotAllowed = @"The type of field '{0}' is marked as explicit layout which is not allowed in Native format";
-public const string SqlUdtReason_MultivaluedAssemblyId = @"Multiple valued assembly references must have a nonzero Assembly Id.";
-
-
-
-public const string SQLTVP_TableTypeCanOnlyBeParameter = @"Structured, multiple-valued types can only be used for parameters, and cannot be nested within another type.";
-
-
-
-public const string SqlFileStream_InvalidPath = @"The path name is not valid.";
-public const string SqlFileStream_InvalidParameter = @"An invalid parameter was passed to the function.";
-public const string SqlFileStream_FileAlreadyInTransaction = @"The process cannot access the file specified because it has been opened in another transaction.";
-public const string SqlFileStream_PathNotValidDiskResource = @"The path name is invalid or does not point to a disk file.";
-
-
-
-public const string SqlDelegatedTransaction_PromotionFailed = @"Failure while attempting to promote transaction.";
-
-
-
-
-
-public const string SqlDependency_SqlDependency = @"Dependency object used to receive query notifications.";
-public const string SqlDependency_HasChanges = @"Property to indicate if this dependency is invalid.";
-public const string SqlDependency_Id = @"A string that uniquely identifies this dependency object.";
-public const string SqlDependency_OnChange = @"Event that can be used to subscribe for change notifications.";
-public const string SqlDependency_AddCommandDependency = @"To add a command to existing dependency object.";
-public const string SqlDependency_Duplicate = @"Command is already associated with another dependency object. Can not overwrite.";
-
-
-
-public const string SQLNotify_AlreadyHasCommand = @"This SqlCommand object is already associated with another SqlDependency object.";
-public const string SqlNotify_SqlDepCannotBeCreatedInProc = @"SqlDependency object cannot be created when running inside the SQL Server process.";
-
-public const string SqlDependency_DatabaseBrokerDisabled = @"The SQL Server Service Broker for the current database is not enabled, and as a result query notifications are not supported.  Please enable the Service Broker for this database if you wish to use notifications.";
-public const string SqlDependency_DefaultOptionsButNoStart = @"When using SqlDependency without providing an options value, SqlDependency.Start() must be called prior to execution of a command added to the SqlDependency instance.";
-public const string SqlDependency_EventNoDuplicate = @"SqlDependency.OnChange does not support multiple event registrations for the same delegate.";
-public const string SqlDependency_DuplicateStart = @"SqlDependency does not support calling Start() with different connection strings having the same server, user, and database in the same app domain.";
-public const string SqlDependency_IdMismatch = @"No SqlDependency exists for the key.";
-public const string SqlDependency_NoMatchingServerStart = @"When using SqlDependency without providing an options value, SqlDependency.Start() must be called for each server that is being executed against.";
-public const string SqlDependency_NoMatchingServerDatabaseStart = @"SqlDependency.Start has been called for the server the command is executing against more than once, but there is no matching server/user/database Start() call for current command.";
-public const string SqlDependency_InvalidTimeout = @"Timeout specified is invalid. Timeout cannot be < 0.";
-public const string SQLNotify_ErrorFormat = @"Notification Error. Type={0}, Info={1}, Source={2}.";
-
-
-
-
-public const string SqlMetaData_NoMetadata = @"GetMetaData is not valid for this SqlDbType.";
-public const string SqlMetaData_InvalidSqlDbTypeForConstructorFormat = @"The dbType {0} is invalid for this constructor.";
-public const string SqlMetaData_NameTooLong = @"The name is too long.";
-public const string SqlMetaData_SpecifyBothSortOrderAndOrdinal = @"The sort order and ordinal must either both be specified, or neither should be specified (SortOrder.Unspecified and -1).  The values given were: order = {0}, ordinal = {1}.";
-public const string SqlProvider_InvalidDataColumnType = @"The type of column '{0}' is not supported.  The type is '{1}'";
-public const string SqlProvider_InvalidDataColumnMaxLength = @"The size of column '{0}' is not supported. The size is {1}.";
-public const string SqlProvider_NotEnoughColumnsInStructuredType = @"There are not enough fields in the Structured type.  Structured types must have at least one field.";
-public const string SqlProvider_DuplicateSortOrdinal = @"The sort ordinal {0} was specified twice.";
-public const string SqlProvider_MissingSortOrdinal = @"The sort ordinal {0} was not specified.";
-public const string SqlProvider_SortOrdinalGreaterThanFieldCount = @"The sort ordinal {0} on field {1} exceeds the total number of fields.";
-public const string IEnumerableOfSqlDataRecordHasNoRows = @"There are no records in the SqlDataRecord enumeration. To send a table-valued parameter with no rows, use a null reference for the value instead.";
-
-
-public const string SqlPipe_CommandHookedUpToNonContextConnection = @"SqlPipe does not support executing a command with a connection that is not a context connection.";
-public const string SqlPipe_MessageTooLong = @"Message length {0} exceeds maximum length supported of 4000.";
-public const string SqlPipe_IsBusy = @"Could not use the pipe while it is busy with another operation.";
-public const string SqlPipe_AlreadyHasAnOpenResultSet = @"A result set is currently being sent to the pipe. End the current result set before calling {0}.";
-public const string SqlPipe_DoesNotHaveAnOpenResultSet = @"Result set has not been initiated.  Call SendResultSetStart before calling {0}.";
-
-
-
-public const string SNI_PN0 = @"HTTP Provider";
-public const string SNI_PN1 = @"Named Pipes Provider";
-public const string SNI_PN2 = @"Session Provider";
-public const string SNI_PN3 = @"Sign Provider";
-public const string SNI_PN4 = @"Shared Memory Provider";
-public const string SNI_PN5 = @"SMux Provider";
-public const string SNI_PN6 = @"SSL Provider";
-public const string SNI_PN7 = @"TCP Provider";
-public const string SNI_PN8 = @"VIA Provider";
-public const string SNI_PN9 = @"";
-public const string SNI_PN10 = @"SQL Network Interfaces";
-
-
-public const string SNI_ERROR_1 = @"I/O Error detected in read/write operation";
-public const string SNI_ERROR_2 = @"Connection was terminated";
-public const string SNI_ERROR_3 = @"Asynchronous operations not supported";
-public const string SNI_ERROR_4 = @"";
-public const string SNI_ERROR_5 = @"Invalid parameter(s) found";
-public const string SNI_ERROR_6 = @"Unsupported protocol specified";
-public const string SNI_ERROR_7 = @"Invalid connection found when setting up new session protocol";
-public const string SNI_ERROR_8 = @"Protocol not supported";
-public const string SNI_ERROR_9 = @"Associating port with I/O completion mechanism failed";
-public const string SNI_ERROR_10 = @"";
-public const string SNI_ERROR_11 = @"Timeout error";
-public const string SNI_ERROR_12 = @"No server name supplied";
-public const string SNI_ERROR_13 = @"TerminateListener() has been called";
-public const string SNI_ERROR_14 = @"Win9x not supported";
-public const string SNI_ERROR_15 = @"Function not supported";
-public const string SNI_ERROR_16 = @"Shared-Memory heap error";
-public const string SNI_ERROR_17 = @"Cannot find an ip/ipv6 type address to connect";
-public const string SNI_ERROR_18 = @"Connection has been closed by peer";
-public const string SNI_ERROR_19 = @"Physical connection is not usable";
-public const string SNI_ERROR_20 = @"Connection has been closed";
-public const string SNI_ERROR_21 = @"Encryption is enforced but there is no valid certificate";
-public const string SNI_ERROR_22 = @"Couldn't load library";
-public const string SNI_ERROR_23 = @"Cannot open a new thread in server process";
-public const string SNI_ERROR_24 = @"Cannot post event to completion port";
-public const string SNI_ERROR_25 = @"Connection string is not valid";
-public const string SNI_ERROR_26 = @"Error Locating Server/Instance Specified";
-public const string SNI_ERROR_27 = @"Error getting enabled protocols list from registry";
-public const string SNI_ERROR_28 = @"Server doesn't support requested protocol";
-public const string SNI_ERROR_29 = @"Shared Memory is not supported for clustered server connectivity";
-public const string SNI_ERROR_30 = @"Invalid attempt bind to shared memory segment";
-public const string SNI_ERROR_31 = @"Encryption(ssl/tls) handshake failed";
-public const string SNI_ERROR_32 = @"Packet size too large for SSL Encrypt/Decrypt operations";
-public const string SNI_ERROR_33 = @"SSRP error";
-public const string SNI_ERROR_34 = @"Could not connect to the Shared Memory pipe";
-public const string SNI_ERROR_35 = @"An internal exception was caught";
-public const string SNI_ERROR_36 = @"The Shared Memory dll used to connect to SQL Server 2000 was not found";
-public const string SNI_ERROR_37 = @"The SQL Server 2000 Shared Memory client dll appears to be invalid/corrupted";
-public const string SNI_ERROR_38 = @"Cannot open a Shared Memory connection to SQL Server 2000";
-public const string SNI_ERROR_39 = @"Shared memory connectivity to SQL Server 2000 is either disabled or not available on this machine";
-public const string SNI_ERROR_40 = @"Could not open a connection to SQL Server";
-public const string SNI_ERROR_41 = @"Cannot open a Shared Memory connection to a remote SQL server";
-public const string SNI_ERROR_42 = @"Could not establish dedicated administrator connection (DAC) on default port. Make sure that DAC is enabled";
-public const string SNI_ERROR_43 = @"An error occurred while obtaining the dedicated administrator connection (DAC) port. Make sure that SQL Browser is running, or check the error log for the port number";
-public const string SNI_ERROR_44 = @"Could not compose Service Principal Name (SPN) for Windows Integrated Authentication. Possible causes are server(s) incorrectly specified to connection API calls, Domain Name System (DNS) lookup failure or memory shortage";
-
-
-
-
-
-
-public const string SNI_ERROR_47 = @"Connecting with the MultiSubnetFailover connection option to a SQL Server instance configured with more than 64 IP addresses is not supported.";
-public const string SNI_ERROR_48 = @"Connecting to a named SQL Server instance using the MultiSubnetFailover connection option is not supported.";
-public const string SNI_ERROR_49 = @"Connecting to a SQL Server instance using the MultiSubnetFailover connection option is only supported when using the TCP protocol.";
-
-
-public const string SNI_ERROR_50 = @"Local Database Runtime error occurred. ";
-public const string SNI_ERROR_51 = @"An instance name was not specified while connecting to a Local Database Runtime. Specify an instance name in the format (localdb)\\instance_name.";
-public const string SNI_ERROR_52 = @"Unable to locate a Local Database Runtime installation. Verify that SQL Server Express is properly installed and that the Local Database Runtime feature is enabled.";
-public const string SNI_ERROR_53 = @"Invalid Local Database Runtime registry configuration found. Verify that SQL Server Express is properly installed.";
-public const string SNI_ERROR_54 = @"Unable to locate the registry entry for SQLUserInstance.dll file path. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.";
-public const string SNI_ERROR_55 = @"Registry value contains an invalid SQLUserInstance.dll file path. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.";
-public const string SNI_ERROR_56 = @"Unable to load the SQLUserInstance.dll from the location specified in the registry. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.";
-public const string SNI_ERROR_57 = @"Invalid SQLUserInstance.dll found at the location specified in the registry. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.";
-
-
-public const string Snix_Connect = @"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.";
-public const string Snix_PreLoginBeforeSuccessfullWrite = @"The client was unable to establish a connection because of an error during connection initialization process before login. Possible causes include the following:  the client tried to connect to an unsupported version of SQL Server; the server was too busy to accept new connections; or there was a resource limitation (insufficient memory or maximum allowed connections) on the server.";
-public const string Snix_PreLogin = @"A connection was successfully established with the server, but then an error occurred during the pre-login handshake.";
-public const string Snix_LoginSspi = @"A connection was successfully established with the server, but then an error occurred when obtaining the security/SSPI context information for integrated security login.";
-public const string Snix_Login = @"A connection was successfully established with the server, but then an error occurred during the login process.";
-public const string Snix_EnableMars = @"Connection open and login was successful, but then an error occurred while enabling MARS for this connection.";
-public const string Snix_AutoEnlist = @"Connection open and login was successful, but then an error occurred while enlisting the connection into the current distributed transaction.";
-public const string Snix_GetMarsSession = @"Failed to establish a MARS session in preparation to send the request to the server.";
-public const string Snix_Execute = @"A transport-level error has occurred when sending the request to the server.";
-public const string Snix_Read = @"A transport-level error has occurred when receiving results from the server.";
-public const string Snix_Close = @"A transport-level error has occurred during connection clean-up.";
-public const string Snix_SendRows = @"A transport-level error has occurred while sending information to the server.";
-public const string Snix_ProcessSspi = @"A transport-level error has occured during SSPI handshake.";
-
-
-public const string LocalDB_CreateFailed = @"Local Database Runtime: Cannot create named instance.";
-public const string LocalDB_BadConfigSectionType = @"Local Database Runtime: system.data.localdb configuration file section is of unknown type.";
-public const string LocalDB_FailedGetDLLHandle = @"Local Database Runtime: Cannot load SQLUserInstance.dll.";
-public const string LocalDB_MethodNotFound = @"Invalid SQLUserInstance.dll found at the location specified in the registry. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.";
-public const string LocalDB_UnobtainableMessage = @"Cannot obtain Local Database Runtime error message";
-public const string LocalDB_InvalidVersion = @"Local Database Runtime: Invalid instance version specification found in the configuration file.";
-
-
-public const string SQLROR_RecursiveRoutingNotSupported = @"Two or more redirections have occurred. Only one redirection per login is allowed.";
-public const string SQLROR_FailoverNotSupported = @"Connecting to a mirrored SQL Server instance using the ApplicationIntent ReadOnly connection option is not supported.";
-public const string SQLROR_UnexpectedRoutingInfo = @"Unexpected routing information received.";
-public const string SQLROR_InvalidRoutingInfo = @"Invalid routing information received.";
-public const string SQLROR_TimeoutAfterRoutingInfo = @"Server provided routing information, but timeout already expired.";
-
-
-public const string SQLCR_InvalidConnectRetryCountValue = @"Invalid ConnectRetryCount value (should be 0-255).";
-public const string SQLCR_InvalidConnectRetryIntervalValue = @"Invalid ConnectRetryInterval value (should be 1-60).";
-public const string SQLCR_NextAttemptWillExceedQueryTimeout = @"Next reconnection attempt will exceed query timeout. Reconnection was terminated.";
-public const string SQLCR_EncryptionChanged = @"The server did not preserve SSL encryption during a recovery attempt, connection recovery is not possible.";
-public const string SQLCR_TDSVestionNotPreserved = @"The server did not preserve the exact client TDS version requested during a recovery attempt, connection recovery is not possible.";
-public const string SQLCR_AllAttemptsFailed = @"The connection is broken and recovery is not possible.  The client driver attempted to recover the connection one or more times and all attempts failed.  Increase the value of ConnectRetryCount to increase the number of recovery attempts.";
-public const string SQLCR_UnrecoverableServer = @"The connection is broken and recovery is not possible.  The connection is marked by the server as unrecoverable.  No attempt was made to restore the connection.";
-public const string SQLCR_UnrecoverableClient = @"The connection is broken and recovery is not possible.  The connection is marked by the client driver as unrecoverable.  No attempt was made to restore the connection.";
-public const string SQLCR_NoCRAckAtReconnection = @"The server did not acknowledge a recovery attempt, connection recovery is not possible.";
        public static string GetString (string name)
        {
                return SR.GetString (name);
diff --git a/mcs/class/System.Data/System.Data-net_4_5.csproj b/mcs/class/System.Data/System.Data-net_4_5.csproj
deleted file mode 100644 (file)
index 24eb6c3..0000000
+++ /dev/null
@@ -1,555 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,169,219,414,649</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Data</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,169,219,414,649</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;PLATFORM_UNIX;USEOFFSET;MONO_PARTIAL_DATA_IMPORT</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,169,219,414,649</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;PLATFORM_UNIX;USEOFFSET;MONO_PARTIAL_DATA_IMPORT</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\bid\inc\cs\bidPrivateBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\Microsoft\SqlServer\Server\SqlTriggerContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\Misc\ExternDll.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\Misc\HResults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\Misc\PrivilegedConfigurationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\AcceptRejectRule.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\AggregateType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\BaseCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\CatalogLocation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\CodeGen\datacache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\CodeGen\StrongTypingException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ColumnTypeConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\CommandBehavior.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\CommandType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\ActivityCorrelator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\AdapterSwitches.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\AdapterUtil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\BigIntegerStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\BooleanStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\ByteStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\CharStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DataAdapter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DataColumnMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DataColumnMappingCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DataRecordInternal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DataStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DataTableMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DataTableMappingCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DateTimeOffsetStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DateTimeStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DBCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DBCommandBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DBConnection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbConnectionOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbConnectionPoolKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DBConnectionString.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbConnectionStringBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbConnectionStringCommon.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbDataAdapter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DBDataPermission.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DBDataPermissionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbDataReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\dbdatarecord.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbDataSourceEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\dbenumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DBParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbParameterCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbProviderConfigurationHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbProviderFactories.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbProviderFactoriesConfigurationHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbProviderFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbProviderSpecificTypePropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DBSchemaRow.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DBSchemaTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DbTransaction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DecimalStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\DoubleStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\FieldNameLookup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\GreenMethods.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\Groupbybehavior.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\HandlerBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\identifiercase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\Int16Storage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\Int32Storage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\Int64Storage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\MultipartIdentifier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\NameValuePair.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\NameValuePermission.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\NativeMethods.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\ObjectStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\RowUpdatedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\RowUpdatingEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SafeNativeMethods.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SByteStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SchemaTableColumn.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SchemaTableOptionalColumn.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SingleStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLConvert.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLBinaryStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQlBooleanStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLBytesStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLByteStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLCharsStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLDateTimeStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLDecimalStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLDoubleStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLGuidStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLInt16Storage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLInt32Storage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLInt64Storage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLMoneyStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLSingleStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SQLStringStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SqlUDTStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SQLTypes\SqlXmlStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\StringStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\SupportedJoinOperators.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\System.Data_BID.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\TimeSpanStorage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\UInt16Storage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\UInt32Storage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\UInt64Storage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Common\UnsafeNativeMethods.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ConflictOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ConnectionState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Constraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ConstraintCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ConstraintConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ConstraintEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataColumn.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataColumnChangeEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataColumnChangeEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataColumnCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataColumnPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataError.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataRelation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataRelationCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataRelationPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataRow.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataRowAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataRowChangeEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataRowChangeEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataRowCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataRowCreatedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataRowState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataRowVersion.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataRowView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataSerializationFormat.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataSetDateTime.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataSysAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataTableClearEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataTableClearEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataTableCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataTableNewRowEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataTableNewRowEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataTablePropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataTableReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataTableReaderListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataTableTypeConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataViewListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataViewManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataViewManagerListItemTypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataViewRowState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataViewSetting.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DataViewSettingCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DBConcurrencyException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\dbtype.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\DefaultValueTypeConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\FillErrorEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\FillErrorEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\AggregateNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\BinaryNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\ConstNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\DataExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\ExpressionNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\ExpressionParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\FilterException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\FunctionNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\IFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\LookupNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\NameNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\Operators.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\UnaryNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Filter\ZeroOpNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ForeignKeyConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IColumnMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IColumnMappingCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IDataAdapter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IDataParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IDataParameterCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IDataReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IDataRecord.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IDbCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IDbConnection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IDbDataAdapter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IDbDataParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IDbTransaction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\IsolationLevel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ITableMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ITableMappingCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\LoadOption.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\MappingType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\MergeFailedEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\MergeFailedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Merger.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\MissingMappingAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\MissingSchemaAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\DbDataRecord.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\Odbc32.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcCommandBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcConnection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcConnectionFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcConnectionHandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcConnectionOpen.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcConnectionPoolProviderInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcConnectionString.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcConnectionStringbuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcDataAdapter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcDataReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcEnvironment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcEnvironmentHandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcError.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcErrorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcHandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcInfoMessageEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\odbcmetadatacollectionnames.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\odbcmetadatacolumnnames.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\odbcmetadatafactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcParameterCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcPermission.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcReferenceCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcRowUpdatingEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcStatementHandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcTransaction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Odbc\OdbcUtils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\ColumnBinding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\DBBindings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\DBPropSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OLEDB_Enum.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OLEDB_Util.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbCommandBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbConnection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbConnectionFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbConnectionInternal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbConnectionPoolGroupProviderInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\oledbconnectionstring.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OledbConnectionStringbuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbDataAdapter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbDataReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbError.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbErrorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbHResult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbInfoMessageEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbInfoMessageEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbLiteral.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\oledbmetadatacollectionnames.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\oledbmetadatacolumnnames.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbMetaDataFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbParameterCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbPermission.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbPropertySetGuid.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbPropertyStatus.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbReferenceCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbRowUpdatedEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbRowUpdatedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbRowUpdatingEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbRowUpdatingEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbSchemaGuid.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbStruct.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbTransaction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\OleDbWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\PropertyAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\PropertyIDSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\PropertyInfoSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\RowBinding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OleDb\SafeHandles.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\OperationAbortedException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ParameterDirection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\PrimaryKeyTypeConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\PropertyCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DataReaderContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbBuffer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionClosed.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionInternal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPool.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPoolCounters.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPoolGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPoolGroupProviderInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPoolIdentity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPoolOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPoolProviderInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbMetaDataCollectionNames.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbMetaDataColumnNames.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbMetaDataFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbReferenceCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\SchemaMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\TimeoutTimer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\WrappedIUnknown.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Range.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\RbTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\RecordManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\RecordsAffectedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\RecordsAffectedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\RelatedView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\RelationshipConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Rule.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SchemaSerializationMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SchemaType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Select.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Selection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SimpleType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\IBinarySerialize.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\invalidudtexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\SqlDataSourceEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\SqlFacetAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\SqlFunctionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\SqlGenericUtil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\SqlMethodAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\SqlNotificationRequest.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\SqlProcedureAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\SqlTriggerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\SqlUserDefinedAggregateAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\SqlUserDefinedTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\TriggerAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\ApplicationIntent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\LocalDBAPI.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\SqlClientPermission.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\SqlConnectionString.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\SqlConnectionStringBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\SqlError.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\SqlErrorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\SqlInfoMessageEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\SqlUtil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\TdsEnums.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\TdsParserStaticMethods.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlDbType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\INullable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLBinary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLBoolean.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLByte.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLBytes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLChars.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SqlCharStream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLDateTime.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLDecimal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLDouble.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLGuid.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLInt16.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLInt32.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLInt64.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLMoney.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLResource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLSingle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLString.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SqlTypesSchemaImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SQLUtility.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SQLTypes\SqlXml.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\StateChangeEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\StateChangeEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\StatementType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\UniqueConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\UpdateRowSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\updatestatus.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\XDRSchema.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\XmlContent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\XmlDataLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\XMLDiffLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\XmlKeywords.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\XmlReadMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\xmlsaver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\XMLSchema.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\XmlToDatasetMap.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\XmlWriteMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\NewXml\BaseTreeIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\NewXml\DataDocumentXPathNavigator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\NewXml\DataPointer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\NewXml\DataSetMappper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\NewXml\IXmlDataVirtualNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\NewXml\RegionIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\NewXml\TreeIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\NewXml\XmlBoundElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\NewXml\XmlDataDocument.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\NewXml\XmlDataImplementation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data\System\NewXml\XPathNodePointer.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs.in" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\..\build\common\SR.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.SqlServer.Server\SqlMetaData.cs" />\r
-    <Compile Include="ReferenceSources\NativeOledbWrapper.cs" />\r
-    <Compile Include="ReferenceSources\Res.cs" />\r
-    <Compile Include="ReferenceSources\ResCategoryAttribute.cs" />\r
-    <Compile Include="ReferenceSources\ResDescriptionAttribute.cs" />\r
-    <Compile Include="ReferenceSources\SqlInternalConnectionTds.cs" />\r
-    <Compile Include="ReferenceSources\ThisAssembly.cs" />\r
-    <Compile Include="ReferenceSources\Win32NativeMethods.cs" />\r
-    <Compile Include="System.Data.Common\DbConnectionStringBuilderHelper.cs" />\r
-    <Compile Include="System.Data.Common\DbTypes.cs" />\r
-    <Compile Include="System.Data.Common\ExceptionHelper.cs" />\r
-    <Compile Include="System.Data.SqlClient\NetworkLibraryConverter.cs" />\r
-    <Compile Include="System.Data.SqlClient\OnChangeEventHandler.cs" />\r
-    <Compile Include="System.Data.SqlClient\SortOrder.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlAsyncResult.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlAsyncState.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlBulkCopy.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlBulkCopyColumnMapping.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlBulkCopyColumnMappingCollection.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlBulkCopyOptions.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlClientFactory.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlClientMetaDataCollectionNames.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlCommand.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlCommandBuilder.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlConnection.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlCredential.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlDataAdapter.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlDataReader.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlDataSourceConverter.cs" />\r
-    <Compile Include="System.Data.SqlClient\SQLDebugging.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlDecimalExtensions.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlDependency.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlException.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlInfoMessageEventHandler.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlInitialCatalogConverter.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlNotificationEventArgs.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlNotificationInfo.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlNotificationSource.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlNotificationType.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlParameter.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlParameterCollection.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlParameterConverter.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlRowsCopiedEventArgs.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlRowsCopiedEventHandler.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlRowUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlRowUpdatedEventHandler.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlRowUpdatingEventArgs.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlRowUpdatingEventHandler.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlTransaction.cs" />\r
-    <Compile Include="System.Data.SqlClient\SqlXmlTextReader.cs" />\r
-    <Compile Include="gen_OdbcConnection.cs" />\r
-    <Compile Include="gen_OdbcParameter.cs" />\r
-    <Compile Include="gen_OdbcParameterCollection.cs" />\r
-    <Compile Include="gen_OleDbConnection.cs" />\r
-    <Compile Include="gen_OleDbParameter.cs" />\r
-    <Compile Include="gen_OleDbParameterCollection.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Numerics/System.Numerics-net_4_5.csproj">\r
-      <Project>{14631AC9-FDC6-4561-A04C-6913947C939E}</Project>\r
-      <Name>System.Numerics-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Data.Tds/Mono.Data.Tds-net_4_5.csproj">\r
-      <Project>{CB7949AC-5FA7-4FAB-893A-8FAF436BF514}</Project>\r
-      <Name>Mono.Data.Tds-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
-      <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index a0f8a936bb86858bc93a305b531500a182fbbf86..23229be5f1c1fa726cf74a075c07bc37bb9efe79 100644 (file)
     <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionFactory.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionInternal.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPool.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPoolAuthenticationContext.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPoolAuthenticationContextKey.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPoolCounters.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPoolGroup.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\ProviderBase\DbConnectionPoolGroupProviderInfo.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\Sql\TriggerAction.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\ApplicationIntent.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\LocalDBAPI.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\SqlClientEncryptionType.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\SqlClientPermission.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\SqlConnectionString.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Data\System\Data\SqlClient\SqlConnectionStringBuilder.cs" />\r
diff --git a/mcs/class/System.Data/System.Data-tests-net_4_5.csproj b/mcs/class/System.Data/System.Data-tests-net_4_5.csproj
deleted file mode 100644 (file)
index f830530..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F7AED8DB-C8C6-4F47-AC6C-F93B26F90899}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,649,618,169,612,219,168</NoWarn>\r
-    <OutputPath>bin\Debug\System.Data-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Data_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,649,618,169,612,219,168</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,649,618,169,612,219,168</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Mono.Data.SqlExpressions\DataColumnExpressionTest.cs" />\r
-    <Compile Include="Test\Mono.Data.SqlExpressions\DateComparisonTest.cs" />\r
-    <Compile Include="Test\System.Data.Common\ConnectionStringsSectionTest.cs" />\r
-    <Compile Include="Test\System.Data.Common\DataAdapterTest.cs" />\r
-    <Compile Include="Test\System.Data.Common\DataColumnMappingCollectionTest.cs" />\r
-    <Compile Include="Test\System.Data.Common\DataTableMappingCollectionTest.cs" />\r
-    <Compile Include="Test\System.Data.Common\DbCommandBuilderTest.cs" />\r
-    <Compile Include="Test\System.Data.Common\DbConnectionStringBuilderTest.cs" />\r
-    <Compile Include="Test\System.Data.Common\DbDataAdapterTest.cs" />\r
-    <Compile Include="Test\System.Data.Common\DBDataPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Data.Common\DBDataPermissionTest.cs" />\r
-    <Compile Include="Test\System.Data.Common\DbDataReaderMock.cs" />\r
-    <Compile Include="Test\System.Data.Common\DbDataReaderTest.cs" />\r
-    <Compile Include="Test\System.Data.Common\DbProviderFactoriesConfigurationHandlerTest.cs" />\r
-    <Compile Include="Test\System.Data.Common\DbTransactionTest.cs" />\r
-    <Compile Include="Test\System.Data.Odbc\OdbcCommandBuilderTest.cs" />\r
-    <Compile Include="Test\System.Data.Odbc\OdbcCommandTest.cs" />\r
-    <Compile Include="Test\System.Data.Odbc\OdbcConnectionStringBuilderTest.cs" />\r
-    <Compile Include="Test\System.Data.Odbc\OdbcConnectionTest.cs" />\r
-    <Compile Include="Test\System.Data.Odbc\OdbcDataAdapterTest.cs" />\r
-    <Compile Include="Test\System.Data.Odbc\OdbcMetaDataCollectionNamesTest.cs" />\r
-    <Compile Include="Test\System.Data.Odbc\OdbcParameterCollectionTest.cs" />\r
-    <Compile Include="Test\System.Data.Odbc\OdbcParameterTest.cs" />\r
-    <Compile Include="Test\System.Data.Odbc\OdbcPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Data.Odbc\OdbcPermissionTest.cs" />\r
-    <Compile Include="Test\System.Data.OleDb\OleDbCommandTest.cs" />\r
-    <Compile Include="Test\System.Data.OleDb\OleDbConnectionTest.cs" />\r
-    <Compile Include="Test\System.Data.OleDb\OleDbDataAdapterTest.cs" />\r
-    <Compile Include="Test\System.Data.OleDb\OleDbMetaDataCollectionNamesTest.cs" />\r
-    <Compile Include="Test\System.Data.OleDb\OleDbParameterCollectionTest.cs" />\r
-    <Compile Include="Test\System.Data.OleDb\OleDbPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Data.OleDb\OleDbPermissionTest.cs" />\r
-    <Compile Include="Test\System.Data.Sql\SqlNotificationRequestTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlClient\SqlBulkCopyTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlClient\SqlClientMetaDataCollectionNamesTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlClient\SqlClientPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlClient\SqlClientPermissionTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlClient\SqlCommandBuilderTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlClient\SqlCommandTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlClient\SqlConnectionStringBuilderTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlClient\SqlConnectionTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlClient\SqlDataAdapterTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlClient\SqlParameterTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlBinaryTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlBooleanTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlBytesTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlByteTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlCharsTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlDateTimeTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlDecimalTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlDoubleTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlGuidTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlInt16Test.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlInt32Test.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlInt64Test.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlMoneyTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlSingleTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlStringTest.cs" />\r
-    <Compile Include="Test\System.Data.SqlTypes\SqlXmlTest.cs" />\r
-    <Compile Include="Test\System.Data.Test.Utils\DataProvider.cs" />\r
-    <Compile Include="Test\System.Data\BinarySerializationTest.cs" />\r
-    <Compile Include="Test\System.Data\ConstraintCollectionTest.cs" />\r
-    <Compile Include="Test\System.Data\ConstraintCollectionTest2.cs" />\r
-    <Compile Include="Test\System.Data\ConstraintExceptionTest.cs" />\r
-    <Compile Include="Test\System.Data\ConstraintTest.cs" />\r
-    <Compile Include="Test\System.Data\DataColumnCollectionTest.cs" />\r
-    <Compile Include="Test\System.Data\DataColumnCollectionTest2.cs" />\r
-    <Compile Include="Test\System.Data\DataColumnTest.cs" />\r
-    <Compile Include="Test\System.Data\DataColumnTest2.cs" />\r
-    <Compile Include="Test\System.Data\DataRelationCollectionTest.cs" />\r
-    <Compile Include="Test\System.Data\DataRelationCollectionTest2.cs" />\r
-    <Compile Include="Test\System.Data\DataRelationTest.cs" />\r
-    <Compile Include="Test\System.Data\DataRelationTest2.cs" />\r
-    <Compile Include="Test\System.Data\DataRowCollectionTest.cs" />\r
-    <Compile Include="Test\System.Data\DataRowCollectionTest2.cs" />\r
-    <Compile Include="Test\System.Data\DataRowTest.cs" />\r
-    <Compile Include="Test\System.Data\DataRowTest2.cs" />\r
-    <Compile Include="Test\System.Data\DataRowViewTest.cs" />\r
-    <Compile Include="Test\System.Data\DataRowViewTest2.cs" />\r
-    <Compile Include="Test\System.Data\DataSet1.Designer.cs" />\r
-    <Compile Include="Test\System.Data\DataSetAssertion.cs" />\r
-    <Compile Include="Test\System.Data\DataSetInferXmlSchemaTest.cs" />\r
-    <Compile Include="Test\System.Data\DataSetReadXmlSchemaTest.cs" />\r
-    <Compile Include="Test\System.Data\DataSetReadXmlTest.cs" />\r
-    <Compile Include="Test\System.Data\DataSetTest.cs" />\r
-    <Compile Include="Test\System.Data\DataSetTest2.cs" />\r
-    <Compile Include="Test\System.Data\DataSetTypedDataSetTest.cs" />\r
-    <Compile Include="Test\System.Data\DataTableCollectionTest.cs" />\r
-    <Compile Include="Test\System.Data\DataTableCollectionTest2.cs" />\r
-    <Compile Include="Test\System.Data\DataTableLoadRowTest.cs" />\r
-    <Compile Include="Test\System.Data\DataTableReaderTest.cs" />\r
-    <Compile Include="Test\System.Data\DataTableReadWriteXmlTest.cs" />\r
-    <Compile Include="Test\System.Data\DataTableReadXmlSchemaTest.cs" />\r
-    <Compile Include="Test\System.Data\DataTableTest.cs" />\r
-    <Compile Include="Test\System.Data\DataTableTest2.cs" />\r
-    <Compile Include="Test\System.Data\DataTableTest3.cs" />\r
-    <Compile Include="Test\System.Data\DataTableTest4.cs" />\r
-    <Compile Include="Test\System.Data\DataTableTest5.cs" />\r
-    <Compile Include="Test\System.Data\DataViewManagerTest.cs" />\r
-    <Compile Include="Test\System.Data\DataViewTest.cs" />\r
-    <Compile Include="Test\System.Data\DataViewTest_IBindingList.cs" />\r
-    <Compile Include="Test\System.Data\DataViewTest_IBindingListView.cs" />\r
-    <Compile Include="Test\System.Data\DataViewTest2.cs" />\r
-    <Compile Include="Test\System.Data\DBConcurrencyExceptionTest.cs" />\r
-    <Compile Include="Test\System.Data\DeletedRowInaccessibleExceptionTest.cs" />\r
-    <Compile Include="Test\System.Data\DuplicateNameExceptionTest.cs" />\r
-    <Compile Include="Test\System.Data\EvaluateExceptionTest.cs" />\r
-    <Compile Include="Test\System.Data\ForeignKeyConstraintTest.cs" />\r
-    <Compile Include="Test\System.Data\ForeignKeyConstraintTest2.cs" />\r
-    <Compile Include="Test\System.Data\InRowChangingEventExceptionTest.cs" />\r
-    <Compile Include="Test\System.Data\InvalidConstraintExceptionTest.cs" />\r
-    <Compile Include="Test\System.Data\MissingPrimaryKeyExceptionTest.cs" />\r
-    <Compile Include="Test\System.Data\MonkeyDataSet.cs" />\r
-    <Compile Include="Test\System.Data\NoNullAllowedExceptionTest.cs" />\r
-    <Compile Include="Test\System.Data\ReadOnlyExceptionTest.cs" />\r
-    <Compile Include="Test\System.Data\RowNotInTableExceptionTest.cs" />\r
-    <Compile Include="Test\System.Data\SyntaxErrorExceptionTest.cs" />\r
-    <Compile Include="Test\System.Data\TrailingSpaceTest.cs" />\r
-    <Compile Include="Test\System.Data\TypedDataSetGeneratorTest.cs" />\r
-    <Compile Include="Test\System.Data\UniqueConstraintTest.cs" />\r
-    <Compile Include="Test\System.Data\UniqueConstraintTest2.cs" />\r
-    <Compile Include="Test\System.Data\VersionNotFoundException.cs" />\r
-    <Compile Include="Test\System.Data\XmlDataLoaderTest.cs" />\r
-    <Compile Include="Test\System.Data\XmlDataReaderTest.cs" />\r
-    <Compile Include="Test\System.Data\XmlExportOfTypedDataSetTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDataDocumentTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDataDocumentTest2.cs" />\r
-    <Compile Include="Mono.Data.SqlExpressions\Parser.cs" />\r
-  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_5.csproj">\r
-      <Project>{CB7949AC-5FA7-4FAB-893A-8FAF436BF514}</Project>\r
-      <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj">\r
-      <Project>{74084B98-6858-4133-998C-E594D367D8F1}</Project>\r
-      <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
index 7410c36c2a1c1829f16c27403512cf8b23c5758f..4877d434a20c62afb5eb11c4277b62ee74d70ea5 100644 (file)
@@ -1263,20 +1263,29 @@ namespace System.Data.SqlClient
                                throw new ArgumentNullException ("values");
 
                        int len = values.Length;
-                       int bigDecimalIndex = command.Tds.ColumnValues.BigDecimalIndex;
+                       var tds = command.Tds;
+                       int columns = Math.Min (len, tds.Columns.Count);
 
-                       // If a four-byte decimal is stored, then we can't convert to
-                       // a native type.  Throw an OverflowException.
-                       if (bigDecimalIndex >= 0 && bigDecimalIndex < len)
-                               throw new OverflowException ();
-                       try {
-                               command.Tds.ColumnValues.CopyTo (0, values, 0,
-                                                                len > command.Tds.ColumnValues.Count ? command.Tds.ColumnValues.Count : len);
-                       } catch (TdsInternalException ex) {
-                               command.Connection.Close ();
-                               throw SqlException.FromTdsInternalException ((TdsInternalException) ex);
+                       if ((command.CommandBehavior & CommandBehavior.SequentialAccess) != 0) {
+                               for (int i = 0; i < columns; ++i) {
+                                       values [i] = tds.GetSequentialColumnValue (i);
+                               }
+                       } else {
+                               int bigDecimalIndex = tds.ColumnValues.BigDecimalIndex;
+
+                               // If a four-byte decimal is stored, then we can't convert to
+                               // a native type.  Throw an OverflowException.
+                               if (bigDecimalIndex >= 0 && bigDecimalIndex < len)
+                                       throw new OverflowException ();
+                               try {
+                                       tds.ColumnValues.CopyTo (0, values, 0, columns);
+                               } catch (TdsInternalException ex) {
+                                       command.Connection.Close ();
+                                       throw SqlException.FromTdsInternalException ((TdsInternalException)ex);
+                               }
                        }
-                       return (len < FieldCount ? len : FieldCount);
+
+                       return columns;
                }
 
 
index 123c878050b2034e394c84ef7eafdfd7bfe6469e..4be1824f6674c064bd460a4a3f0cab070727b250 100644 (file)
@@ -983,6 +983,7 @@ table was set.
                        eventWriter.WriteLine (" add a column with an empty name.");
 
                        AssertEquals (result.Replace ("\r\n", "\n"), eventWriter.ToString ().Replace ("\r\n", "\n"));
+                       GC.KeepAlive (dv);
                }
 
                public class ComplexEventSequence1View : DataView
index d9ae04c7e6f3c6a24661e634cc038171a768137b..45ae17e4d6c8aff9d79b1cda59ca4c05f480f611 100644 (file)
@@ -1,4 +1,4 @@
-../../../external/referencesource/System.Data/bid/inc/cs/bidPrivateBase.cs
+MobileStubs.cs
 
 ../../../external/referencesource/System.Data/Microsoft/SqlServer/Server/SqlTriggerContext.cs
 
@@ -66,7 +66,6 @@
 ../../../external/referencesource/System.Data/System/Data/Common/ObjectStorage.cs
 ../../../external/referencesource/System.Data/System/Data/Common/RowUpdatedEventArgs.cs
 ../../../external/referencesource/System.Data/System/Data/Common/RowUpdatingEventArgs.cs
-../../../external/referencesource/System.Data/System/Data/Common/SafeNativeMethods.cs
 ../../../external/referencesource/System.Data/System/Data/Common/SByteStorage.cs
 ../../../external/referencesource/System.Data/System/Data/Common/SchemaTableColumn.cs
 ../../../external/referencesource/System.Data/System/Data/Common/SchemaTableOptionalColumn.cs
 ../../../external/referencesource/System.Data/System/Data/Common/SQLTypes/SqlXmlStorage.cs
 ../../../external/referencesource/System.Data/System/Data/Common/StringStorage.cs
 ../../../external/referencesource/System.Data/System/Data/Common/SupportedJoinOperators.cs
-../../../external/referencesource/System.Data/System/Data/Common/System.Data_BID.cs
 ../../../external/referencesource/System.Data/System/Data/Common/TimeSpanStorage.cs
 ../../../external/referencesource/System.Data/System/Data/Common/UInt16Storage.cs
 ../../../external/referencesource/System.Data/System/Data/Common/UInt32Storage.cs
 ../../../external/referencesource/System.Data/System/Data/Common/UInt64Storage.cs
-../../../external/referencesource/System.Data/System/Data/Common/UnsafeNativeMethods.cs
 ../../../external/referencesource/System.Data/System/Data/ConflictOptions.cs
 ../../../external/referencesource/System.Data/System/Data/ConnectionState.cs
 ../../../external/referencesource/System.Data/System/Data/ConstraintCollection.cs
 ../../../external/referencesource/System.Data/System/Data/PrimaryKeyTypeConverter.cs
 ../../../external/referencesource/System.Data/System/Data/PropertyCollection.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DataReaderContainer.cs
-../../../external/referencesource/System.Data/System/Data/ProviderBase/DbBuffer.cs
-../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionClosed.cs
-../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionFactory.cs
-# ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionHelper.cs
-../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionInternal.cs
-../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPool.cs
-../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolGroup.cs
-../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolGroupProviderInfo.cs
-../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolIdentity.cs
+../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolAuthenticationContext.cs
+../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolAuthenticationContextKey.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolOptions.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolProviderInfo.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbMetaDataCollectionNames.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbMetaDataColumnNames.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbMetaDataFactory.cs
-# ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbParameterCollectionHelper.cs
-# ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbParameterHelper.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbReferenceCollection.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/SchemaMapping.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/TimeoutTimer.cs
 
 ../../../external/referencesource/System.Data/System/Data/SqlClient/ApplicationIntent.cs
 ../../../external/referencesource/System.Data/System/Data/SqlClient/LocalDBAPI.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlClientEncryptionType.cs
 ../../../external/referencesource/System.Data/System/Data/SqlClient/SqlClientPermission.cs
 ../../../external/referencesource/System.Data/System/Data/SqlClient/SqlConnectionString.cs
 ../../../external/referencesource/System.Data/System/Data/SqlClient/SqlConnectionStringBuilder.cs
index c845e63e6916de11315b39add35e1938ef29d9aa..b00abb0eebb673ff3097e60c7ba64ebf864a8342 100644 (file)
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionFactory.cs
 # ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionHelper.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionInternal.cs
+../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolAuthenticationContext.cs
+../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolAuthenticationContextKey.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolCounters.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPool.cs
 ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolGroup.cs
 
 ../../../external/referencesource/System.Data/System/Data/SqlClient/ApplicationIntent.cs
 ../../../external/referencesource/System.Data/System/Data/SqlClient/LocalDBAPI.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlClientEncryptionType.cs
 ../../../external/referencesource/System.Data/System/Data/SqlClient/SqlClientPermission.cs
 ../../../external/referencesource/System.Data/System/Data/SqlClient/SqlConnectionString.cs
 ../../../external/referencesource/System.Data/System/Data/SqlClient/SqlConnectionStringBuilder.cs
diff --git a/mcs/class/System.Design/System.Design-net_4_5.csproj b/mcs/class/System.Design/System.Design-net_4_5.csproj
deleted file mode 100644 (file)
index c27e158..0000000
+++ /dev/null
@@ -1,438 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D4E6A482-761B-4B41-8B63-C930CA84D268}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Design</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DataSourceDescriptor.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DataSourceDescriptorCollection.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DataSourceGroup.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DataSourceGroupCollection.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DataSourceProviderService.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DesignerDataColumn.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DesignerDataConnection.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DesignerDataParameter.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DesignerDataRelationship.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DesignerDataSchemaClass.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DesignerDataStoredProcedure.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DesignerDataTable.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DesignerDataTableBase.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\DesignerDataView.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\IDataEnvironment.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\IDesignerDataSchema.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Data\QueryBuilderMode.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\BasicDesignerLoader.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\CodeDomComponentSerializationService.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\CodeDomDesignerLoader.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\CodeDomLocalizationModel.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\CodeDomLocalizationProvider.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\CodeDomSerializationProvider.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\CodeDomSerializer.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\CodeDomSerializerBase.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\CodeDomSerializerException.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\CollectionCodeDomSerializer.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\ComponentCodeDomSerializer.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\DesignerSerializationManager.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\EnumCodeDomSerializer.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\EventCodeDomSerializer.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\ExpressionContext.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\ICodeDomDesignerReload.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\MemberCodeDomSerializer.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\ObjectStatementCollection.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\PrimitiveCodeDomSerializer.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\PropertyCodeDomSerializer.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\RootCodeDomSerializer.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\RootContext.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\SerializeAbsoluteContext.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\StatementContext.cs" />\r
-    <Compile Include="System.ComponentModel.Design.Serialization\TypeCodeDomSerializer.cs" />\r
-    <Compile Include="System.ComponentModel.Design\ActiveDesignSurfaceChangedEventArgs.cs" />\r
-    <Compile Include="System.ComponentModel.Design\ActiveDesignSurfaceChangedEventHandler.cs" />\r
-    <Compile Include="System.ComponentModel.Design\ArrayEditor.cs" />\r
-    <Compile Include="System.ComponentModel.Design\BinaryEditor.cs" />\r
-    <Compile Include="System.ComponentModel.Design\ByteViewer.cs" />\r
-    <Compile Include="System.ComponentModel.Design\CollectionEditor.cs" />\r
-    <Compile Include="System.ComponentModel.Design\ComponentActionsType.cs" />\r
-    <Compile Include="System.ComponentModel.Design\ComponentDesigner.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DateTimeEditor.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionHeaderItem.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionItem.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionItemCollection.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionList.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionListCollection.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionListsChangedEventArgs.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionListsChangedEventHandler.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionListsChangedType.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionMethodItem.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionPropertyItem.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionService.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionTextItem.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionUIService.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionUIStateChangeEventArgs.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionUIStateChangeEventHandler.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerActionUIStateChangeType.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerCommandSet.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerEventService.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignerHost.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignModeNestedContainer.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignModeSite.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignSurface.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignSurfaceCollection.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignSurfaceEventArgs.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignSurfaceEventHandler.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignSurfaceManager.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DesignSurfaceServiceContainer.cs" />\r
-    <Compile Include="System.ComponentModel.Design\DisplayMode.cs" />\r
-    <Compile Include="System.ComponentModel.Design\EventBindingService.cs" />\r
-    <Compile Include="System.ComponentModel.Design\ExceptionCollection.cs" />\r
-    <Compile Include="System.ComponentModel.Design\ExtenderService.cs" />\r
-    <Compile Include="System.ComponentModel.Design\IComponentDesignerDebugService.cs" />\r
-    <Compile Include="System.ComponentModel.Design\IComponentDesignerStateService.cs" />\r
-    <Compile Include="System.ComponentModel.Design\InheritanceService.cs" />\r
-    <Compile Include="System.ComponentModel.Design\LoadedEventArgs.cs" />\r
-    <Compile Include="System.ComponentModel.Design\LoadedEventHandler.cs" />\r
-    <Compile Include="System.ComponentModel.Design\LocalizationExtenderProvider.cs" />\r
-    <Compile Include="System.ComponentModel.Design\MenuCommandsChangedEventArgs.cs" />\r
-    <Compile Include="System.ComponentModel.Design\MenuCommandsChangedEventHandler.cs" />\r
-    <Compile Include="System.ComponentModel.Design\MenuCommandsChangedType.cs" />\r
-    <Compile Include="System.ComponentModel.Design\MenuCommandService.cs" />\r
-    <Compile Include="System.ComponentModel.Design\MultilineStringEditor.cs" />\r
-    <Compile Include="System.ComponentModel.Design\ObjectSelectorEditor.cs" />\r
-    <Compile Include="System.ComponentModel.Design\ReferenceService.cs" />\r
-    <Compile Include="System.ComponentModel.Design\SelectionService.cs" />\r
-    <Compile Include="System.ComponentModel.Design\TypeDescriptorFilterService.cs" />\r
-    <Compile Include="System.ComponentModel.Design\UndoEngine.cs" />\r
-    <Compile Include="System.Data.Design\MethodSignatureGenerator.cs" />\r
-    <Compile Include="System.Data.Design\ParameterGenerationOption.cs" />\r
-    <Compile Include="System.Data.Design\TypedDataSetGenerator.cs" />\r
-    <Compile Include="System.Data.Design\TypedDataSetGeneratorException.cs" />\r
-    <Compile Include="System.Data.Design\TypedDataSetSchemaImporterExtension.cs" />\r
-    <Compile Include="System.Design\DummyClass.cs" />\r
-    <Compile Include="System.Diagnostics.Design\LogConverter.cs" />\r
-    <Compile Include="System.Diagnostics.Design\ProcessDesigner.cs" />\r
-    <Compile Include="System.Diagnostics.Design\ProcessModuleDesigner.cs" />\r
-    <Compile Include="System.Diagnostics.Design\ProcessThreadDesigner.cs" />\r
-    <Compile Include="System.Diagnostics.Design\StringValueConverter.cs" />\r
-    <Compile Include="System.Messaging.Design\MessageDesigner.cs" />\r
-    <Compile Include="System.Resources.Tools\StronglyTypedResourceBuilder.cs" />\r
-    <Compile Include="System.ServiceProcess.Design\ServiceControllerDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.Util\DummyClass.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\AdRotatorDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\BaseDataBoundControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\BaseDataListComponentEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\BaseDataListDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\BaseValidatorDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\ButtonDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\CalendarAutoFormatDialog.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\CalendarDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\CheckBoxDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\CompositeControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\DataBoundControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\DataListComponentEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\DataProviderNameConverter.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\DataSourceIDConverter.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\HierarchicalDataBoundControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\HyperLinkDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\LabelDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\LinkButtonDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\ListControlDataBindingHandler.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\ListControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\PanelDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\RegexEditorDialog.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\RegexTypeEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\RepeaterDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\TableCellsCollectionEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\TableDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\TableRowsCollectionEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design.WebControls\XmlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\AppSettingsExpressionEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\CalendarDataBindingHandler.cs" />\r
-    <Compile Include="System.Web.UI.Design\ClientScriptItem.cs" />\r
-    <Compile Include="System.Web.UI.Design\ClientScriptItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.Design\ColorBuilder.cs" />\r
-    <Compile Include="System.Web.UI.Design\ConnectionStringEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\ConnectionStringsExpressionEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\ContainerControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\ContentDefinition.cs" />\r
-    <Compile Include="System.Web.UI.Design\ContentDesignerState.cs" />\r
-    <Compile Include="System.Web.UI.Design\ControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\ControlDesignerState.cs" />\r
-    <Compile Include="System.Web.UI.Design\ControlLocation.cs" />\r
-    <Compile Include="System.Web.UI.Design\ControlParser.cs" />\r
-    <Compile Include="System.Web.UI.Design\ControlPersister.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataBindingCollectionConverter.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataBindingCollectionEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataBindingHandler.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataBindingValueUIHandler.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataColumnSelectionConverter.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataFieldConverter.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataMemberConverter.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataSetFieldSchema.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataSetSchema.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataSetViewSchema.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataSourceBooleanViewSchemaConverter.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataSourceConverter.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataSourceDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\DataSourceViewSchemaConverter.cs" />\r
-    <Compile Include="System.Web.UI.Design\DesignerAutoFormat.cs" />\r
-    <Compile Include="System.Web.UI.Design\DesignerAutoFormatCollection.cs" />\r
-    <Compile Include="System.Web.UI.Design\DesignerAutoFormatStyle.cs" />\r
-    <Compile Include="System.Web.UI.Design\DesignerDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.Design\DesignerHierarchicalDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.Design\DesignerObject.cs" />\r
-    <Compile Include="System.Web.UI.Design\DesignerRegion.cs" />\r
-    <Compile Include="System.Web.UI.Design\DesignerRegionCollection.cs" />\r
-    <Compile Include="System.Web.UI.Design\DesignerRegionMouseEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.Design\DesignTimeData.cs" />\r
-    <Compile Include="System.Web.UI.Design\DesignTimeResourceProviderFactory.cs" />\r
-    <Compile Include="System.Web.UI.Design\EditableDesignerRegion.cs" />\r
-    <Compile Include="System.Web.UI.Design\ExpressionEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\ExpressionEditorSheet.cs" />\r
-    <Compile Include="System.Web.UI.Design\ExpressionsCollectionConverter.cs" />\r
-    <Compile Include="System.Web.UI.Design\ExpressionsCollectionEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\HierarchicalDataSourceConverter.cs" />\r
-    <Compile Include="System.Web.UI.Design\HierarchicalDataSourceDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\HtmlControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\HtmlIntrinsicControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\HyperLinkDataBindingHandler.cs" />\r
-    <Compile Include="System.Web.UI.Design\IContentResolutionService.cs" />\r
-    <Compile Include="System.Web.UI.Design\IControlDesignerBehaviour.cs" />\r
-    <Compile Include="System.Web.UI.Design\IControlDesignerTag.cs" />\r
-    <Compile Include="System.Web.UI.Design\IControlDesignerView.cs" />\r
-    <Compile Include="System.Web.UI.Design\IDataBindingSchemaProvider.cs" />\r
-    <Compile Include="System.Web.UI.Design\IDataSourceDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\IDataSourceFieldSchema.cs" />\r
-    <Compile Include="System.Web.UI.Design\IDataSourceProvider.cs" />\r
-    <Compile Include="System.Web.UI.Design\IDataSourceSchema.cs" />\r
-    <Compile Include="System.Web.UI.Design\IDataSourceViewSchema.cs" />\r
-    <Compile Include="System.Web.UI.Design\IDesignTimeResourceProviderFactoryService.cs" />\r
-    <Compile Include="System.Web.UI.Design\IDesignTimeResourceWriter.cs" />\r
-    <Compile Include="System.Web.UI.Design\IDocumentProjectItem.cs" />\r
-    <Compile Include="System.Web.UI.Design\IFolderProjectItem.cs" />\r
-    <Compile Include="System.Web.UI.Design\IHierarchicalDataSourceDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\IHtmlControlDesignerBehavior.cs" />\r
-    <Compile Include="System.Web.UI.Design\ImageUrlEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\IProjectItem.cs" />\r
-    <Compile Include="System.Web.UI.Design\ITemplateEditingFrame.cs" />\r
-    <Compile Include="System.Web.UI.Design\ITemplateEditingService.cs" />\r
-    <Compile Include="System.Web.UI.Design\IWebAdministrationService.cs" />\r
-    <Compile Include="System.Web.UI.Design\IWebApplication.cs" />\r
-    <Compile Include="System.Web.UI.Design\IWebFormReferenceManager.cs" />\r
-    <Compile Include="System.Web.UI.Design\IWebFormsBuilderUIService.cs" />\r
-    <Compile Include="System.Web.UI.Design\IWebFormsDocumentService.cs" />\r
-    <Compile Include="System.Web.UI.Design\MailFileEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\MdbDataFileEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\ReadWriteControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\ResourceExpressionEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\ResourceExpressionEditorSheet.cs" />\r
-    <Compile Include="System.Web.UI.Design\SkinIDTypeConverter.cs" />\r
-    <Compile Include="System.Web.UI.Design\SupportsPreviewControlAttribute.cs" />\r
-    <Compile Include="System.Web.UI.Design\TemplatedControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\TemplatedEditableDesignerRegion.cs" />\r
-    <Compile Include="System.Web.UI.Design\TemplateDefinition.cs" />\r
-    <Compile Include="System.Web.UI.Design\TemplateEditingService.cs" />\r
-    <Compile Include="System.Web.UI.Design\TemplateEditingVerb.cs" />\r
-    <Compile Include="System.Web.UI.Design\TemplateGroup.cs" />\r
-    <Compile Include="System.Web.UI.Design\TemplateGroupCollection.cs" />\r
-    <Compile Include="System.Web.UI.Design\TemplateModeChangedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.Design\TextControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\TextDataBindingHandler.cs" />\r
-    <Compile Include="System.Web.UI.Design\TransactedChangeCallback.cs" />\r
-    <Compile Include="System.Web.UI.Design\TypeSchema.cs" />\r
-    <Compile Include="System.Web.UI.Design\UrlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.Design\UrlBuilderOptions.cs" />\r
-    <Compile Include="System.Web.UI.Design\UrlEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\UserControlDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\UserControlFileEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\ViewEvent.cs" />\r
-    <Compile Include="System.Web.UI.Design\ViewEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.Design\ViewEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.Design\ViewFlags.cs" />\r
-    <Compile Include="System.Web.UI.Design\ViewRendering.cs" />\r
-    <Compile Include="System.Web.UI.Design\WebControlToolboxItem.cs" />\r
-    <Compile Include="System.Web.UI.Design\WebFormsDesignerActionService.cs" />\r
-    <Compile Include="System.Web.UI.Design\WebFormsReferenceManager.cs" />\r
-    <Compile Include="System.Web.UI.Design\WebFormsRootDesigner.cs" />\r
-    <Compile Include="System.Web.UI.Design\XmlDataFileEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\XmlDocumentSchema.cs" />\r
-    <Compile Include="System.Web.UI.Design\XmlFileEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\XmlUrlEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\XsdSchemaFileEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\XslTransformFileEditor.cs" />\r
-    <Compile Include="System.Web.UI.Design\XslUrlEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\Adorner.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\Behavior.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\BehaviorDragDropEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\BehaviorDragDropEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\BehaviorService.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\BehaviorServiceAdornerCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\BehaviorServiceAdornerCollectionEnumerator.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\ComponentGlyph.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\ControlBodyGlyph.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\Glyph.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\GlyphCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\GlyphSelectionType.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\SnapLine.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\SnapLinePriority.cs" />\r
-    <Compile Include="System.Windows.Forms.Design.Behavior\SnapLineType.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\AnchorEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\AxImporter.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\AxParameterData.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\AxWrapperGen.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\BorderSidesEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ComponentDocumentDesigner.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ComponentTray.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ControlBindingsConverter.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ControlCodeDomSerializer.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ControlCollectionCodeDomSerializer.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ControlDataObject.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ControlDesigner.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\DataMemberFieldConverter.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\DataMemberFieldEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\DataMemberListEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\DataSourceConverter.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\DefaultMenuCommands.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\DesignerOptions.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\DockEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\DocumentDesigner.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\EventHandlerService.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\FileNameEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\FolderNameEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\FormatStringEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\FormDocumentDesigner.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ImageCollectionEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ImageIndexEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ImageListCodeDomSerializer.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ImageListImageEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\IMenuEditorService.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\IMessageReceiver.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\IOleDragClient.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ISelectionUIHandler.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\IUISelectionService.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ListControlStringCollectionEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\MaskDescriptor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\MenuCommands.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\Native.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\PanelDesigner.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ParentControlDesigner.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ScrollableControlDesigner.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\SelectionFrame.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\SelectionRules.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ShortcutKeysEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\SplitContainerDesigner.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\StringArrayEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\StringCollectionEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\TabPageCollectionEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\UISelectionService.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\WindowsFormsDesignerOptionService.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\WndProcRouter.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-plainweb-net_4_5.csproj">\r
-      <Project>{21892B00-1C9F-44F3-AE4C-A6A9A210CEC7}</Project>\r
-      <Name>System.Web-plainweb-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Accessibility/Accessibility-net_4_5.csproj">\r
-      <Project>{FACE8136-C95A-4788-90B2-DB0ECF7A020A}</Project>\r
-      <Name>Accessibility-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Design/System.Design-tests-net_4_5.csproj b/mcs/class/System.Design/System.Design-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 76ad3f2..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AB2530F9-0740-41BF-9276-865F11BCAC7A}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Design-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Design_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.ComponentModel.Design\DesignerActionListsChangedEventArgsTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.Design\DesignerActionMethodItemTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.Design\DesignerActionPropertyItemTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics.Design\StringValueConverterTest.cs" />\r
-    <Compile Include="Test\System.Resources.Tools\StronglyTypedResourceBuilderBaseNameTests.cs" />\r
-    <Compile Include="Test\System.Resources.Tools\StronglyTypedResourceBuilderCodeDomTest.cs" />\r
-    <Compile Include="Test\System.Resources.Tools\StronglyTypedResourceBuilderNamespaceTests.cs" />\r
-    <Compile Include="Test\System.Resources.Tools\StronglyTypedResourceBuilderOtherTests.cs" />\r
-    <Compile Include="Test\System.Resources.Tools\StronglyTypedResourceBuilderResourceNameTests.cs" />\r
-    <Compile Include="Test\System.Resources.Tools\StronglyTypedResourceBuilderResxFileTests.cs" />\r
-    <Compile Include="Test\System.Resources.Tools\StronglyTypedResourceBuilderVerifyResourceNameTests.cs" />\r
-    <Compile Include="Test\System.Windows.Forms.Design\MenuCommandsTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Design\System.Design-net_4_5-1.csproj">\r
-      <Project>{9A747C88-5D5B-41EA-8435-48EAFCFF3C5B}</Project>\r
-      <Name>System.Design\System.Design-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols-net_4_5.csproj b/mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols-net_4_5.csproj
deleted file mode 100644 (file)
index 0fd61b3..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{34031168-8F0D-431D-A1DE-044B3D89C7A2}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.DirectoryServices.Protocols</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\AddRequest.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\AddResponse.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\AsqRequestControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\AsqResponseControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\AuthType.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\BerConversionException.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\BerConverter.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\CompareRequest.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\CompareResponse.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\CrossDomainMoveControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DeleteRequest.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DeleteResponse.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DereferenceAlias.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DereferenceConnectionCallback.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryAttribute.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryAttributeCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryAttributeModification.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryAttributeModificationCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryAttributeOperation.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryConnection.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryControlCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryException.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryIdentifier.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryNotificationControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryOperation.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryOperationException.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryRequest.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectoryResponse.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirectorySynchronizationOptions.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirSyncRequestControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DirSyncResponseControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DomainScopeControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlAuthRequest.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlAuthResponse.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlDirectoryIdentifier.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlDocument.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlDocumentProcessing.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlErrorProcessing.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlErrorResponse.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlInvalidDocumentException.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlRequestDocument.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlResponseDocument.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlResponseOrder.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlSoapConnection.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\DsmlSoapHttpConnection.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ErrorResponseCategory.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ErrorResponseException.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ExtendedDNControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ExtendedDNFlag.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ExtendedRequest.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ExtendedResponse.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\LazyCommitControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\LdapConnection.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\LdapDirectoryIdentifier.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\LdapException.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\LdapSessionOptions.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\LocatorFlags.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ModifyDNRequest.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ModifyDNResponse.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ModifyRequest.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ModifyResponse.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\NotifyOfNewConnectionCallback.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\PageResultRequestControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\PageResultResponseControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\PartialResultProcessing.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\PartialResultsCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\PermissiveModifyControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\QueryClientCertificateCallback.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\QueryForConnectionCallback.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\QuotaControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ReferralCallback.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ReferralChasingOptions.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ResultCode.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SearchOption.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SearchOptionsControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SearchRequest.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SearchResponse.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SearchResultAttributeCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SearchResultEntry.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SearchResultEntryCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SearchResultReference.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SearchResultReferenceCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SearchScope.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SecurityDescriptorFlagControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SecurityMasks.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SecurityPackageContextConnectionInformation.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SecurityProtocol.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\ShowDeletedControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SortKey.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SortRequestControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\SortResponseControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\TlsOperationException.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\TreeDeleteControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\VerifyNameControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\VerifyServerCertificateCallback.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\VlvRequestControl.cs" />\r
-    <Compile Include="System.DirectoryServices.Protocols\VlvResponseControl.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.DirectoryServices/System.DirectoryServices-net_4_5.csproj">\r
-      <Project>{EC4E43E7-63C0-4D64-8B7A-E00C097872A5}</Project>\r
-      <Name>System.DirectoryServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_5.csproj b/mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_5.csproj
deleted file mode 100644 (file)
index 32eee55..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EC4E43E7-63C0-4D64-8B7A-E00C097872A5}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.DirectoryServices</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs.in" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectoryOperationException.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectoryPartition.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectoryReplicationMetadata.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectoryRole.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectoryRoleCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySchedule.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySchema.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySchemaClass.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySchemaClassCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySchemaProperty.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySchemaPropertyCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySecurity.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectoryServerDownException.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySite.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySiteCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySiteLink.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySiteLinkBridge.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySiteLinkCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySiteOptions.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySubnet.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySubnetCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectorySyntax.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectoryTransportType.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ApplicationPartition.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ApplicationPartitionCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\AttributeMetadata.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\AttributeMetadataCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\DirectoryContext.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\DirectoryContextType.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\DirectoryEntryConfiguration.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\DirectoryServer.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\DirectoryServerCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\Domain.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\DomainCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\DomainCollisionOptions.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\DomainController.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\DomainControllerCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\DomainMode.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\Forest.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ForestMode.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ForestTrustCollisionException.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ForestTrustCollisionType.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ForestTrustDomainInfoCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ForestTrustDomainInformation.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ForestTrustDomainStatus.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ForestTrustRelationshipCollision.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ForestTrustRelationshipCollisionCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ForestTrustRelationshipInformation.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\GlobalCatalog.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\GlobalCatalogCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\HourOfDay.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\LocatorOptions.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\MinuteOfHour.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\NotificationStatus.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\PropertyTypes.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReadOnlyActiveDirectorySchemaClassCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReadOnlyActiveDirectorySchemaPropertyCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReadOnlyDirectoryServerCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReadOnlySiteCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReadOnlySiteLinkBridgeCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReadOnlySiteLinkCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReadOnlyStringCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationConnection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationConnectionCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationCursor.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationCursorCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationFailure.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationFailureCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationNeighbor.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationNeighborCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationOperation.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationOperationCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationOperationInformation.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationOperationType.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationSecurityLevel.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\ReplicationSpan.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\SchemaClassType.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\SecurityMasks.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\SyncFromAllServersErrorCategory.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\SyncFromAllServersErrorInformation.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\SyncFromAllServersEvent.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\SyncFromAllServersOperationException.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\SyncFromAllServersOptions.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\SyncUpdateCallback.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\TopLevelName.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\TopLevelNameCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\TopLevelNameCollisionOptions.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\TopLevelNameStatus.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\TrustDirection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\TrustRelationshipInformation.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\TrustRelationshipInformationCollection.cs" />\r
-    <Compile Include="System.DirectoryServices.ActiveDirectory\TrustType.cs" />\r
-    <Compile Include="System.DirectoryServices.Design\DirectoryEntryConverter.cs" />\r
-    <Compile Include="System.DirectoryServices\ActiveDirectoryAccessRule.cs" />\r
-    <Compile Include="System.DirectoryServices\ActiveDirectoryAuditRule.cs" />\r
-    <Compile Include="System.DirectoryServices\ActiveDirectoryRights.cs" />\r
-    <Compile Include="System.DirectoryServices\ActiveDirectorySecurityInheritance.cs" />\r
-    <Compile Include="System.DirectoryServices\AuthenticationTypes.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectoryEntries.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectoryEntry.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectorySearcher.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectoryServicesCOMException.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectoryServicesPermission.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectoryServicesPermissionAccess.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectoryServicesPermissionAttribute.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectoryServicesPermissionEntry.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectoryServicesPermissionEntryCollection.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectorySynchronization.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectorySynchronizationOptions.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectoryVirtualListView.cs" />\r
-    <Compile Include="System.DirectoryServices\DirectoryVirtualListViewContext.cs" />\r
-    <Compile Include="System.DirectoryServices\DSDescriptionAttribute.cs" />\r
-    <Compile Include="System.DirectoryServices\ExtendedDN.cs" />\r
-    <Compile Include="System.DirectoryServices\ExtendedRightAccessRule.cs" />\r
-    <Compile Include="System.DirectoryServices\ListChildrenAccessRule.cs" />\r
-    <Compile Include="System.DirectoryServices\PasswordEncodingMethod.cs" />\r
-    <Compile Include="System.DirectoryServices\PropertyAccess.cs" />\r
-    <Compile Include="System.DirectoryServices\PropertyAccessRule.cs" />\r
-    <Compile Include="System.DirectoryServices\PropertyCollection.cs" />\r
-    <Compile Include="System.DirectoryServices\PropertySetAccessRule.cs" />\r
-    <Compile Include="System.DirectoryServices\PropertyValueCollection.cs" />\r
-    <Compile Include="System.DirectoryServices\ReferralChasingOption.cs" />\r
-    <Compile Include="System.DirectoryServices\ResultPropertyCollection.cs" />\r
-    <Compile Include="System.DirectoryServices\ResultPropertyValueCollection.cs" />\r
-    <Compile Include="System.DirectoryServices\SchemaNameCollection.cs" />\r
-    <Compile Include="System.DirectoryServices\SearchResult.cs" />\r
-    <Compile Include="System.DirectoryServices\SearchResultCollection.cs" />\r
-    <Compile Include="System.DirectoryServices\SearchScope.cs" />\r
-    <Compile Include="System.DirectoryServices\SortDirection.cs" />\r
-    <Compile Include="System.DirectoryServices\SortOption.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_5.csproj">\r
-      <Project>{E6070FFA-2CBA-4C24-99C1-63A4F5052821}</Project>\r
-      <Name>Novell.Directory.Ldap-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 7a37d13b054ba82e40ac9c8023a6e194990f8c7e..c31a24cab6fe8798cbef93f2ee4970d37a0aed82 100644 (file)
@@ -49,6 +49,7 @@
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectoryObjectNotFoundException.cs" />\r
     <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectoryOperationException.cs" />\r
     <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectoryPartition.cs" />\r
     <Compile Include="System.DirectoryServices.ActiveDirectory\ActiveDirectoryReplicationMetadata.cs" />\r
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices-tests-net_4_5.csproj b/mcs/class/System.DirectoryServices/System.DirectoryServices-tests-net_4_5.csproj
deleted file mode 100644 (file)
index eac8025..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9154855D-9656-4742-9CF0-B70B583EE88F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <OutputPath>bin\Debug\System.DirectoryServices-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.DirectoryServices_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.DirectoryServices\DirectoryServicesDirectoryEntryTest.cs" />\r
-    <Compile Include="Test\System.DirectoryServices\DirectoryServicesDirectorySearcherTest.cs" />\r
-    <Compile Include="Test\System.DirectoryServices\DirectoryServicesPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.DirectoryServices\DirectoryServicesPermissionTest.cs" />\r
-    <Compile Include="Test\System.DirectoryServices\DirectoryServicesSearchResultTest.cs" />\r
-    <Compile Include="Test\System.DirectoryServices\TestConfiguration.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.DirectoryServices\System.DirectoryServices-net_4_5.csproj">\r
-      <Project>{EC4E43E7-63C0-4D64-8B7A-E00C097872A5}</Project>\r
-      <Name>System.DirectoryServices\System.DirectoryServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5.csproj">\r
-      <Project>{E6070FFA-2CBA-4C24-99C1-63A4F5052821}</Project>\r
-      <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryObjectNotFoundException.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryObjectNotFoundException.cs
new file mode 100644 (file)
index 0000000..11a796e
--- /dev/null
@@ -0,0 +1,82 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Runtime.Serialization;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [Serializable]
+       public class ActiveDirectoryObjectNotFoundException : Exception, ISerializable
+       {
+               [MonoTODO]
+               public ActiveDirectoryObjectNotFoundException (string message, Type type, string name) : base(message)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public ActiveDirectoryObjectNotFoundException (string message, Exception inner) : base(message, inner)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public ActiveDirectoryObjectNotFoundException (string message) : base(message)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public ActiveDirectoryObjectNotFoundException () : base("DSUnknownFailure")
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               protected ActiveDirectoryObjectNotFoundException (SerializationInfo info, StreamingContext context) : base(info, context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)]
+               [MonoTODO]
+               public override void GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public string Name {
+                       [MonoTODO]
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public Type Type {
+                       [MonoTODO]
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+       }
+}
index 0c18dadf88dde6d43525590b73ecb4f772a77605..acaf20cac11e7d6f21ba27ecd88aa28c7f419b8f 100644 (file)
@@ -40,6 +40,7 @@ System.DirectoryServices/SortDirection.cs
 System.DirectoryServices/SortOption.cs
 ../../build/common/MonoTODOAttribute.cs
 System.DirectoryServices.Design/DirectoryEntryConverter.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectoryObjectNotFoundException.cs
 System.DirectoryServices.ActiveDirectory/ActiveDirectoryOperationException.cs
 System.DirectoryServices.ActiveDirectory/ActiveDirectoryPartition.cs
 System.DirectoryServices.ActiveDirectory/ActiveDirectoryReplicationMetadata.cs
diff --git a/mcs/class/System.Drawing.Design/System.Drawing.Design-net_4_5.csproj b/mcs/class/System.Drawing.Design/System.Drawing.Design-net_4_5.csproj
deleted file mode 100644 (file)
index 67a17af..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DAEBD561-068A-4730-9F8C-98EC20DDEE78}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Drawing.Design</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Drawing.Design\BitmapEditor.cs" />\r
-    <Compile Include="System.Drawing.Design\ColorEditor.cs" />\r
-    <Compile Include="System.Drawing.Design\ContentAlignmentEditor.cs" />\r
-    <Compile Include="System.Drawing.Design\CursorEditor.cs" />\r
-    <Compile Include="System.Drawing.Design\FontEditor.cs" />\r
-    <Compile Include="System.Drawing.Design\FontNameEditor.cs" />\r
-    <Compile Include="System.Drawing.Design\IconEditor.cs" />\r
-    <Compile Include="System.Drawing.Design\ImageEditor.cs" />\r
-    <Compile Include="System.Drawing.Design\MetafileEditor.cs" />\r
-    <Compile Include="System.Drawing.Design\ToolboxItemContainer.cs" />\r
-    <Compile Include="System.Drawing.Design\ToolboxItemCreator.cs" />\r
-    <Compile Include="System.Drawing.Design\ToolboxService.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Drawing/System.Drawing-net_4_5.csproj b/mcs/class/System.Drawing/System.Drawing-net_4_5.csproj
deleted file mode 100644 (file)
index 4de6938..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Drawing</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Drawing.Design\CategoryNameCollection.cs" />\r
-    <Compile Include="System.Drawing.Design\IPropertyValueUIService.cs" />\r
-    <Compile Include="System.Drawing.Design\IToolboxItemProvider.cs" />\r
-    <Compile Include="System.Drawing.Design\IToolboxService.cs" />\r
-    <Compile Include="System.Drawing.Design\IToolboxUser.cs" />\r
-    <Compile Include="System.Drawing.Design\PaintValueEventArgs.cs" />\r
-    <Compile Include="System.Drawing.Design\PropertyValueItem.cs" />\r
-    <Compile Include="System.Drawing.Design\PropertyValueUIHandler.cs" />\r
-    <Compile Include="System.Drawing.Design\PropertyValueUIItemInvokeHandler.cs" />\r
-    <Compile Include="System.Drawing.Design\ToolboxComponentsCreatedEventArgs.cs" />\r
-    <Compile Include="System.Drawing.Design\ToolboxComponentsCreatedEventHandler.cs" />\r
-    <Compile Include="System.Drawing.Design\ToolboxComponentsCreatingEventArgs.cs" />\r
-    <Compile Include="System.Drawing.Design\ToolboxComponentsCreatingEventHandler.cs" />\r
-    <Compile Include="System.Drawing.Design\ToolboxItem.cs" />\r
-    <Compile Include="System.Drawing.Design\ToolboxItemCollection.cs" />\r
-    <Compile Include="System.Drawing.Design\ToolboxItemCreatorCallback.cs" />\r
-    <Compile Include="System.Drawing.Design\UITypeEditor.cs" />\r
-    <Compile Include="System.Drawing.Design\UITypeEditorEditStyle.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\AdjustableArrowCap.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\Blend.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\ColorBlend.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\CombineMode.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\CompostingMode.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\CompostingQuality.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\CoordinateSpace.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\CustomLineCap.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\DashCap.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\DashStyle.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\FillMode.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\FlushIntention.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\GraphicsContainer.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\GraphicsPath.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\GraphicsPathIterator.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\GraphicsState.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\HatchBrush.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\HatchStyle.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\InterpolationMode.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\LinearGradientBrush.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\LinearGradientMode.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\LineCap.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\LineJoin.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\Matrix.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\MatrixOrder.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\PathData.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\PathGradientBrush.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\PathPointType.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\PenAlignment.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\PenType.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\PixelOffsetMode.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\QualityMode.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\RegionData.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\SmoothingMode.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\WarpMode.cs" />\r
-    <Compile Include="System.Drawing.Drawing2D\WrapMode.cs" />\r
-    <Compile Include="System.Drawing.Imaging\BitmapData.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ColorAdjustType.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ColorChannelFlag.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ColorMap.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ColorMapType.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ColorMatrix.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ColorMatrixFlag.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ColorMode.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ColorPalette.cs" />\r
-    <Compile Include="System.Drawing.Imaging\EmfPlusRecordType.cs" />\r
-    <Compile Include="System.Drawing.Imaging\EmfType.cs" />\r
-    <Compile Include="System.Drawing.Imaging\Encoder.cs" />\r
-    <Compile Include="System.Drawing.Imaging\EncoderParameter.cs" />\r
-    <Compile Include="System.Drawing.Imaging\EncoderParameters.cs" />\r
-    <Compile Include="System.Drawing.Imaging\EncoderParameterValueType.cs" />\r
-    <Compile Include="System.Drawing.Imaging\EncoderValue.cs" />\r
-    <Compile Include="System.Drawing.Imaging\FrameDimension.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ImageAttributes.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ImageCodecFlags.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ImageCodecInfo.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ImageFlags.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ImageFormat.cs" />\r
-    <Compile Include="System.Drawing.Imaging\ImageLockMode.cs" />\r
-    <Compile Include="System.Drawing.Imaging\Metafile.cs" />\r
-    <Compile Include="System.Drawing.Imaging\MetafileFrameUnit.cs" />\r
-    <Compile Include="System.Drawing.Imaging\MetafileHeader.cs" />\r
-    <Compile Include="System.Drawing.Imaging\MetafileType.cs" />\r
-    <Compile Include="System.Drawing.Imaging\MetaHeader.cs" />\r
-    <Compile Include="System.Drawing.Imaging\PaletteFlags.cs" />\r
-    <Compile Include="System.Drawing.Imaging\PixelFormat.cs" />\r
-    <Compile Include="System.Drawing.Imaging\PlayRecordCallback.cs" />\r
-    <Compile Include="System.Drawing.Imaging\PropertyItem.cs" />\r
-    <Compile Include="System.Drawing.Imaging\WmfPlaceableFileHeader.cs" />\r
-    <Compile Include="System.Drawing.Printing\Duplex.cs" />\r
-    <Compile Include="System.Drawing.Printing\InvalidPrinterException.cs" />\r
-    <Compile Include="System.Drawing.Printing\Margins.cs" />\r
-    <Compile Include="System.Drawing.Printing\MarginsConverter.cs" />\r
-    <Compile Include="System.Drawing.Printing\PageSettings.cs" />\r
-    <Compile Include="System.Drawing.Printing\PaperKind.cs" />\r
-    <Compile Include="System.Drawing.Printing\PaperSize.cs" />\r
-    <Compile Include="System.Drawing.Printing\PaperSource.cs" />\r
-    <Compile Include="System.Drawing.Printing\PaperSourceKind.cs" />\r
-    <Compile Include="System.Drawing.Printing\PreviewPageInfo.cs" />\r
-    <Compile Include="System.Drawing.Printing\PreviewPrintController.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintAction.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintController.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintDocument.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrinterResolution.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrinterResolutionKind.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrinterSettings.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrinterUnit.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrinterUnitConvert.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintEventArgs.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintEventHandler.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintingPermission.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintingPermissionAttribute.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintingPermissionLevel.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintingServices.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintingServicesUnix.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintingServicesWin32.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintPageEventArgs.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintPageEventHandler.cs" />\r
-    <Compile Include="System.Drawing.Printing\PrintRange.cs" />\r
-    <Compile Include="System.Drawing.Printing\QueryPageSettingsEventArgs.cs" />\r
-    <Compile Include="System.Drawing.Printing\QueryPageSettingsEventHandler.cs" />\r
-    <Compile Include="System.Drawing.Printing\StandardPrintController.cs" />\r
-    <Compile Include="System.Drawing.Text\FontCollection.cs" />\r
-    <Compile Include="System.Drawing.Text\GenericFontFamilies.cs" />\r
-    <Compile Include="System.Drawing.Text\HotkeyPrefix.cs" />\r
-    <Compile Include="System.Drawing.Text\InstalledFontCollection.cs" />\r
-    <Compile Include="System.Drawing.Text\PrivateFontCollection.cs" />\r
-    <Compile Include="System.Drawing.Text\TextRenderingHint.cs" />\r
-    <Compile Include="System.Drawing\Bitmap.cs" />\r
-    <Compile Include="System.Drawing\Brush.cs" />\r
-    <Compile Include="System.Drawing\Brushes.cs" />\r
-    <Compile Include="System.Drawing\BufferedGraphics.cs" />\r
-    <Compile Include="System.Drawing\BufferedGraphicsContext.cs" />\r
-    <Compile Include="System.Drawing\BufferedGraphicsManager.cs" />\r
-    <Compile Include="System.Drawing\CharacterRange.cs" />\r
-    <Compile Include="System.Drawing\Color.cs" />\r
-    <Compile Include="System.Drawing\ColorConverter.cs" />\r
-    <Compile Include="System.Drawing\ColorTranslator.cs" />\r
-    <Compile Include="System.Drawing\ComIStreamMarshaler.cs" />\r
-    <Compile Include="System.Drawing\ComIStreamWrapper.cs" />\r
-    <Compile Include="System.Drawing\ContentAlignment.cs" />\r
-    <Compile Include="System.Drawing\CopyPixelOperation.cs" />\r
-    <Compile Include="System.Drawing\Font.cs" />\r
-    <Compile Include="System.Drawing\FontConverter.cs" />\r
-    <Compile Include="System.Drawing\FontFamily.cs" />\r
-    <Compile Include="System.Drawing\FontStyle.cs" />\r
-    <Compile Include="System.Drawing\gdipEnums.cs" />\r
-    <Compile Include="System.Drawing\gdipFunctions.cs" />\r
-    <Compile Include="System.Drawing\gdipStructs.cs" />\r
-    <Compile Include="System.Drawing\Graphics.cs" />\r
-    <Compile Include="System.Drawing\GraphicsUnit.cs" />\r
-    <Compile Include="System.Drawing\Icon.cs" />\r
-    <Compile Include="System.Drawing\IconConverter.cs" />\r
-    <Compile Include="System.Drawing\IDeviceContext.cs" />\r
-    <Compile Include="System.Drawing\Image.cs" />\r
-    <Compile Include="System.Drawing\ImageAnimator.cs" />\r
-    <Compile Include="System.Drawing\ImageConverter.cs" />\r
-    <Compile Include="System.Drawing\ImageFormatConverter.cs" />\r
-    <Compile Include="System.Drawing\KnownColor.cs" />\r
-    <Compile Include="System.Drawing\KnownColors.cs" />\r
-    <Compile Include="System.Drawing\macFunctions.cs" />\r
-    <Compile Include="System.Drawing\Pen.cs" />\r
-    <Compile Include="System.Drawing\Pens.cs" />\r
-    <Compile Include="System.Drawing\Point.cs" />\r
-    <Compile Include="System.Drawing\PointConverter.cs" />\r
-    <Compile Include="System.Drawing\PointF.cs" />\r
-    <Compile Include="System.Drawing\Rectangle.cs" />\r
-    <Compile Include="System.Drawing\RectangleConverter.cs" />\r
-    <Compile Include="System.Drawing\RectangleF.cs" />\r
-    <Compile Include="System.Drawing\Region.cs" />\r
-    <Compile Include="System.Drawing\RotateFlipType.cs" />\r
-    <Compile Include="System.Drawing\Size.cs" />\r
-    <Compile Include="System.Drawing\SizeConverter.cs" />\r
-    <Compile Include="System.Drawing\SizeF.cs" />\r
-    <Compile Include="System.Drawing\SizeFConverter.cs" />\r
-    <Compile Include="System.Drawing\SolidBrush.cs" />\r
-    <Compile Include="System.Drawing\SRDescriptionAttribute.cs" />\r
-    <Compile Include="System.Drawing\StringAligment.cs" />\r
-    <Compile Include="System.Drawing\StringDigitSubstitute.cs" />\r
-    <Compile Include="System.Drawing\StringFormat.cs" />\r
-    <Compile Include="System.Drawing\StringFormatFlags.cs" />\r
-    <Compile Include="System.Drawing\StringTrimming.cs" />\r
-    <Compile Include="System.Drawing\StringUnit.cs" />\r
-    <Compile Include="System.Drawing\SystemBrushes.cs" />\r
-    <Compile Include="System.Drawing\SystemColors.cs" />\r
-    <Compile Include="System.Drawing\SystemFonts.cs" />\r
-    <Compile Include="System.Drawing\SystemIcons.cs" />\r
-    <Compile Include="System.Drawing\SystemPens.cs" />\r
-    <Compile Include="System.Drawing\TextureBrush.cs" />\r
-    <Compile Include="System.Drawing\ToolboxBitmapAttribute.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Assembly/Mono.ico">\r
-      <LogicalName>Mono.ico</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Assembly/Information.ico">\r
-      <LogicalName>Information.ico</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Assembly/Error.ico">\r
-      <LogicalName>Error.ico</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Assembly/Warning.ico">\r
-      <LogicalName>Warning.ico</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Assembly/Question.ico">\r
-      <LogicalName>Question.ico</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Assembly/Shield.ico">\r
-      <LogicalName>Shield.ico</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Drawing/System.Drawing-tests-net_4_5.csproj b/mcs/class/System.Drawing/System.Drawing-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 6b5bd8e..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6E248AA8-76CF-4FFE-859D-F979E3DE810B}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,169,1595</NoWarn>\r
-    <OutputPath>bin\Debug\System.Drawing-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Drawing_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,169,1595</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;TEST</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,169,1595</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;TEST</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="System.Drawing\gdipEnums.cs" />\r
-    <Compile Include="System.Drawing\gdipFunctions.cs" />\r
-    <Compile Include="System.Drawing\gdipStructs.cs" />\r
-    <Compile Include="Test\HostIgnoreList.cs" />\r
-    <Compile Include="Test\System.Drawing.Design\CategoryNameCollectionCas.cs" />\r
-    <Compile Include="Test\System.Drawing.Design\PaintValueEventArgsCas.cs" />\r
-    <Compile Include="Test\System.Drawing.Design\PropertyValueUIItemCas.cs" />\r
-    <Compile Include="Test\System.Drawing.Design\TestToolboxItem.cs" />\r
-    <Compile Include="Test\System.Drawing.Design\ToolboxComponentsCreatedEventArgsCas.cs" />\r
-    <Compile Include="Test\System.Drawing.Design\ToolboxComponentsCreatingEventArgsCas.cs" />\r
-    <Compile Include="Test\System.Drawing.Design\ToolboxItemCas.cs" />\r
-    <Compile Include="Test\System.Drawing.Design\ToolboxItemCollectionCas.cs" />\r
-    <Compile Include="Test\System.Drawing.Design\UITypeEditorCas.cs" />\r
-    <Compile Include="Test\System.Drawing.Design\UITypeEditorTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Drawing2D\GraphicsPathTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Drawing2D\LinearGradientBrushTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Drawing2D\PathDataTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Drawing2D\PathGradientBrushTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Drawing2D\TestBlend.cs" />\r
-    <Compile Include="Test\System.Drawing.Drawing2D\TestColorBlend.cs" />\r
-    <Compile Include="Test\System.Drawing.Drawing2D\TestHatchBrush.cs" />\r
-    <Compile Include="Test\System.Drawing.Drawing2D\TestMatrix.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\EmfPlusRecordTypeTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\FrameDimensionTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\GifCodecTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\IconCodecTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\MetafileTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\MetaHeaderTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\PngCodecTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\TestBmpCodec.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\TestColorMatrix.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\TestImageAttributes.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\TestImageCodecInfo.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\TestImageFormat.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\TestJpegCodec.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\TiffCodecTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Imaging\WmfPlaceableFileHeaderTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Printing\MarginsTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Printing\PageSettingsTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Printing\PageSourceTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Printing\PaperSizeTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Printing\PrinterUnitConvertTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Printing\PrintingPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Printing\PrintingPermissionTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Printing\PrintingServicesUnixTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Text\InstalledFontCollectionTest.cs" />\r
-    <Compile Include="Test\System.Drawing.Text\PrivateFontCollectionCas.cs" />\r
-    <Compile Include="Test\System.Drawing.Text\PrivateFontCollectionTest.cs" />\r
-    <Compile Include="Test\System.Drawing\BitmapCas.cs" />\r
-    <Compile Include="Test\System.Drawing\ColorConverter.cs" />\r
-    <Compile Include="Test\System.Drawing\ColorTranslator.cs" />\r
-    <Compile Include="Test\System.Drawing\FontFamilyTest.cs" />\r
-    <Compile Include="Test\System.Drawing\GDIPlusTest.cs" />\r
-    <Compile Include="Test\System.Drawing\GraphicsCas.cs" />\r
-    <Compile Include="Test\System.Drawing\PenTest.cs" />\r
-    <Compile Include="Test\System.Drawing\RegionCas.cs" />\r
-    <Compile Include="Test\System.Drawing\RegionDataTest.cs" />\r
-    <Compile Include="Test\System.Drawing\RegionNonRectTest.cs" />\r
-    <Compile Include="Test\System.Drawing\SolidBrushTest.cs" />\r
-    <Compile Include="Test\System.Drawing\SystemFontsTest.cs" />\r
-    <Compile Include="Test\System.Drawing\SystemIconsTest.cs" />\r
-    <Compile Include="Test\System.Drawing\TestBitmap.cs" />\r
-    <Compile Include="Test\System.Drawing\TestBrushes.cs" />\r
-    <Compile Include="Test\System.Drawing\TestColor.cs" />\r
-    <Compile Include="Test\System.Drawing\TestFont.cs" />\r
-    <Compile Include="Test\System.Drawing\TestFontConverter.cs" />\r
-    <Compile Include="Test\System.Drawing\TestGraphics.cs" />\r
-    <Compile Include="Test\System.Drawing\TestIcon.cs" />\r
-    <Compile Include="Test\System.Drawing\TestIconConverter.cs" />\r
-    <Compile Include="Test\System.Drawing\TestImage.cs" />\r
-    <Compile Include="Test\System.Drawing\TestImageConverter.cs" />\r
-    <Compile Include="Test\System.Drawing\TestImageFormatConverter.cs" />\r
-    <Compile Include="Test\System.Drawing\TestPens.cs" />\r
-    <Compile Include="Test\System.Drawing\TestPoint.cs" />\r
-    <Compile Include="Test\System.Drawing\TestPointConverter.cs" />\r
-    <Compile Include="Test\System.Drawing\TestPointF.cs" />\r
-    <Compile Include="Test\System.Drawing\TestRectangle.cs" />\r
-    <Compile Include="Test\System.Drawing\TestRectangleConverter.cs" />\r
-    <Compile Include="Test\System.Drawing\TestRectangleF.cs" />\r
-    <Compile Include="Test\System.Drawing\TestRegion.cs" />\r
-    <Compile Include="Test\System.Drawing\TestSize.cs" />\r
-    <Compile Include="Test\System.Drawing\TestSizeConverter.cs" />\r
-    <Compile Include="Test\System.Drawing\TestSizeF.cs" />\r
-    <Compile Include="Test\System.Drawing\TestSizeFConverter.cs" />\r
-    <Compile Include="Test\System.Drawing\TestStringFormat.cs" />\r
-    <Compile Include="Test\System.Drawing\TestSystemBrushes.cs" />\r
-    <Compile Include="Test\System.Drawing\TestSystemPens.cs" />\r
-    <Compile Include="Test\System.Drawing\TextureBrushTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{2FDBA71E-A6EC-4247-B0BD-BF7A618C0747}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Assembly/Mono.ico">\r
-      <LogicalName>Mono.ico</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Assembly/Information.ico">\r
-      <LogicalName>Information.ico</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Assembly/Error.ico">\r
-      <LogicalName>Error.ico</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Assembly/Warning.ico">\r
-      <LogicalName>Warning.ico</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Assembly/Question.ico">\r
-      <LogicalName>Question.ico</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Assembly/Shield.ico">\r
-      <LogicalName>Shield.ico</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/resources/indexed.png">\r
-      <LogicalName>indexed.png</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index df8cc18a6f8f3780f7ae21a84189d28af0bee6b5..6e72b0ecb69a28d608f239c4db1f2975cb8405be 100644 (file)
@@ -38,8 +38,10 @@ using System.Runtime.InteropServices;
 
 namespace System.Drawing 
 {
+#if !MONOTOUCH && !MONOMAC
        [TypeConverter(typeof(ColorConverter))]
        [Editor ("System.Drawing.Design.ColorEditor, " + Consts.AssemblySystem_Drawing_Design, typeof (System.Drawing.Design.UITypeEditor))]
+#endif
        [Serializable]
        public struct Color {
 
index 27e5959c353e359dce985ef0d204f47252b4278b..c17eca4d15f0463a03a572db088d6d978159017e 100644 (file)
@@ -42,12 +42,11 @@ namespace System.Drawing {
 
                public static Color FromHtml (string htmlColor)
                {
-                       if ((htmlColor == null) || (htmlColor.Length == 0))
-                               return Color.Empty;
+                       if (string.IsNullOrEmpty (htmlColor)) return Color.Empty;
 
                        switch (htmlColor.ToLowerInvariant ()) {
                        case "buttonface":
-                       case "threedface":              
+                       case "threedface":
                                return SystemColors.Control;
                        case "buttonhighlight":
                        case "threedlightshadow":
@@ -70,7 +69,13 @@ namespace System.Drawing {
                        case "lightgrey":
                                return Color.LightGray;
                        }
-                       
+
+                       if (htmlColor[0] == '#' && htmlColor.Length == 4)
+                       {
+                               char r = htmlColor[1], g = htmlColor[2], b = htmlColor[3];
+                               htmlColor = new string ( new char [] { '#', r, r, g, g, b, b } );
+                       }
+
                        TypeConverter converter = TypeDescriptor.GetConverter (typeof (Color));
                        return (Color) converter.ConvertFromString (htmlColor);
                }
index 46fda2a42439b0115c4ba7c158cd637dd27953ff..0440d8e30599a99504dc91416f1abaa2a5613aba 100644 (file)
@@ -210,6 +210,7 @@ namespace System.Drawing {
                        0xFF316AC5,     /* 174 - MenuHighlight */
                };
 
+#if !MONOTOUCH && !MONOMAC
                static KnownColors ()
                {
                        if (GDIPlus.RunningOnWindows ()) {
@@ -264,6 +265,7 @@ namespace System.Drawing {
                        ArgbValues [(int)KnownColor.MenuBar] = GetSysColor (GetSysColorIndex.COLOR_MENUBAR);
                        ArgbValues [(int)KnownColor.MenuHighlight] = GetSysColor (GetSysColorIndex.COLOR_MENUHIGHLIGHT);
                }
+#endif
 
                public static Color FromKnownColor (KnownColor kc)
                {
index 4737c4f1d455d97c26b28ffa11dc82468b0de1c4..88a8390b564906d2f34fc3785f8393481fd9dbc0 100644 (file)
@@ -40,7 +40,9 @@ namespace System.Drawing
 {
        [Serializable]  
        [ComVisible (true)]
+#if !MONOTOUCH && !MONOMAC
        [TypeConverter (typeof (PointConverter))]
+#endif
        public struct Point
        {
                // Private x and y coordinate fields.
index c8b3f6c7282d51da8ae314bcbc7a2230b7002888..c2ffbc80e5e647b589ed5aec55c96c1fb0703439 100644 (file)
@@ -39,7 +39,9 @@ namespace System.Drawing
 {
        [Serializable]
        [ComVisible (true)]
+#if !MONOTOUCH && !MONOMAC
        [TypeConverter (typeof (RectangleConverter))]
+#endif
        public struct Rectangle
        {
                private int x, y, width, height;
index 6e78072aa7dbb0ed396a83d4b19c0c9cc2dd0802..be8fda0ea8ef0b73bf815febb8e8d4e025eab3aa 100644 (file)
@@ -40,7 +40,9 @@ namespace System.Drawing
 {
        [Serializable]
        [ComVisible (true)]
+#if !MONOTOUCH && !MONOMAC
        [TypeConverter (typeof (SizeConverter))]
+#endif
        public struct Size
        { 
                
index 4c1c87f29aad44e4bed1beefb00a3ae833418196..38714d1c9968f30ae18e363a4c811a82dc38de99 100644 (file)
@@ -40,7 +40,9 @@ namespace System.Drawing
 {
        [Serializable]
        [ComVisible (true)]
+#if !MONOTOUCH && !MONOMAC
        [TypeConverter (typeof (SizeFConverter))]
+#endif
        public struct SizeF
        {
                // Private height and width fields.
index ffd4e836938236fe4b3a20304814781d109dc945..27ee0f55305493680b0b4796047f2bdd5a171aaf 100644 (file)
@@ -71,6 +71,8 @@ namespace MonoTests.System.Drawing {
                        Assert.AreEqual (0, ColorTranslator.FromHtml ("#0").ToArgb (), "#0");
                        Assert.AreEqual (1, ColorTranslator.FromHtml ("#1").ToArgb (), "#1");
                        Assert.AreEqual (255, ColorTranslator.FromHtml ("#FF").ToArgb (), "#FF");
+                       Assert.AreEqual (-15654349, ColorTranslator.FromHtml ("#123").ToArgb (), "#123");
+                       Assert.AreEqual (-1, ColorTranslator.FromHtml ("#FFF").ToArgb (), "#FFF");
                        Assert.AreEqual (65535, ColorTranslator.FromHtml ("#FFFF").ToArgb (), "#FFFF");
                        Assert.AreEqual (-15584170, ColorTranslator.FromHtml ("#123456").ToArgb (), "#123456");
                        Assert.AreEqual (-1, ColorTranslator.FromHtml ("#FFFFFF").ToArgb (), "#FFFFFF");
diff --git a/mcs/class/System.Dynamic/System.Dynamic-net_4_5.csproj b/mcs/class/System.Dynamic/System.Dynamic-net_4_5.csproj
deleted file mode 100644 (file)
index 45682c2..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5F5C22E0-4AD5-4F78-94A7-038F823E1E3D}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,414,169</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Dynamic</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,414,169</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;CODEPLEX_40</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,414,169</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;CODEPLEX_40</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\Assert.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\BoolArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\BoundDispEvent.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\CollectionExtensions.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComBinderHelpers.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComDispIds.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComEventDesc.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComEventSink.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComEventSinkProxy.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComEventSinksContainer.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComFallbackMetaObject.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComHresults.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComInterop.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComInvokeAction.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComInvokeBinder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComMetaObject.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComMethodDesc.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComObject.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComRuntimeHelpers.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComTypeClassDesc.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComTypeDesc.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComTypeEnumDesc.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ComTypeLibDesc.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ContractUtils.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ConversionArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ConvertArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ConvertibleArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\CurrencyArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\DateTimeArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\DispatchArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\DispCallable.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\DispCallableMetaObject.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ErrorArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\Errors.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\ExcepInfo.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\Helpers.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\IDispatchComObject.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\IDispatchMetaObject.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\NullArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\SimpleArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\SplatCallSite.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\StringArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\TypeUtils.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\UnknownArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\VarEnumSelector.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\Variant.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\VariantArgBuilder.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\VariantArray.cs" />\r
-    <Compile Include="..\dlr\Runtime\Microsoft.Dynamic\VariantBuilder.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj b/mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj
deleted file mode 100644 (file)
index df9e33d..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{773D8BA7-9A88-49AC-81C9-740436270588}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,168,162</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.EnterpriseServices</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,168,162</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,168,162</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.EnterpriseServices.CompensatingResourceManager\ApplicationCrmEnabledAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices.CompensatingResourceManager\Clerk.cs" />\r
-    <Compile Include="System.EnterpriseServices.CompensatingResourceManager\ClerkInfo.cs" />\r
-    <Compile Include="System.EnterpriseServices.CompensatingResourceManager\ClerkMonitor.cs" />\r
-    <Compile Include="System.EnterpriseServices.CompensatingResourceManager\Compensator.cs" />\r
-    <Compile Include="System.EnterpriseServices.CompensatingResourceManager\CompensatorOptions.cs" />\r
-    <Compile Include="System.EnterpriseServices.CompensatingResourceManager\LogRecord.cs" />\r
-    <Compile Include="System.EnterpriseServices.CompensatingResourceManager\LogRecordFlags.cs" />\r
-    <Compile Include="System.EnterpriseServices.CompensatingResourceManager\TransactionState.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\AppDomainHelper.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\AssemblyLocator.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\ClientRemotingConfig.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\ClrObjectFactory.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\ComManagedImportUtil.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\ComSoapPublishError.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\GenerateMetadata.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\IClrObjectFactory.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\IComManagedImportUtil.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\IComSoapIISVRoot.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\IComSoapMetadata.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\IComSoapPublisher.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\IISVirtualRoot.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\IServerWebConfig.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\ISoapClientImport.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\ISoapServerTlb.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\ISoapServerVRoot.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\ISoapUtility.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\Publish.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\ServerWebConfig.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\SoapClientImport.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\SoapServerTlb.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\SoapServerVRoot.cs" />\r
-    <Compile Include="System.EnterpriseServices.Internal\SoapUtility.cs" />\r
-    <Compile Include="System.EnterpriseServices\AccessChecksLevelOption.cs" />\r
-    <Compile Include="System.EnterpriseServices\ActivationOption.cs" />\r
-    <Compile Include="System.EnterpriseServices\Activity.cs" />\r
-    <Compile Include="System.EnterpriseServices\ApplicationAccessControlAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\ApplicationActivationAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\ApplicationIDAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\ApplicationNameAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\ApplicationQueuingAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\AuthenticationOption.cs" />\r
-    <Compile Include="System.EnterpriseServices\AutoCompleteAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\BindingOption.cs" />\r
-    <Compile Include="System.EnterpriseServices\BOID.cs" />\r
-    <Compile Include="System.EnterpriseServices\BYOT.cs" />\r
-    <Compile Include="System.EnterpriseServices\ComponentAccessControlAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\COMTIIntrinsicsAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\ConstructionEnabledAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\ContextUtil.cs" />\r
-    <Compile Include="System.EnterpriseServices\DescriptionAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\EventClassAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\EventTrackingEnabledAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\ExceptionClassAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\IAsyncErrorNotify.cs" />\r
-    <Compile Include="System.EnterpriseServices\IConfigurationAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\IISIntrinsicsAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\ImpersonationLevelOption.cs" />\r
-    <Compile Include="System.EnterpriseServices\InheritanceOption.cs" />\r
-    <Compile Include="System.EnterpriseServices\InstallationFlags.cs" />\r
-    <Compile Include="System.EnterpriseServices\InterfaceQueuingAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\IPlaybackControl.cs" />\r
-    <Compile Include="System.EnterpriseServices\IProcessInitControl.cs" />\r
-    <Compile Include="System.EnterpriseServices\IProcessInitializer.cs" />\r
-    <Compile Include="System.EnterpriseServices\IRegistrationHelper.cs" />\r
-    <Compile Include="System.EnterpriseServices\IRemoteDispatch.cs" />\r
-    <Compile Include="System.EnterpriseServices\ISecurityCallContext.cs" />\r
-    <Compile Include="System.EnterpriseServices\ISecurityCallersColl.cs" />\r
-    <Compile Include="System.EnterpriseServices\ISecurityIdentityColl.cs" />\r
-    <Compile Include="System.EnterpriseServices\IServiceCall.cs" />\r
-    <Compile Include="System.EnterpriseServices\IServicedComponentInfo.cs" />\r
-    <Compile Include="System.EnterpriseServices\ISharedProperty.cs" />\r
-    <Compile Include="System.EnterpriseServices\ISharedPropertyGroup.cs" />\r
-    <Compile Include="System.EnterpriseServices\ITransaction.cs" />\r
-    <Compile Include="System.EnterpriseServices\JustInTimeActivationAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\LoadBalancingSupportedAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\MustRunInClientContextAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\ObjectPoolingAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\PartitionOption.cs" />\r
-    <Compile Include="System.EnterpriseServices\PrivateComponentAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\PropertyLockMode.cs" />\r
-    <Compile Include="System.EnterpriseServices\PropertyReleaseMode.cs" />\r
-    <Compile Include="System.EnterpriseServices\RegistrationConfig.cs" />\r
-    <Compile Include="System.EnterpriseServices\RegistrationErrorInfo.cs" />\r
-    <Compile Include="System.EnterpriseServices\RegistrationException.cs" />\r
-    <Compile Include="System.EnterpriseServices\RegistrationHelper.cs" />\r
-    <Compile Include="System.EnterpriseServices\RegistrationHelperTx.cs" />\r
-    <Compile Include="System.EnterpriseServices\ResourcePool.cs" />\r
-    <Compile Include="System.EnterpriseServices\SecureMethodAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\SecurityCallContext.cs" />\r
-    <Compile Include="System.EnterpriseServices\SecurityCallers.cs" />\r
-    <Compile Include="System.EnterpriseServices\SecurityIdentity.cs" />\r
-    <Compile Include="System.EnterpriseServices\SecurityRoleAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\ServiceConfig.cs" />\r
-    <Compile Include="System.EnterpriseServices\ServicedComponent.cs" />\r
-    <Compile Include="System.EnterpriseServices\ServicedComponentException.cs" />\r
-    <Compile Include="System.EnterpriseServices\ServiceDomain.cs" />\r
-    <Compile Include="System.EnterpriseServices\SharedProperty.cs" />\r
-    <Compile Include="System.EnterpriseServices\SharedPropertyGroup.cs" />\r
-    <Compile Include="System.EnterpriseServices\SharedPropertyGroupManager.cs" />\r
-    <Compile Include="System.EnterpriseServices\SxsOption.cs" />\r
-    <Compile Include="System.EnterpriseServices\SynchronizationAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\SynchronizationOption.cs" />\r
-    <Compile Include="System.EnterpriseServices\ThreadPoolOption.cs" />\r
-    <Compile Include="System.EnterpriseServices\TransactionAttribute.cs" />\r
-    <Compile Include="System.EnterpriseServices\TransactionIsolationLevel.cs" />\r
-    <Compile Include="System.EnterpriseServices\TransactionOption.cs" />\r
-    <Compile Include="System.EnterpriseServices\TransactionStatus.cs" />\r
-    <Compile Include="System.EnterpriseServices\TransactionVote.cs" />\r
-    <Compile Include="System.EnterpriseServices\XACTTRANSINFO.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
-      <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.IO.Compression.FileSystem/System.IO.Compression.FileSystem-net_4_5.csproj b/mcs/class/System.IO.Compression.FileSystem/System.IO.Compression.FileSystem-net_4_5.csproj
deleted file mode 100644 (file)
index 6498849..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4124933B-9DE6-4D76-8ABB-AEAE814CFB26}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.IO.Compression.FileSystem</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="ZipFile.cs" />\r
-    <Compile Include="ZipFileExtensions.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.IO.Compression/System.IO.Compression-net_4_5.csproj">\r
-      <Project>{BDF04E30-60D9-4279-A1DF-3291328A5AFD}</Project>\r
-      <Name>System.IO.Compression-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.IO.Compression/System.IO.Compression-net_4_5.csproj b/mcs/class/System.IO.Compression/System.IO.Compression-net_4_5.csproj
deleted file mode 100644 (file)
index 20e993a..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BDF04E30-60D9-4279-A1DF-3291328A5AFD}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.IO.Compression</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="SharpCompress\Archive\AbstractArchive.cs" />\r
-    <Compile Include="SharpCompress\Archive\AbstractWritableArchive.cs" />\r
-    <Compile Include="SharpCompress\Archive\AbstractWritableArchive.Extensions.cs" />\r
-    <Compile Include="SharpCompress\Archive\ArchiveFactory.cs" />\r
-    <Compile Include="SharpCompress\Archive\IArchive.cs" />\r
-    <Compile Include="SharpCompress\Archive\IArchive.Extensions.cs" />\r
-    <Compile Include="SharpCompress\Archive\IArchiveEntry.cs" />\r
-    <Compile Include="SharpCompress\Archive\IArchiveEntry.Extensions.cs" />\r
-    <Compile Include="SharpCompress\Archive\IArchiveExtractionListener.cs" />\r
-    <Compile Include="SharpCompress\Archive\IWritableArchiveEntry.cs" />\r
-    <Compile Include="SharpCompress\Archive\Zip\ZipArchive.cs" />\r
-    <Compile Include="SharpCompress\Archive\Zip\ZipArchiveEntry.cs" />\r
-    <Compile Include="SharpCompress\Archive\Zip\ZipWritableArchiveEntry.cs" />\r
-    <Compile Include="SharpCompress\Common\ArchiveEncoding.cs" />\r
-    <Compile Include="SharpCompress\Common\ArchiveException.cs" />\r
-    <Compile Include="SharpCompress\Common\ArchiveExtractionEventArgs.cs" />\r
-    <Compile Include="SharpCompress\Common\ArchiveType.cs" />\r
-    <Compile Include="SharpCompress\Common\CompressedBytesReadEventArgs.cs" />\r
-    <Compile Include="SharpCompress\Common\CompressionInfo.cs" />\r
-    <Compile Include="SharpCompress\Common\CompressionType.cs" />\r
-    <Compile Include="SharpCompress\Common\CryptographicException.cs" />\r
-    <Compile Include="SharpCompress\Common\Entry.cs" />\r
-    <Compile Include="SharpCompress\Common\EntryStream.cs" />\r
-    <Compile Include="SharpCompress\Common\ExtractionException.cs" />\r
-    <Compile Include="SharpCompress\Common\ExtractOptions.cs" />\r
-    <Compile Include="SharpCompress\Common\FilePart.cs" />\r
-    <Compile Include="SharpCompress\Common\FilePartExtractionBeginEventArgs.cs" />\r
-    <Compile Include="SharpCompress\Common\FlagUtility.cs" />\r
-    <Compile Include="SharpCompress\Common\IEntry.cs" />\r
-    <Compile Include="SharpCompress\Common\IExtractionListener.cs" />\r
-    <Compile Include="SharpCompress\Common\IncompleteArchiveException.cs" />\r
-    <Compile Include="SharpCompress\Common\InvalidFormatException.cs" />\r
-    <Compile Include="SharpCompress\Common\IVolume.cs" />\r
-    <Compile Include="SharpCompress\Common\MultipartStreamRequiredException.cs" />\r
-    <Compile Include="SharpCompress\Common\MultiVolumeExtractionException.cs" />\r
-    <Compile Include="SharpCompress\Common\Options.cs" />\r
-    <Compile Include="SharpCompress\Common\PasswordProtectedException.cs" />\r
-    <Compile Include="SharpCompress\Common\Volume.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\Headers\DirectoryEndHeader.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\Headers\DirectoryEntryHeader.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\Headers\HeaderFlags.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\Headers\IgnoreHeader.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\Headers\LocalEntryHeader.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\Headers\SplitHeader.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\Headers\ZipFileEntry..cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\Headers\ZipHeader.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\Headers\ZipHeaderType.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\PkwareTraditionalCryptoStream.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\PkwareTraditionalEncryptionData.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\SeekableZipFilePart.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\SeekableZipHeaderFactory.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\StreamingZipFilePart.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\StreamingZipHeaderFactory.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\WinzipAesCryptoStream.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\WinzipAesEncryptionData.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\WinzipAesKeySize.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\ZipCompressionMethod.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\ZipEntry.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\ZipFilePart.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\ZipHeaderFactory.cs" />\r
-    <Compile Include="SharpCompress\Common\Zip\ZipVolume.cs" />\r
-    <Compile Include="SharpCompress\Compressor\CompressionMode.cs" />\r
-    <Compile Include="SharpCompress\Compressor\Deflate\CRC32.cs" />\r
-    <Compile Include="SharpCompress\Compressor\Deflate\ZlibBase.cs" />\r
-    <Compile Include="SharpCompress\EnumExtensions.cs" />\r
-    <Compile Include="SharpCompress\IO\AppendingStream.cs" />\r
-    <Compile Include="SharpCompress\IO\CountingWritableSubStream.cs" />\r
-    <Compile Include="SharpCompress\IO\ListeningStream.cs" />\r
-    <Compile Include="SharpCompress\IO\MarkingBinaryReader.cs" />\r
-    <Compile Include="SharpCompress\IO\NonDisposingStream.cs" />\r
-    <Compile Include="SharpCompress\IO\ReadOnlySubStream.cs" />\r
-    <Compile Include="SharpCompress\IO\RewindableStream.cs" />\r
-    <Compile Include="SharpCompress\IO\StreamingMode.cs" />\r
-    <Compile Include="SharpCompress\LazyReadOnlyCollection.cs" />\r
-    <Compile Include="SharpCompress\Reader\AbstractReader.cs" />\r
-    <Compile Include="SharpCompress\Reader\IReader.cs" />\r
-    <Compile Include="SharpCompress\Reader\IReader.Extensions.cs" />\r
-    <Compile Include="SharpCompress\Reader\ReaderFactory.cs" />\r
-    <Compile Include="SharpCompress\Reader\Zip\ZipReader.cs" />\r
-    <Compile Include="SharpCompress\ReadOnlyCollection.cs" />\r
-    <Compile Include="SharpCompress\Utility.cs" />\r
-    <Compile Include="SharpCompress\Writer\AbstractWriter.cs" />\r
-    <Compile Include="SharpCompress\Writer\IWriter.cs" />\r
-    <Compile Include="SharpCompress\Writer\IWriter.Extensions.cs" />\r
-    <Compile Include="SharpCompress\Writer\WriterFactory.cs" />\r
-    <Compile Include="SharpCompress\Writer\Zip\ZipCentralDirectoryEntry.cs" />\r
-    <Compile Include="SharpCompress\Writer\Zip\ZipWriter.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r
-    <Compile Include="ZipArchive.cs" />\r
-    <Compile Include="ZipArchiveEntry.cs" />\r
-    <Compile Include="ZipArchiveMode.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj b/mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj
deleted file mode 100644 (file)
index d106a85..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AB4F77BB-4340-4A79-9B66-EF5B4221E1F2}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.IdentityModel.Selectors</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\CardSpaceException.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\CardSpacePolicyElement.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\CardSpaceSelector.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\IdentityValidationException.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\PolicyValidationException.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\ServiceBusyException.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\ServiceNotStartedException.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\StsCommunicationException.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\UnsupportedPolicyOptionsException.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\UntrustedRecipientException.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\UserCancellationException.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Security/System.Security-net_4_5.csproj">\r
-      <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.IdentityModel/System.IdentityModel-net_4_5.csproj">\r
-      <Project>{F056C062-E467-4989-9366-440E8CD23C0C}</Project>\r
-      <Name>System.IdentityModel-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.IdentityModel/System.IdentityModel-net_4_5.csproj b/mcs/class/System.IdentityModel/System.IdentityModel-net_4_5.csproj
deleted file mode 100644 (file)
index 5a14255..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F056C062-E467-4989-9366-440E8CD23C0C}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.IdentityModel</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.IdentityModel.Claims\Claim.cs" />\r
-    <Compile Include="System.IdentityModel.Claims\ClaimSet.cs" />\r
-    <Compile Include="System.IdentityModel.Claims\ClaimTypes.cs" />\r
-    <Compile Include="System.IdentityModel.Claims\DefaultClaimSet.cs" />\r
-    <Compile Include="System.IdentityModel.Claims\Rights.cs" />\r
-    <Compile Include="System.IdentityModel.Claims\WindowsClaimSet.cs" />\r
-    <Compile Include="System.IdentityModel.Claims\X509CertificateClaimSet.cs" />\r
-    <Compile Include="System.IdentityModel.Configuration\ICustomIdentityConfiguration.cs" />\r
-    <Compile Include="System.IdentityModel.Configuration\IdentityModelCaches.cs" />\r
-    <Compile Include="System.IdentityModel.Policy\AuthorizationContext.cs" />\r
-    <Compile Include="System.IdentityModel.Policy\EvaluationContext.cs" />\r
-    <Compile Include="System.IdentityModel.Policy\IAuthorizationComponent.cs" />\r
-    <Compile Include="System.IdentityModel.Policy\IAuthorizationPolicy.cs" />\r
-    <Compile Include="System.IdentityModel.Protocols\WSTrust\BinaryExchange.cs" />\r
-    <Compile Include="System.IdentityModel.Protocols\WSTrust\EndpointReference.cs" />\r
-    <Compile Include="System.IdentityModel.Protocols\WSTrust\Entropy.cs" />\r
-    <Compile Include="System.IdentityModel.Protocols\WSTrust\Lifetime.cs" />\r
-    <Compile Include="System.IdentityModel.Protocols\WSTrust\ProtectedKey.cs" />\r
-    <Compile Include="System.IdentityModel.Protocols\WSTrust\RequestedProofToken.cs" />\r
-    <Compile Include="System.IdentityModel.Protocols\WSTrust\RequestedSecurityToken.cs" />\r
-    <Compile Include="System.IdentityModel.Protocols\WSTrust\RequestSecurityTokenResponse.cs" />\r
-    <Compile Include="System.IdentityModel.Protocols\WSTrust\Status.cs" />\r
-    <Compile Include="System.IdentityModel.Protocols\WSTrust\UseKey.cs" />\r
-    <Compile Include="System.IdentityModel.Protocols\WSTrust\WSTrustMessage.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\AudienceUriMode.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\CustomUserNameSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\KerberosSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\KerberosSecurityTokenProvider.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\RsaSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\SamlSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\SecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\SecurityTokenManager.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\SecurityTokenProvider.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\SecurityTokenRequirement.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\SecurityTokenResolver.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\SecurityTokenSerializer.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\SecurityTokenVersion.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\SystemIdentityAuthorizationPolicy.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\UserNamePasswordValidator.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\UserNameSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\UserNameSecurityTokenProvider.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\WindowsSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\WindowsUserNameSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\X509CertificateValidator.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\X509SecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.IdentityModel.Selectors\X509SecurityTokenProvider.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\AsymmetricSecurityKey.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\AudienceRestriction.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\AuthenticationContext.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\AuthenticationInformation.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\BinaryKeyIdentifierClause.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\BootstrapContext.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\EncryptedKeyIdentifierClause.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\EncryptingCredentials.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\GenericXmlSecurityToken.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\InMemorySymmetricSecurityKey.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\IssuerNameRegistry.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\KerberosReceiverSecurityToken.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\KerberosRequestorSecurityToken.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\LocalIdKeyIdentifierClause.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\ProofDescriptor.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\RsaKeyIdentifierClause.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\RsaSecurityKey.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\RsaSecurityToken.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAccessDecision.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAction.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAdvice.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAssertion.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAssertionKeyIdentifierClause.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAttribute.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAttributeStatement.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAudienceRestrictionCondition.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAuthenticationClaimResource.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAuthenticationStatement.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAuthorityBinding.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAuthorizationDecisionClaimResource.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlAuthorizationDecisionStatement.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlCondition.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlConditions.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlConstants.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlDoNotCacheCondition.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlEvidence.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlNameIdentifierClaimResource.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlSecurityToken.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlSerializer.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlStatement.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlSubject.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SamlSubjectStatement.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityAlgorithms.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityKey.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityKeyIdentifier.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityKeyIdentifierClause.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityKeyType.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityKeyUsage.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityToken.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityTokenDescriptor.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityTokenException.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityTokenExpiredException.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityTokenHandler.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityTokenHandlerCollection.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityTokenHandlerConfiguration.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityTokenNotYetValidException.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityTokenReplayDetectedException.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityTokenTypes.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SecurityTokenValidationException.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SessionSecurityToken.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SessionSecurityTokenCache.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SessionSecurityTokenCacheKey.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SessionSecurityTokenHandler.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SigningCredentials.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\SymmetricSecurityKey.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\TlsHMAC.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\TokenReplayCache.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\UserNameSecurityToken.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\WindowsSecurityToken.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\X509AsymmetricSecurityKey.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\X509IssuerSerialKeyIdentifierClause.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\X509RawDataKeyIdentifierClause.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\X509SecurityToken.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\X509SigningCredentials.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\X509SubjectKeyIdentifierClause.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\X509ThumbprintKeyIdentifierClause.cs" />\r
-    <Compile Include="System.IdentityModel.Tokens\X509WindowsSecurityToken.cs" />\r
-    <Compile Include="System.IdentityModel\CookieTransform.cs" />\r
-    <Compile Include="System.IdentityModel\OpenObject.cs" />\r
-    <Compile Include="System.IdentityModel\SignatureVerificationFailedException.cs" />\r
-    <Compile Include="System.Security.Claims\AuthenticationTypes.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509CertificateValidationMode.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Security/System.Security-net_4_5.csproj">\r
-      <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.IdentityModel/System.IdentityModel-tests-net_4_5.csproj b/mcs/class/System.IdentityModel/System.IdentityModel-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 3099e1b..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A9AD4247-006F-4885-88E7-AFF48405D1A1}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.IdentityModel-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.IdentityModel_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.IdentityModel.Claims\ClaimSetTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Claims\ClaimTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Claims\ClaimTypesTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Claims\X509CertificateClaimSetTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Common\MySecurityTokenSerializer.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Policy\AuthorizationContextTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Selectors\CustomUserNameSecurityTokenAuthenticatorTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Selectors\RsaSecurityTokenAuthenticatorTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Selectors\SamlSecurityTokenAuthenticatorTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Selectors\SecurityTokenRequirementTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Selectors\SecurityTokenResolverTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Selectors\TestEvaluationContext.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Selectors\X509SecurityTokenAuthenticatorTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Selectors\X509SecurityTokenProviderTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\EncryptedKeyIdentifierClauseTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\InMemorySymmetricSecurityKeyTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\LocalIdKeyIdentifierClauseTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SamlActionTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SamlAssertionTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SamlAttributeStatementTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SamlAudienceRestrictionConditionTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SamlAuthenticationStatementTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SamlAuthorityBindingTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SamlAuthorizationDecisionStatementTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SamlConditionsTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SamlConstantsTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SamlEvidenceTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SamlSubjectTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SecurityAlgorithmsTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SecurityKeyIdentifierTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\SecurityTokenTypesTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\UserNameSecurityTokenTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\X509AsymmetricSecurityKeyTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\X509IssuerSerialKeyIdentifierClauseTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\X509SecurityTokenTest.cs" />\r
-    <Compile Include="Test\System.IdentityModel.Tokens\X509ThumbprintKeyIdentifierClauseTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_5.csproj">\r
-      <Project>{F056C062-E467-4989-9366-440E8CD23C0C}</Project>\r
-      <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security\System.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{725FB152-838A-4C6E-8A12-AC47E2DD4CEA}</Project>\r
-      <Name>System.Web\System.Web-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Json.Microsoft/System.Json.Microsoft-net_4_5.csproj b/mcs/class/System.Json.Microsoft/System.Json.Microsoft-net_4_5.csproj
deleted file mode 100644 (file)
index 8e0e4c9..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3694FAEB-90F5-46E8-AD30-E91FF97B401A}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Json.Microsoft</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETMVC;FEATURE_DYNAMIC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETMVC;FEATURE_DYNAMIC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\RS.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\TransparentCommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Json\Extensions\JsonValueExtensions.cs" />\r
-    <Compile Include="System.Json\GlobalSuppressions.cs" />\r
-    <Compile Include="System.Json\JsonArray.cs" />\r
-    <Compile Include="System.Json\JsonObject.cs" />\r
-    <Compile Include="System.Json\JsonPrimitive.cs" />\r
-    <Compile Include="System.Json\JsonType.cs" />\r
-    <Compile Include="System.Json\JsonValue.cs" />\r
-    <Compile Include="System.Json\JsonValueChange.cs" />\r
-    <Compile Include="System.Json\JsonValueChangeEventArgs.cs" />\r
-    <Compile Include="System.Json\JsonValueDynamicMetaObject.cs" />\r
-    <Compile Include="System.Json\JsonValueLinqExtensions.cs" />\r
-    <Compile Include="System.Json\JXmlToJsonValueConverter.cs" />\r
-    <Compile Include="System.Json\NGenWrapper.cs" />\r
-    <Compile Include="System.Json\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="System.Json\Properties\Resources.Designer.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj">\r
-      <Project>{D554618C-5D38-413A-82BA-7A70B6FC61A3}</Project>\r
-      <Name>Microsoft.CSharp-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="System.Json.Properties.Resources.resources">\r
-      <LogicalName>System.Json.Properties.Resources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Json.Microsoft/System.Json.Microsoft-tests-net_4_5.csproj b/mcs/class/System.Json.Microsoft/System.Json.Microsoft-tests-net_4_5.csproj
deleted file mode 100644 (file)
index ffcc4bd..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BF6DC977-2D12-4FE0-A44C-759FBD4FE7E9}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Json.Microsoft-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Json.Microsoft_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;ASPNETMVC;FEATURE_DYNAMIC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;ASPNETMVC;FEATURE_DYNAMIC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Json\JsonValueTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Json.Microsoft\System.Json.Microsoft-net_4_5.csproj">\r
-      <Project>{3694FAEB-90F5-46E8-AD30-E91FF97B401A}</Project>\r
-      <Name>System.Json.Microsoft\System.Json.Microsoft-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj">\r
-      <Project>{D554618C-5D38-413A-82BA-7A70B6FC61A3}</Project>\r
-      <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="System.Json.Properties.Resources.resources">\r
-      <LogicalName>System.Json.Properties.Resources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Json/System.Json-net_4_5.csproj b/mcs/class/System.Json/System.Json-net_4_5.csproj
deleted file mode 100644 (file)
index 7636191..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A062944C-09A6-4C2C-A2DC-60BB1EB19766}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Json</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\JavaScriptReader.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Json\JsonArray.cs" />\r
-    <Compile Include="System.Json\JsonObject.cs" />\r
-    <Compile Include="System.Json\JsonPrimitive.cs" />\r
-    <Compile Include="System.Json\JsonType.cs" />\r
-    <Compile Include="System.Json\JsonValue.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Json/System.Json-tests-net_4_5.csproj b/mcs/class/System.Json/System.Json-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 6993367..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C9E9ACC2-4917-4C0C-8734-AD4864EEB7C2}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Json-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Json_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Json\JsonValueTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Json\System.Json-net_4_5.csproj">\r
-      <Project>{A062944C-09A6-4C2C-A2DC-60BB1EB19766}</Project>\r
-      <Name>System.Json\System.Json-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Management/System.Management-net_4_5.csproj b/mcs/class/System.Management/System.Management-net_4_5.csproj
deleted file mode 100644 (file)
index 25ebfed..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6F650EE0-43D3-4875-92E8-E3FA07E18575}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Management</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Management.Instrumentation\BaseEvent.cs" />\r
-    <Compile Include="System.Management.Instrumentation\DefaultManagementProjectInstaller.cs" />\r
-    <Compile Include="System.Management.Instrumentation\IEvent.cs" />\r
-    <Compile Include="System.Management.Instrumentation\IgnoreMemberAttribute.cs" />\r
-    <Compile Include="System.Management.Instrumentation\IInstance.cs" />\r
-    <Compile Include="System.Management.Instrumentation\Instance.cs" />\r
-    <Compile Include="System.Management.Instrumentation\Instrumentation.cs" />\r
-    <Compile Include="System.Management.Instrumentation\InstrumentationClassAttribute.cs" />\r
-    <Compile Include="System.Management.Instrumentation\InstrumentationType.cs" />\r
-    <Compile Include="System.Management.Instrumentation\InstrumentedAttribute.cs" />\r
-    <Compile Include="System.Management.Instrumentation\ManagedNameAttribute.cs" />\r
-    <Compile Include="System.Management.Instrumentation\ManagementInstaller.cs" />\r
-    <Compile Include="System.Management\AuthenticationLevel.cs" />\r
-    <Compile Include="System.Management\CimType.cs" />\r
-    <Compile Include="System.Management\CodeLanguage.cs" />\r
-    <Compile Include="System.Management\ComparisonSettings.cs" />\r
-    <Compile Include="System.Management\CompletedEventArgs.cs" />\r
-    <Compile Include="System.Management\CompletedEventHandler.cs" />\r
-    <Compile Include="System.Management\ConnectionOptions.cs" />\r
-    <Compile Include="System.Management\DeleteOptions.cs" />\r
-    <Compile Include="System.Management\EnumerationOptions.cs" />\r
-    <Compile Include="System.Management\EventArrivedEventArgs.cs" />\r
-    <Compile Include="System.Management\EventArrivedEventHandler.cs" />\r
-    <Compile Include="System.Management\EventQuery.cs" />\r
-    <Compile Include="System.Management\EventWatcherOptions.cs" />\r
-    <Compile Include="System.Management\ImpersonationLevel.cs" />\r
-    <Compile Include="System.Management\InvokeMethodOptions.cs" />\r
-    <Compile Include="System.Management\ManagementBaseObject.cs" />\r
-    <Compile Include="System.Management\ManagementClass.cs" />\r
-    <Compile Include="System.Management\ManagementDateTimeConverter.cs" />\r
-    <Compile Include="System.Management\ManagementEventArgs.cs" />\r
-    <Compile Include="System.Management\ManagementEventWatcher.cs" />\r
-    <Compile Include="System.Management\ManagementException.cs" />\r
-    <Compile Include="System.Management\ManagementNamedValueCollection.cs" />\r
-    <Compile Include="System.Management\ManagementObject.cs" />\r
-    <Compile Include="System.Management\ManagementObjectCollection.cs" />\r
-    <Compile Include="System.Management\ManagementObjectSearcher.cs" />\r
-    <Compile Include="System.Management\ManagementOperationObserver.cs" />\r
-    <Compile Include="System.Management\ManagementOptions.cs" />\r
-    <Compile Include="System.Management\ManagementPath.cs" />\r
-    <Compile Include="System.Management\ManagementQuery.cs" />\r
-    <Compile Include="System.Management\ManagementScope.cs" />\r
-    <Compile Include="System.Management\ManagementStatus.cs" />\r
-    <Compile Include="System.Management\MethodData.cs" />\r
-    <Compile Include="System.Management\MethodDataCollection.cs" />\r
-    <Compile Include="System.Management\ObjectGetOptions.cs" />\r
-    <Compile Include="System.Management\ObjectPutEventArgs.cs" />\r
-    <Compile Include="System.Management\ObjectPutEventHandler.cs" />\r
-    <Compile Include="System.Management\ObjectQuery.cs" />\r
-    <Compile Include="System.Management\ObjectReadyEventArgs.cs" />\r
-    <Compile Include="System.Management\ObjectReadyEventHandler.cs" />\r
-    <Compile Include="System.Management\ProgressEventArgs.cs" />\r
-    <Compile Include="System.Management\ProgressEventHandler.cs" />\r
-    <Compile Include="System.Management\PropertyData.cs" />\r
-    <Compile Include="System.Management\PropertyDataCollection.cs" />\r
-    <Compile Include="System.Management\PutOptions.cs" />\r
-    <Compile Include="System.Management\PutType.cs" />\r
-    <Compile Include="System.Management\QualifierData.cs" />\r
-    <Compile Include="System.Management\QualifierDataCollection.cs" />\r
-    <Compile Include="System.Management\RelatedObjectQuery.cs" />\r
-    <Compile Include="System.Management\RelationshipQuery.cs" />\r
-    <Compile Include="System.Management\SelectQuery.cs" />\r
-    <Compile Include="System.Management\StoppedEventArgs.cs" />\r
-    <Compile Include="System.Management\StoppedEventHandler.cs" />\r
-    <Compile Include="System.Management\TextFormat.cs" />\r
-    <Compile Include="System.Management\WqlEventQuery.cs" />\r
-    <Compile Include="System.Management\WqlObjectQuery.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration.Install/System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{E6E1740E-37DD-487C-8947-F1C0612D4738}</Project>\r
-      <Name>System.Configuration.Install-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Messaging/System.Messaging-net_4_5.csproj b/mcs/class/System.Messaging/System.Messaging-net_4_5.csproj
deleted file mode 100644 (file)
index 88fcd52..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1CBEC0FC-5926-42FA-A0CF-A19617FABB78}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Messaging</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Messaging.Design\MessageFormatterConverter.cs" />\r
-    <Compile Include="System.Messaging.Design\MessageQueueConverter.cs" />\r
-    <Compile Include="System.Messaging.Design\QueuePathDialog.cs" />\r
-    <Compile Include="System.Messaging.Design\QueuePathEditor.cs" />\r
-    <Compile Include="System.Messaging.Design\TimeoutConverter.cs" />\r
-    <Compile Include="System.Messaging\AccessControlEntry.cs" />\r
-    <Compile Include="System.Messaging\AccessControlEntryType.cs" />\r
-    <Compile Include="System.Messaging\AccessControlList.cs" />\r
-    <Compile Include="System.Messaging\AcknowledgeTypes.cs" />\r
-    <Compile Include="System.Messaging\Acknowledgment.cs" />\r
-    <Compile Include="System.Messaging\ActiveXMessageFormatter.cs" />\r
-    <Compile Include="System.Messaging\BinaryMessageFormatter.cs" />\r
-    <Compile Include="System.Messaging\CryptographicProviderType.cs" />\r
-    <Compile Include="System.Messaging\DefaultPropertiesToSend.cs" />\r
-    <Compile Include="System.Messaging\EncryptionAlgorithm.cs" />\r
-    <Compile Include="System.Messaging\EncryptionRequired.cs" />\r
-    <Compile Include="System.Messaging\GenericAccessRights.cs" />\r
-    <Compile Include="System.Messaging\HashAlgorithm.cs" />\r
-    <Compile Include="System.Messaging\IMessageFormatter.cs" />\r
-    <Compile Include="System.Messaging\Message.cs" />\r
-    <Compile Include="System.Messaging\MessageEnumerator.cs" />\r
-    <Compile Include="System.Messaging\MessagePriority.cs" />\r
-    <Compile Include="System.Messaging\MessagePropertyFilter.cs" />\r
-    <Compile Include="System.Messaging\MessageQueue.cs" />\r
-    <Compile Include="System.Messaging\MessageQueueAccessControlEntry.cs" />\r
-    <Compile Include="System.Messaging\MessageQueueAccessRights.cs" />\r
-    <Compile Include="System.Messaging\MessageQueueCriteria.cs" />\r
-    <Compile Include="System.Messaging\MessageQueueEnumerator.cs" />\r
-    <Compile Include="System.Messaging\MessageQueueErrorCode.cs" />\r
-    <Compile Include="System.Messaging\MessageQueueException.cs" />\r
-    <Compile Include="System.Messaging\MessageQueueInstaller.cs" />\r
-    <Compile Include="System.Messaging\MessageQueuePermission.cs" />\r
-    <Compile Include="System.Messaging\MessageQueuePermissionAccess.cs" />\r
-    <Compile Include="System.Messaging\MessageQueuePermissionAttribute.cs" />\r
-    <Compile Include="System.Messaging\MessageQueuePermissionEntry.cs" />\r
-    <Compile Include="System.Messaging\MessageQueuePermissionEntryCollection.cs" />\r
-    <Compile Include="System.Messaging\MessageQueueTransaction.cs" />\r
-    <Compile Include="System.Messaging\MessageQueueTransactionStatus.cs" />\r
-    <Compile Include="System.Messaging\MessageQueueTransactionType.cs" />\r
-    <Compile Include="System.Messaging\MessageType.cs" />\r
-    <Compile Include="System.Messaging\MessagingDescriptionAttribute.cs" />\r
-    <Compile Include="System.Messaging\PeekCompletedEventArgs.cs" />\r
-    <Compile Include="System.Messaging\PeekCompletedEventHandler.cs" />\r
-    <Compile Include="System.Messaging\QueueAccessMode.cs" />\r
-    <Compile Include="System.Messaging\ReceiveCompletedEventArgs.cs" />\r
-    <Compile Include="System.Messaging\ReceiveCompletedEventHandler.cs" />\r
-    <Compile Include="System.Messaging\StandardAccessRights.cs" />\r
-    <Compile Include="System.Messaging\Trustee.cs" />\r
-    <Compile Include="System.Messaging\TrusteeType.cs" />\r
-    <Compile Include="System.Messaging\XmlMessageFormatter.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration.Install/System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{E6E1740E-37DD-487C-8947-F1C0612D4738}</Project>\r
-      <Name>System.Configuration.Install-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Messaging/Mono.Messaging-net_4_5.csproj">\r
-      <Project>{DDCC93B5-9425-4E9A-95DC-3400D0028508}</Project>\r
-      <Name>Mono.Messaging-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="System.Messaging/MessageQueue.resx">\r
-      <LogicalName>MessageQueue.resx</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Messaging/System.Messaging-tests-net_4_5.csproj b/mcs/class/System.Messaging/System.Messaging-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 89863b1..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E8980B98-13D0-40AF-A452-F26D3482BCA4}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <OutputPath>bin\Debug\System.Messaging-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Messaging_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Messaging\AdminTest.cs" />\r
-    <Compile Include="Test\System.Messaging\AsyncPeekTest.cs" />\r
-    <Compile Include="Test\System.Messaging\AsyncReceiveTest.cs" />\r
-    <Compile Include="Test\System.Messaging\BasicMessagingTest.cs" />\r
-    <Compile Include="Test\System.Messaging\MessageEnumeratorTest.cs" />\r
-    <Compile Include="Test\System.Messaging\MessageQueuePermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Messaging\MQUtil.cs" />\r
-    <Compile Include="Test\System.Messaging\PeekTest.cs" />\r
-    <Compile Include="Test\System.Messaging\SelectorTest.cs" />\r
-    <Compile Include="Test\System.Messaging\TransactionMessagingTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{1CBEC0FC-5926-42FA-A0CF-A19617FABB78}</Project>\r
-      <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{E6E1740E-37DD-487C-8947-F1C0612D4738}</Project>\r
-      <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{DDCC93B5-9425-4E9A-95DC-3400D0028508}</Project>\r
-      <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
-    </ProjectReference>\r
-    <Reference Include="nunit.mocks.dll">\r
-      <SpecificVersion>False</SpecificVersion>\r
-      <HintPath>nunit.mocks.dll</HintPath>\r
-      <Private>False</Private>\r
-    </Reference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="System.Messaging/MessageQueue.resx">\r
-      <LogicalName>MessageQueue.resx</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj b/mcs/class/System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj
deleted file mode 100644 (file)
index d009b7a..0000000
+++ /dev/null
@@ -1,362 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BFBE5444-4F21-45CF-929E-C8FBEF302F5E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Net.Http.Formatting</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETMVC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETMVC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\CommonWebApiResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\DictionaryExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\Error.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\TaskHelpers.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\TaskHelpersExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\RS.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\CloneableExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\BufferedMediaTypeFormatter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\ContentNegotiationResult.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\DefaultContentNegotiator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\DelegatingEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\FormDataCollection.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\FormUrlEncodedJson.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\FormUrlEncodedMediaTypeFormatter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\IContentNegotiator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\IFormatterLogger.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\IRequiredMemberSelector.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\JsonContractResolver.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\JsonMediaTypeFormatter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\JsonReaderQuotaException.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\MediaRangeMapping.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\MediaTypeConstants.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\MediaTypeFormatter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\MediaTypeFormatterCollection.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\MediaTypeFormatterExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\MediaTypeHeaderValueExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\MediaTypeMapping.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\MediaTypeMatch.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\MediaTypeWithQualityHeaderValueComparer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\ParsedMediaTypeHeaderValue.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\Parsers\FormUrlEncodedParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\Parsers\HttpRequestHeaderParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\Parsers\HttpRequestLineParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\Parsers\HttpResponseHeaderParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\Parsers\HttpStatusLineParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\Parsers\InternetMessageFormatHeaderParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\Parsers\MimeMultipartBodyPartParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\Parsers\MimeMultipartParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\Parsers\ParserState.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\QueryStringMapping.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\RequestHeaderMapping.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\ResponseFormatterSelectionResult.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\ResponseMediaTypeMatch.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\SecureJsonTextReader.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\StringComparisonHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\StringWithQualityHeaderValueComparer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\XHRRequestHeaderMapping.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Formatting\XmlMediaTypeFormatter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\FormattingUtilities.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Headers\CookieHeaderValue.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Headers\CookieState.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpClientExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpContentCollectionExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpContentExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpContentMessageExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpContentMultipartExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpHeaderExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpMessageContent.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpRequestHeadersExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpRequestMessageExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpResponseHeadersExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpUnsortedHeaders.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpUnsortedRequest.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\HttpUnsortedResponse.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\IMultipartStreamProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Internal\AsyncResultWithExtraData.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Internal\DelegatingStream.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Internal\HttpValueCollection.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Internal\NonClosingDelegatingStream.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Internal\UriQueryUtility.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\MimeBodyPart.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\MultipartFileStreamProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\MultipartFormDataStreamProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\MultipartMemoryStreamProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\ObjectContent.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\Properties\Resources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Net.Http.Formatting\UriExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\TransparentCommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Bson\BsonBinaryType.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Bson\BsonBinaryWriter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Bson\BsonObjectId.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Bson\BsonReader.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Bson\BsonToken.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Bson\BsonType.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Bson\BsonWriter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\ConstructorHandling.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\BinaryConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\BsonObjectIdConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\CustomCreationConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\DataSetConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\DataTableConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\DateTimeConverterBase.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\EntityKeyMemberConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\ExpandoObjectConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\IsoDateTimeConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\JavaScriptDateTimeConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\KeyValuePairConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\RegexConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\StringEnumConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\VersionConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Converters\XmlNodeConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\DateFormatHandling.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\DateTimeZoneHandling.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\DefaultValueHandling.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Formatting.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\IJsonLineInfo.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonArrayAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonConstructorAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonContainerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonConvert.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonConverterAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonConverterCollection.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonIgnoreAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonObjectAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonPosition.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonReader.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonReaderException.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonSerializationException.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonSerializer.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonSerializerSettings.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonTextReader.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonToken.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonValidatingReader.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonWriter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\JsonWriterException.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\Extensions.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\IJEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JArray.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JConstructor.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JContainer.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JObject.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JPath.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JProperty.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JPropertyKeyedCollection.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JRaw.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JToken.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JTokenEqualityComparer.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JTokenReader.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JTokenType.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JTokenWriter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Linq\JValue.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\MemberSerialization.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\MissingMemberHandling.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\NullValueHandling.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\ObjectCreationHandling.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\PreserveReferencesHandling.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\ReferenceLoopHandling.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Required.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\Extensions.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchema.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaBuilder.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaConstants.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaException.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaGenerator.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaModel.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaModelBuilder.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaNode.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaNodeCollection.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaResolver.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaType.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaWriter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\UndefinedSchemaIdHandling.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\ValidationEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\ValidationEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\CachedAttributeGetter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\CamelCasePropertyNamesContractResolver.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\DefaultContractResolver.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\DefaultReferenceResolver.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\DefaultSerializationBinder.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\DynamicValueProvider.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\ErrorContext.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\ErrorEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\IContractResolver.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\IReferenceResolver.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\IValueProvider.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonArrayContract.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonContract.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonDictionaryContract.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonDynamicContract.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonFormatterConverter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonISerializableContract.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonLinqContract.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonObjectContract.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonPrimitiveContract.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonProperty.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonPropertyCollection.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalBase.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalWriter.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonSerializerProxy.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonStringContract.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonTypeReflector.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\LateBoundMetadataTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\ObjectConstructor.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\OnErrorAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\ReflectionValueProvider.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\TypeNameHandling.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\Base64Encoder.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\BidirectionalDictionary.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\CollectionUtils.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\CollectionWrapper.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\ConvertUtils.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\DateTimeUtils.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\DictionaryWrapper.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\DynamicProxy.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\DynamicProxyMetaObject.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\DynamicReflectionDelegateFactory.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\DynamicUtils.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\DynamicWrapper.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\EnumUtils.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\EnumValue.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\EnumValues.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\ILGeneratorExtensions.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\JavaScriptUtils.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\LateBoundReflectionDelegateFactory.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\ListWrapper.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\MathUtils.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\MethodCall.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\MiscellaneousUtils.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\ReflectionDelegateFactory.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\ReflectionUtils.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\StringBuffer.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\StringReference.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\StringUtils.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\ThreadSafeStore.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\TypeExtensions.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\Utilities\ValidationUtils.cs" />\r
-    <Compile Include="..\..\..\external\Newtonsoft.Json\Src\Newtonsoft.Json\WriteState.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Net.Http/System.Net.Http-net_4_5.csproj">\r
-      <Project>{E36C154B-A0AC-4721-B06A-AFE31D357CE5}</Project>\r
-      <Name>System.Net.Http-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="System.Net.Http.Properties.CommonWebApiResources.resources">\r
-      <LogicalName>System.Net.Http.Properties.CommonWebApiResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Net.Http.Properties.Resources.resources">\r
-      <LogicalName>System.Net.Http.Properties.Resources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest-net_4_5.csproj b/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest-net_4_5.csproj
deleted file mode 100644 (file)
index 30594b9..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{28DE6988-8E54-4D16-B9B6-4A5BB796FB15}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Net.Http.WebRequest</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Net.Http.WebRequest\WebRequestHandler.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Net.Http/System.Net.Http-net_4_5.csproj">\r
-      <Project>{E36C154B-A0AC-4721-B06A-AFE31D357CE5}</Project>\r
-      <Name>System.Net.Http-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Net.Http/System.Net.Http-net_4_5.csproj b/mcs/class/System.Net.Http/System.Net.Http-net_4_5.csproj
deleted file mode 100644 (file)
index 6571e8f..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E36C154B-A0AC-4721-B06A-AFE31D357CE5}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Net.Http</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Net.Http.Headers\AuthenticationHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\CacheControlHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\CollectionExtensions.cs" />\r
-    <Compile Include="System.Net.Http.Headers\CollectionParser.cs" />\r
-    <Compile Include="System.Net.Http.Headers\ContentDispositionHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\ContentRangeHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\EntityTagHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\HashCodeCalculator.cs" />\r
-    <Compile Include="System.Net.Http.Headers\HeaderInfo.cs" />\r
-    <Compile Include="System.Net.Http.Headers\HttpContentHeaders.cs" />\r
-    <Compile Include="System.Net.Http.Headers\HttpHeaderKind.cs" />\r
-    <Compile Include="System.Net.Http.Headers\HttpHeaders.cs" />\r
-    <Compile Include="System.Net.Http.Headers\HttpHeaderValueCollection.cs" />\r
-    <Compile Include="System.Net.Http.Headers\HttpRequestHeaders.cs" />\r
-    <Compile Include="System.Net.Http.Headers\HttpResponseHeaders.cs" />\r
-    <Compile Include="System.Net.Http.Headers\Lexer.cs" />\r
-    <Compile Include="System.Net.Http.Headers\MediaTypeHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\MediaTypeWithQualityHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\NameValueHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\NameValueWithParametersHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\Parser.cs" />\r
-    <Compile Include="System.Net.Http.Headers\ProductHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\ProductInfoHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\QualityValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\RangeConditionHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\RangeHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\RangeItemHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\RetryConditionHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\StringWithQualityHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\TransferCodingHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\TransferCodingWithQualityHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\ViaHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http.Headers\WarningHeaderValue.cs" />\r
-    <Compile Include="System.Net.Http\ByteArrayContent.cs" />\r
-    <Compile Include="System.Net.Http\ClientCertificateOption.cs" />\r
-    <Compile Include="System.Net.Http\DelegatingHandler.cs" />\r
-    <Compile Include="System.Net.Http\FormUrlEncodedContent.cs" />\r
-    <Compile Include="System.Net.Http\HttpClient.cs" />\r
-    <Compile Include="System.Net.Http\HttpClientHandler.cs" />\r
-    <Compile Include="System.Net.Http\HttpCompletionOption.cs" />\r
-    <Compile Include="System.Net.Http\HttpContent.cs" />\r
-    <Compile Include="System.Net.Http\HttpMessageHandler.cs" />\r
-    <Compile Include="System.Net.Http\HttpMessageInvoker.cs" />\r
-    <Compile Include="System.Net.Http\HttpMethod.cs" />\r
-    <Compile Include="System.Net.Http\HttpRequestException.cs" />\r
-    <Compile Include="System.Net.Http\HttpRequestMessage.cs" />\r
-    <Compile Include="System.Net.Http\HttpResponseMessage.cs" />\r
-    <Compile Include="System.Net.Http\MessageProcessingHandler.cs" />\r
-    <Compile Include="System.Net.Http\MultipartContent.cs" />\r
-    <Compile Include="System.Net.Http\MultipartFormDataContent.cs" />\r
-    <Compile Include="System.Net.Http\StreamContent.cs" />\r
-    <Compile Include="System.Net.Http\StringContent.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Net.Http/System.Net.Http-tests-net_4_5.csproj b/mcs/class/System.Net.Http/System.Net.Http-tests-net_4_5.csproj
deleted file mode 100644 (file)
index d18d387..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{98DA1392-DAD8-4F11-9B88-1E1578FF7670}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Net.Http-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Net.Http_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Net.Http.Headers\AuthenticationHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\CacheControlHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\ContentDispositionHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\ContentRangeHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\EntityTagHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\HttpHeadersTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\HttpHeaderValueCollection.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\HttpRequestHeadersTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\MediaTypeHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\MediaTypeWithQualityHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\NameValueHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\NameValueWithParametersHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\ProductHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\ProductInfoHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\RangeConditionHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\RangeHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\RangeItemHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\RetryConditionHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\StringWithQualityHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\TransferCodingHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\TransferCodingWithQualityHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\ViaHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http.Headers\WarningHeaderValueTest.cs" />\r
-    <Compile Include="Test\System.Net.Http\ByteArrayContentTest.cs" />\r
-    <Compile Include="Test\System.Net.Http\FormUrlEncodedContentTest.cs" />\r
-    <Compile Include="Test\System.Net.Http\HttpClientHandlerTest.cs" />\r
-    <Compile Include="Test\System.Net.Http\HttpClientTest.cs" />\r
-    <Compile Include="Test\System.Net.Http\HttpMethodTest.cs" />\r
-    <Compile Include="Test\System.Net.Http\HttpRequestMessageTest.cs" />\r
-    <Compile Include="Test\System.Net.Http\HttpResponseMessageTest.cs" />\r
-    <Compile Include="Test\System.Net.Http\MultipartContentTest.cs" />\r
-    <Compile Include="Test\System.Net.Http\MultipartFormDataContentTest.cs" />\r
-    <Compile Include="Test\System.Net.Http\StreamContentTest.cs" />\r
-    <Compile Include="Test\System.Net.Http\StringContentTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Net.Http\System.Net.Http-net_4_5.csproj">\r
-      <Project>{E36C154B-A0AC-4721-B06A-AFE31D357CE5}</Project>\r
-      <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 114e78e83c2a53037594ccfbdbc1e458879ea10e..baa6dd9f0d26cc6a219c5187164013043009be9d 100644 (file)
@@ -33,7 +33,7 @@ using System.IO;
 
 namespace System.Net.Http
 {
-       public class HttpClient : HttpMessageInvoker
+       public partial class HttpClient : HttpMessageInvoker
        {
                static readonly TimeSpan TimeoutDefault = TimeSpan.FromSeconds (100);
 
@@ -44,10 +44,12 @@ namespace System.Net.Http
                long buffer_size;
                TimeSpan timeout;
 
+#if !XAMARIN_MODERN
                public HttpClient ()
                        : this (new HttpClientHandler (), true)
                {
                }
+#endif
                
                public HttpClient (HttpMessageHandler handler)
                        : this (handler, true)
index 510a2d63d45122db80bf3d145cbcc953051b807f..7992ecafb20807263f94efc60b129375821c16d0 100644 (file)
@@ -997,8 +997,8 @@ namespace MonoTests.System.Net.Http
                public void GetString_Many ()
                {
                        var client = new HttpClient ();
-                       var t1 = client.GetStringAsync ("http://www.google.com");
-                       var t2 = client.GetStringAsync ("http://www.google.com");
+                       var t1 = client.GetStringAsync ("http://example.org");
+                       var t2 = client.GetStringAsync ("http://example.org");
                        Assert.IsTrue (Task.WaitAll (new [] { t1, t2 }, WaitTimeout));          
                }
 
diff --git a/mcs/class/System.Net/System.Net-net_4_5.csproj b/mcs/class/System.Net/System.Net-net_4_5.csproj
deleted file mode 100644 (file)
index 967cf8b..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E41631CD-605D-46BE-9D4B-46AAD7EE5599}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Net</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Assembly\TypeForwarders.cs" />\r
-    <Compile Include="System.Net\IPEndPointCollection.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Numerics/System.Numerics-net_4_5.csproj b/mcs/class/System.Numerics/System.Numerics-net_4_5.csproj
deleted file mode 100644 (file)
index 182af90..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{14631AC9-FDC6-4561-A04C-6913947C939E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Numerics</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MONO</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MONO</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Numerics\System\Numerics\BigInteger.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Numerics\System\Numerics\BigIntegerBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Numerics\System\Numerics\BigNumber.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Numerics\System\Numerics\Complex.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Numerics\System\Numerics\NumericsHelpers.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\SR.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="ReferenceSources\Environment.cs" />\r
-    <Compile Include="ReferenceSources\SR.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Numerics/System.Numerics-tests-net_4_5.csproj b/mcs/class/System.Numerics/System.Numerics-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 1ccaed1..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A2E74122-C2B6-4A40-A255-AF54948DA464}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Numerics-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Numerics_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Numerics\BigIntegerTest.cs" />\r
-    <Compile Include="Test\System.Numerics\ComplexTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Numerics\System.Numerics-net_4_5.csproj">\r
-      <Project>{14631AC9-FDC6-4561-A04C-6913947C939E}</Project>\r
-      <Name>System.Numerics\System.Numerics-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Reactive.Core/System.Reactive.Core-net_4_5.csproj b/mcs/class/System.Reactive.Core/System.Reactive.Core-net_4_5.csproj
deleted file mode 100644 (file)
index 35c87f3..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reactive.Core</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\InternalsVisibleTo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\NamespaceDocs.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Observable.Extensions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Observer.Extensions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\AnonymousObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\AnonymousObserver.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\AnonymousSafeObserver.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\AsyncLock.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\CatchScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\ConcurrencyAbstractionLayer.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\ConcurrencyAbstractionLayer.Default.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\CurrentThreadScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\DefaultScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\DisableOptimizationsScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\ImmediateScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\LocalScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\LocalScheduler.TimerQueue.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\ScheduledItem.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\Scheduler.Async.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\Scheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\Scheduler.Recursive.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\Scheduler.Services.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\Scheduler.Services.Emulation.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\Scheduler.Simple.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\Scheduler.Wrappers.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\SchedulerDefaults.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\SchedulerOperation.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\SchedulerQueue.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\SchedulerWrapper.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\Stopwatch.Default.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\Synchronization.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\Synchronization.ObserveOn.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\Synchronization.Synchronize.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Concurrency\SynchronizationContextScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Disposables\AnonymousDisposable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Disposables\BooleanDisposable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Disposables\CancellationDisposable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Disposables\CompositeDisposable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Disposables\ContextDisposable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Disposables\DefaultDisposable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Disposables\Disposable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Disposables\MultipleAssignmentDisposable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Disposables\RefCountDisposable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Disposables\ScheduledDisposable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Disposables\SerialDisposable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Disposables\SingleAssignmentDisposable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\AsyncLockObserver.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\AutoDetachObserver.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\CheckedObserver.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\ConcurrentDictionary.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\ConcurrentQueue.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\Constants.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\ExceptionServices.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\ExceptionServices.Default.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\HostLifecycleService.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\ImmutableList.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\Lazy.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\Observers.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\PlatformEnlightenmentProvider.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\PriorityQueue.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\Producer.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\SafeObserver.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\ScheduledObserver.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\Semaphore.Silverlight.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\Semaphore.Xna.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\Sink.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\Stubs.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\SynchronizationContextExtensions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\SynchronizedObserver.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\SystemClock.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Internal\SystemClock.Default.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Notification.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\ObservableBase.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\ObserverBase.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Unit.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Strings_Core.Generated.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Strings_Core.resources">\r
-      <LogicalName>System.Reactive.Strings_Core.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Reactive.Debugger/System.Reactive.Debugger-net_4_5.csproj b/mcs/class/System.Reactive.Debugger/System.Reactive.Debugger-net_4_5.csproj
deleted file mode 100644 (file)
index fff560b..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6A059733-FAF1-4125-8BE6-C58A4E3714CE}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reactive.Debugger</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Debugger\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Debugger\Reactive\Linq\QueryDebugger.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Reactive.Experimental/System.Reactive.Experimental-net_4_5.csproj b/mcs/class/System.Reactive.Experimental/System.Reactive.Experimental-net_4_5.csproj
deleted file mode 100644 (file)
index e756150..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1A49E00D-F0FB-430A-A540-1545DD999B36}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reactive.Experimental</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\ExperimentalAttribute.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\InternalsVisibleTo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\Internal\BinaryObserver.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\Linq\IQueryLanguageEx.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\Linq\ObservableEx.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\Linq\QbservableEx.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\Linq\QbservableEx.Generated.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\Linq\QueryLanguageEx.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\ListObservable.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj b/mcs/class/System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj
deleted file mode 100644 (file)
index 3c8fddc..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reactive.Interfaces</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\AssemblyFileVersionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\DateTimeOffset.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\IObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\IObserver.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\NamespaceDocs.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Concurrency\IScheduledItem.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Concurrency\IScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Concurrency\ISchedulerLongRunning.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Concurrency\ISchedulerPeriodic.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Concurrency\IStopwatch.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Concurrency\IStopwatchProvider.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Disposables\ICancelable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\IEventPattern.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\IEventPatternSource.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\IEventSource.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\IObserver.Result.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Linq\IGroupedObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Linq\IQbservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Linq\IQbservableProvider.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Subjects\IConnectableObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Subjects\ISubject.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Subjects\ISubject.Multi.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj b/mcs/class/System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj
deleted file mode 100644 (file)
index 08d46c1..0000000
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reactive.Linq</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\InternalsVisibleTo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\NamespaceDocs.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Concurrency\HistoricalScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Concurrency\VirtualTimeScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Concurrency\VirtualTimeScheduler.Extensions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\EventPattern.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\EventPatternSource.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\EventPatternSourceBase.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\EventSource.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\AnonymousEnumerable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\BinaryObserver.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\ConcatSink.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\Constants.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\Either.Generic.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\HashSet.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\Helpers.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\IConcatenatable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\IEvaluatableObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\Lookup.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\PushPullAdapter.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\QueryServices.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\ReflectionUtils.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Internal\TailRecursiveSink.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Joins\ActivePlan.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Joins\JoinObserver.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Joins\Pattern.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Joins\Plan.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\GroupedObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\IQueryLanguage.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\LocalQueryMethodImplementationTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Aggregates.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Async.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Awaiter.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Binding.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Blocking.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Concurrency.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Conversions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Creation.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Events.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Imperative.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Joins.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Multiple.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Single.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.StandardSequenceOperators.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable.Time.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\_.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\AddRef.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Aggregate.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\All.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Amb.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Any.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\AsObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Average.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Buffer.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Case.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Cast.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Catch.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Collect.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\CombineLatest.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Concat.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Contains.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Count.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\DefaultIfEmpty.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Defer.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Delay.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\DelaySubscription.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Dematerialize.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Distinct.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\DistinctUntilChanged.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Do.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\DoWhile.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\ElementAt.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Empty.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Finally.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\FirstAsync.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\For.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\ForEach.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\FromEvent.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\FromEventPattern.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Generate.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\GetEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\GroupBy.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\GroupByUntil.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\GroupJoin.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\If.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\IgnoreElements.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\IsEmpty.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Join.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\LastAsync.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Latest.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\LongCount.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Materialize.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Max.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\MaxBy.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Merge.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Min.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\MinBy.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\MostRecent.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Multicast.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Never.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Next.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\OfType.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\OnErrorResumeNext.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\PushToPullAdapter.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Range.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\RefCount.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Repeat.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Return.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Sample.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Scan.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Select.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\SelectMany.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\SequenceEqual.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\SingleAsync.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Skip.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\SkipLast.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\SkipUntil.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\SkipWhile.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Sum.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Switch.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Take.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\TakeLast.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\TakeLastBuffer.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\TakeUntil.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\TakeWhile.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Throttle.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Throw.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\TimeInterval.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Timeout.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Timer.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Timestamp.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\ToArray.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\ToDictionary.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\ToList.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\ToLookup.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\ToObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Using.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Where.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\While.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Window.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable\Zip.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\Observable_.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Aggregates.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Async.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Awaiter.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Binding.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Blocking.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Concurrency.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Conversions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Creation.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Events.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Imperative.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Joins.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Multiple.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Single.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.StandardSequenceOperators.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage.Time.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Linq\QueryLanguage_.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Subjects\AsyncSubject.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Subjects\BehaviorSubject.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Subjects\ConnectableObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Subjects\ReplaySubject.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Subjects\Subject.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Subjects\Subject.Extensions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Threading\Tasks\NamespaceDoc.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Threading\Tasks\TaskObservableExtensions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\TimeInterval.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Timestamped.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Strings_Linq.Generated.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Strings_Linq.resources">\r
-      <LogicalName>System.Reactive.Strings_Linq.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Reactive.Observable.Aliases/System.Reactive.Observable.Aliases-net_4_5.csproj b/mcs/class/System.Reactive.Observable.Aliases/System.Reactive.Observable.Aliases-net_4_5.csproj
deleted file mode 100644 (file)
index a77aa5c..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{91A70A1D-36C5-49BC-92CC-A04D7C2C6EE1}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reactive.Observable.Aliases</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Observable.Aliases\Observable.Aliases.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Observable.Aliases\Qbservable.Aliases.Generated.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj">\r
-      <Project>{8D27108A-3DD4-46D7-917E-7833A3C4D479}</Project>\r
-      <Name>System.Reactive.Providers-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj">\r
-      <Project>{8D27108A-3DD4-46D7-917E-7833A3C4D479}</Project>\r
-      <Name>System.Reactive.Providers-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Reactive.PlatformServices/System.Reactive.PlatformServices-net_4_5.csproj b/mcs/class/System.Reactive.PlatformServices/System.Reactive.PlatformServices-net_4_5.csproj
deleted file mode 100644 (file)
index e26e9a1..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4C2D4246-D4F5-420B-B1B5-031853AC47F4}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reactive.PlatformServices</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Concurrency\ConcurrencyAbstractionLayerImpl.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Concurrency\ConcurrencyAbstractionLayerImpl.Windows.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Concurrency\EventLoopScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Concurrency\NewThreadScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Concurrency\TaskPoolScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Concurrency\Thread.Stub.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Concurrency\ThreadPoolScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Concurrency\ThreadPoolScheduler.Windows.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\EnlightenmentProvider.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\ExceptionServicesImpl.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\HostLifecycleNotifications.Windows.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\HostLifecycleNotifications.WindowsPhone.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\PhoneShellThunks.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\PlatformEnlightenmentProvider.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\StopwatchImpl.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\Stubs.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Strings_PlatformServices.Generated.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Strings_PlatformServices.resources">\r
-      <LogicalName>System.Reactive.Strings_PlatformServices.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj b/mcs/class/System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj
deleted file mode 100644 (file)
index f0d3e04..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8D27108A-3DD4-46D7-917E-7833A3C4D479}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reactive.Providers</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\Internal\Constants.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\Joins\QueryablePattern.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\Joins\QueryablePlan.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\Linq\ExpressionVisitor.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\Linq\Observable.Queryable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\Linq\Qbservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\Linq\Qbservable.Generated.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\Linq\Qbservable.Joins.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\ObservableQuery.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Strings_Providers.Generated.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Strings_Providers.resources">\r
-      <LogicalName>System.Reactive.Strings_Providers.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Reactive.Runtime.Remoting/System.Reactive.Runtime.Remoting-net_4_5.csproj b/mcs/class/System.Reactive.Runtime.Remoting/System.Reactive.Runtime.Remoting-net_4_5.csproj
deleted file mode 100644 (file)
index c94dcf3..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{895BA5F6-E27F-46C4-B045-58DD0F14BF90}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reactive.Runtime.Remoting</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\Reactive\Linq\Observable.Remoting.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\Reactive\Linq\QueryLanguage.Remoting.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Reactive.Windows.Forms/System.Reactive.Windows.Forms-net_4_5.csproj b/mcs/class/System.Reactive.Windows.Forms/System.Reactive.Windows.Forms-net_4_5.csproj
deleted file mode 100644 (file)
index d7365ef..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E85DF38F-D4F6-4B04-9962-32B0CCC8AC5E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reactive.Windows.Forms</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\Reactive\Concurrency\ControlScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\Reactive\Linq\ControlObservable.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Reactive.Windows.Threading/System.Reactive.Windows.Threading-net_4_5.csproj b/mcs/class/System.Reactive.Windows.Threading/System.Reactive.Windows.Threading-net_4_5.csproj
deleted file mode 100644 (file)
index fadb4bb..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FC7ACFC5-81E9-4798-9D7F-067AEAD8A4D4}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Reactive.Windows.Threading</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../reactive.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Reactive\Concurrency\CoreDispatcherScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Reactive\Concurrency\DispatcherScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Reactive\Internal\Constants.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Reactive\Linq\CoreDispatcherObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Reactive\Linq\DispatcherObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Strings_WindowsThreading.Generated.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../WindowsBase/WindowsBase-net_4_5.csproj">\r
-      <Project>{8E6ED7D5-3B08-4A83-905E-8FB4CF0C160D}</Project>\r
-      <Name>WindowsBase-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{EFA38650-CE13-4BF3-993D-70B238DB1C9E}</Project>\r
-      <Name>System.Reactive.Interfaces-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Core/System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{4EF3C775-C516-4897-AB1D-DC9F8862A4D9}</Project>\r
-      <Name>System.Reactive.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{EE831E49-3F84-4A05-9417-A9C8BD36E164}</Project>\r
-      <Name>System.Reactive.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../WindowsBase/WindowsBase-net_4_5.csproj">\r
-      <Project>{8E6ED7D5-3B08-4A83-905E-8FB4CF0C160D}</Project>\r
-      <Name>WindowsBase-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Strings_WindowsThreading.resources">\r
-      <LogicalName>System.Reactive.Strings_WindowsThreading.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index 60f89fd8ad690af6215024715cf921206434c2d8..7925d6a6f62a5e1069b76d38ff75460fda330886 100644 (file)
@@ -68,15 +68,17 @@ namespace System.Runtime.Caching
                        if (blockInsert)
                                store.BlockInsert ();
 
-                       foreach (var entry in entries) {
-                               if (helper.GetDateTime (entry) > limit || flushedItems >= count)
-                                       break;
+                       lock (entries) {
+                               foreach (var entry in entries) {
+                                       if (helper.GetDateTime (entry) > limit || flushedItems >= count)
+                                               break;
 
-                               flushedItems++;
-                       }
+                                       flushedItems++;
+                               }
 
-                       for (var f = 0; f < flushedItems; f++)
-                               store.Remove (entries.Min, null, reason);
+                               for (var f = 0; f < flushedItems; f++)
+                                       store.Remove (entries.Min, null, reason);
+                       }
 
                        if (blockInsert)
                                store.UnblockInsert ();
diff --git a/mcs/class/System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj b/mcs/class/System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj
deleted file mode 100644 (file)
index 8746abf..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CB3E9225-3DFF-4930-BFED-1E8AE5319C32}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,414</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Caching</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,414</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,414</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\Resources\RH.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\CacheEntryChangeMonitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\CacheEntryRemovedArguments.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\CacheEntryRemovedCallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\CacheEntryRemovedReason.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\CacheEntryUpdateArguments.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\CacheEntryUpdateCallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\CacheItem.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\CacheItemPolicy.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\CacheItemPriority.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\CacheMemoryMonitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\ChangeMonitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\Configuration\CachingSectionGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\Configuration\ConfigUtil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\Configuration\MemoryCacheElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\Configuration\MemoryCacheSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\Configuration\MemoryCacheSettingsCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\Dbg.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\DefaultCacheCapabilities.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\EntryState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\FileChangeMonitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\FileChangeNotificationSystem.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\HostFileChangeMonitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\Hosting\IApplicationIdentifier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\Hosting\IFileChangeNotificationSystem.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\Hosting\IMemoryCacheManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\MemoryCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\MemoryCacheEntry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\MemoryCacheEntryChangeMonitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\MemoryCacheKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\MemoryCacheKeyEqualityComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\MemoryCacheStatistics.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\MemoryCacheStore.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\MemoryMonitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\ObjectCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\OnChangedCallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\PerfCounterName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\PerfCounters.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\PhysicalMemoryMonitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\SafeBitVector32.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\SafeRegistryHandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Caching\System\Caching\SqlChangeMonitor.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\System.Web\System.Web.Configuration_2.0\NullableStringValidator.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="ReferenceSources\CacheEntryCollection.cs" />\r
-    <Compile Include="ReferenceSources\CacheExpires.cs" />\r
-    <Compile Include="ReferenceSources\CacheUsage.cs" />\r
-    <Compile Include="ReferenceSources\R.Designer.cs" />\r
-    <Compile Include="ReferenceSources\SRef.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Runtime.Caching/System.Runtime.Caching-tests-net_4_5.csproj b/mcs/class/System.Runtime.Caching/System.Runtime.Caching-tests-net_4_5.csproj
deleted file mode 100644 (file)
index a66c3cb..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{98DDD6B7-792F-4E36-9ED0-141D0727D41F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Runtime.Caching-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Caching_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Common\AppDomainTools.cs" />\r
-    <Compile Include="Test\Common\AssertExtensions.cs" />\r
-    <Compile Include="Test\Common\PokerChangeMonitor.cs" />\r
-    <Compile Include="Test\Common\PokerMemoryCache.cs" />\r
-    <Compile Include="Test\Common\PokerObjectCache.cs" />\r
-    <Compile Include="Test\Common\TestNotificationSystem.cs" />\r
-    <Compile Include="Test\System.Runtime.Caching\HostFileChangeMonitorTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Caching\MemoryCacheTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Caching\ObjectCacheTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Caching\System.Runtime.Caching-net_4_5.csproj">\r
-      <Project>{CB3E9225-3DFF-4930-BFED-1E8AE5319C32}</Project>\r
-      <Name>System.Runtime.Caching\System.Runtime.Caching-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 8d9023b9ca5f7a0acf5890b5ddd623e76220006e..c82729741e3c2cd60fb064aafc8dead609f8d13d 100644 (file)
@@ -1172,11 +1172,10 @@ namespace MonoTests.System.Runtime.Caching
                        for (int i = 0; i < 10; i++)
                                mc.Set ("key" + i.ToString (), "value" + i.ToString (), null);
 
-                       // .NET doesn't touch the freshest 10 entries
                        Assert.AreEqual (10, mc.GetCount (), "#A1-1");
                        long trimmed = mc.Trim (50);
-                       Assert.AreEqual (0, trimmed, "#A1-2");
-                       Assert.AreEqual (10, mc.GetCount (), "#A1-3");
+                       Assert.AreEqual (5, trimmed, "#A1-2");
+                       Assert.AreEqual (5, mc.GetCount (), "#A1-3");
 
                        mc = new MemoryCache ("MyCache", config);
                        // Only entries 11- are considered for removal
@@ -1185,8 +1184,8 @@ namespace MonoTests.System.Runtime.Caching
 
                        Assert.AreEqual (11, mc.GetCount (), "#A2-1");
                        trimmed = mc.Trim (50);
-                       Assert.AreEqual (1, trimmed, "#A2-2");
-                       Assert.AreEqual (10, mc.GetCount (), "#A2-3");
+                       Assert.AreEqual (6, trimmed, "#A2-2");
+                       Assert.AreEqual (5, mc.GetCount (), "#A2-3");
 
                        mc = new MemoryCache ("MyCache", config);
                        // Only entries 11- are considered for removal
@@ -1195,8 +1194,8 @@ namespace MonoTests.System.Runtime.Caching
 
                        Assert.AreEqual (125, mc.GetCount (), "#A3-1");
                        trimmed = mc.Trim (50);
-                       Assert.AreEqual (62, trimmed, "#A3-2");
-                       Assert.AreEqual (63, mc.GetCount (), "#A3-3");
+                       Assert.AreEqual (63, trimmed, "#A3-2");
+                       Assert.AreEqual (62, mc.GetCount (), "#A3-3");
 
                        // Testing the removal order
                        mc = new MemoryCache ("MyCache", config);
diff --git a/mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-net_4_5.csproj b/mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-net_4_5.csproj
deleted file mode 100644 (file)
index cbb7b1c..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{04DAD425-06C0-481B-9787-D2D4BFF196F5}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.DurableInstancing</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\DisassociateInstanceKeysExtension.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\IDurableInstancingOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceCollisionException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceCompleteException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceHandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceHandleConflictException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceHandleReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceKeyCollisionException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceKeyCompleteException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceKeyNotReadyException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceKeyState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceKeyView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceLockedException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceLockLostException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceLockQueryResult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceNormalEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceNotReadyException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceOwner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceOwnerException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceOwnerQueryResult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstancePersistence.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstancePersistenceCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstancePersistenceCommandException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstancePersistenceContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstancePersistenceEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstancePersistenceException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceStore.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceStoreQueryResult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceValue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceValueConsistency.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceValueOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\DurableInstancing\InstanceView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\ICancelable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\IPersistencePipelineModule.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\PersistenceMetadataNamespace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\PersistencePipeline.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\TransactedAsyncResult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\TransactionHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\Workflow45Namespace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\WorkflowNamespace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.DurableInstancing\System\Runtime\WorkflowServiceNamespace.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\..\build\common\SR.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="SRCore.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
-      <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel.Internals/System.ServiceModel.Internals-net_4_5.csproj">\r
-      <Project>{9C41A885-1D86-4508-B6F7-155D4B7BF441}</Project>\r
-      <Name>System.ServiceModel.Internals-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-tests-net_4_5.csproj b/mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 5b08902..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1EF37C09-E9CB-404B-BAF0-1877456C0799}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Runtime.DurableInstancing-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.DurableInstancing_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Runtime.DurableInstancing\InstancePersistenceEventTest.cs" />\r
-    <Compile Include="Test\System.Runtime.DurableInstancing\InstanceValueTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_5.csproj">\r
-      <Project>{04DAD425-06C0-481B-9787-D2D4BFF196F5}</Project>\r
-      <Name>System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_4_5.csproj b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_4_5.csproj
deleted file mode 100644 (file)
index ad5cb5c..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AD033C6B-F765-4B4D-B8D0-7C81C4194DAB}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Remoting</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Http\AggregateDictionary.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Http\HttpChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Http\HttpClientChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Http\HttpClientTransportSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Http\HttpClientTransportSinkProvider.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Http\HttpRemotingHandler.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Http\HttpRemotingHandlerFactory.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Http\HttpServerChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Http\HttpServerTransportSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Http\RemotingHttpListener.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Unix\IpcChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Unix\IpcClientChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Unix\IpcServerChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Unix\UnixChannelLoader.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Win32\IpcChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Win32\IpcChannelHelper.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Win32\IpcClientChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Win32\IpcServerChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Win32\IpcTransport.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Win32\NamedPipeClient.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Win32\NamedPipeException.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Win32\NamedPipeHelper.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Win32\NamedPipeListener.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Win32\NamedPipeSocket.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc.Win32\NamedPipeStream.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc\IpcChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc\IpcClientChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Ipc\IpcServerChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Tcp\TcpChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Tcp\TcpClientChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Tcp\TcpClientTransportSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Tcp\TcpClientTransportSinkProvider.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Tcp\TcpConnectionPool.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Tcp\TcpMessageIO.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Tcp\TcpServerChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels.Tcp\TcpServerTransportSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\BinaryClientFormatterSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\BinaryClientFormatterSinkProvider.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\BinaryCore.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\BinaryServerFormatterSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\BinaryServerFormatterSinkProvider.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\ChannelCore.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\CommonTransportKeys.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IAuthorizeRemotingConnection.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\RemotingThreadPool.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\SoapClientFormatterSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\SoapClientFormatterSinkProvider.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\SoapCore.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\SoapMessageFormatter.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\SoapServerFormatterSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\SoapServerFormatterSinkProvider.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\SocketCachePolicy.cs" />\r
-    <Compile Include="System.Runtime.Remoting.MetadataServices\MetaData.cs" />\r
-    <Compile Include="System.Runtime.Remoting.MetadataServices\MetaDataCodeGenerator.cs" />\r
-    <Compile Include="System.Runtime.Remoting.MetadataServices\MetaDataExporter.cs" />\r
-    <Compile Include="System.Runtime.Remoting.MetadataServices\SdlChannelSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.MetadataServices\SdlChannelSinkProvider.cs" />\r
-    <Compile Include="System.Runtime.Remoting.MetadataServices\SdlType.cs" />\r
-    <Compile Include="System.Runtime.Remoting.MetadataServices\ServiceType.cs" />\r
-    <Compile Include="System.Runtime.Remoting.MetadataServices\SUDSGeneratorException.cs" />\r
-    <Compile Include="System.Runtime.Remoting.MetadataServices\SUDSParserException.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Services\RemotingClientProxy.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Services\RemotingService.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-tests-net_4_5.csproj b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 6f7d205..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{024A9C29-BE48-4A14-8E88-D2B5E2F14ECF}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>bin\Debug\System.Runtime.Remoting-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Remoting_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\ActivationTests.cs" />\r
-    <Compile Include="Test\AsyncCalls.cs" />\r
-    <Compile Include="Test\BaseCalls.cs" />\r
-    <Compile Include="Test\CallSeq.cs" />\r
-    <Compile Include="Test\ContextHookAttribute.cs" />\r
-    <Compile Include="Test\ContextsTest.cs" />\r
-    <Compile Include="Test\CrossDomainCalls.cs" />\r
-    <Compile Include="Test\DelegateCalls.cs" />\r
-    <Compile Include="Test\GenericTest.cs" />\r
-    <Compile Include="Test\HttpBugTests.cs" />\r
-    <Compile Include="Test\HttpCalls.cs" />\r
-    <Compile Include="Test\HttpServerChannelTests.cs" />\r
-    <Compile Include="Test\IpcCalls.cs" />\r
-    <Compile Include="Test\IpcChannelTest.cs" />\r
-    <Compile Include="Test\ReflectionCalls.cs" />\r
-    <Compile Include="Test\RemotingServicesTest.cs" />\r
-    <Compile Include="Test\ServerObject.cs" />\r
-    <Compile Include="Test\SyncCalls.cs" />\r
-    <Compile Include="Test\System.Runtime.Remoting.Channels.Tcp\TcpChannelTest.cs" />\r
-    <Compile Include="Test\TcpCalls.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_4_5.csproj">\r
-      <Project>{AD033C6B-F765-4B4D-B8D0-7C81C4194DAB}</Project>\r
-      <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{85F119B8-8463-4D6F-9852-DAB8C4070BD5}</Project>\r
-      <Name>System.Web\System.Web-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_4_5.csproj">\r
-      <Project>{AD033C6B-F765-4B4D-B8D0-7C81C4194DAB}</Project>\r
-      <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 54a4146701fc947d8f95945a858fdb64db76e37b..831c69e72b54f79b0b9b454ec152261ea9864cc1 100644 (file)
@@ -28,6 +28,7 @@ namespace MonoTests.Remoting
                }
 
                [Test]
+               [Ignore ("https://bugzilla.xamarin.com/show_bug.cgi?id=36634")]
                public void Bug609381 ()
                {
                        string portName = "ipc" + Guid.NewGuid ().ToString ("N");
diff --git a/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj b/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj
deleted file mode 100644 (file)
index eff5096..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Serialization.Formatters.Soap</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Runtime.Serialization.Formatters.Soap\SoapFormatter.cs" />\r
-    <Compile Include="System.Runtime.Serialization.Formatters.Soap\SoapReader.cs" />\r
-    <Compile Include="System.Runtime.Serialization.Formatters.Soap\SoapTypeMapper.cs" />\r
-    <Compile Include="System.Runtime.Serialization.Formatters.Soap\SoapWriter.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-tests-net_4_5.csproj b/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 3efe252..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1013C4B5-DE6B-4861-A579-6EED7452E135}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Serialization.Formatters.Soap_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,169</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\AssemblyInfo.cs" />\r
-    <Compile Include="Test\InternalSoapValuesTest.cs" />\r
-    <Compile Include="Test\SerializationCallbackTest.cs" />\r
-    <Compile Include="Test\SerializationTest.cs" />\r
-    <Compile Include="Test\SoapFormatterTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 8b81beca399e62f21b64d824c95c92319eea01eb..e22f68af423678355b10d906fbb9a3d2c7b7f43c 100644 (file)
@@ -181,8 +181,8 @@ namespace System.Runtime.Serialization
                void ReadISerializable (ClassDataContract classContract)
                {
                        ConstructorInfo ctor = classContract.GetISerializableConstructor ();
-                       context.ReadSerializationInfo (xmlReader, classContract.UnderlyingType);
-                       ctor.Invoke (objectLocal, new object [] {context.GetStreamingContext ()});
+                       var info = context.ReadSerializationInfo (xmlReader, classContract.UnderlyingType);
+                       ctor.Invoke (objectLocal, new object [] {info, context.GetStreamingContext ()});
                }
 
                void ReadClass (ClassDataContract classContract)
index 00e39ab6b65f92465496c8792df416735a1cbe6f..fdbcc77c5ba9a9dd2165481724d0e3d2285a8745 100644 (file)
@@ -469,8 +469,13 @@ namespace System.Runtime.Serialization
                                PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract(memberType);
                                if (primitiveContract != null && !writeXsiType)
                                        primitiveContract.XmlFormatContentWriterMethod.Invoke (writer, new object [] {memberValue});
-                               else
-                                       InternalSerialize(XmlFormatGeneratorStatics.InternalSerializeMethod, () => memberValue, memberType, writeXsiType);
+                               else {
+                                       // InternalSerialize(XmlFormatGeneratorStatics.InternalSerializeMethod, () => memberValue, memberType, writeXsiType);
+                                       var typeHandleValue = Type.GetTypeHandle (memberValue);
+                                       var isDeclaredType = typeHandleValue.Equals (CodeInterpreter.ConvertValue (memberValue, memberType, Globals.TypeOfObject));
+                                       
+                                       ctx.InternalSerialize (writer, memberValue, isDeclaredType, writeXsiType, DataContract.GetId (memberType.TypeHandle), memberType.TypeHandle);
+                               }
                        }
                        else
                        {
@@ -500,22 +505,19 @@ namespace System.Runtime.Serialization
                                                if (isNull2) {
                                                        XmlFormatGeneratorStatics.WriteNullMethod.Invoke (ctx, new object [] {writer, memberType, DataContract.IsTypeSerializable(memberType)});
                                                } else {
-                                                       InternalSerialize((isNullableOfT ? XmlFormatGeneratorStatics.InternalSerializeMethod : XmlFormatGeneratorStatics.InternalSerializeReferenceMethod),
-                                                               () => memberValue, memberType, writeXsiType);
+                                                       var typeHandleValue = Type.GetTypeHandle (memberValue);
+                                                       var isDeclaredType = typeHandleValue.Equals (CodeInterpreter.ConvertValue (memberValue, memberType, Globals.TypeOfObject));
+                                                       if (isNullableOfT)
+                                                               ctx.InternalSerialize (writer, memberValue, isDeclaredType, writeXsiType, DataContract.GetId (memberType.TypeHandle), memberType.TypeHandle);
+                                                       else
+                                                               ctx.InternalSerializeReference (writer, memberValue, isDeclaredType, writeXsiType, DataContract.GetId (memberType.TypeHandle), memberType.TypeHandle);                                                          
+                                                       //InternalSerialize((isNullableOfT ? XmlFormatGeneratorStatics.InternalSerializeMethod : XmlFormatGeneratorStatics.InternalSerializeReferenceMethod), () => memberValue, memberType, writeXsiType);
                                                }
                                        }
                                }
                        }
                }
 
-               void InternalSerialize (MethodInfo methodInfo, Func<object> memberValue, Type memberType, bool writeXsiType)
-               {
-                       var v = memberValue ();
-                       var typeHandleValue = Type.GetTypeHandle (v);
-                       var isDeclaredType = typeHandleValue.Equals (CodeInterpreter.ConvertValue (v, memberType, Globals.TypeOfObject));
-                       methodInfo.Invoke (ctx, new object [] {writer, memberValue != null ? v : null, isDeclaredType, writeXsiType, DataContract.GetId (memberType.TypeHandle), memberType.TypeHandle});
-               }
-
                object UnwrapNullableObject(Func<object> memberValue, ref Type memberType, out bool isNull)// Leaves !HasValue on stack
                {
                        object v = memberValue ();
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj
deleted file mode 100644 (file)
index d1251b4..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{08FF4C26-9C12-433D-AE90-43370046387A}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,168,169,219,414</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Serialization</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,168,169,219,414</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NO_DYNAMIC_CODEGEN;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,168,169,219,414</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NO_DYNAMIC_CODEGEN;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\AppSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Attributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\ClassDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\CodeExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\CollectionDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\CollectionDataContractAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\ConfigurationStrings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\DataContractSerializerSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\DeclaredTypeElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\DeclaredTypeElementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\DeclaredTypeValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\DeclaredTypeValidatorAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\NetDataContractSerializerSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\ParameterElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\ParameterElementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\Properties.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\SerializationSectionGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\TypeElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Configuration\TypeElementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\ContractCodeDomInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\ContractNamespaceAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\DataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\DataContractAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\DataContractResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\DataContractSerializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\DataContractSerializerSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\DataContractSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\DataMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\DataMemberAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\DateTimeFormat.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\DateTimeOffsetAdapter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Diagnostics\TraceCode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Diagnostics\TraceUtility.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\DictionaryGlobals.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\EmitTypeInformation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\EnumDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\EnumMemberAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\ExportOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\ExtensionDataObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\ExtensionDataReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\GenericParameterDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Globals.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\HybridObjectCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\IDataContractSurrogate.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\IExtensibleDataObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\IgnoreDataMemberAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\ImportOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\InvalidDataContractException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\ByteArrayHelperWithString.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\DataContractJsonSerializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\DataContractJsonSerializerSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\IXmlJsonReaderInitializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\IXmlJsonWriterInitializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonByteArrayDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonClassDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonCollectionDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonEncodingStreamWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonEnumDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonFormatGeneratorStatics.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonFormatReaderGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonFormatWriterGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonGlobals.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonNodeType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonObjectDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonQNameDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonReaderDelegator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonReaderWriterFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonStringDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonUriDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonWriterDelegator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\JsonXmlDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\XmlJsonReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\XmlJsonWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\XmlObjectSerializerReadContextComplexJson.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\Json\XmlObjectSerializerWriteContextComplexJson.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\KnownTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\KnownTypeDataContractResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\NetDataContractSerializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\ObjectReferenceStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\ObjectToIdCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\PrimitiveDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\SchemaExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\SchemaHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\SchemaImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\ScopedKnownTypes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\SerializationMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\SerializationPermissionNotRequiredAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\SerializationTrace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\SpecialTypeDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\SurrogateDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\TypeInformation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlDataContract.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlFormatGeneratorStatics.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlFormatReaderGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlFormatWriterGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlObjectSerializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlObjectSerializerContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlObjectSerializerReadContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlObjectSerializerReadContextComplex.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlObjectSerializerWriteContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlObjectSerializerWriteContextComplex.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlReaderDelegator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlSerializableReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlSerializableServices.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlSerializableWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XmlWriterDelegator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XPathQueryGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XsdDataContractExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Runtime\Serialization\XsdDataContractImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Text\Base64Encoding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Text\BinHexEncoding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Text\SurrogateChar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\ArrayHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\EncodingStreamWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\IFragmentCapableXmlDictionaryWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\IStreamProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\IXmlDictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\PrefixHandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\StringHandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\UniqueID.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\ValueHandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlBaseReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlBaseWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlBinaryNodeType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlBinaryReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlBinaryReaderSession.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlBinaryWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlBinaryWriterSession.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlBufferReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlC14NWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlDelegatedReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlDelegatedWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlDictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlDictionaryReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlDictionaryReaderQuotas.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlDictionaryString.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlDictionaryWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlMtomReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlMtomWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlNodeWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlNodeWriterWriteBase64TextArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlSigningNodeWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlStreamNodeWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlUTF8TextReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlUTF8TextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\System\Xml\XmlWriteBase64AsyncArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Runtime.Serialization\TD.Designer.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\SR.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="ReferenceSources\BitFlagsGenerator.cs" />\r
-    <Compile Include="ReferenceSources\CodeInterpreter.cs" />\r
-    <Compile Include="ReferenceSources\DiagnosticUtility.cs" />\r
-    <Compile Include="ReferenceSources\FxTrace.cs" />\r
-    <Compile Include="ReferenceSources\JsonFormatReaderGenerator_static.cs" />\r
-    <Compile Include="ReferenceSources\JsonFormatWriterGenerator_static.cs" />\r
-    <Compile Include="ReferenceSources\SR.cs" />\r
-    <Compile Include="ReferenceSources\SR_missing.cs" />\r
-    <Compile Include="ReferenceSources\XmlDataContract_static.cs" />\r
-    <Compile Include="ReferenceSources\XmlExceptionHelper.cs" />\r
-    <Compile Include="ReferenceSources\XmlFormatReaderGenerator_static.cs" />\r
-    <Compile Include="ReferenceSources\XmlFormatWriterGenerator_static.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel.Internals/System.ServiceModel.Internals-net_4_5.csproj">\r
-      <Project>{9C41A885-1D86-4508-B6F7-155D4B7BF441}</Project>\r
-      <Name>System.ServiceModel.Internals-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../SMDiagnostics/SMDiagnostics-net_4_5.csproj">\r
-      <Project>{643FEEB8-DDEB-4204-9C95-344BAA753C58}</Project>\r
-      <Name>SMDiagnostics-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-tests-net_4_5.csproj b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 44cfc10..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4EC3A502-D982-45B0-80F5-AC9873D03434}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,168,169,219,414</NoWarn>\r
-    <OutputPath>bin\Debug\System.Runtime.Serialization-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Runtime.Serialization_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,168,169,219,414</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,168,169,219,414</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Runtime.Serialization\AttributesTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\Bug242Test.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\Bug2843Test.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\Bug3258Test.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\Bug666333Test.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\Bug675144Test.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\Bug695203Test.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\CollectionSerialization.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\DataContractResolverTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_DuplicateQName.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_InvalidCharacters.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_NullableWithDictionary.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\KnownTypeAttributeTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\WsdlHelper.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\XmlObjectSerializerTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\XsdDataContractExporterTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\XsdDataContractExporterTest2.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\XsdDataContractImporterTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\XsdDataContractImporterTest2.cs" />\r
-    <Compile Include="Test\System.Xml\UniqueIdTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlBinaryDictionaryReaderTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlBinaryDictionaryWriterTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlBinaryWriterSessionTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDictionaryReaderAbstractTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDictionaryReaderQuotasTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDictionaryStringTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDictionaryTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDictionaryWriterTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlMtomDictionaryWriterTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlSimpleDictionaryWriterTest.cs" />\r
-    <Compile Include="Test\XmlComparer.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0-1.csproj">\r
-      <Project>{CB54BC7B-F3CD-43DC-B983-3FFFF41D01E1}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_0-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/mstypes.schema">\r
-      <LogicalName>mstypes.schema</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/Resources/WSDL/collections.wsdl">\r
-      <LogicalName>collections.wsdl</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/Resources/WSDL/custom-collections.wsdl">\r
-      <LogicalName>custom-collections.wsdl</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index 448ad85b32e790964e536cfc48b3989be6bd9a37..b0c9706a1dbdd42ab798bdfcf4cfebe807e8ef57 100644 (file)
@@ -1,3 +1,6 @@
+System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs
+System.Runtime.Serialization.Json/JsonReaderTest.cs
+System.Runtime.Serialization.Json/JsonWriterTest.cs
 System.Runtime.Serialization/Bug11916Test.cs
 System.Runtime.Serialization/Bug666333Test.cs
 System.Runtime.Serialization/Bug675144Test.cs
@@ -5,10 +8,12 @@ System.Runtime.Serialization/Bug2843Test.cs
 System.Runtime.Serialization/Bug3258Test.cs
 System.Runtime.Serialization/Bug242Test.cs
 System.Runtime.Serialization/Bug695203Test.cs
+System.Runtime.Serialization/Bug36100.cs
 System.Runtime.Serialization/DataContractResolverTest.cs
 System.Runtime.Serialization/DataContractSerializerTest_DuplicateQName.cs
 System.Runtime.Serialization/DataContractSerializerTest_NullableWithDictionary.cs
 System.Runtime.Serialization/DataContractSerializerTest_InvalidCharacters.cs
+System.Runtime.Serialization/DataContractSerializerTest_ISerializable.cs
 System.Runtime.Serialization/DataContractSerializerTest.cs
 System.Runtime.Serialization/KnownTypeAttributeTest.cs
 System.Runtime.Serialization/XmlObjectSerializerTest.cs
diff --git a/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization.Json/ChangeLog b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization.Json/ChangeLog
new file mode 100644 (file)
index 0000000..532e123
--- /dev/null
@@ -0,0 +1,125 @@
+2010-07-06  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : add test for bug #615800.
+
+2010-07-06  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : add test for bug #615801.
+
+2010-04-05  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : don't use ToUniversalTime()
+         which makes test results timezone dependent.
+
+2010-03-10  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : oops, the test was careless.
+         Use fixed date.
+
+2010-03-09  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : add test for bug #586169.
+       * JsonWriterTest.cs : add standalone write case for "\/".
+
+2010-01-27  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs :
+         enable TypeIsNotPartsOfKnownTypes(), and add more related tests.
+
+2010-01-27  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : make some tests narrow down
+         possible cause of errors to detect expected errors more precisely.
+
+2010-01-27  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : null-string case is working.
+
+2010-01-27  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : invalidate previous non-working
+         tests.
+
+2010-01-25  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * DataContractJsonSerializerTest.cs: Add non-working test cases
+       for null-string, known types and handling floating point special
+       values
+
+2009-12-11  Chris Toshok  <toshok@ximian.com>
+
+       * DataContractJsonSerializerTest.cs: add a test case for
+       non-public properties.
+
+2009-12-11  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * JsonReaderTest.cs : another number parse case.
+
+2009-11-20  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : added ignored test case that
+         verifies 2.1 behavior (with another case that justifies removal
+         of the previous hack).
+
+2009-10-08  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : added test for
+         alwaysEmitTypeInformation argument.
+
+2009-09-07  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : fix non-datacontract
+         serialization test. It depended on IPAddress field internals
+         (runtime serialization incompatibility).
+
+2009-03-13  Andreia Gaita  <avidigal@novell.com>
+
+       * JsonReaderTest.cs: test for skip and depth (if depth fails, skip is affected)
+
+2009-02-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : fixed some tests to match
+         .NET RTM behavior. Added read-only collection case, (but [Ignore]d).
+
+2009-02-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : added test for contract-less
+         serialization.
+
+2008-02-18  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : added couple of DBNull tests.
+
+2008-01-30  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : added deserialization tests
+         for typed object with "__type".
+
+2008-01-30  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * JsonReaderTest.cs : test GetAttribute() for "__type".
+
+2008-01-30  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * JsonReaderTest.cs : added tests for "__type" attributes (some of
+         them are not working yet).
+
+2008-01-24  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * JsonReaderTest.cs : test "type" attribute in several nodes.
+
+2008-01-24  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs : some more deserialization tests.
+
+2008-01-22  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * JsonWriterTest.cs : added test for writing __type attribute.
+       * DataContractJsonSerializerTest.cs : added more random-ish tests.
+
+2007-12-05  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DataContractJsonSerializerTest.cs :
+         moved from Test/System.Runtime.Serialization and fixed some.
+       * JsonReaderTest.cs, JsonWriterTest.cs : moved from Test/System.Xml.
+
diff --git a/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs
new file mode 100644 (file)
index 0000000..96e7b26
--- /dev/null
@@ -0,0 +1,2812 @@
+//
+// DataContractJsonSerializerTest.cs
+//
+// Author:
+//     Atsushi Enomoto <atsushi@ximian.com>
+//     Ankit Jain <JAnkit@novell.com>
+//     Antoine Cailliau <antoinecailliau@gmail.com>
+//
+// Copyright (C) 2005-2007 Novell, Inc.  http://www.novell.com
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+//
+// This test code contains tests for DataContractJsonSerializer, which is
+// imported from DataContractSerializerTest.cs.
+//
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.IO;
+using System.Net;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Json;
+using System.Text;
+using System.Xml;
+using NUnit.Framework;
+
+namespace MonoTests.System.Runtime.Serialization.Json
+{
+       [TestFixture]
+       public class DataContractJsonSerializerTest
+       {
+               static readonly XmlWriterSettings settings;
+
+               static DataContractJsonSerializerTest ()
+               {
+                       settings = new XmlWriterSettings ();
+                       settings.OmitXmlDeclaration = true;
+               }
+
+               [DataContract]
+               class Sample1
+               {
+                       [DataMember]
+                       public string Member1;
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void ConstructorTypeNull ()
+               {
+                       new DataContractJsonSerializer (null);
+               }
+
+               [Test]
+               public void ConstructorKnownTypesNull ()
+               {
+                       // null knownTypes is allowed.
+                       new DataContractJsonSerializer (typeof (Sample1), (IEnumerable<Type>) null);
+                       new DataContractJsonSerializer (typeof (Sample1), "Foo", null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void ConstructorNameNull ()
+               {
+                       new DataContractJsonSerializer (typeof (Sample1), (string) null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentOutOfRangeException))]
+               public void ConstructorNegativeMaxObjects ()
+               {
+                       new DataContractJsonSerializer (typeof (Sample1), "Sample1",
+                               null, -1, false, null, false);
+               }
+
+               [Test]
+               public void ConstructorMisc ()
+               {
+                       new DataContractJsonSerializer (typeof (JsonGlobalSample1)).WriteObject (new MemoryStream (), new JsonGlobalSample1 ());
+               }
+
+               [Test]
+               public void WriteObjectContent ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       using (XmlWriter xw = XmlWriter.Create (sw, settings)) {
+                               DataContractJsonSerializer ser =
+                                       new DataContractJsonSerializer (typeof (string));
+                               xw.WriteStartElement ("my-element");
+                               ser.WriteObjectContent (xw, "TEST STRING");
+                               xw.WriteEndElement ();
+                       }
+                       Assert.AreEqual ("<my-element>TEST STRING</my-element>",
+                               sw.ToString ());
+               }
+
+               // int
+
+               [Test]
+               public void SerializeIntXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeInt (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""number"">1</root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeIntJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeInt (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               "1",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeInt (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser =
+                               new DataContractJsonSerializer (typeof (int));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, 1);
+                       }
+               }
+
+               // int, with rootName
+
+               [Test]
+               public void SerializeIntXmlWithRootName ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeIntWithRootName (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<myroot type=""number"">1</myroot>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               // since JsonWriter supports only "root" as the root name, using
+               // XmlWriter from JsonReaderWriterFactory will always fail with
+               // an explicit rootName.
+               [ExpectedException (typeof (SerializationException))]
+               public void SerializeIntJsonWithRootName ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeIntWithRootName (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               "1",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeIntWithRootName (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser =
+                               new DataContractJsonSerializer (typeof (int), "myroot");
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, 1);
+                       }
+               }
+
+               // pass typeof(DCEmpty), serialize int
+
+               [Test]
+               public void SerializeIntForDCEmptyXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeIntForDCEmpty (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""number"">1</root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeIntForDCEmptyJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeIntForDCEmpty (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               "1",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeIntForDCEmpty (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser =
+                               new DataContractJsonSerializer (typeof (DCEmpty));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, 1);
+                       }
+               }
+
+               // DCEmpty
+
+               [Test]
+               public void SerializeEmptyClassXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeEmptyClass (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""object"" />",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeEmptyClassJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeEmptyClass (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               "{}",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeEmptyClass (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser =
+                               new DataContractJsonSerializer (typeof (DCEmpty));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, new DCEmpty ());
+                       }
+               }
+
+               // string (primitive)
+
+               [Test]
+               public void SerializePrimitiveStringXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializePrimitiveString (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               "<root>TEST</root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializePrimitiveStringJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializePrimitiveString (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               @"""TEST""",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializePrimitiveString (XmlWriter writer)
+               {
+                       XmlObjectSerializer ser =
+                               new DataContractJsonSerializer (typeof (string));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, "TEST");
+                       }
+               }
+
+               // QName (primitive but ...)
+
+               [Test]
+               public void SerializePrimitiveQNameXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializePrimitiveQName (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               "<root>foo:urn:foo</root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializePrimitiveQNameJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializePrimitiveQName (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               @"""foo:urn:foo""",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializePrimitiveQName (XmlWriter writer)
+               {
+                       XmlObjectSerializer ser =
+                               new DataContractJsonSerializer (typeof (XmlQualifiedName));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, new XmlQualifiedName ("foo", "urn:foo"));
+                       }
+               }
+
+               // DBNull (primitive)
+
+               [Test]
+               public void SerializeDBNullXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeDBNull (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""object"" />",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeDBNullJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeDBNull (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               "{}",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeDBNull (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser =
+                               new DataContractJsonSerializer (typeof (DBNull));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, DBNull.Value);
+                       }
+               }
+
+               // DCSimple1
+
+               [Test]
+               public void SerializeSimpleClass1Xml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeSimpleClass1 (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""object""><Foo>TEST</Foo></root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeSimpleClass1Json ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeSimpleClass1 (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               @"{""Foo"":""TEST""}",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeSimpleClass1 (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser =
+                               new DataContractJsonSerializer (typeof (DCSimple1));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, new DCSimple1 ());
+                       }
+               }
+
+               // NonDC
+
+               [Test]
+               // NonDC is not a DataContract type.
+               public void SerializeNonDCOnlyCtor ()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (NonDC));
+               }
+
+               [Test]
+               //[ExpectedException (typeof (InvalidDataContractException))]
+               // NonDC is not a DataContract type.
+               // UPDATE: non-DataContract types are became valid in RTM.
+               public void SerializeNonDC ()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (NonDC));
+                       using (XmlWriter w = XmlWriter.Create (TextWriter.Null, settings)) {
+                               ser.WriteObject (w, new NonDC ());
+                       }
+               }
+
+               // DCHasNonDC
+
+               [Test]
+               //[ExpectedException (typeof (InvalidDataContractException))]
+               // DCHasNonDC itself is a DataContract type whose field is
+               // marked as DataMember but its type is not DataContract.
+               // UPDATE: non-DataContract types are became valid in RTM.
+               public void SerializeDCHasNonDC ()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCHasNonDC));
+                       using (XmlWriter w = XmlWriter.Create (TextWriter.Null, settings)) {
+                               ser.WriteObject (w, new DCHasNonDC ());
+                       }
+               }
+
+               // DCHasSerializable
+
+               [Test]
+               public void SerializeSimpleSerializable1Xml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeSimpleSerializable1 (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""object""><Ser type=""object""><Doh>doh!</Doh></Ser></root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeSimpleSerializable1Json ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeSimpleSerializable1 (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               @"{""Ser"":{""Doh"":""doh!""}}",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               // DCHasSerializable itself is DataContract and has a field
+               // whose type is not contract but serializable.
+               void SerializeSimpleSerializable1 (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCHasSerializable));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, new DCHasSerializable ());
+                       }
+               }
+
+               [Test]
+               public void SerializeDCWithNameXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeDCWithName (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""object""><FooMember>value</FooMember></root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeDCWithNameJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeDCWithName (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               @"{""FooMember"":""value""}",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeDCWithName (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithName));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, new DCWithName ());
+                       }
+               }
+
+               [Test]
+               public void SerializeDCWithEmptyName1 ()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithEmptyName));
+                       StringWriter sw = new StringWriter ();
+                       DCWithEmptyName dc = new DCWithEmptyName ();
+                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
+                               try {
+                                       ser.WriteObject (w, dc);
+                               } catch (InvalidDataContractException) {
+                                       return;
+                               }
+                       }
+                       Assert.Fail ("Expected InvalidDataContractException");
+               }
+
+               [Test]
+               public void SerializeDCWithEmptyName2 ()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithName));
+                       StringWriter sw = new StringWriter ();
+
+                       /* DataContractAttribute.Name == "", not valid */
+                       DCWithEmptyName dc = new DCWithEmptyName ();
+                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
+                               try {
+                                       ser.WriteObject (w, dc);
+                               } catch (InvalidDataContractException) {
+                                       return;
+                               }
+                       }
+                       Assert.Fail ("Expected InvalidDataContractException");
+               }
+
+               [Test]
+               [Category("NotWorking")]
+               public void SerializeDCWithNullName ()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithNullName));
+                       StringWriter sw = new StringWriter ();
+                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
+                               try {
+                                       /* DataContractAttribute.Name == "", not valid */
+                                       ser.WriteObject (w, new DCWithNullName ());
+                               } catch (InvalidDataContractException) {
+                                       return;
+                               }
+                       }
+                       Assert.Fail ("Expected InvalidDataContractException");
+               }
+
+               [Test]
+               public void SerializeDCWithEmptyNamespace1 ()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithEmptyNamespace));
+                       StringWriter sw = new StringWriter ();
+                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
+                               ser.WriteObject (w, new DCWithEmptyNamespace ());
+                       }
+               }
+
+               [Test]
+               public void SerializeWrappedClassXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeWrappedClass (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""object"" />",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeWrappedClassJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeWrappedClass (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               "{}",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeWrappedClass (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser =
+                               new DataContractJsonSerializer (typeof (Wrapper.DCWrapped));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, new Wrapper.DCWrapped ());
+                       }
+               }
+
+               // CollectionContainer : Items must have a setter. (but became valid in RTM).
+               [Test]
+               public void SerializeReadOnlyCollectionMember ()
+               {
+                       DataContractJsonSerializer ser =
+                               new DataContractJsonSerializer (typeof (CollectionContainer));
+                       StringWriter sw = new StringWriter ();
+                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
+                               ser.WriteObject (w, null);
+                       }
+               }
+
+               // DataCollectionContainer : Items must have a setter. (but became valid in RTM).
+               [Test]
+               public void SerializeReadOnlyDataCollectionMember ()
+               {
+                       DataContractJsonSerializer ser =
+                               new DataContractJsonSerializer (typeof (DataCollectionContainer));
+                       StringWriter sw = new StringWriter ();
+                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
+                               ser.WriteObject (w, null);
+                       }
+               }
+
+               [Test]
+               [Ignore ("https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=409970")]
+               [ExpectedException (typeof (SerializationException))]
+               public void DeserializeReadOnlyDataCollection_NullCollection ()
+               {
+                       DataContractJsonSerializer ser =
+                               new DataContractJsonSerializer (typeof (CollectionContainer));
+                       StringWriter sw = new StringWriter ();
+                       var c = new CollectionContainer ();
+                       c.Items.Add ("foo");
+                       c.Items.Add ("bar");
+                       using (XmlWriter w = XmlWriter.Create (sw, settings))
+                               ser.WriteObject (w, c);
+                       // CollectionContainer.Items is null, so it cannot deserialize non-null collection.
+                       using (XmlReader r = XmlReader.Create (new StringReader (sw.ToString ())))
+                               c = (CollectionContainer) ser.ReadObject (r);
+               }
+
+               [Test]
+               public void SerializeGuidXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeGuid (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root>00000000-0000-0000-0000-000000000000</root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeGuidJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeGuid (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               @"""00000000-0000-0000-0000-000000000000""",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeGuid (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (Guid));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, Guid.Empty);
+                       }
+               }
+
+               [Test]
+               public void SerializeEnumXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeEnum (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""number"">0</root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeEnumJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeEnum (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               "0",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeEnum (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (Colors));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, new Colors ());
+                       }
+               }
+
+               [Test]
+               public void SerializeEnum2Xml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeEnum2 (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""number"">0</root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeEnum2Json ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeEnum2 (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               "0",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeEnum2 (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (Colors));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, 0);
+                       }
+               }
+
+               [Test] // so, DataContract does not affect here.
+               public void SerializeEnumWithDCXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeEnumWithDC (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""number"">0</root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeEnumWithDCJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeEnumWithDC (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               "0",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeEnumWithDC (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (ColorsWithDC));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, new ColorsWithDC ());
+                       }
+               }
+
+               [Test]
+               public void SerializeEnumWithNoDCXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeEnumWithNoDC (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""number"">0</root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeEnumWithNoDCJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeEnumWithNoDC (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               "0",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeEnumWithNoDC (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (ColorsEnumMemberNoDC));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, new ColorsEnumMemberNoDC ());
+                       }
+               }
+
+               [Test]
+               public void SerializeEnumWithDC2Xml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeEnumWithDC2 (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""number"">3</root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeEnumWithDC2Json ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeEnumWithDC2 (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               "3",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeEnumWithDC2 (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (ColorsWithDC));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, 3);
+                       }
+               }
+
+/*
+               [Test]
+               [ExpectedException (typeof (SerializationException))]
+               public void SerializeEnumWithDCInvalid ()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (ColorsWithDC));
+                       StringWriter sw = new StringWriter ();
+                       ColorsWithDC cdc = ColorsWithDC.Blue;
+                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
+                               ser.WriteObject (w, cdc);
+                       }
+               }
+*/
+
+               [Test]
+               public void SerializeDCWithEnumXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializeDCWithEnum (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""object""><_colors type=""number"">0</_colors></root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeDCWithEnumJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializeDCWithEnum (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               @"{""_colors"":0}",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializeDCWithEnum (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithEnum));
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, new DCWithEnum ());
+                       }
+               }
+
+               [Test]
+               public void SerializerDCArrayXml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializerDCArray (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""array""><item type=""object""><_colors type=""number"">0</_colors></item><item type=""object""><_colors type=""number"">1</_colors></item></root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializerDCArrayJson ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializerDCArray (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               @"[{""_colors"":0},{""_colors"":1}]",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializerDCArray (XmlWriter writer)
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithEnum []));
+                       DCWithEnum [] arr = new DCWithEnum [2];
+                       arr [0] = new DCWithEnum (); arr [0].colors = Colors.Red;
+                       arr [1] = new DCWithEnum (); arr [1].colors = Colors.Green;
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, arr);
+                       }
+               }
+
+               [Test]
+               public void SerializerDCArray2Xml ()
+               {
+                       StringWriter sw = new StringWriter ();
+                       SerializerDCArray2 (XmlWriter.Create (sw, settings));
+                       Assert.AreEqual (
+                               @"<root type=""array""><item __type=""DCWithEnum:#MonoTests.System.Runtime.Serialization.Json"" type=""object""><_colors type=""number"">0</_colors></item><item __type=""DCSimple1:#MonoTests.System.Runtime.Serialization.Json"" type=""object""><Foo>hello</Foo></item></root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializerDCArray2Json ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       SerializerDCArray2 (JsonReaderWriterFactory.CreateJsonWriter (ms));
+                       Assert.AreEqual (
+                               @"[{""__type"":""DCWithEnum:#MonoTests.System.Runtime.Serialization.Json"",""_colors"":0},{""__type"":""DCSimple1:#MonoTests.System.Runtime.Serialization.Json"",""Foo"":""hello""}]",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               void SerializerDCArray2 (XmlWriter writer)
+               {
+                       List<Type> known = new List<Type> ();
+                       known.Add (typeof (DCWithEnum));
+                       known.Add (typeof (DCSimple1));
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (object []), known);
+                       object [] arr = new object [2];
+                       arr [0] = new DCWithEnum (); ((DCWithEnum)arr [0]).colors = Colors.Red;
+                       arr [1] = new DCSimple1 (); ((DCSimple1) arr [1]).Foo = "hello";
+
+                       using (XmlWriter w = writer) {
+                               ser.WriteObject (w, arr);
+                       }
+               }
+
+               [Test]
+               public void SerializerDCArray3Xml ()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (int []));
+                       StringWriter sw = new StringWriter ();
+                       int [] arr = new int [2];
+                       arr [0] = 1; arr [1] = 2;
+
+                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
+                               ser.WriteObject (w, arr);
+                       }
+
+                       Assert.AreEqual (
+                               @"<root type=""array""><item type=""number"">1</item><item type=""number"">2</item></root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializerDCArray3Json ()
+               {
+                       MemoryStream ms = new MemoryStream ();
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (int []));
+                       int [] arr = new int [2];
+                       arr [0] = 1; arr [1] = 2;
+
+                       using (XmlWriter w = JsonReaderWriterFactory.CreateJsonWriter (ms)) {
+                               ser.WriteObject (w, arr);
+                       }
+
+                       Assert.AreEqual (
+                               @"[1,2]",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               [Test]
+               // ... so, non-JSON XmlWriter is still accepted.
+               public void SerializeNonDCArrayXml ()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (SerializeNonDCArrayType));
+                       StringWriter sw = new StringWriter ();
+                       using (XmlWriter xw = XmlWriter.Create (sw, settings)) {
+                               ser.WriteObject (xw, new SerializeNonDCArrayType ());
+                       }
+                       Assert.AreEqual (@"<root type=""object""><IPAddresses type=""array"" /></root>",
+                               sw.ToString ());
+               }
+
+               [Test]
+               public void SerializeNonDCArrayJson ()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (SerializeNonDCArrayType));
+                       MemoryStream ms = new MemoryStream ();
+                       using (XmlWriter xw = JsonReaderWriterFactory.CreateJsonWriter (ms)) {
+                               ser.WriteObject (xw, new SerializeNonDCArrayType ());
+                       }
+                       Assert.AreEqual (@"{""IPAddresses"":[]}",
+                               Encoding.UTF8.GetString (ms.ToArray ()));
+               }
+
+               [Test]
+               public void SerializeNonDCArrayItems ()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (SerializeNonDCArrayType));
+                       StringWriter sw = new StringWriter ();
+                       using (XmlWriter xw = XmlWriter.Create (sw, settings)) {
+                               SerializeNonDCArrayType obj = new SerializeNonDCArrayType ();
+                               obj.IPAddresses = new NonDCItem [] {new NonDCItem () { Data = new byte [] {1, 2, 3, 4} } };
+                               ser.WriteObject (xw, obj);
+                       }
+
+                       XmlDocument doc = new XmlDocument ();
+                       doc.LoadXml (sw.ToString ());
+                       XmlNamespaceManager nsmgr = new XmlNamespaceManager (doc.NameTable);
+                       nsmgr.AddNamespace ("s", "http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization");
+                       nsmgr.AddNamespace ("n", "http://schemas.datacontract.org/2004/07/System.Net");
+                       nsmgr.AddNamespace ("a", "http://schemas.microsoft.com/2003/10/Serialization/Arrays");
+
+                       Assert.AreEqual (1, doc.SelectNodes ("/root/IPAddresses/item", nsmgr).Count, "#1");
+                       XmlElement el = doc.SelectSingleNode ("/root/IPAddresses/item/Data", nsmgr) as XmlElement;
+                       Assert.IsNotNull (el, "#3");
+                       Assert.AreEqual (4, el.SelectNodes ("item", nsmgr).Count, "#4");
+               }
+
+               [Test]
+               public void MaxItemsInObjectGraph1 ()
+               {
+                       // object count == maximum
+                       DataContractJsonSerializer s = new DataContractJsonSerializer (typeof (DCEmpty), null, 1, false, null, false);
+                       s.WriteObject (XmlWriter.Create (TextWriter.Null), new DCEmpty ());
+               }
+
+               [Test]
+               [ExpectedException (typeof (SerializationException))]
+               public void MaxItemsInObjectGraph2 ()
+               {
+                       // object count > maximum
+                       DataContractJsonSerializer s = new DataContractJsonSerializer (typeof (DCSimple1), null, 1, false, null, false);
+                       s.WriteObject (XmlWriter.Create (TextWriter.Null), new DCSimple1 ());
+               }
+
+               [Test]
+               public void DeserializeString ()
+               {
+                       Assert.AreEqual ("ABC", Deserialize ("\"ABC\"", typeof (string)));
+               }
+
+               [Test]
+               public void DeserializeInt ()
+               {
+                       Assert.AreEqual (5, Deserialize ("5", typeof (int)));
+               }
+
+               [Test]
+               public void DeserializeArray ()
+               {
+                       int [] ret = (int []) Deserialize ("[5,6,7]", typeof (int []));
+                       Assert.AreEqual (5, ret [0], "#1");
+                       Assert.AreEqual (6, ret [1], "#2");
+                       Assert.AreEqual (7, ret [2], "#3");
+               }
+
+               [Test]
+               public void DeserializeArrayUntyped ()
+               {
+                       object [] ret = (object []) Deserialize ("[5,6,7]", typeof (object []));
+                       Assert.AreEqual (5, ret [0], "#1");
+                       Assert.AreEqual (6, ret [1], "#2");
+                       Assert.AreEqual (7, ret [2], "#3");
+               }
+
+               [Test]
+               public void DeserializeMixedArray ()
+               {
+                       object [] ret = (object []) Deserialize ("[5,\"6\",false]", typeof (object []));
+                       Assert.AreEqual (5, ret [0], "#1");
+                       Assert.AreEqual ("6", ret [1], "#2");
+                       Assert.AreEqual (false, ret [2], "#3");
+               }
+
+               [Test]
+               [ExpectedException (typeof (SerializationException))]
+               public void DeserializeEmptyAsString ()
+               {
+                       // it somehow expects "root" which should have been already consumed.
+                       Deserialize ("", typeof (string));
+               }
+
+               [Test]
+               [ExpectedException (typeof (SerializationException))]
+               public void DeserializeEmptyAsInt ()
+               {
+                       // it somehow expects "root" which should have been already consumed.
+                       Deserialize ("", typeof (int));
+               }
+
+               [Test]
+               [ExpectedException (typeof (SerializationException))]
+               public void DeserializeEmptyAsDBNull ()
+               {
+                       // it somehow expects "root" which should have been already consumed.
+                       Deserialize ("", typeof (DBNull));
+               }
+
+               [Test]
+               public void DeserializeEmptyObjectAsString ()
+               {
+                       // looks like it is converted to ""
+                       Assert.AreEqual (String.Empty, Deserialize ("{}", typeof (string)));
+               }
+
+               [Test]
+               [ExpectedException (typeof (SerializationException))]
+               public void DeserializeEmptyObjectAsInt ()
+               {
+                       Deserialize ("{}", typeof (int));
+               }
+
+               [Test]
+               public void DeserializeEmptyObjectAsDBNull ()
+               {
+                       Assert.AreEqual (DBNull.Value, Deserialize ("{}", typeof (DBNull)));
+               }
+
+               [Test]
+               [ExpectedException (typeof (SerializationException))]
+               public void DeserializeEnumByName ()
+               {
+                       // enum is parsed into long
+                       Deserialize (@"""Red""", typeof (Colors));
+               }
+
+               [Test]
+               public void DeserializeEnum2 ()
+               {
+                       object o = Deserialize ("0", typeof (Colors));
+
+                       Assert.AreEqual (typeof (Colors), o.GetType (), "#de3");
+                       Colors c = (Colors) o;
+                       Assert.AreEqual (Colors.Red, c, "#de4");
+               }
+               
+               [Test]
+               [ExpectedException (typeof (SerializationException))]
+               public void DeserializeEnumInvalid ()
+               {
+                       Deserialize ("", typeof (Colors));
+               }
+
+               [Test]
+               [ExpectedException (typeof (SerializationException))]
+               [Ignore ("NotDotNet")] // 0.0 is an invalid Colors value.
+               public void DeserializeEnumInvalid3 ()
+               {
+                       //"0.0" instead of "0"
+                       Deserialize (
+                               "0.0",
+                               typeof (Colors));
+               }
+
+               [Test]
+               public void DeserializeEnumWithDC ()
+               {
+                       object o = Deserialize ("0", typeof (ColorsWithDC));
+                       
+                       Assert.AreEqual (typeof (ColorsWithDC), o.GetType (), "#de5");
+                       ColorsWithDC cdc = (ColorsWithDC) o;
+                       Assert.AreEqual (ColorsWithDC.Red, o, "#de6");
+               }
+
+               [Test]
+               [ExpectedException (typeof (SerializationException))]
+               [Ignore ("NotDotNet")] // 4 is an invalid Colors value.
+               [Category ("NotWorking")]
+               public void DeserializeEnumWithDCInvalid ()
+               {
+                       Deserialize (
+                               "4",
+                               typeof (ColorsWithDC));
+               }
+
+               [Test]
+               public void DeserializeDCWithEnum ()
+               {
+                       object o = Deserialize (
+                               "{\"_colors\":0}",
+                               typeof (DCWithEnum));
+
+                       Assert.AreEqual (typeof (DCWithEnum), o.GetType (), "#de7");
+                       DCWithEnum dc = (DCWithEnum) o;
+                       Assert.AreEqual (Colors.Red, dc.colors, "#de8");
+               }
+
+               [Test]
+               public void ReadObjectVerifyObjectNameFalse ()
+               {
+                       string xml = @"<any><Member1>bar</Member1></any>";
+                       object o = new DataContractJsonSerializer (typeof (VerifyObjectNameTestData))
+                               .ReadObject (XmlReader.Create (new StringReader (xml)), false);
+                       Assert.IsTrue (o is VerifyObjectNameTestData, "#1");
+
+                       string xml2 = @"<any><x:Member1 xmlns:x=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">bar</x:Member1></any>";
+                       o = new DataContractJsonSerializer (typeof (VerifyObjectNameTestData))
+                               .ReadObject (XmlReader.Create (new StringReader (xml2)), false);
+                       Assert.IsTrue (o is VerifyObjectNameTestData, "#2");
+               }
+
+               [Test]
+               [ExpectedException (typeof (SerializationException))]
+               public void ReadObjectVerifyObjectNameTrue ()
+               {
+                       string xml = @"<any><Member1>bar</Member1></any>";
+                       new DataContractJsonSerializer (typeof (VerifyObjectNameTestData))
+                               .ReadObject (XmlReader.Create (new StringReader (xml)), true);
+               }
+
+               [Test] // member name is out of scope
+               public void ReadObjectVerifyObjectNameTrue2 ()
+               {
+                       string xml = @"<root><Member2>bar</Member2></root>";
+                       new DataContractJsonSerializer (typeof (VerifyObjectNameTestData))
+                               .ReadObject (XmlReader.Create (new StringReader (xml)), true);
+               }
+
+               [Test]
+               public void ReadTypedObjectJson ()
+               {
+                       object o = Deserialize (@"{""__type"":""DCWithEnum:#MonoTests.System.Runtime.Serialization.Json"",""_colors"":0}", typeof (DCWithEnum));
+                       Assert.AreEqual (typeof (DCWithEnum), o.GetType ());
+               }
+
+               [Test]
+               public void ReadObjectDCArrayJson ()
+               {
+                       object o = Deserialize (@"[{""__type"":""DCWithEnum:#MonoTests.System.Runtime.Serialization.Json"",""_colors"":0}]",
+                               typeof (object []), typeof (DCWithEnum));
+                       Assert.AreEqual (typeof (object []), o.GetType (), "#1");
+                       object [] arr = (object []) o;
+                       Assert.AreEqual (typeof (DCWithEnum), arr [0].GetType (), "#2");
+               }
+
+               [Test]
+               public void ReadObjectDCArray2Json ()
+               {
+                       object o = Deserialize (@"[{""__type"":""DCWithEnum:#MonoTests.System.Runtime.Serialization.Json"",""_colors"":0},{""__type"":""DCSimple1:#MonoTests.System.Runtime.Serialization.Json"",""Foo"":""hello""}]",
+                               typeof (object []), typeof (DCWithEnum), typeof (DCSimple1));
+                       Assert.AreEqual (typeof (object []), o.GetType (), "#1");
+                       object [] arr = (object []) o;
+                       Assert.AreEqual (typeof (DCWithEnum), arr [0].GetType (), "#2");
+                       Assert.AreEqual (typeof (DCSimple1), arr [1].GetType (), "#3");
+               }
+
+               private object Deserialize (string xml, Type type, params Type [] knownTypes)
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer (type, knownTypes);
+                       XmlReader xr = JsonReaderWriterFactory.CreateJsonReader (Encoding.UTF8.GetBytes (xml), new XmlDictionaryReaderQuotas ());
+                       return ser.ReadObject (xr);
+               }
+
+               public T Deserialize<T>(string json)
+               {
+                       var bytes = Encoding.Unicode.GetBytes (json);
+                       using (MemoryStream stream = new MemoryStream (bytes)) {
+                               var serializer = new DataContractJsonSerializer (typeof(T));
+                               return (T)serializer.ReadObject (stream);       
+                       }
+               }
+
+               [Test]
+               public void IsStartObject ()
+               {
+                       DataContractJsonSerializer s = new DataContractJsonSerializer (typeof (DCSimple1));
+                       Assert.IsTrue (s.IsStartObject (XmlReader.Create (new StringReader ("<root></root>"))), "#1");
+                       Assert.IsFalse (s.IsStartObject (XmlReader.Create (new StringReader ("<dummy></dummy>"))), "#2");
+                       Assert.IsFalse (s.IsStartObject (XmlReader.Create (new StringReader ("<Foo></Foo>"))), "#3");
+                       Assert.IsFalse (s.IsStartObject (XmlReader.Create (new StringReader ("<root xmlns='urn:foo'></root>"))), "#4");
+               }
+
+               [Test]
+               public void SerializeNonDC2 ()
+               {
+                       var ser = new DataContractJsonSerializer (typeof (TestData));
+                       StringWriter sw = new StringWriter ();
+                       var obj = new TestData () { Foo = "foo", Bar = "bar", Baz = "baz" };
+
+                       // XML
+                       using (var xw = XmlWriter.Create (sw))
+                               ser.WriteObject (xw, obj);
+                       var s = sw.ToString ();
+                       // since the order is not preserved, we compare only contents.
+                       Assert.IsTrue (s.IndexOf ("<Foo>foo</Foo>") > 0, "#1-1");
+                       Assert.IsTrue (s.IndexOf ("<Bar>bar</Bar>") > 0, "#1-2");
+                       Assert.IsFalse (s.IndexOf ("<Baz>baz</Baz>") > 0, "#1-3");
+
+                       // JSON
+                       MemoryStream ms = new MemoryStream ();
+                       using (var xw = JsonReaderWriterFactory.CreateJsonWriter (ms))
+                               ser.WriteObject (ms, obj);
+                       s = new StreamReader (new MemoryStream (ms.ToArray ())).ReadToEnd ().Replace ('"', '/');
+                       // since the order is not preserved, we compare only contents.
+                       Assert.IsTrue (s.IndexOf ("/Foo/:/foo/") > 0, "#2-1");
+                       Assert.IsTrue (s.IndexOf ("/Bar/:/bar/") > 0, "#2-2");
+                       Assert.IsFalse (s.IndexOf ("/Baz/:/baz/") > 0, "#2-3");
+               }
+
+               [Test]
+               public void AlwaysEmitTypeInformation ()
+               {
+                       var ms = new MemoryStream ();
+                       var ds = new DataContractJsonSerializer (typeof (string), "root", null, 10, false, null, true);
+                       ds.WriteObject (ms, "foobar");
+                       var s = Encoding.UTF8.GetString (ms.ToArray ());
+                       Assert.AreEqual ("\"foobar\"", s, "#1");
+               }
+
+               [Test]
+               public void AlwaysEmitTypeInformation2 ()
+               {
+                       var ms = new MemoryStream ();
+                       var ds = new DataContractJsonSerializer (typeof (TestData), "root", null, 10, false, null, true);
+                       ds.WriteObject (ms, new TestData () { Foo = "foo"});
+                       var s = Encoding.UTF8.GetString (ms.ToArray ());
+                       Assert.AreEqual (@"{""__type"":""TestData:#MonoTests.System.Runtime.Serialization.Json"",""Bar"":null,""Foo"":""foo""}", s, "#1");
+               }
+
+               [Test]
+               public void AlwaysEmitTypeInformation3 ()
+               {
+                       var ms = new MemoryStream ();
+                       var ds = new DataContractJsonSerializer (typeof (TestData), "root", null, 10, false, null, false);
+                       ds.WriteObject (ms, new TestData () { Foo = "foo"});
+                       var s = Encoding.UTF8.GetString (ms.ToArray ());
+                       Assert.AreEqual (@"{""Bar"":null,""Foo"":""foo""}", s, "#1");
+               }
+
+               [Test]
+               public void TestNonpublicDeserialization ()
+               {
+                       string s1= @"{""Bar"":""bar"", ""Foo"":""foo"", ""Baz"":""baz""}";
+                       TestData o1 = ((TestData)(new DataContractJsonSerializer (typeof (TestData)).ReadObject (JsonReaderWriterFactory.CreateJsonReader (Encoding.UTF8.GetBytes (s1), new XmlDictionaryReaderQuotas ()))));
+
+                       Assert.AreEqual (null, o1.Baz, "#1");
+
+                        string s2 = @"{""TestData"":[{""key"":""key1"",""value"":""value1""}]}";
+                        KeyValueTestData o2 = ((KeyValueTestData)(new DataContractJsonSerializer (typeof (KeyValueTestData)).ReadObject (JsonReaderWriterFactory.CreateJsonReader (Encoding.UTF8.GetBytes (s2), new XmlDictionaryReaderQuotas ()))));
+
+                       Assert.AreEqual (1, o2.TestData.Count, "#2");
+                       Assert.AreEqual ("key1", o2.TestData[0].Key, "#3");
+                       Assert.AreEqual ("value1", o2.TestData[0].Value, "#4");
+               }
+
+               // [Test] use this case if you want to check lame silverlight parser behavior. Seealso #549756
+               public void QuotelessDeserialization ()
+               {
+                       string s1 = @"{FooMember:""value""}";
+                       var ds = new DataContractJsonSerializer (typeof (DCWithName));
+                       ds.ReadObject (new MemoryStream (Encoding.UTF8.GetBytes (s1)));
+
+                       string s2 = @"{FooMember:"" \""{dummy:string}\""""}";
+                       ds.ReadObject (new MemoryStream (Encoding.UTF8.GetBytes (s2)));
+               }
+
+               [Test]
+               [Category ("NotWorking")]
+               public void TypeIsNotPartsOfKnownTypes ()
+               {
+                       var dcs = new DataContractSerializer (typeof (string));
+                       Assert.AreEqual (0, dcs.KnownTypes.Count, "KnownTypes #1");
+                       var dcjs = new DataContractJsonSerializer (typeof (string));
+                       Assert.AreEqual (0, dcjs.KnownTypes.Count, "KnownTypes #2");
+               }
+
+               [Test]
+               public void ReadWriteNullObject ()
+               {
+                       DataContractJsonSerializer dcjs = new DataContractJsonSerializer (typeof (string));
+                       using (MemoryStream ms = new MemoryStream ()) {
+                               dcjs.WriteObject (ms, null);
+                               ms.Position = 0;
+                               using (StreamReader sr = new StreamReader (ms)) {
+                                       string data = sr.ReadToEnd ();
+                                       Assert.AreEqual ("null", data, "WriteObject(stream,null)");
+
+                                       ms.Position = 0;
+                                       Assert.IsNull (dcjs.ReadObject (ms), "ReadObject(stream)");
+                               }
+                       };
+               }
+
+               object ReadWriteObject (Type type, object obj, string expected)
+               {
+                       using (MemoryStream ms = new MemoryStream ()) {
+                               DataContractJsonSerializer dcjs = new DataContractJsonSerializer (type);
+                               dcjs.WriteObject (ms, obj);
+                               ms.Position = 0;
+                               using (StreamReader sr = new StreamReader (ms)) {
+                                       Assert.AreEqual (expected, sr.ReadToEnd (), "WriteObject");
+
+                                       ms.Position = 0;
+                                       return dcjs.ReadObject (ms);
+                               }
+                       }
+               }
+
+               [Test]
+               [Ignore ("Wrong test case. See bug #573691")]
+               public void ReadWriteObject_Single_SpecialCases ()
+               {
+                       Assert.IsTrue (Single.IsNaN ((float) ReadWriteObject (typeof (float), Single.NaN, "NaN")));
+                       Assert.IsTrue (Single.IsNegativeInfinity ((float) ReadWriteObject (typeof (float), Single.NegativeInfinity, "-INF")));
+                       Assert.IsTrue (Single.IsPositiveInfinity ((float) ReadWriteObject (typeof (float), Single.PositiveInfinity, "INF")));
+               }
+
+               [Test]
+               [Ignore ("Wrong test case. See bug #573691")]
+               public void ReadWriteObject_Double_SpecialCases ()
+               {
+                       Assert.IsTrue (Double.IsNaN ((double) ReadWriteObject (typeof (double), Double.NaN, "NaN")));
+                       Assert.IsTrue (Double.IsNegativeInfinity ((double) ReadWriteObject (typeof (double), Double.NegativeInfinity, "-INF")));
+                       Assert.IsTrue (Double.IsPositiveInfinity ((double) ReadWriteObject (typeof (double), Double.PositiveInfinity, "INF")));
+               }
+
+               [Test]
+               public void ReadWriteDateTime ()
+               {
+                       var ms = new MemoryStream ();
+                       DataContractJsonSerializer serializer = new DataContractJsonSerializer (typeof (Query));
+                       Query query = new Query () {
+                               StartDate = DateTime.SpecifyKind (new DateTime (2010, 3, 4, 5, 6, 7), DateTimeKind.Utc),
+                               EndDate = DateTime.SpecifyKind (new DateTime (2010, 4, 5, 6, 7, 8), DateTimeKind.Utc)
+                               };
+                       serializer.WriteObject (ms, query);
+                       Assert.AreEqual ("{\"StartDate\":\"\\/Date(1267679167000)\\/\",\"EndDate\":\"\\/Date(1270447628000)\\/\"}", Encoding.UTF8.GetString (ms.ToArray ()), "#1");
+                       ms.Position = 0;
+                       Console.WriteLine (new StreamReader (ms).ReadToEnd ());
+                       ms.Position = 0;
+                       var q = (Query) serializer.ReadObject(ms);
+                       Assert.AreEqual (query.StartDate, q.StartDate, "#2");
+                       Assert.AreEqual (query.EndDate, q.EndDate, "#3");
+               }
+
+               [DataContract(Name = "DateTest")]
+               public class DateTest
+               {
+                       [DataMember(Name = "should_have_value")]
+                       public DateTime? ShouldHaveValue { get; set; }
+               }
+
+               //
+               // This tests both the extended format "number-0500" as well
+               // as the nullable field in the structure
+               [Test]
+               public void BugXamarin163 ()
+               {
+                       string json = @"{""should_have_value"":""\/Date(1277355600000)\/""}";
+
+                       byte[] bytes = global::System.Text.Encoding.UTF8.GetBytes(json);
+                       Stream inputStream = new MemoryStream(bytes);
+                       
+                       DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DateTest));
+                       DateTest t = serializer.ReadObject(inputStream) as DateTest;
+                       Assert.AreEqual (634129524000000000, t.ShouldHaveValue.Value.Ticks, "#1");
+               }
+
+               [Test]
+               public void NullableFieldsShouldSupportNullValue ()
+               {
+                       string json = @"{""should_have_value"":null}";
+                       var inputStream = new MemoryStream (Encoding.UTF8.GetBytes (json));
+                       DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DateTest));
+                       Console.WriteLine ("# serializer assembly: {0}", serializer.GetType ().Assembly.Location);
+                       DateTest t = serializer.ReadObject (inputStream) as DateTest;
+                       Assert.AreEqual (false, t.ShouldHaveValue.HasValue, "#2");
+               }
+               
+               [Test]
+               public void DeserializeNullMember ()
+               {
+                       var ds = new DataContractJsonSerializer (typeof (ClassA));
+                       var stream = new MemoryStream ();
+                       var a = new ClassA ();
+                       ds.WriteObject (stream, a);
+                       stream.Position = 0;
+                       a = (ClassA) ds.ReadObject (stream);
+                       Assert.IsNull (a.B, "#1");
+               }
+
+               [Test]
+               public void OnDeserializationMethods ()
+               {
+                       var ds = new DataContractJsonSerializer (typeof (GSPlayerListErg));
+                       var obj = new GSPlayerListErg ();
+                       var ms = new MemoryStream ();
+                       ds.WriteObject (ms, obj);
+                       ms.Position = 0;
+                       ds.ReadObject (ms);
+                       Assert.IsTrue (GSPlayerListErg.A, "A");
+                       Assert.IsTrue (GSPlayerListErg.B, "B");
+                       Assert.IsTrue (GSPlayerListErg.C, "C");
+               }
+               
+               [Test]
+               public void WriteChar ()
+               {
+                       DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof (CharTest));
+                       using (MemoryStream ms = new MemoryStream()) {
+                               serializer.WriteObject(ms, new CharTest ());
+                               ms.Position = 0L;
+                               using (StreamReader reader = new StreamReader(ms)) {
+                                       reader.ReadToEnd();
+                               }
+                       }
+               }
+
+               [Test]
+               public void DictionarySerialization ()
+               {
+                       var dict = new JsonMyDictionary<string,string> ();
+                       dict.Add ("key", "value");
+                       var serializer = new DataContractJsonSerializer (dict.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, dict);
+                       stream.Position = 0;
+
+                       Assert.AreEqual ("[{\"Key\":\"key\",\"Value\":\"value\"}]", new StreamReader (stream).ReadToEnd (), "#1");
+                       stream.Position = 0;
+                       dict = (JsonMyDictionary<string,string>) serializer.ReadObject (stream);
+                       Assert.AreEqual (1, dict.Count, "#2");
+                       Assert.AreEqual ("value", dict ["key"], "#3");
+               }
+
+               [Test]
+               public void ExplicitCustomDictionarySerialization ()
+               {
+                       var dict = new MyExplicitDictionary<string,string> ();
+                       dict.Add ("key", "value");
+                       var serializer = new DataContractJsonSerializer (dict.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, dict);
+                       stream.Position = 0;
+
+                       Assert.AreEqual ("[{\"Key\":\"key\",\"Value\":\"value\"}]", new StreamReader (stream).ReadToEnd (), "#1");
+                       stream.Position = 0;
+                       dict = (MyExplicitDictionary<string,string>) serializer.ReadObject (stream);
+                       Assert.AreEqual (1, dict.Count, "#2");
+                       Assert.AreEqual ("value", dict ["key"], "#3");
+               }
+
+               [Test]
+               public void Bug13485 ()
+               {
+                       const string json = "{ \"Name\" : \"Test\", \"Value\" : \"ValueA\" }";
+
+                       string result = string.Empty;
+                       var serializer = new DataContractJsonSerializer (typeof (Bug13485Type));
+                       Bug13485Type entity;
+                       using (var stream = new MemoryStream (Encoding.UTF8.GetBytes (json)))
+                               entity = (Bug13485Type) serializer.ReadObject (stream);
+
+                       result = entity.GetValue;
+                       Assert.AreEqual ("ValueA", result, "#1");
+               }
+
+               [DataContract(Name = "UriTest")]
+               public class UriTest
+               {
+                       [DataMember(Name = "members")]
+                       public Uri MembersRelativeLink { get; set; }
+               }
+
+               [Test]
+               public void Bug15169 ()
+               {
+                       const string json = "{\"members\":\"foo/bar/members\"}";
+                       var serializer = new DataContractJsonSerializer (typeof (UriTest));
+                       UriTest entity;
+                       using (var stream = new MemoryStream (Encoding.UTF8.GetBytes (json)))
+                               entity = (UriTest) serializer.ReadObject (stream);
+
+                       Assert.AreEqual ("foo/bar/members", entity.MembersRelativeLink.ToString ());
+               }
+               
+               #region Test methods for collection serialization
+               
+               [Test]
+               public void TestArrayListSerialization ()
+               {
+                       var collection = new ArrayListContainer ();
+                       var expectedOutput = "{\"Items\":[\"banana\",\"apple\"]}";
+                       var expectedItemsCount = 4;
+                       
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+
+                       stream.Position = 0;
+                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
+
+                       stream.Position = 0;
+                       collection = (ArrayListContainer) serializer.ReadObject (stream);
+                       
+                       Assert.AreEqual (expectedItemsCount, collection.Items.Count, "#2");
+               }
+               
+               [Test]
+               [ExpectedException (typeof (InvalidDataContractException))]
+               public void TestBitArraySerialization ()
+               {
+                       var collection = new BitArrayContainer ();
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+               }
+               
+               [Test]
+               public void TestHashtableSerialization ()
+               {
+                       var collection = new HashtableContainer ();
+                       var expectedOutput = "{\"Items\":[{\"Key\":\"key1\",\"Value\":\"banana\"},{\"Key\":\"key2\",\"Value\":\"apple\"}]}";
+                       
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+
+                       stream.Position = 0;
+                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
+               }
+               
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void TestHashtableDeserialization ()
+               {
+                       var collection = new HashtableContainer ();
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+                       
+                       stream.Position = 0;
+                       serializer.ReadObject (stream);
+               }
+               
+               [Test]
+               [ExpectedException (typeof (InvalidDataContractException))]
+               public void TestQueueSerialization ()
+               {
+                       var collection = new QueueContainer ();
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+               }
+               
+               [Test]
+               public void TestSortedListSerialization ()
+               {
+                       var collection = new SortedListContainer ();
+                       var expectedOutput = "{\"Items\":[{\"Key\":\"key1\",\"Value\":\"banana\"},{\"Key\":\"key2\",\"Value\":\"apple\"}]}";
+                       
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+
+                       stream.Position = 0;
+                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
+               }
+               
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void TestSortedListDeserialization ()
+               {
+                       var collection = new SortedListContainer ();
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+                       
+                       stream.Position = 0;
+                       serializer.ReadObject (stream);
+               }
+               
+               [Test]
+               [ExpectedException (typeof (InvalidDataContractException))]
+               public void TestStackSerialization ()
+               {
+                       var collection = new StackContainer ();
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+               }
+               
+               [Test]
+               public void TestEnumerableWithAddSerialization ()
+               {
+                       var collection = new EnumerableWithAddContainer ();
+                       var expectedOutput = "{\"Items\":[\"banana\",\"apple\"]}";
+                       var expectedItemsCount = 4;
+                       
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+
+                       stream.Position = 0;
+                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
+
+                       stream.Position = 0;
+                       collection = (EnumerableWithAddContainer) serializer.ReadObject (stream);
+                       
+                       Assert.AreEqual (expectedItemsCount, collection.Items.Count, "#2");
+               }
+               
+               [Test]
+               [ExpectedException (typeof (InvalidDataContractException))]
+               public void TestEnumerableWithSpecialAddSerialization ()
+               {
+                       var collection = new EnumerableWithSpecialAddContainer ();                      
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+               }
+       
+               [Test]
+               public void TestHashSetSerialization ()
+               {
+                       var collection = new GenericHashSetContainer ();
+                       var expectedOutput = "{\"Items\":[\"banana\",\"apple\"]}";
+                       var expectedItemsCount = 2;
+                       
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+
+                       stream.Position = 0;
+                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
+
+                       stream.Position = 0;
+                       collection = (GenericHashSetContainer) serializer.ReadObject (stream);
+                       
+                       Assert.AreEqual (expectedItemsCount, collection.Items.Count, "#2");
+               }
+               
+               [Test]
+               public void TestLinkedListSerialization ()
+               {
+                       var collection = new GenericLinkedListContainer ();
+                       var expectedOutput = "{\"Items\":[\"banana\",\"apple\"]}";
+                       var expectedItemsCount = 4;
+                       
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+
+                       stream.Position = 0;
+                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
+
+                       stream.Position = 0;
+                       collection = (GenericLinkedListContainer) serializer.ReadObject (stream);
+                       
+                       Assert.AreEqual (expectedItemsCount, collection.Items.Count, "#2");
+               }
+               
+               [Test]
+               [ExpectedException (typeof (InvalidDataContractException))]
+               public void TestGenericQueueSerialization ()
+               {
+                       var collection = new GenericQueueContainer ();                  
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+               }
+               
+               [Test]
+               [ExpectedException (typeof (InvalidDataContractException))]
+               public void TestGenericStackSerialization ()
+               {
+                       var collection = new GenericStackContainer ();                  
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+               }
+               
+               [Test]
+               public void TestGenericDictionarySerialization ()
+               {
+                       var collection = new GenericDictionaryContainer ();                     
+                       var expectedOutput = "{\"Items\":[{\"Key\":\"key1\",\"Value\":\"banana\"},{\"Key\":\"key2\",\"Value\":\"apple\"}]}";
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+                       
+                       stream.Position = 0;
+                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
+               }
+               
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void TestGenericDictionaryDeserialization ()
+               {
+                       var collection = new GenericDictionaryContainer ();                     
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+                       
+                       stream.Position = 0;
+                       serializer.ReadObject (stream);
+               }
+               
+               [Test]
+               public void TestGenericSortedListSerialization ()
+               {
+                       var collection = new GenericSortedListContainer ();                     
+                       var expectedOutput = "{\"Items\":[{\"Key\":\"key1\",\"Value\":\"banana\"},{\"Key\":\"key2\",\"Value\":\"apple\"}]}";
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+                       
+                       stream.Position = 0;
+                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
+               }
+               
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void TestGenericSortedListDeserialization ()
+               {
+                       var collection = new GenericSortedListContainer ();                     
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+                       
+                       stream.Position = 0;
+                       serializer.ReadObject (stream);
+               }
+               
+               [Test]
+               public void TestGenericSortedDictionarySerialization ()
+               {
+                       var collection = new GenericSortedDictionaryContainer ();                       
+                       var expectedOutput = "{\"Items\":[{\"Key\":\"key1\",\"Value\":\"banana\"},{\"Key\":\"key2\",\"Value\":\"apple\"}]}";
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+                       
+                       stream.Position = 0;
+                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
+               }
+               
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void TestGenericSortedDictionaryDeserialization ()
+               {
+                       var collection = new GenericSortedDictionaryContainer ();                       
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+                       
+                       stream.Position = 0;
+                       serializer.ReadObject (stream);
+               }
+               
+               [Test]
+               public void TestGenericEnumerableWithAddSerialization ()
+               {
+                       var collection = new GenericEnumerableWithAddContainer ();
+                       var expectedOutput = "{\"Items\":[\"banana\",\"apple\"]}";
+                       var expectedItemsCount = 4;
+                       
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+
+                       stream.Position = 0;
+                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
+
+                       stream.Position = 0;
+                       collection = (GenericEnumerableWithAddContainer) serializer.ReadObject (stream);
+                       
+                       Assert.AreEqual (expectedItemsCount, collection.Items.Count, "#2");
+               }
+               
+               [Test]
+               [ExpectedException (typeof (InvalidDataContractException))]
+               public void TestGenericEnumerableWithSpecialAddSerialization ()
+               {
+                       var collection = new GenericEnumerableWithSpecialAddContainer ();                       
+                       var serializer = new DataContractJsonSerializer (collection.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, collection);
+               }
+               
+               [Test]
+               [ExpectedException (typeof (InvalidDataContractException))]
+               public void TestNonCollectionGetOnlyProperty ()
+               {
+                       var o = new NonCollectionGetOnlyContainer ();                   
+                       var serializer = new DataContractJsonSerializer (o.GetType ());
+                       var stream = new MemoryStream ();
+                       serializer.WriteObject (stream, o);
+               }
+               
+               // properly deserialize object with a polymorphic property (known derived type)
+               [Test]
+               public void Bug23058()
+               {
+                       string serializedObj = @"{""PolymorphicProperty"":{""__type"":""KnownDerivedType:#MonoTests.System.Runtime.Serialization.Json"",""BaseTypeProperty"":""Base"",""DerivedProperty"":""Derived 1""},""Name"":""Parent2""}";
+                       ParentType deserializedObj = Deserialize<ParentType> (serializedObj);
+
+                       Assert.AreEqual (deserializedObj.PolymorphicProperty.GetType ().FullName, "MonoTests.System.Runtime.Serialization.Json.KnownDerivedType");
+                       Assert.AreEqual (deserializedObj.PolymorphicProperty.BaseTypeProperty, "Base");
+                       Assert.AreEqual ((deserializedObj.PolymorphicProperty as KnownDerivedType).DerivedProperty, "Derived 1");
+                       Assert.AreEqual (deserializedObj.Name, "Parent2");
+               }
+
+               // properly deserialize object with a polymorphic property (base type with __type hint)
+               [Test]
+               public void DeserializeBaseTypePropHint()
+               {
+                       string serializedObj = @"{""PolymorphicProperty"":{""__type"":""BaseType:#MonoTests.System.Runtime.Serialization.Json"",""BaseTypeProperty"":""Base""},""Name"":""Parent2""}";
+                       ParentType deserializedObj = Deserialize<ParentType> (serializedObj);
+
+                       Assert.AreEqual (deserializedObj.PolymorphicProperty.GetType ().FullName, "MonoTests.System.Runtime.Serialization.Json.BaseType");
+                       Assert.AreEqual (deserializedObj.PolymorphicProperty.BaseTypeProperty, "Base");
+               }
+
+               // properly deserialize object with a polymorphic property (base type with __type hint)
+               [Test]
+               public void DeserializeBaseTypePropNoHint()
+               {
+                       string serializedObj = @"{""PolymorphicProperty"":{""BaseTypeProperty"":""Base""},""Name"":""Parent2""}";
+                       ParentType deserializedObj = Deserialize<ParentType> (serializedObj);
+
+                       Assert.AreEqual (deserializedObj.PolymorphicProperty.GetType ().FullName, "MonoTests.System.Runtime.Serialization.Json.BaseType");
+                       Assert.AreEqual (deserializedObj.PolymorphicProperty.BaseTypeProperty, "Base");
+               }
+
+               // properly fail deserializing object with a polymorphic property (unknown derived type)
+               [ExpectedException (typeof (SerializationException))]
+               [Test]
+               public void FailDeserializingUnknownTypeProp()
+               {
+                       string serializedObj = @"{""PolymorphicProperty"":{""__type"":""UnknownDerivedType:#MonoTests.System.Runtime.Serialization.Json"",""BaseTypeProperty"":""Base"",""DerivedProperty"":""Derived 1""},""Name"":""Parent2""}";
+                       ParentType deserializedObj = Deserialize<ParentType> (serializedObj);
+               }
+
+               [Test]
+               public void SubclassTest ()
+               {
+                       var knownTypes = new List<Type> { typeof(IntList) };
+                       var serializer = new DataContractJsonSerializer(typeof(ListOfNumbers), knownTypes);
+
+                       string json = "{\"Numbers\": [85]}";
+                       using (var stream = new MemoryStream(UTF8Encoding.Default.GetBytes(json)))
+                       {
+                               var nums = (ListOfNumbers)serializer.ReadObject(stream);
+                               Assert.AreEqual (1, nums.Numbers.Count);
+                       }
+               }
+               [DataContract]
+               public class ListOfNumbers
+               {
+                       [DataMember]
+                       public IntList Numbers;
+               }
+
+               public class IntList : List<int>{}
+               #endregion
+
+               [Test]
+               public void DefaultValueDeserialization ()
+               {
+                       // value type
+                       var person = new JsonPerson { name = "John" };
+                       using (var ms = new MemoryStream()) {
+                               var serializer = new DataContractJsonSerializer (typeof (JsonPerson), new DataContractJsonSerializerSettings {
+                                       SerializeReadOnlyTypes = true,
+                                       UseSimpleDictionaryFormat = true
+                                       });
+                               serializer.WriteObject (ms, person);
+                       }
+
+                       // reference type
+                       var person2 = new PersonWithContact {
+                               name = "Jane",
+                               contact = new Contact { url = "localhost", email = "jane@localhost" } };
+                       using (var ms = new MemoryStream ()) {
+                               var serializer = new DataContractJsonSerializer (typeof (PersonWithContact), new DataContractJsonSerializerSettings {
+                                       SerializeReadOnlyTypes = true,
+                                       UseSimpleDictionaryFormat = true
+                                       });
+                               serializer.WriteObject (ms, person2);
+                       }
+               }
+
+               [Test]
+               public void Bug15028()
+               {
+                       DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Bug15028));
+                       using (MemoryStream memoryStream = new MemoryStream())
+                       {
+                               ser.WriteObject(memoryStream, new Bug15028());
+                               string output = Encoding.Default.GetString(memoryStream.ToArray());
+                               Assert.AreEqual(@"{""Int0"":1,""Int1"":1,""IntZero1"":0,""Str0"":"""",""Str1"":"""",""StrNull1"":null}", output);
+                       }
+               }
+
+               [Test]
+               public void Bug4230()
+               {
+                       string serializedObj = @"{ ""Notifications"": null }";
+                       Bug4230Response deserializedObj = Deserialize<Bug4230Response> (serializedObj);
+
+                       Assert.IsNull (deserializedObj.Notifications);
+               }
+       }
+
+       public class Bug4230Notification {
+       }
+
+       public class Bug4230Response
+       {
+               public Bug4230Notification[] Notifications
+               {
+                       get;
+                       set;
+               }
+       }
+
+       [DataContract]
+       public class Bug15028
+       {
+               [DataMember(EmitDefaultValue = false)]
+               public string StrNull0 { get; private set; }
+
+               [DataMember(EmitDefaultValue = false)]
+               public string Str0 { get; private set; }
+
+               [DataMember(EmitDefaultValue = true)]
+               public string StrNull1 { get; private set; }
+
+               [DataMember(EmitDefaultValue = true)]
+               public string Str1 { get; private set; }
+
+               [DataMember(EmitDefaultValue = false)]
+               public int IntZero0 { get; private set; }
+
+               [DataMember(EmitDefaultValue = false)]
+               public int Int0 { get; private set; }
+
+               [DataMember(EmitDefaultValue = true)]
+               public int IntZero1 { get; private set; }
+
+               [DataMember(EmitDefaultValue = true)]
+               public int Int1 { get; private set; }
+
+               public Bug15028()
+               {
+                       Str0 = string.Empty;
+                       Str1 = string.Empty;
+                       Int0 = 1;
+                       Int1 = 1;
+               }
+       }
+
+       public class CharTest
+       {
+               public char Foo;
+       }
+
+       public class TestData
+       {
+               public string Foo { get; set; }
+               public string Bar { get; set; }
+               internal string Baz { get; set; }
+       }
+
+       public enum Colors {
+               Red, Green, Blue
+       }
+
+       [DataContract (Name = "_ColorsWithDC")]
+       public enum ColorsWithDC {
+
+               [EnumMember (Value = "_Red")]
+               Red, 
+               [EnumMember]
+               Green, 
+               Blue
+       }
+
+
+       public enum ColorsEnumMemberNoDC {
+               [EnumMember (Value = "_Red")]
+               Red, 
+               [EnumMember]
+               Green, 
+               Blue
+       }
+
+       [DataContract]
+       public class DCWithEnum {
+               [DataMember (Name = "_colors")]
+               public Colors colors;
+       }
+
+       [DataContract]
+       public class DCEmpty
+       {
+               // serializer doesn't touch it.
+               public string Foo = "TEST";
+       }
+
+       [DataContract]
+       public class DCSimple1
+       {
+               [DataMember]
+               public string Foo = "TEST";
+       }
+
+       [DataContract]
+       public class DCHasNonDC
+       {
+               [DataMember]
+               public NonDC Hoge= new NonDC ();
+       }
+
+       public class NonDC
+       {
+               public string Whee = "whee!";
+       }
+
+       [DataContract]
+       public class DCHasSerializable
+       {
+               [DataMember]
+               public SimpleSer1 Ser = new SimpleSer1 ();
+       }
+
+       [DataContract (Name = "Foo")]
+       public class DCWithName
+       {
+               [DataMember (Name = "FooMember")]
+               public string DMWithName = "value";
+       }
+
+       [DataContract (Name = "")]
+       public class DCWithEmptyName
+       {
+               [DataMember]
+               public string Foo;
+       }
+
+       [DataContract (Name = null)]
+       public class DCWithNullName
+       {
+               [DataMember]
+               public string Foo;
+       }
+
+       [DataContract (Namespace = "")]
+       public class DCWithEmptyNamespace
+       {
+               [DataMember]
+               public string Foo;
+       }
+
+       [Serializable]
+       public class SimpleSer1
+       {
+               public string Doh = "doh!";
+       }
+
+       public class Wrapper
+       {
+               [DataContract]
+               public class DCWrapped
+               {
+               }
+       }
+
+       [DataContract]
+       public class CollectionContainer
+       {
+               Collection<string> items = new Collection<string> ();
+
+               [DataMember]
+               public Collection<string> Items {
+                       get { return items; }
+               }
+       }
+
+       [CollectionDataContract]
+       public class DataCollection<T> : Collection<T>
+       {
+       }
+
+       [DataContract]
+       public class DataCollectionContainer
+       {
+               DataCollection<string> items = new DataCollection<string> ();
+
+               [DataMember]
+               public DataCollection<string> Items {
+                       get { return items; }
+               }
+       }
+
+       [DataContract]
+       class SerializeNonDCArrayType
+       {
+               [DataMember]
+               public NonDCItem [] IPAddresses = new NonDCItem [0];
+       }
+
+       public class NonDCItem
+       {
+               public byte [] Data { get; set; }
+       }
+
+       [DataContract]
+       public class VerifyObjectNameTestData
+       {
+               [DataMember]
+               string Member1 = "foo";
+       }
+
+       [Serializable]
+       public class KeyValueTestData {
+               public List<KeyValuePair<string,string>> TestData = new List<KeyValuePair<string,string>>();
+       }
+
+       [DataContract] // bug #586169
+       public class Query
+       {
+               [DataMember (Order=1)]
+               public DateTime StartDate { get; set; }
+               [DataMember (Order=2)]
+               public DateTime EndDate { get; set; }
+       }
+
+       public class ClassA {
+               public ClassB B { get; set; }
+       }
+
+       public class ClassB
+       {
+       }
+
+       public class GSPlayerListErg
+       {
+               public GSPlayerListErg ()
+               {
+                       Init ();
+               }
+
+               void Init ()
+               {
+                       C = true;
+                       ServerTimeUTC = DateTime.SpecifyKind (DateTime.MinValue, DateTimeKind.Utc);
+               }
+
+               [OnDeserializing]
+               public void OnDeserializing (StreamingContext c)
+               {
+                       A = true;
+                       Init ();
+               }
+
+               [OnDeserialized]
+               void OnDeserialized (StreamingContext c)
+               {
+                       B = true;
+               }
+
+               public static bool A, B, C;
+
+               [DataMember (Name = "T")]
+               public long CodedServerTimeUTC { get; set; }
+               public DateTime ServerTimeUTC { get; set; }
+       }
+
+       #region polymorphism test helper classes
+
+       [DataContract]
+       [KnownType (typeof (KnownDerivedType))]
+       public class ParentType
+       {
+               [DataMember]
+               public string Name { get; set; }
+
+               [DataMember]
+               public BaseType PolymorphicProperty { get; set; }
+       }
+
+       [DataContract]
+       public class BaseType
+       {
+               [DataMember]
+               public string BaseTypeProperty { get; set; }
+       }
+
+       [DataContract]
+       public class KnownDerivedType : BaseType
+       {
+               [DataMemberAttribute]
+               public string DerivedProperty { get; set; }
+       }
+
+       [DataContract]
+       public class UnknownDerivedType : BaseType
+       {
+               [DataMember]
+               public string DerivedProperty { get; set; }
+       }
+
+       #endregion
+}
+
+[DataContract]
+class JsonGlobalSample1
+{
+}
+
+
+public class JsonMyDictionary<K, V> : System.Collections.Generic.IDictionary<K, V>
+{
+       Dictionary<K,V> dic = new Dictionary<K,V> ();
+
+       public void Add (K key, V value)
+       {
+               dic.Add (key,  value);
+       }
+
+       public bool ContainsKey (K key)
+       {
+               return dic.ContainsKey (key);
+       }
+
+       public ICollection<K> Keys {
+               get { return dic.Keys; }
+       }
+
+       public bool Remove (K key)
+       {
+               return dic.Remove (key);
+       }
+
+       public bool TryGetValue (K key, out V value)
+       {
+               return dic.TryGetValue (key, out value);
+       }
+
+       public ICollection<V> Values {
+               get { return dic.Values; }
+       }
+
+       public V this [K key] {
+               get { return dic [key]; }
+               set { dic [key] = value; }
+       }
+
+       IEnumerator IEnumerable.GetEnumerator ()
+       {
+               return dic.GetEnumerator ();
+       }
+
+       ICollection<KeyValuePair<K,V>> Coll {
+               get { return (ICollection<KeyValuePair<K,V>>) dic; }
+       }
+
+       public void Add (KeyValuePair<K, V> item)
+       {
+               Coll.Add (item);
+       }
+
+       public void Clear ()
+       {
+               dic.Clear ();
+       }
+
+       public bool Contains (KeyValuePair<K, V> item)
+       {
+               return Coll.Contains (item);
+       }
+
+       public void CopyTo (KeyValuePair<K, V> [] array, int arrayIndex)
+       {
+               Coll.CopyTo (array, arrayIndex);
+       }
+
+       public int Count {
+               get { return dic.Count; }
+       }
+
+       public bool IsReadOnly {
+               get { return Coll.IsReadOnly; }
+       }
+
+       public bool Remove (KeyValuePair<K, V> item)
+       {
+               return Coll.Remove (item);
+       }
+
+       public IEnumerator<KeyValuePair<K, V>> GetEnumerator ()
+       {
+               return Coll.GetEnumerator ();
+       }
+}
+
+public class MyExplicitDictionary<K, V> : IDictionary<K, V> {
+
+       Dictionary<K,V> dic = new Dictionary<K,V> ();
+
+       public void Add (K key, V value)
+       {
+               dic.Add (key,  value);
+       }
+
+       public bool ContainsKey (K key)
+       {
+               return dic.ContainsKey (key);
+       }
+
+       ICollection<K> IDictionary<K, V>.Keys {
+               get { return dic.Keys; }
+       }
+
+       public bool Remove (K key)
+       {
+               return dic.Remove (key);
+       }
+
+       public bool TryGetValue (K key, out V value)
+       {
+               return dic.TryGetValue (key, out value);
+       }
+
+       ICollection<V> IDictionary<K, V>.Values {
+               get { return dic.Values; }
+       }
+
+       public V this [K key] {
+               get { return dic [key]; }
+               set { dic [key] = value; }
+       }
+
+       IEnumerator IEnumerable.GetEnumerator ()
+       {
+               return dic.GetEnumerator ();
+       }
+
+       ICollection<KeyValuePair<K,V>> Coll {
+               get { return (ICollection<KeyValuePair<K,V>>) dic; }
+       }
+
+       public void Add (KeyValuePair<K, V> item)
+       {
+               Coll.Add (item);
+       }
+
+       public void Clear ()
+       {
+               dic.Clear ();
+       }
+
+       public bool Contains (KeyValuePair<K, V> item)
+       {
+               return Coll.Contains (item);
+       }
+
+       public void CopyTo (KeyValuePair<K, V> [] array, int arrayIndex)
+       {
+               Coll.CopyTo (array, arrayIndex);
+       }
+
+       public int Count {
+               get { return dic.Count; }
+       }
+
+       public bool IsReadOnly {
+               get { return Coll.IsReadOnly; }
+       }
+
+       public bool Remove (KeyValuePair<K, V> item)
+       {
+               return Coll.Remove (item);
+       }
+
+       public IEnumerator<KeyValuePair<K, V>> GetEnumerator ()
+       {
+               return Coll.GetEnumerator ();
+       }
+}
+
+[DataContract]
+public class Bug13485Type
+{
+       [DataMember]
+       public string Name { get; set; }
+
+       [DataMember (Name = "Value")]
+       private string Value { get; set; }
+
+       public string GetValue { get { return this.Value; } }
+}
+
+#region Test classes for Collection serialization
+
+[DataContract]
+       public abstract class CollectionContainer <V>
+       {
+               V items;
+
+               [DataMember]
+               public V Items
+               {
+                       get {
+                               if (items == null) items = Init ();
+                               return items;
+                       }
+               }
+               
+               public CollectionContainer ()
+               {
+                       Init ();
+               }
+       
+               protected abstract V Init ();
+       }
+       
+       [DataContract]
+       public class ArrayListContainer : CollectionContainer<ArrayList> {
+               protected override ArrayList Init ()
+               {
+                       return new ArrayList { "banana", "apple" };
+               }
+       }
+       
+       [DataContract]
+       public class BitArrayContainer : CollectionContainer<BitArray> {
+               protected override BitArray Init ()
+               {
+                       return new BitArray (new [] { false, true });
+               }
+       }
+       
+       [DataContract]
+       public class HashtableContainer : CollectionContainer<Hashtable> {
+               protected override Hashtable Init ()
+               {
+                       var ht = new Hashtable ();
+                       ht.Add ("key1", "banana");
+                       ht.Add ("key2", "apple");
+                       return ht;
+               }
+       }
+       
+       [DataContract]
+       public class QueueContainer : CollectionContainer<Queue> {
+               protected override Queue Init ()
+               {
+                       var q = new Queue ();
+                       q.Enqueue ("banana");
+                       q.Enqueue ("apple");
+                       return q;
+               }
+       }
+       
+       [DataContract]
+       public class SortedListContainer : CollectionContainer<SortedList> {
+               protected override SortedList Init ()
+               {
+                       var l = new SortedList ();
+                       l.Add ("key1", "banana");
+                       l.Add ("key2", "apple");
+                       return l;
+               }
+       }
+       
+       [DataContract]
+       public class StackContainer : CollectionContainer<Stack> {
+               protected override Stack Init ()
+               {
+                       var s = new Stack ();
+                       s.Push ("banana");
+                       s.Push ("apple");
+                       return s;
+               }
+       }
+
+       public class EnumerableWithAdd : IEnumerable
+       {
+               private ArrayList items;
+
+               public EnumerableWithAdd()
+               {
+                       items = new ArrayList();
+               }
+
+               public IEnumerator GetEnumerator()
+               {
+                       return items.GetEnumerator();
+               }
+
+               public void Add(object value)
+               {
+                       items.Add(value);
+               }
+
+               public int Count
+               {
+                       get {
+                               return items.Count;
+                       }
+               }
+       }
+
+       public class EnumerableWithSpecialAdd : IEnumerable
+       {
+               private ArrayList items;
+
+               public EnumerableWithSpecialAdd()
+               {
+                       items = new ArrayList();
+               }
+
+               public IEnumerator GetEnumerator()
+               {
+                       return items.GetEnumerator();
+               }
+
+               public void Add(object value, int index)
+               {
+                       items.Add(value);
+               }
+
+               public int Count
+               {
+                       get
+                       {
+                               return items.Count;
+                       }
+               }
+       }
+
+       [DataContract]
+       public class EnumerableWithAddContainer : CollectionContainer<EnumerableWithAdd>
+       {
+               protected override EnumerableWithAdd Init()
+               {
+                       var s = new EnumerableWithAdd();
+                       s.Add ("banana");
+                       s.Add ("apple");
+                       return s;
+               }
+       }
+
+       [DataContract]
+       public class EnumerableWithSpecialAddContainer : CollectionContainer<EnumerableWithSpecialAdd>
+       {
+               protected override EnumerableWithSpecialAdd Init()
+               {
+                       var s = new EnumerableWithSpecialAdd();
+                       s.Add("banana", 0);
+                       s.Add("apple", 0);
+                       return s;
+               }
+       }
+
+       [DataContract]
+       public class GenericDictionaryContainer : CollectionContainer<Dictionary<string, string>> {
+               protected override Dictionary<string, string> Init ()
+               {
+                       var d = new Dictionary<string, string> ();
+                       d.Add ("key1", "banana");
+                       d.Add ("key2", "apple");
+                       return d;
+               }
+       }
+
+       [DataContract]
+       public class GenericHashSetContainer : CollectionContainer<HashSet<string>> {
+               protected override HashSet<string> Init ()
+               {
+                       return new HashSet<string> { "banana", "apple" };
+               }
+       }
+
+       [DataContract]
+       public class GenericLinkedListContainer : CollectionContainer<LinkedList<string>> {
+               protected override LinkedList<string> Init ()
+               {
+                       var l = new LinkedList<string> ();
+                       l.AddFirst ("apple");
+                       l.AddFirst ("banana");
+                       return l;
+               }
+       }
+
+       [DataContract]
+       public class GenericListContainer : CollectionContainer<List<string>> {
+               protected override List<string> Init ()
+               {
+                       return new List<string> { "banana", "apple" };
+               }
+       }
+
+       [DataContract]
+       public class GenericQueueContainer : CollectionContainer<Queue<string>> {
+               protected override Queue<string> Init ()
+               {
+                       var q = new Queue<string> ();
+                       q.Enqueue ("banana");
+                       q.Enqueue ("apple" );
+                       return q;
+               }
+       }
+
+       [DataContract]
+       public class GenericSortedDictionaryContainer : CollectionContainer<SortedDictionary<string, string>> {
+               protected override SortedDictionary<string, string> Init ()
+               {
+                       var d = new SortedDictionary<string, string> ();
+                       d.Add ("key1", "banana");
+                       d.Add ("key2", "apple");
+                       return d;
+               }
+       }
+
+       [DataContract]
+       public class GenericSortedListContainer : CollectionContainer<SortedList<string, string>> {
+               protected override SortedList<string, string> Init ()
+               {
+                       var d = new SortedList<string, string> ();
+                       d.Add ("key1", "banana");
+                       d.Add ("key2", "apple");
+                       return d;
+               }
+       }
+
+       [DataContract]
+       public class GenericStackContainer : CollectionContainer<Stack<string>> {
+               protected override Stack<string> Init ()
+               {
+                       var s = new Stack<string> ();
+                       s.Push ("banana");
+                       s.Push ("apple" );
+                       return s;
+               }
+       }
+
+       public class GenericEnumerableWithAdd : IEnumerable<string>
+       {
+               private List<string> items;
+
+               public GenericEnumerableWithAdd()
+               {
+                       items = new List<string>();
+               }
+
+               IEnumerator IEnumerable.GetEnumerator()
+               {
+                       return items.GetEnumerator ();
+               }
+
+               public IEnumerator<string> GetEnumerator()
+               {
+                       return items.GetEnumerator ();
+               }
+
+               public void Add(string value)
+               {
+                       items.Add(value);
+               }
+
+               public int Count
+               {
+                       get {
+                               return items.Count;
+                       }
+               }
+       }
+
+       public class GenericEnumerableWithSpecialAdd : IEnumerable<string>
+       {
+               private List<string> items;
+
+               public GenericEnumerableWithSpecialAdd()
+               {
+                       items = new List<string>();
+               }
+
+               IEnumerator IEnumerable.GetEnumerator()
+               {
+                       return items.GetEnumerator ();
+               }
+
+               public IEnumerator<string> GetEnumerator()
+               {
+                       return items.GetEnumerator ();
+               }
+
+               public void Add(string value, int index)
+               {
+                       items.Add(value);
+               }
+
+               public int Count
+               {
+                       get
+                       {
+                               return items.Count;
+                       }
+               }
+       }
+
+       [DataContract]
+       public class GenericEnumerableWithAddContainer : CollectionContainer<GenericEnumerableWithAdd>
+       {
+               protected override GenericEnumerableWithAdd Init()
+               {
+                       var s = new GenericEnumerableWithAdd();
+                       s.Add ("banana");
+                       s.Add ("apple");
+                       return s;
+               }
+       }
+
+       [DataContract]
+       public class GenericEnumerableWithSpecialAddContainer : CollectionContainer<GenericEnumerableWithSpecialAdd>
+       {
+               protected override GenericEnumerableWithSpecialAdd Init()
+               {
+                       var s = new GenericEnumerableWithSpecialAdd();
+                       s.Add("banana", 0);
+                       s.Add("apple", 0);
+                       return s;
+               }
+       }       
+
+       [DataContract]
+       public class NonCollectionGetOnlyContainer
+       {
+               string _test = "my string";
+       
+               [DataMember]
+               public string MyString {
+                       get {
+                               return _test;
+                       }
+               }
+       }       
+
+#endregion
+
+#region DefaultValueDeserialization
+    [DataContract]
+    public class JsonPerson
+    {
+        [DataMember(EmitDefaultValue = false)]
+        public string name { get; set; }
+    }
+
+    [DataContract]
+    public class PersonWithContact
+    {
+        [DataMember(EmitDefaultValue = false)]
+        public string name { get; set; }
+
+        [DataMember(EmitDefaultValue = false)]
+        public Contact contact { get; set; }
+    }
+
+    [DataContract]
+    public class Contact
+    {
+        [DataMember(EmitDefaultValue = false)]
+        public string url { get; set; }
+
+        [DataMember(EmitDefaultValue = false)]
+        public string email{ get; set; }
+    }
+#endregion
diff --git a/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization.Json/JsonReaderTest.cs b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization.Json/JsonReaderTest.cs
new file mode 100644 (file)
index 0000000..c95c3b6
--- /dev/null
@@ -0,0 +1,883 @@
+//
+// JsonReaderTest.cs
+//
+// Author:
+//     Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
+// Copyright 2014 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Runtime.Serialization.Json;
+using System.Text;
+using System.Threading;
+using System.Xml;
+using NUnit.Framework;
+
+namespace MonoTests.System.Runtime.Serialization.Json
+{
+       [TestFixture]
+       public class JsonReaderTest
+       {
+               XmlDictionaryReader reader;
+
+               Stream GetInput (string s)
+               {
+                       return new MemoryStream (Encoding.ASCII.GetBytes (s));
+               }
+
+               XmlDictionaryReader CreateReader (string s)
+               {
+                       return JsonReaderWriterFactory.CreateJsonReader (GetInput (s), new XmlDictionaryReaderQuotas ());
+               }
+
+               void AssertNode (int depth, string localName, XmlNodeType nodeType, string value, string type, XmlDictionaryReader reader, string label)
+               {
+                       Assert.AreEqual (localName, reader.LocalName, label + ".LocalName");
+                       Assert.AreEqual (nodeType, reader.NodeType, label + ".NodeType");
+                       Assert.AreEqual (value, reader.Value, label + ".Value");
+                       Assert.AreEqual (type, reader.GetAttribute ("type"), label + ".GetAttribute('type')");
+               }
+
+               // Constructors
+
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void ConstructorNullBytes ()
+               {
+                       JsonReaderWriterFactory.CreateJsonReader ((byte []) null, new XmlDictionaryReaderQuotas ());
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void ConstructorNullStream ()
+               {
+                       JsonReaderWriterFactory.CreateJsonReader ((Stream) null, new XmlDictionaryReaderQuotas ());
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void ConstructorNullReaderQuotas ()
+               {
+                       JsonReaderWriterFactory.CreateJsonReader (GetInput ("{}"), null);
+               }
+
+               [Test]
+               public void ConstructorNullEncodingAndReaderClose ()
+               {
+                       JsonReaderWriterFactory.CreateJsonReader (GetInput ("{}"), null, new XmlDictionaryReaderQuotas (), null);
+               }
+
+               // Close()
+
+               [Test]
+               public void CloseTwice ()
+               {
+                       reader = CreateReader ("{}");
+                       reader.Close ();
+                       reader.Close ();
+               }
+
+               [Test]
+               // hmm... [ExpectedException (typeof (InvalidOperationException))]
+               public void CloseAndRead ()
+               {
+                       reader = CreateReader ("{}");
+                       reader.Close ();
+                       reader.Read ();
+               }
+
+               [Test]
+               // hmm... [ExpectedException (typeof (InvalidOperationException))]
+               public void CloseAndMoveToFirstAttribute ()
+               {
+                       reader = CreateReader ("{}");
+                       reader.Close ();
+                       reader.MoveToFirstAttribute ();
+               }
+
+               // Read() several top-level types
+
+               [Test]
+               public void ReadStateEmpty ()
+               {
+                       reader = CreateReader ("");
+                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
+                       reader.Read ();
+                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#2");
+                       reader.Close ();
+                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#3");
+               }
+
+               [Test]
+               public void ReadStateEmpty2 ()
+               {
+                       reader = CreateReader ("  ");
+                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
+                       reader.Read ();
+                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#2");
+                       reader.Close ();
+                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#3");
+               }
+
+               [Test]
+               public void ReadStateObject ()
+               {
+                       reader = CreateReader ("{}");
+                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
+                       reader.Read (); // element
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#2");
+                       reader.Read (); // endelement
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#3");
+                       reader.Read (); // endoffile
+                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#4");
+                       reader.Close ();
+                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#5");
+               }
+
+               [Test]
+               public void ReadStateArray ()
+               {
+                       reader = CreateReader ("[]");
+                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
+                       reader.Read (); // element
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#2");
+                       reader.Read (); // endelement
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#3");
+                       reader.Read (); // endoffile
+                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#4");
+                       reader.Close ();
+                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#5");
+               }
+
+               [Test]
+               public void ReadNumber ()
+               {
+                       reader = CreateReader ("1234");
+                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
+                       reader.Read (); // dummy root element
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#2");
+                       Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#2-1");
+                       Assert.AreEqual ("root", reader.LocalName, "#2-2");
+                       reader.Read (); // content (number)
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#3");
+                       Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#3-1");
+                       Assert.AreEqual ("1234", reader.Value, "#3-2");
+                       reader.Read (); // endelement
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#4");
+                       Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#4-1");
+                       reader.Read (); // endoffile
+                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#5");
+                       reader.Close ();
+                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#6");
+               }
+
+               [Test]
+               public void ReadBool ()
+               {
+                       reader = CreateReader ("true");
+                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
+                       reader.Read (); // dummy root element
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#2");
+                       Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#2-1");
+                       Assert.AreEqual ("root", reader.LocalName, "#2-2");
+                       Assert.AreEqual ("boolean", reader.GetAttribute ("type"), "#2-3");
+                       reader.Read (); // content (boolean)
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#3");
+                       Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#3-1");
+                       Assert.AreEqual ("true", reader.Value, "#3-2");
+                       reader.Read (); // endelement
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#4");
+                       Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#4-1");
+                       reader.Read (); // endoffile
+                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#5");
+                       reader.Close ();
+                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#6");
+               }
+
+               [Test]
+               public void ReadNull ()
+               {
+                       reader = CreateReader ("null");
+                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
+                       reader.Read (); // dummy root element
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#2");
+                       Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#2-1");
+                       Assert.AreEqual ("root", reader.LocalName, "#2-2");
+                       // When it is null, the value is never given and the reader is skipped to the end element.
+                       reader.Read (); // endlement
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#3");
+                       Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#3-1");
+                       reader.Read (); // endoffile
+                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#4");
+                       reader.Close ();
+                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#4");
+               }
+
+               [Test]
+               public void ReadString ()
+               {
+                       reader = CreateReader ("\"true\"");
+                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
+                       reader.Read (); // dummy root element
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#2");
+                       Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#2-1");
+                       Assert.AreEqual ("root", reader.LocalName, "#2-2");
+                       Assert.AreEqual ("string", reader.GetAttribute ("type"), "#2-3");
+                       reader.Read (); // content (number)
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#3");
+                       Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#3-1");
+                       Assert.AreEqual ("true", reader.Value, "#3-2");
+                       reader.Read (); // endelement
+                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#4");
+                       Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#4-1");
+                       reader.Read (); // endoffile
+                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#5");
+                       reader.Close ();
+                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#6");
+               }
+
+               // MoveToAttribute() / MoveToElement()
+
+               [Test]
+               public void MoveToAttributeObject ()
+               {
+                       reader = CreateReader ("{}");
+                       Assert.IsFalse (reader.MoveToFirstAttribute (), "#1");
+                       reader.Read (); // element
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#2");
+                       Assert.AreEqual ("type", reader.LocalName, "#3");
+                       Assert.AreEqual ("object", reader.Value, "#4");
+                       Assert.IsTrue (reader.ReadAttributeValue (), "#5");
+                       Assert.AreEqual ("object", reader.Value, "#6");
+                       Assert.IsFalse (reader.MoveToNextAttribute (), "#7");
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#8");
+                       Assert.IsFalse (reader.MoveToNextAttribute (), "#9");
+               }
+
+               [Test]
+               public void MoveToElementObject ()
+               {
+                       reader = CreateReader ("{}");
+                       reader.Read (); // element
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#1");
+                       Assert.IsTrue (reader.MoveToElement (), "#1-1");
+
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#2");
+                       Assert.IsTrue (reader.ReadAttributeValue (), "#2-1");
+                       Assert.IsTrue (reader.MoveToElement (), "#2-2");
+
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#3");
+                       Assert.IsFalse (reader.MoveToNextAttribute (), "#3-1");
+                       Assert.IsTrue (reader.MoveToElement (), "#3-2");
+               }
+
+               [Test]
+               public void MoveToAttributeArray ()
+               {
+                       reader = CreateReader ("[]");
+                       Assert.IsFalse (reader.MoveToFirstAttribute (), "#1");
+                       reader.Read (); // element
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#2");
+                       Assert.AreEqual ("type", reader.LocalName, "#3");
+                       Assert.AreEqual ("array", reader.Value, "#4");
+                       Assert.IsTrue (reader.ReadAttributeValue (), "#5");
+                       Assert.AreEqual ("array", reader.Value, "#6");
+                       Assert.IsFalse (reader.MoveToNextAttribute (), "#7");
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#8");
+                       Assert.IsFalse (reader.MoveToNextAttribute (), "#9");
+               }
+
+               [Test]
+               public void MoveToElementArray ()
+               {
+                       reader = CreateReader ("[]");
+                       reader.Read (); // element
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#1");
+                       Assert.IsTrue (reader.MoveToElement (), "#1-1");
+
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#2");
+                       Assert.IsTrue (reader.ReadAttributeValue (), "#2-1");
+                       Assert.IsTrue (reader.MoveToElement (), "#2-2");
+
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#3");
+                       Assert.IsFalse (reader.MoveToNextAttribute (), "#3-1");
+                       Assert.IsTrue (reader.MoveToElement (), "#3-2");
+               }
+
+               [Test]
+               public void MoveToAttributeSimpleDummyRoot ()
+               {
+                       reader = CreateReader ("1234");
+                       Assert.IsFalse (reader.MoveToFirstAttribute (), "#1");
+                       reader.Read (); // element
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#2");
+                       Assert.AreEqual ("type", reader.LocalName, "#3");
+                       Assert.AreEqual ("number", reader.Value, "#4");
+                       Assert.IsTrue (reader.ReadAttributeValue (), "#5");
+                       Assert.AreEqual ("number", reader.Value, "#6");
+                       Assert.IsFalse (reader.MoveToNextAttribute (), "#7");
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#8");
+                       Assert.IsFalse (reader.MoveToNextAttribute (), "#9");
+               }
+
+               [Test]
+               public void MoveToElementSimpleDummyRoot ()
+               {
+                       reader = CreateReader ("1234");
+                       reader.Read (); // element
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#1");
+                       Assert.IsTrue (reader.MoveToElement (), "#1-1");
+
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#2");
+                       Assert.IsTrue (reader.ReadAttributeValue (), "#2-1");
+                       Assert.IsTrue (reader.MoveToElement (), "#2-2");
+
+                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#3");
+                       Assert.IsFalse (reader.MoveToNextAttribute (), "#3-1");
+                       Assert.IsTrue (reader.MoveToElement (), "#3-2");
+               }
+
+               // Read() arrays and objects
+
+               [Test]
+               public void ReadArrayContent ()
+               {
+                       reader = CreateReader ("[123, \"123\", true, \"true\"]");
+
+                       // number value
+                       reader.Read (); // element
+                       AssertNode (0, "root", XmlNodeType.Element, String.Empty, "array", reader, "#1");
+
+                       reader.Read (); // 123 - element
+                       Assert.AreEqual ("number", reader.GetAttribute ("type"), "#2-0");
+                       AssertNode (1, "item", XmlNodeType.Element, String.Empty, "number", reader, "#2");
+                       reader.Read (); // 123 - text
+                       AssertNode (2, String.Empty, XmlNodeType.Text, "123", null, reader, "#3");
+                       reader.Read (); // 123 - endelement
+                       AssertNode (1, "item", XmlNodeType.EndElement, String.Empty, null, reader, "#4");
+
+                       // string value #1
+                       reader.Read (); // "123" - element
+                       Assert.AreEqual ("string", reader.GetAttribute ("type"), "#5-0");
+                       AssertNode (1, "item", XmlNodeType.Element, String.Empty, "string", reader, "#5");
+                       reader.Read (); // "123" - text
+                       AssertNode (2, String.Empty, XmlNodeType.Text, "123", null, reader, "#6");
+                       reader.Read (); // "123" - endelement
+                       AssertNode (1, "item", XmlNodeType.EndElement, String.Empty, null, reader, "#7");
+
+                       reader.Read (); // true - element
+                       Assert.AreEqual ("boolean", reader.GetAttribute ("type"), "#8-0");
+                       AssertNode (1, "item", XmlNodeType.Element, String.Empty, "boolean", reader, "#8");
+                       reader.Read (); // true - text
+                       AssertNode (2, String.Empty, XmlNodeType.Text, "true", null, reader, "#9");
+                       reader.Read (); // true - endelement
+                       AssertNode (1, "item", XmlNodeType.EndElement, String.Empty, null, reader, "#10");
+
+                       // string value #2
+                       reader.Read (); // "true" - element
+                       Assert.AreEqual ("string", reader.GetAttribute ("type"), "#11-0");
+                       AssertNode (1, "item", XmlNodeType.Element, String.Empty, "string", reader, "#11");
+                       reader.Read (); // "true" - text
+                       AssertNode (2, String.Empty, XmlNodeType.Text, "true", null, reader, "#12");
+                       reader.Read (); // "true" - endelement
+                       AssertNode (1, "item", XmlNodeType.EndElement, String.Empty, null, reader, "#13");
+                       Assert.IsTrue (reader.Read (), "#14"); // ]
+                       AssertNode (0, "root", XmlNodeType.EndElement, String.Empty, null, reader, "#15");
+                       Assert.IsFalse (reader.Read (), "#16"); // EOF
+               }
+
+               [Test]
+               public void ReadObjectContent ()
+               {
+                       reader = CreateReader ("{\"A\":123, \"B\": \"123\", \"C\" :true, \"D\" : \"true\"}");
+
+                       // number value
+                       reader.Read (); // element
+                       AssertNode (0, "root", XmlNodeType.Element, String.Empty, "object", reader, "#1");
+
+                       reader.Read (); // 123 - element
+                       AssertNode (1, "A", XmlNodeType.Element, String.Empty, "number", reader, "#2");
+                       reader.Read (); // 123 - text
+                       AssertNode (2, String.Empty, XmlNodeType.Text, "123", null, reader, "#3");
+                       reader.Read (); // 123 - endelement
+                       AssertNode (1, "A", XmlNodeType.EndElement, String.Empty, null, reader, "#4");
+
+                       // string value #1
+                       reader.Read (); // "123" - element
+                       AssertNode (1, "B", XmlNodeType.Element, String.Empty, "string", reader, "#5");
+                       reader.Read (); // "123" - text
+                       AssertNode (2, String.Empty, XmlNodeType.Text, "123", null, reader, "#6");
+                       reader.Read (); // "123" - endelement
+                       AssertNode (1, "B", XmlNodeType.EndElement, String.Empty, null, reader, "#7");
+
+                       reader.Read (); // true - element
+                       AssertNode (1, "C", XmlNodeType.Element, String.Empty, "boolean", reader, "#8");
+                       reader.Read (); // true - text
+                       AssertNode (2, String.Empty, XmlNodeType.Text, "true", null, reader, "#9");
+                       reader.Read (); // true - endelement
+                       AssertNode (1, "C", XmlNodeType.EndElement, String.Empty, null, reader, "#10");
+
+                       // string value #2
+                       reader.Read (); // "true" - element
+                       AssertNode (1, "D", XmlNodeType.Element, String.Empty, "string", reader, "#11");
+                       reader.Read (); // "true" - text
+                       AssertNode (2, String.Empty, XmlNodeType.Text, "true", null, reader, "#12");
+                       reader.Read (); // "true" - endelement
+                       AssertNode (1, "D", XmlNodeType.EndElement, String.Empty, null, reader, "#13");
+                       Assert.IsTrue (reader.Read (), "#14"); // }
+                       AssertNode (0, "root", XmlNodeType.EndElement, String.Empty, null, reader, "#15");
+                       Assert.IsFalse (reader.Read (), "#16"); // EOF
+               }
+
+               [Test]
+               public void ReadNestedObjects ()
+               {
+                       reader = CreateReader ("{\"A\": [123, {\"B\": \"456\", \"C\" :true}], \"D\" : {\"E\" : \"false\"}}");
+                       Assert.IsTrue (reader.Read (), "#1"); // {
+                       AssertNode (0, "root", XmlNodeType.Element, String.Empty, "object", reader, "#2");
+                       Assert.IsTrue (reader.Read (), "#3"); // A
+                       AssertNode (1, "A", XmlNodeType.Element, String.Empty, "array", reader, "#4");
+                       Assert.IsTrue (reader.Read (), "#5"); // (<123>)
+                       AssertNode (2, "item", XmlNodeType.Element, String.Empty, "number", reader, "#6");
+                       Assert.IsTrue (reader.Read (), "#7"); // (123)
+                       AssertNode (3, String.Empty, XmlNodeType.Text, "123", null, reader, "#8");
+                       Assert.IsTrue (reader.Read (), "#9"); // (</123>)
+                       AssertNode (2, "item", XmlNodeType.EndElement, String.Empty, null, reader, "#10");
+                       Assert.IsTrue (reader.Read (), "#11"); // {
+                       AssertNode (2, "item", XmlNodeType.Element, String.Empty, "object", reader, "#12");
+                       Assert.IsTrue (reader.Read (), "#13"); // B
+                       AssertNode (3, "B", XmlNodeType.Element, String.Empty, "string", reader, "#14");
+                       Assert.IsTrue (reader.Read (), "#15"); // "456"
+                       AssertNode (4, String.Empty, XmlNodeType.Text, "456", null, reader, "#16");
+                       Assert.IsTrue (reader.Read (), "#17"); // /B
+                       AssertNode (3, "B", XmlNodeType.EndElement, String.Empty, null, reader, "#18");
+
+                       Assert.IsTrue (reader.Read (), "#19"); // C
+                       AssertNode (3, "C", XmlNodeType.Element, String.Empty, "boolean", reader, "#20");
+                       Assert.IsTrue (reader.Read (), "#21"); // true
+                       AssertNode (4, String.Empty, XmlNodeType.Text, "true", null, reader, "#22");
+                       Assert.IsTrue (reader.Read (), "#23"); // /C
+                       AssertNode (3, "C", XmlNodeType.EndElement, String.Empty, null, reader, "#24");
+                       Assert.IsTrue (reader.Read (), "#25"); // }
+                       AssertNode (2, "item", XmlNodeType.EndElement, String.Empty, null, reader, "#26");
+                       Assert.IsTrue (reader.Read (), "#27"); // ]
+                       AssertNode (1, "A", XmlNodeType.EndElement, String.Empty, null, reader, "#28");
+                       Assert.IsTrue (reader.Read (), "#29"); // {
+                       AssertNode (1, "D", XmlNodeType.Element, String.Empty, "object", reader, "#30");
+                       Assert.IsTrue (reader.Read (), "#31"); // D
+                       AssertNode (2, "E", XmlNodeType.Element, String.Empty, "string", reader, "#32");
+                       Assert.IsTrue (reader.Read (), "#33"); // "false"
+                       AssertNode (3, String.Empty, XmlNodeType.Text, "false", null, reader, "#34");
+                       Assert.IsTrue (reader.Read (), "#35"); // /D
+                       AssertNode (2, "E", XmlNodeType.EndElement, String.Empty, null, reader, "#36");
+                       Assert.IsTrue (reader.Read (), "#37"); // }
+                       AssertNode (1, "D", XmlNodeType.EndElement, String.Empty, null, reader, "#38");
+                       Assert.IsTrue (reader.Read (), "#39"); // }
+                       AssertNode (0, "root", XmlNodeType.EndElement, String.Empty, null, reader, "#40");
+                       Assert.IsFalse (reader.Read (), "#41"); // EOF
+               }
+
+               void ReadToEnd (XmlDictionaryReader reader)
+               {
+                       while (!reader.EOF)
+                               reader.Read ();
+               }
+
+               // Read() valid and invalid contents
+
+               [Test]
+               [Ignore ("It should throw XmlException for parser error, but .NET fails to report that")]
+               public void ReadTwoTopLevelContents ()
+               {
+                       ReadToEnd (CreateReader ("{}{}"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadMissingCloseCurly ()
+               {
+                       ReadToEnd (CreateReader ("{"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadMissingCloseCurly2 ()
+               {
+                       ReadToEnd (CreateReader ("{{}"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadExtraCloseCurly ()
+               {
+                       ReadToEnd (CreateReader ("}"));
+               }
+
+               [Test]
+               [Ignore ("It should throw XmlException for parser error, but .NET fails to report that")]
+               public void ReadExtraCloseCurly2 ()
+               {
+                       ReadToEnd (CreateReader ("{}}"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadMissingCloseBrace ()
+               {
+                       ReadToEnd (CreateReader ("["));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadMissingCloseBrace2 ()
+               {
+                       ReadToEnd (CreateReader ("[[]"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadExtraCloseBrace ()
+               {
+                       ReadToEnd (CreateReader ("]"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               [Ignore ("NotDotNet")] // hmm, why does it pass?
+               public void ReadExtraCloseBrace2 ()
+               {
+                       ReadToEnd (CreateReader ("[]]"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadOpenCurlyCloseBrace ()
+               {
+                       ReadToEnd (CreateReader ("{]"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadOpenBraceCloseCurly ()
+               {
+                       ReadToEnd (CreateReader ("[}"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadParens ()
+               {
+                       ReadToEnd (CreateReader ("()"));
+               }
+
+               [Test]
+               public void ReadValidNumber ()
+               {
+                       ReadToEnd (CreateReader ("0"));
+               }
+
+               [Test]
+               public void ReadValidNumber2 ()
+               {
+                       ReadToEnd (CreateReader ("-0"));
+               }
+
+               [Test]
+               public void ReadValidNumber3 ()
+               {
+                       ReadToEnd (CreateReader ("0e5"));
+               }
+
+               [Test]
+               public void ReadValidNumber4 ()
+               {
+                       ReadToEnd (CreateReader ("0.5"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadInvalidNumber ()
+               {
+                       CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture;
+                       try {
+                               Thread.CurrentThread.CurrentCulture = new CultureInfo ("de-DE");
+                               // if we read a number just by current culture, it will be regarded as correct JSON.
+                               ReadToEnd (CreateReader ("123,45"));
+                       } finally {
+                               Thread.CurrentThread.CurrentCulture = originalCulture;
+                       }
+               }
+
+               [Test]
+               public void ReadValidNumberGerman ()
+               {
+                       CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture;
+                       try {
+                               Thread.CurrentThread.CurrentCulture = new CultureInfo ("de-DE");
+                               var s = GetInput ("123.45"); // German is ',' for decimals
+                               var r = new DataContractJsonSerializer (typeof (double));
+                               var d = (double) r.ReadObject (s);
+                               Assert.AreEqual (123.45, d, "InvariantCulture");
+                       } finally {
+                               Thread.CurrentThread.CurrentCulture = originalCulture;
+                       }
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadInvalidNumber2 ()
+               {
+                       ReadToEnd (CreateReader ("+5"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               [Ignore ("NotDotNet")] // likely .NET bug
+               public void ReadInvalidNumber3 ()
+               {
+                       ReadToEnd (CreateReader ("01"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadInvalidNumber4 ()
+               {
+                       ReadToEnd (CreateReader (".1"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               [Ignore ("NotDotNet")] // likely .NET bug
+               public void ReadInvalidNumber5 ()
+               {
+                       ReadToEnd (CreateReader ("10."));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadInvalidNumber7 ()
+               {
+                       ReadToEnd (CreateReader ("e5"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               [Ignore ("NotDotNet")] // likely .NET bug
+               public void ReadInvalidNumber8 ()
+               {
+                       ReadToEnd (CreateReader ("-e5"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               [Ignore ("NotDotNet")] // likely .NET bug
+               public void ReadInvalidNumber9 ()
+               {
+                       ReadToEnd (CreateReader ("-e5.5"));
+               }
+
+               [Test]
+               public void ReadInvalidNumber10 () // bug #531904
+               {
+                       ReadToEnd (CreateReader ("4.29153442382814E-05"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadInvalidObjectContent ()
+               {
+                       ReadToEnd (CreateReader ("{\"foo\"}"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               [Ignore ("NotDotNet")] // likely .NET bug
+               public void ReadInvalidObjectContent2 ()
+               {
+                       ReadToEnd (CreateReader ("{\"A\": 123 456}"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadInvalidObjectContent3 ()
+               {
+                       ReadToEnd (CreateReader ("{, \"A\":123, \"B\":456}"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               [Ignore ("NotDotNet")] // likely .NET bug
+               public void ReadInvalidObjectContent4 ()
+               {
+                       ReadToEnd (CreateReader ("{\"A\":123, \"B\":456,}"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadInvalidArrayContent ()
+               {
+                       ReadToEnd (CreateReader ("[\"foo\":\"bar\"]"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               [Ignore ("NotDotNet")] // likely .NET bug
+               public void ReadInvalidArrayContent2 ()
+               {
+                       ReadToEnd (CreateReader ("[123 456]"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadInvalidArrayContent3 ()
+               {
+                       ReadToEnd (CreateReader ("[,123,456]"));
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               [Ignore ("NotDotNet")] // likely .NET bug
+               public void ReadInvalidArrayContent4 ()
+               {
+                       ReadToEnd (CreateReader ("[123,456,]"));
+               }
+
+               [Test]
+               public void ReadObjectRuntimeTypeAsAttribute ()
+               {
+                       XmlDictionaryReader r = CreateReader ("{\"__type\":\"System.Int32\"}");
+                       r.Read ();
+                       AssertNode (0, "root", XmlNodeType.Element, String.Empty, "object", r, "#1");
+                       Assert.IsTrue (r.MoveToAttribute ("type"), "#2");
+                       AssertNode (0, "type", XmlNodeType.Attribute, "object", "object", r, "#3");
+                       Assert.IsTrue (r.MoveToAttribute ("__type"), "#4");
+                       AssertNode (0, "__type", XmlNodeType.Attribute, "System.Int32", "object", r, "#5");
+                       r.Read ();
+                       Assert.AreEqual (XmlNodeType.EndElement, r.NodeType, "#6");
+               }
+
+               [Test]
+               public void ReadObjectRuntimeType ()
+               {
+                       XmlDictionaryReader r = CreateReader ("{\"__type\":\"System.Int32\", \"foo\":true}");
+                       r.Read ();
+                       AssertNode (0, "root", XmlNodeType.Element, String.Empty, "object", r, "#1");
+                       Assert.IsTrue (r.MoveToAttribute ("type"), "#2");
+                       AssertNode (0, "type", XmlNodeType.Attribute, "object", "object", r, "#3");
+                       Assert.IsTrue (r.MoveToAttribute ("__type"), "#4");
+                       AssertNode (0, "__type", XmlNodeType.Attribute, "System.Int32", "object", r, "#5");
+                       r.Read ();
+                       Assert.AreEqual (XmlNodeType.Element, r.NodeType, "#6");
+                       Assert.AreEqual ("foo", r.LocalName, "#7");
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void ReadInvalidObjectRuntimeTypeValue ()
+               {
+                       ReadToEnd (CreateReader ("{\"__type\":true}"));
+               }
+
+               [Test]
+               public void ReadObjectRuntimeTypeIncorrectPosition ()
+               {
+                       XmlReader r = CreateReader ("{\"foo\" : false, \"__type\" : \"System.Int32\"}");
+                       r.Read ();
+                       // When __type is not at the first content, it is not regarded as an attribute. Note that it is not treated as an error.
+                       Assert.IsFalse (r.MoveToAttribute ("__type"));
+                       r.Skip ();
+               }
+
+               [Test]
+               public void ReadObjectRuntimeTypeInArray ()
+               {
+                       XmlReader r = CreateReader (@"[{""__type"":""DCWithEnum:#MonoTests.System.Runtime.Serialization.Json"",""_colors"":0}]");
+                       r.Read ();
+                       Assert.AreEqual ("root", r.LocalName, "#1-1");
+                       Assert.AreEqual ("array", r.GetAttribute ("type"), "#1-2");
+                       r.Read ();
+                       Assert.AreEqual ("item", r.LocalName, "#2-1");
+                       Assert.AreEqual ("object", r.GetAttribute ("type"), "#2-2");
+                       Assert.IsNotNull (r.GetAttribute ("__type"), "#2-3");
+                       r.Read ();
+               }
+
+               [Test]
+               public void Skip ()
+               {
+                       XmlReader r = CreateReader ("{\"type\" : \"\", \"valid\" : \"0\", \"other\" : \"\"}");
+                       r.ReadStartElement ();
+                       r.MoveToContent ();
+                       Assert.AreEqual ("type", r.Name, "Skip-1");
+                       r.ReadElementContentAsString ();
+                       r.MoveToContent ();
+                       Assert.AreEqual ("valid", r.Name, "Skip-2");
+                       r.Skip ();
+                       Assert.AreEqual ("other", r.Name, "Skip-3");
+               }
+
+               [Test]
+               public void Depth ()
+               {
+                       XmlReader r = CreateReader ("{\"type\" : \"\", \"valid\" : \"0\"}");
+                       r.ReadStartElement ();
+                       r.Read ();
+                       Assert.AreEqual (2, r.Depth, "Depth-1");
+               }
+
+               [Test]
+               public void UnicodeEncodingAutoDetect ()
+               {
+                       var ms = new MemoryStream (Encoding.Unicode.GetBytes ("{\"type\" : \"\", \"valid\" : \"0\"}"));
+                       XmlReader r = JsonReaderWriterFactory.CreateJsonReader (ms, new XmlDictionaryReaderQuotas ());
+                       r.ReadStartElement ();
+                       r.Read ();
+               }
+
+               [Test]
+               public void ReadNumberAsObject ()
+               {
+                       const double testValue = 42.42D;
+                       var serializer = new DataContractJsonSerializer (typeof (object));
+                       var serializedStream = GetInput (testValue.ToString (CultureInfo.InvariantCulture));
+                       var deserializedValue = serializer.ReadObject (serializedStream);
+                       Assert.AreEqual (typeof (decimal), deserializedValue.GetType ());
+                       Assert.AreEqual (testValue, (decimal) deserializedValue);
+               }
+
+               [Test]
+               public void IEnumerableTest ()
+               {
+                       string json = "[\"A\", \"B\"]";
+                       using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(json))) {
+                               DataContractJsonSerializer jsonSerializer = new
+                                       DataContractJsonSerializer(typeof(IEnumerable<string>));
+                               var result = jsonSerializer.ReadObject(stream);
+                               Assert.AreEqual (typeof (string []), result.GetType ());
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization.Json/JsonWriterTest.cs b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization.Json/JsonWriterTest.cs
new file mode 100644 (file)
index 0000000..b6e42b9
--- /dev/null
@@ -0,0 +1,640 @@
+//
+// JsonWriterTest.cs
+//
+// Author:
+//     Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.IO;
+using System.Text;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Json;
+using System.Xml;
+using NUnit.Framework;
+
+namespace MonoTests.System.Runtime.Serialization.Json
+{
+       [TestFixture]
+       public class JsonWriterTest
+       {
+               MemoryStream ms;
+               XmlDictionaryWriter w;
+
+               string ResultString {
+                       get { return Encoding.UTF8.GetString (ms.ToArray ()); }
+               }
+
+               [SetUp]
+               public void Setup ()
+               {
+                       ms = new MemoryStream ();
+                       w = JsonReaderWriterFactory.CreateJsonWriter (ms);
+               }
+
+               /*
+               [Test]
+               public void Dummy_BitFlagsGenerator ()
+               {
+                       var b = new BitFlagsGenerator (2);
+                       Assert.IsFalse (b.Load (0), "#a1");
+                       b.Store (0, false);
+                       Assert.IsFalse (b.Load (0), "#a2");
+                       b.Store (0, true);
+                       Assert.IsTrue (b.Load (0), "#a3");
+                       Assert.IsFalse (b.Load (1), "#a4");
+                       b.Store (0, false);
+                       Assert.IsFalse (b.Load (0), "#a5");
+                       Assert.IsFalse (b.Load (1), "#a6");
+
+                       Assert.IsFalse (b.Load (1), "#b1");
+                       b.Store (1, false);
+                       Assert.IsFalse (b.Load (1), "#b2");
+                       b.Store (1, true);
+                       Assert.IsTrue (b.Load (1), "#b3");
+                       b.Store (1, false);
+                       Assert.IsFalse (b.Load (1), "#b4");
+
+                       var bytes = new byte [2];
+                       Assert.IsFalse (BitFlagsGenerator.IsBitSet (bytes, 0), "#c1");
+                       BitFlagsGenerator.SetBit (bytes, 0);
+                       Assert.IsTrue (BitFlagsGenerator.IsBitSet (bytes, 0), "#c2");
+                       Assert.IsFalse (BitFlagsGenerator.IsBitSet (bytes, 1), "#c3");
+                       BitFlagsGenerator.SetBit (bytes, 0);
+                       Assert.IsTrue (BitFlagsGenerator.IsBitSet (bytes, 0), "#c4");
+               }
+               */
+
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void ConstructorNullStream ()
+               {
+                       JsonReaderWriterFactory.CreateJsonWriter (null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void ConstructorNullEncoding ()
+               {
+                       JsonReaderWriterFactory.CreateJsonWriter (new MemoryStream (), null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void SimpleElementNotRoot ()
+               {
+                       w.WriteStartElement ("foo");
+               }
+
+               [Test]
+               public void SimpleElement ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteEndElement ();
+                       w.Close ();
+                       // empty string literal ("")
+                       Assert.AreEqual ("\"\"", ResultString, "#1");
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void SimpleElement2 ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteStartElement ("foo");
+                       // type='array' or type='object' is required before writing immediate child of an element.
+               }
+
+               [Test]
+               public void SimpleElement3 ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "object");
+                       w.WriteStartElement ("e1");
+                       w.WriteAttributeString ("type", "object");
+                       w.WriteStartElement ("e1_1");
+                       w.WriteEndElement (); // treated as a string literal
+                       w.WriteEndElement ();
+                       w.WriteStartElement ("e2");
+                       w.WriteString ("value");
+                       w.WriteEndElement ();
+                       w.WriteEndElement ();
+                       w.Close ();
+                       string json = "{\"e1\":{\"e1_1\":\"\"},\"e2\":\"value\"}";
+                       Assert.AreEqual (json, ResultString, "#1");
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void AttributeNonType ()
+               {
+                       w.WriteStartElement ("root");
+                       // only "type" attribute is expected.
+                       w.WriteStartAttribute ("a1");
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void TypeAttributeNonStandard ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "foo");
+               }
+
+               [Test]
+               public void SimpleTypeAttribute ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "number");
+                       w.WriteEndElement ();
+                       w.Close ();
+                       Assert.AreEqual (String.Empty, ResultString, "#1");
+               }
+
+               [Test]
+               public void SimpleTypeAttribute2 ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "object");
+                       w.WriteStartElement ("foo");
+                       w.WriteAttributeString ("type", "number");
+                       w.WriteString ("1");
+                       w.WriteEndElement ();
+                       w.Close ();
+                       Assert.AreEqual ("{\"foo\":1}", ResultString, "#1");
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void WriteStringForNull ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteStartElement ("foo");
+                       w.WriteAttributeString ("type", "null");
+                       w.WriteString ("1");
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void WriteStringForArray ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "object");
+                       w.WriteStartElement ("foo");
+                       w.WriteAttributeString ("type", "array");
+                       w.WriteString ("1");
+               }
+
+               [Test]
+               // uh, no exception?
+               public void WriteStringForBoolean ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "object");
+                       w.WriteStartElement ("foo");
+                       w.WriteAttributeString ("type", "boolean");
+                       w.WriteString ("xyz");
+                       w.WriteEndElement ();
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void WriteStringForObject ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "object");
+                       w.WriteString ("1");
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void WriteArrayNonItem ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteStartElement ("foo");
+                       w.WriteAttributeString ("type", "array");
+                       w.WriteStartElement ("bar");
+               }
+
+               [Test]
+               public void WriteArray ()
+               {
+                       w.WriteStartElement ("root"); // name is ignored
+                       w.WriteAttributeString ("type", "array");
+                       w.WriteElementString ("item", "v1");
+                       w.WriteElementString ("item", "v2");
+                       w.Close ();
+                       Assert.AreEqual (@"[""v1"",""v2""]", ResultString, "#1");
+               }
+
+               [Test]
+               public void WriteArrayInObject ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "object");
+                       w.WriteStartElement ("foo");
+                       w.WriteAttributeString ("type", "array");
+                       w.WriteElementString ("item", "v1");
+                       w.WriteElementString ("item", "v2");
+                       w.Close ();
+                       Assert.AreEqual (@"{""foo"":[""v1"",""v2""]}", ResultString, "#1");
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void WriteStartElementNonEmptyNS ()
+               {
+                       // namespaces are not allowed
+                       w.WriteStartElement (String.Empty, "x", "urn:foo");
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void WriteStartElementNonEmptyPrefix ()
+               {
+                       // prefixes are not allowed
+                       w.WriteStartElement ("p", "x", "urn:foo");
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void WriteStartElementMultiTopLevel ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteEndElement ();
+                       // hmm...
+                       Assert.AreEqual (WriteState.Content, w.WriteState, "#1");
+                       // writing of multiple root elements is not supported
+                       w.WriteStartElement ("root2");
+                       w.Close ();
+                       Assert.AreEqual (String.Empty, ResultString, "#2");
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void WriteStartAttributeNonEmptyNS ()
+               {
+                       // namespaces are not allowed
+                       w.WriteStartElement ("root");
+                       // well, empty prefix for a global attribute would be
+                       // replaced anyways ...
+                       w.WriteStartAttribute (String.Empty, "x", "urn:foo");
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void WriteStartAttributeInXmlNamespace ()
+               {
+                       // even "xml" namespace is not allowed (anyways only "type" is allowed ...)
+                       w.WriteStartElement ("root");
+                       w.WriteStartAttribute ("xml", "lang", "http://www.w3.org/XML/1998/namespace");
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void LookupPrefixNull ()
+               {
+                       w.LookupPrefix (null);
+               }
+
+               [Test]
+               public void LookupPrefix ()
+               {
+                       // since namespaces are not allowed, it mostly makes no sense...
+                       Assert.AreEqual (String.Empty, w.LookupPrefix (String.Empty), "#1");
+                       Assert.IsNull (w.LookupPrefix ("urn:nonexistent"), "#2");
+                       Assert.AreEqual ("xml", w.LookupPrefix ("http://www.w3.org/XML/1998/namespace"), "#3");
+                       Assert.AreEqual ("xmlns", w.LookupPrefix ("http://www.w3.org/2000/xmlns/"), "#4");
+               }
+
+               [Test]
+               public void WriteStartDocument ()
+               {
+                       Assert.AreEqual (WriteState.Start, w.WriteState, "#1");
+                       w.WriteStartDocument ();
+                       Assert.AreEqual (WriteState.Start, w.WriteState, "#2");
+                       w.WriteStartDocument (true);
+                       Assert.AreEqual (WriteState.Start, w.WriteState, "#3");
+                       // So, it does nothing
+               }
+
+               [Test]
+               public void WriteEndDocument ()
+               {
+                       w.WriteEndDocument (); // so, it is completely wrong, but ignored.
+               }
+
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               public void WriteDocType ()
+               {
+                       w.WriteDocType (null, null, null, null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               public void WriteComment ()
+               {
+                       w.WriteComment ("test");
+               }
+
+               [Test]
+               [ExpectedException (typeof (NotSupportedException))]
+               public void WriteEntityRef ()
+               {
+                       w.WriteEntityRef ("ent");
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void WriteProcessingInstruction ()
+               {
+                       // since this method accepts case-insensitive "XML",
+                       // it throws ArgumentException.
+                       w.WriteProcessingInstruction ("T", "D");
+               }
+
+               [Test]
+               public void WriteProcessingInstructionXML ()
+               {
+                       // You might not know, but in some cases, things like
+                       // XmlWriter.WriteNode() is implemented to invoke
+                       // this method for writing XML declaration. This
+                       // check is (seems) case-insensitive.
+                       w.WriteProcessingInstruction ("XML", "foobar");
+                       // In this case, the data is simply ignored (as
+                       // WriteStartDocument() is).
+               }
+
+               [Test]
+               public void WriteRaw ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteRaw ("sample");
+                       w.WriteRaw (new char [] {'0', '1', '2', '3'}, 1, 2);
+                       w.Close ();
+                       Assert.AreEqual ("\"sample12\"", ResultString);
+               }
+
+               [Test]
+               public void WriteCData ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteCData ("]]>"); // this behavior is incompatible with ordinal XmlWriters.
+                       w.Close ();
+                       Assert.AreEqual ("\"]]>\"", ResultString);
+               }
+
+               [Test]
+               public void WriteCharEntity ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteCharEntity ('>');
+                       w.Close ();
+                       Assert.AreEqual ("\">\"", ResultString);
+               }
+
+               [Test]
+               public void WriteWhitespace ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteWhitespace ("\t  \n\r");
+                       w.Close ();
+                       Assert.AreEqual (@"""\u0009  \u000a\u000d""", ResultString);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void WriteWhitespaceNonWhitespace ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteWhitespace ("TEST");
+               }
+
+               [Test]
+               [ExpectedException (typeof (InvalidOperationException))]
+               public void WriteStringTopLevel ()
+               {
+                       w.WriteString ("test");
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void WriteStartAttributeTopLevel ()
+               {
+                       w.WriteStartAttribute ("test");
+               }
+
+               [Test]
+               [ExpectedException (typeof (InvalidOperationException))]
+               public void WriteStartDocumentAtClosed ()
+               {
+                       w.Close ();
+                       w.WriteStartDocument ();
+               }
+
+               [Test]
+               [ExpectedException (typeof (InvalidOperationException))]
+               public void WriteStartElementAtClosed ()
+               {
+                       w.Close ();
+                       w.WriteStartElement ("foo");
+               }
+
+               [Test]
+               [ExpectedException (typeof (InvalidOperationException))]
+               public void WriteProcessingInstructionAtClosed ()
+               {
+                       w.Close ();
+                       w.WriteProcessingInstruction ("xml", "version='1.0'");
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void WriteMixedContent ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteString ("TEST");
+                       w.WriteStartElement ("mixed"); // is not allowed.
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void WriteStartElementInvalidTopLevelName ()
+               {
+                       w.WriteStartElement ("anyname");
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void WriteStartElementNullName ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "object");
+                       w.WriteStartElement (null);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void WriteStartElementEmptyName ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "object");
+                       w.WriteStartElement (String.Empty);
+                       // It is regarded as invalid name in JSON. However,
+                       // I don't think there is such limitation in JSON specification.
+               }
+
+               [Test]
+               public void WriteStartElementWithRuntimeTypeName ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "object");
+                       w.WriteAttributeString ("__type", "FooType:#FooNamespace");
+                       w.Close ();
+                       Assert.AreEqual (@"{""__type"":""FooType:#FooNamespace""}", ResultString);
+               }
+
+               [Test]
+               public void WriteStartElementWeirdName ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "object");
+                       w.WriteStartElement ("!!!");
+                       w.Close ();
+                       Assert.AreEqual (@"{""!!!"":""""}", ResultString);
+               }
+
+               [Test]
+               public void WriteRootAsObject ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteStartAttribute ("type");
+                       w.WriteString ("object");
+                       w.WriteEndAttribute ();
+                       w.Close ();
+                       Assert.AreEqual ("{}", ResultString);
+               }
+
+               [Test]
+               public void WriteRootAsArray ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteStartAttribute ("type");
+                       w.WriteString ("array");
+                       w.WriteEndAttribute ();
+                       w.Close ();
+                       Assert.AreEqual ("[]", ResultString);
+               }
+
+               [Test]
+               public void WriteRootAsLiteral ()
+               {
+                       w.WriteStartElement ("root");
+                       w.Close ();
+                       Assert.AreEqual ("\"\"", ResultString);
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void WriteEndElementOnAttribute ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteStartAttribute ("type");
+                       w.WriteString ("array");
+                       w.WriteEndElement ();
+               }
+
+               [Test]
+               public void WriteAttributeAsSeparateStrings ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteStartAttribute ("type");
+                       w.WriteString ("arr");
+                       w.WriteString ("ay");
+                       w.WriteEndAttribute ();
+                       w.Close ();
+                       Assert.AreEqual ("[]", ResultString);
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void WriteStartAttributeInAttributeMode ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteStartAttribute ("type");
+                       w.WriteStartAttribute ("type");
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void WriteStartAttributeInContentMode ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteString ("TEST");
+                       w.WriteStartAttribute ("type");
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void WriteStartElementInAttributeMode ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteStartAttribute ("type");
+                       w.WriteStartElement ("child");
+               }
+
+               [Test]
+               [ExpectedException (typeof (XmlException))]
+               public void CloseAtAtributeState ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteStartAttribute ("type");
+                       w.WriteString ("array");
+                       // It calls WriteEndElement() without calling
+                       // WriteEndAttribute().
+                       w.Close ();
+               }
+
+               [Test]
+               public void WriteSlashEscaped ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteString ("/my date/");
+                       w.WriteEndElement ();
+                       w.Close ();
+                       Assert.AreEqual ("\"\\/my date\\/\"", ResultString);
+               }
+
+               [Test]
+               public void WriteNullType ()
+               {
+                       w.WriteStartElement ("root");
+                       w.WriteAttributeString ("type", "object");
+                       w.WriteStartElement ("foo");
+                       w.WriteAttributeString ("type", "null");
+                       w.Close ();
+                       Assert.AreEqual ("{\"foo\":null}", ResultString);
+               }
+       }
+}
diff --git a/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/Bug36100.cs b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/Bug36100.cs
new file mode 100644 (file)
index 0000000..4a7ac6c
--- /dev/null
@@ -0,0 +1,14381 @@
+using System;
+using global::System.Runtime.Serialization;
+using global::System.Diagnostics;
+using global::System.ServiceModel;
+using System.IO;
+using NUnit.Framework;
+
+namespace MonoTests.System.Runtime.Serialization
+{
+       [TestFixture]
+       public class Bug36100
+       {
+               // This test exposed an issue with our dynamic serializer support and
+               // would cause problems with static compilation on 64 bit devices in
+               // FullAOT mode.
+               [Test]
+               public void SerializerDynamicInvoke ()
+               {
+                       var a = new DingusSyncData ();
+                       a.Aircraft = new AircraftDTO[] { new AircraftDTO () { } };
+                       a.AircraftTypes = new AircraftTypeDTO[] { new AircraftTypeDTO () };
+                       a.Airlines= new AirlineDTO[] { new AirlineDTO () };
+                       a.Airports= new AirportDTO[] { new AirportDTO() };
+                       a.Approaches= new ApproachDTO[] { new ApproachDTO() };
+                       a.ApproachesLegs= new ApproachesLegDTO[] { new ApproachesLegDTO() };
+                       a.Binaries= new BinaryCatalogDTO[] { new BinaryCatalogDTO() };
+                       a.Crews= new CrewDTO[] { new CrewDTO() };
+                       a.Days= new DayDTO[] { new DayDTO() };
+                       a.EmploymentEvents= new EmploymentEventDTO[] { new EmploymentEventDTO() };
+                       a.Events= new EventDTO[] { new EventDTO() };
+                       a.FlightDataInspection = new DataInspection ();
+                       a.GlobalSettings= new GlobalSettingDTO[] { new GlobalSettingDTO() };
+                       a.Hotels= new HotelDTO[] { new HotelDTO() };
+                       a.Legs= new LegDTO[] { new LegDTO() };
+                       a.Notes= new NoteDTO[] { new NoteDTO() };
+                       a.PayperiodEvents= new PayperiodEventDTO[] { new PayperiodEventDTO() };
+                       a.PayrollCategories= new PayrollCategoryDTO[] { new PayrollCategoryDTO() };
+                       a.Payrolls= new PayrollDTO[] { new PayrollDTO() };
+                       a.Performances= new PerformanceDTO[] { new PerformanceDTO() };
+                       a.Positions= new PositionDTO[] { new PositionDTO() };
+                       a.ReglatoryOperationTypes= new ReglatoryOperationTypeDTO[] { new ReglatoryOperationTypeDTO() };
+                       a.Trips= new TripDTO[] { new TripDTO() };
+                       a.UserSettings= new UserSettingDTO[] { new UserSettingDTO() };
+
+                       Console.WriteLine ("Size is: {0}", global::System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)));
+                       using (var ms = new MemoryStream ()) {
+                               DataContractSerializer serializer = new DataContractSerializer (typeof(DingusSyncData));
+                               serializer.WriteObject (ms, a);
+                               ms.Position = 0;
+                               var b = serializer.ReadObject (ms);
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="DingusSyncData", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class DingusSyncData : object
+       {
+
+               AircraftDTO[] AircraftField;
+
+               AircraftTypeDTO[] AircraftTypesField;
+
+               AirlineDTO[] AirlinesField;
+
+               AirportDTO[] AirportsField;
+
+               ApproachDTO[] ApproachesField;
+
+               ApproachesLegDTO[] ApproachesLegsField;
+
+               BinaryCatalogDTO[] BinariesField;
+
+               CrewDTO[] CrewsField;
+
+               DayDTO[] DaysField;
+
+               EmploymentEventDTO[] EmploymentEventsField;
+
+               EventDTO[] EventsField;
+
+               DataInspection FlightDataInspectionField;
+
+               GlobalSettingDTO[] GlobalSettingsField;
+
+               HotelDTO[] HotelsField;
+
+               LegDTO[] LegsField;
+
+               NoteDTO[] NotesField;
+
+               PayperiodEventDTO[] PayperiodEventsField;
+
+               PayrollCategoryDTO[] PayrollCategoriesField;
+
+               PayrollDTO[] PayrollsField;
+
+               PerformanceDTO[] PerformancesField;
+
+               PositionDTO[] PositionsField;
+
+               ReglatoryOperationTypeDTO[] ReglatoryOperationTypesField;
+
+               TripDTO[] TripsField;
+
+               UserSettingDTO[] UserSettingsField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public AircraftDTO[] Aircraft
+               {
+                       get
+                       {
+                               return this.AircraftField;
+                       }
+                       set
+                       {
+                               this.AircraftField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public AircraftTypeDTO[] AircraftTypes
+               {
+                       get
+                       {
+                               return this.AircraftTypesField;
+                       }
+                       set
+                       {
+                               this.AircraftTypesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public AirlineDTO[] Airlines
+               {
+                       get
+                       {
+                               return this.AirlinesField;
+                       }
+                       set
+                       {
+                               this.AirlinesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public AirportDTO[] Airports
+               {
+                       get
+                       {
+                               return this.AirportsField;
+                       }
+                       set
+                       {
+                               this.AirportsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public ApproachDTO[] Approaches
+               {
+                       get
+                       {
+                               return this.ApproachesField;
+                       }
+                       set
+                       {
+                               this.ApproachesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public ApproachesLegDTO[] ApproachesLegs
+               {
+                       get
+                       {
+                               return this.ApproachesLegsField;
+                       }
+                       set
+                       {
+                               this.ApproachesLegsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public BinaryCatalogDTO[] Binaries
+               {
+                       get
+                       {
+                               return this.BinariesField;
+                       }
+                       set
+                       {
+                               this.BinariesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public CrewDTO[] Crews
+               {
+                       get
+                       {
+                               return this.CrewsField;
+                       }
+                       set
+                       {
+                               this.CrewsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public DayDTO[] Days
+               {
+                       get
+                       {
+                               return this.DaysField;
+                       }
+                       set
+                       {
+                               this.DaysField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public EmploymentEventDTO[] EmploymentEvents
+               {
+                       get
+                       {
+                               return this.EmploymentEventsField;
+                       }
+                       set
+                       {
+                               this.EmploymentEventsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public EventDTO[] Events
+               {
+                       get
+                       {
+                               return this.EventsField;
+                       }
+                       set
+                       {
+                               this.EventsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public DataInspection FlightDataInspection
+               {
+                       get
+                       {
+                               return this.FlightDataInspectionField;
+                       }
+                       set
+                       {
+                               this.FlightDataInspectionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public GlobalSettingDTO[] GlobalSettings
+               {
+                       get
+                       {
+                               return this.GlobalSettingsField;
+                       }
+                       set
+                       {
+                               this.GlobalSettingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public HotelDTO[] Hotels
+               {
+                       get
+                       {
+                               return this.HotelsField;
+                       }
+                       set
+                       {
+                               this.HotelsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public LegDTO[] Legs
+               {
+                       get
+                       {
+                               return this.LegsField;
+                       }
+                       set
+                       {
+                               this.LegsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public NoteDTO[] Notes
+               {
+                       get
+                       {
+                               return this.NotesField;
+                       }
+                       set
+                       {
+                               this.NotesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public PayperiodEventDTO[] PayperiodEvents
+               {
+                       get
+                       {
+                               return this.PayperiodEventsField;
+                       }
+                       set
+                       {
+                               this.PayperiodEventsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public PayrollCategoryDTO[] PayrollCategories
+               {
+                       get
+                       {
+                               return this.PayrollCategoriesField;
+                       }
+                       set
+                       {
+                               this.PayrollCategoriesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public PayrollDTO[] Payrolls
+               {
+                       get
+                       {
+                               return this.PayrollsField;
+                       }
+                       set
+                       {
+                               this.PayrollsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public PerformanceDTO[] Performances
+               {
+                       get
+                       {
+                               return this.PerformancesField;
+                       }
+                       set
+                       {
+                               this.PerformancesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public PositionDTO[] Positions
+               {
+                       get
+                       {
+                               return this.PositionsField;
+                       }
+                       set
+                       {
+                               this.PositionsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public ReglatoryOperationTypeDTO[] ReglatoryOperationTypes
+               {
+                       get
+                       {
+                               return this.ReglatoryOperationTypesField;
+                       }
+                       set
+                       {
+                               this.ReglatoryOperationTypesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public TripDTO[] Trips
+               {
+                       get
+                       {
+                               return this.TripsField;
+                       }
+                       set
+                       {
+                               this.TripsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public UserSettingDTO[] UserSettings
+               {
+                       get
+                       {
+                               return this.UserSettingsField;
+                       }
+                       set
+                       {
+                               this.UserSettingsField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="DataInspection", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class DataInspection : object
+       {
+
+               private int DayCountField;
+
+               private int LegCountField;
+
+               private Nullable<global::System.DateTime> MaxTripSequenceEndField;
+
+               private Nullable<global::System.DateTime> MinTripSequenceStartField;
+
+               private int TripCountField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int DayCount
+               {
+                       get
+                       {
+                               return this.DayCountField;
+                       }
+                       set
+                       {
+                               this.DayCountField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int LegCount
+               {
+                       get
+                       {
+                               return this.LegCountField;
+                       }
+                       set
+                       {
+                               this.LegCountField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> MaxTripSequenceEnd
+               {
+                       get
+                       {
+                               return this.MaxTripSequenceEndField;
+                       }
+                       set
+                       {
+                               this.MaxTripSequenceEndField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> MinTripSequenceStart
+               {
+                       get
+                       {
+                               return this.MinTripSequenceStartField;
+                       }
+                       set
+                       {
+                               this.MinTripSequenceStartField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int TripCount
+               {
+                       get
+                       {
+                               return this.TripCountField;
+                       }
+                       set
+                       {
+                               this.TripCountField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="AircraftDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class AircraftDTO : object
+       {
+
+               private string aircraftIdField;
+
+               private string aircraftTypeIdField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private string currentAirlineIdField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notesField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<decimal> payrateField;
+
+               private Nullable<bool> previewField;
+
+               private string previousAirlineIdField;
+
+               private string registrationField;
+
+               private string shipNumberField;
+
+               private Nullable<bool> syncedField;
+
+               private string tailField;
+
+               private Nullable<bool> usePayrateField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string aircraftId
+               {
+                       get
+                       {
+                               return this.aircraftIdField;
+                       }
+                       set
+                       {
+                               this.aircraftIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string aircraftTypeId
+               {
+                       get
+                       {
+                               return this.aircraftTypeIdField;
+                       }
+                       set
+                       {
+                               this.aircraftTypeIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string currentAirlineId
+               {
+                       get
+                       {
+                               return this.currentAirlineIdField;
+                       }
+                       set
+                       {
+                               this.currentAirlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notes
+               {
+                       get
+                       {
+                               return this.notesField;
+                       }
+                       set
+                       {
+                               this.notesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> payrate
+               {
+                       get
+                       {
+                               return this.payrateField;
+                       }
+                       set
+                       {
+                               this.payrateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string previousAirlineId
+               {
+                       get
+                       {
+                               return this.previousAirlineIdField;
+                       }
+                       set
+                       {
+                               this.previousAirlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string registration
+               {
+                       get
+                       {
+                               return this.registrationField;
+                       }
+                       set
+                       {
+                               this.registrationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string shipNumber
+               {
+                       get
+                       {
+                               return this.shipNumberField;
+                       }
+                       set
+                       {
+                               this.shipNumberField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string tail
+               {
+                       get
+                       {
+                               return this.tailField;
+                       }
+                       set
+                       {
+                               this.tailField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> usePayrate
+               {
+                       get
+                       {
+                               return this.usePayrateField;
+                       }
+                       set
+                       {
+                               this.usePayrateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="AircraftTypeDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class AircraftTypeDTO : object
+       {
+
+               private string aircraftTypeIdField;
+
+               private string aselField;
+
+               private string configField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private string iconUrlField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> selectableField;
+
+               private Nullable<bool> syncedField;
+
+               private string transportField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string aircraftTypeId
+               {
+                       get
+                       {
+                               return this.aircraftTypeIdField;
+                       }
+                       set
+                       {
+                               this.aircraftTypeIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string asel
+               {
+                       get
+                       {
+                               return this.aselField;
+                       }
+                       set
+                       {
+                               this.aselField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string config
+               {
+                       get
+                       {
+                               return this.configField;
+                       }
+                       set
+                       {
+                               this.configField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string iconUrl
+               {
+                       get
+                       {
+                               return this.iconUrlField;
+                       }
+                       set
+                       {
+                               this.iconUrlField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> selectable
+               {
+                       get
+                       {
+                               return this.selectableField;
+                       }
+                       set
+                       {
+                               this.selectableField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string transport
+               {
+                       get
+                       {
+                               return this.transportField;
+                       }
+                       set
+                       {
+                               this.transportField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="AirlineDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class AirlineDTO : object
+       {
+
+               private string airlineIdField;
+
+               private string airlineNameField;
+
+               private string callSignField;
+
+               private string countryField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private string icaoField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string nameField;
+
+               private string phoneField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airlineId
+               {
+                       get
+                       {
+                               return this.airlineIdField;
+                       }
+                       set
+                       {
+                               this.airlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airlineName
+               {
+                       get
+                       {
+                               return this.airlineNameField;
+                       }
+                       set
+                       {
+                               this.airlineNameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string callSign
+               {
+                       get
+                       {
+                               return this.callSignField;
+                       }
+                       set
+                       {
+                               this.callSignField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string country
+               {
+                       get
+                       {
+                               return this.countryField;
+                       }
+                       set
+                       {
+                               this.countryField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string icao
+               {
+                       get
+                       {
+                               return this.icaoField;
+                       }
+                       set
+                       {
+                               this.icaoField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string name
+               {
+                       get
+                       {
+                               return this.nameField;
+                       }
+                       set
+                       {
+                               this.nameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string phone
+               {
+                       get
+                       {
+                               return this.phoneField;
+                       }
+                       set
+                       {
+                               this.phoneField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="AirportDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class AirportDTO : object
+       {
+
+               private string airlineNameField;
+
+               private string airportIdField;
+
+               private string airportNameField;
+
+               private Nullable<int> communicationLevelField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<bool> dstField;
+
+               private string emailField;
+
+               private string faaField;
+
+               private string iataField;
+
+               private string icaoField;
+
+               private string idField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<decimal> latitudeField;
+
+               private string localityField;
+
+               private string locationField;
+
+               private Nullable<decimal> longitudeField;
+
+               private Nullable<int> modelVersionField;
+
+               private string nameField;
+
+               private string notesField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private string olsentimezonenameField;
+
+               private string phoneField;
+
+               private string pictureField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<int> privacyLevelField;
+
+               private string regionField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               private Nullable<decimal> utcoffsetField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airlineName
+               {
+                       get
+                       {
+                               return this.airlineNameField;
+                       }
+                       set
+                       {
+                               this.airlineNameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airportId
+               {
+                       get
+                       {
+                               return this.airportIdField;
+                       }
+                       set
+                       {
+                               this.airportIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airportName
+               {
+                       get
+                       {
+                               return this.airportNameField;
+                       }
+                       set
+                       {
+                               this.airportNameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> communicationLevel
+               {
+                       get
+                       {
+                               return this.communicationLevelField;
+                       }
+                       set
+                       {
+                               this.communicationLevelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> dst
+               {
+                       get
+                       {
+                               return this.dstField;
+                       }
+                       set
+                       {
+                               this.dstField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string email
+               {
+                       get
+                       {
+                               return this.emailField;
+                       }
+                       set
+                       {
+                               this.emailField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string faa
+               {
+                       get
+                       {
+                               return this.faaField;
+                       }
+                       set
+                       {
+                               this.faaField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string iata
+               {
+                       get
+                       {
+                               return this.iataField;
+                       }
+                       set
+                       {
+                               this.iataField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string icao
+               {
+                       get
+                       {
+                               return this.icaoField;
+                       }
+                       set
+                       {
+                               this.icaoField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string id
+               {
+                       get
+                       {
+                               return this.idField;
+                       }
+                       set
+                       {
+                               this.idField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> latitude
+               {
+                       get
+                       {
+                               return this.latitudeField;
+                       }
+                       set
+                       {
+                               this.latitudeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string locality
+               {
+                       get
+                       {
+                               return this.localityField;
+                       }
+                       set
+                       {
+                               this.localityField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string location
+               {
+                       get
+                       {
+                               return this.locationField;
+                       }
+                       set
+                       {
+                               this.locationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> longitude
+               {
+                       get
+                       {
+                               return this.longitudeField;
+                       }
+                       set
+                       {
+                               this.longitudeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string name
+               {
+                       get
+                       {
+                               return this.nameField;
+                       }
+                       set
+                       {
+                               this.nameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notes
+               {
+                       get
+                       {
+                               return this.notesField;
+                       }
+                       set
+                       {
+                               this.notesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string olsentimezonename
+               {
+                       get
+                       {
+                               return this.olsentimezonenameField;
+                       }
+                       set
+                       {
+                               this.olsentimezonenameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string phone
+               {
+                       get
+                       {
+                               return this.phoneField;
+                       }
+                       set
+                       {
+                               this.phoneField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string picture
+               {
+                       get
+                       {
+                               return this.pictureField;
+                       }
+                       set
+                       {
+                               this.pictureField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> privacyLevel
+               {
+                       get
+                       {
+                               return this.privacyLevelField;
+                       }
+                       set
+                       {
+                               this.privacyLevelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string region
+               {
+                       get
+                       {
+                               return this.regionField;
+                       }
+                       set
+                       {
+                               this.regionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> utcoffset
+               {
+                       get
+                       {
+                               return this.utcoffsetField;
+                       }
+                       set
+                       {
+                               this.utcoffsetField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="ApproachDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class ApproachDTO : object
+       {
+
+               private string approachIdField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> selectableField;
+
+               private Nullable<bool> syncedField;
+
+               private string typeField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string approachId
+               {
+                       get
+                       {
+                               return this.approachIdField;
+                       }
+                       set
+                       {
+                               this.approachIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> selectable
+               {
+                       get
+                       {
+                               return this.selectableField;
+                       }
+                       set
+                       {
+                               this.selectableField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string type
+               {
+                       get
+                       {
+                               return this.typeField;
+                       }
+                       set
+                       {
+                               this.typeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="ApproachesLegDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class ApproachesLegDTO : object
+       {
+
+               private string approachIdField;
+
+               private string approachesLegsIdField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private string legIdField;
+
+               private Nullable<int> modelVersionField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string approachId
+               {
+                       get
+                       {
+                               return this.approachIdField;
+                       }
+                       set
+                       {
+                               this.approachIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string approachesLegsId
+               {
+                       get
+                       {
+                               return this.approachesLegsIdField;
+                       }
+                       set
+                       {
+                               this.approachesLegsIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string legId
+               {
+                       get
+                       {
+                               return this.legIdField;
+                       }
+                       set
+                       {
+                               this.legIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="BinaryCatalogDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class BinaryCatalogDTO : object
+       {
+
+               private global::System.Guid RowGuidField;
+
+               private Nullable<int> areaIdField;
+
+               private string binaryCatalogIdField;
+
+               private Nullable<int> contentLengthField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private string filenameField;
+
+               private string folderIdField;
+
+               private Nullable<bool> isSecuredField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<global::System.DateTime> lastWriteTimeUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private string titleField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public global::System.Guid RowGuid
+               {
+                       get
+                       {
+                               return this.RowGuidField;
+                       }
+                       set
+                       {
+                               this.RowGuidField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> areaId
+               {
+                       get
+                       {
+                               return this.areaIdField;
+                       }
+                       set
+                       {
+                               this.areaIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string binaryCatalogId
+               {
+                       get
+                       {
+                               return this.binaryCatalogIdField;
+                       }
+                       set
+                       {
+                               this.binaryCatalogIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> contentLength
+               {
+                       get
+                       {
+                               return this.contentLengthField;
+                       }
+                       set
+                       {
+                               this.contentLengthField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string filename
+               {
+                       get
+                       {
+                               return this.filenameField;
+                       }
+                       set
+                       {
+                               this.filenameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string folderId
+               {
+                       get
+                       {
+                               return this.folderIdField;
+                       }
+                       set
+                       {
+                               this.folderIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> isSecured
+               {
+                       get
+                       {
+                               return this.isSecuredField;
+                       }
+                       set
+                       {
+                               this.isSecuredField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastWriteTimeUtc
+               {
+                       get
+                       {
+                               return this.lastWriteTimeUtcField;
+                       }
+                       set
+                       {
+                               this.lastWriteTimeUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string title
+               {
+                       get
+                       {
+                               return this.titleField;
+                       }
+                       set
+                       {
+                               this.titleField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="CrewDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class CrewDTO : object
+       {
+
+               private Nullable<int> communicationLevelField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private string crewIdField;
+
+               private string crewNameField;
+
+               private string currentAirlineIdField;
+
+               private Nullable<bool> deletedField;
+
+               private string emailField;
+
+               private string facebookField;
+
+               private string idField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private string locationField;
+
+               private Nullable<int> modelVersionField;
+
+               private string nameField;
+
+               private string notesField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private string phoneField;
+
+               private string pictureField;
+
+               private string positionField;
+
+               private Nullable<bool> previewField;
+
+               private string previousAirlineIdField;
+
+               private Nullable<int> privacyLevelField;
+
+               private Nullable<bool> syncedField;
+
+               private string twitterField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> communicationLevel
+               {
+                       get
+                       {
+                               return this.communicationLevelField;
+                       }
+                       set
+                       {
+                               this.communicationLevelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string crewId
+               {
+                       get
+                       {
+                               return this.crewIdField;
+                       }
+                       set
+                       {
+                               this.crewIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string crewName
+               {
+                       get
+                       {
+                               return this.crewNameField;
+                       }
+                       set
+                       {
+                               this.crewNameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string currentAirlineId
+               {
+                       get
+                       {
+                               return this.currentAirlineIdField;
+                       }
+                       set
+                       {
+                               this.currentAirlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string email
+               {
+                       get
+                       {
+                               return this.emailField;
+                       }
+                       set
+                       {
+                               this.emailField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string facebook
+               {
+                       get
+                       {
+                               return this.facebookField;
+                       }
+                       set
+                       {
+                               this.facebookField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string id
+               {
+                       get
+                       {
+                               return this.idField;
+                       }
+                       set
+                       {
+                               this.idField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string location
+               {
+                       get
+                       {
+                               return this.locationField;
+                       }
+                       set
+                       {
+                               this.locationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string name
+               {
+                       get
+                       {
+                               return this.nameField;
+                       }
+                       set
+                       {
+                               this.nameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notes
+               {
+                       get
+                       {
+                               return this.notesField;
+                       }
+                       set
+                       {
+                               this.notesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string phone
+               {
+                       get
+                       {
+                               return this.phoneField;
+                       }
+                       set
+                       {
+                               this.phoneField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string picture
+               {
+                       get
+                       {
+                               return this.pictureField;
+                       }
+                       set
+                       {
+                               this.pictureField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string position
+               {
+                       get
+                       {
+                               return this.positionField;
+                       }
+                       set
+                       {
+                               this.positionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string previousAirlineId
+               {
+                       get
+                       {
+                               return this.previousAirlineIdField;
+                       }
+                       set
+                       {
+                               this.previousAirlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> privacyLevel
+               {
+                       get
+                       {
+                               return this.privacyLevelField;
+                       }
+                       set
+                       {
+                               this.privacyLevelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string twitter
+               {
+                       get
+                       {
+                               return this.twitterField;
+                       }
+                       set
+                       {
+                               this.twitterField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="DayDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class DayDTO : object
+       {
+
+               private Nullable<int> blockField;
+
+               private string calendarIdentifierField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<int> creditField;
+
+               private string dayIdField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<decimal> dutyField;
+
+               private Nullable<global::System.DateTime> dutyOffField;
+
+               private Nullable<global::System.DateTime> dutyOnField;
+
+               private Nullable<int> fDPField;
+
+               private Nullable<global::System.DateTime> fDPEndTimeField;
+
+               private Nullable<decimal> flightTimeField;
+
+               private Nullable<int> grossPayField;
+
+               private string hotelIdField;
+
+               private Nullable<decimal> instrumentField;
+
+               private Nullable<int> landingsField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private Nullable<decimal> nightField;
+
+               private Nullable<int> nightLandingsField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> overrideDutyOffField;
+
+               private Nullable<bool> overrideDutyOnField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<int> rdpField;
+
+               private Nullable<global::System.DateTime> rdpBeginField;
+
+               private Nullable<global::System.DateTime> rdpEndField;
+
+               private Nullable<int> scheduleBlockField;
+
+               private Nullable<int> splitDutyField;
+
+               private Nullable<global::System.DateTime> splitDutyBeginField;
+
+               private Nullable<global::System.DateTime> splitDutyEndField;
+
+               private Nullable<bool> syncedField;
+
+               private string tripIdField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> block
+               {
+                       get
+                       {
+                               return this.blockField;
+                       }
+                       set
+                       {
+                               this.blockField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string calendarIdentifier
+               {
+                       get
+                       {
+                               return this.calendarIdentifierField;
+                       }
+                       set
+                       {
+                               this.calendarIdentifierField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> credit
+               {
+                       get
+                       {
+                               return this.creditField;
+                       }
+                       set
+                       {
+                               this.creditField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string dayId
+               {
+                       get
+                       {
+                               return this.dayIdField;
+                       }
+                       set
+                       {
+                               this.dayIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> duty
+               {
+                       get
+                       {
+                               return this.dutyField;
+                       }
+                       set
+                       {
+                               this.dutyField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> dutyOff
+               {
+                       get
+                       {
+                               return this.dutyOffField;
+                       }
+                       set
+                       {
+                               this.dutyOffField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> dutyOn
+               {
+                       get
+                       {
+                               return this.dutyOnField;
+                       }
+                       set
+                       {
+                               this.dutyOnField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> fDP
+               {
+                       get
+                       {
+                               return this.fDPField;
+                       }
+                       set
+                       {
+                               this.fDPField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> fDPEndTime
+               {
+                       get
+                       {
+                               return this.fDPEndTimeField;
+                       }
+                       set
+                       {
+                               this.fDPEndTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> flightTime
+               {
+                       get
+                       {
+                               return this.flightTimeField;
+                       }
+                       set
+                       {
+                               this.flightTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> grossPay
+               {
+                       get
+                       {
+                               return this.grossPayField;
+                       }
+                       set
+                       {
+                               this.grossPayField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string hotelId
+               {
+                       get
+                       {
+                               return this.hotelIdField;
+                       }
+                       set
+                       {
+                               this.hotelIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> instrument
+               {
+                       get
+                       {
+                               return this.instrumentField;
+                       }
+                       set
+                       {
+                               this.instrumentField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> landings
+               {
+                       get
+                       {
+                               return this.landingsField;
+                       }
+                       set
+                       {
+                               this.landingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> night
+               {
+                       get
+                       {
+                               return this.nightField;
+                       }
+                       set
+                       {
+                               this.nightField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> nightLandings
+               {
+                       get
+                       {
+                               return this.nightLandingsField;
+                       }
+                       set
+                       {
+                               this.nightLandingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> overrideDutyOff
+               {
+                       get
+                       {
+                               return this.overrideDutyOffField;
+                       }
+                       set
+                       {
+                               this.overrideDutyOffField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> overrideDutyOn
+               {
+                       get
+                       {
+                               return this.overrideDutyOnField;
+                       }
+                       set
+                       {
+                               this.overrideDutyOnField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> rdp
+               {
+                       get
+                       {
+                               return this.rdpField;
+                       }
+                       set
+                       {
+                               this.rdpField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> rdpBegin
+               {
+                       get
+                       {
+                               return this.rdpBeginField;
+                       }
+                       set
+                       {
+                               this.rdpBeginField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> rdpEnd
+               {
+                       get
+                       {
+                               return this.rdpEndField;
+                       }
+                       set
+                       {
+                               this.rdpEndField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> scheduleBlock
+               {
+                       get
+                       {
+                               return this.scheduleBlockField;
+                       }
+                       set
+                       {
+                               this.scheduleBlockField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> splitDuty
+               {
+                       get
+                       {
+                               return this.splitDutyField;
+                       }
+                       set
+                       {
+                               this.splitDutyField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> splitDutyBegin
+               {
+                       get
+                       {
+                               return this.splitDutyBeginField;
+                       }
+                       set
+                       {
+                               this.splitDutyBeginField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> splitDutyEnd
+               {
+                       get
+                       {
+                               return this.splitDutyEndField;
+                       }
+                       set
+                       {
+                               this.splitDutyEndField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string tripId
+               {
+                       get
+                       {
+                               return this.tripIdField;
+                       }
+                       set
+                       {
+                               this.tripIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="EmploymentEventDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class EmploymentEventDTO : object
+       {
+
+               private string airlineIdField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private string employmentEventIdField;
+
+               private Nullable<global::System.DateTime> firstDateField;
+
+               private Nullable<global::System.DateTime> lastDateField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airlineId
+               {
+                       get
+                       {
+                               return this.airlineIdField;
+                       }
+                       set
+                       {
+                               this.airlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string employmentEventId
+               {
+                       get
+                       {
+                               return this.employmentEventIdField;
+                       }
+                       set
+                       {
+                               this.employmentEventIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> firstDate
+               {
+                       get
+                       {
+                               return this.firstDateField;
+                       }
+                       set
+                       {
+                               this.firstDateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastDate
+               {
+                       get
+                       {
+                               return this.lastDateField;
+                       }
+                       set
+                       {
+                               this.lastDateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="EventDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class EventDTO : object
+       {
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<global::System.DateTime> dateRangeField;
+
+               private Nullable<bool> deletedField;
+
+               private string eventIdField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<int> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private string urlField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> dateRange
+               {
+                       get
+                       {
+                               return this.dateRangeField;
+                       }
+                       set
+                       {
+                               this.dateRangeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string eventId
+               {
+                       get
+                       {
+                               return this.eventIdField;
+                       }
+                       set
+                       {
+                               this.eventIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string url
+               {
+                       get
+                       {
+                               return this.urlField;
+                       }
+                       set
+                       {
+                               this.urlField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="GlobalSettingDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class GlobalSettingDTO : object
+       {
+
+               private string DescriptionField;
+
+               private global::System.Guid GlobalSettingIdField;
+
+               private global::System.DateTime LastUpdatedUtcField;
+
+               private string SettingKeyField;
+
+               private string SettingValueField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string Description
+               {
+                       get
+                       {
+                               return this.DescriptionField;
+                       }
+                       set
+                       {
+                               this.DescriptionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public global::System.Guid GlobalSettingId
+               {
+                       get
+                       {
+                               return this.GlobalSettingIdField;
+                       }
+                       set
+                       {
+                               this.GlobalSettingIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public global::System.DateTime LastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.LastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.LastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string SettingKey
+               {
+                       get
+                       {
+                               return this.SettingKeyField;
+                       }
+                       set
+                       {
+                               this.SettingKeyField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string SettingValue
+               {
+                       get
+                       {
+                               return this.SettingValueField;
+                       }
+                       set
+                       {
+                               this.SettingValueField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="HotelDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class HotelDTO : object
+       {
+
+               private Nullable<int> communicationLevelField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private string emailField;
+
+               private string hotelIdField;
+
+               private string hotelNameField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private string locationField;
+
+               private Nullable<int> modelVersionField;
+
+               private string nameField;
+
+               private string notesField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private string numberField;
+
+               private string phoneField;
+
+               private string pictureField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<int> privacyLevelField;
+
+               private Nullable<int> ratingsField;
+
+               private string sharedNotesField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> communicationLevel
+               {
+                       get
+                       {
+                               return this.communicationLevelField;
+                       }
+                       set
+                       {
+                               this.communicationLevelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string email
+               {
+                       get
+                       {
+                               return this.emailField;
+                       }
+                       set
+                       {
+                               this.emailField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string hotelId
+               {
+                       get
+                       {
+                               return this.hotelIdField;
+                       }
+                       set
+                       {
+                               this.hotelIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string hotelName
+               {
+                       get
+                       {
+                               return this.hotelNameField;
+                       }
+                       set
+                       {
+                               this.hotelNameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string location
+               {
+                       get
+                       {
+                               return this.locationField;
+                       }
+                       set
+                       {
+                               this.locationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string name
+               {
+                       get
+                       {
+                               return this.nameField;
+                       }
+                       set
+                       {
+                               this.nameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notes
+               {
+                       get
+                       {
+                               return this.notesField;
+                       }
+                       set
+                       {
+                               this.notesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string number
+               {
+                       get
+                       {
+                               return this.numberField;
+                       }
+                       set
+                       {
+                               this.numberField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string phone
+               {
+                       get
+                       {
+                               return this.phoneField;
+                       }
+                       set
+                       {
+                               this.phoneField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string picture
+               {
+                       get
+                       {
+                               return this.pictureField;
+                       }
+                       set
+                       {
+                               this.pictureField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> privacyLevel
+               {
+                       get
+                       {
+                               return this.privacyLevelField;
+                       }
+                       set
+                       {
+                               this.privacyLevelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> ratings
+               {
+                       get
+                       {
+                               return this.ratingsField;
+                       }
+                       set
+                       {
+                               this.ratingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string sharedNotes
+               {
+                       get
+                       {
+                               return this.sharedNotesField;
+                       }
+                       set
+                       {
+                               this.sharedNotesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="LegDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class LegDTO : object
+       {
+
+               private Nullable<int> actualBlockField;
+
+               private string aircraftIdField;
+
+               private string approachIdField;
+
+               private string cabinCrewAIdField;
+
+               private string cabinCrewBIdField;
+
+               private string calendarIdentifierField;
+
+               private string captainIdField;
+
+               private Nullable<bool> completedField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private string dayIdField;
+
+               private Nullable<bool> deletedField;
+
+               private string departureAirportIdField;
+
+               private string deptField;
+
+               private string deptGateField;
+
+               private string destField;
+
+               private string destGateField;
+
+               private string destinationAirportIdField;
+
+               private Nullable<global::System.DateTime> etaField;
+
+               private string firstOfficerIdField;
+
+               private string flightNumberField;
+
+               private Nullable<int> flightTimeField;
+
+               private Nullable<global::System.DateTime> inOOOIField;
+
+               private Nullable<decimal> instrumentField;
+
+               private Nullable<int> landingsField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private string legIdField;
+
+               private Nullable<int> modelVersionField;
+
+               private Nullable<decimal> nightField;
+
+               private Nullable<int> nightLandingsField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<global::System.DateTime> offOOOIField;
+
+               private Nullable<global::System.DateTime> onOOOIField;
+
+               private string operationTypeIdField;
+
+               private string otherCrewAIdField;
+
+               private string otherCrewBIdField;
+
+               private Nullable<global::System.DateTime> outOOOIField;
+
+               private string payIdField;
+
+               private string positionIdField;
+
+               private Nullable<bool> previewField;
+
+               private string registrationField;
+
+               private string remarksField;
+
+               private Nullable<int> scheduledBlockField;
+
+               private Nullable<global::System.DateTime> scheduledInField;
+
+               private Nullable<global::System.DateTime> scheduledOutField;
+
+               private Nullable<int> sequenceField;
+
+               private Nullable<bool> syncedField;
+
+               private Nullable<int> taxiTimeInField;
+
+               private Nullable<int> taxiTimeOutField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> actualBlock
+               {
+                       get
+                       {
+                               return this.actualBlockField;
+                       }
+                       set
+                       {
+                               this.actualBlockField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string aircraftId
+               {
+                       get
+                       {
+                               return this.aircraftIdField;
+                       }
+                       set
+                       {
+                               this.aircraftIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string approachId
+               {
+                       get
+                       {
+                               return this.approachIdField;
+                       }
+                       set
+                       {
+                               this.approachIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string cabinCrewAId
+               {
+                       get
+                       {
+                               return this.cabinCrewAIdField;
+                       }
+                       set
+                       {
+                               this.cabinCrewAIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string cabinCrewBId
+               {
+                       get
+                       {
+                               return this.cabinCrewBIdField;
+                       }
+                       set
+                       {
+                               this.cabinCrewBIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string calendarIdentifier
+               {
+                       get
+                       {
+                               return this.calendarIdentifierField;
+                       }
+                       set
+                       {
+                               this.calendarIdentifierField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string captainId
+               {
+                       get
+                       {
+                               return this.captainIdField;
+                       }
+                       set
+                       {
+                               this.captainIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> completed
+               {
+                       get
+                       {
+                               return this.completedField;
+                       }
+                       set
+                       {
+                               this.completedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string dayId
+               {
+                       get
+                       {
+                               return this.dayIdField;
+                       }
+                       set
+                       {
+                               this.dayIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string departureAirportId
+               {
+                       get
+                       {
+                               return this.departureAirportIdField;
+                       }
+                       set
+                       {
+                               this.departureAirportIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string dept
+               {
+                       get
+                       {
+                               return this.deptField;
+                       }
+                       set
+                       {
+                               this.deptField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string deptGate
+               {
+                       get
+                       {
+                               return this.deptGateField;
+                       }
+                       set
+                       {
+                               this.deptGateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string dest
+               {
+                       get
+                       {
+                               return this.destField;
+                       }
+                       set
+                       {
+                               this.destField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string destGate
+               {
+                       get
+                       {
+                               return this.destGateField;
+                       }
+                       set
+                       {
+                               this.destGateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string destinationAirportId
+               {
+                       get
+                       {
+                               return this.destinationAirportIdField;
+                       }
+                       set
+                       {
+                               this.destinationAirportIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> eta
+               {
+                       get
+                       {
+                               return this.etaField;
+                       }
+                       set
+                       {
+                               this.etaField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string firstOfficerId
+               {
+                       get
+                       {
+                               return this.firstOfficerIdField;
+                       }
+                       set
+                       {
+                               this.firstOfficerIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string flightNumber
+               {
+                       get
+                       {
+                               return this.flightNumberField;
+                       }
+                       set
+                       {
+                               this.flightNumberField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> flightTime
+               {
+                       get
+                       {
+                               return this.flightTimeField;
+                       }
+                       set
+                       {
+                               this.flightTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> inOOOI
+               {
+                       get
+                       {
+                               return this.inOOOIField;
+                       }
+                       set
+                       {
+                               this.inOOOIField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> instrument
+               {
+                       get
+                       {
+                               return this.instrumentField;
+                       }
+                       set
+                       {
+                               this.instrumentField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> landings
+               {
+                       get
+                       {
+                               return this.landingsField;
+                       }
+                       set
+                       {
+                               this.landingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string legId
+               {
+                       get
+                       {
+                               return this.legIdField;
+                       }
+                       set
+                       {
+                               this.legIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> night
+               {
+                       get
+                       {
+                               return this.nightField;
+                       }
+                       set
+                       {
+                               this.nightField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> nightLandings
+               {
+                       get
+                       {
+                               return this.nightLandingsField;
+                       }
+                       set
+                       {
+                               this.nightLandingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> offOOOI
+               {
+                       get
+                       {
+                               return this.offOOOIField;
+                       }
+                       set
+                       {
+                               this.offOOOIField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> onOOOI
+               {
+                       get
+                       {
+                               return this.onOOOIField;
+                       }
+                       set
+                       {
+                               this.onOOOIField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string operationTypeId
+               {
+                       get
+                       {
+                               return this.operationTypeIdField;
+                       }
+                       set
+                       {
+                               this.operationTypeIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string otherCrewAId
+               {
+                       get
+                       {
+                               return this.otherCrewAIdField;
+                       }
+                       set
+                       {
+                               this.otherCrewAIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string otherCrewBId
+               {
+                       get
+                       {
+                               return this.otherCrewBIdField;
+                       }
+                       set
+                       {
+                               this.otherCrewBIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> outOOOI
+               {
+                       get
+                       {
+                               return this.outOOOIField;
+                       }
+                       set
+                       {
+                               this.outOOOIField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string payId
+               {
+                       get
+                       {
+                               return this.payIdField;
+                       }
+                       set
+                       {
+                               this.payIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string positionId
+               {
+                       get
+                       {
+                               return this.positionIdField;
+                       }
+                       set
+                       {
+                               this.positionIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string registration
+               {
+                       get
+                       {
+                               return this.registrationField;
+                       }
+                       set
+                       {
+                               this.registrationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string remarks
+               {
+                       get
+                       {
+                               return this.remarksField;
+                       }
+                       set
+                       {
+                               this.remarksField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> scheduledBlock
+               {
+                       get
+                       {
+                               return this.scheduledBlockField;
+                       }
+                       set
+                       {
+                               this.scheduledBlockField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> scheduledIn
+               {
+                       get
+                       {
+                               return this.scheduledInField;
+                       }
+                       set
+                       {
+                               this.scheduledInField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> scheduledOut
+               {
+                       get
+                       {
+                               return this.scheduledOutField;
+                       }
+                       set
+                       {
+                               this.scheduledOutField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> sequence
+               {
+                       get
+                       {
+                               return this.sequenceField;
+                       }
+                       set
+                       {
+                               this.sequenceField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> taxiTimeIn
+               {
+                       get
+                       {
+                               return this.taxiTimeInField;
+                       }
+                       set
+                       {
+                               this.taxiTimeInField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> taxiTimeOut
+               {
+                       get
+                       {
+                               return this.taxiTimeOutField;
+                       }
+                       set
+                       {
+                               this.taxiTimeOutField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="NoteDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class NoteDTO : object
+       {
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string note1Field;
+
+               private string noteIdField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string note1
+               {
+                       get
+                       {
+                               return this.note1Field;
+                       }
+                       set
+                       {
+                               this.note1Field = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string noteId
+               {
+                       get
+                       {
+                               return this.noteIdField;
+                       }
+                       set
+                       {
+                               this.noteIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="PayperiodEventDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class PayperiodEventDTO : object
+       {
+
+               private string airlineIdField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> firstDateField;
+
+               private Nullable<global::System.DateTime> lastDateField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string payperiodEventIdField;
+
+               private string periodDescriptionField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airlineId
+               {
+                       get
+                       {
+                               return this.airlineIdField;
+                       }
+                       set
+                       {
+                               this.airlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> firstDate
+               {
+                       get
+                       {
+                               return this.firstDateField;
+                       }
+                       set
+                       {
+                               this.firstDateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastDate
+               {
+                       get
+                       {
+                               return this.lastDateField;
+                       }
+                       set
+                       {
+                               this.lastDateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string payperiodEventId
+               {
+                       get
+                       {
+                               return this.payperiodEventIdField;
+                       }
+                       set
+                       {
+                               this.payperiodEventIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string periodDescription
+               {
+                       get
+                       {
+                               return this.periodDescriptionField;
+                       }
+                       set
+                       {
+                               this.periodDescriptionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="PayrollCategoryDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class PayrollCategoryDTO : object
+       {
+
+               private Nullable<bool> aboveGuaranteeField;
+
+               private Nullable<bool> applyRigField;
+
+               private Nullable<bool> applyToFlightTimeField;
+
+               private Nullable<bool> applyToLegalityField;
+
+               private Nullable<bool> applyToPayField;
+
+               private Nullable<bool> copyLegField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> minimumCreditField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> overridePayField;
+
+               private Nullable<decimal> payrateField;
+
+               private string payrollCategoriesIdField;
+
+               private string plainDescriptionField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<int> rigAField;
+
+               private Nullable<int> rigBField;
+
+               private Nullable<bool> selectableField;
+
+               private Nullable<bool> setAllLegsField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> aboveGuarantee
+               {
+                       get
+                       {
+                               return this.aboveGuaranteeField;
+                       }
+                       set
+                       {
+                               this.aboveGuaranteeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> applyRig
+               {
+                       get
+                       {
+                               return this.applyRigField;
+                       }
+                       set
+                       {
+                               this.applyRigField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> applyToFlightTime
+               {
+                       get
+                       {
+                               return this.applyToFlightTimeField;
+                       }
+                       set
+                       {
+                               this.applyToFlightTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> applyToLegality
+               {
+                       get
+                       {
+                               return this.applyToLegalityField;
+                       }
+                       set
+                       {
+                               this.applyToLegalityField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> applyToPay
+               {
+                       get
+                       {
+                               return this.applyToPayField;
+                       }
+                       set
+                       {
+                               this.applyToPayField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> copyLeg
+               {
+                       get
+                       {
+                               return this.copyLegField;
+                       }
+                       set
+                       {
+                               this.copyLegField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> minimumCredit
+               {
+                       get
+                       {
+                               return this.minimumCreditField;
+                       }
+                       set
+                       {
+                               this.minimumCreditField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> overridePay
+               {
+                       get
+                       {
+                               return this.overridePayField;
+                       }
+                       set
+                       {
+                               this.overridePayField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> payrate
+               {
+                       get
+                       {
+                               return this.payrateField;
+                       }
+                       set
+                       {
+                               this.payrateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string payrollCategoriesId
+               {
+                       get
+                       {
+                               return this.payrollCategoriesIdField;
+                       }
+                       set
+                       {
+                               this.payrollCategoriesIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string plainDescription
+               {
+                       get
+                       {
+                               return this.plainDescriptionField;
+                       }
+                       set
+                       {
+                               this.plainDescriptionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> rigA
+               {
+                       get
+                       {
+                               return this.rigAField;
+                       }
+                       set
+                       {
+                               this.rigAField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> rigB
+               {
+                       get
+                       {
+                               return this.rigBField;
+                       }
+                       set
+                       {
+                               this.rigBField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> selectable
+               {
+                       get
+                       {
+                               return this.selectableField;
+                       }
+                       set
+                       {
+                               this.selectableField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> setAllLegs
+               {
+                       get
+                       {
+                               return this.setAllLegsField;
+                       }
+                       set
+                       {
+                               this.setAllLegsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="PayrollDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class PayrollDTO : object
+       {
+
+               private Nullable<int> actualField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<int> creditField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private string payrollCategoriesIdField;
+
+               private string payrollIdField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> actual
+               {
+                       get
+                       {
+                               return this.actualField;
+                       }
+                       set
+                       {
+                               this.actualField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> credit
+               {
+                       get
+                       {
+                               return this.creditField;
+                       }
+                       set
+                       {
+                               this.creditField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string payrollCategoriesId
+               {
+                       get
+                       {
+                               return this.payrollCategoriesIdField;
+                       }
+                       set
+                       {
+                               this.payrollCategoriesIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string payrollId
+               {
+                       get
+                       {
+                               return this.payrollIdField;
+                       }
+                       set
+                       {
+                               this.payrollIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="PerformanceDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class PerformanceDTO : object
+       {
+
+               private Nullable<int> actualField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<int> deviatedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private string performanceIdField;
+
+               private Nullable<int> plannedFuelField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> actual
+               {
+                       get
+                       {
+                               return this.actualField;
+                       }
+                       set
+                       {
+                               this.actualField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> deviated
+               {
+                       get
+                       {
+                               return this.deviatedField;
+                       }
+                       set
+                       {
+                               this.deviatedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string performanceId
+               {
+                       get
+                       {
+                               return this.performanceIdField;
+                       }
+                       set
+                       {
+                               this.performanceIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> plannedFuel
+               {
+                       get
+                       {
+                               return this.plannedFuelField;
+                       }
+                       set
+                       {
+                               this.plannedFuelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="PositionDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class PositionDTO : object
+       {
+
+               private Nullable<bool> autoNightLandingField;
+
+               private Nullable<bool> checkAirmanField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> creditLandingField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<bool> ioeField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> pilotFlyingField;
+
+               private Nullable<bool> pilotInCommandField;
+
+               private string position1Field;
+
+               private string positionIdField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> selectableField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> autoNightLanding
+               {
+                       get
+                       {
+                               return this.autoNightLandingField;
+                       }
+                       set
+                       {
+                               this.autoNightLandingField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> checkAirman
+               {
+                       get
+                       {
+                               return this.checkAirmanField;
+                       }
+                       set
+                       {
+                               this.checkAirmanField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> creditLanding
+               {
+                       get
+                       {
+                               return this.creditLandingField;
+                       }
+                       set
+                       {
+                               this.creditLandingField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> ioe
+               {
+                       get
+                       {
+                               return this.ioeField;
+                       }
+                       set
+                       {
+                               this.ioeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> pilotFlying
+               {
+                       get
+                       {
+                               return this.pilotFlyingField;
+                       }
+                       set
+                       {
+                               this.pilotFlyingField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> pilotInCommand
+               {
+                       get
+                       {
+                               return this.pilotInCommandField;
+                       }
+                       set
+                       {
+                               this.pilotInCommandField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string position1
+               {
+                       get
+                       {
+                               return this.position1Field;
+                       }
+                       set
+                       {
+                               this.position1Field = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string positionId
+               {
+                       get
+                       {
+                               return this.positionIdField;
+                       }
+                       set
+                       {
+                               this.positionIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> selectable
+               {
+                       get
+                       {
+                               return this.selectableField;
+                       }
+                       set
+                       {
+                               this.selectableField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="ReglatoryOperationTypeDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class ReglatoryOperationTypeDTO : object
+       {
+
+               private Nullable<bool> activeField;
+
+               private Nullable<bool> canMixOperationsField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string operationAbvreviationField;
+
+               private string operationDescriptionField;
+
+               private Nullable<bool> previewField;
+
+               private string reglatoryOperationTypesIdField;
+
+               private string schemaURLField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> active
+               {
+                       get
+                       {
+                               return this.activeField;
+                       }
+                       set
+                       {
+                               this.activeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> canMixOperations
+               {
+                       get
+                       {
+                               return this.canMixOperationsField;
+                       }
+                       set
+                       {
+                               this.canMixOperationsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string operationAbvreviation
+               {
+                       get
+                       {
+                               return this.operationAbvreviationField;
+                       }
+                       set
+                       {
+                               this.operationAbvreviationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string operationDescription
+               {
+                       get
+                       {
+                               return this.operationDescriptionField;
+                       }
+                       set
+                       {
+                               this.operationDescriptionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string reglatoryOperationTypesId
+               {
+                       get
+                       {
+                               return this.reglatoryOperationTypesIdField;
+                       }
+                       set
+                       {
+                               this.reglatoryOperationTypesIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string schemaURL
+               {
+                       get
+                       {
+                               return this.schemaURLField;
+                       }
+                       set
+                       {
+                               this.schemaURLField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="TripDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class TripDTO : object
+       {
+
+               private bool activeField;
+
+               private string calendarIdentifierField;
+
+               private Nullable<bool> completedField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<global::System.DateTime> seqEndTimeField;
+
+               private Nullable<global::System.DateTime> seqStartTimeField;
+
+               private Nullable<bool> syncedField;
+
+               private Nullable<int> tafbField;
+
+               private Nullable<int> totalBlockField;
+
+               private Nullable<int> totalCreditField;
+
+               private Nullable<decimal> totalFlightTimeField;
+
+               private Nullable<decimal> totalInstrumentField;
+
+               private Nullable<int> totalLandingsField;
+
+               private Nullable<decimal> totalNightField;
+
+               private Nullable<int> totalNightLandingsField;
+
+               private Nullable<decimal> totalPayFField;
+
+               private string tripIdField;
+
+               private string tripNumberField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public bool active
+               {
+                       get
+                       {
+                               return this.activeField;
+                       }
+                       set
+                       {
+                               this.activeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string calendarIdentifier
+               {
+                       get
+                       {
+                               return this.calendarIdentifierField;
+                       }
+                       set
+                       {
+                               this.calendarIdentifierField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> completed
+               {
+                       get
+                       {
+                               return this.completedField;
+                       }
+                       set
+                       {
+                               this.completedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> seqEndTime
+               {
+                       get
+                       {
+                               return this.seqEndTimeField;
+                       }
+                       set
+                       {
+                               this.seqEndTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> seqStartTime
+               {
+                       get
+                       {
+                               return this.seqStartTimeField;
+                       }
+                       set
+                       {
+                               this.seqStartTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> tafb
+               {
+                       get
+                       {
+                               return this.tafbField;
+                       }
+                       set
+                       {
+                               this.tafbField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> totalBlock
+               {
+                       get
+                       {
+                               return this.totalBlockField;
+                       }
+                       set
+                       {
+                               this.totalBlockField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> totalCredit
+               {
+                       get
+                       {
+                               return this.totalCreditField;
+                       }
+                       set
+                       {
+                               this.totalCreditField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> totalFlightTime
+               {
+                       get
+                       {
+                               return this.totalFlightTimeField;
+                       }
+                       set
+                       {
+                               this.totalFlightTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> totalInstrument
+               {
+                       get
+                       {
+                               return this.totalInstrumentField;
+                       }
+                       set
+                       {
+                               this.totalInstrumentField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> totalLandings
+               {
+                       get
+                       {
+                               return this.totalLandingsField;
+                       }
+                       set
+                       {
+                               this.totalLandingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> totalNight
+               {
+                       get
+                       {
+                               return this.totalNightField;
+                       }
+                       set
+                       {
+                               this.totalNightField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> totalNightLandings
+               {
+                       get
+                       {
+                               return this.totalNightLandingsField;
+                       }
+                       set
+                       {
+                               this.totalNightLandingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> totalPayF
+               {
+                       get
+                       {
+                               return this.totalPayFField;
+                       }
+                       set
+                       {
+                               this.totalPayFField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string tripId
+               {
+                       get
+                       {
+                               return this.tripIdField;
+                       }
+                       set
+                       {
+                               this.tripIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string tripNumber
+               {
+                       get
+                       {
+                               return this.tripNumberField;
+                       }
+                       set
+                       {
+                               this.tripNumberField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="UserSettingDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class UserSettingDTO : object
+       {
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private string keyField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> previewField;
+
+               private string stringValueField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               private string userSettingIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string key
+               {
+                       get
+                       {
+                               return this.keyField;
+                       }
+                       set
+                       {
+                               this.keyField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string stringValue
+               {
+                       get
+                       {
+                               return this.stringValueField;
+                       }
+                       set
+                       {
+                               this.stringValueField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string userSettingId
+               {
+                       get
+                       {
+                               return this.userSettingIdField;
+                       }
+                       set
+                       {
+                               this.userSettingIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="DingusSyncResponse", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class DingusSyncResponse : object
+       {
+
+               DingusSyncData CloudDataField;
+
+               private string StatusField;
+
+               private bool SuccessField;
+
+               private global::System.DateTime SyncDateLineField;
+
+               private long SyncDurationField;
+
+               private global::System.DateTime SyncEndedField;
+
+               private global::System.DateTime SyncStartedField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public DingusSyncData CloudData
+               {
+                       get
+                       {
+                               return this.CloudDataField;
+                       }
+                       set
+                       {
+                               this.CloudDataField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string Status
+               {
+                       get
+                       {
+                               return this.StatusField;
+                       }
+                       set
+                       {
+                               this.StatusField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public bool Success
+               {
+                       get
+                       {
+                               return this.SuccessField;
+                       }
+                       set
+                       {
+                               this.SuccessField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public global::System.DateTime SyncDateLine
+               {
+                       get
+                       {
+                               return this.SyncDateLineField;
+                       }
+                       set
+                       {
+                               this.SyncDateLineField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public long SyncDuration
+               {
+                       get
+                       {
+                               return this.SyncDurationField;
+                       }
+                       set
+                       {
+                               this.SyncDurationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public global::System.DateTime SyncEnded
+               {
+                       get
+                       {
+                               return this.SyncEndedField;
+                       }
+                       set
+                       {
+                               this.SyncEndedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public global::System.DateTime SyncStarted
+               {
+                       get
+                       {
+                               return this.SyncStartedField;
+                       }
+                       set
+                       {
+                               this.SyncStartedField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="BinaryTransferResponse", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class BinaryTransferResponse : object
+       {
+
+               private string ErrorMessageField;
+
+               private bool SuccessField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string ErrorMessage
+               {
+                       get
+                       {
+                               return this.ErrorMessageField;
+                       }
+                       set
+                       {
+                               this.ErrorMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public bool Success
+               {
+                       get
+                       {
+                               return this.SuccessField;
+                       }
+                       set
+                       {
+                               this.SuccessField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="SyncStatus", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class SyncStatus : object
+       {
+
+               EntitySyncState[] SyncStateField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public EntitySyncState[] SyncState
+               {
+                       get
+                       {
+                               return this.SyncStateField;
+                       }
+                       set
+                       {
+                               this.SyncStateField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="EntitySyncState", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class EntitySyncState : object
+       {
+
+               private string EntityNameField;
+
+               private Nullable<global::System.DateTime> LastUpdatedUtcField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string EntityName
+               {
+                       get
+                       {
+                               return this.EntityNameField;
+                       }
+                       set
+                       {
+                               this.EntityNameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> LastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.LastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.LastUpdatedUtcField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="TaxiTime", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class TaxiTime : object
+       {
+
+               private string AirportField;
+
+               private int TaxiInAvgField;
+
+               private int TaxiOutAvgField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string Airport
+               {
+                       get
+                       {
+                               return this.AirportField;
+                       }
+                       set
+                       {
+                               this.AirportField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int TaxiInAvg
+               {
+                       get
+                       {
+                               return this.TaxiInAvgField;
+                       }
+                       set
+                       {
+                               this.TaxiInAvgField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int TaxiOutAvg
+               {
+                       get
+                       {
+                               return this.TaxiOutAvgField;
+                       }
+                       set
+                       {
+                               this.TaxiOutAvgField = value;
+                       }
+               }
+       }
+}
+
+
+namespace host
+{
+       public class AppDelegate
+       {
+               static void MainTest ()
+               {
+                       var a = new DingusSyncData ();
+                       a.Aircraft = new AircraftDTO[] { new AircraftDTO () { } };
+                       a.AircraftTypes = new AircraftTypeDTO[] { new AircraftTypeDTO () };
+                       a.Airlines= new AirlineDTO[] { new AirlineDTO () };
+                       a.Airports= new AirportDTO[] { new AirportDTO() };
+                       a.Approaches= new ApproachDTO[] { new ApproachDTO() };
+                       a.ApproachesLegs= new ApproachesLegDTO[] { new ApproachesLegDTO() };
+                       a.Binaries= new BinaryCatalogDTO[] { new BinaryCatalogDTO() };
+                       a.Crews= new CrewDTO[] { new CrewDTO() };
+                       a.Days= new DayDTO[] { new DayDTO() };
+                       a.EmploymentEvents= new EmploymentEventDTO[] { new EmploymentEventDTO() };
+                       a.Events= new EventDTO[] { new EventDTO() };
+                       a.FlightDataInspection = new DataInspection ();
+                       a.GlobalSettings= new GlobalSettingDTO[] { new GlobalSettingDTO() };
+                       a.Hotels= new HotelDTO[] { new HotelDTO() };
+                       a.Legs= new LegDTO[] { new LegDTO() };
+                       a.Notes= new NoteDTO[] { new NoteDTO() };
+                       a.PayperiodEvents= new PayperiodEventDTO[] { new PayperiodEventDTO() };
+                       a.PayrollCategories= new PayrollCategoryDTO[] { new PayrollCategoryDTO() };
+                       a.Payrolls= new PayrollDTO[] { new PayrollDTO() };
+                       a.Performances= new PerformanceDTO[] { new PerformanceDTO() };
+                       a.Positions= new PositionDTO[] { new PositionDTO() };
+                       a.ReglatoryOperationTypes= new ReglatoryOperationTypeDTO[] { new ReglatoryOperationTypeDTO() };
+                       a.Trips= new TripDTO[] { new TripDTO() };
+                       a.UserSettings= new UserSettingDTO[] { new UserSettingDTO() };
+
+                       Console.WriteLine ("Size is: {0}", global::System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)));
+                       using (var ms = new MemoryStream ()) {
+                               DataContractSerializer serializer = new DataContractSerializer (typeof(DingusSyncData));
+                               serializer.WriteObject (ms, a);
+                               ms.Position = 0;
+                               var b = serializer.ReadObject (ms);
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="DingusSyncData", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class DingusSyncData : object
+       {
+
+               AircraftDTO[] AircraftField;
+
+               AircraftTypeDTO[] AircraftTypesField;
+
+               AirlineDTO[] AirlinesField;
+
+               AirportDTO[] AirportsField;
+
+               ApproachDTO[] ApproachesField;
+
+               ApproachesLegDTO[] ApproachesLegsField;
+
+               BinaryCatalogDTO[] BinariesField;
+
+               CrewDTO[] CrewsField;
+
+               DayDTO[] DaysField;
+
+               EmploymentEventDTO[] EmploymentEventsField;
+
+               EventDTO[] EventsField;
+
+               DataInspection FlightDataInspectionField;
+
+               GlobalSettingDTO[] GlobalSettingsField;
+
+               HotelDTO[] HotelsField;
+
+               LegDTO[] LegsField;
+
+               NoteDTO[] NotesField;
+
+               PayperiodEventDTO[] PayperiodEventsField;
+
+               PayrollCategoryDTO[] PayrollCategoriesField;
+
+               PayrollDTO[] PayrollsField;
+
+               PerformanceDTO[] PerformancesField;
+
+               PositionDTO[] PositionsField;
+
+               ReglatoryOperationTypeDTO[] ReglatoryOperationTypesField;
+
+               TripDTO[] TripsField;
+
+               UserSettingDTO[] UserSettingsField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public AircraftDTO[] Aircraft
+               {
+                       get
+                       {
+                               return this.AircraftField;
+                       }
+                       set
+                       {
+                               this.AircraftField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public AircraftTypeDTO[] AircraftTypes
+               {
+                       get
+                       {
+                               return this.AircraftTypesField;
+                       }
+                       set
+                       {
+                               this.AircraftTypesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public AirlineDTO[] Airlines
+               {
+                       get
+                       {
+                               return this.AirlinesField;
+                       }
+                       set
+                       {
+                               this.AirlinesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public AirportDTO[] Airports
+               {
+                       get
+                       {
+                               return this.AirportsField;
+                       }
+                       set
+                       {
+                               this.AirportsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public ApproachDTO[] Approaches
+               {
+                       get
+                       {
+                               return this.ApproachesField;
+                       }
+                       set
+                       {
+                               this.ApproachesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public ApproachesLegDTO[] ApproachesLegs
+               {
+                       get
+                       {
+                               return this.ApproachesLegsField;
+                       }
+                       set
+                       {
+                               this.ApproachesLegsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public BinaryCatalogDTO[] Binaries
+               {
+                       get
+                       {
+                               return this.BinariesField;
+                       }
+                       set
+                       {
+                               this.BinariesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public CrewDTO[] Crews
+               {
+                       get
+                       {
+                               return this.CrewsField;
+                       }
+                       set
+                       {
+                               this.CrewsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public DayDTO[] Days
+               {
+                       get
+                       {
+                               return this.DaysField;
+                       }
+                       set
+                       {
+                               this.DaysField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public EmploymentEventDTO[] EmploymentEvents
+               {
+                       get
+                       {
+                               return this.EmploymentEventsField;
+                       }
+                       set
+                       {
+                               this.EmploymentEventsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public EventDTO[] Events
+               {
+                       get
+                       {
+                               return this.EventsField;
+                       }
+                       set
+                       {
+                               this.EventsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public DataInspection FlightDataInspection
+               {
+                       get
+                       {
+                               return this.FlightDataInspectionField;
+                       }
+                       set
+                       {
+                               this.FlightDataInspectionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public GlobalSettingDTO[] GlobalSettings
+               {
+                       get
+                       {
+                               return this.GlobalSettingsField;
+                       }
+                       set
+                       {
+                               this.GlobalSettingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public HotelDTO[] Hotels
+               {
+                       get
+                       {
+                               return this.HotelsField;
+                       }
+                       set
+                       {
+                               this.HotelsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public LegDTO[] Legs
+               {
+                       get
+                       {
+                               return this.LegsField;
+                       }
+                       set
+                       {
+                               this.LegsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public NoteDTO[] Notes
+               {
+                       get
+                       {
+                               return this.NotesField;
+                       }
+                       set
+                       {
+                               this.NotesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public PayperiodEventDTO[] PayperiodEvents
+               {
+                       get
+                       {
+                               return this.PayperiodEventsField;
+                       }
+                       set
+                       {
+                               this.PayperiodEventsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public PayrollCategoryDTO[] PayrollCategories
+               {
+                       get
+                       {
+                               return this.PayrollCategoriesField;
+                       }
+                       set
+                       {
+                               this.PayrollCategoriesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public PayrollDTO[] Payrolls
+               {
+                       get
+                       {
+                               return this.PayrollsField;
+                       }
+                       set
+                       {
+                               this.PayrollsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public PerformanceDTO[] Performances
+               {
+                       get
+                       {
+                               return this.PerformancesField;
+                       }
+                       set
+                       {
+                               this.PerformancesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public PositionDTO[] Positions
+               {
+                       get
+                       {
+                               return this.PositionsField;
+                       }
+                       set
+                       {
+                               this.PositionsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public ReglatoryOperationTypeDTO[] ReglatoryOperationTypes
+               {
+                       get
+                       {
+                               return this.ReglatoryOperationTypesField;
+                       }
+                       set
+                       {
+                               this.ReglatoryOperationTypesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public TripDTO[] Trips
+               {
+                       get
+                       {
+                               return this.TripsField;
+                       }
+                       set
+                       {
+                               this.TripsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public UserSettingDTO[] UserSettings
+               {
+                       get
+                       {
+                               return this.UserSettingsField;
+                       }
+                       set
+                       {
+                               this.UserSettingsField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="DataInspection", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class DataInspection : object
+       {
+
+               private int DayCountField;
+
+               private int LegCountField;
+
+               private Nullable<global::System.DateTime> MaxTripSequenceEndField;
+
+               private Nullable<global::System.DateTime> MinTripSequenceStartField;
+
+               private int TripCountField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int DayCount
+               {
+                       get
+                       {
+                               return this.DayCountField;
+                       }
+                       set
+                       {
+                               this.DayCountField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int LegCount
+               {
+                       get
+                       {
+                               return this.LegCountField;
+                       }
+                       set
+                       {
+                               this.LegCountField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> MaxTripSequenceEnd
+               {
+                       get
+                       {
+                               return this.MaxTripSequenceEndField;
+                       }
+                       set
+                       {
+                               this.MaxTripSequenceEndField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> MinTripSequenceStart
+               {
+                       get
+                       {
+                               return this.MinTripSequenceStartField;
+                       }
+                       set
+                       {
+                               this.MinTripSequenceStartField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int TripCount
+               {
+                       get
+                       {
+                               return this.TripCountField;
+                       }
+                       set
+                       {
+                               this.TripCountField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="AircraftDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class AircraftDTO : object
+       {
+
+               private string aircraftIdField;
+
+               private string aircraftTypeIdField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private string currentAirlineIdField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notesField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<decimal> payrateField;
+
+               private Nullable<bool> previewField;
+
+               private string previousAirlineIdField;
+
+               private string registrationField;
+
+               private string shipNumberField;
+
+               private Nullable<bool> syncedField;
+
+               private string tailField;
+
+               private Nullable<bool> usePayrateField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string aircraftId
+               {
+                       get
+                       {
+                               return this.aircraftIdField;
+                       }
+                       set
+                       {
+                               this.aircraftIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string aircraftTypeId
+               {
+                       get
+                       {
+                               return this.aircraftTypeIdField;
+                       }
+                       set
+                       {
+                               this.aircraftTypeIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string currentAirlineId
+               {
+                       get
+                       {
+                               return this.currentAirlineIdField;
+                       }
+                       set
+                       {
+                               this.currentAirlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notes
+               {
+                       get
+                       {
+                               return this.notesField;
+                       }
+                       set
+                       {
+                               this.notesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> payrate
+               {
+                       get
+                       {
+                               return this.payrateField;
+                       }
+                       set
+                       {
+                               this.payrateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string previousAirlineId
+               {
+                       get
+                       {
+                               return this.previousAirlineIdField;
+                       }
+                       set
+                       {
+                               this.previousAirlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string registration
+               {
+                       get
+                       {
+                               return this.registrationField;
+                       }
+                       set
+                       {
+                               this.registrationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string shipNumber
+               {
+                       get
+                       {
+                               return this.shipNumberField;
+                       }
+                       set
+                       {
+                               this.shipNumberField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string tail
+               {
+                       get
+                       {
+                               return this.tailField;
+                       }
+                       set
+                       {
+                               this.tailField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> usePayrate
+               {
+                       get
+                       {
+                               return this.usePayrateField;
+                       }
+                       set
+                       {
+                               this.usePayrateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="AircraftTypeDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class AircraftTypeDTO : object
+       {
+
+               private string aircraftTypeIdField;
+
+               private string aselField;
+
+               private string configField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private string iconUrlField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> selectableField;
+
+               private Nullable<bool> syncedField;
+
+               private string transportField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string aircraftTypeId
+               {
+                       get
+                       {
+                               return this.aircraftTypeIdField;
+                       }
+                       set
+                       {
+                               this.aircraftTypeIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string asel
+               {
+                       get
+                       {
+                               return this.aselField;
+                       }
+                       set
+                       {
+                               this.aselField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string config
+               {
+                       get
+                       {
+                               return this.configField;
+                       }
+                       set
+                       {
+                               this.configField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string iconUrl
+               {
+                       get
+                       {
+                               return this.iconUrlField;
+                       }
+                       set
+                       {
+                               this.iconUrlField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> selectable
+               {
+                       get
+                       {
+                               return this.selectableField;
+                       }
+                       set
+                       {
+                               this.selectableField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string transport
+               {
+                       get
+                       {
+                               return this.transportField;
+                       }
+                       set
+                       {
+                               this.transportField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="AirlineDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class AirlineDTO : object
+       {
+
+               private string airlineIdField;
+
+               private string airlineNameField;
+
+               private string callSignField;
+
+               private string countryField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private string icaoField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string nameField;
+
+               private string phoneField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airlineId
+               {
+                       get
+                       {
+                               return this.airlineIdField;
+                       }
+                       set
+                       {
+                               this.airlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airlineName
+               {
+                       get
+                       {
+                               return this.airlineNameField;
+                       }
+                       set
+                       {
+                               this.airlineNameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string callSign
+               {
+                       get
+                       {
+                               return this.callSignField;
+                       }
+                       set
+                       {
+                               this.callSignField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string country
+               {
+                       get
+                       {
+                               return this.countryField;
+                       }
+                       set
+                       {
+                               this.countryField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string icao
+               {
+                       get
+                       {
+                               return this.icaoField;
+                       }
+                       set
+                       {
+                               this.icaoField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string name
+               {
+                       get
+                       {
+                               return this.nameField;
+                       }
+                       set
+                       {
+                               this.nameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string phone
+               {
+                       get
+                       {
+                               return this.phoneField;
+                       }
+                       set
+                       {
+                               this.phoneField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="AirportDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class AirportDTO : object
+       {
+
+               private string airlineNameField;
+
+               private string airportIdField;
+
+               private string airportNameField;
+
+               private Nullable<int> communicationLevelField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<bool> dstField;
+
+               private string emailField;
+
+               private string faaField;
+
+               private string iataField;
+
+               private string icaoField;
+
+               private string idField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<decimal> latitudeField;
+
+               private string localityField;
+
+               private string locationField;
+
+               private Nullable<decimal> longitudeField;
+
+               private Nullable<int> modelVersionField;
+
+               private string nameField;
+
+               private string notesField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private string olsentimezonenameField;
+
+               private string phoneField;
+
+               private string pictureField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<int> privacyLevelField;
+
+               private string regionField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               private Nullable<decimal> utcoffsetField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airlineName
+               {
+                       get
+                       {
+                               return this.airlineNameField;
+                       }
+                       set
+                       {
+                               this.airlineNameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airportId
+               {
+                       get
+                       {
+                               return this.airportIdField;
+                       }
+                       set
+                       {
+                               this.airportIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airportName
+               {
+                       get
+                       {
+                               return this.airportNameField;
+                       }
+                       set
+                       {
+                               this.airportNameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> communicationLevel
+               {
+                       get
+                       {
+                               return this.communicationLevelField;
+                       }
+                       set
+                       {
+                               this.communicationLevelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> dst
+               {
+                       get
+                       {
+                               return this.dstField;
+                       }
+                       set
+                       {
+                               this.dstField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string email
+               {
+                       get
+                       {
+                               return this.emailField;
+                       }
+                       set
+                       {
+                               this.emailField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string faa
+               {
+                       get
+                       {
+                               return this.faaField;
+                       }
+                       set
+                       {
+                               this.faaField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string iata
+               {
+                       get
+                       {
+                               return this.iataField;
+                       }
+                       set
+                       {
+                               this.iataField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string icao
+               {
+                       get
+                       {
+                               return this.icaoField;
+                       }
+                       set
+                       {
+                               this.icaoField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string id
+               {
+                       get
+                       {
+                               return this.idField;
+                       }
+                       set
+                       {
+                               this.idField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> latitude
+               {
+                       get
+                       {
+                               return this.latitudeField;
+                       }
+                       set
+                       {
+                               this.latitudeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string locality
+               {
+                       get
+                       {
+                               return this.localityField;
+                       }
+                       set
+                       {
+                               this.localityField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string location
+               {
+                       get
+                       {
+                               return this.locationField;
+                       }
+                       set
+                       {
+                               this.locationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> longitude
+               {
+                       get
+                       {
+                               return this.longitudeField;
+                       }
+                       set
+                       {
+                               this.longitudeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string name
+               {
+                       get
+                       {
+                               return this.nameField;
+                       }
+                       set
+                       {
+                               this.nameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notes
+               {
+                       get
+                       {
+                               return this.notesField;
+                       }
+                       set
+                       {
+                               this.notesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string olsentimezonename
+               {
+                       get
+                       {
+                               return this.olsentimezonenameField;
+                       }
+                       set
+                       {
+                               this.olsentimezonenameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string phone
+               {
+                       get
+                       {
+                               return this.phoneField;
+                       }
+                       set
+                       {
+                               this.phoneField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string picture
+               {
+                       get
+                       {
+                               return this.pictureField;
+                       }
+                       set
+                       {
+                               this.pictureField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> privacyLevel
+               {
+                       get
+                       {
+                               return this.privacyLevelField;
+                       }
+                       set
+                       {
+                               this.privacyLevelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string region
+               {
+                       get
+                       {
+                               return this.regionField;
+                       }
+                       set
+                       {
+                               this.regionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> utcoffset
+               {
+                       get
+                       {
+                               return this.utcoffsetField;
+                       }
+                       set
+                       {
+                               this.utcoffsetField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="ApproachDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class ApproachDTO : object
+       {
+
+               private string approachIdField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> selectableField;
+
+               private Nullable<bool> syncedField;
+
+               private string typeField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string approachId
+               {
+                       get
+                       {
+                               return this.approachIdField;
+                       }
+                       set
+                       {
+                               this.approachIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> selectable
+               {
+                       get
+                       {
+                               return this.selectableField;
+                       }
+                       set
+                       {
+                               this.selectableField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string type
+               {
+                       get
+                       {
+                               return this.typeField;
+                       }
+                       set
+                       {
+                               this.typeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="ApproachesLegDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class ApproachesLegDTO : object
+       {
+
+               private string approachIdField;
+
+               private string approachesLegsIdField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private string legIdField;
+
+               private Nullable<int> modelVersionField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string approachId
+               {
+                       get
+                       {
+                               return this.approachIdField;
+                       }
+                       set
+                       {
+                               this.approachIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string approachesLegsId
+               {
+                       get
+                       {
+                               return this.approachesLegsIdField;
+                       }
+                       set
+                       {
+                               this.approachesLegsIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string legId
+               {
+                       get
+                       {
+                               return this.legIdField;
+                       }
+                       set
+                       {
+                               this.legIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="BinaryCatalogDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class BinaryCatalogDTO : object
+       {
+
+               private global::System.Guid RowGuidField;
+
+               private Nullable<int> areaIdField;
+
+               private string binaryCatalogIdField;
+
+               private Nullable<int> contentLengthField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private string filenameField;
+
+               private string folderIdField;
+
+               private Nullable<bool> isSecuredField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<global::System.DateTime> lastWriteTimeUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private string titleField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public global::System.Guid RowGuid
+               {
+                       get
+                       {
+                               return this.RowGuidField;
+                       }
+                       set
+                       {
+                               this.RowGuidField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> areaId
+               {
+                       get
+                       {
+                               return this.areaIdField;
+                       }
+                       set
+                       {
+                               this.areaIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string binaryCatalogId
+               {
+                       get
+                       {
+                               return this.binaryCatalogIdField;
+                       }
+                       set
+                       {
+                               this.binaryCatalogIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> contentLength
+               {
+                       get
+                       {
+                               return this.contentLengthField;
+                       }
+                       set
+                       {
+                               this.contentLengthField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string filename
+               {
+                       get
+                       {
+                               return this.filenameField;
+                       }
+                       set
+                       {
+                               this.filenameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string folderId
+               {
+                       get
+                       {
+                               return this.folderIdField;
+                       }
+                       set
+                       {
+                               this.folderIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> isSecured
+               {
+                       get
+                       {
+                               return this.isSecuredField;
+                       }
+                       set
+                       {
+                               this.isSecuredField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastWriteTimeUtc
+               {
+                       get
+                       {
+                               return this.lastWriteTimeUtcField;
+                       }
+                       set
+                       {
+                               this.lastWriteTimeUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string title
+               {
+                       get
+                       {
+                               return this.titleField;
+                       }
+                       set
+                       {
+                               this.titleField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="CrewDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class CrewDTO : object
+       {
+
+               private Nullable<int> communicationLevelField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private string crewIdField;
+
+               private string crewNameField;
+
+               private string currentAirlineIdField;
+
+               private Nullable<bool> deletedField;
+
+               private string emailField;
+
+               private string facebookField;
+
+               private string idField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private string locationField;
+
+               private Nullable<int> modelVersionField;
+
+               private string nameField;
+
+               private string notesField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private string phoneField;
+
+               private string pictureField;
+
+               private string positionField;
+
+               private Nullable<bool> previewField;
+
+               private string previousAirlineIdField;
+
+               private Nullable<int> privacyLevelField;
+
+               private Nullable<bool> syncedField;
+
+               private string twitterField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> communicationLevel
+               {
+                       get
+                       {
+                               return this.communicationLevelField;
+                       }
+                       set
+                       {
+                               this.communicationLevelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string crewId
+               {
+                       get
+                       {
+                               return this.crewIdField;
+                       }
+                       set
+                       {
+                               this.crewIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string crewName
+               {
+                       get
+                       {
+                               return this.crewNameField;
+                       }
+                       set
+                       {
+                               this.crewNameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string currentAirlineId
+               {
+                       get
+                       {
+                               return this.currentAirlineIdField;
+                       }
+                       set
+                       {
+                               this.currentAirlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string email
+               {
+                       get
+                       {
+                               return this.emailField;
+                       }
+                       set
+                       {
+                               this.emailField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string facebook
+               {
+                       get
+                       {
+                               return this.facebookField;
+                       }
+                       set
+                       {
+                               this.facebookField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string id
+               {
+                       get
+                       {
+                               return this.idField;
+                       }
+                       set
+                       {
+                               this.idField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string location
+               {
+                       get
+                       {
+                               return this.locationField;
+                       }
+                       set
+                       {
+                               this.locationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string name
+               {
+                       get
+                       {
+                               return this.nameField;
+                       }
+                       set
+                       {
+                               this.nameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notes
+               {
+                       get
+                       {
+                               return this.notesField;
+                       }
+                       set
+                       {
+                               this.notesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string phone
+               {
+                       get
+                       {
+                               return this.phoneField;
+                       }
+                       set
+                       {
+                               this.phoneField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string picture
+               {
+                       get
+                       {
+                               return this.pictureField;
+                       }
+                       set
+                       {
+                               this.pictureField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string position
+               {
+                       get
+                       {
+                               return this.positionField;
+                       }
+                       set
+                       {
+                               this.positionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string previousAirlineId
+               {
+                       get
+                       {
+                               return this.previousAirlineIdField;
+                       }
+                       set
+                       {
+                               this.previousAirlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> privacyLevel
+               {
+                       get
+                       {
+                               return this.privacyLevelField;
+                       }
+                       set
+                       {
+                               this.privacyLevelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string twitter
+               {
+                       get
+                       {
+                               return this.twitterField;
+                       }
+                       set
+                       {
+                               this.twitterField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="DayDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class DayDTO : object
+       {
+
+               private Nullable<int> blockField;
+
+               private string calendarIdentifierField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<int> creditField;
+
+               private string dayIdField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<decimal> dutyField;
+
+               private Nullable<global::System.DateTime> dutyOffField;
+
+               private Nullable<global::System.DateTime> dutyOnField;
+
+               private Nullable<int> fDPField;
+
+               private Nullable<global::System.DateTime> fDPEndTimeField;
+
+               private Nullable<decimal> flightTimeField;
+
+               private Nullable<int> grossPayField;
+
+               private string hotelIdField;
+
+               private Nullable<decimal> instrumentField;
+
+               private Nullable<int> landingsField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private Nullable<decimal> nightField;
+
+               private Nullable<int> nightLandingsField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> overrideDutyOffField;
+
+               private Nullable<bool> overrideDutyOnField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<int> rdpField;
+
+               private Nullable<global::System.DateTime> rdpBeginField;
+
+               private Nullable<global::System.DateTime> rdpEndField;
+
+               private Nullable<int> scheduleBlockField;
+
+               private Nullable<int> splitDutyField;
+
+               private Nullable<global::System.DateTime> splitDutyBeginField;
+
+               private Nullable<global::System.DateTime> splitDutyEndField;
+
+               private Nullable<bool> syncedField;
+
+               private string tripIdField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> block
+               {
+                       get
+                       {
+                               return this.blockField;
+                       }
+                       set
+                       {
+                               this.blockField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string calendarIdentifier
+               {
+                       get
+                       {
+                               return this.calendarIdentifierField;
+                       }
+                       set
+                       {
+                               this.calendarIdentifierField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> credit
+               {
+                       get
+                       {
+                               return this.creditField;
+                       }
+                       set
+                       {
+                               this.creditField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string dayId
+               {
+                       get
+                       {
+                               return this.dayIdField;
+                       }
+                       set
+                       {
+                               this.dayIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> duty
+               {
+                       get
+                       {
+                               return this.dutyField;
+                       }
+                       set
+                       {
+                               this.dutyField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> dutyOff
+               {
+                       get
+                       {
+                               return this.dutyOffField;
+                       }
+                       set
+                       {
+                               this.dutyOffField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> dutyOn
+               {
+                       get
+                       {
+                               return this.dutyOnField;
+                       }
+                       set
+                       {
+                               this.dutyOnField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> fDP
+               {
+                       get
+                       {
+                               return this.fDPField;
+                       }
+                       set
+                       {
+                               this.fDPField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> fDPEndTime
+               {
+                       get
+                       {
+                               return this.fDPEndTimeField;
+                       }
+                       set
+                       {
+                               this.fDPEndTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> flightTime
+               {
+                       get
+                       {
+                               return this.flightTimeField;
+                       }
+                       set
+                       {
+                               this.flightTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> grossPay
+               {
+                       get
+                       {
+                               return this.grossPayField;
+                       }
+                       set
+                       {
+                               this.grossPayField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string hotelId
+               {
+                       get
+                       {
+                               return this.hotelIdField;
+                       }
+                       set
+                       {
+                               this.hotelIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> instrument
+               {
+                       get
+                       {
+                               return this.instrumentField;
+                       }
+                       set
+                       {
+                               this.instrumentField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> landings
+               {
+                       get
+                       {
+                               return this.landingsField;
+                       }
+                       set
+                       {
+                               this.landingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> night
+               {
+                       get
+                       {
+                               return this.nightField;
+                       }
+                       set
+                       {
+                               this.nightField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> nightLandings
+               {
+                       get
+                       {
+                               return this.nightLandingsField;
+                       }
+                       set
+                       {
+                               this.nightLandingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> overrideDutyOff
+               {
+                       get
+                       {
+                               return this.overrideDutyOffField;
+                       }
+                       set
+                       {
+                               this.overrideDutyOffField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> overrideDutyOn
+               {
+                       get
+                       {
+                               return this.overrideDutyOnField;
+                       }
+                       set
+                       {
+                               this.overrideDutyOnField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> rdp
+               {
+                       get
+                       {
+                               return this.rdpField;
+                       }
+                       set
+                       {
+                               this.rdpField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> rdpBegin
+               {
+                       get
+                       {
+                               return this.rdpBeginField;
+                       }
+                       set
+                       {
+                               this.rdpBeginField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> rdpEnd
+               {
+                       get
+                       {
+                               return this.rdpEndField;
+                       }
+                       set
+                       {
+                               this.rdpEndField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> scheduleBlock
+               {
+                       get
+                       {
+                               return this.scheduleBlockField;
+                       }
+                       set
+                       {
+                               this.scheduleBlockField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> splitDuty
+               {
+                       get
+                       {
+                               return this.splitDutyField;
+                       }
+                       set
+                       {
+                               this.splitDutyField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> splitDutyBegin
+               {
+                       get
+                       {
+                               return this.splitDutyBeginField;
+                       }
+                       set
+                       {
+                               this.splitDutyBeginField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> splitDutyEnd
+               {
+                       get
+                       {
+                               return this.splitDutyEndField;
+                       }
+                       set
+                       {
+                               this.splitDutyEndField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string tripId
+               {
+                       get
+                       {
+                               return this.tripIdField;
+                       }
+                       set
+                       {
+                               this.tripIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="EmploymentEventDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class EmploymentEventDTO : object
+       {
+
+               private string airlineIdField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private string employmentEventIdField;
+
+               private Nullable<global::System.DateTime> firstDateField;
+
+               private Nullable<global::System.DateTime> lastDateField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airlineId
+               {
+                       get
+                       {
+                               return this.airlineIdField;
+                       }
+                       set
+                       {
+                               this.airlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string employmentEventId
+               {
+                       get
+                       {
+                               return this.employmentEventIdField;
+                       }
+                       set
+                       {
+                               this.employmentEventIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> firstDate
+               {
+                       get
+                       {
+                               return this.firstDateField;
+                       }
+                       set
+                       {
+                               this.firstDateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastDate
+               {
+                       get
+                       {
+                               return this.lastDateField;
+                       }
+                       set
+                       {
+                               this.lastDateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="EventDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class EventDTO : object
+       {
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<global::System.DateTime> dateRangeField;
+
+               private Nullable<bool> deletedField;
+
+               private string eventIdField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<int> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private string urlField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> dateRange
+               {
+                       get
+                       {
+                               return this.dateRangeField;
+                       }
+                       set
+                       {
+                               this.dateRangeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string eventId
+               {
+                       get
+                       {
+                               return this.eventIdField;
+                       }
+                       set
+                       {
+                               this.eventIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string url
+               {
+                       get
+                       {
+                               return this.urlField;
+                       }
+                       set
+                       {
+                               this.urlField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="GlobalSettingDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class GlobalSettingDTO : object
+       {
+
+               private string DescriptionField;
+
+               private global::System.Guid GlobalSettingIdField;
+
+               private global::System.DateTime LastUpdatedUtcField;
+
+               private string SettingKeyField;
+
+               private string SettingValueField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string Description
+               {
+                       get
+                       {
+                               return this.DescriptionField;
+                       }
+                       set
+                       {
+                               this.DescriptionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public global::System.Guid GlobalSettingId
+               {
+                       get
+                       {
+                               return this.GlobalSettingIdField;
+                       }
+                       set
+                       {
+                               this.GlobalSettingIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public global::System.DateTime LastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.LastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.LastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string SettingKey
+               {
+                       get
+                       {
+                               return this.SettingKeyField;
+                       }
+                       set
+                       {
+                               this.SettingKeyField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string SettingValue
+               {
+                       get
+                       {
+                               return this.SettingValueField;
+                       }
+                       set
+                       {
+                               this.SettingValueField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="HotelDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class HotelDTO : object
+       {
+
+               private Nullable<int> communicationLevelField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private string emailField;
+
+               private string hotelIdField;
+
+               private string hotelNameField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private string locationField;
+
+               private Nullable<int> modelVersionField;
+
+               private string nameField;
+
+               private string notesField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private string numberField;
+
+               private string phoneField;
+
+               private string pictureField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<int> privacyLevelField;
+
+               private Nullable<int> ratingsField;
+
+               private string sharedNotesField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> communicationLevel
+               {
+                       get
+                       {
+                               return this.communicationLevelField;
+                       }
+                       set
+                       {
+                               this.communicationLevelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string email
+               {
+                       get
+                       {
+                               return this.emailField;
+                       }
+                       set
+                       {
+                               this.emailField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string hotelId
+               {
+                       get
+                       {
+                               return this.hotelIdField;
+                       }
+                       set
+                       {
+                               this.hotelIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string hotelName
+               {
+                       get
+                       {
+                               return this.hotelNameField;
+                       }
+                       set
+                       {
+                               this.hotelNameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string location
+               {
+                       get
+                       {
+                               return this.locationField;
+                       }
+                       set
+                       {
+                               this.locationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string name
+               {
+                       get
+                       {
+                               return this.nameField;
+                       }
+                       set
+                       {
+                               this.nameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notes
+               {
+                       get
+                       {
+                               return this.notesField;
+                       }
+                       set
+                       {
+                               this.notesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string number
+               {
+                       get
+                       {
+                               return this.numberField;
+                       }
+                       set
+                       {
+                               this.numberField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string phone
+               {
+                       get
+                       {
+                               return this.phoneField;
+                       }
+                       set
+                       {
+                               this.phoneField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string picture
+               {
+                       get
+                       {
+                               return this.pictureField;
+                       }
+                       set
+                       {
+                               this.pictureField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> privacyLevel
+               {
+                       get
+                       {
+                               return this.privacyLevelField;
+                       }
+                       set
+                       {
+                               this.privacyLevelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> ratings
+               {
+                       get
+                       {
+                               return this.ratingsField;
+                       }
+                       set
+                       {
+                               this.ratingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string sharedNotes
+               {
+                       get
+                       {
+                               return this.sharedNotesField;
+                       }
+                       set
+                       {
+                               this.sharedNotesField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="LegDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class LegDTO : object
+       {
+
+               private Nullable<int> actualBlockField;
+
+               private string aircraftIdField;
+
+               private string approachIdField;
+
+               private string cabinCrewAIdField;
+
+               private string cabinCrewBIdField;
+
+               private string calendarIdentifierField;
+
+               private string captainIdField;
+
+               private Nullable<bool> completedField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private string dayIdField;
+
+               private Nullable<bool> deletedField;
+
+               private string departureAirportIdField;
+
+               private string deptField;
+
+               private string deptGateField;
+
+               private string destField;
+
+               private string destGateField;
+
+               private string destinationAirportIdField;
+
+               private Nullable<global::System.DateTime> etaField;
+
+               private string firstOfficerIdField;
+
+               private string flightNumberField;
+
+               private Nullable<int> flightTimeField;
+
+               private Nullable<global::System.DateTime> inOOOIField;
+
+               private Nullable<decimal> instrumentField;
+
+               private Nullable<int> landingsField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private string legIdField;
+
+               private Nullable<int> modelVersionField;
+
+               private Nullable<decimal> nightField;
+
+               private Nullable<int> nightLandingsField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<global::System.DateTime> offOOOIField;
+
+               private Nullable<global::System.DateTime> onOOOIField;
+
+               private string operationTypeIdField;
+
+               private string otherCrewAIdField;
+
+               private string otherCrewBIdField;
+
+               private Nullable<global::System.DateTime> outOOOIField;
+
+               private string payIdField;
+
+               private string positionIdField;
+
+               private Nullable<bool> previewField;
+
+               private string registrationField;
+
+               private string remarksField;
+
+               private Nullable<int> scheduledBlockField;
+
+               private Nullable<global::System.DateTime> scheduledInField;
+
+               private Nullable<global::System.DateTime> scheduledOutField;
+
+               private Nullable<int> sequenceField;
+
+               private Nullable<bool> syncedField;
+
+               private Nullable<int> taxiTimeInField;
+
+               private Nullable<int> taxiTimeOutField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> actualBlock
+               {
+                       get
+                       {
+                               return this.actualBlockField;
+                       }
+                       set
+                       {
+                               this.actualBlockField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string aircraftId
+               {
+                       get
+                       {
+                               return this.aircraftIdField;
+                       }
+                       set
+                       {
+                               this.aircraftIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string approachId
+               {
+                       get
+                       {
+                               return this.approachIdField;
+                       }
+                       set
+                       {
+                               this.approachIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string cabinCrewAId
+               {
+                       get
+                       {
+                               return this.cabinCrewAIdField;
+                       }
+                       set
+                       {
+                               this.cabinCrewAIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string cabinCrewBId
+               {
+                       get
+                       {
+                               return this.cabinCrewBIdField;
+                       }
+                       set
+                       {
+                               this.cabinCrewBIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string calendarIdentifier
+               {
+                       get
+                       {
+                               return this.calendarIdentifierField;
+                       }
+                       set
+                       {
+                               this.calendarIdentifierField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string captainId
+               {
+                       get
+                       {
+                               return this.captainIdField;
+                       }
+                       set
+                       {
+                               this.captainIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> completed
+               {
+                       get
+                       {
+                               return this.completedField;
+                       }
+                       set
+                       {
+                               this.completedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string dayId
+               {
+                       get
+                       {
+                               return this.dayIdField;
+                       }
+                       set
+                       {
+                               this.dayIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string departureAirportId
+               {
+                       get
+                       {
+                               return this.departureAirportIdField;
+                       }
+                       set
+                       {
+                               this.departureAirportIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string dept
+               {
+                       get
+                       {
+                               return this.deptField;
+                       }
+                       set
+                       {
+                               this.deptField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string deptGate
+               {
+                       get
+                       {
+                               return this.deptGateField;
+                       }
+                       set
+                       {
+                               this.deptGateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string dest
+               {
+                       get
+                       {
+                               return this.destField;
+                       }
+                       set
+                       {
+                               this.destField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string destGate
+               {
+                       get
+                       {
+                               return this.destGateField;
+                       }
+                       set
+                       {
+                               this.destGateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string destinationAirportId
+               {
+                       get
+                       {
+                               return this.destinationAirportIdField;
+                       }
+                       set
+                       {
+                               this.destinationAirportIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> eta
+               {
+                       get
+                       {
+                               return this.etaField;
+                       }
+                       set
+                       {
+                               this.etaField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string firstOfficerId
+               {
+                       get
+                       {
+                               return this.firstOfficerIdField;
+                       }
+                       set
+                       {
+                               this.firstOfficerIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string flightNumber
+               {
+                       get
+                       {
+                               return this.flightNumberField;
+                       }
+                       set
+                       {
+                               this.flightNumberField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> flightTime
+               {
+                       get
+                       {
+                               return this.flightTimeField;
+                       }
+                       set
+                       {
+                               this.flightTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> inOOOI
+               {
+                       get
+                       {
+                               return this.inOOOIField;
+                       }
+                       set
+                       {
+                               this.inOOOIField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> instrument
+               {
+                       get
+                       {
+                               return this.instrumentField;
+                       }
+                       set
+                       {
+                               this.instrumentField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> landings
+               {
+                       get
+                       {
+                               return this.landingsField;
+                       }
+                       set
+                       {
+                               this.landingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string legId
+               {
+                       get
+                       {
+                               return this.legIdField;
+                       }
+                       set
+                       {
+                               this.legIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> night
+               {
+                       get
+                       {
+                               return this.nightField;
+                       }
+                       set
+                       {
+                               this.nightField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> nightLandings
+               {
+                       get
+                       {
+                               return this.nightLandingsField;
+                       }
+                       set
+                       {
+                               this.nightLandingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> offOOOI
+               {
+                       get
+                       {
+                               return this.offOOOIField;
+                       }
+                       set
+                       {
+                               this.offOOOIField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> onOOOI
+               {
+                       get
+                       {
+                               return this.onOOOIField;
+                       }
+                       set
+                       {
+                               this.onOOOIField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string operationTypeId
+               {
+                       get
+                       {
+                               return this.operationTypeIdField;
+                       }
+                       set
+                       {
+                               this.operationTypeIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string otherCrewAId
+               {
+                       get
+                       {
+                               return this.otherCrewAIdField;
+                       }
+                       set
+                       {
+                               this.otherCrewAIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string otherCrewBId
+               {
+                       get
+                       {
+                               return this.otherCrewBIdField;
+                       }
+                       set
+                       {
+                               this.otherCrewBIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> outOOOI
+               {
+                       get
+                       {
+                               return this.outOOOIField;
+                       }
+                       set
+                       {
+                               this.outOOOIField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string payId
+               {
+                       get
+                       {
+                               return this.payIdField;
+                       }
+                       set
+                       {
+                               this.payIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string positionId
+               {
+                       get
+                       {
+                               return this.positionIdField;
+                       }
+                       set
+                       {
+                               this.positionIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string registration
+               {
+                       get
+                       {
+                               return this.registrationField;
+                       }
+                       set
+                       {
+                               this.registrationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string remarks
+               {
+                       get
+                       {
+                               return this.remarksField;
+                       }
+                       set
+                       {
+                               this.remarksField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> scheduledBlock
+               {
+                       get
+                       {
+                               return this.scheduledBlockField;
+                       }
+                       set
+                       {
+                               this.scheduledBlockField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> scheduledIn
+               {
+                       get
+                       {
+                               return this.scheduledInField;
+                       }
+                       set
+                       {
+                               this.scheduledInField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> scheduledOut
+               {
+                       get
+                       {
+                               return this.scheduledOutField;
+                       }
+                       set
+                       {
+                               this.scheduledOutField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> sequence
+               {
+                       get
+                       {
+                               return this.sequenceField;
+                       }
+                       set
+                       {
+                               this.sequenceField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> taxiTimeIn
+               {
+                       get
+                       {
+                               return this.taxiTimeInField;
+                       }
+                       set
+                       {
+                               this.taxiTimeInField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> taxiTimeOut
+               {
+                       get
+                       {
+                               return this.taxiTimeOutField;
+                       }
+                       set
+                       {
+                               this.taxiTimeOutField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="NoteDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class NoteDTO : object
+       {
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string note1Field;
+
+               private string noteIdField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string note1
+               {
+                       get
+                       {
+                               return this.note1Field;
+                       }
+                       set
+                       {
+                               this.note1Field = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string noteId
+               {
+                       get
+                       {
+                               return this.noteIdField;
+                       }
+                       set
+                       {
+                               this.noteIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="PayperiodEventDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class PayperiodEventDTO : object
+       {
+
+               private string airlineIdField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> firstDateField;
+
+               private Nullable<global::System.DateTime> lastDateField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string payperiodEventIdField;
+
+               private string periodDescriptionField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string airlineId
+               {
+                       get
+                       {
+                               return this.airlineIdField;
+                       }
+                       set
+                       {
+                               this.airlineIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> firstDate
+               {
+                       get
+                       {
+                               return this.firstDateField;
+                       }
+                       set
+                       {
+                               this.firstDateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastDate
+               {
+                       get
+                       {
+                               return this.lastDateField;
+                       }
+                       set
+                       {
+                               this.lastDateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string payperiodEventId
+               {
+                       get
+                       {
+                               return this.payperiodEventIdField;
+                       }
+                       set
+                       {
+                               this.payperiodEventIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string periodDescription
+               {
+                       get
+                       {
+                               return this.periodDescriptionField;
+                       }
+                       set
+                       {
+                               this.periodDescriptionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="PayrollCategoryDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class PayrollCategoryDTO : object
+       {
+
+               private Nullable<bool> aboveGuaranteeField;
+
+               private Nullable<bool> applyRigField;
+
+               private Nullable<bool> applyToFlightTimeField;
+
+               private Nullable<bool> applyToLegalityField;
+
+               private Nullable<bool> applyToPayField;
+
+               private Nullable<bool> copyLegField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> minimumCreditField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> overridePayField;
+
+               private Nullable<decimal> payrateField;
+
+               private string payrollCategoriesIdField;
+
+               private string plainDescriptionField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<int> rigAField;
+
+               private Nullable<int> rigBField;
+
+               private Nullable<bool> selectableField;
+
+               private Nullable<bool> setAllLegsField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> aboveGuarantee
+               {
+                       get
+                       {
+                               return this.aboveGuaranteeField;
+                       }
+                       set
+                       {
+                               this.aboveGuaranteeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> applyRig
+               {
+                       get
+                       {
+                               return this.applyRigField;
+                       }
+                       set
+                       {
+                               this.applyRigField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> applyToFlightTime
+               {
+                       get
+                       {
+                               return this.applyToFlightTimeField;
+                       }
+                       set
+                       {
+                               this.applyToFlightTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> applyToLegality
+               {
+                       get
+                       {
+                               return this.applyToLegalityField;
+                       }
+                       set
+                       {
+                               this.applyToLegalityField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> applyToPay
+               {
+                       get
+                       {
+                               return this.applyToPayField;
+                       }
+                       set
+                       {
+                               this.applyToPayField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> copyLeg
+               {
+                       get
+                       {
+                               return this.copyLegField;
+                       }
+                       set
+                       {
+                               this.copyLegField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> minimumCredit
+               {
+                       get
+                       {
+                               return this.minimumCreditField;
+                       }
+                       set
+                       {
+                               this.minimumCreditField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> overridePay
+               {
+                       get
+                       {
+                               return this.overridePayField;
+                       }
+                       set
+                       {
+                               this.overridePayField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> payrate
+               {
+                       get
+                       {
+                               return this.payrateField;
+                       }
+                       set
+                       {
+                               this.payrateField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string payrollCategoriesId
+               {
+                       get
+                       {
+                               return this.payrollCategoriesIdField;
+                       }
+                       set
+                       {
+                               this.payrollCategoriesIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string plainDescription
+               {
+                       get
+                       {
+                               return this.plainDescriptionField;
+                       }
+                       set
+                       {
+                               this.plainDescriptionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> rigA
+               {
+                       get
+                       {
+                               return this.rigAField;
+                       }
+                       set
+                       {
+                               this.rigAField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> rigB
+               {
+                       get
+                       {
+                               return this.rigBField;
+                       }
+                       set
+                       {
+                               this.rigBField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> selectable
+               {
+                       get
+                       {
+                               return this.selectableField;
+                       }
+                       set
+                       {
+                               this.selectableField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> setAllLegs
+               {
+                       get
+                       {
+                               return this.setAllLegsField;
+                       }
+                       set
+                       {
+                               this.setAllLegsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="PayrollDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class PayrollDTO : object
+       {
+
+               private Nullable<int> actualField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<int> creditField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private string payrollCategoriesIdField;
+
+               private string payrollIdField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> actual
+               {
+                       get
+                       {
+                               return this.actualField;
+                       }
+                       set
+                       {
+                               this.actualField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> credit
+               {
+                       get
+                       {
+                               return this.creditField;
+                       }
+                       set
+                       {
+                               this.creditField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string payrollCategoriesId
+               {
+                       get
+                       {
+                               return this.payrollCategoriesIdField;
+                       }
+                       set
+                       {
+                               this.payrollCategoriesIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string payrollId
+               {
+                       get
+                       {
+                               return this.payrollIdField;
+                       }
+                       set
+                       {
+                               this.payrollIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="PerformanceDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class PerformanceDTO : object
+       {
+
+               private Nullable<int> actualField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<int> deviatedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private string performanceIdField;
+
+               private Nullable<int> plannedFuelField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> actual
+               {
+                       get
+                       {
+                               return this.actualField;
+                       }
+                       set
+                       {
+                               this.actualField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> deviated
+               {
+                       get
+                       {
+                               return this.deviatedField;
+                       }
+                       set
+                       {
+                               this.deviatedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string performanceId
+               {
+                       get
+                       {
+                               return this.performanceIdField;
+                       }
+                       set
+                       {
+                               this.performanceIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> plannedFuel
+               {
+                       get
+                       {
+                               return this.plannedFuelField;
+                       }
+                       set
+                       {
+                               this.plannedFuelField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="PositionDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class PositionDTO : object
+       {
+
+               private Nullable<bool> autoNightLandingField;
+
+               private Nullable<bool> checkAirmanField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> creditLandingField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<bool> ioeField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> pilotFlyingField;
+
+               private Nullable<bool> pilotInCommandField;
+
+               private string position1Field;
+
+               private string positionIdField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<bool> selectableField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> autoNightLanding
+               {
+                       get
+                       {
+                               return this.autoNightLandingField;
+                       }
+                       set
+                       {
+                               this.autoNightLandingField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> checkAirman
+               {
+                       get
+                       {
+                               return this.checkAirmanField;
+                       }
+                       set
+                       {
+                               this.checkAirmanField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> creditLanding
+               {
+                       get
+                       {
+                               return this.creditLandingField;
+                       }
+                       set
+                       {
+                               this.creditLandingField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> ioe
+               {
+                       get
+                       {
+                               return this.ioeField;
+                       }
+                       set
+                       {
+                               this.ioeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> pilotFlying
+               {
+                       get
+                       {
+                               return this.pilotFlyingField;
+                       }
+                       set
+                       {
+                               this.pilotFlyingField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> pilotInCommand
+               {
+                       get
+                       {
+                               return this.pilotInCommandField;
+                       }
+                       set
+                       {
+                               this.pilotInCommandField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string position1
+               {
+                       get
+                       {
+                               return this.position1Field;
+                       }
+                       set
+                       {
+                               this.position1Field = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string positionId
+               {
+                       get
+                       {
+                               return this.positionIdField;
+                       }
+                       set
+                       {
+                               this.positionIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> selectable
+               {
+                       get
+                       {
+                               return this.selectableField;
+                       }
+                       set
+                       {
+                               this.selectableField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="ReglatoryOperationTypeDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class ReglatoryOperationTypeDTO : object
+       {
+
+               private Nullable<bool> activeField;
+
+               private Nullable<bool> canMixOperationsField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string operationAbvreviationField;
+
+               private string operationDescriptionField;
+
+               private Nullable<bool> previewField;
+
+               private string reglatoryOperationTypesIdField;
+
+               private string schemaURLField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> active
+               {
+                       get
+                       {
+                               return this.activeField;
+                       }
+                       set
+                       {
+                               this.activeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> canMixOperations
+               {
+                       get
+                       {
+                               return this.canMixOperationsField;
+                       }
+                       set
+                       {
+                               this.canMixOperationsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string operationAbvreviation
+               {
+                       get
+                       {
+                               return this.operationAbvreviationField;
+                       }
+                       set
+                       {
+                               this.operationAbvreviationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string operationDescription
+               {
+                       get
+                       {
+                               return this.operationDescriptionField;
+                       }
+                       set
+                       {
+                               this.operationDescriptionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string reglatoryOperationTypesId
+               {
+                       get
+                       {
+                               return this.reglatoryOperationTypesIdField;
+                       }
+                       set
+                       {
+                               this.reglatoryOperationTypesIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string schemaURL
+               {
+                       get
+                       {
+                               return this.schemaURLField;
+                       }
+                       set
+                       {
+                               this.schemaURLField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="TripDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class TripDTO : object
+       {
+
+               private bool activeField;
+
+               private string calendarIdentifierField;
+
+               private Nullable<bool> completedField;
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> previewField;
+
+               private Nullable<global::System.DateTime> seqEndTimeField;
+
+               private Nullable<global::System.DateTime> seqStartTimeField;
+
+               private Nullable<bool> syncedField;
+
+               private Nullable<int> tafbField;
+
+               private Nullable<int> totalBlockField;
+
+               private Nullable<int> totalCreditField;
+
+               private Nullable<decimal> totalFlightTimeField;
+
+               private Nullable<decimal> totalInstrumentField;
+
+               private Nullable<int> totalLandingsField;
+
+               private Nullable<decimal> totalNightField;
+
+               private Nullable<int> totalNightLandingsField;
+
+               private Nullable<decimal> totalPayFField;
+
+               private string tripIdField;
+
+               private string tripNumberField;
+
+               private int userIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public bool active
+               {
+                       get
+                       {
+                               return this.activeField;
+                       }
+                       set
+                       {
+                               this.activeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string calendarIdentifier
+               {
+                       get
+                       {
+                               return this.calendarIdentifierField;
+                       }
+                       set
+                       {
+                               this.calendarIdentifierField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> completed
+               {
+                       get
+                       {
+                               return this.completedField;
+                       }
+                       set
+                       {
+                               this.completedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> seqEndTime
+               {
+                       get
+                       {
+                               return this.seqEndTimeField;
+                       }
+                       set
+                       {
+                               this.seqEndTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> seqStartTime
+               {
+                       get
+                       {
+                               return this.seqStartTimeField;
+                       }
+                       set
+                       {
+                               this.seqStartTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> tafb
+               {
+                       get
+                       {
+                               return this.tafbField;
+                       }
+                       set
+                       {
+                               this.tafbField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> totalBlock
+               {
+                       get
+                       {
+                               return this.totalBlockField;
+                       }
+                       set
+                       {
+                               this.totalBlockField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> totalCredit
+               {
+                       get
+                       {
+                               return this.totalCreditField;
+                       }
+                       set
+                       {
+                               this.totalCreditField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> totalFlightTime
+               {
+                       get
+                       {
+                               return this.totalFlightTimeField;
+                       }
+                       set
+                       {
+                               this.totalFlightTimeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> totalInstrument
+               {
+                       get
+                       {
+                               return this.totalInstrumentField;
+                       }
+                       set
+                       {
+                               this.totalInstrumentField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> totalLandings
+               {
+                       get
+                       {
+                               return this.totalLandingsField;
+                       }
+                       set
+                       {
+                               this.totalLandingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> totalNight
+               {
+                       get
+                       {
+                               return this.totalNightField;
+                       }
+                       set
+                       {
+                               this.totalNightField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> totalNightLandings
+               {
+                       get
+                       {
+                               return this.totalNightLandingsField;
+                       }
+                       set
+                       {
+                               this.totalNightLandingsField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<decimal> totalPayF
+               {
+                       get
+                       {
+                               return this.totalPayFField;
+                       }
+                       set
+                       {
+                               this.totalPayFField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string tripId
+               {
+                       get
+                       {
+                               return this.tripIdField;
+                       }
+                       set
+                       {
+                               this.tripIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string tripNumber
+               {
+                       get
+                       {
+                               return this.tripNumberField;
+                       }
+                       set
+                       {
+                               this.tripNumberField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="UserSettingDTO", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class UserSettingDTO : object
+       {
+
+               private Nullable<global::System.DateTime> createdUtcField;
+
+               private Nullable<bool> deletedField;
+
+               private string keyField;
+
+               private Nullable<global::System.DateTime> lastUpdatedUtcField;
+
+               private Nullable<int> modelVersionField;
+
+               private string notificationMessageField;
+
+               private Nullable<int> notificationTypeField;
+
+               private Nullable<bool> previewField;
+
+               private string stringValueField;
+
+               private Nullable<bool> syncedField;
+
+               private int userIdField;
+
+               private string userSettingIdField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> createdUtc
+               {
+                       get
+                       {
+                               return this.createdUtcField;
+                       }
+                       set
+                       {
+                               this.createdUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> deleted
+               {
+                       get
+                       {
+                               return this.deletedField;
+                       }
+                       set
+                       {
+                               this.deletedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string key
+               {
+                       get
+                       {
+                               return this.keyField;
+                       }
+                       set
+                       {
+                               this.keyField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> lastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.lastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.lastUpdatedUtcField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> modelVersion
+               {
+                       get
+                       {
+                               return this.modelVersionField;
+                       }
+                       set
+                       {
+                               this.modelVersionField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string notificationMessage
+               {
+                       get
+                       {
+                               return this.notificationMessageField;
+                       }
+                       set
+                       {
+                               this.notificationMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<int> notificationType
+               {
+                       get
+                       {
+                               return this.notificationTypeField;
+                       }
+                       set
+                       {
+                               this.notificationTypeField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> preview
+               {
+                       get
+                       {
+                               return this.previewField;
+                       }
+                       set
+                       {
+                               this.previewField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string stringValue
+               {
+                       get
+                       {
+                               return this.stringValueField;
+                       }
+                       set
+                       {
+                               this.stringValueField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<bool> synced
+               {
+                       get
+                       {
+                               return this.syncedField;
+                       }
+                       set
+                       {
+                               this.syncedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int userId
+               {
+                       get
+                       {
+                               return this.userIdField;
+                       }
+                       set
+                       {
+                               this.userIdField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string userSettingId
+               {
+                       get
+                       {
+                               return this.userSettingIdField;
+                       }
+                       set
+                       {
+                               this.userSettingIdField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="DingusSyncResponse", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class DingusSyncResponse : object
+       {
+
+               DingusSyncData CloudDataField;
+
+               private string StatusField;
+
+               private bool SuccessField;
+
+               private global::System.DateTime SyncDateLineField;
+
+               private long SyncDurationField;
+
+               private global::System.DateTime SyncEndedField;
+
+               private global::System.DateTime SyncStartedField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public DingusSyncData CloudData
+               {
+                       get
+                       {
+                               return this.CloudDataField;
+                       }
+                       set
+                       {
+                               this.CloudDataField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string Status
+               {
+                       get
+                       {
+                               return this.StatusField;
+                       }
+                       set
+                       {
+                               this.StatusField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public bool Success
+               {
+                       get
+                       {
+                               return this.SuccessField;
+                       }
+                       set
+                       {
+                               this.SuccessField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public global::System.DateTime SyncDateLine
+               {
+                       get
+                       {
+                               return this.SyncDateLineField;
+                       }
+                       set
+                       {
+                               this.SyncDateLineField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public long SyncDuration
+               {
+                       get
+                       {
+                               return this.SyncDurationField;
+                       }
+                       set
+                       {
+                               this.SyncDurationField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public global::System.DateTime SyncEnded
+               {
+                       get
+                       {
+                               return this.SyncEndedField;
+                       }
+                       set
+                       {
+                               this.SyncEndedField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public global::System.DateTime SyncStarted
+               {
+                       get
+                       {
+                               return this.SyncStartedField;
+                       }
+                       set
+                       {
+                               this.SyncStartedField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="BinaryTransferResponse", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class BinaryTransferResponse : object
+       {
+
+               private string ErrorMessageField;
+
+               private bool SuccessField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string ErrorMessage
+               {
+                       get
+                       {
+                               return this.ErrorMessageField;
+                       }
+                       set
+                       {
+                               this.ErrorMessageField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public bool Success
+               {
+                       get
+                       {
+                               return this.SuccessField;
+                       }
+                       set
+                       {
+                               this.SuccessField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="SyncStatus", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class SyncStatus : object
+       {
+
+               EntitySyncState[] SyncStateField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public EntitySyncState[] SyncState
+               {
+                       get
+                       {
+                               return this.SyncStateField;
+                       }
+                       set
+                       {
+                               this.SyncStateField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="EntitySyncState", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class EntitySyncState : object
+       {
+
+               private string EntityNameField;
+
+               private Nullable<global::System.DateTime> LastUpdatedUtcField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string EntityName
+               {
+                       get
+                       {
+                               return this.EntityNameField;
+                       }
+                       set
+                       {
+                               this.EntityNameField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public Nullable<global::System.DateTime> LastUpdatedUtc
+               {
+                       get
+                       {
+                               return this.LastUpdatedUtcField;
+                       }
+                       set
+                       {
+                               this.LastUpdatedUtcField = value;
+                       }
+               }
+       }
+
+       [global::System.Diagnostics.DebuggerStepThroughAttribute()]
+       [global::System.CodeDom.Compiler.GeneratedCodeAttribute("global::System.Runtime.Serialization", "4.0.0.0")]
+       [global::System.Runtime.Serialization.DataContractAttribute(Name="TaxiTime", Namespace="http://schemas.datacontract.org/2004/07/Dingus.Data.DataContracts")]
+       public partial class TaxiTime : object
+       {
+
+               private string AirportField;
+
+               private int TaxiInAvgField;
+
+               private int TaxiOutAvgField;
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public string Airport
+               {
+                       get
+                       {
+                               return this.AirportField;
+                       }
+                       set
+                       {
+                               this.AirportField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int TaxiInAvg
+               {
+                       get
+                       {
+                               return this.TaxiInAvgField;
+                       }
+                       set
+                       {
+                               this.TaxiInAvgField = value;
+                       }
+               }
+
+               [global::System.Runtime.Serialization.DataMemberAttribute()]
+               public int TaxiOutAvg
+               {
+                       get
+                       {
+                               return this.TaxiOutAvgField;
+                       }
+                       set
+                       {
+                               this.TaxiOutAvgField = value;
+                       }
+               }
+       }
+}
+
+
+
diff --git a/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/DataContractSerializerTest_ISerializable.cs b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/DataContractSerializerTest_ISerializable.cs
new file mode 100644 (file)
index 0000000..59ff632
--- /dev/null
@@ -0,0 +1,114 @@
+//
+// DataContractSerializerTest_ISerializable.cs
+//
+// Author:
+//   Aaron Bockover <abock@xamarin.com>
+//
+// Copyright 2015 Xamarin Inc. All rights reserved.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.IO;
+using System.Runtime.Serialization;
+using System.Xml;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Runtime.Serialization
+{
+       [TestFixture]
+       public class DataContractSerializerTest_ISerializable
+       {
+               [Serializable]
+               sealed class TestClassISerializable : ISerializable
+               {
+                       public string Foo { get; }
+
+                       public TestClassISerializable (string foo)
+                       {
+                               Foo = foo;
+                       }
+
+                       TestClassISerializable (SerializationInfo info, StreamingContext context)
+                       {
+                               Foo = info.GetString ("foo");
+                       }
+
+                       void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context)
+                       {
+                               info.AddValue ("foo", Foo);
+                       }
+               }
+
+               // Tests that the ISerializable constructor is properly invoked, which
+               // regressed when integrating MS Reference Source DCS, et. al.:
+               //   https://bugzilla.xamarin.com/show_bug.cgi?id=37171
+               [Test]
+               public void TestISerializableCtor ()
+               {
+                       var serializer = new DataContractSerializer (
+                               typeof(TestClassISerializable),
+                               new DataContractSerializerSettings {
+                                       DataContractResolver = new Resolver ()
+                               }
+                       );
+
+                       var stream = new MemoryStream ();
+
+                       var expected = new TestClassISerializable ("hello world");
+                       serializer.WriteObject (stream, expected);
+
+                       stream.Flush ();
+                       stream.Position = 0;
+
+                       var actual = (TestClassISerializable)serializer.ReadObject (stream);
+
+                       Assert.AreEqual (expected.Foo, actual.Foo, "#DCS_ISer_Ctor");
+               }
+
+               // Resolver to force DCS to serialize any type, ensuring the ISerializable
+               // path will be taken for objects implementing that interface
+               class Resolver : DataContractResolver
+               {
+                       public override Type ResolveName (string typeName, string typeNamespace,
+                               Type declaredType, DataContractResolver knownTypeResolver)
+                       {
+                               return Type.GetType (typeNamespace == null
+                                       ? typeName
+                                       : typeNamespace + "." + typeName
+                               );
+                       }
+
+                       public override bool TryResolveType (Type type, Type declaredType,
+                               DataContractResolver knownTypeResolver,
+                               out XmlDictionaryString typeName,
+                               out XmlDictionaryString typeNamespace)
+                       {
+                               var name = type.FullName;
+                               var namesp = type.Namespace;
+                               name = name.Substring (type.Namespace.Length + 1);
+                               typeName = new XmlDictionaryString (XmlDictionary.Empty, name, 0);
+                               typeNamespace = new XmlDictionaryString (XmlDictionary.Empty, namesp, 0);
+                               return true;
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.Security/System.Security-net_4_5.csproj b/mcs/class/System.Security/System.Security-net_4_5.csproj
deleted file mode 100644 (file)
index 74704c2..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,414</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Security</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,414</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;SECURITY_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,414</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;SECURITY_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\ManagedProtection.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\NativeDapiProtection.cs" />\r
-    <Compile Include="Mono.Xml\XmlCanonicalizer.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\AlgorithmIdentifier.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\CmsRecipient.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\CmsRecipientCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\CmsRecipientEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\CmsSigner.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\ContentInfo.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\EnvelopedCms.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\KeyAgreeKeyChoice.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\KeyAgreeRecipientInfo.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\KeyTransRecipientInfo.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\Pkcs9Attribute.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\Pkcs9ContentType.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\Pkcs9DocumentDescription.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\Pkcs9DocumentName.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\Pkcs9MessageDigest.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\Pkcs9SigningTime.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\PublicKeyInfo.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\RecipientInfo.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\RecipientInfoCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\RecipientInfoEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\RecipientInfoType.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\SignedCms.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\SignerInfo.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\SignerInfoCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\SignerInfoEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\SubjectIdentifier.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\SubjectIdentifierOrKey.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\SubjectIdentifierOrKeyType.cs" />\r
-    <Compile Include="System.Security.Cryptography.Pkcs\SubjectIdentifierType.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate2UI.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509SelectionFlag.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\CipherData.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\CipherReference.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\DataObject.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\DataReference.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\DSAKeyValue.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\EncryptedData.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\EncryptedKey.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\EncryptedReference.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\EncryptedType.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\EncryptedXml.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\EncryptionMethod.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\EncryptionProperties.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\EncryptionProperty.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\IRelDecryptor.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\KeyInfo.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\KeyInfoClause.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\KeyInfoEncryptedKey.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\KeyInfoName.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\KeyInfoNode.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\KeyInfoRetrievalMethod.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\KeyInfoX509Data.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\KeyReference.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\Manifest.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\Reference.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\ReferenceList.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\RSAKeyValue.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\Signature.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\SignedInfo.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\SignedXml.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\SymmetricKeyWrap.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\Transform.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\TransformChain.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\X509IssuerSerial.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlDecryptionTransform.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlDsigBase64Transform.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlDsigC14NTransform.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlDsigC14NWithCommentsTransform.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlDsigEnvelopedSignatureTransform.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlDsigExcC14NTransform.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlDsigExcC14NWithCommentsTransform.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlDsigNodeList.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlDsigXPathTransform.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlDsigXsltTransform.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlEncryption.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlLicenseTransform.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlSignature.cs" />\r
-    <Compile Include="System.Security.Cryptography.Xml\XmlSignatureStreamReader.cs" />\r
-    <Compile Include="System.Security.Cryptography\CryptographicAttribute.cs" />\r
-    <Compile Include="System.Security.Cryptography\CryptographicAttributeCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography\CryptographicAttributeEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography\DataProtectionScope.cs" />\r
-    <Compile Include="System.Security.Cryptography\MemoryProtectionScope.cs" />\r
-    <Compile Include="System.Security.Cryptography\ProtectedData.cs" />\r
-    <Compile Include="System.Security.Cryptography\ProtectedMemory.cs" />\r
-    <Compile Include="System.Security.Permissions\DataProtectionPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\DataProtectionPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\DataProtectionPermissionFlags.cs" />\r
-    <Compile Include="System.Security.Permissions\PermissionHelper.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-secxml-net_4_5.csproj">\r
-      <Project>{46F151F2-A422-4A1B-9D29-2E148CE73629}</Project>\r
-      <Name>System-secxml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-bare-net_4_5.csproj">\r
-      <Project>{21FB091E-0F84-479E-AB16-6503D36852F9}</Project>\r
-      <Name>System.Xml-bare-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Security/System.Security-tests-net_4_5.csproj b/mcs/class/System.Security/System.Security-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 9beb057..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D49E3075-7A78-4CF1-8300-DF847C9B6796}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,414,169,219,1595,168,183,414</NoWarn>\r
-    <OutputPath>bin\Debug\System.Security-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Security_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,414,169,219,1595,168,183,414</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;SECURITY_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,414,169,219,1595,168,183,414</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;SECURITY_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\AlgorithmIdentifierTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\CmsRecipientCollectionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\CmsRecipientTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\CmsSignerTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\ContentInfoTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\EnvelopedCmsTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\KeyTransRecipientInfoTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\Pkcs9AttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\Pkcs9ContentTypeTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\Pkcs9DocumentDescriptionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\Pkcs9DocumentNameTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\Pkcs9MessageDigestTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\Pkcs9SigningTimeTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\Pkits_4_01_SignatureVerification.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\PkitsTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\SignedCmsTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\SignerInfoCollectionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\SignerInfoTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Pkcs\SubjectIdentifierTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509Certificate2UICas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509Certificate2UITest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\AssertCrypto.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\DataObjectTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\DataReferenceTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\DSAKeyValueTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\EncryptedXmlTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\KeyInfoNameTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\KeyInfoNodeTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\KeyInfoRetrievalMethodTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\KeyInfoTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\KeyInfoX509DataTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\ReferenceTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\RSAKeyValueTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\SignatureTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\SignedInfoTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\SignedXmlTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\TransformChainTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\TransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\XmlDecryptionTransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\XmlDsigBase64TransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\XmlDsigC14NTransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\XmlDsigC14NWithCommentsTransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\XmlDsigEnvelopedSignatureTransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\XmlDsigExcC14NTransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\XmlDsigExcC14NWithCommentsTransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\XmlDsigXPathTransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\XmlDsigXsltTransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.Xml\XmlLicenseTransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CryptographicAttributeObjectCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CryptographicAttributeObjectCollectionCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CryptographicAttributeObjectCollectionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CryptographicAttributeObjectEnumeratorCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CryptographicAttributeObjectEnumeratorTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CryptographicAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\ProtectedDataCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\ProtectedDataTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\ProtectedMemoryCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\ProtectedMemoryTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\DataProtectionPermissionAttributeTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security\System.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-1.csproj">\r
-      <Project>{6822DF7D-F859-4F02-9946-F138AA756A0E}</Project>\r
-      <Name>System\System-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj b/mcs/class/System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj
deleted file mode 100644 (file)
index 6bd2f56..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E537F31B-BCB7-4935-ABF3-DF2FAC48DCB3}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceModel.Activation</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\System.ServiceModel\System.ServiceModel.Activation\ServiceHostFactory.cs" />\r
-    <Compile Include="..\System.ServiceModel\System.ServiceModel\ServiceHostingEnvironment.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel/System.ServiceModel-plainservice-net_4_5.csproj">\r
-      <Project>{0E3CFD7E-2F93-4B5B-B7FA-2AEBE0F850C0}</Project>\r
-      <Name>System.ServiceModel-plainservice-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-net_4_5.csproj b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-net_4_5.csproj
deleted file mode 100644 (file)
index ad82899..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DAF033A4-D1CF-464F-B581-578259BF3F8F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceModel.Discovery</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\DiscoveryChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\RequestChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\AnnouncementChannelEndpointElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\AnnouncementEndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\AnnouncementEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\ContractTypeNameElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\ContractTypeNameElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\DiscoveryClientElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\DiscoveryClientSettingsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\DiscoveryEndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\DiscoveryEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\DiscoveryVersionConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\DynamicEndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\DynamicEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\EndpointDiscoveryElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\FindCriteriaElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\ScopeElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\ScopeElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\ServiceDiscoveryElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\UdpAnnouncementEndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\UdpAnnouncementEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\UdpDiscoveryEndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\UdpDiscoveryEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Configuration\UdpTransportSettingsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Udp\UdpChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Udp\UdpChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Udp\UdpDuplexChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Udp\UdpTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Version11\AnnouncementClient11.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Version11\DiscoveryMessageSequence11.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Version11\DiscoveryProxyClient11.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Version11\DiscoveryTargetClient11.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Version11\EndpointDiscoveryMetadata11.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Version11\FindCriteria11.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Version11\IAnnouncementContract11.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Version11\IDiscoveryProxyContract11.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Version11\IDiscoveryTargetContract11.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Version11\MessageContracts11.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.Version11\ResolveCriteria11.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionApril2005\AnnouncementClientApril2005.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionApril2005\DiscoveryMessageSequenceApril2005.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionApril2005\DiscoveryProxyClientApril2005.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionApril2005\DiscoveryTargetClientApril2005.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionApril2005\EndpointDiscoveryMetadataApril2005.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionApril2005\FindCriteriaApril2005.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionApril2005\IAnnouncementContractApril2005.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionApril2005\IDiscoveryProxyContractApril2005.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionApril2005\IDiscoveryTargetContractApril2005.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionApril2005\MessageContractsApril2005.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionApril2005\ResolveCriteriaApril2005.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionCD1\AnnouncementClientCD1.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionCD1\DiscoveryMessageSequenceCD1.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionCD1\DiscoveryProxyClientCD1.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionCD1\DiscoveryTargetClientCD1.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionCD1\EndpointDiscoveryMetadataCD1.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionCD1\FindCriteriaCD1.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionCD1\IAnnouncementContractCD1.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionCD1\IDiscoveryProxyContractCD1.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionCD1\IDiscoveryTargetContractCD1.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionCD1\MessageContractsCD1.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery.VersionCD1\ResolveCriteriaCD1.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\AnnouncementClient.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\AnnouncementEndpoint.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\AnnouncementEventArgs.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\AnnouncementService.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryChannelDispatcher.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryClient.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryClientBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryEndpoint.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryEndpointProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryEndpointPublisherBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryMessageSequence.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryMessageSequenceGenerator.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryOperationContextExtension.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryProxy.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryService.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryServiceExtension.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DiscoveryViaUriBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\DynamicEndpoint.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\EndpointDiscoveryBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\EndpointDiscoveryMetadata.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\FindCompletedEventArgs.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\FindCriteria.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\FindProgressChangedEventArgs.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\FindRequestContext.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\FindResponse.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\ResolveCompletedEventArgs.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\ResolveCriteria.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\ResolveResponse.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\ServiceDiscoveryBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\ServiceDiscoveryMode.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\UdpAnnouncementEndpoint.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\UdpDiscoveryEndpoint.cs" />\r
-    <Compile Include="System.ServiceModel.Discovery\UdpTransportSettings.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
-      <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-tests-net_4_5.csproj b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 71a64cd..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{83854968-EA94-4D22-8BFE-AA81557AACFB}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.ServiceModel.Discovery-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceModel.Discovery_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.ServiceModel.Discovery\AnnouncementBoundDiscoveryService.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\AnnouncementClientTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\AnnouncementEndpointTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\AnnouncementServiceTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\ContractTypes.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\DiscoveryClientBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\DiscoveryClientTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\DiscoveryEndpointTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\DiscoveryProxyTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\DiscoveryServiceTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\DiscoveryVersionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\DynamicEndpointTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\EndpointDiscoveryBehaviorTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\EndpointDiscoveryMetadataTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\FindCriteriaTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\InspectionBehaviors.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\IntegratedDiscoveryTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\MyDiscoveryServiceTypes.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\ServiceDiscoveryBehaviorTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\UdpAnnouncementEndpointTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\UdpDiscoveryEndpointTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Discovery\UdpTransportTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_5.csproj">\r
-      <Project>{DAF033A4-D1CF-464F-B581-578259BF3F8F}</Project>\r
-      <Name>System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5-1.csproj">\r
-      <Project>{F1316A49-176B-4E68-8A5F-1BA718289D46}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 24b5d2fc2e9b93f44c0ac70a9941155b47d5602d..2ddf10ebd269eafc2092c019941711ced109319e 100644 (file)
@@ -2,12 +2,16 @@ thisdir = class/System.ServiceModel.Internals
 SUBDIRS = 
 include ../../build/rules.make
 
+ifndef NO_MULTIPLE_APPDOMAINS
+REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_MULTIPLE_APPDOMAINS
+endif
+
 LIBRARY = System.ServiceModel.Internals.dll
 LIB_REFS = System System.Core System.Xml
 ifneq (2.1, $(FRAMEWORK_VERSION))
        LIB_REFS += System.Configuration
 endif
-LIB_MCS_FLAGS = /unsafe
+LIB_MCS_FLAGS = /unsafe $(REFERENCE_SOURCES_FLAGS)
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
diff --git a/mcs/class/System.ServiceModel.Internals/MobileStubs.cs b/mcs/class/System.ServiceModel.Internals/MobileStubs.cs
new file mode 100644 (file)
index 0000000..f82ff50
--- /dev/null
@@ -0,0 +1,146 @@
+// help compiles sources for mobile without having unusable
+// Windows p/invoke in the assemblies
+//
+// Copyright 2015 Xamarin Inc.
+
+#if MOBILE
+
+namespace System.Runtime.Interop {
+
+       using Microsoft.Win32.SafeHandles;
+       using System.Runtime.Diagnostics;
+       using System.Runtime.InteropServices;
+       using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
+
+       sealed class SafeEventLogWriteHandle : SafeHandleZeroOrMinusOneIsInvalid {
+
+               SafeEventLogWriteHandle () : base (true)
+               {
+               }
+
+               public static SafeEventLogWriteHandle RegisterEventSource (string uncServerName, string sourceName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               static bool DeregisterEventSource (IntPtr hEventLog)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override bool ReleaseHandle ()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+
+       static class UnsafeNativeMethods {
+
+               public const int ERROR_MORE_DATA = 234;
+               public const int ERROR_ARITHMETIC_OVERFLOW = 534;
+               public const int ERROR_NOT_ENOUGH_MEMORY = 8;
+
+               [StructLayout (LayoutKind.Explicit, Size = 16)]
+               public struct EventData {
+                       [FieldOffset(0)]
+                       internal UInt64 DataPointer;
+                       [FieldOffset(8)]
+                       internal uint Size;
+                       [FieldOffset(12)]
+                       internal int Reserved;
+               }
+
+               public static SafeWaitHandle CreateWaitableTimer (IntPtr mustBeZero, bool manualReset, string timerName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static bool SetWaitableTimer (SafeWaitHandle handle, ref long dueTime, int period, IntPtr mustBeZero, IntPtr mustBeZeroAlso, bool resume)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static int QueryPerformanceCounter (out long time)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static uint GetSystemTimeAdjustment (out int adjustment, out uint increment, out uint adjustmentDisabled)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static void GetSystemTimeAsFileTime (out long time)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal static string GetComputerName (ComputerNameFormat nameType)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal static bool IsDebuggerPresent ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal static void DebugBreak ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal static void OutputDebugString (string lpOutputString)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal unsafe delegate void EtwEnableCallback (ref Guid sourceId, int isEnabled, byte level, long matchAnyKeywords, long matchAllKeywords, void* filterData, void* callbackContext);
+
+               internal static unsafe uint EventRegister (ref Guid providerId, EtwEnableCallback enableCallback, void* callbackContext, ref long registrationHandle)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal static uint EventUnregister (long registrationHandle)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal static bool EventEnabled (long registrationHandle, ref EventDescriptor eventDescriptor)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal static unsafe uint EventWrite (long registrationHandle, ref EventDescriptor eventDescriptor, uint userDataCount, EventData* userData)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal static unsafe uint EventWriteTransfer (long registrationHandle, ref EventDescriptor eventDescriptor, ref Guid activityId, ref Guid relatedActivityId, uint userDataCount, EventData* userData)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal static unsafe uint EventWriteString (long registrationHandle, byte level, long keywords, char* message)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal static unsafe uint EventActivityIdControl (int ControlCode, ref Guid ActivityId)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal static bool ReportEvent (SafeHandle hEventLog, ushort type, ushort category, uint eventID, byte[] userSID, ushort numStrings, uint dataLen, HandleRef strings, byte[] rawData)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal static SafeEventLogWriteHandle RegisterEventSource (string uncServerName, string sourceName)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
+#endif
diff --git a/mcs/class/System.ServiceModel.Internals/mobile_System.ServiceModel.Internals.dll.sources b/mcs/class/System.ServiceModel.Internals/mobile_System.ServiceModel.Internals.dll.sources
new file mode 100644 (file)
index 0000000..a2290a9
--- /dev/null
@@ -0,0 +1,78 @@
+../../build/common/Consts.cs
+../../build/common/SR.cs
+EventLogEntryType.cs
+InternalSR.cs
+MobileStubs.cs
+Assembly/AssemblyInfo.cs
+../../../external/referencesource/System.ServiceModel.Internals/AssemblyInfo.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/ActionItem.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/AssertHelper.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/AsyncCompletionResult.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/AsyncEventArgsCallback.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/AsyncEventArgs.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/AsyncResult.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/AsyncWaitHandle.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/BackoffTimeoutHelper.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/BufferedOutputStream.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/CallbackException.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Collections/HopperCache.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Collections/NullableKeyDictionary.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Collections/ObjectCache.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Collections/ObjectCacheItem.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Collections/ObjectCacheSettings.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Collections/OrderedDictionary.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Collections/ValidatingCollection.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/CompletedAsyncResult.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/ComputerNameFormat.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/ActivityControl.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/DiagnosticEventProvider.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/DiagnosticTraceBase.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/DiagnosticTraceSource.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/DictionaryTraceRecord.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/EtwDiagnosticTrace.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/EtwProvider.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/EventDescriptor.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/EventLogCategory.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/EventLogEventId.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/EventLogger.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/EventTraceActivity.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/ITraceSourceStringProvider.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/PerformanceCounterNameAttribute.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/StringTraceRecord.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/TraceRecord.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/DiagnosticStrings.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/DuplicateDetector.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/ExceptionTrace.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/FastAsyncCallback.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/FatalException.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/FxCop.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Fx.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/HashHelper.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/IAsyncEventArgs.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/InputQueue.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/InternalBufferManager.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/IOThreadCancellationTokenSource.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/IOThreadScheduler.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/IOThreadTimer.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/MruCache.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/NameGenerator.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/PartialTrustHelpers.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/ReadOnlyDictionaryInternal.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/ReadOnlyKeyedCollection.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/ScheduleActionItemAsyncResult.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/SignalGate.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/SynchronizedPool.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/TaskExtensions.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/ThreadNeutralSemaphore.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/Ticks.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/TimeoutHelper.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/TraceChannel.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/TraceEventLevel.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/TraceEventOpcode.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/TraceLevelHelper.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/TracePayload.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/TypedAsyncResult.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/TypeHelper.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/UrlUtility.cs
+../../../external/referencesource/System.ServiceModel.Internals/System/Runtime/WaitCallbackActionItem.cs
+../../../external/referencesource/System.ServiceModel.Internals/TraceCore.Designer.cs
diff --git a/mcs/class/System.ServiceModel.Internals/monotouch_System.ServiceModel.Internals.dll.sources b/mcs/class/System.ServiceModel.Internals/monotouch_System.ServiceModel.Internals.dll.sources
new file mode 100644 (file)
index 0000000..903b4f6
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.ServiceModel.Internals.dll.sources
\ No newline at end of file
diff --git a/mcs/class/System.ServiceModel.Internals/monotouch_tv_System.ServiceModel.Internals.dll.sources b/mcs/class/System.ServiceModel.Internals/monotouch_tv_System.ServiceModel.Internals.dll.sources
new file mode 100644 (file)
index 0000000..12c950c
--- /dev/null
@@ -0,0 +1 @@
+#include monotouch_System.ServiceModel.Internals.dll.sources
\ No newline at end of file
diff --git a/mcs/class/System.ServiceModel.Internals/xammac_System.ServiceModel.Internals.dll.sources b/mcs/class/System.ServiceModel.Internals/xammac_System.ServiceModel.Internals.dll.sources
new file mode 100644 (file)
index 0000000..12c950c
--- /dev/null
@@ -0,0 +1 @@
+#include monotouch_System.ServiceModel.Internals.dll.sources
\ No newline at end of file
diff --git a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing-net_4_5.csproj b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing-net_4_5.csproj
deleted file mode 100644 (file)
index 189f315..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6546230C-B2F4-4F79-8E57-6B4867997D77}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceModel.Routing</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\EndpointNameMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\StrictAndMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\BackupEndpointCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\BackupEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\BackupListCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\FilterElement.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\FilterElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\FilterTableCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\FilterTableEntryCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\FilterTableEntryElement.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\FilterType.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\NamespaceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\NamespaceElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\RoutingExtensionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\RoutingSection.cs" />\r
-    <Compile Include="System.ServiceModel.Routing.Configuration\SoapProcessingExtensionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Routing\IDuplexSessionRouter.cs" />\r
-    <Compile Include="System.ServiceModel.Routing\IRequestReplyRouter.cs" />\r
-    <Compile Include="System.ServiceModel.Routing\ISimplexDatagramRouter.cs" />\r
-    <Compile Include="System.ServiceModel.Routing\ISimplexSessionRouter.cs" />\r
-    <Compile Include="System.ServiceModel.Routing\RoutingBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Routing\RoutingConfiguration.cs" />\r
-    <Compile Include="System.ServiceModel.Routing\RoutingExtension.cs" />\r
-    <Compile Include="System.ServiceModel.Routing\RoutingService.cs" />\r
-    <Compile Include="System.ServiceModel.Routing\SoapProcessingBehavior.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
-      <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ChangeLog b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ChangeLog
deleted file mode 100644 (file)
index e0d70bd..0000000
+++ /dev/null
@@ -1,338 +0,0 @@
-2010-07-27  Andreia Gaita  <avidigal@novell.com>
-
-       * JsonSerializationReader.cs: Add Char type to the switch. Reads the
-         content as a string and validates its length
-
-2010-07-27  Andreia Gaita  <avidigal@novell.com>
-
-       * JsonSerializationReader.cs, JsonSerializationWriter.cs:
-         Add a special case for IDictionary, since KeyValuePair objects
-         have private setters and can't be processed via the normal
-         object code path.
-
-2010-07-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * TypeMap.cs :
-         Do not try to add static members as serialization targets.
-         Support OnDeserializing and OnDeserialized. Fixed bug #615800.
-
-2010-07-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonSerializationWriter.cs : it cannot serialize DateTime in
-         double, which causes crash in deserializer.
-
-2010-07-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * TypeMap.cs : when an object is null, return null, not just an 
-         uninitialized object.
-
-2010-07-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializer_2_1.cs : add extra methods for
-         Sys.SM.Web.Extensions build.
-
-2010-07-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonReader.cs : do not keep Attribute state once Read() is called.
-
-2010-04-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonSerializationReader.cs : use List<T> if the contract member
-         type is interface.
-
-2010-03-16  Jb Evain  <jbevain@novell.com>
-
-       * DataContractJsonSerializer.cs: use MOONLIGHT symbol to
-       disambiguate MonoTouch and Moonlight code.
-
-2010-03-13  Kornél Pál  <kornelpal@gmail.com>
-
-       * JavaScriptReader.cs: Deserialize "false" correctly.
-         Fixed bug #586712.
-
-2010-03-10  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JavaScriptReader.cs : moved from Sys.Json/JsonReader.cs.
-
-2010-03-10  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JavaScriptObjectDeserializer.cs : new internal file, which is
-         used by System.Json (for moonlight compatibility).
-
-2010-03-09  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonSerializationWriter.cs, JsonSerializationReader.cs,
-         JsonWriter.cs : Fix DateTime serialization and "\/" string escape
-         issues. Fixed bug #586169.
-
-2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonWriter.cs : write NaN, INF, -INF as JSON string, not JSON number.
-         Fixed bug #573691.
-
-2010-01-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializer.cs : KnownTypes does not include root
-         type. Fixed bug #573689.
-
-2010-01-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonSerializationReader.cs : oops, wrong fix, should consume the
-         reader.
-
-2010-01-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonSerializationReader.cs : "null" for string should be read as
-         null, not String.Empty. Fixed bug #573690.
-
-2010-01-26  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * DataContractJsonSerializer_2_1.cs: Don't hide [Field|Method]
-       AccessException inside a SerializationException but in a 
-       SecurityException.
-
-2010-01-25  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * DataContractJsonSerializer_2_1.cs: New. Simpler version for 
-       Moonlight since it does not inherit from the same base type nor
-       does it overrides any base methods.
-
-2010-01-08  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * TypeMap.cs : forward port r145077 (see change line for 2009-10-29).
-
-2009-12-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * TypeMap.cs : handle [Serializable] objects such as KeyValuePair<,>
-         like we do in 2.0. Removed previous workarounds. (Do not serialize
-         and deserialize nonpublic members in "default" mappings.)
-
-2009-12-11  Chris Toshok  <toshok@ximian.com>
-
-       * TypeMap.cs (CreateDefaultTypeMap): only include non-public
-       property info when dealing with KeyValuePair<,>.  This is *not*
-       the way MS handles it, but we emulate things much better with this
-       hack.
-
-2009-12-11  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonReader.cs : e- and e+ was resulting in wrong parse error.
-         This should fix part of bug #531904.
-
-2009-12-08  Chris Toshok  <toshok@ximian.com>
-
-       * JsonSerializationReader.cs (DeserializeGenericCollection): in
-       the 2.1 case we still need to convert the List<> to an array.
-
-2009-12-07  Chris Toshok  <toshok@ximian.com>
-
-       * JsonReaderWriterFactory.cs (CreateJsonReader): pass null for the
-       encoding parameter instead of calling Detect.  The jsonreader's
-       PushbackReader will autodetect.
-       (Detect): remove.  a BufferedStream created from an unseekable
-       stream is itself unseekable, which makes it just as useless.  This
-       breaks netflix's isostore file parsing.
-
-       * JsonReader.cs (PushbackReader): add a ctor which doesn't take an
-       encoding, for the autodetecting reader case.  for this ctor, pass
-       true to StreamReader's ctor for detectEncodingFromByteOrderMarks.
-
-2009-12-06  Chris Toshok  <toshok@ximian.com>
-
-       * JsonSerializationReader.cs (DeserializeGenericCollection): this
-       is jb's (iirc) patch, actually.  Types subclassing from
-       ICollection<T> need to be supported, and since it's an interface
-       the implementation might be explicit.  So instead of groveling
-       around in the actual type, we need to dispatch through the
-       interface's method.
-
-       * TypeMap.cs (CreateDefaultTypeMap): we need to include non-public
-       properties, since KeyValuePair items must be able to write to Key
-       and Value properties.
-
-       * JsonReader.cs (ReadContent): for builtin values (null, true,
-       false), use TryReadString instead of individual ReadChar's, since
-       they aren't reversible if the string didn't match.  In the default
-       case, if we're LameSilverlightLiseralParser, we need to push back
-       the current character onto the stream -- this is because for
-       netflix's AppConfig.json we were parsing "frameRatePolicy" as
-       "rameRatePolicy" (the 'f' was triggering the "false" parsing).
-       (class PushBackReader): add this class to unify all the pushing
-       back of characters we need to do.  1 character (JsonReader's old
-       "saved_char") isn't enough given that you could have a property
-       named, e.g., "falsifiable", and we'd need 4 characters worth of
-       pushback to recognize that correctly.
-
-2009-11-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializer.cs, JsonReader.cs : Silverlight uses
-         LAME parser that allows object member name as *raw* string
-         without double-quotes. (This also reverts the previous change.)
-
-2009-11-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       *  JsonSerializationReader.cs : reuse generic collection search
-         logic in KnownTypeCollection.cs. Fixed bug #551671.
-
-2009-10-30  Andreia Gaita  <avidigal@novell.com>
-
-       * DataContractJsonSerializer.cs: SL accepts keys without "", so tweak
-       the data to fix the quotes before passing it to the deserializer
-
-2009-10-29  Chris Toshok  <toshok@ximian.com>
-
-       * TypeMap.cs (Deserialize): use
-       FormatterServices.GetUninitializedObject instead of
-       Activator.CreateInstance, since we shouldn't be invoking the
-       default ctor.
-
-       (forward ported to trunk on 2010-01-08 by atsushi)
-
-2009-10-23  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializer.cs
-         TypeMap.cs
-         JsonSerializationReader.cs : add experimental monotouch build.
-
-2009-10-08  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializer.cs, JsonSerializationWriter.cs:
-         alwaysEmitTypeInformation is  false by default. It is for __type
-         attribute, not for type attribute. __type name is always with ":#".
-       * TypeMap.cs : sort members in default typemap (it is ordered).
-         Uncomment EmitDefaultValue.
-       * JsonWriter.cs : handle "null" string (it is somewhat messy).
-
-2009-10-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonReader.cs : copy string literal parser from System.Json.
-
-2009-09-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonSerializationWriter.cs : output "type" attribute on bool
-         values too.
-       * JsonSerializationReader.cs : type loading attempt was insufficient
-         and hence often missed indicated types to deserialize.
-
-2009-09-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonWriter.cs : use Stream as its output directly and avoid
-         extraneous preamble output. Fix interop with .NET.
-
-2009-09-07  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonReaderWriterFactory.cs : check null stream (fix test failure).
-
-2009-03-13  Andreia Gaita  <avidigal@novell.com>
-
-       * JsonReader.cs: fix depth calculation
-
-2009-03-12  Geoff Norton  <gnorton@novell.com>
-
-       * TypeMap.cs: Avoid checking the getter/setter information until after
-       checking if we have the required attribute decorated.
-
-2009-03-12  Andreia Gaita  <avidigal@novell.com>
-
-       * JsonReaderWriterFactory.cs: try to auto-detect encoding for streams
-       without BOM
-
-2009-03-02  Chris Toshok  <toshok@ximian.com>
-
-       * JsonReader.cs: 2.1 has HasValue.
-
-2009-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonReader.cs : show invalid input character in the error
-         message.
-
-2009-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * TypeMap.cs : in 2.1 do not use non-2.1 CreateInstance().
-
-2009-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * TypeMap.cs : allow get-only collections. Note that they are not
-         always deserializable (in .NET either).
-
-2009-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * TypeMap.cs : DataContractJsonSerializer in RTM does not seem to
-         reject contract-less types. So populate map for public members.
-       * DataContractJsonSerializer.cs : close XmlWriter to flush stream
-         (and it closes the stream by default).
-
-2009-02-02  Andreia Gaita  <avidigal@novell.com>
-
-       * JsonSerializationReader.cs : Use 2.1 "approved" calls for Enum.Parse
-    and Convert.ChangeType
-
-2008-02-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializer.cs : IsStartObject() could raise
-         an arbitrary exception, so wrap it inside try-catch too to enclose
-         with SerializationException.
-       * JsonSerializationReader.cs : support DBNull.
-
-2008-01-30  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializer.cs : fixed .ctor(type, knonwTypes) that
-         missed to delegate knownTypes correctly.
-       * JsonSerializationReader.cs : consider KnownTypes correctly.
-         Take "__type" fully into consideration, not just for arrays.
-
-2008-01-30  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonReader.cs : GetAttribute() was not still missing support for
-         __type.
-
-2008-01-30  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonReader.cs : now __type is fully supported in every methods and
-         properties in correct shape.
-
-2008-01-30  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonReader.cs : Do not consume "__type" (which is the first content
-         of an object) as an element content. It must be handled as an
-         attribute (it needs more changes).
-
-2008-01-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonSerializationReader.cs : when deserializing primitive strings,
-         make use of "type" attribute (they are supposed to exist).
-         Output source reader location if available.
-       * JsonReader.cs : implement IXmlLineInfo.
-
-2008-01-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonSerializationReader.cs : new, for JSON deserialization support.
-       * DataContractJsonSerializer.cs, TypeMap.cs :
-         basic support for deserialization.
-
-2008-01-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializer.cs,
-         TypeMap.cs,
-         JsonSerializationWriter.cs : split the first to those three files.
-
-2008-01-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializer.cs : Uri and Guid are serialized as
-         string. XmlQualifiedName is serialized as local:ns.
-
-2008-01-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonWriter.cs : allow __type attribute. It required couple of
-         changes all around the class.
-       * DataContractJsonSerializer.cs : implemented large part of
-         serialization support (deserialization is not done yet).
-
-2007-12-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializer.cs :
-         moved from System.Runtime.Serialization and changed the namespace.
-       * JsonReader.cs, JsonWriter.cs, JsonReaderWriterFactory.cs,
-         IXmlJsonReaderInitializer.cs, IXmlJsonWriterInitializer.cs :
-         moved from System.Xml and changed the namespace.
-
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/DataContractJsonSerializer.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/DataContractJsonSerializer.cs
deleted file mode 100644 (file)
index 8077136..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-//
-// DataContractJsonSerializer.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2007-2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Xml;
-
-namespace System.Runtime.Serialization.Json
-{
-       public sealed class DataContractJsonSerializer : XmlObjectSerializer
-       {
-               const string default_root_name = "root";
-
-               #region lengthy constructor list
-
-               public DataContractJsonSerializer (Type type)
-                       : this (type, Type.EmptyTypes)
-               {
-               }
-
-               public DataContractJsonSerializer (Type type, IEnumerable<Type> knownTypes)
-                       : this (type, default_root_name, knownTypes)
-               {
-               }
-
-               public DataContractJsonSerializer (Type type, string rootName)
-                       : this (type, rootName, Type.EmptyTypes)
-               {
-               }
-
-               public DataContractJsonSerializer (Type type, XmlDictionaryString rootName)
-                       : this (type, rootName != null ? rootName.Value : default_root_name, Type.EmptyTypes)
-               {
-               }
-
-               public DataContractJsonSerializer (Type type, string rootName, IEnumerable<Type> knownTypes)
-                       : this (type, rootName, knownTypes, int.MaxValue, false, false)
-               {
-               }
-
-               public DataContractJsonSerializer (Type type, XmlDictionaryString rootName, IEnumerable<Type> knownTypes)
-                       : this (type, rootName != null ? rootName.Value : default_root_name, knownTypes)
-               {
-               }
-
-               DataContractJsonSerializer(Type type, string rootName, IEnumerable<Type> knownTypes, int maxItemsInObjectGraph, bool ignoreExtensionDataObject, bool alwaysEmitTypeInformation)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       if (rootName == null)
-                               throw new ArgumentNullException ("rootName");
-                       if (maxItemsInObjectGraph < 0)
-                               throw new ArgumentOutOfRangeException ("maxItemsInObjectGraph");
-
-                       this.type = type;
-
-                       var knownTypesFromAttributes = new List<Type> ();
-
-                       foreach (var attr in type.GetCustomAttributes (typeof (KnownTypeAttribute), false))
-                               knownTypesFromAttributes.Add ((attr as KnownTypeAttribute).Type);
-
-                       if (knownTypes != null)
-                               knownTypesFromAttributes.AddRange (knownTypes);
-
-                       known_types = new ReadOnlyCollection<Type> (knownTypesFromAttributes);
-
-                       root = rootName;
-                       max_items = maxItemsInObjectGraph;
-                       ignore_extension = ignoreExtensionDataObject;
-                       always_emit_type = alwaysEmitTypeInformation;
-               }
-
-               public DataContractJsonSerializer (Type type, IEnumerable<Type> knownTypes, int maxItemsInObjectGraph, bool ignoreExtensionDataObject, IDataContractSurrogate dataContractSurrogate, bool alwaysEmitTypeInformation)
-            : this (type, default_root_name, knownTypes, maxItemsInObjectGraph, ignoreExtensionDataObject, alwaysEmitTypeInformation)
-               {
-       }
-
-               public DataContractJsonSerializer (Type type, string rootName, IEnumerable<Type> knownTypes, int maxItemsInObjectGraph, bool ignoreExtensionDataObject, IDataContractSurrogate dataContractSurrogate, bool alwaysEmitTypeInformation)
-                       : this (type, rootName, knownTypes, maxItemsInObjectGraph, ignoreExtensionDataObject, alwaysEmitTypeInformation)
-               {
-                       surrogate = dataContractSurrogate;
-               }
-
-               public DataContractJsonSerializer (Type type, XmlDictionaryString rootName, IEnumerable<Type> knownTypes, int maxItemsInObjectGraph, bool ignoreExtensionDataObject, IDataContractSurrogate dataContractSurrogate, bool alwaysEmitTypeInformation)
-                       : this (type, rootName != null ? rootName.Value : default_root_name, knownTypes, maxItemsInObjectGraph, ignoreExtensionDataObject, dataContractSurrogate, alwaysEmitTypeInformation)
-               {
-               }
-
-               public DataContractJsonSerializer (Type type, DataContractJsonSerializerSettings settings)
-                       : this (type, settings.RootName, settings.KnownTypes, settings.MaxItemsInObjectGraph, settings.IgnoreExtensionDataObject,
-                               settings.DataContractSurrogate, false)
-               {
-               }
-
-        #endregion
-
-        Type type;
-               string root;
-               ReadOnlyCollection<Type> known_types;
-               int max_items;
-               bool ignore_extension;
-               bool always_emit_type;
-               IDataContractSurrogate surrogate;
-
-               [MonoTODO]
-               public IDataContractSurrogate DataContractSurrogate {
-                       get { return surrogate; }
-               }
-
-               [MonoTODO]
-               public bool IgnoreExtensionDataObject {
-                       get { return ignore_extension; }
-               }
-               public ReadOnlyCollection<Type> KnownTypes {
-                       get { return known_types; }
-               }
-
-               public int MaxItemsInObjectGraph {
-                       get { return max_items; }
-               }
-
-               public override bool IsStartObject (XmlReader reader)
-               {
-                       if (reader == null)
-                               throw new ArgumentNullException ("reader");
-                       reader.MoveToContent ();
-                       return reader.IsStartElement (root, String.Empty);
-               }
-
-               public override bool IsStartObject (XmlDictionaryReader reader)
-               {
-                       return IsStartObject ((XmlReader) reader);
-               }
-
-               public override object ReadObject (Stream stream)
-               {
-#if NET_2_1
-                       var r = (JsonReader) JsonReaderWriterFactory.CreateJsonReader(stream, XmlDictionaryReaderQuotas.Max);
-                       r.LameSilverlightLiteralParser = true;
-                       return ReadObject(r);
-#else
-                       return ReadObject (JsonReaderWriterFactory.CreateJsonReader (stream, new XmlDictionaryReaderQuotas ()));
-#endif
-               }
-
-               public override object ReadObject (XmlDictionaryReader reader)
-               {
-                       return ReadObject (reader, true);
-               }
-
-               public override object ReadObject (XmlReader reader)
-               {
-                       return ReadObject (reader, true);
-               }
-
-               public override object ReadObject (XmlDictionaryReader reader, bool verifyObjectName)
-               {
-                       return ReadObject ((XmlReader) reader, verifyObjectName);
-               }
-
-               public override object ReadObject (XmlReader reader, bool verifyObjectName)
-               {
-                       if (reader == null)
-                               throw new ArgumentNullException ("reader");
-                       try {
-                               if (verifyObjectName && !IsStartObject (reader))
-                                       throw new SerializationException (String.Format ("Expected element was '{0}', but the actual input element was '{1}' in namespace '{2}'", root, reader.LocalName, reader.NamespaceURI));
-
-                               return new JsonSerializationReader (this, reader, type, verifyObjectName).ReadRoot ();
-                       } catch (SerializationException) {
-                               throw;
-                       } catch (InvalidDataContractException) {
-                               throw;
-                       } catch (System.Reflection.TargetInvocationException ex) {
-                               throw ex.InnerException;
-                       } catch (Exception ex) {
-                               throw new SerializationException ("Deserialization has failed", ex);
-                       }
-               }
-
-               public override void WriteObject (Stream stream, object graph)
-               {
-                       using (var xw = JsonReaderWriterFactory.CreateJsonWriter (stream))
-                               WriteObject (xw, graph);
-               }
-
-               public override void WriteObject (XmlWriter writer, object graph)
-               {
-                       try {
-                               WriteStartObject (writer, graph);
-                               WriteObjectContent (writer, graph);
-                               WriteEndObject (writer);
-                       } catch (NotImplementedException) {
-                               throw;
-                       } catch (InvalidDataContractException) {
-                               throw;
-                       } catch (Exception ex) {
-                               throw new SerializationException (String.Format ("There was an error during serialization for object of type {0}", graph != null ? graph.GetType () : null), ex);
-                       }
-               }
-
-               public override void WriteObject (XmlDictionaryWriter writer, object graph)
-               {
-                       WriteObject ((XmlWriter) writer, graph);
-               }
-
-               public override void WriteStartObject (XmlDictionaryWriter writer, object graph)
-               {
-                       WriteStartObject ((XmlWriter) writer, graph);
-               }
-
-               public override void WriteStartObject (XmlWriter writer, object graph)
-               {
-                       if (writer == null)
-                               throw new ArgumentNullException ("writer");
-                       writer.WriteStartElement (root);
-               }
-
-               public override void WriteObjectContent (XmlDictionaryWriter writer, object graph)
-               {
-                       WriteObjectContent ((XmlWriter) writer, graph);
-               }
-
-               public override void WriteObjectContent (XmlWriter writer, object graph)
-               {
-                       new JsonSerializationWriter (this, writer, type, always_emit_type).WriteObjectContent (graph, true, false);
-               }
-
-               public override void WriteEndObject (XmlDictionaryWriter writer)
-               {
-                       WriteEndObject ((XmlWriter) writer);
-               }
-
-               public override void WriteEndObject (XmlWriter writer)
-               {
-                       if (writer == null)
-                               throw new ArgumentNullException ("writer");
-                       writer.WriteEndElement ();
-               }
-
-               [MonoTODO]
-               public DateTimeFormat DateTimeFormat {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               public EmitTypeInformation EmitTypeInformation {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               public bool SerializeReadOnlyTypes {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               public bool UseSimpleDictionaryFormat {
-                       get { throw new NotImplementedException (); }
-               }
-
-       }
-}
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/DataContractJsonSerializerSettings.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/DataContractJsonSerializerSettings.cs
deleted file mode 100644 (file)
index 7e16d85..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// DataContractJsonSerializerSettings.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
-// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-using System;
-using System.Xml;
-using System.Collections.Generic;
-
-namespace System.Runtime.Serialization.Json
-{
-       public class DataContractJsonSerializerSettings
-       {
-               public IDataContractSurrogate DataContractSurrogate { get; set; }
-               public DateTimeFormat DateTimeFormat { get; set; }
-               public EmitTypeInformation EmitTypeInformation { get; set; }
-               public bool IgnoreExtensionDataObject { get; set; }
-               public IEnumerable<Type> KnownTypes { get; set; }
-               public int MaxItemsInObjectGraph { get; set; }
-               public string RootName { get; set; }
-               public bool SerializeReadOnlyTypes { get; set; }
-               public bool UseSimpleDictionaryFormat { get; set; }
-       }
-}
-
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/IXmlJsonReaderInitializer.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/IXmlJsonReaderInitializer.cs
deleted file mode 100644 (file)
index 34df219..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// IXmlJsonReaderInitializer.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Text;
-using System.Xml;
-
-namespace System.Runtime.Serialization.Json
-{
-       public interface IXmlJsonReaderInitializer
-       {
-               void SetInput (byte [] buffer, int offset, int count, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose);
-
-               void SetInput (Stream stream, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose);
-       }
-}
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/IXmlJsonWriterInitializer.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/IXmlJsonWriterInitializer.cs
deleted file mode 100644 (file)
index f337c85..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// IXmlJsonWriterInitializer.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Text;
-using System.Xml;
-
-namespace System.Runtime.Serialization.Json
-{
-       public interface IXmlJsonWriterInitializer
-       {
-               void SetOutput (Stream stream, Encoding encoding, bool ownsStream);
-       }
-}
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReader.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReader.cs
deleted file mode 100644 (file)
index a5cff6d..0000000
+++ /dev/null
@@ -1,1099 +0,0 @@
-//
-// JsonReader.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2007-2011 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Text;
-using System.Xml;
-
-namespace System.Runtime.Serialization.Json
-{
-       // It is a subset of XmlInputStream from System.XML.
-       class EncodingDetecingInputStream : Stream
-       {
-               internal static readonly Encoding StrictUTF8, Strict1234UTF32, StrictBigEndianUTF16, StrictUTF16;
-
-               static EncodingDetecingInputStream ()
-               {
-                       StrictUTF8 = new UTF8Encoding (false, true);
-                       Strict1234UTF32 = new UTF32Encoding (true, false, true);
-                       StrictBigEndianUTF16 = new UnicodeEncoding (true, false, true);
-                       StrictUTF16 = new UnicodeEncoding (false, false, true);
-               }
-
-               Encoding enc;
-               Stream stream;
-               byte[] buffer;
-               int bufLength;
-               int bufPos;
-
-               static XmlException encodingException = new XmlException ("invalid encoding specification.");
-
-               public EncodingDetecingInputStream (Stream stream)
-               {
-                       if (stream == null)
-                               throw new ArgumentNullException ("stream");
-                       Initialize (stream);
-               }
-
-               private void Initialize (Stream stream)
-               {
-                       buffer = new byte [6];
-                       this.stream = stream;
-                       enc = StrictUTF8; // Default to UTF8 if we can't guess it
-                       bufLength = stream.Read (buffer, 0, buffer.Length);
-                       if (bufLength == -1 || bufLength == 0) {
-                               return;
-                       }
-
-                       int c = ReadByteSpecial ();
-                       switch (c) {
-                       case 0xFF:
-                               c = ReadByteSpecial ();
-                               if (c == 0xFE) {
-                                       // BOM-ed little endian utf-16
-                                       enc = Encoding.Unicode;
-                               } else {
-                                       // It doesn't start from "<?xml" then its encoding is utf-8
-                                       bufPos = 0;
-                               }
-                               break;
-                       case 0xFE:
-                               c = ReadByteSpecial ();
-                               if (c == 0xFF) {
-                                       // BOM-ed big endian utf-16
-                                       enc = Encoding.BigEndianUnicode;
-                                       return;
-                               } else {
-                                       // It doesn't start from "<?xml" then its encoding is utf-8
-                                       bufPos = 0;
-                               }
-                               break;
-                       case 0xEF:
-                               c = ReadByteSpecial ();
-                               if (c == 0xBB) {
-                                       c = ReadByteSpecial ();
-                                       if (c != 0xBF) {
-                                               bufPos = 0;
-                                       }
-                               } else {
-                                       buffer [--bufPos] = 0xEF;
-                               }
-                               break;
-                       case 0:
-                               // It could still be 1234/2143/3412 variants of UTF32, but only 1234 version is available on .NET.
-                               c = ReadByteSpecial ();
-                               if (c == 0)
-                                       enc = Strict1234UTF32;
-                               else
-                                       enc = StrictBigEndianUTF16;
-                               break;
-                       default:
-                               c = ReadByteSpecial ();
-                               if (c == 0)
-                                       enc = StrictUTF16;
-                               bufPos = 0;
-                               break;
-                       }
-               }
-
-               // Just like readbyte, but grows the buffer too.
-               int ReadByteSpecial ()
-               {
-                       if (bufLength > bufPos)
-                               return buffer [bufPos++];
-
-                       byte [] newbuf = new byte [buffer.Length * 2];
-                       Buffer.BlockCopy (buffer, 0, newbuf, 0, bufLength);
-                       int nbytes = stream.Read (newbuf, bufLength, buffer.Length);
-                       if (nbytes == -1 || nbytes == 0)
-                               return -1;
-                               
-                       bufLength += nbytes;
-                       buffer = newbuf;
-                       return buffer [bufPos++];
-               }
-
-               public Encoding ActualEncoding {
-                       get { return enc; }
-               }
-
-               #region Public Overrides
-               public override bool CanRead {
-                       get {
-                               if (bufLength > bufPos)
-                                       return true;
-                               else
-                                       return stream.CanRead; 
-                       }
-               }
-
-               // FIXME: It should support base stream's CanSeek.
-               public override bool CanSeek {
-                       get { return false; } // stream.CanSeek; }
-               }
-
-               public override bool CanWrite {
-                       get { return false; }
-               }
-
-               public override long Length {
-                       get {
-                               return stream.Length;
-                       }
-               }
-
-               public override long Position {
-                       get {
-                               return stream.Position - bufLength + bufPos;
-                       }
-                       set {
-                               if(value < bufLength)
-                                       bufPos = (int)value;
-                               else
-                                       stream.Position = value - bufLength;
-                       }
-               }
-
-               public override void Close ()
-               {
-                       stream.Close ();
-               }
-
-               public override void Flush ()
-               {
-                       stream.Flush ();
-               }
-
-               public override int Read (byte[] buffer, int offset, int count)
-               {
-                       int ret;
-                       if (count <= bufLength - bufPos)        {       // all from buffer
-                               Buffer.BlockCopy (this.buffer, bufPos, buffer, offset, count);
-                               bufPos += count;
-                               ret = count;
-                       } else {
-                               int bufRest = bufLength - bufPos;
-                               if (bufLength > bufPos) {
-                                       Buffer.BlockCopy (this.buffer, bufPos, buffer, offset, bufRest);
-                                       bufPos += bufRest;
-                               }
-                               ret = bufRest +
-                                       stream.Read (buffer, offset + bufRest, count - bufRest);
-                       }
-                       return ret;
-               }
-
-               public override int ReadByte ()
-               {
-                       if (bufLength > bufPos) {
-                               return buffer [bufPos++];
-                       }
-                       return stream.ReadByte ();
-               }
-
-               public override long Seek (long offset, System.IO.SeekOrigin origin)
-               {
-                       int bufRest = bufLength - bufPos;
-                       if (origin == SeekOrigin.Current)
-                               if (offset < bufRest)
-                                       return buffer [bufPos + offset];
-                               else
-                                       return stream.Seek (offset - bufRest, origin);
-                       else
-                               return stream.Seek (offset, origin);
-               }
-
-               public override void SetLength (long value)
-               {
-                       stream.SetLength (value);
-               }
-
-               public override void Write (byte[] buffer, int offset, int count)
-               {
-                       throw new NotSupportedException ();
-               }
-               #endregion
-       }
-
-       class PushbackReader : StreamReader
-       {
-               Stack<int> pushback;
-
-               public PushbackReader (Stream stream, Encoding encoding) : base (stream, encoding)
-               {
-                       pushback = new Stack<int>();
-               }
-
-               public PushbackReader (Stream stream) : this (new EncodingDetecingInputStream (stream))
-               {
-               }
-
-               public PushbackReader (EncodingDetecingInputStream stream) : this (stream, stream.ActualEncoding)
-               {
-               }
-
-               public override void Close ()
-               {
-                       pushback.Clear ();
-               }
-
-               public override int Peek ()
-               {
-                       if (pushback.Count > 0) {
-                               return pushback.Peek ();
-                       }
-                       else {
-                               return base.Peek ();
-                       }
-               }
-
-               public override int Read ()
-               {
-                       if (pushback.Count > 0) {
-                               return pushback.Pop ();
-                       }
-                       else {
-                               return base.Read ();
-                       }
-               }
-
-               public void Pushback (int ch)
-               {
-                       pushback.Push (ch);
-               }
-       }
-
-       // FIXME: quotas check
-       class JsonReader : XmlDictionaryReader, IXmlJsonReaderInitializer, IXmlLineInfo
-       {
-               class ElementInfo
-               {
-                       public readonly string Name;
-                       public readonly string Type;
-                       public bool HasContent;
-
-                       public ElementInfo (string name, string type)
-                       {
-                               this.Name = name;
-                               this.Type = type;
-                       }
-               }
-
-               enum AttributeState
-               {
-                       None,
-                       Type,
-                       TypeValue,
-                       RuntimeType,
-                       RuntimeTypeValue
-               }
-
-               PushbackReader reader;
-               XmlDictionaryReaderQuotas quotas;
-               OnXmlDictionaryReaderClose on_close;
-               XmlNameTable name_table = new NameTable ();
-
-               XmlNodeType current_node;
-               AttributeState attr_state;
-               string simple_value;
-               string next_element;
-               string current_runtime_type, next_object_content_name;
-               ReadState read_state = ReadState.Initial;
-               bool content_stored;
-               bool finished;
-               Stack<ElementInfo> elements = new Stack<ElementInfo> ();
-
-               int line = 1, column = 0;
-
-               // Constructors
-
-               public JsonReader (byte [] buffer, int offset, int count, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose)
-               {
-                       SetInput (buffer, offset, count, encoding, quotas, onClose);
-               }
-
-               public JsonReader (Stream stream, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose)
-               {
-                       SetInput (stream, encoding, quotas, onClose);
-               }
-
-               internal bool LameSilverlightLiteralParser { get; set; }
-
-               // IXmlLineInfo
-
-               public bool HasLineInfo ()
-               {
-                       return true;
-               }
-
-               public int LineNumber {
-                       get { return line; }
-               }
-
-               public int LinePosition {
-                       get { return column; }
-               }
-
-               // IXmlJsonReaderInitializer
-
-               public void SetInput (byte [] buffer, int offset, int count, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose)
-               {
-                       SetInput (new MemoryStream (buffer, offset, count), encoding, quotas, onClose);
-               }
-
-               public void SetInput (Stream stream, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose)
-               {
-                       if (encoding != null)
-                               reader = new PushbackReader (stream, encoding);
-                       else
-                               reader = new PushbackReader (stream);
-                       if (quotas == null)
-                               throw new ArgumentNullException ("quotas");
-                       this.quotas = quotas;
-                       this.on_close = onClose;
-               }
-
-               // XmlDictionaryReader
-
-               public override int AttributeCount {
-                       get { return current_node != XmlNodeType.Element ? 0 : current_runtime_type != null ? 2 : 1; }
-               }
-
-               public override string BaseURI {
-                       get { return String.Empty; }
-               }
-
-               public override int Depth {
-                       get {
-                               int mod = 0;
-                               switch (attr_state) {
-                               case AttributeState.Type:
-                               case AttributeState.RuntimeType:
-                                       mod++;
-                                       break;
-                               case AttributeState.TypeValue:
-                               case AttributeState.RuntimeTypeValue:
-                                       mod += 2;
-                                       break;
-                               case AttributeState.None:
-                                       if (NodeType == XmlNodeType.Text)
-                                               mod++;
-                                       break;
-                               }
-                               return read_state != ReadState.Interactive ? 0 : elements.Count - 1 + mod;
-                       }
-               }
-
-               public override bool EOF {
-                       get {
-                               switch (read_state) {
-                               case ReadState.Closed:
-                               case ReadState.EndOfFile:
-                                       return true;
-                               default:
-                                       return false;
-                               }
-                       }
-               }
-
-               public override bool HasValue {
-                       get {
-                               switch (NodeType) {
-                               case XmlNodeType.Attribute:
-                               case XmlNodeType.Text:
-                                       return true;
-                               default:
-                                       return false;
-                               }
-                       }
-               }
-
-               public override bool IsEmptyElement {
-                       get { return false; }
-               }
-
-               public override string LocalName {
-                       get {
-                               switch (attr_state) {
-                               case AttributeState.Type:
-                                       return "type";
-                               case AttributeState.RuntimeType:
-                                       return "__type";
-                               }
-                               switch (NodeType) {
-                               case XmlNodeType.Element:
-                               case XmlNodeType.EndElement:
-                                       return elements.Peek ().Name;
-                               default:
-                                       return String.Empty;
-                               }
-                       }
-               }
-
-               public override string NamespaceURI {
-                       get { return String.Empty; }
-               }
-
-               public override XmlNameTable NameTable {
-                       get { return name_table; }
-               }
-
-               public override XmlNodeType NodeType {
-                       get {
-                               switch (attr_state) {
-                               case AttributeState.Type:
-                               case AttributeState.RuntimeType:
-                                       return XmlNodeType.Attribute;
-                               case AttributeState.TypeValue:
-                               case AttributeState.RuntimeTypeValue:
-                                       return XmlNodeType.Text;
-                               default:
-                                       return current_node;
-                               }
-                       }
-               }
-
-               public override string Prefix {
-                       get { return String.Empty; }
-               }
-
-               public override ReadState ReadState {
-                       get { return read_state; }
-               }
-
-               public override string Value {
-                       get {
-                               switch (attr_state) {
-                               case AttributeState.Type:
-                               case AttributeState.TypeValue:
-                                       return elements.Peek ().Type;
-                               case AttributeState.RuntimeType:
-                               case AttributeState.RuntimeTypeValue:
-                                       return current_runtime_type;
-                               default:
-                                       return current_node == XmlNodeType.Text ? simple_value : String.Empty;
-                               }
-                       }
-               }
-
-               public override void Close ()
-               {
-                       if (on_close != null) {
-                               on_close (this);
-                               on_close = null;
-                       }
-                       read_state = ReadState.Closed;
-               }
-
-               public override string GetAttribute (int index)
-               {
-                       if (index == 0 && current_node == XmlNodeType.Element)
-                               return elements.Peek ().Type;
-                       else if (index == 1 && current_runtime_type != null)
-                               return current_runtime_type;
-                       throw new ArgumentOutOfRangeException ("index", "Index is must be either 0 or 1 when there is an explicit __type in the object, and only valid on an element on this XmlDictionaryReader");
-               }
-
-               public override string GetAttribute (string name)
-               {
-                       if (current_node != XmlNodeType.Element)
-                               return null;
-                       switch (name) {
-                       case "type":
-                               return elements.Peek ().Type;
-                       case "__type":
-                               return current_runtime_type;
-                       default:
-                               return null;
-                       }
-               }
-
-               public override string GetAttribute (string localName, string ns)
-               {
-                       if (ns == String.Empty)
-                               return GetAttribute (localName);
-                       else
-                               return null;
-               }
-
-               public override string LookupNamespace (string prefix)
-               {
-                       if (prefix == null)
-                               throw new ArgumentNullException ("prefix");
-                       else if (prefix.Length == 0)
-                               return String.Empty;
-                       return null;
-               }
-
-               public override bool MoveToAttribute (string name)
-               {
-                       if (current_node != XmlNodeType.Element)
-                               return false;
-                       switch (name) {
-                       case "type":
-                               attr_state = AttributeState.Type;
-                               return true;
-                       case "__type":
-                               if (current_runtime_type == null)
-                                       return false;
-                               attr_state = AttributeState.RuntimeType;
-                               return true;
-                       default:
-                               return false;
-                       }
-               }
-
-               public override bool MoveToAttribute (string localName, string ns)
-               {
-                       if (ns != String.Empty)
-                               return false;
-                       return MoveToAttribute (localName);
-               }
-
-               public override bool MoveToElement ()
-               {
-                       if (attr_state == AttributeState.None)
-                               return false;
-                       attr_state = AttributeState.None;
-                       return true;
-               }
-
-               public override bool MoveToFirstAttribute ()
-               {
-                       if (current_node != XmlNodeType.Element)
-                               return false;
-                       attr_state = AttributeState.Type;
-                       return true;
-               }
-
-               public override bool MoveToNextAttribute ()
-               {
-                       if (attr_state == AttributeState.None)
-                               return MoveToFirstAttribute ();
-                       else
-                               return MoveToAttribute ("__type");
-               }
-
-               public override bool ReadAttributeValue ()
-               {
-                       switch (attr_state) {
-                       case AttributeState.Type:
-                               attr_state = AttributeState.TypeValue;
-                               return true;
-                       case AttributeState.RuntimeType:
-                               attr_state = AttributeState.RuntimeTypeValue;
-                               return true;
-                       }
-                       return false;
-               }
-
-               public override void ResolveEntity ()
-               {
-                       throw new NotSupportedException ();
-               }
-
-               public override bool Read ()
-               {
-                       switch (read_state) {
-                       case ReadState.EndOfFile:
-                       case ReadState.Closed:
-                       case ReadState.Error:
-                               return false;
-                       case ReadState.Initial:
-                               read_state = ReadState.Interactive;
-                               next_element = "root";
-                               current_node = XmlNodeType.Element;
-                               break;
-                       }
-
-                       MoveToElement ();
-
-                       if (content_stored) {
-                               if (current_node == XmlNodeType.Element) {
-                                       if (elements.Peek ().Type == "null") {
-                                               // since null is not consumed as text content, it skips Text state.
-                                               current_node = XmlNodeType.EndElement;
-                                               content_stored = false;
-                                       }
-                                       else
-                                               current_node = XmlNodeType.Text;
-                                       return true;
-                               } else if (current_node == XmlNodeType.Text) {
-                                       current_node = XmlNodeType.EndElement;
-                                       content_stored = false;
-                                       return true;
-                               }
-                       }
-                       else if (current_node == XmlNodeType.EndElement) {
-                               // clear EndElement state
-                               elements.Pop ();
-                               if (elements.Count > 0)
-                                       elements.Peek ().HasContent = true;
-                               else
-                                       finished = true;
-                       }
-
-                       SkipWhitespaces ();
-
-                       attr_state = AttributeState.None;
-                       // Default. May be overriden only as EndElement or None.
-                       current_node = XmlNodeType.Element;
-
-                       if (!ReadContent (false))
-                               return false;
-                       if (finished)
-                               throw XmlError ("Multiple top-level content is not allowed");
-                       return true;
-               }
-
-               bool TryReadString (string str)
-               {
-                       for (int i = 0; i < str.Length; i ++) {
-                               int ch = ReadChar ();
-                               if (ch != str[i]) {
-                                       for (int j = i; j >= 0; j--)
-                                               PushbackChar (j);
-                                       return false;
-                               }
-                       }
-
-                       return true;
-               }
-
-               bool ReadContent (bool objectValue)
-               {
-                       int ch = ReadChar ();
-                       if (ch < 0) {
-                               ReadEndOfStream ();
-                               return false;
-                       }
-
-                       bool itemMustFollow = false;
-
-                       if (!objectValue && elements.Count > 0 && elements.Peek ().HasContent) {
-                               if (ch == ',') {
-                                       switch (elements.Peek ().Type) {
-                                       case "object":
-                                       case "array":
-                                               SkipWhitespaces ();
-                                               ch = ReadChar ();
-                                               itemMustFollow = true;
-                                               break;
-                                       }
-                               }
-                               else if (ch != '}' && ch != ']')
-                                       throw XmlError ("Comma is required unless an array or object is at the end");
-                       }
-
-                       if (elements.Count > 0 && elements.Peek ().Type == "array")
-                               next_element = "item";
-                       else if (next_object_content_name != null) {
-                               next_element = next_object_content_name;
-                               next_object_content_name = null;
-                               if (ch != ':')
-                                       throw XmlError ("':' is expected after a name of an object content");
-                               SkipWhitespaces ();
-                               ReadContent (true);
-                               return true;
-                       }
-
-                       switch (ch) {
-                       case '{':
-                               ReadStartObject ();
-                               return true;
-                       case '[':
-                               ReadStartArray ();
-                               return true;
-                       case '}':
-                               if (itemMustFollow)
-                                       throw XmlError ("Invalid comma before an end of object");
-                               if (objectValue)
-                                       throw XmlError ("Invalid end of object as an object content");
-                               ReadEndObject ();
-                               return true;
-                       case ']':
-                               if (itemMustFollow)
-                                       throw XmlError ("Invalid comma before an end of array");
-                               if (objectValue)
-                                       throw XmlError ("Invalid end of array as an object content");
-                               ReadEndArray ();
-                               return true;
-                       case '"':
-                               bool lame = LameSilverlightLiteralParser && ch != '"';
-                               string s = ReadStringLiteral (lame);
-                               if (!objectValue && elements.Count > 0 && elements.Peek ().Type == "object") {
-                                       next_element = s;
-                                       SkipWhitespaces ();
-                                       if (!lame)
-                                               Expect (':');
-                                       SkipWhitespaces ();
-                                       ReadContent (true);
-                               }
-                               else
-                                       ReadAsSimpleContent ("string", s);
-                               return true;
-                       case '-':
-                               ReadNumber (ch);
-                               return true;
-                       case 'n':
-                               if (TryReadString("ull")) {
-                                       ReadAsSimpleContent ("null", "null");
-                                       return true;
-                               }
-                               else {
-                                       // the pushback for 'n' is taken care of by the
-                                       // default case if we're in lame silverlight literal
-                                       // mode
-                                       goto default;
-                               }
-                       case 't':
-                               if (TryReadString ("rue")) {
-                                       ReadAsSimpleContent ("boolean", "true");
-                                       return true;
-                               }
-                               else {
-                                       // the pushback for 't' is taken care of by the
-                                       // default case if we're in lame silverlight literal
-                                       // mode
-                                       goto default;
-                               }
-                       case 'f':
-                               if (TryReadString ("alse")) {
-                                       ReadAsSimpleContent ("boolean", "false");
-                                       return true;
-                               }
-                               else {
-                                       // the pushback for 'f' is taken care of by the
-                                       // default case if we're in lame silverlight literal
-                                       // mode
-                                       goto default;
-                               }
-                       default:
-                               if ('0' <= ch && ch <= '9') {
-                                       ReadNumber (ch);
-                                       return true;
-                               }
-                               if (LameSilverlightLiteralParser) {
-                                       PushbackChar (ch);
-                                       goto case '"';
-                               }
-                               throw XmlError (String.Format ("Unexpected token: '{0}' ({1:X04})", (char) ch, (int) ch));
-                       }
-               }
-
-               void ReadStartObject ()
-               {
-                       ElementInfo ei = new ElementInfo (next_element, "object");
-                       elements.Push (ei);
-
-                       SkipWhitespaces ();
-                       if (PeekChar () == '"') { // it isn't premise: the object might be empty
-                               ReadChar ();
-                               string s = ReadStringLiteral ();
-                               if (s == "__type") {
-                                       SkipWhitespaces ();
-                                       Expect (':');
-                                       SkipWhitespaces ();
-                                       Expect ('"');
-                                       current_runtime_type = ReadStringLiteral ();
-                                       SkipWhitespaces ();
-                                       ei.HasContent = true;
-                               }
-                               else
-                                       next_object_content_name = s;
-                       }
-               }
-
-               void ReadStartArray ()
-               {
-                       elements.Push (new ElementInfo (next_element, "array"));
-               }
-
-               void ReadEndObject ()
-               {
-                       if (elements.Count == 0 || elements.Peek ().Type != "object")
-                               throw XmlError ("Unexpected end of object");
-                       current_node = XmlNodeType.EndElement;
-               }
-
-               void ReadEndArray ()
-               {
-                       if (elements.Count == 0 || elements.Peek ().Type != "array")
-                               throw XmlError ("Unexpected end of array");
-                       current_node = XmlNodeType.EndElement;
-               }
-
-               void ReadEndOfStream ()
-               {
-                       if (elements.Count > 0)
-                               throw XmlError (String.Format ("{0} missing end of arrays or objects", elements.Count));
-                       read_state = ReadState.EndOfFile;
-                       current_node = XmlNodeType.None;
-               }
-
-               void ReadAsSimpleContent (string type, string value)
-               {
-                       elements.Push (new ElementInfo (next_element, type));
-                       simple_value = value;
-                       content_stored = true;
-               }
-
-               void ReadNumber (int ch)
-               {
-                       elements.Push (new ElementInfo (next_element, "number"));
-                       content_stored = true;
-
-                       int init = ch;
-                       int prev;
-                       bool floating = false, exp = false;
-
-                       StringBuilder sb = new StringBuilder ();
-                       bool cont = true;
-                       do {
-                               sb.Append ((char) ch);
-                               prev = ch;
-                               ch = ReadChar ();
-
-                               if (prev == '-' && !IsNumber (ch)) // neither '.', '-' or '+' nor anything else is valid
-                                       throw XmlError ("Invalid JSON number");
-
-                               switch (ch) {
-                               case 'e':
-                               case 'E':
-                                       if (exp)
-                                               throw XmlError ("Invalid JSON number token. Either 'E' or 'e' must not occur more than once");
-                                       if (!IsNumber (prev))
-                                               throw XmlError ("Invalid JSON number token. only a number is valid before 'E' or 'e'");
-                                       exp = true;
-                                       break;
-                               case '.':
-                                       if (floating)
-                                               throw XmlError ("Invalid JSON number token. '.' must not occur twice");
-                                       if (exp)
-                                               throw XmlError ("Invalid JSON number token. '.' must not occur after 'E' or 'e'");
-                                       floating = true;
-                                       break;
-                               case '+':
-                               case '-':
-                                       if (prev == 'E' || prev == 'e')
-                                               break;
-                                       goto default;
-                               default:
-                                       if (!IsNumber (ch)) {
-                                               PushbackChar (ch);
-                                               cont = false;
-                                       }
-                                       break;
-                               }
-                       } while (cont);
-
-                       if (!IsNumber (prev)) // only number is valid at the end
-                               throw XmlError ("Invalid JSON number");
-
-                       simple_value = sb.ToString ();
-
-                       if (init == '0' && !floating && !exp && simple_value != "0")
-                               throw XmlError ("Invalid JSON number");
-               }
-
-               bool IsNumber (int c)
-               {
-                       return '0' <= c && c <= '9';
-               }
-
-               StringBuilder vb = new StringBuilder ();
-
-               string ReadStringLiteral ()
-               {
-                       return ReadStringLiteral (false);
-               }
-
-               string ReadStringLiteral (bool endWithColon)
-               {
-                       vb.Length = 0;
-                       while (true) {
-                               int c = ReadChar ();
-                               if (c < 0)
-                                       throw XmlError ("JSON string is not closed");
-                               if (c == '"' && !endWithColon)
-                                       return vb.ToString ();
-                               else if (c == ':' && endWithColon)
-                                       return vb.ToString ();
-                               else if (c != '\\') {
-                                       vb.Append ((char) c);
-                                       continue;
-                               }
-
-                               // escaped expression
-                               c = ReadChar ();
-                               if (c < 0)
-                                       throw XmlError ("Invalid JSON string literal; incomplete escape sequence");
-                               switch (c) {
-                               case '"':
-                               case '\\':
-                               case '/':
-                                       vb.Append ((char) c);
-                                       break;
-                               case 'b':
-                                       vb.Append ('\x8');
-                                       break;
-                               case 'f':
-                                       vb.Append ('\f');
-                                       break;
-                               case 'n':
-                                       vb.Append ('\n');
-                                       break;
-                               case 'r':
-                                       vb.Append ('\r');
-                                       break;
-                               case 't':
-                                       vb.Append ('\t');
-                                       break;
-                               case 'u':
-                                       ushort cp = 0;
-                                       for (int i = 0; i < 4; i++) {
-                                               if ((c = ReadChar ()) < 0)
-                                                       throw XmlError ("Incomplete unicode character escape literal");
-                                               cp *= 16;
-                                               if ('0' <= c && c <= '9')
-                                                       cp += (ushort) (c - '0');
-                                               if ('A' <= c && c <= 'F')
-                                                       cp += (ushort) (c - 'A' + 10);
-                                               if ('a' <= c && c <= 'f')
-                                                       cp += (ushort) (c - 'a' + 10);
-                                       }
-                                       vb.Append ((char) cp);
-                                       break;
-                               default:
-                                       throw XmlError ("Invalid JSON string literal; unexpected escape character");
-                               }
-                       }
-               }
-
-               int PeekChar ()
-               {
-                       return reader.Peek ();
-               }
-
-               int ReadChar ()
-               {
-                       int v = reader.Read ();
-                       if (v == '\n') {
-                               line++;
-                               column = 0;
-                       }
-                       else
-                               column++;
-                       return v;
-               }
-
-               void PushbackChar (int ch)
-               {
-                       // FIXME handle lines (and columns?  ugh, how?)
-                       reader.Pushback (ch);
-               }
-
-               void SkipWhitespaces ()
-               {
-                       do {
-                               switch (PeekChar ()) {
-                               case ' ':
-                               case '\t':
-                               case '\r':
-                               case '\n':
-                                       ReadChar ();
-                                       continue;
-                               default:
-                                       return;
-                               }
-                       } while (true);
-               }
-
-               void Expect (char c)
-               {
-                       int v = ReadChar ();
-                       if (v < 0)
-                               throw XmlError (String.Format ("Expected '{0}' but got EOF", c));
-                       if (v != c)
-                               throw XmlError (String.Format ("Expected '{0}' but got '{1}'", c, (char) v));
-               }
-
-               Exception XmlError (string s)
-               {
-                       return new XmlException (String.Format ("{0} ({1},{2})", s, line, column));
-               }
-
-               // This reads the current element and all its content as a string,
-               // with no processing done except for advancing the reader.
-               public override string ReadInnerXml ()
-               {
-
-                       if (NodeType != XmlNodeType.Element)
-                               return base.ReadInnerXml ();
-
-                       StringBuilder sb = new StringBuilder ();
-                       bool isobject = elements.Peek ().Type == "object";
-                       char end = isobject ? '}' : ']';
-                       char start = isobject ? '{' : '[';
-                       int count = 1;
-
-                       sb.Append (start);
-
-                       // add the first child manually, it's already been read
-                       // but hasn't been processed yet
-                       if (isobject && !String.IsNullOrEmpty (next_object_content_name))
-                                       sb.Append ("\"" + next_object_content_name + "\"");
-
-                       // keep reading until we hit the end marker, no processing is
-                       // done on anything
-                       do {
-                               char c = (char)ReadChar ();
-                               sb.Append (c);
-                               if (c == start)
-                                       ++count;
-                               else if (c == end)
-                                       --count;
-                       } while (count > 0);
-
-                       // Replace the content we've read with an empty object so it gets
-                       // skipped on the following Read
-                       reader.Pushback (end);
-                       if (isobject) {
-                               reader.Pushback ('"');
-                               reader.Pushback ('"');
-                               reader.Pushback (':');
-                       }
-
-                       // Skip the element
-                       Read ();
-                       return sb.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReaderWriterFactory.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReaderWriterFactory.cs
deleted file mode 100644 (file)
index 804eeeb..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// JsonReaderWriterFactory.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-using System.Text;
-using System.Xml;
-
-namespace System.Runtime.Serialization.Json
-{
-       public static class JsonReaderWriterFactory
-       {
-               public static XmlDictionaryReader CreateJsonReader (byte [] buffer, XmlDictionaryReaderQuotas quotas)
-               {
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
-                       return CreateJsonReader (buffer, 0, buffer.Length, quotas);
-               }
-
-               public static XmlDictionaryReader CreateJsonReader (byte [] buffer, int offset, int count, XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateJsonReader (buffer, offset, count, null, quotas, null);
-               }
-
-               public static XmlDictionaryReader CreateJsonReader (byte [] buffer, int offset, int count, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose)
-               {
-                       return new JsonReader (buffer, offset, count, encoding, quotas, onClose);
-               }
-
-               public static XmlDictionaryReader CreateJsonReader (Stream stream, XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateJsonReader (stream, null, quotas, null);
-               }
-
-               public static XmlDictionaryReader CreateJsonReader (Stream stream, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose)
-               {
-                       return new JsonReader (stream, encoding, quotas, onClose);
-               }
-
-               public static XmlDictionaryWriter CreateJsonWriter (Stream stream)
-               {
-                       return CreateJsonWriter (stream, new UTF8Encoding (false, true));
-               }
-
-               public static XmlDictionaryWriter CreateJsonWriter (Stream stream, Encoding encoding)
-               {
-                       return CreateJsonWriter (stream, encoding, false);
-               }
-
-               public static XmlDictionaryWriter CreateJsonWriter (Stream stream, Encoding encoding, bool ownsStream)
-               {
-                       return new JsonWriter (stream, encoding, ownsStream);
-               }
-       }
-}
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationReader.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationReader.cs
deleted file mode 100644 (file)
index 597a5c3..0000000
+++ /dev/null
@@ -1,421 +0,0 @@
-//
-// JsonSerializationReader.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Xml;
-
-namespace System.Runtime.Serialization.Json
-{
-       class JsonSerializationReader
-       {
-               DataContractJsonSerializer serializer;
-               XmlReader reader;
-               int serialized_object_count;
-               bool verify_object_name;
-               Dictionary<Type, TypeMap> typemaps = new Dictionary<Type, TypeMap> ();
-               Type root_type;
-
-               public JsonSerializationReader (DataContractJsonSerializer serializer, XmlReader reader, Type rootType, bool verifyObjectName)
-               {
-                       this.serializer = serializer;
-                       this.reader = reader;
-                       this.root_type = rootType;
-                       this.verify_object_name = verifyObjectName;
-               }
-
-               public XmlReader Reader {
-                       get { return reader; }
-               }
-
-               public object ReadRoot ()
-               {
-                       TypeMap rootMap = GetTypeMap (root_type);
-
-                       object v = ReadObject (root_type);
-                       return v;
-               }
-
-               public object ReadObject (Type type)
-               {
-                       return ReadObject (type, null);
-               }
-               
-               public object ReadObject (Type type, object instance)
-               {
-                       if (serialized_object_count ++ == serializer.MaxItemsInObjectGraph)
-                               throw SerializationError (String.Format ("The object graph exceeded the maximum object count '{0}' specified in the serializer", serializer.MaxItemsInObjectGraph));
-
-                       bool nullable = false;
-                       if (type.IsGenericType && type.GetGenericTypeDefinition () == typeof (Nullable<>)) {
-                               nullable = true;
-                               type = Nullable.GetUnderlyingType (type);
-                       }
-
-                       bool isNull = reader.GetAttribute ("type") == "null";
-
-                       switch (Type.GetTypeCode (type)) {
-                       case TypeCode.DBNull:
-                               string dbn = reader.ReadElementContentAsString ();
-                               if (dbn != String.Empty)
-                                       throw new SerializationException (String.Format ("The only expected DBNull value string is '{{}}'. Tha actual input was '{0}'.", dbn));
-                               return DBNull.Value;
-                       case TypeCode.String:
-                               if (isNull) {
-                                       reader.ReadElementContentAsString ();
-                                       return null;
-                               }
-                               else
-                                       return reader.ReadElementContentAsString ();
-                       case TypeCode.Char:
-                               var c = reader.ReadElementContentAsString ();
-                               if (c.Length > 1)
-                                       throw new XmlException ("Invalid JSON char");
-                               return Char.Parse(c);
-                       case TypeCode.Single:
-                       case TypeCode.Double:
-                       case TypeCode.Decimal:
-                                       return ReadValueType (type, nullable);
-                       case TypeCode.Byte:
-                       case TypeCode.SByte:
-                       case TypeCode.Int16:
-                       case TypeCode.Int32:
-                       case TypeCode.UInt16:
-                       case TypeCode.UInt32:
-                       case TypeCode.Int64:
-                               if (type.IsEnum)
-                                       return Enum.ToObject (type, Convert.ChangeType (reader.ReadElementContentAsLong (), Enum.GetUnderlyingType (type), null));
-                               else
-                                       return ReadValueType (type, nullable);
-                       case TypeCode.UInt64:
-                               if (type.IsEnum)
-                                       return Enum.ToObject (type, Convert.ChangeType (reader.ReadElementContentAsDecimal (), Enum.GetUnderlyingType (type), null));
-                               else
-                                       return ReadValueType (type, nullable);
-                       case TypeCode.Boolean:
-                               return ReadValueType (type, nullable);
-                       case TypeCode.DateTime:
-                               // it does not use ReadElementContentAsDateTime(). Different string format.
-                               var s = reader.ReadElementContentAsString ();
-                               if (s.Length < 2 || !s.StartsWith ("/Date(", StringComparison.Ordinal) || !s.EndsWith (")/", StringComparison.Ordinal)) {
-                                       if (nullable)
-                                               return null;
-                                       throw new XmlException ("Invalid JSON DateTime format. The value format should be '/Date(UnixTime)/'");
-                               }
-
-                               // The date can contain [SIGN]LONG, [SIGN]LONG+HOURSMINUTES or [SIGN]LONG-HOURSMINUTES
-                               // the format for HOURSMINUTES is DDDD
-                               int tidx = s.IndexOf ('-', 8);
-                               if (tidx == -1)
-                                       tidx = s.IndexOf ('+', 8);
-                               int minutes = 0;
-                               if (tidx == -1){
-                                       s = s.Substring (6, s.Length - 8);
-                               } else {
-                                       int offset;
-                                       int.TryParse (s.Substring (tidx+1, s.Length-3-tidx), out offset);
-
-                                       minutes = (offset % 100) + (offset / 100) * 60;
-                                       if (s [tidx] == '-')
-                                               minutes = -minutes;
-
-                                       s = s.Substring (6, tidx-6);
-                               }
-                               var date = new DateTime (1970, 1, 1).AddMilliseconds (long.Parse (s));
-                               if (minutes != 0)
-                                       date = date.AddMinutes (minutes);
-                               return date;
-                       default:
-                               if (type == typeof (Guid)) {
-                                       return new Guid (reader.ReadElementContentAsString ());
-                               } else if (type == typeof (Uri)) {
-                                       if (isNull) {
-                                               reader.ReadElementContentAsString ();
-                                               return null;
-                                       }
-                                       else
-                                               return new Uri (reader.ReadElementContentAsString (), UriKind.RelativeOrAbsolute);
-                               } else if (type == typeof (XmlQualifiedName)) {
-                                       s = reader.ReadElementContentAsString ();
-                                       int idx = s.IndexOf (':');
-                                       return idx < 0 ? new XmlQualifiedName (s) : new XmlQualifiedName (s.Substring (0, idx), s.Substring (idx + 1));
-                               } else if (type != typeof (object)) {
-                                       // strongly-typed object
-                                       if (reader.IsEmptyElement) {
-                                               // empty -> null array or object
-                                               reader.Read ();
-                                               return null;
-                                       }
-
-                                       Type ct = GetCollectionElementType (type);
-                                       if (ct != null) {
-                                               return DeserializeGenericCollection (type, ct, instance);
-                                       } else {
-                                               string typeHint = reader.GetAttribute ("__type");
-                                               if (typeHint != null) {
-                                                       // this might be a derived & known type. We allow it when it's both.
-                                                       Type exactType = GetRuntimeType (typeHint, type);
-                                                       if (exactType == null)
-                                                               throw SerializationError (String.Format ("Cannot load type '{0}'", typeHint));
-                                                        TypeMap map = GetTypeMap (exactType);
-                                                        return map.Deserialize (this, instance);
-                                               } else { // no type hint
-                                                       TypeMap map = GetTypeMap (type);
-                                                        return map.Deserialize (this, instance);
-                                               }
-                                       }
-                               }
-                               else
-                                       return ReadInstanceDrivenObject ();
-                       }
-               }
-               
-               object ReadValueType (Type type, bool nullable)
-               {
-                       string s = reader.ReadElementContentAsString ();
-                       return nullable && s.Trim ().Length == 0 ? null : Convert.ChangeType (s, type, CultureInfo.InvariantCulture);
-               }
-               
-
-               Type GetRuntimeType (string name, Type baseType)
-               {
-                       string properName = ToRuntimeTypeName (name);
-
-                       if (baseType != null && baseType.FullName.Equals (properName))
-                               return baseType;
-
-                       if (serializer.KnownTypes != null)
-                               foreach (Type t in serializer.KnownTypes)
-                                       if (t.FullName.Equals (properName)) 
-                                               return t;
-
-                       if (baseType != null)
-                               foreach (var attr in baseType.GetCustomAttributes (typeof (KnownTypeAttribute), false))
-                                       if ((attr as KnownTypeAttribute).Type.FullName.Equals (properName))
-                                               return (attr as KnownTypeAttribute).Type;
-
-                       return null;
-               }
-
-               object ReadInstanceDrivenObject ()
-               {
-                       string type = reader.GetAttribute ("type");
-                       switch (type) {
-                       case "null":
-                               reader.Skip ();
-                               return null;
-                       case "object":
-                               string runtimeType = reader.GetAttribute ("__type");
-                               if (runtimeType != null) {
-                                       Type t = GetRuntimeType (runtimeType, null);
-                                       if (t == null)
-                                               throw SerializationError (String.Format ("Cannot load type '{0}'", runtimeType));
-                                       return ReadObject (t);
-                               }
-                               break;
-                       }
-                       string v = reader.ReadElementContentAsString ();
-                       switch (type) {
-                       case "boolean":
-                               switch (v) {
-                               case "true":
-                                       return true;
-                               case "false":
-                                       return false;
-                               default:
-                                       throw SerializationError (String.Format ("Invalid JSON boolean value: {0}", v));
-                               }
-                       case "string":
-                               return v;
-                       case "number":
-                               int i;
-                               if (int.TryParse (v, NumberStyles.None, CultureInfo.InvariantCulture, out i))
-                                       return i;
-                               long l;
-                               if (long.TryParse (v, NumberStyles.None, CultureInfo.InvariantCulture, out l))
-                                       return l;
-                               ulong ul;
-                               if (ulong.TryParse (v, NumberStyles.None, CultureInfo.InvariantCulture, out ul))
-                                       return ul;
-                               double dbl;
-                               if (double.TryParse (v, NumberStyles.None, CultureInfo.InvariantCulture, out dbl))
-                                       return dbl;
-                               decimal dec;
-                               if (decimal.TryParse (v, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out dec))
-                                       return dec;
-                               throw SerializationError (String.Format ("Invalid JSON input: {0}", v));
-                       default:
-                               throw SerializationError (String.Format ("Unexpected type: {0}", type));
-                       }
-               }
-
-               string FormatTypeName (Type type)
-               {
-                       return type.Namespace == null ? type.Name : String.Format ("{0}:#{1}", type.Name, type.Namespace);
-               }
-
-               string ToRuntimeTypeName (string s)
-               {
-                       int idx = s.IndexOf (":#", StringComparison.Ordinal);
-                       return idx < 0 ? s : String.Concat (s.Substring (idx + 2), ".", s.Substring (0, idx));
-               }
-
-               Type GetCollectionElementType (Type type)
-               {
-                       if (type.IsArray)
-                               return type.GetElementType ();
-
-                       if (type.IsGenericType && type.GetGenericTypeDefinition () == typeof (IEnumerable<>))
-                               return type.GetGenericArguments () [0];
-                       var inter = type.GetInterface ("System.Collections.Generic.IEnumerable`1", false);
-                       if (inter != null)
-                               return inter.GetGenericArguments () [0];
-                       
-                       if (typeof (IEnumerable).IsAssignableFrom (type))
-                               // return typeof(object) for mere collection.
-                               return typeof (object);
-                       else
-                               return null;
-               }
-
-               object DeserializeGenericCollection (Type collectionType, Type elementType, object collectionInstance)
-               {
-                       reader.ReadStartElement ();
-                       object ret;
-                       if (collectionType.IsInterface)
-                               collectionType = typeof (List<>).MakeGenericType (elementType);
-                       if (TypeMap.IsDictionary (collectionType)) {
-                               if (collectionInstance == null)
-                                       collectionInstance = Activator.CreateInstance (collectionType);
-                               
-                               var keyType = elementType.IsGenericType ? elementType.GetGenericArguments () [0] : typeof (object);
-                               var valueType = elementType.IsGenericType ? elementType.GetGenericArguments () [1] : typeof (object);
-                               MethodInfo add = collectionType.GetMethod ("Add", new Type [] { keyType, valueType });
-
-                               for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
-                                       if (!reader.IsStartElement ("item"))
-                                               throw SerializationError (String.Format ("Expected element 'item', but found '{0}' in namespace '{1}'", reader.LocalName, reader.NamespaceURI));
-
-                                       // reading a KeyValuePair in the form of <Key .../><Value .../>
-                                       reader.Read ();
-                                       reader.MoveToContent ();
-                                       object key = ReadObject (keyType);
-                                       reader.MoveToContent ();
-                                       object val = ReadObject (valueType);
-                                       reader.Read ();
-                                       add.Invoke (collectionInstance, new [] { key, val });
-                               }
-                               ret = collectionInstance;
-                       } else if (typeof (IList).IsAssignableFrom (collectionType)) {
-#if NET_2_1
-                               Type listType = collectionType.IsArray ? typeof (List<>).MakeGenericType (elementType) : null;
-#else
-                               Type listType = collectionType.IsArray ? typeof (ArrayList) : null;
-#endif
-                               
-                               IList c;
-                               if (collectionInstance == null)
-                                       c = (IList) Activator.CreateInstance (listType ?? collectionType);
-                               else 
-                                       c = (IList) collectionInstance;
-                               
-                               for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
-                                       if (!reader.IsStartElement ("item"))
-                                               throw SerializationError (String.Format ("Expected element 'item', but found '{0}' in namespace '{1}'", reader.LocalName, reader.NamespaceURI));
-                                       object elem = ReadObject (elementType);
-                                       c.Add (elem);
-                               }
-#if NET_2_1
-                               if (collectionType.IsArray) {
-                                       Array array = Array.CreateInstance (elementType, c.Count);
-                                       c.CopyTo (array, 0);
-                                       ret = array;
-                               }
-                               else
-                                       ret = c;
-#else
-                               ret = collectionType.IsArray ? ((ArrayList) c).ToArray (elementType) : c;
-#endif
-                       } else {
-                               if (collectionInstance == null)
-                                       collectionInstance = Activator.CreateInstance (collectionType);
-                               
-                               MethodInfo add;
-                               if (collectionInstance.GetType ().IsGenericType &&
-                                       collectionInstance.GetType ().GetGenericTypeDefinition () == typeof (LinkedList<>))
-                                       add = collectionType.GetMethod ("AddLast", new Type [] { elementType });
-                               else
-                                       add = collectionType.GetMethod ("Add", new Type [] { elementType });
-                               
-                               if (add == null) {
-                                       var icoll = typeof (ICollection<>).MakeGenericType (elementType);
-                                       if (icoll.IsAssignableFrom (collectionInstance.GetType ()))
-                                               add = icoll.GetMethod ("Add");
-                               }
-                               if (add == null) 
-                                       throw new MissingMethodException (elementType.FullName, "Add");
-                               
-                               for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
-                                       if (!reader.IsStartElement ("item"))
-                                               throw SerializationError (String.Format ("Expected element 'item', but found '{0}' in namespace '{1}'", reader.LocalName, reader.NamespaceURI));
-                                       object element = ReadObject (elementType);
-                                       add.Invoke (collectionInstance, new object [] { element });
-                               }
-                               ret = collectionInstance;
-                       }
-
-                       reader.ReadEndElement ();
-                       return ret;
-               }
-
-               TypeMap GetTypeMap (Type type)
-               {
-                       TypeMap map;
-                       if (!typemaps.TryGetValue (type, out map)) {
-                               map = TypeMap.CreateTypeMap (type);
-                               typemaps [type] = map;
-                       }
-                       return map;
-               }
-
-               Exception SerializationError (string basemsg)
-               {
-                       IXmlLineInfo li = reader as IXmlLineInfo;
-                       if (li == null || !li.HasLineInfo ())
-                               return new SerializationException (basemsg);
-                       else
-                               return new SerializationException (String.Format ("{0}. Error at {1} ({2},{3})", basemsg, reader.BaseURI, li.LineNumber, li.LinePosition));
-               }
-       }
-}
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs
deleted file mode 100644 (file)
index 9ea5bf9..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-//
-// JsonSerializationWriter.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Globalization;
-using System.IO;
-using System.Reflection;
-using System.Text;
-using System.Xml;
-
-namespace System.Runtime.Serialization.Json
-{
-       class JsonSerializationWriter
-       {
-               DataContractJsonSerializer serializer;
-               XmlWriter writer;
-               int serialized_object_count;
-               bool always_emit_type;
-               Dictionary<Type, TypeMap> typemaps = new Dictionary<Type, TypeMap> ();
-               Type root_type;
-
-               public JsonSerializationWriter (DataContractJsonSerializer serializer, XmlWriter writer, Type rootType, bool alwaysEmitTypeInformation)
-               {
-                       this.serializer = serializer;
-                       this.writer = writer;
-                       this.root_type = rootType;
-                       this.always_emit_type = alwaysEmitTypeInformation;
-               }
-
-               public XmlWriter Writer {
-                       get { return writer; }
-               }
-
-               public void WriteObjectContent (object graph, bool top, bool outputTypeName)
-               {
-                       if (graph == null) {
-                               if (top)
-                                       GetTypeMap (root_type); // to make sure to reject invalid contracts
-                               writer.WriteAttributeString ("type", "null");
-                               writer.WriteString (null);
-                               return;
-                       }
-
-                       if (serialized_object_count ++ == serializer.MaxItemsInObjectGraph)
-                               throw new SerializationException (String.Format ("The object graph exceeded the maximum object count '{0}' specified in the serializer", serializer.MaxItemsInObjectGraph));
-
-                       var type = graph.GetType ();
-                       if (type.IsGenericType && type.GetGenericTypeDefinition () == typeof (Nullable<>))
-                               type = type.GetGenericArguments () [0];
-
-                       switch (Type.GetTypeCode (type)) {
-                       case TypeCode.Char:
-                       case TypeCode.String:
-                               writer.WriteString (graph.ToString ());
-                               break;
-                       case TypeCode.Single:
-                       case TypeCode.Double:
-                               writer.WriteAttributeString ("type", "number");
-                               writer.WriteString (((IFormattable) graph).ToString ("R", CultureInfo.InvariantCulture));
-                               break;
-                       case TypeCode.Byte:
-                       case TypeCode.SByte:
-                       case TypeCode.Int16:
-                       case TypeCode.Int32:
-                       case TypeCode.Int64:
-                       case TypeCode.UInt16:
-                       case TypeCode.UInt32:
-                       case TypeCode.UInt64:
-                       case TypeCode.Decimal:
-                               writer.WriteAttributeString ("type", "number");
-                               if (type.IsEnum)
-                                       graph = ((IConvertible) graph).ToType (Enum.GetUnderlyingType (type), CultureInfo.InvariantCulture);
-                               writer.WriteString (((IFormattable) graph).ToString ("G", CultureInfo.InvariantCulture));
-                               break;
-                       case TypeCode.Boolean:
-                               writer.WriteAttributeString ("type", "boolean");
-                               if ((bool) graph)
-                                       writer.WriteString ("true");
-                               else
-                                       writer.WriteString ("false");
-                               break;
-                       case TypeCode.DateTime:
-                               writer.WriteString (String.Format (CultureInfo.InvariantCulture, "/Date({0})/", (long) ((DateTime) graph).Subtract (new DateTime (1970, 1, 1)).TotalMilliseconds));
-                               break;
-                       default:
-                               if (graph is Guid) {
-                                       goto case TypeCode.String;
-                               } else if (graph is Uri) {
-                                       goto case TypeCode.String;
-                               } else if (graph is XmlQualifiedName) {
-                                       XmlQualifiedName qn = (XmlQualifiedName) graph;
-                                       writer.WriteString (qn.Name);
-                                       writer.WriteString (":");
-                                       writer.WriteString (qn.Namespace);
-                               } else if (TypeMap.IsDictionary (type)) {
-                                       writer.WriteAttributeString ("type", "array");
-                                       bool otn = !(graph is Array && type.GetElementType () != typeof (object));
-                                       var d = graph as IDictionary;
-                                       if (d != null) {
-                                               // Optimize the IDictionary case to avoid reflection
-                                               foreach (object k in d.Keys)
-                                                       WriteItem (k, d [k], otn);
-                                       } else {
-                                               // we can't typecast to IDictionary<,> and can't use dynamic for iOS support
-                                               var itemGetter = GetDictionaryProperty (type, "Item");
-                                               var keysGetter = GetDictionaryProperty (type, "Keys");
-                                               var argarr = new object [1];
-                                               foreach (object o in (IEnumerable) keysGetter.GetValue (graph, null)) {
-                                                       argarr [0] = o;
-                                                       WriteItem (o, itemGetter.GetValue (graph, argarr), otn);
-                                               }
-                                       }
-                               } else if (graph is Array || TypeMap.IsEnumerable (type)) {
-                                       writer.WriteAttributeString ("type", "array");
-                                       foreach (object o in (IEnumerable) graph) {
-                                               writer.WriteStartElement ("item");
-                                               // when it is typed, then no need to output "__type"
-                                               WriteObjectContent (o, false, !(graph is Array && type.GetElementType () != typeof (object)));
-                                               writer.WriteEndElement ();
-                                       }
-                               } else { // object
-                                       TypeMap tm = GetTypeMap (type);
-                                       if (tm != null) {
-                                               // FIXME: I'm not sure how it is determined whether __type is written or not...
-                                               if (outputTypeName || always_emit_type)
-                                                       writer.WriteAttributeString ("__type", FormatTypeName (type));
-                                               tm.Serialize (this, graph, "object");
-                                       }
-                                       else
-                                               // it does not emit type="object" (as the graph is regarded as a string)
-//                                             writer.WriteString (graph.ToString ());
-throw new InvalidDataContractException (String.Format ("Type {0} cannot be serialized by this JSON serializer", type));
-                               }
-                               break;
-                       }
-               }
-
-               void WriteItem (object key, object value, bool outputTypeName)
-               {
-                       writer.WriteStartElement ("item");
-                       writer.WriteAttributeString ("type", "object");
-                       // outputting a KeyValuePair as <Key .. /><Value ... />
-                       writer.WriteStartElement ("Key");
-                       WriteObjectContent (key, false, outputTypeName);
-                       writer.WriteEndElement ();
-                       writer.WriteStartElement ("Value");
-                       WriteObjectContent (value, false, outputTypeName);
-                       writer.WriteEndElement ();
-                       writer.WriteEndElement ();
-               }
-
-               PropertyInfo GetDictionaryProperty (Type type, string propertyName)
-               {
-                       var p = type.GetProperty (propertyName);
-                       if (p != null)
-                               return p;
-                       // check explicit - but the generic names might differ, e.g. TKey,TValue vs T,V
-                       var ap = type.GetProperties (BindingFlags.Instance | BindingFlags.NonPublic);
-                       foreach (var cp in ap) {
-                               if (!cp.Name.EndsWith (propertyName, StringComparison.Ordinal))
-                                       continue;
-                               if (cp.Name.StartsWith ("System.Collections.Generic.IDictionary<", StringComparison.Ordinal))
-                                       return cp;
-                       }
-                       return null;
-               }
-
-               string FormatTypeName (Type type)
-               {
-                       return String.Format ("{0}:#{1}", type.Name, type.Namespace);
-               }
-
-               TypeMap GetTypeMap (Type type)
-               {
-                       TypeMap map;
-                       if (!typemaps.TryGetValue (type, out map)) {
-                               map = TypeMap.CreateTypeMap (type);
-                               typemaps [type] = map;
-                       }
-                       return map;
-               }
-       }
-}
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonWriter.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonWriter.cs
deleted file mode 100644 (file)
index bcd0188..0000000
+++ /dev/null
@@ -1,552 +0,0 @@
-//
-// JsonWriter.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Text;
-using System.Xml;
-
-namespace System.Runtime.Serialization.Json
-{
-       class JsonWriter : XmlDictionaryWriter, IXmlJsonWriterInitializer
-       {
-               enum ElementType
-               {
-                       None,
-                       Null,
-                       Object,
-                       Array,
-                       String,
-                       Number,
-                       Boolean,
-               }
-
-               Stream output;
-               bool close_output;
-               WriteState state;
-               Stack<ElementType> element_kinds = new Stack<ElementType> ();
-               Stack<bool> first_content_flags = new Stack<bool> ();
-               string attr_name, attr_value, runtime_type;
-               Encoding encoding;
-               byte [] encbuf = new byte [1024];
-               bool no_string_yet = true, is_null, is_ascii_single;
-
-               public JsonWriter (Stream stream, Encoding encoding, bool closeOutput)
-               {
-                       SetOutput (stream, encoding, closeOutput);
-               }
-
-               public void SetOutput (Stream stream, Encoding encoding, bool ownsStream)
-               {
-                       if (stream == null)
-                               throw new ArgumentNullException ("stream");
-                       if (encoding == null)
-                               throw new ArgumentNullException ("encoding");
-                       output = stream;
-                       this.encoding = encoding;
-                       close_output = ownsStream;
-                       is_ascii_single = encoding is UTF8Encoding || encoding.IsSingleByte;
-               }
-
-               void CheckState ()
-               {
-                       switch (state) {
-                       case WriteState.Closed:
-                       case WriteState.Error:
-                               throw new InvalidOperationException (String.Format ("This XmlDictionaryReader is already at '{0}' state", state));
-                       }
-               }
-
-               // copied from System.Silverlight JavaScriptSerializer.
-               static string EscapeStringLiteral (string input)
-               {
-                       StringBuilder sb = null;
-                       int i = 0, start = 0;
-                       for (; i < input.Length; i++) {
-                               switch (input [i]) {
-                               case '"':
-                                       AppendBuffer (ref sb, input, start, i, @"\""");
-                                       break;
-                               case '\\':
-                                       AppendBuffer (ref sb, input, start, i, @"\\");
-                                       break;
-                               case '/':
-                                       AppendBuffer (ref sb, input, start, i, @"\/");
-                                       break;
-                               case '\x8':
-                                       AppendBuffer (ref sb, input, start, i, @"\b");
-                                       break;
-                               case '\f':
-                                       AppendBuffer (ref sb, input, start, i, @"\f");
-                                       break;
-                               case '\n':
-                                       AppendBuffer (ref sb, input, start, i, /*@"\n"*/@"\u000a");
-                                       break;
-                               case '\r':
-                                       AppendBuffer (ref sb, input, start, i, /*@"\r"*/@"\u000d");
-                                       break;
-                               case '\t':
-                                       AppendBuffer (ref sb, input, start, i, /*@"\t"*/@"\u0009");
-                                       break;
-                               default:
-                                       continue;
-                               }
-                               start = i + 1;
-                       }
-                       string remaining = input.Substring (start, i - start);
-                       if (sb != null)
-                               return sb.Append (remaining).ToString ();
-                       else
-                               return remaining;
-               }
-
-               static void AppendBuffer (ref StringBuilder sb, string input, int start, int i, string append)
-               {
-                       if (sb == null)
-                               sb = new StringBuilder ();
-                       if (i != start)
-                               sb.Append (input, start, i - start);
-                       sb.Append (append);
-               }
-
-               public override WriteState WriteState {
-                       get { return state; }
-               }
-
-               public override void Close ()
-               {
-                       // close all open elements
-                       while (element_kinds.Count > 0)
-                               WriteEndElement ();
-
-                       if (close_output)
-                               output.Close ();
-                       else
-                               output.Flush ();
-
-                       state = WriteState.Closed;
-               }
-
-               public override void Flush ()
-               {
-                       output.Flush ();
-               }
-
-               public override void WriteStartElement (string prefix, string localName, string ns)
-               {
-                       CheckState ();
-
-                       if (localName == null)
-                               throw new ArgumentNullException ("localName");
-                       else if (localName.Length == 0)
-                               throw new ArgumentException ("Empty string is not a valid localName in this XmlDictionaryWriter");
-
-                       if (!String.IsNullOrEmpty (ns))
-                               throw new ArgumentException ("Non-empty namespace URI is not allowed in this XmlDictionaryWriter");
-                       if (!String.IsNullOrEmpty (prefix))
-                               throw new ArgumentException ("Non-empty prefix is not allowed in this XmlDictionaryWriter");
-
-                       if (state == WriteState.Attribute)
-                               WriteEndAttribute ();
-                       if (state == WriteState.Element)
-                               CloseStartElement ();
-
-                       else if (state != WriteState.Start && element_kinds.Count == 0)
-                               throw new XmlException ("This XmlDictionaryWriter does not support multiple top-level elements");
-
-                       if (element_kinds.Count == 0) {
-                               if (localName != "root")
-                                       throw new XmlException ("Only 'root' is allowed for the name of the top-level element");
-                       } else {
-                               switch (element_kinds.Peek ()) {
-                               case ElementType.Array:
-                                       if (localName != "item")
-                                               throw new XmlException ("Only 'item' is allowed as a content element of an array");
-                                       break;
-                               case ElementType.String:
-                                       throw new XmlException ("Mixed content is not allowed in this XmlDictionaryWriter");
-                               case ElementType.Null:
-                                       throw new XmlException ("Current type is null and writing element inside null is not allowed");
-                               case ElementType.None:
-                                       throw new XmlException ("Before writing a child element, an element needs 'type' attribute to indicate whether the element is a JSON array or a JSON object in this XmlDictionaryWriter");
-                               }
-
-                               if (first_content_flags.Peek ()) {
-                                       first_content_flags.Pop ();
-                                       first_content_flags.Push (false);
-                               }
-                               else
-                                       OutputAsciiChar (',');
-
-                               if (element_kinds.Peek () != ElementType.Array) {
-                                       OutputAsciiChar ('"');
-                                       OutputString (localName);
-                                       OutputAsciiChar ('\"');
-                                       OutputAsciiChar (':');
-                               }
-                       }
-
-                       element_kinds.Push (ElementType.None); // undetermined yet
-
-                       state = WriteState.Element;
-               }
-
-               public override void WriteEndElement ()
-               {
-                       CheckState ();
-
-                       if (state == WriteState.Attribute)
-                               throw new XmlException ("Cannot end element when an attribute is being written");
-                       if (state == WriteState.Element)
-                               CloseStartElement ();
-
-                       if (element_kinds.Count == 0)
-                               throw new XmlException ("There is no open element to close");
-                       switch (element_kinds.Pop ()) {
-                       case ElementType.String:
-                               if (!is_null) {
-                                       if (no_string_yet)
-                                               OutputAsciiChar ('"');
-                                       OutputAsciiChar ('"');
-                               }
-                               no_string_yet = true;
-                               is_null = false;
-                               break;
-                       case ElementType.Array:
-                               OutputAsciiChar (']');
-                               break;
-                       case ElementType.Object:
-                               OutputAsciiChar ('}');
-                               break;
-                       }
-
-                       // not sure if it is correct though ...
-                       state = WriteState.Content;
-                       first_content_flags.Pop ();
-               }
-
-               public override void WriteFullEndElement ()
-               {
-                       WriteEndElement (); // no such difference in JSON.
-               }
-
-               public override void WriteStartAttribute (string prefix, string localName, string ns)
-               {
-                       CheckState ();
-
-                       if (state != WriteState.Element)
-                               throw new XmlException ("Cannot write attribute as this XmlDictionaryWriter is not at element state");
-
-                       if (!String.IsNullOrEmpty (ns))
-                               throw new ArgumentException ("Non-empty namespace URI is not allowed in this XmlDictionaryWriter");
-                       if (!String.IsNullOrEmpty (prefix))
-                               throw new ArgumentException ("Non-empty prefix is not allowed in this XmlDictionaryWriter");
-
-                       if (localName != "type" && localName != "__type")
-                               throw new ArgumentException ("Only 'type' and '__type' are allowed as an attribute name in this XmlDictionaryWriter");
-
-                       if (state != WriteState.Element)
-                               throw new InvalidOperationException (String.Format ("Attribute cannot be written in {0} mode", state));
-
-                       attr_name = localName;
-                       state = WriteState.Attribute;
-               }
-
-               public override void WriteEndAttribute ()
-               {
-                       CheckState ();
-
-                       if (state != WriteState.Attribute)
-                               throw new XmlException ("Cannot close attribute, as this XmlDictionaryWriter is not at attribute state");
-
-                       if (attr_name == "type") {
-                               switch (attr_value) {
-                               case "object":
-                                       element_kinds.Pop ();
-                                       element_kinds.Push (ElementType.Object);
-                                       OutputAsciiChar ('{');
-                                       break;
-                               case "array":
-                                       element_kinds.Pop ();
-                                       element_kinds.Push (ElementType.Array);
-                                       OutputAsciiChar ('[');
-                                       break;
-                               case "number":
-                                       element_kinds.Pop ();
-                                       element_kinds.Push (ElementType.Number);
-                                       break;
-                               case "boolean":
-                                       element_kinds.Pop ();
-                                       element_kinds.Push (ElementType.Boolean);
-                                       break;
-                               case "string":
-                                       element_kinds.Pop ();
-                                       element_kinds.Push (ElementType.String);
-                                       break;
-                               case "null":
-                                       element_kinds.Pop ();
-                                       element_kinds.Push (ElementType.Null);
-                                       OutputString ("null");
-                                       break;
-                               default:
-                                       throw new XmlException (String.Format ("Unexpected type attribute value '{0}'", attr_value));
-                               }
-                       }
-                       else
-                               runtime_type = attr_value;
-
-                       state = WriteState.Element;
-                       attr_value = null;
-               }
-
-               void CloseStartElement ()
-               {
-                       if (element_kinds.Peek () == ElementType.None) {
-                               element_kinds.Pop ();
-                               element_kinds.Push (ElementType.String);
-                               no_string_yet = true;
-                               is_null = false;
-                       }
-
-                       first_content_flags.Push (true);
-
-                       if (runtime_type != null) {
-                               OutputString ("\"__type\":\"");
-                               OutputString (runtime_type);
-                               OutputAsciiChar ('\"');
-                               runtime_type = null;
-                               first_content_flags.Pop ();
-                               first_content_flags.Push (false);
-                       }
-               }
-
-               public override void WriteString (string text)
-               {
-                       CheckState ();
-
-                       if (state == WriteState.Start)
-                               throw new InvalidOperationException ("Top-level content string is not allowed in this XmlDictionaryWriter");
-
-                       if (state == WriteState.Element) {
-                               CloseStartElement ();
-                               state = WriteState.Content;
-                       }
-
-                       if (state == WriteState.Attribute)
-                               attr_value += text;
-                       else if (text == null) {
-                               no_string_yet = false;
-                               is_null = true;
-                               if (element_kinds.Peek () != ElementType.Null)
-                                       OutputString ("null");
-                       } else {
-                               switch (element_kinds.Peek ()) {
-                               case ElementType.String:
-                                       if (no_string_yet) {
-                                               OutputAsciiChar ('"');
-                                               no_string_yet = false;
-                                       }
-                                       break;
-                               case ElementType.Number:
-                                       // .NET is buggy here, it just outputs raw string, which results in invalid JSON format.
-                                       bool isString = false;
-                                       switch (text) {
-                                       case "INF":
-                                       case "-INF":
-                                       case "NaN":
-                                               isString = true;
-                                               break;
-                                       }
-                                       if (isString) {
-                                               element_kinds.Pop ();
-                                               element_kinds.Push (ElementType.String);
-                                               goto case ElementType.String;
-                                       }
-                                       break;
-                               case ElementType.Boolean:
-                                       break;
-                               default:
-                                       throw new XmlException (String.Format ("Simple content string is allowed only for string, number and boolean types and not for {0} type", element_kinds.Peek ()));
-                               }
-
-                               OutputString (EscapeStringLiteral (text));
-                       }
-               }
-
-               #region mostly-ignored operations
-
-               public override string LookupPrefix (string ns)
-               {
-                       // Since there is no way to declare namespaces in
-                       // this writer, it always returns fixed results.
-                       if (ns == null)
-                               throw new ArgumentNullException ("ns");
-                       else if (ns.Length == 0)
-                               return String.Empty;
-                       else if (ns == "http://www.w3.org/2000/xmlns/")
-                               return "xmlns";
-                       else if (ns == "http://www.w3.org/XML/1998/namespace")
-                               return "xml";
-                       return null;
-               }
-
-               public override void WriteStartDocument ()
-               {
-                       CheckState ();
-               }
-
-               public override void WriteStartDocument (bool standalone)
-               {
-                       CheckState ();
-               }
-
-               public override void WriteEndDocument ()
-               {
-                       CheckState ();
-               }
-
-               #endregion
-
-               #region unsupported operations
-
-               public override void WriteDocType (string name, string pubid, string sysid, string intSubset)
-               {
-                       CheckState ();
-
-                       throw new NotSupportedException ("This XmlDictionaryWriter does not support writing doctype declaration");
-               }
-
-               public override void WriteComment (string text)
-               {
-                       CheckState ();
-
-                       throw new NotSupportedException ("This XmlDictionaryWriter does not support writing comment");
-               }
-
-               public override void WriteEntityRef (string text)
-               {
-                       CheckState ();
-
-                       throw new NotSupportedException ("This XmlDictionaryWriter does not support writing entity reference");
-               }
-
-               public override void WriteProcessingInstruction (string target, string data)
-               {
-                       CheckState ();
-
-                       if (String.Compare (target, "xml", StringComparison.OrdinalIgnoreCase) != 0)
-                               throw new ArgumentException ("This XmlDictionaryWriter does not support writing processing instruction");
-               }
-
-               #endregion
-
-               #region WriteString() variants
-
-               public override void WriteRaw (string text)
-               {
-                       WriteString (text);
-               }
-
-               public override void WriteRaw (char [] chars, int start, int length)
-               {
-                       WriteChars (chars, start, length);
-               }
-
-               public override void WriteCData (string text)
-               {
-                       WriteString (text);
-               }
-
-               public override void WriteCharEntity (char entity)
-               {
-                       WriteString (entity.ToString ());
-               }
-
-               public override void WriteChars (char [] chars, int start, int length)
-               {
-                       WriteString (new string (chars, start, length));
-               }
-
-               public override void WriteSurrogateCharEntity (char high, char low)
-               {
-                       WriteChars (new char [] {high, low}, 0, 2);
-               }
-
-               public override void WriteBase64 (byte [] bytes, int start, int length)
-               {
-                       WriteString (Convert.ToBase64String (bytes, start, length));
-               }
-
-               public override void WriteWhitespace (string text)
-               {
-                       if (text == null)
-                               throw new ArgumentNullException ("text");
-                       for (int i = 0; i < text.Length; i++) {
-                               if (text [i] != ' ') {
-                                       for (int j = i; j < text.Length; j++) {
-                                               switch (text [j]) {
-                                               case '\t':
-                                               case ' ':
-                                               case '\n':
-                                               case '\r':
-                                                       continue;
-                                               default:
-                                                       throw new ArgumentException (String.Format ("WriteWhitespace() does not accept non-whitespace character '{0}'", text [j]));
-                                               }
-                                       }
-                                       break;
-                               }
-                       }
-                       WriteString (text);
-               }
-
-               char [] char_buf = new char [1];
-               void OutputAsciiChar (char c)
-               {
-                       if (is_ascii_single)
-                               output.WriteByte ((byte) c);
-                       else {
-                               char_buf [0] = c;
-                               int size = encoding.GetBytes (char_buf, 0, 1, encbuf, 0);
-                               output.Write (encbuf, 0, size);
-                       }
-               }
-
-               void OutputString (string s)
-               {
-                       int size = encoding.GetByteCount (s);
-                       if (encbuf.Length < size)
-                               encbuf = new byte [size];
-                       size = encoding.GetBytes (s, 0, s.Length, encbuf, 0);
-                       output.Write (encbuf, 0, size);
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/TypeMap.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/TypeMap.cs
deleted file mode 100644 (file)
index 8378a70..0000000
+++ /dev/null
@@ -1,374 +0,0 @@
-//
-// TypeMap.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.Serialization;
-using System.Text;
-using System.Xml;
-
-namespace System.Runtime.Serialization.Json
-{
-       class TypeMap
-       {
-               static bool IsInvalidNCName (string name)
-               {
-                       if (name == null || name.Length == 0)
-                               return true;
-                       try {
-                               XmlConvert.VerifyNCName (name);
-                       } catch (XmlException) {
-                               return true;
-                       }
-                       return false;
-               }
-
-               public static TypeMap CreateTypeMap (Type type)
-               {
-                       object [] atts = type.GetCustomAttributes (typeof (DataContractAttribute), true);
-                       if (atts.Length == 1)
-                               return CreateTypeMap (type, (DataContractAttribute) atts [0]);
-
-                       atts = type.GetCustomAttributes (typeof (SerializableAttribute), false);
-                       if (atts.Length == 1)
-                               return CreateTypeMap (type, null);
-
-                       if (IsPrimitiveType (type))
-                               return null;
-
-                       return CreateDefaultTypeMap (type);
-               }
-
-               static bool IsPrimitiveType (Type type)
-               {
-                       if (type.IsEnum)
-                               return true;
-                       if (Type.GetTypeCode (type) != TypeCode.Object)
-                               return true; // FIXME: it is likely hacky
-                       return false;
-               }
-
-               static TypeMap CreateDefaultTypeMap (Type type)
-               {
-                       var l = new List<TypeMapMember> ();
-                       foreach (var fi in type.GetFields ())
-                               if (!fi.IsStatic)
-                                       l.Add (new TypeMapField (fi, null));
-                       foreach (var pi in type.GetProperties ())
-                               if (pi.CanRead && pi.CanWrite && !pi.GetGetMethod (true).IsStatic && pi.GetIndexParameters ().Length == 0)
-                                       l.Add (new TypeMapProperty (pi, null));
-                       l.Sort ((x, y) => x.Order != y.Order ? x.Order - y.Order : String.Compare (x.Name, y.Name, StringComparison.Ordinal));
-                       return new TypeMap (type, null, l.ToArray ());
-               }
-
-               internal static bool IsDictionary (Type type)
-               {
-                       Type inter;
-                       inter = type.GetInterface ("System.Collections.IDictionary", false);
-                       if (inter != null
-                               && type.GetMethod ("Add", new Type[] { typeof (object), typeof (object) }) != null)
-                               return true;
-                       
-                       inter = type.GetInterface ("System.Collections.Generic.IDictionary`2", false);
-                       if (inter != null
-                               && type.GetMethod ("Add", new Type[] { inter.GetGenericArguments() [0], 
-                                                                          inter.GetGenericArguments() [1] }) != null)
-                               return true;
-                       return false;
-               }
-
-               internal static bool IsEnumerable (Type type)
-               {
-                       if (type.IsGenericType && 
-                               type.GetGenericTypeDefinition() == typeof (LinkedList<>))
-                               return true;
-                       
-                       if (IsPrimitiveType (type) || IsDictionary (type))
-                               return false;
-                       
-                       Type inter;
-                       inter = type.GetInterface ("System.Collections.Generic.IReadOnlyCollection`1", false);
-                       if (inter != null)
-                               return true;
-                       
-                       inter = type.GetInterface ("System.Collections.IEnumerable", false);
-                       if (inter != null && type.GetMethod ("Add", new Type[] { typeof (object) }) != null)
-                               return true;
-                       
-                       inter = type.GetInterface ("System.Collections.Generic.IEnumerable`1", false);
-                       if (inter != null && type.GetMethod ("Add", new Type[] { inter.GetGenericArguments() [0] }) != null)
-                               return true;
-                       return false;
-               }
-
-               static TypeMap CreateTypeMap (Type type, DataContractAttribute dca)
-               {
-                       if (dca != null && dca.Name != null && IsInvalidNCName (dca.Name))
-                               throw new InvalidDataContractException (String.Format ("DataContractAttribute for type '{0}' has an invalid name", type));
-
-                       List<TypeMapMember> members = new List<TypeMapMember> ();
-
-                       foreach (FieldInfo fi in type.GetFields (binding_flags)) {
-                               if (fi.GetCustomAttributes (typeof (CompilerGeneratedAttribute), false).Length > 0)
-                                       continue;
-                               if (dca != null) {
-                                       object [] atts = fi.GetCustomAttributes (typeof (DataMemberAttribute), true);
-                                       if (atts.Length == 0)
-                                               continue;
-                                       DataMemberAttribute dma = (DataMemberAttribute) atts [0];
-                                       members.Add (new TypeMapField (fi, dma));
-                               } else {
-                                       if (fi.GetCustomAttributes (typeof (IgnoreDataMemberAttribute), false).Length > 0)
-                                               continue;
-                                       members.Add (new TypeMapField (fi, null));
-                               }
-                       }
-
-                       if (dca != null) {
-                               foreach (PropertyInfo pi in type.GetProperties (binding_flags)) {
-                                       object [] atts = pi.GetCustomAttributes (typeof (DataMemberAttribute), true);
-                                       if (atts.Length == 0)
-                                               continue;
-                                       if (pi.GetIndexParameters ().Length > 0)
-                                               continue;
-                                       if (IsEnumerable (pi.PropertyType) || IsDictionary (pi.PropertyType)) {
-                                               if (!pi.CanRead)
-                                                       throw new InvalidDataContractException (String.Format ("Property {0} must have a getter", pi));
-                                       }
-                                       else if (!pi.CanRead || !pi.CanWrite)
-                                               throw new InvalidDataContractException (String.Format ("Non-collection property {0} must have both getter and setter", pi));
-                                       DataMemberAttribute dma = (DataMemberAttribute) atts [0];
-                                       members.Add (new TypeMapProperty (pi, dma));
-                               }
-                       }
-
-                       members.Sort (delegate (TypeMapMember m1, TypeMapMember m2) { return m1.Order != m2.Order ? m1.Order - m2.Order : String.CompareOrdinal (m1.Name, m2.Name); });
-                       return new TypeMap (type, dca == null ? null : dca.Name, members.ToArray ());
-               }
-
-               Type type;
-               string element;
-               TypeMapMember [] members;
-
-               static readonly Type [] deser_methods_args = new Type [] { typeof (StreamingContext) };
-               const BindingFlags binding_flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
-
-               public TypeMap (Type type, string element, TypeMapMember [] orderedMembers)
-               {
-                       this.type = type;
-                       this.element = element;
-                       this.members = orderedMembers;
-
-                       foreach (var mi in type.GetMethods (binding_flags)) {
-                               if (mi.GetCustomAttributes (typeof (OnDeserializingAttribute), false).Length > 0)
-                                       OnDeserializing = mi;
-                               else if (mi.GetCustomAttributes (typeof (OnDeserializedAttribute), false).Length > 0)
-                                       OnDeserialized = mi;
-                               else if (mi.GetCustomAttributes (typeof (OnSerializingAttribute), false).Length > 0)
-                                       OnSerializing = mi;
-                               else if (mi.GetCustomAttributes (typeof (OnSerializedAttribute), false).Length > 0)
-                                       OnSerialized = mi;
-                       }
-               }
-
-               public MethodInfo OnDeserializing { get; set; }
-               public MethodInfo OnDeserialized { get; set; }
-               public MethodInfo OnSerializing { get; set; }
-               public MethodInfo OnSerialized { get; set; }
-
-               public virtual void Serialize (JsonSerializationWriter outputter, object graph, string type)
-               {
-                       if (OnSerializing != null)
-                               OnSerializing.Invoke (graph, new object [] {new StreamingContext (StreamingContextStates.All)});
-
-                       outputter.Writer.WriteAttributeString ("type", type);
-                       foreach (TypeMapMember member in members) {
-                               object memberObj = member.GetMemberOf (graph);
-                               // FIXME: consider EmitDefaultValue
-                               outputter.Writer.WriteStartElement (member.Name);
-                               outputter.WriteObjectContent (memberObj, false, false);
-                               outputter.Writer.WriteEndElement ();
-                       }
-
-                       if (OnSerialized != null)
-                               OnSerialized.Invoke (graph, new object [] {new StreamingContext (StreamingContextStates.All)});
-               }
-
-               internal static object CreateInstance (Type type)
-               {
-                       if (TypeMap.IsDictionary (type)) {
-                               if (type.IsGenericType)
-                                       return Activator.CreateInstance (typeof (Dictionary<,>).MakeGenericType (type.GetGenericArguments ()));
-                               else
-                                       return new Hashtable ();
-                       } else if (TypeMap.IsEnumerable (type)) {
-                               if (type.IsGenericType)
-                                       return Activator.CreateInstance (typeof (List<>).MakeGenericType (type.GetGenericArguments ()));
-                               else
-                                       return new ArrayList ();
-                       }
-                       else
-                               return FormatterServices.GetUninitializedObject (type);
-               }
-
-               public virtual object Deserialize (JsonSerializationReader jsr, object o)
-               {
-                       XmlReader reader = jsr.Reader;
-                       bool isNull = reader.GetAttribute ("type") == "null";
-
-                       object ret = isNull ? null : CreateInstance (type);
-                       if (ret != null && OnDeserializing != null)
-                               OnDeserializing.Invoke (ret, new object [] {new StreamingContext (StreamingContextStates.All)});
-                       Dictionary<TypeMapMember,bool> filled = new Dictionary<TypeMapMember,bool> ();
-
-                       reader.ReadStartElement ();
-                       for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
-                               bool consumed = false;
-                               for (int i = 0; i < members.Length; i++) {
-                                       TypeMapMember mm = members [i];
-                                       if (mm.Name == reader.LocalName && reader.NamespaceURI == String.Empty) {
-                                               if (filled.ContainsKey (mm))
-                                                       throw new SerializationException (String.Format ("Object content '{0}' for '{1}' already appeared in the reader", reader.LocalName, type));
-                                               mm.SetMemberValue (ret, jsr);
-                                               filled [mm] = true;
-                                               consumed = true;
-                                               break;
-                                       }
-                               }
-                               if (!consumed)
-                                       reader.Skip ();
-                       }
-                       reader.ReadEndElement ();
-                       if (ret != null && OnDeserialized != null)
-                               OnDeserialized.Invoke (ret, new object [] {new StreamingContext (StreamingContextStates.All)});
-                       return ret;
-               }
-       }
-
-       abstract class TypeMapMember
-       {
-               MemberInfo mi;
-               DataMemberAttribute dma;
-
-               protected TypeMapMember (MemberInfo mi, DataMemberAttribute dma)
-               {
-                       this.mi = mi;
-                       this.dma = dma;
-               }
-
-               public string Name {
-                       get { return dma == null ? mi.Name : dma.Name ?? mi.Name; }
-               }
-
-               public bool EmitDefaultValue {
-                       get { return dma != null && dma.EmitDefaultValue; }
-               }
-
-               public bool IsRequired {
-                       get { return dma != null && dma.IsRequired; }
-               }
-
-               public int Order {
-                       get { return dma != null ? dma.Order : -1; }
-               }
-
-               public abstract Type Type { get; }
-
-               public abstract object GetMemberOf (object owner);
-
-               public abstract void SetMemberValue (object owner, JsonSerializationReader value);
-       }
-
-       class TypeMapField : TypeMapMember
-       {
-               FieldInfo field;
-
-               public TypeMapField (FieldInfo fi, DataMemberAttribute dma)
-                       : base (fi, dma)
-               {
-                       this.field = fi;
-               }
-
-               public override Type Type {
-                       get { return field.FieldType; }
-               }
-
-               public override object GetMemberOf (object owner)
-               {
-                       return field.GetValue (owner);
-               }
-               
-               public override void SetMemberValue (object owner, JsonSerializationReader jsr)
-               {
-                       field.SetValue (owner, jsr.ReadObject (this.Type));
-               }
-       }
-
-       class TypeMapProperty : TypeMapMember
-       {
-               PropertyInfo property;
-
-               public TypeMapProperty (PropertyInfo pi, DataMemberAttribute dma)
-                       : base (pi, dma)
-               {
-                       this.property = pi;
-               }
-
-               public override Type Type {
-                       get { return property.PropertyType; }
-               }
-
-               public override object GetMemberOf (object owner)
-               {
-                       return property.GetValue (owner, null);
-               }
-
-               public override void SetMemberValue (object owner, JsonSerializationReader jsr)
-               {
-                       var pSetter = this.property.GetSetMethod (true);
-                       if (pSetter != null) {
-                               property.SetValue (owner, jsr.ReadObject (this.Type), null);
-                               
-                       } else { // no setter
-                               var oldValue = property.GetValue (owner, null);
-                               try {
-                                       jsr.ReadObject (this.Type, oldValue);
-                               } catch (MissingMethodException e) {
-                                       throw new InvalidDataContractException (string.Format ("No set method for property '{0}' "
-                                               + "in type '{1}'.", this.property.Name, this.property.PropertyType.FullName), e);
-                               }
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_4_5.csproj b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_4_5.csproj
deleted file mode 100644 (file)
index 45b5792..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BD4DF654-42EE-40E8-A3F4-8A80959E7879}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceModel.Web</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Assembly\TypeForwarders.cs" />\r
-    <Compile Include="System.ServiceModel.Activation\WebScriptServiceHostFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Activation\WebServiceHostFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\WebBodyFormatMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\WebContentFormat.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\WebContentTypeMapper.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\WebMessageEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\WebMessageEncoderFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\WebMessageEncodingBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WebHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WebHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WebHttpElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WebHttpEndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WebHttpEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WebHttpSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WebMessageEncodingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WebScriptEnablingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WebScriptEndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WebScriptEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WebHttpBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WebHttpEndpoint.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WebScriptEnablingBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WebScriptEndpoint.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WebServiceEndpoint.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\JsonQueryStringConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\QueryStringConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\WebHttpDispatchOperationSelector.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\WebMessageFormatter.cs" />\r
-    <Compile Include="System.ServiceModel.Web\IncomingWebRequestContext.cs" />\r
-    <Compile Include="System.ServiceModel.Web\IncomingWebResponseContext.cs" />\r
-    <Compile Include="System.ServiceModel.Web\OutgoingWebRequestContext.cs" />\r
-    <Compile Include="System.ServiceModel.Web\OutgoingWebResponseContext.cs" />\r
-    <Compile Include="System.ServiceModel.Web\WebAttributeInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Web\WebChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Web\WebGetAttribute.cs" />\r
-    <Compile Include="System.ServiceModel.Web\WebInvokeAttribute.cs" />\r
-    <Compile Include="System.ServiceModel.Web\WebMessageBodyStyle.cs" />\r
-    <Compile Include="System.ServiceModel.Web\WebMessageFormat.cs" />\r
-    <Compile Include="System.ServiceModel.Web\WebOperationContext.cs" />\r
-    <Compile Include="System.ServiceModel.Web\WebServiceHost.cs" />\r
-    <Compile Include="System.ServiceModel\WebHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\WebHttpSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\WebHttpSecurityMode.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
-      <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Extensions/System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{74D281D8-F725-4D79-B218-2DFCCFD44FA2}</Project>\r
-      <Name>System.Web.Extensions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj">\r
-      <Project>{E537F31B-BCB7-4935-ABF3-DF2FAC48DCB3}</Project>\r
-      <Name>System.ServiceModel.Activation-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-tests-net_4_5.csproj b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-tests-net_4_5.csproj
deleted file mode 100644 (file)
index d8e3c21..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{15DA3E31-1142-4ABB-AC5E-B2FB2B7C50D9}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.ServiceModel.Web-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceModel.Web_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_5;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Runtime.Serialization.Json\DataContractJsonSerializerTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization.Json\JsonReaderTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization.Json\JsonWriterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Activation\WebScriptServiceHostFactoryTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\WebBodyFormatMessagePropertyTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\WebMessageEncodingBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\WebHttpBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\WebHttpBehaviorTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\WebHttpEndpointTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\WebScriptEnablingBehaviorTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\JsonQueryStringConverterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\QueryStringConverterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\WebHttpDispatchOperationSelectorTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\Atom10FeedFormatterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\Atom10ItemFormatterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\AtomPub10CategoriesDocumentFormatterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\AtomPub10ServiceDocumentFormatterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\Rss20FeedFormatterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\Rss20ItemFormatterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\ServiceDocumentTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\SyndicationElementExtensionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\SyndicationFeedTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\SyndicationItemTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\SyndicationLinkTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\TextSyndicationContentTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\UrlSyndicationContentTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Syndication\XmlSyndicationContentTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Web\WebGetAttributeTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Web\WebInvokeAttributeTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Web\WebOperationContextTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Web\WebServiceHostTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\WebHttpBindingTest.cs" />\r
-    <Compile Include="Test\System\UriTemplateEquivalenceComparerTest.cs" />\r
-    <Compile Include="Test\System\UriTemplateTableTest.cs" />\r
-    <Compile Include="Test\System\UriTemplateTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj">\r
-      <Project>{BD4DF654-42EE-40E8-A3F4-8A80959E7879}</Project>\r
-      <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5-1.csproj">\r
-      <Project>{F1316A49-176B-4E68-8A5F-1BA718289D46}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{74D281D8-F725-4D79-B218-2DFCCFD44FA2}</Project>\r
-      <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ServiceModel.Activation\System.ServiceModel.Activation-net_4_5.csproj">\r
-      <Project>{E537F31B-BCB7-4935-ABF3-DF2FAC48DCB3}</Project>\r
-      <Name>System.ServiceModel.Activation\System.ServiceModel.Activation-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 319640fc23476960fd9b9139104a6f01088f26a3..8a6d9c8eadf76f907c3dea7d0fc5906a77a9a099 100644 (file)
@@ -1,7 +1,4 @@
 ../../test-helpers/NetworkHelpers.cs
-System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs
-System.Runtime.Serialization.Json/JsonReaderTest.cs
-System.Runtime.Serialization.Json/JsonWriterTest.cs
 System.ServiceModel.Activation/WebScriptServiceHostFactoryTest.cs
 System.ServiceModel.Channels/WebBodyFormatMessagePropertyTest.cs
 System.ServiceModel.Channels/WebMessageEncodingBindingElementTest.cs
index fc8a065f5ae483a7794091ba8193f288ee982056..8eee88bb876ad8387abadae15f001784359e2f8f 100644 (file)
@@ -158,7 +158,7 @@ namespace System.ServiceModel
                }
 
                public override string Scheme {
-                       get { return Security.Mode != WebHttpSecurityMode.None ? Uri.UriSchemeHttps : Uri.UriSchemeHttp; }
+                       get { return Security.Mode == WebHttpSecurityMode.Transport ? Uri.UriSchemeHttps : Uri.UriSchemeHttp; }
                }
 
                public WebHttpSecurity Security {
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/ChangeLog b/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/ChangeLog
deleted file mode 100644 (file)
index 532e123..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-2010-07-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : add test for bug #615800.
-
-2010-07-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : add test for bug #615801.
-
-2010-04-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : don't use ToUniversalTime()
-         which makes test results timezone dependent.
-
-2010-03-10  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : oops, the test was careless.
-         Use fixed date.
-
-2010-03-09  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : add test for bug #586169.
-       * JsonWriterTest.cs : add standalone write case for "\/".
-
-2010-01-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs :
-         enable TypeIsNotPartsOfKnownTypes(), and add more related tests.
-
-2010-01-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : make some tests narrow down
-         possible cause of errors to detect expected errors more precisely.
-
-2010-01-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : null-string case is working.
-
-2010-01-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : invalidate previous non-working
-         tests.
-
-2010-01-25  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * DataContractJsonSerializerTest.cs: Add non-working test cases
-       for null-string, known types and handling floating point special
-       values
-
-2009-12-11  Chris Toshok  <toshok@ximian.com>
-
-       * DataContractJsonSerializerTest.cs: add a test case for
-       non-public properties.
-
-2009-12-11  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonReaderTest.cs : another number parse case.
-
-2009-11-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : added ignored test case that
-         verifies 2.1 behavior (with another case that justifies removal
-         of the previous hack).
-
-2009-10-08  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : added test for
-         alwaysEmitTypeInformation argument.
-
-2009-09-07  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : fix non-datacontract
-         serialization test. It depended on IPAddress field internals
-         (runtime serialization incompatibility).
-
-2009-03-13  Andreia Gaita  <avidigal@novell.com>
-
-       * JsonReaderTest.cs: test for skip and depth (if depth fails, skip is affected)
-
-2009-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : fixed some tests to match
-         .NET RTM behavior. Added read-only collection case, (but [Ignore]d).
-
-2009-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : added test for contract-less
-         serialization.
-
-2008-02-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : added couple of DBNull tests.
-
-2008-01-30  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : added deserialization tests
-         for typed object with "__type".
-
-2008-01-30  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonReaderTest.cs : test GetAttribute() for "__type".
-
-2008-01-30  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonReaderTest.cs : added tests for "__type" attributes (some of
-         them are not working yet).
-
-2008-01-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonReaderTest.cs : test "type" attribute in several nodes.
-
-2008-01-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs : some more deserialization tests.
-
-2008-01-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * JsonWriterTest.cs : added test for writing __type attribute.
-       * DataContractJsonSerializerTest.cs : added more random-ish tests.
-
-2007-12-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractJsonSerializerTest.cs :
-         moved from Test/System.Runtime.Serialization and fixed some.
-       * JsonReaderTest.cs, JsonWriterTest.cs : moved from Test/System.Xml.
-
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs b/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs
deleted file mode 100644 (file)
index 1e32b6f..0000000
+++ /dev/null
@@ -1,2792 +0,0 @@
-//
-// DataContractJsonSerializerTest.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//     Ankit Jain <JAnkit@novell.com>
-//     Antoine Cailliau <antoinecailliau@gmail.com>
-//
-// Copyright (C) 2005-2007 Novell, Inc.  http://www.novell.com
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-//
-// This test code contains tests for DataContractJsonSerializer, which is
-// imported from DataContractSerializerTest.cs.
-//
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Net;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Json;
-using System.Text;
-using System.Xml;
-using NUnit.Framework;
-
-namespace MonoTests.System.Runtime.Serialization.Json
-{
-       [TestFixture]
-       public class DataContractJsonSerializerTest
-       {
-               static readonly XmlWriterSettings settings;
-
-               static DataContractJsonSerializerTest ()
-               {
-                       settings = new XmlWriterSettings ();
-                       settings.OmitXmlDeclaration = true;
-               }
-
-               [DataContract]
-               class Sample1
-               {
-                       [DataMember]
-                       public string Member1;
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentNullException))]
-               public void ConstructorTypeNull ()
-               {
-                       new DataContractJsonSerializer (null);
-               }
-
-               [Test]
-               public void ConstructorKnownTypesNull ()
-               {
-                       // null knownTypes is allowed.
-                       new DataContractJsonSerializer (typeof (Sample1), (IEnumerable<Type>) null);
-                       new DataContractJsonSerializer (typeof (Sample1), "Foo", null);
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentNullException))]
-               public void ConstructorNameNull ()
-               {
-                       new DataContractJsonSerializer (typeof (Sample1), (string) null);
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentOutOfRangeException))]
-               public void ConstructorNegativeMaxObjects ()
-               {
-                       new DataContractJsonSerializer (typeof (Sample1), "Sample1",
-                               null, -1, false, null, false);
-               }
-
-               [Test]
-               public void ConstructorMisc ()
-               {
-                       new DataContractJsonSerializer (typeof (GlobalSample1)).WriteObject (new MemoryStream (), new GlobalSample1 ());
-               }
-
-               [Test]
-               public void WriteObjectContent ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       using (XmlWriter xw = XmlWriter.Create (sw, settings)) {
-                               DataContractJsonSerializer ser =
-                                       new DataContractJsonSerializer (typeof (string));
-                               xw.WriteStartElement ("my-element");
-                               ser.WriteObjectContent (xw, "TEST STRING");
-                               xw.WriteEndElement ();
-                       }
-                       Assert.AreEqual ("<my-element>TEST STRING</my-element>",
-                               sw.ToString ());
-               }
-
-               // int
-
-               [Test]
-               public void SerializeIntXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeInt (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""number"">1</root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeIntJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeInt (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               "1",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeInt (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser =
-                               new DataContractJsonSerializer (typeof (int));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, 1);
-                       }
-               }
-
-               // int, with rootName
-
-               [Test]
-               public void SerializeIntXmlWithRootName ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeIntWithRootName (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<myroot type=""number"">1</myroot>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               // since JsonWriter supports only "root" as the root name, using
-               // XmlWriter from JsonReaderWriterFactory will always fail with
-               // an explicit rootName.
-               [ExpectedException (typeof (SerializationException))]
-               public void SerializeIntJsonWithRootName ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeIntWithRootName (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               "1",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeIntWithRootName (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser =
-                               new DataContractJsonSerializer (typeof (int), "myroot");
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, 1);
-                       }
-               }
-
-               // pass typeof(DCEmpty), serialize int
-
-               [Test]
-               public void SerializeIntForDCEmptyXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeIntForDCEmpty (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""number"">1</root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeIntForDCEmptyJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeIntForDCEmpty (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               "1",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeIntForDCEmpty (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser =
-                               new DataContractJsonSerializer (typeof (DCEmpty));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, 1);
-                       }
-               }
-
-               // DCEmpty
-
-               [Test]
-               public void SerializeEmptyClassXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeEmptyClass (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""object"" />",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeEmptyClassJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeEmptyClass (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               "{}",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeEmptyClass (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser =
-                               new DataContractJsonSerializer (typeof (DCEmpty));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, new DCEmpty ());
-                       }
-               }
-
-               // string (primitive)
-
-               [Test]
-               public void SerializePrimitiveStringXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializePrimitiveString (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               "<root>TEST</root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializePrimitiveStringJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializePrimitiveString (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               @"""TEST""",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializePrimitiveString (XmlWriter writer)
-               {
-                       XmlObjectSerializer ser =
-                               new DataContractJsonSerializer (typeof (string));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, "TEST");
-                       }
-               }
-
-               // QName (primitive but ...)
-
-               [Test]
-               public void SerializePrimitiveQNameXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializePrimitiveQName (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               "<root>foo:urn:foo</root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializePrimitiveQNameJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializePrimitiveQName (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               @"""foo:urn:foo""",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializePrimitiveQName (XmlWriter writer)
-               {
-                       XmlObjectSerializer ser =
-                               new DataContractJsonSerializer (typeof (XmlQualifiedName));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, new XmlQualifiedName ("foo", "urn:foo"));
-                       }
-               }
-
-               // DBNull (primitive)
-
-               [Test]
-               public void SerializeDBNullXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeDBNull (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""object"" />",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeDBNullJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeDBNull (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               "{}",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeDBNull (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser =
-                               new DataContractJsonSerializer (typeof (DBNull));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, DBNull.Value);
-                       }
-               }
-
-               // DCSimple1
-
-               [Test]
-               public void SerializeSimpleClass1Xml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeSimpleClass1 (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""object""><Foo>TEST</Foo></root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeSimpleClass1Json ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeSimpleClass1 (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               @"{""Foo"":""TEST""}",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeSimpleClass1 (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser =
-                               new DataContractJsonSerializer (typeof (DCSimple1));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, new DCSimple1 ());
-                       }
-               }
-
-               // NonDC
-
-               [Test]
-               // NonDC is not a DataContract type.
-               public void SerializeNonDCOnlyCtor ()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (NonDC));
-               }
-
-               [Test]
-               //[ExpectedException (typeof (InvalidDataContractException))]
-               // NonDC is not a DataContract type.
-               // UPDATE: non-DataContract types are became valid in RTM.
-               public void SerializeNonDC ()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (NonDC));
-                       using (XmlWriter w = XmlWriter.Create (TextWriter.Null, settings)) {
-                               ser.WriteObject (w, new NonDC ());
-                       }
-               }
-
-               // DCHasNonDC
-
-               [Test]
-               //[ExpectedException (typeof (InvalidDataContractException))]
-               // DCHasNonDC itself is a DataContract type whose field is
-               // marked as DataMember but its type is not DataContract.
-               // UPDATE: non-DataContract types are became valid in RTM.
-               public void SerializeDCHasNonDC ()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCHasNonDC));
-                       using (XmlWriter w = XmlWriter.Create (TextWriter.Null, settings)) {
-                               ser.WriteObject (w, new DCHasNonDC ());
-                       }
-               }
-
-               // DCHasSerializable
-
-               [Test]
-               public void SerializeSimpleSerializable1Xml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeSimpleSerializable1 (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""object""><Ser type=""object""><Doh>doh!</Doh></Ser></root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeSimpleSerializable1Json ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeSimpleSerializable1 (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               @"{""Ser"":{""Doh"":""doh!""}}",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               // DCHasSerializable itself is DataContract and has a field
-               // whose type is not contract but serializable.
-               void SerializeSimpleSerializable1 (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCHasSerializable));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, new DCHasSerializable ());
-                       }
-               }
-
-               [Test]
-               public void SerializeDCWithNameXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeDCWithName (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""object""><FooMember>value</FooMember></root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeDCWithNameJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeDCWithName (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               @"{""FooMember"":""value""}",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeDCWithName (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithName));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, new DCWithName ());
-                       }
-               }
-
-               [Test]
-               public void SerializeDCWithEmptyName1 ()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithEmptyName));
-                       StringWriter sw = new StringWriter ();
-                       DCWithEmptyName dc = new DCWithEmptyName ();
-                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
-                               try {
-                                       ser.WriteObject (w, dc);
-                               } catch (InvalidDataContractException) {
-                                       return;
-                               }
-                       }
-                       Assert.Fail ("Expected InvalidDataContractException");
-               }
-
-               [Test]
-               public void SerializeDCWithEmptyName2 ()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithName));
-                       StringWriter sw = new StringWriter ();
-
-                       /* DataContractAttribute.Name == "", not valid */
-                       DCWithEmptyName dc = new DCWithEmptyName ();
-                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
-                               try {
-                                       ser.WriteObject (w, dc);
-                               } catch (InvalidDataContractException) {
-                                       return;
-                               }
-                       }
-                       Assert.Fail ("Expected InvalidDataContractException");
-               }
-
-               [Test]
-               [Category("NotWorking")]
-               public void SerializeDCWithNullName ()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithNullName));
-                       StringWriter sw = new StringWriter ();
-                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
-                               try {
-                                       /* DataContractAttribute.Name == "", not valid */
-                                       ser.WriteObject (w, new DCWithNullName ());
-                               } catch (InvalidDataContractException) {
-                                       return;
-                               }
-                       }
-                       Assert.Fail ("Expected InvalidDataContractException");
-               }
-
-               [Test]
-               public void SerializeDCWithEmptyNamespace1 ()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithEmptyNamespace));
-                       StringWriter sw = new StringWriter ();
-                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
-                               ser.WriteObject (w, new DCWithEmptyNamespace ());
-                       }
-               }
-
-               [Test]
-               public void SerializeWrappedClassXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeWrappedClass (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""object"" />",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeWrappedClassJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeWrappedClass (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               "{}",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeWrappedClass (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser =
-                               new DataContractJsonSerializer (typeof (Wrapper.DCWrapped));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, new Wrapper.DCWrapped ());
-                       }
-               }
-
-               // CollectionContainer : Items must have a setter. (but became valid in RTM).
-               [Test]
-               public void SerializeReadOnlyCollectionMember ()
-               {
-                       DataContractJsonSerializer ser =
-                               new DataContractJsonSerializer (typeof (CollectionContainer));
-                       StringWriter sw = new StringWriter ();
-                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
-                               ser.WriteObject (w, null);
-                       }
-               }
-
-               // DataCollectionContainer : Items must have a setter. (but became valid in RTM).
-               [Test]
-               public void SerializeReadOnlyDataCollectionMember ()
-               {
-                       DataContractJsonSerializer ser =
-                               new DataContractJsonSerializer (typeof (DataCollectionContainer));
-                       StringWriter sw = new StringWriter ();
-                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
-                               ser.WriteObject (w, null);
-                       }
-               }
-
-               [Test]
-               [Ignore ("https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=409970")]
-               [ExpectedException (typeof (SerializationException))]
-               public void DeserializeReadOnlyDataCollection_NullCollection ()
-               {
-                       DataContractJsonSerializer ser =
-                               new DataContractJsonSerializer (typeof (CollectionContainer));
-                       StringWriter sw = new StringWriter ();
-                       var c = new CollectionContainer ();
-                       c.Items.Add ("foo");
-                       c.Items.Add ("bar");
-                       using (XmlWriter w = XmlWriter.Create (sw, settings))
-                               ser.WriteObject (w, c);
-                       // CollectionContainer.Items is null, so it cannot deserialize non-null collection.
-                       using (XmlReader r = XmlReader.Create (new StringReader (sw.ToString ())))
-                               c = (CollectionContainer) ser.ReadObject (r);
-               }
-
-               [Test]
-               public void SerializeGuidXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeGuid (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root>00000000-0000-0000-0000-000000000000</root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeGuidJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeGuid (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               @"""00000000-0000-0000-0000-000000000000""",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeGuid (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (Guid));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, Guid.Empty);
-                       }
-               }
-
-               [Test]
-               public void SerializeEnumXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeEnum (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""number"">0</root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeEnumJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeEnum (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               "0",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeEnum (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (Colors));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, new Colors ());
-                       }
-               }
-
-               [Test]
-               public void SerializeEnum2Xml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeEnum2 (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""number"">0</root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeEnum2Json ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeEnum2 (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               "0",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeEnum2 (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (Colors));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, 0);
-                       }
-               }
-
-               [Test] // so, DataContract does not affect here.
-               public void SerializeEnumWithDCXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeEnumWithDC (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""number"">0</root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeEnumWithDCJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeEnumWithDC (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               "0",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeEnumWithDC (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (ColorsWithDC));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, new ColorsWithDC ());
-                       }
-               }
-
-               [Test]
-               public void SerializeEnumWithNoDCXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeEnumWithNoDC (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""number"">0</root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeEnumWithNoDCJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeEnumWithNoDC (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               "0",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeEnumWithNoDC (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (ColorsEnumMemberNoDC));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, new ColorsEnumMemberNoDC ());
-                       }
-               }
-
-               [Test]
-               public void SerializeEnumWithDC2Xml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeEnumWithDC2 (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""number"">3</root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeEnumWithDC2Json ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeEnumWithDC2 (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               "3",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeEnumWithDC2 (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (ColorsWithDC));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, 3);
-                       }
-               }
-
-/*
-               [Test]
-               [ExpectedException (typeof (SerializationException))]
-               public void SerializeEnumWithDCInvalid ()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (ColorsWithDC));
-                       StringWriter sw = new StringWriter ();
-                       ColorsWithDC cdc = ColorsWithDC.Blue;
-                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
-                               ser.WriteObject (w, cdc);
-                       }
-               }
-*/
-
-               [Test]
-               public void SerializeDCWithEnumXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializeDCWithEnum (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""object""><_colors type=""number"">0</_colors></root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeDCWithEnumJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializeDCWithEnum (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               @"{""_colors"":0}",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializeDCWithEnum (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithEnum));
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, new DCWithEnum ());
-                       }
-               }
-
-               [Test]
-               public void SerializerDCArrayXml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializerDCArray (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""array""><item type=""object""><_colors type=""number"">0</_colors></item><item type=""object""><_colors type=""number"">1</_colors></item></root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializerDCArrayJson ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializerDCArray (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               @"[{""_colors"":0},{""_colors"":1}]",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializerDCArray (XmlWriter writer)
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (DCWithEnum []));
-                       DCWithEnum [] arr = new DCWithEnum [2];
-                       arr [0] = new DCWithEnum (); arr [0].colors = Colors.Red;
-                       arr [1] = new DCWithEnum (); arr [1].colors = Colors.Green;
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, arr);
-                       }
-               }
-
-               [Test]
-               public void SerializerDCArray2Xml ()
-               {
-                       StringWriter sw = new StringWriter ();
-                       SerializerDCArray2 (XmlWriter.Create (sw, settings));
-                       Assert.AreEqual (
-                               @"<root type=""array""><item __type=""DCWithEnum:#MonoTests.System.Runtime.Serialization.Json"" type=""object""><_colors type=""number"">0</_colors></item><item __type=""DCSimple1:#MonoTests.System.Runtime.Serialization.Json"" type=""object""><Foo>hello</Foo></item></root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializerDCArray2Json ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       SerializerDCArray2 (JsonReaderWriterFactory.CreateJsonWriter (ms));
-                       Assert.AreEqual (
-                               @"[{""__type"":""DCWithEnum:#MonoTests.System.Runtime.Serialization.Json"",""_colors"":0},{""__type"":""DCSimple1:#MonoTests.System.Runtime.Serialization.Json"",""Foo"":""hello""}]",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               void SerializerDCArray2 (XmlWriter writer)
-               {
-                       List<Type> known = new List<Type> ();
-                       known.Add (typeof (DCWithEnum));
-                       known.Add (typeof (DCSimple1));
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (object []), known);
-                       object [] arr = new object [2];
-                       arr [0] = new DCWithEnum (); ((DCWithEnum)arr [0]).colors = Colors.Red;
-                       arr [1] = new DCSimple1 (); ((DCSimple1) arr [1]).Foo = "hello";
-
-                       using (XmlWriter w = writer) {
-                               ser.WriteObject (w, arr);
-                       }
-               }
-
-               [Test]
-               public void SerializerDCArray3Xml ()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (int []));
-                       StringWriter sw = new StringWriter ();
-                       int [] arr = new int [2];
-                       arr [0] = 1; arr [1] = 2;
-
-                       using (XmlWriter w = XmlWriter.Create (sw, settings)) {
-                               ser.WriteObject (w, arr);
-                       }
-
-                       Assert.AreEqual (
-                               @"<root type=""array""><item type=""number"">1</item><item type=""number"">2</item></root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializerDCArray3Json ()
-               {
-                       MemoryStream ms = new MemoryStream ();
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (int []));
-                       int [] arr = new int [2];
-                       arr [0] = 1; arr [1] = 2;
-
-                       using (XmlWriter w = JsonReaderWriterFactory.CreateJsonWriter (ms)) {
-                               ser.WriteObject (w, arr);
-                       }
-
-                       Assert.AreEqual (
-                               @"[1,2]",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               [Test]
-               // ... so, non-JSON XmlWriter is still accepted.
-               public void SerializeNonDCArrayXml ()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (SerializeNonDCArrayType));
-                       StringWriter sw = new StringWriter ();
-                       using (XmlWriter xw = XmlWriter.Create (sw, settings)) {
-                               ser.WriteObject (xw, new SerializeNonDCArrayType ());
-                       }
-                       Assert.AreEqual (@"<root type=""object""><IPAddresses type=""array"" /></root>",
-                               sw.ToString ());
-               }
-
-               [Test]
-               public void SerializeNonDCArrayJson ()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (SerializeNonDCArrayType));
-                       MemoryStream ms = new MemoryStream ();
-                       using (XmlWriter xw = JsonReaderWriterFactory.CreateJsonWriter (ms)) {
-                               ser.WriteObject (xw, new SerializeNonDCArrayType ());
-                       }
-                       Assert.AreEqual (@"{""IPAddresses"":[]}",
-                               Encoding.UTF8.GetString (ms.ToArray ()));
-               }
-
-               [Test]
-               public void SerializeNonDCArrayItems ()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (typeof (SerializeNonDCArrayType));
-                       StringWriter sw = new StringWriter ();
-                       using (XmlWriter xw = XmlWriter.Create (sw, settings)) {
-                               SerializeNonDCArrayType obj = new SerializeNonDCArrayType ();
-                               obj.IPAddresses = new NonDCItem [] {new NonDCItem () { Data = new byte [] {1, 2, 3, 4} } };
-                               ser.WriteObject (xw, obj);
-                       }
-
-                       XmlDocument doc = new XmlDocument ();
-                       doc.LoadXml (sw.ToString ());
-                       XmlNamespaceManager nsmgr = new XmlNamespaceManager (doc.NameTable);
-                       nsmgr.AddNamespace ("s", "http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization");
-                       nsmgr.AddNamespace ("n", "http://schemas.datacontract.org/2004/07/System.Net");
-                       nsmgr.AddNamespace ("a", "http://schemas.microsoft.com/2003/10/Serialization/Arrays");
-
-                       Assert.AreEqual (1, doc.SelectNodes ("/root/IPAddresses/item", nsmgr).Count, "#1");
-                       XmlElement el = doc.SelectSingleNode ("/root/IPAddresses/item/Data", nsmgr) as XmlElement;
-                       Assert.IsNotNull (el, "#3");
-                       Assert.AreEqual (4, el.SelectNodes ("item", nsmgr).Count, "#4");
-               }
-
-               [Test]
-               public void MaxItemsInObjectGraph1 ()
-               {
-                       // object count == maximum
-                       DataContractJsonSerializer s = new DataContractJsonSerializer (typeof (DCEmpty), null, 1, false, null, false);
-                       s.WriteObject (XmlWriter.Create (TextWriter.Null), new DCEmpty ());
-               }
-
-               [Test]
-               [ExpectedException (typeof (SerializationException))]
-               public void MaxItemsInObjectGraph2 ()
-               {
-                       // object count > maximum
-                       DataContractJsonSerializer s = new DataContractJsonSerializer (typeof (DCSimple1), null, 1, false, null, false);
-                       s.WriteObject (XmlWriter.Create (TextWriter.Null), new DCSimple1 ());
-               }
-
-               [Test]
-               public void DeserializeString ()
-               {
-                       Assert.AreEqual ("ABC", Deserialize ("\"ABC\"", typeof (string)));
-               }
-
-               [Test]
-               public void DeserializeInt ()
-               {
-                       Assert.AreEqual (5, Deserialize ("5", typeof (int)));
-               }
-
-               [Test]
-               public void DeserializeArray ()
-               {
-                       int [] ret = (int []) Deserialize ("[5,6,7]", typeof (int []));
-                       Assert.AreEqual (5, ret [0], "#1");
-                       Assert.AreEqual (6, ret [1], "#2");
-                       Assert.AreEqual (7, ret [2], "#3");
-               }
-
-               [Test]
-               public void DeserializeArrayUntyped ()
-               {
-                       object [] ret = (object []) Deserialize ("[5,6,7]", typeof (object []));
-                       Assert.AreEqual (5, ret [0], "#1");
-                       Assert.AreEqual (6, ret [1], "#2");
-                       Assert.AreEqual (7, ret [2], "#3");
-               }
-
-               [Test]
-               public void DeserializeMixedArray ()
-               {
-                       object [] ret = (object []) Deserialize ("[5,\"6\",false]", typeof (object []));
-                       Assert.AreEqual (5, ret [0], "#1");
-                       Assert.AreEqual ("6", ret [1], "#2");
-                       Assert.AreEqual (false, ret [2], "#3");
-               }
-
-               [Test]
-               [ExpectedException (typeof (SerializationException))]
-               public void DeserializeEmptyAsString ()
-               {
-                       // it somehow expects "root" which should have been already consumed.
-                       Deserialize ("", typeof (string));
-               }
-
-               [Test]
-               [ExpectedException (typeof (SerializationException))]
-               public void DeserializeEmptyAsInt ()
-               {
-                       // it somehow expects "root" which should have been already consumed.
-                       Deserialize ("", typeof (int));
-               }
-
-               [Test]
-               [ExpectedException (typeof (SerializationException))]
-               public void DeserializeEmptyAsDBNull ()
-               {
-                       // it somehow expects "root" which should have been already consumed.
-                       Deserialize ("", typeof (DBNull));
-               }
-
-               [Test]
-               public void DeserializeEmptyObjectAsString ()
-               {
-                       // looks like it is converted to ""
-                       Assert.AreEqual (String.Empty, Deserialize ("{}", typeof (string)));
-               }
-
-               [Test]
-               [ExpectedException (typeof (SerializationException))]
-               public void DeserializeEmptyObjectAsInt ()
-               {
-                       Deserialize ("{}", typeof (int));
-               }
-
-               [Test]
-               public void DeserializeEmptyObjectAsDBNull ()
-               {
-                       Assert.AreEqual (DBNull.Value, Deserialize ("{}", typeof (DBNull)));
-               }
-
-               [Test]
-               [ExpectedException (typeof (SerializationException))]
-               public void DeserializeEnumByName ()
-               {
-                       // enum is parsed into long
-                       Deserialize (@"""Red""", typeof (Colors));
-               }
-
-               [Test]
-               public void DeserializeEnum2 ()
-               {
-                       object o = Deserialize ("0", typeof (Colors));
-
-                       Assert.AreEqual (typeof (Colors), o.GetType (), "#de3");
-                       Colors c = (Colors) o;
-                       Assert.AreEqual (Colors.Red, c, "#de4");
-               }
-               
-               [Test]
-               [ExpectedException (typeof (SerializationException))]
-               public void DeserializeEnumInvalid ()
-               {
-                       Deserialize ("", typeof (Colors));
-               }
-
-               [Test]
-               [ExpectedException (typeof (SerializationException))]
-               [Ignore ("NotDotNet")] // 0.0 is an invalid Colors value.
-               public void DeserializeEnumInvalid3 ()
-               {
-                       //"0.0" instead of "0"
-                       Deserialize (
-                               "0.0",
-                               typeof (Colors));
-               }
-
-               [Test]
-               public void DeserializeEnumWithDC ()
-               {
-                       object o = Deserialize ("0", typeof (ColorsWithDC));
-                       
-                       Assert.AreEqual (typeof (ColorsWithDC), o.GetType (), "#de5");
-                       ColorsWithDC cdc = (ColorsWithDC) o;
-                       Assert.AreEqual (ColorsWithDC.Red, o, "#de6");
-               }
-
-               [Test]
-               [ExpectedException (typeof (SerializationException))]
-               [Ignore ("NotDotNet")] // 4 is an invalid Colors value.
-               [Category ("NotWorking")]
-               public void DeserializeEnumWithDCInvalid ()
-               {
-                       Deserialize (
-                               "4",
-                               typeof (ColorsWithDC));
-               }
-
-               [Test]
-               public void DeserializeDCWithEnum ()
-               {
-                       object o = Deserialize (
-                               "{\"_colors\":0}",
-                               typeof (DCWithEnum));
-
-                       Assert.AreEqual (typeof (DCWithEnum), o.GetType (), "#de7");
-                       DCWithEnum dc = (DCWithEnum) o;
-                       Assert.AreEqual (Colors.Red, dc.colors, "#de8");
-               }
-
-               [Test]
-               public void ReadObjectVerifyObjectNameFalse ()
-               {
-                       string xml = @"<any><Member1>bar</Member1></any>";
-                       object o = new DataContractJsonSerializer (typeof (VerifyObjectNameTestData))
-                               .ReadObject (XmlReader.Create (new StringReader (xml)), false);
-                       Assert.IsTrue (o is VerifyObjectNameTestData, "#1");
-
-                       string xml2 = @"<any><x:Member1 xmlns:x=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">bar</x:Member1></any>";
-                       o = new DataContractJsonSerializer (typeof (VerifyObjectNameTestData))
-                               .ReadObject (XmlReader.Create (new StringReader (xml2)), false);
-                       Assert.IsTrue (o is VerifyObjectNameTestData, "#2");
-               }
-
-               [Test]
-               [ExpectedException (typeof (SerializationException))]
-               public void ReadObjectVerifyObjectNameTrue ()
-               {
-                       string xml = @"<any><Member1>bar</Member1></any>";
-                       new DataContractJsonSerializer (typeof (VerifyObjectNameTestData))
-                               .ReadObject (XmlReader.Create (new StringReader (xml)), true);
-               }
-
-               [Test] // member name is out of scope
-               public void ReadObjectVerifyObjectNameTrue2 ()
-               {
-                       string xml = @"<root><Member2>bar</Member2></root>";
-                       new DataContractJsonSerializer (typeof (VerifyObjectNameTestData))
-                               .ReadObject (XmlReader.Create (new StringReader (xml)), true);
-               }
-
-               [Test]
-               public void ReadTypedObjectJson ()
-               {
-                       object o = Deserialize (@"{""__type"":""DCWithEnum:#MonoTests.System.Runtime.Serialization.Json"",""_colors"":0}", typeof (DCWithEnum));
-                       Assert.AreEqual (typeof (DCWithEnum), o.GetType ());
-               }
-
-               [Test]
-               public void ReadObjectDCArrayJson ()
-               {
-                       object o = Deserialize (@"[{""__type"":""DCWithEnum:#MonoTests.System.Runtime.Serialization.Json"",""_colors"":0}]",
-                               typeof (object []), typeof (DCWithEnum));
-                       Assert.AreEqual (typeof (object []), o.GetType (), "#1");
-                       object [] arr = (object []) o;
-                       Assert.AreEqual (typeof (DCWithEnum), arr [0].GetType (), "#2");
-               }
-
-               [Test]
-               public void ReadObjectDCArray2Json ()
-               {
-                       object o = Deserialize (@"[{""__type"":""DCWithEnum:#MonoTests.System.Runtime.Serialization.Json"",""_colors"":0},{""__type"":""DCSimple1:#MonoTests.System.Runtime.Serialization.Json"",""Foo"":""hello""}]",
-                               typeof (object []), typeof (DCWithEnum), typeof (DCSimple1));
-                       Assert.AreEqual (typeof (object []), o.GetType (), "#1");
-                       object [] arr = (object []) o;
-                       Assert.AreEqual (typeof (DCWithEnum), arr [0].GetType (), "#2");
-                       Assert.AreEqual (typeof (DCSimple1), arr [1].GetType (), "#3");
-               }
-
-               private object Deserialize (string xml, Type type, params Type [] knownTypes)
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer (type, knownTypes);
-                       XmlReader xr = JsonReaderWriterFactory.CreateJsonReader (Encoding.UTF8.GetBytes (xml), new XmlDictionaryReaderQuotas ());
-                       return ser.ReadObject (xr);
-               }
-
-               public T Deserialize<T>(string json)
-               {
-                       var bytes = Encoding.Unicode.GetBytes (json);
-                       using (MemoryStream stream = new MemoryStream (bytes)) {
-                               var serializer = new DataContractJsonSerializer (typeof(T));
-                               return (T)serializer.ReadObject (stream);       
-                       }
-               }
-
-               [Test]
-               public void IsStartObject ()
-               {
-                       DataContractJsonSerializer s = new DataContractJsonSerializer (typeof (DCSimple1));
-                       Assert.IsTrue (s.IsStartObject (XmlReader.Create (new StringReader ("<root></root>"))), "#1");
-                       Assert.IsFalse (s.IsStartObject (XmlReader.Create (new StringReader ("<dummy></dummy>"))), "#2");
-                       Assert.IsFalse (s.IsStartObject (XmlReader.Create (new StringReader ("<Foo></Foo>"))), "#3");
-                       Assert.IsFalse (s.IsStartObject (XmlReader.Create (new StringReader ("<root xmlns='urn:foo'></root>"))), "#4");
-               }
-
-               [Test]
-               public void SerializeNonDC2 ()
-               {
-                       var ser = new DataContractJsonSerializer (typeof (TestData));
-                       StringWriter sw = new StringWriter ();
-                       var obj = new TestData () { Foo = "foo", Bar = "bar", Baz = "baz" };
-
-                       // XML
-                       using (var xw = XmlWriter.Create (sw))
-                               ser.WriteObject (xw, obj);
-                       var s = sw.ToString ();
-                       // since the order is not preserved, we compare only contents.
-                       Assert.IsTrue (s.IndexOf ("<Foo>foo</Foo>") > 0, "#1-1");
-                       Assert.IsTrue (s.IndexOf ("<Bar>bar</Bar>") > 0, "#1-2");
-                       Assert.IsFalse (s.IndexOf ("<Baz>baz</Baz>") > 0, "#1-3");
-
-                       // JSON
-                       MemoryStream ms = new MemoryStream ();
-                       using (var xw = JsonReaderWriterFactory.CreateJsonWriter (ms))
-                               ser.WriteObject (ms, obj);
-                       s = new StreamReader (new MemoryStream (ms.ToArray ())).ReadToEnd ().Replace ('"', '/');
-                       // since the order is not preserved, we compare only contents.
-                       Assert.IsTrue (s.IndexOf ("/Foo/:/foo/") > 0, "#2-1");
-                       Assert.IsTrue (s.IndexOf ("/Bar/:/bar/") > 0, "#2-2");
-                       Assert.IsFalse (s.IndexOf ("/Baz/:/baz/") > 0, "#2-3");
-               }
-
-               [Test]
-               public void AlwaysEmitTypeInformation ()
-               {
-                       var ms = new MemoryStream ();
-                       var ds = new DataContractJsonSerializer (typeof (string), "root", null, 10, false, null, true);
-                       ds.WriteObject (ms, "foobar");
-                       var s = Encoding.UTF8.GetString (ms.ToArray ());
-                       Assert.AreEqual ("\"foobar\"", s, "#1");
-               }
-
-               [Test]
-               public void AlwaysEmitTypeInformation2 ()
-               {
-                       var ms = new MemoryStream ();
-                       var ds = new DataContractJsonSerializer (typeof (TestData), "root", null, 10, false, null, true);
-                       ds.WriteObject (ms, new TestData () { Foo = "foo"});
-                       var s = Encoding.UTF8.GetString (ms.ToArray ());
-                       Assert.AreEqual (@"{""__type"":""TestData:#MonoTests.System.Runtime.Serialization.Json"",""Bar"":null,""Foo"":""foo""}", s, "#1");
-               }
-
-               [Test]
-               public void AlwaysEmitTypeInformation3 ()
-               {
-                       var ms = new MemoryStream ();
-                       var ds = new DataContractJsonSerializer (typeof (TestData), "root", null, 10, false, null, false);
-                       ds.WriteObject (ms, new TestData () { Foo = "foo"});
-                       var s = Encoding.UTF8.GetString (ms.ToArray ());
-                       Assert.AreEqual (@"{""Bar"":null,""Foo"":""foo""}", s, "#1");
-               }
-
-               [Test]
-               public void TestNonpublicDeserialization ()
-               {
-                       string s1= @"{""Bar"":""bar"", ""Foo"":""foo"", ""Baz"":""baz""}";
-                       TestData o1 = ((TestData)(new DataContractJsonSerializer (typeof (TestData)).ReadObject (JsonReaderWriterFactory.CreateJsonReader (Encoding.UTF8.GetBytes (s1), new XmlDictionaryReaderQuotas ()))));
-
-                       Assert.AreEqual (null, o1.Baz, "#1");
-
-                        string s2 = @"{""TestData"":[{""key"":""key1"",""value"":""value1""}]}";
-                        KeyValueTestData o2 = ((KeyValueTestData)(new DataContractJsonSerializer (typeof (KeyValueTestData)).ReadObject (JsonReaderWriterFactory.CreateJsonReader (Encoding.UTF8.GetBytes (s2), new XmlDictionaryReaderQuotas ()))));
-
-                       Assert.AreEqual (1, o2.TestData.Count, "#2");
-                       Assert.AreEqual ("key1", o2.TestData[0].Key, "#3");
-                       Assert.AreEqual ("value1", o2.TestData[0].Value, "#4");
-               }
-
-               // [Test] use this case if you want to check lame silverlight parser behavior. Seealso #549756
-               public void QuotelessDeserialization ()
-               {
-                       string s1 = @"{FooMember:""value""}";
-                       var ds = new DataContractJsonSerializer (typeof (DCWithName));
-                       ds.ReadObject (new MemoryStream (Encoding.UTF8.GetBytes (s1)));
-
-                       string s2 = @"{FooMember:"" \""{dummy:string}\""""}";
-                       ds.ReadObject (new MemoryStream (Encoding.UTF8.GetBytes (s2)));
-               }
-
-               [Test]
-               [Category ("NotWorking")]
-               public void TypeIsNotPartsOfKnownTypes ()
-               {
-                       var dcs = new DataContractSerializer (typeof (string));
-                       Assert.AreEqual (0, dcs.KnownTypes.Count, "KnownTypes #1");
-                       var dcjs = new DataContractJsonSerializer (typeof (string));
-                       Assert.AreEqual (0, dcjs.KnownTypes.Count, "KnownTypes #2");
-               }
-
-               [Test]
-               public void ReadWriteNullObject ()
-               {
-                       DataContractJsonSerializer dcjs = new DataContractJsonSerializer (typeof (string));
-                       using (MemoryStream ms = new MemoryStream ()) {
-                               dcjs.WriteObject (ms, null);
-                               ms.Position = 0;
-                               using (StreamReader sr = new StreamReader (ms)) {
-                                       string data = sr.ReadToEnd ();
-                                       Assert.AreEqual ("null", data, "WriteObject(stream,null)");
-
-                                       ms.Position = 0;
-                                       Assert.IsNull (dcjs.ReadObject (ms), "ReadObject(stream)");
-                               }
-                       };
-               }
-
-               object ReadWriteObject (Type type, object obj, string expected)
-               {
-                       using (MemoryStream ms = new MemoryStream ()) {
-                               DataContractJsonSerializer dcjs = new DataContractJsonSerializer (type);
-                               dcjs.WriteObject (ms, obj);
-                               ms.Position = 0;
-                               using (StreamReader sr = new StreamReader (ms)) {
-                                       Assert.AreEqual (expected, sr.ReadToEnd (), "WriteObject");
-
-                                       ms.Position = 0;
-                                       return dcjs.ReadObject (ms);
-                               }
-                       }
-               }
-
-               [Test]
-               [Ignore ("Wrong test case. See bug #573691")]
-               public void ReadWriteObject_Single_SpecialCases ()
-               {
-                       Assert.IsTrue (Single.IsNaN ((float) ReadWriteObject (typeof (float), Single.NaN, "NaN")));
-                       Assert.IsTrue (Single.IsNegativeInfinity ((float) ReadWriteObject (typeof (float), Single.NegativeInfinity, "-INF")));
-                       Assert.IsTrue (Single.IsPositiveInfinity ((float) ReadWriteObject (typeof (float), Single.PositiveInfinity, "INF")));
-               }
-
-               [Test]
-               [Ignore ("Wrong test case. See bug #573691")]
-               public void ReadWriteObject_Double_SpecialCases ()
-               {
-                       Assert.IsTrue (Double.IsNaN ((double) ReadWriteObject (typeof (double), Double.NaN, "NaN")));
-                       Assert.IsTrue (Double.IsNegativeInfinity ((double) ReadWriteObject (typeof (double), Double.NegativeInfinity, "-INF")));
-                       Assert.IsTrue (Double.IsPositiveInfinity ((double) ReadWriteObject (typeof (double), Double.PositiveInfinity, "INF")));
-               }
-
-               [Test]
-               public void ReadWriteDateTime ()
-               {
-                       var ms = new MemoryStream ();
-                       DataContractJsonSerializer serializer = new DataContractJsonSerializer (typeof (Query));
-                       Query query = new Query () {
-                               StartDate = DateTime.SpecifyKind (new DateTime (2010, 3, 4, 5, 6, 7), DateTimeKind.Utc),
-                               EndDate = DateTime.SpecifyKind (new DateTime (2010, 4, 5, 6, 7, 8), DateTimeKind.Utc)
-                               };
-                       serializer.WriteObject (ms, query);
-                       Assert.AreEqual ("{\"StartDate\":\"\\/Date(1267679167000)\\/\",\"EndDate\":\"\\/Date(1270447628000)\\/\"}", Encoding.UTF8.GetString (ms.ToArray ()), "#1");
-                       ms.Position = 0;
-                       Console.WriteLine (new StreamReader (ms).ReadToEnd ());
-                       ms.Position = 0;
-                       var q = (Query) serializer.ReadObject(ms);
-                       Assert.AreEqual (query.StartDate, q.StartDate, "#2");
-                       Assert.AreEqual (query.EndDate, q.EndDate, "#3");
-               }
-
-               [DataContract(Name = "DateTest")]
-               public class DateTest
-               {
-                       [DataMember(Name = "should_have_value")]
-                       public DateTime? ShouldHaveValue { get; set; }
-               }
-
-               //
-               // This tests both the extended format "number-0500" as well
-               // as the nullable field in the structure
-               [Test]
-               public void BugXamarin163 ()
-               {
-                       string json = @"{""should_have_value"":""\/Date(1277355600000)\/""}";
-
-                       byte[] bytes = global::System.Text.Encoding.UTF8.GetBytes(json);
-                       Stream inputStream = new MemoryStream(bytes);
-                       
-                       DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DateTest));
-                       DateTest t = serializer.ReadObject(inputStream) as DateTest;
-                       Assert.AreEqual (634129524000000000, t.ShouldHaveValue.Value.Ticks, "#1");
-               }
-
-               [Test]
-               public void NullableFieldsShouldSupportNullValue ()
-               {
-                       string json = @"{""should_have_value"":null}";
-                       var inputStream = new MemoryStream (Encoding.UTF8.GetBytes (json));
-                       DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DateTest));
-                       Console.WriteLine ("# serializer assembly: {0}", serializer.GetType ().Assembly.Location);
-                       DateTest t = serializer.ReadObject (inputStream) as DateTest;
-                       Assert.AreEqual (false, t.ShouldHaveValue.HasValue, "#2");
-               }
-               
-               [Test]
-               public void DeserializeNullMember ()
-               {
-                       var ds = new DataContractJsonSerializer (typeof (ClassA));
-                       var stream = new MemoryStream ();
-                       var a = new ClassA ();
-                       ds.WriteObject (stream, a);
-                       stream.Position = 0;
-                       a = (ClassA) ds.ReadObject (stream);
-                       Assert.IsNull (a.B, "#1");
-               }
-
-               [Test]
-               public void OnDeserializationMethods ()
-               {
-                       var ds = new DataContractJsonSerializer (typeof (GSPlayerListErg));
-                       var obj = new GSPlayerListErg ();
-                       var ms = new MemoryStream ();
-                       ds.WriteObject (ms, obj);
-                       ms.Position = 0;
-                       ds.ReadObject (ms);
-                       Assert.IsTrue (GSPlayerListErg.A, "A");
-                       Assert.IsTrue (GSPlayerListErg.B, "B");
-                       Assert.IsTrue (GSPlayerListErg.C, "C");
-               }
-               
-               [Test]
-               public void WriteChar ()
-               {
-                       DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof (CharTest));
-                       using (MemoryStream ms = new MemoryStream()) {
-                               serializer.WriteObject(ms, new CharTest ());
-                               ms.Position = 0L;
-                               using (StreamReader reader = new StreamReader(ms)) {
-                                       reader.ReadToEnd();
-                               }
-                       }
-               }
-
-               [Test]
-               public void DictionarySerialization ()
-               {
-                       var dict = new MyDictionary<string,string> ();
-                       dict.Add ("key", "value");
-                       var serializer = new DataContractJsonSerializer (dict.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, dict);
-                       stream.Position = 0;
-
-                       Assert.AreEqual ("[{\"Key\":\"key\",\"Value\":\"value\"}]", new StreamReader (stream).ReadToEnd (), "#1");
-                       stream.Position = 0;
-                       dict = (MyDictionary<string,string>) serializer.ReadObject (stream);
-                       Assert.AreEqual (1, dict.Count, "#2");
-                       Assert.AreEqual ("value", dict ["key"], "#3");
-               }
-
-               [Test]
-               public void ExplicitCustomDictionarySerialization ()
-               {
-                       var dict = new MyExplicitDictionary<string,string> ();
-                       dict.Add ("key", "value");
-                       var serializer = new DataContractJsonSerializer (dict.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, dict);
-                       stream.Position = 0;
-
-                       Assert.AreEqual ("[{\"Key\":\"key\",\"Value\":\"value\"}]", new StreamReader (stream).ReadToEnd (), "#1");
-                       stream.Position = 0;
-                       dict = (MyExplicitDictionary<string,string>) serializer.ReadObject (stream);
-                       Assert.AreEqual (1, dict.Count, "#2");
-                       Assert.AreEqual ("value", dict ["key"], "#3");
-               }
-
-               [Test]
-               public void Bug13485 ()
-               {
-                       const string json = "{ \"Name\" : \"Test\", \"Value\" : \"ValueA\" }";
-
-                       string result = string.Empty;
-                       var serializer = new DataContractJsonSerializer (typeof (Bug13485Type));
-                       Bug13485Type entity;
-                       using (var stream = new MemoryStream (Encoding.UTF8.GetBytes (json)))
-                               entity = (Bug13485Type) serializer.ReadObject (stream);
-
-                       result = entity.GetValue;
-                       Assert.AreEqual ("ValueA", result, "#1");
-               }
-
-               [DataContract(Name = "UriTest")]
-               public class UriTest
-               {
-                       [DataMember(Name = "members")]
-                       public Uri MembersRelativeLink { get; set; }
-               }
-
-               [Test]
-               public void Bug15169 ()
-               {
-                       const string json = "{\"members\":\"foo/bar/members\"}";
-                       var serializer = new DataContractJsonSerializer (typeof (UriTest));
-                       UriTest entity;
-                       using (var stream = new MemoryStream (Encoding.UTF8.GetBytes (json)))
-                               entity = (UriTest) serializer.ReadObject (stream);
-
-                       Assert.AreEqual ("foo/bar/members", entity.MembersRelativeLink.ToString ());
-               }
-               
-               #region Test methods for collection serialization
-               
-               [Test]
-               public void TestArrayListSerialization ()
-               {
-                       var collection = new ArrayListContainer ();
-                       var expectedOutput = "{\"Items\":[\"banana\",\"apple\"]}";
-                       var expectedItemsCount = 4;
-                       
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-
-                       stream.Position = 0;
-                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
-
-                       stream.Position = 0;
-                       collection = (ArrayListContainer) serializer.ReadObject (stream);
-                       
-                       Assert.AreEqual (expectedItemsCount, collection.Items.Count, "#2");
-               }
-               
-               [Test]
-               [ExpectedException (typeof (InvalidDataContractException))]
-               public void TestBitArraySerialization ()
-               {
-                       var collection = new BitArrayContainer ();
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-               }
-               
-               [Test]
-               public void TestHashtableSerialization ()
-               {
-                       var collection = new HashtableContainer ();
-                       var expectedOutput = "{\"Items\":[{\"Key\":\"key1\",\"Value\":\"banana\"},{\"Key\":\"key2\",\"Value\":\"apple\"}]}";
-                       
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-
-                       stream.Position = 0;
-                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
-               }
-               
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void TestHashtableDeserialization ()
-               {
-                       var collection = new HashtableContainer ();
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-                       
-                       stream.Position = 0;
-                       serializer.ReadObject (stream);
-               }
-               
-               [Test]
-               [ExpectedException (typeof (InvalidDataContractException))]
-               public void TestQueueSerialization ()
-               {
-                       var collection = new QueueContainer ();
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-               }
-               
-               [Test]
-               public void TestSortedListSerialization ()
-               {
-                       var collection = new SortedListContainer ();
-                       var expectedOutput = "{\"Items\":[{\"Key\":\"key1\",\"Value\":\"banana\"},{\"Key\":\"key2\",\"Value\":\"apple\"}]}";
-                       
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-
-                       stream.Position = 0;
-                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
-               }
-               
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void TestSortedListDeserialization ()
-               {
-                       var collection = new SortedListContainer ();
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-                       
-                       stream.Position = 0;
-                       serializer.ReadObject (stream);
-               }
-               
-               [Test]
-               [ExpectedException (typeof (InvalidDataContractException))]
-               public void TestStackSerialization ()
-               {
-                       var collection = new StackContainer ();
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-               }
-               
-               [Test]
-               public void TestEnumerableWithAddSerialization ()
-               {
-                       var collection = new EnumerableWithAddContainer ();
-                       var expectedOutput = "{\"Items\":[\"banana\",\"apple\"]}";
-                       var expectedItemsCount = 4;
-                       
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-
-                       stream.Position = 0;
-                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
-
-                       stream.Position = 0;
-                       collection = (EnumerableWithAddContainer) serializer.ReadObject (stream);
-                       
-                       Assert.AreEqual (expectedItemsCount, collection.Items.Count, "#2");
-               }
-               
-               [Test]
-               [ExpectedException (typeof (InvalidDataContractException))]
-               public void TestEnumerableWithSpecialAddSerialization ()
-               {
-                       var collection = new EnumerableWithSpecialAddContainer ();                      
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-               }
-       
-               [Test]
-               public void TestHashSetSerialization ()
-               {
-                       var collection = new GenericHashSetContainer ();
-                       var expectedOutput = "{\"Items\":[\"banana\",\"apple\"]}";
-                       var expectedItemsCount = 2;
-                       
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-
-                       stream.Position = 0;
-                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
-
-                       stream.Position = 0;
-                       collection = (GenericHashSetContainer) serializer.ReadObject (stream);
-                       
-                       Assert.AreEqual (expectedItemsCount, collection.Items.Count, "#2");
-               }
-               
-               [Test]
-               public void TestLinkedListSerialization ()
-               {
-                       var collection = new GenericLinkedListContainer ();
-                       var expectedOutput = "{\"Items\":[\"banana\",\"apple\"]}";
-                       var expectedItemsCount = 4;
-                       
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-
-                       stream.Position = 0;
-                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
-
-                       stream.Position = 0;
-                       collection = (GenericLinkedListContainer) serializer.ReadObject (stream);
-                       
-                       Assert.AreEqual (expectedItemsCount, collection.Items.Count, "#2");
-               }
-               
-               [Test]
-               [ExpectedException (typeof (InvalidDataContractException))]
-               public void TestGenericQueueSerialization ()
-               {
-                       var collection = new GenericQueueContainer ();                  
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-               }
-               
-               [Test]
-               [ExpectedException (typeof (InvalidDataContractException))]
-               public void TestGenericStackSerialization ()
-               {
-                       var collection = new GenericStackContainer ();                  
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-               }
-               
-               [Test]
-               public void TestGenericDictionarySerialization ()
-               {
-                       var collection = new GenericDictionaryContainer ();                     
-                       var expectedOutput = "{\"Items\":[{\"Key\":\"key1\",\"Value\":\"banana\"},{\"Key\":\"key2\",\"Value\":\"apple\"}]}";
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-                       
-                       stream.Position = 0;
-                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
-               }
-               
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void TestGenericDictionaryDeserialization ()
-               {
-                       var collection = new GenericDictionaryContainer ();                     
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-                       
-                       stream.Position = 0;
-                       serializer.ReadObject (stream);
-               }
-               
-               [Test]
-               public void TestGenericSortedListSerialization ()
-               {
-                       var collection = new GenericSortedListContainer ();                     
-                       var expectedOutput = "{\"Items\":[{\"Key\":\"key1\",\"Value\":\"banana\"},{\"Key\":\"key2\",\"Value\":\"apple\"}]}";
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-                       
-                       stream.Position = 0;
-                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
-               }
-               
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void TestGenericSortedListDeserialization ()
-               {
-                       var collection = new GenericSortedListContainer ();                     
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-                       
-                       stream.Position = 0;
-                       serializer.ReadObject (stream);
-               }
-               
-               [Test]
-               public void TestGenericSortedDictionarySerialization ()
-               {
-                       var collection = new GenericSortedDictionaryContainer ();                       
-                       var expectedOutput = "{\"Items\":[{\"Key\":\"key1\",\"Value\":\"banana\"},{\"Key\":\"key2\",\"Value\":\"apple\"}]}";
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-                       
-                       stream.Position = 0;
-                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
-               }
-               
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void TestGenericSortedDictionaryDeserialization ()
-               {
-                       var collection = new GenericSortedDictionaryContainer ();                       
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-                       
-                       stream.Position = 0;
-                       serializer.ReadObject (stream);
-               }
-               
-               [Test]
-               public void TestGenericEnumerableWithAddSerialization ()
-               {
-                       var collection = new GenericEnumerableWithAddContainer ();
-                       var expectedOutput = "{\"Items\":[\"banana\",\"apple\"]}";
-                       var expectedItemsCount = 4;
-                       
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-
-                       stream.Position = 0;
-                       Assert.AreEqual (expectedOutput, new StreamReader (stream).ReadToEnd (), "#1");
-
-                       stream.Position = 0;
-                       collection = (GenericEnumerableWithAddContainer) serializer.ReadObject (stream);
-                       
-                       Assert.AreEqual (expectedItemsCount, collection.Items.Count, "#2");
-               }
-               
-               [Test]
-               [ExpectedException (typeof (InvalidDataContractException))]
-               public void TestGenericEnumerableWithSpecialAddSerialization ()
-               {
-                       var collection = new GenericEnumerableWithSpecialAddContainer ();                       
-                       var serializer = new DataContractJsonSerializer (collection.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, collection);
-               }
-               
-               [Test]
-               [ExpectedException (typeof (InvalidDataContractException))]
-               public void TestNonCollectionGetOnlyProperty ()
-               {
-                       var o = new NonCollectionGetOnlyContainer ();                   
-                       var serializer = new DataContractJsonSerializer (o.GetType ());
-                       var stream = new MemoryStream ();
-                       serializer.WriteObject (stream, o);
-               }
-               
-               // properly deserialize object with a polymorphic property (known derived type)
-               [Test]
-               public void Bug23058()
-               {
-                       string serializedObj = @"{""PolymorphicProperty"":{""__type"":""KnownDerivedType:#MonoTests.System.Runtime.Serialization.Json"",""BaseTypeProperty"":""Base"",""DerivedProperty"":""Derived 1""},""Name"":""Parent2""}";
-                       ParentType deserializedObj = Deserialize<ParentType> (serializedObj);
-
-                       Assert.AreEqual (deserializedObj.PolymorphicProperty.GetType ().FullName, "MonoTests.System.Runtime.Serialization.Json.KnownDerivedType");
-                       Assert.AreEqual (deserializedObj.PolymorphicProperty.BaseTypeProperty, "Base");
-                       Assert.AreEqual ((deserializedObj.PolymorphicProperty as KnownDerivedType).DerivedProperty, "Derived 1");
-                       Assert.AreEqual (deserializedObj.Name, "Parent2");
-               }
-
-               // properly deserialize object with a polymorphic property (base type with __type hint)
-               [Test]
-               public void DeserializeBaseTypePropHint()
-               {
-                       string serializedObj = @"{""PolymorphicProperty"":{""__type"":""BaseType:#MonoTests.System.Runtime.Serialization.Json"",""BaseTypeProperty"":""Base""},""Name"":""Parent2""}";
-                       ParentType deserializedObj = Deserialize<ParentType> (serializedObj);
-
-                       Assert.AreEqual (deserializedObj.PolymorphicProperty.GetType ().FullName, "MonoTests.System.Runtime.Serialization.Json.BaseType");
-                       Assert.AreEqual (deserializedObj.PolymorphicProperty.BaseTypeProperty, "Base");
-               }
-
-               // properly deserialize object with a polymorphic property (base type with __type hint)
-               [Test]
-               public void DeserializeBaseTypePropNoHint()
-               {
-                       string serializedObj = @"{""PolymorphicProperty"":{""BaseTypeProperty"":""Base""},""Name"":""Parent2""}";
-                       ParentType deserializedObj = Deserialize<ParentType> (serializedObj);
-
-                       Assert.AreEqual (deserializedObj.PolymorphicProperty.GetType ().FullName, "MonoTests.System.Runtime.Serialization.Json.BaseType");
-                       Assert.AreEqual (deserializedObj.PolymorphicProperty.BaseTypeProperty, "Base");
-               }
-
-               // properly fail deserializing object with a polymorphic property (unknown derived type)
-               [ExpectedException (typeof (SerializationException))]
-               [Test]
-               public void FailDeserializingUnknownTypeProp()
-               {
-                       string serializedObj = @"{""PolymorphicProperty"":{""__type"":""UnknownDerivedType:#MonoTests.System.Runtime.Serialization.Json"",""BaseTypeProperty"":""Base"",""DerivedProperty"":""Derived 1""},""Name"":""Parent2""}";
-                       ParentType deserializedObj = Deserialize<ParentType> (serializedObj);
-               }
-
-               [Test]
-               public void SubclassTest ()
-               {
-                       var knownTypes = new List<Type> { typeof(IntList) };
-                       var serializer = new DataContractJsonSerializer(typeof(ListOfNumbers), knownTypes);
-
-                       string json = "{\"Numbers\": [85]}";
-                       using (var stream = new MemoryStream(UTF8Encoding.Default.GetBytes(json)))
-                       {
-                               var nums = (ListOfNumbers)serializer.ReadObject(stream);
-                               Assert.AreEqual (1, nums.Numbers.Count);
-                       }
-               }
-               [DataContract]
-               public class ListOfNumbers
-               {
-                       [DataMember]
-                       public IntList Numbers;
-               }
-
-               public class IntList : List<int>{}
-               #endregion
-
-               [Test]
-               public void DefaultValueDeserialization ()
-               {
-                       // value type
-                       var person = new Person { name = "John" };
-                       using (var ms = new MemoryStream()) {
-                               var serializer = new DataContractJsonSerializer (typeof (Person), new DataContractJsonSerializerSettings {
-                                       SerializeReadOnlyTypes = true,
-                                       UseSimpleDictionaryFormat = true
-                                       });
-                               serializer.WriteObject (ms, person);
-                       }
-
-                       // reference type
-                       var person2 = new PersonWithContact {
-                               name = "Jane",
-                               contact = new Contact { url = "localhost", email = "jane@localhost" } };
-                       using (var ms = new MemoryStream ()) {
-                               var serializer = new DataContractJsonSerializer (typeof (PersonWithContact), new DataContractJsonSerializerSettings {
-                                       SerializeReadOnlyTypes = true,
-                                       UseSimpleDictionaryFormat = true
-                                       });
-                               serializer.WriteObject (ms, person2);
-                       }
-               }
-
-               [Test]
-               public void Bug15028()
-               {
-                       DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Bug15028));
-                       using (MemoryStream memoryStream = new MemoryStream())
-                       {
-                               ser.WriteObject(memoryStream, new Bug15028());
-                               string output = Encoding.Default.GetString(memoryStream.ToArray());
-                               Assert.AreEqual(@"{""Int0"":1,""Int1"":1,""IntZero1"":0,""Str0"":"""",""Str1"":"""",""StrNull1"":null}", output);
-                       }
-               }
-       }
-       
-
-       [DataContract]
-       public class Bug15028
-       {
-               [DataMember(EmitDefaultValue = false)]
-               public string StrNull0 { get; private set; }
-
-               [DataMember(EmitDefaultValue = false)]
-               public string Str0 { get; private set; }
-
-               [DataMember(EmitDefaultValue = true)]
-               public string StrNull1 { get; private set; }
-
-               [DataMember(EmitDefaultValue = true)]
-               public string Str1 { get; private set; }
-
-               [DataMember(EmitDefaultValue = false)]
-               public int IntZero0 { get; private set; }
-
-               [DataMember(EmitDefaultValue = false)]
-               public int Int0 { get; private set; }
-
-               [DataMember(EmitDefaultValue = true)]
-               public int IntZero1 { get; private set; }
-
-               [DataMember(EmitDefaultValue = true)]
-               public int Int1 { get; private set; }
-
-               public Bug15028()
-               {
-                       Str0 = string.Empty;
-                       Str1 = string.Empty;
-                       Int0 = 1;
-                       Int1 = 1;
-               }
-       }
-
-       public class CharTest
-       {
-               public char Foo;
-       }
-
-       public class TestData
-       {
-               public string Foo { get; set; }
-               public string Bar { get; set; }
-               internal string Baz { get; set; }
-       }
-
-       public enum Colors {
-               Red, Green, Blue
-       }
-
-       [DataContract (Name = "_ColorsWithDC")]
-       public enum ColorsWithDC {
-
-               [EnumMember (Value = "_Red")]
-               Red, 
-               [EnumMember]
-               Green, 
-               Blue
-       }
-
-
-       public enum ColorsEnumMemberNoDC {
-               [EnumMember (Value = "_Red")]
-               Red, 
-               [EnumMember]
-               Green, 
-               Blue
-       }
-
-       [DataContract]
-       public class DCWithEnum {
-               [DataMember (Name = "_colors")]
-               public Colors colors;
-       }
-
-       [DataContract]
-       public class DCEmpty
-       {
-               // serializer doesn't touch it.
-               public string Foo = "TEST";
-       }
-
-       [DataContract]
-       public class DCSimple1
-       {
-               [DataMember]
-               public string Foo = "TEST";
-       }
-
-       [DataContract]
-       public class DCHasNonDC
-       {
-               [DataMember]
-               public NonDC Hoge= new NonDC ();
-       }
-
-       public class NonDC
-       {
-               public string Whee = "whee!";
-       }
-
-       [DataContract]
-       public class DCHasSerializable
-       {
-               [DataMember]
-               public SimpleSer1 Ser = new SimpleSer1 ();
-       }
-
-       [DataContract (Name = "Foo")]
-       public class DCWithName
-       {
-               [DataMember (Name = "FooMember")]
-               public string DMWithName = "value";
-       }
-
-       [DataContract (Name = "")]
-       public class DCWithEmptyName
-       {
-               [DataMember]
-               public string Foo;
-       }
-
-       [DataContract (Name = null)]
-       public class DCWithNullName
-       {
-               [DataMember]
-               public string Foo;
-       }
-
-       [DataContract (Namespace = "")]
-       public class DCWithEmptyNamespace
-       {
-               [DataMember]
-               public string Foo;
-       }
-
-       [Serializable]
-       public class SimpleSer1
-       {
-               public string Doh = "doh!";
-       }
-
-       public class Wrapper
-       {
-               [DataContract]
-               public class DCWrapped
-               {
-               }
-       }
-
-       [DataContract]
-       public class CollectionContainer
-       {
-               Collection<string> items = new Collection<string> ();
-
-               [DataMember]
-               public Collection<string> Items {
-                       get { return items; }
-               }
-       }
-
-       [CollectionDataContract]
-       public class DataCollection<T> : Collection<T>
-       {
-       }
-
-       [DataContract]
-       public class DataCollectionContainer
-       {
-               DataCollection<string> items = new DataCollection<string> ();
-
-               [DataMember]
-               public DataCollection<string> Items {
-                       get { return items; }
-               }
-       }
-
-       [DataContract]
-       class SerializeNonDCArrayType
-       {
-               [DataMember]
-               public NonDCItem [] IPAddresses = new NonDCItem [0];
-       }
-
-       public class NonDCItem
-       {
-               public byte [] Data { get; set; }
-       }
-
-       [DataContract]
-       public class VerifyObjectNameTestData
-       {
-               [DataMember]
-               string Member1 = "foo";
-       }
-
-       [Serializable]
-       public class KeyValueTestData {
-               public List<KeyValuePair<string,string>> TestData = new List<KeyValuePair<string,string>>();
-       }
-
-       [DataContract] // bug #586169
-       public class Query
-       {
-               [DataMember (Order=1)]
-               public DateTime StartDate { get; set; }
-               [DataMember (Order=2)]
-               public DateTime EndDate { get; set; }
-       }
-
-       public class ClassA {
-               public ClassB B { get; set; }
-       }
-
-       public class ClassB
-       {
-       }
-
-       public class GSPlayerListErg
-       {
-               public GSPlayerListErg ()
-               {
-                       Init ();
-               }
-
-               void Init ()
-               {
-                       C = true;
-                       ServerTimeUTC = DateTime.SpecifyKind (DateTime.MinValue, DateTimeKind.Utc);
-               }
-
-               [OnDeserializing]
-               public void OnDeserializing (StreamingContext c)
-               {
-                       A = true;
-                       Init ();
-               }
-
-               [OnDeserialized]
-               void OnDeserialized (StreamingContext c)
-               {
-                       B = true;
-               }
-
-               public static bool A, B, C;
-
-               [DataMember (Name = "T")]
-               public long CodedServerTimeUTC { get; set; }
-               public DateTime ServerTimeUTC { get; set; }
-       }
-
-       #region polymorphism test helper classes
-
-       [DataContract]
-       [KnownType (typeof (KnownDerivedType))]
-       public class ParentType
-       {
-               [DataMember]
-               public string Name { get; set; }
-
-               [DataMember]
-               public BaseType PolymorphicProperty { get; set; }
-       }
-
-       [DataContract]
-       public class BaseType
-       {
-               [DataMember]
-               public string BaseTypeProperty { get; set; }
-       }
-
-       [DataContract]
-       public class KnownDerivedType : BaseType
-       {
-               [DataMemberAttribute]
-               public string DerivedProperty { get; set; }
-       }
-
-       [DataContract]
-       public class UnknownDerivedType : BaseType
-       {
-               [DataMember]
-               public string DerivedProperty { get; set; }
-       }
-
-       #endregion
-}
-
-[DataContract]
-class GlobalSample1
-{
-}
-
-
-public class MyDictionary<K, V> : System.Collections.Generic.IDictionary<K, V>
-{
-       Dictionary<K,V> dic = new Dictionary<K,V> ();
-
-       public void Add (K key, V value)
-       {
-               dic.Add (key,  value);
-       }
-
-       public bool ContainsKey (K key)
-       {
-               return dic.ContainsKey (key);
-       }
-
-       public ICollection<K> Keys {
-               get { return dic.Keys; }
-       }
-
-       public bool Remove (K key)
-       {
-               return dic.Remove (key);
-       }
-
-       public bool TryGetValue (K key, out V value)
-       {
-               return dic.TryGetValue (key, out value);
-       }
-
-       public ICollection<V> Values {
-               get { return dic.Values; }
-       }
-
-       public V this [K key] {
-               get { return dic [key]; }
-               set { dic [key] = value; }
-       }
-
-       IEnumerator IEnumerable.GetEnumerator ()
-       {
-               return dic.GetEnumerator ();
-       }
-
-       ICollection<KeyValuePair<K,V>> Coll {
-               get { return (ICollection<KeyValuePair<K,V>>) dic; }
-       }
-
-       public void Add (KeyValuePair<K, V> item)
-       {
-               Coll.Add (item);
-       }
-
-       public void Clear ()
-       {
-               dic.Clear ();
-       }
-
-       public bool Contains (KeyValuePair<K, V> item)
-       {
-               return Coll.Contains (item);
-       }
-
-       public void CopyTo (KeyValuePair<K, V> [] array, int arrayIndex)
-       {
-               Coll.CopyTo (array, arrayIndex);
-       }
-
-       public int Count {
-               get { return dic.Count; }
-       }
-
-       public bool IsReadOnly {
-               get { return Coll.IsReadOnly; }
-       }
-
-       public bool Remove (KeyValuePair<K, V> item)
-       {
-               return Coll.Remove (item);
-       }
-
-       public IEnumerator<KeyValuePair<K, V>> GetEnumerator ()
-       {
-               return Coll.GetEnumerator ();
-       }
-}
-
-public class MyExplicitDictionary<K, V> : IDictionary<K, V> {
-
-       Dictionary<K,V> dic = new Dictionary<K,V> ();
-
-       public void Add (K key, V value)
-       {
-               dic.Add (key,  value);
-       }
-
-       public bool ContainsKey (K key)
-       {
-               return dic.ContainsKey (key);
-       }
-
-       ICollection<K> IDictionary<K, V>.Keys {
-               get { return dic.Keys; }
-       }
-
-       public bool Remove (K key)
-       {
-               return dic.Remove (key);
-       }
-
-       public bool TryGetValue (K key, out V value)
-       {
-               return dic.TryGetValue (key, out value);
-       }
-
-       ICollection<V> IDictionary<K, V>.Values {
-               get { return dic.Values; }
-       }
-
-       public V this [K key] {
-               get { return dic [key]; }
-               set { dic [key] = value; }
-       }
-
-       IEnumerator IEnumerable.GetEnumerator ()
-       {
-               return dic.GetEnumerator ();
-       }
-
-       ICollection<KeyValuePair<K,V>> Coll {
-               get { return (ICollection<KeyValuePair<K,V>>) dic; }
-       }
-
-       public void Add (KeyValuePair<K, V> item)
-       {
-               Coll.Add (item);
-       }
-
-       public void Clear ()
-       {
-               dic.Clear ();
-       }
-
-       public bool Contains (KeyValuePair<K, V> item)
-       {
-               return Coll.Contains (item);
-       }
-
-       public void CopyTo (KeyValuePair<K, V> [] array, int arrayIndex)
-       {
-               Coll.CopyTo (array, arrayIndex);
-       }
-
-       public int Count {
-               get { return dic.Count; }
-       }
-
-       public bool IsReadOnly {
-               get { return Coll.IsReadOnly; }
-       }
-
-       public bool Remove (KeyValuePair<K, V> item)
-       {
-               return Coll.Remove (item);
-       }
-
-       public IEnumerator<KeyValuePair<K, V>> GetEnumerator ()
-       {
-               return Coll.GetEnumerator ();
-       }
-}
-
-[DataContract]
-public class Bug13485Type
-{
-       [DataMember]
-       public string Name { get; set; }
-
-       [DataMember (Name = "Value")]
-       private string Value { get; set; }
-
-       public string GetValue { get { return this.Value; } }
-}
-
-#region Test classes for Collection serialization
-
-[DataContract]
-       public abstract class CollectionContainer <V>
-       {
-               V items;
-
-               [DataMember]
-               public V Items
-               {
-                       get {
-                               if (items == null) items = Init ();
-                               return items;
-                       }
-               }
-               
-               public CollectionContainer ()
-               {
-                       Init ();
-               }
-       
-               protected abstract V Init ();
-       }
-       
-       [DataContract]
-       public class ArrayListContainer : CollectionContainer<ArrayList> {
-               protected override ArrayList Init ()
-               {
-                       return new ArrayList { "banana", "apple" };
-               }
-       }
-       
-       [DataContract]
-       public class BitArrayContainer : CollectionContainer<BitArray> {
-               protected override BitArray Init ()
-               {
-                       return new BitArray (new [] { false, true });
-               }
-       }
-       
-       [DataContract]
-       public class HashtableContainer : CollectionContainer<Hashtable> {
-               protected override Hashtable Init ()
-               {
-                       var ht = new Hashtable ();
-                       ht.Add ("key1", "banana");
-                       ht.Add ("key2", "apple");
-                       return ht;
-               }
-       }
-       
-       [DataContract]
-       public class QueueContainer : CollectionContainer<Queue> {
-               protected override Queue Init ()
-               {
-                       var q = new Queue ();
-                       q.Enqueue ("banana");
-                       q.Enqueue ("apple");
-                       return q;
-               }
-       }
-       
-       [DataContract]
-       public class SortedListContainer : CollectionContainer<SortedList> {
-               protected override SortedList Init ()
-               {
-                       var l = new SortedList ();
-                       l.Add ("key1", "banana");
-                       l.Add ("key2", "apple");
-                       return l;
-               }
-       }
-       
-       [DataContract]
-       public class StackContainer : CollectionContainer<Stack> {
-               protected override Stack Init ()
-               {
-                       var s = new Stack ();
-                       s.Push ("banana");
-                       s.Push ("apple");
-                       return s;
-               }
-       }
-
-       public class EnumerableWithAdd : IEnumerable
-       {
-               private ArrayList items;
-
-               public EnumerableWithAdd()
-               {
-                       items = new ArrayList();
-               }
-
-               public IEnumerator GetEnumerator()
-               {
-                       return items.GetEnumerator();
-               }
-
-               public void Add(object value)
-               {
-                       items.Add(value);
-               }
-
-               public int Count
-               {
-                       get {
-                               return items.Count;
-                       }
-               }
-       }
-
-       public class EnumerableWithSpecialAdd : IEnumerable
-       {
-               private ArrayList items;
-
-               public EnumerableWithSpecialAdd()
-               {
-                       items = new ArrayList();
-               }
-
-               public IEnumerator GetEnumerator()
-               {
-                       return items.GetEnumerator();
-               }
-
-               public void Add(object value, int index)
-               {
-                       items.Add(value);
-               }
-
-               public int Count
-               {
-                       get
-                       {
-                               return items.Count;
-                       }
-               }
-       }
-
-       [DataContract]
-       public class EnumerableWithAddContainer : CollectionContainer<EnumerableWithAdd>
-       {
-               protected override EnumerableWithAdd Init()
-               {
-                       var s = new EnumerableWithAdd();
-                       s.Add ("banana");
-                       s.Add ("apple");
-                       return s;
-               }
-       }
-
-       [DataContract]
-       public class EnumerableWithSpecialAddContainer : CollectionContainer<EnumerableWithSpecialAdd>
-       {
-               protected override EnumerableWithSpecialAdd Init()
-               {
-                       var s = new EnumerableWithSpecialAdd();
-                       s.Add("banana", 0);
-                       s.Add("apple", 0);
-                       return s;
-               }
-       }
-
-       [DataContract]
-       public class GenericDictionaryContainer : CollectionContainer<Dictionary<string, string>> {
-               protected override Dictionary<string, string> Init ()
-               {
-                       var d = new Dictionary<string, string> ();
-                       d.Add ("key1", "banana");
-                       d.Add ("key2", "apple");
-                       return d;
-               }
-       }
-
-       [DataContract]
-       public class GenericHashSetContainer : CollectionContainer<HashSet<string>> {
-               protected override HashSet<string> Init ()
-               {
-                       return new HashSet<string> { "banana", "apple" };
-               }
-       }
-
-       [DataContract]
-       public class GenericLinkedListContainer : CollectionContainer<LinkedList<string>> {
-               protected override LinkedList<string> Init ()
-               {
-                       var l = new LinkedList<string> ();
-                       l.AddFirst ("apple");
-                       l.AddFirst ("banana");
-                       return l;
-               }
-       }
-
-       [DataContract]
-       public class GenericListContainer : CollectionContainer<List<string>> {
-               protected override List<string> Init ()
-               {
-                       return new List<string> { "banana", "apple" };
-               }
-       }
-
-       [DataContract]
-       public class GenericQueueContainer : CollectionContainer<Queue<string>> {
-               protected override Queue<string> Init ()
-               {
-                       var q = new Queue<string> ();
-                       q.Enqueue ("banana");
-                       q.Enqueue ("apple" );
-                       return q;
-               }
-       }
-
-       [DataContract]
-       public class GenericSortedDictionaryContainer : CollectionContainer<SortedDictionary<string, string>> {
-               protected override SortedDictionary<string, string> Init ()
-               {
-                       var d = new SortedDictionary<string, string> ();
-                       d.Add ("key1", "banana");
-                       d.Add ("key2", "apple");
-                       return d;
-               }
-       }
-
-       [DataContract]
-       public class GenericSortedListContainer : CollectionContainer<SortedList<string, string>> {
-               protected override SortedList<string, string> Init ()
-               {
-                       var d = new SortedList<string, string> ();
-                       d.Add ("key1", "banana");
-                       d.Add ("key2", "apple");
-                       return d;
-               }
-       }
-
-       [DataContract]
-       public class GenericStackContainer : CollectionContainer<Stack<string>> {
-               protected override Stack<string> Init ()
-               {
-                       var s = new Stack<string> ();
-                       s.Push ("banana");
-                       s.Push ("apple" );
-                       return s;
-               }
-       }
-
-       public class GenericEnumerableWithAdd : IEnumerable<string>
-       {
-               private List<string> items;
-
-               public GenericEnumerableWithAdd()
-               {
-                       items = new List<string>();
-               }
-
-               IEnumerator IEnumerable.GetEnumerator()
-               {
-                       return items.GetEnumerator ();
-               }
-
-               public IEnumerator<string> GetEnumerator()
-               {
-                       return items.GetEnumerator ();
-               }
-
-               public void Add(string value)
-               {
-                       items.Add(value);
-               }
-
-               public int Count
-               {
-                       get {
-                               return items.Count;
-                       }
-               }
-       }
-
-       public class GenericEnumerableWithSpecialAdd : IEnumerable<string>
-       {
-               private List<string> items;
-
-               public GenericEnumerableWithSpecialAdd()
-               {
-                       items = new List<string>();
-               }
-
-               IEnumerator IEnumerable.GetEnumerator()
-               {
-                       return items.GetEnumerator ();
-               }
-
-               public IEnumerator<string> GetEnumerator()
-               {
-                       return items.GetEnumerator ();
-               }
-
-               public void Add(string value, int index)
-               {
-                       items.Add(value);
-               }
-
-               public int Count
-               {
-                       get
-                       {
-                               return items.Count;
-                       }
-               }
-       }
-
-       [DataContract]
-       public class GenericEnumerableWithAddContainer : CollectionContainer<GenericEnumerableWithAdd>
-       {
-               protected override GenericEnumerableWithAdd Init()
-               {
-                       var s = new GenericEnumerableWithAdd();
-                       s.Add ("banana");
-                       s.Add ("apple");
-                       return s;
-               }
-       }
-
-       [DataContract]
-       public class GenericEnumerableWithSpecialAddContainer : CollectionContainer<GenericEnumerableWithSpecialAdd>
-       {
-               protected override GenericEnumerableWithSpecialAdd Init()
-               {
-                       var s = new GenericEnumerableWithSpecialAdd();
-                       s.Add("banana", 0);
-                       s.Add("apple", 0);
-                       return s;
-               }
-       }       
-
-       [DataContract]
-       public class NonCollectionGetOnlyContainer
-       {
-               string _test = "my string";
-       
-               [DataMember]
-               public string MyString {
-                       get {
-                               return _test;
-                       }
-               }
-       }       
-
-#endregion
-
-#region DefaultValueDeserialization
-    [DataContract]
-    public class Person
-    {
-        [DataMember(EmitDefaultValue = false)]
-        public string name { get; set; }
-    }
-
-    [DataContract]
-    public class PersonWithContact
-    {
-        [DataMember(EmitDefaultValue = false)]
-        public string name { get; set; }
-
-        [DataMember(EmitDefaultValue = false)]
-        public Contact contact { get; set; }
-    }
-
-    [DataContract]
-    public class Contact
-    {
-        [DataMember(EmitDefaultValue = false)]
-        public string url { get; set; }
-
-        [DataMember(EmitDefaultValue = false)]
-        public string email{ get; set; }
-    }
-#endregion
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/JsonReaderTest.cs b/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/JsonReaderTest.cs
deleted file mode 100644 (file)
index c95c3b6..0000000
+++ /dev/null
@@ -1,883 +0,0 @@
-//
-// JsonReaderTest.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
-// Copyright 2014 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Runtime.Serialization.Json;
-using System.Text;
-using System.Threading;
-using System.Xml;
-using NUnit.Framework;
-
-namespace MonoTests.System.Runtime.Serialization.Json
-{
-       [TestFixture]
-       public class JsonReaderTest
-       {
-               XmlDictionaryReader reader;
-
-               Stream GetInput (string s)
-               {
-                       return new MemoryStream (Encoding.ASCII.GetBytes (s));
-               }
-
-               XmlDictionaryReader CreateReader (string s)
-               {
-                       return JsonReaderWriterFactory.CreateJsonReader (GetInput (s), new XmlDictionaryReaderQuotas ());
-               }
-
-               void AssertNode (int depth, string localName, XmlNodeType nodeType, string value, string type, XmlDictionaryReader reader, string label)
-               {
-                       Assert.AreEqual (localName, reader.LocalName, label + ".LocalName");
-                       Assert.AreEqual (nodeType, reader.NodeType, label + ".NodeType");
-                       Assert.AreEqual (value, reader.Value, label + ".Value");
-                       Assert.AreEqual (type, reader.GetAttribute ("type"), label + ".GetAttribute('type')");
-               }
-
-               // Constructors
-
-               [Test]
-               [ExpectedException (typeof (ArgumentNullException))]
-               public void ConstructorNullBytes ()
-               {
-                       JsonReaderWriterFactory.CreateJsonReader ((byte []) null, new XmlDictionaryReaderQuotas ());
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentNullException))]
-               public void ConstructorNullStream ()
-               {
-                       JsonReaderWriterFactory.CreateJsonReader ((Stream) null, new XmlDictionaryReaderQuotas ());
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentNullException))]
-               public void ConstructorNullReaderQuotas ()
-               {
-                       JsonReaderWriterFactory.CreateJsonReader (GetInput ("{}"), null);
-               }
-
-               [Test]
-               public void ConstructorNullEncodingAndReaderClose ()
-               {
-                       JsonReaderWriterFactory.CreateJsonReader (GetInput ("{}"), null, new XmlDictionaryReaderQuotas (), null);
-               }
-
-               // Close()
-
-               [Test]
-               public void CloseTwice ()
-               {
-                       reader = CreateReader ("{}");
-                       reader.Close ();
-                       reader.Close ();
-               }
-
-               [Test]
-               // hmm... [ExpectedException (typeof (InvalidOperationException))]
-               public void CloseAndRead ()
-               {
-                       reader = CreateReader ("{}");
-                       reader.Close ();
-                       reader.Read ();
-               }
-
-               [Test]
-               // hmm... [ExpectedException (typeof (InvalidOperationException))]
-               public void CloseAndMoveToFirstAttribute ()
-               {
-                       reader = CreateReader ("{}");
-                       reader.Close ();
-                       reader.MoveToFirstAttribute ();
-               }
-
-               // Read() several top-level types
-
-               [Test]
-               public void ReadStateEmpty ()
-               {
-                       reader = CreateReader ("");
-                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
-                       reader.Read ();
-                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#2");
-                       reader.Close ();
-                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#3");
-               }
-
-               [Test]
-               public void ReadStateEmpty2 ()
-               {
-                       reader = CreateReader ("  ");
-                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
-                       reader.Read ();
-                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#2");
-                       reader.Close ();
-                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#3");
-               }
-
-               [Test]
-               public void ReadStateObject ()
-               {
-                       reader = CreateReader ("{}");
-                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
-                       reader.Read (); // element
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#2");
-                       reader.Read (); // endelement
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#3");
-                       reader.Read (); // endoffile
-                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#4");
-                       reader.Close ();
-                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#5");
-               }
-
-               [Test]
-               public void ReadStateArray ()
-               {
-                       reader = CreateReader ("[]");
-                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
-                       reader.Read (); // element
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#2");
-                       reader.Read (); // endelement
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#3");
-                       reader.Read (); // endoffile
-                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#4");
-                       reader.Close ();
-                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#5");
-               }
-
-               [Test]
-               public void ReadNumber ()
-               {
-                       reader = CreateReader ("1234");
-                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
-                       reader.Read (); // dummy root element
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#2");
-                       Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#2-1");
-                       Assert.AreEqual ("root", reader.LocalName, "#2-2");
-                       reader.Read (); // content (number)
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#3");
-                       Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#3-1");
-                       Assert.AreEqual ("1234", reader.Value, "#3-2");
-                       reader.Read (); // endelement
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#4");
-                       Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#4-1");
-                       reader.Read (); // endoffile
-                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#5");
-                       reader.Close ();
-                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#6");
-               }
-
-               [Test]
-               public void ReadBool ()
-               {
-                       reader = CreateReader ("true");
-                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
-                       reader.Read (); // dummy root element
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#2");
-                       Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#2-1");
-                       Assert.AreEqual ("root", reader.LocalName, "#2-2");
-                       Assert.AreEqual ("boolean", reader.GetAttribute ("type"), "#2-3");
-                       reader.Read (); // content (boolean)
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#3");
-                       Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#3-1");
-                       Assert.AreEqual ("true", reader.Value, "#3-2");
-                       reader.Read (); // endelement
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#4");
-                       Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#4-1");
-                       reader.Read (); // endoffile
-                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#5");
-                       reader.Close ();
-                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#6");
-               }
-
-               [Test]
-               public void ReadNull ()
-               {
-                       reader = CreateReader ("null");
-                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
-                       reader.Read (); // dummy root element
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#2");
-                       Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#2-1");
-                       Assert.AreEqual ("root", reader.LocalName, "#2-2");
-                       // When it is null, the value is never given and the reader is skipped to the end element.
-                       reader.Read (); // endlement
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#3");
-                       Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#3-1");
-                       reader.Read (); // endoffile
-                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#4");
-                       reader.Close ();
-                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#4");
-               }
-
-               [Test]
-               public void ReadString ()
-               {
-                       reader = CreateReader ("\"true\"");
-                       Assert.AreEqual (ReadState.Initial, reader.ReadState, "#1");
-                       reader.Read (); // dummy root element
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#2");
-                       Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#2-1");
-                       Assert.AreEqual ("root", reader.LocalName, "#2-2");
-                       Assert.AreEqual ("string", reader.GetAttribute ("type"), "#2-3");
-                       reader.Read (); // content (number)
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#3");
-                       Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#3-1");
-                       Assert.AreEqual ("true", reader.Value, "#3-2");
-                       reader.Read (); // endelement
-                       Assert.AreEqual (ReadState.Interactive, reader.ReadState, "#4");
-                       Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#4-1");
-                       reader.Read (); // endoffile
-                       Assert.AreEqual (ReadState.EndOfFile, reader.ReadState, "#5");
-                       reader.Close ();
-                       Assert.AreEqual (ReadState.Closed, reader.ReadState, "#6");
-               }
-
-               // MoveToAttribute() / MoveToElement()
-
-               [Test]
-               public void MoveToAttributeObject ()
-               {
-                       reader = CreateReader ("{}");
-                       Assert.IsFalse (reader.MoveToFirstAttribute (), "#1");
-                       reader.Read (); // element
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#2");
-                       Assert.AreEqual ("type", reader.LocalName, "#3");
-                       Assert.AreEqual ("object", reader.Value, "#4");
-                       Assert.IsTrue (reader.ReadAttributeValue (), "#5");
-                       Assert.AreEqual ("object", reader.Value, "#6");
-                       Assert.IsFalse (reader.MoveToNextAttribute (), "#7");
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#8");
-                       Assert.IsFalse (reader.MoveToNextAttribute (), "#9");
-               }
-
-               [Test]
-               public void MoveToElementObject ()
-               {
-                       reader = CreateReader ("{}");
-                       reader.Read (); // element
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#1");
-                       Assert.IsTrue (reader.MoveToElement (), "#1-1");
-
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#2");
-                       Assert.IsTrue (reader.ReadAttributeValue (), "#2-1");
-                       Assert.IsTrue (reader.MoveToElement (), "#2-2");
-
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#3");
-                       Assert.IsFalse (reader.MoveToNextAttribute (), "#3-1");
-                       Assert.IsTrue (reader.MoveToElement (), "#3-2");
-               }
-
-               [Test]
-               public void MoveToAttributeArray ()
-               {
-                       reader = CreateReader ("[]");
-                       Assert.IsFalse (reader.MoveToFirstAttribute (), "#1");
-                       reader.Read (); // element
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#2");
-                       Assert.AreEqual ("type", reader.LocalName, "#3");
-                       Assert.AreEqual ("array", reader.Value, "#4");
-                       Assert.IsTrue (reader.ReadAttributeValue (), "#5");
-                       Assert.AreEqual ("array", reader.Value, "#6");
-                       Assert.IsFalse (reader.MoveToNextAttribute (), "#7");
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#8");
-                       Assert.IsFalse (reader.MoveToNextAttribute (), "#9");
-               }
-
-               [Test]
-               public void MoveToElementArray ()
-               {
-                       reader = CreateReader ("[]");
-                       reader.Read (); // element
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#1");
-                       Assert.IsTrue (reader.MoveToElement (), "#1-1");
-
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#2");
-                       Assert.IsTrue (reader.ReadAttributeValue (), "#2-1");
-                       Assert.IsTrue (reader.MoveToElement (), "#2-2");
-
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#3");
-                       Assert.IsFalse (reader.MoveToNextAttribute (), "#3-1");
-                       Assert.IsTrue (reader.MoveToElement (), "#3-2");
-               }
-
-               [Test]
-               public void MoveToAttributeSimpleDummyRoot ()
-               {
-                       reader = CreateReader ("1234");
-                       Assert.IsFalse (reader.MoveToFirstAttribute (), "#1");
-                       reader.Read (); // element
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#2");
-                       Assert.AreEqual ("type", reader.LocalName, "#3");
-                       Assert.AreEqual ("number", reader.Value, "#4");
-                       Assert.IsTrue (reader.ReadAttributeValue (), "#5");
-                       Assert.AreEqual ("number", reader.Value, "#6");
-                       Assert.IsFalse (reader.MoveToNextAttribute (), "#7");
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#8");
-                       Assert.IsFalse (reader.MoveToNextAttribute (), "#9");
-               }
-
-               [Test]
-               public void MoveToElementSimpleDummyRoot ()
-               {
-                       reader = CreateReader ("1234");
-                       reader.Read (); // element
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#1");
-                       Assert.IsTrue (reader.MoveToElement (), "#1-1");
-
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#2");
-                       Assert.IsTrue (reader.ReadAttributeValue (), "#2-1");
-                       Assert.IsTrue (reader.MoveToElement (), "#2-2");
-
-                       Assert.IsTrue (reader.MoveToFirstAttribute (), "#3");
-                       Assert.IsFalse (reader.MoveToNextAttribute (), "#3-1");
-                       Assert.IsTrue (reader.MoveToElement (), "#3-2");
-               }
-
-               // Read() arrays and objects
-
-               [Test]
-               public void ReadArrayContent ()
-               {
-                       reader = CreateReader ("[123, \"123\", true, \"true\"]");
-
-                       // number value
-                       reader.Read (); // element
-                       AssertNode (0, "root", XmlNodeType.Element, String.Empty, "array", reader, "#1");
-
-                       reader.Read (); // 123 - element
-                       Assert.AreEqual ("number", reader.GetAttribute ("type"), "#2-0");
-                       AssertNode (1, "item", XmlNodeType.Element, String.Empty, "number", reader, "#2");
-                       reader.Read (); // 123 - text
-                       AssertNode (2, String.Empty, XmlNodeType.Text, "123", null, reader, "#3");
-                       reader.Read (); // 123 - endelement
-                       AssertNode (1, "item", XmlNodeType.EndElement, String.Empty, null, reader, "#4");
-
-                       // string value #1
-                       reader.Read (); // "123" - element
-                       Assert.AreEqual ("string", reader.GetAttribute ("type"), "#5-0");
-                       AssertNode (1, "item", XmlNodeType.Element, String.Empty, "string", reader, "#5");
-                       reader.Read (); // "123" - text
-                       AssertNode (2, String.Empty, XmlNodeType.Text, "123", null, reader, "#6");
-                       reader.Read (); // "123" - endelement
-                       AssertNode (1, "item", XmlNodeType.EndElement, String.Empty, null, reader, "#7");
-
-                       reader.Read (); // true - element
-                       Assert.AreEqual ("boolean", reader.GetAttribute ("type"), "#8-0");
-                       AssertNode (1, "item", XmlNodeType.Element, String.Empty, "boolean", reader, "#8");
-                       reader.Read (); // true - text
-                       AssertNode (2, String.Empty, XmlNodeType.Text, "true", null, reader, "#9");
-                       reader.Read (); // true - endelement
-                       AssertNode (1, "item", XmlNodeType.EndElement, String.Empty, null, reader, "#10");
-
-                       // string value #2
-                       reader.Read (); // "true" - element
-                       Assert.AreEqual ("string", reader.GetAttribute ("type"), "#11-0");
-                       AssertNode (1, "item", XmlNodeType.Element, String.Empty, "string", reader, "#11");
-                       reader.Read (); // "true" - text
-                       AssertNode (2, String.Empty, XmlNodeType.Text, "true", null, reader, "#12");
-                       reader.Read (); // "true" - endelement
-                       AssertNode (1, "item", XmlNodeType.EndElement, String.Empty, null, reader, "#13");
-                       Assert.IsTrue (reader.Read (), "#14"); // ]
-                       AssertNode (0, "root", XmlNodeType.EndElement, String.Empty, null, reader, "#15");
-                       Assert.IsFalse (reader.Read (), "#16"); // EOF
-               }
-
-               [Test]
-               public void ReadObjectContent ()
-               {
-                       reader = CreateReader ("{\"A\":123, \"B\": \"123\", \"C\" :true, \"D\" : \"true\"}");
-
-                       // number value
-                       reader.Read (); // element
-                       AssertNode (0, "root", XmlNodeType.Element, String.Empty, "object", reader, "#1");
-
-                       reader.Read (); // 123 - element
-                       AssertNode (1, "A", XmlNodeType.Element, String.Empty, "number", reader, "#2");
-                       reader.Read (); // 123 - text
-                       AssertNode (2, String.Empty, XmlNodeType.Text, "123", null, reader, "#3");
-                       reader.Read (); // 123 - endelement
-                       AssertNode (1, "A", XmlNodeType.EndElement, String.Empty, null, reader, "#4");
-
-                       // string value #1
-                       reader.Read (); // "123" - element
-                       AssertNode (1, "B", XmlNodeType.Element, String.Empty, "string", reader, "#5");
-                       reader.Read (); // "123" - text
-                       AssertNode (2, String.Empty, XmlNodeType.Text, "123", null, reader, "#6");
-                       reader.Read (); // "123" - endelement
-                       AssertNode (1, "B", XmlNodeType.EndElement, String.Empty, null, reader, "#7");
-
-                       reader.Read (); // true - element
-                       AssertNode (1, "C", XmlNodeType.Element, String.Empty, "boolean", reader, "#8");
-                       reader.Read (); // true - text
-                       AssertNode (2, String.Empty, XmlNodeType.Text, "true", null, reader, "#9");
-                       reader.Read (); // true - endelement
-                       AssertNode (1, "C", XmlNodeType.EndElement, String.Empty, null, reader, "#10");
-
-                       // string value #2
-                       reader.Read (); // "true" - element
-                       AssertNode (1, "D", XmlNodeType.Element, String.Empty, "string", reader, "#11");
-                       reader.Read (); // "true" - text
-                       AssertNode (2, String.Empty, XmlNodeType.Text, "true", null, reader, "#12");
-                       reader.Read (); // "true" - endelement
-                       AssertNode (1, "D", XmlNodeType.EndElement, String.Empty, null, reader, "#13");
-                       Assert.IsTrue (reader.Read (), "#14"); // }
-                       AssertNode (0, "root", XmlNodeType.EndElement, String.Empty, null, reader, "#15");
-                       Assert.IsFalse (reader.Read (), "#16"); // EOF
-               }
-
-               [Test]
-               public void ReadNestedObjects ()
-               {
-                       reader = CreateReader ("{\"A\": [123, {\"B\": \"456\", \"C\" :true}], \"D\" : {\"E\" : \"false\"}}");
-                       Assert.IsTrue (reader.Read (), "#1"); // {
-                       AssertNode (0, "root", XmlNodeType.Element, String.Empty, "object", reader, "#2");
-                       Assert.IsTrue (reader.Read (), "#3"); // A
-                       AssertNode (1, "A", XmlNodeType.Element, String.Empty, "array", reader, "#4");
-                       Assert.IsTrue (reader.Read (), "#5"); // (<123>)
-                       AssertNode (2, "item", XmlNodeType.Element, String.Empty, "number", reader, "#6");
-                       Assert.IsTrue (reader.Read (), "#7"); // (123)
-                       AssertNode (3, String.Empty, XmlNodeType.Text, "123", null, reader, "#8");
-                       Assert.IsTrue (reader.Read (), "#9"); // (</123>)
-                       AssertNode (2, "item", XmlNodeType.EndElement, String.Empty, null, reader, "#10");
-                       Assert.IsTrue (reader.Read (), "#11"); // {
-                       AssertNode (2, "item", XmlNodeType.Element, String.Empty, "object", reader, "#12");
-                       Assert.IsTrue (reader.Read (), "#13"); // B
-                       AssertNode (3, "B", XmlNodeType.Element, String.Empty, "string", reader, "#14");
-                       Assert.IsTrue (reader.Read (), "#15"); // "456"
-                       AssertNode (4, String.Empty, XmlNodeType.Text, "456", null, reader, "#16");
-                       Assert.IsTrue (reader.Read (), "#17"); // /B
-                       AssertNode (3, "B", XmlNodeType.EndElement, String.Empty, null, reader, "#18");
-
-                       Assert.IsTrue (reader.Read (), "#19"); // C
-                       AssertNode (3, "C", XmlNodeType.Element, String.Empty, "boolean", reader, "#20");
-                       Assert.IsTrue (reader.Read (), "#21"); // true
-                       AssertNode (4, String.Empty, XmlNodeType.Text, "true", null, reader, "#22");
-                       Assert.IsTrue (reader.Read (), "#23"); // /C
-                       AssertNode (3, "C", XmlNodeType.EndElement, String.Empty, null, reader, "#24");
-                       Assert.IsTrue (reader.Read (), "#25"); // }
-                       AssertNode (2, "item", XmlNodeType.EndElement, String.Empty, null, reader, "#26");
-                       Assert.IsTrue (reader.Read (), "#27"); // ]
-                       AssertNode (1, "A", XmlNodeType.EndElement, String.Empty, null, reader, "#28");
-                       Assert.IsTrue (reader.Read (), "#29"); // {
-                       AssertNode (1, "D", XmlNodeType.Element, String.Empty, "object", reader, "#30");
-                       Assert.IsTrue (reader.Read (), "#31"); // D
-                       AssertNode (2, "E", XmlNodeType.Element, String.Empty, "string", reader, "#32");
-                       Assert.IsTrue (reader.Read (), "#33"); // "false"
-                       AssertNode (3, String.Empty, XmlNodeType.Text, "false", null, reader, "#34");
-                       Assert.IsTrue (reader.Read (), "#35"); // /D
-                       AssertNode (2, "E", XmlNodeType.EndElement, String.Empty, null, reader, "#36");
-                       Assert.IsTrue (reader.Read (), "#37"); // }
-                       AssertNode (1, "D", XmlNodeType.EndElement, String.Empty, null, reader, "#38");
-                       Assert.IsTrue (reader.Read (), "#39"); // }
-                       AssertNode (0, "root", XmlNodeType.EndElement, String.Empty, null, reader, "#40");
-                       Assert.IsFalse (reader.Read (), "#41"); // EOF
-               }
-
-               void ReadToEnd (XmlDictionaryReader reader)
-               {
-                       while (!reader.EOF)
-                               reader.Read ();
-               }
-
-               // Read() valid and invalid contents
-
-               [Test]
-               [Ignore ("It should throw XmlException for parser error, but .NET fails to report that")]
-               public void ReadTwoTopLevelContents ()
-               {
-                       ReadToEnd (CreateReader ("{}{}"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadMissingCloseCurly ()
-               {
-                       ReadToEnd (CreateReader ("{"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadMissingCloseCurly2 ()
-               {
-                       ReadToEnd (CreateReader ("{{}"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadExtraCloseCurly ()
-               {
-                       ReadToEnd (CreateReader ("}"));
-               }
-
-               [Test]
-               [Ignore ("It should throw XmlException for parser error, but .NET fails to report that")]
-               public void ReadExtraCloseCurly2 ()
-               {
-                       ReadToEnd (CreateReader ("{}}"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadMissingCloseBrace ()
-               {
-                       ReadToEnd (CreateReader ("["));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadMissingCloseBrace2 ()
-               {
-                       ReadToEnd (CreateReader ("[[]"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadExtraCloseBrace ()
-               {
-                       ReadToEnd (CreateReader ("]"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               [Ignore ("NotDotNet")] // hmm, why does it pass?
-               public void ReadExtraCloseBrace2 ()
-               {
-                       ReadToEnd (CreateReader ("[]]"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadOpenCurlyCloseBrace ()
-               {
-                       ReadToEnd (CreateReader ("{]"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadOpenBraceCloseCurly ()
-               {
-                       ReadToEnd (CreateReader ("[}"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadParens ()
-               {
-                       ReadToEnd (CreateReader ("()"));
-               }
-
-               [Test]
-               public void ReadValidNumber ()
-               {
-                       ReadToEnd (CreateReader ("0"));
-               }
-
-               [Test]
-               public void ReadValidNumber2 ()
-               {
-                       ReadToEnd (CreateReader ("-0"));
-               }
-
-               [Test]
-               public void ReadValidNumber3 ()
-               {
-                       ReadToEnd (CreateReader ("0e5"));
-               }
-
-               [Test]
-               public void ReadValidNumber4 ()
-               {
-                       ReadToEnd (CreateReader ("0.5"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadInvalidNumber ()
-               {
-                       CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture;
-                       try {
-                               Thread.CurrentThread.CurrentCulture = new CultureInfo ("de-DE");
-                               // if we read a number just by current culture, it will be regarded as correct JSON.
-                               ReadToEnd (CreateReader ("123,45"));
-                       } finally {
-                               Thread.CurrentThread.CurrentCulture = originalCulture;
-                       }
-               }
-
-               [Test]
-               public void ReadValidNumberGerman ()
-               {
-                       CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture;
-                       try {
-                               Thread.CurrentThread.CurrentCulture = new CultureInfo ("de-DE");
-                               var s = GetInput ("123.45"); // German is ',' for decimals
-                               var r = new DataContractJsonSerializer (typeof (double));
-                               var d = (double) r.ReadObject (s);
-                               Assert.AreEqual (123.45, d, "InvariantCulture");
-                       } finally {
-                               Thread.CurrentThread.CurrentCulture = originalCulture;
-                       }
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadInvalidNumber2 ()
-               {
-                       ReadToEnd (CreateReader ("+5"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               [Ignore ("NotDotNet")] // likely .NET bug
-               public void ReadInvalidNumber3 ()
-               {
-                       ReadToEnd (CreateReader ("01"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadInvalidNumber4 ()
-               {
-                       ReadToEnd (CreateReader (".1"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               [Ignore ("NotDotNet")] // likely .NET bug
-               public void ReadInvalidNumber5 ()
-               {
-                       ReadToEnd (CreateReader ("10."));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadInvalidNumber7 ()
-               {
-                       ReadToEnd (CreateReader ("e5"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               [Ignore ("NotDotNet")] // likely .NET bug
-               public void ReadInvalidNumber8 ()
-               {
-                       ReadToEnd (CreateReader ("-e5"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               [Ignore ("NotDotNet")] // likely .NET bug
-               public void ReadInvalidNumber9 ()
-               {
-                       ReadToEnd (CreateReader ("-e5.5"));
-               }
-
-               [Test]
-               public void ReadInvalidNumber10 () // bug #531904
-               {
-                       ReadToEnd (CreateReader ("4.29153442382814E-05"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadInvalidObjectContent ()
-               {
-                       ReadToEnd (CreateReader ("{\"foo\"}"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               [Ignore ("NotDotNet")] // likely .NET bug
-               public void ReadInvalidObjectContent2 ()
-               {
-                       ReadToEnd (CreateReader ("{\"A\": 123 456}"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadInvalidObjectContent3 ()
-               {
-                       ReadToEnd (CreateReader ("{, \"A\":123, \"B\":456}"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               [Ignore ("NotDotNet")] // likely .NET bug
-               public void ReadInvalidObjectContent4 ()
-               {
-                       ReadToEnd (CreateReader ("{\"A\":123, \"B\":456,}"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadInvalidArrayContent ()
-               {
-                       ReadToEnd (CreateReader ("[\"foo\":\"bar\"]"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               [Ignore ("NotDotNet")] // likely .NET bug
-               public void ReadInvalidArrayContent2 ()
-               {
-                       ReadToEnd (CreateReader ("[123 456]"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadInvalidArrayContent3 ()
-               {
-                       ReadToEnd (CreateReader ("[,123,456]"));
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               [Ignore ("NotDotNet")] // likely .NET bug
-               public void ReadInvalidArrayContent4 ()
-               {
-                       ReadToEnd (CreateReader ("[123,456,]"));
-               }
-
-               [Test]
-               public void ReadObjectRuntimeTypeAsAttribute ()
-               {
-                       XmlDictionaryReader r = CreateReader ("{\"__type\":\"System.Int32\"}");
-                       r.Read ();
-                       AssertNode (0, "root", XmlNodeType.Element, String.Empty, "object", r, "#1");
-                       Assert.IsTrue (r.MoveToAttribute ("type"), "#2");
-                       AssertNode (0, "type", XmlNodeType.Attribute, "object", "object", r, "#3");
-                       Assert.IsTrue (r.MoveToAttribute ("__type"), "#4");
-                       AssertNode (0, "__type", XmlNodeType.Attribute, "System.Int32", "object", r, "#5");
-                       r.Read ();
-                       Assert.AreEqual (XmlNodeType.EndElement, r.NodeType, "#6");
-               }
-
-               [Test]
-               public void ReadObjectRuntimeType ()
-               {
-                       XmlDictionaryReader r = CreateReader ("{\"__type\":\"System.Int32\", \"foo\":true}");
-                       r.Read ();
-                       AssertNode (0, "root", XmlNodeType.Element, String.Empty, "object", r, "#1");
-                       Assert.IsTrue (r.MoveToAttribute ("type"), "#2");
-                       AssertNode (0, "type", XmlNodeType.Attribute, "object", "object", r, "#3");
-                       Assert.IsTrue (r.MoveToAttribute ("__type"), "#4");
-                       AssertNode (0, "__type", XmlNodeType.Attribute, "System.Int32", "object", r, "#5");
-                       r.Read ();
-                       Assert.AreEqual (XmlNodeType.Element, r.NodeType, "#6");
-                       Assert.AreEqual ("foo", r.LocalName, "#7");
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void ReadInvalidObjectRuntimeTypeValue ()
-               {
-                       ReadToEnd (CreateReader ("{\"__type\":true}"));
-               }
-
-               [Test]
-               public void ReadObjectRuntimeTypeIncorrectPosition ()
-               {
-                       XmlReader r = CreateReader ("{\"foo\" : false, \"__type\" : \"System.Int32\"}");
-                       r.Read ();
-                       // When __type is not at the first content, it is not regarded as an attribute. Note that it is not treated as an error.
-                       Assert.IsFalse (r.MoveToAttribute ("__type"));
-                       r.Skip ();
-               }
-
-               [Test]
-               public void ReadObjectRuntimeTypeInArray ()
-               {
-                       XmlReader r = CreateReader (@"[{""__type"":""DCWithEnum:#MonoTests.System.Runtime.Serialization.Json"",""_colors"":0}]");
-                       r.Read ();
-                       Assert.AreEqual ("root", r.LocalName, "#1-1");
-                       Assert.AreEqual ("array", r.GetAttribute ("type"), "#1-2");
-                       r.Read ();
-                       Assert.AreEqual ("item", r.LocalName, "#2-1");
-                       Assert.AreEqual ("object", r.GetAttribute ("type"), "#2-2");
-                       Assert.IsNotNull (r.GetAttribute ("__type"), "#2-3");
-                       r.Read ();
-               }
-
-               [Test]
-               public void Skip ()
-               {
-                       XmlReader r = CreateReader ("{\"type\" : \"\", \"valid\" : \"0\", \"other\" : \"\"}");
-                       r.ReadStartElement ();
-                       r.MoveToContent ();
-                       Assert.AreEqual ("type", r.Name, "Skip-1");
-                       r.ReadElementContentAsString ();
-                       r.MoveToContent ();
-                       Assert.AreEqual ("valid", r.Name, "Skip-2");
-                       r.Skip ();
-                       Assert.AreEqual ("other", r.Name, "Skip-3");
-               }
-
-               [Test]
-               public void Depth ()
-               {
-                       XmlReader r = CreateReader ("{\"type\" : \"\", \"valid\" : \"0\"}");
-                       r.ReadStartElement ();
-                       r.Read ();
-                       Assert.AreEqual (2, r.Depth, "Depth-1");
-               }
-
-               [Test]
-               public void UnicodeEncodingAutoDetect ()
-               {
-                       var ms = new MemoryStream (Encoding.Unicode.GetBytes ("{\"type\" : \"\", \"valid\" : \"0\"}"));
-                       XmlReader r = JsonReaderWriterFactory.CreateJsonReader (ms, new XmlDictionaryReaderQuotas ());
-                       r.ReadStartElement ();
-                       r.Read ();
-               }
-
-               [Test]
-               public void ReadNumberAsObject ()
-               {
-                       const double testValue = 42.42D;
-                       var serializer = new DataContractJsonSerializer (typeof (object));
-                       var serializedStream = GetInput (testValue.ToString (CultureInfo.InvariantCulture));
-                       var deserializedValue = serializer.ReadObject (serializedStream);
-                       Assert.AreEqual (typeof (decimal), deserializedValue.GetType ());
-                       Assert.AreEqual (testValue, (decimal) deserializedValue);
-               }
-
-               [Test]
-               public void IEnumerableTest ()
-               {
-                       string json = "[\"A\", \"B\"]";
-                       using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(json))) {
-                               DataContractJsonSerializer jsonSerializer = new
-                                       DataContractJsonSerializer(typeof(IEnumerable<string>));
-                               var result = jsonSerializer.ReadObject(stream);
-                               Assert.AreEqual (typeof (string []), result.GetType ());
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/JsonWriterTest.cs b/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/JsonWriterTest.cs
deleted file mode 100644 (file)
index b6e42b9..0000000
+++ /dev/null
@@ -1,640 +0,0 @@
-//
-// JsonWriterTest.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-using System.Text;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Json;
-using System.Xml;
-using NUnit.Framework;
-
-namespace MonoTests.System.Runtime.Serialization.Json
-{
-       [TestFixture]
-       public class JsonWriterTest
-       {
-               MemoryStream ms;
-               XmlDictionaryWriter w;
-
-               string ResultString {
-                       get { return Encoding.UTF8.GetString (ms.ToArray ()); }
-               }
-
-               [SetUp]
-               public void Setup ()
-               {
-                       ms = new MemoryStream ();
-                       w = JsonReaderWriterFactory.CreateJsonWriter (ms);
-               }
-
-               /*
-               [Test]
-               public void Dummy_BitFlagsGenerator ()
-               {
-                       var b = new BitFlagsGenerator (2);
-                       Assert.IsFalse (b.Load (0), "#a1");
-                       b.Store (0, false);
-                       Assert.IsFalse (b.Load (0), "#a2");
-                       b.Store (0, true);
-                       Assert.IsTrue (b.Load (0), "#a3");
-                       Assert.IsFalse (b.Load (1), "#a4");
-                       b.Store (0, false);
-                       Assert.IsFalse (b.Load (0), "#a5");
-                       Assert.IsFalse (b.Load (1), "#a6");
-
-                       Assert.IsFalse (b.Load (1), "#b1");
-                       b.Store (1, false);
-                       Assert.IsFalse (b.Load (1), "#b2");
-                       b.Store (1, true);
-                       Assert.IsTrue (b.Load (1), "#b3");
-                       b.Store (1, false);
-                       Assert.IsFalse (b.Load (1), "#b4");
-
-                       var bytes = new byte [2];
-                       Assert.IsFalse (BitFlagsGenerator.IsBitSet (bytes, 0), "#c1");
-                       BitFlagsGenerator.SetBit (bytes, 0);
-                       Assert.IsTrue (BitFlagsGenerator.IsBitSet (bytes, 0), "#c2");
-                       Assert.IsFalse (BitFlagsGenerator.IsBitSet (bytes, 1), "#c3");
-                       BitFlagsGenerator.SetBit (bytes, 0);
-                       Assert.IsTrue (BitFlagsGenerator.IsBitSet (bytes, 0), "#c4");
-               }
-               */
-
-               [Test]
-               [ExpectedException (typeof (ArgumentNullException))]
-               public void ConstructorNullStream ()
-               {
-                       JsonReaderWriterFactory.CreateJsonWriter (null);
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentNullException))]
-               public void ConstructorNullEncoding ()
-               {
-                       JsonReaderWriterFactory.CreateJsonWriter (new MemoryStream (), null);
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void SimpleElementNotRoot ()
-               {
-                       w.WriteStartElement ("foo");
-               }
-
-               [Test]
-               public void SimpleElement ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteEndElement ();
-                       w.Close ();
-                       // empty string literal ("")
-                       Assert.AreEqual ("\"\"", ResultString, "#1");
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void SimpleElement2 ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteStartElement ("foo");
-                       // type='array' or type='object' is required before writing immediate child of an element.
-               }
-
-               [Test]
-               public void SimpleElement3 ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "object");
-                       w.WriteStartElement ("e1");
-                       w.WriteAttributeString ("type", "object");
-                       w.WriteStartElement ("e1_1");
-                       w.WriteEndElement (); // treated as a string literal
-                       w.WriteEndElement ();
-                       w.WriteStartElement ("e2");
-                       w.WriteString ("value");
-                       w.WriteEndElement ();
-                       w.WriteEndElement ();
-                       w.Close ();
-                       string json = "{\"e1\":{\"e1_1\":\"\"},\"e2\":\"value\"}";
-                       Assert.AreEqual (json, ResultString, "#1");
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void AttributeNonType ()
-               {
-                       w.WriteStartElement ("root");
-                       // only "type" attribute is expected.
-                       w.WriteStartAttribute ("a1");
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void TypeAttributeNonStandard ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "foo");
-               }
-
-               [Test]
-               public void SimpleTypeAttribute ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "number");
-                       w.WriteEndElement ();
-                       w.Close ();
-                       Assert.AreEqual (String.Empty, ResultString, "#1");
-               }
-
-               [Test]
-               public void SimpleTypeAttribute2 ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "object");
-                       w.WriteStartElement ("foo");
-                       w.WriteAttributeString ("type", "number");
-                       w.WriteString ("1");
-                       w.WriteEndElement ();
-                       w.Close ();
-                       Assert.AreEqual ("{\"foo\":1}", ResultString, "#1");
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void WriteStringForNull ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteStartElement ("foo");
-                       w.WriteAttributeString ("type", "null");
-                       w.WriteString ("1");
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void WriteStringForArray ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "object");
-                       w.WriteStartElement ("foo");
-                       w.WriteAttributeString ("type", "array");
-                       w.WriteString ("1");
-               }
-
-               [Test]
-               // uh, no exception?
-               public void WriteStringForBoolean ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "object");
-                       w.WriteStartElement ("foo");
-                       w.WriteAttributeString ("type", "boolean");
-                       w.WriteString ("xyz");
-                       w.WriteEndElement ();
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void WriteStringForObject ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "object");
-                       w.WriteString ("1");
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void WriteArrayNonItem ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteStartElement ("foo");
-                       w.WriteAttributeString ("type", "array");
-                       w.WriteStartElement ("bar");
-               }
-
-               [Test]
-               public void WriteArray ()
-               {
-                       w.WriteStartElement ("root"); // name is ignored
-                       w.WriteAttributeString ("type", "array");
-                       w.WriteElementString ("item", "v1");
-                       w.WriteElementString ("item", "v2");
-                       w.Close ();
-                       Assert.AreEqual (@"[""v1"",""v2""]", ResultString, "#1");
-               }
-
-               [Test]
-               public void WriteArrayInObject ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "object");
-                       w.WriteStartElement ("foo");
-                       w.WriteAttributeString ("type", "array");
-                       w.WriteElementString ("item", "v1");
-                       w.WriteElementString ("item", "v2");
-                       w.Close ();
-                       Assert.AreEqual (@"{""foo"":[""v1"",""v2""]}", ResultString, "#1");
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void WriteStartElementNonEmptyNS ()
-               {
-                       // namespaces are not allowed
-                       w.WriteStartElement (String.Empty, "x", "urn:foo");
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void WriteStartElementNonEmptyPrefix ()
-               {
-                       // prefixes are not allowed
-                       w.WriteStartElement ("p", "x", "urn:foo");
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void WriteStartElementMultiTopLevel ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteEndElement ();
-                       // hmm...
-                       Assert.AreEqual (WriteState.Content, w.WriteState, "#1");
-                       // writing of multiple root elements is not supported
-                       w.WriteStartElement ("root2");
-                       w.Close ();
-                       Assert.AreEqual (String.Empty, ResultString, "#2");
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void WriteStartAttributeNonEmptyNS ()
-               {
-                       // namespaces are not allowed
-                       w.WriteStartElement ("root");
-                       // well, empty prefix for a global attribute would be
-                       // replaced anyways ...
-                       w.WriteStartAttribute (String.Empty, "x", "urn:foo");
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void WriteStartAttributeInXmlNamespace ()
-               {
-                       // even "xml" namespace is not allowed (anyways only "type" is allowed ...)
-                       w.WriteStartElement ("root");
-                       w.WriteStartAttribute ("xml", "lang", "http://www.w3.org/XML/1998/namespace");
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentNullException))]
-               public void LookupPrefixNull ()
-               {
-                       w.LookupPrefix (null);
-               }
-
-               [Test]
-               public void LookupPrefix ()
-               {
-                       // since namespaces are not allowed, it mostly makes no sense...
-                       Assert.AreEqual (String.Empty, w.LookupPrefix (String.Empty), "#1");
-                       Assert.IsNull (w.LookupPrefix ("urn:nonexistent"), "#2");
-                       Assert.AreEqual ("xml", w.LookupPrefix ("http://www.w3.org/XML/1998/namespace"), "#3");
-                       Assert.AreEqual ("xmlns", w.LookupPrefix ("http://www.w3.org/2000/xmlns/"), "#4");
-               }
-
-               [Test]
-               public void WriteStartDocument ()
-               {
-                       Assert.AreEqual (WriteState.Start, w.WriteState, "#1");
-                       w.WriteStartDocument ();
-                       Assert.AreEqual (WriteState.Start, w.WriteState, "#2");
-                       w.WriteStartDocument (true);
-                       Assert.AreEqual (WriteState.Start, w.WriteState, "#3");
-                       // So, it does nothing
-               }
-
-               [Test]
-               public void WriteEndDocument ()
-               {
-                       w.WriteEndDocument (); // so, it is completely wrong, but ignored.
-               }
-
-               [Test]
-               [ExpectedException (typeof (NotSupportedException))]
-               public void WriteDocType ()
-               {
-                       w.WriteDocType (null, null, null, null);
-               }
-
-               [Test]
-               [ExpectedException (typeof (NotSupportedException))]
-               public void WriteComment ()
-               {
-                       w.WriteComment ("test");
-               }
-
-               [Test]
-               [ExpectedException (typeof (NotSupportedException))]
-               public void WriteEntityRef ()
-               {
-                       w.WriteEntityRef ("ent");
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void WriteProcessingInstruction ()
-               {
-                       // since this method accepts case-insensitive "XML",
-                       // it throws ArgumentException.
-                       w.WriteProcessingInstruction ("T", "D");
-               }
-
-               [Test]
-               public void WriteProcessingInstructionXML ()
-               {
-                       // You might not know, but in some cases, things like
-                       // XmlWriter.WriteNode() is implemented to invoke
-                       // this method for writing XML declaration. This
-                       // check is (seems) case-insensitive.
-                       w.WriteProcessingInstruction ("XML", "foobar");
-                       // In this case, the data is simply ignored (as
-                       // WriteStartDocument() is).
-               }
-
-               [Test]
-               public void WriteRaw ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteRaw ("sample");
-                       w.WriteRaw (new char [] {'0', '1', '2', '3'}, 1, 2);
-                       w.Close ();
-                       Assert.AreEqual ("\"sample12\"", ResultString);
-               }
-
-               [Test]
-               public void WriteCData ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteCData ("]]>"); // this behavior is incompatible with ordinal XmlWriters.
-                       w.Close ();
-                       Assert.AreEqual ("\"]]>\"", ResultString);
-               }
-
-               [Test]
-               public void WriteCharEntity ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteCharEntity ('>');
-                       w.Close ();
-                       Assert.AreEqual ("\">\"", ResultString);
-               }
-
-               [Test]
-               public void WriteWhitespace ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteWhitespace ("\t  \n\r");
-                       w.Close ();
-                       Assert.AreEqual (@"""\u0009  \u000a\u000d""", ResultString);
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void WriteWhitespaceNonWhitespace ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteWhitespace ("TEST");
-               }
-
-               [Test]
-               [ExpectedException (typeof (InvalidOperationException))]
-               public void WriteStringTopLevel ()
-               {
-                       w.WriteString ("test");
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void WriteStartAttributeTopLevel ()
-               {
-                       w.WriteStartAttribute ("test");
-               }
-
-               [Test]
-               [ExpectedException (typeof (InvalidOperationException))]
-               public void WriteStartDocumentAtClosed ()
-               {
-                       w.Close ();
-                       w.WriteStartDocument ();
-               }
-
-               [Test]
-               [ExpectedException (typeof (InvalidOperationException))]
-               public void WriteStartElementAtClosed ()
-               {
-                       w.Close ();
-                       w.WriteStartElement ("foo");
-               }
-
-               [Test]
-               [ExpectedException (typeof (InvalidOperationException))]
-               public void WriteProcessingInstructionAtClosed ()
-               {
-                       w.Close ();
-                       w.WriteProcessingInstruction ("xml", "version='1.0'");
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void WriteMixedContent ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteString ("TEST");
-                       w.WriteStartElement ("mixed"); // is not allowed.
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void WriteStartElementInvalidTopLevelName ()
-               {
-                       w.WriteStartElement ("anyname");
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentNullException))]
-               public void WriteStartElementNullName ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "object");
-                       w.WriteStartElement (null);
-               }
-
-               [Test]
-               [ExpectedException (typeof (ArgumentException))]
-               public void WriteStartElementEmptyName ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "object");
-                       w.WriteStartElement (String.Empty);
-                       // It is regarded as invalid name in JSON. However,
-                       // I don't think there is such limitation in JSON specification.
-               }
-
-               [Test]
-               public void WriteStartElementWithRuntimeTypeName ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "object");
-                       w.WriteAttributeString ("__type", "FooType:#FooNamespace");
-                       w.Close ();
-                       Assert.AreEqual (@"{""__type"":""FooType:#FooNamespace""}", ResultString);
-               }
-
-               [Test]
-               public void WriteStartElementWeirdName ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "object");
-                       w.WriteStartElement ("!!!");
-                       w.Close ();
-                       Assert.AreEqual (@"{""!!!"":""""}", ResultString);
-               }
-
-               [Test]
-               public void WriteRootAsObject ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteStartAttribute ("type");
-                       w.WriteString ("object");
-                       w.WriteEndAttribute ();
-                       w.Close ();
-                       Assert.AreEqual ("{}", ResultString);
-               }
-
-               [Test]
-               public void WriteRootAsArray ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteStartAttribute ("type");
-                       w.WriteString ("array");
-                       w.WriteEndAttribute ();
-                       w.Close ();
-                       Assert.AreEqual ("[]", ResultString);
-               }
-
-               [Test]
-               public void WriteRootAsLiteral ()
-               {
-                       w.WriteStartElement ("root");
-                       w.Close ();
-                       Assert.AreEqual ("\"\"", ResultString);
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void WriteEndElementOnAttribute ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteStartAttribute ("type");
-                       w.WriteString ("array");
-                       w.WriteEndElement ();
-               }
-
-               [Test]
-               public void WriteAttributeAsSeparateStrings ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteStartAttribute ("type");
-                       w.WriteString ("arr");
-                       w.WriteString ("ay");
-                       w.WriteEndAttribute ();
-                       w.Close ();
-                       Assert.AreEqual ("[]", ResultString);
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void WriteStartAttributeInAttributeMode ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteStartAttribute ("type");
-                       w.WriteStartAttribute ("type");
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void WriteStartAttributeInContentMode ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteString ("TEST");
-                       w.WriteStartAttribute ("type");
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void WriteStartElementInAttributeMode ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteStartAttribute ("type");
-                       w.WriteStartElement ("child");
-               }
-
-               [Test]
-               [ExpectedException (typeof (XmlException))]
-               public void CloseAtAtributeState ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteStartAttribute ("type");
-                       w.WriteString ("array");
-                       // It calls WriteEndElement() without calling
-                       // WriteEndAttribute().
-                       w.Close ();
-               }
-
-               [Test]
-               public void WriteSlashEscaped ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteString ("/my date/");
-                       w.WriteEndElement ();
-                       w.Close ();
-                       Assert.AreEqual ("\"\\/my date\\/\"", ResultString);
-               }
-
-               [Test]
-               public void WriteNullType ()
-               {
-                       w.WriteStartElement ("root");
-                       w.WriteAttributeString ("type", "object");
-                       w.WriteStartElement ("foo");
-                       w.WriteAttributeString ("type", "null");
-                       w.Close ();
-                       Assert.AreEqual ("{\"foo\":null}", ResultString);
-               }
-       }
-}
index 1c0c0077ce8073d0cce0ac4d2406772a11d00c9b..b4a016a26f440ef6aec434633fbd37f8bd8a49d0 100644 (file)
@@ -32,5 +32,15 @@ namespace MonoTests.System.ServiceModel
                        Assert.AreEqual (typeof (WebMessageEncodingBindingElement), bc [0].GetType (), "#2");
                        Assert.AreEqual (typeof (HttpTransportBindingElement), bc [1].GetType (), "#3");
                }
+        
+        [Test]
+        public void DefaultSchemeBasedOnSecurityMode ()
+        {
+            WebHttpBinding b = new WebHttpBinding(WebHttpSecurityMode.TransportCredentialOnly);
+            Assert.AreEqual("http", b.Scheme, "#1");
+
+            b = new WebHttpBinding(WebHttpSecurityMode.Transport);
+            Assert.AreEqual("https", b.Scheme, "#2");
+        }
        }
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel-net_4_5.csproj b/mcs/class/System.ServiceModel/System.ServiceModel-net_4_5.csproj
deleted file mode 100644 (file)
index 66064a5..0000000
+++ /dev/null
@@ -1,1164 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F2156C09-C377-4945-A690-39CFBF3319B3}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceModel</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;TRACE;NET_3_0;HAS_ACTIVATION</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;TRACE;NET_3_0;HAS_ACTIVATION</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Atom10FeedFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Atom10FeedFormatter_1.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Atom10ItemFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Atom10ItemFormatter_1.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\AtomPub10CategoriesDocumentFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\AtomPub10ServiceDocumentFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\AtomPub10ServiceDocumentFormatter_1.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\CategoriesDocument.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\CategoriesDocumentFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\InlineCategoriesDocument.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\ISyndicationElement.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\ReferencedCategoriesDocument.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\ResourceCollectionInfo.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Rss20FeedFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Rss20FeedFormatter_1.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Rss20ItemFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Rss20ItemFormatter_1.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\ServiceDocument.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\ServiceDocumentFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationCategory.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationContent.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationElementExtension.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationElementExtensionCollection.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationExtensions.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationFeed.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationFeedFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationItem.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationItemFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationLink.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationPerson.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationVersions.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\TextSyndicationContent.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\TextSyndicationContentKind.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\UrlSyndicationContent.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Workspace.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\XmlSyndicationContent.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System\UriTemplate.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System\UriTemplateEquivalenceComparer.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System\UriTemplateMatch.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System\UriTemplateMatchException.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System\UriTemplateTable.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeAdd.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeAnd.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeArgument.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeArgumentReference.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeArithmeticOperation.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeArrayItem.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeArrayLength.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeAssignment.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeBinaryComparison.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeBinaryOperation.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeBlock.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeBuilder.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeCast.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeClass.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeCustomAttribute.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeDecrement.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeEquals.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeExpression.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeFieldReference.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeFor.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeForeach.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeGenerationHelper.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeIf.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeIncrement.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeIs.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeItem.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeLiteral.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeMethod.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeMethodCall.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeModule.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeNew.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeNewArray.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeNotEquals.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeOr.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeProperty.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodePropertyReference.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeReturn.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeSelect.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeSelfIncrement.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeTryBlock.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeUnaryOperation.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeValueReference.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeVariableDeclaration.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeVariableReference.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeWhen.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeWhile.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeWriter.cs" />\r
-    <Compile Include="Mono.CodeGeneration\Exp.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\MD5SHA1.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\TlsHMAC.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\BitConverterLE.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\ChallengeResponse.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\MessageBase.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\NtlmFlags.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\NtlmTargetInformation.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\NtlmVersion.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\Type1Message.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\Type2Message.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\Type3Message.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsClientCertificate.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsClientCertificateVerify.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsClientFinished.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsClientHello.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsClientKeyExchange.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsServerCertificate.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsServerCertificateRequest.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsServerFinished.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsServerHello.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsServerHelloDone.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsServerKeyExchange.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsClientCertificate.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsClientCertificateVerify.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsClientFinished.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsClientHello.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsClientKeyExchange.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsServerCertificate.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsServerCertificateRequest.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsServerFinished.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsServerHello.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsServerHelloDone.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsServerKeyExchange.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake\ClientCertificateType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake\HandshakeMessage.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake\HandshakeType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\Alert.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\CipherAlgorithmType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\CipherSuite.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\CipherSuiteCollection.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\CipherSuiteFactory.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ClientContext.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ClientRecordProtocol.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ClientSessionCache.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ContentType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\Context.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\DebugHelper.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ExchangeAlgorithmType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\HandshakeState.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\HashAlgorithmType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\HttpsClientStream.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\RecordProtocol.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\RSASslSignatureDeformatter.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\RSASslSignatureFormatter.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SecurityCompressionType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SecurityParameters.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SecurityProtocolType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ServerContext.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ServerRecordProtocol.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SslCipherSuite.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SslClientStream.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SslHandshakeHash.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SslServerStream.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SslStreamBase.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\TlsCipherSuite.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\TlsClientSettings.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\TlsException.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\TlsServerSettings.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\TlsStream.cs" />\r
-    <Compile Include="Mono.Xml.XPath\DTMXPathDocument2.cs" />\r
-    <Compile Include="Mono.Xml.XPath\DTMXPathDocumentBuilder2.cs" />\r
-    <Compile Include="Mono.Xml.XPath\DTMXPathDocumentWriter2.cs" />\r
-    <Compile Include="Mono.Xml.XPath\DTMXPathNavigator2.cs" />\r
-    <Compile Include="Mono.Xml.XPath\DTMXPathNode2.cs" />\r
-    <Compile Include="System.Collections.Generic\KeyedByTypeCollection.cs" />\r
-    <Compile Include="System.Collections.Generic\SynchronizedCollection.cs" />\r
-    <Compile Include="System.Collections.Generic\SynchronizedKeyedCollection.cs" />\r
-    <Compile Include="System.Collections.Generic\SynchronizedReadOnlyCollection.cs" />\r
-    <Compile Include="System.IO\PipeException.cs" />\r
-    <Compile Include="System.ServiceModel.Activation\AspNetIntegrationRequirementsAttribute.cs" />\r
-    <Compile Include="System.ServiceModel.Activation\ServiceHostFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Activation\ServiceHostFactoryBase.cs" />\r
-    <Compile Include="System.ServiceModel.Activation\VirtualPathExtension.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpChannelListenerEntry.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpContextInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpListenerManager.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpListenerManagerTable.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpReplyChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpRequestContext.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\PeerDuplexChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\TcpBinaryFrameManager.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\TcpChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\TcpChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\TcpDuplexSessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\TcpReplyChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\TcpRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\MessageSecurityBindingSupport.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecureMessageDecryptor.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecureMessageGenerator.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityCapabilities.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityDuplexSessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityOutputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityReplyChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityRequestContext.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SupportingTokenInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\WSEncryptedXml.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\WSSecurityMessageHeader.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\WSSignedXml.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\AddressHeader.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\AddressHeaderCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\AddressingVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\AsymmetricSecurityBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BinaryMessageEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BinaryMessageEncoderFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BinaryMessageEncodingBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\Binding.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BindingContext.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BindingElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BindingParameterCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BodyWriter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BufferManager.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CachingCompiler.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelFactoryBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelListenerBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelListenerBase_1.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelManagerBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelParameterCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelPoolSettings.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CommunicationObject.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CompilationException.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CompositeDuplexBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CompositeDuplexBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CompressionFormat.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ConnectionOrientedTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ContentType.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CustomBinding.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\DeliveryFailure.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\DeliveryStatus.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\DuplexChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\DuplexSessionBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\FaultConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HostedTransportConfiguration.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HtmlizedException.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpCookieContainerBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpRequestMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpResponseMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpsTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IBindingDeliveryCapabilities.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IBindingMulticastCapabilities.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IBindingRuntimePreferences.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IDuplexChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IDuplexSession.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IDuplexSessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IHttpCookieContainer.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IInputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IInputSession.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IInputSessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\InputChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\InvalidChannelBindingException.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IOutputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IOutputSession.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IOutputSessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IReplyChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IReplySessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IRequestSessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ISecurityCapabilities.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ISession.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ISessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ITransactedBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ITransportTokenAssertionProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\LayeredCommunicationObject.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\LayeredOutputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\LayeredReplyChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\LayeredRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\LocalClientSecuritySettings.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\Message.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageBuffer.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageBufferImpl.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageEncoderFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageEncodingBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageEncodingBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageFault.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageFaultBodyWriter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageHeader.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageHeaderInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageHeaders.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageImpl.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageProperties.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqBindingElementBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqInputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqOutputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MtomMessageEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MtomMessageEncoderFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MtomMessageEncodingBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\NamedPipeChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\NamedPipeChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\NamedPipeConnectionPoolSettings.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\NamedPipeReplyChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\NamedPipeRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\NamedPipetransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\OneWayBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\OneWayBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\OutputChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerCustomResolverBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerInputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerOutputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerResolverBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PnrpPeerResolverBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PolicyImportHelper.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PrivacyNoticeBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ReliableSessionBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ReliableSessionBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\RemoteEndpointMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ReplyChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\RequestChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\RequestContext.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SecurityBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SecurityBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ServiceHostParser.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SslStreamSecurityBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SslStreamSecurityUpgradeAcceptor.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SslStreamSecurityUpgradeProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StandardBindingImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamSecurityUpgradeAcceptor.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamSecurityUpgradeInitiator.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamSecurityUpgradeProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamUpgradeAcceptor.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamUpgradeBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamUpgradeInitiator.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamUpgradeProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SvcHttpHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SvcHttpHandlerFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SymmetricSecurityBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TcpConnectionPoolSettings.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TcpTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TextMessageEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TextMessageEncoderFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TextMessageEncodingBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TransactionFlowBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TransactionFlowBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TransactionMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TransportBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TransportSecurityBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\UnderstoodHeaders.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\UseManagedPresentationBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\WebSocketTransportSettings.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\WebSocketTransportUsage.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\WindowsStreamSecurityBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\XmlObjectSerializerBodyWriter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\XmlReaderBodyWriter.cs" />\r
-    <Compile Include="System.ServiceModel.ComIntegration\Dummy.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\AddressHeaderCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\AllowedAudienceUriElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\AllowedAudienceUriElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\AuthenticationMode.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\AuthorizationPolicyTypeElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\AuthorizationPolicyTypeElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BaseAddressElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BaseAddressElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BaseAddressPrefixFilterElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BaseAddressPrefixFilterElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpBindingElement_4_5.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpMessageSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpsBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpsBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpsSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BehaviorExtensionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BehaviorsSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BinaryMessageEncodingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BindingElementExtensionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BindingsSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CallbackDebugElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CallbackTimeoutsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CertificateElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CertificateReferenceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ChannelEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ChannelEndpointElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ChannelPoolSettingsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ClaimTypeElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ClaimTypeElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ClientCredentialsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ClientSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ClientViaElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComContractElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComContractElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComContractsSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComMethodElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComMethodElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CommonBehaviorsSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CommonEndpointBehaviorElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CommonServiceBehaviorElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComPersistableTypeElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComPersistableTypeElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CompositeDuplexElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComUdtElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComUdtElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ConfigUtil.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ConnectionOrientedTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CustomBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CustomBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CustomBindingElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\DataContractSerializerElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\DiagnosticSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\DnsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\EncodingConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\EndpointAddressElementBase.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\EndpointBehaviorElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\EndpointBehaviorElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\EndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\EndToEndTracingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ExtensionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ExtensionElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ExtensionsSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\FederatedMessageSecurityOverHttpElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HostElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HostTimeoutsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HttpBindingBaseElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HttpDigestClientElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HttpsTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HttpTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HttpTransportSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IBindingConfigurationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IdentityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IPAddressConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IssuedTokenClientBehaviorsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IssuedTokenClientBehaviorsElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IssuedTokenClientElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IssuedTokenParametersElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IssuedTokenParametersEndpointAddressElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IssuedTokenServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\LocalClientSecuritySettingsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\LocalServiceSecuritySettingsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MessageLoggingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MessageSecurityOverHttpElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MessageSecurityOverMsmqElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MessageSecurityOverTcpElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MessageSecurityVersionConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MessageVersionConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MetadataElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MethodStubs.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexBindingBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexHttpsBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexHttpsBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexNamedPipeBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexNamedPipeBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexTcpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexTcpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqBindingElementBase.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqElementBase.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqIntegrationBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqIntegrationBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqIntegrationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqIntegrationSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqTransportSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MtomMessageEncodingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NamedPipeConnectionPoolSettingsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NamedPipeTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NamedPipeTransportSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NamedServiceModelExtensionCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetMsmqBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetMsmqBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetMsmqSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetNamedPipeBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetNamedPipeBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetNamedPipeSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetPeerTcpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetPeerTcpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetTcpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetTcpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetTcpSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NonDualMessageSecurityOverHttpElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\OneWayElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PeerCredentialElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PeerCustomResolverElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PeerResolverElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PeerSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PeerTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PeerTransportSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PnrpPeerResolverElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PolicyImporterElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PolicyImporterElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PolicyVersionConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PrivacyNoticeElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ProtocolMappingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ProtocolMappingElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ProtocolMappingSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ReliableMessagingVersionConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ReliableSessionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\RsaElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\SecureConversationServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\SecurityAlgorithmSuiteConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\SecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\SecurityElementBase.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceAuthorizationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceBehaviorElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceBehaviorElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceCredentialsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceDebugElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceEndpointElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceHostingEnvironmentSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceMetadataEndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceMetadataEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceMetadataPublishingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceModelConfigurationElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceModelEnhancedConfigurationElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceModelExtensionCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceModelExtensionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceModelSectionGroup.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServicePrincipalNameElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceSecurityAuditElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServicesSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceThrottlingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceTimeoutsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\SslStreamSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardBindingElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardBindingOptionalReliableSessionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardBindingReliableSessionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardEndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardEndpointElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardEndpointsSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\SynchronousReceiveElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TcpConnectionPoolSettingsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TcpTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TcpTransportSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TextMessageEncodingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TransactedBatchingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TransactionFlowElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TransactionProtocolConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TransportConfigurationTypeElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TransportConfigurationTypeElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\UseManagedPresentationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\UserNameServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\UserPrincipalNameElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WindowsClientElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WindowsServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WindowsStreamSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WS2007FederationHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WS2007FederationHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WS2007HttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WS2007HttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WsdlImporterElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WsdlImporterElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSDualHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSDualHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSDualHttpSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSFederationHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSFederationHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSFederationHttpSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSHttpBindingBaseElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSHttpSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSHttpTransportSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509CertificateTrustedIssuerElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509CertificateTrustedIssuerElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509ClientCertificateAuthenticationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509ClientCertificateCredentialsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509DefaultServiceCertificateElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509InitiatorCertificateClientElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509InitiatorCertificateServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509PeerCertificateAuthenticationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509PeerCertificateElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509RecipientCertificateClientElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509RecipientCertificateServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509ScopedServiceCertificateElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509ScopedServiceCertificateElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509ServiceCertificateAuthenticationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\XmlDictionaryReaderQuotasElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\XmlElementElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\XmlElementElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\XPathMessageFilterElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\XPathMessageFilterElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\XPathMessageFilterElementComparer.cs" />\r
-    <Compile Include="System.ServiceModel.Description\CallbackDebugBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\CallbackTimeoutsBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ClientCredentials.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ClientViaBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ContractDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ContractDescriptionGenerator.cs" />\r
-    <Compile Include="System.ServiceModel.Description\CustomPolicyConversionContext.cs" />\r
-    <Compile Include="System.ServiceModel.Description\DataContractSerializerMessageContractImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\DataContractSerializerOperationBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\FaultDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\FaultDescriptionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IContractBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IContractBehaviorAttribute.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IEndpointBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IMetadataExchange.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IOperationBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IOperationContractGenerationExtension.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IpolicyExporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IPolicyImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IServiceBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IServiceContractGenerationExtension.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IWsdlExporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IWsdlImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\LocalServiceSecuritySettings.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessageBodyDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessageDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessageDescriptionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessageHeaderDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessageHeaderDescriptionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessagePartDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessagePartDescriptionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessagePropertyDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessagePropertyDescriptionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataConversionError.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataExchangeBindings.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataExchangeClient.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataExporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataLocation.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataReference.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataResolver.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataSection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataSectionSerializerBase.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataSet.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MustUnderstandBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\OperationContractGenerationContext.cs" />\r
-    <Compile Include="System.ServiceModel.Description\OperationDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\OperationDescriptionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\PolicyAssertionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\PolicyConversionContext.cs" />\r
-    <Compile Include="System.ServiceModel.Description\PolicyVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceAuthorizationBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceContractGenerationContext.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceContractGenerator.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceCredentials.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceDebugBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceEndpoint.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceEndpointCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceMetadataBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceMetadataEndpoint.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceMetadataExtension.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceSecurityAuditBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceThrottlingBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceTimeoutsBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\SynchronousReceiveBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\TransactedBatchingBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\TypedMessageConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WsdlContractConversionContext.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WsdlEndpointConversionContext.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WsdlExporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WsdlImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WSTrustMessageConverters.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WSTrustSTSContract.cs" />\r
-    <Compile Include="System.ServiceModel.Description\XmlName.cs" />\r
-    <Compile Include="System.ServiceModel.Description\XmlSerializerMessageContractImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\XmlSerializerOperationBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Diagnostics\MessageLoggingSettings.cs" />\r
-    <Compile Include="System.ServiceModel.Diagnostics\MessageLogTraceRecord.cs" />\r
-    <Compile Include="System.ServiceModel.Diagnostics\PerformanceCounterScope.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ActionMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ActionMessageFilterTable.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\BaseMessagesFormatter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\BaseRequestProcessor.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\BaseRequestProcessorHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\CallbackInstanceContextProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ChannelDispatcher.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ChannelDispatcherBase.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ChannelDispatcherCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ClientOperation.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ClientRuntime.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\DataContractSerializerServiceBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\DefaultInstanceContextProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\DefaultOperationInvoker.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\DispatchOperation.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\DispatchRuntime.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\EndpointAddressMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\EndpointAddressMessageFilterTable.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\EndpointDispatcher.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ErrorProcessingHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ExceptionHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\FaultContractInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\FilterInvalidBodyAccessException.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\FinalizeProcessingHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ICallContextInitializer.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IChannelDispatcherBoundListener.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IChannelInitializer.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IClientMessageFormatter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IClientMessageInspector.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IClientOperationSelector.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IDispatchMessageFormatter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IDispatchMessageInspector.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IDispatchOperationSelector.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IErrorHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IInputSessionShutdown.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IInstanceContextInitializer.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IInstanceContextProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IInstanceProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IInteractiveChannelInitializer.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IMessageFilterTable.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\InitializingHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\InputOrReplyRequestProcessor.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\InstanceContextIdleCallback.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\InstanceManager.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\InvalidBodyAccessException.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IOperationInvoker.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IParameterInspector.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MatchAllMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MatchNoneMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MessageFilterNodeQuotaExceededException.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MessageFilterTable.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MessageProcessingContext.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MexInstanceContextProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MultipleMessageFilterMatchesException.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\NavigatorInvalidBodyAccessException.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\OperationInvokerHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\PostReceiveRequestHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\PrefixEndpointAddressMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ReplyHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\SeekableXPathNavigator.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ServiceThrottle.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\SessionInstanceContextProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\SingletonInstanceContextProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\XmlMessagesFormatter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\XPathMessageContext.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\XPathMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\XPathMessageFilterTable.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\XPathNavigatorException.cs" />\r
-    <Compile Include="System.ServiceModel.MsmqIntegration\MsmqIntegrationBinding.cs" />\r
-    <Compile Include="System.ServiceModel.MsmqIntegration\MsmqIntegrationBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.MsmqIntegration\MsmqIntegrationMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.MsmqIntegration\MsmqIntegrationSecurity.cs" />\r
-    <Compile Include="System.ServiceModel.MsmqIntegration\MsmqMessage.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\CustomPeerResolverService.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\ICustomPeerResolverContract.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\IPeerConnectorContract.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\IPeerResolverContract.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\LocalPeerResolverService.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\PeerCustomResolverSettings.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\PeerReferralPolicy.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\PeerResolverMode.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\PeerResolverSettings.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\RefreshInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\RefreshResponseInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\RefreshResult.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\RegisterInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\RegisterResponseInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\ResolveInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\ResolveResponseInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\ServiceSettingsResponseInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\UnregisterInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\UpdateInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\AuthenticatorCommunicationObject.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\BinarySecretSecurityToken.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\ClaimTypeRequirement.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\CommunicationSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\CommunicationSecurityTokenProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\DerivedKeySecurityToken.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\IIssuanceSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\InitiatorServiceModelSecurityTokenRequirement.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\InternalEncryptedKeyIdentifierClause.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\ISecurityContextSecurityTokenCache.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\IssuedSecurityTokenHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\IssuedSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\IssuedSecurityTokenProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\IssuedTokenCommunicationObject.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\KerberosSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\ProviderCommunicationObject.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\RecipientServiceModelSecurityTokenRequirement.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\RenewedSecurityTokenHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\RsaSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecureConversationSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecureConversationSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecurityContextSecurityToken.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecurityContextSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecurityContextSecurityTokenResolver.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecurityTokenReferenceStyle.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\ServiceModelSecurityTokenRequirement.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\ServiceModelSecurityTokenTypes.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SpnegoSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SpnegoSecurityTokenProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SslnegoCookieResolver.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SslSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SslSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SslSecurityTokenProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SspiClientSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SspiSecurityToken.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SspiSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SspiSession.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SupportingTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\TlsClientSession.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\TlsServerSession.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\UserNameSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\WrappedKeySecurityToken.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\X509SecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security\BasicSecurityProfileVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Security\BinarySecretKeyIdentifierClause.cs" />\r
-    <Compile Include="System.ServiceModel.Security\ChannelProtectionRequirements.cs" />\r
-    <Compile Include="System.ServiceModel.Security\DataProtectionSecurityStateEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Security\ExpiredSecurityTokenException.cs" />\r
-    <Compile Include="System.ServiceModel.Security\HttpDigestClientCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\IdentityVerifier.cs" />\r
-    <Compile Include="System.ServiceModel.Security\IEndpointIdentityProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Security\InfocardInteractiveChannelInitializer.cs" />\r
-    <Compile Include="System.ServiceModel.Security\ISecureConversationSession.cs" />\r
-    <Compile Include="System.ServiceModel.Security\ISecuritySession.cs" />\r
-    <Compile Include="System.ServiceModel.Security\IssuedTokenClientCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\IssuedTokenServiceCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\KeyEntropyMode.cs" />\r
-    <Compile Include="System.ServiceModel.Security\KeyNameIdentifierClause.cs" />\r
-    <Compile Include="System.ServiceModel.Security\MessagePartSpecification.cs" />\r
-    <Compile Include="System.ServiceModel.Security\MessageProtectionOrder.cs" />\r
-    <Compile Include="System.ServiceModel.Security\MessageSecurityException.cs" />\r
-    <Compile Include="System.ServiceModel.Security\PeerCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\ScopedMessagePartSpecification.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecureConversationServiceCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecureConversationVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityAccessDeniedException.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityAlgorithmSuite.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityContextKeyIdentifierClause.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityCredentialsManager.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityNegotiationException.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityPolicyVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityStateEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityTokenAttachmentMode.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityTokenSpecification.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Security\ServiceCredentialsSecurityTokenManager.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SspiSecurityTokenProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SupportingTokenSpecification.cs" />\r
-    <Compile Include="System.ServiceModel.Security\TrustVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Security\UnionSecurityTokenResolver.cs" />\r
-    <Compile Include="System.ServiceModel.Security\UserNamePasswordClientCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\UserNamePasswordServiceCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\WindowsClientCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\WindowsServiceCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\WSSecurityTokenSerializer.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509CertificateInitiatorClientCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509CertificateInitiatorServiceCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509CertificateRecipientClientCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509CertificateRecipientServiceCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509ClientCertificateAuthentication.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509PeerCertificateAuthentication.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509ServiceCertificateAuthentication.cs" />\r
-    <Compile Include="System.ServiceModel\ActionNotSupportedException.cs" />\r
-    <Compile Include="System.ServiceModel\AddressAccessDeniedException.cs" />\r
-    <Compile Include="System.ServiceModel\AddressAlreadyInUseException.cs" />\r
-    <Compile Include="System.ServiceModel\AllEnums.cs" />\r
-    <Compile Include="System.ServiceModel\BasicHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\BasicHttpBinding_4_5.cs" />\r
-    <Compile Include="System.ServiceModel\BasicHttpMessageSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\BasicHttpsBinding.cs" />\r
-    <Compile Include="System.ServiceModel\BasicHttpSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\BasicHttpsSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\CallbackBehaviorAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\ChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel\ChannelFactory_1.cs" />\r
-    <Compile Include="System.ServiceModel\ChannelTerminatedException.cs" />\r
-    <Compile Include="System.ServiceModel\ClientBase.cs" />\r
-    <Compile Include="System.ServiceModel\ClientCredentialsSecurityTokenManager.cs" />\r
-    <Compile Include="System.ServiceModel\ClientProxyGenerator.cs" />\r
-    <Compile Include="System.ServiceModel\ClientRealProxy.cs" />\r
-    <Compile Include="System.ServiceModel\ClientRuntimeChannel.cs" />\r
-    <Compile Include="System.ServiceModel\CommunicationException.cs" />\r
-    <Compile Include="System.ServiceModel\CommunicationObjectAbortedException.cs" />\r
-    <Compile Include="System.ServiceModel\CommunicationObjectFaultedException.cs" />\r
-    <Compile Include="System.ServiceModel\Constants.cs" />\r
-    <Compile Include="System.ServiceModel\DataContractFormatAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\DefaultCommunicationTimeouts.cs" />\r
-    <Compile Include="System.ServiceModel\DeliveryRequirementsAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\DnsEndpointIdentity.cs" />\r
-    <Compile Include="System.ServiceModel\Dummy.cs" />\r
-    <Compile Include="System.ServiceModel\DuplexChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel\DuplexClientBase.cs" />\r
-    <Compile Include="System.ServiceModel\DuplexClientRuntimeChannel.cs" />\r
-    <Compile Include="System.ServiceModel\EndpointAddress.cs" />\r
-    <Compile Include="System.ServiceModel\EndpointAddress10.cs" />\r
-    <Compile Include="System.ServiceModel\EndpointAddressAugust2004.cs" />\r
-    <Compile Include="System.ServiceModel\EndpointAddressBuilder.cs" />\r
-    <Compile Include="System.ServiceModel\EndpointIdentity.cs" />\r
-    <Compile Include="System.ServiceModel\EndpointNotFoundException.cs" />\r
-    <Compile Include="System.ServiceModel\EnvelopeVersion.cs" />\r
-    <Compile Include="System.ServiceModel\ExceptionDetail.cs" />\r
-    <Compile Include="System.ServiceModel\ExtensionCollection.cs" />\r
-    <Compile Include="System.ServiceModel\FaultCode.cs" />\r
-    <Compile Include="System.ServiceModel\FaultContractAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\FaultException.cs" />\r
-    <Compile Include="System.ServiceModel\FaultException_1.cs" />\r
-    <Compile Include="System.ServiceModel\FaultReason.cs" />\r
-    <Compile Include="System.ServiceModel\FaultReasonText.cs" />\r
-    <Compile Include="System.ServiceModel\FederatedMessageSecurityOverHttp.cs" />\r
-    <Compile Include="System.ServiceModel\HttpBindingBase.cs" />\r
-    <Compile Include="System.ServiceModel\HttpTransportSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\IClientChannel.cs" />\r
-    <Compile Include="System.ServiceModel\ICommunicationObject.cs" />\r
-    <Compile Include="System.ServiceModel\IContextChannel.cs" />\r
-    <Compile Include="System.ServiceModel\IDefaultCommunicationTimeouts.cs" />\r
-    <Compile Include="System.ServiceModel\IDuplexClientChannel.cs" />\r
-    <Compile Include="System.ServiceModel\IExtensibleObject.cs" />\r
-    <Compile Include="System.ServiceModel\IExtension.cs" />\r
-    <Compile Include="System.ServiceModel\IExtensionCollection.cs" />\r
-    <Compile Include="System.ServiceModel\InstanceContext.cs" />\r
-    <Compile Include="System.ServiceModel\InvalidMessageContractException.cs" />\r
-    <Compile Include="System.ServiceModel\IOnlineStatus.cs" />\r
-    <Compile Include="System.ServiceModel\IServiceChannel.cs" />\r
-    <Compile Include="System.ServiceModel\Logger.cs" />\r
-    <Compile Include="System.ServiceModel\MessageBodyAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessageContractAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessageContractMemberAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessageHeader_1.cs" />\r
-    <Compile Include="System.ServiceModel\MessageHeaderArrayAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessageHeaderAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessageHeaderException.cs" />\r
-    <Compile Include="System.ServiceModel\MessageParameterAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessagePropertyAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessageSecurityOverHttp.cs" />\r
-    <Compile Include="System.ServiceModel\MessageSecurityOverMsmq.cs" />\r
-    <Compile Include="System.ServiceModel\MessageSecurityOverTcp.cs" />\r
-    <Compile Include="System.ServiceModel\MessageSecurityVersion.cs" />\r
-    <Compile Include="System.ServiceModel\MsmqBindingBase.cs" />\r
-    <Compile Include="System.ServiceModel\MsmqException.cs" />\r
-    <Compile Include="System.ServiceModel\MsmqPoisonMessageException.cs" />\r
-    <Compile Include="System.ServiceModel\MsmqTransportSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\NamedPipeTransportSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\NetHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\NetHttpMessageEncoding.cs" />\r
-    <Compile Include="System.ServiceModel\NetMsmqBinding.cs" />\r
-    <Compile Include="System.ServiceModel\NetMsmqSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\NetNamedPipeBinding.cs" />\r
-    <Compile Include="System.ServiceModel\NetNamedPipeSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\NetPeerTcpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\NetTcpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\NetTcpSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\NonDualMessageSecurityOverHttp.cs" />\r
-    <Compile Include="System.ServiceModel\OperationBehaviorAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\OperationContext.cs" />\r
-    <Compile Include="System.ServiceModel\OperationContextScope.cs" />\r
-    <Compile Include="System.ServiceModel\OperationContractAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\OptionalReliableSession.cs" />\r
-    <Compile Include="System.ServiceModel\PeerMessagePropagationMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel\PeerNode.cs" />\r
-    <Compile Include="System.ServiceModel\PeerNodeAddress.cs" />\r
-    <Compile Include="System.ServiceModel\PeerResolver.cs" />\r
-    <Compile Include="System.ServiceModel\PeerResolverImpl.cs" />\r
-    <Compile Include="System.ServiceModel\PeerSecuritySettings.cs" />\r
-    <Compile Include="System.ServiceModel\PeerTransportSecuritySettings.cs" />\r
-    <Compile Include="System.ServiceModel\PoisonMessageException.cs" />\r
-    <Compile Include="System.ServiceModel\ProtocolException.cs" />\r
-    <Compile Include="System.ServiceModel\QuotaExceededException.cs" />\r
-    <Compile Include="System.ServiceModel\ReliableMessagingVersion.cs" />\r
-    <Compile Include="System.ServiceModel\ReliableSession.cs" />\r
-    <Compile Include="System.ServiceModel\RsaEndpointIdentity.cs" />\r
-    <Compile Include="System.ServiceModel\ServerTooBusyException.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceActivationException.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceAuthorizationManager.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceBehaviorAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceContractAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceHost.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceHostBase.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceHostingEnvironment.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceKnownTypeAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceProxyGenerator.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceRuntimeChannel.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceSecurityContext.cs" />\r
-    <Compile Include="System.ServiceModel\SilverlightClientConfigLoader.cs" />\r
-    <Compile Include="System.ServiceModel\SpnEndpointIdentity.cs" />\r
-    <Compile Include="System.ServiceModel\TcpTransportSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\TransactionFlowAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\TransactionProtocol.cs" />\r
-    <Compile Include="System.ServiceModel\TransferMode.cs" />\r
-    <Compile Include="System.ServiceModel\UnknownMessageReceivedEventArgs.cs" />\r
-    <Compile Include="System.ServiceModel\UpnEndpointIdentity.cs" />\r
-    <Compile Include="System.ServiceModel\UriSchemeKeyedCollection.cs" />\r
-    <Compile Include="System.ServiceModel\WS2007FederationHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\WS2007HttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\WSDualHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\WSDualHttpSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\WSFederationHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\WSFederationHttpSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\WSHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\WSHttpBindingBase.cs" />\r
-    <Compile Include="System.ServiceModel\WSHttpSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\X509CertificateEndpointIdentity.cs" />\r
-    <Compile Include="System.ServiceModel\XmlSerializerFormatAttribute.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj">\r
-      <Project>{E537F31B-BCB7-4935-ABF3-DF2FAC48DCB3}</Project>\r
-      <Name>System.ServiceModel.Activation-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Security/System.Security-net_4_5.csproj">\r
-      <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.IdentityModel/System.IdentityModel-net_4_5.csproj">\r
-      <Project>{F056C062-E467-4989-9366-440E8CD23C0C}</Project>\r
-      <Name>System.IdentityModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj">\r
-      <Project>{AB4F77BB-4340-4A79-9B66-EF5B4221E1F2}</Project>\r
-      <Name>System.IdentityModel.Selectors-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
-      <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Messaging/System.Messaging-net_4_5.csproj">\r
-      <Project>{1CBEC0FC-5926-42FA-A0CF-A19617FABB78}</Project>\r
-      <Name>System.Messaging-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Services/System.Web.Services-net_4_5.csproj">\r
-      <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/WS-Addressing.schema">\r
-      <LogicalName>WS-Addressing.schema</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/ws-addr.xsd">\r
-      <LogicalName>ws-addr.xsd</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel-plainservice-net_4_5.csproj b/mcs/class/System.ServiceModel/System.ServiceModel-plainservice-net_4_5.csproj
deleted file mode 100644 (file)
index 5b75911..0000000
+++ /dev/null
@@ -1,1160 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0E3CFD7E-2F93-4B5B-B7FA-2AEBE0F850C0}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5/plainservice</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceModel</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;TRACE;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;TRACE;NET_3_0</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Atom10FeedFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Atom10FeedFormatter_1.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Atom10ItemFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Atom10ItemFormatter_1.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\AtomPub10CategoriesDocumentFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\AtomPub10ServiceDocumentFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\AtomPub10ServiceDocumentFormatter_1.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\CategoriesDocument.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\CategoriesDocumentFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\InlineCategoriesDocument.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\ISyndicationElement.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\ReferencedCategoriesDocument.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\ResourceCollectionInfo.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Rss20FeedFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Rss20FeedFormatter_1.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Rss20ItemFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Rss20ItemFormatter_1.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\ServiceDocument.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\ServiceDocumentFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationCategory.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationContent.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationElementExtension.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationElementExtensionCollection.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationExtensions.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationFeed.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationFeedFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationItem.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationItemFormatter.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationLink.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationPerson.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\SyndicationVersions.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\TextSyndicationContent.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\TextSyndicationContentKind.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\UrlSyndicationContent.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\Workspace.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System.ServiceModel.Syndication\XmlSyndicationContent.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System\UriTemplate.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System\UriTemplateEquivalenceComparer.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System\UriTemplateMatch.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System\UriTemplateMatchException.cs" />\r
-    <Compile Include="..\System.ServiceModel.Web\System\UriTemplateTable.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeAdd.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeAnd.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeArgument.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeArgumentReference.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeArithmeticOperation.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeArrayItem.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeArrayLength.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeAssignment.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeBinaryComparison.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeBinaryOperation.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeBlock.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeBuilder.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeCast.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeClass.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeCustomAttribute.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeDecrement.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeEquals.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeExpression.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeFieldReference.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeFor.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeForeach.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeGenerationHelper.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeIf.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeIncrement.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeIs.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeItem.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeLiteral.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeMethod.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeMethodCall.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeModule.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeNew.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeNewArray.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeNotEquals.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeOr.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeProperty.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodePropertyReference.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeReturn.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeSelect.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeSelfIncrement.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeTryBlock.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeUnaryOperation.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeValueReference.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeVariableDeclaration.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeVariableReference.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeWhen.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeWhile.cs" />\r
-    <Compile Include="Mono.CodeGeneration\CodeWriter.cs" />\r
-    <Compile Include="Mono.CodeGeneration\Exp.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\MD5SHA1.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\TlsHMAC.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\BitConverterLE.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\ChallengeResponse.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\MessageBase.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\NtlmFlags.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\NtlmTargetInformation.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\NtlmVersion.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\Type1Message.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\Type2Message.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Ntlm\Type3Message.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsClientCertificate.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsClientCertificateVerify.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsClientFinished.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsClientHello.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsClientKeyExchange.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsServerCertificate.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsServerCertificateRequest.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsServerFinished.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsServerHello.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsServerHelloDone.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Client\TlsServerKeyExchange.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsClientCertificate.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsClientCertificateVerify.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsClientFinished.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsClientHello.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsClientKeyExchange.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsServerCertificate.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsServerCertificateRequest.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsServerFinished.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsServerHello.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsServerHelloDone.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake.Server\TlsServerKeyExchange.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake\ClientCertificateType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake\HandshakeMessage.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls.Handshake\HandshakeType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\Alert.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\CipherAlgorithmType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\CipherSuite.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\CipherSuiteCollection.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\CipherSuiteFactory.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ClientContext.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ClientRecordProtocol.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ClientSessionCache.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ContentType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\Context.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\DebugHelper.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ExchangeAlgorithmType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\HandshakeState.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\HashAlgorithmType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\HttpsClientStream.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\RecordProtocol.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\RSASslSignatureDeformatter.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\RSASslSignatureFormatter.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SecurityCompressionType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SecurityParameters.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SecurityProtocolType.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ServerContext.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\ServerRecordProtocol.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SslCipherSuite.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SslClientStream.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SslHandshakeHash.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SslServerStream.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\SslStreamBase.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\TlsCipherSuite.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\TlsClientSettings.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\TlsException.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\TlsServerSettings.cs" />\r
-    <Compile Include="Mono.Security.Protocol.Tls\TlsStream.cs" />\r
-    <Compile Include="Mono.Xml.XPath\DTMXPathDocument2.cs" />\r
-    <Compile Include="Mono.Xml.XPath\DTMXPathDocumentBuilder2.cs" />\r
-    <Compile Include="Mono.Xml.XPath\DTMXPathDocumentWriter2.cs" />\r
-    <Compile Include="Mono.Xml.XPath\DTMXPathNavigator2.cs" />\r
-    <Compile Include="Mono.Xml.XPath\DTMXPathNode2.cs" />\r
-    <Compile Include="System.Collections.Generic\KeyedByTypeCollection.cs" />\r
-    <Compile Include="System.Collections.Generic\SynchronizedCollection.cs" />\r
-    <Compile Include="System.Collections.Generic\SynchronizedKeyedCollection.cs" />\r
-    <Compile Include="System.Collections.Generic\SynchronizedReadOnlyCollection.cs" />\r
-    <Compile Include="System.IO\PipeException.cs" />\r
-    <Compile Include="System.ServiceModel.Activation\AspNetIntegrationRequirementsAttribute.cs" />\r
-    <Compile Include="System.ServiceModel.Activation\ServiceHostFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Activation\ServiceHostFactoryBase.cs" />\r
-    <Compile Include="System.ServiceModel.Activation\VirtualPathExtension.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpChannelListenerEntry.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpContextInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpListenerManager.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpListenerManagerTable.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpReplyChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Http\HttpRequestContext.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\PeerDuplexChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\TcpBinaryFrameManager.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\TcpChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\TcpChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\TcpDuplexSessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\TcpReplyChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.NetTcp\TcpRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\MessageSecurityBindingSupport.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecureMessageDecryptor.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecureMessageGenerator.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityCapabilities.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityDuplexSessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityOutputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityReplyChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SecurityRequestContext.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\SupportingTokenInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\WSEncryptedXml.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\WSSecurityMessageHeader.cs" />\r
-    <Compile Include="System.ServiceModel.Channels.Security\WSSignedXml.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\AddressHeader.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\AddressHeaderCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\AddressingVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\AsymmetricSecurityBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BinaryMessageEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BinaryMessageEncoderFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BinaryMessageEncodingBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\Binding.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BindingContext.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BindingElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BindingParameterCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BodyWriter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\BufferManager.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CachingCompiler.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelFactoryBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelListenerBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelListenerBase_1.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelManagerBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelParameterCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ChannelPoolSettings.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CommunicationObject.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CompilationException.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CompositeDuplexBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CompositeDuplexBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CompressionFormat.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ConnectionOrientedTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ContentType.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\CustomBinding.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\DeliveryFailure.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\DeliveryStatus.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\DuplexChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\DuplexSessionBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\FaultConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HostedTransportConfiguration.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HtmlizedException.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpCookieContainerBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpRequestMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpResponseMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpsTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\HttpTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IBindingDeliveryCapabilities.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IBindingMulticastCapabilities.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IBindingRuntimePreferences.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IDuplexChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IDuplexSession.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IDuplexSessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IHttpCookieContainer.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IInputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IInputSession.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IInputSessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\InputChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\InvalidChannelBindingException.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IOutputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IOutputSession.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IOutputSessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IReplyChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IReplySessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\IRequestSessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ISecurityCapabilities.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ISession.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ISessionChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ITransactedBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ITransportTokenAssertionProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\LayeredCommunicationObject.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\LayeredOutputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\LayeredReplyChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\LayeredRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\LocalClientSecuritySettings.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\Message.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageBuffer.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageBufferImpl.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageEncoderFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageEncodingBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageEncodingBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageFault.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageFaultBodyWriter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageHeader.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageHeaderInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageHeaders.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageImpl.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageProperties.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MessageVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqBindingElementBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqInputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqOutputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MsmqTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MtomMessageEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MtomMessageEncoderFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\MtomMessageEncodingBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\NamedPipeChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\NamedPipeChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\NamedPipeConnectionPoolSettings.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\NamedPipeReplyChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\NamedPipeRequestChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\NamedPipetransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\OneWayBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\OneWayBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\OutputChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerChannelListener.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerCustomResolverBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerInputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerOutputChannel.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerResolverBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PeerTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PnrpPeerResolverBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PolicyImportHelper.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\PrivacyNoticeBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ReliableSessionBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ReliableSessionBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\RemoteEndpointMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ReplyChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\RequestChannelBase.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\RequestContext.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SecurityBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SecurityBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\ServiceHostParser.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SslStreamSecurityBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SslStreamSecurityUpgradeAcceptor.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SslStreamSecurityUpgradeProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StandardBindingImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamSecurityUpgradeAcceptor.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamSecurityUpgradeInitiator.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamSecurityUpgradeProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamUpgradeAcceptor.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamUpgradeBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamUpgradeInitiator.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\StreamUpgradeProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SvcHttpHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SvcHttpHandlerFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\SymmetricSecurityBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TcpConnectionPoolSettings.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TcpTransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TextMessageEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TextMessageEncoderFactory.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TextMessageEncodingBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TransactionFlowBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TransactionFlowBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TransactionMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TransportBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TransportBindingElementImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\TransportSecurityBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\UnderstoodHeaders.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\UseManagedPresentationBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\WebSocketTransportSettings.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\WebSocketTransportUsage.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\WindowsStreamSecurityBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\XmlObjectSerializerBodyWriter.cs" />\r
-    <Compile Include="System.ServiceModel.Channels\XmlReaderBodyWriter.cs" />\r
-    <Compile Include="System.ServiceModel.ComIntegration\Dummy.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\AddressHeaderCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\AllowedAudienceUriElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\AllowedAudienceUriElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\AuthenticationMode.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\AuthorizationPolicyTypeElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\AuthorizationPolicyTypeElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BaseAddressElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BaseAddressElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BaseAddressPrefixFilterElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BaseAddressPrefixFilterElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpBindingElement_4_5.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpMessageSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpsBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpsBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BasicHttpsSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BehaviorExtensionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BehaviorsSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BinaryMessageEncodingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BindingElementExtensionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\BindingsSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CallbackDebugElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CallbackTimeoutsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CertificateElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CertificateReferenceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ChannelEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ChannelEndpointElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ChannelPoolSettingsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ClaimTypeElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ClaimTypeElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ClientCredentialsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ClientSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ClientViaElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComContractElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComContractElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComContractsSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComMethodElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComMethodElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CommonBehaviorsSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CommonEndpointBehaviorElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CommonServiceBehaviorElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComPersistableTypeElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComPersistableTypeElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CompositeDuplexElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComUdtElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ComUdtElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ConfigUtil.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ConnectionOrientedTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CustomBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CustomBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\CustomBindingElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\DataContractSerializerElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\DiagnosticSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\DnsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\EncodingConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\EndpointAddressElementBase.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\EndpointBehaviorElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\EndpointBehaviorElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\EndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\EndToEndTracingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ExtensionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ExtensionElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ExtensionsSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\FederatedMessageSecurityOverHttpElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HostElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HostTimeoutsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HttpBindingBaseElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HttpDigestClientElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HttpsTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HttpTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\HttpTransportSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IBindingConfigurationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IdentityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IPAddressConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IssuedTokenClientBehaviorsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IssuedTokenClientBehaviorsElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IssuedTokenClientElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IssuedTokenParametersElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IssuedTokenParametersEndpointAddressElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\IssuedTokenServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\LocalClientSecuritySettingsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\LocalServiceSecuritySettingsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MessageLoggingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MessageSecurityOverHttpElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MessageSecurityOverMsmqElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MessageSecurityOverTcpElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MessageSecurityVersionConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MessageVersionConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MetadataElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MethodStubs.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexBindingBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexHttpsBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexHttpsBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexNamedPipeBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexNamedPipeBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexTcpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MexTcpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqBindingElementBase.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqElementBase.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqIntegrationBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqIntegrationBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqIntegrationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqIntegrationSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MsmqTransportSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\MtomMessageEncodingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NamedPipeConnectionPoolSettingsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NamedPipeTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NamedPipeTransportSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NamedServiceModelExtensionCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetMsmqBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetMsmqBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetMsmqSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetNamedPipeBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetNamedPipeBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetNamedPipeSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetPeerTcpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetPeerTcpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetTcpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetTcpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NetTcpSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\NonDualMessageSecurityOverHttpElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\OneWayElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PeerCredentialElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PeerCustomResolverElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PeerResolverElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PeerSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PeerTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PeerTransportSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PnrpPeerResolverElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PolicyImporterElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PolicyImporterElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PolicyVersionConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\PrivacyNoticeElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ProtocolMappingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ProtocolMappingElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ProtocolMappingSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ReliableMessagingVersionConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ReliableSessionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\RsaElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\SecureConversationServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\SecurityAlgorithmSuiteConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\SecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\SecurityElementBase.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceAuthorizationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceBehaviorElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceBehaviorElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceCredentialsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceDebugElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceEndpointElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceHostingEnvironmentSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceMetadataEndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceMetadataEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceMetadataPublishingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceModelConfigurationElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceModelEnhancedConfigurationElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceModelExtensionCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceModelExtensionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceModelSectionGroup.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServicePrincipalNameElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceSecurityAuditElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServicesSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceThrottlingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\ServiceTimeoutsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\SslStreamSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardBindingElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardBindingOptionalReliableSessionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardBindingReliableSessionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardEndpointCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardEndpointElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardEndpointElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\StandardEndpointsSection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\SynchronousReceiveElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TcpConnectionPoolSettingsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TcpTransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TcpTransportSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TextMessageEncodingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TransactedBatchingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TransactionFlowElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TransactionProtocolConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TransportConfigurationTypeElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TransportConfigurationTypeElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\TransportElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\UseManagedPresentationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\UserNameServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\UserPrincipalNameElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WindowsClientElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WindowsServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WindowsStreamSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WS2007FederationHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WS2007FederationHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WS2007HttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WS2007HttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WsdlImporterElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WsdlImporterElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSDualHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSDualHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSDualHttpSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSFederationHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSFederationHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSFederationHttpSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSHttpBindingBaseElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSHttpBindingCollectionElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSHttpBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSHttpSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\WSHttpTransportSecurityElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509CertificateTrustedIssuerElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509CertificateTrustedIssuerElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509ClientCertificateAuthenticationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509ClientCertificateCredentialsElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509DefaultServiceCertificateElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509InitiatorCertificateClientElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509InitiatorCertificateServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509PeerCertificateAuthenticationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509PeerCertificateElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509RecipientCertificateClientElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509RecipientCertificateServiceElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509ScopedServiceCertificateElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509ScopedServiceCertificateElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\X509ServiceCertificateAuthenticationElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\XmlDictionaryReaderQuotasElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\XmlElementElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\XmlElementElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\XPathMessageFilterElement.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\XPathMessageFilterElementCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Configuration\XPathMessageFilterElementComparer.cs" />\r
-    <Compile Include="System.ServiceModel.Description\CallbackDebugBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\CallbackTimeoutsBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ClientCredentials.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ClientViaBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ContractDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ContractDescriptionGenerator.cs" />\r
-    <Compile Include="System.ServiceModel.Description\CustomPolicyConversionContext.cs" />\r
-    <Compile Include="System.ServiceModel.Description\DataContractSerializerMessageContractImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\DataContractSerializerOperationBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\FaultDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\FaultDescriptionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IContractBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IContractBehaviorAttribute.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IEndpointBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IMetadataExchange.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IOperationBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IOperationContractGenerationExtension.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IpolicyExporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IPolicyImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IServiceBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IServiceContractGenerationExtension.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IWsdlExporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\IWsdlImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\LocalServiceSecuritySettings.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessageBodyDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessageDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessageDescriptionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessageHeaderDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessageHeaderDescriptionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessagePartDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessagePartDescriptionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessagePropertyDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MessagePropertyDescriptionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataConversionError.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataExchangeBindings.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataExchangeClient.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataExporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataLocation.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataReference.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataResolver.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataSection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataSectionSerializerBase.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MetadataSet.cs" />\r
-    <Compile Include="System.ServiceModel.Description\MustUnderstandBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\OperationContractGenerationContext.cs" />\r
-    <Compile Include="System.ServiceModel.Description\OperationDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\OperationDescriptionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\PolicyAssertionCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\PolicyConversionContext.cs" />\r
-    <Compile Include="System.ServiceModel.Description\PolicyVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceAuthorizationBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceContractGenerationContext.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceContractGenerator.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceCredentials.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceDebugBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceDescription.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceEndpoint.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceEndpointCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceMetadataBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceMetadataEndpoint.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceMetadataExtension.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceSecurityAuditBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceThrottlingBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\ServiceTimeoutsBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\SynchronousReceiveBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\TransactedBatchingBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Description\TypedMessageConverter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WsdlContractConversionContext.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WsdlEndpointConversionContext.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WsdlExporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WsdlImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WSTrustMessageConverters.cs" />\r
-    <Compile Include="System.ServiceModel.Description\WSTrustSTSContract.cs" />\r
-    <Compile Include="System.ServiceModel.Description\XmlName.cs" />\r
-    <Compile Include="System.ServiceModel.Description\XmlSerializerMessageContractImporter.cs" />\r
-    <Compile Include="System.ServiceModel.Description\XmlSerializerOperationBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Diagnostics\MessageLoggingSettings.cs" />\r
-    <Compile Include="System.ServiceModel.Diagnostics\MessageLogTraceRecord.cs" />\r
-    <Compile Include="System.ServiceModel.Diagnostics\PerformanceCounterScope.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ActionMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ActionMessageFilterTable.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\BaseMessagesFormatter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\BaseRequestProcessor.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\BaseRequestProcessorHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\CallbackInstanceContextProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ChannelDispatcher.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ChannelDispatcherBase.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ChannelDispatcherCollection.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ClientOperation.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ClientRuntime.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\DataContractSerializerServiceBehavior.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\DefaultInstanceContextProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\DefaultOperationInvoker.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\DispatchOperation.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\DispatchRuntime.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\EndpointAddressMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\EndpointAddressMessageFilterTable.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\EndpointDispatcher.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ErrorProcessingHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ExceptionHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\FaultContractInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\FilterInvalidBodyAccessException.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\FinalizeProcessingHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ICallContextInitializer.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IChannelDispatcherBoundListener.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IChannelInitializer.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IClientMessageFormatter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IClientMessageInspector.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IClientOperationSelector.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IDispatchMessageFormatter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IDispatchMessageInspector.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IDispatchOperationSelector.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IErrorHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IInputSessionShutdown.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IInstanceContextInitializer.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IInstanceContextProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IInstanceProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IInteractiveChannelInitializer.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IMessageFilterTable.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\InitializingHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\InputOrReplyRequestProcessor.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\InstanceContextIdleCallback.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\InstanceManager.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\InvalidBodyAccessException.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IOperationInvoker.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\IParameterInspector.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MatchAllMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MatchNoneMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MessageFilterNodeQuotaExceededException.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MessageFilterTable.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MessageProcessingContext.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MexInstanceContextProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\MultipleMessageFilterMatchesException.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\NavigatorInvalidBodyAccessException.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\OperationInvokerHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\PostReceiveRequestHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\PrefixEndpointAddressMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ReplyHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\SeekableXPathNavigator.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\ServiceThrottle.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\SessionInstanceContextProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\SingletonInstanceContextProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\XmlMessagesFormatter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\XPathMessageContext.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\XPathMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\XPathMessageFilterTable.cs" />\r
-    <Compile Include="System.ServiceModel.Dispatcher\XPathNavigatorException.cs" />\r
-    <Compile Include="System.ServiceModel.MsmqIntegration\MsmqIntegrationBinding.cs" />\r
-    <Compile Include="System.ServiceModel.MsmqIntegration\MsmqIntegrationBindingElement.cs" />\r
-    <Compile Include="System.ServiceModel.MsmqIntegration\MsmqIntegrationMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.MsmqIntegration\MsmqIntegrationSecurity.cs" />\r
-    <Compile Include="System.ServiceModel.MsmqIntegration\MsmqMessage.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\CustomPeerResolverService.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\ICustomPeerResolverContract.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\IPeerConnectorContract.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\IPeerResolverContract.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\LocalPeerResolverService.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\PeerCustomResolverSettings.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\PeerReferralPolicy.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\PeerResolverMode.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\PeerResolverSettings.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\RefreshInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\RefreshResponseInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\RefreshResult.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\RegisterInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\RegisterResponseInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\ResolveInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\ResolveResponseInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\ServiceSettingsResponseInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\UnregisterInfo.cs" />\r
-    <Compile Include="System.ServiceModel.PeerResolvers\UpdateInfo.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\AuthenticatorCommunicationObject.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\BinarySecretSecurityToken.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\ClaimTypeRequirement.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\CommunicationSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\CommunicationSecurityTokenProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\DerivedKeySecurityToken.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\IIssuanceSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\InitiatorServiceModelSecurityTokenRequirement.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\InternalEncryptedKeyIdentifierClause.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\ISecurityContextSecurityTokenCache.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\IssuedSecurityTokenHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\IssuedSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\IssuedSecurityTokenProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\IssuedTokenCommunicationObject.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\KerberosSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\ProviderCommunicationObject.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\RecipientServiceModelSecurityTokenRequirement.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\RenewedSecurityTokenHandler.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\RsaSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecureConversationSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecureConversationSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecurityContextSecurityToken.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecurityContextSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecurityContextSecurityTokenResolver.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SecurityTokenReferenceStyle.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\ServiceModelSecurityTokenRequirement.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\ServiceModelSecurityTokenTypes.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SpnegoSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SpnegoSecurityTokenProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SslnegoCookieResolver.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SslSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SslSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SslSecurityTokenProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SspiClientSecurityTokenAuthenticator.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SspiSecurityToken.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SspiSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SspiSession.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\SupportingTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\TlsClientSession.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\TlsServerSession.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\UserNameSecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\WrappedKeySecurityToken.cs" />\r
-    <Compile Include="System.ServiceModel.Security.Tokens\X509SecurityTokenParameters.cs" />\r
-    <Compile Include="System.ServiceModel.Security\BasicSecurityProfileVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Security\BinarySecretKeyIdentifierClause.cs" />\r
-    <Compile Include="System.ServiceModel.Security\ChannelProtectionRequirements.cs" />\r
-    <Compile Include="System.ServiceModel.Security\DataProtectionSecurityStateEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Security\ExpiredSecurityTokenException.cs" />\r
-    <Compile Include="System.ServiceModel.Security\HttpDigestClientCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\IdentityVerifier.cs" />\r
-    <Compile Include="System.ServiceModel.Security\IEndpointIdentityProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Security\InfocardInteractiveChannelInitializer.cs" />\r
-    <Compile Include="System.ServiceModel.Security\ISecureConversationSession.cs" />\r
-    <Compile Include="System.ServiceModel.Security\ISecuritySession.cs" />\r
-    <Compile Include="System.ServiceModel.Security\IssuedTokenClientCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\IssuedTokenServiceCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\KeyEntropyMode.cs" />\r
-    <Compile Include="System.ServiceModel.Security\KeyNameIdentifierClause.cs" />\r
-    <Compile Include="System.ServiceModel.Security\MessagePartSpecification.cs" />\r
-    <Compile Include="System.ServiceModel.Security\MessageProtectionOrder.cs" />\r
-    <Compile Include="System.ServiceModel.Security\MessageSecurityException.cs" />\r
-    <Compile Include="System.ServiceModel.Security\PeerCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\ScopedMessagePartSpecification.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecureConversationServiceCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecureConversationVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityAccessDeniedException.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityAlgorithmSuite.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityContextKeyIdentifierClause.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityCredentialsManager.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityMessageProperty.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityNegotiationException.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityPolicyVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityStateEncoder.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityTokenAttachmentMode.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityTokenSpecification.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SecurityVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Security\ServiceCredentialsSecurityTokenManager.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SspiSecurityTokenProvider.cs" />\r
-    <Compile Include="System.ServiceModel.Security\SupportingTokenSpecification.cs" />\r
-    <Compile Include="System.ServiceModel.Security\TrustVersion.cs" />\r
-    <Compile Include="System.ServiceModel.Security\UnionSecurityTokenResolver.cs" />\r
-    <Compile Include="System.ServiceModel.Security\UserNamePasswordClientCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\UserNamePasswordServiceCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\WindowsClientCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\WindowsServiceCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\WSSecurityTokenSerializer.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509CertificateInitiatorClientCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509CertificateInitiatorServiceCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509CertificateRecipientClientCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509CertificateRecipientServiceCredential.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509ClientCertificateAuthentication.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509PeerCertificateAuthentication.cs" />\r
-    <Compile Include="System.ServiceModel.Security\X509ServiceCertificateAuthentication.cs" />\r
-    <Compile Include="System.ServiceModel\ActionNotSupportedException.cs" />\r
-    <Compile Include="System.ServiceModel\AddressAccessDeniedException.cs" />\r
-    <Compile Include="System.ServiceModel\AddressAlreadyInUseException.cs" />\r
-    <Compile Include="System.ServiceModel\AllEnums.cs" />\r
-    <Compile Include="System.ServiceModel\BasicHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\BasicHttpBinding_4_5.cs" />\r
-    <Compile Include="System.ServiceModel\BasicHttpMessageSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\BasicHttpsBinding.cs" />\r
-    <Compile Include="System.ServiceModel\BasicHttpSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\BasicHttpsSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\CallbackBehaviorAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\ChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel\ChannelFactory_1.cs" />\r
-    <Compile Include="System.ServiceModel\ChannelTerminatedException.cs" />\r
-    <Compile Include="System.ServiceModel\ClientBase.cs" />\r
-    <Compile Include="System.ServiceModel\ClientCredentialsSecurityTokenManager.cs" />\r
-    <Compile Include="System.ServiceModel\ClientProxyGenerator.cs" />\r
-    <Compile Include="System.ServiceModel\ClientRealProxy.cs" />\r
-    <Compile Include="System.ServiceModel\ClientRuntimeChannel.cs" />\r
-    <Compile Include="System.ServiceModel\CommunicationException.cs" />\r
-    <Compile Include="System.ServiceModel\CommunicationObjectAbortedException.cs" />\r
-    <Compile Include="System.ServiceModel\CommunicationObjectFaultedException.cs" />\r
-    <Compile Include="System.ServiceModel\Constants.cs" />\r
-    <Compile Include="System.ServiceModel\DataContractFormatAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\DefaultCommunicationTimeouts.cs" />\r
-    <Compile Include="System.ServiceModel\DeliveryRequirementsAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\DnsEndpointIdentity.cs" />\r
-    <Compile Include="System.ServiceModel\Dummy.cs" />\r
-    <Compile Include="System.ServiceModel\DuplexChannelFactory.cs" />\r
-    <Compile Include="System.ServiceModel\DuplexClientBase.cs" />\r
-    <Compile Include="System.ServiceModel\DuplexClientRuntimeChannel.cs" />\r
-    <Compile Include="System.ServiceModel\EndpointAddress.cs" />\r
-    <Compile Include="System.ServiceModel\EndpointAddress10.cs" />\r
-    <Compile Include="System.ServiceModel\EndpointAddressAugust2004.cs" />\r
-    <Compile Include="System.ServiceModel\EndpointAddressBuilder.cs" />\r
-    <Compile Include="System.ServiceModel\EndpointIdentity.cs" />\r
-    <Compile Include="System.ServiceModel\EndpointNotFoundException.cs" />\r
-    <Compile Include="System.ServiceModel\EnvelopeVersion.cs" />\r
-    <Compile Include="System.ServiceModel\ExceptionDetail.cs" />\r
-    <Compile Include="System.ServiceModel\ExtensionCollection.cs" />\r
-    <Compile Include="System.ServiceModel\FaultCode.cs" />\r
-    <Compile Include="System.ServiceModel\FaultContractAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\FaultException.cs" />\r
-    <Compile Include="System.ServiceModel\FaultException_1.cs" />\r
-    <Compile Include="System.ServiceModel\FaultReason.cs" />\r
-    <Compile Include="System.ServiceModel\FaultReasonText.cs" />\r
-    <Compile Include="System.ServiceModel\FederatedMessageSecurityOverHttp.cs" />\r
-    <Compile Include="System.ServiceModel\HttpBindingBase.cs" />\r
-    <Compile Include="System.ServiceModel\HttpTransportSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\IClientChannel.cs" />\r
-    <Compile Include="System.ServiceModel\ICommunicationObject.cs" />\r
-    <Compile Include="System.ServiceModel\IContextChannel.cs" />\r
-    <Compile Include="System.ServiceModel\IDefaultCommunicationTimeouts.cs" />\r
-    <Compile Include="System.ServiceModel\IDuplexClientChannel.cs" />\r
-    <Compile Include="System.ServiceModel\IExtensibleObject.cs" />\r
-    <Compile Include="System.ServiceModel\IExtension.cs" />\r
-    <Compile Include="System.ServiceModel\IExtensionCollection.cs" />\r
-    <Compile Include="System.ServiceModel\InstanceContext.cs" />\r
-    <Compile Include="System.ServiceModel\InvalidMessageContractException.cs" />\r
-    <Compile Include="System.ServiceModel\IOnlineStatus.cs" />\r
-    <Compile Include="System.ServiceModel\IServiceChannel.cs" />\r
-    <Compile Include="System.ServiceModel\Logger.cs" />\r
-    <Compile Include="System.ServiceModel\MessageBodyAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessageContractAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessageContractMemberAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessageHeader_1.cs" />\r
-    <Compile Include="System.ServiceModel\MessageHeaderArrayAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessageHeaderAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessageHeaderException.cs" />\r
-    <Compile Include="System.ServiceModel\MessageParameterAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessagePropertyAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\MessageSecurityOverHttp.cs" />\r
-    <Compile Include="System.ServiceModel\MessageSecurityOverMsmq.cs" />\r
-    <Compile Include="System.ServiceModel\MessageSecurityOverTcp.cs" />\r
-    <Compile Include="System.ServiceModel\MessageSecurityVersion.cs" />\r
-    <Compile Include="System.ServiceModel\MsmqBindingBase.cs" />\r
-    <Compile Include="System.ServiceModel\MsmqException.cs" />\r
-    <Compile Include="System.ServiceModel\MsmqPoisonMessageException.cs" />\r
-    <Compile Include="System.ServiceModel\MsmqTransportSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\NamedPipeTransportSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\NetHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\NetHttpMessageEncoding.cs" />\r
-    <Compile Include="System.ServiceModel\NetMsmqBinding.cs" />\r
-    <Compile Include="System.ServiceModel\NetMsmqSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\NetNamedPipeBinding.cs" />\r
-    <Compile Include="System.ServiceModel\NetNamedPipeSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\NetPeerTcpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\NetTcpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\NetTcpSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\NonDualMessageSecurityOverHttp.cs" />\r
-    <Compile Include="System.ServiceModel\OperationBehaviorAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\OperationContext.cs" />\r
-    <Compile Include="System.ServiceModel\OperationContextScope.cs" />\r
-    <Compile Include="System.ServiceModel\OperationContractAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\OptionalReliableSession.cs" />\r
-    <Compile Include="System.ServiceModel\PeerMessagePropagationMessageFilter.cs" />\r
-    <Compile Include="System.ServiceModel\PeerNode.cs" />\r
-    <Compile Include="System.ServiceModel\PeerNodeAddress.cs" />\r
-    <Compile Include="System.ServiceModel\PeerResolver.cs" />\r
-    <Compile Include="System.ServiceModel\PeerResolverImpl.cs" />\r
-    <Compile Include="System.ServiceModel\PeerSecuritySettings.cs" />\r
-    <Compile Include="System.ServiceModel\PeerTransportSecuritySettings.cs" />\r
-    <Compile Include="System.ServiceModel\PoisonMessageException.cs" />\r
-    <Compile Include="System.ServiceModel\ProtocolException.cs" />\r
-    <Compile Include="System.ServiceModel\QuotaExceededException.cs" />\r
-    <Compile Include="System.ServiceModel\ReliableMessagingVersion.cs" />\r
-    <Compile Include="System.ServiceModel\ReliableSession.cs" />\r
-    <Compile Include="System.ServiceModel\RsaEndpointIdentity.cs" />\r
-    <Compile Include="System.ServiceModel\ServerTooBusyException.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceActivationException.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceAuthorizationManager.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceBehaviorAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceContractAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceHost.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceHostBase.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceHostingEnvironment.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceKnownTypeAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceProxyGenerator.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceRuntimeChannel.cs" />\r
-    <Compile Include="System.ServiceModel\ServiceSecurityContext.cs" />\r
-    <Compile Include="System.ServiceModel\SilverlightClientConfigLoader.cs" />\r
-    <Compile Include="System.ServiceModel\SpnEndpointIdentity.cs" />\r
-    <Compile Include="System.ServiceModel\TcpTransportSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\TransactionFlowAttribute.cs" />\r
-    <Compile Include="System.ServiceModel\TransactionProtocol.cs" />\r
-    <Compile Include="System.ServiceModel\TransferMode.cs" />\r
-    <Compile Include="System.ServiceModel\UnknownMessageReceivedEventArgs.cs" />\r
-    <Compile Include="System.ServiceModel\UpnEndpointIdentity.cs" />\r
-    <Compile Include="System.ServiceModel\UriSchemeKeyedCollection.cs" />\r
-    <Compile Include="System.ServiceModel\WS2007FederationHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\WS2007HttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\WSDualHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\WSDualHttpSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\WSFederationHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\WSFederationHttpSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\WSHttpBinding.cs" />\r
-    <Compile Include="System.ServiceModel\WSHttpBindingBase.cs" />\r
-    <Compile Include="System.ServiceModel\WSHttpSecurity.cs" />\r
-    <Compile Include="System.ServiceModel\X509CertificateEndpointIdentity.cs" />\r
-    <Compile Include="System.ServiceModel\XmlSerializerFormatAttribute.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Security/System.Security-net_4_5.csproj">\r
-      <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.IdentityModel/System.IdentityModel-net_4_5.csproj">\r
-      <Project>{F056C062-E467-4989-9366-440E8CD23C0C}</Project>\r
-      <Name>System.IdentityModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj">\r
-      <Project>{AB4F77BB-4340-4A79-9B66-EF5B4221E1F2}</Project>\r
-      <Name>System.IdentityModel.Selectors-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Transactions/System.Transactions-net_4_5.csproj">\r
-      <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Messaging/System.Messaging-net_4_5.csproj">\r
-      <Project>{1CBEC0FC-5926-42FA-A0CF-A19617FABB78}</Project>\r
-      <Name>System.Messaging-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Services/System.Web.Services-net_4_5.csproj">\r
-      <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/WS-Addressing.schema">\r
-      <LogicalName>WS-Addressing.schema</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/ws-addr.xsd">\r
-      <LogicalName>ws-addr.xsd</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel-tests-net_4_5.csproj b/mcs/class/System.ServiceModel/System.ServiceModel-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 725fa01..0000000
+++ /dev/null
@@ -1,364 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2642A2D0-D703-4A60-B60D-B64BD12CB01C}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
-    <OutputPath>bin\Debug\System.ServiceModel-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceModel_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;TRACE;NET_3_0;HAS_ACTIVATION</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;TRACE;NET_3_0;HAS_ACTIVATION</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\FeatureBased\Features.Client\AsyncCallTesterProxy.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Client\AsyncPatternServer.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Client\DataContractTesterProxy.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Client\ExitProcessHelperServer.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Client\FaultsTesterProxy.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Client\KnownTypeTesterProxy.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Client\MessageContractTesterProxy.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Client\OperationContractServer.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Client\PrimitiveTester.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Client\UntypedMessageTesterProxy.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Contracts\AsyncCallTester.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Contracts\AsyncPatternContract.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Contracts\DataContractTester.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Contracts\DualContract.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Contracts\ExitpProcessHelper.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Contracts\FaultsTester.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Contracts\KnownTypeTester.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Contracts\MessageContractTester.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Contracts\OperationContract.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Contracts\PrimitiveTester.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Contracts\UntypedMessageTester.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Serialization\AsyncCallTest.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Serialization\AsyncPatternTester.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Serialization\DataContractSerializerTest.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Serialization\DualContractTester.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Serialization\ExitProcessHelper.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Serialization\FaultsTest.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Serialization\KnownTypeTest.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Serialization\MessageContractTest.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Serialization\OperationContractTester.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Serialization\PrimitiveTesterTest.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Serialization\UntypedMessageTest.cs" />\r
-    <Compile Include="Test\FeatureBased\Features.Serialization\XmlComparer.cs" />\r
-    <Compile Include="Test\FeatureBased\TestFixtureBase.cs" />\r
-    <Compile Include="Test\MetadataTests\BindingTestAssertions.cs" />\r
-    <Compile Include="Test\MetadataTests\ExportTests.cs" />\r
-    <Compile Include="Test\MetadataTests\ImportTests.cs" />\r
-    <Compile Include="Test\MetadataTests\ImportTests_CreateMetadata.cs" />\r
-    <Compile Include="Test\MetadataTests\ImportTests_LoadMetadata.cs" />\r
-    <Compile Include="Test\MetadataTests\ImportTests_RoundTrip.cs" />\r
-    <Compile Include="Test\MetadataTests\MetadataSamples.cs" />\r
-    <Compile Include="Test\MetadataTests\MiscImportTests.cs" />\r
-    <Compile Include="Test\MetadataTests\TestContext.cs" />\r
-    <Compile Include="Test\MetadataTests\TestLabel.cs" />\r
-    <Compile Include="Test\NUnitMoonHelper.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\AddressHeaderTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\AddressingVersionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\AsymmetricSecurityBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\BinaryMessageEncodingBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\BindingContextTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\BindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\BindingTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\CalcSampleProxy.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\CommunicationObjectSyncTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\CommunicationObjectTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\ConnectionOrientedTransportBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\CustomBindingTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\CustomPolicyConversionContext.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\DebugBindingElement.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\EmptyFaultExceptionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\EnvelopeVersionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\FaultConverterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\FaultExceptionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\HandlerBodyWriter.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\HandlerTransportBindingElement.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\HttpRequestMessagePropertyTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\HttpsTransportBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\HttpTransportBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\InterceptorBindingElement.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\InvalidBindingElement.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\LocalClientSecuritySettingsTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\MessageBufferTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\MessageEncoderTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\MessageEncodingBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\MessageFaultTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\MessageHeadersTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\MessageHeaderTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\MessagePropertiesTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\MessageTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\MessageVersionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\MsmqBindingElementBaseTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\MsmqTransportBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\NamedPipeTransportBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\OneWayBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\OutputChannelBase.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\PeerTransportBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\ReplyChannelBase.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\RequestChannelBase.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\SecurityAssert.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\SecurityBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\SslStreamSecurityBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\SymmetricSecurityBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\TcpTransportBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\TextMessageEncodingBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Channels\TransactionFlowBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\AddressHeaderCollectionElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\BasicHttpBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\BehaviorsSectionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\BindingsSectionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\ChannelEndpointElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\CustomBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\EndpointBehaviorElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\ExtensionsSectionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\MetadataElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\MexBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\NetNamedPipeBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\NetPeerTcpBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\NetTcpBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\ServiceBehaviorElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\ServiceElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\ServiceModelConfigurationElementCollectionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\ServiceModelSectionGroupTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\StandardBindingCollectionElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\StandardBindingElementCollectionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\StandardBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\StandardEndpointsSectionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Configuration\UserBinding.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\BugX41.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\ClientCredentialsTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\ContractDescriptionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\FaultDescriptionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\MetadataExchangeBindingsTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\MetadataResolverTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\MetadataSetTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\OperationDescriptionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\ServiceAuthorizationBehaviorTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\ServiceContractGeneratorTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\ServiceCredentialsTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\ServiceDebugBehaviorTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\ServiceEndpointTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\ServiceMetadataBehaviorTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\ServiceMetadataEndpointTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\ServiceThrottlingBehaviorTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\TypedMessageConverterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\WsdlExporterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Description\WsdlImporterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\ActionFilterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\Bug652331_2Test.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\Bug652331Test.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\ChannelDispatcherTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\DispatchOperationTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\DispatchRuntimeTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\EndpointAddressMessageFilterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\EndpointDispatcherTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\ExceptionHandlerTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\FilterTableTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\InvalidBodyAccessExceptionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\PrefixEndpointAddressMessageFilterTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Dispatcher\XPathMessageContextTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.PeerResolvers\CustomPeerResolverServiceTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.PeerResolvers\PeerResolverSerializationTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\IssuedSecurityTokenParametersTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\IssuedSecurityTokenProviderTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\RsaSecurityTokenParametersTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\SecureConversationSecurityTokenParametersTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\SecurityContextSecurityTokenTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\SecurityTokenParametersTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\ServiceModelSecurityTokenTypesTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\SslSecurityTokenParametersTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\SspiSecurityTokenParametersTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\UserNameSecurityTokenParametersTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\WrappedKeySecurityTokenTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\X509ListedCertificateValidator.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security.Tokens\X509SecurityTokenParametersTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security\ChannelProtectionRequirementsTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security\MessagePartSpecificationTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security\ScopedMessagePartSpecificationTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security\SecurityAlgorithmSuiteTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security\SecurityMessagePropertyTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security\SecurityTokenSpeficicationTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security\ServiceCredentialsSecurityTokenManagerTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security\ServiceSecurityContextTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security\SupportingTokenParametersTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security\TransportSecurityBindingElementTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel.Security\WSSecurityTokenSerializerTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\BasicHttpBindingTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\CallbackBehaviorAttributeTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\ChannelFactory_1Test.cs" />\r
-    <Compile Include="Test\System.ServiceModel\ChannelFactoryTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\ClientBase_InteractiveChannelInitializerTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\ClientBaseTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\ClientCredentialsSecurityTokenManagerTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\CommonUseCases.cs" />\r
-    <Compile Include="Test\System.ServiceModel\Constants.cs" />\r
-    <Compile Include="Test\System.ServiceModel\EndpointAddress10Test.cs" />\r
-    <Compile Include="Test\System.ServiceModel\EndpointAddressBuilderTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\EndpointAddressTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\EndpointBehaviorCollectionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\EndpointIdentityTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\ExtensionCollectionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\FaultCodeTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\FaultContractAttributeTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\FaultReasonTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\IntegratedConnectionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\MessageSecurityVersionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\MsmqTransportSecurityTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\NetMsmqBindingTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\NetPeerTcpBindingTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\NetTcpBindingTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\OperationContextTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\PeerNodeAddressTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\ServiceAssert.cs" />\r
-    <Compile Include="Test\System.ServiceModel\ServiceEndpointCollectionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\ServiceEndpointTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\ServiceHostBaseTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\ServiceHostTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\ServiceKnownTypeAttributeTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\SynchronizedReadOnlyCollectionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\TransactionProtocolTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\UriSchemeKeyedCollectionTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\WSFederationHttpBindingTest.cs" />\r
-    <Compile Include="Test\System.ServiceModel\WSHttpBindingTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5-1.csproj">\r
-      <Project>{F1316A49-176B-4E68-8A5F-1BA718289D46}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{B55E59B2-31CA-438B-ADB8-4B9A9A547830}</Project>\r
-      <Name>System.Security\System.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_5.csproj">\r
-      <Project>{F056C062-E467-4989-9366-440E8CD23C0C}</Project>\r
-      <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5.csproj">\r
-      <Project>{AB4F77BB-4340-4A79-9B66-EF5B4221E1F2}</Project>\r
-      <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{1CBEC0FC-5926-42FA-A0CF-A19617FABB78}</Project>\r
-      <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{725FB152-838A-4C6E-8A12-AC47E2DD4CEA}</Project>\r
-      <Name>System.Web\System.Web-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ServiceModel.Activation\System.ServiceModel.Activation-net_4_5.csproj">\r
-      <Project>{E537F31B-BCB7-4935-ABF3-DF2FAC48DCB3}</Project>\r
-      <Name>System.ServiceModel.Activation\System.ServiceModel.Activation-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/WS-Addressing.schema">\r
-      <LogicalName>WS-Addressing.schema</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/ws-addr.xsd">\r
-      <LogicalName>ws-addr.xsd</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index b3c3fe2c85d8ea26bdd2f7044c13936e6e1aa4c1..5ccee0a2605dfa6d5e968e426f232e0fcf9542fd 100644 (file)
@@ -48,24 +48,29 @@ namespace System.ServiceModel.Channels.Http
                        Entries = new List<HttpChannelListenerEntry> ();
                }
 
-               public List<HttpChannelListenerEntry> Entries { get; private set; }
+               protected List<HttpChannelListenerEntry> Entries { get; private set; }
+               object entries_lock = new object ();
 
                public abstract void RegisterListener (ChannelDispatcher channel, HttpTransportBindingElement element, TimeSpan timeout);
                public abstract void UnregisterListener (ChannelDispatcher channel, TimeSpan timeout);
 
                protected void RegisterListenerCommon (ChannelDispatcher channel, TimeSpan timeout)
                {
-                       Entries.Add (new HttpChannelListenerEntry (channel, new AutoResetEvent (false)));
+                       lock (entries_lock) {
+                               Entries.Add (new HttpChannelListenerEntry (channel, new AutoResetEvent (false)));
 
-                       Entries.Sort (HttpChannelListenerEntry.CompareEntries);
+                               Entries.Sort (HttpChannelListenerEntry.CompareEntries);
+                       }
                }
 
                protected void UnregisterListenerCommon (ChannelDispatcher channel, TimeSpan timeout)
                {
-                       var entry = Entries.First (e => e.ChannelDispatcher == channel);
-                       Entries.Remove (entry);
+                       lock (entries_lock) {
+                               var entry = Entries.First (e => e.ChannelDispatcher == channel);
+                               Entries.Remove (entry);
 
-                       entry.WaitHandle.Set (); // make sure to finish pending requests.
+                               entry.WaitHandle.Set (); // make sure to finish pending requests.
+                       }
                }
 
                public void ProcessNewContext (HttpContextInfo ctxi)
@@ -79,9 +84,11 @@ namespace System.ServiceModel.Channels.Http
 
                HttpChannelListenerEntry SelectChannel (HttpContextInfo ctx)
                {
-                       foreach (var e in Entries)
-                               if (e.FilterHttpContext (ctx))
-                                       return e;
+                       lock (entries_lock) {
+                               foreach (var e in Entries)
+                                       if (e.FilterHttpContext (ctx))
+                                               return e;
+                       }
                        return null;
                }
 
@@ -90,7 +97,10 @@ namespace System.ServiceModel.Channels.Http
                        DateTime start = DateTime.Now;
 
                        context = null;
-                       var ce = Entries.FirstOrDefault (e => e.ChannelDispatcher == channel);
+                       HttpChannelListenerEntry ce = null;
+                       lock (entries_lock) {
+                               ce = Entries.FirstOrDefault (e => e.ChannelDispatcher == channel);
+                       }
                        if (ce == null)
                                return false;
                        lock (ce.RetrieverLock) {
index 03e7cad1f1c4f7eff0afaab6e7c41ebd1801f848..098b622aa836a1ca86cba5c3fd4e1872fbc0aee8 100644 (file)
@@ -104,12 +104,15 @@ namespace System.ServiceModel.Channels.Http
                }
 
                bool close_started;
+               object close_lock = new object ();
 
                protected override void OnClose (TimeSpan timeout)
                {
-                       if (close_started)
-                               return;
-                       close_started = true;
+                       lock (close_lock) {
+                               if (close_started)
+                                       return;
+                               close_started = true;
+                       }
                        DateTime start = DateTime.Now;
 
                        // FIXME: consider timeout
index f597167e9d179208b468a7eed16c2fa12caff5c1..b005ad6c18a06fef5ffcb22513f9eb31f318e041 100644 (file)
@@ -135,9 +135,18 @@ namespace System.ServiceModel.Channels.NetTcp
                {
                        throw new NotImplementedException ();
                }
+               
+               bool close_started;
+               object close_lock = new object ();
 
                protected override void OnClose (TimeSpan timeout)
                {
+                       lock (close_lock) {
+                               if (close_started)
+                                       return;
+                               close_started = true;
+                       }
+
                        client.Close ();
                        client = null;
                        base.OnClose (timeout);
index 4e1d5c4dfd0196da7d44cf5fe40327b198840c4d..794445155d8eefa93a107137ba23439db5470f6f 100644 (file)
@@ -43,7 +43,8 @@ namespace System.ServiceModel
                int max_conn;
                OptionalReliableSession reliable_session;
                NetTcpSecurity security;
-               XmlDictionaryReaderQuotas reader_quotas;
+               XmlDictionaryReaderQuotas reader_quotas
+                       = new XmlDictionaryReaderQuotas ();
                bool transaction_flow;
                TransactionProtocol transaction_protocol;
                TcpTransportBindingElement transport;
index 2fed9fb3cdb9ff644e3bc27dddc450c3aa99d8a0..e438c8f5b71f59e09ced2747c4c82441254084b4 100644 (file)
@@ -151,7 +151,7 @@ namespace System.ServiceModel
 
                TAttr PopulateAttribute<TAttr> ()
                {
-                       object [] atts = service_type.GetCustomAttributes (typeof (TAttr), false);
+                       object [] atts = service_type.GetCustomAttributes (typeof (TAttr), true);
                        return (TAttr) (atts.Length > 0 ? atts [0] : Activator.CreateInstance (typeof (TAttr)));
                }
 
index 35cd408af1a7953de60d787143a636879379fee7..dde11f3b7d516cff6fecda3f4f49c0ae1b419351 100644 (file)
@@ -38,21 +38,13 @@ using System.ServiceModel.Dispatcher;
 using System.Text;
 
 using NUnit.Framework;
+using MonoTests.Helpers;
 
 namespace MonoTests.System.ServiceModel.Description
 {
        [TestFixture]
        public class MetadataExchangeBindingsTest
        {
-               Uri CreateUri (string uriString)
-               {
-                       var uri = new Uri (uriString);
-                       var l = new TcpListener (uri.Port);
-                       l.Start ();
-                       l.Stop ();
-                       return uri;
-               }
-
                [Test]
                public void CreateMexHttpBinding ()
                {
@@ -69,7 +61,7 @@ namespace MonoTests.System.ServiceModel.Description
                        Assert.AreEqual (MessageVersion.Soap12WSAddressing10, b.GetProperty<MessageVersion> (new BindingParameterCollection ()), "#6");
 
                        var host = new ServiceHost (typeof (MetadataExchange));
-                       host.AddServiceEndpoint (typeof (IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding (), CreateUri ("http://localhost:30158"));
+                       host.AddServiceEndpoint (typeof (IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding (), "http://localhost:" + NetworkHelpers.FindFreePort ());
                        host.Open ();
                        try {
                                // it still does not rewrite MessageVersion.None. It's rather likely ServiceMetadataExtension which does overwriting.
@@ -96,7 +88,7 @@ namespace MonoTests.System.ServiceModel.Description
                        Assert.AreEqual(Uri.UriSchemeHttps, b.Scheme, "#8");
 
                        var host = new ServiceHost(typeof(MetadataExchange));
-                       host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpsBinding(), CreateUri("https://localhost:30158"));
+                       host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpsBinding(), "https://localhost:" + NetworkHelpers.FindFreePort ());
                        host.Open();
                        try
                        {
index 1785f29015bcde579625c1725aeaff5640167b39..40a3e7bbb91e80ae3716b06cec90e89b825b7ef4 100644 (file)
@@ -57,18 +57,9 @@ namespace MonoTests.System.ServiceModel.Description
                        }
                }
 
-               Uri CreateUri (string uriString)
-               {
-                       var uri = new Uri (uriString);
-                       var l = new TcpListener (uri.Port);
-                       l.Start ();
-                       l.Stop ();
-                       return uri;
-               }
-
                [Test]
                public void InitializeRuntime1 () {
-                       using (ServiceHost host = new ServiceHost (typeof (MyService), CreateUri ("http://localhost:" + NetworkHelpers.FindFreePort ()))) {
+                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ()))) {
                                host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "e1");
 
                                Assert.AreEqual (0, host.ChannelDispatchers.Count, "ChannelDispatchers.Count #1");
@@ -105,7 +96,7 @@ namespace MonoTests.System.ServiceModel.Description
 
                [Test]
                public void InitializeRuntime2 () {
-                       using (ServiceHost host = new ServiceHost (typeof (MyService), CreateUri ("http://localhost:" + NetworkHelpers.FindFreePort ()))) {
+                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ()))) {
                                host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
                                host.Description.Behaviors.Remove<ServiceDebugBehavior> ();
 
@@ -124,7 +115,7 @@ namespace MonoTests.System.ServiceModel.Description
 
                [Test]
                public void InitializeRuntime3 () {
-                       using (ServiceHost host = new ServiceHost (typeof (MyService), CreateUri ("http://localhost:" + NetworkHelpers.FindFreePort ()))) {
+                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ()))) {
                                host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
                                host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageEnabled = false;
 
@@ -143,7 +134,7 @@ namespace MonoTests.System.ServiceModel.Description
                [Test]
                public void InitializeRuntime4 () {
                        int port = NetworkHelpers.FindFreePort ();
-                       using (ServiceHost host = new ServiceHost (typeof (MyService), CreateUri ("http://localhost:" + port))) {
+                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:" + port))) {
                                host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
                                host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageUrl = new Uri ("http://localhost:" + port + "/help");
 
@@ -190,7 +181,7 @@ namespace MonoTests.System.ServiceModel.Description
                [Test]
                public void ServiceMetadataExtension1 () {
                        int port = NetworkHelpers.FindFreePort ();
-                       using (ServiceHost host = new ServiceHost (typeof (MyService), CreateUri ("http://localhost:" + port))) {
+                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:" + port))) {
                                host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
                                host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageUrl = new Uri ("http://localhost:" + port + "/help");
                                try {
@@ -207,9 +198,9 @@ namespace MonoTests.System.ServiceModel.Description
                [Test]
                public void ServiceMetadataExtension2 () {
                        int port = NetworkHelpers.FindFreePort ();
-                       using (ServiceHost host = new ServiceHost (typeof (MyService), CreateUri ("http://localhost:" + port))) {
+                       using (ServiceHost host = new ServiceHost (typeof (MyService), new Uri ("http://localhost:" + port))) {
                                host.AddServiceEndpoint (typeof (IMyContract), new BasicHttpBinding (), "");
-                               host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageUrl = CreateUri ("http://localhost:" + port + "/help");
+                               host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageUrl = new Uri ("http://localhost:" + port + "/help");
 
                                ServiceMetadataExtension extension = new ServiceMetadataExtension ();
                                host.Extensions.Add (extension);
index 1562ba1ba9b2afc5519e9fff11ad0158e83da8ae..71c1f554c3b43f4b8ea90438cbffd19afb646001 100644 (file)
@@ -23,6 +23,7 @@
 // THE SOFTWARE.
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using System.Linq;
 using System.Runtime.Serialization;
 using System.ServiceModel;
@@ -62,16 +63,24 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                                var client = new TempConvertSoapClient (binding, remoteAddress);
 
                                var wait = new ManualResetEvent (false);
+
+                               Exception error = null;
+                               string result = null;
+
                                client.CelsiusToFahrenheitCompleted += delegate (object o, CelsiusToFahrenheitCompletedEventArgs e) {
-                                       if (e.Error != null)
-                                               throw e.Error;
-                                       Assert.AreEqual ("76.1", e.Result, "#1");
-                                       wait.Set ();
+                                       try {
+                                               error = e.Error;
+                                               result = e.Error == null ? e.Result : null;
+                                       } finally {
+                                               wait.Set ();
+                                       }
                                };
 
                                client.CelsiusToFahrenheitAsync ("24.5");
-                               if (!wait.WaitOne (TimeSpan.FromSeconds (20)))
-                                       Assert.Fail ("timeout");
+
+                               Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "timeout");
+                               Assert.IsNull (error, "#1, inner exception: {0}", error);
+                               Assert.AreEqual ("76.1", result, "#2");
                        } finally {
                                serviceHost.Close ();
                        }
@@ -81,16 +90,16 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                {
                        public FahrenheitToCelsiusResponse FarenheitToCelsius (FahrenheitToCelsiusRequest request)
                        {
-                               var farenheit = double.Parse (request.Body.Fahrenheit);
+                               var farenheit = double.Parse (request.Body.Fahrenheit, CultureInfo.InvariantCulture);
                                var celsius = ((farenheit - 32) / 9) * 5;
-                               return new FahrenheitToCelsiusResponse (new FahrenheitToCelsiusResponseBody (celsius.ToString ()));
+                               return new FahrenheitToCelsiusResponse (new FahrenheitToCelsiusResponseBody (celsius.ToString (CultureInfo.InvariantCulture)));
                        }
 
                        public CelsiusToFahrenheitResponse CelsiusToFarenheit (CelsiusToFahrenheitRequest request)
                        {
-                               var celsius = double.Parse (request.Body.Celsius);
+                               var celsius = double.Parse (request.Body.Celsius, CultureInfo.InvariantCulture);
                                var farenheit = ((celsius * 9) / 5) + 32;
-                               return new CelsiusToFahrenheitResponse (new CelsiusToFahrenheitResponseBody (farenheit.ToString ()));
+                               return new CelsiusToFahrenheitResponse (new CelsiusToFahrenheitResponseBody (farenheit.ToString (CultureInfo.InvariantCulture)));
                        }
 
                        Func<FahrenheitToCelsiusRequest,FahrenheitToCelsiusResponse> farenheitToCelsius;
index cdc68486779adc619e335eccabbb06dc4a72265c..141d8bf3f6bb728ebb46da545a8f85ea23d5a8fd 100644 (file)
@@ -66,16 +66,24 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                                var client = new Service1Client (binding, remoteAddress);
 
                                var wait = new ManualResetEvent (false);
+
+                               Exception error = null;
+                               object result = null;
+
                                client.GetDataCompleted += delegate (object o, GetDataCompletedEventArgs e) {
-                                       if (e.Error != null)
-                                               throw e.Error;
-                                       Assert.AreEqual ("A", ((DataType1) e.Result).Id, "#1");
-                                       wait.Set ();
+                                       try {
+                                               error = e.Error;
+                                               result = e.Error == null ? e.Result : null;
+                                       } finally {
+                                               wait.Set ();
+                                       }
                                };
 
                                client.GetDataAsync ();
-                               if (!wait.WaitOne (TimeSpan.FromSeconds (20)))
-                                       Assert.Fail ("timeout");
+
+                               Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "timeout");
+                               Assert.IsNull (error, "#1, inner exception: {0}", error);
+                               Assert.AreEqual ("A", ((DataType1) result).Id, "#2");
                        } finally {
                                serviceHost.Close ();
                        }
index 4d6fca943e6f88529a257468d0776026019f33f0..21559c528a2cd28a61189174d292da9c4e91b709 100644 (file)
@@ -76,58 +76,85 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                        var nestedClient      = new Service1Client (binding, remoteAddress);
                        var dbClient          = new Service1Client (binding, remoteAddress);
 
-                       var waits = new ManualResetEvent [4];
-                       for (int i = 0; i < waits.Length; i++)
-                               waits [i] = new ManualResetEvent (false);
-
-                       int passed = 0;
-
-                       normalClient.GetDataCompleted += delegate (object o, GetDataCompletedEventArgs e) {
-                               if (e.Error != null) {
-                                       Assert.Fail ("Normal failed; error: {0}", e.Error);
-                                       throw e.Error;
-                               }
-                               Assert.AreEqual ("A", ((DataType1) e.Result).Id, "Normal");
-                               Interlocked.Increment (ref passed);
-                               waits [0].Set ();
-                       };
-                       normalClient.GetDataAsync ();
-
-                       collectionClient.GetCollectionDataCompleted += delegate (object sender, GetCollectionDataCompletedEventArgs e) {
-                               if (e.Error != null) {
-                                       Assert.Fail ("Collection failed; error: {0}", e.Error);
-                                       throw e.Error;
-                               }
-                               Assert.AreEqual ("B,C", ItemsToString (e.Result.Cast<DataType1> ()), "Collection");
-                               Interlocked.Increment (ref passed);
-                               waits [1].Set ();
-                       };
-                       collectionClient.GetCollectionDataAsync ();
-
-                       nestedClient.GetNestedDataCompleted += delegate (object sender, GetNestedDataCompletedEventArgs e) {
-                               if (e.Error != null) {
-                                       Assert.Fail ("Nested failed; error: {0}", e.Error);
-                                       throw e.Error;
-                               }
-                               Assert.AreEqual ("D,E", ItemsToString (e.Result.Items.Cast<DataType1> ()), "Nested");
-                               Interlocked.Increment (ref passed);
-                               waits [2].Set ();
-                       };
-                       nestedClient.GetNestedDataAsync ();
-
-                       dbClient.JSMGetDatabasesCompleted += delegate (object sender, JSMGetDatabasesCompletedEventArgs e) {
-                               waits [3].Set ();
-                               if (e.Error != null) {
-                                       throw e.Error;
-                               }
-                               Assert.AreEqual ("databases", e.Result, "Databases");
-                               Interlocked.Increment (ref passed);
-                       };
-                       dbClient.JSMGetDatabasesAsync();
-
-                       WaitHandle.WaitAll (waits, TimeSpan.FromMinutes (1));
-                       if (passed != waits.Length)
-                               Assert.Fail ("Not all tests passed!");
+                       {
+                               ManualResetEvent wait = new ManualResetEvent (false);
+                               Exception error = null;
+                               object result = null;
+
+                               normalClient.GetDataCompleted += delegate (object o, GetDataCompletedEventArgs e) {
+                                       try {
+                                               error = e.Error;
+                                               result = e.Error == null ? e.Result : null;
+                                       } finally {
+                                               wait.Set ();
+                                       }
+                               };
+                               normalClient.GetDataAsync ();
+
+                               Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "#1 timeout");
+                               Assert.IsNull (error, "#1.1, inner exception: {0}", error);
+                               Assert.AreEqual ("A", ((DataType1) result).Id, "#1.2");
+                       }
+
+                       {
+                               ManualResetEvent wait = new ManualResetEvent (false);
+                               Exception error = null;
+                               ObservableCollection<object> result = null;
+
+                               collectionClient.GetCollectionDataCompleted += delegate (object sender, GetCollectionDataCompletedEventArgs e) {
+                                       try {
+                                               error = e.Error;
+                                               result = e.Error == null ? e.Result : null;
+                                       } finally {
+                                               wait.Set ();
+                                       }
+                               };
+                               collectionClient.GetCollectionDataAsync ();
+
+                               Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "#2 timeout");
+                               Assert.IsNull (error, "#2.1, inner exception: {0}", error);
+                               Assert.AreEqual ("B,C", ItemsToString (result.Cast<DataType1> ()), "#2.2");
+                       }
+
+                       {
+                               ManualResetEvent wait = new ManualResetEvent (false);
+                               Exception error = null;
+                               WebServiceMoonlightTest.ServiceReference2.DataType2 result = null;
+
+                               nestedClient.GetNestedDataCompleted += delegate (object sender, GetNestedDataCompletedEventArgs e) {
+                                       try {
+                                               error = e.Error;
+                                               result = e.Error == null ? e.Result : null;
+                                       } finally {
+                                               wait.Set ();
+                                       }
+                               };
+                               nestedClient.GetNestedDataAsync ();
+
+                               Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "#3 timeout");
+                               Assert.IsNull (error, "#3.1, inner exception: {0}", error);
+                               Assert.AreEqual ("D,E", ItemsToString (result.Items.Cast<DataType1> ()), "#3.2");
+                       }
+
+                       {
+                               ManualResetEvent wait = new ManualResetEvent (false);
+                               Exception error = null;
+                               string result = null;
+
+                               dbClient.JSMGetDatabasesCompleted += delegate (object sender, JSMGetDatabasesCompletedEventArgs e) {
+                                       try {
+                                               error = e.Error;
+                                               result = e.Error == null ? e.Result : null;
+                                       } finally {
+                                               wait.Set ();
+                                       }
+                               };
+                               dbClient.JSMGetDatabasesAsync();
+
+                               Assert.IsTrue (wait.WaitOne (TimeSpan.FromSeconds (20)), "#4 timeout");
+                               Assert.IsNull (error, "#4.1, inner exception: {0}", error);
+                               Assert.AreEqual ("databases", result, "#4.2");
+                       }
                }
 
                string ItemsToString (IEnumerable<DataType1> items)
index 11fe45e9a5924502e03728680ac611e3a25e4840..ce724f4d2443aecce3574f0e185e39e643080c4e 100644 (file)
@@ -17,19 +17,6 @@ namespace MonoTests.System.ServiceModel.Dispatcher
        [TestFixture]
        public class ChannelDispatcherTest
        {
-               Uri CreateAvailableUri (string uriString)
-               {
-                       var uri = new Uri (uriString);
-                       try {
-                               var t = new TcpListener (uri.Port);
-                               t.Start ();
-                               t.Stop ();
-                       } catch (Exception ex) {
-                               Assert.Fail (String.Format ("Port {0} is not open. It is likely previous tests have failed and the port is kept opened", uri.Port));
-                       }
-                       return uri;
-               }
-
                [Test]
                public void ConstructorNullBindingName ()
                {
@@ -44,7 +31,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                        var st = cd.ServiceThrottle;
                        Assert.IsNull (st, "#0");
 
-                       var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
+                       var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
                        ServiceHost h = new ServiceHost (typeof (TestContract), uri);
                        h.AddServiceEndpoint (typeof (TestContract).FullName, new BasicHttpBinding (), "address");
                        h.ChannelDispatchers.Add (cd);
@@ -71,7 +58,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                [Test]                  
                public void Collection_Add_Remove () {
                        Console.WriteLine ("STart test Collection_Add_Remove");
-                       var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
+                       var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
                        ServiceHost h = new ServiceHost (typeof (TestContract), uri);
                        h.AddServiceEndpoint (typeof (TestContract).FullName, new BasicHttpBinding (), "address");
                        MyChannelDispatcher d = new MyChannelDispatcher (new MyChannelListener (uri));
@@ -89,7 +76,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                [Test]
                public void EndpointDispatcherAddTest ()
                {
-                       var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
+                       var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
                        MyChannelDispatcher d = new MyChannelDispatcher (new MyChannelListener (uri));
                        d.Endpoints.Add (new EndpointDispatcher (new EndpointAddress (uri), "", ""));
                }
@@ -97,7 +84,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                [Test]
                [ExpectedException (typeof (InvalidOperationException))] 
                public void EndpointDispatcherAddTest2 () {
-                       var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
+                       var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
                        MyChannelDispatcher d = new MyChannelDispatcher (new MyChannelListener (uri));
                        d.Endpoints.Add (new EndpointDispatcher (new EndpointAddress (uri), "", ""));
                        d.Open (); // the dispatcher must be attached.
@@ -107,7 +94,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                [ExpectedException (typeof (InvalidOperationException))]
                public void EndpointDispatcherAddTest3 ()
                {
-                       var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
+                       var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
                        ServiceHost h = new ServiceHost (typeof (TestContract), uri);
                        MyChannelDispatcher d = new MyChannelDispatcher (new MyChannelListener (uri));
                        d.Endpoints.Add (new EndpointDispatcher (new EndpointAddress (uri), "", ""));
@@ -119,7 +106,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                [ExpectedException (typeof (InvalidOperationException))] // i.e. it is thrown synchronously in current thread.
                public void EndpointDispatcherAddTest4 ()
                {
-                       var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
+                       var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
                        ServiceHost h = new ServiceHost (typeof (TestContract), uri);
                        var listener = new MyChannelListener (uri);
                        MyChannelDispatcher d = new MyChannelDispatcher (listener);
@@ -151,7 +138,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                [ExpectedException (typeof (InvalidOperationException))] // i.e. it is thrown synchronously in current thread.
                public void EndpointDispatcherAddTest5 ()
                {
-                       var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
+                       var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
                        ServiceHost h = new ServiceHost (typeof (TestContract), uri);
                        var binding = new BasicHttpBinding ();
                        var listener = new MyChannelListener (uri);
@@ -173,7 +160,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                [Test]
                public void EndpointDispatcherAddTest6 ()
                {
-                       var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
+                       var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
                        ServiceHost h = new ServiceHost (typeof (TestContract), uri);
                        var binding = new BasicHttpBinding ();
                        var listener = new MyChannelListener<IReplyChannel> (uri);
@@ -204,7 +191,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                [ExpectedException (typeof (InvalidOperationException))]
                public void EndpointDispatcherAddTest7 ()
                {
-                       var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
+                       var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
                        ServiceHost h = new ServiceHost (typeof (TestContract), uri);
                        var binding = new BasicHttpBinding ();
                        var listener = new MyChannelListener<IReplyChannel> (uri);
@@ -239,7 +226,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                // but it makes little sense especially for checking duplicate listen URIs. Duplicate listen URIs should be rejected anyways.
                public void EndpointDispatcherAddTest8 ()
                {
-                       var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
+                       var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
                        ServiceHost h = new ServiceHost (typeof (TestContract), uri);
                        var listener = new MyChannelListener<IReplyChannel> (uri);
                        MyChannelDispatcher d = new MyChannelDispatcher (listener);
@@ -284,7 +271,7 @@ namespace MonoTests.System.ServiceModel.Dispatcher
 //             [Test]
                public void EndpointDispatcherAddTest9 () // test singleton service
                {
-                       var uri = CreateAvailableUri ("http://localhost:" + NetworkHelpers.FindFreePort ());
+                       var uri = new Uri ("http://localhost:" + NetworkHelpers.FindFreePort ());
                        ServiceHost h = new ServiceHost (new TestContract (), uri);
                        h.Description.Behaviors.Find<ServiceBehaviorAttribute> ().InstanceContextMode = InstanceContextMode.Single;
                        var listener = new MyChannelListener<IReplyChannel> (uri);
index 633b776aeac48c10c96f3b29d32d12e21dcad79e..cb78fe2be1e8ff98996257b561aefc74a1f6f482 100644 (file)
@@ -213,6 +213,13 @@ namespace MonoTests.System.ServiceModel
                        Assert.IsTrue (Foo.JoinCalled, "#2");
                }
 
+               [Test]
+               public void ReaderQuotasDefault_Bug15153 ()
+               {
+                       NetTcpBinding binding = new NetTcpBinding(SecurityMode.None);
+                       binding.ReaderQuotas.MaxStringContentLength = 8192;
+               }
+
                [ServiceContract]
                public interface IFoo
                {
index a120402ff7cc6bbcdcaadc235ad311843ca49752..c93c7953d4915f1205ea91770faee6abb67a0342 100644 (file)
@@ -353,6 +353,29 @@ namespace MonoTests.System.ServiceModel
                        }
                }
 
+               [Test]
+               public void InstanceWithSingletonMode_InheritServiceBehavior ()
+               {
+                       // # 37035
+
+                       var ep = NetworkHelpers.LocalEphemeralEndPoint ().ToString ();
+
+                       ChildSingletonService instance = new ChildSingletonService ();
+                       ServiceHost host = new ServiceHost (instance);
+
+                       host.AddServiceEndpoint (typeof (SingletonService),
+                                                new BasicHttpBinding (),
+                                                new Uri ("http://" + ep + "/s3"));
+
+                       try {
+                               host.Open ();
+                       } catch (InvalidOperationException ex) {
+                               Assert.Fail ("InstanceContextMode was not inherited from parent, exception was: {0}", ex);
+                       } finally {
+                               host.Close ();
+                       }
+               }
+
                [ServiceContract]
                interface IBar
                {
@@ -446,7 +469,14 @@ namespace MonoTests.System.ServiceModel
                public class SingletonService
                {
                        [OperationContract]
-                       public void Process (string input)
+                       public virtual void Process (string input)
+                       {
+                       }
+               }
+
+               public class ChildSingletonService : SingletonService
+               {
+                       public override void Process (string input)
                        {
                        }
                }
diff --git a/mcs/class/System.ServiceProcess/System.ServiceProcess-net_4_5.csproj b/mcs/class/System.ServiceProcess/System.ServiceProcess-net_4_5.csproj
deleted file mode 100644 (file)
index f4b5222..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FE889BD6-43E6-435E-90CE-A39F65A4AA5A}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceProcess</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.ServiceProcess.Design\ServiceInstallerDialog.cs" />\r
-    <Compile Include="System.ServiceProcess.Design\ServiceInstallerDialogResult.cs" />\r
-    <Compile Include="System.ServiceProcess.Design\ServiceNameConverter.cs" />\r
-    <Compile Include="System.ServiceProcess\PowerBroadcastStatus.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceAccount.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceBase.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceController.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceControllerImpl.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceControllerPermission.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceControllerPermissionAccess.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceControllerPermissionAttribute.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceControllerPermissionEntry.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceControllerPermissionEntryCollection.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceControllerStatus.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceInstaller.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceProcessDescriptionAttribute.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceProcessInstaller.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceStartMode.cs" />\r
-    <Compile Include="System.ServiceProcess\ServiceType.cs" />\r
-    <Compile Include="System.ServiceProcess\SessionChangeDescription.cs" />\r
-    <Compile Include="System.ServiceProcess\SessionChangeReason.cs" />\r
-    <Compile Include="System.ServiceProcess\TimeoutException.cs" />\r
-    <Compile Include="System.ServiceProcess\UnixServiceController.cs" />\r
-    <Compile Include="System.ServiceProcess\Win32ServiceController.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration.Install/System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{E6E1740E-37DD-487C-8947-F1C0612D4738}</Project>\r
-      <Name>System.Configuration.Install-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.ServiceProcess/System.ServiceProcess-tests-net_4_5.csproj b/mcs/class/System.ServiceProcess/System.ServiceProcess-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 0cb2d14..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EE7E6BEB-7814-4A33-AF9A-9B0BFE5BE3B5}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>bin\Debug\System.ServiceProcess-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.ServiceProcess_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.ServiceProcess\ServiceBaseTest.cs" />\r
-    <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionTest.cs" />\r
-    <Compile Include="Test\System.ServiceProcess\ServiceControllerTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ServiceProcess\System.ServiceProcess-net_4_5.csproj">\r
-      <Project>{FE889BD6-43E6-435E-90CE-A39F65A4AA5A}</Project>\r
-      <Name>System.ServiceProcess\System.ServiceProcess-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{E6E1740E-37DD-487C-8947-F1C0612D4738}</Project>\r
-      <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowBlock.cs
new file mode 100644 (file)
index 0000000..a083e9d
--- /dev/null
@@ -0,0 +1,2813 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// DataflowBlock.cs
+//
+//
+// Common functionality for ITargetBlock, ISourceBlock, and IPropagatorBlock.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Runtime.ExceptionServices;
+using System.Security;
+using System.Threading.Tasks.Dataflow.Internal;
+using System.Threading.Tasks.Dataflow.Internal.Threading;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>
+    /// Provides a set of static (Shared in Visual Basic) methods for working with dataflow blocks.
+    /// </summary>
+    public static class DataflowBlock
+    {
+        #region LinkTo
+        /// <summary>Links the <see cref="ISourceBlock{TOutput}"/> to the specified <see cref="ITargetBlock{TOutput}"/>.</summary>
+        /// <param name="source">The source from which to link.</param>
+        /// <param name="target">The <see cref="ITargetBlock{TOutput}"/> to which to connect the source.</param>
+        /// <returns>An IDisposable that, upon calling Dispose, will unlink the source from the target.</returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="target"/> is null (Nothing in Visual Basic).</exception>
+        public static IDisposable LinkTo<TOutput>(
+            this ISourceBlock<TOutput> source,
+            ITargetBlock<TOutput> target)
+        {
+            // Validate arguments
+            if (source == null) throw new ArgumentNullException("source");
+            if (target == null) throw new ArgumentNullException("target");
+            Contract.EndContractBlock();
+
+            // This method exists purely to pass default DataflowLinkOptions 
+            // to increase usability of the "90%" case.
+            return source.LinkTo(target, DataflowLinkOptions.Default);
+        }
+
+        /// <summary>Links the <see cref="ISourceBlock{TOutput}"/> to the specified <see cref="ITargetBlock{TOutput}"/> using the specified filter.</summary>
+        /// <param name="source">The source from which to link.</param>
+        /// <param name="target">The <see cref="ITargetBlock{TOutput}"/> to which to connect the source.</param>
+        /// <param name="predicate">The filter a message must pass in order for it to propagate from the source to the target.</param>
+        /// <returns>An IDisposable that, upon calling Dispose, will unlink the source from the target.</returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="target"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="predicate"/> is null (Nothing in Visual Basic).</exception>
+        public static IDisposable LinkTo<TOutput>(
+            this ISourceBlock<TOutput> source,
+            ITargetBlock<TOutput> target,
+            Predicate<TOutput> predicate)
+        {
+            // All argument validation handled by delegated method.
+            return LinkTo(source, target, DataflowLinkOptions.Default, predicate);
+        }
+
+        /// <summary>Links the <see cref="ISourceBlock{TOutput}"/> to the specified <see cref="ITargetBlock{TOutput}"/> using the specified filter.</summary>
+        /// <param name="source">The source from which to link.</param>
+        /// <param name="target">The <see cref="ITargetBlock{TOutput}"/> to which to connect the source.</param>
+        /// <param name="predicate">The filter a message must pass in order for it to propagate from the source to the target.</param>
+        /// <param name="linkOptions">The options to use to configure the link.</param>
+        /// <returns>An IDisposable that, upon calling Dispose, will unlink the source from the target.</returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="target"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="linkOptions"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="predicate"/> is null (Nothing in Visual Basic).</exception>
+        public static IDisposable LinkTo<TOutput>(
+            this ISourceBlock<TOutput> source,
+            ITargetBlock<TOutput> target,
+            DataflowLinkOptions linkOptions,
+            Predicate<TOutput> predicate)
+        {
+            // Validate arguments
+            if (source == null) throw new ArgumentNullException("source");
+            if (target == null) throw new ArgumentNullException("target");
+            if (linkOptions == null) throw new ArgumentNullException("linkOptions");
+            if (predicate == null) throw new ArgumentNullException("predicate");
+            Contract.EndContractBlock();
+
+            // Create the filter, which links to the real target, and then
+            // link the real source to this intermediate filter.
+            var filter = new FilteredLinkPropagator<TOutput>(source, target, predicate);
+            return source.LinkTo(filter, linkOptions);
+        }
+
+        /// <summary>Provides a synchronous filter for use in filtered LinkTos.</summary>
+        /// <typeparam name="T">Specifies the type of data being filtered.</typeparam>
+        [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+        [DebuggerTypeProxy(typeof(FilteredLinkPropagator<>.DebugView))]
+        private sealed class FilteredLinkPropagator<T> : IPropagatorBlock<T, T>, IDebuggerDisplay
+        {
+            /// <summary>The source connected with this filter.</summary>
+            private readonly ISourceBlock<T> _source;
+            /// <summary>The target with which this block is associated.</summary>
+            private readonly ITargetBlock<T> _target;
+            /// <summary>The predicate provided by the user.</summary>
+            private readonly Predicate<T> _userProvidedPredicate;
+
+            /// <summary>Initializes the filter passthrough.</summary>
+            /// <param name="source">The source connected to this filter.</param>
+            /// <param name="target">The target to which filtered messages should be passed.</param>
+            /// <param name="predicate">The predicate to run for each messsage.</param>
+            internal FilteredLinkPropagator(ISourceBlock<T> source, ITargetBlock<T> target, Predicate<T> predicate)
+            {
+                Contract.Requires(source != null, "Filtered link requires a source to filter on.");
+                Contract.Requires(target != null, "Filtered link requires a target to filter to.");
+                Contract.Requires(predicate != null, "Filtered link requires a predicate to filter with.");
+
+                // Store the arguments
+                _source = source;
+                _target = target;
+                _userProvidedPredicate = predicate;
+            }
+
+            /// <summary>Runs the user-provided predicate over an item in the correct execution context.</summary>
+            /// <param name="item">The item to evaluate.</param>
+            /// <returns>true if the item passed the filter; otherwise, false.</returns>
+            private bool RunPredicate(T item)
+            {
+                Contract.Requires(_userProvidedPredicate != null, "User-provided predicate is required.");
+
+                return _userProvidedPredicate(item); // avoid state object allocation if execution context isn't needed
+            }
+
+            /// <summary>Manually closes over state necessary in FilteredLinkPropagator.</summary>
+            private sealed class PredicateContextState
+            {
+                /// <summary>The input to be filtered.</summary>
+                internal readonly T Input;
+                /// <summary>The predicate function.</summary>
+                internal readonly Predicate<T> Predicate;
+                /// <summary>The result of the filtering operation.</summary>
+                internal bool Output;
+
+                /// <summary>Initializes the predicate state.</summary>
+                /// <param name="input">The input to be filtered.</param>
+                /// <param name="predicate">The predicate function.</param>
+                internal PredicateContextState(T input, Predicate<T> predicate)
+                {
+                    Contract.Requires(predicate != null, "A predicate with which to filter is required.");
+                    this.Input = input;
+                    this.Predicate = predicate;
+                }
+
+                /// <summary>Runs the predicate function over the input and stores the result into the output.</summary>
+                internal void Run()
+                {
+                    Contract.Requires(Predicate != null, "Non-null predicate required");
+                    Output = Predicate(Input);
+                }
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+            DataflowMessageStatus ITargetBlock<T>.OfferMessage(DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source, Boolean consumeToAccept)
+            {
+                // Validate arguments.  Some targets may have a null source, but FilteredLinkPropagator
+                // is an internal target that should only ever have source non-null.
+                if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+                if (source == null) throw new ArgumentNullException("source");
+                Contract.EndContractBlock();
+
+                // Run the filter.
+                bool passedFilter = RunPredicate(messageValue);
+
+                // If the predicate matched, pass the message along to the real target.
+                if (passedFilter)
+                {
+                    return _target.OfferMessage(messageHeader, messageValue, this, consumeToAccept);
+                }
+                // Otherwise, decline.
+                else return DataflowMessageStatus.Declined;
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+            T ISourceBlock<T>.ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<T> target, out Boolean messageConsumed)
+            {
+                // This message should have only made it to the target if it passes the filter, so we shouldn't need to check again.
+                // The real source will also be doing verifications, so we don't need to validate args here.
+                Debug.Assert(messageHeader.IsValid, "Only valid messages may be consumed.");
+                return _source.ConsumeMessage(messageHeader, this, out messageConsumed);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+            bool ISourceBlock<T>.ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<T> target)
+            {
+                // This message should have only made it to the target if it passes the filter, so we shouldn't need to check again.
+                // The real source will also be doing verifications, so we don't need to validate args here.
+                Debug.Assert(messageHeader.IsValid, "Only valid messages may be consumed.");
+                return _source.ReserveMessage(messageHeader, this);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+            void ISourceBlock<T>.ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<T> target)
+            {
+                // This message should have only made it to the target if it passes the filter, so we shouldn't need to check again.
+                // The real source will also be doing verifications, so we don't need to validate args here.
+                Debug.Assert(messageHeader.IsValid, "Only valid messages may be consumed.");
+                _source.ReleaseReservation(messageHeader, this);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+            Task IDataflowBlock.Completion { get { return _source.Completion; } }
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+            void IDataflowBlock.Complete() { _target.Complete(); }
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+            void IDataflowBlock.Fault(Exception exception) { _target.Fault(exception); }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+            IDisposable ISourceBlock<T>.LinkTo(ITargetBlock<T> target, DataflowLinkOptions linkOptions) { throw new NotSupportedException(SR.NotSupported_MemberNotNeeded); }
+
+            /// <summary>The data to display in the debugger display attribute.</summary>
+            [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+            private object DebuggerDisplayContent
+            {
+                get
+                {
+                    var displaySource = _source as IDebuggerDisplay;
+                    var displayTarget = _target as IDebuggerDisplay;
+                    return string.Format("{0} Source=\"{1}\", Target=\"{2}\"",
+                        Common.GetNameForDebugger(this),
+                        displaySource != null ? displaySource.Content : _source,
+                        displayTarget != null ? displayTarget.Content : _target);
+                }
+            }
+            /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+            object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+            /// <summary>Provides a debugger type proxy for a filter.</summary>
+            private sealed class DebugView
+            {
+                /// <summary>The filter.</summary>
+                private readonly FilteredLinkPropagator<T> _filter;
+
+                /// <summary>Initializes the debug view.</summary>
+                /// <param name="filter">The filter to view.</param>
+                public DebugView(FilteredLinkPropagator<T> filter)
+                {
+                    Contract.Requires(filter != null, "Need a filter with which to construct the debug view.");
+                    _filter = filter;
+                }
+
+                /// <summary>The linked target for this filter.</summary>
+                public ITargetBlock<T> LinkedTarget { get { return _filter._target; } }
+            }
+        }
+        #endregion
+
+        #region Post and SendAsync
+        /// <summary>Posts an item to the <see cref="T:System.Threading.Tasks.Dataflow.ITargetBlock`1"/>.</summary>
+        /// <typeparam name="TInput">Specifies the type of data accepted by the target block.</typeparam>
+        /// <param name="target">The target block.</param>
+        /// <param name="item">The item being offered to the target.</param>
+        /// <returns>true if the item was accepted by the target block; otherwise, false.</returns>
+        /// <remarks>
+        /// This method will return once the target block has decided to accept or decline the item,
+        /// but unless otherwise dictated by special semantics of the target block, it does not wait
+        /// for the item to actually be processed (for example, <see cref="T:System.Threading.Tasks.Dataflow.ActionBlock`1"/>
+        /// will return from Post as soon as it has stored the posted item into its input queue).  From the perspective
+        /// of the block's processing, Post is asynchronous. For target blocks that support postponing offered messages, 
+        /// or for blocks that may do more processing in their Post implementation, consider using
+        ///  <see cref="T:System.Threading.Tasks.Dataflow.DataflowBlock.SendAsync">SendAsync</see>, 
+        /// which will return immediately and will enable the target to postpone the posted message and later consume it 
+        /// after SendAsync returns.
+        /// </remarks>
+        public static Boolean Post<TInput>(this ITargetBlock<TInput> target, TInput item)
+        {
+            if (target == null) throw new ArgumentNullException("target");
+            return target.OfferMessage(Common.SingleMessageHeader, item, source: null, consumeToAccept: false) == DataflowMessageStatus.Accepted;
+        }
+
+        /// <summary>Asynchronously offers a message to the target message block, allowing for postponement.</summary>
+        /// <typeparam name="TInput">Specifies the type of the data to post to the target.</typeparam>
+        /// <param name="target">The target to which to post the data.</param>
+        /// <param name="item">The item being offered to the target.</param>
+        /// <returns>
+        /// A <see cref="System.Threading.Tasks.Task{Boolean}"/> that represents the asynchronous send.  If the target
+        /// accepts and consumes the offered element during the call to SendAsync, upon return
+        /// from the call the resulting <see cref="System.Threading.Tasks.Task{Boolean}"/> will be completed and its <see cref="System.Threading.Tasks.Task{Boolean}.Result">Result</see> 
+        /// property will return true.  If the target declines the offered element during the call, upon return from the call the resulting <see cref="System.Threading.Tasks.Task{Boolean}"/> will
+        /// be completed and its <see cref="System.Threading.Tasks.Task{Boolean}.Result">Result</see> property will return false. If the target
+        /// postpones the offered element, the element will be buffered until such time that the target consumes or releases it, at which
+        /// point the Task will complete, with its <see cref="System.Threading.Tasks.Task{Boolean}.Result"/> indicating whether the message was consumed.  If the target
+        /// never attempts to consume or release the message, the returned task will never complete.
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="target"/> is null (Nothing in Visual Basic).</exception>
+        public static Task<Boolean> SendAsync<TInput>(this ITargetBlock<TInput> target, TInput item)
+        {
+            return SendAsync<TInput>(target, item, CancellationToken.None);
+        }
+
+        /// <summary>Asynchronously offers a message to the target message block, allowing for postponement.</summary>
+        /// <typeparam name="TInput">Specifies the type of the data to post to the target.</typeparam>
+        /// <param name="target">The target to which to post the data.</param>
+        /// <param name="item">The item being offered to the target.</param>
+        /// <param name="cancellationToken">The cancellation token with which to request cancellation of the send operation.</param>
+        /// <returns>
+        /// <para>
+        /// A <see cref="System.Threading.Tasks.Task{Boolean}"/> that represents the asynchronous send.  If the target
+        /// accepts and consumes the offered element during the call to SendAsync, upon return
+        /// from the call the resulting <see cref="System.Threading.Tasks.Task{Boolean}"/> will be completed and its <see cref="System.Threading.Tasks.Task{Boolean}.Result">Result</see> 
+        /// property will return true.  If the target declines the offered element during the call, upon return from the call the resulting <see cref="System.Threading.Tasks.Task{Boolean}"/> will
+        /// be completed and its <see cref="System.Threading.Tasks.Task{Boolean}.Result">Result</see> property will return false. If the target
+        /// postpones the offered element, the element will be buffered until such time that the target consumes or releases it, at which
+        /// point the Task will complete, with its <see cref="System.Threading.Tasks.Task{Boolean}.Result"/> indicating whether the message was consumed.  If the target
+        /// never attempts to consume or release the message, the returned task will never complete.
+        /// </para>
+        /// <para>
+        /// If cancellation is requested before the target has successfully consumed the sent data, 
+        /// the returned task will complete in the Canceled state and the data will no longer be available to the target.
+        /// </para>
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="target"/> is null (Nothing in Visual Basic).</exception>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        public static Task<Boolean> SendAsync<TInput>(this ITargetBlock<TInput> target, TInput item, CancellationToken cancellationToken)
+        {
+            // Validate arguments.  No validation necessary for item.
+            if (target == null) throw new ArgumentNullException("target");
+            Contract.EndContractBlock();
+
+            // Fast path check for cancellation
+            if (cancellationToken.IsCancellationRequested)
+                return Common.CreateTaskFromCancellation<Boolean>(cancellationToken);
+
+            SendAsyncSource<TInput> source;
+
+            // Fast path: try to offer the item synchronously.  This first try is done
+            // without any form of cancellation, and thus consumeToAccept can be the better-performing "false".
+            try
+            {
+                switch (target.OfferMessage(Common.SingleMessageHeader, item, source: null, consumeToAccept: false))
+                {
+                    // If the message is immediately accepted, return a cached completed task with a true result
+                    case DataflowMessageStatus.Accepted:
+                        return Common.CompletedTaskWithTrueResult;
+
+                    // If the target is declining permanently, return a cached completed task with a false result
+                    case DataflowMessageStatus.DecliningPermanently:
+                        return Common.CompletedTaskWithFalseResult;
+
+#if DEBUG
+                    case DataflowMessageStatus.Postponed:
+                        Debug.Assert(false, "A message should never be postponed when no source has been provided");
+                        break;
+
+                    case DataflowMessageStatus.NotAvailable:
+                        Debug.Assert(false, "The message should never be missed, as it's offered to only this one target");
+                        break;
+#endif
+                }
+
+                // Slow path: the target did not accept the synchronous post, nor did it decline it.
+                // Create a source for the send, launch the offering, and return the representative task.
+                // This ctor attempts to register a cancellation notification which would throw if the
+                // underlying CTS has been disposed of. Therefore, keep it inside the try/catch block.
+                source = new SendAsyncSource<TInput>(target, item, cancellationToken);
+            }
+            catch (Exception exc)
+            {
+                // If the target throws from OfferMessage, return a faulted task
+                Common.StoreDataflowMessageValueIntoExceptionData(exc, item);
+                return Common.CreateTaskFromException<Boolean>(exc);
+            }
+
+            Debug.Assert(source != null, "The SendAsyncSource instance must have been constructed.");
+            source.OfferToTarget(); // synchronous to preserve message ordering
+            return source.Task;
+        }
+
+        /// <summary>
+        /// Provides a source used by SendAsync that will buffer a single message and signal when it's been accepted or declined.
+        /// </summary>
+        /// <remarks>This source must only be passed to a single target, and must only be used once.</remarks>
+        [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+        [DebuggerTypeProxy(typeof(SendAsyncSource<>.DebugView))]
+        private sealed class SendAsyncSource<TOutput> : TaskCompletionSource<Boolean>, ISourceBlock<TOutput>, IDebuggerDisplay
+        {
+            /// <summary>The target to offer to.</summary>
+            private readonly ITargetBlock<TOutput> _target;
+            /// <summary>The buffered message.</summary>
+            private readonly TOutput _messageValue;
+
+            /// <summary>CancellationToken used to cancel the send.</summary>
+            private CancellationToken _cancellationToken;
+            /// <summary>Registration with the cancellation token.</summary>
+            private CancellationTokenRegistration _cancellationRegistration;
+            /// <summary>The cancellation/completion state of the source.</summary>
+            private int _cancellationState; // one of the CANCELLATION_STATE_* constant values, defaulting to NONE
+
+            // Cancellation states:
+            // _cancellationState starts out as NONE, and will remain that way unless a CancellationToken
+            // is provided in the initial OfferToTarget call.  As such, unless a token is provided,
+            // all synchronization related to cancellation will be avoided.  Once a token is provided,
+            // the state transitions to REGISTERED.  If cancellation then is requested or if the target
+            // calls back to consume the message, the state will transition to COMPLETING prior to 
+            // actually committing the action; if it can't transition to COMPLETING, then the action doesn't
+            // take effect (e.g. if cancellation raced with the target consuming, such that the cancellation
+            // action was able to transition to COMPLETING but the consumption wasn't, then ConsumeMessage
+            // would return false indicating that the message could not be consumed).  The only additional
+            // complication here is around reservations.  If a target reserves a message, _cancellationState
+            // transitions to RESERVED.  A subsequent ConsumeMessage call can successfully transition from
+            // RESERVED to COMPLETING, but cancellation can't; cancellation can only transition from REGISTERED
+            // to COMPLETING.  If the reservation on the message is instead released, _cancellationState
+            // will transition back to REGISTERED.
+
+            /// <summary>No cancellation registration is used.</summary>
+            private const int CANCELLATION_STATE_NONE = 0;
+            /// <summary>A cancellation token has been registered.</summary>
+            private const int CANCELLATION_STATE_REGISTERED = 1;
+            /// <summary>The message has been reserved. Only used if a cancellation token is in play.</summary>
+            private const int CANCELLATION_STATE_RESERVED = 2;
+            /// <summary>Completion is now in progress. Only used if a cancellation token is in play.</summary>
+            private const int CANCELLATION_STATE_COMPLETING = 3;
+
+            /// <summary>Initializes the source.</summary>
+            /// <param name="target">The target to offer to.</param>
+            /// <param name="messageValue">The message to offer and buffer.</param>
+            /// <param name="cancellationToken">The cancellation token with which to cancel the send.</param>
+            internal SendAsyncSource(ITargetBlock<TOutput> target, TOutput messageValue, CancellationToken cancellationToken)
+            {
+                Contract.Requires(target != null, "A valid target to send to is required.");
+                _target = target;
+                _messageValue = messageValue;
+
+                // If a cancelable CancellationToken is used, update our cancellation state
+                // and register with the token.  Only if CanBeCanceled is true due we want
+                // to pay the subsequent costs around synchronization between cancellation
+                // requests and the target coming back to consume the message.
+                if (cancellationToken.CanBeCanceled)
+                {
+                    _cancellationToken = cancellationToken;
+                    _cancellationState = CANCELLATION_STATE_REGISTERED;
+
+                    try
+                    {
+                        _cancellationRegistration = cancellationToken.Register(
+                            _cancellationCallback, new WeakReference<SendAsyncSource<TOutput>>(this));
+                    }
+                    catch
+                    {
+                        // Suppress finalization.  Finalization is only required if the target drops a reference
+                        // to the source before the source has completed, and we'll never offer to the target.
+                        GC.SuppressFinalize(this);
+
+                        // Propagate the exception
+                        throw;
+                    }
+                }
+            }
+
+            /// <summary>Finalizer that completes the returned task if all references to this source are dropped.</summary>
+            ~SendAsyncSource()
+            {
+                // CompleteAsDeclined uses synchronization, which is dangerous for a finalizer 
+                // during shutdown or appdomain unload.
+                if (!Environment.HasShutdownStarted)
+                {
+                    CompleteAsDeclined(runAsync: true);
+                }
+            }
+
+            /// <summary>Completes the source in an "Accepted" state.</summary>
+            /// <param name="runAsync">true to accept asynchronously; false to accept synchronously.</param>
+            private void CompleteAsAccepted(bool runAsync)
+            {
+                RunCompletionAction(state =>
+                {
+                    try { ((SendAsyncSource<TOutput>)state).TrySetResult(true); }
+                    catch (ObjectDisposedException) { }
+                }, this, runAsync);
+            }
+
+            /// <summary>Completes the source in an "Declined" state.</summary>
+            /// <param name="runAsync">true to decline asynchronously; false to decline synchronously.</param>
+            private void CompleteAsDeclined(bool runAsync)
+            {
+                RunCompletionAction(state =>
+                {
+                    // The try/catch for ObjectDisposedException handles the case where the 
+                    // user disposes of the returned task before we're done with it.
+                    try { ((SendAsyncSource<TOutput>)state).TrySetResult(false); }
+                    catch (ObjectDisposedException) { }
+                }, this, runAsync);
+            }
+
+            /// <summary>Completes the source in faulted state.</summary>
+            /// <param name="exception">The exception with which to fault.</param>
+            /// <param name="runAsync">true to fault asynchronously; false to fault synchronously.</param>
+            private void CompleteAsFaulted(Exception exception, bool runAsync)
+            {
+                RunCompletionAction(state =>
+                {
+                    var tuple = (Tuple<SendAsyncSource<TOutput>, Exception>)state;
+                    try { tuple.Item1.TrySetException(tuple.Item2); }
+                    catch (ObjectDisposedException) { }
+                }, Tuple.Create<SendAsyncSource<TOutput>, Exception>(this, exception), runAsync);
+            }
+
+            /// <summary>Completes the source in canceled state.</summary>
+            /// <param name="runAsync">true to fault asynchronously; false to fault synchronously.</param>
+            private void CompleteAsCanceled(bool runAsync)
+            {
+                RunCompletionAction(state =>
+                {
+                    try { ((SendAsyncSource<TOutput>)state).TrySetCanceled(); }
+                    catch (ObjectDisposedException) { }
+                }, this, runAsync);
+            }
+
+            /// <summary>Executes a completion action.</summary>
+            /// <param name="completionAction">The action to execute, passed the state.</param>
+            /// <param name="completionActionState">The state to pass into the delegate.</param>
+            /// <param name="runAsync">true to execute the action asynchronously; false to execute it synchronously.</param>
+            /// <remarks>
+            /// async should be true if this is being called on a path that has the target on the stack, e.g.
+            /// the target is calling to ConsumeMessage.  We don't want to block the target indefinitely
+            /// with any synchronous continuations off of the returned send async task.
+            /// </remarks>
+            [SuppressMessage("Microsoft.Usage", "CA1816:CallGCSuppressFinalizeCorrectly")]
+            private void RunCompletionAction(Action<object> completionAction, object completionActionState, bool runAsync)
+            {
+                Contract.Requires(completionAction != null, "Completion action to run is required.");
+
+                // Suppress finalization.  Finalization is only required if the target drops a reference
+                // to the source before the source has completed, and here we're completing the source.
+                GC.SuppressFinalize(this);
+
+                // Dispose of the cancellation registration if there is one
+                if (_cancellationState != CANCELLATION_STATE_NONE)
+                {
+                    Debug.Assert(_cancellationRegistration != default(CancellationTokenRegistration),
+                        "If we're not in NONE, we must have a cancellation token we've registered with.");
+                    _cancellationRegistration.Dispose();
+                }
+
+                // If we're meant to run asynchronously, launch a task.
+                if (runAsync)
+                {
+                    System.Threading.Tasks.Task.Factory.StartNew(
+                        completionAction, completionActionState,
+                        CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+                }
+                // Otherwise, execute directly.
+                else
+                {
+                    completionAction(completionActionState);
+                }
+            }
+
+            /// <summary>Offers the message to the target asynchronously.</summary>
+            private void OfferToTargetAsync()
+            {
+                System.Threading.Tasks.Task.Factory.StartNew(
+                    state => ((SendAsyncSource<TOutput>)state).OfferToTarget(), this,
+                    CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+            }
+
+            /// <summary>Cached delegate used to cancel a send in response to a cancellation request.</summary>
+            private readonly static Action<object> _cancellationCallback = CancellationHandler;
+
+            /// <summary>Attempts to cancel the source passed as state in response to a cancellation request.</summary>
+            /// <param name="state">
+            /// A weak reference to the SendAsyncSource.  A weak reference is used to prevent the source
+            /// from being rooted in a long-lived token.
+            /// </param>
+            private static void CancellationHandler(object state)
+            {
+                SendAsyncSource<TOutput> source = Common.UnwrapWeakReference<SendAsyncSource<TOutput>>(state);
+                if (source != null)
+                {
+                    Debug.Assert(source._cancellationState != CANCELLATION_STATE_NONE,
+                        "If cancellation is in play, we must have already moved out of the NONE state.");
+
+                    // Try to reserve completion, and if we can, complete as canceled.  Note that we can only
+                    // achieve cancellation when in the REGISTERED state, and not when in the RESERVED state, 
+                    // as if a target has reserved the message, we must allow the message to be consumed successfully.
+                    if (source._cancellationState == CANCELLATION_STATE_REGISTERED && // fast check to avoid the interlocked if we can
+                        Interlocked.CompareExchange(ref source._cancellationState, CANCELLATION_STATE_COMPLETING, CANCELLATION_STATE_REGISTERED) == CANCELLATION_STATE_REGISTERED)
+                    {
+                        // We've reserved completion, so proceed to cancel the task.
+                        source.CompleteAsCanceled(true);
+                    }
+                }
+            }
+
+            /// <summary>Offers the message to the target synchronously.</summary>
+            [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+            internal void OfferToTarget()
+            {
+                try
+                {
+                    // Offer the message to the target.  If there's no cancellation in play, we can just allow the target
+                    // to accept the message directly.  But if a CancellationToken is in use, the target needs to come
+                    // back to us to get the data; that way, we can ensure we don't race between returning a canceled task but
+                    // successfully completing the send.
+                    bool consumeToAccept = _cancellationState != CANCELLATION_STATE_NONE;
+
+                    switch (_target.OfferMessage(
+                        Common.SingleMessageHeader, _messageValue, this, consumeToAccept: consumeToAccept))
+                    {
+                        // If the message is immediately accepted, complete the task as accepted
+                        case DataflowMessageStatus.Accepted:
+                            if (!consumeToAccept)
+                            {
+                                // Cancellation wasn't in use, and the target accepted the message directly,
+                                // so complete the task as accepted.
+                                CompleteAsAccepted(runAsync: false);
+                            }
+                            else
+                            {
+                                // If cancellation is in use, then since the target accepted,
+                                // our state better reflect that we're completing.
+                                Debug.Assert(_cancellationState == CANCELLATION_STATE_COMPLETING,
+                                    "The message was accepted, so we should have started completion.");
+                            }
+                            break;
+
+                        // If the message is immediately declined, complete the task as declined
+                        case DataflowMessageStatus.Declined:
+                        case DataflowMessageStatus.DecliningPermanently:
+                            CompleteAsDeclined(runAsync: false);
+                            break;
+#if DEBUG
+                        case DataflowMessageStatus.NotAvailable:
+                            Debug.Assert(false, "The message should never be missed, as it's offered to only this one target");
+                            break;
+                            // If the message was postponed, the source may or may not be complete yet.  Nothing to validate.
+                            // Treat an improper DataflowMessageStatus as postponed and do nothing.
+#endif
+                    }
+                }
+                // A faulty target might throw from OfferMessage.  If that happens,
+                // we'll try to fault the returned task.  A really faulty target might
+                // both throw from OfferMessage and call ConsumeMessage,
+                // in which case it's possible we might not be able to propagate the exception
+                // out to the caller through the task if ConsumeMessage wins the race,
+                // which is likely if the exception doesn't occur until after ConsumeMessage is
+                // called.  If that happens, we just eat the exception.
+                catch (Exception exc)
+                {
+                    Common.StoreDataflowMessageValueIntoExceptionData(exc, _messageValue);
+                    CompleteAsFaulted(exc, runAsync: false);
+                }
+            }
+
+            /// <summary>Called by the target to consume the buffered message.</summary>
+            TOutput ISourceBlock<TOutput>.ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target, out Boolean messageConsumed)
+            {
+                // Validate arguments
+                if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+                if (target == null) throw new ArgumentNullException("target");
+                Contract.EndContractBlock();
+
+                // If the task has already completed, there's nothing to consume.  This could happen if
+                // cancellation was already requested and completed the task as a result.
+                if (Task.IsCompleted)
+                {
+                    messageConsumed = false;
+                    return default(TOutput);
+                }
+
+                // If the message being asked for is not the same as the one that's buffered,
+                // something is wrong.  Complete as having failed to transfer the message.
+                bool validMessage = (messageHeader.Id == Common.SINGLE_MESSAGE_ID);
+
+                if (validMessage)
+                {
+                    int curState = _cancellationState;
+                    Debug.Assert(
+                        curState == CANCELLATION_STATE_NONE || curState == CANCELLATION_STATE_REGISTERED ||
+                        curState == CANCELLATION_STATE_RESERVED || curState == CANCELLATION_STATE_COMPLETING,
+                        "The current cancellation state is not valid.");
+
+                    // If we're not dealing with cancellation, then if we're currently registered or reserved, try to transition 
+                    // to completing. If we're able to, allow the message to be consumed, and we're done.  At this point, we 
+                    // support transitioning out of REGISTERED or RESERVED.
+                    if (curState == CANCELLATION_STATE_NONE || // no synchronization necessary if there's no cancellation
+                        (curState != CANCELLATION_STATE_COMPLETING && // fast check to avoid unnecessary synchronization
+                         Interlocked.CompareExchange(ref _cancellationState, CANCELLATION_STATE_COMPLETING, curState) == curState))
+                    {
+                        CompleteAsAccepted(runAsync: true);
+                        messageConsumed = true;
+                        return _messageValue;
+                    }
+                }
+
+                // Consumption failed
+                messageConsumed = false;
+                return default(TOutput);
+            }
+
+            /// <summary>Called by the target to reserve the buffered message.</summary>
+            bool ISourceBlock<TOutput>.ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
+            {
+                // Validate arguments
+                if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+                if (target == null) throw new ArgumentNullException("target");
+                Contract.EndContractBlock();
+
+                // If the task has already completed, such as due to cancellation, there's nothing to reserve.
+                if (Task.IsCompleted) return false;
+
+                // As long as the message is the one being requested and cancellation hasn't been requested, allow it to be reserved.
+                bool reservable = (messageHeader.Id == Common.SINGLE_MESSAGE_ID);
+                return reservable &&
+                    (_cancellationState == CANCELLATION_STATE_NONE || // avoid synchronization when cancellation is not in play
+                     Interlocked.CompareExchange(ref _cancellationState, CANCELLATION_STATE_RESERVED, CANCELLATION_STATE_REGISTERED) == CANCELLATION_STATE_REGISTERED);
+            }
+
+            /// <summary>Called by the target to release a reservation on the buffered message.</summary>
+            void ISourceBlock<TOutput>.ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
+            {
+                // Validate arguments
+                if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+                if (target == null) throw new ArgumentNullException("target");
+                Contract.EndContractBlock();
+
+                // If this is not the message we posted, bail
+                if (messageHeader.Id != Common.SINGLE_MESSAGE_ID)
+                    throw new InvalidOperationException(SR.InvalidOperation_MessageNotReservedByTarget);
+
+                // If the task has already completed, there's nothing to release.
+                if (Task.IsCompleted) return;
+
+                // If a cancellation token is being used, revert our state back to registered.  In the meantime
+                // cancellation could have been requested, so check to see now if cancellation was requested
+                // and process it if it was.
+                if (_cancellationState != CANCELLATION_STATE_NONE)
+                {
+                    if (Interlocked.CompareExchange(ref _cancellationState, CANCELLATION_STATE_REGISTERED, CANCELLATION_STATE_RESERVED) != CANCELLATION_STATE_RESERVED)
+                        throw new InvalidOperationException(SR.InvalidOperation_MessageNotReservedByTarget);
+                    if (_cancellationToken.IsCancellationRequested)
+                        CancellationHandler(new WeakReference<SendAsyncSource<TOutput>>(this)); // same code as registered with the CancellationToken
+                }
+
+                // Start the process over by reoffering the message asynchronously.
+                OfferToTargetAsync();
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+            Task IDataflowBlock.Completion { get { return Task; } }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+            IDisposable ISourceBlock<TOutput>.LinkTo(ITargetBlock<TOutput> target, DataflowLinkOptions linkOptions) { throw new NotSupportedException(SR.NotSupported_MemberNotNeeded); }
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+            void IDataflowBlock.Complete() { throw new NotSupportedException(SR.NotSupported_MemberNotNeeded); }
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+            void IDataflowBlock.Fault(Exception exception) { throw new NotSupportedException(SR.NotSupported_MemberNotNeeded); }
+
+            /// <summary>The data to display in the debugger display attribute.</summary>
+            [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+            private object DebuggerDisplayContent
+            {
+                get
+                {
+                    var displayTarget = _target as IDebuggerDisplay;
+                    return string.Format("{0} Message={1}, Target=\"{2}\"",
+                        Common.GetNameForDebugger(this),
+                        _messageValue,
+                        displayTarget != null ? displayTarget.Content : _target);
+                }
+            }
+            /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+            object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+            /// <summary>Provides a debugger type proxy for the source.</summary>
+            private sealed class DebugView
+            {
+                /// <summary>The source.</summary>
+                private readonly SendAsyncSource<TOutput> _source;
+
+                /// <summary>Initializes the debug view.</summary>
+                /// <param name="source">The source to view.</param>
+                public DebugView(SendAsyncSource<TOutput> source)
+                {
+                    Contract.Requires(source != null, "Need a source with which to construct the debug view.");
+                    _source = source;
+                }
+
+                /// <summary>The target to which we're linked.</summary>
+                public ITargetBlock<TOutput> Target { get { return _source._target; } }
+                /// <summary>The message buffered by the source.</summary>
+                public TOutput Message { get { return _source._messageValue; } }
+                /// <summary>The Task represented the posting of the message.</summary>
+                public Task<bool> Completion { get { return _source.Task; } }
+            }
+        }
+        #endregion
+
+        #region TryReceive, ReceiveAsync, and Receive
+        #region TryReceive
+        /// <summary>
+        /// Attempts to synchronously receive an item from the <see cref="T:System.Threading.Tasks.Dataflow.ISourceBlock`1"/>.
+        /// </summary>
+        /// <param name="source">The source from which to receive.</param>
+        /// <param name="item">The item received from the source.</param>
+        /// <returns>true if an item could be received; otherwise, false.</returns>
+        /// <remarks>
+        /// This method does not wait until the source has an item to provide.
+        /// It will return whether or not an element was available.
+        /// </remarks>
+        public static bool TryReceive<TOutput>(this IReceivableSourceBlock<TOutput> source, out TOutput item)
+        {
+            if (source == null) throw new ArgumentNullException("source");
+            Contract.EndContractBlock();
+
+            return source.TryReceive(null, out item);
+        }
+        #endregion
+
+        #region ReceiveAsync
+        /// <summary>Asynchronously receives a value from the specified source.</summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source from which to asynchronously receive.</param>
+        /// <returns>
+        /// A <see cref="System.Threading.Tasks.Task{TOutput}"/> that represents the asynchronous receive operation.  When an item is successfully received from the source,
+        /// the returned task will be completed and its <see cref="System.Threading.Tasks.Task{TOutput}.Result">Result</see> will return the received item.  If an item cannot be retrieved,
+        /// because the source is empty and completed, the returned task will be canceled.
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source"/> is null (Nothing in Visual Basic).</exception>
+        public static Task<TOutput> ReceiveAsync<TOutput>(
+            this ISourceBlock<TOutput> source)
+        {
+            // Argument validation handled by target method
+            return ReceiveAsync(source, Common.InfiniteTimeSpan, CancellationToken.None);
+        }
+
+        /// <summary>Asynchronously receives a value from the specified source.</summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source from which to asynchronously receive.</param>
+        /// <param name="cancellationToken">The <see cref="System.Threading.CancellationToken"/> which may be used to cancel the receive operation.</param>
+        /// <returns>
+        /// A <see cref="System.Threading.Tasks.Task{TOutput}"/> that represents the asynchronous receive operation.  When an item is successfully received from the source,
+        /// the returned task will be completed and its <see cref="System.Threading.Tasks.Task{TOutput}.Result">Result</see> will return the received item.  If an item cannot be retrieved,
+        /// either because cancellation is requested or the source is empty and completed, the returned task will be canceled.
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source"/> is null (Nothing in Visual Basic).</exception>
+        public static Task<TOutput> ReceiveAsync<TOutput>(
+            this ISourceBlock<TOutput> source, CancellationToken cancellationToken)
+        {
+            // Argument validation handled by target method
+            return ReceiveAsync(source, Common.InfiniteTimeSpan, cancellationToken);
+        }
+
+        /// <summary>Asynchronously receives a value from the specified source.</summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source from which to asynchronously receive.</param>
+        /// <param name="timeout">A <see cref="System.TimeSpan"/> that represents the number of milliseconds to wait, or a TimeSpan that represents -1 milliseconds to wait indefinitely.</param>
+        /// <returns>
+        /// A <see cref="System.Threading.Tasks.Task{TOutput}"/> that represents the asynchronous receive operation.  When an item is successfully received from the source,
+        /// the returned task will be completed and its <see cref="System.Threading.Tasks.Task{TOutput}.Result">Result</see> will return the received item.  If an item cannot be retrieved,
+        /// either because the timeout expires or the source is empty and completed, the returned task will be canceled.
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentOutOfRangeException">
+        /// timeout is a negative number other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater than <see cref="System.Int32.MaxValue"/>.
+        /// </exception>
+        public static Task<TOutput> ReceiveAsync<TOutput>(
+            this ISourceBlock<TOutput> source, TimeSpan timeout)
+        {
+            // Argument validation handled by target method
+            return ReceiveAsync(source, timeout, CancellationToken.None);
+        }
+
+        /// <summary>Asynchronously receives a value from the specified source.</summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source from which to asynchronously receive.</param>
+        /// <param name="timeout">A <see cref="System.TimeSpan"/> that represents the number of milliseconds to wait, or a TimeSpan that represents -1 milliseconds to wait indefinitely.</param>
+        /// <param name="cancellationToken">The <see cref="System.Threading.CancellationToken"/> which may be used to cancel the receive operation.</param>
+        /// <returns>
+        /// A <see cref="System.Threading.Tasks.Task{TOutput}"/> that represents the asynchronous receive operation.  When an item is successfully received from the source,
+        /// the returned task will be completed and its <see cref="System.Threading.Tasks.Task{TOutput}.Result">Result</see> will return the received item.  If an item cannot be retrieved,
+        /// either because the timeout expires, cancellation is requested, or the source is empty and completed, the returned task will be canceled.
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentOutOfRangeException">
+        /// timeout is a negative number other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater than <see cref="System.Int32.MaxValue"/>.
+        /// </exception>
+        public static Task<TOutput> ReceiveAsync<TOutput>(
+            this ISourceBlock<TOutput> source, TimeSpan timeout, CancellationToken cancellationToken)
+        {
+            // Validate arguments
+
+
+            if (source == null) throw new ArgumentNullException("source");
+            if (!Common.IsValidTimeout(timeout)) throw new ArgumentOutOfRangeException("timeout", SR.ArgumentOutOfRange_NeedNonNegOrNegative1);
+
+            // Return the task representing the core receive operation
+            return ReceiveCore(source, true, timeout, cancellationToken);
+        }
+        #endregion
+
+        #region Receive
+        /// <summary>Synchronously receives an item from the source.</summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source from which to receive.</param>
+        /// <returns>The received item.</returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.InvalidOperationException">No item could be received from the source.</exception>
+        public static TOutput Receive<TOutput>(
+            this ISourceBlock<TOutput> source)
+        {
+            // Argument validation handled by target method
+            return Receive(source, Common.InfiniteTimeSpan, CancellationToken.None);
+        }
+
+        /// <summary>Synchronously receives an item from the source.</summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source from which to receive.</param>
+        /// <param name="cancellationToken">The <see cref="System.Threading.CancellationToken"/> which may be used to cancel the receive operation.</param>
+        /// <returns>The received item.</returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.InvalidOperationException">No item could be received from the source.</exception>
+        /// <exception cref="System.OperationCanceledException">The operation was canceled before an item was received from the source.</exception>
+        /// <remarks>
+        /// If the source successfully offered an item that was received by this operation, it will be returned, even if a concurrent cancellation request occurs.
+        /// </remarks>
+        public static TOutput Receive<TOutput>(
+            this ISourceBlock<TOutput> source, CancellationToken cancellationToken)
+        {
+            // Argument validation handled by target method
+            return Receive(source, Common.InfiniteTimeSpan, cancellationToken);
+        }
+
+        /// <summary>Synchronously receives an item from the source.</summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source from which to receive.</param>
+        /// <param name="timeout">A <see cref="System.TimeSpan"/> that represents the number of milliseconds to wait, or a TimeSpan that represents -1 milliseconds to wait indefinitely.</param>
+        /// <returns>The received item.</returns>
+        /// <exception cref="System.ArgumentOutOfRangeException">
+        /// timeout is a negative number other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater than <see cref="System.Int32.MaxValue"/>.
+        /// </exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.InvalidOperationException">No item could be received from the source.</exception>
+        /// <exception cref="System.TimeoutException">The specified timeout expired before an item was received from the source.</exception>
+        /// <remarks>
+        /// If the source successfully offered an item that was received by this operation, it will be returned, even if a concurrent timeout occurs.
+        /// </remarks>
+        public static TOutput Receive<TOutput>(
+            this ISourceBlock<TOutput> source, TimeSpan timeout)
+        {
+            // Argument validation handled by target method
+            return Receive(source, timeout, CancellationToken.None);
+        }
+
+        /// <summary>Synchronously receives an item from the source.</summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source from which to receive.</param>
+        /// <param name="timeout">A <see cref="System.TimeSpan"/> that represents the number of milliseconds to wait, or a TimeSpan that represents -1 milliseconds to wait indefinitely.</param>
+        /// <param name="cancellationToken">The <see cref="System.Threading.CancellationToken"/> which may be used to cancel the receive operation.</param>
+        /// <returns>The received item.</returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentOutOfRangeException">
+        /// timeout is a negative number other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater than <see cref="System.Int32.MaxValue"/>.
+        /// </exception>
+        /// <exception cref="System.InvalidOperationException">No item could be received from the source.</exception>
+        /// <exception cref="System.TimeoutException">The specified timeout expired before an item was received from the source.</exception>
+        /// <exception cref="System.OperationCanceledException">The operation was canceled before an item was received from the source.</exception>
+        /// <remarks>
+        /// If the source successfully offered an item that was received by this operation, it will be returned, even if a concurrent timeout or cancellation request occurs.
+        /// </remarks>
+        [SuppressMessage("Microsoft.Usage", "CA2200:RethrowToPreserveStackDetails")]
+        public static TOutput Receive<TOutput>(
+            this ISourceBlock<TOutput> source, TimeSpan timeout, CancellationToken cancellationToken)
+        {
+            // Validate arguments
+            if (source == null) throw new ArgumentNullException("source");
+            if (!Common.IsValidTimeout(timeout)) throw new ArgumentOutOfRangeException("timeout", SR.ArgumentOutOfRange_NeedNonNegOrNegative1);
+
+            // Do fast path checks for both cancellation and data already existing.
+            cancellationToken.ThrowIfCancellationRequested();
+            TOutput fastCheckedItem;
+            var receivableSource = source as IReceivableSourceBlock<TOutput>;
+            if (receivableSource != null && receivableSource.TryReceive(null, out fastCheckedItem))
+            {
+                return fastCheckedItem;
+            }
+
+            // Get a TCS to represent the receive operation and wait for it to complete.
+            // If it completes successfully, return the result. Otherwise, throw the 
+            // original inner exception representing the cause.  This could be an OCE.
+            Task<TOutput> task = ReceiveCore(source, false, timeout, cancellationToken);
+            try
+            {
+                return task.GetAwaiter().GetResult(); // block until the result is available
+            }
+            catch
+            {
+                // Special case cancellation in order to ensure the exception contains the token.
+                // The public TrySetCanceled, used by ReceiveCore, is parameterless and doesn't 
+                // accept the token to use.  Thus the exception that we're catching here
+                // won't contain the cancellation token we want propagated.
+                if (task.IsCanceled) cancellationToken.ThrowIfCancellationRequested();
+
+                // If we get here, propagate the original exception.
+                throw;
+            }
+        }
+        #endregion
+
+        #region Shared by Receive and ReceiveAsync
+        /// <summary>Receives an item from the source.</summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source from which to receive.</param>
+        /// <param name="attemptTryReceive">Whether to first attempt using TryReceive to get a value from the source.</param>
+        /// <param name="timeout">A <see cref="System.TimeSpan"/> that represents the number of milliseconds to wait, or a TimeSpan that represents -1 milliseconds to wait indefinitely.</param>
+        /// <param name="cancellationToken">The <see cref="System.Threading.CancellationToken"/> which may be used to cancel the receive operation.</param>
+        /// <returns>A Task for the receive operation.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private static Task<TOutput> ReceiveCore<TOutput>(
+            this ISourceBlock<TOutput> source, bool attemptTryReceive, TimeSpan timeout, CancellationToken cancellationToken)
+        {
+            Contract.Requires(source != null, "Need a source from which to receive.");
+
+            // If cancellation has been requested, we're done before we've even started, cancel this receive.
+            if (cancellationToken.IsCancellationRequested)
+            {
+                return Common.CreateTaskFromCancellation<TOutput>(cancellationToken);
+            }
+
+            if (attemptTryReceive)
+            {
+                // If we're able to directly and immediately receive an item, use that item to complete the receive.
+                var receivableSource = source as IReceivableSourceBlock<TOutput>;
+                if (receivableSource != null)
+                {
+                    try
+                    {
+                        TOutput fastCheckedItem;
+                        if (receivableSource.TryReceive(null, out fastCheckedItem))
+                        {
+                            return Task.FromResult<TOutput>(fastCheckedItem);
+                        }
+                    }
+                    catch (Exception exc)
+                    {
+                        return Common.CreateTaskFromException<TOutput>(exc);
+                    }
+                }
+            }
+
+            int millisecondsTimeout = (int)timeout.TotalMilliseconds;
+            if (millisecondsTimeout == 0)
+            {
+                return Common.CreateTaskFromException<TOutput>(ReceiveTarget<TOutput>.CreateExceptionForTimeout());
+            }
+
+            return ReceiveCoreByLinking<TOutput>(source, millisecondsTimeout, cancellationToken);
+        }
+
+        /// <summary>The reason for a ReceiveCoreByLinking call failing.</summary>
+        private enum ReceiveCoreByLinkingCleanupReason
+        {
+            /// <summary>The Receive operation completed successfully, obtaining a value from the source.</summary>
+            Success = 0,
+            /// <summary>The timer expired before a value could be received.</summary>
+            Timer = 1,
+            /// <summary>The cancellation token had cancellation requested before a value could be received.</summary>
+            Cancellation = 2,
+            /// <summary>The source completed before a value could be received.</summary>
+            SourceCompletion = 3,
+            /// <summary>An error occurred while linking up the target.</summary>
+            SourceProtocolError = 4,
+            /// <summary>An error during cleanup after completion for another reason.</summary>
+            ErrorDuringCleanup = 5
+        }
+
+        /// <summary>Cancels a CancellationTokenSource passed as the object state argument.</summary>
+        private static readonly Action<object> _cancelCts = state => ((CancellationTokenSource)state).Cancel();
+
+        /// <summary>Receives an item from the source by linking a temporary target from it.</summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source from which to receive.</param>
+        /// <param name="millisecondsTimeout">The number of milliseconds to wait, or -1 to wait indefinitely.</param>
+        /// <param name="cancellationToken">The <see cref="System.Threading.CancellationToken"/> which may be used to cancel the receive operation.</param>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private static Task<TOutput> ReceiveCoreByLinking<TOutput>(ISourceBlock<TOutput> source, int millisecondsTimeout, CancellationToken cancellationToken)
+        {
+            // Create a target to link from the source
+            var target = new ReceiveTarget<TOutput>();
+
+            // Keep cancellation registrations inside the try/catch in case the underlying CTS is disposed in which case an exception is thrown
+            try
+            {
+                // Create a cancellation token that will be canceled when either the provided token 
+                // is canceled or the source block completes.
+                if (cancellationToken.CanBeCanceled)
+                {
+                    target._externalCancellationToken = cancellationToken;
+                    target._regFromExternalCancellationToken = cancellationToken.Register(_cancelCts, target._cts);
+                }
+
+                // We need to cleanup if one of a few things happens:
+                // - The target completes successfully due to receiving data.
+                // - The user-specified timeout occurs, such that we should bail on the receive.
+                // - The cancellation token has cancellation requested, such that we should bail on the receive.
+                // - The source completes, since it won't send any more data.
+                // Note that there's a potential race here, in that the cleanup delegate could be executed
+                // from the timer before the timer variable is set, but that's ok, because then timer variable
+                // will just show up as null in the cleanup and there will be nothing to dispose (nor will anything
+                // need to be disposed, since it's the timer that fired.  Timer.Dispose is also thread-safe to be 
+                // called multiple times concurrently.)
+                if (millisecondsTimeout > 0)
+                {
+                    target._timer = new Timer(
+                        ReceiveTarget<TOutput>.CachedLinkingTimerCallback, target,
+                        millisecondsTimeout, Timeout.Infinite);
+                }
+
+                if (target._cts.Token.CanBeCanceled)
+                {
+                    target._cts.Token.Register(
+                        ReceiveTarget<TOutput>.CachedLinkingCancellationCallback, target); // we don't have to cleanup this registration, as this cts is short-lived
+                }
+
+                // Link the target to the source
+                IDisposable unlink = source.LinkTo(target, DataflowLinkOptions.UnlinkAfterOneAndPropagateCompletion);
+                target._unlink = unlink;
+
+                // If completion has started, there is a chance it started after we linked.
+                // In that case, we must dispose of the unlinker.
+                // If completion started before we linked, the cleanup code will try to unlink.
+                // So we are racing to dispose of the unlinker.
+                if (Volatile.Read(ref target._cleanupReserved))
+                {
+                    IDisposable disposableUnlink = Interlocked.CompareExchange(ref target._unlink, null, unlink);
+                    if (disposableUnlink != null) disposableUnlink.Dispose();
+                }
+            }
+            catch (Exception exception)
+            {
+                target._receivedException = exception;
+                target.TryCleanupAndComplete(ReceiveCoreByLinkingCleanupReason.SourceProtocolError);
+                // If we lose the race here, we may end up eating this exception.
+            }
+
+            return target.Task;
+        }
+
+        /// <summary>Provides a TaskCompletionSource that is also a dataflow target for use in ReceiveCore.</summary>
+        /// <typeparam name="T">Specifies the type of data offered to the target.</typeparam>
+        [SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
+        [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+        private sealed class ReceiveTarget<T> : TaskCompletionSource<T>, ITargetBlock<T>, IDebuggerDisplay
+        {
+            /// <summary>Cached delegate used in ReceiveCoreByLinking on the created timer.  Passed the ReceiveTarget as the argument.</summary>
+            /// <remarks>The C# compiler will not cache this delegate by default due to it being a generic method on a non-generic class.</remarks>
+            internal readonly static TimerCallback CachedLinkingTimerCallback = state =>
+            {
+                var receiveTarget = (ReceiveTarget<T>)state;
+                receiveTarget.TryCleanupAndComplete(ReceiveCoreByLinkingCleanupReason.Timer);
+            };
+
+            /// <summary>Cached delegate used in ReceiveCoreByLinking on the cancellation token. Passed the ReceiveTarget as the state argument.</summary>
+            /// <remarks>The C# compiler will not cache this delegate by default due to it being a generic method on a non-generic class.</remarks>
+            internal readonly static Action<object> CachedLinkingCancellationCallback = state =>
+            {
+                var receiveTarget = (ReceiveTarget<T>)state;
+                receiveTarget.TryCleanupAndComplete(ReceiveCoreByLinkingCleanupReason.Cancellation);
+            };
+
+            /// <summary>The received value if we accepted a value from the source.</summary>
+            private T _receivedValue;
+
+            /// <summary>The cancellation token source representing both external and internal cancellation.</summary>
+            internal readonly CancellationTokenSource _cts = new CancellationTokenSource();
+            /// <summary>Indicates a code path is already on route to complete the target. 0 is false, 1 is true.</summary>
+            internal bool _cleanupReserved; // must only be accessed under IncomingLock
+            /// <summary>The external token that cancels the internal token.</summary>
+            internal CancellationToken _externalCancellationToken;
+            /// <summary>The registration on the external token that cancels the internal token.</summary>
+            internal CancellationTokenRegistration _regFromExternalCancellationToken;
+            /// <summary>The timer that fires when the timeout has been exceeded.</summary>
+            internal Timer _timer;
+            /// <summary>The unlinker from removing this target from the source from which we're receiving.</summary>
+            internal IDisposable _unlink;
+            /// <summary>The received exception if an error occurred.</summary>
+            internal Exception _receivedException;
+
+            /// <summary>Gets the sync obj used to synchronize all activity on this target.</summary>
+            internal object IncomingLock { get { return _cts; } }
+
+            /// <summary>Initializes the target.</summary>
+            internal ReceiveTarget() { }
+
+            /// <summary>Offers a message to be used to complete the TaskCompletionSource.</summary>
+            [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+            DataflowMessageStatus ITargetBlock<T>.OfferMessage(DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source, Boolean consumeToAccept)
+            {
+                // Validate arguments
+                if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+                if (source == null && consumeToAccept) throw new ArgumentException(SR.Argument_CantConsumeFromANullSource, "consumeToAccept");
+                Contract.EndContractBlock();
+
+                DataflowMessageStatus status = DataflowMessageStatus.NotAvailable;
+
+                // If we're already one our way to being done, don't accept anything.
+                // This is a fast-path check prior to taking the incoming lock;
+                // _cleanupReserved only ever goes from false to true.
+                if (Volatile.Read(ref _cleanupReserved)) return DataflowMessageStatus.DecliningPermanently;
+
+                lock (IncomingLock)
+                {
+                    // Check again now that we've taken the lock
+                    if (_cleanupReserved) return DataflowMessageStatus.DecliningPermanently;
+
+                    try
+                    {
+                        // Accept the message if possible and complete this task with the message's value.
+                        bool consumed = true;
+                        T acceptedValue = consumeToAccept ? source.ConsumeMessage(messageHeader, this, out consumed) : messageValue;
+                        if (consumed)
+                        {
+                            status = DataflowMessageStatus.Accepted;
+                            _receivedValue = acceptedValue;
+                            _cleanupReserved = true;
+                        }
+                    }
+                    catch (Exception exc)
+                    {
+                        // An error occurred.  Take ourselves out of the game.
+                        status = DataflowMessageStatus.DecliningPermanently;
+                        Common.StoreDataflowMessageValueIntoExceptionData(exc, messageValue);
+                        _receivedException = exc;
+                        _cleanupReserved = true;
+                    }
+                }
+
+                // Do any cleanup outside of the lock.  The right to cleanup was reserved above for these cases.
+                if (status == DataflowMessageStatus.Accepted)
+                {
+                    CleanupAndComplete(ReceiveCoreByLinkingCleanupReason.Success);
+                }
+                else if (status == DataflowMessageStatus.DecliningPermanently) // should only be the case if an error occurred
+                {
+                    CleanupAndComplete(ReceiveCoreByLinkingCleanupReason.SourceProtocolError);
+                }
+
+                return status;
+            }
+
+            /// <summary>
+            /// Attempts to reserve the right to cleanup and complete, and if successfully, 
+            /// continues to cleanup and complete.
+            /// </summary>
+            /// <param name="reason">The reason we're completing and cleaning up.</param>
+            /// <returns>true if successful in completing; otherwise, false.</returns>
+            internal bool TryCleanupAndComplete(ReceiveCoreByLinkingCleanupReason reason)
+            {
+                // If cleanup was already reserved, bail.
+                if (Volatile.Read(ref _cleanupReserved)) return false;
+
+                // Atomically using IncomingLock try to reserve the completion routine.
+                lock (IncomingLock)
+                {
+                    if (_cleanupReserved) return false;
+                    _cleanupReserved = true;
+                }
+
+                // We've reserved cleanup and completion, so do it.
+                CleanupAndComplete(reason);
+                return true;
+            }
+
+            /// <summary>Cleans up the target for completion.</summary>
+            /// <param name="reason">The reason we're completing and cleaning up.</param>
+            /// <remarks>This method must only be called once on this instance.</remarks>
+            [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+            [SuppressMessage("Microsoft.Usage", "CA2201:DoNotRaiseReservedExceptionTypes")]
+            private void CleanupAndComplete(ReceiveCoreByLinkingCleanupReason reason)
+            {
+                Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+                Debug.Assert(Volatile.Read(ref _cleanupReserved), "Should only be called once by whomever reserved the right.");
+
+                // Unlink from the source.  If we're cleaning up because the source
+                // completed, this is unnecessary, as the source should have already
+                // emptied out its target registry, or at least be in the process of doing so.
+                // We are racing with the linking code - only one can dispose of the unlinker.
+                IDisposable unlink = _unlink;
+                if (reason != ReceiveCoreByLinkingCleanupReason.SourceCompletion && unlink != null)
+                {
+                    IDisposable disposableUnlink = Interlocked.CompareExchange(ref _unlink, null, unlink);
+                    if (disposableUnlink != null)
+                    {
+                        // If an error occurs, fault the target and override the reason to
+                        // continue executing, i.e. do the remaining cleanup without completing
+                        // the target the way we originally intended to.
+                        try
+                        {
+                            disposableUnlink.Dispose(); // must not be holding IncomingLock, or could deadlock
+                        }
+                        catch (Exception exc)
+                        {
+                            _receivedException = exc;
+                            reason = ReceiveCoreByLinkingCleanupReason.SourceProtocolError;
+                        }
+                    }
+                }
+
+                // Cleanup the timer.  (Even if we're here because of the timer firing, we still
+                // want to aggressively dispose of the timer.)
+                if (_timer != null) _timer.Dispose();
+
+                // Cancel the token everyone is listening to.  We also want to unlink
+                // from the user-provided cancellation token to prevent a leak.
+                // We do *not* dispose of the cts itself here, as there could be a race
+                // with the code registering this cleanup delegate with cts; not disposing
+                // is ok, though, because there's no resources created by the CTS
+                // that needs to be cleaned up since we're not using the wait handle.
+                // This is also why we don't use CreateLinkedTokenSource, as that combines
+                // both disposing of the token source and disposal of the connection link
+                // into a single dispose operation.
+                // if we're here because of cancellation, no need to cancel again
+                if (reason != ReceiveCoreByLinkingCleanupReason.Cancellation)
+                {
+                    // if the source complete without receiving a value, we check the cancellation one more time
+                    if (reason == ReceiveCoreByLinkingCleanupReason.SourceCompletion &&
+                        (_externalCancellationToken.IsCancellationRequested || _cts.IsCancellationRequested))
+                    {
+                        reason = ReceiveCoreByLinkingCleanupReason.Cancellation;
+                    }
+                    _cts.Cancel();
+                }
+                _regFromExternalCancellationToken.Dispose();
+
+                // No need to dispose of the cts, either, as we're not accessing its WaitHandle
+                // nor was it created as a linked token source.  Disposing it could also be dangerous
+                // if other code tries to access it after we dispose of it... best to leave it available.
+
+                // Complete the task based on the reason
+                switch (reason)
+                {
+                    // Task final state: RanToCompletion
+                    case ReceiveCoreByLinkingCleanupReason.Success:
+                        System.Threading.Tasks.Task.Factory.StartNew(state =>
+                        {
+                            // Complete with the received value
+                            var target = (ReceiveTarget<T>)state;
+                            try { target.TrySetResult(target._receivedValue); }
+                            catch (ObjectDisposedException) { /* benign race if returned task is already disposed */ }
+                        }, this, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default);
+                        break;
+
+                    // Task final state: Canceled
+                    case ReceiveCoreByLinkingCleanupReason.Cancellation:
+                        System.Threading.Tasks.Task.Factory.StartNew(state =>
+                        {
+                            // Complete as canceled
+                            var target = (ReceiveTarget<T>)state;
+                            try { target.TrySetCanceled(); }
+                            catch (ObjectDisposedException) { /* benign race if returned task is already disposed */ }
+                        }, this, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default);
+                        break;
+                    default:
+                        Debug.Assert(false, "Invalid linking cleanup reason specified.");
+                        goto case ReceiveCoreByLinkingCleanupReason.Cancellation;
+
+                    // Task final state: Faulted
+                    case ReceiveCoreByLinkingCleanupReason.SourceCompletion:
+                        if (_receivedException == null) _receivedException = CreateExceptionForSourceCompletion();
+                        goto case ReceiveCoreByLinkingCleanupReason.SourceProtocolError;
+                    case ReceiveCoreByLinkingCleanupReason.Timer:
+                        if (_receivedException == null) _receivedException = CreateExceptionForTimeout();
+                        goto case ReceiveCoreByLinkingCleanupReason.SourceProtocolError;
+                    case ReceiveCoreByLinkingCleanupReason.SourceProtocolError:
+                    case ReceiveCoreByLinkingCleanupReason.ErrorDuringCleanup:
+                        Debug.Assert(_receivedException != null, "We need an exception with which to fault the task.");
+                        System.Threading.Tasks.Task.Factory.StartNew(state =>
+                        {
+                            // Complete with the received exception
+                            var target = (ReceiveTarget<T>)state;
+                            try { target.TrySetException(target._receivedException ?? new Exception()); }
+                            catch (ObjectDisposedException) { /* benign race if returned task is already disposed */ }
+                        }, this, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default);
+                        break;
+                }
+            }
+
+            /// <summary>Creates an exception to use when a source completed before receiving a value.</summary>
+            /// <returns>The initialized exception.</returns>
+            internal static Exception CreateExceptionForSourceCompletion()
+            {
+                return Common.InitializeStackTrace(new InvalidOperationException(SR.InvalidOperation_DataNotAvailableForReceive));
+            }
+
+            /// <summary>Creates an exception to use when a timeout occurs before receiving a value.</summary>
+            /// <returns>The initialized exception.</returns>
+            internal static Exception CreateExceptionForTimeout()
+            {
+                return Common.InitializeStackTrace(new TimeoutException());
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+            void IDataflowBlock.Complete()
+            {
+                TryCleanupAndComplete(ReceiveCoreByLinkingCleanupReason.SourceCompletion);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+            void IDataflowBlock.Fault(Exception exception) { ((IDataflowBlock)this).Complete(); }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+            Task IDataflowBlock.Completion { get { throw new NotSupportedException(SR.NotSupported_MemberNotNeeded); } }
+
+            /// <summary>The data to display in the debugger display attribute.</summary>
+            [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+            private object DebuggerDisplayContent
+            {
+                get
+                {
+                    return string.Format("{0} IsCompleted={1}",
+                        Common.GetNameForDebugger(this), base.Task.IsCompleted);
+                }
+            }
+            /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+            object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+        }
+        #endregion
+        #endregion
+
+        #region OutputAvailableAsync
+        /// <summary>
+        /// Provides a <see cref="System.Threading.Tasks.Task{TResult}"/> 
+        /// that asynchronously monitors the source for available output.
+        /// </summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source to monitor.</param>
+        /// <returns>
+        /// A <see cref="System.Threading.Tasks.Task{Boolean}"/> that informs of whether and when
+        /// more output is available.  When the task completes, if its <see cref="System.Threading.Tasks.Task{Boolean}.Result"/> is true, more output 
+        /// is available in the source (though another consumer of the source may retrieve the data).  
+        /// If it returns false, more output is not and will never be available, due to the source 
+        /// completing prior to output being available.
+        /// </returns>
+        public static Task<bool> OutputAvailableAsync<TOutput>(this ISourceBlock<TOutput> source)
+        {
+            return OutputAvailableAsync<TOutput>(source, CancellationToken.None);
+        }
+
+        /// <summary>
+        /// Provides a <see cref="System.Threading.Tasks.Task{TResult}"/> 
+        /// that asynchronously monitors the source for available output.
+        /// </summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source to monitor.</param>
+        /// <param name="cancellationToken">The cancellation token with which to cancel the asynchronous operation.</param>
+        /// <returns>
+        /// A <see cref="System.Threading.Tasks.Task{Boolean}"/> that informs of whether and when
+        /// more output is available.  When the task completes, if its <see cref="System.Threading.Tasks.Task{Boolean}.Result"/> is true, more output 
+        /// is available in the source (though another consumer of the source may retrieve the data).  
+        /// If it returns false, more output is not and will never be available, due to the source 
+        /// completing prior to output being available.
+        /// </returns>
+        [SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")]
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope")]
+        public static Task<bool> OutputAvailableAsync<TOutput>(
+            this ISourceBlock<TOutput> source, CancellationToken cancellationToken)
+        {
+            // Validate arguments
+            if (source == null) throw new ArgumentNullException("source");
+            Contract.EndContractBlock();
+
+            // Fast path for cancellation
+            if (cancellationToken.IsCancellationRequested)
+                return Common.CreateTaskFromCancellation<bool>(cancellationToken);
+
+            // In a method like this, normally we would want to check source.Completion.IsCompleted
+            // and avoid linking completely by simply returning a completed task.  However,
+            // some blocks that are completed still have data available, like WriteOnceBlock,
+            // which completes as soon as it gets a value and stores that value forever.
+            // As such, OutputAvailableAsync must link from the source so that the source
+            // can push data to us if it has it, at which point we can immediately unlink.
+
+            // Create a target task that will complete when it's offered a message (but it won't accept the message)
+            var target = new OutputAvailableAsyncTarget<TOutput>();
+            try
+            {
+                // Link from the source.  If the source propagates a message during or immediately after linking
+                // such that our target is already completed, just return its task.
+                target._unlinker = source.LinkTo(target, DataflowLinkOptions.UnlinkAfterOneAndPropagateCompletion);
+
+                // If the task is already completed (an exception may have occurred, or the source may have propagated
+                // a message to the target during LinkTo or soon thereafter), just return the task directly.
+                if (target.Task.IsCompleted)
+                {
+                    return target.Task;
+                }
+
+                // If cancellation could be requested, hook everything up to be notified of cancellation requests.
+                if (cancellationToken.CanBeCanceled)
+                {
+                    // When cancellation is requested, unlink the target from the source and cancel the target.
+                    target._ctr = cancellationToken.Register(OutputAvailableAsyncTarget<TOutput>.s_cancelAndUnlink, target);
+                }
+
+                // We can't return the task directly, as the source block will be completing the task synchronously,
+                // and thus any synchronous continuations would run as part of the source block's call.  We don't have to worry
+                // about cancellation, as we've coded cancellation to complete the task asynchronously, and with the continuation
+                // set as NotOnCanceled, so the continuation will be canceled immediately when the antecedent is canceled, which
+                // will thus be asynchronously from the cancellation token source's cancellation call.
+                return target.Task.ContinueWith(
+                    OutputAvailableAsyncTarget<TOutput>.s_handleCompletion, target,
+                    CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.NotOnCanceled, TaskScheduler.Default);
+            }
+            catch (Exception exc)
+            {
+                // Source.LinkTo could throw, as could cancellationToken.Register if cancellation was already requested
+                // such that it synchronously invokes the source's unlinker IDisposable, which could throw.
+                target.TrySetException(exc);
+
+                // Undo the link from the source to the target
+                target.AttemptThreadSafeUnlink();
+
+                // Return the now faulted task
+                return target.Task;
+            }
+        }
+
+        /// <summary>Provides a target used in OutputAvailableAsync operations.</summary>
+        /// <typeparam name="T">Specifies the type of data in the data source being checked.</typeparam>
+        [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+        private sealed class OutputAvailableAsyncTarget<T> : TaskCompletionSource<bool>, ITargetBlock<T>, IDebuggerDisplay
+        {
+            /// <summary>
+            /// Cached continuation delegate that unregisters from cancellation and
+            /// marshals the antecedent's result to the return value.
+            /// </summary>
+            internal readonly static Func<Task<bool>, object, bool> s_handleCompletion = (antecedent, state) =>
+            {
+                var target = state as OutputAvailableAsyncTarget<T>;
+                Debug.Assert(target != null, "Expected non-null target");
+                target._ctr.Dispose();
+                return antecedent.GetAwaiter().GetResult();
+            };
+
+            /// <summary>
+            /// Cached delegate that cancels the target and unlinks the target from the source.
+            /// Expects an OutputAvailableAsyncTarget as the state argument. 
+            /// </summary>
+            internal readonly static Action<object> s_cancelAndUnlink = CancelAndUnlink;
+
+            /// <summary>Cancels the target and unlinks the target from the source.</summary>
+            /// <param name="state">An OutputAvailableAsyncTarget.</param>
+            private static void CancelAndUnlink(object state)
+            {
+                var target = state as OutputAvailableAsyncTarget<T>;
+                Debug.Assert(target != null, "Expected a non-null target");
+
+                // Cancel asynchronously so that we're not completing the task as part of the cts.Cancel() call,
+                // since synchronous continuations off that task would then run as part of Cancel.
+                // Take advantage of this task and unlink from there to avoid doing the interlocked operation synchronously.
+                System.Threading.Tasks.Task.Factory.StartNew(tgt =>
+                                                            {
+                                                                var thisTarget = (OutputAvailableAsyncTarget<T>)tgt;
+                                                                thisTarget.TrySetCanceled();
+                                                                thisTarget.AttemptThreadSafeUnlink();
+                                                            },
+                    target, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+            }
+
+            /// <summary>Disposes of _unlinker if the target has been linked.</summary>
+            internal void AttemptThreadSafeUnlink()
+            {
+                // A race is possible. Therefore use an interlocked operation.
+                IDisposable cachedUnlinker = _unlinker;
+                if (cachedUnlinker != null && Interlocked.CompareExchange(ref _unlinker, null, cachedUnlinker) == cachedUnlinker)
+                {
+                    cachedUnlinker.Dispose();
+                }
+            }
+
+            /// <summary>The IDisposable used to unlink this target from its source.</summary>
+            internal IDisposable _unlinker;
+            /// <summary>The registration used to unregister this target from the cancellation token.</summary>
+            internal CancellationTokenRegistration _ctr;
+
+            /// <summary>Completes the task when offered a message (but doesn't consume the message).</summary>
+            DataflowMessageStatus ITargetBlock<T>.OfferMessage(DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source, Boolean consumeToAccept)
+            {
+                if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+                if (source == null) throw new ArgumentNullException("source");
+                Contract.EndContractBlock();
+
+                TrySetResult(true);
+                return DataflowMessageStatus.DecliningPermanently;
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+            void IDataflowBlock.Complete()
+            {
+                TrySetResult(false);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+            void IDataflowBlock.Fault(Exception exception)
+            {
+                if (exception == null) throw new ArgumentNullException("exception");
+                Contract.EndContractBlock();
+                TrySetResult(false);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+            Task IDataflowBlock.Completion { get { throw new NotSupportedException(SR.NotSupported_MemberNotNeeded); } }
+
+            /// <summary>The data to display in the debugger display attribute.</summary>
+            [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+            private object DebuggerDisplayContent
+            {
+                get
+                {
+                    return string.Format("{0} IsCompleted={1}",
+                        Common.GetNameForDebugger(this), base.Task.IsCompleted);
+                }
+            }
+            /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+            object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+        }
+        #endregion
+
+        #region Encapsulate
+        /// <summary>Encapsulates a target and a source into a single propagator.</summary>
+        /// <typeparam name="TInput">Specifies the type of input expected by the target.</typeparam>
+        /// <typeparam name="TOutput">Specifies the type of output produced by the source.</typeparam>
+        /// <param name="target">The target to encapsulate.</param>
+        /// <param name="source">The source to encapsulate.</param>
+        /// <returns>The encapsulated target and source.</returns>
+        /// <remarks>
+        /// This method does not in any way connect the target to the source. It creates a
+        /// propagator block whose target methods delegate to the specified target and whose
+        /// source methods delegate to the specified source.  Any connection between the target
+        /// and the source is left for the developer to explicitly provide.  The propagator's
+        /// <see cref="IDataflowBlock"/> implementation delegates to the specified source.
+        /// </remarks>
+        public static IPropagatorBlock<TInput, TOutput> Encapsulate<TInput, TOutput>(
+            ITargetBlock<TInput> target, ISourceBlock<TOutput> source)
+        {
+            if (target == null) throw new ArgumentNullException("target");
+            if (source == null) throw new ArgumentNullException("source");
+            Contract.EndContractBlock();
+            return new EncapsulatingPropagator<TInput, TOutput>(target, source);
+        }
+
+        /// <summary>Provides a dataflow block that encapsulates a target and a source to form a single propagator.</summary>
+        [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+        [DebuggerTypeProxy(typeof(EncapsulatingPropagator<,>.DebugView))]
+        private sealed class EncapsulatingPropagator<TInput, TOutput> : IPropagatorBlock<TInput, TOutput>, IReceivableSourceBlock<TOutput>, IDebuggerDisplay
+        {
+            /// <summary>The target half.</summary>
+            private ITargetBlock<TInput> _target;
+            /// <summary>The source half.</summary>
+            private ISourceBlock<TOutput> _source;
+
+            public EncapsulatingPropagator(ITargetBlock<TInput> target, ISourceBlock<TOutput> source)
+            {
+                Contract.Requires(target != null, "The target should never be null; this should be checked by all internal usage.");
+                Contract.Requires(source != null, "The source should never be null; this should be checked by all internal usage.");
+                _target = target;
+                _source = source;
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+            public void Complete()
+            {
+                _target.Complete();
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+            void IDataflowBlock.Fault(Exception exception)
+            {
+                if (exception == null) throw new ArgumentNullException("exception");
+                Contract.EndContractBlock();
+
+                _target.Fault(exception);
+            }
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+            public DataflowMessageStatus OfferMessage(DataflowMessageHeader messageHeader, TInput messageValue, ISourceBlock<TInput> source, bool consumeToAccept)
+            {
+                return _target.OfferMessage(messageHeader, messageValue, source, consumeToAccept);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+            public Task Completion { get { return _source.Completion; } }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+            public IDisposable LinkTo(ITargetBlock<TOutput> target, DataflowLinkOptions linkOptions)
+            {
+                return _source.LinkTo(target, linkOptions);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+            public bool TryReceive(Predicate<TOutput> filter, out TOutput item)
+            {
+                var receivableSource = _source as IReceivableSourceBlock<TOutput>;
+                if (receivableSource != null) return receivableSource.TryReceive(filter, out item);
+
+                item = default(TOutput);
+                return false;
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+            public bool TryReceiveAll(out IList<TOutput> items)
+            {
+                var receivableSource = _source as IReceivableSourceBlock<TOutput>;
+                if (receivableSource != null) return receivableSource.TryReceiveAll(out items);
+
+                items = default(IList<TOutput>);
+                return false;
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+            public TOutput ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target, out Boolean messageConsumed)
+            {
+                return _source.ConsumeMessage(messageHeader, target, out messageConsumed);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+            public bool ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
+            {
+                return _source.ReserveMessage(messageHeader, target);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+            public void ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
+            {
+                _source.ReleaseReservation(messageHeader, target);
+            }
+
+            /// <summary>The data to display in the debugger display attribute.</summary>
+            [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+            private object DebuggerDisplayContent
+            {
+                get
+                {
+                    var displayTarget = _target as IDebuggerDisplay;
+                    var displaySource = _source as IDebuggerDisplay;
+                    return string.Format("{0} Target=\"{1}\", Source=\"{2}\"",
+                        Common.GetNameForDebugger(this),
+                        displayTarget != null ? displayTarget.Content : _target,
+                        displaySource != null ? displaySource.Content : _source);
+                }
+            }
+            /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+            object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+            /// <summary>A debug view for the propagator.</summary>
+            private sealed class DebugView
+            {
+                /// <summary>The propagator being debugged.</summary>
+                private readonly EncapsulatingPropagator<TInput, TOutput> _propagator;
+
+                /// <summary>Initializes the debug view.</summary>
+                /// <param name="propagator">The propagator being debugged.</param>
+                public DebugView(EncapsulatingPropagator<TInput, TOutput> propagator)
+                {
+                    Contract.Requires(propagator != null, "Need a block with which to construct the debug view.");
+                    _propagator = propagator;
+                }
+
+                /// <summary>The target.</summary>
+                public ITargetBlock<TInput> Target { get { return _propagator._target; } }
+                /// <summary>The source.</summary>
+                public ISourceBlock<TOutput> Source { get { return _propagator._source; } }
+            }
+        }
+        #endregion
+
+        #region Choose
+        #region Choose<T1,T2>
+        /// <summary>Monitors two dataflow sources, invoking the provided handler for whichever source makes data available first.</summary>
+        /// <typeparam name="T1">Specifies type of data contained in the first source.</typeparam>
+        /// <typeparam name="T2">Specifies type of data contained in the second source.</typeparam>
+        /// <param name="source1">The first source.</param>
+        /// <param name="action1">The handler to execute on data from the first source.</param>
+        /// <param name="source2">The second source.</param>
+        /// <param name="action2">The handler to execute on data from the second source.</param>
+        /// <returns>
+        /// <para>
+        /// A <see cref="System.Threading.Tasks.Task{Int32}"/> that represents the asynchronous choice.
+        /// If both sources are completed prior to the choice completing, 
+        /// the resulting task will be canceled. When one of the sources has data available and successfully propagates 
+        /// it to the choice, the resulting task will complete when the handler completes: if the handler throws an exception,
+        /// the task will end in the <see cref="System.Threading.Tasks.TaskStatus.Faulted"/> state containing the unhandled exception, otherwise the task
+        /// will end with its <see cref="System.Threading.Tasks.Task{Int32}.Result"/> set to either 0 or 1 to
+        /// represent the first or second source, respectively.
+        /// </para>
+        /// <para>
+        /// This method will only consume an element from one of the two data sources, never both.
+        /// </para>
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source1"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action1"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source2"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action2"/> is null (Nothing in Visual Basic).</exception>
+        public static Task<Int32> Choose<T1, T2>(
+            ISourceBlock<T1> source1, Action<T1> action1,
+            ISourceBlock<T2> source2, Action<T2> action2)
+        {
+            // All argument validation is handled by the delegated method
+            return Choose(source1, action1, source2, action2, DataflowBlockOptions.Default);
+        }
+
+        /// <summary>Monitors two dataflow sources, invoking the provided handler for whichever source makes data available first.</summary>
+        /// <typeparam name="T1">Specifies type of data contained in the first source.</typeparam>
+        /// <typeparam name="T2">Specifies type of data contained in the second source.</typeparam>
+        /// <param name="source1">The first source.</param>
+        /// <param name="action1">The handler to execute on data from the first source.</param>
+        /// <param name="source2">The second source.</param>
+        /// <param name="action2">The handler to execute on data from the second source.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this choice.</param>
+        /// <returns>
+        /// <para>
+        /// A <see cref="System.Threading.Tasks.Task{Int32}"/> that represents the asynchronous choice.
+        /// If both sources are completed prior to the choice completing, or if the CancellationToken
+        /// provided as part of <paramref name="dataflowBlockOptions"/> is canceled prior to the choice completing,
+        /// the resulting task will be canceled. When one of the sources has data available and successfully propagates 
+        /// it to the choice, the resulting task will complete when the handler completes: if the handler throws an exception,
+        /// the task will end in the <see cref="System.Threading.Tasks.TaskStatus.Faulted"/> state containing the unhandled exception, otherwise the task
+        /// will end with its <see cref="System.Threading.Tasks.Task{Int32}.Result"/> set to either 0 or 1 to
+        /// represent the first or second source, respectively.
+        /// </para>
+        /// <para>
+        /// This method will only consume an element from one of the two data sources, never both.
+        /// If cancellation is requested after an element has been received, the cancellation request will be ignored,
+        /// and the relevant handler will be allowed to execute. 
+        /// </para>
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source1"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action1"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source2"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action2"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope")]
+        public static Task<Int32> Choose<T1, T2>(
+            ISourceBlock<T1> source1, Action<T1> action1,
+            ISourceBlock<T2> source2, Action<T2> action2,
+            DataflowBlockOptions dataflowBlockOptions)
+        {
+            // Validate arguments
+            if (source1 == null) throw new ArgumentNullException("source1");
+            if (action1 == null) throw new ArgumentNullException("action1");
+            if (source2 == null) throw new ArgumentNullException("source2");
+            if (action2 == null) throw new ArgumentNullException("action2");
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+
+            // Delegate to the shared implementation
+            return ChooseCore<T1, T2, VoidResult>(source1, action1, source2, action2, null, null, dataflowBlockOptions);
+        }
+        #endregion
+
+        #region Choose<T1,T2,T3>
+        /// <summary>Monitors three dataflow sources, invoking the provided handler for whichever source makes data available first.</summary>
+        /// <typeparam name="T1">Specifies type of data contained in the first source.</typeparam>
+        /// <typeparam name="T2">Specifies type of data contained in the second source.</typeparam>
+        /// <typeparam name="T3">Specifies type of data contained in the third source.</typeparam>
+        /// <param name="source1">The first source.</param>
+        /// <param name="action1">The handler to execute on data from the first source.</param>
+        /// <param name="source2">The second source.</param>
+        /// <param name="action2">The handler to execute on data from the second source.</param>
+        /// <param name="source3">The third source.</param>
+        /// <param name="action3">The handler to execute on data from the third source.</param>
+        /// <returns>
+        /// <para>
+        /// A <see cref="System.Threading.Tasks.Task{Int32}"/> that represents the asynchronous choice.
+        /// If all sources are completed prior to the choice completing, 
+        /// the resulting task will be canceled. When one of the sources has data available and successfully propagates 
+        /// it to the choice, the resulting task will complete when the handler completes: if the handler throws an exception,
+        /// the task will end in the <see cref="System.Threading.Tasks.TaskStatus.Faulted"/> state containing the unhandled exception, otherwise the task
+        /// will end with its <see cref="System.Threading.Tasks.Task{Int32}.Result"/> set to the 0-based index of the source.
+        /// </para>
+        /// <para>
+        /// This method will only consume an element from one of the data sources, never more than one.
+        /// </para>
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source1"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action1"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source2"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action2"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source3"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action3"/> is null (Nothing in Visual Basic).</exception>
+        public static Task<Int32> Choose<T1, T2, T3>(
+            ISourceBlock<T1> source1, Action<T1> action1,
+            ISourceBlock<T2> source2, Action<T2> action2,
+            ISourceBlock<T3> source3, Action<T3> action3)
+        {
+            // All argument validation is handled by the delegated method
+            return Choose(source1, action1, source2, action2, source3, action3, DataflowBlockOptions.Default);
+        }
+
+        /// <summary>Monitors three dataflow sources, invoking the provided handler for whichever source makes data available first.</summary>
+        /// <typeparam name="T1">Specifies type of data contained in the first source.</typeparam>
+        /// <typeparam name="T2">Specifies type of data contained in the second source.</typeparam>
+        /// <typeparam name="T3">Specifies type of data contained in the third source.</typeparam>
+        /// <param name="source1">The first source.</param>
+        /// <param name="action1">The handler to execute on data from the first source.</param>
+        /// <param name="source2">The second source.</param>
+        /// <param name="action2">The handler to execute on data from the second source.</param>
+        /// <param name="source3">The third source.</param>
+        /// <param name="action3">The handler to execute on data from the third source.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this choice.</param>
+        /// <returns>
+        /// <para>
+        /// A <see cref="System.Threading.Tasks.Task{Int32}"/> that represents the asynchronous choice.
+        /// If all sources are completed prior to the choice completing, or if the CancellationToken
+        /// provided as part of <paramref name="dataflowBlockOptions"/> is canceled prior to the choice completing,
+        /// the resulting task will be canceled. When one of the sources has data available and successfully propagates 
+        /// it to the choice, the resulting task will complete when the handler completes: if the handler throws an exception,
+        /// the task will end in the <see cref="System.Threading.Tasks.TaskStatus.Faulted"/> state containing the unhandled exception, otherwise the task
+        /// will end with its <see cref="System.Threading.Tasks.Task{Int32}.Result"/> set to the 0-based index of the source.
+        /// </para>
+        /// <para>
+        /// This method will only consume an element from one of the data sources, never more than one.
+        /// If cancellation is requested after an element has been received, the cancellation request will be ignored,
+        /// and the relevant handler will be allowed to execute. 
+        /// </para>
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source1"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action1"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source2"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action2"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source3"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action3"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope")]
+        public static Task<Int32> Choose<T1, T2, T3>(
+            ISourceBlock<T1> source1, Action<T1> action1,
+            ISourceBlock<T2> source2, Action<T2> action2,
+            ISourceBlock<T3> source3, Action<T3> action3,
+            DataflowBlockOptions dataflowBlockOptions)
+        {
+            // Validate arguments
+            if (source1 == null) throw new ArgumentNullException("source1");
+            if (action1 == null) throw new ArgumentNullException("action1");
+            if (source2 == null) throw new ArgumentNullException("source2");
+            if (action2 == null) throw new ArgumentNullException("action2");
+            if (source3 == null) throw new ArgumentNullException("source3");
+            if (action3 == null) throw new ArgumentNullException("action3");
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+
+            // Delegate to the shared implementation
+            return ChooseCore<T1, T2, T3>(source1, action1, source2, action2, source3, action3, dataflowBlockOptions);
+        }
+        #endregion
+
+        #region Choose Shared
+        /// <summary>Monitors dataflow sources, invoking the provided handler for whichever source makes data available first.</summary>
+        /// <typeparam name="T1">Specifies type of data contained in the first source.</typeparam>
+        /// <typeparam name="T2">Specifies type of data contained in the second source.</typeparam>
+        /// <typeparam name="T3">Specifies type of data contained in the third source.</typeparam>
+        /// <param name="source1">The first source.</param>
+        /// <param name="action1">The handler to execute on data from the first source.</param>
+        /// <param name="source2">The second source.</param>
+        /// <param name="action2">The handler to execute on data from the second source.</param>
+        /// <param name="source3">The third source.</param>
+        /// <param name="action3">The handler to execute on data from the third source.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this choice.</param>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope")]
+        private static Task<Int32> ChooseCore<T1, T2, T3>(
+            ISourceBlock<T1> source1, Action<T1> action1,
+            ISourceBlock<T2> source2, Action<T2> action2,
+            ISourceBlock<T3> source3, Action<T3> action3,
+            DataflowBlockOptions dataflowBlockOptions)
+        {
+            Contract.Requires(source1 != null && action1 != null, "The first source and action should not be null.");
+            Contract.Requires(source2 != null && action2 != null, "The second source and action should not be null.");
+            Contract.Requires((source3 == null) == (action3 == null), "The third action should be null iff the third source is null.");
+            Contract.Requires(dataflowBlockOptions != null, "Options are required.");
+            bool hasThirdSource = source3 != null; // In the future, if we want higher arities on Choose, we can simply add more such checks on additional arguments
+
+            // Early cancellation check and bail out
+            if (dataflowBlockOptions.CancellationToken.IsCancellationRequested)
+                return Common.CreateTaskFromCancellation<Int32>(dataflowBlockOptions.CancellationToken);
+
+            // Fast path: if any of the sources already has data available that can be received immediately.
+            Task<int> resultTask;
+            try
+            {
+                TaskScheduler scheduler = dataflowBlockOptions.TaskScheduler;
+                if (TryChooseFromSource(source1, action1, 0, scheduler, out resultTask) ||
+                    TryChooseFromSource(source2, action2, 1, scheduler, out resultTask) ||
+                    (hasThirdSource && TryChooseFromSource(source3, action3, 2, scheduler, out resultTask)))
+                {
+                    return resultTask;
+                }
+            }
+            catch (Exception exc)
+            {
+                // In case TryReceive in TryChooseFromSource erroneously throws
+                return Common.CreateTaskFromException<int>(exc);
+            }
+
+            // Slow path: link up to all of the sources.  Separated out to avoid a closure on the fast path.
+            return ChooseCoreByLinking(source1, action1, source2, action2, source3, action3, dataflowBlockOptions);
+        }
+
+        /// <summary>
+        /// Tries to remove data from a receivable source and schedule an action to process that received item.
+        /// </summary>
+        /// <typeparam name="T">Specifies the type of data to process.</typeparam>
+        /// <param name="source">The source from which to receive the data.</param>
+        /// <param name="action">The action to run for the received data.</param>
+        /// <param name="branchId">The branch ID associated with this source/action pair.</param>
+        /// <param name="scheduler">The scheduler to use to process the action.</param>
+        /// <param name="task">The task created for processing the received item.</param>
+        /// <returns>true if this try attempt satisfies the choose operation; otherwise, false.</returns>
+        private static bool TryChooseFromSource<T>(
+            ISourceBlock<T> source, Action<T> action, int branchId, TaskScheduler scheduler,
+            out Task<int> task)
+        {
+            // Validate arguments
+            Contract.Requires(source != null, "Expected a non-null source");
+            Contract.Requires(action != null, "Expected a non-null action");
+            Contract.Requires(branchId >= 0, "Expected a valid branch ID (> 0)");
+            Contract.Requires(scheduler != null, "Expected a non-null scheduler");
+
+            // Try to receive from the source.  If we can't, bail.
+            T result;
+            var receivableSource = source as IReceivableSourceBlock<T>;
+            if (receivableSource == null || !receivableSource.TryReceive(out result))
+            {
+                task = null;
+                return false;
+            }
+
+            // We successfully received an item.  Launch a task to process it.
+            task = Task.Factory.StartNew(ChooseTarget<T>.s_processBranchFunction,
+                Tuple.Create<Action<T>, T, int>(action, result, branchId),
+                CancellationToken.None, Common.GetCreationOptionsForTask(), scheduler);
+            return true;
+        }
+
+        /// <summary>Monitors dataflow sources, invoking the provided handler for whichever source makes data available first.</summary>
+        /// <typeparam name="T1">Specifies type of data contained in the first source.</typeparam>
+        /// <typeparam name="T2">Specifies type of data contained in the second source.</typeparam>
+        /// <typeparam name="T3">Specifies type of data contained in the third source.</typeparam>
+        /// <param name="source1">The first source.</param>
+        /// <param name="action1">The handler to execute on data from the first source.</param>
+        /// <param name="source2">The second source.</param>
+        /// <param name="action2">The handler to execute on data from the second source.</param>
+        /// <param name="source3">The third source.</param>
+        /// <param name="action3">The handler to execute on data from the third source.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this choice.</param>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope")]
+        private static Task<Int32> ChooseCoreByLinking<T1, T2, T3>(
+            ISourceBlock<T1> source1, Action<T1> action1,
+            ISourceBlock<T2> source2, Action<T2> action2,
+            ISourceBlock<T3> source3, Action<T3> action3,
+            DataflowBlockOptions dataflowBlockOptions)
+        {
+            Contract.Requires(source1 != null && action1 != null, "The first source and action should not be null.");
+            Contract.Requires(source2 != null && action2 != null, "The second source and action should not be null.");
+            Contract.Requires((source3 == null) == (action3 == null), "The third action should be null iff the third source is null.");
+            Contract.Requires(dataflowBlockOptions != null, "Options are required.");
+
+            bool hasThirdSource = source3 != null; // In the future, if we want higher arities on Choose, we can simply add more such checks on additional arguments
+
+            // Create object to act as both completion marker and sync obj for targets.
+            var boxedCompleted = new StrongBox<Task>();
+
+            // Set up teardown cancellation.  We will request cancellation when a) the supplied options token
+            // has cancellation requested or b) when we actually complete somewhere in order to tear down
+            // the rest of our configured set up.
+            CancellationTokenSource cts = CancellationTokenSource.CreateLinkedTokenSource(dataflowBlockOptions.CancellationToken, CancellationToken.None);
+
+            // Set up the branches.
+            TaskScheduler scheduler = dataflowBlockOptions.TaskScheduler;
+            var branchTasks = new Task<int>[hasThirdSource ? 3 : 2];
+            branchTasks[0] = CreateChooseBranch(boxedCompleted, cts, scheduler, 0, source1, action1);
+            branchTasks[1] = CreateChooseBranch(boxedCompleted, cts, scheduler, 1, source2, action2);
+            if (hasThirdSource)
+            {
+                branchTasks[2] = CreateChooseBranch(boxedCompleted, cts, scheduler, 2, source3, action3);
+            }
+
+            // Asynchronously wait for all branches to complete, then complete
+            // a task to be returned to the caller.
+            var result = new TaskCompletionSource<int>();
+            Task.Factory.ContinueWhenAll(branchTasks, tasks =>
+            {
+                // Process the outcome of all branches.  At most one will have completed
+                // successfully, returning its branch ID.  Others may have faulted,
+                // in which case we need to propagate their exceptions, regardless
+                // of whether a branch completed successfully.  Others may have been
+                // canceled (or run but found they were not needed), and those
+                // we just ignore.
+                List<Exception> exceptions = null;
+                int successfulBranchId = -1;
+                foreach (Task<int> task in tasks)
+                {
+                    switch (task.Status)
+                    {
+                        case TaskStatus.Faulted:
+                            Common.AddException(ref exceptions, task.Exception, unwrapInnerExceptions: true);
+                            break;
+                        case TaskStatus.RanToCompletion:
+                            int resultBranchId = task.Result;
+                            if (resultBranchId >= 0)
+                            {
+                                Debug.Assert(resultBranchId < tasks.Length, "Expected a valid branch ID");
+                                Debug.Assert(successfulBranchId == -1, "There should be at most one successful branch.");
+                                successfulBranchId = resultBranchId;
+                            }
+                            else Debug.Assert(resultBranchId == -1, "Expected -1 as a signal of a non-successful branch");
+                            break;
+                    }
+                }
+
+                // If we found any exceptions, fault the Choose task.  Otherwise, if any branch completed
+                // successfully, store its result, or if cancellation was request
+                if (exceptions != null)
+                {
+                    result.TrySetException(exceptions);
+                }
+                else if (successfulBranchId >= 0)
+                {
+                    result.TrySetResult(successfulBranchId);
+                }
+                else
+                {
+                    result.TrySetCanceled();
+                }
+
+                // By now we know that all of the tasks have completed, so there
+                // can't be any more use of the CancellationTokenSource.
+                cts.Dispose();
+            }, CancellationToken.None, Common.GetContinuationOptions(), TaskScheduler.Default);
+            return result.Task;
+        }
+
+        /// <summary>Creates a target for a branch of a Choose.</summary>
+        /// <typeparam name="T">Specifies the type of data coming through this branch.</typeparam>
+        /// <param name="boxedCompleted">A strong box around the completed Task from any target. Also sync obj for access to the targets.</param>
+        /// <param name="cts">The CancellationTokenSource used to issue tear down / cancellation requests.</param>
+        /// <param name="scheduler">The TaskScheduler on which to scheduler work.</param>
+        /// <param name="branchId">The ID of this branch, used to complete the resultTask.</param>
+        /// <param name="source">The source with which this branch is associated.</param>
+        /// <param name="action">The action to run for a single element received from the source.</param>
+        /// <returns>A task representing the branch.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private static Task<int> CreateChooseBranch<T>(
+            StrongBox<Task> boxedCompleted, CancellationTokenSource cts,
+            TaskScheduler scheduler,
+            int branchId, ISourceBlock<T> source, Action<T> action)
+        {
+            // If the cancellation token is already canceled, there is no need to create and link a target.
+            // Instead, directly return a canceled task.
+            if (cts.IsCancellationRequested)
+                return Common.CreateTaskFromCancellation<int>(cts.Token);
+
+            // Proceed with creating and linking a hidden target. Also get the source's completion task, 
+            // as we need it to know when the source completes.  Both of these operations
+            // could throw an exception if the block is faulty.
+            var target = new ChooseTarget<T>(boxedCompleted, cts.Token);
+            IDisposable unlink;
+            try
+            {
+                unlink = source.LinkTo(target, DataflowLinkOptions.UnlinkAfterOneAndPropagateCompletion);
+            }
+            catch (Exception exc)
+            {
+                cts.Cancel();
+                return Common.CreateTaskFromException<int>(exc);
+            }
+
+            // The continuation task below is implicitly capturing the right execution context,
+            // as CreateChooseBranch is called synchronously from Choose, so we
+            // don't need to additionally capture and marshal an ExecutionContext.
+
+            return target.Task.ContinueWith(completed =>
+            {
+                try
+                {
+                    // If the target ran to completion, i.e. it got a message, 
+                    // cancel the other branch(es) and proceed with the user callback.
+                    if (completed.Status == TaskStatus.RanToCompletion)
+                    {
+                        // Cancel the cts to trigger completion of the other branches.
+                        cts.Cancel();
+
+                        // Proceed with the user callback.
+                        action(completed.Result);
+
+                        // Return the ID of our branch to indicate.
+                        return branchId;
+                    }
+                    return -1;
+                }
+                finally
+                {
+                    // Unlink from the source.  This could throw if the block is faulty,
+                    // in which case our branch's task will fault.  If this
+                    // does throw, it'll end up propagating instead of the
+                    // original action's exception if there was one.
+                    unlink.Dispose();
+                }
+            }, CancellationToken.None, Common.GetContinuationOptions(), scheduler);
+        }
+
+        /// <summary>Provides a dataflow target used by Choose to receive data from a single source.</summary>
+        /// <typeparam name="T">Specifies the type of data offered to this target.</typeparam>
+        [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+        private sealed class ChooseTarget<T> : TaskCompletionSource<T>, ITargetBlock<T>, IDebuggerDisplay
+        {
+            /// <summary>
+            /// Delegate used to invoke the action for a branch when that branch is activated
+            /// on the fast path.
+            /// </summary>
+            internal static readonly Func<object, int> s_processBranchFunction = state =>
+            {
+                Tuple<Action<T>, T, int> actionResultBranch = (Tuple<Action<T>, T, int>)state;
+                actionResultBranch.Item1(actionResultBranch.Item2);
+                return actionResultBranch.Item3;
+            };
+
+            /// <summary>
+            /// A wrapper for the task that represents the completed branch of this choice.
+            /// The wrapper is also the sync object used to protect all choice branch's access to shared state.
+            /// </summary>
+            private StrongBox<Task> _completed;
+
+            /// <summary>Initializes the target.</summary>
+            /// <param name="completed">The completed wrapper shared between all choice branches.</param>
+            /// <param name="cancellationToken">The cancellation token used to cancel this target.</param>
+            internal ChooseTarget(StrongBox<Task> completed, CancellationToken cancellationToken)
+            {
+                Contract.Requires(completed != null, "Requires a shared target to complete.");
+                _completed = completed;
+
+                // Handle async cancellation by canceling the target without storing it into _completed.
+                // _completed must only be set to a RanToCompletion task for a successful branch.
+                Common.WireCancellationToComplete(cancellationToken, base.Task,
+                    state =>
+                    {
+                        var thisChooseTarget = (ChooseTarget<T>)state;
+                        lock (thisChooseTarget._completed) thisChooseTarget.TrySetCanceled();
+                    }, this);
+            }
+
+            /// <summary>Called when this choice branch is being offered a message.</summary>
+            public DataflowMessageStatus OfferMessage(DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source, Boolean consumeToAccept)
+            {
+                // Validate arguments
+                if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+                if (source == null && consumeToAccept) throw new ArgumentException(SR.Argument_CantConsumeFromANullSource, "consumeToAccept");
+                Contract.EndContractBlock();
+
+                lock (_completed)
+                {
+                    // If we or another participating choice has already completed, we're done.
+                    if (_completed.Value != null || base.Task.IsCompleted) return DataflowMessageStatus.DecliningPermanently;
+
+                    // Consume the message from the source if necessary
+                    if (consumeToAccept)
+                    {
+                        bool consumed;
+                        messageValue = source.ConsumeMessage(messageHeader, this, out consumed);
+                        if (!consumed) return DataflowMessageStatus.NotAvailable;
+                    }
+
+                    // Store the result and signal our success
+                    TrySetResult(messageValue);
+                    _completed.Value = Task;
+                    return DataflowMessageStatus.Accepted;
+                }
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+            void IDataflowBlock.Complete()
+            {
+                lock (_completed) TrySetCanceled();
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+            void IDataflowBlock.Fault(Exception exception) { ((IDataflowBlock)this).Complete(); }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+            Task IDataflowBlock.Completion { get { throw new NotSupportedException(SR.NotSupported_MemberNotNeeded); } }
+
+            /// <summary>The data to display in the debugger display attribute.</summary>
+            [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+            private object DebuggerDisplayContent
+            {
+                get
+                {
+                    return string.Format("{0} IsCompleted={1}",
+                        Common.GetNameForDebugger(this), base.Task.IsCompleted);
+                }
+            }
+            /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+            object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+        }
+        #endregion
+        #endregion
+
+        #region AsObservable
+        /// <summary>Creates a new <see cref="System.IObservable{TOutput}"/> abstraction over the <see cref="ISourceBlock{TOutput}"/>.</summary>
+        /// <typeparam name="TOutput">Specifies the type of data contained in the source.</typeparam>
+        /// <param name="source">The source to wrap.</param>
+        /// <returns>An IObservable{TOutput} that enables observers to be subscribed to the source.</returns>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="source"/> is null (Nothing in Visual Basic).</exception>
+        public static IObservable<TOutput> AsObservable<TOutput>(this ISourceBlock<TOutput> source)
+        {
+            if (source == null) throw new ArgumentNullException("source");
+            Contract.EndContractBlock();
+            return SourceObservable<TOutput>.From(source);
+        }
+
+        /// <summary>Cached options for non-greedy processing.</summary>
+        private static readonly ExecutionDataflowBlockOptions _nonGreedyExecutionOptions = new ExecutionDataflowBlockOptions { BoundedCapacity = 1 };
+
+        /// <summary>Provides an IObservable veneer over a source block.</summary>
+        [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+        [DebuggerTypeProxy(typeof(SourceObservable<>.DebugView))]
+        private sealed class SourceObservable<TOutput> : IObservable<TOutput>, IDebuggerDisplay
+        {
+            /// <summary>The table that maps source to cached observable.</summary>
+            /// <remarks>
+            /// ConditionalWeakTable doesn't do the initialization under a lock, just the publication.
+            /// This means that if there's a race to create two observables off the same source, we could end
+            /// up instantiating multiple SourceObservable instances, of which only one will be published.
+            /// Worst case, we end up with a few additional continuations off of the source's completion task.
+            /// </remarks>
+            private static readonly ConditionalWeakTable<ISourceBlock<TOutput>, SourceObservable<TOutput>> _table =
+                new ConditionalWeakTable<ISourceBlock<TOutput>, SourceObservable<TOutput>>();
+
+            /// <summary>Gets an observable to represent the source block.</summary>
+            /// <param name="source">The source.</param>
+            /// <returns>The observable.</returns>
+            internal static IObservable<TOutput> From(ISourceBlock<TOutput> source)
+            {
+                Contract.Requires(source != null, "Requires a source for which to retrieve the observable.");
+                return _table.GetValue(source, s => new SourceObservable<TOutput>(s));
+            }
+
+            /// <summary>Object used to synchronize all subscriptions, unsubscriptions, and propagations.</summary>
+            private readonly object _SubscriptionLock = new object();
+            /// <summary>The wrapped source.</summary>
+            private readonly ISourceBlock<TOutput> _source;
+            /// <summary>
+            /// The current target.  We use the same target until the number of subscribers
+            /// drops to 0, at which point we substitute in a new target.
+            /// </summary>
+            private ObserversState _observersState;
+
+            /// <summary>Initializes the SourceObservable.</summary>
+            /// <param name="source">The source to wrap.</param>
+            internal SourceObservable(ISourceBlock<TOutput> source)
+            {
+                Contract.Requires(source != null, "The observable requires a source to wrap.");
+                _source = source;
+                _observersState = new ObserversState(this);
+            }
+
+            /// <summary>Gets any exceptions from the source block.</summary>
+            /// <returns>The aggregate exception of all errors, or null if everything completed successfully.</returns>
+            private AggregateException GetCompletionError()
+            {
+                Task sourceCompletionTask = Common.GetPotentiallyNotSupportedCompletionTask(_source);
+                return sourceCompletionTask != null && sourceCompletionTask.IsFaulted ?
+                    sourceCompletionTask.Exception : null;
+            }
+
+            /// <summary>Subscribes the observer to the source.</summary>
+            /// <param name="observer">the observer to subscribe.</param>
+            /// <returns>An IDisposable that may be used to unsubscribe the source.</returns>
+            [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope")]
+            IDisposable IObservable<TOutput>.Subscribe(IObserver<TOutput> observer)
+            {
+                // Validate arguments
+                if (observer == null) throw new ArgumentNullException("observer");
+                Contract.EndContractBlock();
+                Common.ContractAssertMonitorStatus(_SubscriptionLock, held: false);
+
+                Task sourceCompletionTask = Common.GetPotentiallyNotSupportedCompletionTask(_source);
+
+                // Synchronize all observers for this source.
+                Exception error = null;
+                lock (_SubscriptionLock)
+                {
+                    // Fast path for if everything is already done.  We need to ensure that both
+                    // the source is complete and that the target has finished propagating data to all observers.
+                    // If there  was an error, we grab it here and then we'll complete the observer
+                    // outside of the lock.
+                    if (sourceCompletionTask != null && sourceCompletionTask.IsCompleted &&
+                        _observersState.Target.Completion.IsCompleted)
+                    {
+                        error = GetCompletionError();
+                    }
+                    // Otherwise, we need to subscribe this observer.
+                    else
+                    {
+                        // Hook up the observer.  If this is the first observer, link the source to the target.
+                        _observersState.Observers = _observersState.Observers.Add(observer);
+                        if (_observersState.Observers.Count == 1)
+                        {
+                            Debug.Assert(_observersState.Unlinker == null, "The source should not be linked to the target.");
+                            _observersState.Unlinker = _source.LinkTo(_observersState.Target);
+                            if (_observersState.Unlinker == null)
+                            {
+                                _observersState.Observers = ImmutableList<IObserver<TOutput>>.Empty;
+                                return null;
+                            }
+                        }
+
+                        // Return a disposable that will unlink this observer, and if it's the last
+                        // observer for the source, shut off the pipe to observers.
+                        return Disposables.Create((s, o) => s.Unsubscribe(o), this, observer);
+                    }
+                }
+
+                // Complete the observer.
+                if (error != null) observer.OnError(error);
+                else observer.OnCompleted();
+                return Disposables.Nop;
+            }
+
+            /// <summary>Unsubscribes the observer.</summary>
+            /// <param name="observer">The observer being unsubscribed.</param>
+            private void Unsubscribe(IObserver<TOutput> observer)
+            {
+                Contract.Requires(observer != null, "Expected an observer.");
+                Common.ContractAssertMonitorStatus(_SubscriptionLock, held: false);
+
+                lock (_SubscriptionLock)
+                {
+                    ObserversState currentState = _observersState;
+                    Debug.Assert(currentState != null, "Observer state should never be null.");
+
+                    // If the observer was already unsubscribed (or is otherwise no longer present in our list), bail.
+                    if (!currentState.Observers.Contains(observer)) return;
+
+                    // If this is the last observer being removed, reset to be ready for future subscribers.
+                    if (currentState.Observers.Count == 1)
+                    {
+                        ResetObserverState();
+                    }
+                    // Otherwise, just remove the observer.  Note that we don't remove the observer
+                    // from the current target if this is the last observer. This is done in case the target
+                    // has already taken data from the source: we want that data to end up somewhere,
+                    // and we can't put it back in the source, so we ensure we send it along to the observer.
+                    else
+                    {
+                        currentState.Observers = currentState.Observers.Remove(observer);
+                    }
+                }
+            }
+
+            /// <summary>Resets the observer state to the original, inactive state.</summary>
+            /// <returns>The list of active observers prior to the reset.</returns>
+            private ImmutableList<IObserver<TOutput>> ResetObserverState()
+            {
+                Common.ContractAssertMonitorStatus(_SubscriptionLock, held: true);
+
+                ObserversState currentState = _observersState;
+                Debug.Assert(currentState != null, "Observer state should never be null.");
+                Debug.Assert(currentState.Unlinker != null, "The target should be linked.");
+                Debug.Assert(currentState.Canceler != null, "The target should have set up continuations.");
+
+                // Replace the target with a clean one, unlink and cancel, and return the previous set of observers
+                ImmutableList<IObserver<TOutput>> currentObservers = currentState.Observers;
+                _observersState = new ObserversState(this);
+                currentState.Unlinker.Dispose();
+                currentState.Canceler.Cancel();
+                return currentObservers;
+            }
+
+            /// <summary>The data to display in the debugger display attribute.</summary>
+            [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+            private object DebuggerDisplayContent
+            {
+                get
+                {
+                    var displaySource = _source as IDebuggerDisplay;
+                    return string.Format("Observers={0}, Block=\"{1}\"",
+                        _observersState.Observers.Count,
+                        displaySource != null ? displaySource.Content : _source);
+                }
+            }
+            /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+            object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+            /// <summary>Provides a debugger type proxy for the observable.</summary>
+            private sealed class DebugView
+            {
+                /// <summary>The observable being debugged.</summary>
+                private readonly SourceObservable<TOutput> _observable;
+
+                /// <summary>Initializes the debug view.</summary>
+                /// <param name="observable">The target being debugged.</param>
+                public DebugView(SourceObservable<TOutput> observable)
+                {
+                    Contract.Requires(observable != null, "Need a block with which to construct the debug view.");
+                    _observable = observable;
+                }
+
+                /// <summary>Gets an enumerable of the observers.</summary>
+                [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+                public IObserver<TOutput>[] Observers { get { return _observable._observersState.Observers.ToArray(); } }
+            }
+
+            /// <summary>State associated with the current target for propagating data to observers.</summary>
+            [SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
+            private sealed class ObserversState
+            {
+                /// <summary>The owning SourceObservable.</summary>
+                internal readonly SourceObservable<TOutput> Observable;
+                /// <summary>The ActionBlock that consumes data from a source and offers it to targets.</summary>
+                internal readonly ActionBlock<TOutput> Target;
+                /// <summary>Used to cancel continuations when they're no longer necessary.</summary>
+                internal readonly CancellationTokenSource Canceler = new CancellationTokenSource();
+                /// <summary>
+                /// A list of the observers currently registered with this target.  The list is immutable
+                /// to enable iteration through the list while the set of observers may be changing.
+                /// </summary>
+                internal ImmutableList<IObserver<TOutput>> Observers = ImmutableList<IObserver<TOutput>>.Empty;
+                /// <summary>Used to unlink the source from this target when the last observer is unsubscribed.</summary>
+                internal IDisposable Unlinker;
+                /// <summary>
+                /// Temporary list to keep track of SendAsync tasks to TargetObservers with back pressure.
+                /// This field gets instantiated on demand. It gets populated and cleared within an offering cycle.
+                /// </summary>
+                private List<Task<bool>> _tempSendAsyncTaskList;
+
+                /// <summary>Initializes the target instance.</summary>
+                /// <param name="observable">The owning observable.</param>
+                internal ObserversState(SourceObservable<TOutput> observable)
+                {
+                    Contract.Requires(observable != null, "Observe state must be mapped to a source observable.");
+
+                    // Set up the target block
+                    Observable = observable;
+                    Target = new ActionBlock<TOutput>((Func<TOutput, Task>)ProcessItemAsync, DataflowBlock._nonGreedyExecutionOptions);
+
+                    // If the target block fails due to an unexpected exception (e.g. it calls back to the source and the source throws an error), 
+                    // we fault currently registered observers and reset the observable.
+                    Target.Completion.ContinueWith(
+                        (t, state) => ((ObserversState)state).NotifyObserversOfCompletion(t.Exception), this,
+                        CancellationToken.None,
+                        Common.GetContinuationOptions(TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously),
+                        TaskScheduler.Default);
+
+                    // When the source completes, complete the target. Then when the target completes, 
+                    // send completion messages to any observers still registered.
+                    Task sourceCompletionTask = Common.GetPotentiallyNotSupportedCompletionTask(Observable._source);
+                    if (sourceCompletionTask != null)
+                    {
+                        sourceCompletionTask.ContinueWith((_1, state1) =>
+                        {
+                            var ti = (ObserversState)state1;
+                            ti.Target.Complete();
+                            ti.Target.Completion.ContinueWith(
+                                (_2, state2) => ((ObserversState)state2).NotifyObserversOfCompletion(), state1,
+                                CancellationToken.None,
+                                Common.GetContinuationOptions(TaskContinuationOptions.NotOnFaulted | TaskContinuationOptions.ExecuteSynchronously),
+                                TaskScheduler.Default);
+                        }, this, Canceler.Token, Common.GetContinuationOptions(TaskContinuationOptions.ExecuteSynchronously), TaskScheduler.Default);
+                    }
+                }
+
+                /// <summary>Forwards an item to all currently subscribed observers.</summary>
+                /// <param name="item">The item to forward.</param>
+                [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+                private Task ProcessItemAsync(TOutput item)
+                {
+                    Common.ContractAssertMonitorStatus(Observable._SubscriptionLock, held: false);
+
+                    ImmutableList<IObserver<TOutput>> currentObservers;
+                    lock (Observable._SubscriptionLock) currentObservers = Observers;
+                    try
+                    {
+                        foreach (IObserver<TOutput> observer in currentObservers)
+                        {
+                            // If the observer is our own TargetObserver, we SendAsync() to it
+                            // rather than going through IObserver.OnNext() which allows us to
+                            // continue offering to the remaining observers without blocking.
+                            var targetObserver = observer as TargetObserver<TOutput>;
+                            if (targetObserver != null)
+                            {
+                                Task<bool> sendAsyncTask = targetObserver.SendAsyncToTarget(item);
+                                if (sendAsyncTask.Status != TaskStatus.RanToCompletion)
+                                {
+                                    // Ensure the SendAsyncTaskList is instantiated
+                                    if (_tempSendAsyncTaskList == null) _tempSendAsyncTaskList = new List<Task<bool>>();
+
+                                    // Add the task to the list
+                                    _tempSendAsyncTaskList.Add(sendAsyncTask);
+                                }
+                            }
+                            else
+                            {
+                                observer.OnNext(item);
+                            }
+                        }
+
+                        // If there are SendAsync tasks to wait on...
+                        if (_tempSendAsyncTaskList != null && _tempSendAsyncTaskList.Count > 0)
+                        {
+                            // Consolidate all SendAsync tasks into one
+                            Task<bool[]> allSendAsyncTasksConsolidated = Task.WhenAll(_tempSendAsyncTaskList);
+
+                            // Clear the temp SendAsync task list
+                            _tempSendAsyncTaskList.Clear();
+
+                            // Return the consolidated task
+                            return allSendAsyncTasksConsolidated;
+                        }
+                    }
+                    catch (Exception exc)
+                    {
+                        // Return a faulted task
+                        return Common.CreateTaskFromException<VoidResult>(exc);
+                    }
+
+                    // All observers accepted normally. 
+                    // Return a completed task.
+                    return Common.CompletedTaskWithTrueResult;
+                }
+
+                /// <summary>Notifies all currently registered observers that they should complete.</summary>
+                /// <param name="targetException">
+                /// Non-null when an unexpected exception occurs during processing.  Faults
+                /// all subscribed observers and resets the observable back to its original condition.
+                /// </param>
+                [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+                private void NotifyObserversOfCompletion(Exception targetException = null)
+                {
+                    Contract.Requires(Target.Completion.IsCompleted, "The target must have already completed in order to notify of completion.");
+                    Common.ContractAssertMonitorStatus(Observable._SubscriptionLock, held: false);
+
+                    // Send completion notification to all observers.
+                    ImmutableList<IObserver<TOutput>> currentObservers;
+                    lock (Observable._SubscriptionLock)
+                    {
+                        // Get the currently registered set of observers. Then, if we're being called due to the target 
+                        // block failing from an unexpected exception, reset the observer state so that subsequent 
+                        // subscribed observers will get a new target block.  Finally clear out our observer list.
+                        currentObservers = Observers;
+                        if (targetException != null) Observable.ResetObserverState();
+                        Observers = ImmutableList<IObserver<TOutput>>.Empty;
+                    }
+
+                    // If there are any observers to complete...
+                    if (currentObservers.Count > 0)
+                    {
+                        // Determine if we should fault or complete the observers
+                        Exception error = targetException ?? Observable.GetCompletionError();
+                        try
+                        {
+                            // Do it.
+                            if (error != null)
+                            {
+                                foreach (IObserver<TOutput> observer in currentObservers) observer.OnError(error);
+                            }
+                            else
+                            {
+                                foreach (IObserver<TOutput> observer in currentObservers) observer.OnCompleted();
+                            }
+                        }
+                        catch (Exception exc)
+                        {
+                            // If an observer throws an exception at this point (which it shouldn't do),
+                            // we have little recourse but to let that exception propagate.  Since allowing it to
+                            // propagate here would just result in it getting eaten by the owning task,
+                            // we instead have it propagate on the thread pool.
+                            Common.ThrowAsync(exc);
+                        }
+                    }
+                }
+            }
+        }
+        #endregion
+
+        #region AsObserver
+        /// <summary>Creates a new <see cref="System.IObserver{TInput}"/> abstraction over the <see cref="ITargetBlock{TInput}"/>.</summary>
+        /// <typeparam name="TInput">Specifies the type of input accepted by the target block.</typeparam>
+        /// <param name="target">The target to wrap.</param>
+        /// <returns>An observer that wraps the target block.</returns>
+        public static IObserver<TInput> AsObserver<TInput>(this ITargetBlock<TInput> target)
+        {
+            if (target == null) throw new ArgumentNullException("target");
+            Contract.EndContractBlock();
+            return new TargetObserver<TInput>(target);
+        }
+
+        /// <summary>Provides an observer wrapper for a target block.</summary>
+        [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+        private sealed class TargetObserver<TInput> : IObserver<TInput>, IDebuggerDisplay
+        {
+            /// <summary>The wrapped target.</summary>
+            private readonly ITargetBlock<TInput> _target;
+
+            /// <summary>Initializes the observer.</summary>
+            /// <param name="target">The target to wrap.</param>
+            internal TargetObserver(ITargetBlock<TInput> target)
+            {
+                Contract.Requires(target != null, "A target to observe is required.");
+                _target = target;
+            }
+
+            /// <summary>Sends the value to the observer.</summary>
+            /// <param name="value">The value to send.</param>
+            void IObserver<TInput>.OnNext(TInput value)
+            {
+                // Send the value asynchronously...
+                Task<bool> task = SendAsyncToTarget(value);
+
+                // And block until it's received.
+                task.GetAwaiter().GetResult(); // propagate original (non-aggregated) exception
+            }
+
+            /// <summary>Completes the target.</summary>
+            void IObserver<TInput>.OnCompleted()
+            {
+                _target.Complete();
+            }
+
+            /// <summary>Forwards the error to the target.</summary>
+            /// <param name="error">The exception to forward.</param>
+            void IObserver<TInput>.OnError(Exception error)
+            {
+                _target.Fault(error);
+            }
+
+            /// <summary>Sends a value to the underlying target asynchronously.</summary>
+            /// <param name="value">The value to send.</param>
+            /// <returns>A Task{bool} to wait on.</returns>
+            internal Task<bool> SendAsyncToTarget(TInput value)
+            {
+                return _target.SendAsync(value);
+            }
+
+            /// <summary>The data to display in the debugger display attribute.</summary>
+            [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+            private object DebuggerDisplayContent
+            {
+                get
+                {
+                    var displayTarget = _target as IDebuggerDisplay;
+                    return string.Format("Block=\"{0}\"",
+                        displayTarget != null ? displayTarget.Content : _target);
+                }
+            }
+            /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+            object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+        }
+        #endregion
+
+        #region NullTarget
+        /// <summary>
+        /// Gets a target block that synchronously accepts all messages offered to it and drops them.
+        /// </summary>
+        /// <typeparam name="TInput">The type of the messages this block can accept.</typeparam>
+        /// <returns>A <see cref="T:System.Threading.Tasks.Dataflow.ITargetBlock`1"/> that accepts and subsequently drops all offered messages.</returns>
+        public static ITargetBlock<TInput> NullTarget<TInput>()
+        {
+            return new NullTargetBlock<TInput>();
+        }
+
+        /// <summary>
+        /// Target block that synchronously accepts all messages offered to it and drops them.
+        /// </summary>
+        /// <typeparam name="TInput">The type of the messages this block can accept.</typeparam>
+        private class NullTargetBlock<TInput> : ITargetBlock<TInput>
+        {
+            private Task _completion;
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+            DataflowMessageStatus ITargetBlock<TInput>.OfferMessage(DataflowMessageHeader messageHeader, TInput messageValue, ISourceBlock<TInput> source, Boolean consumeToAccept)
+            {
+                if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+                Contract.EndContractBlock();
+
+                // If the source requires an explicit synchronous consumption, do it
+                if (consumeToAccept)
+                {
+                    if (source == null) throw new ArgumentException(SR.Argument_CantConsumeFromANullSource, "consumeToAccept");
+                    bool messageConsumed;
+
+                    // If the source throws during this call, let the exception propagate back to the source
+                    source.ConsumeMessage(messageHeader, this, out messageConsumed);
+                    if (!messageConsumed) return DataflowMessageStatus.NotAvailable;
+                }
+
+                // Always tell the source the message has been accepted
+                return DataflowMessageStatus.Accepted;
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+            void IDataflowBlock.Complete() { } // No-op
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+            void IDataflowBlock.Fault(Exception exception) { } // No-op
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+            Task IDataflowBlock.Completion
+            {
+                get { return LazyInitializer.EnsureInitialized(ref _completion, () => new TaskCompletionSource<VoidResult>().Task); }
+            }
+        }
+        #endregion
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowBlockOptions.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowBlockOptions.cs
new file mode 100644 (file)
index 0000000..44532da
--- /dev/null
@@ -0,0 +1,414 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// DataflowBlockOptions.cs
+//
+//
+// DataflowBlockOptions types for configuring dataflow blocks
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System;
+using System.Diagnostics;
+using System.Threading.Tasks;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>
+    /// Provides options used to configure the processing performed by dataflow blocks.
+    /// </summary>
+    /// <remarks>
+    /// <see cref="DataflowBlockOptions"/> is mutable and can be configured through its properties.  
+    /// When specific configuration options are not set, the following defaults are used:
+    /// <list type="table">
+    ///     <listheader>
+    ///         <term>Options</term>
+    ///         <description>Default</description>
+    ///     </listheader>
+    ///     <item>
+    ///         <term>TaskScheduler</term>
+    ///         <description><see cref="System.Threading.Tasks.TaskScheduler.Default"/></description>
+    ///     </item>
+    ///     <item>
+    ///         <term>MaxMessagesPerTask</term>
+    ///         <description>DataflowBlockOptions.Unbounded (-1)</description>
+    ///     </item>
+    ///     <item>
+    ///         <term>CancellationToken</term>
+    ///         <description><see cref="System.Threading.CancellationToken.None"/></description>
+    ///     </item>
+    ///     <item>
+    ///         <term>BoundedCapacity</term>
+    ///         <description>DataflowBlockOptions.Unbounded (-1)</description>
+    ///     </item>
+    ///     <item>
+    ///         <term>NameFormat</term>
+    ///         <description>"{0} Id={1}"</description>
+    ///     </item>
+    /// </list>
+    /// Dataflow blocks capture the state of the options at their construction.  Subsequent changes
+    /// to the provided <see cref="DataflowBlockOptions"/> instance should not affect the behavior
+    /// of a dataflow block.
+    /// </remarks>
+    [DebuggerDisplay("TaskScheduler = {TaskScheduler}, MaxMessagesPerTask = {MaxMessagesPerTask}, BoundedCapacity = {BoundedCapacity}")]
+    public class DataflowBlockOptions
+    {
+        /// <summary>
+        /// A constant used to specify an unlimited quantity for <see cref="DataflowBlockOptions"/> members 
+        /// that provide an upper bound. This field is constant.
+        /// </summary>
+        public const Int32 Unbounded = -1;
+
+        /// <summary>The scheduler to use for scheduling tasks to process messages.</summary>
+        private TaskScheduler _taskScheduler = TaskScheduler.Default;
+        /// <summary>The cancellation token to monitor for cancellation requests.</summary>
+        private CancellationToken _cancellationToken = CancellationToken.None;
+        /// <summary>The maximum number of messages that may be processed per task.</summary>
+        private Int32 _maxMessagesPerTask = Unbounded;
+        /// <summary>The maximum number of messages that may be buffered by the block.</summary>
+        private Int32 _boundedCapacity = Unbounded;
+        /// <summary>The name format to use for creating a name for a block.</summary>
+        private string _nameFormat = "{0} Id={1}"; // see NameFormat property for a description of format items
+
+        /// <summary>A default instance of <see cref="DataflowBlockOptions"/>.</summary>
+        /// <remarks>
+        /// Do not change the values of this instance.  It is shared by all of our blocks when no options are provided by the user.
+        /// </remarks>
+        internal static readonly DataflowBlockOptions Default = new DataflowBlockOptions();
+
+        /// <summary>Returns this <see cref="DataflowBlockOptions"/> instance if it's the default instance or else a cloned instance.</summary>
+        /// <returns>An instance of the options that may be cached by the block.</returns>
+        internal DataflowBlockOptions DefaultOrClone()
+        {
+            return (this == Default) ?
+                this :
+                new DataflowBlockOptions
+                {
+                    TaskScheduler = this.TaskScheduler,
+                    CancellationToken = this.CancellationToken,
+                    MaxMessagesPerTask = this.MaxMessagesPerTask,
+                    BoundedCapacity = this.BoundedCapacity,
+                    NameFormat = this.NameFormat
+                };
+        }
+
+        /// <summary>Initializes the <see cref="DataflowBlockOptions"/>.</summary>
+        public DataflowBlockOptions() { }
+
+        /// <summary>Gets or sets the <see cref="System.Threading.Tasks.TaskScheduler"/> to use for scheduling tasks.</summary>
+        public TaskScheduler TaskScheduler
+        {
+            get { return _taskScheduler; }
+            set
+            {
+                Debug.Assert(this != Default, "Default instance is supposed to be immutable.");
+                if (value == null) throw new ArgumentNullException("value");
+                _taskScheduler = value;
+            }
+        }
+
+        /// <summary>Gets or sets the <see cref="System.Threading.CancellationToken"/> to monitor for cancellation requests.</summary>
+        public CancellationToken CancellationToken
+        {
+            get { return _cancellationToken; }
+            set
+            {
+                Debug.Assert(this != Default, "Default instance is supposed to be immutable.");
+                _cancellationToken = value;
+            }
+        }
+
+        /// <summary>Gets or sets the maximum number of messages that may be processed per task.</summary>
+        public Int32 MaxMessagesPerTask
+        {
+            get { return _maxMessagesPerTask; }
+            set
+            {
+                Debug.Assert(this != Default, "Default instance is supposed to be immutable.");
+                if (value < 1 && value != Unbounded) throw new ArgumentOutOfRangeException("value");
+                _maxMessagesPerTask = value;
+            }
+        }
+
+        /// <summary>Gets a MaxMessagesPerTask value that may be used for comparison purposes.</summary>
+        /// <returns>The maximum value, usable for comparison purposes.</returns>
+        /// <remarks>Unlike MaxMessagesPerTask, this property will always return a positive value.</remarks>
+        internal Int32 ActualMaxMessagesPerTask
+        {
+            get { return (_maxMessagesPerTask == Unbounded) ? Int32.MaxValue : _maxMessagesPerTask; }
+        }
+
+        /// <summary>Gets or sets the maximum number of messages that may be buffered by the block.</summary>
+        public Int32 BoundedCapacity
+        {
+            get { return _boundedCapacity; }
+            set
+            {
+                Debug.Assert(this != Default, "Default instance is supposed to be immutable.");
+                if (value < 1 && value != Unbounded) throw new ArgumentOutOfRangeException("value");
+                _boundedCapacity = value;
+            }
+        }
+
+        /// <summary>
+        /// Gets or sets the format string to use when a block is queried for its name.
+        /// </summary>
+        /// <remarks>
+        /// The name format may contain up to two format items. {0} will be substituted 
+        /// with the block's name. {1} will be substituted with the block's Id, as is 
+        /// returned from the block's Completion.Id property.
+        /// </remarks>
+        public string NameFormat
+        {
+            get { return _nameFormat; }
+            set
+            {
+                Debug.Assert(this != Default, "Default instance is supposed to be immutable.");
+                if (value == null) throw new ArgumentNullException("value");
+                _nameFormat = value;
+            }
+        }
+    }
+
+    /// <summary>
+    /// Provides options used to configure the processing performed by dataflow blocks that
+    /// process each message through the invocation of a user-provided delegate, blocks such
+    /// as <see cref="ActionBlock{T}"/> and <see cref="TransformBlock{TInput,TOutput}"/>.
+    /// </summary>
+    /// <remarks>
+    /// <see cref="ExecutionDataflowBlockOptions"/> is mutable and can be configured through its properties.  
+    /// When specific configuration options are not set, the following defaults are used:
+    /// <list type="table">
+    ///     <listheader>
+    ///         <term>Options</term>
+    ///         <description>Default</description>
+    ///     </listheader>
+    ///     <item>
+    ///         <term>TaskScheduler</term>
+    ///         <description><see cref="System.Threading.Tasks.TaskScheduler.Default"/></description>
+    ///     </item>
+    ///     <item>
+    ///         <term>CancellationToken</term>
+    ///         <description><see cref="System.Threading.CancellationToken.None"/></description>
+    ///     </item>
+    ///     <item>
+    ///         <term>MaxMessagesPerTask</term>
+    ///         <description>DataflowBlockOptions.Unbounded (-1)</description>
+    ///     </item>
+    ///     <item>
+    ///         <term>BoundedCapacity</term>
+    ///         <description>DataflowBlockOptions.Unbounded (-1)</description>
+    ///     </item>
+    ///     <item>
+    ///         <term>NameFormat</term>
+    ///         <description>"{0} Id={1}"</description>
+    ///     </item>
+    ///     <item>
+    ///         <term>MaxDegreeOfParallelism</term>
+    ///         <description>1</description>
+    ///     </item>
+    ///     <item>
+    ///         <term>SingleProducerConstrained</term>
+    ///         <description>false</description>
+    ///     </item>
+    /// </list>
+    /// Dataflow block captures the state of the options at their construction.  Subsequent changes
+    /// to the provided <see cref="ExecutionDataflowBlockOptions"/> instance should not affect the behavior
+    /// of a dataflow block.
+    /// </remarks>
+    [DebuggerDisplay("TaskScheduler = {TaskScheduler}, MaxMessagesPerTask = {MaxMessagesPerTask}, BoundedCapacity = {BoundedCapacity}, MaxDegreeOfParallelism = {MaxDegreeOfParallelism}")]
+    public class ExecutionDataflowBlockOptions : DataflowBlockOptions
+    {
+        /// <summary>A default instance of <see cref="DataflowBlockOptions"/>.</summary>
+        /// <remarks>
+        /// Do not change the values of this instance.  It is shared by all of our blocks when no options are provided by the user.
+        /// </remarks>
+        internal new static readonly ExecutionDataflowBlockOptions Default = new ExecutionDataflowBlockOptions();
+
+        /// <summary>Returns this <see cref="ExecutionDataflowBlockOptions"/> instance if it's the default instance or else a cloned instance.</summary>
+        /// <returns>An instance of the options that may be cached by the block.</returns>
+        internal new ExecutionDataflowBlockOptions DefaultOrClone()
+        {
+            return (this == Default) ?
+                this :
+                new ExecutionDataflowBlockOptions
+                {
+                    TaskScheduler = this.TaskScheduler,
+                    CancellationToken = this.CancellationToken,
+                    MaxMessagesPerTask = this.MaxMessagesPerTask,
+                    BoundedCapacity = this.BoundedCapacity,
+                    NameFormat = this.NameFormat,
+                    MaxDegreeOfParallelism = this.MaxDegreeOfParallelism,
+                    SingleProducerConstrained = this.SingleProducerConstrained
+                };
+        }
+
+        /// <summary>The maximum number of tasks that may be used concurrently to process messages.</summary>
+        private Int32 _maxDegreeOfParallelism = 1;
+        /// <summary>Whether the code using this block will only ever have a single producer accessing the block at any given time.</summary>
+        private Boolean _singleProducerConstrained = false;
+
+        /// <summary>Initializes the <see cref="ExecutionDataflowBlockOptions"/>.</summary>
+        public ExecutionDataflowBlockOptions() { }
+
+        /// <summary>Gets the maximum number of messages that may be processed by the block concurrently.</summary>
+        public Int32 MaxDegreeOfParallelism
+        {
+            get { return _maxDegreeOfParallelism; }
+            set
+            {
+                Debug.Assert(this != Default, "Default instance is supposed to be immutable.");
+                if (value < 1 && value != Unbounded) throw new ArgumentOutOfRangeException("value");
+                _maxDegreeOfParallelism = value;
+            }
+        }
+
+        /// <summary>
+        /// Gets whether code using the dataflow block is constrained to one producer at a time.
+        /// </summary>
+        /// <remarks>
+        /// This property defaults to false, such that the block may be used by multiple
+        /// producers concurrently.  This property should only be set to true if the code
+        /// using the block can guarantee that it will only ever be used by one producer
+        /// (e.g. a source linked to the block) at a time, meaning that methods like Post, 
+        /// Complete, Fault, and OfferMessage will never be called concurrently.  Some blocks 
+        /// may choose to capitalize on the knowledge that there will only be one producer at a time
+        /// in order to provide better performance.
+        /// </remarks>
+        public Boolean SingleProducerConstrained
+        {
+            get { return _singleProducerConstrained; }
+            set
+            {
+                Debug.Assert(this != Default, "Default instance is supposed to be immutable.");
+                _singleProducerConstrained = value;
+            }
+        }
+
+        /// <summary>Gets a MaxDegreeOfParallelism value that may be used for comparison purposes.</summary>
+        /// <returns>The maximum value, usable for comparison purposes.</returns>
+        /// <remarks>Unlike MaxDegreeOfParallelism, this property will always return a positive value.</remarks>
+        internal Int32 ActualMaxDegreeOfParallelism
+        {
+            get { return (_maxDegreeOfParallelism == Unbounded) ? Int32.MaxValue : _maxDegreeOfParallelism; }
+        }
+
+        /// <summary>Gets whether these dataflow block options allow for parallel execution.</summary>
+        internal Boolean SupportsParallelExecution { get { return _maxDegreeOfParallelism == Unbounded || _maxDegreeOfParallelism > 1; } }
+    }
+
+    /// <summary>
+    /// Provides options used to configure the processing performed by dataflow blocks that
+    /// group together multiple messages, blocks such as <see cref="JoinBlock{T1,T2}"/> and 
+    /// <see cref="BatchBlock{T}"/>.
+    /// </summary>
+    /// <remarks>
+    /// <see cref="GroupingDataflowBlockOptions"/> is mutable and can be configured through its properties.  
+    /// When specific configuration options are not set, the following defaults are used:
+    /// <list type="table">
+    ///     <listheader>
+    ///         <term>Options</term>
+    ///         <description>Default</description>
+    ///     </listheader>
+    ///     <item>
+    ///         <term>TaskScheduler</term>
+    ///         <description><see cref="System.Threading.Tasks.TaskScheduler.Default"/></description>
+    ///     </item>
+    ///     <item>
+    ///         <term>CancellationToken</term>
+    ///         <description><see cref="System.Threading.CancellationToken.None"/></description>
+    ///     </item>
+    ///     <item>
+    ///         <term>MaxMessagesPerTask</term>
+    ///         <description>DataflowBlockOptions.Unbounded (-1)</description>
+    ///     </item>
+    ///     <item>
+    ///         <term>BoundedCapacity</term>
+    ///         <description>DataflowBlockOptions.Unbounded (-1)</description>
+    ///     </item>
+    ///     <item>
+    ///         <term>NameFormat</term>
+    ///         <description>"{0} Id={1}"</description>
+    ///     </item>
+    ///     <item>
+    ///         <term>MaxNumberOfGroups</term>
+    ///         <description>GroupingDataflowBlockOptions.Unbounded (-1)</description>
+    ///     </item>
+    ///     <item>
+    ///         <term>Greedy</term>
+    ///         <description>true</description>
+    ///     </item>
+    /// </list>
+    /// Dataflow block capture the state of the options at their construction.  Subsequent changes
+    /// to the provided <see cref="GroupingDataflowBlockOptions"/> instance should not affect the behavior
+    /// of a dataflow block.
+    /// </remarks>
+    [DebuggerDisplay("TaskScheduler = {TaskScheduler}, MaxMessagesPerTask = {MaxMessagesPerTask}, BoundedCapacity = {BoundedCapacity}, Greedy = {Greedy}, MaxNumberOfGroups = {MaxNumberOfGroups}")]
+    public class GroupingDataflowBlockOptions : DataflowBlockOptions
+    {
+        /// <summary>A default instance of <see cref="DataflowBlockOptions"/>.</summary>
+        /// <remarks>
+        /// Do not change the values of this instance.  It is shared by all of our blocks when no options are provided by the user.
+        /// </remarks>
+        internal new static readonly GroupingDataflowBlockOptions Default = new GroupingDataflowBlockOptions();
+
+        /// <summary>Returns this <see cref="GroupingDataflowBlockOptions"/> instance if it's the default instance or else a cloned instance.</summary>
+        /// <returns>An instance of the options that may be cached by the block.</returns>
+        internal new GroupingDataflowBlockOptions DefaultOrClone()
+        {
+            return (this == Default) ?
+                this :
+                new GroupingDataflowBlockOptions
+                {
+                    TaskScheduler = this.TaskScheduler,
+                    CancellationToken = this.CancellationToken,
+                    MaxMessagesPerTask = this.MaxMessagesPerTask,
+                    BoundedCapacity = this.BoundedCapacity,
+                    NameFormat = this.NameFormat,
+                    Greedy = this.Greedy,
+                    MaxNumberOfGroups = this.MaxNumberOfGroups
+                };
+        }
+
+        /// <summary>Whether the block should greedily consume offered messages.</summary>
+        private Boolean _greedy = true;
+        /// <summary>The maximum number of groups that should be generated by the block.</summary>
+        private Int64 _maxNumberOfGroups = Unbounded;
+
+        /// <summary>Initializes the <see cref="GroupingDataflowBlockOptions"/>.</summary>
+        public GroupingDataflowBlockOptions() { }
+
+        /// <summary>Gets or sets the Boolean value to use to determine whether to greedily consume offered messages.</summary>
+        public Boolean Greedy
+        {
+            get { return _greedy; }
+            set
+            {
+                Debug.Assert(this != Default, "Default instance is supposed to be immutable.");
+                _greedy = value;
+            }
+        }
+
+        /// <summary>Gets or sets the maximum number of groups that should be generated by the block.</summary>
+        public Int64 MaxNumberOfGroups
+        {
+            get { return _maxNumberOfGroups; }
+            set
+            {
+                Debug.Assert(this != Default, "Default instance is supposed to be immutable.");
+                if (value <= 0 && value != Unbounded) throw new ArgumentOutOfRangeException("value");
+                _maxNumberOfGroups = value;
+            }
+        }
+
+        /// <summary>Gets a MaxNumberOfGroups value that may be used for comparison purposes.</summary>
+        /// <returns>The maximum value, usable for comparison purposes.</returns>
+        /// <remarks>Unlike MaxNumberOfGroups, this property will always return a positive value.</remarks>
+        internal Int64 ActualMaxNumberOfGroups
+        {
+            get { return (_maxNumberOfGroups == Unbounded) ? Int64.MaxValue : _maxNumberOfGroups; }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowLinkOptions.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowLinkOptions.cs
new file mode 100644 (file)
index 0000000..079da23
--- /dev/null
@@ -0,0 +1,113 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// DataflowLinkOptions.cs
+//
+//
+// DataflowLinkOptions type for configuring links between dataflow blocks
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System;
+using System.Diagnostics;
+using System.Threading.Tasks;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>
+    /// Provides options used to configure a link between dataflow blocks.
+    /// </summary>
+    /// <remarks>
+    /// <see cref="DataflowLinkOptions"/> is mutable and can be configured through its properties.  
+    /// When specific configuration options are not set, the following defaults are used:
+    /// <list type="table">
+    ///     <listheader>
+    ///         <term>Options</term>
+    ///         <description>Default</description>
+    ///     </listheader>
+    ///     <item>
+    ///         <term>PropagateCompletion</term>
+    ///         <description>False</description>
+    ///     </item>
+    ///     <item>
+    ///         <term>MaxMessages</term>
+    ///         <description>DataflowBlockOptions.Unbounded (-1)</description>
+    ///     </item>
+    ///     <item>
+    ///         <term>Append</term>
+    ///         <description>True</description>
+    ///     </item>
+    /// </list>
+    /// Dataflow blocks capture the state of the options at linking. Subsequent changes to the provided
+    /// <see cref="DataflowLinkOptions"/> instance should not affect the behavior of a link.
+    /// </remarks>
+    [DebuggerDisplay("PropagateCompletion = {PropagateCompletion}, MaxMessages = {MaxMessages}, Append = {Append}")]
+    public class DataflowLinkOptions
+    {
+        /// <summary>
+        /// A constant used to specify an unlimited quantity for <see cref="DataflowLinkOptions"/> members 
+        /// that provide an upper bound. This field is a constant tied to <see cref="DataflowLinkOptions.Unbounded"/>.
+        /// </summary>
+        internal const Int32 Unbounded = DataflowBlockOptions.Unbounded;
+
+        /// <summary>Whether the linked target will have completion and faulting notification propagated to it automatically.</summary>
+        private Boolean _propagateCompletion = false;
+        /// <summary>The maximum number of messages that may be consumed across the link.</summary>
+        private Int32 _maxNumberOfMessages = Unbounded;
+        /// <summary>Whether the link should be appended to the source’s list of links, or whether it should be prepended.</summary>
+        private Boolean _append = true;
+
+        /// <summary>A default instance of <see cref="DataflowLinkOptions"/>.</summary>
+        /// <remarks>
+        /// Do not change the values of this instance.  It is shared by all of our blocks when no options are provided by the user.
+        /// </remarks>
+        internal static readonly DataflowLinkOptions Default = new DataflowLinkOptions();
+
+        /// <summary>A cached instance of <see cref="DataflowLinkOptions"/>.</summary>
+        /// <remarks>
+        /// Do not change the values of this instance.  It is shared by all of our blocks that need to unlink after one message has been consumed.
+        /// </remarks>
+        internal static readonly DataflowLinkOptions UnlinkAfterOneAndPropagateCompletion = new DataflowLinkOptions() { MaxMessages = 1, PropagateCompletion = true };
+
+        /// <summary>Initializes the <see cref="DataflowLinkOptions"/>.</summary>
+        public DataflowLinkOptions()
+        {
+        }
+
+        /// <summary>Gets or sets whether the linked target will have completion and faulting notification propagated to it automatically.</summary>
+        public Boolean PropagateCompletion
+        {
+            get { return _propagateCompletion; }
+            set
+            {
+                Debug.Assert(this != Default && this != UnlinkAfterOneAndPropagateCompletion, "Default and UnlinkAfterOneAndPropagateCompletion instances are supposed to be immutable.");
+                _propagateCompletion = value;
+            }
+        }
+
+        /// <summary>Gets or sets the maximum number of messages that may be consumed across the link.</summary>
+        public Int32 MaxMessages
+        {
+            get { return _maxNumberOfMessages; }
+            set
+            {
+                Debug.Assert(this != Default && this != UnlinkAfterOneAndPropagateCompletion, "Default and UnlinkAfterOneAndPropagateCompletion instances are supposed to be immutable.");
+                if (value < 1 && value != Unbounded) throw new ArgumentOutOfRangeException("value");
+                _maxNumberOfMessages = value;
+            }
+        }
+
+        /// <summary>Gets or sets whether the link should be appended to the source’s list of links, or whether it should be prepended.</summary>
+        public Boolean Append
+        {
+            get { return _append; }
+            set
+            {
+                Debug.Assert(this != Default && this != UnlinkAfterOneAndPropagateCompletion, "Default and UnlinkAfterOneAndPropagateCompletion instances are supposed to be immutable.");
+                _append = value;
+            }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowMessageHeader.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowMessageHeader.cs
new file mode 100644 (file)
index 0000000..a09fe50
--- /dev/null
@@ -0,0 +1,92 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// DataflowMessageHeader.cs
+//
+//
+// A container of data attributes passed between dataflow blocks.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Diagnostics;
+using System.Diagnostics.Contracts;
+using System.Threading.Tasks.Dataflow.Internal;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Provides a container of data attributes for passing between dataflow blocks.</summary>
+    [DebuggerDisplay("Id = {Id}")]
+    public struct DataflowMessageHeader : IEquatable<DataflowMessageHeader>
+    {
+        /// <summary>The message ID. Needs to be unique within the source.</summary>
+        private readonly long _id;
+
+        /// <summary>Initializes the <see cref="DataflowMessageHeader"/> with the specified attributes.</summary>
+        /// <param name="id">The ID of the message. Must be unique within the originating source block. Need not be globally unique.</param>
+        public DataflowMessageHeader(Int64 id)
+        {
+            if (id == default(long)) throw new ArgumentException(SR.Argument_InvalidMessageId, "id");
+            Contract.EndContractBlock();
+
+            _id = id;
+        }
+
+        /// <summary>Gets the validity of the message.</summary>
+        /// <returns>True if the ID of the message is different from 0. False if the ID of the message is 0</returns>
+        public Boolean IsValid { get { return _id != default(long); } }
+
+        /// <summary>Gets the ID of the message within the source.</summary>
+        /// <returns>The ID contained in the <see cref="DataflowMessageHeader"/> instance.</returns>
+        public Int64 Id { get { return _id; } }
+
+        // These overrides are required by the FX API Guidelines.
+        // NOTE: When these overrides are present, the compiler doesn't complain about statements 
+        // like 'if (struct == null) ...' which will result in incorrect behavior at runtime.
+        // The product code should not use them. Instead, it should compare the Id properties.
+        // To verify that, every once in a while, comment out this region and build the product. 
+        #region Comparison Operators
+        /// <summary>Checks two <see cref="DataflowMessageHeader"/> instances for equality by ID without boxing.</summary>
+        /// <param name="other">Another <see cref="DataflowMessageHeader"/> instance.</param>
+        /// <returns>True if the instances are equal. False otherwise.</returns>
+        public bool Equals(DataflowMessageHeader other)
+        {
+            return this == other;
+        }
+
+        /// <summary>Checks boxed <see cref="DataflowMessageHeader"/> instances for equality by ID.</summary>
+        /// <param name="obj">A boxed <see cref="DataflowMessageHeader"/> instance.</param>
+        /// <returns>True if the instances are equal. False otherwise.</returns>
+        public override bool Equals(object obj)
+        {
+            return obj is DataflowMessageHeader && this == (DataflowMessageHeader)obj;
+        }
+
+        /// <summary>Generates a hash code for the <see cref="DataflowMessageHeader"/> instance.</summary>
+        /// <returns>Hash code.</returns>
+        public override int GetHashCode()
+        {
+            return (int)Id;
+        }
+
+        /// <summary>Checks two <see cref="DataflowMessageHeader"/> instances for equality by ID.</summary>
+        /// <param name="left">A <see cref="DataflowMessageHeader"/> instance.</param>
+        /// <param name="right">A <see cref="DataflowMessageHeader"/> instance.</param>
+        /// <returns>True if the instances are equal. False otherwise.</returns>
+        public static bool operator ==(DataflowMessageHeader left, DataflowMessageHeader right)
+        {
+            return left.Id == right.Id;
+        }
+
+        /// <summary>Checks two <see cref="DataflowMessageHeader"/> instances for non-equality by ID.</summary>
+        /// <param name="left">A <see cref="DataflowMessageHeader"/> instance.</param>
+        /// <param name="right">A <see cref="DataflowMessageHeader"/> instance.</param>
+        /// <returns>True if the instances are not equal. False otherwise.</returns>
+        public static bool operator !=(DataflowMessageHeader left, DataflowMessageHeader right)
+        {
+            return left.Id != right.Id;
+        }
+        #endregion
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowMessageStatus.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/DataflowMessageStatus.cs
new file mode 100644 (file)
index 0000000..17a71c2
--- /dev/null
@@ -0,0 +1,47 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// DataflowMessageStatus.cs
+//
+//
+// Status about the propagation of a message.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Represents the status of a <see cref="DataflowMessageHeader"/> when passed between dataflow blocks.</summary>
+    public enum DataflowMessageStatus
+    {
+        /// <summary>
+        /// Indicates that the <see cref="ITargetBlock{TInput}"/> accepted the message.  Once a target has accepted a message, 
+        /// it is wholly owned by the target.
+        /// </summary>
+        Accepted = 0x0,
+
+        /// <summary>
+        /// Indicates that the <see cref="ITargetBlock{TInput}"/> declined the message.  The <see cref="ISourceBlock{TOutput}"/> still owns the message.
+        /// </summary>
+        Declined = 0x1,
+
+        /// <summary>
+        /// Indicates that the <see cref="ITargetBlock{TInput}"/> postponed the message for potential consumption at a later time.  
+        /// The <see cref="ISourceBlock{TOutput}"/> still owns the message.
+        /// </summary>
+        Postponed = 0x2,
+
+        /// <summary>
+        /// Indicates that the <see cref="ITargetBlock{TInput}"/> tried to accept the message from the <see cref="ISourceBlock{TOutput}"/>, but the 
+        /// message was no longer available.
+        /// </summary>
+        NotAvailable = 0x3,
+
+        /// <summary>
+        /// Indicates that the <see cref="ITargetBlock{TInput}"/> declined the message.  The <see cref="ISourceBlock{TOutput}"/> still owns the message.  
+        /// Additionally, the <see cref="ITargetBlock{TInput}"/> will decline all future messages sent by the source.
+        /// </summary>
+        DecliningPermanently = 0x4
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/IDataflowBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/IDataflowBlock.cs
new file mode 100644 (file)
index 0000000..d917770
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// IDataflowBlock.cs
+//
+//
+// The base interface for all dataflow blocks.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Represents a dataflow block.</summary>
+    public interface IDataflowBlock
+    {
+        // IMPLEMENT IMPLICITLY
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        Task Completion { get; }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        void Complete();
+
+        // IMPLEMENT EXPLICITLY
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void Fault(Exception exception);
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/IPropagatorBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/IPropagatorBlock.cs
new file mode 100644 (file)
index 0000000..d8a8335
--- /dev/null
@@ -0,0 +1,22 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// IPropagatorBlock.cs
+//
+//
+// The base interface for all propagator blocks.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Represents a dataflow block that is both a target for data and a source of data.</summary>
+    /// <typeparam name="TInput">Specifies the type of data accepted by the <see cref="IPropagatorBlock{TInput,TOutput}"/>.</typeparam>
+    /// <typeparam name="TOutput">Specifies the type of data supplied by the <see cref="IPropagatorBlock{TInput,TOutput}"/>.</typeparam>
+    public interface IPropagatorBlock<in TInput, out TOutput> : ITargetBlock<TInput>, ISourceBlock<TOutput>
+    {
+        // No additional members beyond those inherited from ITargetBlock<TInput> and ISourceBlock<TOutput>
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/IReceivableSourceBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/IReceivableSourceBlock.cs
new file mode 100644 (file)
index 0000000..15688cb
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// IReceivableSourceBlock.cs
+//
+//
+// The base interface for all source blocks.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Represents a dataflow block that supports receiving of messages without linking.</summary>
+    /// <typeparam name="TOutput">Specifies the type of data supplied by the <see cref="IReceivableSourceBlock{TOutput}"/>.</typeparam>
+    public interface IReceivableSourceBlock<TOutput> : ISourceBlock<TOutput>
+    {
+        // IMPLEMENT IMPLICITLY
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+        bool TryReceive(Predicate<TOutput> filter, out TOutput item);
+
+        // IMPLEMENT IMPLICITLY IF BLOCK SUPPORTS RECEIVING MORE THAN ONE ITEM, OTHERWISE EXPLICITLY
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+        bool TryReceiveAll(out IList<TOutput> items);
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/ISourceBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/ISourceBlock.cs
new file mode 100644 (file)
index 0000000..34f904c
--- /dev/null
@@ -0,0 +1,39 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// ISourceBlock.cs
+//
+//
+// The base interface for all source blocks.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Represents a dataflow block that is a source of data.</summary>
+    /// <typeparam name="TOutput">Specifies the type of data supplied by the <see cref="ISourceBlock{TOutput}"/>.</typeparam>
+    public interface ISourceBlock<out TOutput> : IDataflowBlock
+    {
+        // IMPLEMENT IMPLICITLY
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+        IDisposable LinkTo(ITargetBlock<TOutput> target, DataflowLinkOptions linkOptions);
+
+        // IMPLEMENT EXPLICITLY
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+        [SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "2#")]
+        TOutput ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target, out Boolean messageConsumed);
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+        Boolean ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target);
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+        void ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target);
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/ITargetBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Base/ITargetBlock.cs
new file mode 100644 (file)
index 0000000..4d2614c
--- /dev/null
@@ -0,0 +1,24 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// ITargetBlock.cs
+//
+//
+// The base interface for all target blocks.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Represents a dataflow block that is a target for data.</summary>
+    /// <typeparam name="TInput">Specifies the type of data accepted by the <see cref="ITargetBlock{TInput}"/>.</typeparam>
+    public interface ITargetBlock<in TInput> : IDataflowBlock
+    {
+        // IMPLEMENT EXPLICITLY
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+        DataflowMessageStatus OfferMessage(DataflowMessageHeader messageHeader, TInput messageValue, ISourceBlock<TInput> source, Boolean consumeToAccept);
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/ActionBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/ActionBlock.cs
new file mode 100644 (file)
index 0000000..67824a9
--- /dev/null
@@ -0,0 +1,383 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// ActionBlock.cs
+//
+//
+// A target block that executes an action for each message.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Runtime.CompilerServices;
+using System.Threading.Tasks.Dataflow.Internal;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Provides a dataflow block that invokes a provided <see cref="System.Action{T}"/> delegate for every data element received.</summary>
+    /// <typeparam name="TInput">Specifies the type of data operated on by this <see cref="ActionBlock{T}"/>.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(ActionBlock<>.DebugView))]
+    public sealed class ActionBlock<TInput> : ITargetBlock<TInput>, IDebuggerDisplay
+    {
+        /// <summary>The core implementation of this message block when in default mode.</summary>
+        private readonly TargetCore<TInput> _defaultTarget;
+        /// <summary>The core implementation of this message block when in SPSC mode.</summary>
+        private readonly SpscTargetCore<TInput> _spscTarget;
+
+        /// <summary>Initializes the <see cref="ActionBlock{T}"/> with the specified <see cref="System.Action{T}"/>.</summary>
+        /// <param name="action">The action to invoke with each data element received.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action"/> is null (Nothing in Visual Basic).</exception>
+        public ActionBlock(Action<TInput> action) :
+            this((Delegate)action, ExecutionDataflowBlockOptions.Default)
+        { }
+
+        /// <summary>Initializes the <see cref="ActionBlock{T}"/> with the specified <see cref="System.Action{T}"/> and <see cref="ExecutionDataflowBlockOptions"/>.</summary>
+        /// <param name="action">The action to invoke with each data element received.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="ActionBlock{T}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        public ActionBlock(Action<TInput> action, ExecutionDataflowBlockOptions dataflowBlockOptions) :
+            this((Delegate)action, dataflowBlockOptions)
+        { }
+
+        /// <summary>Initializes the <see cref="ActionBlock{T}"/> with the specified <see cref="System.Func{T,Task}"/>.</summary>
+        /// <param name="action">The action to invoke with each data element received.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action"/> is null (Nothing in Visual Basic).</exception>
+        public ActionBlock(Func<TInput, Task> action) :
+            this((Delegate)action, ExecutionDataflowBlockOptions.Default)
+        { }
+
+        /// <summary>Initializes the <see cref="ActionBlock{T}"/> with the specified <see cref="System.Func{T,Task}"/> and <see cref="ExecutionDataflowBlockOptions"/>.</summary>
+        /// <param name="action">The action to invoke with each data element received.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="ActionBlock{T}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        public ActionBlock(Func<TInput, Task> action, ExecutionDataflowBlockOptions dataflowBlockOptions) :
+            this((Delegate)action, dataflowBlockOptions)
+        { }
+
+        /// <summary>Initializes the <see cref="ActionBlock{T}"/> with the specified delegate and options.</summary>
+        /// <param name="action">The action to invoke with each data element received.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="ActionBlock{T}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="action"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        private ActionBlock(Delegate action, ExecutionDataflowBlockOptions dataflowBlockOptions)
+        {
+            // Validate arguments
+            if (action == null) throw new ArgumentNullException("action");
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+            Contract.Ensures((_spscTarget != null) ^ (_defaultTarget != null), "One and only one of the two targets must be non-null after construction");
+            Contract.EndContractBlock();
+
+            // Ensure we have options that can't be changed by the caller
+            dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone();
+
+            // Based on the mode, initialize the target.  If the user specifies SingleProducerConstrained,
+            // we'll try to employ an optimized mode under a limited set of circumstances.
+            var syncAction = action as Action<TInput>;
+            if (syncAction != null &&
+                dataflowBlockOptions.SingleProducerConstrained &&
+                dataflowBlockOptions.MaxDegreeOfParallelism == 1 &&
+                !dataflowBlockOptions.CancellationToken.CanBeCanceled &&
+                dataflowBlockOptions.BoundedCapacity == DataflowBlockOptions.Unbounded)
+            {
+                // Initialize the SPSC fast target to handle the bulk of the processing.
+                // The SpscTargetCore is only supported when BoundedCapacity, CancellationToken,
+                // and MaxDOP are all their default values.  It's also only supported for sync
+                // delegates and not for async delegates.
+                _spscTarget = new SpscTargetCore<TInput>(this, syncAction, dataflowBlockOptions);
+            }
+            else
+            {
+                // Initialize the TargetCore which handles the bulk of the processing.
+                // The default target core can handle all options and delegate flavors.
+
+                if (syncAction != null) // sync
+                {
+                    _defaultTarget = new TargetCore<TInput>(this,
+                        messageWithId => ProcessMessage(syncAction, messageWithId),
+                        null, dataflowBlockOptions, TargetCoreOptions.RepresentsBlockCompletion);
+                }
+                else // async
+                {
+                    var asyncAction = action as Func<TInput, Task>;
+                    Debug.Assert(asyncAction != null, "action is of incorrect delegate type");
+                    _defaultTarget = new TargetCore<TInput>(this,
+                        messageWithId => ProcessMessageWithTask(asyncAction, messageWithId),
+                        null, dataflowBlockOptions, TargetCoreOptions.RepresentsBlockCompletion | TargetCoreOptions.UsesAsyncCompletion);
+                }
+
+                // Handle async cancellation requests by declining on the target
+                Common.WireCancellationToComplete(
+                    dataflowBlockOptions.CancellationToken, Completion, state => ((TargetCore<TInput>)state).Complete(exception: null, dropPendingMessages: true), _defaultTarget);
+            }
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCreated(this, dataflowBlockOptions);
+            }
+#endif
+        }
+
+        /// <summary>Processes the message with a user-provided action.</summary>
+        /// <param name="action">The action to use to process the message.</param>
+        /// <param name="messageWithId">The message to be processed.</param>
+        private void ProcessMessage(Action<TInput> action, KeyValuePair<TInput, long> messageWithId)
+        {
+            try
+            {
+                action(messageWithId.Key);
+            }
+            catch (Exception exc)
+            {
+                // If this exception represents cancellation, swallow it rather than shutting down the block.
+                if (!Common.IsCooperativeCancellation(exc)) throw;
+            }
+            finally
+            {
+                // We're done synchronously processing an element, so reduce the bounding count
+                // that was incrementing when this element was enqueued.
+                if (_defaultTarget.IsBounded) _defaultTarget.ChangeBoundingCount(-1);
+            }
+        }
+
+        /// <summary>Processes the message with a user-provided action that returns a task.</summary>
+        /// <param name="action">The action to use to process the message.</param>
+        /// <param name="messageWithId">The message to be processed.</param>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private void ProcessMessageWithTask(Func<TInput, Task> action, KeyValuePair<TInput, long> messageWithId)
+        {
+            Contract.Requires(action != null, "action needed for processing");
+
+            // Run the action to get the task that represents the operation's completion
+            Task task = null;
+            Exception caughtException = null;
+            try
+            {
+                task = action(messageWithId.Key);
+            }
+            catch (Exception exc) { caughtException = exc; }
+
+            // If no task is available, we're done.
+            if (task == null)
+            {
+                // If we didn't get a task because an exception occurred,
+                // store it (if the exception was cancellation, just ignore it).
+                if (caughtException != null && !Common.IsCooperativeCancellation(caughtException))
+                {
+                    Common.StoreDataflowMessageValueIntoExceptionData(caughtException, messageWithId.Key);
+                    _defaultTarget.Complete(caughtException, dropPendingMessages: true, storeExceptionEvenIfAlreadyCompleting: true, unwrapInnerExceptions: false);
+                }
+
+                // Signal that we're done this async operation.
+                _defaultTarget.SignalOneAsyncMessageCompleted(boundingCountChange: -1);
+                return;
+            }
+            else if (task.IsCompleted)
+            {
+                AsyncCompleteProcessMessageWithTask(task);
+            }
+            else
+            {
+                // Otherwise, join with the asynchronous operation when it completes.
+                task.ContinueWith((completed, state) =>
+                {
+                    ((ActionBlock<TInput>)state).AsyncCompleteProcessMessageWithTask(completed);
+                }, this, CancellationToken.None, Common.GetContinuationOptions(TaskContinuationOptions.ExecuteSynchronously), TaskScheduler.Default);
+            }
+        }
+
+        /// <summary>Completes the processing of an asynchronous message.</summary>
+        /// <param name="completed">The completed task.</param>
+        private void AsyncCompleteProcessMessageWithTask(Task completed)
+        {
+            Contract.Requires(completed != null, "Need completed task for processing");
+            Contract.Requires(completed.IsCompleted, "The task to be processed must be completed by now.");
+
+            // If the task faulted, store its errors. We must add the exception before declining
+            // and signaling completion, as the exception is part of the operation, and the completion conditions
+            // depend on this.
+            if (completed.IsFaulted)
+            {
+                _defaultTarget.Complete(completed.Exception, dropPendingMessages: true, storeExceptionEvenIfAlreadyCompleting: true, unwrapInnerExceptions: true);
+            }
+
+            // Regardless of faults, note that we're done processing.  There are
+            // no outputs to keep track of for action block, so we always decrement 
+            // the bounding count here (the callee will handle checking whether
+            // we're actually in a bounded mode).
+            _defaultTarget.SignalOneAsyncMessageCompleted(boundingCountChange: -1);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        public void Complete()
+        {
+            if (_defaultTarget != null)
+            {
+                _defaultTarget.Complete(exception: null, dropPendingMessages: false);
+            }
+            else
+            {
+                _spscTarget.Complete(exception: null);
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            if (_defaultTarget != null)
+            {
+                _defaultTarget.Complete(exception, dropPendingMessages: true);
+            }
+            else
+            {
+                _spscTarget.Complete(exception);
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        public Task Completion
+        {
+            get { return _defaultTarget != null ? _defaultTarget.Completion : _spscTarget.Completion; }
+        }
+
+        /// <summary>Posts an item to the <see cref="T:System.Threading.Tasks.Dataflow.ITargetBlock`1"/>.</summary>
+        /// <param name="item">The item being offered to the target.</param>
+        /// <returns>true if the item was accepted by the target block; otherwise, false.</returns>
+        /// <remarks>
+        /// This method will return once the target block has decided to accept or decline the item,
+        /// but unless otherwise dictated by special semantics of the target block, it does not wait
+        /// for the item to actually be processed (for example, <see cref="T:System.Threading.Tasks.Dataflow.ActionBlock`1"/>
+        /// will return from Post as soon as it has stored the posted item into its input queue).  From the perspective
+        /// of the block's processing, Post is asynchronous. For target blocks that support postponing offered messages, 
+        /// or for blocks that may do more processing in their Post implementation, consider using
+        ///  <see cref="T:System.Threading.Tasks.Dataflow.DataflowBlock.SendAsync">SendAsync</see>, 
+        /// which will return immediately and will enable the target to postpone the posted message and later consume it 
+        /// after SendAsync returns.
+        /// </remarks>
+        [MethodImpl(MethodImplOptions.AggressiveInlining)]
+        public bool Post(TInput item)
+        {
+            // Even though this method is available with the exact same functionality as an extension method
+            // on ITargetBlock, using that extension method goes through an interface call on ITargetBlock,
+            // which for very high-throughput scenarios shows up as noticeable overhead on certain architectures.  
+            // We can eliminate that call for direct ActionBlock usage by providing the same method as an instance method.
+
+            return _defaultTarget != null ?
+                _defaultTarget.OfferMessage(Common.SingleMessageHeader, item, null, false) == DataflowMessageStatus.Accepted :
+                _spscTarget.Post(item);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+        DataflowMessageStatus ITargetBlock<TInput>.OfferMessage(DataflowMessageHeader messageHeader, TInput messageValue, ISourceBlock<TInput> source, Boolean consumeToAccept)
+        {
+            return _defaultTarget != null ?
+                _defaultTarget.OfferMessage(messageHeader, messageValue, source, consumeToAccept) :
+                _spscTarget.OfferMessage(messageHeader, messageValue, source, consumeToAccept);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="InputCount"]/*' />
+        public int InputCount
+        {
+            get { return _defaultTarget != null ? _defaultTarget.InputCount : _spscTarget.InputCount; }
+        }
+
+        /// <summary>Gets the number of messages waiting to be processed. This must only be used from the debugger.</summary>
+        private int InputCountForDebugger
+        {
+            get { return _defaultTarget != null ? _defaultTarget.GetDebuggingInformation().InputCount : _spscTarget.InputCount; }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="ToString"]/*' />
+        public override string ToString()
+        {
+            return Common.GetNameForDebugger(this, _defaultTarget != null ? _defaultTarget.DataflowBlockOptions : _spscTarget.DataflowBlockOptions);
+        }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                return string.Format("{0}, InputCount={1}",
+                    Common.GetNameForDebugger(this, _defaultTarget != null ? _defaultTarget.DataflowBlockOptions : _spscTarget.DataflowBlockOptions),
+                    InputCountForDebugger);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for the Call.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The action block being viewed.</summary>
+            private readonly ActionBlock<TInput> _actionBlock;
+            /// <summary>The action block's default target being viewed.</summary>
+            private readonly TargetCore<TInput>.DebuggingInformation _defaultDebugInfo;
+            /// <summary>The action block's SPSC target being viewed.</summary>
+            private readonly SpscTargetCore<TInput>.DebuggingInformation _spscDebugInfo;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="actionBlock">The target being debugged.</param>
+            public DebugView(ActionBlock<TInput> actionBlock)
+            {
+                Contract.Requires(actionBlock != null, "Need a block with which to construct the debug view.");
+                _actionBlock = actionBlock;
+                if (_actionBlock._defaultTarget != null)
+                {
+                    _defaultDebugInfo = actionBlock._defaultTarget.GetDebuggingInformation();
+                }
+                else
+                {
+                    _spscDebugInfo = actionBlock._spscTarget.GetDebuggingInformation();
+                }
+            }
+
+            /// <summary>Gets the messages waiting to be processed.</summary>
+            public IEnumerable<TInput> InputQueue
+            {
+                get { return _defaultDebugInfo != null ? _defaultDebugInfo.InputQueue : _spscDebugInfo.InputQueue; }
+            }
+            /// <summary>Gets any postponed messages.</summary>
+            public QueuedMap<ISourceBlock<TInput>, DataflowMessageHeader> PostponedMessages
+            {
+                get { return _defaultDebugInfo != null ? _defaultDebugInfo.PostponedMessages : null; }
+            }
+
+            /// <summary>Gets the number of outstanding input operations.</summary>
+            public Int32 CurrentDegreeOfParallelism
+            {
+                get { return _defaultDebugInfo != null ? _defaultDebugInfo.CurrentDegreeOfParallelism : _spscDebugInfo.CurrentDegreeOfParallelism; }
+            }
+
+            /// <summary>Gets the ExecutionDataflowBlockOptions used to configure this block.</summary>
+            public ExecutionDataflowBlockOptions DataflowBlockOptions
+            {
+                get { return _defaultDebugInfo != null ? _defaultDebugInfo.DataflowBlockOptions : _spscDebugInfo.DataflowBlockOptions; }
+            }
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            public bool IsDecliningPermanently
+            {
+                get { return _defaultDebugInfo != null ? _defaultDebugInfo.IsDecliningPermanently : _spscDebugInfo.IsDecliningPermanently; }
+            }
+            /// <summary>Gets whether the block is completed.</summary>
+            public bool IsCompleted
+            {
+                get { return _defaultDebugInfo != null ? _defaultDebugInfo.IsCompleted : _spscDebugInfo.IsCompleted; }
+            }
+            /// <summary>Gets the block's Id.</summary>
+            public int Id { get { return Common.GetBlockId(_actionBlock); } }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/BatchBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/BatchBlock.cs
new file mode 100644 (file)
index 0000000..8a12745
--- /dev/null
@@ -0,0 +1,1206 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// BatchBlock.cs
+//
+//
+// A propagator block that groups individual messages into arrays of messages.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Linq;
+using System.Security;
+using System.Threading.Tasks.Dataflow.Internal;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Provides a dataflow block that batches inputs into arrays.</summary>
+    /// <typeparam name="T">Specifies the type of data put into batches.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(BatchBlock<>.DebugView))]
+    [SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
+    public sealed class BatchBlock<T> : IPropagatorBlock<T, T[]>, IReceivableSourceBlock<T[]>, IDebuggerDisplay
+    {
+        /// <summary>The target half of this batch.</summary>
+        private readonly BatchBlockTargetCore _target;
+        /// <summary>The source half of this batch.</summary>
+        private readonly SourceCore<T[]> _source;
+
+        /// <summary>Initializes this <see cref="BatchBlock{T}"/> with the specified batch size.</summary>
+        /// <param name="batchSize">The number of items to group into a batch.</param>
+        /// <exception cref="System.ArgumentOutOfRangeException">The <paramref name="batchSize"/> must be positive.</exception>
+        public BatchBlock(Int32 batchSize) :
+            this(batchSize, GroupingDataflowBlockOptions.Default)
+        { }
+
+        /// <summary>Initializes this <see cref="BatchBlock{T}"/> with the  specified batch size, declining option, and block options.</summary>
+        /// <param name="batchSize">The number of items to group into a batch.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="BatchBlock{T}"/>.</param>
+        /// <exception cref="System.ArgumentOutOfRangeException">The <paramref name="batchSize"/> must be positive.</exception>
+        /// <exception cref="System.ArgumentOutOfRangeException">The <paramref name="batchSize"/> must be no greater than the value of the BoundedCapacity option if a non-default value has been set.</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        public BatchBlock(Int32 batchSize, GroupingDataflowBlockOptions dataflowBlockOptions)
+        {
+            // Validate arguments
+            if (batchSize < 1) throw new ArgumentOutOfRangeException("batchSize", SR.ArgumentOutOfRange_GenericPositive);
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+            if (dataflowBlockOptions.BoundedCapacity > 0 && dataflowBlockOptions.BoundedCapacity < batchSize) throw new ArgumentOutOfRangeException("batchSize", SR.ArgumentOutOfRange_BatchSizeMustBeNoGreaterThanBoundedCapacity);
+            Contract.EndContractBlock();
+
+            // Ensure we have options that can't be changed by the caller
+            dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone();
+
+            // Initialize bounding actions
+            Action<ISourceBlock<T[]>, int> onItemsRemoved = null;
+            Func<ISourceBlock<T[]>, T[], IList<T[]>, int> itemCountingFunc = null;
+            if (dataflowBlockOptions.BoundedCapacity > 0)
+            {
+                onItemsRemoved = (owningSource, count) => ((BatchBlock<T>)owningSource)._target.OnItemsRemoved(count);
+                itemCountingFunc = (owningSource, singleOutputItem, multipleOutputItems) => BatchBlockTargetCore.CountItems(singleOutputItem, multipleOutputItems);
+            }
+
+            // Initialize source
+            _source = new SourceCore<T[]>(this, dataflowBlockOptions,
+                owningSource => ((BatchBlock<T>)owningSource)._target.Complete(exception: null, dropPendingMessages: true, releaseReservedMessages: false),
+                onItemsRemoved, itemCountingFunc);
+
+            // Initialize target
+            _target = new BatchBlockTargetCore(this, batchSize, batch => _source.AddMessage(batch), dataflowBlockOptions);
+
+            // When the target is done, let the source know it won't be getting any more data
+            _target.Completion.ContinueWith(delegate { _source.Complete(); },
+                CancellationToken.None, Common.GetContinuationOptions(), TaskScheduler.Default);
+
+            // It is possible that the source half may fault on its own, e.g. due to a task scheduler exception.
+            // In those cases we need to fault the target half to drop its buffered messages and to release its 
+            // reservations. This should not create an infinite loop, because all our implementations are designed
+            // to handle multiple completion requests and to carry over only one.
+            _source.Completion.ContinueWith((completed, state) =>
+            {
+                var thisBlock = ((BatchBlock<T>)state) as IDataflowBlock;
+                Debug.Assert(completed.IsFaulted, "The source must be faulted in order to trigger a target completion.");
+                thisBlock.Fault(completed.Exception);
+            }, this, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
+
+            // Handle async cancellation requests by declining on the target
+            Common.WireCancellationToComplete(
+                dataflowBlockOptions.CancellationToken, _source.Completion, state => ((BatchBlockTargetCore)state).Complete(exception: null, dropPendingMessages: true, releaseReservedMessages: false), _target);
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCreated(this, dataflowBlockOptions);
+            }
+#endif
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        public void Complete() { _target.Complete(exception: null, dropPendingMessages: false, releaseReservedMessages: false); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            _target.Complete(exception, dropPendingMessages: true, releaseReservedMessages: false);
+        }
+
+        /// <summary>
+        /// Triggers the <see cref="BatchBlock{T}"/> to initiate a batching operation even if the number
+        /// of currently queued or postponed items is less than the <see cref="BatchSize"/>.
+        /// </summary>
+        /// <remarks>
+        /// In greedy mode, a batch will be generated from queued items even if fewer exist than the batch size.  
+        /// In non-greedy mode, a batch will be generated asynchronously from postponed items even if
+        /// fewer than the batch size can be consumed.
+        /// </remarks>
+        public void TriggerBatch() { _target.TriggerBatch(); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+        public IDisposable LinkTo(ITargetBlock<T[]> target, DataflowLinkOptions linkOptions)
+        {
+            return _source.LinkTo(target, linkOptions);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+        public Boolean TryReceive(Predicate<T[]> filter, out T[] item)
+        {
+            return _source.TryReceive(filter, out item);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+        public bool TryReceiveAll(out IList<T[]> items) { return _source.TryReceiveAll(out items); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="OutputCount"]/*' />
+        public int OutputCount { get { return _source.OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        public Task Completion { get { return _source.Completion; } }
+
+        /// <summary>Gets the size of the batches generated by this <see cref="BatchBlock{T}"/>.</summary>
+        /// <remarks>
+        /// If the number of items provided to the block is not evenly divisible by the batch size provided
+        /// to the block's constructor, the block's final batch may contain fewer than the requested number of items.
+        /// </remarks>
+        public Int32 BatchSize { get { return _target.BatchSize; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+        DataflowMessageStatus ITargetBlock<T>.OfferMessage(DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source, Boolean consumeToAccept)
+        {
+            return _target.OfferMessage(messageHeader, messageValue, source, consumeToAccept);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+        T[] ISourceBlock<T[]>.ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<T[]> target, out Boolean messageConsumed)
+        {
+            return _source.ConsumeMessage(messageHeader, target, out messageConsumed);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+        bool ISourceBlock<T[]>.ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<T[]> target)
+        {
+            return _source.ReserveMessage(messageHeader, target);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+        void ISourceBlock<T[]>.ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<T[]> target)
+        {
+            _source.ReleaseReservation(messageHeader, target);
+        }
+
+        /// <summary>Gets the number of messages waiting to be offered.  This must only be used from the debugger as it avoids taking necessary locks.</summary>
+        private int OutputCountForDebugger { get { return _source.GetDebuggingInformation().OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="ToString"]/*' />
+        public override string ToString() { return Common.GetNameForDebugger(this, _source.DataflowBlockOptions); }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                return string.Format("{0}, BatchSize={1}, OutputCount={2}",
+                    Common.GetNameForDebugger(this, _source.DataflowBlockOptions),
+                    BatchSize,
+                    OutputCountForDebugger);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for the Batch.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The batch block being viewed.</summary>
+            private BatchBlock<T> _batchBlock;
+            /// <summary>The target half being viewed.</summary>
+            private readonly BatchBlockTargetCore.DebuggingInformation _targetDebuggingInformation;
+            /// <summary>The source half of the block being viewed.</summary>
+            private readonly SourceCore<T[]>.DebuggingInformation _sourceDebuggingInformation;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="batchBlock">The batch being viewed.</param>
+            public DebugView(BatchBlock<T> batchBlock)
+            {
+                Contract.Requires(batchBlock != null, "Need a block with which to construct the debug view");
+                _batchBlock = batchBlock;
+                _targetDebuggingInformation = batchBlock._target.GetDebuggingInformation();
+                _sourceDebuggingInformation = batchBlock._source.GetDebuggingInformation();
+            }
+
+            /// <summary>Gets the messages waiting to be processed.</summary>
+            public IEnumerable<T> InputQueue { get { return _targetDebuggingInformation.InputQueue; } }
+            /// <summary>Gets the messages waiting to be received.</summary>
+            public IEnumerable<T[]> OutputQueue { get { return _sourceDebuggingInformation.OutputQueue; } }
+            /// <summary>Gets the number of batches that have been completed.</summary>
+            public long BatchesCompleted { get { return _targetDebuggingInformation.NumberOfBatchesCompleted; } }
+
+            /// <summary>Gets the task being used for input processing.</summary>
+            public Task TaskForInputProcessing { get { return _targetDebuggingInformation.TaskForInputProcessing; } }
+            /// <summary>Gets the task being used for output processing.</summary>
+            public Task TaskForOutputProcessing { get { return _sourceDebuggingInformation.TaskForOutputProcessing; } }
+
+            /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+            public GroupingDataflowBlockOptions DataflowBlockOptions { get { return _targetDebuggingInformation.DataflowBlockOptions; } }
+            /// <summary>Gets the size of batches generated by the block.</summary>
+            public int BatchSize { get { return _batchBlock.BatchSize; } }
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            public bool IsDecliningPermanently { get { return _targetDebuggingInformation.IsDecliningPermanently; } }
+            /// <summary>Gets whether the block is completed.</summary>
+            public bool IsCompleted { get { return _sourceDebuggingInformation.IsCompleted; } }
+            /// <summary>Gets the block's Id.</summary>
+            public int Id { get { return Common.GetBlockId(_batchBlock); } }
+
+            /// <summary>Gets the messages postponed by this batch.</summary>
+            public QueuedMap<ISourceBlock<T>, DataflowMessageHeader> PostponedMessages { get { return _targetDebuggingInformation.PostponedMessages; } }
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public TargetRegistry<T[]> LinkedTargets { get { return _sourceDebuggingInformation.LinkedTargets; } }
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public ITargetBlock<T[]> NextMessageReservedFor { get { return _sourceDebuggingInformation.NextMessageReservedFor; } }
+        }
+
+        /// <summary>Provides the core target implementation for a Batch.</summary>
+        [SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
+        [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+        private sealed class BatchBlockTargetCore
+        {
+            /// <summary>The messages in this target.</summary>
+            private readonly Queue<T> _messages = new Queue<T>();
+            /// <summary>A task representing the completion of the block.</summary>
+            private readonly TaskCompletionSource<VoidResult> _completionTask = new TaskCompletionSource<VoidResult>();
+
+            /// <summary>Gets the object used as the incoming lock.</summary>
+            private object IncomingLock { get { return _completionTask; } }
+
+            /// <summary>The target that owns this target core.</summary>
+            private readonly BatchBlock<T> _owningBatch;
+            /// <summary>The batch size.</summary>
+            private readonly int _batchSize;
+            /// <summary>State used when in non-greedy mode.</summary>
+            private readonly NonGreedyState _nonGreedyState;
+            /// <summary>Bounding state for when the block is executing in bounded mode.</summary>
+            private readonly BoundingState _boundingState;
+            /// <summary>The options associated with this block.</summary>
+            private readonly GroupingDataflowBlockOptions _dataflowBlockOptions;
+            /// <summary>The action invoked with a completed batch.</summary>
+            private readonly Action<T[]> _batchCompletedAction;
+
+            /// <summary>Whether to stop accepting new messages.</summary>
+            private bool _decliningPermanently;
+            /// <summary>Whether we've completed at least one batch.</summary>
+            private long _batchesCompleted;
+            /// <summary>Whether someone has reserved the right to call CompleteBlockOncePossible.</summary>
+            private bool _completionReserved;
+
+            /// <summary>State used only when in non-greedy mode.</summary>
+            private sealed class NonGreedyState
+            {
+                /// <summary>Collection of postponed messages.</summary>
+                internal readonly QueuedMap<ISourceBlock<T>, DataflowMessageHeader> PostponedMessages;
+                /// <summary>A temporary array used to store data retrieved from PostponedMessages.</summary>
+                internal readonly KeyValuePair<ISourceBlock<T>, DataflowMessageHeader>[] PostponedMessagesTemp;
+                /// <summary>A temporary list used in non-greedy mode when consuming postponed messages to store successfully reserved messages.</summary>
+                internal readonly List<KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>> ReservedSourcesTemp;
+                /// <summary>Whether the next batching operation should accept fewer than BatchSize items.</summary>
+                /// <remarks>This value may be read not under a lock, but it must only be written to protected by the IncomingLock.</remarks>
+                internal bool AcceptFewerThanBatchSize;
+                /// <summary>The task used to process messages.</summary>
+                internal Task TaskForInputProcessing;
+
+                /// <summary>Initializes the NonGreedyState.</summary>
+                /// <param name="batchSize">The batch size used by the BatchBlock.</param>
+                internal NonGreedyState(int batchSize)
+                {
+                    // A non-greedy batch requires at least batchSize sources to be successful.
+                    // Thus, we initialize our collections to be able to store at least that many elements
+                    // in order to avoid unnecessary allocations below that point.
+                    Contract.Requires(batchSize > 0, "A positive batch size is required");
+                    PostponedMessages = new QueuedMap<ISourceBlock<T>, DataflowMessageHeader>(batchSize);
+                    PostponedMessagesTemp = new KeyValuePair<ISourceBlock<T>, DataflowMessageHeader>[batchSize];
+                    ReservedSourcesTemp = new List<KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>>(batchSize);
+                }
+            }
+
+            /// <summary>Initializes this target core with the specified configuration.</summary>
+            /// <param name="owningBatch">The owning batch target.</param>
+            /// <param name="batchSize">The number of items to group into a batch.</param>
+            /// <param name="batchCompletedAction">The delegate to invoke when a batch is completed.</param>
+            /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="BatchBlock{T}"/>.  Assumed to be immutable.</param>
+            /// <exception cref="System.ArgumentOutOfRangeException">The <paramref name="batchSize"/> must be positive.</exception>
+            /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+            internal BatchBlockTargetCore(BatchBlock<T> owningBatch, Int32 batchSize, Action<T[]> batchCompletedAction, GroupingDataflowBlockOptions dataflowBlockOptions)
+            {
+                Contract.Requires(owningBatch != null, "This batch target core must be associated with a batch block.");
+                Contract.Requires(batchSize >= 1, "Batch sizes must be positive.");
+                Contract.Requires(batchCompletedAction != null, "Completion action must be specified.");
+                Contract.Requires(dataflowBlockOptions != null, "Options required to configure the block.");
+
+                // Store arguments
+                _owningBatch = owningBatch;
+                _batchSize = batchSize;
+                _batchCompletedAction = batchCompletedAction;
+                _dataflowBlockOptions = dataflowBlockOptions;
+
+                // We'll be using _nonGreedyState even if we are greedy with bounding
+                bool boundingEnabled = dataflowBlockOptions.BoundedCapacity > 0;
+                if (!_dataflowBlockOptions.Greedy || boundingEnabled) _nonGreedyState = new NonGreedyState(batchSize);
+                if (boundingEnabled) _boundingState = new BoundingState(dataflowBlockOptions.BoundedCapacity);
+            }
+
+            /// <summary>
+            /// Triggers a batching operation even if the number of currently queued or postponed items is less than the <see cref="BatchSize"/>.
+            /// </summary>
+            internal void TriggerBatch()
+            {
+                lock (IncomingLock)
+                {
+                    // If we shouldn't be doing any more work, bail.  Otherwise, note that we're willing to 
+                    // accept fewer items in the next batching operation, and ensure processing is kicked off.
+                    if (!_decliningPermanently && !_dataflowBlockOptions.CancellationToken.IsCancellationRequested)
+                    {
+                        if (_nonGreedyState == null)
+                        {
+                            MakeBatchIfPossible(evenIfFewerThanBatchSize: true);
+                        }
+                        else
+                        {
+                            _nonGreedyState.AcceptFewerThanBatchSize = true;
+                            ProcessAsyncIfNecessary();
+                        }
+                    }
+                    CompleteBlockIfPossible();
+                }
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+            internal DataflowMessageStatus OfferMessage(DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source, Boolean consumeToAccept)
+            {
+                // Validate arguments
+                if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+                if (source == null && consumeToAccept) throw new ArgumentException(SR.Argument_CantConsumeFromANullSource, "consumeToAccept");
+                Contract.EndContractBlock();
+
+                lock (IncomingLock)
+                {
+                    // If we shouldn't be accepting more messages, don't.
+                    if (_decliningPermanently)
+                    {
+                        CompleteBlockIfPossible();
+                        return DataflowMessageStatus.DecliningPermanently;
+                    }
+
+                    // We can directly accept the message if:
+                    //      1) we are being greedy AND we are not bounding, OR 
+                    //      2) we are being greedy AND we are bounding AND there is room available AND there are no postponed messages AND we are not currently processing. 
+                    // (If there were any postponed messages, we would need to postpone so that ordering would be maintained.)
+                    // (We should also postpone if we are currently processing, because there may be a race between consuming postponed messages and
+                    // accepting new ones directly into the queue.)
+                    if (_dataflowBlockOptions.Greedy &&
+                            (_boundingState == null
+                                ||
+                             (_boundingState.CountIsLessThanBound && _nonGreedyState.PostponedMessages.Count == 0 && _nonGreedyState.TaskForInputProcessing == null)))
+                    {
+                        // Consume the message from the source if necessary
+                        if (consumeToAccept)
+                        {
+                            Debug.Assert(source != null, "We must have thrown if source == null && consumeToAccept == true.");
+
+                            bool consumed;
+                            messageValue = source.ConsumeMessage(messageHeader, _owningBatch, out consumed);
+                            if (!consumed) return DataflowMessageStatus.NotAvailable;
+                        }
+
+                        // Once consumed, enqueue it.
+                        _messages.Enqueue(messageValue);
+                        if (_boundingState != null) _boundingState.CurrentCount += 1; // track this new item against our bound
+
+                        // Now start declining if the number of batches we've already made plus 
+                        // the number we can make from data already enqueued meets our quota.
+                        if (!_decliningPermanently &&
+                            (_batchesCompleted + (_messages.Count / _batchSize)) >= _dataflowBlockOptions.ActualMaxNumberOfGroups)
+                        {
+                            _decliningPermanently = true;
+                        }
+
+                        // Now that we have a message, see if we can make forward progress.
+                        MakeBatchIfPossible(evenIfFewerThanBatchSize: false);
+
+                        CompleteBlockIfPossible();
+                        return DataflowMessageStatus.Accepted;
+                    }
+                    // Otherwise, we try to postpone if a source was provided
+                    else if (source != null)
+                    {
+                        Debug.Assert(_nonGreedyState != null, "_nonGreedyState must have been initialized during construction in non-greedy mode.");
+
+                        // We always postpone using _nonGreedyState even if we are being greedy with bounding
+                        _nonGreedyState.PostponedMessages.Push(source, messageHeader);
+
+                        // In non-greedy mode, we need to see if batch could be completed
+                        if (!_dataflowBlockOptions.Greedy) ProcessAsyncIfNecessary();
+
+                        return DataflowMessageStatus.Postponed;
+                    }
+                    // We can't do anything else about this message
+                    return DataflowMessageStatus.Declined;
+                }
+            }
+
+            /// <summary>Completes/faults the block.
+            /// In general, it is not safe to pass releaseReservedMessages:true, because releasing of reserved messages
+            /// is done without taking a lock. We pass releaseReservedMessages:true only when an exception has been 
+            /// caught inside the message processing loop which is a single instance at any given moment.</summary>
+            [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+            internal void Complete(Exception exception, bool dropPendingMessages, bool releaseReservedMessages, bool revertProcessingState = false)
+            {
+                // Ensure that no new messages may be added
+                lock (IncomingLock)
+                {
+                    // Faulting from outside is allowed until we start declining permanently.
+                    // Faulting from inside is allowed at any time.
+                    if (exception != null && (!_decliningPermanently || releaseReservedMessages))
+                    {
+                        // Record the exception in the source.
+                        // The source, which exposes its Completion to the public will take this
+                        // into account and will complete in Faulted state.
+                        _owningBatch._source.AddException(exception);
+                    }
+
+                    // Drop pending messages if requested
+                    if (dropPendingMessages) _messages.Clear();
+                }
+
+                // Release reserved messages if requested.
+                // This must be done from outside the lock.
+                if (releaseReservedMessages)
+                {
+                    try { ReleaseReservedMessages(throwOnFirstException: false); }
+                    catch (Exception e) { _owningBatch._source.AddException(e); }
+                }
+
+                // Triggering completion requires the lock
+                lock (IncomingLock)
+                {
+                    // Revert the dirty processing state if requested
+                    if (revertProcessingState)
+                    {
+                        Debug.Assert(_nonGreedyState != null && _nonGreedyState.TaskForInputProcessing != null,
+                                        "The processing state must be dirty when revertProcessingState==true.");
+                        _nonGreedyState.TaskForInputProcessing = null;
+                    }
+
+                    // Trigger completion
+                    _decliningPermanently = true;
+                    CompleteBlockIfPossible();
+                }
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+            internal Task Completion { get { return _completionTask.Task; } }
+
+            /// <summary>Gets the size of the batches generated by this <see cref="BatchBlock{T}"/>.</summary>
+            internal Int32 BatchSize { get { return _batchSize; } }
+
+            /// <summary>Gets whether the target has had cancellation requested or an exception has occurred.</summary>
+            private bool CanceledOrFaulted
+            {
+                get
+                {
+                    return _dataflowBlockOptions.CancellationToken.IsCancellationRequested || _owningBatch._source.HasExceptions;
+                }
+            }
+
+            /// <summary>Returns the available capacity to bring in postponed items. The exact values above _batchSize don't matter.</summary>
+            private int BoundedCapacityAvailable
+            {
+                get
+                {
+                    Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+                    return _boundingState != null ?
+                                _dataflowBlockOptions.BoundedCapacity - _boundingState.CurrentCount :
+                                _batchSize;
+                }
+            }
+
+            /// <summary>Completes the block once all completion conditions are met.</summary>
+            private void CompleteBlockIfPossible()
+            {
+                Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+                if (!_completionReserved)
+                {
+                    bool currentlyProcessing = _nonGreedyState != null && _nonGreedyState.TaskForInputProcessing != null;
+                    bool completedAllDesiredBatches = _batchesCompleted >= _dataflowBlockOptions.ActualMaxNumberOfGroups;
+                    bool noMoreMessages = _decliningPermanently && _messages.Count < _batchSize;
+
+                    bool complete = !currentlyProcessing && (completedAllDesiredBatches || noMoreMessages || CanceledOrFaulted);
+                    if (complete)
+                    {
+                        _completionReserved = true;
+
+                        // Make sure the target is declining
+                        _decliningPermanently = true;
+
+                        // If we still have straggling items remaining, make them into their own batch even though there are fewer than batchSize
+                        if (_messages.Count > 0) MakeBatchIfPossible(evenIfFewerThanBatchSize: true);
+
+                        // We need to complete the block, but we may have arrived here from an external
+                        // call to the block.  To avoid running arbitrary code in the form of 
+                        // completion task continuations in that case, do it in a separate task.
+                        Task.Factory.StartNew(thisTargetCore =>
+                        {
+                            var targetCore = (BatchBlockTargetCore)thisTargetCore;
+
+                            // Release any postponed messages
+                            List<Exception> exceptions = null;
+                            if (targetCore._nonGreedyState != null)
+                            {
+                                // Note: No locks should be held at this point
+                                Common.ReleaseAllPostponedMessages(targetCore._owningBatch,
+                                                                   targetCore._nonGreedyState.PostponedMessages,
+                                                                   ref exceptions);
+                            }
+
+                            if (exceptions != null)
+                            {
+                                // It is important to migrate these exceptions to the source part of the owning batch,
+                                // because that is the completion task that is publically exposed.
+                                targetCore._owningBatch._source.AddExceptions(exceptions);
+                            }
+
+                            // Target's completion task is only available internally with the sole purpose
+                            // of releasing the task that completes the parent. Hence the actual reason
+                            // for completing this task doesn't matter.
+                            targetCore._completionTask.TrySetResult(default(VoidResult));
+                        }, this, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+                    }
+                }
+            }
+
+            /// <summary>
+            /// Gets whether we should launch further synchronous or asynchronous processing
+            /// to create batches.
+            /// </summary>
+            private bool BatchesNeedProcessing
+            {
+                get
+                {
+                    Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+                    // If we're currently processing asynchronously, let that async task
+                    // handle all work; nothing more to do here.  If we're not currently processing
+                    // but cancellation has been requested, don't do more work either.
+                    bool completedAllDesiredBatches = _batchesCompleted >= _dataflowBlockOptions.ActualMaxNumberOfGroups;
+                    bool currentlyProcessing = _nonGreedyState != null && _nonGreedyState.TaskForInputProcessing != null;
+                    if (completedAllDesiredBatches || currentlyProcessing || CanceledOrFaulted) return false;
+
+                    // Now, if it's possible to create a batch from queued items or if there are enough
+                    // postponed items to attempt a batch, batches need processing.
+                    int neededMessageCountToCompleteBatch = _batchSize - _messages.Count;
+                    int boundedCapacityAvailable = BoundedCapacityAvailable;
+
+                    // We have items queued up sufficient to make up a batch
+                    if (neededMessageCountToCompleteBatch <= 0) return true;
+
+                    if (_nonGreedyState != null)
+                    {
+                        // We can make a triggered batch using postponed messages
+                        if (_nonGreedyState.AcceptFewerThanBatchSize &&
+                            (_messages.Count > 0 || (_nonGreedyState.PostponedMessages.Count > 0 && boundedCapacityAvailable > 0)))
+                            return true;
+
+                        if (_dataflowBlockOptions.Greedy)
+                        {
+                            // We are in greedy mode and we have postponed messages. 
+                            // (In greedy mode we only postpone due to lack of bounding capacity.) 
+                            // And now we have capacity to consume some postponed messages. 
+                            // (In greedy mode we can/should consume as many postponed messages as we can even  
+                            // if those messages are insufficient to make up a batch.)
+                            if (_nonGreedyState.PostponedMessages.Count > 0 && boundedCapacityAvailable > 0) return true;
+                        }
+                        else
+                        {
+                            // We are in non-greedy mode and we have enough postponed messages and bounding capacity to make a full batch
+                            if (_nonGreedyState.PostponedMessages.Count >= neededMessageCountToCompleteBatch &&
+                                boundedCapacityAvailable >= neededMessageCountToCompleteBatch)
+                                return true;
+                        }
+                    }
+
+                    // There is no other reason to kick off a processing task
+                    return false;
+                }
+            }
+
+            /// <summary>Called when new messages are available to be processed.</summary>
+            /// <param name="isReplacementReplica">Whether this call is the continuation of a previous message loop.</param>
+            private void ProcessAsyncIfNecessary(bool isReplacementReplica = false)
+            {
+                Contract.Requires(_nonGreedyState != null, "Non-greedy state is required for non-greedy mode.");
+                Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+                if (BatchesNeedProcessing)
+                {
+                    ProcessAsyncIfNecessary_Slow(isReplacementReplica);
+                }
+            }
+
+            /// <summary>
+            /// Slow path for ProcessAsyncIfNecessary. 
+            /// Separating out the slow path into its own method makes it more likely that the fast path method will get inlined.
+            /// </summary>
+            private void ProcessAsyncIfNecessary_Slow(bool isReplacementReplica)
+            {
+                Contract.Requires(BatchesNeedProcessing, "There must be a batch that needs processing.");
+
+                // Create task and store into _taskForInputProcessing prior to scheduling the task
+                // so that _taskForInputProcessing will be visibly set in the task loop.
+                _nonGreedyState.TaskForInputProcessing = new Task(thisBatchTarget => ((BatchBlockTargetCore)thisBatchTarget).ProcessMessagesLoopCore(), this,
+                                                    Common.GetCreationOptionsForTask(isReplacementReplica));
+
+#if FEATURE_TRACING
+                DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+                if (etwLog.IsEnabled())
+                {
+                    etwLog.TaskLaunchedForMessageHandling(
+                        _owningBatch, _nonGreedyState.TaskForInputProcessing, DataflowEtwProvider.TaskLaunchedReason.ProcessingInputMessages,
+                        _messages.Count + (_nonGreedyState != null ? _nonGreedyState.PostponedMessages.Count : 0));
+                }
+#endif
+
+                // Start the task handling scheduling exceptions
+                Exception exception = Common.StartTaskSafe(_nonGreedyState.TaskForInputProcessing, _dataflowBlockOptions.TaskScheduler);
+                if (exception != null)
+                {
+                    // Get out from under currently held locks. Complete re-acquires the locks it needs.
+                    Task.Factory.StartNew(exc => Complete(exception: (Exception)exc, dropPendingMessages: true, releaseReservedMessages: true, revertProcessingState: true),
+                                        exception, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+                }
+            }
+
+
+            /// <summary>Task body used to process messages.</summary>
+            [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+            private void ProcessMessagesLoopCore()
+            {
+                Contract.Requires(_nonGreedyState != null, "Non-greedy state is required for non-greedy mode.");
+                Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+                try
+                {
+                    int maxMessagesPerTask = _dataflowBlockOptions.ActualMaxMessagesPerTask;
+                    int timesThroughLoop = 0;
+                    bool madeProgress;
+                    do
+                    {
+                        // Determine whether a batch has been forced/triggered.
+                        // (If the value is read as false and is set to true immediately afterwards,
+                        // we'll simply force the next time around.  The only code that can
+                        // set the value to false is this function, after reading a true value.)
+                        bool triggered = Volatile.Read(ref _nonGreedyState.AcceptFewerThanBatchSize);
+
+                        // Retrieve postponed items:
+                        //      In non-greedy mode: Reserve + Consume
+                        //      In greedy bounded mode: Consume (without a prior reservation)
+                        if (!_dataflowBlockOptions.Greedy) RetrievePostponedItemsNonGreedy(allowFewerThanBatchSize: triggered);
+                        else RetrievePostponedItemsGreedyBounded(allowFewerThanBatchSize: triggered);
+
+                        // Try to make a batch if there are enough buffered messages
+                        lock (IncomingLock)
+                        {
+                            madeProgress = MakeBatchIfPossible(evenIfFewerThanBatchSize: triggered);
+
+                            // Reset the trigger flag if:
+                            // - We made a batch, regardless of whether it came due to a trigger or not.
+                            // - We tried to make a batch due to a trigger, but were unable to, which
+                            //   could happen if we're unable to consume any of the postponed messages.
+                            if (madeProgress || triggered) _nonGreedyState.AcceptFewerThanBatchSize = false;
+                        }
+
+                        timesThroughLoop++;
+                    } while (madeProgress && timesThroughLoop < maxMessagesPerTask);
+                }
+                catch (Exception exc)
+                {
+                    Complete(exc, dropPendingMessages: false, releaseReservedMessages: true);
+                }
+                finally
+                {
+                    lock (IncomingLock)
+                    {
+                        // We're no longer processing, so null out the processing task
+                        _nonGreedyState.TaskForInputProcessing = null;
+
+                        // However, we may have given up early because we hit our own configured
+                        // processing limits rather than because we ran out of work to do.  If that's
+                        // the case, make sure we spin up another task to keep going.
+                        ProcessAsyncIfNecessary(isReplacementReplica: true);
+
+                        // If, however, we stopped because we ran out of work to do and we
+                        // know we'll never get more, then complete.
+                        CompleteBlockIfPossible();
+                    }
+                }
+            }
+
+            /// <summary>Create a batch from the available items.</summary>
+            /// <param name="evenIfFewerThanBatchSize">
+            /// Whether to make a batch even if there are fewer than BatchSize items available.
+            /// </param>
+            /// <returns>true if a batch was created and published; otherwise, false.</returns>
+            private bool MakeBatchIfPossible(bool evenIfFewerThanBatchSize)
+            {
+                Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+                // Is a full batch available?
+                bool fullBatch = _messages.Count >= _batchSize;
+
+                // If so, or if it's ok to make a batch with fewer than batchSize, make one.
+                if (fullBatch || (evenIfFewerThanBatchSize && _messages.Count > 0))
+                {
+                    var newBatch = new T[fullBatch ? _batchSize : _messages.Count];
+                    for (int i = 0; i < newBatch.Length; i++) newBatch[i] = _messages.Dequeue();
+                    _batchCompletedAction(newBatch);
+                    _batchesCompleted++;
+                    if (_batchesCompleted >= _dataflowBlockOptions.ActualMaxNumberOfGroups) _decliningPermanently = true;
+                    return true;
+                }
+                // No batch could be created
+                else return false;
+            }
+
+            /// <summary>Retrieves postponed items in non-greedy mode if we have enough to make a batch.</summary>
+            /// <remarks>Whether we'll accept consuming fewer elements than the defined batch size.</remarks>
+            private void RetrievePostponedItemsNonGreedy(bool allowFewerThanBatchSize)
+            {
+                Contract.Requires(!_dataflowBlockOptions.Greedy, "This method may only be used in non-greedy mode.");
+                Contract.Requires(_nonGreedyState != null, "Non-greedy state is required for non-greedy mode.");
+                Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+                // Shortcuts just to keep the code cleaner
+                QueuedMap<ISourceBlock<T>, DataflowMessageHeader> postponed = _nonGreedyState.PostponedMessages;
+                KeyValuePair<ISourceBlock<T>, DataflowMessageHeader>[] postponedTemp = _nonGreedyState.PostponedMessagesTemp;
+                List<KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader,T>>> reserved = _nonGreedyState.ReservedSourcesTemp;
+
+                // Clear the temporary buffer.  This is safe to do without a lock because
+                // it is only accessed by the serial message loop.
+                reserved.Clear();
+
+                int poppedInitially;
+                int boundedCapacityAvailable;
+                lock (IncomingLock)
+                {
+                    // The queue must be empty between batches in non-greedy mode
+                    Debug.Assert(_messages.Count == 0, "The queue must be empty between batches in non-greedy mode");
+
+                    // If there are not enough postponed items (or if we're not allowing consumption), there's nothing more to be done
+                    boundedCapacityAvailable = BoundedCapacityAvailable;
+                    if (_decliningPermanently ||
+                        postponed.Count == 0 ||
+                        boundedCapacityAvailable <= 0 ||
+                        (!allowFewerThanBatchSize && (postponed.Count < _batchSize || boundedCapacityAvailable < _batchSize)))
+                        return;
+
+                    // Grab an initial batch of postponed messages.
+                    poppedInitially = postponed.PopRange(postponedTemp, 0, _batchSize);
+                    Debug.Assert(allowFewerThanBatchSize ? poppedInitially > 0 : poppedInitially == _batchSize,
+                                    "We received fewer than we expected based on the previous check.");
+                } // Release the lock.  We must not hold it while calling Reserve/Consume/Release.
+
+                // Try to reserve the initial batch of messages.
+                for (int i = 0; i < poppedInitially; i++)
+                {
+                    KeyValuePair<ISourceBlock<T>, DataflowMessageHeader> sourceAndMessage = postponedTemp[i];
+                    if (sourceAndMessage.Key.ReserveMessage(sourceAndMessage.Value, _owningBatch))
+                    {
+                        var reservedMessage = new KeyValuePair<DataflowMessageHeader, T>(sourceAndMessage.Value, default(T));
+                        var reservedSourceAndMessage = new KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>(sourceAndMessage.Key, reservedMessage);
+                        reserved.Add(reservedSourceAndMessage);
+                    }
+                }
+                Array.Clear(postponedTemp, 0, postponedTemp.Length); // clear out the temp array so as not to hold onto messages too long
+
+                // If we didn't reserve enough to make a batch, start picking off postponed messages
+                // one by one until we either have enough reserved or we run out of messages
+                while (reserved.Count < _batchSize)
+                {
+                    KeyValuePair<ISourceBlock<T>, DataflowMessageHeader> sourceAndMessage;
+                    lock (IncomingLock)
+                    {
+                        if (!postponed.TryPop(out sourceAndMessage)) break;
+                    } // Release the lock.  We must not hold it while calling Reserve/Consume/Release.
+                    if (sourceAndMessage.Key.ReserveMessage(sourceAndMessage.Value, _owningBatch))
+                    {
+                        var reservedMessage = new KeyValuePair<DataflowMessageHeader, T>(sourceAndMessage.Value, default(T));
+                        var reservedSourceAndMessage = new KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>(sourceAndMessage.Key, reservedMessage);
+                        reserved.Add(reservedSourceAndMessage);
+                    }
+                }
+
+                Debug.Assert(reserved.Count <= _batchSize, "Expected the number of reserved sources to be <= the number needed for a batch.");
+
+                // We've now reserved what we can.  Either consume them all or release them all.
+                if (reserved.Count > 0)
+                {
+                    // TriggerBatch adds a complication here.  It's possible that while we've been reserving
+                    // messages, Post has been used to queue up a bunch of messages to the batch,
+                    // and that if the batch has a max group count and enough messages were posted,
+                    // we could now be declining.  In that case, if we don't specially handle the situation,
+                    // we could consume messages that we won't be able to turn into a batch, since MaxNumberOfGroups
+                    // implies the block will only ever output a maximum number of batches.  To handle this,
+                    // we start declining before consuming, now that we know we'll have enough to form a batch.
+                    // (If an exception occurs after we do this, we'll be shutting down the block anyway.)
+                    // This is also why we still reserve/consume rather than just consume in forced mode, 
+                    // so that we only consume if we're able to turn what we consume into a batch.
+                    bool shouldProceedToConsume = true;
+                    if (allowFewerThanBatchSize)
+                    {
+                        lock (IncomingLock)
+                        {
+                            if (!_decliningPermanently &&
+                                (_batchesCompleted + 1) >= _dataflowBlockOptions.ActualMaxNumberOfGroups)
+                            // Note that this logic differs from the other location where we do a similar check.
+                            // Here we want to know whether we're one shy of meeting our quota, because we'll accept
+                            // any size batch.  Elsewhere, we need to know whether we have the right number of messages
+                            // queued up.
+                            {
+                                shouldProceedToConsume = !_decliningPermanently;
+                                _decliningPermanently = true;
+                            }
+                        }
+                    }
+
+                    if (shouldProceedToConsume && (allowFewerThanBatchSize || reserved.Count == _batchSize))
+                    {
+                        ConsumeReservedMessagesNonGreedy();
+                    }
+                    else
+                    {
+                        ReleaseReservedMessages(throwOnFirstException: true);
+                    }
+                }
+
+                // Clear out the reserved list, so as not to hold onto values longer than necessary.
+                // We don't do this in case of failure, because the higher-level exception handler
+                // accesses the list to try to release reservations.
+                reserved.Clear();
+            }
+
+            /// <summary>Retrieves postponed items in greedy bounded mode.</summary>
+            /// <remarks>Whether we'll accept consuming fewer elements than the defined batch size.</remarks>
+            private void RetrievePostponedItemsGreedyBounded(bool allowFewerThanBatchSize)
+            {
+                Contract.Requires(_dataflowBlockOptions.Greedy, "This method may only be used in greedy mode.");
+                Contract.Requires(_nonGreedyState != null, "Non-greedy state is required for non-greedy mode.");
+                Contract.Requires(_boundingState != null, "Bounding state is required when in bounded mode.");
+                Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+                // Shortcuts just to keep the code cleaner
+                QueuedMap<ISourceBlock<T>, DataflowMessageHeader> postponed = _nonGreedyState.PostponedMessages;
+                KeyValuePair<ISourceBlock<T>, DataflowMessageHeader>[] postponedTemp = _nonGreedyState.PostponedMessagesTemp;
+                List<KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>> reserved = _nonGreedyState.ReservedSourcesTemp;
+
+                // Clear the temporary buffer.  This is safe to do without a lock because
+                // it is only accessed by the serial message loop.
+                reserved.Clear();
+
+                int poppedInitially;
+                int boundedCapacityAvailable;
+                int itemCountNeededToCompleteBatch;
+                lock (IncomingLock)
+                {
+                    // If there are not enough postponed items (or if we're not allowing consumption), there's nothing more to be done
+                    boundedCapacityAvailable = BoundedCapacityAvailable;
+                    itemCountNeededToCompleteBatch = _batchSize - _messages.Count;
+                    if (_decliningPermanently ||
+                        postponed.Count == 0 ||
+                        boundedCapacityAvailable <= 0)
+                        return;
+
+                    // Grab an initial batch of postponed messages.
+                    if (boundedCapacityAvailable < itemCountNeededToCompleteBatch) itemCountNeededToCompleteBatch = boundedCapacityAvailable;
+                    poppedInitially = postponed.PopRange(postponedTemp, 0, itemCountNeededToCompleteBatch);
+                    Debug.Assert(poppedInitially > 0, "We received fewer than we expected based on the previous check.");
+                } // Release the lock.  We must not hold it while calling Reserve/Consume/Release.
+
+                // Treat popped messages as reserved. 
+                // We don't have to formally reserve because we are in greedy mode.
+                for (int i = 0; i < poppedInitially; i++)
+                {
+                    KeyValuePair<ISourceBlock<T>, DataflowMessageHeader> sourceAndMessage = postponedTemp[i];
+                    var reservedMessage = new KeyValuePair<DataflowMessageHeader, T>(sourceAndMessage.Value, default(T));
+                    var reservedSourceAndMessage = new KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>(sourceAndMessage.Key, reservedMessage);
+                    reserved.Add(reservedSourceAndMessage);
+                }
+                Array.Clear(postponedTemp, 0, postponedTemp.Length); // clear out the temp array so as not to hold onto messages too long
+
+                // If we didn't reserve enough to make a batch, start picking off postponed messages
+                // one by one until we either have enough reserved or we run out of messages
+                while (reserved.Count < itemCountNeededToCompleteBatch)
+                {
+                    KeyValuePair<ISourceBlock<T>, DataflowMessageHeader> sourceAndMessage;
+                    lock (IncomingLock)
+                    {
+                        if (!postponed.TryPop(out sourceAndMessage)) break;
+                    } // Release the lock.  We must not hold it while calling Reserve/Consume/Release.
+
+                    var reservedMessage = new KeyValuePair<DataflowMessageHeader, T>(sourceAndMessage.Value, default(T));
+                    var reservedSourceAndMessage = new KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>(sourceAndMessage.Key, reservedMessage);
+                    reserved.Add(reservedSourceAndMessage);
+                }
+
+                Debug.Assert(reserved.Count <= itemCountNeededToCompleteBatch, "Expected the number of reserved sources to be <= the number needed for a batch.");
+
+                // We've gotten as many postponed messages as we can. Try to consume them.
+                if (reserved.Count > 0)
+                {
+                    // TriggerBatch adds a complication here.  It's possible that while we've been reserving
+                    // messages, Post has been used to queue up a bunch of messages to the batch,
+                    // and that if the batch has a max group count and enough messages were posted,
+                    // we could now be declining.  In that case, if we don't specially handle the situation,
+                    // we could consume messages that we won't be able to turn into a batch, since MaxNumberOfGroups
+                    // implies the block will only ever output a maximum number of batches.  To handle this,
+                    // we start declining before consuming, now that we know we'll have enough to form a batch.
+                    // (If an exception occurs after we do this, we'll be shutting down the block anyway.)
+                    // This is also why we still reserve/consume rather than just consume in forced mode, 
+                    // so that we only consume if we're able to turn what we consume into a batch.
+                    bool shouldProceedToConsume = true;
+                    if (allowFewerThanBatchSize)
+                    {
+                        lock (IncomingLock)
+                        {
+                            if (!_decliningPermanently &&
+                                (_batchesCompleted + 1) >= _dataflowBlockOptions.ActualMaxNumberOfGroups)
+                            // Note that this logic differs from the other location where we do a similar check.
+                            // Here we want to know whether we're one shy of meeting our quota, because we'll accept
+                            // any size batch.  Elsewhere, we need to know whether we have the right number of messages
+                            // queued up.
+                            {
+                                shouldProceedToConsume = !_decliningPermanently;
+                                _decliningPermanently = true;
+                            }
+                        }
+                    }
+
+                    if (shouldProceedToConsume)
+                    {
+                        ConsumeReservedMessagesGreedyBounded();
+                    }
+                }
+
+                // Clear out the reserved list, so as not to hold onto values longer than necessary.
+                // We don't do this in case of failure, because the higher-level exception handler
+                // accesses the list to try to release reservations.
+                reserved.Clear();
+            }
+
+            /// <summary>
+            /// Consumes all of the reserved messages stored in the non-greedy state's temporary reserved source list.
+            /// </summary>
+            private void ConsumeReservedMessagesNonGreedy()
+            {
+                Contract.Requires(!_dataflowBlockOptions.Greedy, "This method may only be used in non-greedy mode.");
+                Contract.Requires(_nonGreedyState != null, "Non-greedy state is required for non-greedy mode.");
+                Contract.Requires(_nonGreedyState.ReservedSourcesTemp != null, "ReservedSourcesTemp should have been initialized.");
+                Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+                // Consume the reserved items and store the data.
+                List<KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>> reserved = _nonGreedyState.ReservedSourcesTemp;
+                for (int i = 0; i < reserved.Count; i++)
+                {
+                    // We can only store the data into _messages while holding the IncomingLock, we 
+                    // don't want to allocate extra objects for each batch, and we don't want to 
+                    // take and release the lock for each individual item... but we do need to use
+                    // the consumed message rather than the initial one.  To handle this, because KeyValuePair is immutable,
+                    // we store a new KVP with the newly consumed message back into the temp list, so that we can
+                    // then enumerate the temp list en mass while taking the lock once afterwards.
+                    KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>> sourceAndMessage = reserved[i];
+                    reserved[i] = default(KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>); // in case of exception from ConsumeMessage
+                    bool consumed;
+                    T consumedValue = sourceAndMessage.Key.ConsumeMessage(sourceAndMessage.Value.Key, _owningBatch, out consumed);
+                    if (!consumed)
+                    {
+                        // The protocol broke down, so throw an exception, as this is fatal.  Before doing so, though,
+                        // null out all of the messages we've already consumed, as a higher-level event handler
+                        // should try to release everything in the reserved list.
+                        for (int prev = 0; prev < i; prev++) reserved[prev] = default(KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>);
+                        throw new InvalidOperationException(SR.InvalidOperation_FailedToConsumeReservedMessage);
+                    }
+
+                    var consumedMessage = new KeyValuePair<DataflowMessageHeader, T>(sourceAndMessage.Value.Key, consumedValue);
+                    var consumedSourceAndMessage = new KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>(sourceAndMessage.Key, consumedMessage);
+                    reserved[i] = consumedSourceAndMessage;
+                }
+                lock (IncomingLock)
+                {
+                    // Increment the bounding count with the number of consumed messages 
+                    if (_boundingState != null) _boundingState.CurrentCount += reserved.Count;
+
+                    // Enqueue the consumed mesasages
+                    foreach (KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>> sourceAndMessage in reserved)
+                    {
+                        _messages.Enqueue(sourceAndMessage.Value.Value);
+                    }
+                }
+            }
+
+            /// <summary>
+            /// Consumes all of the reserved messages stored in the non-greedy state's temporary reserved source list.
+            /// </summary>
+            private void ConsumeReservedMessagesGreedyBounded()
+            {
+                Contract.Requires(_dataflowBlockOptions.Greedy, "This method may only be used in greedy mode.");
+                Contract.Requires(_nonGreedyState != null, "Non-greedy state is required for non-greedy mode.");
+                Contract.Requires(_nonGreedyState.ReservedSourcesTemp != null, "ReservedSourcesTemp should have been initialized.");
+                Contract.Requires(_boundingState != null, "Bounded state is required for bounded mode.");
+                Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+                // Consume the reserved items and store the data.
+                int consumedCount = 0;
+                List<KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>> reserved = _nonGreedyState.ReservedSourcesTemp;
+                for (int i = 0; i < reserved.Count; i++)
+                {
+                    // We can only store the data into _messages while holding the IncomingLock, we 
+                    // don't want to allocate extra objects for each batch, and we don't want to 
+                    // take and release the lock for each individual item... but we do need to use
+                    // the consumed message rather than the initial one.  To handle this, because KeyValuePair is immutable,
+                    // we store a new KVP with the newly consumed message back into the temp list, so that we can
+                    // then enumerate the temp list en mass while taking the lock once afterwards.
+                    KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>> sourceAndMessage = reserved[i];
+                    reserved[i] = default(KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>); // in case of exception from ConsumeMessage
+                    bool consumed;
+                    T consumedValue = sourceAndMessage.Key.ConsumeMessage(sourceAndMessage.Value.Key, _owningBatch, out consumed);
+                    if (consumed)
+                    {
+                        var consumedMessage = new KeyValuePair<DataflowMessageHeader, T>(sourceAndMessage.Value.Key, consumedValue);
+                        var consumedSourceAndMessage = new KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>(sourceAndMessage.Key, consumedMessage);
+                        reserved[i] = consumedSourceAndMessage;
+
+                        // Keep track of the actually consumed messages
+                        consumedCount++;
+                    }
+                }
+                lock (IncomingLock)
+                {
+                    // Increment the bounding count with the number of consumed messages 
+                    if (_boundingState != null) _boundingState.CurrentCount += consumedCount;
+
+                    // Enqueue the consumed mesasages
+                    foreach (KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>> sourceAndMessage in reserved)
+                    {
+                        // If we didn't consume this message, the KeyValuePai will be default, i.e. the source will be null
+                        if (sourceAndMessage.Key != null) _messages.Enqueue(sourceAndMessage.Value.Value);
+                    }
+                }
+            }
+
+            /// <summary>
+            /// Releases all of the reserved messages stored in the non-greedy state's temporary reserved source list.
+            /// </summary>
+            /// <param name="throwOnFirstException">
+            /// Whether to allow an exception from a release to propagate immediately,
+            /// or to delay propagation until all releases have been attempted.
+            /// </param>
+            [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+            internal void ReleaseReservedMessages(bool throwOnFirstException)
+            {
+                Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+                Debug.Assert(_nonGreedyState != null, "Non-greedy state is required for non-greedy mode.");
+                Debug.Assert(_nonGreedyState.ReservedSourcesTemp != null, "Should have been initialized");
+
+                List<Exception> exceptions = null;
+
+                List<KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>> reserved = _nonGreedyState.ReservedSourcesTemp;
+                for (int i = 0; i < reserved.Count; i++)
+                {
+                    KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>> sourceAndMessage = reserved[i];
+                    reserved[i] = default(KeyValuePair<ISourceBlock<T>, KeyValuePair<DataflowMessageHeader, T>>);
+                    ISourceBlock<T> source = sourceAndMessage.Key;
+                    KeyValuePair<DataflowMessageHeader, T> message = sourceAndMessage.Value;
+                    if (source != null && message.Key.IsValid)
+                    {
+                        try { source.ReleaseReservation(message.Key, _owningBatch); }
+                        catch (Exception e)
+                        {
+                            if (throwOnFirstException) throw;
+                            if (exceptions == null) exceptions = new List<Exception>(1);
+                            exceptions.Add(e);
+                        }
+                    }
+                }
+
+                if (exceptions != null) throw new AggregateException(exceptions);
+            }
+
+            /// <summary>Notifies the block that one or more items was removed from the queue.</summary>
+            /// <param name="numItemsRemoved">The number of items removed.</param>
+            internal void OnItemsRemoved(int numItemsRemoved)
+            {
+                Contract.Requires(numItemsRemoved > 0, "Should only be called for a positive number of items removed.");
+                Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+                // If we're bounding, we need to know when an item is removed so that we
+                // can update the count that's mirroring the actual count in the source's queue,
+                // and potentially kick off processing to start consuming postponed messages.
+                if (_boundingState != null)
+                {
+                    lock (IncomingLock)
+                    {
+                        // Decrement the count, which mirrors the count in the source half
+                        Debug.Assert(_boundingState.CurrentCount - numItemsRemoved >= 0,
+                            "It should be impossible to have a negative number of items.");
+                        _boundingState.CurrentCount -= numItemsRemoved;
+
+                        ProcessAsyncIfNecessary();
+                        CompleteBlockIfPossible();
+                    }
+                }
+            }
+
+            /// <summary>Counts the input items in a single output item or in a list of output items.</summary>
+            /// <param name="singleOutputItem">A single output item. Only considered if multipleOutputItems == null.</param>
+            /// <param name="multipleOutputItems">A list of output items. May be null.</param>
+            internal static int CountItems(T[] singleOutputItem, IList<T[]> multipleOutputItems)
+            {
+                // If multipleOutputItems == null, then singleOutputItem is the subject of counting
+                if (multipleOutputItems == null) return singleOutputItem.Length;
+
+                // multipleOutputItems != null. Count the elements in each item.
+                int count = 0;
+                foreach (T[] item in multipleOutputItems) count += item.Length;
+                return count;
+            }
+
+            /// <summary>Gets the number of messages waiting to be processed.  This must only be used from the debugger as it avoids taking necessary locks.</summary>
+            private int InputCountForDebugger { get { return _messages.Count; } }
+
+            /// <summary>Gets information about this helper to be used for display in a debugger.</summary>
+            /// <returns>Debugging information about this target.</returns>
+            internal DebuggingInformation GetDebuggingInformation() { return new DebuggingInformation(this); }
+
+            /// <summary>Gets the object to display in the debugger display attribute.</summary>
+            [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+            private object DebuggerDisplayContent
+            {
+                get
+                {
+                    var displayBatch = _owningBatch as IDebuggerDisplay;
+                    return string.Format("Block=\"{0}\"",
+                        displayBatch != null ? displayBatch.Content : _owningBatch);
+                }
+            }
+
+            /// <summary>Provides a wrapper for commonly needed debugging information.</summary>
+            internal sealed class DebuggingInformation
+            {
+                /// <summary>The target being viewed.</summary>
+                private BatchBlockTargetCore _target;
+
+                /// <summary>Initializes the debugging helper.</summary>
+                /// <param name="target">The target being viewed.</param>
+                public DebuggingInformation(BatchBlockTargetCore target) { _target = target; }
+
+                /// <summary>Gets the messages waiting to be processed.</summary>
+                public IEnumerable<T> InputQueue { get { return _target._messages.ToList(); } }
+                /// <summary>Gets the task being used for input processing.</summary>
+                public Task TaskForInputProcessing { get { return _target._nonGreedyState != null ? _target._nonGreedyState.TaskForInputProcessing : null; } }
+                /// <summary>Gets the collection of postponed messages.</summary>
+                public QueuedMap<ISourceBlock<T>, DataflowMessageHeader> PostponedMessages { get { return _target._nonGreedyState != null ? _target._nonGreedyState.PostponedMessages : null; } }
+                /// <summary>Gets whether the block is declining further messages.</summary>
+                public bool IsDecliningPermanently { get { return _target._decliningPermanently; } }
+                /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+                public GroupingDataflowBlockOptions DataflowBlockOptions { get { return _target._dataflowBlockOptions; } }
+                /// <summary>Gets the number of batches that have been completed.</summary>
+                public long NumberOfBatchesCompleted { get { return _target._batchesCompleted; } }
+            }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/BatchedJoinBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/BatchedJoinBlock.cs
new file mode 100644 (file)
index 0000000..f1cf990
--- /dev/null
@@ -0,0 +1,783 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// BatchedJoinBlock.cs
+//
+//
+// A propagator block that groups individual messages of multiple types
+// into tuples of arrays of those messages.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Threading.Tasks.Dataflow.Internal;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>
+    /// Provides a dataflow block that batches a specified number of inputs of potentially differing types
+    /// provided to one or more of its targets.
+    /// </summary>
+    /// <typeparam name="T1">Specifies the type of data accepted by the block's first target.</typeparam>
+    /// <typeparam name="T2">Specifies the type of data accepted by the block's second target.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(BatchedJoinBlock<,>.DebugView))]
+    public sealed class BatchedJoinBlock<T1, T2> : IReceivableSourceBlock<Tuple<IList<T1>, IList<T2>>>, IDebuggerDisplay
+    {
+        /// <summary>The size of the batches generated by this BatchedJoin.</summary>
+        private readonly int _batchSize;
+        /// <summary>State shared among the targets.</summary>
+        private readonly BatchedJoinBlockTargetSharedResources _sharedResources;
+        /// <summary>The target providing inputs of type T1.</summary>
+        private readonly BatchedJoinBlockTarget<T1> _target1;
+        /// <summary>The target providing inputs of type T2.</summary>
+        private readonly BatchedJoinBlockTarget<T2> _target2;
+        /// <summary>The source side.</summary>
+        private readonly SourceCore<Tuple<IList<T1>, IList<T2>>> _source;
+
+        /// <summary>Initializes this <see cref="BatchedJoinBlock{T1,T2}"/> with the specified configuration.</summary>
+        /// <param name="batchSize">The number of items to group into a batch.</param>
+        /// <exception cref="System.ArgumentOutOfRangeException">The <paramref name="batchSize"/> must be positive.</exception>
+        public BatchedJoinBlock(Int32 batchSize) :
+            this(batchSize, GroupingDataflowBlockOptions.Default)
+        { }
+
+        /// <summary>Initializes this <see cref="BatchedJoinBlock{T1,T2}"/> with the specified configuration.</summary>
+        /// <param name="batchSize">The number of items to group into a batch.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="BatchedJoinBlock{T1,T2}"/>.</param>
+        /// <exception cref="System.ArgumentOutOfRangeException">The <paramref name="batchSize"/> must be positive.</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        public BatchedJoinBlock(Int32 batchSize, GroupingDataflowBlockOptions dataflowBlockOptions)
+        {
+            // Validate arguments
+            if (batchSize < 1) throw new ArgumentOutOfRangeException("batchSize", SR.ArgumentOutOfRange_GenericPositive);
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+            if (!dataflowBlockOptions.Greedy) throw new ArgumentException(SR.Argument_NonGreedyNotSupported, "dataflowBlockOptions");
+            if (dataflowBlockOptions.BoundedCapacity != DataflowBlockOptions.Unbounded) throw new ArgumentException(SR.Argument_BoundedCapacityNotSupported, "dataflowBlockOptions");
+            Contract.EndContractBlock();
+
+            // Store arguments
+            _batchSize = batchSize;
+            dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone();
+
+            // Configure the source
+            _source = new SourceCore<Tuple<IList<T1>, IList<T2>>>(
+                this, dataflowBlockOptions, owningSource => ((BatchedJoinBlock<T1, T2>)owningSource).CompleteEachTarget());
+
+            // The action to run when a batch should be created.  This is typically called
+            // when we have a full batch, but it will also be called when we're done receiving
+            // messages, and thus when there may be a few stragglers we need to make a batch out of.
+            Action createBatchAction = () =>
+            {
+                if (_target1.Count > 0 || _target2.Count > 0)
+                {
+                    _source.AddMessage(Tuple.Create(_target1.GetAndEmptyMessages(), _target2.GetAndEmptyMessages()));
+                }
+            };
+
+            // Configure the targets
+            _sharedResources = new BatchedJoinBlockTargetSharedResources(
+                batchSize, dataflowBlockOptions,
+                createBatchAction,
+                () =>
+                {
+                    createBatchAction();
+                    _source.Complete();
+                },
+                _source.AddException,
+                Complete);
+            _target1 = new BatchedJoinBlockTarget<T1>(_sharedResources);
+            _target2 = new BatchedJoinBlockTarget<T2>(_sharedResources);
+
+            // It is possible that the source half may fault on its own, e.g. due to a task scheduler exception.
+            // In those cases we need to fault the target half to drop its buffered messages and to release its 
+            // reservations. This should not create an infinite loop, because all our implementations are designed
+            // to handle multiple completion requests and to carry over only one.
+            _source.Completion.ContinueWith((completed, state) =>
+            {
+                var thisBlock = ((BatchedJoinBlock<T1, T2>)state) as IDataflowBlock;
+                Debug.Assert(completed.IsFaulted, "The source must be faulted in order to trigger a target completion.");
+                thisBlock.Fault(completed.Exception);
+            }, this, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
+
+            // Handle async cancellation requests by declining on the target
+            Common.WireCancellationToComplete(
+                dataflowBlockOptions.CancellationToken, _source.Completion, state => ((BatchedJoinBlock<T1, T2>)state).CompleteEachTarget(), this);
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCreated(this, dataflowBlockOptions);
+            }
+#endif
+        }
+
+        /// <summary>Gets the size of the batches generated by this <see cref="BatchedJoinBlock{T1,T2}"/>.</summary>
+        public Int32 BatchSize { get { return _batchSize; } }
+
+        /// <summary>Gets a target that may be used to offer messages of the first type.</summary>
+        public ITargetBlock<T1> Target1 { get { return _target1; } }
+
+        /// <summary>Gets a target that may be used to offer messages of the second type.</summary>
+        public ITargetBlock<T2> Target2 { get { return _target2; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public IDisposable LinkTo(ITargetBlock<Tuple<IList<T1>, IList<T2>>> target, DataflowLinkOptions linkOptions)
+        {
+            return _source.LinkTo(target, linkOptions);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public Boolean TryReceive(Predicate<Tuple<IList<T1>, IList<T2>>> filter, out Tuple<IList<T1>, IList<T2>> item)
+        {
+            return _source.TryReceive(filter, out item);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public bool TryReceiveAll(out IList<Tuple<IList<T1>, IList<T2>>> items) { return _source.TryReceiveAll(out items); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="OutputCount"]/*' />
+        public int OutputCount { get { return _source.OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        public Task Completion { get { return _source.Completion; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        public void Complete()
+        {
+            Debug.Assert(_target1 != null, "_target1 not initialized");
+            Debug.Assert(_target2 != null, "_target2 not initialized");
+
+            _target1.Complete();
+            _target2.Complete();
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            Debug.Assert(_sharedResources != null, "_sharedResources not initialized");
+            Debug.Assert(_sharedResources._incomingLock != null, "_sharedResources._incomingLock not initialized");
+            Debug.Assert(_source != null, "_source not initialized");
+
+            lock (_sharedResources._incomingLock)
+            {
+                if (!_sharedResources._decliningPermanently) _source.AddException(exception);
+            }
+            Complete();
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+        Tuple<IList<T1>, IList<T2>> ISourceBlock<Tuple<IList<T1>, IList<T2>>>.ConsumeMessage(
+            DataflowMessageHeader messageHeader, ITargetBlock<Tuple<IList<T1>, IList<T2>>> target, out Boolean messageConsumed)
+        {
+            return _source.ConsumeMessage(messageHeader, target, out messageConsumed);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+        bool ISourceBlock<Tuple<IList<T1>, IList<T2>>>.ReserveMessage(
+            DataflowMessageHeader messageHeader, ITargetBlock<Tuple<IList<T1>, IList<T2>>> target)
+        {
+            return _source.ReserveMessage(messageHeader, target);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+        void ISourceBlock<Tuple<IList<T1>, IList<T2>>>.ReleaseReservation(
+            DataflowMessageHeader messageHeader, ITargetBlock<Tuple<IList<T1>, IList<T2>>> target)
+        {
+            _source.ReleaseReservation(messageHeader, target);
+        }
+
+        /// <summary>
+        /// Invokes Complete on each target
+        /// </summary>
+        private void CompleteEachTarget()
+        {
+            _target1.Complete();
+            _target2.Complete();
+        }
+
+        /// <summary>Gets the number of messages waiting to be processed.  This must only be used from the debugger as it avoids taking necessary locks.</summary>
+        private int OutputCountForDebugger { get { return _source.GetDebuggingInformation().OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="ToString"]/*' />
+        public override string ToString() { return Common.GetNameForDebugger(this, _source.DataflowBlockOptions); }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                return string.Format("{0}, BatchSize={1}, OutputCount={2}",
+                    Common.GetNameForDebugger(this, _source.DataflowBlockOptions),
+                    BatchSize,
+                    OutputCountForDebugger);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for the Transform.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The block being viewed.</summary>
+            private readonly BatchedJoinBlock<T1, T2> _batchedJoinBlock;
+            /// <summary>The source half of the block being viewed.</summary>
+            private readonly SourceCore<Tuple<IList<T1>, IList<T2>>>.DebuggingInformation _sourceDebuggingInformation;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="batchedJoinBlock">The batched join being viewed.</param>
+            public DebugView(BatchedJoinBlock<T1, T2> batchedJoinBlock)
+            {
+                Contract.Requires(batchedJoinBlock != null, "Need a block with which to construct the debug view.");
+                _batchedJoinBlock = batchedJoinBlock;
+                _sourceDebuggingInformation = batchedJoinBlock._source.GetDebuggingInformation();
+            }
+
+            /// <summary>Gets the messages waiting to be received.</summary>
+            public IEnumerable<Tuple<IList<T1>, IList<T2>>> OutputQueue { get { return _sourceDebuggingInformation.OutputQueue; } }
+            /// <summary>Gets the number of batches created.</summary>
+            public long BatchesCreated { get { return _batchedJoinBlock._sharedResources._batchesCreated; } }
+            /// <summary>Gets the number of items remaining to form a batch.</summary>
+            public int RemainingItemsForBatch { get { return _batchedJoinBlock._sharedResources._remainingItemsInBatch; } }
+
+            /// <summary>Gets the size of the batches generated by this BatchedJoin.</summary>
+            public Int32 BatchSize { get { return _batchedJoinBlock._batchSize; } }
+            /// <summary>Gets the first target.</summary>
+            public ITargetBlock<T1> Target1 { get { return _batchedJoinBlock._target1; } }
+            /// <summary>Gets the second target.</summary>
+            public ITargetBlock<T2> Target2 { get { return _batchedJoinBlock._target2; } }
+
+            /// <summary>Gets the task being used for output processing.</summary>
+            public Task TaskForOutputProcessing { get { return _sourceDebuggingInformation.TaskForOutputProcessing; } }
+
+            /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+            public GroupingDataflowBlockOptions DataflowBlockOptions { get { return (GroupingDataflowBlockOptions)_sourceDebuggingInformation.DataflowBlockOptions; } }
+            /// <summary>Gets whether the block is completed.</summary>
+            public bool IsCompleted { get { return _sourceDebuggingInformation.IsCompleted; } }
+            /// <summary>Gets the block's Id.</summary>
+            public int Id { get { return Common.GetBlockId(_batchedJoinBlock); } }
+
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public TargetRegistry<Tuple<IList<T1>, IList<T2>>> LinkedTargets { get { return _sourceDebuggingInformation.LinkedTargets; } }
+            /// <summary>Gets the target that holds a reservation on the next message, if any.</summary>
+            public ITargetBlock<Tuple<IList<T1>, IList<T2>>> NextMessageReservedFor { get { return _sourceDebuggingInformation.NextMessageReservedFor; } }
+        }
+    }
+
+    /// <summary>
+    /// Provides a dataflow block that batches a specified number of inputs of potentially differing types
+    /// provided to one or more of its targets.
+    /// </summary>
+    /// <typeparam name="T1">Specifies the type of data accepted by the block's first target.</typeparam>
+    /// <typeparam name="T2">Specifies the type of data accepted by the block's second target.</typeparam>
+    /// <typeparam name="T3">Specifies the type of data accepted by the block's third target.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(BatchedJoinBlock<,,>.DebugView))]
+    [SuppressMessage("Microsoft.Design", "CA1005:AvoidExcessiveParametersOnGenericTypes")]
+    public sealed class BatchedJoinBlock<T1, T2, T3> : IReceivableSourceBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>>, IDebuggerDisplay
+    {
+        /// <summary>The size of the batches generated by this BatchedJoin.</summary>
+        private readonly int _batchSize;
+        /// <summary>State shared among the targets.</summary>
+        private readonly BatchedJoinBlockTargetSharedResources _sharedResources;
+        /// <summary>The target providing inputs of type T1.</summary>
+        private readonly BatchedJoinBlockTarget<T1> _target1;
+        /// <summary>The target providing inputs of type T2.</summary>
+        private readonly BatchedJoinBlockTarget<T2> _target2;
+        /// <summary>The target providing inputs of type T3.</summary>
+        private readonly BatchedJoinBlockTarget<T3> _target3;
+        /// <summary>The source side.</summary>
+        private readonly SourceCore<Tuple<IList<T1>, IList<T2>, IList<T3>>> _source;
+
+        /// <summary>Initializes this <see cref="BatchedJoinBlock{T1,T2,T3}"/> with the specified configuration.</summary>
+        /// <param name="batchSize">The number of items to group into a batch.</param>
+        /// <exception cref="System.ArgumentOutOfRangeException">The <paramref name="batchSize"/> must be positive.</exception>
+        public BatchedJoinBlock(Int32 batchSize) :
+            this(batchSize, GroupingDataflowBlockOptions.Default)
+        { }
+
+        /// <summary>Initializes this <see cref="BatchedJoinBlock{T1,T2,T3}"/> with the specified configuration.</summary>
+        /// <param name="batchSize">The number of items to group into a batch.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="BatchedJoinBlock{T1,T2}"/>.</param>
+        /// <exception cref="System.ArgumentOutOfRangeException">The <paramref name="batchSize"/> must be positive.</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        public BatchedJoinBlock(Int32 batchSize, GroupingDataflowBlockOptions dataflowBlockOptions)
+        {
+            // Validate arguments
+            if (batchSize < 1) throw new ArgumentOutOfRangeException("batchSize", SR.ArgumentOutOfRange_GenericPositive);
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+            if (!dataflowBlockOptions.Greedy ||
+                dataflowBlockOptions.BoundedCapacity != DataflowBlockOptions.Unbounded)
+            {
+                throw new ArgumentException(SR.Argument_NonGreedyNotSupported, "dataflowBlockOptions");
+            }
+            Contract.EndContractBlock();
+
+            // Store arguments
+            _batchSize = batchSize;
+            dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone();
+
+            // Configure the source
+            _source = new SourceCore<Tuple<IList<T1>, IList<T2>, IList<T3>>>(
+                this, dataflowBlockOptions, owningSource => ((BatchedJoinBlock<T1, T2, T3>)owningSource).CompleteEachTarget());
+
+            // The action to run when a batch should be created.  This is typically called
+            // when we have a full batch, but it will also be called when we're done receiving
+            // messages, and thus when there may be a few stragglers we need to make a batch out of.
+            Action createBatchAction = () =>
+            {
+                if (_target1.Count > 0 || _target2.Count > 0 || _target3.Count > 0)
+                {
+                    _source.AddMessage(Tuple.Create(_target1.GetAndEmptyMessages(), _target2.GetAndEmptyMessages(), _target3.GetAndEmptyMessages()));
+                }
+            };
+
+            // Configure the targets
+            _sharedResources = new BatchedJoinBlockTargetSharedResources(
+                batchSize, dataflowBlockOptions,
+                createBatchAction,
+                () =>
+                {
+                    createBatchAction();
+                    _source.Complete();
+                },
+                _source.AddException,
+                Complete);
+            _target1 = new BatchedJoinBlockTarget<T1>(_sharedResources);
+            _target2 = new BatchedJoinBlockTarget<T2>(_sharedResources);
+            _target3 = new BatchedJoinBlockTarget<T3>(_sharedResources);
+
+            // It is possible that the source half may fault on its own, e.g. due to a task scheduler exception.
+            // In those cases we need to fault the target half to drop its buffered messages and to release its 
+            // reservations. This should not create an infinite loop, because all our implementations are designed
+            // to handle multiple completion requests and to carry over only one.
+            _source.Completion.ContinueWith((completed, state) =>
+            {
+                var thisBlock = ((BatchedJoinBlock<T1, T2, T3>)state) as IDataflowBlock;
+                Debug.Assert(completed.IsFaulted, "The source must be faulted in order to trigger a target completion.");
+                thisBlock.Fault(completed.Exception);
+            }, this, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
+
+            // Handle async cancellation requests by declining on the target
+            Common.WireCancellationToComplete(
+                dataflowBlockOptions.CancellationToken, _source.Completion, state => ((BatchedJoinBlock<T1, T2, T3>)state).CompleteEachTarget(), this);
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCreated(this, dataflowBlockOptions);
+            }
+#endif
+        }
+
+        /// <summary>Gets the size of the batches generated by this <see cref="BatchedJoinBlock{T1,T2,T3}"/>.</summary>
+        public Int32 BatchSize { get { return _batchSize; } }
+
+        /// <summary>Gets a target that may be used to offer messages of the first type.</summary>
+        public ITargetBlock<T1> Target1 { get { return _target1; } }
+
+        /// <summary>Gets a target that may be used to offer messages of the second type.</summary>
+        public ITargetBlock<T2> Target2 { get { return _target2; } }
+
+        /// <summary>Gets a target that may be used to offer messages of the third type.</summary>
+        public ITargetBlock<T3> Target3 { get { return _target3; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+        public IDisposable LinkTo(ITargetBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>> target, DataflowLinkOptions linkOptions)
+        {
+            return _source.LinkTo(target, linkOptions);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public Boolean TryReceive(Predicate<Tuple<IList<T1>, IList<T2>, IList<T3>>> filter, out Tuple<IList<T1>, IList<T2>, IList<T3>> item)
+        {
+            return _source.TryReceive(filter, out item);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public bool TryReceiveAll(out IList<Tuple<IList<T1>, IList<T2>, IList<T3>>> items) { return _source.TryReceiveAll(out items); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="OutputCount"]/*' />
+        public int OutputCount { get { return _source.OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        public Task Completion { get { return _source.Completion; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        public void Complete()
+        {
+            Debug.Assert(_target1 != null, "_target1 not initialized");
+            Debug.Assert(_target2 != null, "_target2 not initialized");
+            Debug.Assert(_target3 != null, "_target3 not initialized");
+
+            _target1.Complete();
+            _target2.Complete();
+            _target3.Complete();
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            Debug.Assert(_sharedResources != null, "_sharedResources not initialized");
+            Debug.Assert(_sharedResources._incomingLock != null, "_sharedResources._incomingLock not initialized");
+            Debug.Assert(_source != null, "_source not initialized");
+
+            lock (_sharedResources._incomingLock)
+            {
+                if (!_sharedResources._decliningPermanently) _source.AddException(exception);
+            }
+            Complete();
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+        Tuple<IList<T1>, IList<T2>, IList<T3>> ISourceBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>>.ConsumeMessage(
+            DataflowMessageHeader messageHeader, ITargetBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>> target, out Boolean messageConsumed)
+        {
+            return _source.ConsumeMessage(messageHeader, target, out messageConsumed);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+        bool ISourceBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>>.ReserveMessage(
+            DataflowMessageHeader messageHeader, ITargetBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>> target)
+        {
+            return _source.ReserveMessage(messageHeader, target);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+        void ISourceBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>>.ReleaseReservation(
+            DataflowMessageHeader messageHeader, ITargetBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>> target)
+        {
+            _source.ReleaseReservation(messageHeader, target);
+        }
+
+        /// <summary>
+        /// Invokes Complete on each target
+        /// </summary>
+        private void CompleteEachTarget()
+        {
+            _target1.Complete();
+            _target2.Complete();
+            _target3.Complete();
+        }
+
+        /// <summary>Gets the number of messages waiting to be processed.  This must only be used from the debugger as it avoids taking necessary locks.</summary>
+        private int OutputCountForDebugger { get { return _source.GetDebuggingInformation().OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="ToString"]/*' />
+        public override string ToString() { return Common.GetNameForDebugger(this, _source.DataflowBlockOptions); }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                return string.Format("{0}, BatchSize={1}, OutputCount={2}",
+                    Common.GetNameForDebugger(this, _source.DataflowBlockOptions),
+                    BatchSize,
+                    OutputCountForDebugger);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for the Transform.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The block being viewed.</summary>
+            private readonly BatchedJoinBlock<T1, T2, T3> _batchedJoinBlock;
+            /// <summary>The source half of the block being viewed.</summary>
+            private readonly SourceCore<Tuple<IList<T1>, IList<T2>, IList<T3>>>.DebuggingInformation _sourceDebuggingInformation;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="batchedJoinBlock">The batched join being viewed.</param>
+            public DebugView(BatchedJoinBlock<T1, T2, T3> batchedJoinBlock)
+            {
+                Contract.Requires(batchedJoinBlock != null, "Need a block with which to construct the debug view.");
+                _sourceDebuggingInformation = batchedJoinBlock._source.GetDebuggingInformation();
+                _batchedJoinBlock = batchedJoinBlock;
+            }
+
+            /// <summary>Gets the messages waiting to be received.</summary>
+            public IEnumerable<Tuple<IList<T1>, IList<T2>, IList<T3>>> OutputQueue { get { return _sourceDebuggingInformation.OutputQueue; } }
+            /// <summary>Gets the number of batches created.</summary>
+            public long BatchesCreated { get { return _batchedJoinBlock._sharedResources._batchesCreated; } }
+            /// <summary>Gets the number of items remaining to form a batch.</summary>
+            public int RemainingItemsForBatch { get { return _batchedJoinBlock._sharedResources._remainingItemsInBatch; } }
+
+            /// <summary>Gets the size of the batches generated by this BatchedJoin.</summary>
+            public Int32 BatchSize { get { return _batchedJoinBlock._batchSize; } }
+            /// <summary>Gets the first target.</summary>
+            public ITargetBlock<T1> Target1 { get { return _batchedJoinBlock._target1; } }
+            /// <summary>Gets the second target.</summary>
+            public ITargetBlock<T2> Target2 { get { return _batchedJoinBlock._target2; } }
+            /// <summary>Gets the second target.</summary>
+            public ITargetBlock<T3> Target3 { get { return _batchedJoinBlock._target3; } }
+
+            /// <summary>Gets the task being used for output processing.</summary>
+            public Task TaskForOutputProcessing { get { return _sourceDebuggingInformation.TaskForOutputProcessing; } }
+
+            /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+            public GroupingDataflowBlockOptions DataflowBlockOptions { get { return (GroupingDataflowBlockOptions)_sourceDebuggingInformation.DataflowBlockOptions; } }
+            /// <summary>Gets whether the block is completed.</summary>
+            public bool IsCompleted { get { return _sourceDebuggingInformation.IsCompleted; } }
+            /// <summary>Gets the block's Id.</summary>
+            public int Id { get { return Common.GetBlockId(_batchedJoinBlock); } }
+
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public TargetRegistry<Tuple<IList<T1>, IList<T2>, IList<T3>>> LinkedTargets { get { return _sourceDebuggingInformation.LinkedTargets; } }
+            /// <summary>Gets the target that holds a reservation on the next message, if any.</summary>
+            public ITargetBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>> NextMessageReservedFor { get { return _sourceDebuggingInformation.NextMessageReservedFor; } }
+        }
+    }
+}
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    /// <summary>Provides the target used in a BatchedJoin.</summary>
+    /// <typeparam name="T">Specifies the type of data accepted by this target.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(BatchedJoinBlockTarget<>.DebugView))]
+    internal sealed class BatchedJoinBlockTarget<T> : ITargetBlock<T>, IDebuggerDisplay
+    {
+        /// <summary>The shared resources used by all targets associated with the same batched join instance.</summary>
+        private readonly BatchedJoinBlockTargetSharedResources _sharedResources;
+        /// <summary>Whether this target is declining future messages.</summary>
+        private bool _decliningPermanently;
+        /// <summary>Input messages for the next batch.</summary>
+        private IList<T> _messages = new List<T>();
+
+        /// <summary>Initializes the target.</summary>
+        /// <param name="sharedResources">The shared resources used by all targets associated with this batched join.</param>
+        internal BatchedJoinBlockTarget(BatchedJoinBlockTargetSharedResources sharedResources)
+        {
+            Contract.Requires(sharedResources != null, "Targets require a shared resources through which to communicate.");
+
+            // Store the shared resources, and register with it to let it know there's 
+            // another target. This is done in a non-thread-safe manner and must be done 
+            // during construction of the batched join instance.
+            _sharedResources = sharedResources;
+            sharedResources._remainingAliveTargets++;
+        }
+
+        /// <summary>Gets the number of messages buffered in this target.</summary>
+        internal int Count { get { return _messages.Count; } }
+
+        /// <summary>Gets the messages buffered by this target and then empties the collection.</summary>
+        /// <returns>The messages from the target.</returns>
+        internal IList<T> GetAndEmptyMessages()
+        {
+            Common.ContractAssertMonitorStatus(_sharedResources._incomingLock, held: true);
+
+            IList<T> toReturn = _messages;
+            _messages = new List<T>();
+            return toReturn;
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+        public DataflowMessageStatus OfferMessage(DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source, Boolean consumeToAccept)
+        {
+            // Validate arguments
+            if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            if (source == null && consumeToAccept) throw new ArgumentException(SR.Argument_CantConsumeFromANullSource, "consumeToAccept");
+            Contract.EndContractBlock();
+
+            lock (_sharedResources._incomingLock)
+            {
+                // If we've already stopped accepting messages, decline permanently
+                if (_decliningPermanently ||
+                    _sharedResources._decliningPermanently)
+                    return DataflowMessageStatus.DecliningPermanently;
+
+                // Consume the message from the source if necessary, and store the message
+                if (consumeToAccept)
+                {
+                    Debug.Assert(source != null, "We must have thrown if source == null && consumeToAccept == true.");
+
+                    bool consumed;
+                    messageValue = source.ConsumeMessage(messageHeader, this, out consumed);
+                    if (!consumed) return DataflowMessageStatus.NotAvailable;
+                }
+                _messages.Add(messageValue);
+
+                // If this message makes a batch, notify the shared resources that a batch has been completed
+                if (--_sharedResources._remainingItemsInBatch == 0) _sharedResources._batchSizeReachedAction();
+
+                return DataflowMessageStatus.Accepted;
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        public void Complete()
+        {
+            lock (_sharedResources._incomingLock)
+            {
+                // If this is the first time Complete is being called,
+                // note that there's now one fewer targets receiving messages for the batched join.
+                if (!_decliningPermanently)
+                {
+                    _decliningPermanently = true;
+                    if (--_sharedResources._remainingAliveTargets == 0) _sharedResources._allTargetsDecliningPermanentlyAction();
+                }
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            lock (_sharedResources._incomingLock)
+            {
+                if (!_decliningPermanently && !_sharedResources._decliningPermanently) _sharedResources._exceptionAction(exception);
+            }
+
+            _sharedResources._completionAction();
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        Task IDataflowBlock.Completion { get { throw new NotSupportedException(SR.NotSupported_MemberNotNeeded); } }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                return string.Format("{0} InputCount={1}",
+                    Common.GetNameForDebugger(this),
+                    _messages.Count);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for the Transform.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The batched join block target being viewed.</summary>
+            private readonly BatchedJoinBlockTarget<T> _batchedJoinBlockTarget;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="batchedJoinBlockTarget">The batched join target being viewed.</param>
+            public DebugView(BatchedJoinBlockTarget<T> batchedJoinBlockTarget)
+            {
+                Contract.Requires(batchedJoinBlockTarget != null, "Need a block with which to construct the debug view.");
+                _batchedJoinBlockTarget = batchedJoinBlockTarget;
+            }
+
+            /// <summary>Gets the messages waiting to be processed.</summary>
+            public IEnumerable<T> InputQueue { get { return _batchedJoinBlockTarget._messages; } }
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            public bool IsDecliningPermanently
+            {
+                get
+                {
+                    return _batchedJoinBlockTarget._decliningPermanently ||
+                        _batchedJoinBlockTarget._sharedResources._decliningPermanently;
+                }
+            }
+        }
+    }
+
+    /// <summary>Provides a container for resources shared across all targets used by the same BatchedJoinBlock instance.</summary>
+    internal sealed class BatchedJoinBlockTargetSharedResources
+    {
+        /// <summary>Initializes the shared resources.</summary>
+        /// <param name="batchSize">The size of a batch to create.</param>
+        /// <param name="dataflowBlockOptions">The options used to configure the shared resources.  Assumed to be immutable.</param>
+        /// <param name="batchSizeReachedAction">The action to invoke when a batch is completed.</param>
+        /// <param name="allTargetsDecliningAction">The action to invoke when no more targets are accepting input.</param>
+        /// <param name="exceptionAction">The action to invoke when an exception needs to be logged.</param>
+        /// <param name="completionAction">The action to invoke when completing, typically invoked due to a call to Fault.</param>
+        internal BatchedJoinBlockTargetSharedResources(
+            int batchSize, GroupingDataflowBlockOptions dataflowBlockOptions,
+            Action batchSizeReachedAction, Action allTargetsDecliningAction,
+            Action<Exception> exceptionAction, Action completionAction)
+        {
+            Debug.Assert(batchSize >= 1, "A positive batch size is required.");
+            Debug.Assert(batchSizeReachedAction != null, "Need an action to invoke for each batch.");
+            Debug.Assert(allTargetsDecliningAction != null, "Need an action to invoke when all targets have declined.");
+
+            _incomingLock = new object();
+            _batchSize = batchSize;
+
+            // _remainingAliveTargets will be incremented when targets are added.
+            // They must be added during construction of the BatchedJoin<...>.
+            _remainingAliveTargets = 0;
+            _remainingItemsInBatch = batchSize;
+
+            // Configure what to do when batches are completed and/or all targets start declining
+            _allTargetsDecliningPermanentlyAction = () =>
+            {
+                // Invoke the caller's action
+                allTargetsDecliningAction();
+
+                // Don't accept any more messages.  We should already
+                // be doing this anyway through each individual target's declining flag, 
+                // so setting it to true is just a precaution and is also helpful
+                // when onceOnly is true.
+                _decliningPermanently = true;
+            };
+            _batchSizeReachedAction = () =>
+            {
+                // Invoke the caller's action
+                batchSizeReachedAction();
+                _batchesCreated++;
+
+                // If this batched join is meant to be used for only a single
+                // batch, invoke the completion logic.
+                if (_batchesCreated >= dataflowBlockOptions.ActualMaxNumberOfGroups) _allTargetsDecliningPermanentlyAction();
+
+                // Otherwise, get ready for the next batch.
+                else _remainingItemsInBatch = _batchSize;
+            };
+            _exceptionAction = exceptionAction;
+            _completionAction = completionAction;
+        }
+
+        /// <summary>
+        /// A lock used to synchronize all incoming messages on all targets. It protects all of the rest 
+        /// of the shared Resources's state and will be held while invoking the delegates.
+        /// </summary>
+        internal readonly object _incomingLock;
+        /// <summary>The size of the batches to generate.</summary>
+        internal readonly int _batchSize;
+
+        /// <summary>The action to invoke when enough elements have been accumulated to make a batch.</summary>
+        internal readonly Action _batchSizeReachedAction;
+        /// <summary>The action to invoke when all targets are declining further messages.</summary>
+        internal readonly Action _allTargetsDecliningPermanentlyAction;
+        /// <summary>The action to invoke when an exception has to be logged.</summary>
+        internal readonly Action<Exception> _exceptionAction;
+        /// <summary>The action to invoke when the owning block has to be completed.</summary>
+        internal readonly Action _completionAction;
+
+        /// <summary>The number of items remaining to form a batch.</summary>
+        internal int _remainingItemsInBatch;
+        /// <summary>The number of targets still alive (i.e. not declining all further messages).</summary>
+        internal int _remainingAliveTargets;
+        /// <summary>Whether all targets should decline all further messages.</summary>
+        internal bool _decliningPermanently;
+        /// <summary>The number of batches created.</summary>
+        internal long _batchesCreated;
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/BroadcastBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/BroadcastBlock.cs
new file mode 100644 (file)
index 0000000..43edb41
--- /dev/null
@@ -0,0 +1,1262 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// BroadcastBlock.cs
+//
+//
+// A propagator that broadcasts incoming messages to all targets, overwriting the current
+// message in the process.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Linq;
+using System.Security;
+using System.Threading.Tasks.Dataflow.Internal;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>
+    /// Provides a buffer for storing at most one element at time, overwriting each message with the next as it arrives.  
+    /// Messages are broadcast to all linked targets, all of which may consume a clone of the message.
+    /// </summary>
+    /// <typeparam name="T">Specifies the type of the data buffered by this dataflow block.</typeparam>
+    /// <remarks>
+    /// <see cref="BroadcastBlock{T}"/> exposes at most one element at a time.  However, unlike
+    /// <see cref="WriteOnceBlock{T}"/>, that element will be overwritten as new elements are provided
+    /// to the block.  <see cref="BroadcastBlock{T}"/> ensures that the current element is broadcast to any
+    /// linked targets before allowing the element to be overwritten.
+    /// </remarks>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(BroadcastBlock<>.DebugView))]
+    public sealed class BroadcastBlock<T> : IPropagatorBlock<T, T>, IReceivableSourceBlock<T>, IDebuggerDisplay
+    {
+        /// <summary>The source side.</summary>
+        private readonly BroadcastingSourceCore<T> _source;
+        /// <summary>Bounding state for when the block is executing in bounded mode.</summary>
+        private readonly BoundingStateWithPostponedAndTask<T> _boundingState;
+        /// <summary>Whether all future messages should be declined.</summary>
+        private bool _decliningPermanently;
+        /// <summary>A task has reserved the right to run the completion routine.</summary>
+        private bool _completionReserved;
+        /// <summary>Gets the lock used to synchronize incoming requests.</summary>
+        private object IncomingLock { get { return _source; } }
+
+        /// <summary>Initializes the <see cref="BroadcastBlock{T}"/> with the specified cloning function.</summary>
+        /// <param name="cloningFunction">
+        /// The function to use to clone the data when offered to other blocks.
+        /// This may be null to indicate that no cloning need be performed.
+        /// </param>
+        public BroadcastBlock(Func<T, T> cloningFunction) :
+            this(cloningFunction, DataflowBlockOptions.Default)
+        { }
+
+        /// <summary>Initializes the <see cref="BroadcastBlock{T}"/>  with the specified cloning function and <see cref="DataflowBlockOptions"/>.</summary>
+        /// <param name="cloningFunction">
+        /// The function to use to clone the data when offered to other blocks.
+        /// This may be null to indicate that no cloning need be performed.
+        /// </param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="BroadcastBlock{T}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        public BroadcastBlock(Func<T, T> cloningFunction, DataflowBlockOptions dataflowBlockOptions)
+        {
+            // Validate arguments
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+            Contract.EndContractBlock();
+
+            // Ensure we have options that can't be changed by the caller
+            dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone();
+
+            // Initialize bounding state if necessary
+            Action<int> onItemsRemoved = null;
+            if (dataflowBlockOptions.BoundedCapacity > 0)
+            {
+                Debug.Assert(dataflowBlockOptions.BoundedCapacity > 0, "Positive bounding count expected; should have been verified by options ctor");
+                onItemsRemoved = OnItemsRemoved;
+                _boundingState = new BoundingStateWithPostponedAndTask<T>(dataflowBlockOptions.BoundedCapacity);
+            }
+
+            // Initialize the source side
+            _source = new BroadcastingSourceCore<T>(this, cloningFunction, dataflowBlockOptions, onItemsRemoved);
+
+            // It is possible that the source half may fault on its own, e.g. due to a task scheduler exception.
+            // In those cases we need to fault the target half to drop its buffered messages and to release its 
+            // reservations. This should not create an infinite loop, because all our implementations are designed
+            // to handle multiple completion requests and to carry over only one.
+            _source.Completion.ContinueWith((completed, state) =>
+            {
+                var thisBlock = ((BroadcastBlock<T>)state) as IDataflowBlock;
+                Debug.Assert(completed.IsFaulted, "The source must be faulted in order to trigger a target completion.");
+                thisBlock.Fault(completed.Exception);
+            }, this, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
+
+            // Handle async cancellation requests by declining on the target
+            Common.WireCancellationToComplete(
+                dataflowBlockOptions.CancellationToken, _source.Completion, state => ((BroadcastBlock<T>)state).Complete(), this);
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCreated(this, dataflowBlockOptions);
+            }
+#endif
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        public void Complete()
+        {
+            CompleteCore(exception: null, storeExceptionEvenIfAlreadyCompleting: false);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            CompleteCore(exception, storeExceptionEvenIfAlreadyCompleting: false);
+        }
+
+        internal void CompleteCore(Exception exception, bool storeExceptionEvenIfAlreadyCompleting, bool revertProcessingState = false)
+        {
+            Contract.Requires(storeExceptionEvenIfAlreadyCompleting || !revertProcessingState,
+                            "Indicating dirty processing state may only come with storeExceptionEvenIfAlreadyCompleting==true.");
+            Contract.EndContractBlock();
+
+            lock (IncomingLock)
+            {
+                // Faulting from outside is allowed until we start declining permanently.
+                // Faulting from inside is allowed at any time.
+                if (exception != null && (!_decliningPermanently || storeExceptionEvenIfAlreadyCompleting))
+                {
+                    _source.AddException(exception);
+                }
+
+                // Revert the dirty processing state if requested
+                if (revertProcessingState)
+                {
+                    Debug.Assert(_boundingState != null && _boundingState.TaskForInputProcessing != null,
+                                    "The processing state must be dirty when revertProcessingState==true.");
+                    _boundingState.TaskForInputProcessing = null;
+                }
+
+                // Trigger completion if possible
+                _decliningPermanently = true;
+                CompleteTargetIfPossible();
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+        public IDisposable LinkTo(ITargetBlock<T> target, DataflowLinkOptions linkOptions) { return _source.LinkTo(target, linkOptions); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+        public Boolean TryReceive(Predicate<T> filter, out T item) { return _source.TryReceive(filter, out item); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+        Boolean IReceivableSourceBlock<T>.TryReceiveAll(out IList<T> items) { return _source.TryReceiveAll(out items); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        public Task Completion { get { return _source.Completion; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+        DataflowMessageStatus ITargetBlock<T>.OfferMessage(DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source, Boolean consumeToAccept)
+        {
+            // Validate arguments
+            if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            if (source == null && consumeToAccept) throw new ArgumentException(SR.Argument_CantConsumeFromANullSource, "consumeToAccept");
+            Contract.EndContractBlock();
+
+            lock (IncomingLock)
+            {
+                // If we've already stopped accepting messages, decline permanently
+                if (_decliningPermanently)
+                {
+                    CompleteTargetIfPossible();
+                    return DataflowMessageStatus.DecliningPermanently;
+                }
+
+                // We can directly accept the message if:
+                //      1) we are not bounding, OR 
+                //      2) we are bounding AND there is room available AND there are no postponed messages AND we are not currently processing. 
+                // (If there were any postponed messages, we would need to postpone so that ordering would be maintained.)
+                // (We should also postpone if we are currently processing, because there may be a race between consuming postponed messages and
+                // accepting new ones directly into the queue.)
+                if (_boundingState == null
+                        ||
+                    (_boundingState.CountIsLessThanBound && _boundingState.PostponedMessages.Count == 0 && _boundingState.TaskForInputProcessing == null))
+                {
+                    // Consume the message from the source if necessary
+                    if (consumeToAccept)
+                    {
+                        Debug.Assert(source != null, "We must have thrown if source == null && consumeToAccept == true.");
+
+                        bool consumed;
+                        messageValue = source.ConsumeMessage(messageHeader, this, out consumed);
+                        if (!consumed) return DataflowMessageStatus.NotAvailable;
+                    }
+
+                    // Once consumed, pass it to the delegate
+                    _source.AddMessage(messageValue);
+                    if (_boundingState != null) _boundingState.CurrentCount += 1; // track this new item against our bound
+                    return DataflowMessageStatus.Accepted;
+                }
+                // Otherwise, we try to postpone if a source was provided
+                else if (source != null)
+                {
+                    Debug.Assert(_boundingState != null && _boundingState.PostponedMessages != null,
+                        "PostponedMessages must have been initialized during construction in bounding mode.");
+
+                    _boundingState.PostponedMessages.Push(source, messageHeader);
+                    return DataflowMessageStatus.Postponed;
+                }
+                // We can't do anything else about this message
+                return DataflowMessageStatus.Declined;
+            }
+        }
+
+        /// <summary>Notifies the block that one or more items was removed from the queue.</summary>
+        /// <param name="numItemsRemoved">The number of items removed.</param>
+        private void OnItemsRemoved(int numItemsRemoved)
+        {
+            Contract.Requires(numItemsRemoved > 0, "Should only be called for a positive number of items removed.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            // If we're bounding, we need to know when an item is removed so that we
+            // can update the count that's mirroring the actual count in the source's queue,
+            // and potentially kick off processing to start consuming postponed messages.
+            if (_boundingState != null)
+            {
+                lock (IncomingLock)
+                {
+                    // Decrement the count, which mirrors the count in the source half
+                    Debug.Assert(_boundingState.CurrentCount - numItemsRemoved >= 0,
+                        "It should be impossible to have a negative number of items.");
+                    _boundingState.CurrentCount -= numItemsRemoved;
+
+                    ConsumeAsyncIfNecessary();
+                    CompleteTargetIfPossible();
+                }
+            }
+        }
+
+        /// <summary>Called when postponed messages may need to be consumed.</summary>
+        /// <param name="isReplacementReplica">Whether this call is the continuation of a previous message loop.</param>
+        internal void ConsumeAsyncIfNecessary(bool isReplacementReplica = false)
+        {
+            Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+            Debug.Assert(_boundingState != null, "Must be in bounded mode.");
+
+            if (!_decliningPermanently &&
+                _boundingState.TaskForInputProcessing == null &&
+                _boundingState.PostponedMessages.Count > 0 &&
+                _boundingState.CountIsLessThanBound)
+            {
+                // Create task and store into _taskForInputProcessing prior to scheduling the task
+                // so that _taskForInputProcessing will be visibly set in the task loop.
+                _boundingState.TaskForInputProcessing =
+                    new Task(state => ((BroadcastBlock<T>)state).ConsumeMessagesLoopCore(), this,
+                        Common.GetCreationOptionsForTask(isReplacementReplica));
+
+#if FEATURE_TRACING
+                DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+                if (etwLog.IsEnabled())
+                {
+                    etwLog.TaskLaunchedForMessageHandling(
+                        this, _boundingState.TaskForInputProcessing, DataflowEtwProvider.TaskLaunchedReason.ProcessingInputMessages,
+                        _boundingState.PostponedMessages.Count);
+                }
+#endif
+
+                // Start the task handling scheduling exceptions
+                Exception exception = Common.StartTaskSafe(_boundingState.TaskForInputProcessing, _source.DataflowBlockOptions.TaskScheduler);
+                if (exception != null)
+                {
+                    // Get out from under currently held locks. Complete re-acquires the locks it needs.
+                    Task.Factory.StartNew(exc => CompleteCore(exception: (Exception)exc, storeExceptionEvenIfAlreadyCompleting: true, revertProcessingState: true),
+                                        exception, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+                }
+            }
+        }
+
+        /// <summary>Task body used to consume postponed messages.</summary>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private void ConsumeMessagesLoopCore()
+        {
+            Contract.Requires(_boundingState != null && _boundingState.TaskForInputProcessing != null,
+                "May only be called in bounded mode and when a task is in flight.");
+            Debug.Assert(_boundingState.TaskForInputProcessing.Id == Task.CurrentId,
+                "This must only be called from the in-flight processing task.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            try
+            {
+                int maxMessagesPerTask = _source.DataflowBlockOptions.ActualMaxMessagesPerTask;
+                for (int i = 0;
+                    i < maxMessagesPerTask && ConsumeAndStoreOneMessageIfAvailable();
+                    i++)
+                    ;
+            }
+            catch (Exception exception)
+            {
+                // Prevent the creation of new processing tasks
+                CompleteCore(exception, storeExceptionEvenIfAlreadyCompleting: true);
+            }
+            finally
+            {
+                lock (IncomingLock)
+                {
+                    // We're no longer processing, so null out the processing task
+                    _boundingState.TaskForInputProcessing = null;
+
+                    // However, we may have given up early because we hit our own configured
+                    // processing limits rather than because we ran out of work to do.  If that's
+                    // the case, make sure we spin up another task to keep going.
+                    ConsumeAsyncIfNecessary(isReplacementReplica: true);
+
+                    // If, however, we stopped because we ran out of work to do and we
+                    // know we'll never get more, then complete.
+                    CompleteTargetIfPossible();
+                }
+            }
+        }
+
+        /// <summary>
+        /// Retrieves one postponed message if there's room and if we can consume a postponed message.
+        /// Stores any consumed message into the source half.
+        /// </summary>
+        /// <returns>true if a message could be consumed and stored; otherwise, false.</returns>
+        /// <remarks>This must only be called from the asynchronous processing loop.</remarks>
+        private bool ConsumeAndStoreOneMessageIfAvailable()
+        {
+            Contract.Requires(_boundingState != null && _boundingState.TaskForInputProcessing != null,
+                "May only be called in bounded mode and when a task is in flight.");
+            Debug.Assert(_boundingState.TaskForInputProcessing.Id == Task.CurrentId,
+                "This must only be called from the in-flight processing task.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            // Loop through the postponed messages until we get one.
+            while (true)
+            {
+                // Get the next item to retrieve.  If there are no more, bail.
+                KeyValuePair<ISourceBlock<T>, DataflowMessageHeader> sourceAndMessage;
+                lock (IncomingLock)
+                {
+                    if (!_boundingState.CountIsLessThanBound) return false;
+                    if (!_boundingState.PostponedMessages.TryPop(out sourceAndMessage)) return false;
+
+                    // Optimistically assume we're going to get the item. This avoids taking the lock
+                    // again if we're right.  If we're wrong, we decrement it later under lock.
+                    _boundingState.CurrentCount++;
+                }
+
+                // Consume the item
+                bool consumed = false;
+                try
+                {
+                    T consumedValue = sourceAndMessage.Key.ConsumeMessage(sourceAndMessage.Value, this, out consumed);
+                    if (consumed)
+                    {
+                        _source.AddMessage(consumedValue);
+                        return true;
+                    }
+                }
+                finally
+                {
+                    // We didn't get the item, so decrement the count to counteract our optimistic assumption.
+                    if (!consumed)
+                    {
+                        lock (IncomingLock) _boundingState.CurrentCount--;
+                    }
+                }
+            }
+        }
+
+        /// <summary>Completes the target, notifying the source, once all completion conditions are met.</summary>
+        private void CompleteTargetIfPossible()
+        {
+            Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+            if (_decliningPermanently &&
+                !_completionReserved &&
+                (_boundingState == null || _boundingState.TaskForInputProcessing == null))
+            {
+                _completionReserved = true;
+
+                // If we're in bounding mode and we have any postponed messages, we need to clear them,
+                // which means calling back to the source, which means we need to escape the incoming lock.
+                if (_boundingState != null && _boundingState.PostponedMessages.Count > 0)
+                {
+                    Task.Factory.StartNew(state =>
+                    {
+                        var thisBroadcastBlock = (BroadcastBlock<T>)state;
+
+                        // Release any postponed messages
+                        List<Exception> exceptions = null;
+                        if (thisBroadcastBlock._boundingState != null)
+                        {
+                            // Note: No locks should be held at this point
+                            Common.ReleaseAllPostponedMessages(thisBroadcastBlock,
+                                                               thisBroadcastBlock._boundingState.PostponedMessages,
+                                                               ref exceptions);
+                        }
+
+                        if (exceptions != null)
+                        {
+                            // It is important to migrate these exceptions to the source part of the owning batch,
+                            // because that is the completion task that is publically exposed.
+                            thisBroadcastBlock._source.AddExceptions(exceptions);
+                        }
+
+                        thisBroadcastBlock._source.Complete();
+                    }, this, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+                }
+                // Otherwise, we can just decline the source directly.
+                else
+                {
+                    _source.Complete();
+                }
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+        T ISourceBlock<T>.ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<T> target, out Boolean messageConsumed)
+        {
+            return _source.ConsumeMessage(messageHeader, target, out messageConsumed);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+        bool ISourceBlock<T>.ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<T> target)
+        {
+            return _source.ReserveMessage(messageHeader, target);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+        void ISourceBlock<T>.ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<T> target)
+        {
+            _source.ReleaseReservation(messageHeader, target);
+        }
+
+        /// <summary>Gets a value to be used for the DebuggerDisplayAttribute.  This must not throw even if HasValue is false.</summary>
+        private bool HasValueForDebugger { get { return _source.GetDebuggingInformation().HasValue; } }
+        /// <summary>Gets a value to be used for the DebuggerDisplayAttribute.  This must not throw even if HasValue is false.</summary>
+        private T ValueForDebugger { get { return _source.GetDebuggingInformation().Value; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="ToString"]/*' />
+        public override string ToString() { return Common.GetNameForDebugger(this, _source.DataflowBlockOptions); }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                return string.Format("{0}, HasValue={1}, Value={2}",
+                    Common.GetNameForDebugger(this, _source.DataflowBlockOptions),
+                    HasValueForDebugger,
+                    ValueForDebugger);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for the BroadcastBlock.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The BroadcastBlock being debugged.</summary>
+            private readonly BroadcastBlock<T> _broadcastBlock;
+            /// <summary>Debug info about the source side of the broadcast.</summary>
+            private readonly BroadcastingSourceCore<T>.DebuggingInformation _sourceDebuggingInformation;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="broadcastBlock">The BroadcastBlock being debugged.</param>
+            public DebugView(BroadcastBlock<T> broadcastBlock)
+            {
+                Contract.Requires(broadcastBlock != null, "Need a block with which to construct the debug view.");
+                _broadcastBlock = broadcastBlock;
+                _sourceDebuggingInformation = broadcastBlock._source.GetDebuggingInformation();
+            }
+
+            /// <summary>Gets the messages waiting to be processed.</summary>
+            public IEnumerable<T> InputQueue { get { return _sourceDebuggingInformation.InputQueue; } }
+            /// <summary>Gets whether the broadcast has a current value.</summary>
+            public bool HasValue { get { return _broadcastBlock.HasValueForDebugger; } }
+            /// <summary>Gets the broadcast's current value.</summary>
+            public T Value { get { return _broadcastBlock.ValueForDebugger; } }
+
+            /// <summary>Gets the task being used for output processing.</summary>
+            public Task TaskForOutputProcessing { get { return _sourceDebuggingInformation.TaskForOutputProcessing; } }
+
+            /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+            public DataflowBlockOptions DataflowBlockOptions { get { return _sourceDebuggingInformation.DataflowBlockOptions; } }
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            public bool IsDecliningPermanently { get { return _broadcastBlock._decliningPermanently; } }
+            /// <summary>Gets whether the block is completed.</summary>
+            public bool IsCompleted { get { return _sourceDebuggingInformation.IsCompleted; } }
+            /// <summary>Gets the block's Id.</summary>
+            public int Id { get { return Common.GetBlockId(_broadcastBlock); } }
+
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public TargetRegistry<T> LinkedTargets { get { return _sourceDebuggingInformation.LinkedTargets; } }
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public ITargetBlock<T> NextMessageReservedFor { get { return _sourceDebuggingInformation.NextMessageReservedFor; } }
+        }
+
+        /// <summary>Provides a core implementation for blocks that implement <see cref="ISourceBlock{TOutput}"/>.</summary>
+        /// <typeparam name="TOutput">Specifies the type of data supplied by the <see cref="SourceCore{TOutput}"/>.</typeparam>
+        [SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
+        [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+        private sealed class BroadcastingSourceCore<TOutput>
+        {
+            /// <summary>A registry used to store all linked targets and information about them.</summary>
+            private readonly TargetRegistry<TOutput> _targetRegistry;
+            /// <summary>All of the output messages queued up to be received by consumers/targets.</summary>
+            private readonly Queue<TOutput> _messages = new Queue<TOutput>();
+            /// <summary>A TaskCompletionSource that represents the completion of this block.</summary>
+            private readonly TaskCompletionSource<VoidResult> _completionTask = new TaskCompletionSource<VoidResult>();
+            /// <summary>
+            /// An action to be invoked on the owner block when an item is removed.
+            /// This may be null if the owner block doesn't need to be notified.
+            /// </summary>
+            private readonly Action<int> _itemsRemovedAction;
+
+            /// <summary>Gets the object to use as the outgoing lock.</summary>
+            private object OutgoingLock { get { return _completionTask; } }
+            /// <summary>Gets the object to use as the value lock.</summary>
+            private object ValueLock { get { return _targetRegistry; } }
+
+            /// <summary>The source utilize this helper.</summary>
+            private readonly BroadcastBlock<TOutput> _owningSource;
+            /// <summary>The options used to configure this block's execution.</summary>
+            private readonly DataflowBlockOptions _dataflowBlockOptions;
+            /// <summary>The cloning function to use.</summary>
+            private readonly Func<TOutput, TOutput> _cloningFunction;
+
+            /// <summary>An indicator whether _currentMessage has a value.</summary>
+            private bool _currentMessageIsValid;
+            /// <summary>The message currently being broadcast.</summary>
+            private TOutput _currentMessage;
+            /// <summary>The target that the next message is reserved for, or null if nothing is reserved.</summary>
+            private ITargetBlock<TOutput> _nextMessageReservedFor;
+            /// <summary>Whether this block should again attempt to offer messages to targets.</summary>
+            private bool _enableOffering;
+            /// <summary>Whether all future messages should be declined.</summary>
+            private bool _decliningPermanently;
+            /// <summary>The task used to process the output and offer it to targets.</summary>
+            private Task _taskForOutputProcessing;
+            /// <summary>Exceptions that may have occurred and gone unhandled during processing.</summary>
+            private List<Exception> _exceptions;
+            /// <summary>Counter for message IDs unique within this source block.</summary>
+            private long _nextMessageId = 1; // We are going to use this value before incrementing.
+            /// <summary>Whether someone has reserved the right to call CompleteBlockOncePossible.</summary>
+            private bool _completionReserved;
+
+            /// <summary>Initializes the source core.</summary>
+            /// <param name="owningSource">The source utilizing this core.</param>
+            /// <param name="cloningFunction">The function to use to clone the data when offered to other blocks.  May be null.</param>
+            /// <param name="dataflowBlockOptions">The options to use to configure the block.</param>
+            /// <param name="itemsRemovedAction">Action to invoke when an item is removed.</param>
+            internal BroadcastingSourceCore(
+                BroadcastBlock<TOutput> owningSource,
+                Func<TOutput, TOutput> cloningFunction,
+                DataflowBlockOptions dataflowBlockOptions,
+                Action<int> itemsRemovedAction)
+            {
+                Contract.Requires(owningSource != null, "Must be associated with a broadcast block.");
+                Contract.Requires(dataflowBlockOptions != null, "Options are required to configure this block.");
+
+                // Store the arguments
+                _owningSource = owningSource;
+                _cloningFunction = cloningFunction;
+                _dataflowBlockOptions = dataflowBlockOptions;
+                _itemsRemovedAction = itemsRemovedAction;
+
+                // Construct members that depend on the arguments
+                _targetRegistry = new TargetRegistry<TOutput>(_owningSource);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+            internal Boolean TryReceive(Predicate<TOutput> filter, out TOutput item)
+            {
+                // Take the lock only long enough to get the message,
+                // synchronizing with other activities on the block.
+                // We don't want to execute the user-provided cloning delegate
+                // while holding the lock.
+                TOutput message;
+                bool isValid;
+                lock (OutgoingLock)
+                {
+                    lock (ValueLock)
+                    {
+                        message = _currentMessage;
+                        isValid = _currentMessageIsValid;
+                    }
+                }
+
+                // Clone and hand back a message if we have one and if it passes the filter.
+                // (A null filter means all messages pass.)
+                if (isValid && (filter == null || filter(message)))
+                {
+                    item = CloneItem(message);
+                    return true;
+                }
+                else
+                {
+                    item = default(TOutput);
+                    return false;
+                }
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+            internal Boolean TryReceiveAll(out IList<TOutput> items)
+            {
+                // Try to receive the one item this block may have.
+                // If we can, give back an array of one item. Otherwise, give back null.
+                TOutput item;
+                if (TryReceive(null, out item))
+                {
+                    items = new TOutput[] { item };
+                    return true;
+                }
+                else
+                {
+                    items = null;
+                    return false;
+                }
+            }
+
+            /// <summary>Adds a message to the source block for propagation.</summary>
+            /// <param name="item">The item to be wrapped in a message to be added.</param>
+            internal void AddMessage(TOutput item)
+            {
+                // This method must not take the outgoing lock, as it will be called in situations
+                // where a derived type's incoming lock is held.  The lock leveling structure
+                // we're employing is such that outgoing may be held while acquiring incoming, but
+                // of course not the other way around.  This is the reason why DataflowSourceBlock
+                // needs ValueLock as well.  Otherwise, it would be pure overhead.
+                lock (ValueLock)
+                {
+                    if (_decliningPermanently) return;
+                    _messages.Enqueue(item);
+                    if (_messages.Count == 1) _enableOffering = true;
+                    OfferAsyncIfNecessary();
+                }
+            }
+
+            /// <summary>Informs the block that it will not be receiving additional messages.</summary>
+            internal void Complete()
+            {
+                lock (ValueLock)
+                {
+                    _decliningPermanently = true;
+
+                    // Complete may be called in a context where an incoming lock is held.  We need to 
+                    // call CompleteBlockIfPossible, but we can't do so if the incoming lock is held.
+                    // However, now that _decliningPermanently has been set, the timing of
+                    // CompleteBlockIfPossible doesn't matter, so we schedule it to run asynchronously
+                    // and take the necessary locks in a situation where we're sure it won't cause a problem.
+                    Task.Factory.StartNew(state =>
+                    {
+                        var thisSourceCore = (BroadcastingSourceCore<TOutput>)state;
+                        lock (thisSourceCore.OutgoingLock)
+                        {
+                            lock (thisSourceCore.ValueLock)
+                            {
+                                thisSourceCore.CompleteBlockIfPossible();
+                            }
+                        }
+                    }, this, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+                }
+            }
+
+            /// <summary>Clones the item.</summary>
+            /// <param name="item">The item to clone.</param>
+            /// <returns>The cloned item.</returns>
+            private TOutput CloneItem(TOutput item)
+            {
+                return _cloningFunction != null ?
+                    _cloningFunction(item) :
+                    item;
+            }
+
+            /// <summary>Offers the current message to a specific target.</summary>
+            /// <param name="target">The target to which to offer the current message.</param>
+            private void OfferCurrentMessageToNewTarget(ITargetBlock<TOutput> target)
+            {
+                Contract.Requires(target != null, "Target required to offer messages to.");
+                Common.ContractAssertMonitorStatus(OutgoingLock, held: true);
+                Common.ContractAssertMonitorStatus(ValueLock, held: false);
+
+                // Get the current message if there is one
+                TOutput currentMessage;
+                bool isValid;
+                lock (ValueLock)
+                {
+                    currentMessage = _currentMessage;
+                    isValid = _currentMessageIsValid;
+                }
+
+                // If there is no valid message yet, there is nothing to offer
+                if (!isValid) return;
+
+                // Offer it to the target.
+                // We must not increment the message ID here. We only do that when we populate _currentMessage, i.e. when we dequeue.
+                bool useCloning = _cloningFunction != null;
+                DataflowMessageStatus result = target.OfferMessage(new DataflowMessageHeader(_nextMessageId), currentMessage, _owningSource, consumeToAccept: useCloning);
+
+                // If accepted and the target was linked as "unlinkAfterOne", remove it
+                if (result == DataflowMessageStatus.Accepted)
+                {
+                    if (!useCloning)
+                    {
+                        // If accepted and the target was linked as "once", mark it for removal.
+                        // If we were forcing consumption, this removal would have already
+                        // happened in ConsumeMessage.
+                        _targetRegistry.Remove(target, onlyIfReachedMaxMessages: true);
+                    }
+                }
+                // If declined permanently, remove it
+                else if (result == DataflowMessageStatus.DecliningPermanently)
+                {
+                    _targetRegistry.Remove(target);
+                }
+                else Debug.Assert(result != DataflowMessageStatus.NotAvailable, "Messages from a Broadcast should never be missed.");
+            }
+
+            /// <summary>Offers messages to targets.</summary>
+            private bool OfferToTargets()
+            {
+                Common.ContractAssertMonitorStatus(OutgoingLock, held: true);
+                Common.ContractAssertMonitorStatus(ValueLock, held: false);
+
+                DataflowMessageHeader header = default(DataflowMessageHeader);
+                TOutput message = default(TOutput);
+                int numDequeuedMessages = 0;
+                lock (ValueLock)
+                {
+                    // If there's a reservation or there aren't any more messages,
+                    // there's nothing for us to do.  If there's no reservation
+                    // and a message is available, dequeue the next one and store it
+                    // as the new current.  If we're now at 0 message, disable further
+                    // propagation until more messages arrive.
+                    if (_nextMessageReservedFor == null && _messages.Count > 0)
+                    {
+                        // If there  are no targets registered, we might as well empty out the broadcast,
+                        // keeping just the last.  Otherwise, it'll happen anyway, but much more expensively.
+                        if (_targetRegistry.FirstTargetNode == null)
+                        {
+                            while (_messages.Count > 1)
+                            {
+                                _messages.Dequeue();
+                                numDequeuedMessages++;
+                            }
+                        }
+
+                        // Get the next message to offer
+                        Debug.Assert(_messages.Count > 0, "There must be at least one message to dequeue.");
+                        _currentMessage = message = _messages.Dequeue();
+                        numDequeuedMessages++;
+                        _currentMessageIsValid = true;
+                        header = new DataflowMessageHeader(++_nextMessageId);
+                        if (_messages.Count == 0) _enableOffering = false;
+                    }
+                    else
+                    {
+                        _enableOffering = false;
+                        return false;
+                    }
+                } // must not hold ValueLock when calling out to targets
+
+                // Offer the message
+                if (header.IsValid)
+                {
+                    // Notify the owner block that our count has decreased
+                    if (_itemsRemovedAction != null) _itemsRemovedAction(numDequeuedMessages);
+
+                    // Offer it to each target, unless a soleTarget was provided, which case just offer it to that one.
+                    TargetRegistry<TOutput>.LinkedTargetInfo cur = _targetRegistry.FirstTargetNode;
+                    while (cur != null)
+                    {
+                        // Note that during OfferMessage, a target may call ConsumeMessage, which may unlink the target
+                        // if the target is registered as "once".  Doing so will remove the target from the targets list.
+                        // As such, we avoid using an enumerator over _targetRegistry and instead walk from back to front,
+                        // so that if an element is removed, it won't affect the rest of our walk.
+                        TargetRegistry<TOutput>.LinkedTargetInfo next = cur.Next;
+                        ITargetBlock<TOutput> target = cur.Target;
+                        OfferMessageToTarget(header, message, target);
+                        cur = next;
+                    }
+                }
+                return true;
+            }
+
+            /// <summary>Offers the specified message to the specified target.</summary>
+            /// <param name="header">The header of the message to offer.</param>
+            /// <param name="message">The message to offer.</param>
+            /// <param name="target">The target to which the message should be offered.</param>
+            /// <remarks>
+            /// This will remove the target from the target registry if the result of the propagation demands it.
+            /// </remarks>
+            private void OfferMessageToTarget(DataflowMessageHeader header, TOutput message, ITargetBlock<TOutput> target)
+            {
+                Common.ContractAssertMonitorStatus(OutgoingLock, held: true);
+                Common.ContractAssertMonitorStatus(ValueLock, held: false);
+
+                // Offer the message.  If there's a cloning function, we force the target to
+                // come back to us to consume the message, allowing us the opportunity to run
+                // the cloning function once we know they want the data.  If there is no cloning
+                // function, there's no reason for them to call back here.
+                bool useCloning = _cloningFunction != null;
+                switch (target.OfferMessage(header, message, _owningSource, consumeToAccept: useCloning))
+                {
+                    case DataflowMessageStatus.Accepted:
+                        if (!useCloning)
+                        {
+                            // If accepted and the target was linked as "once", mark it for removal.
+                            // If we were forcing consumption, this removal would have already
+                            // happened in ConsumeMessage.
+                            _targetRegistry.Remove(target, onlyIfReachedMaxMessages: true);
+                        }
+                        break;
+
+                    case DataflowMessageStatus.DecliningPermanently:
+                        // If declined permanently, mark the target for removal
+                        _targetRegistry.Remove(target);
+                        break;
+
+                    case DataflowMessageStatus.NotAvailable:
+                        Debug.Assert(false, "Messages from a Broadcast should never be missed.");
+                        break;
+                        // No action required for Postponed or Declined
+                }
+            }
+
+            /// <summary>Called when we want to enable asynchronously offering message to targets.</summary>
+            /// <param name="isReplacementReplica">Whether this call is the continuation of a previous message loop.</param>
+            private void OfferAsyncIfNecessary(bool isReplacementReplica = false)
+            {
+                Common.ContractAssertMonitorStatus(ValueLock, held: true);
+                // This method must not take the OutgoingLock.
+
+                bool currentlyProcessing = _taskForOutputProcessing != null;
+                bool processingToDo = _enableOffering && _messages.Count > 0;
+
+                // If there's any work to be done...
+                if (!currentlyProcessing && processingToDo && !CanceledOrFaulted)
+                {
+                    // Create task and store into _taskForOutputProcessing prior to scheduling the task
+                    // so that _taskForOutputProcessing will be visibly set in the task loop.
+                    _taskForOutputProcessing = new Task(thisSourceCore => ((BroadcastingSourceCore<TOutput>)thisSourceCore).OfferMessagesLoopCore(), this,
+                                                        Common.GetCreationOptionsForTask(isReplacementReplica));
+
+#if FEATURE_TRACING
+                    DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+                    if (etwLog.IsEnabled())
+                    {
+                        etwLog.TaskLaunchedForMessageHandling(
+                            _owningSource, _taskForOutputProcessing, DataflowEtwProvider.TaskLaunchedReason.OfferingOutputMessages, _messages.Count);
+                    }
+#endif
+
+                    // Start the task handling scheduling exceptions
+                    Exception exception = Common.StartTaskSafe(_taskForOutputProcessing, _dataflowBlockOptions.TaskScheduler);
+                    if (exception != null)
+                    {
+                        // First, log the exception while the processing state is dirty which is preventing the block from completing.
+                        // Then revert the proactive processing state changes.
+                        // And last, try to complete the block.
+                        AddException(exception);
+                        _decliningPermanently = true;
+                        _taskForOutputProcessing = null;
+
+                        // Get out from under currently held locks - ValueLock is taken, but OutgoingLock may not be.
+                        // Re-take the locks on a separate thread.
+                        Task.Factory.StartNew(state =>
+                        {
+                            var thisSourceCore = (BroadcastingSourceCore<TOutput>)state;
+                            lock (thisSourceCore.OutgoingLock)
+                            {
+                                lock (thisSourceCore.ValueLock)
+                                {
+                                    thisSourceCore.CompleteBlockIfPossible();
+                                }
+                            }
+                        }, this, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+                    }
+                }
+            }
+
+            /// <summary>Task body used to process messages.</summary>
+            [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+            private void OfferMessagesLoopCore()
+            {
+                try
+                {
+                    int maxMessagesPerTask = _dataflowBlockOptions.ActualMaxMessagesPerTask;
+                    lock (OutgoingLock)
+                    {
+                        // Offer as many messages as we can
+                        for (int counter = 0;
+                            counter < maxMessagesPerTask && !CanceledOrFaulted;
+                            counter++)
+                        {
+                            if (!OfferToTargets()) break;
+                        }
+                    }
+                }
+                catch (Exception exception)
+                {
+                    _owningSource.CompleteCore(exception, storeExceptionEvenIfAlreadyCompleting: true);
+                }
+                finally
+                {
+                    lock (OutgoingLock)
+                    {
+                        lock (ValueLock)
+                        {
+                            // We're no longer processing, so null out the processing task
+                            _taskForOutputProcessing = null;
+
+                            // However, we may have given up early because we hit our own configured
+                            // processing limits rather than because we ran out of work to do.  If that's
+                            // the case, make sure we spin up another task to keep going.
+                            OfferAsyncIfNecessary(isReplacementReplica: true);
+
+                            // If, however, we stopped because we ran out of work to do and we
+                            // know we'll never get more, then complete.
+                            CompleteBlockIfPossible();
+                        }
+                    }
+                }
+            }
+
+            /// <summary>Completes the block's processing if there's nothing left to do and never will be.</summary>
+            private void CompleteBlockIfPossible()
+            {
+                Common.ContractAssertMonitorStatus(OutgoingLock, held: true);
+                Common.ContractAssertMonitorStatus(ValueLock, held: true);
+
+                if (!_completionReserved)
+                {
+                    bool currentlyProcessing = _taskForOutputProcessing != null;
+                    bool noMoreMessages = _decliningPermanently && _messages.Count == 0;
+
+                    // Are we done forever?
+                    bool complete = !currentlyProcessing && (noMoreMessages || CanceledOrFaulted);
+                    if (complete)
+                    {
+                        CompleteBlockIfPossible_Slow();
+                    }
+                }
+            }
+
+            /// <summary>
+            /// Slow path for CompleteBlockIfPossible. 
+            /// Separating out the slow path into its own method makes it more likely that the fast path method will get inlined.
+            /// </summary>
+            private void CompleteBlockIfPossible_Slow()
+            {
+                Contract.Requires(_taskForOutputProcessing == null, "There must be no processing tasks.");
+                Contract.Requires(
+                    (_decliningPermanently && _messages.Count == 0) || CanceledOrFaulted,
+                    "There must be no more messages or the block must be canceled or faulted.");
+
+                _completionReserved = true;
+
+                // Run asynchronously to get out of the currently held locks
+                Task.Factory.StartNew(thisSourceCore => ((BroadcastingSourceCore<TOutput>)thisSourceCore).CompleteBlockOncePossible(),
+                    this, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+            }
+
+            /// <summary>
+            /// Completes the block.  This must only be called once, and only once all of the completion conditions are met.
+            /// As such, it must only be called from CompleteBlockIfPossible.
+            /// </summary>
+            private void CompleteBlockOncePossible()
+            {
+                TargetRegistry<TOutput>.LinkedTargetInfo linkedTargets;
+                List<Exception> exceptions;
+
+                // Clear out the target registry and buffers to help avoid memory leaks.
+                // We do not clear _currentMessage, which should remain as that message forever.
+                lock (OutgoingLock)
+                {
+                    // Save the linked list of targets so that it could be traversed later to propagate completion
+                    linkedTargets = _targetRegistry.ClearEntryPoints();
+                    lock (ValueLock)
+                    {
+                        _messages.Clear();
+
+                        // Save a local reference to the exceptions list and null out the field,
+                        // so that if the target side tries to add an exception this late,
+                        // it will go to a separate list (that will be ignored.)
+                        exceptions = _exceptions;
+                        _exceptions = null;
+                    }
+                }
+
+                // If it's due to an exception, finish in a faulted state
+                if (exceptions != null)
+                {
+                    _completionTask.TrySetException(exceptions);
+                }
+                // It's due to cancellation, finish in a canceled state
+                else if (_dataflowBlockOptions.CancellationToken.IsCancellationRequested)
+                {
+                    _completionTask.TrySetCanceled();
+                }
+                // Otherwise, finish in a successful state.
+                else
+                {
+                    _completionTask.TrySetResult(default(VoidResult));
+                }
+
+                // Now that the completion task is completed, we may propagate completion to the linked targets
+                _targetRegistry.PropagateCompletion(linkedTargets);
+#if FEATURE_TRACING
+                DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+                if (etwLog.IsEnabled())
+                {
+                    etwLog.DataflowBlockCompleted(_owningSource);
+                }
+#endif
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+            [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
+            internal IDisposable LinkTo(ITargetBlock<TOutput> target, DataflowLinkOptions linkOptions)
+            {
+                // Validate arguments
+                if (target == null) throw new ArgumentNullException("target");
+                if (linkOptions == null) throw new ArgumentNullException("linkOptions");
+                Contract.EndContractBlock();
+
+                lock (OutgoingLock)
+                {
+                    // If we've completed or completion has at least started, offer the message to this target,
+                    // and propagate completion if that was requested.
+                    // Then there's nothing more to be done.
+                    if (_completionReserved)
+                    {
+                        OfferCurrentMessageToNewTarget(target);
+                        if (linkOptions.PropagateCompletion) Common.PropagateCompletionOnceCompleted(_completionTask.Task, target);
+                        return Disposables.Nop;
+                    }
+
+                    // Otherwise, add the target and then offer it the current
+                    // message.  We do this in this order because offering may
+                    // cause the target to be removed if it's unlinkAfterOne,
+                    // and in the reverse order we would end up adding the target
+                    // after it was "removed".
+                    _targetRegistry.Add(ref target, linkOptions);
+                    OfferCurrentMessageToNewTarget(target);
+                    return Common.CreateUnlinker(OutgoingLock, _targetRegistry, target);
+                }
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+            internal TOutput ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target, out Boolean messageConsumed)
+            {
+                // Validate arguments
+                if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+                if (target == null) throw new ArgumentNullException("target");
+                Contract.EndContractBlock();
+
+                TOutput valueToClone;
+                lock (OutgoingLock) // We may currently be calling out under this lock to the target; requires it to be reentrant
+                {
+                    lock (ValueLock)
+                    {
+                        // If this isn't the next message to be served up, bail
+                        if (messageHeader.Id != _nextMessageId)
+                        {
+                            messageConsumed = false;
+                            return default(TOutput);
+                        }
+
+                        // If the caller has the reservation, release the reservation.
+                        // We still allow others to take the message if there's a reservation.
+                        if (_nextMessageReservedFor == target)
+                        {
+                            _nextMessageReservedFor = null;
+                            _enableOffering = true;
+                        }
+                        _targetRegistry.Remove(target, onlyIfReachedMaxMessages: true);
+
+                        OfferAsyncIfNecessary();
+                        CompleteBlockIfPossible();
+
+                        // Return a clone of the consumed message.
+                        valueToClone = _currentMessage;
+                    }
+                }
+
+                messageConsumed = true;
+                return CloneItem(valueToClone);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+            internal Boolean ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
+            {
+                // Validate arguments
+                if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+                if (target == null) throw new ArgumentNullException("target");
+                Contract.EndContractBlock();
+
+                lock (OutgoingLock)
+                {
+                    // If no one currently holds a reservation...
+                    if (_nextMessageReservedFor == null)
+                    {
+                        lock (ValueLock)
+                        {
+                            // ...and the requested message is next in line, allow it
+                            if (messageHeader.Id == _nextMessageId)
+                            {
+                                _nextMessageReservedFor = target;
+                                _enableOffering = false;
+                                return true;
+                            }
+                        }
+                    }
+                }
+                return false;
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+            internal void ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
+            {
+                // Validate arguments
+                if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+                if (target == null) throw new ArgumentNullException("target");
+                Contract.EndContractBlock();
+
+                lock (OutgoingLock)
+                {
+                    // If someone else holds the reservation, bail.
+                    if (_nextMessageReservedFor != target) throw new InvalidOperationException(SR.InvalidOperation_MessageNotReservedByTarget);
+
+                    TOutput messageToReoffer;
+                    lock (ValueLock)
+                    {
+                        // If this is not the message at the head of the queue, bail
+                        if (messageHeader.Id != _nextMessageId) throw new InvalidOperationException(SR.InvalidOperation_MessageNotReservedByTarget);
+
+                        // Otherwise, release the reservation, and reoffer the message to all targets.
+                        _nextMessageReservedFor = null;
+                        _enableOffering = true;
+                        messageToReoffer = _currentMessage;
+                        OfferAsyncIfNecessary();
+                    }
+
+                    // We need to explicitly reoffer this message to the releaser,
+                    // as otherwise if the target has join behavior it could end up waiting for an offer from
+                    // this broadcast forever, even though data is in fact available.  We could only
+                    // do this if _messages.Count == 0, as if it's > 0 the message will get overwritten
+                    // as part of the asynchronous offering, but for consistency we should always reoffer
+                    // the current message.
+                    OfferMessageToTarget(messageHeader, messageToReoffer, target);
+                }
+            }
+
+            /// <summary>Gets whether the source has had cancellation requested or an exception has occurred.</summary>
+            private bool CanceledOrFaulted
+            {
+                get
+                {
+                    // Cancellation is honored as soon as the CancellationToken has been signaled.
+                    // Faulting is honored after an exception has been encountered and the owning block
+                    // has invoked Complete on us.
+                    return _dataflowBlockOptions.CancellationToken.IsCancellationRequested ||
+                        (Volatile.Read(ref _exceptions) != null && _decliningPermanently);
+                }
+            }
+
+            /// <summary>Adds an individual exceptionto this source.</summary>
+            /// <param name="exception">The exception to add</param>
+            internal void AddException(Exception exception)
+            {
+                Contract.Requires(exception != null, "An exception to add is required.");
+                Contract.Requires(!Completion.IsCompleted || Completion.IsFaulted, "The block must either not be completed or be faulted if we're still storing exceptions.");
+                lock (ValueLock)
+                {
+                    Common.AddException(ref _exceptions, exception);
+                }
+            }
+
+            /// <summary>Adds exceptions to this source.</summary>
+            /// <param name="exceptions">The exceptions to add</param>
+            internal void AddExceptions(List<Exception> exceptions)
+            {
+                Contract.Requires(exceptions != null, "A list of exceptions to add is required.");
+                Contract.Requires(!Completion.IsCompleted || Completion.IsFaulted, "The block must either not be completed or be faulted if we're still storing exceptions.");
+                lock (ValueLock)
+                {
+                    foreach (Exception exception in exceptions)
+                    {
+                        Common.AddException(ref _exceptions, exception);
+                    }
+                }
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+            internal Task Completion { get { return _completionTask.Task; } }
+
+            /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+            internal DataflowBlockOptions DataflowBlockOptions { get { return _dataflowBlockOptions; } }
+
+            /// <summary>Gets the object to display in the debugger display attribute.</summary>
+            [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+            private object DebuggerDisplayContent
+            {
+                get
+                {
+                    var displaySource = _owningSource as IDebuggerDisplay;
+                    return string.Format("Block=\"{0}\"",
+                        displaySource != null ? displaySource.Content : _owningSource);
+                }
+            }
+
+            /// <summary>Gets information about this helper to be used for display in a debugger.</summary>
+            /// <returns>Debugging information about this source core.</returns>
+            internal DebuggingInformation GetDebuggingInformation() { return new DebuggingInformation(this); }
+
+            /// <summary>Provides debugging information about the source core.</summary>
+            internal sealed class DebuggingInformation
+            {
+                /// <summary>The source being viewed.</summary>
+                private BroadcastingSourceCore<TOutput> _source;
+
+                /// <summary>Initializes the type proxy.</summary>
+                /// <param name="source">The source being viewed.</param>
+                public DebuggingInformation(BroadcastingSourceCore<TOutput> source) { _source = source; }
+
+                /// <summary>Gets whether the source contains a current message.</summary>
+                public bool HasValue { get { return _source._currentMessageIsValid; } }
+                /// <summary>Gets the value of the source's current message.</summary>
+                public TOutput Value { get { return _source._currentMessage; } }
+                /// <summary>Gets the number of messages waiting to be made current.</summary>
+                public int InputCount { get { return _source._messages.Count; } }
+                /// <summary>Gets the messages available for receiving.</summary>
+                public IEnumerable<TOutput> InputQueue { get { return _source._messages.ToList(); } }
+                /// <summary>Gets the task being used for output processing.</summary>
+                public Task TaskForOutputProcessing { get { return _source._taskForOutputProcessing; } }
+
+                /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+                public DataflowBlockOptions DataflowBlockOptions { get { return _source._dataflowBlockOptions; } }
+                /// <summary>Gets whether the block is declining further messages.</summary>
+                public bool IsDecliningPermanently { get { return _source._decliningPermanently; } }
+                /// <summary>Gets whether the block is completed.</summary>
+                public bool IsCompleted { get { return _source.Completion.IsCompleted; } }
+
+                /// <summary>Gets the set of all targets linked from this block.</summary>
+                public TargetRegistry<TOutput> LinkedTargets { get { return _source._targetRegistry; } }
+                /// <summary>Gets the target that holds a reservation on the next message, if any.</summary>
+                public ITargetBlock<TOutput> NextMessageReservedFor { get { return _source._nextMessageReservedFor; } }
+            }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/BufferBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/BufferBlock.cs
new file mode 100644 (file)
index 0000000..a2a544b
--- /dev/null
@@ -0,0 +1,492 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// BufferBlock.cs
+//
+//
+// A propagator block that provides support for unbounded and bounded FIFO buffers.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.Contracts;
+using System.Security;
+using System.Threading.Tasks.Dataflow.Internal;
+using System.Diagnostics.CodeAnalysis;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Provides a buffer for storing data.</summary>
+    /// <typeparam name="T">Specifies the type of the data buffered by this dataflow block.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(BufferBlock<>.DebugView))]
+    public sealed class BufferBlock<T> : IPropagatorBlock<T, T>, IReceivableSourceBlock<T>, IDebuggerDisplay
+    {
+        /// <summary>The core logic for the buffer block.</summary>
+        private readonly SourceCore<T> _source;
+        /// <summary>The bounding state for when in bounding mode; null if not bounding.</summary>
+        private readonly BoundingStateWithPostponedAndTask<T> _boundingState;
+        /// <summary>Whether all future messages should be declined on the target.</summary>
+        private bool _targetDecliningPermanently;
+        /// <summary>A task has reserved the right to run the target's completion routine.</summary>
+        private bool _targetCompletionReserved;
+        /// <summary>Gets the lock object used to synchronize incoming requests.</summary>
+        private object IncomingLock { get { return _source; } }
+
+        /// <summary>Initializes the <see cref="BufferBlock{T}"/>.</summary>
+        public BufferBlock() :
+            this(DataflowBlockOptions.Default)
+        { }
+
+        /// <summary>Initializes the <see cref="BufferBlock{T}"/> with the specified <see cref="DataflowBlockOptions"/>.</summary>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="BufferBlock{T}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        public BufferBlock(DataflowBlockOptions dataflowBlockOptions)
+        {
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+            Contract.EndContractBlock();
+
+            // Ensure we have options that can't be changed by the caller
+            dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone();
+
+            // Initialize bounding state if necessary
+            Action<ISourceBlock<T>, int> onItemsRemoved = null;
+            if (dataflowBlockOptions.BoundedCapacity > 0)
+            {
+                onItemsRemoved = (owningSource, count) => ((BufferBlock<T>)owningSource).OnItemsRemoved(count);
+                _boundingState = new BoundingStateWithPostponedAndTask<T>(dataflowBlockOptions.BoundedCapacity);
+            }
+
+            // Initialize the source state
+            _source = new SourceCore<T>(this, dataflowBlockOptions,
+                owningSource => ((BufferBlock<T>)owningSource).Complete(),
+                onItemsRemoved);
+
+            // It is possible that the source half may fault on its own, e.g. due to a task scheduler exception.
+            // In those cases we need to fault the target half to drop its buffered messages and to release its 
+            // reservations. This should not create an infinite loop, because all our implementations are designed
+            // to handle multiple completion requests and to carry over only one.
+            _source.Completion.ContinueWith((completed, state) =>
+            {
+                var thisBlock = ((BufferBlock<T>)state) as IDataflowBlock;
+                Debug.Assert(completed.IsFaulted, "The source must be faulted in order to trigger a target completion.");
+                thisBlock.Fault(completed.Exception);
+            }, this, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
+
+            // Handle async cancellation requests by declining on the target
+            Common.WireCancellationToComplete(
+                dataflowBlockOptions.CancellationToken, _source.Completion, owningSource => ((BufferBlock<T>)owningSource).Complete(), this);
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCreated(this, dataflowBlockOptions);
+            }
+#endif
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+        DataflowMessageStatus ITargetBlock<T>.OfferMessage(DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source, Boolean consumeToAccept)
+        {
+            // Validate arguments
+            if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            if (source == null && consumeToAccept) throw new ArgumentException(SR.Argument_CantConsumeFromANullSource, "consumeToAccept");
+            Contract.EndContractBlock();
+
+            lock (IncomingLock)
+            {
+                // If we've already stopped accepting messages, decline permanently
+                if (_targetDecliningPermanently)
+                {
+                    CompleteTargetIfPossible();
+                    return DataflowMessageStatus.DecliningPermanently;
+                }
+
+                // We can directly accept the message if:
+                //      1) we are not bounding, OR 
+                //      2) we are bounding AND there is room available AND there are no postponed messages AND we are not currently processing. 
+                // (If there were any postponed messages, we would need to postpone so that ordering would be maintained.)
+                // (We should also postpone if we are currently processing, because there may be a race between consuming postponed messages and
+                // accepting new ones directly into the queue.)
+                if (_boundingState == null
+                        ||
+                    (_boundingState.CountIsLessThanBound && _boundingState.PostponedMessages.Count == 0 && _boundingState.TaskForInputProcessing == null))
+                {
+                    // Consume the message from the source if necessary
+                    if (consumeToAccept)
+                    {
+                        Debug.Assert(source != null, "We must have thrown if source == null && consumeToAccept == true.");
+
+                        bool consumed;
+                        messageValue = source.ConsumeMessage(messageHeader, this, out consumed);
+                        if (!consumed) return DataflowMessageStatus.NotAvailable;
+                    }
+
+                    // Once consumed, pass it to the source
+                    _source.AddMessage(messageValue);
+                    if (_boundingState != null) _boundingState.CurrentCount++;
+
+                    return DataflowMessageStatus.Accepted;
+                }
+                // Otherwise, we try to postpone if a source was provided
+                else if (source != null)
+                {
+                    Debug.Assert(_boundingState != null && _boundingState.PostponedMessages != null,
+                        "PostponedMessages must have been initialized during construction in bounding mode.");
+
+                    _boundingState.PostponedMessages.Push(source, messageHeader);
+                    return DataflowMessageStatus.Postponed;
+                }
+                // We can't do anything else about this message
+                return DataflowMessageStatus.Declined;
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        public void Complete() { CompleteCore(exception: null, storeExceptionEvenIfAlreadyCompleting: false); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            CompleteCore(exception, storeExceptionEvenIfAlreadyCompleting: false);
+        }
+
+        private void CompleteCore(Exception exception, bool storeExceptionEvenIfAlreadyCompleting, bool revertProcessingState = false)
+        {
+            Contract.Requires(storeExceptionEvenIfAlreadyCompleting || !revertProcessingState,
+                            "Indicating dirty processing state may only come with storeExceptionEvenIfAlreadyCompleting==true.");
+            Contract.EndContractBlock();
+
+            lock (IncomingLock)
+            {
+                // Faulting from outside is allowed until we start declining permanently.
+                // Faulting from inside is allowed at any time.
+                if (exception != null && (!_targetDecliningPermanently || storeExceptionEvenIfAlreadyCompleting))
+                {
+                    _source.AddException(exception);
+                }
+
+                // Revert the dirty processing state if requested
+                if (revertProcessingState)
+                {
+                    Debug.Assert(_boundingState != null && _boundingState.TaskForInputProcessing != null,
+                                    "The processing state must be dirty when revertProcessingState==true.");
+                    _boundingState.TaskForInputProcessing = null;
+                }
+
+                // Trigger completion
+                _targetDecliningPermanently = true;
+                CompleteTargetIfPossible();
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+        public IDisposable LinkTo(ITargetBlock<T> target, DataflowLinkOptions linkOptions) { return _source.LinkTo(target, linkOptions); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+        public Boolean TryReceive(Predicate<T> filter, out T item) { return _source.TryReceive(filter, out item); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+        public Boolean TryReceiveAll(out IList<T> items) { return _source.TryReceiveAll(out items); }
+
+        /// <summary>Gets the number of items currently stored in the buffer.</summary>
+        public Int32 Count { get { return _source.OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        public Task Completion { get { return _source.Completion; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+        T ISourceBlock<T>.ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<T> target, out Boolean messageConsumed)
+        {
+            return _source.ConsumeMessage(messageHeader, target, out messageConsumed);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+        bool ISourceBlock<T>.ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<T> target)
+        {
+            return _source.ReserveMessage(messageHeader, target);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+        void ISourceBlock<T>.ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<T> target)
+        {
+            _source.ReleaseReservation(messageHeader, target);
+        }
+
+        /// <summary>Notifies the block that one or more items was removed from the queue.</summary>
+        /// <param name="numItemsRemoved">The number of items removed.</param>
+        private void OnItemsRemoved(int numItemsRemoved)
+        {
+            Contract.Requires(numItemsRemoved > 0, "A positive number of items to remove is required.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            // If we're bounding, we need to know when an item is removed so that we
+            // can update the count that's mirroring the actual count in the source's queue,
+            // and potentially kick off processing to start consuming postponed messages.
+            if (_boundingState != null)
+            {
+                lock (IncomingLock)
+                {
+                    // Decrement the count, which mirrors the count in the source half
+                    Debug.Assert(_boundingState.CurrentCount - numItemsRemoved >= 0,
+                        "It should be impossible to have a negative number of items.");
+                    _boundingState.CurrentCount -= numItemsRemoved;
+
+                    ConsumeAsyncIfNecessary();
+                    CompleteTargetIfPossible();
+                }
+            }
+        }
+
+        /// <summary>Called when postponed messages may need to be consumed.</summary>
+        /// <param name="isReplacementReplica">Whether this call is the continuation of a previous message loop.</param>
+        internal void ConsumeAsyncIfNecessary(bool isReplacementReplica = false)
+        {
+            Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+            Debug.Assert(_boundingState != null, "Must be in bounded mode.");
+
+            if (!_targetDecliningPermanently &&
+                _boundingState.TaskForInputProcessing == null &&
+                _boundingState.PostponedMessages.Count > 0 &&
+                _boundingState.CountIsLessThanBound)
+            {
+                // Create task and store into _taskForInputProcessing prior to scheduling the task
+                // so that _taskForInputProcessing will be visibly set in the task loop.
+                _boundingState.TaskForInputProcessing =
+                    new Task(state => ((BufferBlock<T>)state).ConsumeMessagesLoopCore(), this,
+                        Common.GetCreationOptionsForTask(isReplacementReplica));
+
+#if FEATURE_TRACING
+                DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+                if (etwLog.IsEnabled())
+                {
+                    etwLog.TaskLaunchedForMessageHandling(
+                        this, _boundingState.TaskForInputProcessing, DataflowEtwProvider.TaskLaunchedReason.ProcessingInputMessages,
+                        _boundingState.PostponedMessages.Count);
+                }
+#endif
+
+                // Start the task handling scheduling exceptions
+                Exception exception = Common.StartTaskSafe(_boundingState.TaskForInputProcessing, _source.DataflowBlockOptions.TaskScheduler);
+                if (exception != null)
+                {
+                    // Get out from under currently held locks. CompleteCore re-acquires the locks it needs.
+                    Task.Factory.StartNew(exc => CompleteCore(exception: (Exception)exc, storeExceptionEvenIfAlreadyCompleting: true, revertProcessingState: true),
+                                        exception, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+                }
+            }
+        }
+
+
+        /// <summary>Task body used to consume postponed messages.</summary>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private void ConsumeMessagesLoopCore()
+        {
+            Contract.Requires(_boundingState != null && _boundingState.TaskForInputProcessing != null,
+                "May only be called in bounded mode and when a task is in flight.");
+            Debug.Assert(_boundingState.TaskForInputProcessing.Id == Task.CurrentId,
+                "This must only be called from the in-flight processing task.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            try
+            {
+                int maxMessagesPerTask = _source.DataflowBlockOptions.ActualMaxMessagesPerTask;
+                for (int i = 0;
+                    i < maxMessagesPerTask && ConsumeAndStoreOneMessageIfAvailable();
+                    i++)
+                    ;
+            }
+            catch (Exception exc)
+            {
+                // Prevent the creation of new processing tasks
+                CompleteCore(exc, storeExceptionEvenIfAlreadyCompleting: true);
+            }
+            finally
+            {
+                lock (IncomingLock)
+                {
+                    // We're no longer processing, so null out the processing task
+                    _boundingState.TaskForInputProcessing = null;
+
+                    // However, we may have given up early because we hit our own configured
+                    // processing limits rather than because we ran out of work to do.  If that's
+                    // the case, make sure we spin up another task to keep going.
+                    ConsumeAsyncIfNecessary(isReplacementReplica: true);
+
+                    // If, however, we stopped because we ran out of work to do and we
+                    // know we'll never get more, then complete.
+                    CompleteTargetIfPossible();
+                }
+            }
+        }
+
+        /// <summary>
+        /// Retrieves one postponed message if there's room and if we can consume a postponed message.
+        /// Stores any consumed message into the source half.
+        /// </summary>
+        /// <returns>true if a message could be consumed and stored; otherwise, false.</returns>
+        /// <remarks>This must only be called from the asynchronous processing loop.</remarks>
+        private bool ConsumeAndStoreOneMessageIfAvailable()
+        {
+            Contract.Requires(_boundingState != null && _boundingState.TaskForInputProcessing != null,
+                "May only be called in bounded mode and when a task is in flight.");
+            Debug.Assert(_boundingState.TaskForInputProcessing.Id == Task.CurrentId,
+                "This must only be called from the in-flight processing task.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            // Loop through the postponed messages until we get one.
+            while (true)
+            {
+                // Get the next item to retrieve.  If there are no more, bail.
+                KeyValuePair<ISourceBlock<T>, DataflowMessageHeader> sourceAndMessage;
+                lock (IncomingLock)
+                {
+                    if (!_boundingState.CountIsLessThanBound) return false;
+                    if (!_boundingState.PostponedMessages.TryPop(out sourceAndMessage)) return false;
+
+                    // Optimistically assume we're going to get the item. This avoids taking the lock
+                    // again if we're right.  If we're wrong, we decrement it later under lock.
+                    _boundingState.CurrentCount++;
+                }
+
+                // Consume the item
+                bool consumed = false;
+                try
+                {
+                    T consumedValue = sourceAndMessage.Key.ConsumeMessage(sourceAndMessage.Value, this, out consumed);
+                    if (consumed)
+                    {
+                        _source.AddMessage(consumedValue);
+                        return true;
+                    }
+                }
+                finally
+                {
+                    // We didn't get the item, so decrement the count to counteract our optimistic assumption.
+                    if (!consumed)
+                    {
+                        lock (IncomingLock) _boundingState.CurrentCount--;
+                    }
+                }
+            }
+        }
+
+        /// <summary>Completes the target, notifying the source, once all completion conditions are met.</summary>
+        private void CompleteTargetIfPossible()
+        {
+            Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+            if (_targetDecliningPermanently &&
+                !_targetCompletionReserved &&
+                (_boundingState == null || _boundingState.TaskForInputProcessing == null))
+            {
+                _targetCompletionReserved = true;
+
+                // If we're in bounding mode and we have any postponed messages, we need to clear them,
+                // which means calling back to the source, which means we need to escape the incoming lock.
+                if (_boundingState != null && _boundingState.PostponedMessages.Count > 0)
+                {
+                    Task.Factory.StartNew(state =>
+                    {
+                        var thisBufferBlock = (BufferBlock<T>)state;
+
+                        // Release any postponed messages
+                        List<Exception> exceptions = null;
+                        if (thisBufferBlock._boundingState != null)
+                        {
+                            // Note: No locks should be held at this point
+                            Common.ReleaseAllPostponedMessages(thisBufferBlock,
+                                                               thisBufferBlock._boundingState.PostponedMessages,
+                                                               ref exceptions);
+                        }
+
+                        if (exceptions != null)
+                        {
+                            // It is important to migrate these exceptions to the source part of the owning batch,
+                            // because that is the completion task that is publically exposed.
+                            thisBufferBlock._source.AddExceptions(exceptions);
+                        }
+
+                        thisBufferBlock._source.Complete();
+                    }, this, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+                }
+                // Otherwise, we can just decline the source directly.
+                else
+                {
+                    _source.Complete();
+                }
+            }
+        }
+
+        /// <summary>Gets the number of messages in the buffer.  This must only be used from the debugger as it avoids taking necessary locks.</summary>
+        private int CountForDebugger { get { return _source.GetDebuggingInformation().OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="ToString"]/*' />
+        public override string ToString() { return Common.GetNameForDebugger(this, _source.DataflowBlockOptions); }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                return string.Format("{0}, Count={1}",
+                    Common.GetNameForDebugger(this, _source.DataflowBlockOptions),
+                    CountForDebugger);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for the BufferBlock.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The buffer block.</summary>
+            private readonly BufferBlock<T> _bufferBlock;
+            /// <summary>The buffer's source half.</summary>
+            private readonly SourceCore<T>.DebuggingInformation _sourceDebuggingInformation;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="bufferBlock">The BufferBlock being viewed.</param>
+            public DebugView(BufferBlock<T> bufferBlock)
+            {
+                Contract.Requires(bufferBlock != null, "Need a block with which to construct the debug view.");
+                _bufferBlock = bufferBlock;
+                _sourceDebuggingInformation = bufferBlock._source.GetDebuggingInformation();
+            }
+
+            /// <summary>Gets the collection of postponed message headers.</summary>
+            public QueuedMap<ISourceBlock<T>, DataflowMessageHeader> PostponedMessages
+            {
+                get { return _bufferBlock._boundingState != null ? _bufferBlock._boundingState.PostponedMessages : null; }
+            }
+            /// <summary>Gets the messages in the buffer.</summary>
+            public IEnumerable<T> Queue { get { return _sourceDebuggingInformation.OutputQueue; } }
+
+            /// <summary>The task used to process messages.</summary>
+            public Task TaskForInputProcessing { get { return _bufferBlock._boundingState != null ? _bufferBlock._boundingState.TaskForInputProcessing : null; } }
+            /// <summary>Gets the task being used for output processing.</summary>
+            public Task TaskForOutputProcessing { get { return _sourceDebuggingInformation.TaskForOutputProcessing; } }
+
+            /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+            public DataflowBlockOptions DataflowBlockOptions { get { return _sourceDebuggingInformation.DataflowBlockOptions; } }
+
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            public bool IsDecliningPermanently { get { return _bufferBlock._targetDecliningPermanently; } }
+            /// <summary>Gets whether the block is completed.</summary>
+            public bool IsCompleted { get { return _sourceDebuggingInformation.IsCompleted; } }
+            /// <summary>Gets the block's Id.</summary>
+            public int Id { get { return Common.GetBlockId(_bufferBlock); } }
+
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public TargetRegistry<T> LinkedTargets { get { return _sourceDebuggingInformation.LinkedTargets; } }
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public ITargetBlock<T> NextMessageReservedFor { get { return _sourceDebuggingInformation.NextMessageReservedFor; } }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/JoinBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/JoinBlock.cs
new file mode 100644 (file)
index 0000000..cbfa49d
--- /dev/null
@@ -0,0 +1,1482 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// JoinBlock.cs
+//
+//
+// Blocks that join multiple messages of different types together into a tuple,
+// with one item per type.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Linq;
+using System.Security;
+using System.Threading.Tasks.Dataflow.Internal;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>
+    /// Provides a dataflow block that joins across multiple dataflow sources, not necessarily of the same type, 
+    /// waiting for one item to arrive for each type before they’re all released together as a tuple of one item per type.
+    /// </summary>
+    /// <typeparam name="T1">Specifies the type of data accepted by the block's first target.</typeparam>
+    /// <typeparam name="T2">Specifies the type of data accepted by the block's second target.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(JoinBlock<,>.DebugView))]
+    public sealed class JoinBlock<T1, T2> : IReceivableSourceBlock<Tuple<T1, T2>>, IDebuggerDisplay
+    {
+        /// <summary>Resources shared by all targets for this join block.</summary>
+        private readonly JoinBlockTargetSharedResources _sharedResources;
+        /// <summary>The source half of this join.</summary>
+        private readonly SourceCore<Tuple<T1, T2>> _source;
+        /// <summary>The first target.</summary>
+        private readonly JoinBlockTarget<T1> _target1;
+        /// <summary>The second target.</summary>
+        private readonly JoinBlockTarget<T2> _target2;
+
+        /// <summary>Initializes the <see cref="JoinBlock{T1,T2}"/>.</summary>
+        public JoinBlock() :
+            this(GroupingDataflowBlockOptions.Default)
+        { }
+
+        /// <summary>Initializes the <see cref="JoinBlock{T1,T2}"/>.</summary>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="JoinBlock{T1,T2}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        public JoinBlock(GroupingDataflowBlockOptions dataflowBlockOptions)
+        {
+            // Validate arguments
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+            Contract.EndContractBlock();
+
+            // Ensure we have options that can't be changed by the caller
+            dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone();
+
+            // Initialize bounding state if necessary
+            Action<ISourceBlock<Tuple<T1, T2>>, int> onItemsRemoved = null;
+            if (dataflowBlockOptions.BoundedCapacity > 0) onItemsRemoved = (owningSource, count) => ((JoinBlock<T1, T2>)owningSource)._sharedResources.OnItemsRemoved(count);
+
+            // Configure the source
+            _source = new SourceCore<Tuple<T1, T2>>(this, dataflowBlockOptions,
+                owningSource => ((JoinBlock<T1, T2>)owningSource)._sharedResources.CompleteEachTarget(),
+                onItemsRemoved);
+
+            // Configure targets
+            var targets = new JoinBlockTargetBase[2];
+            _sharedResources = new JoinBlockTargetSharedResources(this, targets,
+                () =>
+                {
+                    _source.AddMessage(Tuple.Create(_target1.GetOneMessage(), _target2.GetOneMessage()));
+                },
+                exception =>
+                {
+                    Volatile.Write(ref _sharedResources._hasExceptions, true);
+                    _source.AddException(exception);
+                },
+                dataflowBlockOptions);
+            targets[0] = _target1 = new JoinBlockTarget<T1>(_sharedResources);
+            targets[1] = _target2 = new JoinBlockTarget<T2>(_sharedResources);
+
+            // Let the source know when all targets have completed
+            Task.Factory.ContinueWhenAll(
+                new[] { _target1.CompletionTaskInternal, _target2.CompletionTaskInternal },
+                _ => _source.Complete(),
+                CancellationToken.None, Common.GetContinuationOptions(), TaskScheduler.Default);
+
+            // It is possible that the source half may fault on its own, e.g. due to a task scheduler exception.
+            // In those cases we need to fault the target half to drop its buffered messages and to release its 
+            // reservations. This should not create an infinite loop, because all our implementations are designed
+            // to handle multiple completion requests and to carry over only one.
+            _source.Completion.ContinueWith((completed, state) =>
+            {
+                var thisBlock = ((JoinBlock<T1, T2>)state) as IDataflowBlock;
+                Debug.Assert(completed.IsFaulted, "The source must be faulted in order to trigger a target completion.");
+                thisBlock.Fault(completed.Exception);
+            }, this, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
+
+            // Handle async cancellation requests by declining on the target
+            Common.WireCancellationToComplete(
+                dataflowBlockOptions.CancellationToken, _source.Completion, state => ((JoinBlock<T1, T2>)state)._sharedResources.CompleteEachTarget(), this);
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCreated(this, dataflowBlockOptions);
+            }
+#endif
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+        public IDisposable LinkTo(ITargetBlock<Tuple<T1, T2>> target, DataflowLinkOptions linkOptions)
+        {
+            return _source.LinkTo(target, linkOptions);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+        public Boolean TryReceive(Predicate<Tuple<T1, T2>> filter, out Tuple<T1, T2> item)
+        {
+            return _source.TryReceive(filter, out item);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public bool TryReceiveAll(out IList<Tuple<T1, T2>> items) { return _source.TryReceiveAll(out items); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="OutputCount"]/*' />
+        public int OutputCount { get { return _source.OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        public Task Completion { get { return _source.Completion; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        public void Complete()
+        {
+            Debug.Assert(_target1 != null, "_target1 not initialized");
+            Debug.Assert(_target2 != null, "_target2 not initialized");
+
+            _target1.CompleteCore(exception: null, dropPendingMessages: false, releaseReservedMessages: false);
+            _target2.CompleteCore(exception: null, dropPendingMessages: false, releaseReservedMessages: false);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            Debug.Assert(_sharedResources != null, "_sharedResources not initialized");
+            Debug.Assert(_sharedResources._exceptionAction != null, "_sharedResources._exceptionAction not initialized");
+
+            lock (_sharedResources.IncomingLock)
+            {
+                if (!_sharedResources._decliningPermanently) _sharedResources._exceptionAction(exception);
+            }
+
+            Complete();
+        }
+
+        /// <summary>Gets a target that may be used to offer messages of the first type.</summary>
+        public ITargetBlock<T1> Target1 { get { return _target1; } }
+
+        /// <summary>Gets a target that may be used to offer messages of the second type.</summary>
+        public ITargetBlock<T2> Target2 { get { return _target2; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+        Tuple<T1, T2> ISourceBlock<Tuple<T1, T2>>.ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<Tuple<T1, T2>> target, out Boolean messageConsumed)
+        {
+            return _source.ConsumeMessage(messageHeader, target, out messageConsumed);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+        bool ISourceBlock<Tuple<T1, T2>>.ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<Tuple<T1, T2>> target)
+        {
+            return _source.ReserveMessage(messageHeader, target);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+        void ISourceBlock<Tuple<T1, T2>>.ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<Tuple<T1, T2>> target)
+        {
+            _source.ReleaseReservation(messageHeader, target);
+        }
+
+        /// <summary>Gets the number of messages waiting to be processed.  This must only be used from the debugger as it avoids taking necessary locks.</summary>
+        private int OutputCountForDebugger { get { return _source.GetDebuggingInformation().OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="ToString"]/*' />
+        public override string ToString() { return Common.GetNameForDebugger(this, _source.DataflowBlockOptions); }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                return string.Format("{0}, OutputCount={1}",
+                    Common.GetNameForDebugger(this, _source.DataflowBlockOptions),
+                    OutputCountForDebugger);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for the JoinBlock.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The JoinBlock being viewed.</summary>
+            private readonly JoinBlock<T1, T2> _joinBlock;
+            /// <summary>The source half of the block being viewed.</summary>
+            private readonly SourceCore<Tuple<T1, T2>>.DebuggingInformation _sourceDebuggingInformation;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="joinBlock">The JoinBlock being viewed.</param>
+            public DebugView(JoinBlock<T1, T2> joinBlock)
+            {
+                Contract.Requires(joinBlock != null, "Need a block with which to construct the debug view.");
+                _joinBlock = joinBlock;
+                _sourceDebuggingInformation = joinBlock._source.GetDebuggingInformation();
+            }
+
+            /// <summary>Gets the messages waiting to be received.</summary>
+            public IEnumerable<Tuple<T1, T2>> OutputQueue { get { return _sourceDebuggingInformation.OutputQueue; } }
+            /// <summary>Gets the number of joins created thus far.</summary>
+            public long JoinsCreated { get { return _joinBlock._sharedResources._joinsCreated; } }
+
+            /// <summary>Gets the task being used for input processing.</summary>
+            public Task TaskForInputProcessing { get { return _joinBlock._sharedResources._taskForInputProcessing; } }
+            /// <summary>Gets the task being used for output processing.</summary>
+            public Task TaskForOutputProcessing { get { return _sourceDebuggingInformation.TaskForOutputProcessing; } }
+
+            /// <summary>Gets the GroupingDataflowBlockOptions used to configure this block.</summary>
+            public GroupingDataflowBlockOptions DataflowBlockOptions { get { return (GroupingDataflowBlockOptions)_sourceDebuggingInformation.DataflowBlockOptions; } }
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            public bool IsDecliningPermanently { get { return _joinBlock._sharedResources._decliningPermanently; } }
+            /// <summary>Gets whether the block is completed.</summary>
+            public bool IsCompleted { get { return _sourceDebuggingInformation.IsCompleted; } }
+            /// <summary>Gets the block's Id.</summary>
+            public int Id { get { return Common.GetBlockId(_joinBlock); } }
+
+            /// <summary>Gets the first target.</summary>
+            public ITargetBlock<T1> Target1 { get { return _joinBlock._target1; } }
+            /// <summary>Gets the second target.</summary>
+            public ITargetBlock<T2> Target2 { get { return _joinBlock._target2; } }
+
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public TargetRegistry<Tuple<T1, T2>> LinkedTargets { get { return _sourceDebuggingInformation.LinkedTargets; } }
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public ITargetBlock<Tuple<T1, T2>> NextMessageReservedFor { get { return _sourceDebuggingInformation.NextMessageReservedFor; } }
+        }
+    }
+
+    /// <summary>
+    /// Provides a dataflow block that joins across multiple dataflow sources, not necessarily of the same type, 
+    /// waiting for one item to arrive for each type before they’re all released together as a tuple of one item per type.
+    /// </summary>
+    /// <typeparam name="T1">Specifies the type of data accepted by the block's first target.</typeparam>
+    /// <typeparam name="T2">Specifies the type of data accepted by the block's second target.</typeparam>
+    /// <typeparam name="T3">Specifies the type of data accepted by the block's third target.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(JoinBlock<,,>.DebugView))]
+    [SuppressMessage("Microsoft.Design", "CA1005:AvoidExcessiveParametersOnGenericTypes")]
+    public sealed class JoinBlock<T1, T2, T3> : IReceivableSourceBlock<Tuple<T1, T2, T3>>, IDebuggerDisplay
+    {
+        /// <summary>Resources shared by all targets for this join block.</summary>
+        private readonly JoinBlockTargetSharedResources _sharedResources;
+        /// <summary>The source half of this join.</summary>
+        private readonly SourceCore<Tuple<T1, T2, T3>> _source;
+        /// <summary>The first target.</summary>
+        private readonly JoinBlockTarget<T1> _target1;
+        /// <summary>The second target.</summary>
+        private readonly JoinBlockTarget<T2> _target2;
+        /// <summary>The third target.</summary>
+        private readonly JoinBlockTarget<T3> _target3;
+
+        /// <summary>Initializes the <see cref="JoinBlock{T1,T2,T3}"/>.</summary>
+        public JoinBlock() :
+            this(GroupingDataflowBlockOptions.Default)
+        { }
+
+        /// <summary>Initializes the <see cref="JoinBlock{T1,T2,T3}"/>.</summary>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="JoinBlock{T1,T2}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        public JoinBlock(GroupingDataflowBlockOptions dataflowBlockOptions)
+        {
+            // Validate arguments
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+            Contract.EndContractBlock();
+
+            // Ensure we have options that can't be changed by the caller
+            dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone();
+
+            // Initialize bounding state if necessary
+            Action<ISourceBlock<Tuple<T1, T2, T3>>, int> onItemsRemoved = null;
+            if (dataflowBlockOptions.BoundedCapacity > 0) onItemsRemoved = (owningSource, count) => ((JoinBlock<T1, T2, T3>)owningSource)._sharedResources.OnItemsRemoved(count);
+
+            // Configure the source
+            _source = new SourceCore<Tuple<T1, T2, T3>>(this, dataflowBlockOptions,
+                owningSource => ((JoinBlock<T1, T2, T3>)owningSource)._sharedResources.CompleteEachTarget(),
+                onItemsRemoved);
+
+            // Configure the targets
+            var targets = new JoinBlockTargetBase[3];
+            _sharedResources = new JoinBlockTargetSharedResources(this, targets,
+                () => _source.AddMessage(Tuple.Create(_target1.GetOneMessage(), _target2.GetOneMessage(), _target3.GetOneMessage())),
+                exception =>
+                {
+                    Volatile.Write(ref _sharedResources._hasExceptions, true);
+                    _source.AddException(exception);
+                },
+                dataflowBlockOptions);
+            targets[0] = _target1 = new JoinBlockTarget<T1>(_sharedResources);
+            targets[1] = _target2 = new JoinBlockTarget<T2>(_sharedResources);
+            targets[2] = _target3 = new JoinBlockTarget<T3>(_sharedResources);
+
+            // Let the source know when all targets have completed
+            Task.Factory.ContinueWhenAll(
+                new[] { _target1.CompletionTaskInternal, _target2.CompletionTaskInternal, _target3.CompletionTaskInternal },
+                _ => _source.Complete(),
+                CancellationToken.None, Common.GetContinuationOptions(), TaskScheduler.Default);
+
+            // It is possible that the source half may fault on its own, e.g. due to a task scheduler exception.
+            // In those cases we need to fault the target half to drop its buffered messages and to release its 
+            // reservations. This should not create an infinite loop, because all our implementations are designed
+            // to handle multiple completion requests and to carry over only one.
+            _source.Completion.ContinueWith((completed, state) =>
+            {
+                var thisBlock = ((JoinBlock<T1, T2, T3>)state) as IDataflowBlock;
+                Debug.Assert(completed.IsFaulted, "The source must be faulted in order to trigger a target completion.");
+                thisBlock.Fault(completed.Exception);
+            }, this, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
+
+            // Handle async cancellation requests by declining on the target
+            Common.WireCancellationToComplete(
+                dataflowBlockOptions.CancellationToken, _source.Completion, state => ((JoinBlock<T1, T2, T3>)state)._sharedResources.CompleteEachTarget(), this);
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCreated(this, dataflowBlockOptions);
+            }
+#endif
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+        public IDisposable LinkTo(ITargetBlock<Tuple<T1, T2, T3>> target, DataflowLinkOptions linkOptions)
+        {
+            return _source.LinkTo(target, linkOptions);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+        public Boolean TryReceive(Predicate<Tuple<T1, T2, T3>> filter, out Tuple<T1, T2, T3> item)
+        {
+            return _source.TryReceive(filter, out item);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public bool TryReceiveAll(out IList<Tuple<T1, T2, T3>> items) { return _source.TryReceiveAll(out items); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="OutputCount"]/*' />
+        public int OutputCount { get { return _source.OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        public Task Completion { get { return _source.Completion; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        public void Complete()
+        {
+            Debug.Assert(_target1 != null, "_target1 not initialized");
+            Debug.Assert(_target2 != null, "_target2 not initialized");
+            Debug.Assert(_target3 != null, "_target3 not initialized");
+
+            _target1.CompleteCore(exception: null, dropPendingMessages: false, releaseReservedMessages: false);
+            _target2.CompleteCore(exception: null, dropPendingMessages: false, releaseReservedMessages: false);
+            _target3.CompleteCore(exception: null, dropPendingMessages: false, releaseReservedMessages: false);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            Debug.Assert(_sharedResources != null, "_sharedResources not initialized");
+            Debug.Assert(_sharedResources._exceptionAction != null, "_sharedResources._exceptionAction not initialized");
+
+            lock (_sharedResources.IncomingLock)
+            {
+                if (!_sharedResources._decliningPermanently) _sharedResources._exceptionAction(exception);
+            }
+
+            Complete();
+        }
+
+        /// <summary>Gets a target that may be used to offer messages of the first type.</summary>
+        public ITargetBlock<T1> Target1 { get { return _target1; } }
+
+        /// <summary>Gets a target that may be used to offer messages of the second type.</summary>
+        public ITargetBlock<T2> Target2 { get { return _target2; } }
+
+        /// <summary>Gets a target that may be used to offer messages of the third type.</summary>
+        public ITargetBlock<T3> Target3 { get { return _target3; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+        Tuple<T1, T2, T3> ISourceBlock<Tuple<T1, T2, T3>>.ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<Tuple<T1, T2, T3>> target, out Boolean messageConsumed)
+        {
+            return _source.ConsumeMessage(messageHeader, target, out messageConsumed);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+        bool ISourceBlock<Tuple<T1, T2, T3>>.ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<Tuple<T1, T2, T3>> target)
+        {
+            return _source.ReserveMessage(messageHeader, target);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+        void ISourceBlock<Tuple<T1, T2, T3>>.ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<Tuple<T1, T2, T3>> target)
+        {
+            _source.ReleaseReservation(messageHeader, target);
+        }
+
+        /// <summary>Gets the number of messages waiting to be processed.  This must only be used from the debugger as it avoids taking necessary locks.</summary>
+        private int OutputCountForDebugger { get { return _source.GetDebuggingInformation().OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="ToString"]/*' />
+        public override string ToString() { return Common.GetNameForDebugger(this, _source.DataflowBlockOptions); }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                return string.Format("{0} OutputCount={1}",
+                    Common.GetNameForDebugger(this, _source.DataflowBlockOptions),
+                    OutputCountForDebugger);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for the Batch.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The JoinBlock being viewed.</summary>
+            private readonly JoinBlock<T1, T2, T3> _joinBlock;
+            /// <summary>The source half of the block being viewed.</summary>
+            private readonly SourceCore<Tuple<T1, T2, T3>>.DebuggingInformation _sourceDebuggingInformation;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="joinBlock">The JoinBlock being viewed.</param>
+            public DebugView(JoinBlock<T1, T2, T3> joinBlock)
+            {
+                Contract.Requires(joinBlock != null, "Need a block with which to construct the debug view.");
+                _joinBlock = joinBlock;
+                _sourceDebuggingInformation = joinBlock._source.GetDebuggingInformation();
+            }
+
+            /// <summary>Gets the messages waiting to be received.</summary>
+            public IEnumerable<Tuple<T1, T2, T3>> OutputQueue { get { return _sourceDebuggingInformation.OutputQueue; } }
+            /// <summary>Gets the number of joins created thus far.</summary>
+            public long JoinsCreated { get { return _joinBlock._sharedResources._joinsCreated; } }
+
+            /// <summary>Gets the task being used for input processing.</summary>
+            public Task TaskForInputProcessing { get { return _joinBlock._sharedResources._taskForInputProcessing; } }
+            /// <summary>Gets the task being used for output processing.</summary>
+            public Task TaskForOutputProcessing { get { return _sourceDebuggingInformation.TaskForOutputProcessing; } }
+
+            /// <summary>Gets the GroupingDataflowBlockOptions used to configure this block.</summary>
+            public GroupingDataflowBlockOptions DataflowBlockOptions { get { return (GroupingDataflowBlockOptions)_sourceDebuggingInformation.DataflowBlockOptions; } }
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            public bool IsDecliningPermanently { get { return _joinBlock._sharedResources._decliningPermanently; } }
+            /// <summary>Gets whether the block is completed.</summary>
+            public bool IsCompleted { get { return _sourceDebuggingInformation.IsCompleted; } }
+            /// <summary>Gets the block's Id.</summary>
+            public int Id { get { return Common.GetBlockId(_joinBlock); } }
+
+            /// <summary>Gets the first target.</summary>
+            public ITargetBlock<T1> Target1 { get { return _joinBlock._target1; } }
+            /// <summary>Gets the second target.</summary>
+            public ITargetBlock<T2> Target2 { get { return _joinBlock._target2; } }
+            /// <summary>Gets the third target.</summary>
+            public ITargetBlock<T3> Target3 { get { return _joinBlock._target3; } }
+
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public TargetRegistry<Tuple<T1, T2, T3>> LinkedTargets { get { return _sourceDebuggingInformation.LinkedTargets; } }
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public ITargetBlock<Tuple<T1, T2, T3>> NextMessageReservedFor { get { return _sourceDebuggingInformation.NextMessageReservedFor; } }
+        }
+    }
+}
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    /// <summary>Provides the target used in a Join.</summary>
+    /// <typeparam name="T">Specifies the type of data accepted by this target.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(JoinBlockTarget<>.DebugView))]
+    internal sealed class JoinBlockTarget<T> : JoinBlockTargetBase, ITargetBlock<T>, IDebuggerDisplay
+    {
+        /// <summary>The shared resources used by all targets associated with the same join instance.</summary>
+        private readonly JoinBlockTargetSharedResources _sharedResources;
+        /// <summary>A task representing the completion of the block.</summary>
+        private readonly TaskCompletionSource<VoidResult> _completionTask = new TaskCompletionSource<VoidResult>();
+        /// <summary>Input messages for the next batch.</summary>
+        private readonly Queue<T> _messages;
+        /// <summary>State used when in non-greedy mode.</summary>
+        private readonly NonGreedyState _nonGreedy;
+        /// <summary>Whether this target is declining future messages.</summary>
+        private bool _decliningPermanently;
+
+        /// <summary>State used only when in non-greedy mode.</summary>
+        private sealed class NonGreedyState
+        {
+            /// <summary>Collection of the last postponed message per source.</summary>
+            internal readonly QueuedMap<ISourceBlock<T>, DataflowMessageHeader> PostponedMessages = new QueuedMap<ISourceBlock<T>, DataflowMessageHeader>();
+            /// <summary>The currently reserved message.</summary>
+            internal KeyValuePair<ISourceBlock<T>, DataflowMessageHeader> ReservedMessage;
+            /// <summary>The currently consumed message.</summary>
+            internal KeyValuePair<bool, T> ConsumedMessage;
+        }
+
+        /// <summary>Initializes the target.</summary>
+        /// <param name="sharedResources">The shared resources used by all targets associated with this join.</param>
+        internal JoinBlockTarget(JoinBlockTargetSharedResources sharedResources)
+        {
+            Contract.Requires(sharedResources != null, "Targets need shared resources through which to communicate.");
+
+            // Store arguments and initialize configuration
+            GroupingDataflowBlockOptions dbo = sharedResources._dataflowBlockOptions;
+            _sharedResources = sharedResources;
+            if (!dbo.Greedy || dbo.BoundedCapacity > 0) _nonGreedy = new NonGreedyState();
+            if (dbo.Greedy) _messages = new Queue<T>();
+        }
+
+        /// <summary>Gets a message buffered by this target.</summary>
+        /// <remarks>This must be called while holding the shared Resources's incoming lock.</remarks>
+        internal T GetOneMessage()
+        {
+            Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: true);
+            if (_sharedResources._dataflowBlockOptions.Greedy)
+            {
+                Debug.Assert(_messages != null, "_messages must have been initialized in greedy mode");
+                Debug.Assert(_messages.Count >= 0, "A message must have been consumed by this point.");
+                return _messages.Dequeue();
+            }
+            else
+            {
+                Debug.Assert(_nonGreedy.ConsumedMessage.Key, "A message must have been consumed by this point.");
+                T value = _nonGreedy.ConsumedMessage.Value;
+                _nonGreedy.ConsumedMessage = new KeyValuePair<bool, T>(false, default(T));
+                return value;
+            }
+        }
+
+        /// <summary>Gets whether the target is declining messages.</summary>
+        internal override bool IsDecliningPermanently
+        {
+            get
+            {
+                Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: true);
+                return _decliningPermanently;
+            }
+        }
+
+        /// <summary>Gets whether the target has at least one message available.</summary>
+        internal override bool HasAtLeastOneMessageAvailable
+        {
+            get
+            {
+                Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: true);
+                if (_sharedResources._dataflowBlockOptions.Greedy)
+                {
+                    Debug.Assert(_messages != null, "_messages must have been initialized in greedy mode");
+                    return _messages.Count > 0;
+                }
+                else
+                {
+                    return _nonGreedy.ConsumedMessage.Key;
+                }
+            }
+        }
+
+        /// <summary>Gets whether the target has at least one postponed message.</summary>
+        internal override bool HasAtLeastOnePostponedMessage
+        {
+            get
+            {
+                Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: true);
+                return _nonGreedy != null && _nonGreedy.PostponedMessages.Count > 0;
+            }
+        }
+
+        /// <summary>Gets the number of messages available or postponed.</summary>
+        internal override int NumberOfMessagesAvailableOrPostponed
+        {
+            get
+            {
+                Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: true);
+                return !_sharedResources._dataflowBlockOptions.Greedy ? _nonGreedy.PostponedMessages.Count : _messages.Count;
+            }
+        }
+
+        /// <summary>Gets whether this target has the highest number of available/buffered messages. This is only valid in greedy mode.</summary>
+        internal override bool HasTheHighestNumberOfMessagesAvailable
+        {
+            get
+            {
+                Debug.Assert(_sharedResources._dataflowBlockOptions.Greedy, "This is only valid in greedy mode");
+                Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: true);
+
+                // Note: If there is a tie, we must return true
+                int count = _messages.Count;
+                foreach (JoinBlockTargetBase target in _sharedResources._targets)
+                    if (target != this && target.NumberOfMessagesAvailableOrPostponed > count) 
+                        return false; // Strictly bigger!
+                return true;
+            }
+        }
+
+        /// <summary>Reserves one of the postponed messages.</summary>
+        /// <returns>true if a message was reserved; otherwise, false.</returns>
+        internal override bool ReserveOneMessage()
+        {
+            Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: false);
+            Debug.Assert(!_sharedResources._dataflowBlockOptions.Greedy, "This is only used in non-greedy mode");
+
+            KeyValuePair<ISourceBlock<T>, DataflowMessageHeader> next;
+
+            lock (_sharedResources.IncomingLock)
+            {
+                // The queue must be empty between joins in non-greedy mode
+                Debug.Assert(!HasAtLeastOneMessageAvailable, "The queue must be empty between joins in non-greedy mode");
+
+                // While we are holding the lock, try to pop a postponed message.
+                // If there are no postponed messages, we can't do anything.
+                if (!_nonGreedy.PostponedMessages.TryPop(out next)) return false;
+            }
+
+            // We'll bail out of this loop either when we have reserved a message (true)
+            // or when we have exhausted the list of postponed messages (false)
+            for (; ;)
+            {
+                // Try to reserve the popped message
+                if (next.Key.ReserveMessage(next.Value, this))
+                {
+                    _nonGreedy.ReservedMessage = next;
+                    return true;
+                }
+
+                // We could not reserve that message.
+                // Try to pop another postponed message and continue looping.
+                lock (_sharedResources.IncomingLock)
+                {
+                    // If there are no postponed messages, we can't do anything
+                    if (!_nonGreedy.PostponedMessages.TryPop(out next)) return false;
+                }
+            }
+        }
+
+        /// <summary>Consumes a reserved message.</summary>
+        /// <returns>true if a message was consumed; otherwise, false.</returns>
+        internal override bool ConsumeReservedMessage()
+        {
+            Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: false);
+            Debug.Assert(!_sharedResources._dataflowBlockOptions.Greedy, "This is only used in non-greedy mode");
+            Debug.Assert(_nonGreedy.ReservedMessage.Key != null, "This target must have a reserved message");
+
+            bool consumed;
+            T consumedValue = _nonGreedy.ReservedMessage.Key.ConsumeMessage(_nonGreedy.ReservedMessage.Value, this, out consumed);
+
+            // Null out our reservation
+            _nonGreedy.ReservedMessage = default(KeyValuePair<ISourceBlock<T>, DataflowMessageHeader>);
+
+            // The protocol requires that a reserved message must be consumable,
+            // but it is possible that the source may misbehave. 
+            // In that case complete the target and signal to the owning block to shut down gracefully.
+            if (!consumed)
+            {
+                _sharedResources._exceptionAction(new InvalidOperationException(SR.InvalidOperation_FailedToConsumeReservedMessage));
+
+                // Complete this target, which will trigger completion of the owning join block.
+                CompleteOncePossible();
+
+                // We need to signal to the caller to stop consuming immediately
+                return false;
+            }
+            else
+            {
+                lock (_sharedResources.IncomingLock)
+                {
+                    // Now that we've consumed it, store its data.
+                    Debug.Assert(!_nonGreedy.ConsumedMessage.Key, "There must be no other consumed message");
+                    _nonGreedy.ConsumedMessage = new KeyValuePair<bool, T>(true, consumedValue);
+                    // We don't account bounding per target in non-greedy mode. We do it once per batch (in the loop).
+
+                    CompleteIfLastJoinIsFeasible();
+                }
+            }
+
+            return true;
+        }
+
+        /// <summary>Consumes up to one postponed message in greedy bounded mode.</summary>
+        internal override bool ConsumeOnePostponedMessage()
+        {
+            Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: false);
+            Debug.Assert(_sharedResources._dataflowBlockOptions.Greedy, "This is only used in greedy mode");
+            Debug.Assert(_sharedResources._boundingState != null, "This is only used in bounding mode");
+
+            // We'll bail out of this loop either when we have consumed a message (true)
+            // or when we have exhausted the list of postponed messages (false)
+            while (true)
+            {
+                KeyValuePair<ISourceBlock<T>, DataflowMessageHeader> next;
+                bool hasTheHighestNumberOfMessagesAvailable;
+
+                lock (_sharedResources.IncomingLock)
+                {
+                    // While we are holding the lock, check bounding capacity and try to pop a postponed message.
+                    // If anything fails, we can't do anything.
+                    hasTheHighestNumberOfMessagesAvailable = HasTheHighestNumberOfMessagesAvailable;
+                    bool boundingCapacityAvailable = _sharedResources._boundingState.CountIsLessThanBound || !hasTheHighestNumberOfMessagesAvailable;
+                    if (_decliningPermanently || _sharedResources._decliningPermanently ||
+                        !boundingCapacityAvailable || !_nonGreedy.PostponedMessages.TryPop(out next))
+                        return false;
+                }
+
+                // Try to consume the popped message
+                bool consumed;
+                T consumedValue = next.Key.ConsumeMessage(next.Value, this, out consumed);
+                if (consumed)
+                {
+                    lock (_sharedResources.IncomingLock)
+                    {
+                        // The ranking in highest number of available messages cannot have changed because this task is causing OfferMessage to postpone 
+                        if (hasTheHighestNumberOfMessagesAvailable) _sharedResources._boundingState.CurrentCount += 1; // track this new item against our bound
+                        _messages.Enqueue(consumedValue);
+
+                        CompleteIfLastJoinIsFeasible();
+                        return true;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// Start declining if the number of joins we've already made plus the number we can 
+        /// make from data already enqueued meets our quota.
+        /// </summary>
+        private void CompleteIfLastJoinIsFeasible()
+        {
+            Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: true);
+            int messageCount = _sharedResources._dataflowBlockOptions.Greedy ?
+                                    _messages.Count :
+                                    _nonGreedy.ConsumedMessage.Key ? 1 : 0;
+            if ((_sharedResources._joinsCreated + messageCount) >= _sharedResources._dataflowBlockOptions.ActualMaxNumberOfGroups)
+            {
+                _decliningPermanently = true;
+
+                bool allAreDecliningPermanently = true;
+                foreach (JoinBlockTargetBase target in _sharedResources._targets)
+                {
+                    if (!target.IsDecliningPermanently)
+                    {
+                        allAreDecliningPermanently = false;
+                        break;
+                    }
+                }
+                if (allAreDecliningPermanently) _sharedResources._decliningPermanently = true;
+            }
+        }
+
+        /// <summary>Releases the reservation on a reserved message.</summary>
+        internal override void ReleaseReservedMessage()
+        {
+            Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: false);
+
+            // Release only if we have a reserved message.
+            // Otherwise do nothing.
+            if (_nonGreedy != null && _nonGreedy.ReservedMessage.Key != null)
+            {
+                // Release the reservation and null out our reservation flag even if an exception occurs
+                try { _nonGreedy.ReservedMessage.Key.ReleaseReservation(_nonGreedy.ReservedMessage.Value, this); }
+                finally { ClearReservation(); }
+            }
+        }
+
+        /// <summary>Unconditionally clears a reserved message.</summary>
+        internal override void ClearReservation()
+        {
+            Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: false);
+            Debug.Assert(_nonGreedy != null, "Only valid in non-greedy mode.");
+
+            _nonGreedy.ReservedMessage = default(KeyValuePair<ISourceBlock<T>, DataflowMessageHeader>);
+        }
+
+        /// <summary>Completes the target.</summary>
+        internal override void CompleteOncePossible()
+        {
+            Common.ContractAssertMonitorStatus(_sharedResources.IncomingLock, held: false);
+
+            // This target must not have an outstanding reservation
+            Debug.Assert(_nonGreedy == null || _nonGreedy.ReservedMessage.Key == null,
+                "Must be in greedy mode, or in non-greedy mode but without any reserved messages.");
+
+            // Clean up any messages that may be stragglers left behind
+            lock (_sharedResources.IncomingLock)
+            {
+                _decliningPermanently = true;
+                if (_messages != null) _messages.Clear();
+            }
+
+            // Release any postponed messages
+            List<Exception> exceptions = null;
+            if (_nonGreedy != null)
+            {
+                // Note: No locks should be held at this point
+                Common.ReleaseAllPostponedMessages(this, _nonGreedy.PostponedMessages, ref exceptions);
+            }
+
+            if (exceptions != null)
+            {
+                // It is important to migrate these exceptions to the source part of the owning join,
+                // because that is the completion task that is publically exposed.
+                foreach (Exception exc in exceptions)
+                {
+                    _sharedResources._exceptionAction(exc);
+                }
+            }
+
+            // Targets' completion tasks are only available internally with the sole purpose
+            // of releasing the task that completes the parent. Hence the actual reason
+            // for completing this task doesn't matter.
+            _completionTask.TrySetResult(default(VoidResult));
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+        DataflowMessageStatus ITargetBlock<T>.OfferMessage(DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source, Boolean consumeToAccept)
+        {
+            // Validate arguments
+            if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            if (source == null && consumeToAccept) throw new ArgumentException(SR.Argument_CantConsumeFromANullSource, "consumeToAccept");
+            Contract.EndContractBlock();
+
+            lock (_sharedResources.IncomingLock)
+            {
+                // If we shouldn't be accepting more messages, don't.
+                if (_decliningPermanently || _sharedResources._decliningPermanently)
+                {
+                    _sharedResources.CompleteBlockIfPossible();
+                    return DataflowMessageStatus.DecliningPermanently;
+                }
+
+                // We can directly accept the message if:
+                //      1) we are being greedy AND we are not bounding, OR 
+                //      2) we are being greedy AND we are bounding AND there is room available AND there are no postponed messages AND we are not currently processing. 
+                // (If there were any postponed messages, we would need to postpone so that ordering would be maintained.)
+                // (We should also postpone if we are currently processing, because there may be a race between consuming postponed messages and
+                // accepting new ones directly into the queue.)
+                if (_sharedResources._dataflowBlockOptions.Greedy &&
+                        (_sharedResources._boundingState == null
+                            ||
+                         ((_sharedResources._boundingState.CountIsLessThanBound || !HasTheHighestNumberOfMessagesAvailable) &&
+                          _nonGreedy.PostponedMessages.Count == 0 && _sharedResources._taskForInputProcessing == null)))
+                {
+                    if (consumeToAccept)
+                    {
+                        Debug.Assert(source != null, "We must have thrown if source == null && consumeToAccept == true.");
+
+                        bool consumed;
+                        messageValue = source.ConsumeMessage(messageHeader, this, out consumed);
+                        if (!consumed) return DataflowMessageStatus.NotAvailable;
+                    }
+                    if (_sharedResources._boundingState != null && HasTheHighestNumberOfMessagesAvailable) _sharedResources._boundingState.CurrentCount += 1; // track this new item against our bound
+                    _messages.Enqueue(messageValue);
+                    CompleteIfLastJoinIsFeasible();
+
+                    // Since we're in greedy mode, we can skip asynchronous processing and 
+                    // make joins aggressively based on enqueued data. 
+                    if (_sharedResources.AllTargetsHaveAtLeastOneMessage)
+                    {
+                        _sharedResources._joinFilledAction();
+                        _sharedResources._joinsCreated++;
+                    }
+
+                    _sharedResources.CompleteBlockIfPossible();
+                    return DataflowMessageStatus.Accepted;
+                }
+                // Otherwise, we try to postpone if a source was provided
+                else if (source != null)
+                {
+                    Debug.Assert(_nonGreedy != null, "_nonGreedy must have been initialized during construction in non-greedy mode.");
+
+                    // Postpone the message now and kick off an async two-phase consumption.
+                    _nonGreedy.PostponedMessages.Push(source, messageHeader);
+                    _sharedResources.ProcessAsyncIfNecessary();
+                    return DataflowMessageStatus.Postponed;
+                }
+                // We can't do anything else about this message
+                return DataflowMessageStatus.Declined;
+            }
+        }
+
+        /// <summary>Completes/faults the block.
+        /// In general, it is not safe to pass releaseReservedMessages:true, because releasing of reserved messages
+        /// is done without taking a lock. We pass releaseReservedMessages:true only when an exception has been 
+        /// caught inside the message processing loop which is a single instance at any given moment.</summary>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        internal override void CompleteCore(Exception exception, bool dropPendingMessages, bool releaseReservedMessages)
+        {
+            bool greedy = _sharedResources._dataflowBlockOptions.Greedy;
+            lock (_sharedResources.IncomingLock)
+            {
+                // Faulting from outside is allowed until we start declining permanently.
+                // Faulting from inside is allowed at any time.
+                if (exception != null && ((!_decliningPermanently && !_sharedResources._decliningPermanently) || releaseReservedMessages))
+                {
+                    _sharedResources._exceptionAction(exception);
+                }
+
+                // Drop pending messages if requested
+                if (dropPendingMessages && greedy)
+                {
+                    Debug.Assert(_messages != null, "_messages must be initialized in greedy mode.");
+                    _messages.Clear();
+                }
+            }
+
+            // Release reserved messages if requested.
+            // This must be done from outside the lock.
+            if (releaseReservedMessages && !greedy)
+            {
+                // Do this on all targets
+                foreach (JoinBlockTargetBase target in _sharedResources._targets)
+                {
+                    try { target.ReleaseReservedMessage(); }
+                    catch (Exception e) { _sharedResources._exceptionAction(e); }
+                }
+            }
+
+            // Triggering completion requires the lock
+            lock (_sharedResources.IncomingLock)
+            {
+                // Trigger completion
+                _decliningPermanently = true;
+                _sharedResources.CompleteBlockIfPossible();
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            CompleteCore(exception, dropPendingMessages: true, releaseReservedMessages: false);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        public Task Completion { get { throw new NotSupportedException(SR.NotSupported_MemberNotNeeded); } }
+        /// <summary>The completion task on Join targets is only hidden from the public. It still exists for internal purposes.</summary>
+        internal Task CompletionTaskInternal { get { return _completionTask.Task; } }
+
+        /// <summary>Gets the number of messages waiting to be processed.  This must only be used from the debugger as it avoids taking necessary locks.</summary>
+        private int InputCountForDebugger { get { return _messages != null ? _messages.Count : _nonGreedy.ConsumedMessage.Key ? 1 : 0; } }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                var displayJoin = _sharedResources._ownerJoin as IDebuggerDisplay;
+                return string.Format("{0} InputCount={1}, Join=\"{2}\"",
+                    Common.GetNameForDebugger(this),
+                    InputCountForDebugger,
+                    displayJoin != null ? displayJoin.Content : _sharedResources._ownerJoin);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for the Transform.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The join block target being viewed.</summary>
+            private readonly JoinBlockTarget<T> _joinBlockTarget;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="joinBlockTarget">The join being viewed.</param>
+            public DebugView(JoinBlockTarget<T> joinBlockTarget)
+            {
+                Contract.Requires(joinBlockTarget != null, "Need a target with which to construct the debug view.");
+                _joinBlockTarget = joinBlockTarget;
+            }
+
+            /// <summary>Gets the messages waiting to be processed.</summary>
+            public IEnumerable<T> InputQueue { get { return _joinBlockTarget._messages; } }
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            public bool IsDecliningPermanently { get { return _joinBlockTarget._decliningPermanently || _joinBlockTarget._sharedResources._decliningPermanently; } }
+        }
+    }
+
+    /// <summary>Provides a non-generic base type for all join targets.</summary>
+    internal abstract class JoinBlockTargetBase
+    {
+        /// <summary>Whether the target is postponing messages.</summary>
+        internal abstract bool IsDecliningPermanently { get; }
+        /// <summary>Whether the target has at least one message available.</summary>
+        internal abstract bool HasAtLeastOneMessageAvailable { get; }
+        /// <summary>Whether the target has at least one message postponed.</summary>
+        internal abstract bool HasAtLeastOnePostponedMessage { get; }
+        /// <summary>Gets the number of messages available or postponed.</summary>
+        internal abstract int NumberOfMessagesAvailableOrPostponed { get; }
+        /// <summary>Gets whether the target has the highest number of messages available. (A tie yields true.)</summary>
+        internal abstract bool HasTheHighestNumberOfMessagesAvailable { get; }
+
+        /// <summary>Reserves a single message.</summary>
+        /// <returns>Whether a message was reserved.</returns>
+        internal abstract bool ReserveOneMessage();
+        /// <summary>Consumes any previously reserved message.</summary>
+        /// <returns>Whether a message was consumed.</returns>
+        internal abstract bool ConsumeReservedMessage();
+        /// <summary>Consumes up to one postponed message in greedy bounded mode.</summary>
+        /// <returns>Whether a message was consumed.</returns>
+        internal abstract bool ConsumeOnePostponedMessage();
+        /// <summary>Releases any previously reserved message.</summary>
+        internal abstract void ReleaseReservedMessage();
+        /// <summary>Unconditionally clears a reserved message. This is only invoked in case of an exception.</summary>
+        internal abstract void ClearReservation();
+
+        /// <summary>Access point to the corresponding API method.</summary>
+        public void Complete() { CompleteCore(exception: null, dropPendingMessages: false, releaseReservedMessages: false); }
+        /// <summary>Internal implementation of the corresponding API method.</summary>
+        internal abstract void CompleteCore(Exception exception, bool dropPendingMessages, bool releaseReservedMessages);
+        /// <summary>Completes the target.</summary>
+        internal abstract void CompleteOncePossible();
+    }
+
+    /// <summary>Provides a container for resources shared across all targets used by the same BatchedJoin instance.</summary>
+    [SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    internal sealed class JoinBlockTargetSharedResources
+    {
+        /// <summary>Initializes the shared resources.</summary>
+        /// <param name="ownerJoin">
+        /// The join block that owns these shared resources.
+        /// </param>
+        /// <param name="targets">
+        /// The array of targets associated with the join. Also doubles as the sync object used to synchronize targets.
+        /// </param>
+        /// <param name="joinFilledAction">The delegate to invoke when enough messages have been consumed to fulfill the join.</param>
+        /// <param name="exceptionAction">The delegate to invoke when a target encounters an error.</param>
+        /// <param name="dataflowBlockOptions">The options for the join.</param>
+        internal JoinBlockTargetSharedResources(
+            IDataflowBlock ownerJoin, JoinBlockTargetBase[] targets,
+            Action joinFilledAction, Action<Exception> exceptionAction,
+            GroupingDataflowBlockOptions dataflowBlockOptions)
+        {
+            Contract.Requires(ownerJoin != null, "Resources must be associated with a join.");
+            Contract.Requires(targets != null, "Resources must be shared between multiple targets.");
+            Contract.Requires(joinFilledAction != null, "An action to invoke when a join is created must be provided.");
+            Contract.Requires(exceptionAction != null, "An action to invoke for faults must be provided.");
+            Contract.Requires(dataflowBlockOptions != null, "Options must be provided to configure the resources.");
+
+            // Store arguments
+            _ownerJoin = ownerJoin;
+            _targets = targets;
+            _joinFilledAction = joinFilledAction;
+            _exceptionAction = exceptionAction;
+            _dataflowBlockOptions = dataflowBlockOptions;
+
+            // Initialize bounding state if necessary
+            if (dataflowBlockOptions.BoundedCapacity > 0) _boundingState = new BoundingState(dataflowBlockOptions.BoundedCapacity);
+        }
+
+        // *** Accessible fields and properties
+        internal readonly IDataflowBlock _ownerJoin;
+        /// <summary>All of the targets associated with the join.</summary>
+        internal readonly JoinBlockTargetBase[] _targets;
+        /// <summary>The delegate to invoke when a target encounters an error.</summary>
+        internal readonly Action<Exception> _exceptionAction;
+        /// <summary>The delegate to invoke when enough messages have been consumed to fulfill the join.</summary>
+        internal readonly Action _joinFilledAction;
+        /// <summary>The options for the join.</summary>
+        internal readonly GroupingDataflowBlockOptions _dataflowBlockOptions;
+        /// <summary>Bounding state for when the block is executing in bounded mode.</summary>
+        internal readonly BoundingState _boundingState;
+        /// <summary>Whether all targets should decline all further messages.</summary>
+        internal bool _decliningPermanently;
+        /// <summary>The task used to process messages.</summary>
+        internal Task _taskForInputProcessing;
+        /// <summary>Whether any exceptions have been generated and stored into the source core.</summary>
+        internal bool _hasExceptions;
+        /// <summary>The number of joins this block has created.</summary>
+        internal long _joinsCreated;
+
+        // *** Private fields and properties - mutatable
+        /// <summary>A task has reserved the right to run the completion routine.</summary>
+        private bool _completionReserved;
+
+        /// <summary>Gets the lock used to synchronize all incoming messages on all targets.</summary>
+        internal object IncomingLock { get { return _targets; } }
+
+        /// <summary>Invokes Complete on each target with dropping buffered messages.</summary>
+        internal void CompleteEachTarget()
+        {
+            foreach (JoinBlockTargetBase target in _targets)
+            {
+                target.CompleteCore(exception: null, dropPendingMessages: true, releaseReservedMessages: false);
+            }
+        }
+
+        /// <summary>Gets whether all of the targets have at least one message in their queues.</summary>
+        internal bool AllTargetsHaveAtLeastOneMessage
+        {
+            get
+            {
+                Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+                foreach (JoinBlockTargetBase target in _targets)
+                {
+                    if (!target.HasAtLeastOneMessageAvailable) return false;
+                }
+                return true;
+            }
+        }
+
+        /// <summary>Gets whether all of the targets have at least one message in their queues or have at least one postponed message.</summary>
+        private bool TargetsHaveAtLeastOneMessageQueuedOrPostponed
+        {
+            get
+            {
+                Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+                if (_boundingState == null)
+                {
+                    foreach (JoinBlockTargetBase target in _targets)
+                    {
+                        if (!target.HasAtLeastOneMessageAvailable &&
+                            (_decliningPermanently || target.IsDecliningPermanently || !target.HasAtLeastOnePostponedMessage))
+                            return false;
+                    }
+                    return true;
+                }
+                else
+                {
+                    // Cache the availability state so we don't evaluate it multiple times
+                    bool boundingCapacityAvailable = _boundingState.CountIsLessThanBound;
+
+                    // In bounding mode, we have more complex rules whether we should process input messages:
+                    //      1) In greedy mode if a target has postponed messages and there is bounding capacity
+                    //         available, then we should greedily consume messages up to the bounding capacity
+                    //         even if that doesn't lead to an output join.
+                    //      2) The ability to make join depends on: 
+                    //          2a) message availability for each target, AND
+                    //          2b) availability of bounding space
+
+                    bool joinIsPossible = true;
+                    bool joinWillNotAffectBoundingCount = false;
+                    foreach (JoinBlockTargetBase target in _targets)
+                    {
+                        bool targetCanConsumePostponedMessages = !_decliningPermanently && !target.IsDecliningPermanently && target.HasAtLeastOnePostponedMessage;
+
+                        // Rule #1
+                        if (_dataflowBlockOptions.Greedy && targetCanConsumePostponedMessages && (boundingCapacityAvailable || !target.HasTheHighestNumberOfMessagesAvailable)) return true;
+
+                        // Rule #2a
+                        bool targetHasMessagesAvailable = target.HasAtLeastOneMessageAvailable;
+                        joinIsPossible &= targetHasMessagesAvailable || targetCanConsumePostponedMessages;
+
+                        // Rule #2b
+                        // If there is a target that has at least one queued message, bounding space availability
+                        // is no longer an issue, because 1 item from the input side will be replaced with 1
+                        // item on the output side.
+                        if (targetHasMessagesAvailable) joinWillNotAffectBoundingCount = true;
+                    }
+
+                    // Rule #2
+                    return joinIsPossible && (joinWillNotAffectBoundingCount || boundingCapacityAvailable);
+                }
+            }
+        }
+
+        /// <summary>Retrieves postponed items if we have enough to make a batch.</summary>
+        /// <returns>true if input messages for a batch were consumed (all or none); false otherwise.</returns>
+        private bool RetrievePostponedItemsNonGreedy()
+        {
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            // If there are not enough postponed items, we have nothing to do.
+            lock (IncomingLock)
+            {
+                if (!TargetsHaveAtLeastOneMessageQueuedOrPostponed) return false;
+            } // Release the lock.  We must not hold it while calling Reserve/Consume/Release.
+
+            // Try to reserve a postponed message on every target that doesn't already have messages available
+            bool reservedAll = true;
+            foreach (JoinBlockTargetBase target in _targets)
+            {
+                if (!target.ReserveOneMessage())
+                {
+                    reservedAll = false;
+                    break;
+                }
+            }
+
+            // If we were able to, consume them all and place the consumed messages into each's queue
+            if (reservedAll)
+            {
+                foreach (JoinBlockTargetBase target in _targets)
+                {
+                    // If we couldn't consume a message, release reservations wherever possible 
+                    if (!target.ConsumeReservedMessage())
+                    {
+                        reservedAll = false;
+                        break;
+                    }
+                }
+            }
+
+            // If we were unable to reserve all messages, release the reservations
+            if (!reservedAll)
+            {
+                foreach (JoinBlockTargetBase target in _targets)
+                {
+                    target.ReleaseReservedMessage();
+                }
+            }
+
+            return reservedAll;
+        }
+
+        /// <summary>Retrieves up to one postponed item through each target.</summary>
+        /// <returns>true if at least one input message was consumed (through any target); false otherwise.</returns>
+        private bool RetrievePostponedItemsGreedyBounded()
+        {
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            // Try to consume a postponed message through each target as possible
+            bool consumed = false;
+            foreach (JoinBlockTargetBase target in _targets)
+            {
+                // It is sufficient to consume through one target to consider we've made progress
+                consumed |= target.ConsumeOnePostponedMessage();
+            }
+
+            return consumed;
+        }
+
+        /// <summary>Gets whether the target has had cancellation requested or an exception has occurred.</summary>
+        private bool CanceledOrFaulted
+        {
+            get
+            {
+                Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+                return _dataflowBlockOptions.CancellationToken.IsCancellationRequested || _hasExceptions;
+            }
+        }
+
+        /// <summary>
+        /// Gets whether the join is in a state where processing can be done, meaning there's data
+        /// to be processed and the block is in a state where such processing is allowed.
+        /// </summary>
+        internal bool JoinNeedsProcessing
+        {
+            get
+            {
+                Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+                return
+                    _taskForInputProcessing == null && // not currently processing asynchronously
+                    !CanceledOrFaulted && // not canceled or faulted
+                    TargetsHaveAtLeastOneMessageQueuedOrPostponed; // all targets have work queued or postponed
+            }
+        }
+
+        /// <summary>Called when new messages are available to be processed.</summary>
+        /// <param name="isReplacementReplica">Whether this call is the continuation of a previous message loop.</param>
+        internal void ProcessAsyncIfNecessary(bool isReplacementReplica = false)
+        {
+            Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+            if (JoinNeedsProcessing)
+            {
+                ProcessAsyncIfNecessary_Slow(isReplacementReplica);
+            }
+        }
+
+        /// <summary>
+        /// Slow path for ProcessAsyncIfNecessary. 
+        /// Separating out the slow path into its own method makes it more likely that the fast path method will get inlined.
+        /// </summary>
+        private void ProcessAsyncIfNecessary_Slow(bool isReplacementReplica)
+        {
+            Contract.Requires(JoinNeedsProcessing, "There must be a join that needs processing.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+            // Create task and store into _taskForInputProcessing prior to scheduling the task
+            // so that _taskForInputProcessing will be visibly set in the task loop.
+            _taskForInputProcessing = new Task(thisSharedResources => ((JoinBlockTargetSharedResources)thisSharedResources).ProcessMessagesLoopCore(), this,
+                                                Common.GetCreationOptionsForTask(isReplacementReplica));
+
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.TaskLaunchedForMessageHandling(
+                    _ownerJoin, _taskForInputProcessing, DataflowEtwProvider.TaskLaunchedReason.ProcessingInputMessages,
+                    _targets.Max(t => t.NumberOfMessagesAvailableOrPostponed));
+            }
+#endif
+
+            // Start the task handling scheduling exceptions
+            Exception exception = Common.StartTaskSafe(_taskForInputProcessing, _dataflowBlockOptions.TaskScheduler);
+            if (exception != null)
+            {
+                // All of the following actions must be performed under the lock. 
+                // So do them now while the lock is being held.
+
+                // First, log the exception while the processing state is dirty which is preventing the block from completing.
+                // Then revert the proactive processing state changes.
+                // And last, try to complete the block.
+                _exceptionAction(exception);
+                _taskForInputProcessing = null;
+                CompleteBlockIfPossible();
+            }
+        }
+
+        /// <summary>Completes the join block if possible.</summary>
+        internal void CompleteBlockIfPossible()
+        {
+            Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+            if (!_completionReserved)
+            {
+                // Check whether we're sure we'll never be able to fill another join.
+                // That could happen if we're not accepting more messages and not all targets have a message...
+                bool impossibleToCompleteAnotherJoin = _decliningPermanently && !AllTargetsHaveAtLeastOneMessage;
+                if (!impossibleToCompleteAnotherJoin)
+                {
+                    //...or that could happen if an individual target isn't accepting messages and doesn't have any messages available
+                    foreach (JoinBlockTargetBase target in _targets)
+                    {
+                        if (target.IsDecliningPermanently && !target.HasAtLeastOneMessageAvailable)
+                        {
+                            impossibleToCompleteAnotherJoin = true;
+                            break;
+                        }
+                    }
+                }
+
+                // We're done forever if there's no task currently processing and 
+                // either it's impossible we'll have another join or we're canceled.
+                bool currentlyProcessing = _taskForInputProcessing != null;
+                bool shouldComplete = !currentlyProcessing && (impossibleToCompleteAnotherJoin || CanceledOrFaulted);
+
+                if (shouldComplete)
+                {
+                    // Make sure no one else tries to call CompleteBlockOncePossible
+                    _completionReserved = true;
+
+                    // Make sure all targets are declining
+                    _decliningPermanently = true;
+
+                    // Complete each target asynchronously so as not to invoke synchronous continuations under a lock
+                    Task.Factory.StartNew(state =>
+                    {
+                        var sharedResources = (JoinBlockTargetSharedResources)state;
+                        foreach (JoinBlockTargetBase target in sharedResources._targets) target.CompleteOncePossible();
+                    }, this, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+                }
+            }
+        }
+
+        /// <summary>Task body used to process messages.</summary>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private void ProcessMessagesLoopCore()
+        {
+            Contract.Requires(!_dataflowBlockOptions.Greedy || _boundingState != null, "This only makes sense in non-greedy or bounding mode");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+            try
+            {
+                int timesThroughLoop = 0;
+                int maxMessagesPerTask = _dataflowBlockOptions.ActualMaxMessagesPerTask;
+                bool madeProgress;
+                do
+                {
+                    // Retrieve postponed messages.
+                    // In greedy bounded mode, consuming a message through a target is sufficient 
+                    // to consider we've made progress, i.e. to stay in the loop. 
+                    madeProgress = !_dataflowBlockOptions.Greedy ?
+                                        RetrievePostponedItemsNonGreedy() :
+                                        RetrievePostponedItemsGreedyBounded();
+
+                    if (madeProgress)
+                    {
+                        // Convert buffered messages into a filled join if each target has at least one buffered message
+                        lock (IncomingLock)
+                        {
+                            if (AllTargetsHaveAtLeastOneMessage)
+                            {
+                                _joinFilledAction(); // Pluck a message from each target
+                                _joinsCreated++;
+
+                                // If we are in non-greedy mode, do this once per join
+                                if (!_dataflowBlockOptions.Greedy && _boundingState != null) _boundingState.CurrentCount += 1;
+                            }
+                        }
+                    }
+
+                    timesThroughLoop++;
+                } while (madeProgress && timesThroughLoop < maxMessagesPerTask);
+            }
+            catch (Exception exception)
+            {
+                // We can trigger completion of the JoinBlock by completing one target.
+                // It doesn't matter which one. So we always complete the first one.
+                Debug.Assert(_targets.Length > 0, "A join must have targets.");
+                _targets[0].CompleteCore(exception, dropPendingMessages: true, releaseReservedMessages: true);
+                // The finally section will do the block completion.
+            }
+            finally
+            {
+                lock (IncomingLock)
+                {
+                    // We're no longer processing, so null out the processing task
+                    _taskForInputProcessing = null;
+
+                    // However, we may have given up early because we hit our own configured
+                    // processing limits rather than because we ran out of work to do.  If that's
+                    // the case, make sure we spin up another task to keep going.
+                    ProcessAsyncIfNecessary(isReplacementReplica: true);
+
+                    // If, however, we stopped because we ran out of work to do and we
+                    // know we'll never get more, then complete.
+                    CompleteBlockIfPossible();
+                }
+            }
+        }
+
+        /// <summary>Notifies the block that one or more items was removed from the queue.</summary>
+        /// <param name="numItemsRemoved">The number of items removed.</param>
+        internal void OnItemsRemoved(int numItemsRemoved)
+        {
+            Contract.Requires(numItemsRemoved > 0, "Number of items removed needs to be positive.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            // If we're bounding, we need to know when an item is removed so that we
+            // can update the count that's mirroring the actual count in the source's queue,
+            // and potentially kick off processing to start consuming postponed messages.
+            if (_boundingState != null)
+            {
+                lock (IncomingLock)
+                {
+                    // Decrement the count, which mirrors the count in the source half
+                    Debug.Assert(_boundingState.CurrentCount - numItemsRemoved >= 0,
+                        "It should be impossible to have a negative number of items.");
+                    _boundingState.CurrentCount -= numItemsRemoved;
+
+                    ProcessAsyncIfNecessary();
+                    CompleteBlockIfPossible();
+                }
+            }
+        }
+
+        /// <summary>Gets the object to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                var displayJoin = _ownerJoin as IDebuggerDisplay;
+                return string.Format("Block=\"{0}\"",
+                    displayJoin != null ? displayJoin.Content : _ownerJoin);
+            }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/TransformBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/TransformBlock.cs
new file mode 100644 (file)
index 0000000..97ba13d
--- /dev/null
@@ -0,0 +1,427 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// TransformBlock.cs
+//
+//
+// A propagator block that runs a function on each input to produce a single output.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.Contracts;
+using System.Threading.Tasks.Dataflow.Internal;
+using System.Diagnostics.CodeAnalysis;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Provides a dataflow block that invokes a provided <see cref="System.Func{TInput,TOutput}"/> delegate for every data element received.</summary>
+    /// <typeparam name="TInput">Specifies the type of data received and operated on by this <see cref="TransformBlock{TInput,TOutput}"/>.</typeparam>
+    /// <typeparam name="TOutput">Specifies the type of data output by this <see cref="TransformBlock{TInput,TOutput}"/>.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(TransformBlock<,>.DebugView))]
+    public sealed class TransformBlock<TInput, TOutput> : IPropagatorBlock<TInput, TOutput>, IReceivableSourceBlock<TOutput>, IDebuggerDisplay
+    {
+        /// <summary>The target side.</summary>
+        private readonly TargetCore<TInput> _target;
+        /// <summary>Buffer used to reorder outputs that may have completed out-of-order between the target half and the source half.</summary>
+        private readonly ReorderingBuffer<TOutput> _reorderingBuffer;
+        /// <summary>The source side.</summary>
+        private readonly SourceCore<TOutput> _source;
+
+        /// <summary>Initializes the <see cref="TransformBlock{TInput,TOutput}"/> with the specified <see cref="System.Func{TInput,TOutput}"/>.</summary>
+        /// <param name="transform">The function to invoke with each data element received.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="transform"/> is null (Nothing in Visual Basic).</exception>
+        public TransformBlock(Func<TInput, TOutput> transform) :
+            this(transform, null, ExecutionDataflowBlockOptions.Default)
+        { }
+
+        /// <summary>
+        /// Initializes the <see cref="TransformBlock{TInput,TOutput}"/> with the specified <see cref="System.Func{TInput,TOutput}"/> and 
+        /// <see cref="ExecutionDataflowBlockOptions"/>.
+        /// </summary>
+        /// <param name="transform">The function to invoke with each data element received.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="TransformBlock{TInput,TOutput}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="transform"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        public TransformBlock(Func<TInput, TOutput> transform, ExecutionDataflowBlockOptions dataflowBlockOptions) :
+            this(transform, null, dataflowBlockOptions)
+        { }
+
+        /// <summary>Initializes the <see cref="TransformBlock{TInput,TOutput}"/> with the specified <see cref="System.Func{TInput,TOutput}"/>.</summary>
+        /// <param name="transform">The function to invoke with each data element received.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="transform"/> is null (Nothing in Visual Basic).</exception>
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public TransformBlock(Func<TInput, Task<TOutput>> transform) :
+            this(null, transform, ExecutionDataflowBlockOptions.Default)
+        { }
+
+        /// <summary>
+        /// Initializes the <see cref="TransformBlock{TInput,TOutput}"/> with the specified <see cref="System.Func{TInput,TOutput}"/>
+        /// and <see cref="ExecutionDataflowBlockOptions"/>.
+        /// </summary>
+        /// <param name="transform">The function to invoke with each data element received.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="TransformBlock{TInput,TOutput}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="transform"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public TransformBlock(Func<TInput, Task<TOutput>> transform, ExecutionDataflowBlockOptions dataflowBlockOptions) :
+            this(null, transform, dataflowBlockOptions)
+        { }
+
+        /// <summary>
+        /// Initializes the <see cref="TransformBlock{TInput,TOutput}"/> with the specified <see cref="System.Func{TInput,TOutput}"/> 
+        /// and <see cref="DataflowBlockOptions"/>.
+        /// </summary>
+        /// <param name="transformSync">The synchronous function to invoke with each data element received.</param>
+        /// <param name="transformAsync">The asynchronous function to invoke with each data element received.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="TransformBlock{TInput,TOutput}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="transformSync"/> and <paramref name="transformAsync"/> are both null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        private TransformBlock(Func<TInput, TOutput> transformSync, Func<TInput, Task<TOutput>> transformAsync, ExecutionDataflowBlockOptions dataflowBlockOptions)
+        {
+            if (transformSync == null && transformAsync == null) throw new ArgumentNullException("transform");
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+
+            Contract.Requires(transformSync == null ^ transformAsync == null, "Exactly one of transformSync and transformAsync must be null.");
+            Contract.EndContractBlock();
+
+            // Ensure we have options that can't be changed by the caller
+            dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone();
+
+            // Initialize onItemsRemoved delegate if necessary
+            Action<ISourceBlock<TOutput>, int> onItemsRemoved = null;
+            if (dataflowBlockOptions.BoundedCapacity > 0)
+                onItemsRemoved = (owningSource, count) => ((TransformBlock<TInput, TOutput>)owningSource)._target.ChangeBoundingCount(-count);
+
+            // Initialize source component.
+            _source = new SourceCore<TOutput>(this, dataflowBlockOptions,
+                owningSource => ((TransformBlock<TInput, TOutput>)owningSource)._target.Complete(exception: null, dropPendingMessages: true),
+                onItemsRemoved);
+
+            // If parallelism is employed, we will need to support reordering messages that complete out-of-order
+            if (dataflowBlockOptions.SupportsParallelExecution)
+            {
+                _reorderingBuffer = new ReorderingBuffer<TOutput>(this, (owningSource, message) => ((TransformBlock<TInput, TOutput>)owningSource)._source.AddMessage(message));
+            }
+
+            // Create the underlying target
+            if (transformSync != null) // sync
+            {
+                _target = new TargetCore<TInput>(this,
+                    messageWithId => ProcessMessage(transformSync, messageWithId),
+                    _reorderingBuffer, dataflowBlockOptions, TargetCoreOptions.None);
+            }
+            else // async
+            {
+                Debug.Assert(transformAsync != null, "Incorrect delegate type.");
+                _target = new TargetCore<TInput>(this,
+                    messageWithId => ProcessMessageWithTask(transformAsync, messageWithId),
+                    _reorderingBuffer, dataflowBlockOptions, TargetCoreOptions.UsesAsyncCompletion);
+            }
+
+            // Link up the target half with the source half.  In doing so, 
+            // ensure exceptions are propagated, and let the source know no more messages will arrive.
+            // As the target has completed, and as the target synchronously pushes work
+            // through the reordering buffer when async processing completes, 
+            // we know for certain that no more messages will need to be sent to the source.
+            _target.Completion.ContinueWith((completed, state) =>
+            {
+                var sourceCore = (SourceCore<TOutput>)state;
+                if (completed.IsFaulted) sourceCore.AddAndUnwrapAggregateException(completed.Exception);
+                sourceCore.Complete();
+            }, _source, CancellationToken.None, Common.GetContinuationOptions(), TaskScheduler.Default);
+
+            // It is possible that the source half may fault on its own, e.g. due to a task scheduler exception.
+            // In those cases we need to fault the target half to drop its buffered messages and to release its 
+            // reservations. This should not create an infinite loop, because all our implementations are designed
+            // to handle multiple completion requests and to carry over only one.
+            _source.Completion.ContinueWith((completed, state) =>
+            {
+                var thisBlock = ((TransformBlock<TInput, TOutput>)state) as IDataflowBlock;
+                Debug.Assert(completed.IsFaulted, "The source must be faulted in order to trigger a target completion.");
+                thisBlock.Fault(completed.Exception);
+            }, this, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
+
+            // Handle async cancellation requests by declining on the target
+            Common.WireCancellationToComplete(
+                dataflowBlockOptions.CancellationToken, Completion, state => ((TargetCore<TInput>)state).Complete(exception: null, dropPendingMessages: true), _target);
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCreated(this, dataflowBlockOptions);
+            }
+#endif
+        }
+
+        /// <summary>Processes the message with a user-provided transform function that returns a TOutput.</summary>
+        /// <param name="transform">The transform function to use to process the message.</param>
+        /// <param name="messageWithId">The message to be processed.</param>
+        private void ProcessMessage(Func<TInput, TOutput> transform, KeyValuePair<TInput, long> messageWithId)
+        {
+            // Process the input message to get the output message
+            TOutput outputItem = default(TOutput);
+            bool itemIsValid = false;
+            try
+            {
+                outputItem = transform(messageWithId.Key);
+                itemIsValid = true;
+            }
+            catch (Exception exc)
+            {
+                // If this exception represents cancellation, swallow it rather than shutting down the block.
+                if (!Common.IsCooperativeCancellation(exc)) throw;
+            }
+            finally
+            {
+                // If we were not successful in producing an item, update the bounding
+                // count to reflect that we're done with this input item.
+                if (!itemIsValid) _target.ChangeBoundingCount(-1);
+
+                // If there's no reordering buffer (because we're running sequentially),
+                // simply pass the output message through. Otherwise, there's a reordering buffer, 
+                // so add to it instead (if a reordering buffer is used, we always need
+                // to output the message to it, even if the operation failed and outputMessage
+                // is null... this is because the reordering buffer cares about a strict sequence
+                // of IDs, and it needs to know when a particular ID has completed. It will eliminate
+                // null messages accordingly.)
+                if (_reorderingBuffer == null)
+                {
+                    if (itemIsValid) _source.AddMessage(outputItem);
+                }
+                else _reorderingBuffer.AddItem(messageWithId.Value, outputItem, itemIsValid);
+            }
+        }
+
+        /// <summary>Processes the message with a user-provided transform function that returns a task of TOutput.</summary>
+        /// <param name="transform">The transform function to use to process the message.</param>
+        /// <param name="messageWithId">The message to be processed.</param>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private void ProcessMessageWithTask(Func<TInput, Task<TOutput>> transform, KeyValuePair<TInput, long> messageWithId)
+        {
+            Contract.Requires(transform != null, "Function to invoke is required.");
+
+            // Run the transform function to get the task that represents the operation's completion
+            Task<TOutput> task = null;
+            Exception caughtException = null;
+            try
+            {
+                task = transform(messageWithId.Key);
+            }
+            catch (Exception exc) { caughtException = exc; }
+
+            // If no task is available, we're done.
+            if (task == null)
+            {
+                // If we didn't get a task because an exception occurred,
+                // store it (if the exception was cancellation, just ignore it).
+                if (caughtException != null && !Common.IsCooperativeCancellation(caughtException))
+                {
+                    Common.StoreDataflowMessageValueIntoExceptionData(caughtException, messageWithId.Key);
+                    _target.Complete(caughtException, dropPendingMessages: true, storeExceptionEvenIfAlreadyCompleting: true, unwrapInnerExceptions: false);
+                }
+
+                // If there's a reordering buffer, notify it that this message is done.
+                if (_reorderingBuffer != null) _reorderingBuffer.IgnoreItem(messageWithId.Value);
+
+                // Signal that we're done this async operation, and remove the bounding
+                // count for the input item that didn't yield any output.
+                _target.SignalOneAsyncMessageCompleted(boundingCountChange: -1);
+                return;
+            }
+
+            // Otherwise, join with the asynchronous operation when it completes.
+            task.ContinueWith((completed, state) =>
+            {
+                var tuple = (Tuple<TransformBlock<TInput, TOutput>, KeyValuePair<TInput, long>>)state;
+                tuple.Item1.AsyncCompleteProcessMessageWithTask(completed, tuple.Item2);
+            }, Tuple.Create(this, messageWithId), CancellationToken.None,
+            Common.GetContinuationOptions(TaskContinuationOptions.ExecuteSynchronously), TaskScheduler.Default);
+        }
+
+        /// <summary>Completes the processing of an asynchronous message.</summary>
+        /// <param name="completed">The completed task storing the output data generated for an input message.</param>
+        /// <param name="messageWithId">The originating message</param>
+        private void AsyncCompleteProcessMessageWithTask(Task<TOutput> completed, KeyValuePair<TInput, long> messageWithId)
+        {
+            Contract.Requires(completed != null, "Completed task is required.");
+            Contract.Requires(completed.IsCompleted, "Task must be completed to be here.");
+
+            bool isBounded = _target.IsBounded;
+            bool gotOutputItem = false;
+            TOutput outputItem = default(TOutput);
+
+            switch (completed.Status)
+            {
+                case TaskStatus.RanToCompletion:
+                    outputItem = completed.Result;
+                    gotOutputItem = true;
+                    break;
+
+                case TaskStatus.Faulted:
+                    // We must add the exception before declining and signaling completion, as the exception 
+                    // is part of the operation, and the completion conditions depend on this.
+                    AggregateException aggregate = completed.Exception;
+                    Common.StoreDataflowMessageValueIntoExceptionData(aggregate, messageWithId.Key, targetInnerExceptions: true);
+                    _target.Complete(aggregate, dropPendingMessages: true, storeExceptionEvenIfAlreadyCompleting: true, unwrapInnerExceptions: true);
+                    break;
+                    // Nothing special to do for cancellation
+            }
+
+            // Adjust the bounding count if necessary (we only need to decrement it for faulting
+            // and cancellation, since in the case of success we still have an item that's now in the output buffer).
+            // Even though this is more costly (again, only in the non-success case, we do this before we store the 
+            // message, so that if there's a race to remove the element from the source buffer, the count is 
+            // appropriately incremented before it's decremented.
+            if (!gotOutputItem && isBounded) _target.ChangeBoundingCount(-1);
+
+            // If there's no reordering buffer (because we're running sequentially),
+            // and we got a message, simply pass the output message through.
+            if (_reorderingBuffer == null)
+            {
+                if (gotOutputItem) _source.AddMessage(outputItem);
+            }
+            // Otherwise, there's a reordering buffer, so add to it instead.  
+            // Even if something goes wrong, we need to update the 
+            // reordering buffer, so it knows that an item isn't missing.
+            else _reorderingBuffer.AddItem(messageWithId.Value, outputItem, itemIsValid: gotOutputItem);
+
+            // Let the target know that one of the asynchronous operations it launched has completed.
+            _target.SignalOneAsyncMessageCompleted();
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        public void Complete() { _target.Complete(exception: null, dropPendingMessages: false); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            _target.Complete(exception, dropPendingMessages: true);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+        public IDisposable LinkTo(ITargetBlock<TOutput> target, DataflowLinkOptions linkOptions)
+        {
+            return _source.LinkTo(target, linkOptions);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+        public Boolean TryReceive(Predicate<TOutput> filter, out TOutput item)
+        {
+            return _source.TryReceive(filter, out item);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+        public bool TryReceiveAll(out IList<TOutput> items) { return _source.TryReceiveAll(out items); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        public Task Completion { get { return _source.Completion; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="InputCount"]/*' />
+        public int InputCount { get { return _target.InputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="OutputCount"]/*' />
+        public int OutputCount { get { return _source.OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+        DataflowMessageStatus ITargetBlock<TInput>.OfferMessage(DataflowMessageHeader messageHeader, TInput messageValue, ISourceBlock<TInput> source, Boolean consumeToAccept)
+        {
+            return _target.OfferMessage(messageHeader, messageValue, source, consumeToAccept);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+        TOutput ISourceBlock<TOutput>.ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target, out Boolean messageConsumed)
+        {
+            return _source.ConsumeMessage(messageHeader, target, out messageConsumed);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+        bool ISourceBlock<TOutput>.ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
+        {
+            return _source.ReserveMessage(messageHeader, target);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+        void ISourceBlock<TOutput>.ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
+        {
+            _source.ReleaseReservation(messageHeader, target);
+        }
+
+        /// <summary>Gets the number of messages waiting to be processed.  This must only be used from the debugger as it avoids taking necessary locks.</summary>
+        private int InputCountForDebugger { get { return _target.GetDebuggingInformation().InputCount; } }
+        /// <summary>Gets the number of messages waiting to be processed.  This must only be used from the debugger as it avoids taking necessary locks.</summary>
+        private int OutputCountForDebugger { get { return _source.GetDebuggingInformation().OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="ToString"]/*' />
+        public override string ToString() { return Common.GetNameForDebugger(this, _source.DataflowBlockOptions); }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                return string.Format("{0}, InputCount={1}, OutputCount={2}",
+                    Common.GetNameForDebugger(this, _source.DataflowBlockOptions),
+                    InputCountForDebugger,
+                    OutputCountForDebugger);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for the TransformBlock.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The transform being viewed.</summary>
+            private readonly TransformBlock<TInput, TOutput> _transformBlock;
+            /// <summary>The target half of the block being viewed.</summary>
+            private readonly TargetCore<TInput>.DebuggingInformation _targetDebuggingInformation;
+            /// <summary>The source half of the block being viewed.</summary>
+            private readonly SourceCore<TOutput>.DebuggingInformation _sourceDebuggingInformation;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="transformBlock">The transform being viewed.</param>
+            public DebugView(TransformBlock<TInput, TOutput> transformBlock)
+            {
+                Contract.Requires(transformBlock != null, "Need a block with which to construct the debug view.");
+                _transformBlock = transformBlock;
+                _targetDebuggingInformation = transformBlock._target.GetDebuggingInformation();
+                _sourceDebuggingInformation = transformBlock._source.GetDebuggingInformation();
+            }
+
+            /// <summary>Gets the messages waiting to be processed.</summary>
+            public IEnumerable<TInput> InputQueue { get { return _targetDebuggingInformation.InputQueue; } }
+            /// <summary>Gets any postponed messages.</summary>
+            public QueuedMap<ISourceBlock<TInput>, DataflowMessageHeader> PostponedMessages { get { return _targetDebuggingInformation.PostponedMessages; } }
+            /// <summary>Gets the messages waiting to be received.</summary>
+            public IEnumerable<TOutput> OutputQueue { get { return _sourceDebuggingInformation.OutputQueue; } }
+
+            /// <summary>Gets the number of outstanding input operations.</summary>
+            public Int32 CurrentDegreeOfParallelism { get { return _targetDebuggingInformation.CurrentDegreeOfParallelism; } }
+            /// <summary>Gets the task being used for output processing.</summary>
+            public Task TaskForOutputProcessing { get { return _sourceDebuggingInformation.TaskForOutputProcessing; } }
+
+            /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+            public ExecutionDataflowBlockOptions DataflowBlockOptions { get { return _targetDebuggingInformation.DataflowBlockOptions; } }
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            public bool IsDecliningPermanently { get { return _targetDebuggingInformation.IsDecliningPermanently; } }
+            /// <summary>Gets whether the block is completed.</summary>
+            public bool IsCompleted { get { return _sourceDebuggingInformation.IsCompleted; } }
+            /// <summary>Gets the block's Id.</summary>
+            public int Id { get { return Common.GetBlockId(_transformBlock); } }
+
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public TargetRegistry<TOutput> LinkedTargets { get { return _sourceDebuggingInformation.LinkedTargets; } }
+            /// <summary>Gets the target that holds a reservation on the next message, if any.</summary>
+            public ITargetBlock<TOutput> NextMessageReservedFor { get { return _sourceDebuggingInformation.NextMessageReservedFor; } }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/TransformManyBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/TransformManyBlock.cs
new file mode 100644 (file)
index 0000000..0223feb
--- /dev/null
@@ -0,0 +1,644 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// TransformManyBlock.cs
+//
+//
+// A propagator block that runs a function on each input to produce zero or more outputs.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Linq;
+using System.Threading.Tasks.Dataflow.Internal;
+using System.Collections.ObjectModel;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Provides a dataflow block that invokes a provided <see cref="System.Func{T,TResult}"/> delegate for every data element received.</summary>
+    /// <typeparam name="TInput">Specifies the type of data received and operated on by this <see cref="TransformManyBlock{TInput,TOutput}"/>.</typeparam>
+    /// <typeparam name="TOutput">Specifies the type of data output by this <see cref="TransformManyBlock{TInput,TOutput}"/>.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(TransformManyBlock<,>.DebugView))]
+    public sealed class TransformManyBlock<TInput, TOutput> : IPropagatorBlock<TInput, TOutput>, IReceivableSourceBlock<TOutput>, IDebuggerDisplay
+    {
+        /// <summary>The target side.</summary>
+        private readonly TargetCore<TInput> _target;
+        /// <summary>
+        /// Buffer used to reorder output sets that may have completed out-of-order between the target half and the source half.
+        /// This specialized reordering buffer supports streaming out enumerables if the message is the next in line.
+        /// </summary>
+        private readonly ReorderingBuffer<IEnumerable<TOutput>> _reorderingBuffer;
+        /// <summary>The source side.</summary>
+        private readonly SourceCore<TOutput> _source;
+
+        /// <summary>Initializes the <see cref="TransformManyBlock{TInput,TOutput}"/> with the specified function.</summary>
+        /// <param name="transform">
+        /// The function to invoke with each data element received.  All of the data from the returned <see cref="System.Collections.Generic.IEnumerable{TOutput}"/>
+        /// will be made available as output from this <see cref="TransformManyBlock{TInput,TOutput}"/>.
+        /// </param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="transform"/> is null (Nothing in Visual Basic).</exception>
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public TransformManyBlock(Func<TInput, IEnumerable<TOutput>> transform) :
+            this(transform, null, ExecutionDataflowBlockOptions.Default)
+        { }
+
+        /// <summary>Initializes the <see cref="TransformManyBlock{TInput,TOutput}"/> with the specified function and <see cref="ExecutionDataflowBlockOptions"/>.</summary>
+        /// <param name="transform">
+        /// The function to invoke with each data element received.  All of the data from the returned in the <see cref="System.Collections.Generic.IEnumerable{TOutput}"/>
+        /// will be made available as output from this <see cref="TransformManyBlock{TInput,TOutput}"/>.
+        /// </param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="TransformManyBlock{TInput,TOutput}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="transform"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public TransformManyBlock(Func<TInput, IEnumerable<TOutput>> transform, ExecutionDataflowBlockOptions dataflowBlockOptions) :
+            this(transform, null, dataflowBlockOptions)
+        { }
+
+        /// <summary>Initializes the <see cref="TransformManyBlock{TInput,TOutput}"/> with the specified function.</summary>
+        /// <param name="transform">
+        /// The function to invoke with each data element received. All of the data asynchronously returned in the <see cref="System.Collections.Generic.IEnumerable{TOutput}"/>
+        /// will be made available as output from this <see cref="TransformManyBlock{TInput,TOutput}"/>.
+        /// </param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="transform"/> is null (Nothing in Visual Basic).</exception>
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public TransformManyBlock(Func<TInput, Task<IEnumerable<TOutput>>> transform) :
+            this(null, transform, ExecutionDataflowBlockOptions.Default)
+        { }
+
+        /// <summary>Initializes the <see cref="TransformManyBlock{TInput,TOutput}"/> with the specified function and <see cref="ExecutionDataflowBlockOptions"/>.</summary>
+        /// <param name="transform">
+        /// The function to invoke with each data element received. All of the data asynchronously returned in the <see cref="System.Collections.Generic.IEnumerable{TOutput}"/>
+        /// will be made available as output from this <see cref="TransformManyBlock{TInput,TOutput}"/>.
+        /// </param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="TransformManyBlock{TInput,TOutput}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="transform"/> is null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
+        public TransformManyBlock(Func<TInput, Task<IEnumerable<TOutput>>> transform, ExecutionDataflowBlockOptions dataflowBlockOptions) :
+            this(null, transform, dataflowBlockOptions)
+        { }
+
+        /// <summary>Initializes the <see cref="TransformManyBlock{TInput,TOutput}"/> with the specified function and <see cref="ExecutionDataflowBlockOptions"/>.</summary>
+        /// <param name="transformSync">The synchronous function to invoke with each data element received.</param>
+        /// <param name="transformAsync">The asynchronous function to invoke with each data element received.</param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="TransformManyBlock{TInput,TOutput}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="transformSync"/> and <paramref name="transformAsync"/> are both null (Nothing in Visual Basic).</exception>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        private TransformManyBlock(Func<TInput, IEnumerable<TOutput>> transformSync, Func<TInput, Task<IEnumerable<TOutput>>> transformAsync, ExecutionDataflowBlockOptions dataflowBlockOptions)
+        {
+            // Validate arguments.  It's ok for the filterFunction to be null, but not the other parameters.
+            if (transformSync == null && transformAsync == null) throw new ArgumentNullException("transform");
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+
+            Contract.Requires(transformSync == null ^ transformAsync == null, "Exactly one of transformSync and transformAsync must be null.");
+            Contract.EndContractBlock();
+
+            // Ensure we have options that can't be changed by the caller
+            dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone();
+
+            // Initialize onItemsRemoved delegate if necessary
+            Action<ISourceBlock<TOutput>, int> onItemsRemoved = null;
+            if (dataflowBlockOptions.BoundedCapacity > 0)
+                onItemsRemoved = (owningSource, count) => ((TransformManyBlock<TInput, TOutput>)owningSource)._target.ChangeBoundingCount(-count);
+
+            // Initialize source component
+            _source = new SourceCore<TOutput>(this, dataflowBlockOptions,
+                owningSource => ((TransformManyBlock<TInput, TOutput>)owningSource)._target.Complete(exception: null, dropPendingMessages: true),
+                onItemsRemoved);
+
+            // If parallelism is employed, we will need to support reordering messages that complete out-of-order.
+            if (dataflowBlockOptions.SupportsParallelExecution)
+            {
+                _reorderingBuffer = new ReorderingBuffer<IEnumerable<TOutput>>(
+                    this, (source, messages) => ((TransformManyBlock<TInput, TOutput>)source)._source.AddMessages(messages));
+            }
+
+            // Create the underlying target and source
+            if (transformSync != null) // sync
+            {
+                // If an enumerable function was provided, we can use synchronous completion, meaning
+                // that the target will consider a message fully processed as soon as the
+                // delegate returns.
+                _target = new TargetCore<TInput>(this,
+                    messageWithId => ProcessMessage(transformSync, messageWithId),
+                    _reorderingBuffer, dataflowBlockOptions, TargetCoreOptions.None);
+            }
+            else // async
+            {
+                Debug.Assert(transformAsync != null, "Incorrect delegate type.");
+
+                // If a task-based function was provided, we need to use asynchronous completion, meaning
+                // that the target won't consider a message completed until the task
+                // returned from that delegate has completed.
+                _target = new TargetCore<TInput>(this,
+                    messageWithId => ProcessMessageWithTask(transformAsync, messageWithId),
+                    _reorderingBuffer, dataflowBlockOptions, TargetCoreOptions.UsesAsyncCompletion);
+            }
+
+            // Link up the target half with the source half.  In doing so, 
+            // ensure exceptions are propagated, and let the source know no more messages will arrive.
+            // As the target has completed, and as the target synchronously pushes work
+            // through the reordering buffer when async processing completes, 
+            // we know for certain that no more messages will need to be sent to the source.
+            _target.Completion.ContinueWith((completed, state) =>
+            {
+                var sourceCore = (SourceCore<TOutput>)state;
+                if (completed.IsFaulted) sourceCore.AddAndUnwrapAggregateException(completed.Exception);
+                sourceCore.Complete();
+            }, _source, CancellationToken.None, Common.GetContinuationOptions(), TaskScheduler.Default);
+
+            // It is possible that the source half may fault on its own, e.g. due to a task scheduler exception.
+            // In those cases we need to fault the target half to drop its buffered messages and to release its 
+            // reservations. This should not create an infinite loop, because all our implementations are designed
+            // to handle multiple completion requests and to carry over only one.
+            _source.Completion.ContinueWith((completed, state) =>
+            {
+                var thisBlock = ((TransformManyBlock<TInput, TOutput>)state) as IDataflowBlock;
+                Debug.Assert(completed.IsFaulted, "The source must be faulted in order to trigger a target completion.");
+                thisBlock.Fault(completed.Exception);
+            }, this, CancellationToken.None, Common.GetContinuationOptions() | TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.Default);
+
+            // Handle async cancellation requests by declining on the target
+            Common.WireCancellationToComplete(
+                dataflowBlockOptions.CancellationToken, Completion, state => ((TargetCore<TInput>)state).Complete(exception: null, dropPendingMessages: true), _target);
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCreated(this, dataflowBlockOptions);
+            }
+#endif
+        }
+
+        /// <summary>Processes the message with a user-provided transform function that returns an enumerable.</summary>
+        /// <param name="transformFunction">The transform function to use to process the message.</param>
+        /// <param name="messageWithId">The message to be processed.</param>
+        private void ProcessMessage(Func<TInput, IEnumerable<TOutput>> transformFunction, KeyValuePair<TInput, long> messageWithId)
+        {
+            Contract.Requires(transformFunction != null, "Function to invoke is required.");
+
+            bool userDelegateSucceeded = false;
+            try
+            {
+                // Run the user transform and store the results.
+                IEnumerable<TOutput> outputItems = transformFunction(messageWithId.Key);
+                userDelegateSucceeded = true;
+                StoreOutputItems(messageWithId, outputItems);
+            }
+            catch (Exception exc)
+            {
+                // If this exception represents cancellation, swallow it rather than shutting down the block.
+                if (!Common.IsCooperativeCancellation(exc)) throw;
+            }
+            finally
+            {
+                // If the user delegate failed, store an empty set in order 
+                // to update the bounding count and reordering buffer.
+                if (!userDelegateSucceeded) StoreOutputItems(messageWithId, null);
+            }
+        }
+
+        /// <summary>Processes the message with a user-provided transform function that returns an observable.</summary>
+        /// <param name="function">The transform function to use to process the message.</param>
+        /// <param name="messageWithId">The message to be processed.</param>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private void ProcessMessageWithTask(Func<TInput, Task<IEnumerable<TOutput>>> function, KeyValuePair<TInput, long> messageWithId)
+        {
+            Contract.Requires(function != null, "Function to invoke is required.");
+
+            // Run the transform function to get the resulting task
+            Task<IEnumerable<TOutput>> task = null;
+            Exception caughtException = null;
+            try
+            {
+                task = function(messageWithId.Key);
+            }
+            catch (Exception exc) { caughtException = exc; }
+
+            // If no task is available, either because null was returned or an exception was thrown, we're done.
+            if (task == null)
+            {
+                // If we didn't get a task because an exception occurred, store it 
+                // (or if the exception was cancellation, just ignore it).
+                if (caughtException != null && !Common.IsCooperativeCancellation(caughtException))
+                {
+                    Common.StoreDataflowMessageValueIntoExceptionData(caughtException, messageWithId.Key);
+                    _target.Complete(caughtException, dropPendingMessages: true, storeExceptionEvenIfAlreadyCompleting: true, unwrapInnerExceptions: false);
+                }
+
+                // Notify that we're done with this input and that we got no output for the input.
+                if (_reorderingBuffer != null)
+                {
+                    // If there's a reordering buffer, "store" an empty output.  This will
+                    // internally both update the output buffer and decrement the bounding count
+                    // accordingly.
+                    StoreOutputItems(messageWithId, null);
+                    _target.SignalOneAsyncMessageCompleted();
+                }
+                else
+                {
+                    // As a fast path if we're not reordering, decrement the bounding
+                    // count as part of our signaling that we're done, since this will 
+                    // internally take the lock only once, whereas the above path will
+                    // take the lock twice.
+                    _target.SignalOneAsyncMessageCompleted(boundingCountChange: -1);
+                }
+                return;
+            }
+
+            // We got back a task.  Now wait for it to complete and store its results.
+            // Unlike with TransformBlock and ActionBlock, We run the continuation on the user-provided 
+            // scheduler as we'll be running user code through enumerating the returned enumerable.
+            task.ContinueWith((completed, state) =>
+            {
+                var tuple = (Tuple<TransformManyBlock<TInput, TOutput>, KeyValuePair<TInput, long>>)state;
+                tuple.Item1.AsyncCompleteProcessMessageWithTask(completed, tuple.Item2);
+            }, Tuple.Create(this, messageWithId),
+            CancellationToken.None,
+            Common.GetContinuationOptions(TaskContinuationOptions.ExecuteSynchronously),
+            _source.DataflowBlockOptions.TaskScheduler);
+        }
+
+        /// <summary>Completes the processing of an asynchronous message.</summary>
+        /// <param name="completed">The completed task storing the output data generated for an input message.</param>
+        /// <param name="messageWithId">The originating message</param>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private void AsyncCompleteProcessMessageWithTask(
+            Task<IEnumerable<TOutput>> completed, KeyValuePair<TInput, long> messageWithId)
+        {
+            Contract.Requires(completed != null, "A task should have been provided.");
+            Contract.Requires(completed.IsCompleted, "The task should have been in a final state.");
+
+            switch (completed.Status)
+            {
+                case TaskStatus.RanToCompletion:
+                    IEnumerable<TOutput> outputItems = completed.Result;
+                    try
+                    {
+                        // Get the resulting enumerable and persist it.
+                        StoreOutputItems(messageWithId, outputItems);
+                    }
+                    catch (Exception exc)
+                    {
+                        // Enumerating the user's collection failed. If this exception represents cancellation, 
+                        // swallow it rather than shutting down the block.
+                        if (!Common.IsCooperativeCancellation(exc))
+                        {
+                            // The exception was not for cancellation. We must add the exception before declining 
+                            // and signaling completion, as the exception is part of the operation, and the completion 
+                            // conditions depend on this.
+                            Common.StoreDataflowMessageValueIntoExceptionData(exc, messageWithId.Key);
+                            _target.Complete(exc, dropPendingMessages: true, storeExceptionEvenIfAlreadyCompleting: true, unwrapInnerExceptions: false);
+                        }
+                    }
+                    break;
+
+                case TaskStatus.Faulted:
+                    // We must add the exception before declining and signaling completion, as the exception 
+                    // is part of the operation, and the completion conditions depend on this.
+                    AggregateException aggregate = completed.Exception;
+                    Common.StoreDataflowMessageValueIntoExceptionData(aggregate, messageWithId.Key, targetInnerExceptions: true);
+                    _target.Complete(aggregate, dropPendingMessages: true, storeExceptionEvenIfAlreadyCompleting: true, unwrapInnerExceptions: true);
+                    goto case TaskStatus.Canceled;
+                case TaskStatus.Canceled:
+                    StoreOutputItems(messageWithId, null); // notify the reordering buffer and decrement the bounding count
+                    break;
+
+                default:
+                    Debug.Assert(false, "The task should have been in a final state.");
+                    break;
+            }
+
+            // Let the target know that one of the asynchronous operations it launched has completed.
+            _target.SignalOneAsyncMessageCompleted();
+        }
+
+        /// <summary>
+        /// Stores the output items, either into the reordering buffer or into the source half.
+        /// Ensures that the bounding count is correctly updated.
+        /// </summary>
+        /// <param name="messageWithId">The message with id.</param>
+        /// <param name="outputItems">The output items to be persisted.</param>
+        private void StoreOutputItems(
+            KeyValuePair<TInput, long> messageWithId, IEnumerable<TOutput> outputItems)
+        {
+            // If there's a reordering buffer, pass the data along to it.
+            // The reordering buffer will handle all details, including bounding.
+            if (_reorderingBuffer != null)
+            {
+                StoreOutputItemsReordered(messageWithId.Value, outputItems);
+            }
+            // Otherwise, output the data directly.
+            else if (outputItems != null)
+            {
+                // If this is a trusted type, output the data en mass.
+                if (outputItems is TOutput[] || outputItems is List<TOutput>)
+                {
+                    StoreOutputItemsNonReorderedAtomic(outputItems);
+                }
+                else
+                {
+                    // Otherwise, we need to take the slow path of enumerating
+                    // each individual item.
+                    StoreOutputItemsNonReorderedWithIteration(outputItems);
+                }
+            }
+            else if (_target.IsBounded)
+            {
+                // outputItems is null and there's no reordering buffer
+                // and we're bounding, so decrement the bounding count to
+                // signify that the input element we already accounted for
+                // produced no output
+                _target.ChangeBoundingCount(count: -1);
+            }
+            // else there's no reordering buffer, there are no output items, and we're not bounded,
+            // so there's nothing more to be done.
+        }
+
+        /// <summary>Stores the next item using the reordering buffer.</summary>
+        /// <param name="id">The ID of the item.</param>
+        /// <param name="item">The completed item.</param>
+        private void StoreOutputItemsReordered(long id, IEnumerable<TOutput> item)
+        {
+            Contract.Requires(_reorderingBuffer != null, "Expected a reordering buffer");
+            Contract.Requires(id != Common.INVALID_REORDERING_ID, "This ID should never have been handed out.");
+
+            // Grab info about the transform
+            TargetCore<TInput> target = _target;
+            bool isBounded = target.IsBounded;
+
+            // Handle invalid items (null enumerables) by delegating to the base
+            if (item == null)
+            {
+                _reorderingBuffer.AddItem(id, null, false);
+                if (isBounded) target.ChangeBoundingCount(count: -1);
+                return;
+            }
+
+            // If we can eagerly get the number of items in the collection, update the bounding count.
+            // This avoids the cost of updating it once per output item (since each update requires synchronization).
+            // Even if we're not bounding, we still want to determine whether the item is trusted so that we 
+            // can immediately dump it out once we take the lock if we're the next item.
+            IList<TOutput> itemAsTrustedList = item as TOutput[];
+            if (itemAsTrustedList == null) itemAsTrustedList = item as List<TOutput>;
+            if (itemAsTrustedList != null && isBounded)
+            {
+                UpdateBoundingCountWithOutputCount(count: itemAsTrustedList.Count);
+            }
+
+            // Determine whether this id is the next item, and if it is and if we have a trusted list,
+            // try to output it immediately on the fast path.  If it can be output, we're done.
+            // Otherwise, make forward progress based on whether we're next in line.
+            bool? isNextNullable = _reorderingBuffer.AddItemIfNextAndTrusted(id, itemAsTrustedList, itemAsTrustedList != null);
+            if (!isNextNullable.HasValue) return; // data was successfully output
+            bool isNextItem = isNextNullable.Value;
+
+            // By this point, either we're not the next item, in which case we need to make a copy of the
+            // data and store it, or we are the next item and can store it immediately but we need to enumerate
+            // the items and store them individually because we don't want to enumerate while holding a lock.
+            List<TOutput> itemCopy = null;
+            try
+            {
+                // If this is the next item, we can output it now.
+                if (isNextItem)
+                {
+                    StoreOutputItemsNonReorderedWithIteration(item);
+                    // here itemCopy remains null, so that base.AddItem will finish our interactions with the reordering buffer
+                }
+                else if (itemAsTrustedList != null)
+                {
+                    itemCopy = itemAsTrustedList.ToList();
+                    // we already got the count and updated the bounding count previously
+                }
+                else
+                {
+                    // We're not the next item, and we're not trusted, so copy the data into a list.
+                    // We need to enumerate outside of the lock in the base class.
+                    int itemCount = 0;
+                    try
+                    {
+                        itemCopy = item.ToList(); // itemCopy will remain null in the case of exception
+                        itemCount = itemCopy.Count;
+                    }
+                    finally
+                    {
+                        // If we're here successfully, then itemCount is the number of output items
+                        // we actually received, and we should update the bounding count with it.
+                        // If we're here because ToList threw an exception, then itemCount will be 0,
+                        // and we still need to update the bounding count with this in order to counteract
+                        // the increased bounding count for the corresponding input.
+                        if (isBounded) UpdateBoundingCountWithOutputCount(count: itemCount);
+                    }
+                }
+                // else if the item isn't valid, the finally block will see itemCopy as null and output invalid
+            }
+            finally
+            {
+                // Tell the base reordering buffer that we're done.  If we already output
+                // all of the data, itemCopy will be null, and we just pass down the invalid item.  
+                // If we haven't, pass down the real thing.  We do this even in the case of an exception,
+                // in which case this will be a dummy element.
+                _reorderingBuffer.AddItem(id, itemCopy, itemIsValid: itemCopy != null);
+            }
+        }
+
+        /// <summary>
+        /// Stores the trusted enumerable en mass into the source core.
+        /// This method does not go through the reordering buffer.
+        /// </summary>
+        /// <param name="outputItems"></param>
+        private void StoreOutputItemsNonReorderedAtomic(IEnumerable<TOutput> outputItems)
+        {
+            Contract.Requires(_reorderingBuffer == null, "Expected not to have a reordering buffer");
+            Contract.Requires(outputItems is TOutput[] || outputItems is List<TOutput>, "outputItems must be a list we've already vetted as trusted");
+            if (_target.IsBounded) UpdateBoundingCountWithOutputCount(count: ((ICollection<TOutput>)outputItems).Count);
+            _source.AddMessages(outputItems);
+        }
+
+        /// <summary>
+        /// Stores the untrusted enumerable into the source core.
+        /// This method does not go through the reordering buffer.
+        /// </summary>
+        /// <param name="outputItems">The untrusted enumerable.</param>
+        private void StoreOutputItemsNonReorderedWithIteration(IEnumerable<TOutput> outputItems)
+        {
+            // If we're bounding, we need to increment the bounded count
+            // for each individual item as we enumerate it.
+            if (_target.IsBounded)
+            {
+                // When the input item that generated this
+                // output was loaded, we incremented the bounding count.  If it only
+                // output a single a item, then we don't need to touch the bounding count.
+                // Otherwise, we need to adjust the bounding count accordingly.
+                bool outputFirstItem = false;
+                try
+                {
+                    foreach (TOutput item in outputItems)
+                    {
+                        if (outputFirstItem) _target.ChangeBoundingCount(count: 1);
+                        else outputFirstItem = true;
+                        _source.AddMessage(item);
+                    }
+                }
+                finally
+                {
+                    if (!outputFirstItem) _target.ChangeBoundingCount(count: -1);
+                }
+            }
+            // If we're not bounding, just output each individual item.
+            else
+            {
+                foreach (TOutput item in outputItems) _source.AddMessage(item);
+            }
+        }
+
+        /// <summary>
+        /// Updates the bounding count based on the number of output items
+        /// generated for a single input.
+        /// </summary>
+        /// <param name="count">The number of output items.</param>
+        private void UpdateBoundingCountWithOutputCount(int count)
+        {
+            // We already incremented the count for a single input item, and
+            // that input spawned 0 or more outputs.  Take the input tracking
+            // into account when figuring out how much to increment or decrement
+            // the bounding count.
+
+            Contract.Requires(_target.IsBounded, "Expected to be in bounding mode.");
+            if (count > 1) _target.ChangeBoundingCount(count - 1);
+            else if (count == 0) _target.ChangeBoundingCount(-1);
+            else Debug.Assert(count == 1, "Count shouldn't be negative.");
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        public void Complete() { _target.Complete(exception: null, dropPendingMessages: false); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            _target.Complete(exception, dropPendingMessages: true);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+        public IDisposable LinkTo(ITargetBlock<TOutput> target, DataflowLinkOptions linkOptions) { return _source.LinkTo(target, linkOptions); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+        public Boolean TryReceive(Predicate<TOutput> filter, out TOutput item) { return _source.TryReceive(filter, out item); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+        public bool TryReceiveAll(out IList<TOutput> items) { return _source.TryReceiveAll(out items); }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        public Task Completion { get { return _source.Completion; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="InputCount"]/*' />
+        public int InputCount { get { return _target.InputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="OutputCount"]/*' />
+        public int OutputCount { get { return _source.OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+        DataflowMessageStatus ITargetBlock<TInput>.OfferMessage(DataflowMessageHeader messageHeader, TInput messageValue, ISourceBlock<TInput> source, Boolean consumeToAccept)
+        {
+            return _target.OfferMessage(messageHeader, messageValue, source, consumeToAccept);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+        TOutput ISourceBlock<TOutput>.ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target, out Boolean messageConsumed)
+        {
+            return _source.ConsumeMessage(messageHeader, target, out messageConsumed);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+        bool ISourceBlock<TOutput>.ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
+        {
+            return _source.ReserveMessage(messageHeader, target);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+        void ISourceBlock<TOutput>.ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
+        {
+            _source.ReleaseReservation(messageHeader, target);
+        }
+
+        /// <summary>Gets the number of messages waiting to be processed.  This must only be used from the debugger as it avoids taking necessary locks.</summary>
+        private int InputCountForDebugger { get { return _target.GetDebuggingInformation().InputCount; } }
+        /// <summary>Gets the number of messages waiting to be processed.  This must only be used from the debugger as it avoids taking necessary locks.</summary>
+        private int OutputCountForDebugger { get { return _source.GetDebuggingInformation().OutputCount; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="ToString"]/*' />
+        public override string ToString() { return Common.GetNameForDebugger(this, _source.DataflowBlockOptions); }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                return string.Format("{0}, InputCount={1}, OutputCount={2}",
+                    Common.GetNameForDebugger(this, _source.DataflowBlockOptions),
+                    InputCountForDebugger,
+                    OutputCountForDebugger);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for the TransformManyBlock.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The transform many block being viewed.</summary>
+            private readonly TransformManyBlock<TInput, TOutput> _transformManyBlock;
+            /// <summary>The target half of the block being viewed.</summary>
+            private readonly TargetCore<TInput>.DebuggingInformation _targetDebuggingInformation;
+            /// <summary>The source half of the block being viewed.</summary>
+            private readonly SourceCore<TOutput>.DebuggingInformation _sourceDebuggingInformation;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="transformManyBlock">The transform being viewed.</param>
+            public DebugView(TransformManyBlock<TInput, TOutput> transformManyBlock)
+            {
+                Contract.Requires(transformManyBlock != null, "Need a block with which to construct the debug view.");
+                _transformManyBlock = transformManyBlock;
+                _targetDebuggingInformation = transformManyBlock._target.GetDebuggingInformation();
+                _sourceDebuggingInformation = transformManyBlock._source.GetDebuggingInformation();
+            }
+
+            /// <summary>Gets the messages waiting to be processed.</summary>
+            public IEnumerable<TInput> InputQueue { get { return _targetDebuggingInformation.InputQueue; } }
+            /// <summary>Gets any postponed messages.</summary>
+            public QueuedMap<ISourceBlock<TInput>, DataflowMessageHeader> PostponedMessages { get { return _targetDebuggingInformation.PostponedMessages; } }
+            /// <summary>Gets the messages waiting to be received.</summary>
+            public IEnumerable<TOutput> OutputQueue { get { return _sourceDebuggingInformation.OutputQueue; } }
+
+            /// <summary>Gets the number of input operations currently in flight.</summary>
+            public Int32 CurrentDegreeOfParallelism { get { return _targetDebuggingInformation.CurrentDegreeOfParallelism; } }
+            /// <summary>Gets the task being used for output processing.</summary>
+            public Task TaskForOutputProcessing { get { return _sourceDebuggingInformation.TaskForOutputProcessing; } }
+
+            /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+            public ExecutionDataflowBlockOptions DataflowBlockOptions { get { return _targetDebuggingInformation.DataflowBlockOptions; } }
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            public bool IsDecliningPermanently { get { return _targetDebuggingInformation.IsDecliningPermanently; } }
+            /// <summary>Gets whether the block is completed.</summary>
+            public bool IsCompleted { get { return _sourceDebuggingInformation.IsCompleted; } }
+            /// <summary>Gets the block's Id.</summary>
+            public int Id { get { return Common.GetBlockId(_transformManyBlock); } }
+
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public TargetRegistry<TOutput> LinkedTargets { get { return _sourceDebuggingInformation.LinkedTargets; } }
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public ITargetBlock<TOutput> NextMessageReservedFor { get { return _sourceDebuggingInformation.NextMessageReservedFor; } }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/WriteOnceBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Blocks/WriteOnceBlock.cs
new file mode 100644 (file)
index 0000000..7b6fa7f
--- /dev/null
@@ -0,0 +1,568 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// WriteOnceBlock.cs
+//
+//
+// A propagator block capable of receiving and storing only one message, ever.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Security;
+using System.Threading.Tasks.Dataflow.Internal;
+
+namespace System.Threading.Tasks.Dataflow
+{
+    /// <summary>Provides a buffer for receiving and storing at most one element in a network of dataflow blocks.</summary>
+    /// <typeparam name="T">Specifies the type of the data buffered by this dataflow block.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    [DebuggerTypeProxy(typeof(WriteOnceBlock<>.DebugView))]
+    public sealed class WriteOnceBlock<T> : IPropagatorBlock<T, T>, IReceivableSourceBlock<T>, IDebuggerDisplay
+    {
+        /// <summary>A registry used to store all linked targets and information about them.</summary>
+        private readonly TargetRegistry<T> _targetRegistry;
+        /// <summary>The cloning function.</summary>
+        private readonly Func<T, T> _cloningFunction;
+        /// <summary>The options used to configure this block's execution.</summary>
+        private readonly DataflowBlockOptions _dataflowBlockOptions;
+        /// <summary>Lazily initialized task completion source that produces the actual completion task when needed.</summary>
+        private TaskCompletionSource<VoidResult> _lazyCompletionTaskSource;
+        /// <summary>Whether all future messages should be declined.</summary>
+        private bool _decliningPermanently;
+        /// <summary>Whether block completion is disallowed.</summary>
+        private bool _completionReserved;
+        /// <summary>The header of the singly-assigned value.</summary>
+        private DataflowMessageHeader _header;
+        /// <summary>The singly-assigned value.</summary>
+        private T _value;
+
+        /// <summary>Gets the object used as the value lock.</summary>
+        private object ValueLock { get { return _targetRegistry; } }
+
+        /// <summary>Initializes the <see cref="WriteOnceBlock{T}"/>.</summary>
+        /// <param name="cloningFunction">
+        /// The function to use to clone the data when offered to other blocks.
+        /// This may be null to indicate that no cloning need be performed.
+        /// </param>
+        public WriteOnceBlock(Func<T, T> cloningFunction) :
+            this(cloningFunction, DataflowBlockOptions.Default)
+        { }
+
+        /// <summary>Initializes the <see cref="WriteOnceBlock{T}"/> with the specified <see cref="DataflowBlockOptions"/>.</summary>
+        /// <param name="cloningFunction">
+        /// The function to use to clone the data when offered to other blocks.
+        /// This may be null to indicate that no cloning need be performed.
+        /// </param>
+        /// <param name="dataflowBlockOptions">The options with which to configure this <see cref="WriteOnceBlock{T}"/>.</param>
+        /// <exception cref="System.ArgumentNullException">The <paramref name="dataflowBlockOptions"/> is null (Nothing in Visual Basic).</exception>
+        public WriteOnceBlock(Func<T, T> cloningFunction, DataflowBlockOptions dataflowBlockOptions)
+        {
+            // Validate arguments
+            if (dataflowBlockOptions == null) throw new ArgumentNullException("dataflowBlockOptions");
+            Contract.EndContractBlock();
+
+            // Store the option
+            _cloningFunction = cloningFunction;
+            _dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone();
+
+            // The target registry also serves as our ValueLock,
+            // and thus must always be initialized, even if the block is pre-canceled, as
+            // subsequent usage of the block may run through code paths that try to take this lock.
+            _targetRegistry = new TargetRegistry<T>(this);
+
+            // If a cancelable CancellationToken has been passed in, 
+            // we need to initialize the completion task's TCS now.
+            if (dataflowBlockOptions.CancellationToken.CanBeCanceled)
+            {
+                _lazyCompletionTaskSource = new TaskCompletionSource<VoidResult>();
+
+                // If we've already had cancellation requested, do as little work as we have to 
+                // in order to be done.
+                if (dataflowBlockOptions.CancellationToken.IsCancellationRequested)
+                {
+                    _completionReserved = _decliningPermanently = true;
+
+                    // Cancel the completion task's TCS
+                    _lazyCompletionTaskSource.SetCanceled();
+                }
+                else
+                {
+                    // Handle async cancellation requests by declining on the target
+                    Common.WireCancellationToComplete(
+                        dataflowBlockOptions.CancellationToken, _lazyCompletionTaskSource.Task, state => ((WriteOnceBlock<T>)state).Complete(), this);
+                }
+            }
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCreated(this, dataflowBlockOptions);
+            }
+#endif
+        }
+
+        /// <summary>Asynchronously completes the block on another task.</summary>
+        /// <remarks>
+        /// This must only be called once all of the completion conditions are met.
+        /// </remarks>
+        [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
+        private void CompleteBlockAsync(IList<Exception> exceptions)
+        {
+            Contract.Requires(_decliningPermanently, "We may get here only after we have started to decline permanently.");
+            Contract.Requires(_completionReserved, "We may get here only after we have reserved completion.");
+            Common.ContractAssertMonitorStatus(ValueLock, held: false);
+
+            // If there is no exceptions list, we offer the message around, and then complete.
+            // If there is an exception list, we complete without offering the message.
+            if (exceptions == null)
+            {
+                // Offer the message to any linked targets and complete the block asynchronously to avoid blocking the caller
+                var taskForOutputProcessing = new Task(state => ((WriteOnceBlock<T>)state).OfferToTargetsAndCompleteBlock(), this,
+                                                        Common.GetCreationOptionsForTask());
+
+#if FEATURE_TRACING
+                DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+                if (etwLog.IsEnabled())
+                {
+                    etwLog.TaskLaunchedForMessageHandling(
+                        this, taskForOutputProcessing, DataflowEtwProvider.TaskLaunchedReason.OfferingOutputMessages, _header.IsValid ? 1 : 0);
+                }
+#endif
+
+                // Start the task handling scheduling exceptions
+                Exception exception = Common.StartTaskSafe(taskForOutputProcessing, _dataflowBlockOptions.TaskScheduler);
+                if (exception != null) CompleteCore(exception, storeExceptionEvenIfAlreadyCompleting: true);
+            }
+            else
+            {
+                // Complete the block asynchronously to avoid blocking the caller
+                Task.Factory.StartNew(state =>
+                {
+                    Tuple<WriteOnceBlock<T>, IList<Exception>> blockAndList = (Tuple<WriteOnceBlock<T>, IList<Exception>>)state;
+                    blockAndList.Item1.CompleteBlock(blockAndList.Item2);
+                },
+                Tuple.Create(this, exceptions), CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+            }
+        }
+
+        /// <summary>Offers the message and completes the block.</summary>
+        /// <remarks>
+        /// This is called only once.
+        /// </remarks>
+        private void OfferToTargetsAndCompleteBlock()
+        {
+            // OfferToTargets calls to potentially multiple targets, each of which
+            // could be faulty and throw an exception.  OfferToTargets creates a
+            // list of all such exceptions and returns it.
+            // If _value is null, OfferToTargets does nothing.
+            List<Exception> exceptions = OfferToTargets();
+            CompleteBlock(exceptions);
+        }
+
+        /// <summary>Completes the block.</summary>
+        /// <remarks>
+        /// This is called only once.
+        /// </remarks>
+        private void CompleteBlock(IList<Exception> exceptions)
+        {
+            // Do not invoke the CompletionTaskSource property if there is a chance that _lazyCompletionTaskSource
+            // has not been initialized yet and we may have to complete normally, because that would defeat the 
+            // sole purpose of the TCS being lazily initialized.
+
+            Contract.Requires(_lazyCompletionTaskSource == null || !_lazyCompletionTaskSource.Task.IsCompleted, "The task completion source must not be completed. This must be the only thread that ever completes the block.");
+
+            // Save the linked list of targets so that it could be traversed later to propagate completion
+            TargetRegistry<T>.LinkedTargetInfo linkedTargets = _targetRegistry.ClearEntryPoints();
+
+            // Complete the block's completion task
+            if (exceptions != null && exceptions.Count > 0)
+            {
+                CompletionTaskSource.TrySetException(exceptions);
+            }
+            else if (_dataflowBlockOptions.CancellationToken.IsCancellationRequested)
+            {
+                CompletionTaskSource.TrySetCanceled();
+            }
+            else
+            {
+                // Safely try to initialize the completion task's TCS with a cached completed TCS. 
+                // If our attempt succeeds (CompareExchange returns null), we have nothing more to do.
+                // If the completion task's TCS was already initialized (CompareExchange returns non-null), 
+                // we have to complete that TCS instance.
+                if (Interlocked.CompareExchange(ref _lazyCompletionTaskSource, Common.CompletedVoidResultTaskCompletionSource, null) != null)
+                {
+                    _lazyCompletionTaskSource.TrySetResult(default(VoidResult));
+                }
+            }
+
+            // Now that the completion task is completed, we may propagate completion to the linked targets
+            _targetRegistry.PropagateCompletion(linkedTargets);
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCompleted(this);
+            }
+#endif
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+        void IDataflowBlock.Fault(Exception exception)
+        {
+            if (exception == null) throw new ArgumentNullException("exception");
+            Contract.EndContractBlock();
+
+            CompleteCore(exception, storeExceptionEvenIfAlreadyCompleting: false);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+        public void Complete()
+        {
+            CompleteCore(exception: null, storeExceptionEvenIfAlreadyCompleting: false);
+        }
+
+        private void CompleteCore(Exception exception, bool storeExceptionEvenIfAlreadyCompleting)
+        {
+            Contract.Requires(exception != null || !storeExceptionEvenIfAlreadyCompleting,
+                            "When storeExceptionEvenIfAlreadyCompleting is set to true, an exception must be provided.");
+            Contract.EndContractBlock();
+
+            bool thisThreadReservedCompletion = false;
+            lock (ValueLock)
+            {
+                // Faulting from outside is allowed until we start declining permanently
+                if (_decliningPermanently && !storeExceptionEvenIfAlreadyCompleting) return;
+
+                // Decline further messages
+                _decliningPermanently = true;
+
+                // Reserve Completion.
+                // If storeExceptionEvenIfAlreadyCompleting is true, we are here to fault the block,
+                // because we couldn't launch the offer-and-complete task. 
+                // We have to retry to just complete. We do that by pretending completion wasn't reserved. 
+                if (!_completionReserved || storeExceptionEvenIfAlreadyCompleting) thisThreadReservedCompletion = _completionReserved = true;
+            }
+
+            // This call caused us to start declining further messages,
+            // there's nothing more this block needs to do... complete it if we just reserved completion.
+            if (thisThreadReservedCompletion)
+            {
+                List<Exception> exceptions = null;
+                if (exception != null)
+                {
+                    exceptions = new List<Exception>();
+                    exceptions.Add(exception);
+                }
+
+                CompleteBlockAsync(exceptions);
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+        public Boolean TryReceive(Predicate<T> filter, out T item)
+        {
+            // No need to take the outgoing lock, as we don't need to synchronize with other
+            // targets, and _value only ever goes from null to non-null, not the other way around.
+
+            // If we have a value, give it up.  All receives on a successfully
+            // completed WriteOnceBlock will return true, as long as the message
+            // passes the filter (all messages pass a null filter).
+            if (_header.IsValid && (filter == null || filter(_value)))
+            {
+                item = CloneItem(_value);
+                return true;
+            }
+            // Otherwise, nothing to receive
+            else
+            {
+                item = default(T);
+                return false;
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+        Boolean IReceivableSourceBlock<T>.TryReceiveAll(out IList<T> items)
+        {
+            // Try to receive the one item this block may have.
+            // If we can, give back an array of one item. Otherwise,
+            // give back null.
+            T item;
+            if (TryReceive(null, out item))
+            {
+                items = new T[] { item };
+                return true;
+            }
+            else
+            {
+                items = null;
+                return false;
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+        [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
+        public IDisposable LinkTo(ITargetBlock<T> target, DataflowLinkOptions linkOptions)
+        {
+            // Validate arguments
+            if (target == null) throw new ArgumentNullException("target");
+            if (linkOptions == null) throw new ArgumentNullException("linkOptions");
+            Contract.EndContractBlock();
+
+            bool hasValue;
+            bool isCompleted;
+            lock (ValueLock)
+            {
+                hasValue = HasValue;
+                isCompleted = _completionReserved;
+
+                // If we haven't gotten a value yet and the block is not complete, add the target and bail
+                if (!hasValue && !isCompleted)
+                {
+                    _targetRegistry.Add(ref target, linkOptions);
+                    return Common.CreateUnlinker(ValueLock, _targetRegistry, target);
+                }
+            }
+
+            // If we already have a value, send it along to the linking target
+            if (hasValue)
+            {
+                bool useCloning = _cloningFunction != null;
+                target.OfferMessage(_header, _value, this, consumeToAccept: useCloning);
+            }
+
+            // If completion propagation has been requested, do it safely.
+            // The Completion property will ensure the lazy TCS is initialized.
+            if (linkOptions.PropagateCompletion) Common.PropagateCompletionOnceCompleted(Completion, target);
+
+            return Disposables.Nop;
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        public Task Completion { get { return CompletionTaskSource.Task; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+        DataflowMessageStatus ITargetBlock<T>.OfferMessage(DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source, Boolean consumeToAccept)
+        {
+            // Validate arguments
+            if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            if (source == null && consumeToAccept) throw new ArgumentException(SR.Argument_CantConsumeFromANullSource, "consumeToAccept");
+            Contract.EndContractBlock();
+
+            bool thisThreadReservedCompletion = false;
+            lock (ValueLock)
+            {
+                // If we are declining messages, bail
+                if (_decliningPermanently) return DataflowMessageStatus.DecliningPermanently;
+
+                // Consume the message from the source if necessary. We do this while holding ValueLock to prevent multiple concurrent
+                // offers from all succeeding.
+                if (consumeToAccept)
+                {
+                    bool consumed;
+                    messageValue = source.ConsumeMessage(messageHeader, this, out consumed);
+                    if (!consumed) return DataflowMessageStatus.NotAvailable;
+                }
+
+                // Update the header and the value
+                _header = Common.SingleMessageHeader;
+                _value = messageValue;
+
+                // We got what we needed. Start declining permanently.
+                _decliningPermanently = true;
+
+                // Reserve Completion
+                if (!_completionReserved) thisThreadReservedCompletion = _completionReserved = true;
+            }
+
+            // Since this call to OfferMessage succeeded (and only one can ever), complete the block
+            // (but asynchronously so as not to block the Post call while offering to 
+            // targets, running synchronous continuations off of the completion task, etc.)
+            if (thisThreadReservedCompletion) CompleteBlockAsync(exceptions: null);
+            return DataflowMessageStatus.Accepted;
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+        T ISourceBlock<T>.ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<T> target, out Boolean messageConsumed)
+        {
+            // Validate arguments
+            if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            if (target == null) throw new ArgumentNullException("target");
+            Contract.EndContractBlock();
+
+            // As long as the message being requested is the one we have, allow it to be consumed,
+            // but make a copy using the provided cloning function.
+            if (_header.Id == messageHeader.Id)
+            {
+                messageConsumed = true;
+                return CloneItem(_value);
+            }
+            else
+            {
+                messageConsumed = false;
+                return default(T);
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+        Boolean ISourceBlock<T>.ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<T> target)
+        {
+            // Validate arguments
+            if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            if (target == null) throw new ArgumentNullException("target");
+            Contract.EndContractBlock();
+
+            // As long as the message is the one we have, it can be "reserved."
+            // Reservations on a WriteOnceBlock are not exclusive, because
+            // everyone who wants a copy can get one.
+            return _header.Id == messageHeader.Id;
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+        void ISourceBlock<T>.ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<T> target)
+        {
+            // Validate arguments
+            if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            if (target == null) throw new ArgumentNullException("target");
+            Contract.EndContractBlock();
+
+            // As long as the message is the one we have, everything's fine.
+            if (_header.Id != messageHeader.Id) throw new InvalidOperationException(SR.InvalidOperation_MessageNotReservedByTarget);
+
+            // In other blocks, upon release we typically re-offer the message to all linked targets.
+            // We need to do the same thing for WriteOnceBlock, in order to account for cases where the block
+            // may be linked to a join or similar block, such that the join could never again be satisfied
+            // if it didn't receive another offer from this source.  However, since the message is broadcast
+            // and all targets can get a copy, we don't need to broadcast to all targets, only to
+            // the target that released the message.  Note that we don't care whether it's accepted
+            // or not, nor do we care about any exceptions which may emerge (they should just propagate).
+            Debug.Assert(_header.IsValid, "A valid header is required.");
+            bool useCloning = _cloningFunction != null;
+            target.OfferMessage(_header, _value, this, consumeToAccept: useCloning);
+        }
+
+        /// <summary>Clones the item.</summary>
+        /// <param name="item">The item to clone.</param>
+        /// <returns>The cloned item.</returns>
+        private T CloneItem(T item)
+        {
+            return _cloningFunction != null ?
+                _cloningFunction(item) :
+                item;
+        }
+
+        /// <summary>Offers the WriteOnceBlock's message to all targets.</summary>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private List<Exception> OfferToTargets()
+        {
+            Common.ContractAssertMonitorStatus(ValueLock, held: false);
+
+            // If there is a message, offer it to everyone.  Return values
+            // don't matter, because we only get one message and then complete,
+            // and everyone who wants a copy can get a copy.
+            List<Exception> exceptions = null;
+            if (HasValue)
+            {
+                TargetRegistry<T>.LinkedTargetInfo cur = _targetRegistry.FirstTargetNode;
+                while (cur != null)
+                {
+                    TargetRegistry<T>.LinkedTargetInfo next = cur.Next;
+                    ITargetBlock<T> target = cur.Target;
+                    try
+                    {
+                        // Offer the message.  If there's a cloning function, we force the target to
+                        // come back to us to consume the message, allowing us the opportunity to run
+                        // the cloning function once we know they want the data.  If there is no cloning
+                        // function, there's no reason for them to call back here.
+                        bool useCloning = _cloningFunction != null;
+                        target.OfferMessage(_header, _value, this, consumeToAccept: useCloning);
+                    }
+                    catch (Exception exc)
+                    {
+                        // Track any erroneous exceptions that may occur
+                        // and return them to the caller so that they may
+                        // be logged in the completion task.
+                        Common.StoreDataflowMessageValueIntoExceptionData(exc, _value);
+                        Common.AddException(ref exceptions, exc);
+                    }
+                    cur = next;
+                }
+            }
+            return exceptions;
+        }
+
+        /// <summary>Ensures the completion task's TCS is initialized.</summary>
+        /// <returns>The completion task's TCS.</returns>
+        private TaskCompletionSource<VoidResult> CompletionTaskSource
+        {
+            get
+            {
+                // If the completion task's TCS has not been initialized by now, safely try to initialize it.
+                // It is very important that once a completion task/source instance has been handed out,
+                // it remains the block's completion task.
+                if (_lazyCompletionTaskSource == null)
+                {
+                    Interlocked.CompareExchange(ref _lazyCompletionTaskSource, new TaskCompletionSource<VoidResult>(), null);
+                }
+
+                return _lazyCompletionTaskSource;
+            }
+        }
+
+        /// <summary>Gets whether the block is storing a value.</summary>
+        private bool HasValue { get { return _header.IsValid; } }
+        /// <summary>Gets the value being stored by the block.</summary>
+        private T Value { get { return _header.IsValid ? _value : default(T); } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="ToString"]/*' />
+        public override string ToString() { return Common.GetNameForDebugger(this, _dataflowBlockOptions); }
+
+        /// <summary>The data to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                return string.Format("{0}, HasValue={1}, Value={2}",
+                    Common.GetNameForDebugger(this, _dataflowBlockOptions), HasValue, Value);
+            }
+        }
+        /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+        object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+        /// <summary>Provides a debugger type proxy for WriteOnceBlock.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The WriteOnceBlock being viewed.</summary>
+            private readonly WriteOnceBlock<T> _writeOnceBlock;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="writeOnceBlock">The WriteOnceBlock to view.</param>
+            public DebugView(WriteOnceBlock<T> writeOnceBlock)
+            {
+                Contract.Requires(writeOnceBlock != null, "Need a block with which to construct the debug view.");
+                _writeOnceBlock = writeOnceBlock;
+            }
+
+            /// <summary>Gets whether the WriteOnceBlock has completed.</summary>
+            public bool IsCompleted { get { return _writeOnceBlock.Completion.IsCompleted; } }
+            /// <summary>Gets the block's Id.</summary>
+            public int Id { get { return Common.GetBlockId(_writeOnceBlock); } }
+
+            /// <summary>Gets whether the WriteOnceBlock has a value.</summary>
+            public bool HasValue { get { return _writeOnceBlock.HasValue; } }
+            /// <summary>Gets the WriteOnceBlock's value if it has one, or default(T) if it doesn't.</summary>
+            public T Value { get { return _writeOnceBlock.Value; } }
+
+            /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+            public DataflowBlockOptions DataflowBlockOptions { get { return _writeOnceBlock._dataflowBlockOptions; } }
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            public TargetRegistry<T> LinkedTargets { get { return _writeOnceBlock._targetRegistry; } }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ActionOnDispose.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ActionOnDispose.cs
new file mode 100644 (file)
index 0000000..5d8a905
--- /dev/null
@@ -0,0 +1,142 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// ActionOnDispose.cs
+//
+//
+// Implemention of IDisposable that runs a delegate on Dispose.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    /// <summary>Provider of disposables that run actions.</summary>
+    internal sealed class Disposables
+    {
+        /// <summary>An IDisposable that does nothing.</summary>
+        internal readonly static IDisposable Nop = new NopDisposable();
+
+        /// <summary>Creates an IDisposable that runs an action when disposed.</summary>
+        /// <typeparam name="T1">Specifies the type of the first argument.</typeparam>
+        /// <typeparam name="T2">Specifies the type of the second argument.</typeparam>
+        /// <param name="action">The action to invoke.</param>
+        /// <param name="arg1">The first argument.</param>
+        /// <param name="arg2">The second argument.</param>
+        /// <returns>The created disposable.</returns>
+        internal static IDisposable Create<T1, T2>(Action<T1, T2> action, T1 arg1, T2 arg2)
+        {
+            Contract.Requires(action != null, "Non-null disposer action required.");
+            return new Disposable<T1, T2>(action, arg1, arg2);
+        }
+
+        /// <summary>Creates an IDisposable that runs an action when disposed.</summary>
+        /// <typeparam name="T1">Specifies the type of the first argument.</typeparam>
+        /// <typeparam name="T2">Specifies the type of the second argument.</typeparam>
+        /// <typeparam name="T3">Specifies the type of the third argument.</typeparam>
+        /// <param name="action">The action to invoke.</param>
+        /// <param name="arg1">The first argument.</param>
+        /// <param name="arg2">The second argument.</param>
+        /// <param name="arg3">The third argument.</param>
+        /// <returns>The created disposable.</returns>
+        internal static IDisposable Create<T1, T2, T3>(Action<T1, T2, T3> action, T1 arg1, T2 arg2, T3 arg3)
+        {
+            Contract.Requires(action != null, "Non-null disposer action required.");
+            return new Disposable<T1, T2, T3>(action, arg1, arg2, arg3);
+        }
+
+        /// <summary>A disposable that's a nop.</summary>
+        [DebuggerDisplay("Disposed = true")]
+        private sealed class NopDisposable : IDisposable
+        {
+            void IDisposable.Dispose() { }
+        }
+
+        /// <summary>An IDisposable that will run a delegate when disposed.</summary>
+        [DebuggerDisplay("Disposed = {Disposed}")]
+        private sealed class Disposable<T1, T2> : IDisposable
+        {
+            /// <summary>First state argument.</summary>
+            private readonly T1 _arg1;
+            /// <summary>Second state argument.</summary>
+            private readonly T2 _arg2;
+            /// <summary>The action to run when disposed. Null if disposed.</summary>
+            private Action<T1, T2> _action;
+
+            /// <summary>Initializes the ActionOnDispose.</summary>
+            /// <param name="action">The action to run when disposed.</param>
+            /// <param name="arg1">The first argument.</param>
+            /// <param name="arg2">The second argument.</param>
+            internal Disposable(Action<T1, T2> action, T1 arg1, T2 arg2)
+            {
+                Contract.Requires(action != null, "Non-null action needed for disposable");
+                _action = action;
+                _arg1 = arg1;
+                _arg2 = arg2;
+            }
+
+            /// <summary>Gets whether the IDisposable has been disposed.</summary>
+            [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+            private bool Disposed { get { return _action == null; } }
+
+            /// <summary>Invoke the action.</summary>
+            void IDisposable.Dispose()
+            {
+                Action<T1, T2> toRun = _action;
+                if (toRun != null &&
+                    Interlocked.CompareExchange(ref _action, null, toRun) == toRun)
+                {
+                    toRun(_arg1, _arg2);
+                }
+            }
+        }
+
+        /// <summary>An IDisposable that will run a delegate when disposed.</summary>
+        [DebuggerDisplay("Disposed = {Disposed}")]
+        private sealed class Disposable<T1, T2, T3> : IDisposable
+        {
+            /// <summary>First state argument.</summary>
+            private readonly T1 _arg1;
+            /// <summary>Second state argument.</summary>
+            private readonly T2 _arg2;
+            /// <summary>Third state argument.</summary>
+            private readonly T3 _arg3;
+            /// <summary>The action to run when disposed. Null if disposed.</summary>
+            private Action<T1, T2, T3> _action;
+
+            /// <summary>Initializes the ActionOnDispose.</summary>
+            /// <param name="action">The action to run when disposed.</param>
+            /// <param name="arg1">The first argument.</param>
+            /// <param name="arg2">The second argument.</param>
+            /// <param name="arg3">The third argument.</param>
+            internal Disposable(Action<T1, T2, T3> action, T1 arg1, T2 arg2, T3 arg3)
+            {
+                Contract.Requires(action != null, "Non-null action needed for disposable");
+                _action = action;
+                _arg1 = arg1;
+                _arg2 = arg2;
+                _arg3 = arg3;
+            }
+
+            /// <summary>Gets whether the IDisposable has been disposed.</summary>
+            [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+            private bool Disposed { get { return _action == null; } }
+
+            /// <summary>Invoke the action.</summary>
+            void IDisposable.Dispose()
+            {
+                Action<T1, T2, T3> toRun = _action;
+                if (toRun != null &&
+                    Interlocked.CompareExchange(ref _action, null, toRun) == toRun)
+                {
+                    toRun(_arg1, _arg2, _arg3);
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/Common.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/Common.cs
new file mode 100644 (file)
index 0000000..2742206
--- /dev/null
@@ -0,0 +1,694 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// Common.cs
+//
+//
+// Helper routines for the rest of the TPL Dataflow implementation.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Security;
+using System.Collections;
+using System.Runtime.ExceptionServices;
+using System.Threading.Tasks.Dataflow.Internal.Threading;
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    /// <summary>Internal helper utilities.</summary>
+    internal static class Common
+    {
+        /// <summary>
+        /// An invalid ID to assign for reordering purposes.  This value is chosen to be the last of the 64-bit integers that
+        /// could ever be assigned as a reordering ID.
+        /// </summary>
+        internal const long INVALID_REORDERING_ID = -1;
+        /// <summary>A well-known message ID for code that will send exactly one message or 
+        /// where the exact message ID is not important.</summary>
+        internal const int SINGLE_MESSAGE_ID = 1;
+        /// <summary>A perf optimization for caching a well-known message header instead of
+        /// constructing one every time it is needed.</summary>
+        internal static readonly DataflowMessageHeader SingleMessageHeader = new DataflowMessageHeader(SINGLE_MESSAGE_ID);
+        /// <summary>The cached completed Task{bool} with a result of true.</summary>
+        internal static readonly Task<bool> CompletedTaskWithTrueResult = CreateCachedBooleanTask(true);
+        /// <summary>The cached completed Task{bool} with a result of false.</summary>
+        internal static readonly Task<bool> CompletedTaskWithFalseResult = CreateCachedBooleanTask(false);
+        /// <summary>The cached completed TaskCompletionSource{VoidResult}.</summary>
+        internal static readonly TaskCompletionSource<VoidResult> CompletedVoidResultTaskCompletionSource = CreateCachedTaskCompletionSource<VoidResult>();
+
+        /// <summary>Asserts that a given synchronization object is either held or not held.</summary>
+        /// <param name="syncObj">The monitor to check.</param>
+        /// <param name="held">Whether we want to assert that it's currently held or not held.</param>
+        [Conditional("DEBUG")]
+        internal static void ContractAssertMonitorStatus(object syncObj, bool held)
+        {
+            Contract.Requires(syncObj != null, "The monitor object to check must be provided.");
+            Debug.Assert(Monitor.IsEntered(syncObj) == held, "The locking scheme was not correctly followed.");
+        }
+
+        /// <summary>Keeping alive processing tasks: maximum number of processed messages.</summary>
+        internal const int KEEP_ALIVE_NUMBER_OF_MESSAGES_THRESHOLD = 1;
+        /// <summary>Keeping alive processing tasks: do not attempt this many times.</summary>
+        internal const int KEEP_ALIVE_BAN_COUNT = 1000;
+
+        /// <summary>A predicate type for TryKeepAliveUntil.</summary>
+        /// <param name="stateIn">Input state for the predicate in order to avoid closure allocations.</param>
+        /// <param name="stateOut">Output state for the predicate in order to avoid closure allocations.</param>
+        /// <returns>The state of the predicate.</returns>
+        internal delegate bool KeepAlivePredicate<TStateIn, TStateOut>(TStateIn stateIn, out TStateOut stateOut);
+
+        /// <summary>Actively waits for a predicate to become true.</summary>
+        /// <param name="predicate">The predicate to become true.</param>
+        /// <param name="stateIn">Input state for the predicate in order to avoid closure allocations.</param>
+        /// <param name="stateOut">Output state for the predicate in order to avoid closure allocations.</param>
+        /// <returns>True if the predicate was evaluated and it returned true. False otherwise.</returns>
+        internal static bool TryKeepAliveUntil<TStateIn, TStateOut>(KeepAlivePredicate<TStateIn, TStateOut> predicate,
+                                                                    TStateIn stateIn, out TStateOut stateOut)
+        {
+            Contract.Requires(predicate != null, "Non-null predicate to execute is required.");
+            const int ITERATION_LIMIT = 16;
+
+            for (int c = ITERATION_LIMIT; c > 0; c--)
+            {
+                if (!Thread.Yield())
+                {
+                    // There was no other thread waiting. 
+                    // We may spend some more cycles to evaluate the predicate. 
+                    if (predicate(stateIn, out stateOut)) return true;
+                }
+            }
+
+            stateOut = default(TStateOut);
+            return false;
+        }
+
+        /// <summary>Unwraps an instance T from object state that is a WeakReference to that instance.</summary>
+        /// <typeparam name="T">The type of the data to be unwrapped.</typeparam>
+        /// <param name="state">The weak reference.</param>
+        /// <returns>The T instance.</returns>
+        internal static T UnwrapWeakReference<T>(object state) where T : class
+        {
+            var wr = state as WeakReference<T>;
+            Debug.Assert(wr != null, "Expected a WeakReference<T> as the state argument");
+            T item;
+            return wr.TryGetTarget(out item) ? item : null;
+        }
+
+        /// <summary>Gets an ID for the dataflow block.</summary>
+        /// <param name="block">The dataflow block.</param>
+        /// <returns>An ID for the dataflow block.</returns>
+        internal static int GetBlockId(IDataflowBlock block)
+        {
+            Contract.Requires(block != null, "Block required to extract an Id.");
+            const int NOTASKID = 0; // tasks don't have 0 as ids
+            Task t = Common.GetPotentiallyNotSupportedCompletionTask(block);
+            return t != null ? t.Id : NOTASKID;
+        }
+
+        /// <summary>Gets the name for the specified block, suitable to be rendered in a debugger window.</summary>
+        /// <param name="block">The block for which a name is needed.</param>
+        /// <param name="options">
+        /// The options to use when rendering the name. If no options are provided, the block's name is used directly.
+        /// </param>
+        /// <returns>The name of the object.</returns>
+        /// <remarks>This is used from DebuggerDisplay attributes.</remarks>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        internal static string GetNameForDebugger(
+            IDataflowBlock block, DataflowBlockOptions options = null)
+        {
+            Contract.Requires(block != null, "Should only be used with valid objects being displayed in the debugger.");
+            Contract.Requires(options == null || options.NameFormat != null, "If options are provided, NameFormat must be valid.");
+
+            if (block == null) return string.Empty;
+
+            string blockName = block.GetType().Name;
+            if (options == null) return blockName;
+
+            // {0} == block name
+            // {1} == block id
+            int blockId = GetBlockId(block);
+
+            // Since NameFormat is public, formatting may throw if the user has set
+            // a string that contains a reference to an argument higher than {1}.
+            // In the case of an exception, show the exception message.
+            try
+            {
+                return string.Format(options.NameFormat, blockName, blockId);
+            }
+            catch (Exception exception)
+            {
+                return exception.Message;
+            }
+        }
+
+        /// <summary>
+        /// Gets whether the exception represents a cooperative cancellation acknowledgment.
+        /// </summary>
+        /// <param name="exception">The exception to check.</param>
+        /// <returns>true if this exception represents a cooperative cancellation acknowledgment; otherwise, false.</returns>
+        internal static bool IsCooperativeCancellation(Exception exception)
+        {
+            Contract.Requires(exception != null, "An exception to check for cancellation must be provided.");
+            return exception is OperationCanceledException;
+            // Note that the behavior of this method does not exactly match that of Parallel.*, PLINQ, and Task.Factory.StartNew,
+            // in that it's more liberal and treats any OCE as acknowledgment of cancellation; in contrast, the other
+            // libraries only treat OCEs as such if they contain the same token that was provided by the user
+            // and if that token has cancellation requested.  Such logic could be achieved here with:
+            //   var oce = exception as OperationCanceledException;
+            //   return oce != null && 
+            //          oce.CancellationToken == dataflowBlockOptions.CancellationToken && 
+            //          oce.CancellationToken.IsCancellationRequested;
+            // However, that leads to a discrepancy with the async processing case of dataflow blocks,
+            // where tasks are returned to represent the message processing, potentially in the Canceled state, 
+            // and we simply ignore such tasks.  Further, for blocks like TransformBlock, it's useful to be able 
+            // to cancel an individual operation which must return a TOutput value, simply by throwing an OperationCanceledException.
+            // In such cases, you wouldn't want cancellation tied to the token, because you would only be able to
+            // cancel an individual message processing if the whole block was canceled.
+        }
+
+        /// <summary>Registers a block for cancellation by completing when cancellation is requested.</summary>
+        /// <param name="cancellationToken">The block's cancellation token.</param>
+        /// <param name="completionTask">The task that will complete when the block is completely done processing.</param>
+        /// <param name="completeAction">An action that will decline permanently on the state passed to it.</param>
+        /// <param name="completeState">The block on which to decline permanently.</param>
+        internal static void WireCancellationToComplete(
+            CancellationToken cancellationToken, Task completionTask, Action<object> completeAction, object completeState)
+        {
+            Contract.Requires(completionTask != null, "A task to wire up for completion is needed.");
+            Contract.Requires(completeAction != null, "An action to invoke upon cancellation is required.");
+
+            // If a cancellation request has already occurred, just invoke the declining action synchronously.
+            // CancellationToken would do this anyway but we can short-circuit it further and avoid a bunch of unnecessary checks.
+            if (cancellationToken.IsCancellationRequested)
+            {
+                completeAction(completeState);
+            }
+            // Otherwise, if a cancellation request occurs, we want to prevent the block from accepting additional
+            // data, and we also want to dispose of that registration when we complete so that we don't
+            // leak into a long-living cancellation token.
+            else if (cancellationToken.CanBeCanceled)
+            {
+                CancellationTokenRegistration reg = cancellationToken.Register(completeAction, completeState);
+                completionTask.ContinueWith((completed, state) => ((CancellationTokenRegistration)state).Dispose(),
+                    reg, cancellationToken, Common.GetContinuationOptions(), TaskScheduler.Default);
+            }
+        }
+
+        /// <summary>Initializes the stack trace and watson bucket of an inactive exception.</summary>
+        /// <param name="exception">The exception to initialize.</param>
+        /// <returns>The initialized exception.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        internal static Exception InitializeStackTrace(Exception exception)
+        {
+            Contract.Requires(exception != null && exception.StackTrace == null,
+                "A valid but uninitialized exception should be provided.");
+            try { throw exception; }
+            catch { return exception; }
+        }
+
+        /// <summary>The name of the key in an Exception's Data collection used to store information on a dataflow message.</summary>
+        internal const string EXCEPTIONDATAKEY_DATAFLOWMESSAGEVALUE = "DataflowMessageValue"; // should not be localized
+
+        /// <summary>Stores details on a dataflow message into an Exception's Data collection.</summary>
+        /// <typeparam name="T">Specifies the type of data stored in the message.</typeparam>
+        /// <param name="exc">The Exception whose Data collection should store message information.</param>
+        /// <param name="messageValue">The message information to be stored.</param>
+        /// <param name="targetInnerExceptions">Whether to store the data into the exception's inner exception(s) in addition to the exception itself.</param>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        internal static void StoreDataflowMessageValueIntoExceptionData<T>(Exception exc, T messageValue, bool targetInnerExceptions = false)
+        {
+            Contract.Requires(exc != null, "The exception into which data should be stored must be provided.");
+
+            // Get the string value to store
+            string strValue = messageValue as string;
+            if (strValue == null && messageValue != null)
+            {
+                try
+                {
+                    strValue = messageValue.ToString();
+                }
+                catch { /* It's ok to eat all exceptions here.  If ToString throws, we'll just ignore it. */ }
+            }
+            if (strValue == null) return;
+
+            // Store the data into the exception itself
+            StoreStringIntoExceptionData(exc, Common.EXCEPTIONDATAKEY_DATAFLOWMESSAGEVALUE, strValue);
+
+            // If we also want to target inner exceptions...
+            if (targetInnerExceptions)
+            {
+                // If this is an aggregate, store into all inner exceptions.
+                var aggregate = exc as AggregateException;
+                if (aggregate != null)
+                {
+                    foreach (Exception innerException in aggregate.InnerExceptions)
+                    {
+                        StoreStringIntoExceptionData(innerException, Common.EXCEPTIONDATAKEY_DATAFLOWMESSAGEVALUE, strValue);
+                    }
+                }
+                // Otherwise, if there's an Exception.InnerException, store into that.
+                else if (exc.InnerException != null)
+                {
+                    StoreStringIntoExceptionData(exc.InnerException, Common.EXCEPTIONDATAKEY_DATAFLOWMESSAGEVALUE, strValue);
+                }
+            }
+        }
+
+        /// <summary>Stores the specified string value into the specified key slot of the specified exception's data dictionary.</summary>
+        /// <param name="exception">The exception into which the key/value should be stored.</param>
+        /// <param name="key">The key.</param>
+        /// <param name="value">The value to be serialized as a string and stored.</param>
+        /// <remarks>If the key is already present in the exception's data dictionary, the value is not overwritten.</remarks>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private static void StoreStringIntoExceptionData(Exception exception, string key, string value)
+        {
+            Contract.Requires(exception != null, "An exception is needed to store the data into.");
+            Contract.Requires(key != null, "A key into the exception's data collection is needed.");
+            Contract.Requires(value != null, "The value to store must be provided.");
+            try
+            {
+                IDictionary data = exception.Data;
+                if (data != null && !data.IsFixedSize && !data.IsReadOnly && data[key] == null)
+                {
+                    data[key] = value;
+                }
+            }
+            catch
+            {
+                // It's ok to eat all exceptions here.  This could throw if an Exception type 
+                // has overridden Data to behave differently than we expect.
+            }
+        }
+
+        /// <summary>Throws an exception asynchronously on the thread pool.</summary>
+        /// <param name="error">The exception to throw.</param>
+        /// <remarks>
+        /// This function is used when an exception needs to be propagated from a thread
+        /// other than the current context.  This could happen, for example, if the exception
+        /// should cause the standard CLR exception escalation behavior, but we're inside
+        /// of a task that will squirrel the exception away.
+        /// </remarks>
+        internal static void ThrowAsync(Exception error)
+        {
+            ExceptionDispatchInfo edi = ExceptionDispatchInfo.Capture(error);
+            ThreadPool.QueueUserWorkItem(state => { ((ExceptionDispatchInfo)state).Throw(); }, edi);
+        }
+
+        /// <summary>Adds the exception to the list, first initializing the list if the list is null.</summary>
+        /// <param name="list">The list to add the exception to, and initialize if null.</param>
+        /// <param name="exception">The exception to add or whose inner exception(s) should be added.</param>
+        /// <param name="unwrapInnerExceptions">Unwrap and add the inner exception(s) rather than the specified exception directly.</param>
+        /// <remarks>This method is not thread-safe, in that it manipulates <paramref name="list"/> without any synchronization.</remarks>
+        internal static void AddException(ref List<Exception> list, Exception exception, bool unwrapInnerExceptions = false)
+        {
+            Contract.Requires(exception != null, "An exception to add is required.");
+            Contract.Requires(!unwrapInnerExceptions || exception.InnerException != null,
+                "If unwrapping is requested, an inner exception is required.");
+
+            // Make sure the list of exceptions is initialized (lazily).
+            if (list == null) list = new List<Exception>();
+
+            if (unwrapInnerExceptions)
+            {
+                AggregateException aggregate = exception as AggregateException;
+                if (aggregate != null)
+                {
+                    list.AddRange(aggregate.InnerExceptions);
+                }
+                else
+                {
+                    list.Add(exception.InnerException);
+                }
+            }
+            else list.Add(exception);
+        }
+
+        /// <summary>Creates a task we can cache for the desired Boolean result.</summary>
+        /// <param name="value">The value of the Boolean.</param>
+        /// <returns>A task that may be cached.</returns>
+        private static Task<Boolean> CreateCachedBooleanTask(bool value)
+        {
+            // AsyncTaskMethodBuilder<Boolean> caches tasks that are non-disposable.
+            // By using these same tasks, we're a bit more robust against disposals,
+            // in that such a disposed task's ((IAsyncResult)task).AsyncWaitHandle
+            // is still valid.
+            var atmb = System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Boolean>.Create();
+            atmb.SetResult(value);
+            return atmb.Task; // must be accessed after SetResult to get the cached task
+        }
+
+        /// <summary>Creates a TaskCompletionSource{T} completed with a value of default(T) that we can cache.</summary>
+        /// <returns>Completed TaskCompletionSource{T} that may be cached.</returns>
+        private static TaskCompletionSource<T> CreateCachedTaskCompletionSource<T>()
+        {
+            var tcs = new TaskCompletionSource<T>();
+            tcs.SetResult(default(T));
+            return tcs;
+        }
+
+        /// <summary>Creates a task faulted with the specified exception.</summary>
+        /// <typeparam name="TResult">Specifies the type of the result for this task.</typeparam>
+        /// <param name="exception">The exception with which to complete the task.</param>
+        /// <returns>The faulted task.</returns>
+        internal static Task<TResult> CreateTaskFromException<TResult>(Exception exception)
+        {
+            var atmb = System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Create();
+            atmb.SetException(exception);
+            return atmb.Task;
+        }
+
+        /// <summary>Creates a task canceled with the specified cancellation token.</summary>
+        /// <typeparam name="TResult">Specifies the type of the result for this task.</typeparam>
+        /// <returns>The canceled task.</returns>
+        [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
+        internal static Task<TResult> CreateTaskFromCancellation<TResult>(CancellationToken cancellationToken)
+        {
+            Contract.Requires(cancellationToken.IsCancellationRequested,
+                "The task will only be immediately canceled if the token has cancellation requested already.");
+            var t = new Task<TResult>(CachedGenericDelegates<TResult>.DefaultTResultFunc, cancellationToken);
+            Debug.Assert(t.IsCanceled, "Task's constructor should cancel the task synchronously in the ctor.");
+            return t;
+        }
+
+        /// <summary>Gets the completion task of a block, and protects against common cases of the completion task not being implemented or supported.</summary>
+        /// <param name="block">The block.</param>
+        /// <returns>The completion task, or null if the block's completion task is not implemented or supported.</returns>
+        internal static Task GetPotentiallyNotSupportedCompletionTask(IDataflowBlock block)
+        {
+            Contract.Requires(block != null, "We need a block from which to retrieve a cancellation task.");
+            try
+            {
+                return block.Completion;
+            }
+            catch (NotImplementedException) { }
+            catch (NotSupportedException) { }
+            return null;
+        }
+
+        /// <summary>
+        /// Creates an IDisposable that, when disposed, will acquire the outgoing lock while removing 
+        /// the target block from the target registry.
+        /// </summary>
+        /// <typeparam name="TOutput">Specifies the type of data in the block.</typeparam>
+        /// <param name="outgoingLock">The outgoing lock used to protect the target registry.</param>
+        /// <param name="targetRegistry">The target registry from which the target should be removed.</param>
+        /// <param name="targetBlock">The target to remove from the registry.</param>
+        /// <returns>An IDisposable that will unregister the target block from the registry while holding the outgoing lock.</returns>
+        internal static IDisposable CreateUnlinker<TOutput>(object outgoingLock, TargetRegistry<TOutput> targetRegistry, ITargetBlock<TOutput> targetBlock)
+        {
+            Contract.Requires(outgoingLock != null, "Monitor object needed to protect the operation.");
+            Contract.Requires(targetRegistry != null, "Registry from which to remove is required.");
+            Contract.Requires(targetBlock != null, "Target block to unlink is required.");
+            return Disposables.Create(CachedGenericDelegates<TOutput>.CreateUnlinkerShimAction,
+                outgoingLock, targetRegistry, targetBlock);
+        }
+
+        /// <summary>An infinite TimeSpan.</summary>
+        internal static readonly TimeSpan InfiniteTimeSpan = Timeout.InfiniteTimeSpan;
+
+        /// <summary>Validates that a timeout either is -1 or is non-negative and within the range of an Int32.</summary>
+        /// <param name="timeout">The timeout to validate.</param>
+        /// <returns>true if the timeout is valid; otherwise, false.</returns>
+        internal static bool IsValidTimeout(TimeSpan timeout)
+        {
+            long millisecondsTimeout = (long)timeout.TotalMilliseconds;
+            return millisecondsTimeout >= Timeout.Infinite && millisecondsTimeout <= Int32.MaxValue;
+        }
+
+        /// <summary>Gets the options to use for continuation tasks.</summary>
+        /// <param name="toInclude">Any options to include in the result.</param>
+        /// <returns>The options to use.</returns>
+        internal static TaskContinuationOptions GetContinuationOptions(TaskContinuationOptions toInclude = TaskContinuationOptions.None)
+        {
+            return toInclude | TaskContinuationOptions.DenyChildAttach;
+        }
+
+        /// <summary>Gets the options to use for tasks.</summary>
+        /// <param name="isReplacementReplica">If this task is being created to replace another.</param>
+        /// <remarks>
+        /// These options should be used for all tasks that have the potential to run user code or
+        /// that are repeatedly spawned and thus need a modicum of fair treatment.
+        /// </remarks>
+        /// <returns>The options to use.</returns>
+        internal static TaskCreationOptions GetCreationOptionsForTask(bool isReplacementReplica = false)
+        {
+            TaskCreationOptions options = TaskCreationOptions.DenyChildAttach;
+            if (isReplacementReplica) options |= TaskCreationOptions.PreferFairness;
+            return options;
+        }
+
+        /// <summary>Starts an already constructed task with handling and observing exceptions that may come from the scheduling process.</summary>
+        /// <param name="task">Task to be started.</param>
+        /// <param name="scheduler">TaskScheduler to schedule the task on.</param>
+        /// <returns>null on success, an exception reference on scheduling error. In the latter case, the task reference is nulled out.</returns>
+        internal static Exception StartTaskSafe(Task task, TaskScheduler scheduler)
+        {
+            Contract.Requires(task != null, "Task to start is required.");
+            Contract.Requires(scheduler != null, "Scheduler on which to start the task is required.");
+
+            if (scheduler == TaskScheduler.Default)
+            {
+                task.Start(scheduler);
+                return null; // We don't need to worry about scheduler exceptions from the default scheduler.
+            }
+            // Slow path with try/catch separated out so that StartTaskSafe may be inlined in the common case.
+            else return StartTaskSafeCore(task, scheduler);
+        }
+
+        /// <summary>Starts an already constructed task with handling and observing exceptions that may come from the scheduling process.</summary>
+        /// <param name="task">Task to be started.</param>
+        /// <param name="scheduler">TaskScheduler to schedule the task on.</param>
+        /// <returns>null on success, an exception reference on scheduling error. In the latter case, the task reference is nulled out.</returns>
+        [SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals")]
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private static Exception StartTaskSafeCore(Task task, TaskScheduler scheduler)
+        {
+            Contract.Requires(task != null, "Task to start is needed.");
+            Contract.Requires(scheduler != null, "Scheduler on which to start the task is required.");
+
+            Exception schedulingException = null;
+
+            try
+            {
+                task.Start(scheduler);
+            }
+            catch (Exception caughtException)
+            {
+                // Verify TPL has faulted the task
+                Debug.Assert(task.IsFaulted, "The task should have been faulted if it failed to start.");
+
+                // Observe the task's exception
+                AggregateException ignoredTaskException = task.Exception;
+
+                schedulingException = caughtException;
+            }
+
+            return schedulingException;
+        }
+
+        /// <summary>Pops and explicitly releases postponed messages after the block is done with processing.</summary>
+        /// <remarks>No locks should be held at this time. Unfortunately we cannot assert that.</remarks>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        internal static void ReleaseAllPostponedMessages<T>(ITargetBlock<T> target,
+                                    QueuedMap<ISourceBlock<T>, DataflowMessageHeader> postponedMessages,
+                                    ref List<Exception> exceptions)
+        {
+            Contract.Requires(target != null, "There must be a subject target.");
+            Contract.Requires(postponedMessages != null, "The stacked map of postponed messages must exist.");
+
+            // Note that we don't synchronize on lockObject for postponedMessages here, 
+            // because no one should be adding to it at this time.  We do a bit of 
+            // checking just for sanity's sake.
+            int initialCount = postponedMessages.Count;
+            int processedCount = 0;
+
+            KeyValuePair<ISourceBlock<T>, DataflowMessageHeader> sourceAndMessage;
+            while (postponedMessages.TryPop(out sourceAndMessage))
+            {
+                // Loop through all postponed messages declining each messages.
+                // The only way we have to do this is by reserving and then immediately releasing each message.
+                // This is important for sources like SendAsyncSource, which keep state around until
+                // they get a response to a postponed message.
+                try
+                {
+                    Debug.Assert(sourceAndMessage.Key != null, "Postponed messages must have an associated source.");
+                    if (sourceAndMessage.Key.ReserveMessage(sourceAndMessage.Value, target))
+                    {
+                        sourceAndMessage.Key.ReleaseReservation(sourceAndMessage.Value, target);
+                    }
+                }
+                catch (Exception exc)
+                {
+                    Common.AddException(ref exceptions, exc);
+                }
+
+                processedCount++;
+            }
+
+            Debug.Assert(processedCount == initialCount,
+                "We should have processed the exact number of elements that were initially there.");
+        }
+
+        /// <summary>Cache ThrowAsync to avoid allocations when it is passed into PropagateCompletionXxx.</summary>
+        internal static readonly Action<Exception> AsyncExceptionHandler = ThrowAsync;
+
+        /// <summary>
+        /// Propagates completion of sourceCompletionTask to target synchronously.
+        /// </summary>
+        /// <param name="sourceCompletionTask">The task whose completion is to be propagated. It must be completed.</param>
+        /// <param name="target">The block where completion is propagated.</param>
+        /// <param name="exceptionHandler">Handler for exceptions from the target. May be null which would propagate the exception to the caller.</param>
+        internal static void PropagateCompletion(Task sourceCompletionTask, IDataflowBlock target, Action<Exception> exceptionHandler)
+        {
+            Contract.Requires(sourceCompletionTask != null, "sourceCompletionTask may not be null.");
+            Contract.Requires(target != null, "The target where completion is to be propagated may not be null.");
+            Debug.Assert(sourceCompletionTask.IsCompleted, "sourceCompletionTask must be completed in order to propagate its completion.");
+
+            AggregateException exception = sourceCompletionTask.IsFaulted ? sourceCompletionTask.Exception : null;
+
+            try
+            {
+                if (exception != null) target.Fault(exception);
+                else target.Complete();
+            }
+            catch (Exception exc)
+            {
+                if (exceptionHandler != null) exceptionHandler(exc);
+                else throw;
+            }
+        }
+
+        /// <summary>
+        /// Creates a continuation off sourceCompletionTask to complete target. See PropagateCompletion.
+        /// </summary>
+        private static void PropagateCompletionAsContinuation(Task sourceCompletionTask, IDataflowBlock target)
+        {
+            Contract.Requires(sourceCompletionTask != null, "sourceCompletionTask may not be null.");
+            Contract.Requires(target != null, "The target where completion is to be propagated may not be null.");
+            sourceCompletionTask.ContinueWith((task, state) => Common.PropagateCompletion(task, (IDataflowBlock)state, AsyncExceptionHandler),
+                target, CancellationToken.None, Common.GetContinuationOptions(), TaskScheduler.Default);
+        }
+
+        /// <summary>
+        /// Propagates completion of sourceCompletionTask to target based on sourceCompletionTask's current state. See PropagateCompletion.
+        /// </summary>
+        internal static void PropagateCompletionOnceCompleted(Task sourceCompletionTask, IDataflowBlock target)
+        {
+            Contract.Requires(sourceCompletionTask != null, "sourceCompletionTask may not be null.");
+            Contract.Requires(target != null, "The target where completion is to be propagated may not be null.");
+
+            // If sourceCompletionTask is completed, propagate completion synchronously.
+            // Otherwise hook up a continuation.
+            if (sourceCompletionTask.IsCompleted) PropagateCompletion(sourceCompletionTask, target, exceptionHandler: null);
+            else PropagateCompletionAsContinuation(sourceCompletionTask, target);
+        }
+
+        /// <summary>Static class used to cache generic delegates the C# compiler doesn't cache by default.</summary>
+        /// <remarks>Without this, we end up allocating the generic delegate each time the operation is used.</remarks>
+        static class CachedGenericDelegates<T>
+        {
+            /// <summary>A function that returns the default value of T.</summary>
+            internal readonly static Func<T> DefaultTResultFunc = () => default(T);
+            /// <summary>
+            /// A function to use as the body of ActionOnDispose in CreateUnlinkerShim.
+            /// Passed a tuple of the sync obj, the target registry, and the target block as the state parameter.
+            /// </summary>
+            internal readonly static Action<object, TargetRegistry<T>, ITargetBlock<T>> CreateUnlinkerShimAction =
+                (syncObj, registry, target) =>
+            {
+                lock (syncObj) registry.Remove(target);
+            };
+        }
+    }
+
+    /// <summary>State used only when bounding.</summary>
+    [DebuggerDisplay("BoundedCapacity={BoundedCapacity}}")]
+    internal class BoundingState
+    {
+        /// <summary>The maximum number of messages allowed to be buffered.</summary>
+        internal readonly int BoundedCapacity;
+        /// <summary>The number of messages currently stored.</summary>
+        /// <remarks>
+        /// This value may temporarily be higher than the actual number stored.  
+        /// That's ok, we just can't accept any new messages if CurrentCount >= BoundedCapacity.
+        /// Worst case is that we may temporarily have fewer items in the block than our maximum allows,
+        /// but we'll never have more.
+        /// </remarks>
+        internal int CurrentCount;
+
+        /// <summary>Initializes the BoundingState.</summary>
+        /// <param name="boundedCapacity">The positive bounded capacity.</param>
+        internal BoundingState(int boundedCapacity)
+        {
+            Contract.Requires(boundedCapacity > 0, "Bounded is only supported with positive values.");
+            BoundedCapacity = boundedCapacity;
+        }
+
+        /// <summary>Gets whether there's room available to add another message.</summary>
+        internal bool CountIsLessThanBound { get { return CurrentCount < BoundedCapacity; } }
+    }
+
+    /// <summary>Stated used only when bounding and when postponed messages are stored.</summary>
+    /// <typeparam name="TInput">Specifies the type of input messages.</typeparam>
+    [DebuggerDisplay("BoundedCapacity={BoundedCapacity}, PostponedMessages={PostponedMessagesCountForDebugger}")]
+    internal class BoundingStateWithPostponed<TInput> : BoundingState
+    {
+        /// <summary>Queue of postponed messages.</summary>
+        internal readonly QueuedMap<ISourceBlock<TInput>, DataflowMessageHeader> PostponedMessages =
+            new QueuedMap<ISourceBlock<TInput>, DataflowMessageHeader>();
+        /// <summary>
+        /// The number of transfers from the postponement queue to the input queue currently being processed.
+        /// </summary>
+        /// <remarks>
+        /// Blocks that use TargetCore need to transfer messages from the postponed queue to the input messages
+        /// queue.  While doing that, new incoming messages may arrive, and if they view the postponed queue
+        /// as being empty (after the block has removed the last postponed message and is consuming it, before
+        /// storing it into the input queue), they might go directly into the input queue... that will then mess
+        /// up the ordering between those postponed messages and the newly incoming messages.  To address that,
+        /// OutstandingTransfers is used to track the number of transfers currently in progress.  Incoming
+        /// messages must be postponed not only if there are already any postponed messages, but also if
+        /// there are any transfers in progress (i.e. this value is > 0).  It's an integer because the DOP could
+        /// be greater than 1, and thus we need to ref count multiple transfers that might be in progress.
+        /// </remarks>
+        internal int OutstandingTransfers;
+
+        /// <summary>Initializes the BoundingState.</summary>
+        /// <param name="boundedCapacity">The positive bounded capacity.</param>
+        internal BoundingStateWithPostponed(int boundedCapacity) : base(boundedCapacity)
+        {
+        }
+
+        /// <summary>Gets the number of postponed messages for the debugger.</summary>
+        private int PostponedMessagesCountForDebugger { get { return PostponedMessages.Count; } }
+    }
+
+    /// <summary>Stated used only when bounding and when postponed messages and a task are stored.</summary>
+    /// <typeparam name="TInput">Specifies the type of input messages.</typeparam>
+    internal class BoundingStateWithPostponedAndTask<TInput> : BoundingStateWithPostponed<TInput>
+    {
+        /// <summary>The task used to process messages.</summary>
+        internal Task TaskForInputProcessing;
+
+        /// <summary>Initializes the BoundingState.</summary>
+        /// <param name="boundedCapacity">The positive bounded capacity.</param>
+        internal BoundingStateWithPostponedAndTask(int boundedCapacity) : base(boundedCapacity)
+        {
+        }
+    }
+
+    /// <summary>
+    /// Type used with TaskCompletionSource(Of TResult) as the TResult
+    /// to ensure that the resulting task can't be upcast to something
+    /// that in the future could lead to compat problems.
+    /// </summary>
+    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
+    [DebuggerNonUserCode]
+    internal struct VoidResult { }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ConcurrentQueue.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ConcurrentQueue.cs
new file mode 100644 (file)
index 0000000..33b1372
--- /dev/null
@@ -0,0 +1,947 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+#pragma warning disable 0420
+
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// ConcurrentQueue.cs
+//
+//
+// A lock-free, concurrent queue primitive, and its associated debugger view type.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+using System.Runtime.Serialization;
+using System.Security;
+using System.Threading;
+
+namespace System.Threading.Tasks.Dataflow.Internal.Collections
+{
+    /// <summary>
+    /// Represents a thread-safe first-in, first-out collection of objects.
+    /// </summary>
+    /// <typeparam name="T">Specifies the type of elements in the queue.</typeparam>
+    /// <remarks>
+    /// All public  and protected members of <see cref="ConcurrentQueue{T}"/> are thread-safe and may be used
+    /// concurrently from multiple threads.
+    /// </remarks>
+    [DebuggerDisplay("Count = {Count}")]
+    [DebuggerTypeProxy(typeof(SystemCollectionsConcurrent_ProducerConsumerCollectionDebugView<>))]
+    internal class ConcurrentQueue<T> : IProducerConsumerCollection<T>
+    {
+        //fields of ConcurrentQueue
+        private volatile Segment _head;
+
+        private volatile Segment _tail;
+
+        private T[] _serializationArray; // Used for custom serialization.
+
+        private const int SEGMENT_SIZE = 32;
+
+        //number of snapshot takers, GetEnumerator(), ToList() and ToArray() operations take snapshot.
+        internal volatile int _numSnapshotTakers = 0;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="ConcurrentQueue{T}"/> class.
+        /// </summary>
+        public ConcurrentQueue()
+        {
+            _head = _tail = new Segment(0, this);
+        }
+
+        /// <summary>
+        /// Initializes the contents of the queue from an existing collection.
+        /// </summary>
+        /// <param name="collection">A collection from which to copy elements.</param>
+        private void InitializeFromCollection(IEnumerable<T> collection)
+        {
+            Segment localTail = new Segment(0, this);//use this local variable to avoid the extra volatile read/write. this is safe because it is only called from ctor
+            _head = localTail;
+
+            int index = 0;
+            foreach (T element in collection)
+            {
+                Debug.Assert(index >= 0 && index < SEGMENT_SIZE);
+                localTail.UnsafeAdd(element);
+                index++;
+
+                if (index >= SEGMENT_SIZE)
+                {
+                    localTail = localTail.UnsafeGrow();
+                    index = 0;
+                }
+            }
+
+            _tail = localTail;
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="ConcurrentQueue{T}"/>
+        /// class that contains elements copied from the specified collection
+        /// </summary>
+        /// <param name="collection">The collection whose elements are copied to the new <see
+        /// cref="ConcurrentQueue{T}"/>.</param>
+        /// <exception cref="T:System.ArgumentNullException">The <paramref name="collection"/> argument is
+        /// null.</exception>
+        public ConcurrentQueue(IEnumerable<T> collection)
+        {
+            if (collection == null)
+            {
+                throw new ArgumentNullException("collection");
+            }
+
+            InitializeFromCollection(collection);
+        }
+
+        /// <summary>
+        /// Get the data array to be serialized
+        /// </summary>
+        [OnSerializing]
+        private void OnSerializing(StreamingContext context)
+        {
+            // save the data into the serialization array to be saved
+            _serializationArray = ToArray();
+        }
+
+        /// <summary>
+        /// Construct the queue from a previously serialized one
+        /// </summary>
+        [OnDeserialized]
+        private void OnDeserialized(StreamingContext context)
+        {
+            Debug.Assert(_serializationArray != null);
+            InitializeFromCollection(_serializationArray);
+            _serializationArray = null;
+        }
+
+        /// <summary>
+        /// Copies the elements of the <see cref="T:System.Collections.ICollection"/> to an <see
+        /// cref="T:System.Array"/>, starting at a particular
+        /// <see cref="T:System.Array"/> index.
+        /// </summary>
+        /// <param name="array">The one-dimensional <see cref="T:System.Array">Array</see> that is the
+        /// destination of the elements copied from the
+        /// <see cref="T:System.Collections.Concurrent.ConcurrentBag"/>. The <see
+        /// cref="T:System.Array">Array</see> must have zero-based indexing.</param>
+        /// <param name="index">The zero-based index in <paramref name="array"/> at which copying
+        /// begins.</param>
+        /// <exception cref="ArgumentNullException"><paramref name="array"/> is a null reference (Nothing in
+        /// Visual Basic).</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is less than
+        /// zero.</exception>
+        /// <exception cref="ArgumentException">
+        /// <paramref name="array"/> is multidimensional. -or-
+        /// <paramref name="array"/> does not have zero-based indexing. -or-
+        /// <paramref name="index"/> is equal to or greater than the length of the <paramref name="array"/>
+        /// -or- The number of elements in the source <see cref="T:System.Collections.ICollection"/> is
+        /// greater than the available space from <paramref name="index"/> to the end of the destination
+        /// <paramref name="array"/>. -or- The type of the source <see
+        /// cref="T:System.Collections.ICollection"/> cannot be cast automatically to the type of the
+        /// destination <paramref name="array"/>.
+        /// </exception>
+        void ICollection.CopyTo(Array array, int index)
+        {
+            // Validate arguments.
+            if (array == null)
+            {
+                throw new ArgumentNullException("array");
+            }
+
+            // We must be careful not to corrupt the array, so we will first accumulate an
+            // internal list of elements that we will then copy to the array. This requires
+            // some extra allocation, but is necessary since we don't know up front whether
+            // the array is sufficiently large to hold the stack's contents.
+            ((ICollection)ToList()).CopyTo(array, index);
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether access to the <see cref="T:System.Collections.ICollection"/> is
+        /// synchronized with the SyncRoot.
+        /// </summary>
+        /// <value>true if access to the <see cref="T:System.Collections.ICollection"/> is synchronized
+        /// with the SyncRoot; otherwise, false. For <see cref="ConcurrentQueue{T}"/>, this property always
+        /// returns false.</value>
+        bool ICollection.IsSynchronized
+        {
+            // Gets a value indicating whether access to this collection is synchronized. Always returns
+            // false. The reason is subtle. While access is in face thread safe, it's not the case that
+            // locking on the SyncRoot would have prevented concurrent pushes and pops, as this property
+            // would typically indicate; that's because we internally use CAS operations vs. true locks.
+            get { return false; }
+        }
+
+
+        /// <summary>
+        /// Gets an object that can be used to synchronize access to the <see
+        /// cref="T:System.Collections.ICollection"/>. This property is not supported.
+        /// </summary>
+        /// <exception cref="T:System.NotSupportedException">The SyncRoot property is not supported.</exception>
+        object ICollection.SyncRoot
+        {
+            get
+            {
+                throw new NotSupportedException(SR.ConcurrentCollection_SyncRoot_NotSupported);
+            }
+        }
+
+        /// <summary>
+        /// Returns an enumerator that iterates through a collection.
+        /// </summary>
+        /// <returns>An <see cref="T:System.Collections.IEnumerator"/> that can be used to iterate through the collection.</returns>
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return ((IEnumerable<T>)this).GetEnumerator();
+        }
+
+        /// <summary>
+        /// Attempts to add an object to the <see
+        /// cref="T:System.Collections.Concurrent.IProducerConsumerCollection{T}"/>.
+        /// </summary>
+        /// <param name="item">The object to add to the <see
+        /// cref="T:System.Collections.Concurrent.IProducerConsumerCollection{T}"/>. The value can be a null
+        /// reference (Nothing in Visual Basic) for reference types.
+        /// </param>
+        /// <returns>true if the object was added successfully; otherwise, false.</returns>
+        /// <remarks>For <see cref="ConcurrentQueue{T}"/>, this operation will always add the object to the
+        /// end of the <see cref="ConcurrentQueue{T}"/>
+        /// and return true.</remarks>
+        bool IProducerConsumerCollection<T>.TryAdd(T item)
+        {
+            Enqueue(item);
+            return true;
+        }
+
+        /// <summary>
+        /// Attempts to remove and return an object from the <see
+        /// cref="T:System.Collections.Concurrent.IProducerConsumerCollection{T}"/>.
+        /// </summary>
+        /// <param name="item">
+        /// When this method returns, if the operation was successful, <paramref name="item"/> contains the
+        /// object removed. If no object was available to be removed, the value is unspecified.
+        /// </param>
+        /// <returns>true if an element was removed and returned successfully; otherwise, false.</returns>
+        /// <remarks>For <see cref="ConcurrentQueue{T}"/>, this operation will attempt to remove the object
+        /// from the beginning of the <see cref="ConcurrentQueue{T}"/>.
+        /// </remarks>
+        bool IProducerConsumerCollection<T>.TryTake(out T item)
+        {
+            return TryDequeue(out item);
+        }
+
+        /// <summary>
+        /// Gets a value that indicates whether the <see cref="ConcurrentQueue{T}"/> is empty.
+        /// </summary>
+        /// <value>true if the <see cref="ConcurrentQueue{T}"/> is empty; otherwise, false.</value>
+        /// <remarks>
+        /// For determining whether the collection contains any items, use of this property is recommended
+        /// rather than retrieving the number of items from the <see cref="Count"/> property and comparing it
+        /// to 0.  However, as this collection is intended to be accessed concurrently, it may be the case
+        /// that another thread will modify the collection after <see cref="IsEmpty"/> returns, thus invalidating
+        /// the result.
+        /// </remarks>
+        public bool IsEmpty
+        {
+            get
+            {
+                Segment head = _head;
+                if (!head.IsEmpty)
+                    //fast route 1:
+                    //if current head is not empty, then queue is not empty
+                    return false;
+                else if (head.Next == null)
+                    //fast route 2:
+                    //if current head is empty and it's the last segment
+                    //then queue is empty
+                    return true;
+                else
+                //slow route:
+                //current head is empty and it is NOT the last segment,
+                //it means another thread is growing new segment 
+                {
+                    SpinWait spin = new SpinWait();
+                    while (head.IsEmpty)
+                    {
+                        if (head.Next == null)
+                            return true;
+
+                        spin.SpinOnce();
+                        head = _head;
+                    }
+                    return false;
+                }
+            }
+        }
+
+        /// <summary>
+        /// Copies the elements stored in the <see cref="ConcurrentQueue{T}"/> to a new array.
+        /// </summary>
+        /// <returns>A new array containing a snapshot of elements copied from the <see
+        /// cref="ConcurrentQueue{T}"/>.</returns>
+        public T[] ToArray()
+        {
+            return ToList().ToArray();
+        }
+
+        /// <summary>
+        /// Copies the <see cref="ConcurrentQueue{T}"/> elements to a new <see
+        /// cref="T:System.Collections.Generic.List{T}"/>.
+        /// </summary>
+        /// <returns>A new <see cref="T:System.Collections.Generic.List{T}"/> containing a snapshot of
+        /// elements copied from the <see cref="ConcurrentQueue{T}"/>.</returns>
+        private List<T> ToList()
+        {
+            // Increments the number of active snapshot takers. This increment must happen before the snapshot is 
+            // taken. At the same time, Decrement must happen after list copying is over. Only in this way, can it
+            // eliminate race condition when Segment.TryRemove() checks whether _numSnapshotTakers == 0. 
+            Interlocked.Increment(ref _numSnapshotTakers);
+
+            List<T> list = new List<T>();
+            try
+            {
+                //store head and tail positions in buffer, 
+                Segment head, tail;
+                int headLow, tailHigh;
+                GetHeadTailPositions(out head, out tail, out headLow, out tailHigh);
+
+                if (head == tail)
+                {
+                    head.AddToList(list, headLow, tailHigh);
+                }
+                else
+                {
+                    head.AddToList(list, headLow, SEGMENT_SIZE - 1);
+                    Segment curr = head.Next;
+                    while (curr != tail)
+                    {
+                        curr.AddToList(list, 0, SEGMENT_SIZE - 1);
+                        curr = curr.Next;
+                    }
+                    //Add tail segment
+                    tail.AddToList(list, 0, tailHigh);
+                }
+            }
+            finally
+            {
+                // This Decrement must happen after copying is over. 
+                Interlocked.Decrement(ref _numSnapshotTakers);
+            }
+            return list;
+        }
+
+        /// <summary>
+        /// Store the position of the current head and tail positions.
+        /// </summary>
+        /// <param name="head">return the head segment</param>
+        /// <param name="tail">return the tail segment</param>
+        /// <param name="headLow">return the head offset, value range [0, SEGMENT_SIZE]</param>
+        /// <param name="tailHigh">return the tail offset, value range [-1, SEGMENT_SIZE-1]</param>
+        private void GetHeadTailPositions(out Segment head, out Segment tail,
+            out int headLow, out int tailHigh)
+        {
+            head = _head;
+            tail = _tail;
+            headLow = head.Low;
+            tailHigh = tail.High;
+            SpinWait spin = new SpinWait();
+
+            //we loop until the observed values are stable and sensible.  
+            //This ensures that any update order by other methods can be tolerated.
+            while (
+                //if head and tail changed, retry
+                head != _head || tail != _tail
+                //if low and high pointers, retry
+                || headLow != head.Low || tailHigh != tail.High
+                //if head jumps ahead of tail because of concurrent grow and dequeue, retry
+                || head._index > tail._index)
+            {
+                spin.SpinOnce();
+                head = _head;
+                tail = _tail;
+                headLow = head.Low;
+                tailHigh = tail.High;
+            }
+        }
+
+
+        /// <summary>
+        /// Gets the number of elements contained in the <see cref="ConcurrentQueue{T}"/>.
+        /// </summary>
+        /// <value>The number of elements contained in the <see cref="ConcurrentQueue{T}"/>.</value>
+        /// <remarks>
+        /// For determining whether the collection contains any items, use of the <see cref="IsEmpty"/>
+        /// property is recommended rather than retrieving the number of items from the <see cref="Count"/>
+        /// property and comparing it to 0.
+        /// </remarks>
+        public int Count
+        {
+            get
+            {
+                //store head and tail positions in buffer, 
+                Segment head, tail;
+                int headLow, tailHigh;
+                GetHeadTailPositions(out head, out tail, out headLow, out tailHigh);
+
+                if (head == tail)
+                {
+                    return tailHigh - headLow + 1;
+                }
+
+                //head segment
+                int count = SEGMENT_SIZE - headLow;
+
+                //middle segment(s), if any, are full.
+                //We don't deal with overflow to be consistent with the behavior of generic types in CLR.
+                count += SEGMENT_SIZE * ((int)(tail._index - head._index - 1));
+
+                //tail segment
+                count += tailHigh + 1;
+
+                return count;
+            }
+        }
+
+
+        /// <summary>
+        /// Copies the <see cref="ConcurrentQueue{T}"/> elements to an existing one-dimensional <see
+        /// cref="T:System.Array">Array</see>, starting at the specified array index.
+        /// </summary>
+        /// <param name="array">The one-dimensional <see cref="T:System.Array">Array</see> that is the
+        /// destination of the elements copied from the
+        /// <see cref="ConcurrentQueue{T}"/>. The <see cref="T:System.Array">Array</see> must have zero-based
+        /// indexing.</param>
+        /// <param name="index">The zero-based index in <paramref name="array"/> at which copying
+        /// begins.</param>
+        /// <exception cref="ArgumentNullException"><paramref name="array"/> is a null reference (Nothing in
+        /// Visual Basic).</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is less than
+        /// zero.</exception>
+        /// <exception cref="ArgumentException"><paramref name="index"/> is equal to or greater than the
+        /// length of the <paramref name="array"/>
+        /// -or- The number of elements in the source <see cref="ConcurrentQueue{T}"/> is greater than the
+        /// available space from <paramref name="index"/> to the end of the destination <paramref
+        /// name="array"/>.
+        /// </exception>
+        public void CopyTo(T[] array, int index)
+        {
+            if (array == null)
+            {
+                throw new ArgumentNullException("array");
+            }
+
+            // We must be careful not to corrupt the array, so we will first accumulate an
+            // internal list of elements that we will then copy to the array. This requires
+            // some extra allocation, but is necessary since we don't know up front whether
+            // the array is sufficiently large to hold the stack's contents.
+            ToList().CopyTo(array, index);
+        }
+
+
+        /// <summary>
+        /// Returns an enumerator that iterates through the <see
+        /// cref="ConcurrentQueue{T}"/>.
+        /// </summary>
+        /// <returns>An enumerator for the contents of the <see
+        /// cref="ConcurrentQueue{T}"/>.</returns>
+        /// <remarks>
+        /// The enumeration represents a moment-in-time snapshot of the contents
+        /// of the queue.  It does not reflect any updates to the collection after 
+        /// <see cref="GetEnumerator()"/> was called.  The enumerator is safe to use
+        /// concurrently with reads from and writes to the queue.
+        /// </remarks>
+        public IEnumerator<T> GetEnumerator()
+        {
+            // Increments the number of active snapshot takers. This increment must happen before the snapshot is 
+            // taken. At the same time, Decrement must happen after the enumeration is over. Only in this way, can it
+            // eliminate race condition when Segment.TryRemove() checks whether _numSnapshotTakers == 0. 
+            Interlocked.Increment(ref _numSnapshotTakers);
+
+            // Takes a snapshot of the queue. 
+            // A design flaw here: if a Thread.Abort() happens, we cannot decrement _numSnapshotTakers. But we cannot 
+            // wrap the following with a try/finally block, otherwise the decrement will happen before the yield return 
+            // statements in the GetEnumerator (head, tail, headLow, tailHigh) method.           
+            Segment head, tail;
+            int headLow, tailHigh;
+            GetHeadTailPositions(out head, out tail, out headLow, out tailHigh);
+
+            //If we put yield-return here, the iterator will be lazily evaluated. As a result a snapshot of
+            // the queue is not taken when GetEnumerator is initialized but when MoveNext() is first called.
+            // This is inconsistent with existing generic collections. In order to prevent it, we capture the 
+            // value of _head in a buffer and call out to a helper method.
+            //The old way of doing this was to return the ToList().GetEnumerator(), but ToList() was an 
+            // unnecessary performance hit.
+            return GetEnumerator(head, tail, headLow, tailHigh);
+        }
+
+        /// <summary>
+        /// Helper method of GetEnumerator to separate out yield return statement, and prevent lazy evaluation. 
+        /// </summary>
+        private IEnumerator<T> GetEnumerator(Segment head, Segment tail, int headLow, int tailHigh)
+        {
+            try
+            {
+                SpinWait spin = new SpinWait();
+
+                if (head == tail)
+                {
+                    for (int i = headLow; i <= tailHigh; i++)
+                    {
+                        // If the position is reserved by an Enqueue operation, but the value is not written into,
+                        // spin until the value is available.
+                        spin.Reset();
+                        while (!head._state[i]._value)
+                        {
+                            spin.SpinOnce();
+                        }
+                        yield return head._array[i];
+                    }
+                }
+                else
+                {
+                    //iterate on head segment
+                    for (int i = headLow; i < SEGMENT_SIZE; i++)
+                    {
+                        // If the position is reserved by an Enqueue operation, but the value is not written into,
+                        // spin until the value is available.
+                        spin.Reset();
+                        while (!head._state[i]._value)
+                        {
+                            spin.SpinOnce();
+                        }
+                        yield return head._array[i];
+                    }
+                    //iterate on middle segments
+                    Segment curr = head.Next;
+                    while (curr != tail)
+                    {
+                        for (int i = 0; i < SEGMENT_SIZE; i++)
+                        {
+                            // If the position is reserved by an Enqueue operation, but the value is not written into,
+                            // spin until the value is available.
+                            spin.Reset();
+                            while (!curr._state[i]._value)
+                            {
+                                spin.SpinOnce();
+                            }
+                            yield return curr._array[i];
+                        }
+                        curr = curr.Next;
+                    }
+
+                    //iterate on tail segment
+                    for (int i = 0; i <= tailHigh; i++)
+                    {
+                        // If the position is reserved by an Enqueue operation, but the value is not written into,
+                        // spin until the value is available.
+                        spin.Reset();
+                        while (!tail._state[i]._value)
+                        {
+                            spin.SpinOnce();
+                        }
+                        yield return tail._array[i];
+                    }
+                }
+            }
+            finally
+            {
+                // This Decrement must happen after the enumeration is over. 
+                Interlocked.Decrement(ref _numSnapshotTakers);
+            }
+        }
+
+        /// <summary>
+        /// Adds an object to the end of the <see cref="ConcurrentQueue{T}"/>.
+        /// </summary>
+        /// <param name="item">The object to add to the end of the <see
+        /// cref="ConcurrentQueue{T}"/>. The value can be a null reference
+        /// (Nothing in Visual Basic) for reference types.
+        /// </param>
+        public void Enqueue(T item)
+        {
+            SpinWait spin = new SpinWait();
+            while (true)
+            {
+                Segment tail = _tail;
+                if (tail.TryAppend(item))
+                    return;
+                spin.SpinOnce();
+            }
+        }
+
+
+        /// <summary>
+        /// Attempts to remove and return the object at the beginning of the <see
+        /// cref="ConcurrentQueue{T}"/>.
+        /// </summary>
+        /// <param name="result">
+        /// When this method returns, if the operation was successful, <paramref name="result"/> contains the
+        /// object removed. If no object was available to be removed, the value is unspecified.
+        /// </param>
+        /// <returns>true if an element was removed and returned from the beginning of the <see
+        /// cref="ConcurrentQueue{T}"/>
+        /// successfully; otherwise, false.</returns>
+        public bool TryDequeue(out T result)
+        {
+            while (!IsEmpty)
+            {
+                Segment head = _head;
+                if (head.TryRemove(out result))
+                    return true;
+                //since method IsEmpty spins, we don't need to spin in the while loop
+            }
+            result = default(T);
+            return false;
+        }
+
+        /// <summary>
+        /// Attempts to return an object from the beginning of the <see cref="ConcurrentQueue{T}"/>
+        /// without removing it.
+        /// </summary>
+        /// <param name="result">When this method returns, <paramref name="result"/> contains an object from
+        /// the beginning of the <see cref="T:System.Collections.Concurrent.ConcurrentQueue{T}"/> or an
+        /// unspecified value if the operation failed.</param>
+        /// <returns>true if and object was returned successfully; otherwise, false.</returns>
+        public bool TryPeek(out T result)
+        {
+            Interlocked.Increment(ref _numSnapshotTakers);
+
+            while (!IsEmpty)
+            {
+                Segment head = _head;
+                if (head.TryPeek(out result))
+                {
+                    Interlocked.Decrement(ref _numSnapshotTakers);
+                    return true;
+                }
+                //since method IsEmpty spins, we don't need to spin in the while loop
+            }
+            result = default(T);
+            Interlocked.Decrement(ref _numSnapshotTakers);
+            return false;
+        }
+
+
+        /// <summary>
+        /// private class for ConcurrentQueue. 
+        /// a queue is a linked list of small arrays, each node is called a segment.
+        /// A segment contains an array, a pointer to the next segment, and _low, _high indices recording
+        /// the first and last valid elements of the array.
+        /// </summary>
+        private class Segment
+        {
+            //we define two volatile arrays: _array and _state. Note that the accesses to the array items 
+            //do not get volatile treatment. But we don't need to worry about loading adjacent elements or 
+            //store/load on adjacent elements would suffer reordering. 
+            // - Two stores:  these are at risk, but CLRv2 memory model guarantees store-release hence we are safe.
+            // - Two loads: because one item from two volatile arrays are accessed, the loads of the array references
+            //          are sufficient to prevent reordering of the loads of the elements.
+            internal volatile T[] _array;
+
+            // For each entry in _array, the corresponding entry in _state indicates whether this position contains 
+            // a valid value. _state is initially all false. 
+            internal volatile VolatileBool[] _state;
+
+            //pointer to the next segment. null if the current segment is the last segment
+            private volatile Segment _next;
+
+            //We use this zero based index to track how many segments have been created for the queue, and
+            //to compute how many active segments are there currently. 
+            // * The number of currently active segments is : _tail._index - _head._index + 1;
+            // * _index is incremented with every Segment.Grow operation. We use Int64 type, and we can safely 
+            //   assume that it never overflows. To overflow, we need to do 2^63 increments, even at a rate of 4 
+            //   billion (2^32) increments per second, it takes 2^31 seconds, which is about 64 years.
+            internal readonly long _index;
+
+            //indices of where the first and last valid values
+            // - _low points to the position of the next element to pop from this segment, range [0, infinity)
+            //      _low >= SEGMENT_SIZE implies the segment is disposable
+            // - _high points to the position of the latest pushed element, range [-1, infinity)
+            //      _high == -1 implies the segment is new and empty
+            //      _high >= SEGMENT_SIZE-1 means this segment is ready to grow. 
+            //        and the thread who sets _high to SEGMENT_SIZE-1 is responsible to grow the segment
+            // - Math.Min(_low, SEGMENT_SIZE) > Math.Min(_high, SEGMENT_SIZE-1) implies segment is empty
+            // - initially _low =0 and _high=-1;
+            private volatile int _low;
+            private volatile int _high;
+
+            private volatile ConcurrentQueue<T> _source;
+
+            /// <summary>
+            /// Create and initialize a segment with the specified index.
+            /// </summary>
+            internal Segment(long index, ConcurrentQueue<T> source)
+            {
+                _array = new T[SEGMENT_SIZE];
+                _state = new VolatileBool[SEGMENT_SIZE]; //all initialized to false
+                _high = -1;
+                Debug.Assert(index >= 0);
+                _index = index;
+                _source = source;
+            }
+
+            /// <summary>
+            /// return the next segment
+            /// </summary>
+            internal Segment Next
+            {
+                get { return _next; }
+            }
+
+
+            /// <summary>
+            /// return true if the current segment is empty (doesn't have any element available to dequeue, 
+            /// false otherwise
+            /// </summary>
+            internal bool IsEmpty
+            {
+                get { return (Low > High); }
+            }
+
+            /// <summary>
+            /// Add an element to the tail of the current segment
+            /// exclusively called by ConcurrentQueue.InitializedFromCollection
+            /// InitializeFromCollection is responsible to guarantee that there is no index overflow,
+            /// and there is no contention
+            /// </summary>
+            /// <param name="value"></param>
+            internal void UnsafeAdd(T value)
+            {
+                Debug.Assert(_high < SEGMENT_SIZE - 1);
+                _high++;
+                _array[_high] = value;
+                _state[_high]._value = true;
+            }
+
+            /// <summary>
+            /// Create a new segment and append to the current one
+            /// Does not update the _tail pointer
+            /// exclusively called by ConcurrentQueue.InitializedFromCollection
+            /// InitializeFromCollection is responsible to guarantee that there is no index overflow,
+            /// and there is no contention
+            /// </summary>
+            /// <returns>the reference to the new Segment</returns>
+            internal Segment UnsafeGrow()
+            {
+                Debug.Assert(_high >= SEGMENT_SIZE - 1);
+                Segment newSegment = new Segment(_index + 1, _source); //_index is Int64, we don't need to worry about overflow
+                _next = newSegment;
+                return newSegment;
+            }
+
+            /// <summary>
+            /// Create a new segment and append to the current one
+            /// Update the _tail pointer
+            /// This method is called when there is no contention
+            /// </summary>
+            internal void Grow()
+            {
+                //no CAS is needed, since there is no contention (other threads are blocked, busy waiting)
+                Segment newSegment = new Segment(_index + 1, _source);  //_index is Int64, we don't need to worry about overflow
+                _next = newSegment;
+                Debug.Assert(_source._tail == this);
+                _source._tail = _next;
+            }
+
+
+            /// <summary>
+            /// Try to append an element at the end of this segment.
+            /// </summary>
+            /// <param name="value">the element to append</param>
+            /// <returns>true if the element is appended, false if the current segment is full</returns>
+            /// <remarks>if appending the specified element succeeds, and after which the segment is full, 
+            /// then grow the segment</remarks>
+            internal bool TryAppend(T value)
+            {
+                //quickly check if _high is already over the boundary, if so, bail out
+                if (_high >= SEGMENT_SIZE - 1)
+                {
+                    return false;
+                }
+
+                //Now we will use a CAS to increment _high, and store the result in newhigh.
+                //Depending on how many free spots left in this segment and how many threads are doing this Increment
+                //at this time, the returning "newhigh" can be 
+                // 1) < SEGMENT_SIZE - 1 : we took a spot in this segment, and not the last one, just insert the value
+                // 2) == SEGMENT_SIZE - 1 : we took the last spot, insert the value AND grow the segment
+                // 3) > SEGMENT_SIZE - 1 : we failed to reserve a spot in this segment, we return false to 
+                //    Queue.Enqueue method, telling it to try again in the next segment.
+
+                int newhigh = SEGMENT_SIZE; //initial value set to be over the boundary
+
+                //We need do Interlocked.Increment and value/state update in a finally block to ensure that they run
+                //without interuption. This is to prevent anything from happening between them, and another dequeue
+                //thread maybe spinning forever to wait for _state[] to be true;
+                try
+                { }
+                finally
+                {
+                    newhigh = Interlocked.Increment(ref _high);
+                    if (newhigh <= SEGMENT_SIZE - 1)
+                    {
+                        _array[newhigh] = value;
+                        _state[newhigh]._value = true;
+                    }
+
+                    //if this thread takes up the last slot in the segment, then this thread is responsible
+                    //to grow a new segment. Calling Grow must be in the finally block too for reliability reason:
+                    //if thread abort during Grow, other threads will be left busy spinning forever.
+                    if (newhigh == SEGMENT_SIZE - 1)
+                    {
+                        Grow();
+                    }
+                }
+
+                //if newhigh <= SEGMENT_SIZE-1, it means the current thread successfully takes up a spot
+                return newhigh <= SEGMENT_SIZE - 1;
+            }
+
+
+            /// <summary>
+            /// try to remove an element from the head of current segment
+            /// </summary>
+            /// <param name="result">The result.</param>
+            /// <returns>return false only if the current segment is empty</returns>
+            internal bool TryRemove(out T result)
+            {
+                SpinWait spin = new SpinWait();
+                int lowLocal = Low, highLocal = High;
+                while (lowLocal <= highLocal)
+                {
+                    //try to update _low
+                    if (Interlocked.CompareExchange(ref _low, lowLocal + 1, lowLocal) == lowLocal)
+                    {
+                        //if the specified value is not available (this spot is taken by a push operation,
+                        // but the value is not written into yet), then spin
+                        SpinWait spinLocal = new SpinWait();
+                        while (!_state[lowLocal]._value)
+                        {
+                            spinLocal.SpinOnce();
+                        }
+                        result = _array[lowLocal];
+
+                        // If there is no other thread taking snapshot (GetEnumerator(), ToList(), etc), reset the deleted entry to null.
+                        // It is ok if after this conditional check _numSnapshotTakers becomes > 0, because new snapshots won't include 
+                        // the deleted entry at _array[lowLocal]. 
+                        if (_source._numSnapshotTakers <= 0)
+                        {
+                            _array[lowLocal] = default(T); //release the reference to the object. 
+                        }
+
+                        //if the current thread sets _low to SEGMENT_SIZE, which means the current segment becomes
+                        //disposable, then this thread is responsible to dispose this segment, and reset _head 
+                        if (lowLocal + 1 >= SEGMENT_SIZE)
+                        {
+                            //  Invariant: we only dispose the current _head, not any other segment
+                            //  In usual situation, disposing a segment is simply setting _head to _head._next
+                            //  But there is one special case, where _head and _tail points to the same and ONLY
+                            //segment of the queue: Another thread A is doing Enqueue and finds that it needs to grow,
+                            //while the *current* thread is doing *this* Dequeue operation, and finds that it needs to 
+                            //dispose the current (and ONLY) segment. Then we need to wait till thread A finishes its 
+                            //Grow operation, this is the reason of having the following while loop
+                            spinLocal = new SpinWait();
+                            while (_next == null)
+                            {
+                                spinLocal.SpinOnce();
+                            }
+                            Debug.Assert(_source._head == this);
+                            _source._head = _next;
+                        }
+                        return true;
+                    }
+                    else
+                    {
+                        //CAS failed due to contention: spin briefly and retry
+                        spin.SpinOnce();
+                        lowLocal = Low; highLocal = High;
+                    }
+                }//end of while
+                result = default(T);
+                return false;
+            }
+
+            /// <summary>
+            /// try to peek the current segment
+            /// </summary>
+            /// <param name="result">holds the return value of the element at the head position, 
+            /// value set to default(T) if there is no such an element</param>
+            /// <returns>true if there are elements in the current segment, false otherwise</returns>
+            internal bool TryPeek(out T result)
+            {
+                result = default(T);
+                int lowLocal = Low;
+                if (lowLocal > High)
+                    return false;
+                SpinWait spin = new SpinWait();
+                while (!_state[lowLocal]._value)
+                {
+                    spin.SpinOnce();
+                }
+                result = _array[lowLocal];
+                return true;
+            }
+
+            /// <summary>
+            /// Adds part or all of the current segment into a List.
+            /// </summary>
+            /// <param name="list">the list to which to add</param>
+            /// <param name="start">the start position</param>
+            /// <param name="end">the end position</param>
+            internal void AddToList(List<T> list, int start, int end)
+            {
+                for (int i = start; i <= end; i++)
+                {
+                    SpinWait spin = new SpinWait();
+                    while (!_state[i]._value)
+                    {
+                        spin.SpinOnce();
+                    }
+                    list.Add(_array[i]);
+                }
+            }
+
+            /// <summary>
+            /// return the position of the head of the current segment
+            /// Value range [0, SEGMENT_SIZE], if it's SEGMENT_SIZE, it means this segment is exhausted and thus empty
+            /// </summary>
+            internal int Low
+            {
+                get
+                {
+                    return Math.Min(_low, SEGMENT_SIZE);
+                }
+            }
+
+            /// <summary>
+            /// return the logical position of the tail of the current segment      
+            /// Value range [-1, SEGMENT_SIZE-1]. When it's -1, it means this is a new segment and has no elemnet yet
+            /// </summary>
+            internal int High
+            {
+                get
+                {
+                    //if _high > SEGMENT_SIZE, it means it's out of range, we should return
+                    //SEGMENT_SIZE-1 as the logical position
+                    return Math.Min(_high, SEGMENT_SIZE - 1);
+                }
+            }
+        }
+    }//end of class Segment
+
+    /// <summary>
+    /// A wrapper struct for volatile bool, please note the copy of the struct it self will not be volatile
+    /// for example this statement will not include in volatile operation volatileBool1 = volatileBool2 the jit will copy the struct and will ignore the volatile
+    /// </summary>
+    struct VolatileBool
+    {
+        public VolatileBool(bool value)
+        {
+            _value = value;
+        }
+        public volatile bool _value;
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/DataflowEtwProvider.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/DataflowEtwProvider.cs
new file mode 100644 (file)
index 0000000..1befecd
--- /dev/null
@@ -0,0 +1,235 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// DataflowEtwProvider.cs
+//
+//
+// EventSource for Dataflow.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Linq;
+using System.Security;
+#if FEATURE_TRACING
+using System.Diagnostics.Tracing;
+#endif
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+#if FEATURE_TRACING
+    /// <summary>Provides an event source for tracing Dataflow information.</summary>
+    [EventSource(
+        Name = "System.Threading.Tasks.Dataflow.DataflowEventSource",
+        Guid = "16F53577-E41D-43D4-B47E-C17025BF4025",
+        LocalizationResources = "FxResources.System.Threading.Tasks.Dataflow.SR")]
+    internal sealed class DataflowEtwProvider : EventSource
+    {
+        /// <summary>
+        /// Defines the singleton instance for the dataflow ETW provider.
+        /// The dataflow provider GUID is {16F53577-E41D-43D4-B47E-C17025BF4025}.
+        /// </summary>
+        internal readonly static DataflowEtwProvider Log = new DataflowEtwProvider();
+        /// <summary>Prevent external instantiation.  All logging should go through the Log instance.</summary>
+        private DataflowEtwProvider() { }
+
+        /// <summary>Enabled for all keywords.</summary>
+        private const EventKeywords ALL_KEYWORDS = (EventKeywords)(-1);
+
+        //-----------------------------------------------------------------------------------
+        //        
+        // Dataflow Event IDs (must be unique)
+        //
+
+        /// <summary>The event ID for when we encounter a new dataflow block object that hasn't had its name traced to the trace file.</summary>
+        private const int DATAFLOWBLOCKCREATED_EVENTID = 1;
+        /// <summary>The event ID for the task launched event.</summary>
+        private const int TASKLAUNCHED_EVENTID = 2;
+        /// <summary>The event ID for the block completed event.</summary>
+        private const int BLOCKCOMPLETED_EVENTID = 3;
+        /// <summary>The event ID for the block linked event.</summary>
+        private const int BLOCKLINKED_EVENTID = 4;
+        /// <summary>The event ID for the block unlinked event.</summary>
+        private const int BLOCKUNLINKED_EVENTID = 5;
+
+        //-----------------------------------------------------------------------------------
+        //        
+        // Dataflow Events
+        //
+
+    #region Block Creation
+        /// <summary>Trace an event for when a new block is instantiated.</summary>
+        /// <param name="block">The dataflow block that was created.</param>
+        /// <param name="dataflowBlockOptions">The options with which the block was created.</param>
+        [NonEvent]
+        internal void DataflowBlockCreated(IDataflowBlock block, DataflowBlockOptions dataflowBlockOptions)
+        {
+            Contract.Requires(block != null, "Block needed for the ETW event.");
+            Contract.Requires(dataflowBlockOptions != null, "Options needed for the ETW event.");
+
+            if (IsEnabled(EventLevel.Informational, ALL_KEYWORDS))
+            {
+                DataflowBlockCreated(
+                    Common.GetNameForDebugger(block, dataflowBlockOptions),
+                    Common.GetBlockId(block));
+            }
+        }
+
+        [Event(DATAFLOWBLOCKCREATED_EVENTID, Level = EventLevel.Informational)]
+        private void DataflowBlockCreated(string blockName, int blockId)
+        {
+            WriteEvent(DATAFLOWBLOCKCREATED_EVENTID, blockName, blockId);
+        }
+    #endregion
+
+    #region Task Launching
+        /// <summary>Trace an event for a block launching a task to handle messages.</summary>
+        /// <param name="block">The owner block launching a task.</param>
+        /// <param name="task">The task being launched for processing.</param>
+        /// <param name="reason">The reason the task is being launched.</param>
+        /// <param name="availableMessages">The number of messages available to be handled by the task.</param>
+        [NonEvent]
+        internal void TaskLaunchedForMessageHandling(
+            IDataflowBlock block, Task task, TaskLaunchedReason reason, int availableMessages)
+        {
+            Contract.Requires(block != null, "Block needed for the ETW event.");
+            Contract.Requires(task != null, "Task needed for the ETW event.");
+            Contract.Requires(reason == TaskLaunchedReason.ProcessingInputMessages || reason == TaskLaunchedReason.OfferingOutputMessages,
+                "The reason should be a supported value from the TaskLaunchedReason enumeration.");
+            if (IsEnabled(EventLevel.Informational, ALL_KEYWORDS))
+            {
+                TaskLaunchedForMessageHandling(Common.GetBlockId(block), reason, availableMessages, task.Id);
+            }
+        }
+
+        [ThreadStatic]
+        private static object[] t_sharedArray;
+
+        [Event(TASKLAUNCHED_EVENTID, Level = EventLevel.Informational)]
+        private void TaskLaunchedForMessageHandling(int blockId, TaskLaunchedReason reason, int availableMessages, int taskId)
+        {
+            // There is no explicit WriteEvent() overload matching this event's fields:
+            //     WriteEvent(TASKLAUNCHED_EVENTID, blockId, (int)reason, availableMessages, taskId);
+            // Therefore this call would hit the "params" overload, which leads to multiple object 
+            // allocations every time this event is fired.
+
+            if (t_sharedArray == null)
+            {
+                t_sharedArray = new object[4];
+            }
+            t_sharedArray[0] = blockId;
+            t_sharedArray[1] = (int)reason;
+            t_sharedArray[2] = availableMessages;
+            t_sharedArray[3] = taskId;
+
+            WriteEvent(TASKLAUNCHED_EVENTID, t_sharedArray);
+        }
+
+        /// <summary>Describes the reason a task is being launched.</summary>
+        internal enum TaskLaunchedReason
+        {
+            /// <summary>A task is being launched to process incoming messages.</summary>
+            ProcessingInputMessages = 1,
+            /// <summary>A task is being launched to offer outgoing messages to linked targets.</summary>
+            OfferingOutputMessages = 2,
+        }
+    #endregion
+
+    #region Block Completion
+        /// <summary>Trace an event for a block completing.</summary>
+        /// <param name="block">The block that's completing.</param>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        [NonEvent]
+        internal void DataflowBlockCompleted(IDataflowBlock block)
+        {
+            Contract.Requires(block != null, "Block needed for the ETW event.");
+            if (IsEnabled(EventLevel.Informational, ALL_KEYWORDS))
+            {
+                Task completionTask = Common.GetPotentiallyNotSupportedCompletionTask(block);
+                bool blockIsCompleted = completionTask != null && completionTask.IsCompleted;
+                Debug.Assert(blockIsCompleted, "Block must be completed for this event to be valid.");
+                if (blockIsCompleted)
+                {
+                    var reason = (BlockCompletionReason)completionTask.Status;
+                    string exceptionData = string.Empty;
+
+                    if (completionTask.IsFaulted)
+                    {
+                        try { exceptionData = string.Join(Environment.NewLine, completionTask.Exception.InnerExceptions.Select(e => e.ToString())); }
+                        catch { }
+                    }
+
+                    DataflowBlockCompleted(Common.GetBlockId(block), reason, exceptionData);
+                }
+            }
+        }
+
+        /// <summary>Describes the reason a block completed.</summary>
+        internal enum BlockCompletionReason
+        {
+            /// <summary>The block completed successfully.</summary>
+            RanToCompletion = (int)TaskStatus.RanToCompletion,
+            /// <summary>The block completed due to an error.</summary>
+            Faulted = (int)TaskStatus.Faulted,
+            /// <summary>The block completed due to cancellation.</summary>
+            Canceled = (int)TaskStatus.Canceled
+        }
+
+        [Event(BLOCKCOMPLETED_EVENTID, Level = EventLevel.Informational)]
+        private void DataflowBlockCompleted(int blockId, BlockCompletionReason reason, string exceptionData)
+        {
+            WriteEvent(BLOCKCOMPLETED_EVENTID, blockId, (int)reason, exceptionData);
+        }
+    #endregion
+
+    #region Linking
+        /// <summary>Trace an event for a block linking.</summary>
+        /// <param name="source">The source block linking to a target.</param>
+        /// <param name="target">The target block being linked from a source.</param>
+        [NonEvent]
+        internal void DataflowBlockLinking<T>(ISourceBlock<T> source, ITargetBlock<T> target)
+        {
+            Contract.Requires(source != null, "Source needed for the ETW event.");
+            Contract.Requires(target != null, "Target needed for the ETW event.");
+            if (IsEnabled(EventLevel.Informational, ALL_KEYWORDS))
+            {
+                DataflowBlockLinking(Common.GetBlockId(source), Common.GetBlockId(target));
+            }
+        }
+
+        [Event(BLOCKLINKED_EVENTID, Level = EventLevel.Informational)]
+        private void DataflowBlockLinking(int sourceId, int targetId)
+        {
+            WriteEvent(BLOCKLINKED_EVENTID, sourceId, targetId);
+        }
+    #endregion
+
+    #region Unlinking
+        /// <summary>Trace an event for a block unlinking.</summary>
+        /// <param name="source">The source block unlinking from a target.</param>
+        /// <param name="target">The target block being unlinked from a source.</param>
+        [NonEvent]
+        internal void DataflowBlockUnlinking<T>(ISourceBlock<T> source, ITargetBlock<T> target)
+        {
+            Contract.Requires(source != null, "Source needed for the ETW event.");
+            Contract.Requires(target != null, "Target needed for the ETW event.");
+            if (IsEnabled(EventLevel.Informational, ALL_KEYWORDS))
+            {
+                // Try catch exists to prevent against faulty blocks or blocks that only partially implement the interface
+                DataflowBlockUnlinking(Common.GetBlockId(source), Common.GetBlockId(target));
+            }
+        }
+
+        [Event(BLOCKUNLINKED_EVENTID, Level = EventLevel.Informational)]
+        private void DataflowBlockUnlinking(int sourceId, int targetId)
+        {
+            WriteEvent(BLOCKUNLINKED_EVENTID, sourceId, targetId);
+        }
+    #endregion
+    }
+#endif
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/EnumerableDebugView.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/EnumerableDebugView.cs
new file mode 100644 (file)
index 0000000..4bcabb3
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// EnumerableDebugView.cs
+//
+//
+// Debugger type proxy for enumerables.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.Contracts;
+using System.Linq;
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    /// <summary>Debugger type proxy for an enumerable of T.</summary>
+    internal sealed class EnumerableDebugView<TKey, TValue>
+    {
+        /// <summary>The enumerable being visualized.</summary>
+        private readonly IEnumerable<KeyValuePair<TKey, TValue>> _enumerable;
+
+        /// <summary>Initializes the debug view.</summary>
+        /// <param name="enumerable">The enumerable being debugged.</param>
+        public EnumerableDebugView(IEnumerable<KeyValuePair<TKey, TValue>> enumerable)
+        {
+            Contract.Requires(enumerable != null, "Expected a non-null enumerable.");
+            _enumerable = enumerable;
+        }
+
+        /// <summary>Gets the contents of the list.</summary>
+        [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+        public KeyValuePair<TKey, TValue>[] Items { get { return _enumerable.ToArray(); } }
+    }
+
+    /// <summary>Debugger type proxy for an enumerable of T.</summary>
+    internal sealed class EnumerableDebugView<T>
+    {
+        /// <summary>The enumerable being visualized.</summary>
+        private readonly IEnumerable<T> _enumerable;
+
+        /// <summary>Initializes the debug view.</summary>
+        /// <param name="enumerable">The enumerable being debugged.</param>
+        public EnumerableDebugView(IEnumerable<T> enumerable)
+        {
+            Contract.Requires(enumerable != null, "Expected a non-null enumerable.");
+            _enumerable = enumerable;
+        }
+
+        /// <summary>Gets the contents of the list.</summary>
+        [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+        public T[] Items { get { return _enumerable.ToArray(); } }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/IDebuggerDisplay.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/IDebuggerDisplay.cs
new file mode 100644 (file)
index 0000000..4b7118a
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// IDebuggerDisplay.cs
+//
+//
+// An interface implemented by objects that expose their debugger display
+// attribute content through a property, making it possible for code to query
+// for the same content.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    /// <summary>Implemented to provide customizable data for debugger displays.</summary>
+    internal interface IDebuggerDisplay
+    {
+        /// <summary>The object to be displayed as the content of a DebuggerDisplayAttribute.</summary>
+        /// <remarks>
+        /// The property returns an object to allow the debugger to interpret arbitrary .NET objects.
+        /// The return value may be, but need not be limited to be, a string.
+        /// </remarks>
+        object Content { get; }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/IProducerConsumerCollection.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/IProducerConsumerCollection.cs
new file mode 100644 (file)
index 0000000..2ca643a
--- /dev/null
@@ -0,0 +1,112 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// IProducerConsumerCollection.cs
+//
+//
+// A common interface for all concurrent collections.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+
+namespace System.Threading.Tasks.Dataflow.Internal.Collections
+{
+    /// <summary>
+    /// Defines methods to manipulate thread-safe collections intended for producer/consumer usage.
+    /// </summary>
+    /// <typeparam name="T">Specifies the type of elements in the collection.</typeparam>
+    /// <remarks>
+    /// All implementations of this interface must enable all members of this interface
+    /// to be used concurrently from multiple threads.
+    /// </remarks>
+    internal interface IProducerConsumerCollection<T> : IEnumerable<T>, ICollection
+    {
+        /// <summary>
+        /// Copies the elements of the <see cref="IProducerConsumerCollection{T}"/> to
+        /// an
+        /// <see cref="T:System.Array"/>, starting at a specified index.
+        /// </summary>
+        /// <param name="array">The one-dimensional <see cref="T:System.Array"/> that is the destination of
+        /// the elements copied from the <see cref="IProducerConsumerCollection{T}"/>.
+        /// The array must have zero-based indexing.</param>
+        /// <param name="index">The zero-based index in <paramref name="array"/> at which copying
+        /// begins.</param>
+        /// <exception cref="ArgumentNullException"><paramref name="array"/> is a null reference (Nothing in
+        /// Visual Basic).</exception>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is less than
+        /// zero.</exception>
+        /// <exception cref="ArgumentException"><paramref name="index"/> is equal to or greater than the
+        /// length of the <paramref name="array"/>
+        /// -or- The number of elements in the source <see cref="ConcurrentQueue{T}"/> is greater than the
+        /// available space from <paramref name="index"/> to the end of the destination <paramref
+        /// name="array"/>.
+        /// </exception>
+        void CopyTo(T[] array, int index);
+
+        /// <summary>
+        /// Attempts to add an object to the <see
+        /// cref="IProducerConsumerCollection{T}"/>.
+        /// </summary>
+        /// <param name="item">The object to add to the <see
+        /// cref="IProducerConsumerCollection{T}"/>.</param>
+        /// <returns>true if the object was added successfully; otherwise, false.</returns>
+        /// <exception cref="T:System.ArgumentException">The <paramref name="item"/> was invalid for this collection.</exception>
+        bool TryAdd(T item);
+
+        /// <summary>
+        /// Attempts to remove and return an object from the <see cref="IProducerConsumerCollection{T}"/>.
+        /// </summary>
+        /// <param name="item">
+        /// When this method returns, if the object was removed and returned successfully, <paramref
+        /// name="item"/> contains the removed object. If no object was available to be removed, the value is
+        /// unspecified.
+        /// </param>
+        /// <returns>true if an object was removed and returned successfully; otherwise, false.</returns>
+        bool TryTake(out T item);
+
+        /// <summary>
+        /// Copies the elements contained in the <see cref="IProducerConsumerCollection{T}"/> to a new array.
+        /// </summary>
+        /// <returns>A new array containing the elements copied from the <see cref="IProducerConsumerCollection{T}"/>.</returns>
+        T[] ToArray();
+    }
+
+
+    /// <summary>
+    /// A debugger view of the IProducerConsumerCollection that makes it simple to browse the
+    /// collection's contents at a point in time.
+    /// </summary>
+    /// <typeparam name="T">The type of elements stored within.</typeparam>
+    internal sealed class SystemCollectionsConcurrent_ProducerConsumerCollectionDebugView<T>
+    {
+        private IProducerConsumerCollection<T> _collection; // The collection being viewed.
+
+        /// <summary>
+        /// Constructs a new debugger view object for the provided collection object.
+        /// </summary>
+        /// <param name="collection">A collection to browse in the debugger.</param>
+        public SystemCollectionsConcurrent_ProducerConsumerCollectionDebugView(IProducerConsumerCollection<T> collection)
+        {
+            if (collection == null)
+            {
+                throw new ArgumentNullException("collection");
+            }
+
+            _collection = collection;
+        }
+
+        /// <summary>
+        /// Returns a snapshot of the underlying collection's elements.
+        /// </summary>
+        [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+        public T[] Items
+        {
+            get { return _collection.ToArray(); }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ImmutableList.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ImmutableList.cs
new file mode 100644 (file)
index 0000000..93943f7
--- /dev/null
@@ -0,0 +1,89 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// ImmutableList.cs
+//
+//
+// An immutable data structure that supports adding, removing, and enumerating elements.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics.Contracts;
+using System.Diagnostics;
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    /// <summary>Provides a simple, immutable list.</summary>
+    /// <typeparam name="T">Specifies the type of the data stored in the list.</typeparam>
+    [DebuggerDisplay("Count={Count}")]
+    [DebuggerTypeProxy(typeof(EnumerableDebugView<>))]
+    internal sealed class ImmutableList<T> : IEnumerable<T>
+    {
+        /// <summary>An empty list.</summary>
+        private readonly static ImmutableList<T> _empty = new ImmutableList<T>();
+        /// <summary>The immutable data in this list instance.</summary>
+        private readonly T[] _array;
+
+        /// <summary>Gets the empty list.</summary>
+        public static ImmutableList<T> Empty { get { return _empty; } }
+
+        /// <summary>Initializes the immutable list to be empty.</summary>
+        private ImmutableList() : this(new T[0]) { }
+
+        /// <summary>Initializes the immutable list with the specified elements.</summary>
+        /// <param name="elements">The element array to use for this list's data.</param>
+        private ImmutableList(T[] elements)
+        {
+            Contract.Requires(elements != null, "List requires an array to wrap.");
+            _array = elements;
+        }
+
+        /// <summary>Creates a new immutable list from this list and the additional element.</summary>
+        /// <param name="item">The item to add.</param>
+        /// <returns>The new list.</returns>
+        public ImmutableList<T> Add(T item)
+        {
+            // Copy the elements from this list and the item
+            // to a new list that's returned.
+            var newArray = new T[_array.Length + 1];
+            Array.Copy(_array, 0, newArray, 0, _array.Length);
+            newArray[newArray.Length - 1] = item;
+            return new ImmutableList<T>(newArray);
+        }
+
+        /// <summary>Creates a new immutable list from this list and without the specified element.</summary>
+        /// <param name="item">The item to remove.</param>
+        /// <returns>The new list.</returns>
+        public ImmutableList<T> Remove(T item)
+        {
+            // Get the index of the element.  If it's not in the list, just return this list.
+            int index = Array.IndexOf(_array, item);
+            if (index < 0) return this;
+
+            // It's in the list, so if it's the only one, just return the empty list
+            if (_array.Length == 1) return Empty;
+
+            // Otherwise, copy the other elements to a new list that's returned.
+            var newArray = new T[_array.Length - 1];
+            Array.Copy(_array, 0, newArray, 0, index);
+            Array.Copy(_array, index + 1, newArray, index, _array.Length - index - 1);
+            return new ImmutableList<T>(newArray);
+        }
+
+        /// <summary>Gets the number of elements in this list.</summary>
+        public int Count { get { return _array.Length; } }
+
+        /// <summary>Gets whether the list contains the specified item.</summary>
+        /// <param name="item">The item to lookup.</param>
+        /// <returns>true if the list contains the item; otherwise, false.</returns>
+        public bool Contains(T item) { return Array.IndexOf(_array, item) >= 0; }
+
+        /// <summary>Returns an enumerator that iterates through the collection.</summary>
+        public IEnumerator<T> GetEnumerator() { return ((IEnumerable<T>)_array).GetEnumerator(); }
+        /// <summary>Returns an enumerator that iterates through the collection.</summary>
+        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return this.GetEnumerator(); }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/Padding.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/Padding.cs
new file mode 100644 (file)
index 0000000..9786e14
--- /dev/null
@@ -0,0 +1,37 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// Padding.cs
+//
+//
+// Helper structs for padding over CPU cache lines to avoid false sharing.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Runtime.InteropServices;
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    /// <summary>A placeholder class for common padding constants and eventually routines.</summary>
+    internal static class Padding
+    {
+        /// <summary>A size greater than or equal to the size of the most common CPU cache lines.</summary>
+        internal const int CACHE_LINE_SIZE = 128;
+    }
+
+    /// <summary>Padding structure used to minimize false sharing in SingleProducerSingleConsumerQueue{T}.</summary>
+    [StructLayout(LayoutKind.Explicit, Size = Padding.CACHE_LINE_SIZE - sizeof(Int32))] // Based on common case of 64-byte cache lines
+    internal struct PaddingForInt32
+    {
+    }
+
+    /// <summary>Value type that contains single Int64 value padded on both sides.</summary>
+    [StructLayout(LayoutKind.Explicit, Size = 2 * Padding.CACHE_LINE_SIZE)]
+    internal struct PaddedInt64
+    {
+        [FieldOffset(Padding.CACHE_LINE_SIZE)]
+        internal Int64 Value;
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ProducerConsumerQueues.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ProducerConsumerQueues.cs
new file mode 100644 (file)
index 0000000..4f2fbf5
--- /dev/null
@@ -0,0 +1,558 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// ProducerConsumerQueues.cs
+//
+//
+// Specialized producer/consumer queues.
+//
+//
+// ************<IMPORTANT NOTE>*************
+//
+// There are two exact copies of this file:
+//  src\ndp\clr\src\bcl\system\threading\tasks\producerConsumerQueue.cs
+//  src\ndp\fx\src\dataflow\system\threading\tasks\dataflow\internal\producerConsumerQueue.cs
+// Keep both of them consistent by changing the other file when you change this one, also avoid:
+//  1- To reference internal types in mscorlib
+//  2- To reference any dataflow specific types
+// This should be fixed post Dev11 when this class becomes public.
+//
+// ************</IMPORTANT NOTE>*************
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections;
+#if CONCURRENT_COLLECTIONS
+using System.Collections.Concurrent;
+#else
+using System.Threading.Tasks.Dataflow.Internal.Collections;
+#endif
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.Contracts;
+using System.Runtime.InteropServices;
+
+namespace System.Threading.Tasks
+{
+    /// <summary>Represents a producer/consumer queue used internally by dataflow blocks.</summary>
+    /// <typeparam name="T">Specifies the type of data contained in the queue.</typeparam>
+    internal interface IProducerConsumerQueue<T> : IEnumerable<T>
+    {
+        /// <summary>Enqueues an item into the queue.</summary>
+        /// <param name="item">The item to enqueue.</param>
+        /// <remarks>This method is meant to be thread-safe subject to the particular nature of the implementation.</remarks>
+        void Enqueue(T item);
+
+        /// <summary>Attempts to dequeue an item from the queue.</summary>
+        /// <param name="result">The dequeued item.</param>
+        /// <returns>true if an item could be dequeued; otherwise, false.</returns>
+        /// <remarks>This method is meant to be thread-safe subject to the particular nature of the implementation.</remarks>
+        bool TryDequeue(out T result);
+
+        /// <summary>Gets whether the collection is currently empty.</summary>
+        /// <remarks>This method may or may not be thread-safe.</remarks>
+        bool IsEmpty { get; }
+
+        /// <summary>Gets the number of items in the collection.</summary>
+        /// <remarks>In many implementations, this method will not be thread-safe.</remarks>
+        int Count { get; }
+
+        /// <summary>A thread-safe way to get the number of items in the collection. May synchronize access by locking the provided synchronization object.</summary>
+        /// <param name="syncObj">The sync object used to lock</param>
+        /// <returns>The collection count</returns>
+        int GetCountSafe(object syncObj);
+    }
+
+    /// <summary>
+    /// Provides a producer/consumer queue safe to be used by any number of producers and consumers concurrently.
+    /// </summary>
+    /// <typeparam name="T">Specifies the type of data contained in the queue.</typeparam>
+    [DebuggerDisplay("Count = {Count}")]
+    internal sealed class MultiProducerMultiConsumerQueue<T> : ConcurrentQueue<T>, IProducerConsumerQueue<T>
+    {
+        /// <summary>Enqueues an item into the queue.</summary>
+        /// <param name="item">The item to enqueue.</param>
+        void IProducerConsumerQueue<T>.Enqueue(T item) { base.Enqueue(item); }
+
+        /// <summary>Attempts to dequeue an item from the queue.</summary>
+        /// <param name="result">The dequeued item.</param>
+        /// <returns>true if an item could be dequeued; otherwise, false.</returns>
+        bool IProducerConsumerQueue<T>.TryDequeue(out T result) { return base.TryDequeue(out result); }
+
+        /// <summary>Gets whether the collection is currently empty.</summary>
+        bool IProducerConsumerQueue<T>.IsEmpty { get { return base.IsEmpty; } }
+
+        /// <summary>Gets the number of items in the collection.</summary>
+        int IProducerConsumerQueue<T>.Count { get { return base.Count; } }
+
+        /// <summary>A thread-safe way to get the number of items in the collection. May synchronize access by locking the provided synchronization object.</summary>
+        /// <remarks>ConcurrentQueue.Count is thread safe, no need to acquire the lock.</remarks>
+        int IProducerConsumerQueue<T>.GetCountSafe(object syncObj) { return base.Count; }
+    }
+
+    /// <summary>
+    /// Provides a producer/consumer queue safe to be used by only one producer and one consumer concurrently.
+    /// </summary>
+    /// <typeparam name="T">Specifies the type of data contained in the queue.</typeparam>
+    [DebuggerDisplay("Count = {Count}")]
+    [DebuggerTypeProxy(typeof(SingleProducerSingleConsumerQueue<>.SingleProducerSingleConsumerQueue_DebugView))]
+    internal sealed class SingleProducerSingleConsumerQueue<T> : IProducerConsumerQueue<T>
+    {
+        // Design:
+        //
+        // SingleProducerSingleConsumerQueue (SPSCQueue) is a concurrent queue designed to be used 
+        // by one producer thread and one consumer thread. SPSCQueue does not work correctly when used by 
+        // multiple producer threads concurrently or multiple consumer threads concurrently.
+        // 
+        // SPSCQueue is based on segments that behave like circular buffers. Each circular buffer is represented 
+        // as an array with two indexes: _first and _last. _first is the index of the array slot for the consumer 
+        // to read next, and _last is the slot for the producer to write next. The circular buffer is empty when 
+        // (_first == _last), and full when ((_last+1) % _array.Length == _first).
+        //
+        // Since _first is only ever modified by the consumer thread and _last by the producer, the two indices can 
+        // be updated without interlocked operations. As long as the queue size fits inside a single circular buffer, 
+        // enqueues and dequeues simply advance the corresponding indices around the circular buffer. If an enqueue finds 
+        // that there is no room in the existing buffer, however, a new circular buffer is allocated that is twice as big 
+        // as the old buffer. From then on, the producer will insert values into the new buffer. The consumer will first 
+        // empty out the old buffer and only then follow the producer into the new (larger) buffer.
+        //
+        // As described above, the enqueue operation on the fast path only modifies the _first field of the current segment. 
+        // However, it also needs to read _last in order to verify that there is room in the current segment. Similarly, the 
+        // dequeue operation on the fast path only needs to modify _last, but also needs to read _first to verify that the 
+        // queue is non-empty. This results in true cache line sharing between the producer and the consumer.
+        //
+        // The cache line sharing issue can be mitigating by having a possibly stale copy of _first that is owned by the producer, 
+        // and a possibly stale copy of _last that is owned by the consumer. So, the consumer state is described using 
+        // (_first, _lastCopy) and the producer state using (_firstCopy, _last). The consumer state is separated from 
+        // the producer state by padding, which allows fast-path enqueues and dequeues from hitting shared cache lines. 
+        // _lastCopy is the consumer's copy of _last. Whenever the consumer can tell that there is room in the buffer 
+        // simply by observing _lastCopy, the consumer thread does not need to read _last and thus encounter a cache miss. Only 
+        // when the buffer appears to be empty will the consumer refresh _lastCopy from _last. _firstCopy is used by the producer 
+        // in the same way to avoid reading _first on the hot path.
+
+        /// <summary>The initial size to use for segments (in number of elements).</summary>
+        private const int INIT_SEGMENT_SIZE = 32; // must be a power of 2
+        /// <summary>The maximum size to use for segments (in number of elements).</summary>
+        private const int MAX_SEGMENT_SIZE = 0x1000000; // this could be made as large as Int32.MaxValue / 2
+
+        /// <summary>The head of the linked list of segments.</summary>
+        private volatile Segment _head;
+        /// <summary>The tail of the linked list of segments.</summary>
+        private volatile Segment _tail;
+
+        /// <summary>Initializes the queue.</summary>
+        internal SingleProducerSingleConsumerQueue()
+        {
+            // Validate constants in ctor rather than in an explicit cctor that would cause perf degradation
+            Debug.Assert(INIT_SEGMENT_SIZE > 0, "Initial segment size must be > 0.");
+            Debug.Assert((INIT_SEGMENT_SIZE & (INIT_SEGMENT_SIZE - 1)) == 0, "Initial segment size must be a power of 2");
+            Debug.Assert(INIT_SEGMENT_SIZE <= MAX_SEGMENT_SIZE, "Initial segment size should be <= maximum.");
+            Debug.Assert(MAX_SEGMENT_SIZE < Int32.MaxValue / 2, "Max segment size * 2 must be < Int32.MaxValue, or else overflow could occur.");
+
+            // Initialize the queue
+            _head = _tail = new Segment(INIT_SEGMENT_SIZE);
+        }
+
+        /// <summary>Enqueues an item into the queue.</summary>
+        /// <param name="item">The item to enqueue.</param>
+        public void Enqueue(T item)
+        {
+            Segment segment = _tail;
+            T[] array = segment._array;
+            int last = segment._state._last; // local copy to avoid multiple volatile reads
+
+            // Fast path: there's obviously room in the current segment
+            int tail2 = (last + 1) & (array.Length - 1);
+            if (tail2 != segment._state._firstCopy)
+            {
+                array[last] = item;
+                segment._state._last = tail2;
+            }
+            // Slow path: there may not be room in the current segment.
+            else EnqueueSlow(item, ref segment);
+        }
+
+        /// <summary>Enqueues an item into the queue.</summary>
+        /// <param name="item">The item to enqueue.</param>
+        /// <param name="segment">The segment in which to first attempt to store the item.</param>
+        private void EnqueueSlow(T item, ref Segment segment)
+        {
+            Contract.Requires(segment != null, "Expected a non-null segment.");
+
+            if (segment._state._firstCopy != segment._state._first)
+            {
+                segment._state._firstCopy = segment._state._first;
+                Enqueue(item); // will only recur once for this enqueue operation
+                return;
+            }
+
+            int newSegmentSize = _tail._array.Length << 1; // double size
+            Debug.Assert(newSegmentSize > 0, "The max size should always be small enough that we don't overflow.");
+            if (newSegmentSize > MAX_SEGMENT_SIZE) newSegmentSize = MAX_SEGMENT_SIZE;
+
+            var newSegment = new Segment(newSegmentSize);
+            newSegment._array[0] = item;
+            newSegment._state._last = 1;
+            newSegment._state._lastCopy = 1;
+
+            try { }
+            finally
+            {
+                // Finally block to protect against corruption due to a thread abort 
+                // between setting _next and setting _tail.
+                Volatile.Write(ref _tail._next, newSegment); // ensure segment not published until item is fully stored
+                _tail = newSegment;
+            }
+        }
+
+        /// <summary>Attempts to dequeue an item from the queue.</summary>
+        /// <param name="result">The dequeued item.</param>
+        /// <returns>true if an item could be dequeued; otherwise, false.</returns>
+        public bool TryDequeue(out T result)
+        {
+            Segment segment = _head;
+            T[] array = segment._array;
+            int first = segment._state._first; // local copy to avoid multiple volatile reads
+
+            // Fast path: there's obviously data available in the current segment
+            if (first != segment._state._lastCopy)
+            {
+                result = array[first];
+                array[first] = default(T); // Clear the slot to release the element
+                segment._state._first = (first + 1) & (array.Length - 1);
+                return true;
+            }
+            // Slow path: there may not be data available in the current segment
+            else return TryDequeueSlow(ref segment, ref array, out result);
+        }
+
+        /// <summary>Attempts to dequeue an item from the queue.</summary>
+        /// <param name="array">The array from which the item was dequeued.</param>
+        /// <param name="segment">The segment from which the item was dequeued.</param>
+        /// <param name="result">The dequeued item.</param>
+        /// <returns>true if an item could be dequeued; otherwise, false.</returns>
+        private bool TryDequeueSlow(ref Segment segment, ref T[] array, out T result)
+        {
+            Contract.Requires(segment != null, "Expected a non-null segment.");
+            Contract.Requires(array != null, "Expected a non-null item array.");
+
+            if (segment._state._last != segment._state._lastCopy)
+            {
+                segment._state._lastCopy = segment._state._last;
+                return TryDequeue(out result); // will only recur once for this dequeue operation
+            }
+
+            if (segment._next != null && segment._state._first == segment._state._last)
+            {
+                segment = segment._next;
+                array = segment._array;
+                _head = segment;
+            }
+
+            int first = segment._state._first; // local copy to avoid extraneous volatile reads
+
+            if (first == segment._state._last)
+            {
+                result = default(T);
+                return false;
+            }
+
+            result = array[first];
+            array[first] = default(T); // Clear the slot to release the element
+            segment._state._first = (first + 1) & (segment._array.Length - 1);
+            segment._state._lastCopy = segment._state._last; // Refresh _lastCopy to ensure that _first has not passed _lastCopy
+
+            return true;
+        }
+
+        /// <summary>Attempts to peek at an item in the queue.</summary>
+        /// <param name="result">The peeked item.</param>
+        /// <returns>true if an item could be peeked; otherwise, false.</returns>
+        public bool TryPeek(out T result)
+        {
+            Segment segment = _head;
+            T[] array = segment._array;
+            int first = segment._state._first; // local copy to avoid multiple volatile reads
+
+            // Fast path: there's obviously data available in the current segment
+            if (first != segment._state._lastCopy)
+            {
+                result = array[first];
+                return true;
+            }
+            // Slow path: there may not be data available in the current segment
+            else return TryPeekSlow(ref segment, ref array, out result);
+        }
+
+        /// <summary>Attempts to peek at an item in the queue.</summary>
+        /// <param name="array">The array from which the item is peeked.</param>
+        /// <param name="segment">The segment from which the item is peeked.</param>
+        /// <param name="result">The peeked item.</param>
+        /// <returns>true if an item could be peeked; otherwise, false.</returns>
+        private bool TryPeekSlow(ref Segment segment, ref T[] array, out T result)
+        {
+            Contract.Requires(segment != null, "Expected a non-null segment.");
+            Contract.Requires(array != null, "Expected a non-null item array.");
+
+            if (segment._state._last != segment._state._lastCopy)
+            {
+                segment._state._lastCopy = segment._state._last;
+                return TryPeek(out result); // will only recur once for this peek operation
+            }
+
+            if (segment._next != null && segment._state._first == segment._state._last)
+            {
+                segment = segment._next;
+                array = segment._array;
+                _head = segment;
+            }
+
+            int first = segment._state._first; // local copy to avoid extraneous volatile reads
+
+            if (first == segment._state._last)
+            {
+                result = default(T);
+                return false;
+            }
+
+            result = array[first];
+            return true;
+        }
+
+        /// <summary>Attempts to dequeue an item from the queue.</summary>
+        /// <param name="predicate">The predicate that must return true for the item to be dequeued.  If null, all items implicitly return true.</param>
+        /// <param name="result">The dequeued item.</param>
+        /// <returns>true if an item could be dequeued; otherwise, false.</returns>
+        public bool TryDequeueIf(Predicate<T> predicate, out T result)
+        {
+            Segment segment = _head;
+            T[] array = segment._array;
+            int first = segment._state._first; // local copy to avoid multiple volatile reads
+
+            // Fast path: there's obviously data available in the current segment
+            if (first != segment._state._lastCopy)
+            {
+                result = array[first];
+                if (predicate == null || predicate(result))
+                {
+                    array[first] = default(T); // Clear the slot to release the element
+                    segment._state._first = (first + 1) & (array.Length - 1);
+                    return true;
+                }
+                else
+                {
+                    result = default(T);
+                    return false;
+                }
+            }
+            // Slow path: there may not be data available in the current segment
+            else return TryDequeueIfSlow(predicate, ref segment, ref array, out result);
+        }
+
+        /// <summary>Attempts to dequeue an item from the queue.</summary>
+        /// <param name="predicate">The predicate that must return true for the item to be dequeued.  If null, all items implicitly return true.</param>
+        /// <param name="array">The array from which the item was dequeued.</param>
+        /// <param name="segment">The segment from which the item was dequeued.</param>
+        /// <param name="result">The dequeued item.</param>
+        /// <returns>true if an item could be dequeued; otherwise, false.</returns>
+        private bool TryDequeueIfSlow(Predicate<T> predicate, ref Segment segment, ref T[] array, out T result)
+        {
+            Contract.Requires(segment != null, "Expected a non-null segment.");
+            Contract.Requires(array != null, "Expected a non-null item array.");
+
+            if (segment._state._last != segment._state._lastCopy)
+            {
+                segment._state._lastCopy = segment._state._last;
+                return TryDequeueIf(predicate, out result); // will only recur once for this dequeue operation
+            }
+
+            if (segment._next != null && segment._state._first == segment._state._last)
+            {
+                segment = segment._next;
+                array = segment._array;
+                _head = segment;
+            }
+
+            int first = segment._state._first; // local copy to avoid extraneous volatile reads
+
+            if (first == segment._state._last)
+            {
+                result = default(T);
+                return false;
+            }
+
+            result = array[first];
+            if (predicate == null || predicate(result))
+            {
+                array[first] = default(T); // Clear the slot to release the element
+                segment._state._first = (first + 1) & (segment._array.Length - 1);
+                segment._state._lastCopy = segment._state._last; // Refresh _lastCopy to ensure that _first has not passed _lastCopy
+                return true;
+            }
+            else
+            {
+                result = default(T);
+                return false;
+            }
+        }
+
+        public void Clear()
+        {
+            T ignored;
+            while (TryDequeue(out ignored)) ;
+        }
+
+        /// <summary>Gets whether the collection is currently empty.</summary>
+        /// <remarks>WARNING: This should not be used concurrently without further vetting.</remarks>
+        public bool IsEmpty
+        {
+            // This implementation is optimized for calls from the consumer.
+            get
+            {
+                Segment head = _head;
+                if (head._state._first != head._state._lastCopy) return false; // _first is volatile, so the read of _lastCopy cannot get reordered
+                if (head._state._first != head._state._last) return false;
+                return head._next == null;
+            }
+        }
+
+        /// <summary>Gets an enumerable for the collection.</summary>
+        /// <remarks>WARNING: This should only be used for debugging purposes.  It is not safe to be used concurrently.</remarks>
+        public IEnumerator<T> GetEnumerator()
+        {
+            for (Segment segment = _head; segment != null; segment = segment._next)
+            {
+                for (int pt = segment._state._first;
+                    pt != segment._state._last;
+                    pt = (pt + 1) & (segment._array.Length - 1))
+                {
+                    yield return segment._array[pt];
+                }
+            }
+        }
+        /// <summary>Gets an enumerable for the collection.</summary>
+        /// <remarks>WARNING: This should only be used for debugging purposes.  It is not safe to be used concurrently.</remarks>
+        IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); }
+
+        /// <summary>Gets the number of items in the collection.</summary>
+        /// <remarks>WARNING: This should only be used for debugging purposes.  It is not meant to be used concurrently.</remarks>
+        public int Count
+        {
+            get
+            {
+                int count = 0;
+                for (Segment segment = _head; segment != null; segment = segment._next)
+                {
+                    int arraySize = segment._array.Length;
+                    int first, last;
+                    while (true) // Count is not meant to be used concurrently, but this helps to avoid issues if it is
+                    {
+                        first = segment._state._first;
+                        last = segment._state._last;
+                        if (first == segment._state._first) break;
+                    }
+                    count += (last - first) & (arraySize - 1);
+                }
+                return count;
+            }
+        }
+
+        /// <summary>A thread-safe way to get the number of items in the collection. May synchronize access by locking the provided synchronization object.</summary>
+        /// <remarks>The Count is not thread safe, so we need to acquire the lock.</remarks>
+        int IProducerConsumerQueue<T>.GetCountSafe(object syncObj)
+        {
+            Debug.Assert(syncObj != null, "The syncObj parameter is null.");
+            lock (syncObj)
+            {
+                return Count;
+            }
+        }
+
+        /// <summary>A segment in the queue containing one or more items.</summary>
+        [StructLayout(LayoutKind.Sequential)]
+        private sealed class Segment
+        {
+            /// <summary>The next segment in the linked list of segments.</summary>
+            internal Segment _next;
+            /// <summary>The data stored in this segment.</summary>
+            internal readonly T[] _array;
+            /// <summary>Details about the segment.</summary>
+            internal SegmentState _state; // separated out to enable StructLayout attribute to take effect
+
+            /// <summary>Initializes the segment.</summary>
+            /// <param name="size">The size to use for this segment.</param>
+            internal Segment(int size)
+            {
+                Contract.Requires((size & (size - 1)) == 0, "Size must be a power of 2");
+                _array = new T[size];
+            }
+        }
+
+        /// <summary>Stores information about a segment.</summary>
+        [StructLayout(LayoutKind.Sequential)] // enforce layout so that padding reduces false sharing
+        private struct SegmentState
+        {
+            /// <summary>Padding to reduce false sharing between the segment's array and _first.</summary>
+            internal PaddingFor32 _pad0;
+
+            /// <summary>The index of the current head in the segment.</summary>
+            internal volatile int _first;
+            /// <summary>A copy of the current tail index.</summary>
+            internal int _lastCopy; // not volatile as read and written by the producer, except for IsEmpty, and there _lastCopy is only read after reading the volatile _first
+
+            /// <summary>Padding to reduce false sharing between the first and last.</summary>
+            internal PaddingFor32 _pad1;
+
+            /// <summary>A copy of the current head index.</summary>
+            internal int _firstCopy; // not volatile as only read and written by the consumer thread
+            /// <summary>The index of the current tail in the segment.</summary>
+            internal volatile int _last;
+
+            /// <summary>Padding to reduce false sharing with the last and what's after the segment.</summary>
+            internal PaddingFor32 _pad2;
+        }
+
+        /// <summary>Debugger type proxy for a SingleProducerSingleConsumerQueue of T.</summary>
+        private sealed class SingleProducerSingleConsumerQueue_DebugView
+        {
+            /// <summary>The queue being visualized.</summary>
+            private readonly SingleProducerSingleConsumerQueue<T> _queue;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="queue">The queue being debugged.</param>
+            public SingleProducerSingleConsumerQueue_DebugView(SingleProducerSingleConsumerQueue<T> queue)
+            {
+                Contract.Requires(queue != null, "Expected a non-null queue.");
+                _queue = queue;
+            }
+
+            /// <summary>Gets the contents of the list.</summary>
+            [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+            public T[] Items
+            {
+                get
+                {
+                    List<T> list = new List<T>();
+                    foreach (T item in _queue)
+                        list.Add(item);
+                    return list.ToArray();
+                }
+            }
+        }
+    }
+
+
+    /// <summary>A placeholder class for common padding constants and eventually routines.</summary>
+    static class PaddingHelpers
+    {
+        /// <summary>A size greater than or equal to the size of the most common CPU cache lines.</summary>
+        internal const int CACHE_LINE_SIZE = 128;
+    }
+
+    /// <summary>Padding structure used to minimize false sharing in SingleProducerSingleConsumerQueue{T}.</summary>
+    [StructLayout(LayoutKind.Explicit, Size = PaddingHelpers.CACHE_LINE_SIZE - sizeof(Int32))] // Based on common case of 64-byte cache lines
+    struct PaddingFor32
+    {
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/QueuedMap.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/QueuedMap.cs
new file mode 100644 (file)
index 0000000..f70de5b
--- /dev/null
@@ -0,0 +1,230 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// QueuedMap.cs
+//
+//
+// A key-value pair queue, where pushing an existing key into the collection overwrites
+// the existing value.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.Contracts;
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    /// <summary>
+    /// Provides a data structure that supports pushing and popping key/value pairs.
+    /// Pushing a key/value pair for which the key already exists results in overwriting
+    /// the existing key entry's value.
+    /// </summary>
+    /// <typeparam name="TKey">Specifies the type of keys in the map.</typeparam>
+    /// <typeparam name="TValue">Specifies the type of values in the map.</typeparam>
+    /// <remarks>This type is not thread-safe.</remarks>
+    [DebuggerDisplay("Count = {Count}")]
+    [DebuggerTypeProxy(typeof(EnumerableDebugView<,>))]
+    internal sealed class QueuedMap<TKey, TValue>
+    {
+        /// <summary>
+        /// A queue structure that uses an array-based list to store its items
+        /// and that supports overwriting elements at specific indices.
+        /// </summary>
+        /// <typeparam name="T">The type of the items storedin the queue</typeparam>
+        /// <remarks>This type is not thread-safe.</remarks>
+        private sealed class ArrayBasedLinkedQueue<T>
+        {
+            /// <summary>Terminator index.</summary>
+            private const int TERMINATOR_INDEX = -1;
+            /// <summary>
+            /// The queue where the items will be stored.
+            /// The key of each entry is the index of the next entry in the queue.
+            /// </summary>
+            private readonly List<KeyValuePair<int, T>> _storage;
+            /// <summary>Index of the first queue item.</summary>
+            private int _headIndex = TERMINATOR_INDEX;
+            /// <summary>Index of the last queue item.</summary>
+            private int _tailIndex = TERMINATOR_INDEX;
+            /// <summary>Index of the first free slot.</summary>
+            private int _freeIndex = TERMINATOR_INDEX;
+
+            /// <summary>Initializes the Queue instance.</summary>
+            internal ArrayBasedLinkedQueue()
+            {
+                _storage = new List<KeyValuePair<int, T>>();
+            }
+
+            /// <summary>Initializes the Queue instance.</summary>
+            /// <param name="capacity">The capacity of the internal storage.</param>
+            internal ArrayBasedLinkedQueue(int capacity)
+            {
+                _storage = new List<KeyValuePair<int, T>>(capacity);
+            }
+
+            /// <summary>Enqueues an item.</summary>
+            /// <param name="item">The item to be enqueued.</param>
+            /// <returns>The index of the slot where item was stored.</returns>
+            internal int Enqueue(T item)
+            {
+                int newIndex;
+
+                // If there is a free slot, reuse it
+                if (_freeIndex != TERMINATOR_INDEX)
+                {
+                    Debug.Assert(0 <= _freeIndex && _freeIndex < _storage.Count, "Index is out of range.");
+                    newIndex = _freeIndex;
+                    _freeIndex = _storage[_freeIndex].Key;
+                    _storage[newIndex] = new KeyValuePair<int, T>(TERMINATOR_INDEX, item);
+                }
+                // If there is no free slot, add one
+                else
+                {
+                    newIndex = _storage.Count;
+                    _storage.Add(new KeyValuePair<int, T>(TERMINATOR_INDEX, item));
+                }
+
+                if (_headIndex == TERMINATOR_INDEX)
+                {
+                    // Point _headIndex to newIndex if the queue was empty
+                    Debug.Assert(_tailIndex == TERMINATOR_INDEX, "If head indicates empty, so too should tail.");
+                    _headIndex = newIndex;
+                }
+                else
+                {
+                    // Point the tail slot to newIndex if the queue was not empty
+                    Debug.Assert(_tailIndex != TERMINATOR_INDEX, "If head does not indicate empty, neither should tail.");
+                    _storage[_tailIndex] = new KeyValuePair<int, T>(newIndex, _storage[_tailIndex].Value);
+                }
+
+                // Point the tail slot newIndex
+                _tailIndex = newIndex;
+
+                return newIndex;
+            }
+
+            /// <summary>Tries to dequeue an item.</summary>
+            /// <param name="item">The item that is dequeued.</param>
+            internal bool TryDequeue(out T item)
+            {
+                // If the queue is empty, just initialize the output item and return false
+                if (_headIndex == TERMINATOR_INDEX)
+                {
+                    Debug.Assert(_tailIndex == TERMINATOR_INDEX, "If head indicates empty, so too should tail.");
+                    item = default(T);
+                    return false;
+                }
+
+                // If there are items in the queue, start with populating the output item
+                Debug.Assert(0 <= _headIndex && _headIndex < _storage.Count, "Head is out of range.");
+                item = _storage[_headIndex].Value;
+
+                // Move the popped slot to the head of the free list
+                int newHeadIndex = _storage[_headIndex].Key;
+                _storage[_headIndex] = new KeyValuePair<int, T>(_freeIndex, default(T));
+                _freeIndex = _headIndex;
+                _headIndex = newHeadIndex;
+                if (_headIndex == TERMINATOR_INDEX) _tailIndex = TERMINATOR_INDEX;
+
+                return true;
+            }
+
+            /// <summary>Replaces the item of a given slot.</summary>
+            /// <param name="index">The index of the slot where the value should be replaced.</param>
+            /// <param name="item">The item to be places.</param>
+            internal void Replace(int index, T item)
+            {
+                Debug.Assert(0 <= index && index < _storage.Count, "Index is out of range.");
+#if DEBUG
+                // Also assert that index does not belong to the list of free slots
+                for (int idx = _freeIndex; idx != TERMINATOR_INDEX; idx = _storage[idx].Key)
+                    Debug.Assert(idx != index, "Index should not belong to the list of free slots.");
+#endif
+                _storage[index] = new KeyValuePair<int, T>(_storage[index].Key, item);
+            }
+
+            internal bool IsEmpty { get { return _headIndex == TERMINATOR_INDEX; } }
+        }
+
+        /// <summary>The queue of elements.</summary>
+        private readonly ArrayBasedLinkedQueue<KeyValuePair<TKey, TValue>> _queue;
+        /// <summary>A map from key to index into the list.</summary>
+        /// <remarks>The correctness of this map relies on the list only having elements removed from its end.</remarks>
+        private readonly Dictionary<TKey, int> _mapKeyToIndex;
+
+        /// <summary>Initializes the QueuedMap.</summary>
+        internal QueuedMap()
+        {
+            _queue = new ArrayBasedLinkedQueue<KeyValuePair<TKey, TValue>>();
+            _mapKeyToIndex = new Dictionary<TKey, int>();
+        }
+
+        /// <summary>Initializes the QueuedMap.</summary>
+        /// <param name="capacity">The initial capacity of the data structure.</param>
+        internal QueuedMap(int capacity)
+        {
+            _queue = new ArrayBasedLinkedQueue<KeyValuePair<TKey, TValue>>(capacity);
+            _mapKeyToIndex = new Dictionary<TKey, int>(capacity);
+        }
+
+        /// <summary>Pushes a key/value pair into the data structure.</summary>
+        /// <param name="key">The key for the pair.</param>
+        /// <param name="value">The value for the pair.</param>
+        internal void Push(TKey key, TValue value)
+        {
+            // Try to get the index of the key in the queue. If it's there, replace the value.
+            int indexOfKeyInQueue;
+            if (!_queue.IsEmpty && _mapKeyToIndex.TryGetValue(key, out indexOfKeyInQueue))
+            {
+                _queue.Replace(indexOfKeyInQueue, new KeyValuePair<TKey, TValue>(key, value));
+            }
+            // If it's not there, add it to the queue and then add the mapping.
+            else
+            {
+                indexOfKeyInQueue = _queue.Enqueue(new KeyValuePair<TKey, TValue>(key, value));
+                _mapKeyToIndex.Add(key, indexOfKeyInQueue);
+            }
+        }
+
+        /// <summary>Try to pop the next element from the data structure.</summary>
+        /// <param name="item">The popped pair.</param>
+        /// <returns>true if an item could be popped; otherwise, false.</returns>
+        internal bool TryPop(out KeyValuePair<TKey, TValue> item)
+        {
+            bool popped = _queue.TryDequeue(out item);
+            if (popped) _mapKeyToIndex.Remove(item.Key);
+            return popped;
+        }
+
+        /// <summary>Tries to pop one or more elements from the data structure.</summary>
+        /// <param name="items">The items array into which the popped elements should be stored.</param>
+        /// <param name="arrayOffset">The offset into the array at which to start storing popped items.</param>
+        /// <param name="count">The number of items to be popped.</param>
+        /// <returns>The number of items popped, which may be less than the requested number if fewer existed in the data structure.</returns>
+        internal int PopRange(KeyValuePair<TKey, TValue>[] items, int arrayOffset, int count)
+        {
+            // As this data structure is internal, only assert incorrect usage.
+            // If this were to ever be made public, these would need to be real argument checks.
+            Contract.Requires(items != null, "Requires non-null array to store into.");
+            Contract.Requires(count >= 0 && arrayOffset >= 0, "Count and offset must be non-negative");
+            Contract.Requires(arrayOffset + count >= 0, "Offset plus count overflowed");
+            Contract.Requires(arrayOffset + count <= items.Length, "Range must be within array size");
+
+            int actualCount = 0;
+            for (int i = arrayOffset; actualCount < count; i++, actualCount++)
+            {
+                KeyValuePair<TKey, TValue> item;
+                if (TryPop(out item)) items[i] = item;
+                else break;
+            }
+
+            return actualCount;
+        }
+
+        /// <summary>Gets the number of items in the data structure.</summary>
+        internal int Count { get { return _mapKeyToIndex.Count; } }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ReorderingBuffer.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/ReorderingBuffer.cs
new file mode 100644 (file)
index 0000000..472f691
--- /dev/null
@@ -0,0 +1,184 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// ReorderingBuffer.cs
+//
+//
+// An intermediate buffer that ensures messages are output in the right order.
+// Used by blocks (e.g. TransformBlock, TransformManyBlock) when operating in 
+// parallel modes that could result in messages being processed out of order.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.Contracts;
+using System.Linq;
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    /// <summary>Base interface for reordering buffers.</summary>
+    internal interface IReorderingBuffer
+    {
+        /// <summary>Informs the reordering buffer not to expect the message with the specified id.</summary>
+        /// <param name="id">The id of the message to be ignored.</param>
+        void IgnoreItem(long id);
+    }
+
+    /// <summary>Provides a buffer that reorders items according to their incoming IDs.</summary>
+    /// <typeparam name="TOutput">Specifies the type of data stored in the items being reordered.</typeparam>
+    /// <remarks>
+    /// This type expects the first item to be ID==0 and for all subsequent items
+    /// to increase IDs sequentially.
+    /// </remarks>
+    [DebuggerDisplay("Count={CountForDebugging}")]
+    [DebuggerTypeProxy(typeof(ReorderingBuffer<>.DebugView))]
+    internal sealed class ReorderingBuffer<TOutput> : IReorderingBuffer
+    {
+        /// <summary>The source that owns this reordering buffer.</summary>
+        private readonly object _owningSource;
+        /// <summary>A reordering buffer used when parallelism is employed and items may be completed out-of-order.</summary>
+        /// <remarks>Also serves as the sync object to protect the contents of this class.</remarks>
+        private readonly Dictionary<long, KeyValuePair<bool, TOutput>> _reorderingBuffer = new Dictionary<long, KeyValuePair<bool, TOutput>>();
+        /// <summary>Action used to output items in order.</summary>
+        private readonly Action<object, TOutput> _outputAction;
+        /// <summary>The ID of the next item that should be released from the reordering buffer.</summary>
+        private long _nextReorderedIdToOutput = 0;
+
+        /// <summary>Gets the object used to synchronize all access to the reordering buffer's internals.</summary>
+        private object ValueLock { get { return _reorderingBuffer; } }
+
+        /// <summary>Initializes the reordering buffer.</summary>
+        /// <param name="owningSource">The source that owns this reordering buffer.</param>
+        /// <param name="outputAction">The action to invoke when the next in-order item is available to be output.</param>
+        internal ReorderingBuffer(object owningSource, Action<object, TOutput> outputAction)
+        {
+            // Validate and store internal arguments
+            Contract.Requires(owningSource != null, "Buffer must be associated with a source.");
+            Contract.Requires(outputAction != null, "Action required for when items are to be released.");
+            _owningSource = owningSource;
+            _outputAction = outputAction;
+        }
+
+        /// <summary>Stores the next item as it completes processing.</summary>
+        /// <param name="id">The ID of the item.</param>
+        /// <param name="item">The completed item.</param>
+        /// <param name="itemIsValid">Specifies whether the item is valid (true) or just a placeholder (false).</param>
+        internal void AddItem(long id, TOutput item, bool itemIsValid)
+        {
+            Contract.Requires(id != Common.INVALID_REORDERING_ID, "This ID should never have been handed out.");
+            Common.ContractAssertMonitorStatus(ValueLock, held: false);
+
+            // This may be called concurrently, so protect the buffer...
+            lock (ValueLock)
+            {
+                // If this is the next item we need in our ordering, output it.
+                if (_nextReorderedIdToOutput == id)
+                {
+                    OutputNextItem(item, itemIsValid);
+                }
+                // Otherwise, we're using reordering and we're not ready for this item yet, so store
+                // it until we can use it.
+                else
+                {
+                    Debug.Assert((ulong)id > (ulong)_nextReorderedIdToOutput, "Duplicate id.");
+                    _reorderingBuffer.Add(id, new KeyValuePair<bool, TOutput>(itemIsValid, item));
+                }
+            }
+        }
+
+        /// <summary>
+        /// Determines whether the specified id is next to be output, and if it is
+        /// and if the item is "trusted" (meaning it may be output into the output
+        /// action as-is), adds it.
+        /// </summary>
+        /// <param name="id">The id of the item.</param>
+        /// <param name="item">The item.</param>
+        /// <param name="isTrusted">
+        /// Whether to allow the item to be output directly if it is the next item.
+        /// </param>
+        /// <returns>
+        /// null if the item was added.
+        /// true if the item was not added but is next in line.
+        /// false if the item was not added and is not next in line.
+        /// </returns>
+        internal bool? AddItemIfNextAndTrusted(long id, TOutput item, bool isTrusted)
+        {
+            Contract.Requires(id != Common.INVALID_REORDERING_ID, "This ID should never have been handed out.");
+            Common.ContractAssertMonitorStatus(ValueLock, held: false);
+
+            lock (ValueLock)
+            {
+                // If this is in the next item, try to take the fast path.
+                if (_nextReorderedIdToOutput == id)
+                {
+                    // If we trust this data structure to be stored as-is,
+                    // output it immediately.  Otherwise, return that it is
+                    // next to be output.
+                    if (isTrusted)
+                    {
+                        OutputNextItem(item, itemIsValid: true);
+                        return null;
+                    }
+                    else return true;
+                }
+                else return false;
+            }
+        }
+
+        /// <summary>Informs the reordering buffer not to expect the message with the specified id.</summary>
+        /// <param name="id">The id of the message to be ignored.</param>
+        public void IgnoreItem(long id)
+        {
+            AddItem(id, default(TOutput), itemIsValid: false);
+        }
+
+        /// <summary>Outputs the item.  The item must have already been confirmed to have the next ID.</summary>
+        /// <param name="theNextItem">The item to output.</param>
+        /// <param name="itemIsValid">Whether the item is valid.</param>
+        private void OutputNextItem(TOutput theNextItem, bool itemIsValid)
+        {
+            Common.ContractAssertMonitorStatus(ValueLock, held: true);
+
+            // Note that we're now looking for a different item, and pass this one through.
+            // Then release any items which may be pending.
+            _nextReorderedIdToOutput++;
+            if (itemIsValid) _outputAction(_owningSource, theNextItem);
+
+            // Try to get the next available item from the buffer and output it.  Continue to do so
+            // until we run out of items in the reordering buffer or don't yet have the next ID buffered.
+            KeyValuePair<bool, TOutput> nextOutputItemWithValidity;
+            while (_reorderingBuffer.TryGetValue(_nextReorderedIdToOutput, out nextOutputItemWithValidity))
+            {
+                _reorderingBuffer.Remove(_nextReorderedIdToOutput);
+                _nextReorderedIdToOutput++;
+                if (nextOutputItemWithValidity.Key) _outputAction(_owningSource, nextOutputItemWithValidity.Value);
+            }
+        }
+
+        /// <summary>Gets a item count for debugging purposes.</summary>
+        private int CountForDebugging { get { return _reorderingBuffer.Count; } }
+
+        /// <summary>Provides a debugger type proxy for the buffer.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The buffer being debugged.</summary>
+            private readonly ReorderingBuffer<TOutput> _buffer;
+
+            /// <summary>Initializes the debug view.</summary>
+            /// <param name="buffer">The buffer being debugged.</param>
+            public DebugView(ReorderingBuffer<TOutput> buffer)
+            {
+                Contract.Requires(buffer != null, "Need a buffer with which to construct the debug view.");
+                _buffer = buffer;
+            }
+
+            /// <summary>Gets a dictionary of buffered items and their reordering IDs.</summary>
+            public Dictionary<long, KeyValuePair<Boolean, TOutput>> ItemsBuffered { get { return _buffer._reorderingBuffer; } }
+            /// <summary>Gets the next ID required for outputting.</summary>
+            public long NextIdRequired { get { return _buffer._nextReorderedIdToOutput; } }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/SourceCore.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/SourceCore.cs
new file mode 100644 (file)
index 0000000..8aa140d
--- /dev/null
@@ -0,0 +1,1035 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// SourceCore.cs
+//
+//
+// The core implementation of a standard ISourceBlock<TOutput>.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Linq;
+using System.Security;
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    // LOCK-LEVELING SCHEME
+    // --------------------
+    // SourceCore employs two locks: OutgoingLock and ValueLock.  Additionally, targets we call out to
+    // likely utilize their own IncomingLock.  We can hold OutgoingLock while acquiring ValueLock or IncomingLock.
+    // However, we cannot hold ValueLock while calling out to external code or while acquiring OutgoingLock, and 
+    // we cannot hold IncomingLock when acquiring OutgoingLock. Additionally, the locks employed must be reentrant.
+
+    /// <summary>Provides a core implementation for blocks that implement <see cref="ISourceBlock{TOutput}"/>.</summary>
+    /// <typeparam name="TOutput">Specifies the type of data supplied by the <see cref="SourceCore{TOutput}"/>.</typeparam>
+    [SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    internal sealed class SourceCore<TOutput>
+    {
+        // *** These fields are readonly and are initialized to new instances at construction.
+
+        /// <summary>A TaskCompletionSource that represents the completion of this block.</summary>
+        private readonly TaskCompletionSource<VoidResult> _completionTask = new TaskCompletionSource<VoidResult>();
+        /// <summary>A registry used to store all linked targets and information about them.</summary>
+        private readonly TargetRegistry<TOutput> _targetRegistry;
+        /// <summary>The output messages queued up to be received by consumers/targets.</summary>
+        /// <remarks>
+        /// The queue is only ever accessed by a single producer and single consumer at a time.  On the producer side,
+        /// we require that AddMessage/AddMessages are the only places the queue is added to, and we require that those
+        /// methods not be used concurrently with anything else.  All of our target halves today follow that restriction;
+        /// for example, TransformBlock with DOP==1 will have at most a single task processing the user provided delegate,
+        /// and thus at most one task calling AddMessage.  If it has a DOP > 1, it'll go through the ReorderingBuffer,
+        /// which will use a lock to synchronize the output of all of the processing tasks such that only one is using
+        /// AddMessage at a time.  On the consumer side of SourceCore, all consumption is protected by ValueLock, and thus
+        /// all consumption is serialized.
+        /// </remarks>
+        private readonly SingleProducerSingleConsumerQueue<TOutput> _messages = new SingleProducerSingleConsumerQueue<TOutput>(); // protected by AddMessage/ValueLock
+
+        /// <summary>Gets the object to use as the outgoing lock.</summary>
+        private object OutgoingLock { get { return _completionTask; } }
+        /// <summary>Gets the object to use as the value lock.</summary>
+        private object ValueLock { get { return _targetRegistry; } }
+
+        // *** These fields are readonly and are initialized by arguments to the constructor.
+
+        /// <summary>The source utilizing this helper.</summary>
+        private readonly ISourceBlock<TOutput> _owningSource;
+        /// <summary>The options used to configure this block's execution.</summary>
+        private readonly DataflowBlockOptions _dataflowBlockOptions;
+        /// <summary>
+        /// An action to be invoked on the owner block to stop accepting messages.
+        /// This action is invoked when SourceCore encounters an exception.
+        /// </summary>
+        private readonly Action<ISourceBlock<TOutput>> _completeAction;
+        /// <summary>
+        /// An action to be invoked on the owner block when an item is removed.
+        /// This may be null if the owner block doesn't need to be notified.
+        /// </summary>
+        private readonly Action<ISourceBlock<TOutput>, int> _itemsRemovedAction;
+        /// <summary>Item counting function</summary>
+        private readonly Func<ISourceBlock<TOutput>, TOutput, IList<TOutput>, int> _itemCountingFunc;
+
+        // *** These fields are mutated during execution.
+
+        /// <summary>The task used to process the output and offer it to targets.</summary>
+        private Task _taskForOutputProcessing; // protected by ValueLock
+        /// <summary>Counter for message IDs unique within this source block.</summary>
+        private PaddedInt64 _nextMessageId = new PaddedInt64 { Value = 1 }; // We are going to use this value before incrementing.  Protected by ValueLock.
+        /// <summary>The target that the next message is reserved for, or null if nothing is reserved.</summary>
+        private ITargetBlock<TOutput> _nextMessageReservedFor; // protected by OutgoingLock
+        /// <summary>Whether all future messages should be declined.</summary>
+        private bool _decliningPermanently; // Protected by ValueLock
+        /// <summary>Whether this block should again attempt to offer messages to targets.</summary>
+        private bool _enableOffering = true; // Protected by ValueLock, sometimes read with volatile reads
+        /// <summary>Whether someone has reserved the right to call CompleteBlockOncePossible.</summary>
+        private bool _completionReserved; // Protected by OutgoingLock
+        /// <summary>Exceptions that may have occurred and gone unhandled during processing.</summary>
+        private List<Exception> _exceptions; // Protected by ValueLock, sometimes read with volatile reads
+
+        /// <summary>Initializes the source core.</summary>
+        /// <param name="owningSource">The source utilizing this core.</param>
+        /// <param name="dataflowBlockOptions">The options to use to configure the block.</param>
+        /// <param name="completeAction">Action to invoke in order to decline the associated target half, which will in turn decline this source core.</param>
+        /// <param name="itemsRemovedAction">Action to invoke when one or more items is removed.  This may be null.</param>
+        /// <param name="itemCountingFunc">
+        /// Action to invoke when the owner needs to be able to count the number of individual
+        /// items in an output or set of outputs.
+        /// </param>
+        internal SourceCore(
+            ISourceBlock<TOutput> owningSource, DataflowBlockOptions dataflowBlockOptions,
+            Action<ISourceBlock<TOutput>> completeAction,
+            Action<ISourceBlock<TOutput>, int> itemsRemovedAction = null,
+            Func<ISourceBlock<TOutput>, TOutput, IList<TOutput>, int> itemCountingFunc = null)
+        {
+            Contract.Requires(owningSource != null, "Core must be associated with a source.");
+            Contract.Requires(dataflowBlockOptions != null, "Options must be provided to configure the core.");
+            Contract.Requires(completeAction != null, "Action to invoke on completion is required.");
+
+            // Store the args
+            _owningSource = owningSource;
+            _dataflowBlockOptions = dataflowBlockOptions;
+            _itemsRemovedAction = itemsRemovedAction;
+            _itemCountingFunc = itemCountingFunc;
+            _completeAction = completeAction;
+
+            // Construct members that depend on the args
+            _targetRegistry = new TargetRegistry<TOutput>(_owningSource);
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+        [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
+        internal IDisposable LinkTo(ITargetBlock<TOutput> target, DataflowLinkOptions linkOptions)
+        {
+            // Validate arguments
+            if (target == null) throw new ArgumentNullException("target");
+            if (linkOptions == null) throw new ArgumentNullException("linkOptions");
+            Contract.EndContractBlock();
+
+            // If the block is already completed, there is not much to do -
+            // we have to propagate completion if that was requested, and
+            // then bail without taking the lock.
+            if (_completionTask.Task.IsCompleted)
+            {
+                if (linkOptions.PropagateCompletion) Common.PropagateCompletion(_completionTask.Task, target, exceptionHandler: null);
+                return Disposables.Nop;
+            }
+
+            lock (OutgoingLock)
+            {
+                // If completion has been reserved, the target registry has either been cleared already
+                // or is about to be cleared. So we can link and offer only if completion is not reserved. 
+                if (!_completionReserved)
+                {
+                    _targetRegistry.Add(ref target, linkOptions);
+                    OfferToTargets(linkToTarget: target);
+                    return Common.CreateUnlinker(OutgoingLock, _targetRegistry, target);
+                }
+            }
+
+            // The block should not offer any messages when it is in this state, but
+            // it should still propagate completion if that has been requested.
+            if (linkOptions.PropagateCompletion) Common.PropagateCompletionOnceCompleted(_completionTask.Task, target);
+            return Disposables.Nop;
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+        internal TOutput ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target, out Boolean messageConsumed)
+        {
+            // Validate arguments
+            if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            if (target == null) throw new ArgumentNullException("target");
+            Contract.EndContractBlock();
+
+            TOutput consumedMessageValue = default(TOutput);
+
+            lock (OutgoingLock)
+            {
+                // If this target doesn't hold the reservation, then for this ConsumeMessage
+                // to be valid, there must not be any reservation (since otherwise we can't 
+                // consume a message destined for someone else).
+                if (_nextMessageReservedFor != target &&
+                    _nextMessageReservedFor != null)
+                {
+                    messageConsumed = false;
+                    return default(TOutput);
+                }
+
+                lock (ValueLock)
+                {
+                    // If the requested message isn't the next message to be served up, bail.
+                    // Otherwise, we're good to go: dequeue the message as it will now be owned by the target,
+                    // signal that we can resume enabling offering as there's potentially a new "next message",
+                    // complete if necessary, and offer asynchronously all messages as is appropriate.
+
+                    if (messageHeader.Id != _nextMessageId.Value ||
+                        !_messages.TryDequeue(out consumedMessageValue))
+                    {
+                        messageConsumed = false;
+                        return default(TOutput);
+                    }
+
+                    _nextMessageReservedFor = null;
+                    _targetRegistry.Remove(target, onlyIfReachedMaxMessages: true);
+                    _enableOffering = true; // reenable offering if it was disabled
+                    _nextMessageId.Value++;
+                    CompleteBlockIfPossible();
+                    OfferAsyncIfNecessary(isReplacementReplica: false, outgoingLockKnownAcquired: true);
+                }
+            }
+
+            // Notify the owner block that our count has decreased
+            if (_itemsRemovedAction != null)
+            {
+                int count = _itemCountingFunc != null ? _itemCountingFunc(_owningSource, consumedMessageValue, null) : 1;
+                _itemsRemovedAction(_owningSource, count);
+            }
+
+            // Return the consumed message value
+            messageConsumed = true;
+            return consumedMessageValue;
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+        internal Boolean ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
+        {
+            // Validate arguments
+            if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            if (target == null) throw new ArgumentNullException("target");
+            Contract.EndContractBlock();
+
+            lock (OutgoingLock)
+            {
+                // If no one currently holds a reservation...
+                if (_nextMessageReservedFor == null)
+                {
+                    lock (ValueLock)
+                    {
+                        // ...and if the requested message is next in the queue, allow it
+                        if (messageHeader.Id == _nextMessageId.Value && !_messages.IsEmpty)
+                        {
+                            _nextMessageReservedFor = target;
+                            _enableOffering = false;
+                            return true;
+                        }
+                    }
+                }
+            }
+            return false;
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+        internal void ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
+        {
+            // Validate arguments
+            if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            if (target == null) throw new ArgumentNullException("target");
+            Contract.EndContractBlock();
+
+            lock (OutgoingLock)
+            {
+                // If someone else holds the reservation, bail.
+                if (_nextMessageReservedFor != target) throw new InvalidOperationException(SR.InvalidOperation_MessageNotReservedByTarget);
+
+                lock (ValueLock)
+                {
+                    // If this is not the message at the head of the queue, bail
+                    if (messageHeader.Id != _nextMessageId.Value || _messages.IsEmpty) throw new InvalidOperationException(SR.InvalidOperation_MessageNotReservedByTarget);
+
+                    // Otherwise, release the reservation
+                    _nextMessageReservedFor = null;
+                    Debug.Assert(!_enableOffering, "Offering should have been disabled if there was a valid reservation");
+                    _enableOffering = true;
+
+                    // Now there is at least one message ready for offering. So offer it.
+                    // If a cancellation is pending, this method will bail out.
+                    OfferAsyncIfNecessary(isReplacementReplica: false, outgoingLockKnownAcquired: true);
+
+                    // This reservation may be holding the block's completion. So try to complete.
+                    CompleteBlockIfPossible();
+                }
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        internal Task Completion { get { return _completionTask.Task; } }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceive"]/*' />
+        internal Boolean TryReceive(Predicate<TOutput> filter, out TOutput item)
+        {
+            item = default(TOutput);
+            bool itemReceived = false;
+
+            lock (OutgoingLock)
+            {
+                // If the next message is reserved for someone, we can't receive right now.  Otherwise...
+                if (_nextMessageReservedFor == null)
+                {
+                    lock (ValueLock)
+                    {
+                        // If there's at least one message, and there's no filter or the next item
+                        // passes the filter, dequeue it to be returned.
+                        if (_messages.TryDequeueIf(filter, out item))
+                        {
+                            _nextMessageId.Value++;
+
+                            // Now that the next message has changed, reenable offering if it was disabled
+                            _enableOffering = true;
+
+                            // If removing this item was the last thing this block will ever do, complete it,
+                            CompleteBlockIfPossible();
+
+                            // Now, try to offer up messages asynchronously, since we've
+                            // changed what's at the head of the queue
+                            OfferAsyncIfNecessary(isReplacementReplica: false, outgoingLockKnownAcquired: true);
+
+                            itemReceived = true;
+                        }
+                    }
+                }
+            }
+
+            if (itemReceived)
+            {
+                // Notify the owner block that our count has decreased
+                if (_itemsRemovedAction != null)
+                {
+                    int count = _itemCountingFunc != null ? _itemCountingFunc(_owningSource, item, null) : 1;
+                    _itemsRemovedAction(_owningSource, count);
+                }
+            }
+            return itemReceived;
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="TryReceiveAll"]/*' />
+        internal bool TryReceiveAll(out IList<TOutput> items)
+        {
+            items = null;
+            int countReceived = 0;
+
+            lock (OutgoingLock)
+            {
+                // If the next message is reserved for someone, we can't receive right now.  Otherwise...
+                if (_nextMessageReservedFor == null)
+                {
+                    lock (ValueLock)
+                    {
+                        if (!_messages.IsEmpty)
+                        {
+                            // Receive all of the data, clearing it out in the process.
+                            var tmpList = new List<TOutput>();
+                            TOutput item;
+                            while (_messages.TryDequeue(out item)) tmpList.Add(item);
+                            countReceived = tmpList.Count;
+                            items = tmpList;
+
+                            // Increment the next ID. Any new value is good.
+                            _nextMessageId.Value++;
+
+                            // Now that the next message has changed, reenable offering if it was disabled
+                            _enableOffering = true;
+
+                            // Now that the block is empty, check to see whether we should complete.
+                            CompleteBlockIfPossible();
+                        }
+                    }
+                }
+            }
+
+            if (countReceived > 0)
+            {
+                // Notify the owner block that our count has decreased
+                if (_itemsRemovedAction != null)
+                {
+                    int count = _itemCountingFunc != null ? _itemCountingFunc(_owningSource, default(TOutput), items) : countReceived;
+                    _itemsRemovedAction(_owningSource, count);
+                }
+                return true;
+            }
+            else return false;
+        }
+
+        /// <summary>Gets the number of items available to be received from this block.</summary>
+        internal int OutputCount { get { lock (OutgoingLock) lock (ValueLock) return _messages.Count; } }
+
+        /// <summary>
+        /// Adds a message to the source block for propagation. 
+        /// This method must only be used by one thread at a time, and must not be used concurrently
+        /// with any other producer side methods, e.g. AddMessages, Complete.
+        /// </summary>
+        /// <param name="item">The item to be wrapped in a message to be added.</param>
+        internal void AddMessage(TOutput item)
+        {
+            // This method must not take the OutgoingLock, as it will likely be called in situations
+            // where an IncomingLock is held.
+
+            if (_decliningPermanently) return;
+            _messages.Enqueue(item);
+
+            Interlocked.MemoryBarrier(); // ensure the read of _taskForOutputProcessing doesn't move up before the writes in Enqueue
+
+            if (_taskForOutputProcessing == null)
+            {
+                // Separated out to enable inlining of AddMessage
+                OfferAsyncIfNecessaryWithValueLock();
+            }
+        }
+
+        /// <summary>
+        /// Adds messages to the source block for propagation. 
+        /// This method must only be used by one thread at a time, and must not be used concurrently
+        /// with any other producer side methods, e.g. AddMessage, Complete.
+        /// </summary>
+        /// <param name="items">The list of items to be wrapped in messages to be added.</param>
+        internal void AddMessages(IEnumerable<TOutput> items)
+        {
+            Contract.Requires(items != null, "Items list must be valid.");
+
+            // This method must not take the OutgoingLock, as it will likely be called in situations
+            // where an IncomingLock is held.
+
+            if (_decliningPermanently) return;
+
+            // Special case arrays and lists, for which we can avoid the 
+            // enumerator allocation that'll result from using a foreach.
+            // This also avoids virtual method calls that we'd get if we
+            // didn't special case.
+            var itemsAsList = items as List<TOutput>;
+            if (itemsAsList != null)
+            {
+                for (int i = 0; i < itemsAsList.Count; i++)
+                {
+                    _messages.Enqueue(itemsAsList[i]);
+                }
+            }
+            else
+            {
+                TOutput[] itemsAsArray = items as TOutput[];
+                if (itemsAsArray != null)
+                {
+                    for (int i = 0; i < itemsAsArray.Length; i++)
+                    {
+                        _messages.Enqueue(itemsAsArray[i]);
+                    }
+                }
+                else
+                {
+                    foreach (TOutput item in items)
+                    {
+                        _messages.Enqueue(item);
+                    }
+                }
+            }
+
+            Interlocked.MemoryBarrier(); // ensure the read of _taskForOutputProcessing doesn't move up before the writes in Enqueue
+
+            if (_taskForOutputProcessing == null)
+            {
+                OfferAsyncIfNecessaryWithValueLock();
+            }
+        }
+
+        /// <summary>Adds an individual exceptionto this source.</summary>
+        /// <param name="exception">The exception to add</param>
+        internal void AddException(Exception exception)
+        {
+            Contract.Requires(exception != null, "Valid exception must be provided to be added.");
+            Contract.Requires(!Completion.IsCompleted || Completion.IsFaulted, "The block must either not be completed or be faulted if we're still storing exceptions.");
+            lock (ValueLock)
+            {
+                Common.AddException(ref _exceptions, exception);
+            }
+        }
+
+        /// <summary>Adds exceptions to this source.</summary>
+        /// <param name="exceptions">The exceptions to add</param>
+        internal void AddExceptions(List<Exception> exceptions)
+        {
+            Contract.Requires(exceptions != null, "Valid exceptions must be provided to be added.");
+            Contract.Requires(!Completion.IsCompleted || Completion.IsFaulted, "The block must either not be completed or be faulted if we're still storing exceptions.");
+            lock (ValueLock)
+            {
+                foreach (Exception exception in exceptions)
+                {
+                    Common.AddException(ref _exceptions, exception);
+                }
+            }
+        }
+
+        /// <summary>Adds the exceptions contained in an AggregateException to this source.</summary>
+        /// <param name="aggregateException">The exception to add</param>
+        internal void AddAndUnwrapAggregateException(AggregateException aggregateException)
+        {
+            Contract.Requires(aggregateException != null && aggregateException.InnerExceptions.Count > 0, "Aggregate must be valid and contain inner exceptions to unwrap.");
+            Contract.Requires(!Completion.IsCompleted || Completion.IsFaulted, "The block must either not be completed or be faulted if we're still storing exceptions.");
+            lock (ValueLock)
+            {
+                Common.AddException(ref _exceptions, aggregateException, unwrapInnerExceptions: true);
+            }
+        }
+
+        /// <summary>Gets whether the _exceptions list is non-null.</summary>
+        internal bool HasExceptions
+        {
+            get
+            {
+                // We may check whether _exceptions is null without taking a lock because it is volatile
+                return Volatile.Read(ref _exceptions) != null;
+            }
+        }
+
+        /// <summary>Informs the block that it will not be receiving additional messages.</summary>
+        internal void Complete()
+        {
+            lock (ValueLock)
+            {
+                _decliningPermanently = true;
+
+                // CompleteAdding may be called in a context where an incoming lock is held.  We need to 
+                // call CompleteBlockIfPossible, but we can't do so if the incoming lock is held.
+                // However, we know that _decliningPermanently has been set, and thus the timing of
+                // CompleteBlockIfPossible doesn't matter, so we schedule it to run asynchronously
+                // and take the necessary locks in a situation where we're sure it won't cause a problem.
+                Task.Factory.StartNew(state =>
+                {
+                    var thisSourceCore = (SourceCore<TOutput>)state;
+                    lock (thisSourceCore.OutgoingLock)
+                    {
+                        lock (thisSourceCore.ValueLock)
+                        {
+                            thisSourceCore.CompleteBlockIfPossible();
+                        }
+                    }
+                }, this, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+            }
+        }
+
+        /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+        internal DataflowBlockOptions DataflowBlockOptions { get { return _dataflowBlockOptions; } }
+
+        /// <summary>Offers messages to all targets.</summary>
+        /// <param name="linkToTarget">
+        /// The newly linked target, if OfferToTargets is being called to synchronously
+        /// propagate to a target during a LinkTo operation.
+        /// </param>
+        private bool OfferToTargets(ITargetBlock<TOutput> linkToTarget = null)
+        {
+            Common.ContractAssertMonitorStatus(OutgoingLock, held: true);
+            Common.ContractAssertMonitorStatus(ValueLock, held: false);
+
+            // If the next message is reserved, we can't offer anything
+            if (_nextMessageReservedFor != null)
+                return false;
+
+            // Peek at the next message if there is one, so we can offer it.
+            DataflowMessageHeader header = default(DataflowMessageHeader);
+            TOutput message = default(TOutput);
+            bool offerJustToLinkToTarget = false;
+
+            // If offering isn't enabled and if we're not doing this as 
+            // a result of LinkTo, bail. Otherwise, with offering disabled, we must have 
+            // already offered this message to all existing targets, so we can just offer 
+            // it to the newly linked target.
+            if (!Volatile.Read(ref _enableOffering))
+            {
+                if (linkToTarget == null) return false;
+                else offerJustToLinkToTarget = true;
+            }
+
+            // Otherwise, peek at message to offer
+            if (_messages.TryPeek(out message))
+            {
+                header = new DataflowMessageHeader(_nextMessageId.Value);
+            }
+
+            // If there is a message, offer it.
+            bool messageWasAccepted = false;
+            if (header.IsValid)
+            {
+                if (offerJustToLinkToTarget)
+                {
+                    // If we've already offered the message to everyone else,
+                    // we can just offer it to the newly linked target
+                    Debug.Assert(linkToTarget != null, "Must have a valid target to offer to.");
+                    OfferMessageToTarget(header, message, linkToTarget, out messageWasAccepted);
+                }
+                else
+                {
+                    // Otherwise, we've not yet offered this message to anyone, so even 
+                    // if linkToTarget is non-null, we need to propagate the message in order
+                    // through all of the registered targets, the last of which will be the linkToTarget
+                    // if it's non-null (no need to special-case it, though).
+
+                    // Note that during OfferMessageToTarget, a target may call ConsumeMessage (taking advantage of the
+                    // reentrancy of OutgoingLock), which may unlink the target if the target is registered as "unlinkAfterOne".  
+                    // Doing so will remove the target from the targets list. As such, we maintain the next node
+                    // separately from cur.Next, in case cur.Next changes by cur being removed from the list.
+                    // No other node in the list should change, as we're protected by OutgoingLock.
+
+                    TargetRegistry<TOutput>.LinkedTargetInfo cur = _targetRegistry.FirstTargetNode;
+                    while (cur != null)
+                    {
+                        TargetRegistry<TOutput>.LinkedTargetInfo next = cur.Next;
+                        if (OfferMessageToTarget(header, message, cur.Target, out messageWasAccepted)) break;
+                        cur = next;
+                    }
+
+                    // If none of the targets accepted the message, disable offering.
+                    if (!messageWasAccepted)
+                    {
+                        lock (ValueLock)
+                        {
+                            _enableOffering = false;
+                        }
+                    }
+                }
+            }
+
+            // If a message got accepted, consume it and reenable offering.
+            if (messageWasAccepted)
+            {
+                lock (ValueLock)
+                {
+                    // SourceCore set consumeToAccept to false.  However, it's possible
+                    // that an incorrectly written target may ignore that parameter and synchronously consume
+                    // even though they weren't supposed to.  To recover from that, 
+                    // we'll only dequeue if the correct message is still at the head of the queue.
+                    // However, we'll assert so that we can at least catch this in our own debug builds.
+                    TOutput dropped;
+                    if (_nextMessageId.Value != header.Id ||
+                        !_messages.TryDequeue(out dropped)) // remove the next message
+                    {
+                        Debug.Assert(false, "The target did not follow the protocol.");
+                    }
+                    _nextMessageId.Value++;
+
+                    // The message was accepted, so there's now going to be a new next message.
+                    // If offering had been disabled, reenable it.
+                    _enableOffering = true;
+
+                    // Now that a message has been removed, we need to complete if possible or
+                    // or asynchronously offer if necessary.  However, if we're calling this as part of our
+                    // offering loop, we won't be able to do either, since by definition there's already
+                    // a processing task spun up (us) that would prevent these things.  So we only
+                    // do the checks if we're being called to link a new target rather than as part
+                    // of normal processing.
+                    if (linkToTarget != null)
+                    {
+                        CompleteBlockIfPossible();
+                        OfferAsyncIfNecessary(isReplacementReplica: false, outgoingLockKnownAcquired: true);
+                    }
+                }
+
+                // Notify the owner block that our count has decreased
+                if (_itemsRemovedAction != null)
+                {
+                    int count = _itemCountingFunc != null ? _itemCountingFunc(_owningSource, message, null) : 1;
+                    _itemsRemovedAction(_owningSource, count);
+                }
+            }
+
+            return messageWasAccepted;
+        }
+
+        /// <summary>Offers the message to the target.</summary>
+        /// <param name="header">The header of the message to offer.</param>
+        /// <param name="message">The message being offered.</param>
+        /// <param name="target">The single target to which the message should be offered.</param>
+        /// <param name="messageWasAccepted">true if the message was accepted by the target; otherwise, false.</param>
+        /// <returns>
+        /// true if the message should not be offered to additional targets; 
+        /// false if propagation should be allowed to continue.
+        /// </returns>
+        private bool OfferMessageToTarget(
+            DataflowMessageHeader header, TOutput message, ITargetBlock<TOutput> target,
+            out bool messageWasAccepted)
+        {
+            Contract.Requires(target != null, "Valid target to offer to is required.");
+            Common.ContractAssertMonitorStatus(OutgoingLock, held: true);
+            Common.ContractAssertMonitorStatus(ValueLock, held: false);
+
+            DataflowMessageStatus result = target.OfferMessage(header, message, _owningSource, consumeToAccept: false);
+            Debug.Assert(result != DataflowMessageStatus.NotAvailable, "Messages are not being offered concurrently, so nothing should be missed.");
+            messageWasAccepted = false;
+
+            // If accepted, note it, and if the target was linked as "once", remove it
+            if (result == DataflowMessageStatus.Accepted)
+            {
+                _targetRegistry.Remove(target, onlyIfReachedMaxMessages: true);
+                messageWasAccepted = true;
+                return true; // the message should not be offered to anyone else
+            }
+            // If declined permanently, remove the target
+            else if (result == DataflowMessageStatus.DecliningPermanently)
+            {
+                _targetRegistry.Remove(target);
+            }
+            // If the message was reserved by the target, stop propagating
+            else if (_nextMessageReservedFor != null)
+            {
+                Debug.Assert(result == DataflowMessageStatus.Postponed,
+                    "If the message was reserved, it should also have been postponed.");
+                return true; // the message should not be offered to anyone else
+            }
+            // If the result was Declined, there's nothing more to be done.
+            // This message will sit at the front of the queue until someone claims it.
+
+            return false; // allow the message to be offered to someone else
+        }
+
+        /// <summary>
+        /// Called when we want to enable asynchronously offering message to targets.
+        /// Takes the ValueLock before delegating to OfferAsyncIfNecessary.
+        /// </summary>
+        private void OfferAsyncIfNecessaryWithValueLock()
+        {
+            lock (ValueLock)
+            {
+                OfferAsyncIfNecessary(isReplacementReplica: false, outgoingLockKnownAcquired: false);
+            }
+        }
+
+        /// <summary>Called when we want to enable asynchronously offering message to targets.</summary>
+        /// <param name="isReplacementReplica">Whether this call is the continuation of a previous message loop.</param>
+        /// <param name="outgoingLockKnownAcquired">Whether the caller is sure that the outgoing lock is currently held by this thread.</param>
+        private void OfferAsyncIfNecessary(bool isReplacementReplica, bool outgoingLockKnownAcquired)
+        {
+            Common.ContractAssertMonitorStatus(ValueLock, held: true);
+
+            // Fast path to enable OfferAsyncIfNecessary to be inlined.  We only need
+            // to proceed if there's no task processing, offering is enabled, and
+            // there are no messages to be processed.
+            if (_taskForOutputProcessing == null && _enableOffering && !_messages.IsEmpty)
+            {
+                // Slow path: do additional checks and potentially launch new task
+                OfferAsyncIfNecessary_Slow(isReplacementReplica, outgoingLockKnownAcquired);
+            }
+        }
+
+        /// <summary>Called when we want to enable asynchronously offering message to targets.</summary>
+        /// <param name="isReplacementReplica">Whether this call is the continuation of a previous message loop.</param>
+        /// <param name="outgoingLockKnownAcquired">Whether the caller is sure that the outgoing lock is currently held by this thread.</param>
+        private void OfferAsyncIfNecessary_Slow(bool isReplacementReplica, bool outgoingLockKnownAcquired)
+        {
+            Common.ContractAssertMonitorStatus(ValueLock, held: true);
+            Debug.Assert(_taskForOutputProcessing == null && _enableOffering && !_messages.IsEmpty,
+                "The block must be enabled for offering, not currently be processing, and have messages available to process.");
+
+            // This method must not take the outgoing lock, as it will likely be called in situations
+            // where a derived type's incoming lock is held.
+
+            bool targetsAvailable = true;
+            if (outgoingLockKnownAcquired || Monitor.IsEntered(OutgoingLock))
+            {
+                Common.ContractAssertMonitorStatus(OutgoingLock, held: true);
+                targetsAvailable = _targetRegistry.FirstTargetNode != null;
+            }
+
+            // If there's any work to be done...
+            if (targetsAvailable && !CanceledOrFaulted)
+            {
+                // Create task and store into _taskForOutputProcessing prior to scheduling the task
+                // so that _taskForOutputProcessing will be visibly set in the task loop.
+                _taskForOutputProcessing = new Task(thisSourceCore => ((SourceCore<TOutput>)thisSourceCore).OfferMessagesLoopCore(), this,
+                                                     Common.GetCreationOptionsForTask(isReplacementReplica));
+
+#if FEATURE_TRACING
+                DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+                if (etwLog.IsEnabled())
+                {
+                    etwLog.TaskLaunchedForMessageHandling(
+                        _owningSource, _taskForOutputProcessing, DataflowEtwProvider.TaskLaunchedReason.OfferingOutputMessages, _messages.Count);
+                }
+#endif
+
+                // Start the task handling scheduling exceptions
+#pragma warning disable 0420
+                Exception exception = Common.StartTaskSafe(_taskForOutputProcessing, _dataflowBlockOptions.TaskScheduler);
+#pragma warning restore 0420
+                if (exception != null)
+                {
+                    // First, log the exception while the processing state is dirty which is preventing the block from completing.
+                    // Then revert the proactive processing state changes.
+                    // And last, try to complete the block.
+                    AddException(exception);
+                    _taskForOutputProcessing = null;
+                    _decliningPermanently = true;
+
+                    // Get out from under currently held locks - ValueLock is taken, but OutgoingLock may not be.
+                    // Re-take the locks on a separate thread.
+                    Task.Factory.StartNew(state =>
+                    {
+                        var thisSourceCore = (SourceCore<TOutput>)state;
+                        lock (thisSourceCore.OutgoingLock)
+                        {
+                            lock (thisSourceCore.ValueLock)
+                            {
+                                thisSourceCore.CompleteBlockIfPossible();
+                            }
+                        }
+                    }, this, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+                }
+                if (exception != null) AddException(exception);
+            }
+        }
+
+        /// <summary>Task body used to process messages.</summary>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private void OfferMessagesLoopCore()
+        {
+            Debug.Assert(_taskForOutputProcessing != null && _taskForOutputProcessing.Id == Task.CurrentId,
+                "Must be part of the current processing task.");
+            try
+            {
+                int maxMessagesPerTask = _dataflowBlockOptions.ActualMaxMessagesPerTask;
+
+                // We need to hold the outgoing lock while offering messages.  We can either
+                // lock and unlock for each individual offering, or we can lock around multiple or all
+                // possible offerings.  The former ensures that other operations don't get starved,
+                // while the latter is much more efficient (not continually acquiring and releasing
+                // the lock).  For blocks that aren't linked to any targets, this won't matter
+                // (no offering is done), and for blocks that are only linked to targets, this shouldn't 
+                // matter (no one is contending for the lock), thus
+                // the only case it would matter is when a block both has targets and is being
+                // explicitly received from, which is an uncommon scenario.  Thus, we want to lock
+                // around the whole thing to improve performance, but just in case we do hit
+                // an uncommon scenario, in the default case we release the lock every now and again.  
+                // If a developer wants to control this, they can limit the duration of the 
+                // lock by using MaxMessagesPerTask.
+
+                const int DEFAULT_RELEASE_LOCK_ITERATIONS = 10; // Dialable
+                int releaseLockIterations =
+                    _dataflowBlockOptions.MaxMessagesPerTask == DataflowBlockOptions.Unbounded ?
+                        DEFAULT_RELEASE_LOCK_ITERATIONS : maxMessagesPerTask;
+
+                for (int messageCounter = 0;
+                    messageCounter < maxMessagesPerTask && !CanceledOrFaulted;)
+                {
+                    lock (OutgoingLock)
+                    {
+                        // While there are more messages to process, offer each in turn
+                        // to the targets.  If we're unable to propagate a particular message,
+                        // stop trying until something changes in the future.
+                        for (
+                            int lockReleaseCounter = 0;
+                            messageCounter < maxMessagesPerTask && lockReleaseCounter < releaseLockIterations && !CanceledOrFaulted;
+                            ++messageCounter, ++lockReleaseCounter)
+                        {
+                            if (!OfferToTargets()) return;
+                        }
+                    }
+                }
+            }
+            catch (Exception exc)
+            {
+                // Record the exception
+                AddException(exc);
+
+                // Notify the owning block it should stop accepting new messages
+                _completeAction(_owningSource);
+            }
+            finally
+            {
+                lock (OutgoingLock)
+                {
+                    lock (ValueLock)
+                    {
+                        // We're no longer processing, so null out the processing task
+                        Debug.Assert(_taskForOutputProcessing != null && _taskForOutputProcessing.Id == Task.CurrentId,
+                            "Must be part of the current processing task.");
+                        _taskForOutputProcessing = null;
+                        Interlocked.MemoryBarrier(); // synchronize with AddMessage(s) and its read of _taskForOutputProcessing
+
+                        // However, we may have given up early because we hit our own configured
+                        // processing limits rather than because we ran out of work to do.  If that's
+                        // the case, make sure we spin up another task to keep going.
+                        OfferAsyncIfNecessary(isReplacementReplica: true, outgoingLockKnownAcquired: true);
+
+                        // If, however, we stopped because we ran out of work to do and we
+                        // know we'll never get more, then complete.
+                        CompleteBlockIfPossible();
+                    }
+                }
+            }
+        }
+
+        /// <summary>Gets whether the source has had cancellation requested or an exception has occurred.</summary>
+        private bool CanceledOrFaulted
+        {
+            get
+            {
+                // Cancellation is honored as soon as the CancellationToken has been signaled.
+                // Faulting is honored after an exception has been encountered and the owning block
+                // has invoked Complete on us.
+                return _dataflowBlockOptions.CancellationToken.IsCancellationRequested ||
+                    (HasExceptions && _decliningPermanently);
+            }
+        }
+
+        /// <summary>Completes the block's processing if there's nothing left to do and never will be.</summary>
+        private void CompleteBlockIfPossible()
+        {
+            Common.ContractAssertMonitorStatus(OutgoingLock, held: true);
+            Common.ContractAssertMonitorStatus(ValueLock, held: true);
+
+            if (!_completionReserved)
+            {
+                if (_decliningPermanently && // declining permanently, so no more messages will arrive
+                    _taskForOutputProcessing == null && // no current processing
+                    _nextMessageReservedFor == null) // no pending reservation
+                {
+                    CompleteBlockIfPossible_Slow();
+                }
+            }
+        }
+
+        /// <summary>
+        /// Slow path for CompleteBlockIfPossible. 
+        /// Separating out the slow path into its own method makes it more likely that the fast path method will get inlined.
+        /// </summary>
+        private void CompleteBlockIfPossible_Slow()
+        {
+            Contract.Requires(
+                _decliningPermanently && _taskForOutputProcessing == null && _nextMessageReservedFor == null,
+                "The block must be declining permanently, there must be no reservations, and there must be no processing tasks");
+            Common.ContractAssertMonitorStatus(OutgoingLock, held: true);
+            Common.ContractAssertMonitorStatus(ValueLock, held: true);
+
+            if (_messages.IsEmpty || CanceledOrFaulted)
+            {
+                _completionReserved = true;
+
+                // Get out from under currently held locks.  This is to avoid
+                // invoking synchronous continuations off of _completionTask.Task
+                // while holding a lock.
+                Task.Factory.StartNew(state => ((SourceCore<TOutput>)state).CompleteBlockOncePossible(),
+                    this, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+            }
+        }
+
+        /// <summary>
+        /// Completes the block.  This must only be called once, and only once all of the completion conditions are met.
+        /// As such, it must only be called from CompleteBlockIfPossible.
+        /// </summary>
+        private void CompleteBlockOncePossible()
+        {
+            TargetRegistry<TOutput>.LinkedTargetInfo linkedTargets;
+            List<Exception> exceptions;
+
+            // Avoid completing while the code that caused this completion to occur is still holding a lock.
+            // Clear out the target registry and buffers to help avoid memory leaks.
+            lock (OutgoingLock)
+            {
+                // Save the linked list of targets so that it could be traversed later to propagate completion
+                linkedTargets = _targetRegistry.ClearEntryPoints();
+                lock (ValueLock)
+                {
+                    _messages.Clear();
+
+                    // Save a local reference to the exceptions list and null out the field,
+                    // so that if the target side tries to add an exception this late,
+                    // it will go to a separate list (that will be ignored.)
+                    exceptions = _exceptions;
+                    _exceptions = null;
+                }
+            }
+
+            // If it's due to an unhandled exception, finish in an error state
+            if (exceptions != null)
+            {
+                _completionTask.TrySetException(exceptions);
+            }
+            // If it's due to cancellation, finish in a canceled state
+            else if (_dataflowBlockOptions.CancellationToken.IsCancellationRequested)
+            {
+                _completionTask.TrySetCanceled();
+            }
+            // Otherwise, finish in a successful state.
+            else
+            {
+                _completionTask.TrySetResult(default(VoidResult));
+            }
+
+            // Now that the completion task is completed, we may propagate completion to the linked targets
+            _targetRegistry.PropagateCompletion(linkedTargets);
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCompleted(_owningSource);
+            }
+#endif
+        }
+
+        /// <summary>Gets the object to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                var displaySource = _owningSource as IDebuggerDisplay;
+                return string.Format("Block=\"{0}\"",
+                    displaySource != null ? displaySource.Content : _owningSource);
+            }
+        }
+
+        /// <summary>Gets information about this helper to be used for display in a debugger.</summary>
+        /// <returns>Debugging information about this source core.</returns>
+        internal DebuggingInformation GetDebuggingInformation() { return new DebuggingInformation(this); }
+
+        /// <summary>Provides debugging information about the source core.</summary>
+        internal sealed class DebuggingInformation
+        {
+            /// <summary>The source being viewed.</summary>
+            private SourceCore<TOutput> _source;
+
+            /// <summary>Initializes the type proxy.</summary>
+            /// <param name="source">The source being viewed.</param>
+            internal DebuggingInformation(SourceCore<TOutput> source) { _source = source; }
+
+            /// <summary>Gets the number of messages available for receiving.</summary>
+            internal int OutputCount { get { return _source._messages.Count; } }
+            /// <summary>Gets the messages available for receiving.</summary>
+            internal IEnumerable<TOutput> OutputQueue { get { return _source._messages.ToList(); } }
+            /// <summary>Gets the task being used for output processing.</summary>
+            internal Task TaskForOutputProcessing { get { return _source._taskForOutputProcessing; } }
+
+            /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+            internal DataflowBlockOptions DataflowBlockOptions { get { return _source._dataflowBlockOptions; } }
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            internal bool IsDecliningPermanently { get { return _source._decliningPermanently; } }
+            /// <summary>Gets whether the block is completed.</summary>
+            internal bool IsCompleted { get { return _source.Completion.IsCompleted; } }
+
+            /// <summary>Gets the set of all targets linked from this block.</summary>
+            internal TargetRegistry<TOutput> LinkedTargets { get { return _source._targetRegistry; } }
+            /// <summary>Gets the target that holds a reservation on the next message, if any.</summary>
+            internal ITargetBlock<TOutput> NextMessageReservedFor { get { return _source._nextMessageReservedFor; } }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/SpscTargetCore.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/SpscTargetCore.cs
new file mode 100644 (file)
index 0000000..0e036e8
--- /dev/null
@@ -0,0 +1,413 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// SpscTargetCore.cs
+//
+//
+// A fast single-producer-single-consumer core for a target block.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Security;
+
+#pragma warning disable 0420 // turn off warning for passing volatiles to interlocked operations
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    // SpscTargetCore provides a fast target core for use in blocks that will only have single-producer-single-consumer
+    // semantics.  Blocks configured with the default DOP==1 will be single consumer, so whether this core may be
+    // used is largely up to whether the block is also single-producer.  The ExecutionDataflowBlockOptions.SingleProducerConstrained
+    // option can be used by a developer to inform a block that it will only be accessed by one producer at a time,
+    // and a block like ActionBlock can utilize that knowledge to choose this target instead of the default TargetCore.
+    // However, there are further constraints that might prevent this core from being used.
+    //     - If the user specifies a CancellationToken, this core can't be used, as the cancellation request
+    //       could come in concurrently with the single producer accessing the block, thus resulting in multiple producers.
+    //     - If the user specifies a bounding capacity, this core can't be used, as the consumer processing items
+    //       needs to synchronize with producers around the change in bounding count, and the consumer is again
+    //       in effect another producer.
+    //     - If the block has a source half (e.g. TransformBlock) and that source could potentially call back
+    //       to the target half to, for example, notify it of exceptions occurring, again there would potentially
+    //       be multiple producers.
+    // Thus, when and how this SpscTargetCore may be applied is significantly constrained.
+
+    /// <summary>
+    /// Provides a core implementation of <see cref="ITargetBlock{TInput}"/> for use when there's only a single producer posting data.
+    /// </summary>
+    /// <typeparam name="TInput">Specifies the type of data accepted by the <see cref="TargetCore{TInput}"/>.</typeparam>
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    internal sealed class SpscTargetCore<TInput>
+    {
+        /// <summary>The target block using this helper.</summary>
+        private readonly ITargetBlock<TInput> _owningTarget;
+        /// <summary>The messages in this target.</summary>
+        private readonly SingleProducerSingleConsumerQueue<TInput> _messages = new SingleProducerSingleConsumerQueue<TInput>();
+        /// <summary>The options to use to configure this block. The target core assumes these options are immutable.</summary>
+        private readonly ExecutionDataflowBlockOptions _dataflowBlockOptions;
+        /// <summary>An action to invoke for every accepted message.</summary>
+        private readonly Action<TInput> _action;
+
+        /// <summary>Exceptions that may have occurred and gone unhandled during processing.  This field is lazily initialized.</summary>
+        private volatile List<Exception> _exceptions;
+        /// <summary>Whether to stop accepting new messages.</summary>
+        private volatile bool _decliningPermanently;
+        /// <summary>A task has reserved the right to run the completion routine.</summary>
+        private volatile bool _completionReserved;
+        /// <summary>
+        /// The Task currently active to process the block. This field is used to synchronize between producer and consumer, 
+        /// and it should not be set to null once the block completes, as doing so would allow for races where the producer
+        /// gets another consumer task queued even though the block has completed.
+        /// </summary>
+        private volatile Task _activeConsumer;
+        /// <summary>A task representing the completion of the block.  This field is lazily initialized.</summary>
+        private TaskCompletionSource<VoidResult> _completionTask;
+
+        /// <summary>Initialize the SPSC target core.</summary>
+        /// <param name="owningTarget">The owning target block.</param>
+        /// <param name="action">The action to be invoked for every message.</param>
+        /// <param name="dataflowBlockOptions">The options to use to configure this block. The target core assumes these options are immutable.</param>
+        internal SpscTargetCore(
+            ITargetBlock<TInput> owningTarget, Action<TInput> action, ExecutionDataflowBlockOptions dataflowBlockOptions)
+        {
+            Contract.Requires(owningTarget != null, "Expected non-null owningTarget");
+            Contract.Requires(action != null, "Expected non-null action");
+            Contract.Requires(dataflowBlockOptions != null, "Expected non-null dataflowBlockOptions");
+
+            _owningTarget = owningTarget;
+            _action = action;
+            _dataflowBlockOptions = dataflowBlockOptions;
+        }
+
+        internal bool Post(TInput messageValue)
+        {
+            if (_decliningPermanently)
+                return false;
+
+            // Store the offered message into the queue.
+            _messages.Enqueue(messageValue);
+
+            Interlocked.MemoryBarrier(); // ensure the read of _activeConsumer doesn't move up before the writes in Enqueue
+
+            // Make sure there's an active task available to handle processing this message.  If we find the task
+            // is null, we'll try to schedule one using an interlocked operation.  If we find the task is non-null,
+            // then there must be a task actively running.  If there's a race where the task is about to complete
+            // and nulls out its reference (using a barrier), it'll subsequently check whether there are any messages in the queue,
+            // and since we put the messages into the queue before now, it'll find them and use an interlocked
+            // to re-launch itself.
+            if (_activeConsumer == null)
+            {
+                ScheduleConsumerIfNecessary(false);
+            }
+
+            return true;
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+        internal DataflowMessageStatus OfferMessage(DataflowMessageHeader messageHeader, TInput messageValue, ISourceBlock<TInput> source, bool consumeToAccept)
+        {
+            // If we're not required to go back to the source to consume the offered message, try fast path.
+            return !consumeToAccept && Post(messageValue) ? 
+                DataflowMessageStatus.Accepted :
+                OfferMessage_Slow(messageHeader, messageValue, source, consumeToAccept);
+        }
+
+        /// <summary>Implements the slow path for OfferMessage.</summary>
+        /// <param name="messageHeader">The message header for the offered value.</param>
+        /// <param name="messageValue">The offered value.</param>
+        /// <param name="source">The source offering the message. This may be null.</param>
+        /// <param name="consumeToAccept">true if we need to call back to the source to consume the message; otherwise, false if we can simply accept it directly.</param>
+        /// <returns>The status of the message.</returns>
+        private DataflowMessageStatus OfferMessage_Slow(DataflowMessageHeader messageHeader, TInput messageValue, ISourceBlock<TInput> source, bool consumeToAccept)
+        {
+            // If we're declining permanently, let the caller know.
+            if (_decliningPermanently)
+            {
+                return DataflowMessageStatus.DecliningPermanently;
+            }
+
+            // If the message header is invalid, throw.
+            if (!messageHeader.IsValid)
+            {
+                throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            }
+
+            // If the caller has requested we consume the message using ConsumeMessage, do so.
+            if (consumeToAccept)
+            {
+                if (source == null) throw new ArgumentException(SR.Argument_CantConsumeFromANullSource, "consumeToAccept");
+                bool consumed;
+                messageValue = source.ConsumeMessage(messageHeader, _owningTarget, out consumed);
+                if (!consumed) return DataflowMessageStatus.NotAvailable;
+            }
+
+            // See the "fast path" comments in Post
+            _messages.Enqueue(messageValue);
+            Interlocked.MemoryBarrier(); // ensure the read of _activeConsumer doesn't move up before the writes in Enqueue
+            if (_activeConsumer == null)
+            {
+                ScheduleConsumerIfNecessary(isReplica: false);
+            }
+            return DataflowMessageStatus.Accepted;
+        }
+
+        /// <summary>Schedules a consumer task if there's none currently running.</summary>
+        /// <param name="isReplica">Whether the new consumer is being scheduled to replace a currently running consumer.</param>
+        [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
+        private void ScheduleConsumerIfNecessary(bool isReplica)
+        {
+            // If there's currently no active task...
+            if (_activeConsumer == null)
+            {
+                // Create a new consumption task and try to set it as current as long as there's still no other task
+                var newConsumer = new Task(
+                    state => ((SpscTargetCore<TInput>)state).ProcessMessagesLoopCore(),
+                    this, CancellationToken.None, Common.GetCreationOptionsForTask(isReplica));
+                if (Interlocked.CompareExchange(ref _activeConsumer, newConsumer, null) == null)
+                {
+                    // We won the race.  This task is now the consumer.
+
+#if FEATURE_TRACING
+                    DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+                    if (etwLog.IsEnabled())
+                    {
+                        etwLog.TaskLaunchedForMessageHandling(
+                            _owningTarget, newConsumer, DataflowEtwProvider.TaskLaunchedReason.ProcessingInputMessages, _messages.Count);
+                    }
+#endif
+
+                    // Start the task.  In the erroneous case where the scheduler throws an exception, 
+                    // just allow it to propagate. Our other option would be to fault the block with 
+                    // that exception, but in order for the block to complete we need to schedule a consumer
+                    // task to do so, and it's very likely that if the scheduler is throwing an exception 
+                    // now, it would do so again.
+                    newConsumer.Start(_dataflowBlockOptions.TaskScheduler);
+                }
+            }
+        }
+
+        /// <summary>Task body used to process messages.</summary>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private void ProcessMessagesLoopCore()
+        {
+            Debug.Assert(
+                _activeConsumer != null && _activeConsumer.Id == Task.CurrentId,
+                "This method should only be called when it's the active consumer.");
+
+            int messagesProcessed = 0;
+            int maxMessagesToProcess = _dataflowBlockOptions.ActualMaxMessagesPerTask;
+
+            // Continue processing as long as there's more processing to be done
+            bool continueProcessing = true;
+            while (continueProcessing)
+            {
+                continueProcessing = false;
+                TInput nextMessage = default(TInput);
+                try
+                {
+                    // While there are more messages to be processed, process each one.
+                    // NOTE: This loop is critical for performance.  It must be super lean.
+                    while (
+                        _exceptions == null &&
+                        messagesProcessed < maxMessagesToProcess &&
+                        _messages.TryDequeue(out nextMessage))
+                    {
+                        messagesProcessed++; // done before _action invoked in case it throws exception
+                        _action(nextMessage);
+                    }
+                }
+                catch (Exception exc)
+                {
+                    // If the exception is for cancellation, just ignore it.
+                    // Otherwise, store it, and the finally block will handle completion.
+                    if (!Common.IsCooperativeCancellation(exc))
+                    {
+                        _decliningPermanently = true; // stop accepting from producers
+                        Common.StoreDataflowMessageValueIntoExceptionData<TInput>(exc, nextMessage, false);
+                        StoreException(exc);
+                    }
+                }
+                finally
+                {
+                    // If more messages just arrived and we should still process them,
+                    // loop back around and keep going.
+                    if (!_messages.IsEmpty && _exceptions == null && (messagesProcessed < maxMessagesToProcess))
+                    {
+                        continueProcessing = true;
+                    }
+                    else
+                    {
+                        // If messages are being declined and we're empty, or if there's an exception,
+                        // then there's no more work to be done and we should complete the block.
+                        bool wasDecliningPermanently = _decliningPermanently;
+                        if ((wasDecliningPermanently && _messages.IsEmpty) || _exceptions != null)
+                        {
+                            // Complete the block, as long as we're not already completing or completed.
+                            if (!_completionReserved) // no synchronization necessary; this can't happen concurrently
+                            {
+                                _completionReserved = true;
+                                CompleteBlockOncePossible();
+                            }
+                        }
+                        else
+                        {
+                            // Mark that we're exiting.
+                            Task previousConsumer = Interlocked.Exchange(ref _activeConsumer, null);
+                            Debug.Assert(previousConsumer != null && previousConsumer.Id == Task.CurrentId,
+                                "The running task should have been denoted as the active task.");
+
+                            // Now that we're no longer the active task, double
+                            // check to make sure there's really nothing to do,
+                            // which could include processing more messages or completing.
+                            // If there is more to do, schedule a task to try to do it.
+                            // This is to handle a race with Post/Complete/Fault and this
+                            // task completing.
+                            if (!_messages.IsEmpty || // messages to be processed
+                                (!wasDecliningPermanently && _decliningPermanently) || // potentially completion to be processed
+                                _exceptions != null) // exceptions/completion to be processed
+                            {
+                                ScheduleConsumerIfNecessary(isReplica: true);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        /// <summary>Gets the number of messages waiting to be processed.</summary>
+        internal int InputCount { get { return _messages.Count; } }
+
+        /// <summary>
+        /// Completes the target core.  If an exception is provided, the block will end up in a faulted state.
+        /// If Complete is invoked more than once, or if it's invoked after the block is already
+        /// completing, all invocations after the first are ignored.
+        /// </summary>
+        /// <param name="exception">The exception to be stored.</param>
+        internal void Complete(Exception exception)
+        {
+            // If we're not yet declining permanently...
+            if (!_decliningPermanently)
+            {
+                // Mark us as declining permanently, and then kick off a processing task
+                // if we need one.  It's this processing task's job to complete the block
+                // once all data has been consumed and/or we're in a valid state for completion.
+                if (exception != null) StoreException(exception);
+                _decliningPermanently = true;
+                ScheduleConsumerIfNecessary(isReplica: false);
+            }
+        }
+
+        /// <summary>
+        /// Ensures the exceptions list is initialized and stores the exception into the list using a lock.
+        /// </summary>
+        /// <param name="exception">The exception to store.</param>
+        private void StoreException(Exception exception)
+        {
+            // Ensure that the _exceptions field has been initialized.
+            // We need to synchronize the initialization and storing of
+            // the exception because this method could be accessed concurrently
+            // by the producer and consumer, a producer calling Fault and the 
+            // processing task processing the user delegate which might throw.
+            lock (LazyInitializer.EnsureInitialized(ref _exceptions, () => new List<Exception>()))
+            {
+                _exceptions.Add(exception);
+            }
+        }
+
+        /// <summary>
+        /// Completes the block.  This must only be called once, and only once all of the completion conditions are met.
+        /// </summary>
+        private void CompleteBlockOncePossible()
+        {
+            Debug.Assert(_completionReserved, "Should only invoke once completion has been reserved.");
+
+            // Dump any messages that might remain in the queue, which could happen if we completed due to exceptions.
+            TInput dumpedMessage;
+            while (_messages.TryDequeue(out dumpedMessage)) ;
+
+            // Complete the completion task
+            bool result;
+            if (_exceptions != null)
+            {
+                Exception[] exceptions;
+                lock (_exceptions) exceptions = _exceptions.ToArray();
+                result = CompletionSource.TrySetException(exceptions);
+            }
+            else
+            {
+                result = CompletionSource.TrySetResult(default(VoidResult));
+            }
+            Debug.Assert(result, "Expected completion task to not yet be completed");
+            // We explicitly do not set the _activeTask to null here, as that would
+            // allow for races where a producer calling OfferMessage could end up
+            // seeing _activeTask as null and queueing a new consumer task even
+            // though the block has completed.
+
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockCompleted(_owningTarget);
+            }
+#endif
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        internal Task Completion { get { return CompletionSource.Task; } }
+
+        /// <summary>Gets the lazily-initialized completion source.</summary>
+        private TaskCompletionSource<VoidResult> CompletionSource
+        {
+            get { return LazyInitializer.EnsureInitialized(ref _completionTask, () => new TaskCompletionSource<VoidResult>()); }
+        }
+
+        /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+        internal ExecutionDataflowBlockOptions DataflowBlockOptions { get { return _dataflowBlockOptions; } }
+
+        /// <summary>Gets information about this helper to be used for display in a debugger.</summary>
+        /// <returns>Debugging information about this target.</returns>
+        internal DebuggingInformation GetDebuggingInformation() { return new DebuggingInformation(this); }
+
+        /// <summary>Gets the object to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                var displayTarget = _owningTarget as IDebuggerDisplay;
+                return string.Format("Block=\"{0}\"",
+                    displayTarget != null ? displayTarget.Content : _owningTarget);
+            }
+        }
+
+        /// <summary>Provides a wrapper for commonly needed debugging information.</summary>
+        internal sealed class DebuggingInformation
+        {
+            /// <summary>The target being viewed.</summary>
+            private readonly SpscTargetCore<TInput> _target;
+
+            /// <summary>Initializes the debugging helper.</summary>
+            /// <param name="target">The target being viewed.</param>
+            internal DebuggingInformation(SpscTargetCore<TInput> target) { _target = target; }
+
+            /// <summary>Gets the number of messages waiting to be processed.</summary>
+            internal int InputCount { get { return _target.InputCount; } }
+            /// <summary>Gets the messages waiting to be processed.</summary>
+            internal IEnumerable<TInput> InputQueue { get { return _target._messages.ToList(); } }
+
+            /// <summary>Gets the current number of outstanding input processing operations.</summary>
+            internal Int32 CurrentDegreeOfParallelism { get { return _target._activeConsumer != null && !_target.Completion.IsCompleted ? 1 : 0; } }
+            /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+            internal ExecutionDataflowBlockOptions DataflowBlockOptions { get { return _target._dataflowBlockOptions; } }
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            internal bool IsDecliningPermanently { get { return _target._decliningPermanently; } }
+            /// <summary>Gets whether the block is completed.</summary>
+            internal bool IsCompleted { get { return _target.Completion.IsCompleted; } }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/TargetCore.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/TargetCore.cs
new file mode 100644 (file)
index 0000000..ed1c806
--- /dev/null
@@ -0,0 +1,881 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// TargetCore.cs
+//
+//
+// The core implementation of a standard ITargetBlock<TInput>.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Linq;
+using System.Security;
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    // LOCK-LEVELING SCHEME
+    // --------------------
+    // TargetCore employs a single lock: IncomingLock.  This lock must not be used when calling out to any targets,
+    // which TargetCore should not have, anyway.  It also must not be held when calling back to any sources, except
+    // during calls to OfferMessage from that same source.
+
+    /// <summary>Options used to configure a target core.</summary>
+    [Flags]
+    internal enum TargetCoreOptions : byte
+    {
+        /// <summary>Synchronous completion, both a target and a source, etc.</summary>
+        None = 0x0,
+        /// <summary>Whether the block relies on the delegate to signal when an async operation has completed.</summary>
+        UsesAsyncCompletion = 0x1,
+        /// <summary>
+        /// Whether the block containing this target core is just a target or also has a source side.
+        /// If it's just a target, then this target core's completion represents the entire block's completion.
+        /// </summary>
+        RepresentsBlockCompletion = 0x2
+    }
+
+    /// <summary>
+    /// Provides a core implementation of <see cref="ITargetBlock{TInput}"/>.</summary>
+    /// <typeparam name="TInput">Specifies the type of data accepted by the <see cref="TargetCore{TInput}"/>.</typeparam>
+    [SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable")]
+    [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+    internal sealed class TargetCore<TInput>
+    {
+        // *** These fields are readonly and are initialized at AppDomain startup.
+
+        /// <summary>Caching the keep alive predicate.</summary>
+        private static readonly Common.KeepAlivePredicate<TargetCore<TInput>, KeyValuePair<TInput, long>> _keepAlivePredicate =
+                (TargetCore<TInput> thisTargetCore, out KeyValuePair<TInput, long> messageWithId) =>
+                    thisTargetCore.TryGetNextAvailableOrPostponedMessage(out messageWithId);
+
+        // *** These fields are readonly and are initialized to new instances at construction.
+
+        /// <summary>A task representing the completion of the block.</summary>
+        private readonly TaskCompletionSource<VoidResult> _completionSource = new TaskCompletionSource<VoidResult>();
+
+        // *** These fields are readonly and are initialized by arguments to the constructor.
+
+        /// <summary>The target block using this helper.</summary>
+        private readonly ITargetBlock<TInput> _owningTarget;
+        /// <summary>The messages in this target.</summary>
+        /// <remarks>This field doubles as the IncomingLock.</remarks>
+        private readonly IProducerConsumerQueue<KeyValuePair<TInput, long>> _messages;
+        /// <summary>The options associated with this block.</summary>
+        private readonly ExecutionDataflowBlockOptions _dataflowBlockOptions;
+        /// <summary>An action to invoke for every accepted message.</summary>
+        private readonly Action<KeyValuePair<TInput, long>> _callAction;
+        /// <summary>Whether the block relies on the delegate to signal when an async operation has completed.</summary>
+        private readonly TargetCoreOptions _targetCoreOptions;
+        /// <summary>Bounding state for when the block is executing in bounded mode.</summary>
+        private readonly BoundingStateWithPostponed<TInput> _boundingState;
+        /// <summary>The reordering buffer used by the owner.  May be null.</summary>
+        private readonly IReorderingBuffer _reorderingBuffer;
+
+        /// <summary>Gets the object used as the incoming lock.</summary>
+        private object IncomingLock { get { return _messages; } }
+
+        // *** These fields are mutated during execution.
+
+        /// <summary>Exceptions that may have occurred and gone unhandled during processing.</summary>
+        private List<Exception> _exceptions;
+        /// <summary>Whether to stop accepting new messages.</summary>
+        private bool _decliningPermanently;
+        /// <summary>The number of operations (including service tasks) currently running asynchronously.</summary>
+        /// <remarks>Must always be accessed from inside a lock.</remarks>
+        private int _numberOfOutstandingOperations;
+        /// <summary>The number of service tasks in async mode currently running.</summary>
+        /// <remarks>Must always be accessed from inside a lock.</remarks>
+        private int _numberOfOutstandingServiceTasks;
+        /// <summary>The next available ID we can assign to a message about to be processed.</summary>
+        private PaddedInt64 _nextAvailableInputMessageId; // initialized to 0... very important for a reordering buffer
+        /// <summary>A task has reserved the right to run the completion routine.</summary>
+        private bool _completionReserved;
+        /// <summary>This counter is set by the processing loop to prevent itself from trying to keep alive.</summary>
+        private int _keepAliveBanCounter;
+
+        /// <summary>Initializes the target core.</summary>
+        /// <param name="owningTarget">The target using this helper.</param>
+        /// <param name="callAction">An action to invoke for all accepted items.</param>
+        /// <param name="reorderingBuffer">The reordering buffer used by the owner; may be null.</param>
+        /// <param name="dataflowBlockOptions">The options to use to configure this block. The target core assumes these options are immutable.</param>
+        /// <param name="targetCoreOptions">Options for how the target core should behave.</param>
+        internal TargetCore(
+            ITargetBlock<TInput> owningTarget,
+            Action<KeyValuePair<TInput, long>> callAction,
+            IReorderingBuffer reorderingBuffer,
+            ExecutionDataflowBlockOptions dataflowBlockOptions,
+            TargetCoreOptions targetCoreOptions)
+        {
+            // Validate internal arguments
+            Contract.Requires(owningTarget != null, "Core must be associated with a target block.");
+            Contract.Requires(dataflowBlockOptions != null, "Options must be provided to configure the core.");
+            Contract.Requires(callAction != null, "Action to invoke for each item is required.");
+
+            // Store arguments and do additional initialization
+            _owningTarget = owningTarget;
+            _callAction = callAction;
+            _reorderingBuffer = reorderingBuffer;
+            _dataflowBlockOptions = dataflowBlockOptions;
+            _targetCoreOptions = targetCoreOptions;
+            _messages = (dataflowBlockOptions.MaxDegreeOfParallelism == 1) ?
+                (IProducerConsumerQueue<KeyValuePair<TInput, long>>)new SingleProducerSingleConsumerQueue<KeyValuePair<TInput, long>>() :
+                (IProducerConsumerQueue<KeyValuePair<TInput, long>>)new MultiProducerMultiConsumerQueue<KeyValuePair<TInput, long>>();
+            if (_dataflowBlockOptions.BoundedCapacity != System.Threading.Tasks.Dataflow.DataflowBlockOptions.Unbounded)
+            {
+                Debug.Assert(_dataflowBlockOptions.BoundedCapacity > 0, "Positive bounding count expected; should have been verified by options ctor");
+                _boundingState = new BoundingStateWithPostponed<TInput>(_dataflowBlockOptions.BoundedCapacity);
+            }
+        }
+
+        /// <summary>Internal Complete entry point with extra parameters for different contexts.</summary>
+        /// <param name="exception">If not null, the block will be faulted.</param>
+        /// <param name="dropPendingMessages">If true, any unprocessed input messages will be dropped.</param>
+        /// <param name="storeExceptionEvenIfAlreadyCompleting">If true, an exception will be stored after _decliningPermanently has been set to true.</param>
+        /// <param name="unwrapInnerExceptions">If true, exception will be treated as an AggregateException.</param>
+        /// <param name="revertProcessingState">Indicates whether the processing state is dirty and has to be reverted.</param>
+        internal void Complete(Exception exception, bool dropPendingMessages, bool storeExceptionEvenIfAlreadyCompleting = false,
+            bool unwrapInnerExceptions = false, bool revertProcessingState = false)
+        {
+            Contract.Requires(storeExceptionEvenIfAlreadyCompleting || !revertProcessingState,
+                            "Indicating dirty processing state may only come with storeExceptionEvenIfAlreadyCompleting==true.");
+            Contract.EndContractBlock();
+
+            // Ensure that no new messages may be added
+            lock (IncomingLock)
+            {
+                // Faulting from outside is allowed until we start declining permanently.
+                // Faulting from inside is allowed at any time.
+                if (exception != null && (!_decliningPermanently || storeExceptionEvenIfAlreadyCompleting))
+                {
+                    Debug.Assert(_numberOfOutstandingOperations > 0 || !storeExceptionEvenIfAlreadyCompleting,
+                                "Calls with storeExceptionEvenIfAlreadyCompleting==true may only be coming from processing task.");
+
+#pragma warning disable 0420
+                    Common.AddException(ref _exceptions, exception, unwrapInnerExceptions);
+                }
+
+                // Clear the messages queue if requested
+                if (dropPendingMessages)
+                {
+                    KeyValuePair<TInput, long> dummy;
+                    while (_messages.TryDequeue(out dummy)) ;
+                }
+
+                // Revert the dirty processing state if requested
+                if (revertProcessingState)
+                {
+                    Debug.Assert(_numberOfOutstandingOperations > 0 && (!UsesAsyncCompletion || _numberOfOutstandingServiceTasks > 0),
+                                    "The processing state must be dirty when revertProcessingState==true.");
+                    _numberOfOutstandingOperations--;
+                    if (UsesAsyncCompletion) _numberOfOutstandingServiceTasks--;
+                }
+
+                // Trigger completion
+                _decliningPermanently = true;
+                CompleteBlockIfPossible();
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+        internal DataflowMessageStatus OfferMessage(DataflowMessageHeader messageHeader, TInput messageValue, ISourceBlock<TInput> source, Boolean consumeToAccept)
+        {
+            // Validate arguments
+            if (!messageHeader.IsValid) throw new ArgumentException(SR.Argument_InvalidMessageHeader, "messageHeader");
+            if (source == null && consumeToAccept) throw new ArgumentException(SR.Argument_CantConsumeFromANullSource, "consumeToAccept");
+            Contract.EndContractBlock();
+
+            lock (IncomingLock)
+            {
+                // If we shouldn't be accepting more messages, don't.
+                if (_decliningPermanently)
+                {
+                    CompleteBlockIfPossible();
+                    return DataflowMessageStatus.DecliningPermanently;
+                }
+
+                // We can directly accept the message if:
+                //      1) we are not bounding, OR 
+                //      2) we are bounding AND there is room available AND there are no postponed messages AND no messages are currently being transfered to the input queue.
+                // (If there were any postponed messages, we would need to postpone so that ordering would be maintained.)
+                // (Unlike all other blocks, TargetCore can accept messages while processing, because 
+                // input message IDs are properly assigned and the correct order is preserved.)
+                if (_boundingState == null ||
+                    (_boundingState.OutstandingTransfers == 0 && _boundingState.CountIsLessThanBound && _boundingState.PostponedMessages.Count == 0))
+                {
+                    // Consume the message from the source if necessary
+                    if (consumeToAccept)
+                    {
+                        Debug.Assert(source != null, "We must have thrown if source == null && consumeToAccept == true.");
+
+                        bool consumed;
+                        messageValue = source.ConsumeMessage(messageHeader, _owningTarget, out consumed);
+                        if (!consumed) return DataflowMessageStatus.NotAvailable;
+                    }
+
+                    // Assign a message ID - strictly sequential, no gaps.
+                    // Once consumed, enqueue the message with its ID and kick off asynchronous processing.
+                    long messageId = _nextAvailableInputMessageId.Value++;
+                    Debug.Assert(messageId != Common.INVALID_REORDERING_ID, "The assigned message ID is invalid.");
+                    if (_boundingState != null) _boundingState.CurrentCount += 1; // track this new item against our bound
+                    _messages.Enqueue(new KeyValuePair<TInput, long>(messageValue, messageId));
+                    ProcessAsyncIfNecessary();
+                    return DataflowMessageStatus.Accepted;
+                }
+                // Otherwise, we try to postpone if a source was provided
+                else if (source != null)
+                {
+                    Debug.Assert(_boundingState != null && _boundingState.PostponedMessages != null,
+                        "PostponedMessages must have been initialized during construction in non-greedy mode.");
+
+                    // Store the message's info and kick off asynchronous processing
+                    _boundingState.PostponedMessages.Push(source, messageHeader);
+                    ProcessAsyncIfNecessary();
+                    return DataflowMessageStatus.Postponed;
+                }
+                // We can't do anything else about this message
+                return DataflowMessageStatus.Declined;
+            }
+        }
+
+        /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+        internal Task Completion { get { return _completionSource.Task; } }
+
+        /// <summary>Gets the number of items waiting to be processed by this target.</summary>
+        internal int InputCount { get { return _messages.GetCountSafe(IncomingLock); } }
+
+        /// <summary>Signals to the target core that a previously launched asynchronous operation has now completed.</summary>
+        internal void SignalOneAsyncMessageCompleted()
+        {
+            SignalOneAsyncMessageCompleted(boundingCountChange: 0);
+        }
+
+        /// <summary>Signals to the target core that a previously launched asynchronous operation has now completed.</summary>
+        /// <param name="boundingCountChange">The number of elements by which to change the bounding count, if bounding is occurring.</param>
+        internal void SignalOneAsyncMessageCompleted(int boundingCountChange)
+        {
+            lock (IncomingLock)
+            {
+                // We're no longer processing, so decrement the DOP counter
+                Debug.Assert(_numberOfOutstandingOperations > 0, "Operations may only be completed if any are outstanding.");
+                if (_numberOfOutstandingOperations > 0) _numberOfOutstandingOperations--;
+
+                // Fix up the bounding count if necessary
+                if (_boundingState != null && boundingCountChange != 0)
+                {
+                    Debug.Assert(boundingCountChange <= 0 && _boundingState.CurrentCount + boundingCountChange >= 0,
+                        "Expected a negative bounding change and not to drop below zero.");
+                    _boundingState.CurrentCount += boundingCountChange;
+                }
+
+                // However, we may have given up early because we hit our own configured
+                // processing limits rather than because we ran out of work to do.  If that's
+                // the case, make sure we spin up another task to keep going.
+                ProcessAsyncIfNecessary(repeat: true);
+
+                // If, however, we stopped because we ran out of work to do and we
+                // know we'll never get more, then complete.
+                CompleteBlockIfPossible();
+            }
+        }
+
+        /// <summary>Gets whether this instance has been constructed for async processing.</summary>
+        private bool UsesAsyncCompletion
+        {
+            get
+            {
+                return (_targetCoreOptions & TargetCoreOptions.UsesAsyncCompletion) != 0;
+            }
+        }
+
+        /// <summary>Gets whether there's room to launch more processing operations.</summary>
+        private bool HasRoomForMoreOperations
+        {
+            get
+            {
+                Contract.Requires(_numberOfOutstandingOperations >= 0, "Number of outstanding operations should never be negative.");
+                Contract.Requires(_numberOfOutstandingServiceTasks >= 0, "Number of outstanding service tasks should never be negative.");
+                Contract.Requires(_numberOfOutstandingOperations >= _numberOfOutstandingServiceTasks, "Number of outstanding service tasks should never exceed the number of outstanding operations.");
+                Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+                // In async mode, we increment _numberOfOutstandingOperations before we start 
+                // our own processing loop which should not count towards the MaxDOP.
+                return (_numberOfOutstandingOperations - _numberOfOutstandingServiceTasks) < _dataflowBlockOptions.ActualMaxDegreeOfParallelism;
+            }
+        }
+
+        /// <summary>Gets whether there's room to launch more service tasks for doing/launching processing operations.</summary>
+        private bool HasRoomForMoreServiceTasks
+        {
+            get
+            {
+                Contract.Requires(_numberOfOutstandingOperations >= 0, "Number of outstanding operations should never be negative.");
+                Contract.Requires(_numberOfOutstandingServiceTasks >= 0, "Number of outstanding service tasks should never be negative.");
+                Contract.Requires(_numberOfOutstandingOperations >= _numberOfOutstandingServiceTasks, "Number of outstanding service tasks should never exceed the number of outstanding operations.");
+                Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+                if (!UsesAsyncCompletion)
+                {
+                    // Sync mode: 
+                    // We don't count service tasks, because our tasks are counted as operations.
+                    // Therefore, return HasRoomForMoreOperations.
+                    return HasRoomForMoreOperations;
+                }
+                else
+                {
+                    // Async mode:
+                    // We allow up to MaxDOP true service tasks.
+                    // Checking whether there is room for more processing operations is not necessary, 
+                    // but doing so will help us avoid spinning up a task that will go away without 
+                    // launching any processing operation.
+                    return HasRoomForMoreOperations &&
+                           _numberOfOutstandingServiceTasks < _dataflowBlockOptions.ActualMaxDegreeOfParallelism;
+                }
+            }
+        }
+
+        /// <summary>Called when new messages are available to be processed.</summary>
+        /// <param name="repeat">Whether this call is the continuation of a previous message loop.</param>
+        private void ProcessAsyncIfNecessary(bool repeat = false)
+        {
+            Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+            if (HasRoomForMoreServiceTasks)
+            {
+                ProcessAsyncIfNecessary_Slow(repeat);
+            }
+        }
+
+        /// <summary>
+        /// Slow path for ProcessAsyncIfNecessary. 
+        /// Separating out the slow path into its own method makes it more likely that the fast path method will get inlined.
+        /// </summary>
+        [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
+        private void ProcessAsyncIfNecessary_Slow(bool repeat)
+        {
+            Contract.Requires(HasRoomForMoreServiceTasks, "There must be room to process asynchronously.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+            // Determine preconditions to launching a processing task
+            bool messagesAvailableOrPostponed =
+                !_messages.IsEmpty ||
+                (!_decliningPermanently && _boundingState != null && _boundingState.CountIsLessThanBound && _boundingState.PostponedMessages.Count > 0);
+
+            // If all conditions are met, launch away
+            if (messagesAvailableOrPostponed && !CanceledOrFaulted)
+            {
+                // Any book keeping related to the processing task like incrementing the 
+                // DOP counter or eventually recording the tasks reference must be done
+                // before the task starts. That is because the task itself will do the 
+                // reverse operation upon its completion.
+                _numberOfOutstandingOperations++;
+                if (UsesAsyncCompletion) _numberOfOutstandingServiceTasks++;
+
+                var taskForInputProcessing = new Task(thisTargetCore => ((TargetCore<TInput>)thisTargetCore).ProcessMessagesLoopCore(), this,
+                                                      Common.GetCreationOptionsForTask(repeat));
+
+#if FEATURE_TRACING
+                DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+                if (etwLog.IsEnabled())
+                {
+                    etwLog.TaskLaunchedForMessageHandling(
+                        _owningTarget, taskForInputProcessing, DataflowEtwProvider.TaskLaunchedReason.ProcessingInputMessages,
+                        _messages.Count + (_boundingState != null ? _boundingState.PostponedMessages.Count : 0));
+                }
+#endif
+
+                // Start the task handling scheduling exceptions
+                Exception exception = Common.StartTaskSafe(taskForInputProcessing, _dataflowBlockOptions.TaskScheduler);
+                if (exception != null)
+                {
+                    // Get out from under currently held locks. Complete re-acquires the locks it needs.
+                    Task.Factory.StartNew(exc => Complete(exception: (Exception)exc, dropPendingMessages: true, storeExceptionEvenIfAlreadyCompleting: true,
+                                                        unwrapInnerExceptions: false, revertProcessingState: true),
+                                        exception, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+                }
+            }
+        }
+
+        /// <summary>Task body used to process messages.</summary>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private void ProcessMessagesLoopCore()
+        {
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            KeyValuePair<TInput, long> messageWithId = default(KeyValuePair<TInput, long>);
+            try
+            {
+                bool useAsyncCompletion = UsesAsyncCompletion;
+                bool shouldAttemptPostponedTransfer = _boundingState != null && _boundingState.BoundedCapacity > 1;
+                int numberOfMessagesProcessedByThisTask = 0;
+                int numberOfMessagesProcessedSinceTheLastKeepAlive = 0;
+                int maxMessagesPerTask = _dataflowBlockOptions.ActualMaxMessagesPerTask;
+
+                while (numberOfMessagesProcessedByThisTask < maxMessagesPerTask && !CanceledOrFaulted)
+                {
+                    // If we're bounding, try to transfer a message from the postponed queue
+                    // to the input queue.  This enables us to more quickly unblock sources
+                    // sending data to the block (otherwise, no postponed messages will be consumed
+                    // until the input queue is entirely empty).  If the bounded size is 1,
+                    // there's no need to transfer, as attempting to get the next message will
+                    // just go and consume the postponed message anyway, and we'll save
+                    // the extra trip through the _messages queue.
+                    KeyValuePair<TInput, long> transferMessageWithId;
+                    if (shouldAttemptPostponedTransfer &&
+                        TryConsumePostponedMessage(forPostponementTransfer: true, result: out transferMessageWithId))
+                    {
+                        lock (IncomingLock)
+                        {
+                            Debug.Assert(
+                                _boundingState.OutstandingTransfers > 0
+                                && _boundingState.OutstandingTransfers <= _dataflowBlockOptions.ActualMaxDegreeOfParallelism,
+                                "Expected TryConsumePostponedMessage to have incremented the count and for the count to not exceed the DOP.");
+                            _boundingState.OutstandingTransfers--; // was incremented in TryConsumePostponedMessage
+                            _messages.Enqueue(transferMessageWithId);
+                            ProcessAsyncIfNecessary();
+                        }
+                    }
+
+                    if (useAsyncCompletion)
+                    {
+                        // Get the next message if DOP is available.
+                        // If we can't get a message or DOP is not available, bail out.
+                        if (!TryGetNextMessageForNewAsyncOperation(out messageWithId)) break;
+                    }
+                    else
+                    {
+                        // Try to get a message for sequential execution, i.e. without checking DOP availability 
+                        if (!TryGetNextAvailableOrPostponedMessage(out messageWithId))
+                        {
+                            // Try to keep the task alive only if MaxDOP=1
+                            if (_dataflowBlockOptions.MaxDegreeOfParallelism != 1) break;
+
+                            // If this task has processed enough messages without being kept alive, 
+                            // it has served its purpose. Don't keep it alive.
+                            if (numberOfMessagesProcessedSinceTheLastKeepAlive > Common.KEEP_ALIVE_NUMBER_OF_MESSAGES_THRESHOLD) break;
+
+                            // If keep alive is banned, don't attempt it
+                            if (_keepAliveBanCounter > 0)
+                            {
+                                _keepAliveBanCounter--;
+                                break;
+                            }
+
+                            // Reset the keep alive counter. (Keep this line together with TryKeepAliveUntil.)
+                            numberOfMessagesProcessedSinceTheLastKeepAlive = 0;
+
+                            // Try to keep the task alive briefly until a new message arrives
+                            if (!Common.TryKeepAliveUntil(_keepAlivePredicate, this, out messageWithId))
+                            {
+                                // Keep alive was unsuccessful. 
+                                // Therefore ban further attempts temporarily.
+                                _keepAliveBanCounter = Common.KEEP_ALIVE_BAN_COUNT;
+                                break;
+                            }
+                        }
+                    }
+
+                    // We have popped a message from the queue.
+                    // So increment the counter of processed messages.
+                    numberOfMessagesProcessedByThisTask++;
+                    numberOfMessagesProcessedSinceTheLastKeepAlive++;
+
+                    // Invoke the user action
+                    _callAction(messageWithId);
+                }
+            }
+            catch (Exception exc)
+            {
+                Common.StoreDataflowMessageValueIntoExceptionData(exc, messageWithId.Key);
+                Complete(exc, dropPendingMessages: true, storeExceptionEvenIfAlreadyCompleting: true, unwrapInnerExceptions: false);
+            }
+            finally
+            {
+                lock (IncomingLock)
+                {
+                    // We incremented _numberOfOutstandingOperations before we launched this task.
+                    // So we must decremented it before exiting.
+                    // Note that each async task additionally incremented it before starting and 
+                    // is responsible for decrementing it prior to exiting.
+                    Debug.Assert(_numberOfOutstandingOperations > 0, "Expected a positive number of outstanding operations, since we're completing one here.");
+                    _numberOfOutstandingOperations--;
+
+                    // If we are in async mode, we've also incremented _numberOfOutstandingServiceTasks.
+                    // Now it's time to decrement it.
+                    if (UsesAsyncCompletion)
+                    {
+                        Debug.Assert(_numberOfOutstandingServiceTasks > 0, "Expected a positive number of outstanding service tasks, since we're completing one here.");
+                        _numberOfOutstandingServiceTasks--;
+                    }
+
+                    // However, we may have given up early because we hit our own configured
+                    // processing limits rather than because we ran out of work to do.  If that's
+                    // the case, make sure we spin up another task to keep going.
+                    ProcessAsyncIfNecessary(repeat: true);
+
+                    // If, however, we stopped because we ran out of work to do and we
+                    // know we'll never get more, then complete.
+                    CompleteBlockIfPossible();
+                }
+            }
+        }
+
+        /// <summary>Retrieves the next message from the input queue for the useAsyncCompletion mode.</summary>
+        /// <param name="messageWithId">The next message retrieved.</param>
+        /// <returns>true if a message was found and removed; otherwise, false.</returns>
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
+        private bool TryGetNextMessageForNewAsyncOperation(out KeyValuePair<TInput, long> messageWithId)
+        {
+            Contract.Requires(UsesAsyncCompletion, "Only valid to use when in async mode.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            bool parallelismAvailable;
+
+            lock (IncomingLock)
+            {
+                // If we have room for another asynchronous operation, reserve it.
+                // If later it turns out that we had no work to fill the slot, we'll undo the addition.
+                parallelismAvailable = HasRoomForMoreOperations;
+                if (parallelismAvailable) ++_numberOfOutstandingOperations;
+            }
+
+            messageWithId = default(KeyValuePair<TInput, long>);
+            if (parallelismAvailable)
+            {
+                // If a parallelism slot was available, try to get an item.
+                // Be careful, because an exception may be thrown from ConsumeMessage
+                // and we have already incremented _numberOfOutstandingOperations.
+                bool gotMessage = false;
+                try
+                {
+                    gotMessage = TryGetNextAvailableOrPostponedMessage(out messageWithId);
+                }
+                catch
+                {
+                    // We have incremented the counter, but we didn't get a message.
+                    // So we must undo the increment and eventually complete the block.
+                    SignalOneAsyncMessageCompleted();
+
+                    // Re-throw the exception. The processing loop will catch it.
+                    throw;
+                }
+
+                // There may not be an error, but may have still failed to get a message.
+                // So we must undo the increment and eventually complete the block.
+                if (!gotMessage) SignalOneAsyncMessageCompleted();
+
+                return gotMessage;
+            }
+
+            // If there was no parallelism available, we didn't increment _numberOfOutstandingOperations.
+            // So there is nothing to do except to return false.
+            return false;
+        }
+
+        /// <summary>
+        /// Either takes the next available message from the input queue or retrieves a postponed 
+        /// message from a source, based on whether we're in greedy or non-greedy mode.
+        /// </summary>
+        /// <param name="messageWithId">The retrieved item with its Id.</param>
+        /// <returns>true if a message could be removed and returned; otherwise, false.</returns>
+        private bool TryGetNextAvailableOrPostponedMessage(out KeyValuePair<TInput, long> messageWithId)
+        {
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            // First try to get a message from our input buffer.
+            if (_messages.TryDequeue(out messageWithId))
+            {
+                return true;
+            }
+            // If we can't, but if we have any postponed messages due to bounding, then
+            // try to consume one of these postponed messages.
+            // Since we are not currently holding the lock, it is possible that new messages get queued up
+            // by the time we take the lock to manipulate _boundingState. So we have to double-check the
+            // input queue once we take the lock before we consider postponed messages.
+            else if (_boundingState != null && TryConsumePostponedMessage(forPostponementTransfer: false, result: out messageWithId))
+            {
+                return true;
+            }
+            // Otherwise, there's no message available.
+            else
+            {
+                messageWithId = default(KeyValuePair<TInput, long>);
+                return false;
+            }
+        }
+
+        /// <summary>Consumes a single postponed message.</summary>
+        /// <param name="forPostponementTransfer">
+        /// true if the method is being called to consume a message that'll then be stored into the input queue;
+        /// false if the method is being called to consume a message that'll be processed immediately.
+        /// If true, the bounding state's ForcePostponement will be updated.
+        /// If false, the method will first try (while holding the lock) to consume from the input queue before
+        /// consuming a postponed message.
+        /// </param>
+        /// <param name="result">The consumed message.</param>
+        /// <returns>true if a message was consumed; otherwise, false.</returns>
+        private bool TryConsumePostponedMessage(
+            bool forPostponementTransfer,
+            out KeyValuePair<TInput, long> result)
+        {
+            Contract.Requires(
+                _dataflowBlockOptions.BoundedCapacity !=
+                System.Threading.Tasks.Dataflow.DataflowBlockOptions.Unbounded, "Only valid to use when in bounded mode.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+
+            // Iterate until we either consume a message successfully or there are no more postponed messages.
+            bool countIncrementedExpectingToGetItem = false;
+            long messageId = Common.INVALID_REORDERING_ID;
+            while (true)
+            {
+                KeyValuePair<ISourceBlock<TInput>, DataflowMessageHeader> element;
+                lock (IncomingLock)
+                {
+                    // If we are declining permanently, don't consume postponed messages.
+                    if (_decliningPermanently) break;
+
+                    // New messages may have been queued up while we weren't holding the lock.
+                    // In particular, the input queue may have been filled up and messages may have
+                    // gotten postponed. If we process such a postponed message, we would mess up the
+                    // order. Therefore, we have to double-check the input queue first.
+                    if (!forPostponementTransfer && _messages.TryDequeue(out result)) return true;
+
+                    // We can consume a message to process if there's one to process and also if
+                    // if we have logical room within our bound for the message.
+                    if (!_boundingState.CountIsLessThanBound || !_boundingState.PostponedMessages.TryPop(out element))
+                    {
+                        if (countIncrementedExpectingToGetItem)
+                        {
+                            countIncrementedExpectingToGetItem = false;
+                            _boundingState.CurrentCount -= 1;
+                        }
+                        break;
+                    }
+                    if (!countIncrementedExpectingToGetItem)
+                    {
+                        countIncrementedExpectingToGetItem = true;
+                        messageId = _nextAvailableInputMessageId.Value++; // optimistically assign an ID
+                        Debug.Assert(messageId != Common.INVALID_REORDERING_ID, "The assigned message ID is invalid.");
+                        _boundingState.CurrentCount += 1; // optimistically take bounding space
+                        if (forPostponementTransfer)
+                        {
+                            Debug.Assert(_boundingState.OutstandingTransfers >= 0, "Expected TryConsumePostponedMessage to not be negative.");
+                            _boundingState.OutstandingTransfers++; // temporarily force postponement until we've successfully consumed the element
+                        }
+                    }
+                } // Must not call to source while holding lock
+
+                bool consumed;
+                TInput consumedValue = element.Key.ConsumeMessage(element.Value, _owningTarget, out consumed);
+                if (consumed)
+                {
+                    result = new KeyValuePair<TInput, long>(consumedValue, messageId);
+                    return true;
+                }
+                else
+                {
+                    if (forPostponementTransfer)
+                    {
+                        // We didn't consume message so we need to decrement because we havent consumed the element.
+                        _boundingState.OutstandingTransfers--;
+                    }
+                }
+            }
+
+            // We optimistically acquired a message ID for a message that, in the end, we never got.
+            // So, we need to let the reordering buffer (if one exists) know that it should not
+            // expect an item with this ID.  Otherwise, it would stall forever.
+            if (_reorderingBuffer != null && messageId != Common.INVALID_REORDERING_ID) _reorderingBuffer.IgnoreItem(messageId);
+
+            // Similarly, we optimistically increased the bounding count, expecting to get another message in.
+            // Since we didn't, we need to fix the bounding count back to what it should have been.
+            if (countIncrementedExpectingToGetItem) ChangeBoundingCount(-1);
+
+            // Inform the caller that no message could be consumed.
+            result = default(KeyValuePair<TInput, long>);
+            return false;
+        }
+
+        /// <summary>Gets whether the target has had cancellation requested or an exception has occurred.</summary>
+        private bool CanceledOrFaulted
+        {
+            get
+            {
+                return _dataflowBlockOptions.CancellationToken.IsCancellationRequested || Volatile.Read(ref _exceptions) != null;
+            }
+        }
+
+        /// <summary>Completes the block once all completion conditions are met.</summary>
+        private void CompleteBlockIfPossible()
+        {
+            Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+            bool noMoreMessages = _decliningPermanently && _messages.IsEmpty;
+            if (noMoreMessages || CanceledOrFaulted)
+            {
+                CompleteBlockIfPossible_Slow();
+            }
+        }
+
+        /// <summary>
+        /// Slow path for CompleteBlockIfPossible. 
+        /// Separating out the slow path into its own method makes it more likely that the fast path method will get inlined.
+        /// </summary>
+        private void CompleteBlockIfPossible_Slow()
+        {
+            Contract.Requires((_decliningPermanently && _messages.IsEmpty) || CanceledOrFaulted, "There must be no more messages.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: true);
+
+            bool notCurrentlyProcessing = _numberOfOutstandingOperations == 0;
+            if (notCurrentlyProcessing && !_completionReserved)
+            {
+                // Make sure no one else tries to call CompleteBlockOncePossible
+                _completionReserved = true;
+
+                // Make sure the target is declining
+                _decliningPermanently = true;
+
+                // Get out from under currently held locks.  This is to avoid
+                // invoking synchronous continuations off of _completionSource.Task
+                // while holding a lock.
+                Task.Factory.StartNew(state => ((TargetCore<TInput>)state).CompleteBlockOncePossible(),
+                    this, CancellationToken.None, Common.GetCreationOptionsForTask(), TaskScheduler.Default);
+            }
+        }
+
+        /// <summary>
+        /// Completes the block.  This must only be called once, and only once all of the completion conditions are met.
+        /// As such, it must only be called from CompleteBlockIfPossible.
+        /// </summary>
+        private void CompleteBlockOncePossible()
+        {
+            // Since the lock is needed only for the Assert, we do this only in DEBUG mode
+#if DEBUG
+            lock (IncomingLock) Debug.Assert(_numberOfOutstandingOperations == 0, "Everything must be done by now.");
+#endif
+
+            // Release any postponed messages
+            if (_boundingState != null)
+            {
+                // Note: No locks should be held at this point.
+                Common.ReleaseAllPostponedMessages(_owningTarget, _boundingState.PostponedMessages, ref _exceptions);
+            }
+
+            // For good measure and help in preventing leaks, clear out the incoming message queue, 
+            // which may still contain orphaned data if we were canceled or faulted.  However,
+            // we don't reset the bounding count here, as the block as a whole may still be active.
+            KeyValuePair<TInput, long> ignored;
+            IProducerConsumerQueue<KeyValuePair<TInput, long>> messages = _messages;
+            while (messages.TryDequeue(out ignored)) ;
+
+            // If we completed with any unhandled exception, finish in an error state
+            if (Volatile.Read(ref _exceptions) != null)
+            {
+                // It's ok to read _exceptions' content here, because
+                // at this point no more exceptions can be generated and thus no one will
+                // be writing to it.
+                _completionSource.TrySetException(Volatile.Read(ref _exceptions));
+            }
+            // If we completed with cancellation, finish in a canceled state
+            else if (_dataflowBlockOptions.CancellationToken.IsCancellationRequested)
+            {
+                _completionSource.TrySetCanceled();
+            }
+            // Otherwise, finish in a successful state.
+            else
+            {
+                _completionSource.TrySetResult(default(VoidResult));
+            }
+#if FEATURE_TRACING
+            // We only want to do tracing for block completion if this target core represents the whole block.
+            // If it only represents a part of the block (i.e. there's a source associated with it as well),
+            // then we shouldn't log just for the first half of the block; the source half will handle logging.
+            DataflowEtwProvider etwLog;
+            if ((_targetCoreOptions & TargetCoreOptions.RepresentsBlockCompletion) != 0 &&
+                (etwLog = DataflowEtwProvider.Log).IsEnabled())
+            {
+                etwLog.DataflowBlockCompleted(_owningTarget);
+            }
+#endif
+        }
+
+        /// <summary>Gets whether the target core is operating in a bounded mode.</summary>
+        internal bool IsBounded { get { return _boundingState != null; } }
+
+        /// <summary>Increases or decreases the bounding count.</summary>
+        /// <param name="count">The incremental addition (positive to increase, negative to decrease).</param>
+        internal void ChangeBoundingCount(int count)
+        {
+            Contract.Requires(count != 0, "Should only be called when the count is actually changing.");
+            Common.ContractAssertMonitorStatus(IncomingLock, held: false);
+            if (_boundingState != null)
+            {
+                lock (IncomingLock)
+                {
+                    Debug.Assert(count > 0 || (count < 0 && _boundingState.CurrentCount + count >= 0),
+                        "If count is negative, it must not take the total count negative.");
+                    _boundingState.CurrentCount += count;
+                    ProcessAsyncIfNecessary();
+                    CompleteBlockIfPossible();
+                }
+            }
+        }
+
+        /// <summary>Gets the object to display in the debugger display attribute.</summary>
+        [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+        private object DebuggerDisplayContent
+        {
+            get
+            {
+                var displayTarget = _owningTarget as IDebuggerDisplay;
+                return string.Format("Block=\"{0}\"",
+                    displayTarget != null ? displayTarget.Content : _owningTarget);
+            }
+        }
+
+        /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+        internal ExecutionDataflowBlockOptions DataflowBlockOptions { get { return _dataflowBlockOptions; } }
+
+        /// <summary>Gets information about this helper to be used for display in a debugger.</summary>
+        /// <returns>Debugging information about this target.</returns>
+        internal DebuggingInformation GetDebuggingInformation() { return new DebuggingInformation(this); }
+
+        /// <summary>Provides a wrapper for commonly needed debugging information.</summary>
+        internal sealed class DebuggingInformation
+        {
+            /// <summary>The target being viewed.</summary>
+            private readonly TargetCore<TInput> _target;
+
+            /// <summary>Initializes the debugging helper.</summary>
+            /// <param name="target">The target being viewed.</param>
+            internal DebuggingInformation(TargetCore<TInput> target) { _target = target; }
+
+            /// <summary>Gets the number of messages waiting to be processed.</summary>
+            internal int InputCount { get { return _target._messages.Count; } }
+            /// <summary>Gets the messages waiting to be processed.</summary>
+            internal IEnumerable<TInput> InputQueue { get { return _target._messages.Select(kvp => kvp.Key).ToList(); } }
+
+            /// <summary>Gets any postponed messages.</summary>
+            internal QueuedMap<ISourceBlock<TInput>, DataflowMessageHeader> PostponedMessages
+            {
+                get { return _target._boundingState != null ? _target._boundingState.PostponedMessages : null; }
+            }
+
+            /// <summary>Gets the current number of outstanding input processing operations.</summary>
+            internal Int32 CurrentDegreeOfParallelism { get { return _target._numberOfOutstandingOperations - _target._numberOfOutstandingServiceTasks; } }
+
+            /// <summary>Gets the DataflowBlockOptions used to configure this block.</summary>
+            internal ExecutionDataflowBlockOptions DataflowBlockOptions { get { return _target._dataflowBlockOptions; } }
+            /// <summary>Gets whether the block is declining further messages.</summary>
+            internal bool IsDecliningPermanently { get { return _target._decliningPermanently; } }
+            /// <summary>Gets whether the block is completed.</summary>
+            internal bool IsCompleted { get { return _target.Completion.IsCompleted; } }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/TargetRegistry.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/TargetRegistry.cs
new file mode 100644 (file)
index 0000000..ef30353
--- /dev/null
@@ -0,0 +1,418 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+//
+// TargetRegistry.cs
+//
+//
+// A store of registered targets with a target block.
+//
+// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.Contracts;
+using System.Linq;
+
+namespace System.Threading.Tasks.Dataflow.Internal
+{
+    /// <summary>Stores targets registered with a source.</summary>
+    /// <typeparam name="T">Specifies the type of data accepted by the targets.</typeparam>
+    /// <remarks>This type is not thread-safe.</remarks>
+    [DebuggerDisplay("Count={Count}")]
+    [DebuggerTypeProxy(typeof(TargetRegistry<>.DebugView))]
+    internal sealed class TargetRegistry<T>
+    {
+        /// <summary>
+        /// Information about a registered target. This class represents a self-sufficient node in a linked list.
+        /// </summary>
+        internal sealed class LinkedTargetInfo
+        {
+            /// <summary>Initializes the LinkedTargetInfo.</summary>
+            /// <param name="target">The target block reference for this entry.</param>
+            /// <param name="linkOptions">The link options.</param>
+            internal LinkedTargetInfo(ITargetBlock<T> target, DataflowLinkOptions linkOptions)
+            {
+                Contract.Requires(target != null, "The target that is supposed to be linked must not be null.");
+                Contract.Requires(linkOptions != null, "The linkOptions must not be null.");
+
+                Target = target;
+                PropagateCompletion = linkOptions.PropagateCompletion;
+                RemainingMessages = linkOptions.MaxMessages;
+            }
+
+            /// <summary>The target block reference for this entry.</summary>
+            internal readonly ITargetBlock<T> Target;
+            /// <summary>The value of the PropagateCompletion link option.</summary>
+            internal readonly bool PropagateCompletion;
+            /// <summary>Number of remaining messages to propagate. 
+            /// This counter is initialized to the MaxMessages option and 
+            /// gets decremented after each successful propagation.</summary>
+            internal int RemainingMessages;
+            /// <summary>The previous node in the list.</summary>
+            internal LinkedTargetInfo Previous;
+            /// <summary>The next node in the list.</summary>
+            internal LinkedTargetInfo Next;
+        }
+
+        /// <summary>A reference to the owning source block.</summary>
+        private readonly ISourceBlock<T> _owningSource;
+        /// <summary>A mapping of targets to information about them.</summary>
+        private readonly Dictionary<ITargetBlock<T>, LinkedTargetInfo> _targetInformation;
+        /// <summary>The first node of an ordered list of targets. Messages should be offered to targets starting from First and following Next.</summary>
+        private LinkedTargetInfo _firstTarget;
+        /// <summary>The last node of the ordered list of targets. This field is used purely as a perf optimization to avoid traversing the list for each Add.</summary>
+        private LinkedTargetInfo _lastTarget;
+        /// <summary>Number of links with positive RemainingMessages counters.
+        /// This is an optimization that allows us to skip dictionary lookup when this counter is 0.</summary>
+        private int _linksWithRemainingMessages;
+
+        /// <summary>Initializes the registry.</summary>
+        internal TargetRegistry(ISourceBlock<T> owningSource)
+        {
+            Contract.Requires(owningSource != null, "The TargetRegistry instance must be owned by a source block.");
+
+            _owningSource = owningSource;
+            _targetInformation = new Dictionary<ITargetBlock<T>, LinkedTargetInfo>();
+        }
+
+        /// <summary>Adds a target to the registry.</summary>
+        /// <param name="target">The target to add.</param>
+        /// <param name="linkOptions">The link options.</param>
+        internal void Add(ref ITargetBlock<T> target, DataflowLinkOptions linkOptions)
+        {
+            Contract.Requires(target != null, "The target that is supposed to be linked must not be null.");
+            Contract.Requires(linkOptions != null, "The link options must not be null.");
+
+            LinkedTargetInfo targetInfo;
+
+            // If the target already exists in the registry, replace it with a new NopLinkPropagator to maintain uniqueness
+            if (_targetInformation.TryGetValue(target, out targetInfo)) target = new NopLinkPropagator(_owningSource, target);
+
+            // Add the target to both stores, the list and the dictionary, which are used for different purposes
+            var node = new LinkedTargetInfo(target, linkOptions);
+            AddToList(node, linkOptions.Append);
+            _targetInformation.Add(target, node);
+
+            // Increment the optimization counter if needed
+            Debug.Assert(_linksWithRemainingMessages >= 0, "_linksWithRemainingMessages must be non-negative at any time.");
+            if (node.RemainingMessages > 0) _linksWithRemainingMessages++;
+#if FEATURE_TRACING
+            DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+            if (etwLog.IsEnabled())
+            {
+                etwLog.DataflowBlockLinking(_owningSource, target);
+            }
+#endif
+        }
+
+        /// <summary>Gets whether the registry contains a particular target.</summary>
+        /// <param name="target">The target.</param>
+        /// <returns>true if the registry contains the target; otherwise, false.</returns>
+        internal bool Contains(ITargetBlock<T> target)
+        {
+            return _targetInformation.ContainsKey(target);
+        }
+
+        /// <summary>Removes the target from the registry.</summary>
+        /// <param name="target">The target to remove.</param>
+        /// <param name="onlyIfReachedMaxMessages">
+        /// Only remove the target if it's configured to be unlinked after one propagation.
+        /// </param>
+        internal void Remove(ITargetBlock<T> target, bool onlyIfReachedMaxMessages = false)
+        {
+            Contract.Requires(target != null, "Target to remove is required.");
+
+            // If we are implicitly unlinking and there is nothing to be unlinked implicitly, bail
+            Debug.Assert(_linksWithRemainingMessages >= 0, "_linksWithRemainingMessages must be non-negative at any time.");
+            if (onlyIfReachedMaxMessages && _linksWithRemainingMessages == 0) return;
+
+            // Otherwise take the slow path
+            Remove_Slow(target, onlyIfReachedMaxMessages);
+        }
+
+        /// <summary>Actually removes the target from the registry.</summary>
+        /// <param name="target">The target to remove.</param>
+        /// <param name="onlyIfReachedMaxMessages">
+        /// Only remove the target if it's configured to be unlinked after one propagation.
+        /// </param>
+        private void Remove_Slow(ITargetBlock<T> target, bool onlyIfReachedMaxMessages)
+        {
+            Contract.Requires(target != null, "Target to remove is required.");
+
+            // Make sure we've intended to go the slow route
+            Debug.Assert(_linksWithRemainingMessages >= 0, "_linksWithRemainingMessages must be non-negative at any time.");
+            Debug.Assert(!onlyIfReachedMaxMessages || _linksWithRemainingMessages > 0, "We shouldn't have ended on the slow path.");
+
+            // If the target is registered...
+            LinkedTargetInfo node;
+            if (_targetInformation.TryGetValue(target, out node))
+            {
+                Debug.Assert(node != null, "The LinkedTargetInfo node referenced in the Dictionary must be non-null.");
+
+                // Remove the target, if either there's no constraint on the removal
+                // or if this was the last remaining message.
+                if (!onlyIfReachedMaxMessages || node.RemainingMessages == 1)
+                {
+                    RemoveFromList(node);
+                    _targetInformation.Remove(target);
+
+                    // Decrement the optimization counter if needed
+                    if (node.RemainingMessages == 0) _linksWithRemainingMessages--;
+                    Debug.Assert(_linksWithRemainingMessages >= 0, "_linksWithRemainingMessages must be non-negative at any time.");
+#if FEATURE_TRACING
+                    DataflowEtwProvider etwLog = DataflowEtwProvider.Log;
+                    if (etwLog.IsEnabled())
+                    {
+                        etwLog.DataflowBlockUnlinking(_owningSource, target);
+                    }
+#endif
+                }
+                // If the target is to stay and we are counting the remaining messages for this link, decrement the counter
+                else if (node.RemainingMessages > 0)
+                {
+                    Debug.Assert(node.RemainingMessages > 1, "The target should have been removed, because there are no remaining messages.");
+                    node.RemainingMessages--;
+                }
+            }
+        }
+
+        /// <summary>Clears the target registry entry points while allowing subsequent traversals of the linked list.</summary>
+        internal LinkedTargetInfo ClearEntryPoints()
+        {
+            // Save _firstTarget so we can return it
+            LinkedTargetInfo firstTarget = _firstTarget;
+
+            // Clear out the entry points
+            _firstTarget = _lastTarget = null;
+            _targetInformation.Clear();
+            Debug.Assert(_linksWithRemainingMessages >= 0, "_linksWithRemainingMessages must be non-negative at any time.");
+            _linksWithRemainingMessages = 0;
+
+            return firstTarget;
+        }
+
+        /// <summary>Propagated completion to the targets of the given linked list.</summary>
+        /// <param name="firstTarget">The head of a saved linked list.</param>
+        internal void PropagateCompletion(LinkedTargetInfo firstTarget)
+        {
+            Debug.Assert(_owningSource.Completion.IsCompleted, "The owning source must have completed before propagating completion.");
+
+            // Cache the owning source's completion task to avoid calling the getter many times
+            Task owningSourceCompletion = _owningSource.Completion;
+
+            // Propagate completion to those targets that have requested it
+            for (LinkedTargetInfo node = firstTarget; node != null; node = node.Next)
+            {
+                if (node.PropagateCompletion) Common.PropagateCompletion(owningSourceCompletion, node.Target, Common.AsyncExceptionHandler);
+            }
+        }
+
+        /// <summary>Gets the first node of the ordered target list.</summary>
+        internal LinkedTargetInfo FirstTargetNode { get { return _firstTarget; } }
+
+        /// <summary>Adds a LinkedTargetInfo node to the doubly-linked list.</summary>
+        /// <param name="node">The node to be added.</param>
+        /// <param name="append">Whether to append or to prepend the node.</param>
+        internal void AddToList(LinkedTargetInfo node, bool append)
+        {
+            Contract.Requires(node != null, "Requires a node to be added.");
+
+            // If the list is empty, assign the ends to point to the new node and we are done
+            if (_firstTarget == null && _lastTarget == null)
+            {
+                _firstTarget = _lastTarget = node;
+            }
+            else
+            {
+                Debug.Assert(_firstTarget != null && _lastTarget != null, "Both first and last node must either be null or non-null.");
+                Debug.Assert(_lastTarget.Next == null, "The last node must not have a successor.");
+                Debug.Assert(_firstTarget.Previous == null, "The first node must not have a predecessor.");
+
+                if (append)
+                {
+                    // Link the new node to the end of the existing list
+                    node.Previous = _lastTarget;
+                    _lastTarget.Next = node;
+                    _lastTarget = node;
+                }
+                else
+                {
+                    // Link the new node to the front of the existing list
+                    node.Next = _firstTarget;
+                    _firstTarget.Previous = node;
+                    _firstTarget = node;
+                }
+            }
+
+            Debug.Assert(_firstTarget != null && _lastTarget != null, "Both first and last node must be non-null after AddToList.");
+        }
+
+        /// <summary>Removes the LinkedTargetInfo node from the doubly-linked list.</summary>
+        /// <param name="node">The node to be removed.</param>
+        internal void RemoveFromList(LinkedTargetInfo node)
+        {
+            Contract.Requires(node != null, "Node to remove is required.");
+            Debug.Assert(_firstTarget != null && _lastTarget != null, "Both first and last node must be non-null before RemoveFromList.");
+
+            LinkedTargetInfo previous = node.Previous;
+            LinkedTargetInfo next = node.Next;
+
+            // Remove the node by linking the adjacent nodes
+            if (node.Previous != null)
+            {
+                node.Previous.Next = next;
+                node.Previous = null;
+            }
+
+            if (node.Next != null)
+            {
+                node.Next.Previous = previous;
+                node.Next = null;
+            }
+
+            // Adjust the list ends
+            if (_firstTarget == node) _firstTarget = next;
+            if (_lastTarget == node) _lastTarget = previous;
+
+            Debug.Assert((_firstTarget != null) == (_lastTarget != null), "Both first and last node must either be null or non-null after RemoveFromList.");
+        }
+
+        /// <summary>Gets the number of items in the registry.</summary>
+        private int Count { get { return _targetInformation.Count; } }
+
+        /// <summary>Converts the linked list of targets to an array for rendering in a debugger.</summary>
+        private ITargetBlock<T>[] TargetsForDebugger
+        {
+            get
+            {
+                var targets = new ITargetBlock<T>[Count];
+                int i = 0;
+                for (LinkedTargetInfo node = _firstTarget; node != null; node = node.Next)
+                {
+                    targets[i++] = node.Target;
+                }
+
+                return targets;
+            }
+        }
+
+
+
+        /// <summary>Provides a nop passthrough for use with TargetRegistry.</summary>
+        [DebuggerDisplay("{DebuggerDisplayContent,nq}")]
+        [DebuggerTypeProxy(typeof(TargetRegistry<>.NopLinkPropagator.DebugView))]
+        private sealed class NopLinkPropagator : IPropagatorBlock<T, T>, ISourceBlock<T>, IDebuggerDisplay
+        {
+            /// <summary>The source that encapsulates this block.</summary>
+            private readonly ISourceBlock<T> _owningSource;
+            /// <summary>The target with which this block is associated.</summary>
+            private readonly ITargetBlock<T> _target;
+
+            /// <summary>Initializes the passthrough.</summary>
+            /// <param name="owningSource">The source that encapsulates this block.</param>
+            /// <param name="target">The target to which messages should be forwarded.</param>
+            internal NopLinkPropagator(ISourceBlock<T> owningSource, ITargetBlock<T> target)
+            {
+                Contract.Requires(owningSource != null, "Propagator must be associated with a source.");
+                Contract.Requires(target != null, "Target to propagate to is required.");
+
+                // Store the arguments
+                _owningSource = owningSource;
+                _target = target;
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Targets/Member[@name="OfferMessage"]/*' />
+            DataflowMessageStatus ITargetBlock<T>.OfferMessage(DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source, Boolean consumeToAccept)
+            {
+                Debug.Assert(source == _owningSource, "Only valid to be used with the source for which it was created.");
+                return _target.OfferMessage(messageHeader, messageValue, this, consumeToAccept);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ConsumeMessage"]/*' />
+            T ISourceBlock<T>.ConsumeMessage(DataflowMessageHeader messageHeader, ITargetBlock<T> target, out Boolean messageConsumed)
+            {
+                return _owningSource.ConsumeMessage(messageHeader, this, out messageConsumed);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReserveMessage"]/*' />
+            bool ISourceBlock<T>.ReserveMessage(DataflowMessageHeader messageHeader, ITargetBlock<T> target)
+            {
+                return _owningSource.ReserveMessage(messageHeader, this);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="ReleaseReservation"]/*' />
+            void ISourceBlock<T>.ReleaseReservation(DataflowMessageHeader messageHeader, ITargetBlock<T> target)
+            {
+                _owningSource.ReleaseReservation(messageHeader, this);
+            }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Completion"]/*' />
+            Task IDataflowBlock.Completion { get { return _owningSource.Completion; } }
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Complete"]/*' />
+            void IDataflowBlock.Complete() { _target.Complete(); }
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Blocks/Member[@name="Fault"]/*' />
+            void IDataflowBlock.Fault(Exception exception) { _target.Fault(exception); }
+
+            /// <include file='XmlDocs/CommonXmlDocComments.xml' path='CommonXmlDocComments/Sources/Member[@name="LinkTo"]/*' />
+            IDisposable ISourceBlock<T>.LinkTo(ITargetBlock<T> target, DataflowLinkOptions linkOptions) { throw new NotSupportedException(SR.NotSupported_MemberNotNeeded); }
+
+            /// <summary>The data to display in the debugger display attribute.</summary>
+            [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
+            private object DebuggerDisplayContent
+            {
+                get
+                {
+                    var displaySource = _owningSource as IDebuggerDisplay;
+                    var displayTarget = _target as IDebuggerDisplay;
+                    return string.Format("{0} Source=\"{1}\", Target=\"{2}\"",
+                        Common.GetNameForDebugger(this),
+                        displaySource != null ? displaySource.Content : _owningSource,
+                        displayTarget != null ? displayTarget.Content : _target);
+                }
+            }
+            /// <summary>Gets the data to display in the debugger display attribute for this instance.</summary>
+            object IDebuggerDisplay.Content { get { return DebuggerDisplayContent; } }
+
+            /// <summary>Provides a debugger type proxy for a passthrough.</summary>
+            private sealed class DebugView
+            {
+                /// <summary>The passthrough.</summary>
+                private readonly NopLinkPropagator _passthrough;
+
+                /// <summary>Initializes the debug view.</summary>
+                /// <param name="passthrough">The passthrough to view.</param>
+                public DebugView(NopLinkPropagator passthrough)
+                {
+                    Contract.Requires(passthrough != null, "Need a propagator with which to construct the debug view.");
+                    _passthrough = passthrough;
+                }
+
+                /// <summary>The linked target for this block.</summary>
+                public ITargetBlock<T> LinkedTarget { get { return _passthrough._target; } }
+            }
+        }
+
+
+        /// <summary>Provides a debugger type proxy for the target registry.</summary>
+        private sealed class DebugView
+        {
+            /// <summary>The registry being debugged.</summary>
+            private readonly TargetRegistry<T> _registry;
+
+            /// <summary>Initializes the type proxy.</summary>
+            /// <param name="registry">The target registry.</param>
+            public DebugView(TargetRegistry<T> registry)
+            {
+                Contract.Requires(registry != null, "Need a registry with which to construct the debug view.");
+                _registry = registry;
+            }
+
+            /// <summary>Gets a list of all targets to show in the debugger.</summary>
+            [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+            public ITargetBlock<T>[] Targets { get { return _registry.TargetsForDebugger; } }
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/Threading.cs b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Internal/Threading.cs
new file mode 100644 (file)
index 0000000..aa65a58
--- /dev/null
@@ -0,0 +1,52 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace System.Threading.Tasks.Dataflow.Internal.Threading
+{
+    internal delegate void TimerCallback(object state);
+
+    internal sealed class Timer : CancellationTokenSource, IDisposable
+    {
+        internal Timer(TimerCallback callback, object state, int dueTime, int period)
+        {
+            Debug.Assert(period == -1, "This stub implementation only supports dueTime.");
+            Task.Delay(dueTime, Token).ContinueWith((t, s) =>
+            {
+                var tuple = (Tuple<TimerCallback, object>)s;
+                tuple.Item1(tuple.Item2);
+            }, Tuple.Create(callback, state), CancellationToken.None,
+                TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.OnlyOnRanToCompletion,
+                TaskScheduler.Default);
+        }
+
+        public new void Dispose() { base.Cancel(); }
+    }
+
+    internal sealed class Thread
+    {
+        internal static bool Yield() { return true; }
+    }
+
+    internal delegate void WaitCallback(object state);
+
+    internal sealed class ThreadPool
+    {
+        private static readonly SynchronizationContext _ctx = new SynchronizationContext();
+
+        internal static void QueueUserWorkItem(WaitCallback callback, object state)
+        {
+            _ctx.Post(s =>
+            {
+                var tuple = (Tuple<WaitCallback, object>)s;
+                tuple.Item1(tuple.Item2);
+            }, Tuple.Create(callback, state));
+        }
+    }
+}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Resources/Strings.resx b/mcs/class/System.Threading.Tasks.Dataflow/CoreFxSources/Resources/Strings.resx
new file mode 100644 (file)
index 0000000..4e0b7be
--- /dev/null
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="ArgumentOutOfRange_BatchSizeMustBeNoGreaterThanBoundedCapacity" xml:space="preserve">
+    <value>Number must be no greater than the value specified in BoundedCapacity.</value>
+  </data>
+  <data name="ArgumentOutOfRange_GenericPositive" xml:space="preserve">
+    <value>Number must be positive.</value>
+  </data>
+  <data name="ArgumentOutOfRange_NeedNonNegOrNegative1" xml:space="preserve">
+    <value>Number must be either non-negative and less than or equal to Int32.MaxValue or -1</value>
+  </data>
+  <data name="Argument_BoundedCapacityNotSupported" xml:space="preserve">
+    <value>BoundedCapacity must be Unbounded or -1 for this dataflow block.</value>
+  </data>
+  <data name="Argument_CantConsumeFromANullSource" xml:space="preserve">
+    <value>The argument must be false if no source from which to consume is specified.</value>
+  </data>
+  <data name="Argument_InvalidMessageHeader" xml:space="preserve">
+    <value>The DataflowMessageHeader instance does not represent a valid message header.</value>
+  </data>
+  <data name="Argument_InvalidMessageId" xml:space="preserve">
+    <value>To construct a DataflowMessageHeader instance, either pass a non-zero value or use the parameterless constructor.</value>
+  </data>
+  <data name="Argument_InvalidSourceForFilteredLink" xml:space="preserve">
+    <value>This block must only be used with the source from which it was created.</value>
+  </data>
+  <data name="Argument_NonGreedyNotSupported" xml:space="preserve">
+    <value>Greedy must be true for this dataflow block.</value>
+  </data>
+  <data name="event_DataflowBlockCompleted" xml:space="preserve">
+    <value>Block {0} completed as {1}. {2}</value>
+  </data>
+  <data name="event_DataflowBlockCreated" xml:space="preserve">
+    <value>Block of type {0} instantiated with Id {1}.</value>
+  </data>
+  <data name="event_DataflowBlockLinking" xml:space="preserve">
+    <value>Source {0} linked to target {1}.</value>
+  </data>
+  <data name="event_DataflowBlockUnlinking" xml:space="preserve">
+    <value>Source {0} unlinked from target {1}.</value>
+  </data>
+  <data name="event_TaskLaunchedForMessageHandling" xml:space="preserve">
+    <value>{1} task launched from block {0} with {2} message(s) pending.</value>
+  </data>
+  <data name="InvalidOperation_DataNotAvailableForReceive" xml:space="preserve">
+    <value>The source completed without providing data to receive.</value>
+  </data>
+  <data name="InvalidOperation_FailedToConsumeReservedMessage" xml:space="preserve">
+    <value>The target block failed to consume a message it had successfully reserved.</value>
+  </data>
+  <data name="InvalidOperation_MessageNotReservedByTarget" xml:space="preserve">
+    <value>The target does not have the message reserved.</value>
+  </data>
+  <data name="NotSupported_MemberNotNeeded" xml:space="preserve">
+    <value>This member is not supported on this dataflow block. The block is intended for a specific purpose that does not utilize this member.</value>
+  </data>
+  <data name="ConcurrentCollection_SyncRoot_NotSupported" xml:space="preserve">
+    <value>The SyncRoot property may not be used for the synchronization of concurrent collections.</value>
+  </data>
+</root>
\ No newline at end of file
index 83bdafab3cc7ceb6d65eb32e864ef8396b53ded5..349e5c75754d6e3996c58e5041b9253198c7b489 100644 (file)
@@ -7,7 +7,8 @@ LIBRARY = System.Threading.Tasks.Dataflow.dll
 include ../../build/library.make
 
 LIB_REFS += System.Core System
-LIB_MCS_FLAGS += -r:$(corlib)
+LIB_MCS_FLAGS += -r:$(corlib) -d:CONCURRENT_COLLECTIONS
 
 TEST_MCS_FLAGS = -r:System.Core.dll -r:System.dll
 
+EXTRA_DISTFILES=README.md
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/README.md b/mcs/class/System.Threading.Tasks.Dataflow/README.md
new file mode 100644 (file)
index 0000000..aa7e41f
--- /dev/null
@@ -0,0 +1,6 @@
+The CoreFxSources folder contains the implementation taken from MS CoreFx
+repository at 905a1940bcda0afdca2f14ceb2b0161ebc4d1d02.
+
+While we'd ideally not ship this assembly at all with Mono (it doesn't ship
+with .NET Framework, there's only as a NuGet package), we shipped it in
+the past and as such people might rely on it so we can't remove it.
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/SR.cs b/mcs/class/System.Threading.Tasks.Dataflow/SR.cs
new file mode 100644 (file)
index 0000000..7113138
--- /dev/null
@@ -0,0 +1,27 @@
+//
+// Resource strings referenced by the code.
+//
+// Copyright 2015 Xamarin Inc
+//
+// Use the following script to extract strings from CoreFxSources/Resources/Strings.resx
+//
+// var d = XDocument.Load ("Strings.resx");
+// foreach (var j in d.XPathSelectElements ("/root/data")){ var v = j.XPathSelectElement ("value"); Console.WriteLine ("\tpublic const string {0}=\"{1}\";", j.Attribute ("name").Value, v.Value); }
+//
+partial class SR
+{
+       public const string ArgumentOutOfRange_BatchSizeMustBeNoGreaterThanBoundedCapacity="Number must be no greater than the value specified in BoundedCapacity.";
+       public const string ArgumentOutOfRange_GenericPositive="Number must be positive.";
+       public const string ArgumentOutOfRange_NeedNonNegOrNegative1="Number must be either non-negative and less than or equal to Int32.MaxValue or -1";
+       public const string Argument_BoundedCapacityNotSupported="BoundedCapacity must be Unbounded or -1 for this dataflow block.";
+       public const string Argument_CantConsumeFromANullSource="The argument must be false if no source from which to consume is specified.";
+       public const string Argument_InvalidMessageHeader="The DataflowMessageHeader instance does not represent a valid message header.";
+       public const string Argument_InvalidMessageId="To construct a DataflowMessageHeader instance, either pass a non-zero value or use the parameterless constructor.";
+       public const string Argument_InvalidSourceForFilteredLink="This block must only be used with the source from which it was created.";
+       public const string Argument_NonGreedyNotSupported="Greedy must be true for this dataflow block.";
+       public const string InvalidOperation_DataNotAvailableForReceive="The source completed without providing data to receive.";
+       public const string InvalidOperation_FailedToConsumeReservedMessage="The target block failed to consume a message it had successfully reserved.";
+       public const string InvalidOperation_MessageNotReservedByTarget="The target does not have the message reserved.";
+       public const string NotSupported_MemberNotNeeded="This member is not supported on this dataflow block. The block is intended for a specific purpose that does not utilize this member.";
+       public const string ConcurrentCollection_SyncRoot_NotSupported="The SyncRoot property may not be used for the synchronization of concurrent collections.";
+}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-net_4_5.csproj b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-net_4_5.csproj
deleted file mode 100644 (file)
index 3ab5713..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{19831BAF-44E6-4F3E-B46E-B1BD09398232}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Threading.Tasks.Dataflow</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\Mono.Parallel\Mono.Threading\AtomicBoolean.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ActionBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\AsyncExecutingMessageBox.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\BatchBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\BatchedJoinBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\BatchedJoinBlock`3.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\BroadcastBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\BroadcastOutgoingQueue.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\BufferBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ChooserBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\CompletionHelper.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\DataflowBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\DataflowBlockOptions.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\DataflowLinkOptions.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\DataflowMessageHeader.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\DataflowMessageStatus.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ExecutingMessageBox.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ExecutingMessageBoxBase.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ExecutionDataflowBlockOptions.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\GroupingDataflowBlockOptions.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\IDataflowBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\IPropagatorBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\IReceivableSourceBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ISourceBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ITargetBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\JoinBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\JoinBlock`3.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\JoinTarget.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\MessageBox.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\NameHelper.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\NullTargetBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ObservableDataflowBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ObserverDataflowBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\OutgoingQueue.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\OutgoingQueueBase.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\OutputAvailableBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\PassingMessageBox.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\PredicateBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\PropagatorWrapperBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ReceiveBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\SendBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\TargetCollection.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\TransformBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\TransformManyBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\WriteOnceBlock.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index d32383802fdfe280315dd6fdcb8d074a02a0125a..8a3a31b9e5e45bb65bedab0cb05a1a1e98af92b3 100644 (file)
@@ -25,7 +25,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
+    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONCURRENT_COLLECTIONS</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -33,7 +33,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE</DefineConstants>\r
+    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONCURRENT_COLLECTIONS</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\Mono.Parallel\Mono.Threading\AtomicBoolean.cs" />\r
+    <Compile Include="..\..\build\common\SR.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ActionBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\AsyncExecutingMessageBox.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\BatchBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\BatchedJoinBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\BatchedJoinBlock`3.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\BroadcastBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\BroadcastOutgoingQueue.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\BufferBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ChooserBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\CompletionHelper.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\DataflowBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\DataflowBlockOptions.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\DataflowLinkOptions.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\DataflowMessageHeader.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\DataflowMessageStatus.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ExecutingMessageBox.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ExecutingMessageBoxBase.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ExecutionDataflowBlockOptions.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\GroupingDataflowBlockOptions.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\IDataflowBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\IPropagatorBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\IReceivableSourceBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ISourceBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ITargetBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\JoinBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\JoinBlock`3.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\JoinTarget.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\MessageBox.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\NameHelper.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\NullTargetBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ObservableDataflowBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ObserverDataflowBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\OutgoingQueue.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\OutgoingQueueBase.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\OutputAvailableBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\PassingMessageBox.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\PredicateBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\PropagatorWrapperBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\ReceiveBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\SendBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\TargetCollection.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\TransformBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\TransformManyBlock.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\WriteOnceBlock.cs" />\r  </ItemGroup>\r
+    <Compile Include="CoreFxSources\Base\DataflowBlock.cs" />\r
+    <Compile Include="CoreFxSources\Base\DataflowBlockOptions.cs" />\r
+    <Compile Include="CoreFxSources\Base\DataflowLinkOptions.cs" />\r
+    <Compile Include="CoreFxSources\Base\DataflowMessageHeader.cs" />\r
+    <Compile Include="CoreFxSources\Base\DataflowMessageStatus.cs" />\r
+    <Compile Include="CoreFxSources\Base\IDataflowBlock.cs" />\r
+    <Compile Include="CoreFxSources\Base\IPropagatorBlock.cs" />\r
+    <Compile Include="CoreFxSources\Base\IReceivableSourceBlock.cs" />\r
+    <Compile Include="CoreFxSources\Base\ISourceBlock.cs" />\r
+    <Compile Include="CoreFxSources\Base\ITargetBlock.cs" />\r
+    <Compile Include="CoreFxSources\Blocks\ActionBlock.cs" />\r
+    <Compile Include="CoreFxSources\Blocks\BatchBlock.cs" />\r
+    <Compile Include="CoreFxSources\Blocks\BatchedJoinBlock.cs" />\r
+    <Compile Include="CoreFxSources\Blocks\BroadcastBlock.cs" />\r
+    <Compile Include="CoreFxSources\Blocks\BufferBlock.cs" />\r
+    <Compile Include="CoreFxSources\Blocks\JoinBlock.cs" />\r
+    <Compile Include="CoreFxSources\Blocks\TransformBlock.cs" />\r
+    <Compile Include="CoreFxSources\Blocks\TransformManyBlock.cs" />\r
+    <Compile Include="CoreFxSources\Blocks\WriteOnceBlock.cs" />\r
+    <Compile Include="CoreFxSources\Internal\ActionOnDispose.cs" />\r
+    <Compile Include="CoreFxSources\Internal\Common.cs" />\r
+    <Compile Include="CoreFxSources\Internal\EnumerableDebugView.cs" />\r
+    <Compile Include="CoreFxSources\Internal\IDebuggerDisplay.cs" />\r
+    <Compile Include="CoreFxSources\Internal\ImmutableList.cs" />\r
+    <Compile Include="CoreFxSources\Internal\Padding.cs" />\r
+    <Compile Include="CoreFxSources\Internal\ProducerConsumerQueues.cs" />\r
+    <Compile Include="CoreFxSources\Internal\QueuedMap.cs" />\r
+    <Compile Include="CoreFxSources\Internal\ReorderingBuffer.cs" />\r
+    <Compile Include="CoreFxSources\Internal\SourceCore.cs" />\r
+    <Compile Include="CoreFxSources\Internal\SpscTargetCore.cs" />\r
+    <Compile Include="CoreFxSources\Internal\TargetCore.cs" />\r
+    <Compile Include="CoreFxSources\Internal\TargetRegistry.cs" />\r
+    <Compile Include="CoreFxSources\Internal\Threading.cs" />\r
+    <Compile Include="SR.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-tests-net_4_5.csproj b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 72129b6..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3EE40B63-F51F-45BE-A86B-76546F4ED3D7}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Threading.Tasks.Dataflow-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Threading.Tasks.Dataflow_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
-    <Compile Include="System.Threading.Tasks.Dataflow\CompletionHelper.cs" />\r
-    <Compile Include="Test\AssertEx.cs" />\r
-    <Compile Include="Test\Blocks.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\ActionBlockTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\BatchBlockTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\BatchedJoinBlock`3Test.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\BatchedJoinBlockTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\BoundedCapacityTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\BroadcastBlockTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\BufferBlockTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\ChooseTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\CompletionHelperTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\CompletionTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\DataflowBlockTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\DataflowMessageHeaderTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\EncapsulateTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\ExecutionBlocksTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\GreedyTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\InvalidArgumentsTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\JoinBlock`3Test.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\JoinBlockTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\OptionsTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\OutputAvailableTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\PropagateCompletionTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\ReceivingTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\TransformBlockTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\TransformManyBlockTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks.Dataflow\WriteOnceBlockTest.cs" />\r
-    <Compile Include="Test\TestScheduler.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-net_4_5.csproj">\r
-      <Project>{19831BAF-44E6-4F3E-B46E-B1BD09398232}</Project>\r
-      <Name>System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 3c479dc8737415afdf5de744e1432ef284539834..c2437d0f8fe66ab8363fa6d438fed25a55ac80b8 100644 (file)
@@ -1,49 +1,39 @@
 ../../build/common/Consts.cs
 ../../build/common/Locale.cs
 ../../build/common/MonoTODOAttribute.cs
+../../build/common/SR.cs
+SR.cs
 Assembly/AssemblyInfo.cs
-System.Threading.Tasks.Dataflow/ExecutingMessageBox.cs
-System.Threading.Tasks.Dataflow/DataflowBlockOptions.cs
-System.Threading.Tasks.Dataflow/DataflowMessageHeader.cs
-System.Threading.Tasks.Dataflow/DataflowMessageStatus.cs
-System.Threading.Tasks.Dataflow/ExecutionDataflowBlockOptions.cs
-System.Threading.Tasks.Dataflow/GroupingDataflowBlockOptions.cs
-System.Threading.Tasks.Dataflow/DataflowLinkOptions.cs
-System.Threading.Tasks.Dataflow/IDataflowBlock.cs
-System.Threading.Tasks.Dataflow/IPropagatorBlock.cs
-System.Threading.Tasks.Dataflow/IReceivableSourceBlock.cs
-System.Threading.Tasks.Dataflow/ISourceBlock.cs
-System.Threading.Tasks.Dataflow/ITargetBlock.cs
-System.Threading.Tasks.Dataflow/CompletionHelper.cs
-System.Threading.Tasks.Dataflow/MessageBox.cs
-System.Threading.Tasks.Dataflow/OutgoingQueueBase.cs
-System.Threading.Tasks.Dataflow/OutgoingQueue.cs
-System.Threading.Tasks.Dataflow/BroadcastOutgoingQueue.cs
-System.Threading.Tasks.Dataflow/PassingMessageBox.cs
-System.Threading.Tasks.Dataflow/NameHelper.cs
-System.Threading.Tasks.Dataflow/TargetCollection.cs
-System.Threading.Tasks.Dataflow/JoinTarget.cs
-../Mono.Parallel/Mono.Threading/AtomicBoolean.cs
-System.Threading.Tasks.Dataflow/ActionBlock.cs
-System.Threading.Tasks.Dataflow/BatchBlock.cs
-System.Threading.Tasks.Dataflow/BatchedJoinBlock.cs
-System.Threading.Tasks.Dataflow/BatchedJoinBlock`3.cs
-System.Threading.Tasks.Dataflow/BroadcastBlock.cs
-System.Threading.Tasks.Dataflow/BufferBlock.cs
-System.Threading.Tasks.Dataflow/ChooserBlock.cs
-System.Threading.Tasks.Dataflow/DataflowBlock.cs
-System.Threading.Tasks.Dataflow/JoinBlock.cs
-System.Threading.Tasks.Dataflow/JoinBlock`3.cs
-System.Threading.Tasks.Dataflow/ObservableDataflowBlock.cs
-System.Threading.Tasks.Dataflow/ObserverDataflowBlock.cs
-System.Threading.Tasks.Dataflow/PropagatorWrapperBlock.cs
-System.Threading.Tasks.Dataflow/ReceiveBlock.cs
-System.Threading.Tasks.Dataflow/TransformBlock.cs
-System.Threading.Tasks.Dataflow/TransformManyBlock.cs
-System.Threading.Tasks.Dataflow/WriteOnceBlock.cs
-System.Threading.Tasks.Dataflow/SendBlock.cs
-System.Threading.Tasks.Dataflow/PredicateBlock.cs
-System.Threading.Tasks.Dataflow/OutputAvailableBlock.cs
-System.Threading.Tasks.Dataflow/NullTargetBlock.cs
-System.Threading.Tasks.Dataflow/AsyncExecutingMessageBox.cs
-System.Threading.Tasks.Dataflow/ExecutingMessageBoxBase.cs
+CoreFxSources/Base/DataflowBlock.cs
+CoreFxSources/Base/DataflowBlockOptions.cs
+CoreFxSources/Base/DataflowLinkOptions.cs
+CoreFxSources/Base/DataflowMessageHeader.cs
+CoreFxSources/Base/DataflowMessageStatus.cs
+CoreFxSources/Base/IDataflowBlock.cs
+CoreFxSources/Base/IPropagatorBlock.cs
+CoreFxSources/Base/IReceivableSourceBlock.cs
+CoreFxSources/Base/ISourceBlock.cs
+CoreFxSources/Base/ITargetBlock.cs
+CoreFxSources/Blocks/ActionBlock.cs
+CoreFxSources/Blocks/BatchBlock.cs
+CoreFxSources/Blocks/BatchedJoinBlock.cs
+CoreFxSources/Blocks/BroadcastBlock.cs
+CoreFxSources/Blocks/BufferBlock.cs
+CoreFxSources/Blocks/JoinBlock.cs
+CoreFxSources/Blocks/TransformBlock.cs
+CoreFxSources/Blocks/TransformManyBlock.cs
+CoreFxSources/Blocks/WriteOnceBlock.cs
+CoreFxSources/Internal/ActionOnDispose.cs
+CoreFxSources/Internal/Common.cs
+CoreFxSources/Internal/EnumerableDebugView.cs
+CoreFxSources/Internal/IDebuggerDisplay.cs
+CoreFxSources/Internal/ImmutableList.cs
+CoreFxSources/Internal/Padding.cs
+CoreFxSources/Internal/ProducerConsumerQueues.cs
+CoreFxSources/Internal/QueuedMap.cs
+CoreFxSources/Internal/ReorderingBuffer.cs
+CoreFxSources/Internal/SourceCore.cs
+CoreFxSources/Internal/SpscTargetCore.cs
+CoreFxSources/Internal/TargetCore.cs
+CoreFxSources/Internal/TargetRegistry.cs
+CoreFxSources/Internal/Threading.cs
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ActionBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ActionBlock.cs
deleted file mode 100644 (file)
index 1b8455c..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-// ActionBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       public sealed class ActionBlock<TInput> : ITargetBlock<TInput> {
-               readonly CompletionHelper compHelper;
-               readonly BlockingCollection<TInput> messageQueue = new BlockingCollection<TInput> ();
-               readonly ExecutingMessageBoxBase<TInput> messageBox;
-               readonly Action<TInput> action;
-               readonly Func<TInput, Task> asyncAction;
-               readonly ExecutionDataflowBlockOptions dataflowBlockOptions;
-
-               ActionBlock (ExecutionDataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-
-                       this.dataflowBlockOptions = dataflowBlockOptions;
-                       this.compHelper = new CompletionHelper (dataflowBlockOptions);
-               }
-
-               public ActionBlock (Action<TInput> action)
-                       : this (action, ExecutionDataflowBlockOptions.Default)
-               {
-               }
-
-               public ActionBlock (Action<TInput> action,
-                                   ExecutionDataflowBlockOptions dataflowBlockOptions)
-                       : this (dataflowBlockOptions)
-               {
-                       if (action == null)
-                               throw new ArgumentNullException ("action");
-
-                       this.action = action;
-                       this.messageBox = new ExecutingMessageBox<TInput> (this, messageQueue, compHelper,
-                               () => true, ProcessItem, () => { }, dataflowBlockOptions);
-               }
-
-               public ActionBlock (Func<TInput, Task> action)
-                       : this (action, ExecutionDataflowBlockOptions.Default)
-               {
-               }
-
-               public ActionBlock (Func<TInput, Task> action,
-                                   ExecutionDataflowBlockOptions dataflowBlockOptions)
-                       : this (dataflowBlockOptions)
-               {
-                       if (action == null)
-                               throw new ArgumentNullException ("action");
-
-                       this.asyncAction = action;
-                       this.messageBox = new AsyncExecutingMessageBox<TInput, Task> (
-                               this, messageQueue, compHelper, () => true, AsyncProcessItem, null,
-                               () => { }, dataflowBlockOptions);
-               }
-
-               DataflowMessageStatus ITargetBlock<TInput>.OfferMessage (
-                       DataflowMessageHeader messageHeader, TInput messageValue,
-                       ISourceBlock<TInput> source, bool consumeToAccept)
-               {
-                       return messageBox.OfferMessage (
-                               messageHeader, messageValue, source, consumeToAccept);
-               }
-
-               public bool Post (TInput item)
-               {
-                       return messageBox.OfferMessage (
-                               new DataflowMessageHeader (1), item, null, false)
-                              == DataflowMessageStatus.Accepted;
-               }
-
-               /// <summary>
-               /// Processes one item from the queue if the action is synchronous.
-               /// </summary>
-               /// <returns>Returns whether an item was processed. Returns <c>false</c> if the queue is empty.</returns>
-               bool ProcessItem ()
-               {
-                       TInput data;
-                       bool dequeued = messageQueue.TryTake (out data);
-                       if (dequeued)
-                               action (data);
-                       return dequeued;
-               }
-
-               /// <summary>
-               /// Processes one item from the queue if the action is asynchronous.
-               /// </summary>
-               /// <param name="task">The Task that was returned by the synchronous part of the action.</param>
-               /// <returns>Returns whether an item was processed. Returns <c>false</c> if the queue was empty.</returns>
-               bool AsyncProcessItem(out Task task)
-               {
-                       TInput data;
-                       bool dequeued = messageQueue.TryTake (out data);
-                       if (dequeued)
-                               task = asyncAction (data);
-                       else
-                               task = null;
-                       return dequeued;
-               }
-
-               public void Complete ()
-               {
-                       messageBox.Complete ();
-               }
-
-               void IDataflowBlock.Fault (Exception exception)
-               {
-                       compHelper.RequestFault (exception);
-               }
-
-               public Task Completion {
-                       get {
-                               return compHelper.Completion;
-                       }
-               }
-
-               public int InputCount {
-                       get {
-                               return messageQueue.Count;
-                       }
-               }
-
-               public override string ToString ()
-               {
-                       return NameHelper.GetName (this, dataflowBlockOptions);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/AsyncExecutingMessageBox.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/AsyncExecutingMessageBox.cs
deleted file mode 100644 (file)
index 3cf41c3..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-// AsyncExecutingMessageBox.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Message box for executing blocks with asynchrnous
-       /// (<see cref="Task"/>-returning) actions.
-       /// </summary>
-       /// <typeparam name="TInput">Type of the item the block is processing.</typeparam>
-       /// <typeparam name="TTask">Type of the Task the action is returning.</typeparam>
-       class AsyncExecutingMessageBox<TInput, TTask>
-               : ExecutingMessageBoxBase<TInput>
-               where TTask : Task {
-               /// <summary>
-               /// Represents executing synchrnous part of the action.
-               /// </summary>
-               /// <param name="task">The Task that was returned by the synchronous part of the action.</param>
-               /// <returns>Returns whether an item was processed. Returns <c>false</c> if the queue was empty.</returns>
-               public delegate bool AsyncProcessItem (out TTask task);
-
-               readonly AsyncProcessItem processItem;
-               readonly Action<TTask> processFinishedTask;
-
-               public AsyncExecutingMessageBox (
-                       ITargetBlock<TInput> target, BlockingCollection<TInput> messageQueue,
-                       CompletionHelper compHelper, Func<bool> externalCompleteTester,
-                       AsyncProcessItem processItem, Action<TTask> processFinishedTask,
-                       Action outgoingQueueComplete, ExecutionDataflowBlockOptions options)
-                       : base (
-                               target, messageQueue, compHelper, externalCompleteTester,
-                               outgoingQueueComplete, options)
-               {
-                       this.processItem = processItem;
-                       this.processFinishedTask = processFinishedTask;
-               }
-
-               /// <summary>
-               /// Processes the input queue of the block.
-               /// </summary>
-               protected override void ProcessQueue ()
-               {
-                       StartProcessQueue ();
-
-                       ProcessQueueWithoutStart ();
-               }
-
-               /// <summary>
-               /// The part of <see cref="ProcessQueue"/> specific to asynchronous execution.
-               /// Handles scheduling continuation on the Task returned by the block's action
-               /// (or continuing synchrnously if possible).
-               /// </summary>
-               void ProcessQueueWithoutStart ()
-               {
-                       // catch is needed here, if the Task-returning delegate throws exception itself
-                       try {
-                               int i = 0;
-                               while (CanRun (i)) {
-                                       TTask task;
-                                       if (!processItem (out task))
-                                               break;
-                                       if (task == null || task.IsCanceled
-                                           || (task.IsCompleted && !task.IsFaulted)) {
-                                               if (processFinishedTask != null)
-                                                       processFinishedTask (task);
-                                       } else if (task.IsFaulted) {
-                                               CompHelper.RequestFault (task.Exception, false);
-                                               break;
-                                       } else {
-                                               task.ContinueWith (
-                                                       t => TaskFinished ((TTask)t), Options.TaskScheduler);
-                                               return;
-                                       }
-                                       i++;
-                               }
-                       } catch (Exception e) {
-                               CompHelper.RequestFault (e, false);
-                       }
-
-                       FinishProcessQueue ();
-               }
-
-               /// <summary>
-               /// Handles asynchronously finished Task, continues processing the queue.
-               /// </summary>
-               void TaskFinished (TTask task)
-               {
-                       if (task.IsFaulted) {
-                               CompHelper.RequestFault (task.Exception, false);
-                               FinishProcessQueue ();
-                               return;
-                       }
-
-                       if (processFinishedTask != null)
-                               processFinishedTask (task);
-
-                       ProcessQueueWithoutStart ();
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BatchBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BatchBlock.cs
deleted file mode 100644 (file)
index 312e5f2..0000000
+++ /dev/null
@@ -1,376 +0,0 @@
-// BatchBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       public sealed class BatchBlock<T> : IPropagatorBlock<T, T[]>, IReceivableSourceBlock<T[]> {
-               readonly CompletionHelper compHelper;
-               readonly BlockingCollection<T> messageQueue = new BlockingCollection<T> ();
-               readonly MessageBox<T> messageBox;
-               readonly GroupingDataflowBlockOptions dataflowBlockOptions;
-               readonly int batchSize;
-               int batchCount;
-               long numberOfGroups;
-               SpinLock batchCountLock;
-               readonly OutgoingQueue<T[]> outgoing;
-               SpinLock batchLock;
-               readonly AtomicBoolean nonGreedyProcessing = new AtomicBoolean ();
-
-               public BatchBlock (int batchSize) : this (batchSize, GroupingDataflowBlockOptions.Default)
-               {
-               }
-
-               public BatchBlock (int batchSize, GroupingDataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (batchSize <= 0)
-                               throw new ArgumentOutOfRangeException ("batchSize", batchSize,
-                                       "The batchSize must be positive.");
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-                       if (dataflowBlockOptions.BoundedCapacity != -1
-                           && batchSize > dataflowBlockOptions.BoundedCapacity)
-                               throw new ArgumentOutOfRangeException ("batchSize",
-                                       "The batchSize must be smaller than the value of BoundedCapacity.");
-
-                       this.batchSize = batchSize;
-                       this.dataflowBlockOptions = dataflowBlockOptions;
-                       this.compHelper = CompletionHelper.GetNew (dataflowBlockOptions);
-
-                       Action<bool> processQueue;
-                       Func<bool> canAccept;
-                       if (dataflowBlockOptions.MaxNumberOfGroups == -1) {
-                               processQueue = newItem => BatchProcess (newItem ? 1 : 0);
-                               canAccept = null;
-                       } else {
-                               processQueue = _ => BatchProcess ();
-                               canAccept = TryAdd;
-                       }
-
-                       this.messageBox = new PassingMessageBox<T> (this, messageQueue, compHelper,
-                               () => outgoing.IsCompleted, processQueue, dataflowBlockOptions,
-                               dataflowBlockOptions.Greedy, canAccept);
-                       this.outgoing = new OutgoingQueue<T[]> (this, compHelper,
-                               () => messageQueue.IsCompleted, messageBox.DecreaseCount,
-                               dataflowBlockOptions, batch => batch.Length);
-               }
-
-               DataflowMessageStatus ITargetBlock<T>.OfferMessage (
-                       DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source,
-                       bool consumeToAccept)
-               {
-                       return messageBox.OfferMessage (
-                               messageHeader, messageValue, source, consumeToAccept);
-               }
-
-               public IDisposable LinkTo (ITargetBlock<T[]> target, DataflowLinkOptions linkOptions)
-               {
-                       return outgoing.AddTarget (target, linkOptions);
-               }
-
-               T[] ISourceBlock<T[]>.ConsumeMessage (
-                       DataflowMessageHeader messageHeader, ITargetBlock<T[]> target,
-                       out bool messageConsumed)
-               {
-                       return outgoing.ConsumeMessage (messageHeader, target, out messageConsumed);
-               }
-
-               void ISourceBlock<T[]>.ReleaseReservation (
-                       DataflowMessageHeader messageHeader, ITargetBlock<T[]> target)
-               {
-                       outgoing.ReleaseReservation (messageHeader, target);
-               }
-
-               bool ISourceBlock<T[]>.ReserveMessage (
-                       DataflowMessageHeader messageHeader, ITargetBlock<T[]> target)
-               {
-                       return outgoing.ReserveMessage (messageHeader, target);
-               }
-
-               public bool TryReceive (Predicate<T[]> filter, out T[] item)
-               {
-                       return outgoing.TryReceive (filter, out item);
-               }
-
-               public bool TryReceiveAll (out IList<T[]> items)
-               {
-                       return outgoing.TryReceiveAll (out items);
-               }
-
-               /// <summary>
-               /// Verifies whether <see cref="GroupingDataflowBlockOptions.MaxNumberOfGroups"/>
-               /// has been reached. If it did, <see cref="Complete"/>s the block.
-               /// </summary>
-               void VerifyMaxNumberOfGroups ()
-               {
-                       if (dataflowBlockOptions.MaxNumberOfGroups == -1)
-                               return;
-
-                       bool shouldComplete;
-
-                       bool lockTaken = false;
-                       try {
-                               batchCountLock.Enter (ref lockTaken);
-
-                               shouldComplete = numberOfGroups >= dataflowBlockOptions.MaxNumberOfGroups;
-                       } finally {
-                               if (lockTaken)
-                                       batchCountLock.Exit ();
-                       }
-
-                       if (shouldComplete)
-                               Complete ();
-               }
-
-               /// <summary>
-               /// Returns whether a new item can be accepted, and increments a counter if it can.
-               /// Only makes sense when <see cref="GroupingDataflowBlockOptions.MaxNumberOfGroups"/>
-               /// is not unbounded.
-               /// </summary>
-               bool TryAdd ()
-               {
-                       bool lockTaken = false;
-                       try {
-                               batchCountLock.Enter (ref lockTaken);
-
-                               if (numberOfGroups + batchCount / batchSize
-                                   >= dataflowBlockOptions.MaxNumberOfGroups)
-                                       return false;
-
-                               batchCount++;
-                               return true;
-                       } finally {
-                               if (lockTaken)
-                                       batchCountLock.Exit ();
-                       }
-               }
-
-               public void TriggerBatch ()
-               {
-                       if (dataflowBlockOptions.Greedy) {
-                               int earlyBatchSize;
-
-                               bool lockTaken = false;
-                               try {
-                                       batchCountLock.Enter (ref lockTaken);
-                                       
-                                       if (batchCount == 0)
-                                               return;
-
-                                       earlyBatchSize = batchCount;
-                                       batchCount = 0;
-                                       numberOfGroups++;
-                               } finally {
-                                       if (lockTaken)
-                                               batchCountLock.Exit ();
-                               }
-
-                               MakeBatch (earlyBatchSize);
-                       } else {
-                               if (dataflowBlockOptions.BoundedCapacity == -1
-                                   || outgoing.Count <= dataflowBlockOptions.BoundedCapacity)
-                                       EnsureNonGreedyProcessing (true);
-                       }
-               }
-
-               /// <summary>
-               /// Decides whether to create a new batch or not.
-               /// </summary>
-               /// <param name="addedItems">
-               /// Number of newly added items. Used only with greedy processing.
-               /// </param>
-               void BatchProcess (int addedItems = 0)
-               {
-                       if (dataflowBlockOptions.Greedy) {
-                               bool makeBatch = false;
-
-                               bool lockTaken = false;
-                               try {
-                                       batchCountLock.Enter (ref lockTaken);
-
-                                       batchCount += addedItems;
-
-                                       if (batchCount >= batchSize) {
-                                               batchCount -= batchSize;
-                                               numberOfGroups++;
-                                               makeBatch = true;
-                                       }
-                               } finally {
-                                       if (lockTaken)
-                                               batchCountLock.Exit ();
-                               }
-
-                               if (makeBatch)
-                                       MakeBatch (batchSize);
-                       } else {
-                               if (ShouldProcessNonGreedy ())
-                                       EnsureNonGreedyProcessing (false);
-                       }
-               }
-
-               /// <summary>
-               /// Returns whether non-greedy creation of a batch should be started.
-               /// </summary>
-               bool ShouldProcessNonGreedy ()
-               {
-                       // do we have enough items waiting and would the new batch fit?
-                       return messageBox.PostponedMessagesCount >= batchSize
-                              && (dataflowBlockOptions.BoundedCapacity == -1
-                                  || outgoing.Count + batchSize <= dataflowBlockOptions.BoundedCapacity);
-               }
-
-               /// <summary>
-               /// Creates a batch of the given size and adds the result to the output queue.
-               /// </summary>
-               void MakeBatch (int size)
-               {
-                       T[] batch = new T[size];
-
-                       // lock is necessary here to make sure items are in the correct order
-                       bool taken = false;
-                       try {
-                               batchLock.Enter (ref taken);
-
-                               for (int i = 0; i < size; ++i)
-                                       messageQueue.TryTake (out batch [i]);
-                       } finally {
-                               if (taken)
-                                       batchLock.Exit ();
-                       }
-
-                       outgoing.AddData (batch);
-
-                       VerifyMaxNumberOfGroups ();
-               }
-
-               /// <summary>
-               /// Starts non-greedy creation of batches, if one doesn't already run.
-               /// </summary>
-               /// <param name="manuallyTriggered">Whether the batch was triggered by <see cref="TriggerBatch"/>.</param>
-               void EnsureNonGreedyProcessing (bool manuallyTriggered)
-               {
-                       if (nonGreedyProcessing.TrySet ())
-                               Task.Factory.StartNew (() => NonGreedyProcess (manuallyTriggered),
-                                       dataflowBlockOptions.CancellationToken,
-                                       TaskCreationOptions.PreferFairness,
-                                       dataflowBlockOptions.TaskScheduler);
-               }
-
-               /// <summary>
-               /// Creates batches in non-greedy mode,
-               /// making sure the whole batch is available by using reservations.
-               /// </summary>
-               /// <param name="manuallyTriggered">Whether the batch was triggered by <see cref="TriggerBatch"/>.</param>
-               void NonGreedyProcess (bool manuallyTriggered)
-               {
-                       bool first = true;
-
-                       do {
-                               var reservations =
-                                       new List<Tuple<ISourceBlock<T>, DataflowMessageHeader>> ();
-
-                               int expectedReservationsCount = messageBox.PostponedMessagesCount;
-
-                               if (expectedReservationsCount == 0)
-                                       break;
-
-                               bool gotReservation;
-                               do {
-                                       var reservation = messageBox.ReserveMessage ();
-                                       gotReservation = reservation != null;
-                                       if (gotReservation)
-                                               reservations.Add (reservation);
-                               } while (gotReservation && reservations.Count < batchSize);
-
-                               int expectedSize = manuallyTriggered && first
-                                                          ? Math.Min (expectedReservationsCount, batchSize)
-                                                          : batchSize;
-
-                               if (reservations.Count < expectedSize) {
-                                       foreach (var reservation in reservations)
-                                               messageBox.RelaseReservation (reservation);
-
-                                       // some reservations failed, which most likely means the message
-                                       // was consumed by someone else and a new one will be offered soon;
-                                       // so postpone the batch, so that the other block has time to do that
-                                       // (MS .Net does something like this too)
-                                       if (manuallyTriggered && first) {
-                                               Task.Factory.StartNew (() => NonGreedyProcess (true),
-                                                       dataflowBlockOptions.CancellationToken,
-                                                       TaskCreationOptions.PreferFairness,
-                                                       dataflowBlockOptions.TaskScheduler);
-                                               return;
-                                       }
-                               } else {
-                                       T[] batch = new T[reservations.Count];
-
-                                       for (int i = 0; i < reservations.Count; i++)
-                                               batch [i] = messageBox.ConsumeReserved (reservations [i]);
-
-                                       outgoing.AddData (batch);
-
-                                       // non-greedy doesn't need lock
-                                       numberOfGroups++;
-
-                                       VerifyMaxNumberOfGroups ();
-                               }
-
-                               first = false;
-                       } while (ShouldProcessNonGreedy ());
-
-                       nonGreedyProcessing.Value = false;
-                       if (ShouldProcessNonGreedy ())
-                               EnsureNonGreedyProcessing (false);
-               }
-
-               public void Complete ()
-               {
-                       messageBox.Complete ();
-                       TriggerBatch ();
-                       outgoing.Complete ();
-               }
-
-               void IDataflowBlock.Fault (Exception exception)
-               {
-                       compHelper.RequestFault (exception);
-               }
-
-               public Task Completion {
-                       get { return compHelper.Completion; }
-               }
-
-               public int OutputCount {
-                       get { return outgoing.Count; }
-               }
-
-               public int BatchSize {
-                       get { return batchSize; }
-               }
-
-               public override string ToString ()
-               {
-                       return NameHelper.GetName (this, dataflowBlockOptions);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BatchedJoinBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BatchedJoinBlock.cs
deleted file mode 100644 (file)
index cfafa02..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-// BatchedJoinBlock.cs
-//
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-
-namespace System.Threading.Tasks.Dataflow {
-       public sealed class BatchedJoinBlock<T1, T2> :
-               IReceivableSourceBlock<Tuple<IList<T1>, IList<T2>>> {
-               readonly GroupingDataflowBlockOptions options;
-
-               readonly CompletionHelper completionHelper;
-               readonly OutgoingQueue<Tuple<IList<T1>, IList<T2>>> outgoing;
-               SpinLock batchLock;
-
-               readonly JoinTarget<T1> target1;
-               readonly JoinTarget<T2> target2;
-
-               int batchCount;
-               long numberOfGroups;
-               SpinLock batchCountLock;
-
-               public BatchedJoinBlock (int batchSize)
-                       : this (batchSize, GroupingDataflowBlockOptions.Default)
-               {
-               }
-
-               public BatchedJoinBlock (int batchSize,
-                                        GroupingDataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (batchSize <= 0)
-                               throw new ArgumentOutOfRangeException (
-                                       "batchSize", batchSize, "The batchSize must be positive.");
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-                       if (!dataflowBlockOptions.Greedy)
-                               throw new ArgumentException (
-                                       "Greedy must be true for this dataflow block.", "dataflowBlockOptions");
-                       if (dataflowBlockOptions.BoundedCapacity != DataflowBlockOptions.Unbounded)
-                               throw new ArgumentException (
-                                       "BoundedCapacity must be Unbounded or -1 for this dataflow block.",
-                                       "dataflowBlockOptions");
-
-                       BatchSize = batchSize;
-                       options = dataflowBlockOptions;
-                       completionHelper = CompletionHelper.GetNew (dataflowBlockOptions);
-
-                       target1 = new JoinTarget<T1> (
-                               this, SignalTarget, completionHelper, () => outgoing.IsCompleted,
-                               dataflowBlockOptions, true, TryAdd);
-                       target2 = new JoinTarget<T2> (
-                               this, SignalTarget, completionHelper, () => outgoing.IsCompleted,
-                               dataflowBlockOptions, true, TryAdd);
-
-                       outgoing = new OutgoingQueue<Tuple<IList<T1>, IList<T2>>> (
-                               this, completionHelper,
-                               () => target1.Buffer.IsCompleted || target2.Buffer.IsCompleted,
-                               _ =>
-                               {
-                                       target1.DecreaseCount ();
-                                       target2.DecreaseCount ();
-                               }, options);
-               }
-
-               public int BatchSize { get; private set; }
-
-               public ITargetBlock<T1> Target1 {
-                       get { return target1; }
-               }
-
-               public ITargetBlock<T2> Target2 {
-                       get { return target2; }
-               }
-
-               /// <summary>
-               /// Returns whether a new item can be accepted, and increments a counter if it can.
-               /// </summary>
-               bool TryAdd ()
-               {
-                       bool lockTaken = false;
-                       try {
-                               batchCountLock.Enter (ref lockTaken);
-
-                               if (options.MaxNumberOfGroups != -1
-                                   && numberOfGroups + batchCount / BatchSize >= options.MaxNumberOfGroups)
-                                       return false;
-
-                               batchCount++;
-                               return true;
-                       } finally {
-                               if (lockTaken)
-                                       batchCountLock.Exit();
-                       }
-               }
-
-               /// <summary>
-               /// Decides whether to create a new batch or not.
-               /// </summary>
-               void SignalTarget ()
-               {
-                       bool lockTaken = false;
-                       try {
-                               batchCountLock.Enter (ref lockTaken);
-
-                               if (batchCount < BatchSize)
-                                       return;
-
-                               batchCount -= BatchSize;
-                               numberOfGroups++;
-                       } finally {
-                               if (lockTaken)
-                                       batchCountLock.Exit();
-                       }
-
-                       MakeBatch (BatchSize);
-               }
-
-               /// <summary>
-               /// Creates a batch of the given size and adds the resulting batch to the output queue.
-               /// </summary>
-               void MakeBatch (int batchSize)
-               {
-                       if (batchSize == 0)
-                               return;
-
-                       var list1 = new List<T1> ();
-                       var list2 = new List<T2> ();
-                       
-                       // lock is necessary here to make sure items are in the correct order
-                       bool taken = false;
-                       try {
-                               batchLock.Enter (ref taken);
-
-                               int i = 0;
-
-                               T1 item1;
-                               while (i < batchSize && target1.Buffer.TryTake (out item1)) {
-                                       list1.Add (item1);
-                                       i++;
-                               }
-
-                               T2 item2;
-                               while (i < batchSize && target2.Buffer.TryTake (out item2)) {
-                                       list2.Add (item2);
-                                       i++;
-                               }
-
-                               if (i < batchSize)
-                                       throw new InvalidOperationException("Unexpected count of items.");
-                       } finally {
-                               if (taken)
-                                       batchLock.Exit ();
-                       }
-
-                       var batch = Tuple.Create<IList<T1>, IList<T2>> (list1, list2);
-
-                       outgoing.AddData (batch);
-
-                       VerifyMaxNumberOfGroups ();
-               }
-
-               /// <summary>
-               /// Verifies whether <see cref="GroupingDataflowBlockOptions.MaxNumberOfGroups"/>
-               /// has been reached. If it did, <see cref="Complete"/>s the block.
-               /// </summary>
-               void VerifyMaxNumberOfGroups ()
-               {
-                       if (options.MaxNumberOfGroups == -1)
-                               return;
-
-                       bool shouldComplete;
-
-                       bool lockTaken = false;
-                       try {
-                               batchCountLock.Enter (ref lockTaken);
-
-                               shouldComplete = numberOfGroups >= options.MaxNumberOfGroups;
-                       } finally {
-                               if (lockTaken)
-                                       batchCountLock.Exit ();
-                       }
-
-                       if (shouldComplete)
-                               Complete ();
-               }
-
-               public Task Completion {
-                       get { return completionHelper.Completion; }
-               }
-
-               public void Complete ()
-               {
-                       target1.Complete ();
-                       target2.Complete ();
-                       MakeBatch (batchCount);
-                       outgoing.Complete ();
-               }
-
-               void IDataflowBlock.Fault (Exception exception)
-               {
-                       completionHelper.RequestFault (exception);
-               }
-
-               Tuple<IList<T1>, IList<T2>> ISourceBlock<Tuple<IList<T1>, IList<T2>>>.ConsumeMessage (
-                       DataflowMessageHeader messageHeader,
-                       ITargetBlock<Tuple<IList<T1>, IList<T2>>> target,
-                       out bool messageConsumed)
-               {
-                       return outgoing.ConsumeMessage (messageHeader, target, out messageConsumed);
-               }
-
-               public IDisposable LinkTo (ITargetBlock<Tuple<IList<T1>, IList<T2>>> target,
-                                          DataflowLinkOptions linkOptions)
-               {
-                       return outgoing.AddTarget(target, linkOptions);
-               }
-
-               void ISourceBlock<Tuple<IList<T1>, IList<T2>>>.ReleaseReservation (
-                       DataflowMessageHeader messageHeader,
-                       ITargetBlock<Tuple<IList<T1>, IList<T2>>> target)
-               {
-                       outgoing.ReleaseReservation (messageHeader, target);
-               }
-
-               bool ISourceBlock<Tuple<IList<T1>, IList<T2>>>.ReserveMessage (
-                       DataflowMessageHeader messageHeader,
-                       ITargetBlock<Tuple<IList<T1>, IList<T2>>> target)
-               {
-                       return outgoing.ReserveMessage (messageHeader, target);
-               }
-
-               public bool TryReceive (Predicate<Tuple<IList<T1>, IList<T2>>> filter,
-                                       out Tuple<IList<T1>, IList<T2>> item)
-               {
-                       return outgoing.TryReceive (filter, out item);
-               }
-
-               public bool TryReceiveAll (out IList<Tuple<IList<T1>, IList<T2>>> items)
-               {
-                       return outgoing.TryReceiveAll (out items);
-               }
-
-               public int OutputCount {
-                       get { return outgoing.Count; }
-               }
-
-               public override string ToString ()
-               {
-                       return NameHelper.GetName (this, options);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BatchedJoinBlock`3.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BatchedJoinBlock`3.cs
deleted file mode 100644 (file)
index 5e8c402..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-// BatchedJoinBlock.cs
-//
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-
-namespace System.Threading.Tasks.Dataflow {
-       public sealed class BatchedJoinBlock<T1, T2, T3> :
-               IReceivableSourceBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>> {
-               readonly GroupingDataflowBlockOptions options;
-
-               readonly CompletionHelper completionHelper;
-               readonly OutgoingQueue<Tuple<IList<T1>, IList<T2>, IList<T3>>> outgoing;
-               SpinLock batchLock;
-
-               readonly JoinTarget<T1> target1;
-               readonly JoinTarget<T2> target2;
-               readonly JoinTarget<T3> target3;
-
-               int batchCount;
-               long numberOfGroups;
-               SpinLock batchCountLock;
-
-               public BatchedJoinBlock (int batchSize)
-                       : this (batchSize, GroupingDataflowBlockOptions.Default)
-               {
-               }
-
-               public BatchedJoinBlock (int batchSize,
-                                        GroupingDataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (batchSize <= 0)
-                               throw new ArgumentOutOfRangeException (
-                                       "batchSize", batchSize, "The batchSize must be positive.");
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-                       if (!dataflowBlockOptions.Greedy)
-                               throw new ArgumentException (
-                                       "Greedy must be true for this dataflow block.", "dataflowBlockOptions");
-                       if (dataflowBlockOptions.BoundedCapacity != DataflowBlockOptions.Unbounded)
-                               throw new ArgumentException (
-                                       "BoundedCapacity must be Unbounded or -1 for this dataflow block.",
-                                       "dataflowBlockOptions");
-
-                       BatchSize = batchSize;
-                       options = dataflowBlockOptions;
-                       completionHelper = CompletionHelper.GetNew (options);
-
-                       target1 = new JoinTarget<T1> (
-                               this, SignalTarget, completionHelper, () => outgoing.IsCompleted,
-                               dataflowBlockOptions, true, TryAdd);
-                       target2 = new JoinTarget<T2> (
-                               this, SignalTarget, completionHelper, () => outgoing.IsCompleted,
-                               dataflowBlockOptions, true, TryAdd);
-                       target3 = new JoinTarget<T3> (
-                               this, SignalTarget, completionHelper, () => outgoing.IsCompleted,
-                               dataflowBlockOptions, true, TryAdd);
-
-                       outgoing = new OutgoingQueue<Tuple<IList<T1>, IList<T2>, IList<T3>>> (
-                               this, completionHelper,
-                               () => target1.Buffer.IsCompleted || target2.Buffer.IsCompleted
-                                     || target3.Buffer.IsCompleted,
-                               _ =>
-                               {
-                                       target1.DecreaseCount ();
-                                       target2.DecreaseCount ();
-                                       target3.DecreaseCount ();
-                               }, options);
-               }
-
-               public int BatchSize { get; private set; }
-
-               public ITargetBlock<T1> Target1 {
-                       get { return target1; }
-               }
-
-               public ITargetBlock<T2> Target2 {
-                       get { return target2; }
-               }
-
-               public ITargetBlock<T3> Target3 {
-                       get { return target3; }
-               }
-
-               /// <summary>
-               /// Returns whether a new item can be accepted, and increments a counter if it can.
-               /// </summary>
-               bool TryAdd ()
-               {
-                       bool lockTaken = false;
-                       try {
-                               batchCountLock.Enter (ref lockTaken);
-
-                               if (options.MaxNumberOfGroups != -1
-                                   && numberOfGroups + batchCount / BatchSize >= options.MaxNumberOfGroups)
-                                       return false;
-
-                               batchCount++;
-                               return true;
-                       } finally {
-                               if (lockTaken)
-                                       batchCountLock.Exit ();
-                       }
-               }
-
-               /// <summary>
-               /// Decides whether to create a new batch or not.
-               /// </summary>
-               void SignalTarget ()
-               {
-                       bool lockTaken = false;
-                       try {
-                               batchCountLock.Enter (ref lockTaken);
-
-                               if (batchCount < BatchSize)
-                                       return;
-
-                               batchCount -= BatchSize;
-                               numberOfGroups++;
-                       } finally {
-                               if (lockTaken)
-                                       batchCountLock.Exit ();
-                       }
-
-                       MakeBatch (BatchSize);
-               }
-
-               /// <summary>
-               /// Creates a batch of the given size and adds the resulting batch to the output queue.
-               /// </summary>
-               void MakeBatch (int batchSize)
-               {
-                       if (batchSize == 0)
-                               return;
-
-                       var list1 = new List<T1> ();
-                       var list2 = new List<T2> ();
-                       var list3 = new List<T3> ();
-
-                       // lock is necessary here to make sure items are in the correct order
-                       bool taken = false;
-                       try {
-                               batchLock.Enter (ref taken);
-
-                               int i = 0;
-
-                               T1 item1;
-                               while (i < batchSize && target1.Buffer.TryTake (out item1)) {
-                                       list1.Add (item1);
-                                       i++;
-                               }
-
-                               T2 item2;
-                               while (i < batchSize && target2.Buffer.TryTake (out item2)) {
-                                       list2.Add (item2);
-                                       i++;
-                               }
-
-                               T3 item3;
-                               while (i < batchSize && target3.Buffer.TryTake (out item3)) {
-                                       list3.Add (item3);
-                                       i++;
-                               }
-
-                               if (i < batchSize)
-                                       throw new InvalidOperationException ("Unexpected count of items.");
-                       } finally {
-                               if (taken)
-                                       batchLock.Exit ();
-                       }
-
-                       var batch = Tuple.Create<IList<T1>, IList<T2>, IList<T3>> (list1, list2,
-                               list3);
-
-                       outgoing.AddData (batch);
-
-                       VerifyMaxNumberOfGroups ();
-               }
-
-               /// <summary>
-               /// Verifies whether <see cref="GroupingDataflowBlockOptions.MaxNumberOfGroups"/>
-               /// has been reached. If it did, <see cref="Complete"/>s the block.
-               /// </summary>
-               void VerifyMaxNumberOfGroups ()
-               {
-                       if (options.MaxNumberOfGroups == -1)
-                               return;
-
-                       bool shouldComplete;
-
-                       bool lockTaken = false;
-                       try {
-                               batchCountLock.Enter (ref lockTaken);
-
-                               shouldComplete = numberOfGroups >= options.MaxNumberOfGroups;
-                       } finally {
-                               if (lockTaken)
-                                       batchCountLock.Exit ();
-                       }
-
-                       if (shouldComplete)
-                               Complete ();
-               }
-
-               public Task Completion
-               {
-                       get { return completionHelper.Completion; }
-               }
-
-               public void Complete ()
-               {
-                       target1.Complete ();
-                       target2.Complete ();
-                       target3.Complete ();
-                       MakeBatch (batchCount);
-                       outgoing.Complete ();
-               }
-
-               void IDataflowBlock.Fault (Exception exception)
-               {
-                       completionHelper.RequestFault (exception);
-               }
-
-               Tuple<IList<T1>, IList<T2>, IList<T3>>
-                       ISourceBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>>.ConsumeMessage (
-                       DataflowMessageHeader messageHeader,
-                       ITargetBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>> target,
-                       out bool messageConsumed)
-               {
-                       return outgoing.ConsumeMessage (messageHeader, target, out messageConsumed);
-               }
-
-               public IDisposable LinkTo (
-                       ITargetBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>> target,
-                       DataflowLinkOptions linkOptions)
-               {
-                       return outgoing.AddTarget (target, linkOptions);
-               }
-
-               void ISourceBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>>.ReleaseReservation (
-                       DataflowMessageHeader messageHeader,
-                       ITargetBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>> target)
-               {
-                       outgoing.ReleaseReservation (messageHeader, target);
-               }
-
-               bool ISourceBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>>.ReserveMessage (
-                       DataflowMessageHeader messageHeader,
-                       ITargetBlock<Tuple<IList<T1>, IList<T2>, IList<T3>>> target)
-               {
-                       return outgoing.ReserveMessage (messageHeader, target);
-               }
-
-               public bool TryReceive (
-                       Predicate<Tuple<IList<T1>, IList<T2>, IList<T3>>> filter,
-                       out Tuple<IList<T1>, IList<T2>, IList<T3>> item)
-               {
-                       return outgoing.TryReceive (filter, out item);
-               }
-
-               public bool TryReceiveAll (
-                       out IList<Tuple<IList<T1>, IList<T2>, IList<T3>>> items)
-               {
-                       return outgoing.TryReceiveAll (out items);
-               }
-
-               public int OutputCount {
-                       get { return outgoing.Count; }
-               }
-
-               public override string ToString ()
-               {
-                       return NameHelper.GetName (this, options);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BroadcastBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BroadcastBlock.cs
deleted file mode 100644 (file)
index b51d2b3..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-// BroadcastBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       public sealed class BroadcastBlock<T> : IPropagatorBlock<T, T>, IReceivableSourceBlock<T> {
-               readonly CompletionHelper compHelper;
-               readonly BlockingCollection<T> messageQueue = new BlockingCollection<T> ();
-               readonly MessageBox<T> messageBox;
-               readonly DataflowBlockOptions dataflowBlockOptions;
-               readonly Func<T, T> cloningFunction;
-               readonly BroadcastOutgoingQueue<T> outgoing;
-
-               public BroadcastBlock (Func<T, T> cloningFunction)
-                       : this (cloningFunction, DataflowBlockOptions.Default)
-               {
-               }
-
-               public BroadcastBlock (Func<T, T> cloningFunction,
-                                      DataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-
-                       this.cloningFunction = cloningFunction;
-                       this.dataflowBlockOptions = dataflowBlockOptions;
-                       this.compHelper = CompletionHelper.GetNew (dataflowBlockOptions);
-                       this.messageBox = new PassingMessageBox<T> (this, messageQueue, compHelper,
-                               () => outgoing.IsCompleted, _ => BroadcastProcess (), dataflowBlockOptions);
-                       this.outgoing = new BroadcastOutgoingQueue<T> (this, compHelper,
-                               () => messageQueue.IsCompleted, messageBox.DecreaseCount,
-                               dataflowBlockOptions, cloningFunction != null);
-               }
-
-               DataflowMessageStatus ITargetBlock<T>.OfferMessage (
-                       DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source,
-                       bool consumeToAccept)
-               {
-                       return messageBox.OfferMessage (messageHeader, messageValue, source,
-                               consumeToAccept);
-               }
-
-               public IDisposable LinkTo (ITargetBlock<T> target, DataflowLinkOptions linkOptions)
-               {
-                       if (linkOptions == null)
-                               throw new ArgumentNullException("linkOptions");
-
-                       return outgoing.AddTarget (target, linkOptions);
-               }
-
-               T ISourceBlock<T>.ConsumeMessage (DataflowMessageHeader messageHeader,
-                                                 ITargetBlock<T> target,
-                                                 out bool messageConsumed)
-               {
-                       T message = outgoing.ConsumeMessage (
-                               messageHeader, target, out messageConsumed);
-                       if (messageConsumed && cloningFunction != null)
-                               message = cloningFunction (message);
-                       return message;
-               }
-
-               bool ISourceBlock<T>.ReserveMessage (DataflowMessageHeader messageHeader,
-                                                    ITargetBlock<T> target)
-               {
-                       return outgoing.ReserveMessage (messageHeader, target);
-               }
-
-               void ISourceBlock<T>.ReleaseReservation (DataflowMessageHeader messageHeader,
-                                                        ITargetBlock<T> target)
-               {
-                       outgoing.ReleaseReservation (messageHeader, target);
-               }
-
-               public bool TryReceive (Predicate<T> filter, out T item)
-               {
-                       var received = outgoing.TryReceive (filter, out item);
-                       if (received && cloningFunction != null)
-                               item = cloningFunction (item);
-                       return received;
-               }
-
-               bool IReceivableSourceBlock<T>.TryReceiveAll (out IList<T> items)
-               {
-                       T item;
-                       if (!TryReceive (null, out item)) {
-                               items = null;
-                               return false;
-                       }
-
-                       items = new[] { item };
-                       return true;
-               }
-
-               /// <summary>
-               /// Moves items from the input queue to the output queue.
-               /// </summary>
-               void BroadcastProcess ()
-               {
-                       T item;
-                       while (messageQueue.TryTake (out item))
-                               outgoing.AddData (item);
-               }
-
-               public void Complete ()
-               {
-                       messageBox.Complete ();
-                       outgoing.Complete ();
-               }
-
-               void IDataflowBlock.Fault (Exception exception)
-               {
-                       compHelper.RequestFault (exception);
-               }
-
-               public Task Completion {
-                       get { return compHelper.Completion; }
-               }
-
-               public override string ToString ()
-               {
-                       return NameHelper.GetName (this, dataflowBlockOptions);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BroadcastOutgoingQueue.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BroadcastOutgoingQueue.cs
deleted file mode 100644 (file)
index b2e2884..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-// BroadcastOutgoingQueue.cs
-//
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Version of <see cref="OutgoingQueueBase{T}"/> for broadcast blocks.
-       /// </summary>
-       class BroadcastOutgoingQueue<T> : OutgoingQueueBase<T> {
-               volatile bool hasCurrentItem;
-               // don't use directly, only through CurrentItem (and carefully)
-               T currentItem;
-               SpinLock currentItemLock = new SpinLock();
-
-               readonly BroadcastTargetCollection<T> targets;
-
-               protected override TargetCollectionBase<T> Targets {
-                       get { return targets; }
-               }
-
-               readonly ConcurrentDictionary<Tuple<DataflowMessageHeader, ITargetBlock<T>>, T>
-                       reservedMessages =
-                               new ConcurrentDictionary<Tuple<DataflowMessageHeader, ITargetBlock<T>>, T>();
-
-               public BroadcastOutgoingQueue (
-                       ISourceBlock<T> block, CompletionHelper compHelper,
-                       Func<bool> externalCompleteTester, Action<int> decreaseItemsCount,
-                       DataflowBlockOptions options, bool hasCloner)
-                       : base (compHelper, externalCompleteTester, decreaseItemsCount, options)
-               {
-                       targets = new BroadcastTargetCollection<T> (block, hasCloner);
-               }
-
-               /// <summary>
-               /// The current item that is to be sent to taget blocks.
-               /// </summary>
-               T CurrentItem {
-                       get {
-                               T item;
-                               bool lockTaken = false;
-                               try {
-                                       currentItemLock.Enter (ref lockTaken);
-                                       item = currentItem;
-                               } finally {
-                                       if (lockTaken)
-                                               currentItemLock.Exit ();
-                               }
-                               return item;
-                       }
-                       set {
-                               hasCurrentItem = true;
-
-                               bool lockTaken = false;
-                               try {
-                                       currentItemLock.Enter (ref lockTaken);
-                                       currentItem = value;
-                               } finally {
-                                       if (lockTaken)
-                                               currentItemLock.Exit ();
-                               }
-                       }
-               }
-
-               /// <summary>
-               /// Takes an item from the queue and sets it as <see cref="CurrentItem"/>.
-               /// </summary>
-               public void DequeueItem ()
-               {
-                       T item;
-                       if (Outgoing.TryTake (out item)) {
-                               DecreaseCounts (item);
-                               targets.SetCurrentItem (item);
-
-                               CurrentItem = item;
-                       }
-               }
-
-               /// <summary>
-               /// Manages sending items to the target blocks.
-               /// </summary>
-               protected override void Process ()
-               {
-                       do {
-                               ForceProcessing = false;
-
-                               DequeueItem ();
-
-                               targets.OfferItemToTargets ();
-                       } while (!Store.IsEmpty || targets.NeedsProcessing);
-
-                       IsProcessing.Value = false;
-
-                       // to guard against race condition
-                       if (ForceProcessing)
-                               EnsureProcessing ();
-
-                       VerifyCompleteness ();
-               }
-
-               public T ConsumeMessage (DataflowMessageHeader messageHeader,
-                                        ITargetBlock<T> target, out bool messageConsumed)
-               {
-                       if (!messageHeader.IsValid)
-                               throw new ArgumentException ("The messageHeader is not valid.",
-                                       "messageHeader");
-                       if (target == null)
-                               throw new ArgumentNullException("target");
-
-                       T item;
-                       if (reservedMessages.TryRemove (Tuple.Create (messageHeader, target), out item)) {
-                               messageConsumed = true;
-                               return item;
-                       }
-
-                       // if we first retrieve CurrentItem and then check the header,
-                       // there will be no race condition
-
-                       item = CurrentItem;
-
-                       if (!targets.VerifyHeader (messageHeader)) {
-                               targets.UnpostponeTargetNotConsumed (target);
-
-                               messageConsumed = false;
-                               return default(T);
-                       }
-
-                       targets.UnpostponeTargetConsumed (target, messageHeader);
-                       EnsureProcessing ();
-
-                       messageConsumed = true;
-                       return item;
-               }
-
-               public bool ReserveMessage (DataflowMessageHeader messageHeader,
-                                           ITargetBlock<T> target)
-               {
-                       if (!messageHeader.IsValid)
-                               throw new ArgumentException ("The messageHeader is not valid.",
-                                       "messageHeader");
-                       if (target == null)
-                               throw new ArgumentNullException("target");
-
-                       T item = CurrentItem;
-
-                       if (!targets.VerifyHeader (messageHeader)) {
-                               targets.UnpostponeTargetNotConsumed (target);
-                               EnsureProcessing ();
-                               return false;
-                       }
-
-                       targets.ReserveTarget (target);
-                       reservedMessages [Tuple.Create (messageHeader, target)] = item;
-                       return true;
-               }
-
-               public void ReleaseReservation (DataflowMessageHeader messageHeader,
-                                               ITargetBlock<T> target)
-               {
-                       if (!messageHeader.IsValid)
-                               throw new ArgumentException ("The messageHeader is not valid.",
-                                       "messageHeader");
-                       if (target == null)
-                               throw new ArgumentNullException("target");
-
-                       T item;
-                       if (!reservedMessages.TryRemove (Tuple.Create (messageHeader, target), out item))
-                               throw new InvalidOperationException (
-                                       "The target did not have the message reserved.");
-
-                       targets.UnpostponeTargetNotConsumed (target);
-                       EnsureProcessing ();
-               }
-
-               public bool TryReceive (Predicate<T> filter, out T retrievedItem)
-               {
-                       retrievedItem = default(T);
-
-                       if (!hasCurrentItem) {
-                               return false;
-                       }
-
-                       T item = CurrentItem;
-
-                       if (filter == null || filter(item)) {
-                               retrievedItem = item;
-                               return true;
-                       }
-
-                       return false;
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BufferBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/BufferBlock.cs
deleted file mode 100644 (file)
index b6b60bf..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-// BufferBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       public sealed class BufferBlock<T> : IPropagatorBlock<T, T>, IReceivableSourceBlock<T> {
-               readonly DataflowBlockOptions dataflowBlockOptions;
-               readonly CompletionHelper compHelper;
-               readonly MessageBox<T> messageBox;
-               readonly OutgoingQueue<T> outgoing;
-               readonly BlockingCollection<T> messageQueue = new BlockingCollection<T> ();
-
-               public BufferBlock () : this (DataflowBlockOptions.Default)
-               {
-               }
-
-               public BufferBlock (DataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-
-                       this.dataflowBlockOptions = dataflowBlockOptions;
-                       this.compHelper = CompletionHelper.GetNew (dataflowBlockOptions);
-                       this.messageBox = new PassingMessageBox<T> (this, messageQueue, compHelper,
-                               () => outgoing.IsCompleted, _ => ProcessQueue (), dataflowBlockOptions);
-                       this.outgoing = new OutgoingQueue<T> (this, compHelper,
-                               () => messageQueue.IsCompleted, messageBox.DecreaseCount,
-                               dataflowBlockOptions);
-               }
-
-               DataflowMessageStatus ITargetBlock<T>.OfferMessage (
-                       DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source,
-                       bool consumeToAccept)
-               {
-                       return messageBox.OfferMessage (messageHeader, messageValue, source, consumeToAccept);
-               }
-
-               public IDisposable LinkTo (ITargetBlock<T> target, DataflowLinkOptions linkOptions)
-               {
-                       return outgoing.AddTarget (target, linkOptions);
-               }
-
-               T ISourceBlock<T>.ConsumeMessage (DataflowMessageHeader messageHeader,
-                                                 ITargetBlock<T> target,
-                                                 out bool messageConsumed)
-               {
-                       return outgoing.ConsumeMessage (messageHeader, target, out messageConsumed);
-               }
-
-               bool ISourceBlock<T>.ReserveMessage (DataflowMessageHeader messageHeader,
-                                                    ITargetBlock<T> target)
-               {
-                       return outgoing.ReserveMessage (messageHeader, target);
-               }
-
-               void ISourceBlock<T>.ReleaseReservation (DataflowMessageHeader messageHeader,
-                                                        ITargetBlock<T> target)
-               {
-                       outgoing.ReleaseReservation (messageHeader, target);
-               }
-
-               public bool TryReceive (Predicate<T> filter, out T item)
-               {
-                       return outgoing.TryReceive (filter, out item);
-               }
-
-               public bool TryReceiveAll (out IList<T> items)
-               {
-                       return outgoing.TryReceiveAll (out items);
-               }
-
-               /// <summary>
-               /// Moves items from the input queue to the output queue.
-               /// </summary>
-               void ProcessQueue ()
-               {
-                       T item;
-                       while (messageQueue.TryTake (out item))
-                               outgoing.AddData (item);
-               }
-
-               public void Complete ()
-               {
-                       messageBox.Complete ();
-                       outgoing.Complete ();
-               }
-
-               void IDataflowBlock.Fault (Exception exception)
-               {
-                       compHelper.RequestFault (exception);
-               }
-
-               public Task Completion {
-                       get {
-                               return compHelper.Completion;
-                       }
-               }
-
-               public int Count {
-                       get {
-                               return outgoing.Count;
-                       }
-               }
-
-               public override string ToString ()
-               {
-                       return NameHelper.GetName (this, dataflowBlockOptions);
-               }
-       }
-}
-
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ChooserBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ChooserBlock.cs
deleted file mode 100644 (file)
index bf2d0b0..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-// JoinBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Block used in all versions of <see cref="DataflowBlock.Choose"/>.
-       /// </summary>
-       class ChooserBlock<T1, T2, T3> {
-               /// <summary>
-               /// Target for one of the sources to choose from.
-               /// </summary>
-               class ChooseTarget<TMessage> : ITargetBlock<TMessage> {
-                       readonly ChooserBlock<T1, T2, T3> chooserBlock;
-                       readonly int index;
-                       readonly Action<TMessage> action;
-
-                       public ChooseTarget (ChooserBlock<T1, T2, T3> chooserBlock,
-                                            int index, Action<TMessage> action)
-                       {
-                               this.chooserBlock = chooserBlock;
-                               this.index = index;
-                               this.action = action;
-                       }
-
-                       public DataflowMessageStatus OfferMessage (
-                               DataflowMessageHeader messageHeader, TMessage messageValue,
-                               ISourceBlock<TMessage> source, bool consumeToAccept)
-                       {
-                               if (!chooserBlock.canAccept)
-                                       return DataflowMessageStatus.DecliningPermanently;
-
-                               bool lockTaken = false;
-                               try {
-                                       chooserBlock.messageLock.Enter (ref lockTaken);
-                                       if (!chooserBlock.canAccept)
-                                               return DataflowMessageStatus.DecliningPermanently;
-
-                                       if (consumeToAccept) {
-                                               bool consummed;
-                                               messageValue = source.ConsumeMessage (messageHeader, this, out consummed);
-                                               if (!consummed)
-                                                       return DataflowMessageStatus.NotAvailable;
-                                       }
-
-                                       chooserBlock.canAccept = false;
-                               } finally {
-                                       if (lockTaken)
-                                               chooserBlock.messageLock.Exit ();
-                               }
-
-                               chooserBlock.MessageArrived (index, action, messageValue);
-                               return DataflowMessageStatus.Accepted;
-                       }
-
-                       public Task Completion {
-                               get { return null; }
-                       }
-
-                       public void Complete ()
-                       {
-                       }
-
-                       public void Fault (Exception exception)
-                       {
-                       }
-               }
-
-               readonly TaskCompletionSource<int> completion = new TaskCompletionSource<int> ();
-
-               SpinLock messageLock;
-               bool canAccept = true;
-
-               public ChooserBlock (
-                       Action<T1> action1, Action<T2> action2, Action<T3> action3,
-                       DataflowBlockOptions dataflowBlockOptions)
-               {
-                       Target1 = new ChooseTarget<T1> (this, 0, action1);
-                       Target2 = new ChooseTarget<T2> (this, 1, action2);
-                       if (action3 != null)
-                               Target3 = new ChooseTarget<T3> (this, 2, action3);
-
-                       if (dataflowBlockOptions.CancellationToken != CancellationToken.None)
-                               dataflowBlockOptions.CancellationToken.Register (Cancelled);
-               }
-
-               /// <summary>
-               /// Causes cancellation of <see cref="Completion"/>.
-               /// If a message is already being consumed (and the consumsing succeeds)
-               /// or if its action is being invoked, the Task is not cancelled.
-               /// </summary>
-               void Cancelled ()
-               {
-                       if (!canAccept)
-                               return;
-
-                       bool lockTaken = false;
-                       try {
-                               messageLock.Enter (ref lockTaken);
-                               if (!canAccept)
-                                       return;
-
-                               completion.SetCanceled ();
-
-                               canAccept = false;
-                       } finally {
-                               if (lockTaken)
-                                       messageLock.Exit ();
-                       }
-               }
-
-               /// <summary>
-               /// Called when all sources have completed,
-               /// causes cancellation of <see cref="Completion"/>.
-               /// </summary>
-               public void AllSourcesCompleted ()
-               {
-                       Cancelled ();
-               }
-
-               /// <summary>
-               /// Called when message has arrived (and was consumed, if necessary).
-               /// This method can be called only once in the lifetime of this object.
-               /// </summary>
-               void MessageArrived<TMessage> (
-                       int index, Action<TMessage> action, TMessage value)
-               {
-                       try {
-                               action (value);
-                               completion.SetResult (index);
-                       } catch (Exception e) {
-                               completion.SetException (e);
-                       }
-               }
-
-               /// <summary>
-               /// Target block for the first source block.
-               /// </summary>
-               public ITargetBlock<T1> Target1 { get; private set; }
-
-               /// <summary>
-               /// Target block for the second source block.
-               /// </summary>
-               public ITargetBlock<T2> Target2 { get; private set; }
-
-               /// <summary>
-               /// Target block for the third source block.
-               /// Is <c>null</c> if there are only two actions.
-               /// </summary>
-               public ITargetBlock<T3> Target3 { get; private set; }
-
-               /// <summary>
-               /// Task that signifies that an item was accepted and
-               /// its action has been called.
-               /// </summary>
-               public Task<int> Completion {
-                       get { return completion.Task; }
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/CompletionHelper.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/CompletionHelper.cs
deleted file mode 100644 (file)
index cc6a005..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-// CompletionHelper.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Used to implement Dataflow completion tracking,
-       /// that is the Completion property, Complete/Fault method combo
-       /// and the CancellationToken option.
-       /// </summary>
-       class CompletionHelper {
-               readonly TaskCompletionSource<object> source =
-                       new TaskCompletionSource<object> ();
-
-               readonly AtomicBoolean canFaultOrCancelImmediatelly =
-                       new AtomicBoolean { Value = true };
-               readonly AtomicBoolean requestedFaultOrCancel =
-                       new AtomicBoolean { Value = false };
-
-               readonly ConcurrentQueue<Tuple<Exception, bool>> requestedExceptions =
-                       new ConcurrentQueue<Tuple<Exception, bool>> ();
-
-               public CompletionHelper (DataflowBlockOptions options)
-               {
-                       if (options != null && options.CancellationToken != CancellationToken.None)
-                               options.CancellationToken.Register (RequestCancel);
-               }
-
-               [Obsolete ("Use ctor")]
-               public static CompletionHelper GetNew (DataflowBlockOptions options)
-               {
-                       return new CompletionHelper (options);
-               }
-
-               public Task Completion {
-                       get { return source.Task; }
-               }
-
-               /// <summary>
-               /// Whether <see cref="Completion"/> can be faulted or cancelled immediatelly.
-               /// It can't for example when a block is currently executing user action.
-               /// In that case, the fault (or cancellation) is queued,
-               /// and is actually acted upon when this property is set back to <c>true</c>.
-               /// </summary>
-               public bool CanFaultOrCancelImmediatelly {
-                       get { return canFaultOrCancelImmediatelly.Value; }
-                       set {
-                               if (value) {
-                                       if (canFaultOrCancelImmediatelly.TrySet () && requestedFaultOrCancel.Value) {
-                                               bool canAllBeIgnored = requestedExceptions.All (t => t.Item2);
-                                               if (canAllBeIgnored) {
-                                                       Tuple<Exception, bool> tuple;
-                                                       requestedExceptions.TryDequeue (out tuple);
-                                                       var exception = tuple.Item1;
-                                                       if (exception == null)
-                                                               Cancel ();
-                                                       else
-                                                               Fault (exception);
-                                               } else {
-                                                       Tuple<Exception, bool> tuple;
-                                                       bool first = true;
-                                                       var exceptions = new List<Exception> (requestedExceptions.Count);
-                                                       while (requestedExceptions.TryDequeue (out tuple)) {
-                                                               var exception = tuple.Item1;
-                                                               bool canBeIgnored = tuple.Item2;
-                                                               if (first || !canBeIgnored) {
-                                                                       if (exception != null)
-                                                                               exceptions.Add (exception);
-                                                               }
-                                                               first = false;
-                                                       }
-                                                       Fault (exceptions);
-                                               }
-                                       }
-                               } else
-                                       canFaultOrCancelImmediatelly.Value = false;
-                       }
-               }
-
-               /// <summary>
-               /// Whether the block can act as if it's not completed
-               /// (accept new items, start executing user action).
-               /// </summary>
-               public bool CanRun {
-                       get { return !Completion.IsCompleted && !requestedFaultOrCancel.Value; }
-               }
-
-               /// <summary>
-               /// Sets the block as completed.
-               /// Should be called only when the block is really completed
-               /// (e.g. the output queue is empty) and not right after
-               /// the user calls <see cref="IDataflowBlock.Complete"/>.
-               /// </summary>
-               public void Complete ()
-               {
-                       source.TrySetResult (null);
-               }
-
-               /// <summary>
-               /// Requests faulting of the block using a given exception.
-               /// If the block can't be faulted immediatelly (see <see cref="CanFaultOrCancelImmediatelly"/>),
-               /// the exception will be queued, and the block will fault as soon as it can.
-               /// </summary>
-               /// <param name="exception">The exception that is the cause of the fault.</param>
-               /// <param name="canBeIgnored">Can this exception be ignored, if there are more exceptions?</param>
-               /// <remarks>
-               /// When calling <see cref="IDataflowBlock.Fault"/> repeatedly, only the first exception counts,
-               /// even in the cases where the block can't be faulted immediatelly.
-               /// But exceptions from user actions in execution blocks count always,
-               /// which is the reason for the <paramref name="canBeIgnored"/> parameter.
-               /// </remarks>
-               public void RequestFault (Exception exception, bool canBeIgnored = true)
-               {
-                       if (exception == null)
-                               throw new ArgumentNullException ("exception");
-
-                       if (CanFaultOrCancelImmediatelly)
-                               Fault (exception);
-                       else {
-                               // still need to store canBeIgnored, if we don't want to add locking here
-                               if (!canBeIgnored || requestedExceptions.Count == 0)
-                                       requestedExceptions.Enqueue (Tuple.Create (exception, canBeIgnored));
-                               requestedFaultOrCancel.Value = true;
-                       }
-               }
-
-               /// <summary>
-               /// Actually faults the block with a single exception.
-               /// </summary>
-               /// <remarks>
-               /// Should be only called when <see cref="CanFaultOrCancelImmediatelly"/> is <c>true</c>.
-               /// </remarks>
-               void Fault (Exception exception)
-               {
-                       source.TrySetException (exception);
-               }
-
-               /// <summary>
-               /// Actually faults the block with a multiple exceptions.
-               /// </summary>
-               /// <remarks>
-               /// Should be only called when <see cref="CanFaultOrCancelImmediatelly"/> is <c>true</c>.
-               /// </remarks>
-               void Fault (IEnumerable<Exception> exceptions)
-               {
-                       source.TrySetException (exceptions);
-               }
-
-               /// <summary>
-               /// Requests cancellation of the block.
-               /// If the block can't be cancelled immediatelly (see <see cref="CanFaultOrCancelImmediatelly"/>),
-               /// the cancellation will be queued, and the block will cancel as soon as it can.
-               /// </summary>
-               void RequestCancel ()
-               {
-                       if (CanFaultOrCancelImmediatelly)
-                               Cancel ();
-                       else {
-                               if (requestedExceptions.Count == 0)
-                                       requestedExceptions.Enqueue (Tuple.Create<Exception, bool> (null, true));
-                               requestedFaultOrCancel.Value = true;
-                       }
-               }
-
-               /// <summary>
-               /// Actually cancels the block.
-               /// </summary>
-               /// <remarks>
-               /// Should be only called when <see cref="CanFaultOrCancelImmediatelly"/> is <c>true</c>.
-               /// </remarks>
-               void Cancel ()
-               {
-                       source.TrySetCanceled ();
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowBlock.cs
deleted file mode 100644 (file)
index e9f23a8..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-// DataflowBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       public static class DataflowBlock {
-               public static IObservable<TOutput> AsObservable<TOutput> (this ISourceBlock<TOutput> source)
-               {
-                       if (source == null)
-                               throw new ArgumentNullException ("source");
-
-                       return new ObservableDataflowBlock<TOutput> (source);
-               }
-
-               public static IObserver<TInput> AsObserver<TInput> (this ITargetBlock<TInput> target)
-               {
-                       if (target == null)
-                               throw new ArgumentNullException ("target");
-
-                       return new ObserverDataflowBlock<TInput> (target);
-               }
-
-               public static Task<int> Choose<T1, T2> (
-                       ISourceBlock<T1> source1, Action<T1> action1,
-                       ISourceBlock<T2> source2, Action<T2> action2)
-               {
-                       return Choose (source1, action1, source2, action2,
-                               DataflowBlockOptions.Default);
-               }
-
-               public static Task<int> Choose<T1, T2> (
-                       ISourceBlock<T1> source1, Action<T1> action1,
-                       ISourceBlock<T2> source2, Action<T2> action2,
-                       DataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (source1 == null)
-                               throw new ArgumentNullException ("source1");
-                       if (source2 == null)
-                               throw new ArgumentNullException ("source2");
-                       if (action1 == null)
-                               throw new ArgumentNullException ("action1");
-                       if (action2 == null)
-                               throw new ArgumentNullException ("action2");
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-
-                       var chooser = new ChooserBlock<T1, T2, object> (action1, action2, null, dataflowBlockOptions);
-                       source1.LinkTo (chooser.Target1);
-                       source2.LinkTo (chooser.Target2);
-
-                       Task.WhenAll (source1.Completion, source2.Completion)
-                               .ContinueWith (_ => chooser.AllSourcesCompleted ());
-
-                       return chooser.Completion;
-               }
-
-               public static Task<int> Choose<T1, T2, T3> (
-                       ISourceBlock<T1> source1, Action<T1> action1,
-                       ISourceBlock<T2> source2, Action<T2> action2,
-                       ISourceBlock<T3> source3, Action<T3> action3)
-               {
-                       return Choose (source1, action1, source2, action2, source3, action3,
-                               DataflowBlockOptions.Default);
-               }
-
-               public static Task<int> Choose<T1, T2, T3> (
-                       ISourceBlock<T1> source1, Action<T1> action1,
-                       ISourceBlock<T2> source2, Action<T2> action2,
-                       ISourceBlock<T3> source3, Action<T3> action3,
-                       DataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (source1 == null)
-                               throw new ArgumentNullException ("source1");
-                       if (source2 == null)
-                               throw new ArgumentNullException ("source2");
-                       if (source3 == null)
-                               throw new ArgumentNullException ("source3");
-                       if (action1 == null)
-                               throw new ArgumentNullException ("action1");
-                       if (action2 == null)
-                               throw new ArgumentNullException ("action2");
-                       if (action3 == null)
-                               throw new ArgumentNullException ("action3");
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-
-                       var chooser = new ChooserBlock<T1, T2, T3> (action1, action2, action3, dataflowBlockOptions);
-                       source1.LinkTo (chooser.Target1);
-                       source2.LinkTo (chooser.Target2);
-                       source3.LinkTo (chooser.Target3);
-
-                       Task.WhenAll (source1.Completion, source2.Completion, source3.Completion)
-                               .ContinueWith (_ => chooser.AllSourcesCompleted ());
-
-                       return chooser.Completion;
-               }
-
-               public static IPropagatorBlock<TInput, TOutput> Encapsulate<TInput, TOutput> (
-                       ITargetBlock<TInput> target, ISourceBlock<TOutput> source)
-               {
-                       return new PropagatorWrapperBlock<TInput, TOutput> (target, source);
-               }
-
-               public static IDisposable LinkTo<TOutput> (this ISourceBlock<TOutput> source, ITargetBlock<TOutput> target)
-               {
-                       if (source == null)
-                               throw new ArgumentNullException ("source");
-
-                       return source.LinkTo (target, DataflowLinkOptions.Default);
-               }
-
-               public static IDisposable LinkTo<TOutput> (
-                       this ISourceBlock<TOutput> source, ITargetBlock<TOutput> target,
-                       Predicate<TOutput> predicate)
-               {
-                       if (source == null)
-                               throw new ArgumentNullException ("source");
-
-                       return source.LinkTo (target, DataflowLinkOptions.Default, predicate);
-               }
-
-               public static IDisposable LinkTo<TOutput> (
-                       this ISourceBlock<TOutput> source, ITargetBlock<TOutput> target,
-                       DataflowLinkOptions linkOptions, Predicate<TOutput> predicate)
-               {
-                       if (source == null)
-                               throw new ArgumentNullException ("source");
-                       if (predicate == null)
-                               throw new ArgumentNullException ("predicate");
-                       if (target == null)
-                               throw new ArgumentNullException ("target");
-
-                       var predicateBlock = new PredicateBlock<TOutput> (source, target, predicate);
-
-                       return source.LinkTo (predicateBlock, linkOptions);
-               }
-
-               public static Task<bool> OutputAvailableAsync<TOutput> (
-                       this ISourceBlock<TOutput> source)
-               {
-                       return OutputAvailableAsync (source, CancellationToken.None);
-               }
-
-               public static Task<bool> OutputAvailableAsync<TOutput> (
-                       this ISourceBlock<TOutput> source, CancellationToken cancellationToken)
-               {
-                       if (source == null)
-                               throw new ArgumentNullException ("source");
-
-                       cancellationToken.ThrowIfCancellationRequested ();
-
-                       if (source.Completion.IsCompleted || source.Completion.IsCanceled
-                           || source.Completion.IsFaulted)
-                               return Task.FromResult (false);
-
-                       var block = new OutputAvailableBlock<TOutput> ();
-                       var bridge = source.LinkTo (block,
-                               new DataflowLinkOptions { PropagateCompletion = true });
-                       return block.AsyncGet (bridge, cancellationToken);
-               }
-
-               public static bool Post<TInput> (this ITargetBlock<TInput> target, TInput item)
-               {
-                       if (target == null)
-                               throw new ArgumentNullException ("target");
-
-                       return target.OfferMessage (new DataflowMessageHeader(1), item, null, false)
-                              == DataflowMessageStatus.Accepted;
-               }
-
-               public static TOutput Receive<TOutput> (this ISourceBlock<TOutput> source)
-               {
-                       return Receive (source, TimeSpan.FromMilliseconds (-1), CancellationToken.None);
-               }
-
-               public static TOutput Receive<TOutput> (this ISourceBlock<TOutput> source, CancellationToken cancellationToken)
-               {
-                       return Receive (source, TimeSpan.FromMilliseconds (-1), cancellationToken);
-               }
-
-               public static TOutput Receive<TOutput> (this ISourceBlock<TOutput> source, TimeSpan timeout)
-               {
-                       return Receive (source, timeout, CancellationToken.None);
-               }
-
-               public static TOutput Receive<TOutput> (
-                       this ISourceBlock<TOutput> source, TimeSpan timeout,
-                       CancellationToken cancellationToken)
-               {
-                       if (source == null)
-                               throw new ArgumentNullException ("source");
-                       if (timeout.TotalMilliseconds < -1)
-                               throw new ArgumentOutOfRangeException ("timeout");
-                       if (timeout.TotalMilliseconds > int.MaxValue)
-                               throw new ArgumentOutOfRangeException ("timeout");
-
-                       cancellationToken.ThrowIfCancellationRequested ();
-
-                       TOutput item;
-                       var receivableSource = source as IReceivableSourceBlock<TOutput>;
-                       if (receivableSource != null && receivableSource.TryReceive (null, out item))
-                               return item;
-
-                       if (source.Completion.IsCompleted || source.Completion.IsCanceled
-                           || source.Completion.IsFaulted)
-                               throw new InvalidOperationException (
-                                       "No item could be received from the source.");
-
-                       int timeoutMilliseconds = (int)timeout.TotalMilliseconds;
-                       var block = new ReceiveBlock<TOutput> (cancellationToken, timeoutMilliseconds);
-                       var bridge = source.LinkTo (block,
-                               new DataflowLinkOptions { PropagateCompletion = true });
-                       return block.WaitAndGet (bridge);
-               }
-
-               public static Task<TOutput> ReceiveAsync<TOutput> (this ISourceBlock<TOutput> source)
-               {
-                       return ReceiveAsync (source, TimeSpan.FromMilliseconds (-1), CancellationToken.None);
-               }
-
-               public static Task<TOutput> ReceiveAsync<TOutput> (this ISourceBlock<TOutput> source, CancellationToken cancellationToken)
-               {
-                       return ReceiveAsync (source, TimeSpan.FromMilliseconds (-1), cancellationToken);
-               }
-
-               public static Task<TOutput> ReceiveAsync<TOutput> (this ISourceBlock<TOutput> source, TimeSpan timeout)
-               {
-                       return ReceiveAsync (source, timeout, CancellationToken.None);
-               }
-
-               public static Task<TOutput> ReceiveAsync<TOutput> (
-                       this ISourceBlock<TOutput> source, TimeSpan timeout,
-                       CancellationToken cancellationToken)
-               {
-                       if (source == null)
-                               throw new ArgumentNullException ("source");
-                       if (timeout.TotalMilliseconds < -1)
-                               throw new ArgumentOutOfRangeException ("timeout");
-                       if (timeout.TotalMilliseconds > int.MaxValue)
-                               throw new ArgumentOutOfRangeException ("timeout");
-
-                       cancellationToken.ThrowIfCancellationRequested ();
-
-                       int timeoutMilliseconds = (int)timeout.TotalMilliseconds;
-                       var block = new ReceiveBlock<TOutput> (cancellationToken, timeoutMilliseconds);
-                       var bridge = source.LinkTo (block);
-                       return block.AsyncGet (bridge);
-               }
-
-               public static bool TryReceive<TOutput> (this IReceivableSourceBlock<TOutput> source, out TOutput item)
-               {
-                       item = default (TOutput);
-                       if (source == null)
-                               throw new ArgumentNullException ("source");
-
-                       return source.TryReceive (null, out item);
-               }
-
-               public static Task<bool> SendAsync<TInput> (
-                       this ITargetBlock<TInput> target, TInput item)
-               {
-                       return SendAsync (target, item, CancellationToken.None);
-               }
-
-               public static Task<bool> SendAsync<TInput> (
-                       this ITargetBlock<TInput> target, TInput item,
-                       CancellationToken cancellationToken)
-               {
-                       if (target == null)
-                               throw new ArgumentNullException ("target");
-
-                       cancellationToken.ThrowIfCancellationRequested ();
-
-                       var status = target.OfferMessage (
-                               new DataflowMessageHeader (1), item, null, false);
-
-                       if (status == DataflowMessageStatus.Accepted)
-                               return Task.FromResult (true);
-                       if (status != DataflowMessageStatus.Declined
-                           && status != DataflowMessageStatus.Postponed)
-                               return Task.FromResult (false);
-
-                       var block = new SendBlock<TInput> (target, item, cancellationToken);
-                       return block.Send ();
-               }
-
-               public static ITargetBlock<TInput> NullTarget<TInput>()
-               {
-                       return new NullTargetBlock<TInput> ();
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowBlockOptions.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowBlockOptions.cs
deleted file mode 100644 (file)
index 608e22f..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-// DataflowBlockOptions.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       public class DataflowBlockOptions {
-               static readonly DataflowBlockOptions DefaultOptions =
-                       new DataflowBlockOptions ();
-
-               /// <summary>
-               /// Cached default block options
-               /// </summary>
-               internal static DataflowBlockOptions Default {
-                       get { return DefaultOptions; }
-               }
-
-               public const int Unbounded = -1;
-
-               int boundedCapacity;
-               int maxMessagesPerTask;
-               TaskScheduler taskScheduler;
-               string nameFormat;
-
-               public DataflowBlockOptions ()
-               {
-                       BoundedCapacity = -1;
-                       CancellationToken = CancellationToken.None;
-                       MaxMessagesPerTask = -1;
-                       TaskScheduler = TaskScheduler.Default;
-                       NameFormat = "{0} Id={1}";
-               }
-
-               public int BoundedCapacity {
-                       get { return boundedCapacity; }
-                       set {
-                               if (value < -1)
-                                       throw new ArgumentOutOfRangeException("value");
-
-                               boundedCapacity = value;
-                       }
-               }
-
-               public CancellationToken CancellationToken { get; set; }
-
-               public int MaxMessagesPerTask {
-                       get { return maxMessagesPerTask; }
-                       set {
-                               if (value < -1)
-                                       throw new ArgumentOutOfRangeException("value");
-
-                               maxMessagesPerTask = value;
-                       }
-               }
-
-               public TaskScheduler TaskScheduler {
-                       get { return taskScheduler; }
-                       set {
-                               if (value == null)
-                                       throw new ArgumentNullException("value");
-
-                               taskScheduler = value;
-                       }
-               }
-
-               public string NameFormat {
-                       get { return nameFormat; }
-                       set {
-                               if (value == null)
-                                       throw new ArgumentNullException("value");
-
-                               nameFormat = value;
-                       }
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowLinkOptions.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowLinkOptions.cs
deleted file mode 100644 (file)
index 6411b2c..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-// DataflowLinkOptions.cs
-//
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       public class DataflowLinkOptions {
-               static readonly DataflowLinkOptions DefaultOptions =
-                       new DataflowLinkOptions ();
-
-               int maxMessages;
-
-               internal static DataflowLinkOptions Default {
-                       get { return DefaultOptions; }
-               }
-
-               public DataflowLinkOptions()
-               {
-                       PropagateCompletion = false;
-                       MaxMessages = DataflowBlockOptions.Unbounded;
-                       Append = true;
-               }
-
-               public bool PropagateCompletion { get; set; }
-
-               public int MaxMessages {
-                       get { return maxMessages; }
-                       set {
-                               if (value < -1)
-                                       throw new ArgumentOutOfRangeException("value");
-                               
-                               maxMessages = value;
-                       }
-               }
-
-               public bool Append { get; set; }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowMessageHeader.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowMessageHeader.cs
deleted file mode 100644 (file)
index 38ceb02..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-// DataflowMessageHeader.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       public struct DataflowMessageHeader : IEquatable<DataflowMessageHeader> {
-               readonly long id;
-
-               public DataflowMessageHeader (long id)
-               {
-                       if (id == 0)
-                               throw new ArgumentException("The value of 0 can't be used as an id for a valid header.");
-
-                       this.id = id;
-               }
-
-               public long Id {
-                       get {
-                               return id;
-                       }
-               }
-
-               public bool IsValid {
-                       get {
-                               return id != 0;
-                       }
-               }
-
-               public override bool Equals (object obj)
-               {
-                       return obj is DataflowMessageHeader && Equals ((DataflowMessageHeader)obj);
-               }
-
-               public bool Equals (DataflowMessageHeader other)
-               {
-                       return other.id == id;
-               }
-
-               public override int GetHashCode ()
-               {
-                       return id.GetHashCode ();
-               }
-
-               public static bool operator== (DataflowMessageHeader left, DataflowMessageHeader right)
-               {
-                       return left.Equals (right);
-               }
-
-               public static bool operator!= (DataflowMessageHeader left, DataflowMessageHeader right)
-               {
-                       return !left.Equals (right);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowMessageStatus.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/DataflowMessageStatus.cs
deleted file mode 100644 (file)
index 63ec610..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-// DataflowMessageStatus.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-
-using System;
-using System.Threading.Tasks;
-using System.Collections.Generic;
-
-namespace System.Threading.Tasks.Dataflow
-{
-       public enum DataflowMessageStatus
-       {
-               Accepted,
-               Declined,
-               Postponed,
-               NotAvailable,
-               DecliningPermanently
-       }
-}
-
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ExecutingMessageBox.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ExecutingMessageBox.cs
deleted file mode 100644 (file)
index bbeccb5..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-// ExecutingMessageBox.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Message box for executing blocks with synchrnous actions.
-       /// </summary>
-       /// <typeparam name="TInput">Type of the item the block is processing.</typeparam>
-       class ExecutingMessageBox<TInput> : ExecutingMessageBoxBase<TInput> {
-               readonly Func<bool> processItem;
-
-               public ExecutingMessageBox (
-                       ITargetBlock<TInput> target, BlockingCollection<TInput> messageQueue,
-                       CompletionHelper compHelper, Func<bool> externalCompleteTester,
-                       Func<bool> processItem, Action outgoingQueueComplete,
-                       ExecutionDataflowBlockOptions options)
-                       : base (
-                               target, messageQueue, compHelper, externalCompleteTester,
-                               outgoingQueueComplete, options)
-               {
-                       this.processItem = processItem;
-               }
-
-               /// <summary>
-               /// Processes the input queue of the block.
-               /// </summary>
-               protected override void ProcessQueue ()
-               {
-                       StartProcessQueue ();
-
-                       try {
-                               int i = 0;
-                               while (CanRun (i)) {
-                                       if (!processItem ())
-                                               break;
-                                       i++;
-                               }
-                       } catch (Exception e) {
-                               CompHelper.RequestFault (e, false);
-                       }
-
-                       FinishProcessQueue ();
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ExecutingMessageBoxBase.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ExecutingMessageBoxBase.cs
deleted file mode 100644 (file)
index d601566..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-// ExecutingMessageBoxBase.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Base message box for execution blocks (synchronous and asynchrnous).
-       /// </summary>
-       /// <typeparam name="TInput">Type of the item the block is processing.</typeparam>
-       abstract class ExecutingMessageBoxBase<TInput> : MessageBox<TInput> {
-               protected ExecutionDataflowBlockOptions Options { get; private set; }
-               readonly Action outgoingQueueComplete;
-
-               // even number: Task is waiting to run
-               // odd number: Task is not waiting to run
-               // invariant: dop / 2 Tasks are running or waiting
-               int degreeOfParallelism = 1;
-
-               protected ExecutingMessageBoxBase (
-                       ITargetBlock<TInput> target, BlockingCollection<TInput> messageQueue,
-                       CompletionHelper compHelper, Func<bool> externalCompleteTester,
-                       Action outgoingQueueComplete, ExecutionDataflowBlockOptions options)
-                       : base (
-                               target, messageQueue, compHelper, externalCompleteTester,
-                               options)
-               {
-                       this.Options = options;
-                       this.outgoingQueueComplete = outgoingQueueComplete;
-               }
-
-               /// <summary>
-               /// Makes sure the input queue is processed the way it needs to.
-               /// </summary>
-               /// <param name="newItem">Was new item just added?</param>
-               protected override void EnsureProcessing (bool newItem)
-               {
-                       StartProcessing ();
-               }
-
-               /// <summary>
-               /// Starts processing queue on a task,
-               /// assuming <see cref="ExecutionDataflowBlockOptions.MaxDegreeOfParallelism"/>
-               /// was't reached yet.
-               /// </summary>
-               void StartProcessing ()
-               {
-                       // atomically increase degreeOfParallelism by 1 only if it's odd
-                       // and low enough
-                       int startDegreeOfParallelism;
-                       int currentDegreeOfParallelism = degreeOfParallelism;
-                       do {
-                               startDegreeOfParallelism = currentDegreeOfParallelism;
-                               if (startDegreeOfParallelism % 2 == 0
-                                   || (Options.MaxDegreeOfParallelism != DataflowBlockOptions.Unbounded
-                                       && startDegreeOfParallelism / 2 >= Options.MaxDegreeOfParallelism))
-                                       return;
-                               currentDegreeOfParallelism =
-                                       Interlocked.CompareExchange (ref degreeOfParallelism,
-                                               startDegreeOfParallelism + 1, startDegreeOfParallelism);
-                       } while (startDegreeOfParallelism != currentDegreeOfParallelism);
-
-                       Task.Factory.StartNew (ProcessQueue, CancellationToken.None,
-                               TaskCreationOptions.PreferFairness, Options.TaskScheduler);
-               }
-
-               /// <summary>
-               /// Processes the input queue of the block.
-               /// </summary>
-               /// <remarks>
-               /// Should first call <see cref="StartProcessQueue"/>,
-               /// then process the queue and finally call <see cref="FinishProcessQueue"/>.
-               /// </remarks>
-               protected abstract void ProcessQueue ();
-
-               /// <summary>
-               /// Notifies that another processing task was started.
-               /// Should be called right after <see cref="ProcessQueue"/> is actually executed.
-               /// </summary>
-               protected void StartProcessQueue ()
-               {
-                       CompHelper.CanFaultOrCancelImmediatelly = false;
-
-                       int incrementedDegreeOfParallelism =
-                               Interlocked.Increment (ref degreeOfParallelism);
-                       if ((Options.MaxDegreeOfParallelism == DataflowBlockOptions.Unbounded
-                            || incrementedDegreeOfParallelism / 2 < Options.MaxDegreeOfParallelism)
-                           && MessageQueue.Count > 1 && CompHelper.CanRun)
-                               StartProcessing ();
-               }
-
-               /// <summary>
-               /// Notifies that a processing task was finished.
-               /// Should be called after <see cref="ProcessQueue"/> actually finishes processing.
-               /// </summary>
-               protected void FinishProcessQueue ()
-               {
-                       int decrementedDegreeOfParallelism =
-                               Interlocked.Add (ref degreeOfParallelism, -2);
-
-                       if (decrementedDegreeOfParallelism % 2 == 1) {
-                               if (decrementedDegreeOfParallelism == 1) {
-                                       CompHelper.CanFaultOrCancelImmediatelly = true;
-                                       base.VerifyCompleteness ();
-                                       if (MessageQueue.IsCompleted)
-                                               outgoingQueueComplete ();
-                               }
-                               if (MessageQueue.Count > 0 && CompHelper.CanRun)
-                                       StartProcessing ();
-                       }
-               }
-
-               /// <summary>
-               /// Notifies that outgoing queue should be completed, if possible.
-               /// </summary>
-               protected override void OutgoingQueueComplete ()
-               {
-                       if (MessageQueue.IsCompleted
-                           && Volatile.Read (ref degreeOfParallelism) == 1)
-                               outgoingQueueComplete ();
-               }
-
-               /// <summary>
-               /// Makes sure the block is completed if it should be.
-               /// </summary>
-               protected override void VerifyCompleteness ()
-               {
-                       if (Volatile.Read (ref degreeOfParallelism) == 1)
-                               base.VerifyCompleteness ();
-               }
-
-               /// <summary>
-               /// Indicates whether a processing task can continue executing.
-               /// </summary>
-               /// <param name="iteration">The number of the iteration of the task, starting from 0.</param>
-               protected bool CanRun (int iteration)
-               {
-                       return CompHelper.CanRun
-                              && (Options.MaxMessagesPerTask == DataflowBlockOptions.Unbounded
-                                  || iteration < Options.MaxMessagesPerTask);
-               }
-       }
-}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ExecutionDataflowBlockOptions.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ExecutionDataflowBlockOptions.cs
deleted file mode 100644 (file)
index 2b56582..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-// ExecutionDataflowBlockOptions.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       public class ExecutionDataflowBlockOptions : DataflowBlockOptions {
-               static readonly ExecutionDataflowBlockOptions DefaultOptions =
-                       new ExecutionDataflowBlockOptions ();
-
-               int maxDegreeOfParallelism;
-
-               /// <summary>
-               /// Cached default block options
-               /// </summary>
-               internal static new ExecutionDataflowBlockOptions Default {
-                       get { return DefaultOptions; }
-               }
-
-               public ExecutionDataflowBlockOptions ()
-               {
-                       MaxDegreeOfParallelism = 1;
-               }
-
-               public int MaxDegreeOfParallelism {
-                       get { return maxDegreeOfParallelism; }
-                       set {
-                               if (value < -1)
-                                       throw new ArgumentOutOfRangeException("value");
-
-                               maxDegreeOfParallelism = value;
-                       }
-               }
-
-               public bool SingleProducerConstrained { get; set; }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/GroupingDataflowBlockOptions.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/GroupingDataflowBlockOptions.cs
deleted file mode 100644 (file)
index f7a24d4..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-// GroupingDataflowBlockOptions.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow
-{
-       public class GroupingDataflowBlockOptions : DataflowBlockOptions {
-               static readonly GroupingDataflowBlockOptions DefaultOptions =
-                       new GroupingDataflowBlockOptions ();
-
-               long maxNumberOfGroups;
-
-               /// <summary>
-               /// Cached default block options
-               /// </summary>
-               internal static new GroupingDataflowBlockOptions Default {
-                       get { return DefaultOptions; }
-               }
-
-               public GroupingDataflowBlockOptions ()
-               {
-                       Greedy = true;
-                       MaxNumberOfGroups = -1;
-               }
-
-               public bool Greedy { get; set; }
-
-               public long MaxNumberOfGroups {
-                       get { return maxNumberOfGroups; }
-                       set {
-                               if (value < -1)
-                                       throw new ArgumentOutOfRangeException("value");
-                               
-                               maxNumberOfGroups = value;
-                       }
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/IDataflowBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/IDataflowBlock.cs
deleted file mode 100644 (file)
index a6e69b5..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-// IDataflowBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       public interface IDataflowBlock {
-               Task Completion { get; }
-
-               void Complete ();
-               void Fault (Exception exception);
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/IPropagatorBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/IPropagatorBlock.cs
deleted file mode 100644 (file)
index 0ac3f2b..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-// IPropagatorBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       public interface IPropagatorBlock<in TInput, out TOutput>
-               : ITargetBlock<TInput>, ISourceBlock<TOutput> {
-               }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/IReceivableSourceBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/IReceivableSourceBlock.cs
deleted file mode 100644 (file)
index dc35f58..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-// DataflowBlockOptions.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-
-namespace System.Threading.Tasks.Dataflow {
-       public interface IReceivableSourceBlock<TOutput> : ISourceBlock<TOutput> {
-               bool TryReceive (Predicate<TOutput> filter, out TOutput item);
-               bool TryReceiveAll (out IList<TOutput> items);
-                                                          }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ISourceBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ISourceBlock.cs
deleted file mode 100644 (file)
index 325a4fa..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-// ISourceBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       public interface ISourceBlock<out TOutput> : IDataflowBlock {
-               TOutput ConsumeMessage (DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target, out bool messageConsumed);
-               IDisposable LinkTo (ITargetBlock<TOutput> target, DataflowLinkOptions linkOptions);
-               void ReleaseReservation (DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target);
-               bool ReserveMessage (DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target);
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ITargetBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ITargetBlock.cs
deleted file mode 100644 (file)
index a64569e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-// ITargetBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       public interface ITargetBlock<in TInput> : IDataflowBlock {
-               DataflowMessageStatus OfferMessage (
-                       DataflowMessageHeader messageHeader, TInput messageValue,
-                       ISourceBlock<TInput> source, bool consumeToAccept);
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/JoinBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/JoinBlock.cs
deleted file mode 100644 (file)
index fb424fc..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-// JoinBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-
-namespace System.Threading.Tasks.Dataflow
-{
-       public sealed class JoinBlock<T1, T2> : IReceivableSourceBlock<Tuple<T1, T2>>
-       {
-               readonly CompletionHelper compHelper;
-               readonly GroupingDataflowBlockOptions dataflowBlockOptions;
-               readonly OutgoingQueue<Tuple<T1, T2>> outgoing;
-
-               readonly JoinTarget<T1> target1;
-               readonly JoinTarget<T2> target2;
-
-               SpinLock targetLock = new SpinLock(false);
-               readonly AtomicBoolean nonGreedyProcessing = new AtomicBoolean ();
-
-               long target1Count;
-               long target2Count;
-               long numberOfGroups;
-
-               public JoinBlock () : this (GroupingDataflowBlockOptions.Default)
-               {
-               }
-
-               public JoinBlock (GroupingDataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-
-                       this.dataflowBlockOptions = dataflowBlockOptions;
-                       compHelper = CompletionHelper.GetNew (dataflowBlockOptions);
-                       target1 = new JoinTarget<T1> (this, SignalArrivalTarget, compHelper,
-                               () => outgoing.IsCompleted, dataflowBlockOptions,
-                               dataflowBlockOptions.Greedy, TryAdd1);
-                       target2 = new JoinTarget<T2> (this, SignalArrivalTarget, compHelper,
-                               () => outgoing.IsCompleted, dataflowBlockOptions,
-                               dataflowBlockOptions.Greedy, TryAdd2);
-                       outgoing = new OutgoingQueue<Tuple<T1, T2>> (this, compHelper,
-                               () => target1.Buffer.IsCompleted || target2.Buffer.IsCompleted,
-                               _ =>
-                               {
-                                       target1.DecreaseCount ();
-                                       target2.DecreaseCount ();
-                               }, dataflowBlockOptions);
-               }
-
-               public IDisposable LinkTo (ITargetBlock<Tuple<T1, T2>> target, DataflowLinkOptions linkOptions)
-               {
-                       return outgoing.AddTarget (target, linkOptions);
-               }
-
-               public bool TryReceive (Predicate<Tuple<T1, T2>> filter, out Tuple<T1, T2> item)
-               {
-                       return outgoing.TryReceive (filter, out item);
-               }
-
-               public bool TryReceiveAll (out IList<Tuple<T1, T2>> items)
-               {
-                       return outgoing.TryReceiveAll (out items);
-               }
-
-               Tuple<T1, T2> ISourceBlock<Tuple<T1, T2>>.ConsumeMessage (
-                       DataflowMessageHeader messageHeader, ITargetBlock<Tuple<T1, T2>> target,
-                       out bool messageConsumed)
-               {
-                       return outgoing.ConsumeMessage (messageHeader, target, out messageConsumed);
-               }
-
-               void ISourceBlock<Tuple<T1, T2>>.ReleaseReservation (
-                       DataflowMessageHeader messageHeader, ITargetBlock<Tuple<T1, T2>> target)
-               {
-                       outgoing.ReleaseReservation (messageHeader, target);
-               }
-
-               bool ISourceBlock<Tuple<T1, T2>>.ReserveMessage (
-                       DataflowMessageHeader messageHeader, ITargetBlock<Tuple<T1, T2>> target)
-               {
-                       return outgoing.ReserveMessage (messageHeader, target);
-               }
-
-               public void Complete ()
-               {
-                       target1.Complete ();
-                       target2.Complete ();
-                       outgoing.Complete ();
-               }
-
-               void IDataflowBlock.Fault (Exception exception)
-               {
-                       compHelper.RequestFault (exception);
-               }
-
-               public Task Completion {
-                       get { return compHelper.Completion; }
-               }
-
-               /// <summary>
-               /// Returns whether a new item can be accepted by the first target,
-               /// and increments a counter if it can.
-               /// </summary>
-               bool TryAdd1 ()
-               {
-                       return dataflowBlockOptions.MaxNumberOfGroups == -1
-                              || Interlocked.Increment (ref target1Count)
-                              <= dataflowBlockOptions.MaxNumberOfGroups;
-               }
-
-               /// <summary>
-               /// Returns whether a new item can be accepted by the second target,
-               /// and increments a counter if it can.
-               /// </summary>
-               bool TryAdd2 ()
-               {
-                       return dataflowBlockOptions.MaxNumberOfGroups == -1
-                              || Interlocked.Increment (ref target2Count)
-                              <= dataflowBlockOptions.MaxNumberOfGroups;
-               }
-
-               /// <summary>
-               /// Decides whether to create a new tuple or not.
-               /// </summary>
-               void SignalArrivalTarget ()
-               {
-                       if (dataflowBlockOptions.Greedy) {
-                               bool taken = false;
-                               T1 value1;
-                               T2 value2;
-
-                               try {
-                                       targetLock.Enter (ref taken);
-
-                                       if (target1.Buffer.Count == 0 || target2.Buffer.Count == 0)
-                                               return;
-
-                                       value1 = target1.Buffer.Take ();
-                                       value2 = target2.Buffer.Take ();
-                               } finally {
-                                       if (taken)
-                                               targetLock.Exit ();
-                               }
-
-                               TriggerMessage (value1, value2);
-                       } else {
-                               if (ShouldProcessNonGreedy ())
-                                       EnsureNonGreedyProcessing ();
-                       }
-               }
-
-               /// <summary>
-               /// Returns whether non-greedy creation of a tuple should be started.
-               /// </summary>
-               bool ShouldProcessNonGreedy ()
-               {
-                       return target1.PostponedMessagesCount >= 1
-                              && target2.PostponedMessagesCount >= 1
-                              && (dataflowBlockOptions.BoundedCapacity == -1
-                                  || outgoing.Count < dataflowBlockOptions.BoundedCapacity);
-               }
-
-               /// <summary>
-               /// Starts non-greedy creation of tuples, if one doesn't already run.
-               /// </summary>
-               void EnsureNonGreedyProcessing ()
-               {
-                       if (nonGreedyProcessing.TrySet ())
-                               Task.Factory.StartNew (NonGreedyProcess,
-                                       dataflowBlockOptions.CancellationToken,
-                                       TaskCreationOptions.PreferFairness,
-                                       dataflowBlockOptions.TaskScheduler);
-               }
-
-               /// <summary>
-               /// Creates tuples in non-greedy mode,
-               /// making sure the whole tuple is available by using reservations.
-               /// </summary>
-               void NonGreedyProcess()
-               {
-                       while (ShouldProcessNonGreedy ()) {
-                               var reservation1 = target1.ReserveMessage ();
-
-                               if (reservation1 == null)
-                                       break;
-
-                               var reservation2 = target2.ReserveMessage ();
-                               if (reservation2 == null) {
-                                       target1.RelaseReservation (reservation1);
-                                       break;
-                               }
-
-                               var value1 = target1.ConsumeReserved (reservation1);
-                               var value2 = target2.ConsumeReserved (reservation2);
-
-                               TriggerMessage (value1, value2);
-                       }
-
-                       nonGreedyProcessing.Value = false;
-
-                       if (ShouldProcessNonGreedy ())
-                               EnsureNonGreedyProcessing ();
-               }
-
-
-               /// <summary>
-               /// Creates a tuple from the given values and adds the result to the output queue.
-               /// </summary>
-               void TriggerMessage (T1 val1, T2 val2)
-               {
-                       outgoing.AddData (Tuple.Create (val1, val2));
-
-                       if (dataflowBlockOptions.MaxNumberOfGroups != -1
-                           && Interlocked.Increment (ref numberOfGroups)
-                           >= dataflowBlockOptions.MaxNumberOfGroups)
-                               Complete ();
-               }
-
-               public ITargetBlock<T1> Target1 {
-                       get { return target1; }
-               }
-
-               public ITargetBlock<T2> Target2 {
-                       get { return target2; }
-               }
-
-               public int OutputCount {
-                       get { return outgoing.Count; }
-               }
-
-               public override string ToString ()
-               {
-                       return NameHelper.GetName (this, dataflowBlockOptions);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/JoinBlock`3.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/JoinBlock`3.cs
deleted file mode 100644 (file)
index 419beb7..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-// JoinBlock`3.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-
-namespace System.Threading.Tasks.Dataflow
-{
-       public sealed class JoinBlock<T1, T2, T3> : IReceivableSourceBlock<Tuple<T1, T2, T3>>
-       {
-               readonly CompletionHelper compHelper;
-               readonly GroupingDataflowBlockOptions dataflowBlockOptions;
-               readonly OutgoingQueue<Tuple<T1, T2, T3>> outgoing;
-
-               readonly JoinTarget<T1> target1;
-               readonly JoinTarget<T2> target2;
-               readonly JoinTarget<T3> target3;
-
-               SpinLock targetLock = new SpinLock (false);
-               readonly AtomicBoolean nonGreedyProcessing = new AtomicBoolean ();
-
-               long target1Count;
-               long target2Count;
-               long target3Count;
-               long numberOfGroups;
-
-               public JoinBlock () : this (GroupingDataflowBlockOptions.Default)
-               {
-               }
-
-               public JoinBlock (GroupingDataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-
-                       this.dataflowBlockOptions = dataflowBlockOptions;
-                       this.compHelper = CompletionHelper.GetNew (dataflowBlockOptions);
-
-                       target1 = new JoinTarget<T1> (this, SignalArrivalTarget, compHelper,
-                               () => outgoing.IsCompleted, dataflowBlockOptions,
-                               dataflowBlockOptions.Greedy, TryAdd1);
-                       target2 = new JoinTarget<T2> (this, SignalArrivalTarget, compHelper,
-                               () => outgoing.IsCompleted, dataflowBlockOptions,
-                               dataflowBlockOptions.Greedy, TryAdd2);
-                       target3 = new JoinTarget<T3> (this, SignalArrivalTarget, compHelper,
-                               () => outgoing.IsCompleted, dataflowBlockOptions,
-                               dataflowBlockOptions.Greedy, TryAdd3);
-                       outgoing = new OutgoingQueue<Tuple<T1, T2, T3>> (
-                               this, compHelper,
-                               () => target1.Buffer.IsCompleted || target2.Buffer.IsCompleted
-                                     || target3.Buffer.IsCompleted,
-                               _ =>
-                               {
-                                       target1.DecreaseCount ();
-                                       target2.DecreaseCount ();
-                                       target3.DecreaseCount ();
-                               }, dataflowBlockOptions);
-               }
-
-               public IDisposable LinkTo (ITargetBlock<Tuple<T1, T2, T3>> target, DataflowLinkOptions linkOptions)
-               {
-                       return outgoing.AddTarget (target, linkOptions);
-               }
-
-               public bool TryReceive (Predicate<Tuple<T1, T2, T3>> filter, out Tuple<T1, T2, T3> item)
-               {
-                       return outgoing.TryReceive (filter, out item);
-               }
-
-               public bool TryReceiveAll (out IList<Tuple<T1, T2, T3>> items)
-               {
-                       return outgoing.TryReceiveAll (out items);
-               }
-
-               Tuple<T1, T2, T3> ISourceBlock<Tuple<T1, T2, T3>>.ConsumeMessage (
-                       DataflowMessageHeader messageHeader, ITargetBlock<Tuple<T1, T2, T3>> target,
-                       out bool messageConsumed)
-               {
-                       return outgoing.ConsumeMessage (messageHeader, target, out messageConsumed);
-               }
-
-               void ISourceBlock<Tuple<T1, T2, T3>>.ReleaseReservation (
-                       DataflowMessageHeader messageHeader, ITargetBlock<Tuple<T1, T2, T3>> target)
-               {
-                       outgoing.ReleaseReservation (messageHeader, target);
-               }
-
-               bool ISourceBlock<Tuple<T1, T2, T3>>.ReserveMessage (
-                       DataflowMessageHeader messageHeader, ITargetBlock<Tuple<T1, T2, T3>> target)
-               {
-                       return outgoing.ReserveMessage (messageHeader, target);
-               }
-
-               public void Complete ()
-               {
-                       target1.Complete ();
-                       target2.Complete ();
-                       target3.Complete ();
-                       outgoing.Complete ();
-               }
-
-               void IDataflowBlock.Fault (Exception exception)
-               {
-                       compHelper.RequestFault (exception);
-               }
-
-               public Task Completion {
-                       get { return compHelper.Completion; }
-               }
-
-               /// <summary>
-               /// Returns whether a new item can be accepted by the first target,
-               /// and increments a counter if it can.
-               /// </summary>
-               bool TryAdd1 ()
-               {
-                       return dataflowBlockOptions.MaxNumberOfGroups == -1
-                              || Interlocked.Increment (ref target1Count)
-                              <= dataflowBlockOptions.MaxNumberOfGroups;
-               }
-
-               /// <summary>
-               /// Returns whether a new item can be accepted by the second target,
-               /// and increments a counter if it can.
-               /// </summary>
-               bool TryAdd2 ()
-               {
-                       return dataflowBlockOptions.MaxNumberOfGroups == -1
-                              || Interlocked.Increment (ref target2Count)
-                              <= dataflowBlockOptions.MaxNumberOfGroups;
-               }
-
-               /// <summary>
-               /// Returns whether a new item can be accepted by the third target,
-               /// and increments a counter if it can.
-               /// </summary>
-               bool TryAdd3 ()
-               {
-                       return dataflowBlockOptions.MaxNumberOfGroups == -1
-                              || Interlocked.Increment (ref target3Count)
-                              <= dataflowBlockOptions.MaxNumberOfGroups;
-               }
-
-               /// <summary>
-               /// Decides whether to create a new tuple or not.
-               /// </summary>
-               void SignalArrivalTarget ()
-               {
-                       if (dataflowBlockOptions.Greedy) {
-                               bool taken = false;
-                               T1 value1;
-                               T2 value2;
-                               T3 value3;
-
-                               try {
-                                       targetLock.Enter (ref taken);
-
-                                       if (target1.Buffer.Count == 0 || target2.Buffer.Count == 0
-                                           || target3.Buffer.Count == 0)
-                                               return;
-
-                                       value1 = target1.Buffer.Take ();
-                                       value2 = target2.Buffer.Take ();
-                                       value3 = target3.Buffer.Take ();
-                               } finally {
-                                       if (taken)
-                                               targetLock.Exit ();
-                               }
-
-                               TriggerMessage (value1, value2, value3);
-                       } else {
-                               if (ShouldProcesNonGreedy ())
-                                       EnsureNonGreedyProcessing ();
-                       }
-               }
-
-               /// <summary>
-               /// Returns whether non-greedy creation of a tuple should be started.
-               /// </summary>
-               bool ShouldProcesNonGreedy ()
-               {
-                       return target1.PostponedMessagesCount >= 1
-                              && target2.PostponedMessagesCount >= 1
-                              && target3.PostponedMessagesCount >= 1
-                              && (dataflowBlockOptions.BoundedCapacity == -1
-                                  || outgoing.Count < dataflowBlockOptions.BoundedCapacity);
-               }
-
-               /// <summary>
-               /// Starts non-greedy creation of tuples, if one doesn't already run.
-               /// </summary>
-               void EnsureNonGreedyProcessing ()
-               {
-                       if (nonGreedyProcessing.TrySet())
-                               Task.Factory.StartNew (NonGreedyProcess,
-                                       dataflowBlockOptions.CancellationToken,
-                                       TaskCreationOptions.PreferFairness,
-                                       dataflowBlockOptions.TaskScheduler);
-               }
-
-               /// <summary>
-               /// Creates tuples in non-greedy mode,
-               /// making sure the whole tuple is available by using reservations.
-               /// </summary>
-               void NonGreedyProcess ()
-               {
-                       while (ShouldProcesNonGreedy ()) {
-                               var reservation1 = target1.ReserveMessage ();
-
-                               if (reservation1 == null)
-                                       break;
-
-                               var reservation2 = target2.ReserveMessage ();
-                               if (reservation2 == null) {
-                                       target1.RelaseReservation (reservation1);
-                                       break;
-                               }
-
-                               var reservation3 = target3.ReserveMessage ();
-                               if (reservation3 == null) {
-                                       target1.RelaseReservation (reservation1);
-                                       target2.RelaseReservation (reservation2);
-                                       break;
-                               }
-
-                               var value1 = target1.ConsumeReserved (reservation1);
-                               var value2 = target2.ConsumeReserved (reservation2);
-                               var value3 = target3.ConsumeReserved (reservation3);
-
-                               TriggerMessage (value1, value2, value3);
-                       }
-
-                       nonGreedyProcessing.Value = false;
-
-                       if (ShouldProcesNonGreedy ())
-                               EnsureNonGreedyProcessing ();
-               }
-
-               /// <summary>
-               /// Creates a tuple from the given values and adds the result to the output queue.
-               /// </summary>
-               void TriggerMessage (T1 val1, T2 val2, T3 val3)
-               {
-                       outgoing.AddData (Tuple.Create (val1, val2, val3));
-
-                       if (dataflowBlockOptions.MaxNumberOfGroups != -1
-                           && Interlocked.Increment (ref numberOfGroups)
-                           >= dataflowBlockOptions.MaxNumberOfGroups)
-                               Complete ();
-               }
-
-               public ITargetBlock<T1> Target1 {
-                       get { return target1; }
-               }
-
-               public ITargetBlock<T2> Target2 {
-                       get { return target2; }
-               }
-
-               public ITargetBlock<T3> Target3 {
-                       get { return target3; }
-               }
-
-               public int OutputCount {
-                       get { return outgoing.Count; }
-               }
-
-               public override string ToString ()
-               {
-                       return NameHelper.GetName (this, dataflowBlockOptions);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/JoinTarget.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/JoinTarget.cs
deleted file mode 100644 (file)
index 48f293e..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-// JoinBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Target block use by join blocks in their TargetN properties.
-       /// Also serves as its own <see cref="MessageBox{TInput}"/>.
-       /// </summary>
-       class JoinTarget<TTarget> : MessageBox<TTarget>, ITargetBlock<TTarget> {
-               readonly IDataflowBlock joinBlock;
-               readonly Action signal;
-
-               public JoinTarget (
-                       IDataflowBlock joinBlock, Action signal, CompletionHelper helper,
-                       Func<bool> externalCompleteTester, DataflowBlockOptions options,
-                       bool greedy, Func<bool> canAccept)
-                       : base (null, new BlockingCollection<TTarget> (), helper, externalCompleteTester,
-                               options, greedy, canAccept)
-               {
-                       this.joinBlock = joinBlock;
-                       this.signal = signal;
-                       Target = this;
-               }
-
-               /// <summary>
-               /// Makes sure the input queue is processed the way it needs to,
-               /// by signaling the parent join block.
-               /// </summary>
-               protected override void EnsureProcessing (bool newItem)
-               {
-                       signal ();
-               }
-
-               /// <summary>
-               /// The input queue of this block.
-               /// </summary>
-               public BlockingCollection<TTarget> Buffer {
-                       get { return MessageQueue; }
-               }
-
-               DataflowMessageStatus ITargetBlock<TTarget>.OfferMessage (
-                       DataflowMessageHeader messageHeader, TTarget messageValue,
-                       ISourceBlock<TTarget> source, bool consumeToAccept)
-               {
-                       return OfferMessage (messageHeader, messageValue, source, consumeToAccept);
-               }
-
-               void IDataflowBlock.Complete ()
-               {
-                       Complete ();
-               }
-
-               Task IDataflowBlock.Completion {
-                       get { throw new NotSupportedException (); }
-               }
-
-               void IDataflowBlock.Fault (Exception exception)
-               {
-                       joinBlock.Fault (exception);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/MessageBox.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/MessageBox.cs
deleted file mode 100644 (file)
index 867f803..0000000
+++ /dev/null
@@ -1,332 +0,0 @@
-// MessageBox.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Concurrent;
-using System.Linq;
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// In MessageBox we store message that have been offered to us so that they can be
-       /// later processed 
-       /// </summary>
-       internal abstract class MessageBox<TInput> {
-               protected ITargetBlock<TInput> Target { get; set; }
-               protected CompletionHelper CompHelper { get; private set; }
-               readonly Func<bool> externalCompleteTester;
-               readonly DataflowBlockOptions options;
-               readonly bool greedy;
-               readonly Func<bool> canAccept;
-
-               readonly ConcurrentDictionary<ISourceBlock<TInput>, DataflowMessageHeader>
-                       postponedMessages =
-                               new ConcurrentDictionary<ISourceBlock<TInput>, DataflowMessageHeader> ();
-               int itemCount;
-               readonly AtomicBoolean postponedProcessing = new AtomicBoolean ();
-
-               // these two fields are used only in one special case
-               SpinLock consumingLock;
-               // this is necessary, because canAccept is not pure
-               bool canAcceptFromBefore;
-
-               protected BlockingCollection<TInput> MessageQueue { get; private set; }
-
-               protected MessageBox (
-                       ITargetBlock<TInput> target, BlockingCollection<TInput> messageQueue,
-                       CompletionHelper compHelper, Func<bool> externalCompleteTester,
-                       DataflowBlockOptions options, bool greedy = true, Func<bool> canAccept = null)
-               {
-                       this.Target = target;
-                       this.CompHelper = compHelper;
-                       this.MessageQueue = messageQueue;
-                       this.externalCompleteTester = externalCompleteTester;
-                       this.options = options;
-                       this.greedy = greedy;
-                       this.canAccept = canAccept;
-               }
-
-               public DataflowMessageStatus OfferMessage (
-                       DataflowMessageHeader messageHeader, TInput messageValue,
-                       ISourceBlock<TInput> source, bool consumeToAccept)
-               {
-                       if (!messageHeader.IsValid)
-                               throw new ArgumentException ("The messageHeader is not valid.",
-                                       "messageHeader");
-                       if (consumeToAccept && source == null)
-                               throw new ArgumentException (
-                                       "consumeToAccept may only be true if provided with a non-null source.",
-                                       "consumeToAccept");
-
-                       if (MessageQueue.IsAddingCompleted || !CompHelper.CanRun)
-                               return DataflowMessageStatus.DecliningPermanently;
-
-                       var full = options.BoundedCapacity != -1
-                                  && Volatile.Read (ref itemCount) >= options.BoundedCapacity;
-                       if (!greedy || full) {
-                               if (source == null)
-                                       return DataflowMessageStatus.Declined;
-
-                               postponedMessages [source] = messageHeader;
-
-                               // necessary to avoid race condition
-                               DecreaseCount (0);
-
-                               if (!greedy && !full)
-                                       EnsureProcessing (true);
-                               
-                               return DataflowMessageStatus.Postponed;
-                       }
-
-                       // in this case, we need to use locking to make sure
-                       // we don't consume when we can't accept
-                       if (consumeToAccept && canAccept != null) {
-                               bool lockTaken = false;
-                               try {
-                                       consumingLock.Enter (ref lockTaken);
-                                       if (!canAcceptFromBefore && !canAccept ())
-                                               return DataflowMessageStatus.DecliningPermanently;
-
-                                       bool consummed;
-                                       messageValue = source.ConsumeMessage (messageHeader, Target, out consummed);
-                                       if (!consummed) {
-                                               canAcceptFromBefore = true;
-                                               return DataflowMessageStatus.NotAvailable;
-                                       }
-
-                                       canAcceptFromBefore = false;
-                               } finally {
-                                       if (lockTaken)
-                                               consumingLock.Exit ();
-                               }
-                       } else {
-                               if (consumeToAccept) {
-                                       bool consummed;
-                                       messageValue = source.ConsumeMessage (messageHeader, Target, out consummed);
-                                       if (!consummed)
-                                               return DataflowMessageStatus.NotAvailable;
-                               }
-
-                               if (canAccept != null && !canAccept ())
-                                       return DataflowMessageStatus.DecliningPermanently;
-                       }
-
-                       try {
-                               MessageQueue.Add (messageValue);
-                       } catch (InvalidOperationException) {
-                               // This is triggered either if the underlying collection didn't accept the item
-                               // or if the messageQueue has been marked complete, either way it corresponds to a false
-                               return DataflowMessageStatus.DecliningPermanently;
-                       }
-
-                       IncreaseCount ();
-
-                       EnsureProcessing (true);
-
-                       VerifyCompleteness ();
-
-                       return DataflowMessageStatus.Accepted;
-               }
-
-               /// <summary>
-               /// Increses the count of items in the block by 1.
-               /// </summary>
-               public void IncreaseCount ()
-               {
-                       Interlocked.Increment (ref itemCount);
-               }
-
-               /// <summary>
-               /// Decreses the number of items in the block by the given count.
-               /// </summary>
-               /// <remarks>
-               /// The <paramref name="count"/> parameter is used when one object
-               /// can represent many items, like a batch in <see cref="BatchBlock{T}"/>.
-               /// </remarks>
-               public void DecreaseCount (int count = 1)
-               {
-                       int decreased = Interlocked.Add (ref itemCount, -count);
-
-                       // if BoundedCapacity is -1, there is no need to do this
-                       if (decreased < options.BoundedCapacity && !postponedMessages.IsEmpty) {
-                               if (greedy)
-                                       EnsurePostponedProcessing ();
-                               else
-                                       EnsureProcessing (false);
-                       }
-               }
-
-               /// <summary>
-               /// The number of messages that were postponed
-               /// and can be attempted to be consumed.
-               /// </summary>
-               public int PostponedMessagesCount {
-                       get { return postponedMessages.Count; }
-               }
-
-               /// <summary>
-               /// Reserves a message from those that were postponed.
-               /// Does not guarantee any order of the messages being reserved.
-               /// </summary>
-               /// <returns>
-               /// An object representing the reservation on success,
-               /// <c>null</c> on failure.
-               /// </returns>
-               public Tuple<ISourceBlock<TInput>, DataflowMessageHeader> ReserveMessage()
-               {
-                       while (!postponedMessages.IsEmpty) {
-                               // KeyValuePair is a struct, so default value is not null
-                               var block = postponedMessages.FirstOrDefault () .Key;
-
-                               // collection is empty
-                               if (block == null)
-                                       break;
-
-                               DataflowMessageHeader header;
-                               bool removed = postponedMessages.TryRemove (block, out header);
-
-                               // another thread was faster, try again
-                               if (!removed)
-                                       continue;
-
-                               bool reserved = block.ReserveMessage (header, Target);
-                               if (reserved)
-                                       return Tuple.Create (block, header);
-                       }
-
-                       return null;
-               }
-
-               /// <summary>
-               /// Releases the given reservation.
-               /// </summary>
-               public void RelaseReservation(Tuple<ISourceBlock<TInput>, DataflowMessageHeader> reservation)
-               {
-                       reservation.Item1.ReleaseReservation (reservation.Item2, Target);
-               }
-
-               /// <summary>
-               /// Consumes previously reserved item.
-               /// </summary>
-               public TInput ConsumeReserved(Tuple<ISourceBlock<TInput>, DataflowMessageHeader> reservation)
-               {
-                       bool consumed;
-                       return reservation.Item1.ConsumeMessage (
-                               reservation.Item2, Target, out consumed);
-               }
-
-               /// <summary>
-               /// Makes sure retrieving items that were postponed,
-               /// because they would exceed <see cref="DataflowBlockOptions.BoundedCapacity"/>,
-               /// is currently running.
-               /// </summary>
-               void EnsurePostponedProcessing ()
-               {
-                       if (postponedProcessing.TrySet())
-                               Task.Factory.StartNew (RetrievePostponed, options.CancellationToken,
-                                       TaskCreationOptions.PreferFairness, options.TaskScheduler);
-               }
-
-               /// <summary>
-               /// Retrieves items that were postponed,
-               /// because they would exceed <see cref="DataflowBlockOptions.BoundedCapacity"/>.
-               /// </summary>
-               void RetrievePostponed ()
-               {
-                       // BoundedCapacity can't be -1 here, because in that case there would be no postponing
-                       while (Volatile.Read (ref itemCount) < options.BoundedCapacity
-                              && !postponedMessages.IsEmpty && !MessageQueue.IsAddingCompleted) {
-                               var block = postponedMessages.First ().Key;
-                               DataflowMessageHeader header;
-                               postponedMessages.TryRemove (block, out header);
-
-                               bool consumed;
-                               var item = block.ConsumeMessage (header, Target, out consumed);
-                               if (consumed) {
-                                       try {
-                                               MessageQueue.Add (item);
-                                               IncreaseCount ();
-                                               EnsureProcessing (false);
-                                       } catch (InvalidOperationException) {
-                                               break;
-                                       }
-                               }
-                       }
-
-                       // release all postponed messages
-                       if (MessageQueue.IsAddingCompleted) {
-                               while (!postponedMessages.IsEmpty) {
-                                       var block = postponedMessages.First ().Key;
-                                       DataflowMessageHeader header;
-                                       postponedMessages.TryRemove (block, out header);
-
-                                       if (block.ReserveMessage (header, Target))
-                                               block.ReleaseReservation (header, Target);
-                               }
-                       }
-
-                       postponedProcessing.Value = false;
-
-                       // because of race
-                       if ((Volatile.Read (ref itemCount) < options.BoundedCapacity
-                            || MessageQueue.IsAddingCompleted)
-                           && !postponedMessages.IsEmpty)
-                               EnsurePostponedProcessing ();
-               }
-
-               /// <summary>
-               /// Makes sure the input queue is processed the way it needs to.
-               /// </summary>
-               /// <param name="newItem">Was new item just added?</param>
-               protected abstract void EnsureProcessing (bool newItem);
-
-               /// <summary>
-               /// Completes the box, no new messages will be accepted.
-               /// Also starts the process of completing the output queue.
-               /// </summary>
-               public void Complete ()
-               {
-                       // Make message queue complete
-                       MessageQueue.CompleteAdding ();
-                       OutgoingQueueComplete ();
-                       VerifyCompleteness ();
-
-                       if (!postponedMessages.IsEmpty)
-                               EnsurePostponedProcessing ();
-               }
-
-               /// <summary>
-               /// Notifies that outgoing queue should be completed, if possible.
-               /// </summary>
-               protected virtual void OutgoingQueueComplete ()
-               {
-               }
-
-               /// <summary>
-               /// Makes sure the block is completed if it should be.
-               /// </summary>
-               protected virtual void VerifyCompleteness ()
-               {
-                       if (MessageQueue.IsCompleted && externalCompleteTester ())
-                               CompHelper.Complete ();
-               }
-       }
-}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/NameHelper.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/NameHelper.cs
deleted file mode 100644 (file)
index 8c70224..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-// NameHelper.cs
-//
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Helper class for figuring out the name of a block.
-       /// </summary>
-       static class NameHelper {
-               /// <summary>
-               /// Returns the name of the block, based on <see cref="DataflowBlockOptions.NameFormat"/>.
-               /// </summary>
-               /// <remarks>
-               /// If the NameFormat is invalid, returns the exception message.
-               /// </remarks>
-               public static string GetName(IDataflowBlock block, DataflowBlockOptions options)
-               {
-                       try {
-                               return string.Format (
-                                       options.NameFormat, block.GetType ().Name, block.Completion.Id);
-                       } catch (FormatException e) {
-                               return e.Message;
-                       }
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/NullTargetBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/NullTargetBlock.cs
deleted file mode 100644 (file)
index 2b89b5b..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-// NullTargetBlock.cs
-//
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Target block returned by <see cref="DataflowBlock.NullTarget{TInput}"/>.
-       /// </summary>
-       class NullTargetBlock<TInput> : ITargetBlock<TInput> {
-               public NullTargetBlock ()
-               {
-                       Completion = new TaskCompletionSource<bool> ().Task;
-               }
-
-               public DataflowMessageStatus OfferMessage (
-                       DataflowMessageHeader messageHeader, TInput messageValue,
-                       ISourceBlock<TInput> source, bool consumeToAccept)
-               {
-                       if (!messageHeader.IsValid)
-                               throw new ArgumentException ("The messageHeader is not valid.",
-                                       "messageHeader");
-                       if (consumeToAccept && source == null)
-                               throw new ArgumentException (
-                                       "consumeToAccept may only be true if provided with a non-null source.",
-                                       "consumeToAccept");
-
-                       if (consumeToAccept) {
-                               if (!source.ReserveMessage (messageHeader, this))
-                                       return DataflowMessageStatus.NotAvailable;
-                               bool consummed;
-                               source.ConsumeMessage (messageHeader, this, out consummed);
-                               if (!consummed)
-                                       return DataflowMessageStatus.NotAvailable;
-                       }
-
-                       return DataflowMessageStatus.Accepted;
-               }
-
-               public Task Completion { get; private set; }
-
-               public void Complete ()
-               {
-               }
-
-               public void Fault (Exception exception)
-               {
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ObservableDataflowBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ObservableDataflowBlock.cs
deleted file mode 100644 (file)
index e82d130..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-// ObservableDataflowBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Rx Observable that represents a source block.
-       /// </summary>
-       class ObservableDataflowBlock<TSource> : IObservable<TSource> {
-               class ObserverWrapper : ITargetBlock<TSource> {
-                       readonly IObserver<TSource> observer;
-
-                       public ObserverWrapper (IObserver<TSource> observer)
-                       {
-                               this.observer = observer;
-                       }
-
-                       public void Complete ()
-                       {
-                               observer.OnCompleted ();
-                       }
-
-                       public void Fault (Exception exception)
-                       {
-                               observer.OnError (exception);
-                       }
-
-                       public Task Completion {
-                               get { return null; }
-                       }
-
-                       public DataflowMessageStatus OfferMessage (
-                               DataflowMessageHeader messageHeader, TSource messageValue,
-                               ISourceBlock<TSource> source, bool consumeToAccept)
-                       {
-                               if (consumeToAccept) {
-                                       if (!source.ReserveMessage (messageHeader, this))
-                                               return DataflowMessageStatus.NotAvailable;
-                                       bool consumed;
-                                       messageValue = source.ConsumeMessage (messageHeader, this, out consumed);
-                                       if (!consumed)
-                                               return DataflowMessageStatus.NotAvailable;
-                               }
-
-                               observer.OnNext (messageValue);
-
-                               return DataflowMessageStatus.Accepted;
-                       }
-               }
-
-               readonly ISourceBlock<TSource> source;
-
-               public ObservableDataflowBlock (ISourceBlock<TSource> source)
-               {
-                       this.source = source;
-               }
-
-               public IDisposable Subscribe (IObserver<TSource> observer)
-               {
-                       var wrapper = new ObserverWrapper (observer);
-                       return source.LinkTo (wrapper);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ObserverDataflowBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ObserverDataflowBlock.cs
deleted file mode 100644 (file)
index 55f3b6e..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-// ObserverDataflowBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Rx Observer that represents a target block.
-       /// </summary>
-       class ObserverDataflowBlock<TInput> : IObserver<TInput> {
-               readonly ITargetBlock<TInput> target;
-
-               public ObserverDataflowBlock (ITargetBlock<TInput> target)
-               {
-                       this.target = target;
-               }
-
-               public void OnCompleted ()
-               {
-                       target.Complete ();
-               }
-
-               public void OnError (Exception ex)
-               {
-                       target.Fault (ex);
-               }
-
-               public void OnNext (TInput value)
-               {
-                       target.Post (value);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/OutgoingQueue.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/OutgoingQueue.cs
deleted file mode 100644 (file)
index aa273ab..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-// OutgoingQueue.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Version of <see cref="OutgoingQueueBase{T}"/> for
-       /// non-broadcast blocks.
-       /// </summary>
-       class OutgoingQueue<T> : OutgoingQueueBase<T> {
-               readonly Func<T, int> countSelector;
-               SpinLock firstItemLock = new SpinLock();
-               volatile ITargetBlock<T> reservedForTargetBlock;
-               readonly TargetCollection<T> targets;
-
-               protected override TargetCollectionBase<T> Targets {
-                       get { return targets; }
-               }
-
-               public OutgoingQueue (
-                       ISourceBlock<T> block, CompletionHelper compHelper,
-                       Func<bool> externalCompleteTester, Action<int> decreaseItemsCount,
-                       DataflowBlockOptions options, Func<T, int> countSelector = null)
-                       : base (compHelper, externalCompleteTester,
-                               decreaseItemsCount, options)
-               {
-                       targets = new TargetCollection<T> (block);
-                       this.countSelector = countSelector;
-               }
-
-               /// <summary>
-               /// Calculates the count of items in the given object.
-               /// </summary>
-               protected override int GetModifiedCount(T data)
-               {
-                       if (countSelector == null)
-                               return 1;
-
-                       return countSelector (data);
-               }
-
-               /// <summary>
-               /// Sends messages to targets.
-               /// </summary>
-               protected override void Process ()
-               {
-                       bool processed;
-                       do {
-                               ForceProcessing = false;
-
-                               bool lockTaken = false;
-                               try {
-                                       firstItemLock.Enter (ref lockTaken);
-
-                                       T item;
-                                       if (!Store.TryPeek (out item))
-                                               break;
-
-                                       if (!targets.HasCurrentItem)
-                                               targets.SetCurrentItem (item);
-
-                                       if (reservedForTargetBlock != null)
-                                               break;
-
-                                       processed = targets.OfferItemToTargets ();
-                                       if (processed) {
-                                               Outgoing.TryTake (out item);
-                                               DecreaseCounts (item);
-                                               FirstItemChanged ();
-                                       }
-                               } finally {
-                                       if (lockTaken)
-                                               firstItemLock.Exit ();
-                               }
-                       } while (processed);
-
-                       IsProcessing.Value = false;
-
-                       // to guard against race condition
-                       if (ForceProcessing && reservedForTargetBlock == null)
-                               EnsureProcessing ();
-
-                       VerifyCompleteness ();
-               }
-
-               public T ConsumeMessage (DataflowMessageHeader messageHeader,
-                                        ITargetBlock<T> targetBlock, out bool messageConsumed)
-               {
-                       if (!messageHeader.IsValid)
-                               throw new ArgumentException ("The messageHeader is not valid.",
-                                       "messageHeader");
-                       if (targetBlock == null)
-                               throw new ArgumentNullException("target");
-
-                       T result = default(T);
-                       messageConsumed = false;
-
-                       bool lockTaken = false;
-                       try {
-                               firstItemLock.Enter (ref lockTaken);
-
-                               if (targets.VerifyHeader (messageHeader, targetBlock)
-                                   && (reservedForTargetBlock == null
-                                       || reservedForTargetBlock == targetBlock)) {
-                                       // cannot consume from faulted block, unless reserved
-                                       if (reservedForTargetBlock == null && IsFaultedOrCancelled)
-                                               return result;
-
-                                       Outgoing.TryTake (out result);
-                                       messageConsumed = true;
-                                       DecreaseCounts (result);
-                                       reservedForTargetBlock = null;
-                                       FirstItemChanged ();
-                               }
-                       } finally {
-                               if (lockTaken)
-                                       firstItemLock.Exit ();
-                       }
-
-                       targets.UnpostponeTarget (targetBlock, messageConsumed);
-                       EnsureProcessing ();
-                       VerifyCompleteness ();
-
-                       return result;
-               }
-
-               public bool ReserveMessage (DataflowMessageHeader messageHeader, ITargetBlock<T> target)
-               {
-                       if (!messageHeader.IsValid)
-                               throw new ArgumentException ("The messageHeader is not valid.",
-                                       "messageHeader");
-                       if (target == null)
-                               throw new ArgumentNullException("target");
-
-                       bool lockTaken = false;
-                       try {
-                               firstItemLock.Enter (ref lockTaken);
-
-                               if (targets.VerifyHeader(messageHeader, target)) {
-                                       reservedForTargetBlock = target;
-                                       return true;
-                               }
-
-                               targets.UnpostponeTarget (target, false);
-                               EnsureProcessing ();
-
-                               return false;
-                       } finally {
-                               if (lockTaken)
-                                       firstItemLock.Exit ();
-                       }
-               }
-
-               public void ReleaseReservation (DataflowMessageHeader messageHeader, ITargetBlock<T> target)
-               {
-                       if (!messageHeader.IsValid)
-                               throw new ArgumentException ("The messageHeader is not valid.",
-                                       "messageHeader");
-                       if (target == null)
-                               throw new ArgumentNullException("target");
-
-                       bool lockTaken = false;
-                       try
-                       {
-                               firstItemLock.Enter(ref lockTaken);
-
-                               if (!targets.VerifyHeader(messageHeader, target)
-                                   || reservedForTargetBlock != target)
-                                       throw new InvalidOperationException(
-                                               "The target did not have the message reserved.");
-
-                               reservedForTargetBlock = null;
-                       } finally {
-                               if (lockTaken)
-                                       firstItemLock.Exit ();
-                       }
-
-                       targets.UnpostponeTarget (target, false);
-                       EnsureProcessing ();
-               }
-
-               /// <summary>
-               /// Notifies that the first item in the queue changed.
-               /// </summary>
-               void FirstItemChanged ()
-               {
-                       T firstItem;
-                       if (Store.TryPeek (out firstItem))
-                               targets.SetCurrentItem (firstItem);
-                       else
-                               targets.ResetCurrentItem ();
-               }
-
-               public bool TryReceive (Predicate<T> filter, out T item)
-               {
-                       bool success = false;
-                       item = default (T);
-
-                       bool lockTaken = false;
-                       try {
-                               firstItemLock.Enter (ref lockTaken);
-
-                               if (reservedForTargetBlock != null)
-                                       return false;
-
-                               T result;
-                               if (Store.TryPeek (out result) && (filter == null || filter (result))) {
-                                       Outgoing.TryTake (out item);
-                                       success = true;
-                                       DecreaseCounts (item);
-                                       FirstItemChanged ();
-                               }
-                       } finally {
-                               if (lockTaken)
-                                       firstItemLock.Exit ();
-                       }
-
-                       EnsureProcessing ();
-                       VerifyCompleteness ();
-
-                       return success;
-               }
-
-               public bool TryReceiveAll (out IList<T> items)
-               {
-                       items = null;
-
-                       if (Store.IsEmpty)
-                               return false;
-
-                       bool lockTaken = false;
-                       try {
-                               firstItemLock.Enter (ref lockTaken);
-
-                               if (reservedForTargetBlock != null)
-                                       return false;
-
-                               var list = new List<T> (Outgoing.Count);
-
-                               T item;
-                               while (Outgoing.TryTake (out item)) {
-                                       DecreaseCounts (item);
-                                       list.Add (item);
-                               }
-
-                               items = list;
-
-                               FirstItemChanged ();
-                       } finally {
-                               if (lockTaken)
-                                       firstItemLock.Exit ();
-                       }
-
-                       EnsureProcessing ();
-                       VerifyCompleteness ();
-
-                       return items.Count > 0;
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/OutgoingQueueBase.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/OutgoingQueueBase.cs
deleted file mode 100644 (file)
index b1c1c29..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-// OutgoingQueueBase.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Handles outgoing messages that get queued when there is no
-       /// block on the other end to proces it. It also allows receive operations.
-       /// </summary>
-       abstract class OutgoingQueueBase<T> {
-               protected ConcurrentQueue<T> Store { get; private set; }
-               protected BlockingCollection<T> Outgoing { get; private set; }
-               int outgoingCount;
-               readonly CompletionHelper compHelper;
-               readonly Func<bool> externalCompleteTester;
-               readonly DataflowBlockOptions options;
-               protected AtomicBoolean IsProcessing { get; private set; }
-               protected abstract TargetCollectionBase<T> Targets { get; }
-               int totalModifiedCount;
-               readonly Action<int> decreaseItemsCount;
-               volatile bool forceProcessing;
-
-               protected OutgoingQueueBase (
-                       CompletionHelper compHelper, Func<bool> externalCompleteTester,
-                       Action<int> decreaseItemsCount, DataflowBlockOptions options)
-               {
-                       IsProcessing = new AtomicBoolean ();
-                       Store = new ConcurrentQueue<T> ();
-                       Outgoing = new BlockingCollection<T> (Store);
-                       this.compHelper = compHelper;
-                       this.externalCompleteTester = externalCompleteTester;
-                       this.options = options;
-                       this.decreaseItemsCount = decreaseItemsCount;
-               }
-
-               /// <summary>
-               /// Is the queue completed?
-               /// Queue is completed after <see cref="Complete"/> is called
-               /// and all items are retrieved from it.
-               /// </summary>
-               public bool IsCompleted {
-                       get { return Outgoing.IsCompleted; }
-               }
-
-               /// <summary>
-               /// Current number of items in the queue.
-               /// Item are counted the way <see cref="DataflowBlockOptions.BoundedCapacity"/>
-               /// counts them, e.g. each item in a batch counts, even if batch is a single object.
-               /// </summary>
-               public int Count {
-                       get { return totalModifiedCount; }
-               }
-
-               /// <summary>
-               /// Calculates the count of items in the given object.
-               /// </summary>
-               protected virtual int GetModifiedCount (T data)
-               {
-                       return 1;
-               }
-
-               /// <summary>
-               /// Adds an object to the queue.
-               /// </summary>
-               public void AddData (T data)
-               {
-                       try {
-                               Outgoing.Add (data);
-                               Interlocked.Add (ref totalModifiedCount, GetModifiedCount (data));
-                               if (Interlocked.Increment (ref outgoingCount) == 1)
-                                       EnsureProcessing ();
-                       } catch (InvalidOperationException) {
-                               VerifyCompleteness ();
-                       }
-               }
-
-               /// <summary>
-               /// Makes sure sending messages to targets is running.
-               /// </summary>
-               protected void EnsureProcessing ()
-               {
-                       ForceProcessing = true;
-                       if (IsProcessing.TrySet())
-                               Task.Factory.StartNew (Process, CancellationToken.None,
-                                       TaskCreationOptions.PreferFairness, options.TaskScheduler);
-               }
-
-               /// <summary>
-               /// Indicates whether sending messages should be forced to start.
-               /// </summary>
-               protected bool ForceProcessing {
-                       get { return forceProcessing; }
-                       set { forceProcessing = value; }
-               }
-
-               /// <summary>
-               /// Sends messages to targets.
-               /// </summary>
-               protected abstract void Process ();
-
-               /// <summary>
-               /// Adds a target block to send messages to.
-               /// </summary>
-               /// <returns>
-               /// An object that can be used to destroy the link to the added target.
-               /// </returns>
-               public IDisposable AddTarget (ITargetBlock<T> targetBlock, DataflowLinkOptions linkOptions)
-               {
-                       if (targetBlock == null)
-                               throw new ArgumentNullException ("targetBlock");
-                       if (linkOptions == null)
-                               throw new ArgumentNullException ("linkOptions");
-
-                       var result = Targets.AddTarget (targetBlock, linkOptions);
-                       EnsureProcessing ();
-                       return result;
-               }
-
-               /// <summary>
-               /// Makes sure the block is completed if it should be.
-               /// </summary>
-               protected void VerifyCompleteness ()
-               {
-                       if (Outgoing.IsCompleted && externalCompleteTester ())
-                               compHelper.Complete ();
-               }
-
-               /// <summary>
-               /// Is the block faulted or cancelled?
-               /// </summary>
-               protected bool IsFaultedOrCancelled {
-                       get { return compHelper.Completion.IsFaulted || compHelper.Completion.IsCanceled; }
-               }
-
-               /// <summary>
-               /// Used to notify that object was removed from the queue
-               /// and to update counts.
-               /// </summary>
-               protected void DecreaseCounts (T data)
-               {
-                       var modifiedCount = GetModifiedCount (data);
-                       Interlocked.Add (ref totalModifiedCount, -modifiedCount);
-                       Interlocked.Decrement (ref outgoingCount);
-                       decreaseItemsCount (modifiedCount);
-               }
-
-               /// <summary>
-               /// Marks the queue for completion.
-               /// </summary>
-               public void Complete ()
-               {
-                       Outgoing.CompleteAdding ();
-                       VerifyCompleteness ();
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/OutputAvailableBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/OutputAvailableBlock.cs
deleted file mode 100644 (file)
index b53be90..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-// OutputAvailableBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// This internal block is used by the <see cref="DataflowBlock.OutputAvailableAsync"/> methods
-       /// to check for available items in an asynchronous way.
-       /// </summary>
-       class OutputAvailableBlock<TOutput> : ITargetBlock<TOutput> {
-               readonly TaskCompletionSource<bool> completion =
-                       new TaskCompletionSource<bool> ();
-               IDisposable linkBridge;
-               CancellationTokenRegistration cancellationRegistration;
-
-               public DataflowMessageStatus OfferMessage (
-                       DataflowMessageHeader messageHeader, TOutput messageValue,
-                       ISourceBlock<TOutput> source, bool consumeToAccept)
-               {
-                       if (!messageHeader.IsValid)
-                               return DataflowMessageStatus.Declined;
-
-                       if (completion.Task.Status != TaskStatus.WaitingForActivation)
-                               return DataflowMessageStatus.DecliningPermanently;
-
-                       completion.TrySetResult (true);
-                       CompletionSet ();
-
-                       return DataflowMessageStatus.DecliningPermanently;
-               }
-
-               /// <summary>
-               /// Returns a Task that can be used to wait until output from a block is available.
-               /// </summary>
-               /// <param name="bridge">The disposable object returned by <see cref="ISourceBlock{TOutput}.LinkTo"/>.</param>
-               /// <param name="token">Cancellation token for this operation.</param>
-               public Task<bool> AsyncGet (IDisposable bridge, CancellationToken token)
-               {
-                       linkBridge = bridge;
-                       cancellationRegistration = token.Register (() =>
-                       {
-                               completion.TrySetCanceled ();
-                               CompletionSet ();
-                       });
-
-                       return completion.Task;
-               }
-
-               /// <summary>
-               /// Called after the result has been set,
-               /// cleans up after this block.
-               /// </summary>
-               void CompletionSet ()
-               {
-                       if (linkBridge != null) {
-                               linkBridge.Dispose ();
-                               linkBridge = null;
-                       }
-
-                       cancellationRegistration.Dispose ();
-               }
-
-               public Task Completion {
-                       get { throw new NotSupportedException (); }
-               }
-
-               public void Complete ()
-               {
-                       completion.TrySetResult (false);
-                       CompletionSet ();
-               }
-
-               public void Fault (Exception exception)
-               {
-                       Complete ();
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/PassingMessageBox.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/PassingMessageBox.cs
deleted file mode 100644 (file)
index 962a0ba..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-// PassingMessageBox.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Message box for blocks that don't need any special processing of incoming items.
-       /// </summary>
-       class PassingMessageBox<TInput> : MessageBox<TInput> {
-               readonly Action<bool> processQueue;
-
-               public PassingMessageBox (
-                       ITargetBlock<TInput> target, BlockingCollection<TInput> messageQueue,
-                       CompletionHelper compHelper, Func<bool> externalCompleteTester,
-                       Action<bool> processQueue, DataflowBlockOptions dataflowBlockOptions,
-                       bool greedy = true, Func<bool> canAccept = null)
-                       : base (target, messageQueue, compHelper, externalCompleteTester,
-                               dataflowBlockOptions, greedy, canAccept)
-               {
-                       this.processQueue = processQueue;
-               }
-
-               /// <summary>
-               /// Makes sure the input queue is processed the way it needs to.
-               /// Executes synchronously, so shouldn't cause any long processing.
-               /// </summary>
-               /// <param name="newItem">Was new item just added?</param>
-               protected override void EnsureProcessing (bool newItem)
-               {
-                       processQueue (newItem);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/PredicateBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/PredicateBlock.cs
deleted file mode 100644 (file)
index 60cfdb7..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-// PredicateBlock.cs
-//
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// This block is used by the version of <see cref="DataflowBlock.LinkTo"/>
-       /// that has a predicate to wrap the target block,
-       /// so that the predicate can be checked.
-       /// </summary>
-       class PredicateBlock<T> : ITargetBlock<T> {
-               /// <summary>
-               /// Wraps the source block of the link.
-               /// This is necessary so that the communication from target to source works correctly.
-               /// </summary>
-               class SourceBlock : ISourceBlock<T> {
-                       readonly ISourceBlock<T> actualSource;
-                       readonly PredicateBlock<T> predicateBlock;
-
-                       public SourceBlock (ISourceBlock<T> actualSource,
-                                           PredicateBlock<T> predicateBlock)
-                       {
-                               this.actualSource = actualSource;
-                               this.predicateBlock = predicateBlock;
-                       }
-
-                       public Task Completion
-                       {
-                               get { return actualSource.Completion; }
-                       }
-
-                       public void Complete ()
-                       {
-                               actualSource.Complete ();
-                       }
-
-                       public void Fault (Exception exception)
-                       {
-                               actualSource.Fault (exception);
-                       }
-
-                       public T ConsumeMessage (DataflowMessageHeader messageHeader,
-                                                ITargetBlock<T> target, out bool messageConsumed)
-                       {
-                               return actualSource.ConsumeMessage (messageHeader, predicateBlock,
-                                       out messageConsumed);
-                       }
-
-                       public IDisposable LinkTo (ITargetBlock<T> target,
-                                                  DataflowLinkOptions linkOptions)
-                       {
-                               return actualSource.LinkTo (target, linkOptions);
-                       }
-
-                       public void ReleaseReservation (DataflowMessageHeader messageHeader,
-                                                       ITargetBlock<T> target)
-                       {
-                               actualSource.ReleaseReservation (messageHeader, predicateBlock);
-                       }
-
-                       public bool ReserveMessage (DataflowMessageHeader messageHeader,
-                                                   ITargetBlock<T> target)
-                       {
-                               return actualSource.ReserveMessage (messageHeader, predicateBlock);
-                       }
-               }
-
-               readonly ITargetBlock<T> actualTarget;
-               readonly Predicate<T> predicate;
-               readonly SourceBlock sourceBlock;
-
-               public PredicateBlock (ISourceBlock<T> actualSource,
-                                      ITargetBlock<T> actualTarget, Predicate<T> predicate)
-               {
-                       this.actualTarget = actualTarget;
-                       this.predicate = predicate;
-                       sourceBlock = new SourceBlock (actualSource, this);
-               }
-
-               public DataflowMessageStatus OfferMessage (
-                       DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source,
-                       bool consumeToAccept)
-               {
-                       if (!messageHeader.IsValid)
-                               throw new ArgumentException ("The messageHeader is not valid.",
-                                       "messageHeader");
-                       if (consumeToAccept && source == null)
-                               throw new ArgumentException (
-                                       "consumeToAccept may only be true if provided with a non-null source.",
-                                       "consumeToAccept");
-
-                       if (!predicate(messageValue))
-                               return DataflowMessageStatus.Declined;
-
-                       return actualTarget.OfferMessage (messageHeader, messageValue, sourceBlock,
-                               consumeToAccept);
-               }
-
-               public Task Completion {
-                       get { return actualTarget.Completion; }
-               }
-
-               public void Complete ()
-               {
-                       actualTarget.Complete ();
-               }
-
-               public void Fault (Exception exception)
-               {
-                       actualTarget.Fault (exception);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/PropagatorWrapperBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/PropagatorWrapperBlock.cs
deleted file mode 100644 (file)
index 42b45d1..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-// PropagatorWrapperBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Block returned by <see cref="DataflowBlock.Encapsulate{TInput,TOutput}"/>.
-       /// </summary>
-       class PropagatorWrapperBlock<TInput, TOutput> :
-               IPropagatorBlock<TInput, TOutput> {
-               readonly ITargetBlock<TInput> targetBlock;
-               readonly ISourceBlock<TOutput> sourceBlock;
-
-               public PropagatorWrapperBlock (
-                       ITargetBlock<TInput> target, ISourceBlock<TOutput> source)
-               {
-                       if (target == null)
-                               throw new ArgumentNullException ("target");
-                       if (source == null)
-                               throw new ArgumentNullException ("source");
-
-                       targetBlock = target;
-                       sourceBlock = source;
-               }
-
-               public DataflowMessageStatus OfferMessage (
-                       DataflowMessageHeader messageHeader, TInput messageValue,
-                       ISourceBlock<TInput> source, bool consumeToAccept)
-               {
-                       return targetBlock.OfferMessage (
-                               messageHeader, messageValue, source, consumeToAccept);
-               }
-
-               public TOutput ConsumeMessage (
-                       DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target,
-                       out bool messageConsumed)
-               {
-                       return sourceBlock.ConsumeMessage (messageHeader, target, out messageConsumed);
-               }
-
-               public IDisposable LinkTo (
-                       ITargetBlock<TOutput> target, DataflowLinkOptions linkOptions)
-               {
-                       return sourceBlock.LinkTo (target, linkOptions);
-               }
-
-               public void ReleaseReservation (
-                       DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
-               {
-                       sourceBlock.ReleaseReservation (messageHeader, target);
-               }
-
-               public bool ReserveMessage (
-                       DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
-               {
-                       return sourceBlock.ReserveMessage (messageHeader, target);
-               }
-
-               public void Complete ()
-               {
-                       targetBlock.Complete ();
-               }
-
-               public void Fault (Exception exception)
-               {
-                       targetBlock.Fault (exception);
-               }
-
-               public Task Completion {
-                       get { return sourceBlock.Completion; }
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ReceiveBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/ReceiveBlock.cs
deleted file mode 100644 (file)
index 1e632e5..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-// ReceiveBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// This internal block is used by the <see cref="DataflowBlock.Receive"/> methods
-       /// to retrieve elements in either blocking or asynchronous way.
-       /// </summary>
-       class ReceiveBlock<TOutput> : ITargetBlock<TOutput> {
-               readonly TaskCompletionSource<TOutput> completion =
-                       new TaskCompletionSource<TOutput> ();
-
-               readonly CancellationToken token;
-               CancellationTokenRegistration cancellationRegistration;
-               readonly Timer timeoutTimer;
-
-               IDisposable linkBridge;
-
-               public ReceiveBlock (CancellationToken token, int timeout)
-               {
-                       this.token = token;
-                       cancellationRegistration = token.Register (() =>
-                       {
-                               lock (completion) {
-                                       completion.TrySetCanceled ();
-                               }
-                               CompletionSet ();
-                       });
-                       timeoutTimer = new Timer (
-                               _ =>
-                               {
-                                       lock (completion) {
-                                               completion.TrySetException (new TimeoutException ());
-                                       }
-                                       CompletionSet ();
-                               }, null, timeout,
-                               Timeout.Infinite);
-               }
-
-               public DataflowMessageStatus OfferMessage (
-                       DataflowMessageHeader messageHeader, TOutput messageValue,
-                       ISourceBlock<TOutput> source, bool consumeToAccept)
-               {
-                       if (!messageHeader.IsValid)
-                               return DataflowMessageStatus.Declined;
-
-                       if (completion.Task.Status != TaskStatus.WaitingForActivation)
-                               return DataflowMessageStatus.DecliningPermanently;
-
-                       lock (completion) {
-                               if (completion.Task.Status != TaskStatus.WaitingForActivation)
-                                       return DataflowMessageStatus.DecliningPermanently;
-
-                               if (consumeToAccept) {
-                                       bool consummed;
-                                       if (!source.ReserveMessage (messageHeader, this))
-                                               return DataflowMessageStatus.NotAvailable;
-                                       messageValue = source.ConsumeMessage (messageHeader, this, out consummed);
-                                       if (!consummed)
-                                               return DataflowMessageStatus.NotAvailable;
-                               }
-
-                               completion.TrySetResult (messageValue);
-                       }
-                       CompletionSet ();
-                       return DataflowMessageStatus.Accepted;
-               }
-
-               /// <summary>
-               /// Synchronously waits until an item is available.
-               /// </summary>
-               /// <param name="bridge">The disposable object returned by <see cref="ISourceBlock{TOutput}.LinkTo"/>.</param>
-               public TOutput WaitAndGet (IDisposable bridge)
-               {
-                       try {
-                               return AsyncGet (bridge).Result;
-                       } catch (AggregateException e) {
-                               if (e.InnerException is TaskCanceledException)
-                                       throw new OperationCanceledException (token);
-                               // resets the stack trace, but that shouldn't matter here
-                               throw e.InnerException;
-                       }
-               }
-
-               /// <summary>
-               /// Asynchronously waits until an item is available.
-               /// </summary>
-               /// <param name="bridge">The disposable object returned by <see cref="ISourceBlock{TOutput}.LinkTo"/>.</param>
-               public Task<TOutput> AsyncGet (IDisposable bridge)
-               {
-                       linkBridge = bridge;
-
-                       return completion.Task;
-               }
-
-               /// <summary>
-               /// Called after the result has been set,
-               /// cleans up after this block.
-               /// </summary>
-               void CompletionSet ()
-               {
-                       if (linkBridge != null) {
-                               linkBridge.Dispose ();
-                               linkBridge = null;
-                       }
-
-                       cancellationRegistration.Dispose ();
-                       timeoutTimer.Dispose ();
-               }
-
-               public Task Completion {
-                       get { throw new NotSupportedException (); }
-               }
-
-               public void Complete ()
-               {
-                       lock (completion) {
-                               completion.TrySetException (new InvalidOperationException (
-                                       "No item could be received from the source."));
-                       }
-                       CompletionSet ();
-               }
-
-               public void Fault (Exception exception)
-               {
-                       Complete ();
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/SendBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/SendBlock.cs
deleted file mode 100644 (file)
index ec9b087..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-// SendBlock.cs
-//
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// This block is used in <see cref="DataflowBlock.SendAsync"/>
-       /// to asynchronously wait until a single item is sent to a given target.
-       /// </summary>
-       class SendBlock<T> : ISourceBlock<T> {
-               readonly ITargetBlock<T> sendTarget;
-               readonly T item;
-               CancellationToken cancellationToken;
-               readonly TaskCompletionSource<bool> taskCompletionSource =
-                       new TaskCompletionSource<bool> ();
-               readonly DataflowMessageHeader sendHeader = new DataflowMessageHeader (1);
-               CancellationTokenRegistration cancellationTokenRegistration;
-
-               bool isReserved;
-
-               volatile bool cancelDisabled;
-
-               public SendBlock (ITargetBlock<T> sendTarget, T item,
-                                 CancellationToken cancellationToken)
-               {
-                       this.sendTarget = sendTarget;
-                       this.item = item;
-                       this.cancellationToken = cancellationToken;
-               }
-
-               /// <summary>
-               /// Sends the item given in the constructor to the target block.
-               /// </summary>
-               /// <returns>Task that completes when the sending is done, or can't be performed.</returns>
-               public Task<bool> Send ()
-               {
-                       cancellationTokenRegistration = cancellationToken.Register (
-                               () =>
-                               {
-                                       if (!cancelDisabled)
-                                               taskCompletionSource.SetCanceled ();
-                               });
-
-                       PerformSend ();
-
-                       return taskCompletionSource.Task;
-               }
-
-               /// <summary>
-               /// Offers the item to the target and hadles its response.
-               /// </summary>
-               void PerformSend ()
-               {
-                       DisableCancel ();
-
-                       if (taskCompletionSource.Task.IsCanceled)
-                               return;
-
-                       var status = sendTarget.OfferMessage (sendHeader, item, this, false);
-
-                       if (status == DataflowMessageStatus.Accepted)
-                               SetResult (true);
-                       else if (status != DataflowMessageStatus.Postponed)
-                               SetResult (false);
-                       else
-                               EnableCancel ();
-               }
-
-               public Task Completion {
-                       get { throw new NotSupportedException (); }
-               }
-
-               public void Complete ()
-               {
-                       throw new NotSupportedException ();
-               }
-
-               public void Fault (Exception exception)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               public T ConsumeMessage (DataflowMessageHeader messageHeader,
-                                        ITargetBlock<T> target, out bool messageConsumed)
-               {
-                       if (!messageHeader.IsValid)
-                               throw new ArgumentException ("The messageHeader is not valid.",
-                                       "messageHeader");
-                       if (target == null)
-                               throw new ArgumentNullException("target");
-
-                       DisableCancel ();
-
-                       messageConsumed = false;
-
-                       if (taskCompletionSource.Task.IsCanceled)
-                               return default(T);
-
-                       if (messageHeader != sendHeader || target != sendTarget) {
-                               EnableCancel ();
-                               return default(T);
-                       }
-
-                       SetResult (true);
-
-                       messageConsumed = true;
-                       return item;
-               }
-
-               public IDisposable LinkTo (ITargetBlock<T> target, DataflowLinkOptions linkOptions)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               public void ReleaseReservation (DataflowMessageHeader messageHeader, ITargetBlock<T> target)
-               {
-                       if (messageHeader != sendHeader || target != sendTarget || !isReserved)
-                               throw new InvalidOperationException (
-                                       "The target did not have the message reserved.");
-
-                       isReserved = false;
-                       EnableCancel ();
-                       PerformSend ();
-               }
-
-               public bool ReserveMessage (DataflowMessageHeader messageHeader, ITargetBlock<T> target)
-               {
-                       DisableCancel ();
-
-                       if (messageHeader == sendHeader && target == sendTarget) {
-                               isReserved = true;
-                               return true;
-                       }
-
-                       EnableCancel ();
-
-                       return false;
-               }
-
-               /// <summary>
-               /// Temporarily disables cancelling.
-               /// </summary>
-               void DisableCancel ()
-               {
-                       cancelDisabled = true;
-               }
-
-               /// <summary>
-               /// Enables cancelling after it was disabled.
-               /// If cancellation was attempted in the meantime,
-               /// actually performs the cancelling.
-               /// </summary>
-               void EnableCancel ()
-               {
-                       cancelDisabled = false;
-
-                       if (cancellationToken.IsCancellationRequested)
-                               taskCompletionSource.SetCanceled ();
-               }
-
-               /// <summary>
-               /// Sets the result of the operation.
-               /// </summary>
-               void SetResult (bool result)
-               {
-                       cancellationTokenRegistration.Dispose ();
-                       taskCompletionSource.SetResult (result);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/TargetCollection.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/TargetCollection.cs
deleted file mode 100644 (file)
index cdd9bcb..0000000
+++ /dev/null
@@ -1,523 +0,0 @@
-// TargetCollection.cs
-//
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-
-namespace System.Threading.Tasks.Dataflow {
-       /// <summary>
-       /// Base class for collection of target blocks for a source block.
-       /// Also handles sending messages to the target blocks.
-       /// </summary>
-       abstract class TargetCollectionBase<T> {
-               /// <summary>
-               /// Represents a target block with its options.
-               /// </summary>
-               protected class Target : IDisposable {
-                       readonly TargetCollectionBase<T> targetCollection;
-                       volatile int remainingMessages;
-                       readonly CancellationTokenSource cancellationTokenSource;
-
-                       public ITargetBlock<T> TargetBlock { get; private set; }
-
-                       public Target (TargetCollectionBase<T> targetCollection,
-                                      ITargetBlock<T> targetBlock, int maxMessages,
-                                      CancellationTokenSource cancellationTokenSource)
-                       {
-                               TargetBlock = targetBlock;
-                               this.targetCollection = targetCollection;
-                               remainingMessages = maxMessages;
-                               this.cancellationTokenSource = cancellationTokenSource;
-
-                               Postponed = new AtomicBoolean ();
-                               Reserved = new AtomicBoolean ();
-                       }
-
-                       /// <summary>
-                       /// Is called after a message was sent,  makes sure the linked is destroyed after
-                       /// <see cref="DataflowLinkOptions.MaxMessages"/> were sent.
-                       /// </summary>
-                       public void MessageSent()
-                       {
-                               if (remainingMessages != -1)
-                                       remainingMessages--;
-                               if (remainingMessages == 0)
-                                       Dispose ();
-                       }
-
-                       readonly AtomicBoolean disabled = new AtomicBoolean ();
-                       /// <summary>
-                       /// Is the link destroyed?
-                       /// </summary>
-                       public bool Disabled
-                       {
-                               get { return disabled.Value; }
-                       }
-
-                       /// <summary>
-                       /// Destroys the link to this target.
-                       /// </summary>
-                       public void Dispose ()
-                       {
-                               disabled.Value = true;
-
-                               if (cancellationTokenSource != null)
-                                       cancellationTokenSource.Cancel ();
-
-                               Target ignored;
-                               targetCollection.TargetDictionary.TryRemove (TargetBlock, out ignored);
-
-                               // to avoid memory leak; it could take a long time
-                               // before this object is actually removed from the collection
-                               TargetBlock = null;
-                       }
-
-                       /// <summary>
-                       /// Does this target have a postponed message?
-                       /// </summary>
-                       public AtomicBoolean Postponed { get; private set; }
-                       
-                       /// <summary>
-                       /// Does this target have a reserved message?
-                       /// </summary>
-                       /// <remarks>Used only by broadcast blocks.</remarks>
-                       public AtomicBoolean Reserved { get; private set; }
-               }
-
-               readonly ISourceBlock<T> block;
-               readonly bool broadcast;
-               readonly bool consumeToAccept;
-
-               readonly ConcurrentQueue<Target> prependQueue = new ConcurrentQueue<Target> ();
-               readonly ConcurrentQueue<Target> appendQueue = new ConcurrentQueue<Target> ();
-               readonly LinkedList<Target> targets = new LinkedList<Target> ();
-
-               protected readonly ConcurrentDictionary<ITargetBlock<T>, Target> TargetDictionary =
-                       new ConcurrentDictionary<ITargetBlock<T>, Target> ();
-
-               // lastMessageHeaderId will be always accessed only from one thread
-               long lastMessageHeaderId;
-               // currentMessageHeaderId can be read from multiple threads at the same time
-               long currentMessageHeaderId;
-
-               bool firstOffering;
-               T currentItem;
-
-               protected TargetCollectionBase (ISourceBlock<T> block, bool broadcast, bool consumeToAccept)
-               {
-                       this.block = block;
-                       this.broadcast = broadcast;
-                       this.consumeToAccept = consumeToAccept;
-               }
-
-               /// <summary>
-               /// Adds a target block to send messages to.
-               /// </summary>
-               /// <returns>
-               /// An object that can be used to destroy the link to the added target.
-               /// </returns>
-               public IDisposable AddTarget (ITargetBlock<T> targetBlock, DataflowLinkOptions options)
-               {
-                       CancellationTokenSource cancellationTokenSource = null;
-                       if (options.PropagateCompletion) {
-                               cancellationTokenSource = new CancellationTokenSource();
-                               block.Completion.ContinueWith (t =>
-                               {
-                                       if (t.IsFaulted)
-                                               targetBlock.Fault (t.Exception);
-                                       else
-                                               targetBlock.Complete ();
-                               }, cancellationTokenSource.Token);
-                       }
-
-                       var target = new Target (
-                               this, targetBlock, options.MaxMessages, cancellationTokenSource);
-                       TargetDictionary [targetBlock] = target;
-                       if (options.Append)
-                               appendQueue.Enqueue (target);
-                       else
-                               prependQueue.Enqueue (target);
-
-                       return target;
-               }
-
-               /// <summary>
-               /// Sets the current item to be offered to targets
-               /// </summary>
-               public void SetCurrentItem (T item)
-               {
-                       firstOffering = true;
-                       currentItem = item;
-                       Volatile.Write (ref currentMessageHeaderId, ++lastMessageHeaderId);
-
-                       ClearUnpostponed ();
-               }
-
-               /// <summary>
-               /// Clears the collection of "unpostponed" targets.
-               /// </summary>
-               protected abstract void ClearUnpostponed ();
-
-               /// <summary>
-               /// Resets the current item to be offered to targets.
-               /// This means there is currently nothing to offer.
-               /// </summary>
-               public void ResetCurrentItem ()
-               {
-                       currentItem = default(T);
-                       Volatile.Write (ref currentMessageHeaderId, 0);
-               }
-
-               /// <summary>
-               /// Is there an item to send right now?
-               /// </summary>
-               public bool HasCurrentItem {
-                       get { return Volatile.Read (ref currentMessageHeaderId) != 0; }
-               }
-
-               /// <summary>
-               /// Offers the current item to all eligible targets.
-               /// </summary>
-               /// <returns>Was the item accepted? (Always <c>false</c> for broadcast blocks.)</returns>
-               public bool OfferItemToTargets ()
-               {
-                       // is there an item to offer?
-                       if (!HasCurrentItem)
-                               return false;
-
-                       var old = Tuple.Create (targets.First, targets.Last);
-
-                       do {
-                               // order is important here, we want to make sure that prepended target
-                               // added before appended target is processed first
-                               var appended = PrependOrAppend (false);
-                               var prepended = PrependOrAppend (true);
-
-                               if (OfferItemToTargets (prepended))
-                                       return true;
-
-                               if (firstOffering) {
-                                       if (OfferItemToTargets (old))
-                                               return true;
-                                       firstOffering = false;
-                               } else {
-                                       if (OfferItemToUnpostponed ())
-                                               return true;
-                               }
-
-                               if (OfferItemToTargets (appended))
-                                       return true;
-                       } while (NeedsProcessing);
-
-                       return false;
-               }
-
-               /// <summary>
-               /// Are there any targets that currently require a message to be sent to them?
-               /// </summary>
-               public bool NeedsProcessing {
-                       get {
-                               return !appendQueue.IsEmpty || !prependQueue.IsEmpty
-                                      || !UnpostponedIsEmpty;
-                       }
-               }
-
-               /// <summary>
-               /// Is the collection of unpostponed targets empty?
-               /// </summary>
-               protected abstract bool UnpostponedIsEmpty { get; }
-
-               /// <summary>
-               /// Prepends (appends) targets that should be prepended (appended) to the collection of targets.
-               /// </summary>
-               /// <param name="prepend"><c>true</c> to prepend, <c>false</c> to append.</param>
-               /// <returns>
-               /// Nodes that contain first and last target added to the list,
-               /// or <c>null</c> if no nodes were added.
-               /// </returns>
-               Tuple<LinkedListNode<Target>, LinkedListNode<Target>> PrependOrAppend (
-                       bool prepend)
-               {
-                       var queue = prepend ? prependQueue : appendQueue;
-
-                       if (queue.IsEmpty)
-                               return null;
-
-                       LinkedListNode<Target> first = null;
-                       LinkedListNode<Target> last = null;
-
-                       Target target;
-                       while (queue.TryDequeue (out target)) {
-                               var node = prepend
-                                                  ? targets.AddFirst (target)
-                                                  : targets.AddLast (target);
-                               if (first == null)
-                                       first = node;
-                               last = node;
-                       }
-
-                       return prepend
-                                      ? Tuple.Create (last, first)
-                                      : Tuple.Create (first, last);
-               }
-
-               /// <summary>
-               /// Offers the current item to the targets between the given nodes (inclusive).
-               /// </summary>
-               /// <returns>Was the item accepted? (Always <c>false</c> for broadcast blocks.)</returns>
-               bool OfferItemToTargets (
-                       Tuple<LinkedListNode<Target>, LinkedListNode<Target>> targetPair)
-               {
-                       if (targetPair == null
-                           || targetPair.Item1 == null || targetPair.Item2 == null)
-                               return false;
-
-                       var node = targetPair.Item1;
-                       while (node != targetPair.Item2.Next) {
-                               if (node.Value.Disabled) {
-                                       var nodeToRemove = node;
-                                       node = node.Next;
-                                       targets.Remove (nodeToRemove);
-                                       continue;
-                               }
-
-                               if (OfferItem (node.Value) && !broadcast)
-                                       return true;
-
-                               node = node.Next;
-                       }
-
-                       return false;
-               }
-
-               /// <summary>
-               /// Offers the current item to unpostponed targets.
-               /// </summary>
-               /// <returns>Was the item accepted? (Always <c>false</c> for broadcast blocks.)</returns>
-               protected abstract bool OfferItemToUnpostponed ();
-
-               /// <summary>
-               /// Offers the current item to the given target.
-               /// </summary>
-               /// <returns>Was the item accepted?</returns>
-               protected bool OfferItem (Target target)
-               {
-                       if (target.Reserved.Value)
-                               return false;
-                       if (!broadcast && target.Postponed.Value)
-                               return false;
-
-                       var result = target.TargetBlock.OfferMessage (
-                               // volatile read is not necessary here,
-                               // because currentMessageHeaderId is always written from this thread
-                               new DataflowMessageHeader (currentMessageHeaderId), currentItem, block,
-                               consumeToAccept);
-
-                       switch (result) {
-                       case DataflowMessageStatus.Accepted:
-                               target.MessageSent ();
-                               return true;
-                       case DataflowMessageStatus.Postponed:
-                               target.Postponed.Value = true;
-                               return false;
-                       case DataflowMessageStatus.DecliningPermanently:
-                               target.Dispose ();
-                               return false;
-                       default:
-                               return false;
-                       }
-               }
-
-               /// <summary>
-               /// Returns whether the given header corresponds to the current item.
-               /// </summary>
-               public bool VerifyHeader (DataflowMessageHeader header)
-               {
-                       return header.Id == Volatile.Read (ref currentMessageHeaderId);
-               }
-       }
-
-       /// <summary>
-       /// Target collection for non-broadcast blocks.
-       /// </summary>
-       class TargetCollection<T> : TargetCollectionBase<T> {
-               readonly ConcurrentQueue<Target> unpostponedTargets =
-                       new ConcurrentQueue<Target> ();
-
-               public TargetCollection (ISourceBlock<T> block)
-                       : base (block, false, false)
-               {
-               }
-
-               /// <summary>
-               /// Is the collection of unpostponed targets empty?
-               /// </summary>
-               protected override bool UnpostponedIsEmpty {
-                       get { return unpostponedTargets.IsEmpty; }
-               }
-
-               /// <summary>
-               /// Returns whether the given header corresponds to the current item
-               /// and that the given target block postponed this item.
-               /// </summary>
-               public bool VerifyHeader (DataflowMessageHeader header, ITargetBlock<T> targetBlock)
-               {
-                       return VerifyHeader (header)
-                              && TargetDictionary[targetBlock].Postponed.Value;
-               }
-
-               /// <summary>
-               /// Unpostpones the given target.
-               /// </summary>
-               /// <param name="targetBlock">Target to unpostpone.</param>
-               /// <param name="messageConsumed">Did the target consume an item?</param>
-               public void UnpostponeTarget (ITargetBlock<T> targetBlock, bool messageConsumed)
-               {
-                       Target target;
-                       if (!TargetDictionary.TryGetValue (targetBlock, out target))
-                               return;
-
-                       if (messageConsumed)
-                               target.MessageSent ();
-                       unpostponedTargets.Enqueue (target);
-
-                       target.Postponed.Value = false;
-               }
-
-               /// <summary>
-               /// Clears the collection of "unpostponed" targets.
-               /// </summary>
-               protected override void ClearUnpostponed ()
-               {
-                       Target ignored;
-                       while (unpostponedTargets.TryDequeue (out ignored)) {
-                       }
-               }
-
-               /// <summary>
-               /// Offers the current item to unpostponed targets.
-               /// </summary>
-               /// <returns>Was the item accepted?</returns>
-               protected override bool OfferItemToUnpostponed ()
-               {
-                       Target target;
-                       while (unpostponedTargets.TryDequeue (out target)) {
-                               if (!target.Disabled && OfferItem (target))
-                                       return true;
-                       }
-
-                       return false;
-               }
-       }
-
-       /// <summary>
-       /// Target collection for broadcast blocks.
-       /// </summary>
-       class BroadcastTargetCollection<T> : TargetCollectionBase<T> {
-               // it's necessary to store the headers because of a race between
-               // UnpostponeTargetConsumed and SetCurrentItem
-               readonly ConcurrentQueue<Tuple<Target, DataflowMessageHeader>>
-                       unpostponedTargets =
-                               new ConcurrentQueue<Tuple<Target, DataflowMessageHeader>> ();
-
-               public BroadcastTargetCollection (ISourceBlock<T> block, bool consumeToAccept)
-                       : base (block, true, consumeToAccept)
-               {
-               }
-
-               /// <summary>
-               /// Is the collection of unpostponed targets empty?
-               /// </summary>
-               protected override bool UnpostponedIsEmpty {
-                       get { return unpostponedTargets.IsEmpty; }
-               }
-
-               /// <summary>
-               /// Marks the target as having a reserved message.
-               /// </summary>
-               public void ReserveTarget (ITargetBlock<T> targetBlock)
-               {
-                       TargetDictionary [targetBlock].Reserved.Value = true;
-               }
-
-               /// <summary>
-               /// Unpostpone target after it consumed a message.
-               /// </summary>
-               /// <param name="targetBlock">The target to unpostpone.</param>
-               /// <param name="header">Header of the message the target consumed.</param>
-               public void UnpostponeTargetConsumed (ITargetBlock<T> targetBlock,
-                                                     DataflowMessageHeader header)
-               {
-                       Target target = TargetDictionary [targetBlock];
-
-                       target.MessageSent ();
-                       unpostponedTargets.Enqueue (Tuple.Create (target, header));
-
-                       target.Postponed.Value = false;
-                       target.Reserved.Value = false;
-               }
-
-               /// <summary>
-               /// Unpostpone target in the case when it didn't successfuly consume a message.
-               /// </summary>
-               public void UnpostponeTargetNotConsumed (ITargetBlock<T> targetBlock)
-               {
-                       Target target;
-                       if (!TargetDictionary.TryGetValue (targetBlock, out target))
-                               return;
-
-                       unpostponedTargets.Enqueue (Tuple.Create (target,
-                               new DataflowMessageHeader ()));
-
-                       target.Postponed.Value = false;
-                       target.Reserved.Value = false;
-               }
-
-               /// <summary>
-               /// Clears the collection of "unpostponed" targets.
-               /// </summary>
-               protected override void ClearUnpostponed ()
-               {
-                       Tuple<Target, DataflowMessageHeader> ignored;
-                       while (unpostponedTargets.TryDequeue (out ignored)) {
-                       }
-               }
-
-               /// <summary>
-               /// Offers the current item to unpostponed targets.
-               /// </summary>
-               /// <returns>Always <c>false</c>.</returns>
-               protected override bool OfferItemToUnpostponed ()
-               {
-                       Tuple<Target, DataflowMessageHeader> tuple;
-                       while (unpostponedTargets.TryDequeue (out tuple)) {
-                               // offer to unconditionaly unpostponed
-                               // and those that consumed some old value
-                               if (!tuple.Item1.Disabled
-                                   && (!tuple.Item2.IsValid || !VerifyHeader (tuple.Item2)))
-                                       OfferItem (tuple.Item1);
-                       }
-
-                       return false;
-               }
-       }
-}
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/TransformBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/TransformBlock.cs
deleted file mode 100644 (file)
index a1c37f4..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-// TransformBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       public sealed class TransformBlock<TInput, TOutput> :
-               IPropagatorBlock<TInput, TOutput>, IReceivableSourceBlock<TOutput> {
-               readonly ExecutionDataflowBlockOptions dataflowBlockOptions;
-               readonly CompletionHelper compHelper;
-               readonly BlockingCollection<TInput> messageQueue = new BlockingCollection<TInput> ();
-               readonly MessageBox<TInput> messageBox;
-               readonly OutgoingQueue<TOutput> outgoing;
-               readonly Func<TInput, TOutput> transform;
-               readonly Func<TInput, Task<TOutput>> asyncTransform;
-
-               TransformBlock (ExecutionDataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-               
-                       this.dataflowBlockOptions = dataflowBlockOptions;
-                       this.compHelper = new CompletionHelper (dataflowBlockOptions);
-               }
-
-               public TransformBlock (Func<TInput, TOutput> transform)
-                       : this (transform, ExecutionDataflowBlockOptions.Default)
-               {
-               }
-
-               public TransformBlock (Func<TInput, TOutput> transform,
-                                      ExecutionDataflowBlockOptions dataflowBlockOptions)
-                       : this (dataflowBlockOptions)
-               {
-                       if (transform == null)
-                               throw new ArgumentNullException("transform");
-
-                       this.transform = transform;
-                       this.messageBox = new ExecutingMessageBox<TInput> (
-                               this, messageQueue, compHelper,
-                               () => outgoing.IsCompleted, TransformProcess, () => outgoing.Complete (),
-                               dataflowBlockOptions);
-                       this.outgoing = new OutgoingQueue<TOutput> (this, compHelper,
-                               () => messageQueue.IsCompleted, messageBox.DecreaseCount,
-                               dataflowBlockOptions);
-               }
-
-               public TransformBlock(Func<TInput, Task<TOutput>> transform)
-                       : this(transform, ExecutionDataflowBlockOptions.Default)
-               {
-               }
-
-               public TransformBlock (Func<TInput, Task<TOutput>> transform,
-                                      ExecutionDataflowBlockOptions dataflowBlockOptions)
-                       : this (dataflowBlockOptions)
-               {
-                       if (transform == null)
-                               throw new ArgumentNullException("transform");
-
-                       this.asyncTransform = transform;
-                       this.messageBox = new AsyncExecutingMessageBox<TInput, Task<TOutput>> (
-                               this, messageQueue, compHelper, () => outgoing.IsCompleted,
-                               AsyncTransformProcess, AsyncProcessFinishedTask, () => outgoing.Complete (),
-                               dataflowBlockOptions);
-                       this.outgoing = new OutgoingQueue<TOutput> (this, compHelper,
-                               () => messageQueue.IsCompleted, messageBox.DecreaseCount,
-                               dataflowBlockOptions);
-               }
-
-               DataflowMessageStatus ITargetBlock<TInput>.OfferMessage (
-                       DataflowMessageHeader messageHeader, TInput messageValue,
-                       ISourceBlock<TInput> source, bool consumeToAccept)
-               {
-                       return messageBox.OfferMessage (messageHeader, messageValue, source, consumeToAccept);
-               }
-
-               public IDisposable LinkTo (ITargetBlock<TOutput> target, DataflowLinkOptions linkOptions)
-               {
-                       return outgoing.AddTarget (target, linkOptions);
-               }
-
-               TOutput ISourceBlock<TOutput>.ConsumeMessage (
-                       DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target,
-                       out bool messageConsumed)
-               {
-                       return outgoing.ConsumeMessage (messageHeader, target, out messageConsumed);
-               }
-
-               void ISourceBlock<TOutput>.ReleaseReservation (
-                       DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
-               {
-                       outgoing.ReleaseReservation (messageHeader, target);
-               }
-
-               bool ISourceBlock<TOutput>.ReserveMessage (
-                       DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
-               {
-                       return outgoing.ReserveMessage (messageHeader, target);
-               }
-
-               public bool TryReceive (Predicate<TOutput> filter, out TOutput item)
-               {
-                       return outgoing.TryReceive (filter, out item);
-               }
-
-               public bool TryReceiveAll (out IList<TOutput> items)
-               {
-                       return outgoing.TryReceiveAll (out items);
-               }
-
-               /// <summary>
-               /// Transforms one item from the queue if the transform delegate is synchronous.
-               /// </summary>
-               /// <returns>Returns whether an item was processed. Returns <c>false</c> if the queue is empty.</returns>
-               bool TransformProcess ()
-               {
-                       TInput input;
-
-                       var dequeued = messageQueue.TryTake (out input);
-                       if (dequeued)
-                               outgoing.AddData (transform (input));
-
-                       return dequeued;
-               }
-
-               /// <summary>
-               /// Processes one item from the queue if the transform delegate is asynchronous.
-               /// </summary>
-               /// <param name="task">The Task that was returned by the synchronous part of the delegate.</param>
-               /// <returns>Returns whether an item was processed. Returns <c>false</c> if the queue was empty.</returns>
-               bool AsyncTransformProcess (out Task<TOutput> task)
-               {
-                       TInput input;
-
-                       var dequeued = messageQueue.TryTake (out input);
-                       if (dequeued)
-                               task = asyncTransform (input);
-                       else
-                               task = null;
-
-                       return dequeued;
-               }
-
-               /// <summary>
-               /// Process result of finished asynchronous transformation.
-               /// </summary>
-               void AsyncProcessFinishedTask (Task<TOutput> task)
-               {
-                       if (task == null || task.IsCanceled)
-                               messageBox.DecreaseCount ();
-                       else
-                               outgoing.AddData (task.Result);
-               }
-
-               public void Complete ()
-               {
-                       messageBox.Complete ();
-               }
-
-               void IDataflowBlock.Fault (Exception exception)
-               {
-                       compHelper.RequestFault (exception);
-               }
-
-               public Task Completion {
-                       get { return compHelper.Completion; }
-               }
-
-               public int OutputCount {
-                       get { return outgoing.Count; }
-               }
-
-               public int InputCount {
-                       get { return messageQueue.Count; }
-               }
-
-               public override string ToString ()
-               {
-                       return NameHelper.GetName (this, dataflowBlockOptions);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/TransformManyBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/TransformManyBlock.cs
deleted file mode 100644 (file)
index 7bb4657..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-// TransformManyBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       public sealed class TransformManyBlock<TInput, TOutput> :
-               IPropagatorBlock<TInput, TOutput>, IReceivableSourceBlock<TOutput> {
-               readonly CompletionHelper compHelper;
-               readonly BlockingCollection<TInput> messageQueue = new BlockingCollection<TInput> ();
-               readonly MessageBox<TInput> messageBox;
-               readonly ExecutionDataflowBlockOptions dataflowBlockOptions;
-               readonly Func<TInput, IEnumerable<TOutput>> transform;
-               readonly Func<TInput, Task<IEnumerable<TOutput>>> asyncTransform;
-               readonly OutgoingQueue<TOutput> outgoing;
-
-               TransformManyBlock (ExecutionDataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-                       
-                       this.dataflowBlockOptions = dataflowBlockOptions;
-                       this.compHelper = new CompletionHelper (dataflowBlockOptions);
-               }
-
-               public TransformManyBlock (Func<TInput, IEnumerable<TOutput>> transform)
-                       : this (transform, ExecutionDataflowBlockOptions.Default)
-               {
-               }
-
-               public TransformManyBlock (Func<TInput, IEnumerable<TOutput>> transform,
-                                          ExecutionDataflowBlockOptions dataflowBlockOptions)
-                       : this (dataflowBlockOptions)
-               {
-                       if (transform == null)
-                               throw new ArgumentNullException ("transform");
-
-                       this.transform = transform;
-                       this.messageBox = new ExecutingMessageBox<TInput> (this, messageQueue, compHelper,
-                               () => outgoing.IsCompleted, TransformProcess, () => outgoing.Complete (),
-                               dataflowBlockOptions);
-                       this.outgoing = new OutgoingQueue<TOutput> (this, compHelper,
-                               () => messageQueue.IsCompleted, messageBox.DecreaseCount,
-                               dataflowBlockOptions);
-               }
-
-               public TransformManyBlock (Func<TInput, Task<IEnumerable<TOutput>>> transform)
-                       : this (transform, ExecutionDataflowBlockOptions.Default)
-               {
-               }
-
-               public TransformManyBlock (Func<TInput, Task<IEnumerable<TOutput>>> transform,
-                                          ExecutionDataflowBlockOptions dataflowBlockOptions)
-                       : this (dataflowBlockOptions)
-               {
-                       if (transform == null)
-                               throw new ArgumentNullException ("transform");
-
-                       this.asyncTransform = transform;
-                       this.messageBox = new AsyncExecutingMessageBox<TInput, Task<IEnumerable<TOutput>>> (this, messageQueue, compHelper,
-                               () => outgoing.IsCompleted, AsyncTransformProcess, ProcessFinishedTask, () => outgoing.Complete (),
-                               dataflowBlockOptions);
-                       this.outgoing = new OutgoingQueue<TOutput> (this, compHelper,
-                               () => messageQueue.IsCompleted, messageBox.DecreaseCount,
-                               dataflowBlockOptions);                  
-               }
-
-               DataflowMessageStatus ITargetBlock<TInput>.OfferMessage (
-                       DataflowMessageHeader messageHeader, TInput messageValue,
-                       ISourceBlock<TInput> source, bool consumeToAccept)
-               {
-                       return messageBox.OfferMessage (messageHeader, messageValue, source, consumeToAccept);
-               }
-
-               public IDisposable LinkTo (ITargetBlock<TOutput> target, DataflowLinkOptions linkOptions)
-               {
-                       return outgoing.AddTarget (target, linkOptions);
-               }
-
-               TOutput ISourceBlock<TOutput>.ConsumeMessage (
-                       DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target,
-                       out bool messageConsumed)
-               {
-                       return outgoing.ConsumeMessage (messageHeader, target, out messageConsumed);
-               }
-
-               void ISourceBlock<TOutput>.ReleaseReservation (
-                       DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
-               {
-                       outgoing.ReleaseReservation (messageHeader, target);
-               }
-
-               bool ISourceBlock<TOutput>.ReserveMessage (
-                       DataflowMessageHeader messageHeader, ITargetBlock<TOutput> target)
-               {
-                       return outgoing.ReserveMessage (messageHeader, target);
-               }
-
-               public bool TryReceive (Predicate<TOutput> filter, out TOutput item)
-               {
-                       return outgoing.TryReceive (filter, out item);
-               }
-
-               public bool TryReceiveAll (out IList<TOutput> items)
-               {
-                       return outgoing.TryReceiveAll (out items);
-               }
-
-               /// <summary>
-               /// Transforms one item from the queue if the transform delegate is synchronous.
-               /// </summary>
-               /// <returns>Returns whether an item was processed. Returns <c>false</c> if the queue is empty.</returns>
-               bool TransformProcess ()
-               {
-                       TInput input;
-
-                       var dequeued = messageQueue.TryTake (out input);
-                       if (dequeued) {
-                               var result = transform (input);
-
-                               EnqueueTransformed (result);
-                       }
-
-                       return dequeued;
-               }
-
-               /// <summary>
-               /// Adds the transformed collection to the output queue.
-               /// </summary>
-               void EnqueueTransformed (IEnumerable<TOutput> transformed)
-               {
-                       bool first = true;
-                       if (transformed != null) {
-                               foreach (var item in transformed) {
-                                       if (first)
-                                               first = false;
-                                       else
-                                               messageBox.IncreaseCount ();
-                                       outgoing.AddData (item);
-                               }
-                       }
-                       if (first)
-                               messageBox.DecreaseCount ();
-               }
-
-               /// <summary>
-               /// Processes one item from the queue if the transform delegate is asynchronous.
-               /// </summary>
-               /// <param name="task">The Task that was returned by the synchronous part of the delegate.</param>
-               /// <returns>Returns whether an item was processed. Returns <c>false</c> if the queue was empty.</returns>
-               bool AsyncTransformProcess (out Task<IEnumerable<TOutput>> task)
-               {
-                       TInput input;
-
-                       var dequeued = messageQueue.TryTake (out input);
-                       if (dequeued)
-                               task = asyncTransform (input);
-                       else
-                               task = null;
-
-                       return dequeued;
-               }
-
-               /// <summary>
-               /// Process result of finished asynchronous transformation.
-               /// </summary>
-               void ProcessFinishedTask (Task<IEnumerable<TOutput>> task)
-               {
-                       if (task == null || task.IsCanceled)
-                               messageBox.DecreaseCount ();
-                       else
-                               EnqueueTransformed (task.Result);
-               }
-
-               public void Complete ()
-               {
-                       messageBox.Complete ();
-               }
-
-               void IDataflowBlock.Fault (Exception exception)
-               {
-                       compHelper.RequestFault (exception);
-               }
-
-               public Task Completion {
-                       get { return compHelper.Completion; }
-               }
-
-               public int OutputCount {
-                       get { return outgoing.Count; }
-               }
-
-               public int InputCount {
-                       get { return messageQueue.Count; }
-               }
-
-               public override string ToString ()
-               {
-                       return NameHelper.GetName (this, dataflowBlockOptions);
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/WriteOnceBlock.cs b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow/WriteOnceBlock.cs
deleted file mode 100644 (file)
index 6da7046..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-// WriteOnceBlock.cs
-//
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// Copyright (c) 2012 Petr Onderka
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-using System.Collections.Concurrent;
-
-namespace System.Threading.Tasks.Dataflow {
-       public sealed class WriteOnceBlock<T> : IPropagatorBlock<T, T>, IReceivableSourceBlock<T> {
-               readonly CompletionHelper compHelper;
-               readonly BlockingCollection<T> messageQueue = new BlockingCollection<T> ();
-               readonly MessageBox<T> messageBox;
-               readonly DataflowBlockOptions dataflowBlockOptions;
-               readonly Func<T, T> cloningFunction;
-               readonly BroadcastOutgoingQueue<T> outgoing;
-               AtomicBooleanValue written;
-
-               public WriteOnceBlock (Func<T, T> cloningFunction)
-                       : this (cloningFunction, DataflowBlockOptions.Default)
-               {
-               }
-
-               public WriteOnceBlock (Func<T, T> cloningFunction,
-                                      DataflowBlockOptions dataflowBlockOptions)
-               {
-                       if (dataflowBlockOptions == null)
-                               throw new ArgumentNullException ("dataflowBlockOptions");
-
-                       this.cloningFunction = cloningFunction;
-                       this.dataflowBlockOptions = dataflowBlockOptions;
-                       this.compHelper = CompletionHelper.GetNew (dataflowBlockOptions);
-                       this.messageBox = new PassingMessageBox<T> (this, messageQueue, compHelper,
-                               () => true, _ => BroadcastProcess (), dataflowBlockOptions,
-                               canAccept: () => written.TrySet ());
-                       this.outgoing = new BroadcastOutgoingQueue<T> (this, compHelper,
-                               () => messageQueue.IsCompleted, messageBox.DecreaseCount,
-                               dataflowBlockOptions, cloningFunction != null);
-               }
-
-               DataflowMessageStatus ITargetBlock<T>.OfferMessage (
-                       DataflowMessageHeader messageHeader, T messageValue,
-                       ISourceBlock<T> source, bool consumeToAccept)
-               {
-                       var result = messageBox.OfferMessage (messageHeader, messageValue, source,
-                               consumeToAccept);
-                       if (result == DataflowMessageStatus.Accepted)
-                               messageQueue.CompleteAdding ();
-                       return result;
-               }
-
-               public IDisposable LinkTo (ITargetBlock<T> target,
-                                          DataflowLinkOptions linkOptions)
-               {
-                       return outgoing.AddTarget (target, linkOptions);
-               }
-
-               T ISourceBlock<T>.ConsumeMessage (DataflowMessageHeader messageHeader,
-                                                 ITargetBlock<T> target,
-                                                 out bool messageConsumed)
-               {
-                       T message = outgoing.ConsumeMessage (
-                               messageHeader, target, out messageConsumed);
-                       if (messageConsumed && cloningFunction != null)
-                               message = cloningFunction (message);
-                       return message;
-               }
-
-               void ISourceBlock<T>.ReleaseReservation (DataflowMessageHeader messageHeader,
-                                                        ITargetBlock<T> target)
-               {
-                       outgoing.ReleaseReservation (messageHeader, target);
-               }
-
-               bool ISourceBlock<T>.ReserveMessage (DataflowMessageHeader messageHeader,
-                                                    ITargetBlock<T> target)
-               {
-                       return outgoing.ReserveMessage (messageHeader, target);
-               }
-
-               public bool TryReceive (Predicate<T> filter, out T item)
-               {
-                       var received = outgoing.TryReceive (filter, out item);
-                       if (received && cloningFunction != null)
-                               item = cloningFunction (item);
-                       return received;
-               }
-
-               bool IReceivableSourceBlock<T>.TryReceiveAll (out IList<T> items)
-               {
-                       T item;
-                       if (!TryReceive (null, out item)) {
-                               items = null;
-                               return false;
-                       }
-
-                       items = new[] { item };
-                       return true;
-               }
-
-               /// <summary>
-               /// Moves an item from the input queue to the output queue.
-               /// </summary>
-               void BroadcastProcess ()
-               {
-                       T item;
-                       if (messageQueue.TryTake (out item))
-                               outgoing.AddData (item);
-                       outgoing.DequeueItem ();
-               }
-
-               public void Complete ()
-               {
-                       messageBox.Complete ();
-                       outgoing.Complete ();
-               }
-
-               void IDataflowBlock.Fault (Exception exception)
-               {
-                       compHelper.RequestFault (exception);
-               }
-
-               public Task Completion {
-                       get { return compHelper.Completion; }
-               }
-
-               public override string ToString ()
-               {
-                       return NameHelper.GetName (this, dataflowBlockOptions);
-               }
-       }
-}
\ No newline at end of file
index a1d569fcb22e1ebd9a0c42dd6a6eb9d137691fee..f23cf2edc1fdd1b7c54c73873793a684caae3504 100644 (file)
@@ -2,7 +2,6 @@ TestScheduler.cs
 AssertEx.cs
 Blocks.cs
 System.Threading.Tasks.Dataflow/DataflowMessageHeaderTest.cs
-System.Threading.Tasks.Dataflow/CompletionHelperTest.cs
 System.Threading.Tasks.Dataflow/CompletionTest.cs
 System.Threading.Tasks.Dataflow/ReceivingTest.cs
 System.Threading.Tasks.Dataflow/OptionsTest.cs
@@ -26,5 +25,4 @@ System.Threading.Tasks.Dataflow/InvalidArgumentsTest.cs
 System.Threading.Tasks.Dataflow/OutputAvailableTest.cs
 System.Threading.Tasks.Dataflow/EncapsulateTest.cs
 System.Threading.Tasks.Dataflow/ChooseTest.cs
-../System.Threading.Tasks.Dataflow/CompletionHelper.cs
 ../../Mono.Parallel/Mono.Threading/AtomicBoolean.cs
index 9e91ad564762bec33432867fbf633902e7d2df39..0502b761beb70dd8c651545859bf2ce233c549a9 100644 (file)
@@ -46,7 +46,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        for (int i = 0; i < array.Length; ++i)
                                Assert.IsTrue (block.Post (i), "Not accepted");
 
-                       Assert.IsTrue (evt.Wait (500));
+                       Assert.IsTrue (evt.Wait (1000));
                        
                        Assert.IsTrue (array.All (b => b), "Some false");
                }
@@ -82,7 +82,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        block.Complete ();
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
index 41bb9b6ea8c3e560562d94426551cbff10d0c6ff..a6f4ab1090b53ecde9484f4c2dc4c80d16975acc 100644 (file)
@@ -56,7 +56,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsNull (array);
 
                        Assert.IsTrue (buffer.Post (42));
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (1000));
 
                        Assert.IsNotNull (array);
                        CollectionAssert.AreEqual (new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 42 }, array);
@@ -340,7 +340,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        scheduler.ExecuteAll ();
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
@@ -355,9 +355,9 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        block.Complete ();
 
                        CollectionAssert.AreEqual (new[] { 1 },
-                               block.Receive (TimeSpan.FromMilliseconds (200)));
+                               block.Receive (TimeSpan.FromMilliseconds (2000)));
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
@@ -371,9 +371,9 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        block.Complete ();
 
                        CollectionAssert.AreEqual (new[] { 1, 2 },
-                               block.Receive (TimeSpan.FromMilliseconds (200)));
+                               block.Receive (TimeSpan.FromMilliseconds (2000)));
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
@@ -386,9 +386,9 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        block.Complete ();
 
                        CollectionAssert.AreEqual (new[] { 1 },
-                               block.Receive (TimeSpan.FromMilliseconds (200)));
+                               block.Receive (TimeSpan.FromMilliseconds (2000)));
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
@@ -410,7 +410,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        int[] batch;
                        Assert.IsFalse (block.TryReceive (out batch));
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
@@ -446,7 +446,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsTrue (block.TryReceive (out batch));
                        CollectionAssert.AreEquivalent (new[] { 11, 21 }, batch);
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
        }
 }
\ No newline at end of file
index 5547b2f14ab174c1faa38293200ea324916f11aa..50983f5d9cac16884eb8b3853a06d22412938db0 100644 (file)
@@ -52,7 +52,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.IsTrue (block.Target2.Post (2));
 
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (1000));
 
                        Assert.IsNotNull (result);
                        CollectionAssert.AreEqual (new[] { 1 }, result.Item1);
@@ -68,7 +68,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsNull (result);
 
                        Assert.IsTrue (block.Target1.Post (4));
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (1000));
 
                        Assert.IsNotNull (result);
                        CollectionAssert.AreEqual (new[] { 3, 4 }, result.Item1);
@@ -84,7 +84,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsNull (result);
 
                        Assert.IsTrue (block.Target2.Post (6));
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (1000));
 
                        Assert.IsNotNull (result);
                        CollectionAssert.IsEmpty (result.Item1);
@@ -114,7 +114,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        CollectionAssert.AreEqual (new[] { 1 }, batch.Item1);
                        CollectionAssert.IsEmpty (batch.Item2);
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
@@ -143,7 +143,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        scheduler.ExecuteAll ();
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
        }
 }
\ No newline at end of file
index f1d622f799e439ffbd32184b50b01443f0d4561a..bdf27532e0b24667ff5134021af9c095a9d4b890 100644 (file)
@@ -54,7 +54,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.IsTrue (block.Target3.Post ("foo"));
 
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (1000));
 
                        Assert.IsNotNull (result);
                        CollectionAssert.AreEqual (new[] { 1 }, result.Item1);
@@ -86,7 +86,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        CollectionAssert.IsEmpty (batch.Item2);
                        CollectionAssert.IsEmpty (batch.Item3);
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
@@ -125,7 +125,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        scheduler.ExecuteAll ();
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
        }
 }
\ No newline at end of file
index bd8ccb579e0fdf8a3f422a412adf296bd44be296..bec9f30a1884947be265b146bcbe9a14ad3d76e3 100644 (file)
@@ -77,13 +77,13 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.AreEqual (DataflowMessageStatus.Postponed,
                                target.OfferMessage (header, 43, source, false));
 
-                       Assert.AreEqual (42, block.Receive (TimeSpan.FromMilliseconds (100)));
+                       Assert.AreEqual (42, block.Receive (TimeSpan.FromMilliseconds (1000)));
 
                        Assert.IsFalse (block.Completion.Wait (100));
 
                        Assert.IsTrue (source.WasConsumed (header));
 
-                       Assert.AreEqual (43, block.Receive (TimeSpan.FromMilliseconds (100)));
+                       Assert.AreEqual (43, block.Receive (TimeSpan.FromMilliseconds (1000)));
 
                        Assert.AreEqual (DataflowMessageStatus.Accepted,
                                target.OfferMessage (new DataflowMessageHeader (3), 44, source, false));
index 1802b389e427a3c6ea695cc6f6323bd373a3e82b..b08e6bd174a00baad2a3b9899be216ace4e825e5 100644 (file)
@@ -58,7 +58,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.IsTrue (broadcast.Post (42));
 
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (1000));
 
                        Assert.IsTrue (act1);
                        Assert.IsTrue (act2);
@@ -81,7 +81,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        broadcast.LinkTo (action);
 
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (1000));
 
                        Assert.IsTrue (act);
                }
@@ -99,7 +99,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsTrue (broadcast.Post (2));
 
                        Assert.AreEqual (1, target.Receive (TimeSpan.FromMilliseconds (0)));
-                       Assert.AreEqual (2, target.Receive (TimeSpan.FromMilliseconds (100)));
+                       Assert.AreEqual (2, target.Receive (TimeSpan.FromMilliseconds (1000)));
                }
 
                [Test]
@@ -200,7 +200,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsTrue (broadcast.Post (2));
 
                        AssertEx.Throws<TimeoutException> (
-                               () => target.Receive (TimeSpan.FromMilliseconds (100)));
+                               () => target.Receive (TimeSpan.FromMilliseconds (1000)));
 
                        scheduler.ExecuteAll ();
 
@@ -269,7 +269,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.IsTrue (broadcast.Post (source));
 
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (1000));
 
                        Assert.IsNotNull (act1);
                        Assert.IsNotNull (act2);
index e22e94113a850dfc3661ca6d25c9eeb4a026cdf4..0844be2368018ba8372f98a1d606e9b9d9abfdd7 100644 (file)
@@ -46,7 +46,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        source1.Post (42);
 
-                       Assert.IsTrue (completion.Wait (500));
+                       Assert.IsTrue (completion.Wait (1000));
                        Assert.AreEqual (0, completion.Result);
                        Assert.IsTrue (action1);
                        Assert.IsFalse (action2);
@@ -67,7 +67,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        source1.Post (42);
                        source1.Post (43);
 
-                       Assert.IsTrue (completion.Wait (500));
+                       Assert.IsTrue (completion.Wait (1000));
                        Assert.AreEqual (0, completion.Result);
                        Assert.AreEqual (1, action1);
                        Assert.AreEqual (0, action2);
@@ -104,7 +104,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Task.WaitAll (t1, t2);
 
-                       Assert.IsTrue (completion.Wait (500));
+                       Assert.IsTrue (completion.Wait (1000));
                        Assert.AreEqual (1, action1 + action2);
 
                        int item;
@@ -166,7 +166,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        source1.Post (10);
 
-                       Assert.IsTrue (completion.Wait (500));
+                       Assert.IsTrue (completion.Wait (1000));
                        Assert.AreEqual (0, completion.Result);
                        Assert.AreEqual (42, action1);
                        Assert.AreEqual (0, action2);
@@ -185,7 +185,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        source1.Post (42);
 
-                       var ae = AssertEx.Throws<AggregateException> (() => completion.Wait (500));
+                       var ae = AssertEx.Throws<AggregateException> (() => completion.Wait (1000));
                        Assert.AreEqual (1, ae.InnerExceptions.Count);
                        Assert.AreSame (exception, ae.InnerException);
                }
@@ -207,7 +207,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        source3.Post (new object ());
 
-                       Assert.IsTrue (completion.Wait (500));
+                       Assert.IsTrue (completion.Wait (1000));
                        Assert.AreEqual (2, completion.Result);
                        Assert.IsFalse (action1);
                        Assert.IsFalse (action2);
diff --git a/mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/CompletionHelperTest.cs b/mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/CompletionHelperTest.cs
deleted file mode 100644 (file)
index ca8309e..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-// 
-// CompletionHelperTest.cs
-//  
-// Author:
-//       Jérémie "garuma" Laval <jeremie.laval@gmail.com>
-// 
-// Copyright (c) 2011 Jérémie "garuma" Laval
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-using System.Linq;
-using System.Threading.Tasks;
-using System.Threading.Tasks.Dataflow;
-
-using NUnit.Framework;
-
-namespace MonoTests.System.Threading.Tasks.Dataflow
-{
-       [TestFixture]
-       public class CompletionHelperTest
-       {
-               CompletionHelper helper;
-
-               [SetUp]
-               public void Setup ()
-               {
-                       helper = CompletionHelper.GetNew (null);
-               }
-
-               [Test]
-               public void InitialStateTest ()
-               {
-                       Task completed = helper.Completion;
-
-                       Assert.IsNotNull (completed);
-                       Assert.IsFalse (completed.IsCompleted);
-               }
-
-               [Test]
-               public void FaultedTest ()
-               {
-                       Exception ex = new ApplicationException ("Foobar");
-                       helper.RequestFault (ex);
-                       Task completed = helper.Completion;
-
-                       Assert.IsNotNull (completed);
-                       Assert.IsTrue (completed.IsCompleted);
-                       Assert.AreEqual (TaskStatus.Faulted, completed.Status);
-                       Assert.AreEqual (ex, completed.Exception.InnerExceptions.First ());
-               }
-
-               [Test]
-               public void CompleteTest ()
-               {
-                       helper.Complete ();
-                       Task completed = helper.Completion;
-
-                       Assert.IsNotNull (completed);
-                       Assert.IsTrue (completed.IsCompleted);
-                       Assert.IsFalse (completed.IsFaulted);
-                       Assert.IsFalse (completed.IsCanceled);
-               }
-       }
-}
index 952726d3f835309e6424d291e4ff5dee941f0c36..7c25746cb691dca078f80e9a8ff17c174eb2587b 100644 (file)
@@ -50,7 +50,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.AreEqual (42, block.Receive ());
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                        Assert.IsTrue (block.Completion.IsCompleted);
                        Assert.AreEqual (TaskStatus.RanToCompletion, block.Completion.Status);
                }
@@ -62,7 +62,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsTrue (block.Post (42));
                        ((IDataflowBlock)block).Fault (new Exception ());
 
-                       AssertEx.Throws<AggregateException> (() => block.Completion.Wait (100));
+                       AssertEx.Throws<AggregateException> (() => block.Completion.Wait (1000));
                        Assert.IsTrue (block.Completion.IsCompleted);
                        Assert.AreEqual (TaskStatus.Faulted, block.Completion.Status);
                        Assert.IsFalse (block.Post (43));
@@ -78,7 +78,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        tokenSource.Cancel ();
 
                        var ae = AssertEx.Throws<AggregateException> (
-                               () => block.Completion.Wait (100));
+                               () => block.Completion.Wait (1000));
                        Assert.AreEqual (1, ae.InnerExceptions.Count);
                        Assert.AreEqual (typeof(TaskCanceledException), ae.InnerException.GetType ());
 
@@ -208,7 +208,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        ((IDataflowBlock)block).Fault (new Exception ("fault"));
 
                        var exception =
-                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (100));
+                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (1000));
 
                        Assert.AreEqual (1, exception.InnerExceptions.Count);
                        Assert.AreEqual ("action", exception.InnerException.Message);
@@ -259,7 +259,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        tokenSource.Cancel ();
 
                        var exception =
-                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (100));
+                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (1000));
 
                        Assert.AreEqual (1, exception.InnerExceptions.Count);
                        Assert.AreEqual ("action", exception.InnerException.Message);
@@ -289,7 +289,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        evt.Set ();
 
                        var exception =
-                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (100));
+                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (1000));
 
                        Assert.AreEqual (1, exception.InnerExceptions.Count);
                        Assert.AreEqual ("action", exception.InnerException.Message);
@@ -309,7 +309,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        ((IDataflowBlock)block).Fault (new Exception ("fault"));
 
                        var exception =
-                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (100));
+                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (1000));
 
                        Assert.AreEqual (1, exception.InnerExceptions.Count);
                        Assert.AreEqual (typeof(TaskCanceledException),
@@ -341,7 +341,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Thread.Sleep (100);
 
                        var exception =
-                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (100));
+                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (1000));
 
                        Assert.AreEqual (1, exception.InnerExceptions.Count);
                        Assert.AreEqual (typeof(TaskCanceledException),
@@ -373,7 +373,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Thread.Sleep (100);
 
                        var exception =
-                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (100));
+                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (1000));
 
                        Assert.AreEqual (1, exception.InnerExceptions.Count);
                        Assert.AreEqual ("fault", exception.InnerException.Message);
index 4ebff304fc930f2f944d672d2b2d28c578b86043..f897f06e23ec0462959abcb771decc277aa2ed6f 100644 (file)
@@ -60,7 +60,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        var block = new BufferBlock<int> ();
                        block.Complete ();
                        AssertEx.Throws<InvalidOperationException> (
-                               () => block.Receive (TimeSpan.FromMilliseconds (100)));
+                               () => block.Receive (TimeSpan.FromMilliseconds (1000)));
                }
 
                [Test]
@@ -68,7 +68,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                {
                        var block = new BufferBlock<int> ();
                        AssertEx.Throws<TimeoutException> (
-                               () => block.Receive (TimeSpan.FromMilliseconds (100)));
+                               () => block.Receive (TimeSpan.FromMilliseconds (1000)));
                }
 
                [Test]
@@ -169,7 +169,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.AreEqual (1, target.Receive ());
 
-                       Assert.IsTrue (task.Wait (100));
+                       Assert.IsTrue (task.Wait (1000));
                        Assert.IsTrue (task.Result);
                }
 
@@ -187,7 +187,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        target.Complete ();
 
-                       Assert.IsTrue (task.Wait (100));
+                       Assert.IsTrue (task.Wait (1000));
                        Assert.IsFalse (task.Result);
                }
 
index d523a8faa35e41d77bfd90de5835ee86cbfc36f8..94ff41fe9f4c82ee248ffe4a613853f05d5a7d00 100644 (file)
@@ -77,7 +77,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                                block.Post (1);
 
                                var ae =
-                                       AssertEx.Throws<AggregateException> (() => block.Completion.Wait (100));
+                                       AssertEx.Throws<AggregateException> (() => block.Completion.Wait (1000));
                                Assert.AreEqual (1, ae.InnerExceptions.Count);
                                Assert.AreSame (exception, ae.InnerException);
                        }
@@ -118,7 +118,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                                shouldRun = 0;
                                evt.Set ();
 
-                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (100));
+                               AssertEx.Throws<AggregateException> (() => block.Completion.Wait (1000));
 
                                Thread.Sleep (100);
 
@@ -188,7 +188,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                                scheduler.ExecuteAll ();
 
                                var ae =
-                                       AssertEx.Throws<AggregateException> (() => block.Completion.Wait (100)).
+                                       AssertEx.Throws<AggregateException> (() => block.Completion.Wait (1000)).
                                                Flatten ();
 
                                Assert.AreEqual (1, ae.InnerExceptions.Count);
index 24b87e215f4e1cd8f7709bc582aaef5e6c5d397f..d431db41528b53fe9b5846c936a901b8cd4cb732 100644 (file)
@@ -79,7 +79,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Task.Factory.StartNew (() => block.Target1.Post (42));
                        Task.Factory.StartNew (() => block.Target2.Post (24));
 
-                       Assert.IsTrue (evt.Wait (500));
+                       Assert.IsTrue (evt.Wait (1000));
                        Assert.IsNotNull (tuple);
                        Assert.AreEqual (42, tuple.Item1);
                        Assert.AreEqual (24, tuple.Item2);
@@ -113,7 +113,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Tuple<int, int> tuple;
                        Assert.IsFalse (block.TryReceive (out tuple));
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
@@ -140,7 +140,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        scheduler.ExecuteAll ();
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
@@ -175,7 +175,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsTrue (block.TryReceive (out tuple));
                        Assert.AreEqual (Tuple.Create (11, 21), tuple);
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
        }
 }
\ No newline at end of file
index 8137b4a10f7fce4d23b685817f0b45285eb7592d..1b6c5871f7e82f0053a8219c08203fa609d63381 100644 (file)
@@ -50,12 +50,12 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        block.Target1.Post (42);
 
-                       evt.Wait (500);
+                       evt.Wait (1000);
                        Assert.IsNull (tuple);
 
                        block.Target2.Post (24);
 
-                       evt.Wait (500);
+                       evt.Wait (1000);
                        Assert.IsNull (tuple);
 
                        block.Target3.Post (44);
@@ -79,7 +79,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Tuple<int, int, int> tuple;
                        Assert.IsFalse (block.TryReceive (out tuple));
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
@@ -108,7 +108,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        scheduler.ExecuteAll ();
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
@@ -148,7 +148,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsTrue (block.TryReceive (out tuple));
                        Assert.AreEqual (Tuple.Create (11, 21, 31), tuple);
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
        }
 }
\ No newline at end of file
index 27fce238a62d72cf31cf28808e2908cc2e03d5e7..6d87932058401cac0c2528c0ed6da421068ea900 100644 (file)
@@ -59,7 +59,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        foreach (var block in blocks) {
                                var ae =
-                                       AssertEx.Throws<AggregateException> (() => block.Completion.Wait (100));
+                                       AssertEx.Throws<AggregateException> (() => block.Completion.Wait (1000));
                                Assert.AreEqual (1, ae.InnerExceptions.Count);
                                Assert.IsInstanceOfType (typeof(TaskCanceledException), ae.InnerExceptions [0]);
                                Assert.IsTrue (block.Completion.IsCanceled);
@@ -103,7 +103,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                                        source.LinkTo (new BufferBlock<int> ());
                                }
-                               Assert.IsTrue (block.Completion.Wait (500));
+                               Assert.IsTrue (block.Completion.Wait (1000));
 
                                CollectionAssert.AreEquivalent (
                                        Enumerable.Range (0, 100), queue.Select (t => t.Item1));
@@ -243,7 +243,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.IsNotNull (action);
 
-                       Assert.IsTrue (action.Completion.Wait (100));
+                       Assert.IsTrue (action.Completion.Wait (1000));
                        Assert.IsTrue (task.Wait (0));
                }
 
@@ -405,7 +405,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        evt.Set ();
 
-                       Assert.IsTrue (Task.WaitAll (new Task[] { task1, task2 }, 100));
+                       Assert.IsTrue (Task.WaitAll (new Task[] { task1, task2 }, 1000));
 
                        CollectionAssert.AreEquivalent (
                                new[]
index 3ec700ad0b47057778df23e721017cb820b82be6..3a5f5334185e6341f4c0cec240ba196da08e390f 100644 (file)
@@ -56,7 +56,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.IsTrue(source.Post(1));
 
-                       Assert.IsTrue(task.Wait(100));
+                       Assert.IsTrue(task.Wait(1000));
                        Assert.IsTrue(task.Result);
                }
 
@@ -68,7 +68,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        var task = source.OutputAvailableAsync();
 
-                       Assert.IsTrue(task.Wait(100));
+                       Assert.IsTrue(task.Wait(1000));
                        Assert.IsFalse(task.Result);
                }
 
@@ -83,7 +83,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        source.Complete();
 
-                       Assert.IsTrue(task.Wait(100));
+                       Assert.IsTrue(task.Wait(1000));
                        Assert.IsFalse(task.Result);
                }
 
@@ -95,7 +95,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        var task = source.OutputAvailableAsync();
 
-                       Assert.IsTrue(task.Wait(100));
+                       Assert.IsTrue(task.Wait(1000));
                        Assert.IsFalse(task.Result);
                }
 
@@ -110,7 +110,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        ((IDataflowBlock)source).Fault(new Exception());
 
-                       Assert.IsTrue(task.Wait(100));
+                       Assert.IsTrue(task.Wait(1000));
                        Assert.IsFalse(task.Result);
                }
 
@@ -139,7 +139,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.IsTrue(source.Post(1));
 
-                       Assert.IsTrue(task.Wait(100));
+                       Assert.IsTrue(task.Wait(1000));
                        Assert.IsTrue(task.Result);
                }
 
@@ -153,7 +153,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        tokenSource.Cancel();
 
-                       AssertEx.Throws<AggregateException>(() => task.Wait(100));
+                       AssertEx.Throws<AggregateException>(() => task.Wait(1000));
                        Assert.IsTrue(task.IsCanceled);
                }
        }
index a91148fc1898781e0e82dcdcd94a6e862975265d..adae5e38f3dce0a09b6f24d6794f46382c7730c3 100644 (file)
@@ -39,7 +39,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.IsFalse (target.Completion.Wait (100));
                        source.Complete ();
-                       Assert.IsTrue (target.Completion.Wait (100));
+                       Assert.IsTrue (target.Completion.Wait (1000));
                }
 
                [Test]
@@ -55,10 +55,10 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        source.Fault (exception);
 
                        var ae =
-                               AssertEx.Throws<AggregateException> (() => source.Completion.Wait (100));
+                               AssertEx.Throws<AggregateException> (() => source.Completion.Wait (1000));
                        Assert.AreEqual (exception, ae.Flatten ().InnerException);
 
-                       ae = AssertEx.Throws<AggregateException> (() => target.Completion.Wait (100));
+                       ae = AssertEx.Throws<AggregateException> (() => target.Completion.Wait (1000));
                        Assert.AreEqual (exception, ae.Flatten ().InnerException);
                }
 
@@ -76,11 +76,11 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        tokenSource.Cancel ();
 
                        var ae =
-                               AssertEx.Throws<AggregateException> (() => source.Completion.Wait (100));
+                               AssertEx.Throws<AggregateException> (() => source.Completion.Wait (1000));
                        Assert.IsInstanceOfType (
                                typeof(TaskCanceledException), ae.Flatten ().InnerException);
 
-                       Assert.IsTrue (target.Completion.Wait (100));
+                       Assert.IsTrue (target.Completion.Wait (1000));
                }
 
                [Test]
@@ -109,7 +109,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsFalse (target.Completion.Wait (100));
 
                        Assert.AreEqual (42, target.Receive ());
-                       Assert.IsTrue (target.Completion.Wait (100));
+                       Assert.IsTrue (target.Completion.Wait (1000));
                }
 
                [Test]
index 9f004f45cf69f1c7e21f7fd40260f5d18bdff2e7..62fe18cfae5cef3d757f02d9738c52110d7c7532 100644 (file)
@@ -113,7 +113,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        scheduler.ExecuteAll ();
                        Assert.AreEqual (default(int), target.DirectlyAccepted);
 
-                       Assert.AreEqual (42, source.Receive (TimeSpan.FromMilliseconds (100)));
+                       Assert.AreEqual (42, source.Receive (TimeSpan.FromMilliseconds (1000)));
                        scheduler.ExecuteAll ();
                        Assert.AreEqual (43, target.DirectlyAccepted);
                }
@@ -347,7 +347,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                                new BufferBlock<int> (new DataflowBlockOptions { TaskScheduler = scheduler });
 
                        AssertEx.Throws<TimeoutException> (
-                               () => block.Receive (TimeSpan.FromMilliseconds (100)));
+                               () => block.Receive (TimeSpan.FromMilliseconds (1000)));
 
                        block.Post (1);
 
index 2685803a4c82d263e4067f5fadef482c769758b3..3901a55afcd66efc16d509179183619a08f15916 100644 (file)
@@ -91,7 +91,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        block.Complete ();
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
index 9d6ece4f8fcf12fa3d986eb5233e029068aab79c..5be73fcaa1c01d5801e90633980e7043ae9238df 100644 (file)
@@ -88,7 +88,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsTrue (transformMany.Post (1), "#1");
 
                        transformMany.Complete ();
-                       Assert.IsTrue (transformMany.Completion.Wait (100), "#2");
+                       Assert.IsTrue (transformMany.Completion.Wait (1000), "#2");
                        Assert.IsFalse (received, "#3");
                }
 
@@ -108,7 +108,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        block.Complete ();
 
-                       Assert.IsTrue (block.Completion.Wait (100));
+                       Assert.IsTrue (block.Completion.Wait (1000));
                }
 
                [Test]
index 320df00fb9b56e06a8e6b6554b593d4c12af82e3..4c6584e3e9d4975e7d97424751609fe9b3cdde52 100644 (file)
@@ -58,7 +58,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsTrue (block.Post (42), "#1");
                        Assert.IsFalse (block.Post (43), "#2");
 
-                       Assert.IsTrue (evt.Wait (100), "#3");
+                       Assert.IsTrue (evt.Wait (1000), "#3");
 
                        Assert.IsTrue (act1, "#4");
                        Assert.IsTrue (act2, "#5");
@@ -81,7 +81,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        block.LinkTo (action);
 
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (1000));
 
                        Assert.IsTrue (act);
                }
@@ -98,8 +98,8 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.IsTrue (block.Post (2));
 
-                       Assert.AreEqual (1, target.Receive (TimeSpan.FromMilliseconds (100)));
-                       Assert.AreEqual (2, target.Receive (TimeSpan.FromMilliseconds (100)));
+                       Assert.AreEqual (1, target.Receive (TimeSpan.FromMilliseconds (1000)));
+                       Assert.AreEqual (2, target.Receive (TimeSpan.FromMilliseconds (1000)));
                }
 
                [Test]
@@ -114,7 +114,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        Assert.IsTrue (block.Post (1));
 
                        AssertEx.Throws<TimeoutException> (
-                               () => target.Receive (TimeSpan.FromMilliseconds (100)));
+                               () => target.Receive (TimeSpan.FromMilliseconds (1000)));
 
                        scheduler.ExecuteAll ();
 
@@ -147,7 +147,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.IsTrue (block.Post (source));
 
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (1000));
 
                        Assert.IsNotNull (act1);
                        Assert.IsNotNull (act2);
@@ -180,7 +180,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        Assert.IsTrue (broadcast.Post (42));
 
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (1000));
 
                        Assert.IsTrue (act1);
                        Assert.IsTrue (act2);
diff --git a/mcs/class/System.Transactions/System.Transactions-net_4_5.csproj b/mcs/class/System.Transactions/System.Transactions-net_4_5.csproj
deleted file mode 100644 (file)
index 40c327b..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Transactions</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Transactions\CommittableTransaction.cs" />\r
-    <Compile Include="System.Transactions\Configuration\DefaultSettingsSection.cs" />\r
-    <Compile Include="System.Transactions\Configuration\MachineSettingsSection.cs" />\r
-    <Compile Include="System.Transactions\Configuration\TransactionsSectionGroup.cs" />\r
-    <Compile Include="System.Transactions\Delegates.cs" />\r
-    <Compile Include="System.Transactions\DependentCloneOption.cs" />\r
-    <Compile Include="System.Transactions\DependentTransaction.cs" />\r
-    <Compile Include="System.Transactions\Enlistment.cs" />\r
-    <Compile Include="System.Transactions\EnlistmentOptions.cs" />\r
-    <Compile Include="System.Transactions\EnterpriseServicesInteropOption.cs" />\r
-    <Compile Include="System.Transactions\IDtcTransaction.cs" />\r
-    <Compile Include="System.Transactions\IEnlistmentNotification.cs" />\r
-    <Compile Include="System.Transactions\IPromotableSinglePhaseNotification.cs" />\r
-    <Compile Include="System.Transactions\ISimpleTransactionSuperior.cs" />\r
-    <Compile Include="System.Transactions\ISinglePhaseNotification.cs" />\r
-    <Compile Include="System.Transactions\IsolationLevel.cs" />\r
-    <Compile Include="System.Transactions\ITransactionPromoter.cs" />\r
-    <Compile Include="System.Transactions\PreparingEnlistment.cs" />\r
-    <Compile Include="System.Transactions\SinglePhaseEnlistment.cs" />\r
-    <Compile Include="System.Transactions\SubordinateTransaction.cs" />\r
-    <Compile Include="System.Transactions\Transaction.cs" />\r
-    <Compile Include="System.Transactions\TransactionAbortedException.cs" />\r
-    <Compile Include="System.Transactions\TransactionEventArgs.cs" />\r
-    <Compile Include="System.Transactions\TransactionException.cs" />\r
-    <Compile Include="System.Transactions\TransactionInDoubtException.cs" />\r
-    <Compile Include="System.Transactions\TransactionInformation.cs" />\r
-    <Compile Include="System.Transactions\TransactionInterop.cs" />\r
-    <Compile Include="System.Transactions\TransactionManager.cs" />\r
-    <Compile Include="System.Transactions\TransactionManagerCommunicationException.cs" />\r
-    <Compile Include="System.Transactions\TransactionOptions.cs" />\r
-    <Compile Include="System.Transactions\TransactionPromotionException.cs" />\r
-    <Compile Include="System.Transactions\TransactionScope.cs" />\r
-    <Compile Include="System.Transactions\TransactionScopeOption.cs" />\r
-    <Compile Include="System.Transactions\TransactionStatus.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Transactions/System.Transactions-tests-net_4_5.csproj b/mcs/class/System.Transactions/System.Transactions-tests-net_4_5.csproj
deleted file mode 100644 (file)
index ba5a47f..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{869910C7-CB75-4021-8862-ACBBE236B5A5}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1595</NoWarn>\r
-    <OutputPath>bin\Debug\System.Transactions-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Transactions_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1595</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1595</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\AsyncTest.cs" />\r
-    <Compile Include="Test\EnlistTest.cs" />\r
-    <Compile Include="Test\IntResourceManager.cs" />\r
-    <Compile Include="Test\TransactionScopeTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{AF2BBF50-AB57-4CA1-8EF5-2B54C7418434}</Project>\r
-      <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj b/mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj
deleted file mode 100644 (file)
index 786b2f9..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{94BD3939-6937-47AA-86CF-5C3E4C59E272}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Abstractions</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Abstractions/System.Web.Abstractions-tests-net_4_5.csproj b/mcs/class/System.Web.Abstractions/System.Web.Abstractions-tests-net_4_5.csproj
deleted file mode 100644 (file)
index cf089f8..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3801922A-8C65-4DC6-8B0C-35E154D9BCA0}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Web.Abstractions-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Abstractions_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\System.Web.DynamicData\Test\Common\AssertExtensions.cs" />\r
-    <Compile Include="Test\System.Web\HttpApplicationStateBaseTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpFileCollectionWrapperTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{94BD3939-6937-47AA-86CF-5C3E4C59E272}</Project>\r
-      <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{725FB152-838A-4C6E-8A12-AC47E2DD4CEA}</Project>\r
-      <Name>System.Web\System.Web-net_4_5-2</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj b/mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj
deleted file mode 100644 (file)
index da3247a..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.ApplicationServices</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;SYSTEM_WEB_APPLICATIONSERVICES</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;SYSTEM_WEB_APPLICATIONSERVICES</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Web.Configuration\MembershipPasswordCompatibilityMode.cs" />\r
-    <Compile Include="System.Web.Security\IMembershipHelper.cs" />\r
-    <Compile Include="System.Web.Security\MembershipCreateStatus.cs" />\r
-    <Compile Include="System.Web.Security\MembershipCreateUserException.cs" />\r
-    <Compile Include="System.Web.Security\MembershipPasswordException.cs" />\r
-    <Compile Include="System.Web.Security\MembershipPasswordFormat.cs" />\r
-    <Compile Include="System.Web.Security\MembershipProvider.cs" />\r
-    <Compile Include="System.Web.Security\MembershipProviderCollection.cs" />\r
-    <Compile Include="System.Web.Security\MembershipUser.cs" />\r
-    <Compile Include="System.Web.Security\MembershipUserCollection.cs" />\r
-    <Compile Include="System.Web.Security\MembershipValidatePasswordEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\RoleProvider.cs" />\r
-    <Compile Include="System.Web.Security\ValidatePasswordEventArgs.cs" />\r
-    <Compile Include="System.Web.UI\KeyedList.cs" />\r
-    <Compile Include="System.Web.UI\KeyedListEnumerator.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_4_5.csproj b/mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_4_5.csproj
deleted file mode 100644 (file)
index 7d05cb4..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EAE6491A-1C73-432A-A0C2-60940B6AA2B8}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.DynamicData</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Web.DynamicData.ModelProviders\AssociationDirection.cs" />\r
-    <Compile Include="System.Web.DynamicData.ModelProviders\AssociationProvider.cs" />\r
-    <Compile Include="System.Web.DynamicData.ModelProviders\ColumnProvider.cs" />\r
-    <Compile Include="System.Web.DynamicData.ModelProviders\DataModelProvider.cs" />\r
-    <Compile Include="System.Web.DynamicData.ModelProviders\DLinqAssociationProvider.cs" />\r
-    <Compile Include="System.Web.DynamicData.ModelProviders\DLinqColumnProvider.cs" />\r
-    <Compile Include="System.Web.DynamicData.ModelProviders\DLinqDataModelProvider.cs" />\r
-    <Compile Include="System.Web.DynamicData.ModelProviders\DLinqTableProvider.cs" />\r
-    <Compile Include="System.Web.DynamicData.ModelProviders\TableProvider.cs" />\r
-    <Compile Include="System.Web.DynamicData\ContextConfiguration.cs" />\r
-    <Compile Include="System.Web.DynamicData\DynamicControl.cs" />\r
-    <Compile Include="System.Web.DynamicData\DynamicControlParameter.cs" />\r
-    <Compile Include="System.Web.DynamicData\DynamicDataExtensions.cs" />\r
-    <Compile Include="System.Web.DynamicData\DynamicDataManager.cs" />\r
-    <Compile Include="System.Web.DynamicData\DynamicDataRoute.cs" />\r
-    <Compile Include="System.Web.DynamicData\DynamicDataRouteHandler.cs" />\r
-    <Compile Include="System.Web.DynamicData\DynamicField.cs" />\r
-    <Compile Include="System.Web.DynamicData\DynamicQueryStringParameter.cs" />\r
-    <Compile Include="System.Web.DynamicData\DynamicValidator.cs" />\r
-    <Compile Include="System.Web.DynamicData\FieldTemplateFactory.cs" />\r
-    <Compile Include="System.Web.DynamicData\FieldTemplateUserControl.cs" />\r
-    <Compile Include="System.Web.DynamicData\FilterRepeater.cs" />\r
-    <Compile Include="System.Web.DynamicData\FilterUserControlBase.cs" />\r
-    <Compile Include="System.Web.DynamicData\IControlParameterTarget.cs" />\r
-    <Compile Include="System.Web.DynamicData\IFieldFormattingOptions.cs" />\r
-    <Compile Include="System.Web.DynamicData\IFieldTemplate.cs" />\r
-    <Compile Include="System.Web.DynamicData\IFieldTemplateFactory.cs" />\r
-    <Compile Include="System.Web.DynamicData\IFieldTemplateHost.cs" />\r
-    <Compile Include="System.Web.DynamicData\IWhereParametersProvider.cs" />\r
-    <Compile Include="System.Web.DynamicData\MetaChildrenColumn.cs" />\r
-    <Compile Include="System.Web.DynamicData\MetaColumn.cs" />\r
-    <Compile Include="System.Web.DynamicData\MetaForeignKeyColumn.cs" />\r
-    <Compile Include="System.Web.DynamicData\MetaModel.cs" />\r
-    <Compile Include="System.Web.DynamicData\MetaTable.cs" />\r
-    <Compile Include="System.Web.DynamicData\PageAction.cs" />\r
-    <Compile Include="System.Web.DynamicData\TableNameAttribute.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data.Linq/System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Extensions/System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{74D281D8-F725-4D79-B218-2DFCCFD44FA2}</Project>\r
-      <Name>System.Web.Extensions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{94BD3939-6937-47AA-86CF-5C3E4C59E272}</Project>\r
-      <Name>System.Web.Abstractions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Routing/System.Web.Routing-net_4_5.csproj">\r
-      <Project>{A28F2A14-901C-452C-82B6-75ECE5C7E714}</Project>\r
-      <Name>System.Web.Routing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.DynamicData/System.Web.DynamicData-tests-net_4_5.csproj b/mcs/class/System.Web.DynamicData/System.Web.DynamicData-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 6ed5528..0000000
+++ /dev/null
@@ -1,701 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5CA19741-2C8A-4482-835B-E1E4345A7E14}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Web.DynamicData-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.DynamicData_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\crc32.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\Header.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlAttribute.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlDocument.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlEntity.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlNode.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlNodeNavigator.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlWeb.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\MixedCodeDocument.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\ParseReader.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\tools.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\NunitWebTest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\XmlComparer.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\BaseControl.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\BaseControlCollection.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\BaseInvoker.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\BaseRequest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\BaseWorkerRequest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\CustomSection.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\FakeMembershipProvider.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\FormRequest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\HandlerInvoker.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\IForeignData.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\MyHandler.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\MyHost.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\MyPageHandlerFactory.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\MyTemplateControls.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\PageDelegates.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\PageInvoker.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\PostableRequest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\PostableWorkerRequest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\Response.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\StandardUrl.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\WebTest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\WebTestResourcesSetupAttribute.cs" />\r
-    <Compile Include="Test\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Test\Common\AFieldTemplate.cs" />\r
-    <Compile Include="Test\Common\AssertExtensions.cs" />\r
-    <Compile Include="Test\Common\AssociatedBar.cs" />\r
-    <Compile Include="Test\Common\AssociatedFoo.cs" />\r
-    <Compile Include="Test\Common\Baz.cs" />\r
-    <Compile Include="Test\Common\BazColumnAttributes.cs" />\r
-    <Compile Include="Test\Common\BazDataTypeDefaultTypes.cs" />\r
-    <Compile Include="Test\Common\BazNoStrings.cs" />\r
-    <Compile Include="Test\Common\BazNoStringsNoPrimary.cs" />\r
-    <Compile Include="Test\Common\BazValidationAttributes.cs" />\r
-    <Compile Include="Test\Common\BazWithDataTypeAttribute.cs" />\r
-    <Compile Include="Test\Common\EmployeesDataContext.cs" />\r
-    <Compile Include="Test\Common\FakeHttpWorkerRequest.cs" />\r
-    <Compile Include="Test\Common\FieldFormattingOptions.cs" />\r
-    <Compile Include="Test\Common\FieldTemplatePathTables.cs" />\r
-    <Compile Include="Test\Common\FieldTemplateTestDescription.cs" />\r
-    <Compile Include="Test\Common\FooBarNoScaffold.cs" />\r
-    <Compile Include="Test\Common\FooDisplayColumnAttribute.cs" />\r
-    <Compile Include="Test\Common\FooDisplayName.cs" />\r
-    <Compile Include="Test\Common\FooDisplayNameEmptyName.cs" />\r
-    <Compile Include="Test\Common\FooEmpty.cs" />\r
-    <Compile Include="Test\Common\FooEmptyDisplayColumnAttribute.cs" />\r
-    <Compile Include="Test\Common\FooEmptySortColumn.cs" />\r
-    <Compile Include="Test\Common\FooInvalidDisplayColumnAttribute.cs" />\r
-    <Compile Include="Test\Common\FooMisnamedSortColumn.cs" />\r
-    <Compile Include="Test\Common\FooNoDefaultsWithPrimaryKey.cs" />\r
-    <Compile Include="Test\Common\FooNoPrimaryColumns.cs" />\r
-    <Compile Include="Test\Common\FooNoScaffold.cs" />\r
-    <Compile Include="Test\Common\FooReadOnly.cs" />\r
-    <Compile Include="Test\Common\FooSettableDefaults.cs" />\r
-    <Compile Include="Test\Common\FooWithDefaults.cs" />\r
-    <Compile Include="Test\Common\FooWithMetadataType.cs" />\r
-    <Compile Include="Test\Common\FooWithToString.cs" />\r
-    <Compile Include="Test\Common\ITestDataContext.cs" />\r
-    <Compile Include="Test\Common\KnownResponseHeader.cs" />\r
-    <Compile Include="Test\Common\MiscExtensions.cs" />\r
-    <Compile Include="Test\Common\Mocks.cs" />\r
-    <Compile Include="Test\Common\MyDynamicDataRouteHandler.cs" />\r
-    <Compile Include="Test\Common\MyHttpContextWrapper.cs" />\r
-    <Compile Include="Test\Common\MyHttpRequestWrapper.cs" />\r
-    <Compile Include="Test\Common\PokerDynamicControl.cs" />\r
-    <Compile Include="Test\Common\PokerDynamicValidator.cs" />\r
-    <Compile Include="Test\Common\PokerFieldTemplateUserControl.cs" />\r
-    <Compile Include="Test\Common\TestDataColumn.cs" />\r
-    <Compile Include="Test\Common\TestDataContainer.cs" />\r
-    <Compile Include="Test\Common\TestDataContext.cs" />\r
-    <Compile Include="Test\Common\TestDataContext2.cs" />\r
-    <Compile Include="Test\Common\TestDataContext3.cs" />\r
-    <Compile Include="Test\Common\TestDataContext4.cs" />\r
-    <Compile Include="Test\Common\TestDataTable.cs" />\r
-    <Compile Include="Test\Common\TestsBasePage.cs" />\r
-    <Compile Include="Test\Common\TestsSetup.cs" />\r
-    <Compile Include="Test\Common\TestStubTypes.cs" />\r
-    <Compile Include="Test\Common\UnknownResponseHeader.cs" />\r
-    <Compile Include="Test\Common\Utils.cs" />\r
-    <Compile Include="Test\DataObjects\Employee.cs" />\r
-    <Compile Include="Test\DataObjects\EmployeeColumn.cs" />\r
-    <Compile Include="Test\DataObjects\EmployeeDynamicDataContainer.cs" />\r
-    <Compile Include="Test\DataObjects\EmployeeTable.cs" />\r
-    <Compile Include="Test\DataObjects\SeasonalEmployee.cs" />\r
-    <Compile Include="Test\DataSource\DynamicDataColumn.cs" />\r
-    <Compile Include="Test\DataSource\DynamicDataContainer.cs" />\r
-    <Compile Include="Test\DataSource\DynamicDataSource.cs" />\r
-    <Compile Include="Test\DataSource\DynamicDataSourceView.cs" />\r
-    <Compile Include="Test\DataSource\DynamicDataTable.cs" />\r
-    <Compile Include="Test\DataSource\IDynamicDataContainer.cs" />\r
-    <Compile Include="Test\ModelProviders\DynamicDataAssociationAttribute.cs" />\r
-    <Compile Include="Test\ModelProviders\DynamicDataAssociationProvider.cs" />\r
-    <Compile Include="Test\ModelProviders\DynamicDataContainerColumnProvider.cs" />\r
-    <Compile Include="Test\ModelProviders\DynamicDataContainerModelProvider.cs" />\r
-    <Compile Include="Test\ModelProviders\DynamicDataContainerTableProvider.cs" />\r
-    <Compile Include="Test\ModelProviders\DynamicDataSortableAttribute.cs" />\r
-    <Compile Include="Test\ModelProviders\DynamicDataStringLengthAttribute.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData.ModelProviders\TableProviderTest.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData\ContextConfigurationTest.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData\DynamicControlTest.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData\DynamicDataExtensionsTest.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData\DynamicDataManagerTest.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData\DynamicDataRouteHandlerTest.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData\DynamicDataRouteTest.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData\DynamicValidatorTest.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData\FieldTemplateFactoryTest.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData\FieldTemplateUserControlTest.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData\MetaColumnTest.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData\MetaModelTest.cs" />\r
-    <Compile Include="Test\System.Web.DynamicData\MetaTableTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.DynamicData\System.Web.DynamicData-net_4_5.csproj">\r
-      <Project>{EAE6491A-1C73-432A-A0C2-60940B6AA2B8}</Project>\r
-      <Name>System.Web.DynamicData\System.Web.DynamicData-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{725FB152-838A-4C6E-8A12-AC47E2DD4CEA}</Project>\r
-      <Name>System.Web\System.Web-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{74D281D8-F725-4D79-B218-2DFCCFD44FA2}</Project>\r
-      <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{94BD3939-6937-47AA-86CF-5C3E4C59E272}</Project>\r
-      <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_5.csproj">\r
-      <Project>{A28F2A14-901C-452C-82B6-75ECE5C7E714}</Project>\r
-      <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_5.csproj">\r
-      <Project>{337A92C8-EB50-43A9-9435-CB268AC147DC}</Project>\r
-      <Name>SystemWebTestShim\SystemWebTestShim-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/Content/FilterUserControl.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.Content.FilterUserControl.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/Content/FilterUserControl.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.Content.FilterUserControl.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/Content/GridViewPager.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.Content.GridViewPager.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/Content/GridViewPager.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.Content.GridViewPager.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/Content/Images/Back.gif">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.Content.Images.Back.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/Content/Images/header_back.gif">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.Content.Images.header_back.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/Content/Images/PgFirst.gif">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.Content.Images.PgFirst.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/Content/Images/PgLast.gif">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.Content.Images.PgLast.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/Content/Images/PgNext.gif">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.Content.Images.PgNext.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/Content/Images/PgPrev.gif">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.Content.Images.PgPrev.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/Content/Images/plus.gif">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.Content.Images.plus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Boolean.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Boolean.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Boolean.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Boolean.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Boolean_Edit.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Boolean_Edit.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Boolean_Edit.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Boolean_Edit.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Children.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Children.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Children.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Children.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/CustomColor.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.CustomColor.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/CustomColor.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.CustomColor.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/CustomFieldTemplate.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.CustomFieldTemplate.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/CustomFieldTemplate.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.CustomFieldTemplate.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/DateTime.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.DateTime.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/DateTime.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.DateTime.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/DateTime_Edit.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.DateTime_Edit.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/DateTime_Edit.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.DateTime_Edit.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Decimal_Edit.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Decimal_Edit.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Decimal_Edit.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Decimal_Edit.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/ForeignKey.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.ForeignKey.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/ForeignKey.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.ForeignKey.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/ForeignKey_Edit.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.ForeignKey_Edit.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/ForeignKey_Edit.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.ForeignKey_Edit.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Integer_Edit.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Integer_Edit.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Integer_Edit.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Integer_Edit.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/MultilineText_Edit.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.MultilineText_Edit.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/MultilineText_Edit.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.MultilineText_Edit.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/MyCustomUIHintTemplate_Text.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.MyCustomUIHintTemplate_Text.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/MyCustomUIHintTemplate_Text.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.MyCustomUIHintTemplate_Text.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Boolean.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Boolean.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Boolean.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Boolean.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Byte.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Byte.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Byte[].ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Byte[].ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Byte.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Byte.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Byte[].ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Byte[].ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Char.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Char.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Char.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Char.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/FooEmpty.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.FooEmpty.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/FooEmpty.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.FooEmpty.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/ICollection.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.ICollection.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/ICollection.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.ICollection.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Int16.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Int16.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Int16.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Int16.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Int32.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Int32.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Int32.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Int32.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Int64.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Int64.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Int64.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Int64.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/MonoTests.Common.FooEmpty.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.MonoTests.Common.FooEmpty.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/MonoTests.Common.FooEmpty.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.MonoTests.Common.FooEmpty.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Object.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Object.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/Object.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.Object.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/SByte.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.SByte.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/SByte.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.SByte.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/String.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.String.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/String.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.String.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Boolean.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Boolean.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Boolean.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Boolean.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Byte.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Byte.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Byte[].ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Byte[].ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Byte.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Byte.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Byte[].ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Byte[].ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Char.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Char.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Char.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Char.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Collections.Generic.List`1[System.String].ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Collections.Generic.List`1[System.String].ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Collections.Generic.List`1[System.String].ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Collections.Generic.List`1[System.String].ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Collections.ICollection.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Collections.ICollection.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Collections.ICollection.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Collections.ICollection.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Int16.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Int16.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Int16.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Int16.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Int32.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Int32.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Int32.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Int32.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Int64.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Int64.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Int64.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Int64.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Object.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Object.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.Object.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.Object.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.SByte.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.SByte.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.SByte.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.SByte.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.String.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.String.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.String.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.String.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.UInt16.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.UInt16.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.UInt16.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.UInt16.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.UInt32.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.UInt32.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.UInt32.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.UInt32.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.UInt64.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.UInt64.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/System.UInt64.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.System.UInt64.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/UInt16.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.UInt16.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/UInt16.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.UInt16.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/UInt32.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.UInt32.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/UInt32.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.UInt32.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/UInt64.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.UInt64.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates_NonDefault/UInt64.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates_NonDefault.UInt64.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/PlainControlTemplate.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.PlainControlTemplate.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/PlainControlTemplate.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.PlainControlTemplate.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Text.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Text.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Text.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Text.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Text_Edit.ascx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Text_Edit.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/FieldTemplates/Text_Edit.ascx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.FieldTemplates.Text_Edit.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/PageTemplates/Details.aspx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.PageTemplates.Details.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/PageTemplates/Details.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.PageTemplates.Details.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/PageTemplates/Edit.aspx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.PageTemplates.Edit.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/PageTemplates/Edit.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.PageTemplates.Edit.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/PageTemplates/Insert.aspx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.PageTemplates.Insert.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/PageTemplates/Insert.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.PageTemplates.Insert.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/PageTemplates/List.aspx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.PageTemplates.List.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/PageTemplates/List.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.PageTemplates.List.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/PageTemplates/ListDetails.aspx">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.PageTemplates.ListDetails.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/PageTemplates/ListDetails.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.PageTemplates.ListDetails.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicData/web.config">\r
-      <LogicalName>MonoTests.WebPages.DynamicData.web.config</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/Global.asax">\r
-      <LogicalName>MonoTests.WebPages.Global.asax</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_01.aspx">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_01.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_01.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_01.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_02.aspx">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_02.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_02.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_02.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_03.aspx">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_03.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_03.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_03.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_04.aspx">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_04.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_04.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_04.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_05.aspx">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_05.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_05.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_05.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_06.aspx">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_06.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_06.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_06.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_07.aspx">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_07.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_07.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_07.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_08.aspx">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_08.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_08.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_08.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_09.aspx">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_09.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_09.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_09.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_10.aspx">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_10.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/ListView_DynamicControl_10.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.ListView_DynamicControl_10.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicValidator_01.aspx">\r
-      <LogicalName>MonoTests.WebPages.DynamicValidator_01.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicValidator_01.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicValidator_01.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicValidator_02.aspx">\r
-      <LogicalName>MonoTests.WebPages.DynamicValidator_02.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/DynamicValidator_02.aspx.cs">\r
-      <LogicalName>MonoTests.WebPages.DynamicValidator_02.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/Site.css">\r
-      <LogicalName>MonoTests.WebPages.Site.css</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/Site.master">\r
-      <LogicalName>MonoTests.WebPages.Site.master</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/Site.master.cs">\r
-      <LogicalName>MonoTests.WebPages.Site.master.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/web.config.2.0">\r
-      <LogicalName>MonoTests.WebPages.web.config.2.0</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/web.config.4.0">\r
-      <LogicalName>MonoTests.WebPages.web.config.4.0</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/WebPages/web.config.4.5">\r
-      <LogicalName>MonoTests.WebPages.web.config.4.5</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_4_5.csproj b/mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_4_5.csproj
deleted file mode 100644 (file)
index 2134252..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D1A53FE0-3EE3-43FD-8472-29B6E0FAA21D}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Extensions.Design</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Web.Extensions.Design\AsyncPostBackTriggerControlIDConverter.cs" />\r
-    <Compile Include="System.Web.Extensions.Design\AsyncPostBackTriggerEventNameConverter.cs" />\r
-    <Compile Include="System.Web.Extensions.Design\CollectionEditorBase.cs" />\r
-    <Compile Include="System.Web.Extensions.Design\ExtenderControlDesigner.cs" />\r
-    <Compile Include="System.Web.Extensions.Design\PostBackTriggerControlIDConverter.cs" />\r
-    <Compile Include="System.Web.Extensions.Design\ScriptManagerDesigner.cs" />\r
-    <Compile Include="System.Web.Extensions.Design\ScriptManagerProxyDesigner.cs" />\r
-    <Compile Include="System.Web.Extensions.Design\TimerDesigner.cs" />\r
-    <Compile Include="System.Web.Extensions.Design\UpdatePanelDesigner.cs" />\r
-    <Compile Include="System.Web.Extensions.Design\UpdatePanelTriggerCollectionEditor.cs" />\r
-    <Compile Include="System.Web.Extensions.Design\UpdateProgressAssociatedUpdatePanelIDConverter.cs" />\r
-    <Compile Include="System.Web.Extensions.Design\UpdateProgressDesigner.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Design/System.Design-net_4_5.csproj">\r
-      <Project>{D4E6A482-761B-4B41-8B63-C930CA84D268}</Project>\r
-      <Name>System.Design-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Extensions/System.Web.Extensions-net_4_5.csproj b/mcs/class/System.Web.Extensions/System.Web.Extensions-net_4_5.csproj
deleted file mode 100644 (file)
index cecbd56..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{74D281D8-F725-4D79-B218-2DFCCFD44FA2}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Extensions</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5;SYSTEM_WEB_EXTENSIONS</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;NET_3_5;SYSTEM_WEB_EXTENSIONS</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\System.Web\System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
-    <Compile Include="..\System.Web\System.Web.Handlers\AssemblyResourceLoader.cs" />\r
-    <Compile Include="..\System.Web\System.Web.Util\MachineKeySectionUtils.cs" />\r
-    <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
-    <Compile Include=".\System.Web.ClientServices.Providers\ClientFormsAuthenticationCredentials.cs" />\r
-    <Compile Include=".\System.Web.ClientServices.Providers\ClientFormsAuthenticationMembershipProvider.cs" />\r
-    <Compile Include=".\System.Web.ClientServices.Providers\ClientRoleProvider.cs" />\r
-    <Compile Include=".\System.Web.ClientServices.Providers\ClientSettingsProvider.cs" />\r
-    <Compile Include=".\System.Web.ClientServices.Providers\ClientWindowsAuthenticationMembershipProvider.cs" />\r
-    <Compile Include=".\System.Web.ClientServices.Providers\IClientFormsAuthenticationCredentialsProvider.cs" />\r
-    <Compile Include=".\System.Web.ClientServices.Providers\SettingsSavedEventArgs.cs" />\r
-    <Compile Include=".\System.Web.ClientServices.Providers\UserValidatedEventArgs.cs" />\r
-    <Compile Include=".\System.Web.ClientServices\ClientFormsIdentity.cs" />\r
-    <Compile Include=".\System.Web.ClientServices\ClientRolePrincipal.cs" />\r
-    <Compile Include=".\System.Web.ClientServices\ConnectivityStatus.cs" />\r
-    <Compile Include=".\System.Web.Configuration\Converter.cs" />\r
-    <Compile Include=".\System.Web.Configuration\ConvertersCollection.cs" />\r
-    <Compile Include=".\System.Web.Configuration\ScriptingAuthenticationServiceSection.cs" />\r
-    <Compile Include=".\System.Web.Configuration\ScriptingJsonSerializationSection.cs" />\r
-    <Compile Include=".\System.Web.Configuration\ScriptingProfileServiceSection.cs" />\r
-    <Compile Include=".\System.Web.Configuration\ScriptingRoleServiceSection.cs" />\r
-    <Compile Include=".\System.Web.Configuration\ScriptingScriptResourceHandlerSection.cs" />\r
-    <Compile Include=".\System.Web.Configuration\ScriptingSectionGroup.cs" />\r
-    <Compile Include=".\System.Web.Configuration\ScriptingWebServicesSectionGroup.cs" />\r
-    <Compile Include=".\System.Web.Configuration\SystemWebExtensionsSectionGroup.cs" />\r
-    <Compile Include=".\System.Web.DynamicData\DynamicDataSourceOperation.cs" />\r
-    <Compile Include=".\System.Web.DynamicData\DynamicValidatorEventArgs.cs" />\r
-    <Compile Include=".\System.Web.DynamicData\IDynamicDataSource.cs" />\r
-    <Compile Include=".\System.Web.DynamicData\IDynamicValidatorException.cs" />\r
-    <Compile Include=".\System.Web.Handlers\ScriptModule.cs" />\r
-    <Compile Include=".\System.Web.Handlers\ScriptResourceHandler.cs" />\r
-    <Compile Include=".\System.Web.Query.Dynamic\DynamicClass.cs" />\r
-    <Compile Include=".\System.Web.Query.Dynamic\ParseException.cs" />\r
-    <Compile Include=".\System.Web.Script.Serialization\JavaScriptConverter.cs" />\r
-    <Compile Include=".\System.Web.Script.Serialization\JavaScriptSerializer.cs" />\r
-    <Compile Include=".\System.Web.Script.Serialization\JavaScriptTypeResolver.cs" />\r
-    <Compile Include=".\System.Web.Script.Serialization\Json.cs" />\r
-    <Compile Include=".\System.Web.Script.Serialization\JSON\JavaScriptUtils.cs" />\r
-    <Compile Include=".\System.Web.Script.Serialization\JSON\ReflectionUtils.cs" />\r
-    <Compile Include=".\System.Web.Script.Serialization\JsonDeserializer.cs" />\r
-    <Compile Include=".\System.Web.Script.Serialization\JsonSerializer.cs" />\r
-    <Compile Include=".\System.Web.Script.Serialization\ScriptIgnoreAttribute.cs" />\r
-    <Compile Include=".\System.Web.Script.Serialization\SimpleTypeResolver.cs" />\r
-    <Compile Include=".\System.Web.Script.Serialization\StringBuilderExtensions.cs" />\r
-    <Compile Include=".\System.Web.Script.Services\AuthenticationService.cs" />\r
-    <Compile Include=".\System.Web.Script.Services\ClientProxyHandler.cs" />\r
-    <Compile Include=".\System.Web.Script.Services\GenerateScriptTypeAttribute.cs" />\r
-    <Compile Include=".\System.Web.Script.Services\LogicalTypeInfo.cs" />\r
-    <Compile Include=".\System.Web.Script.Services\ProfileService.cs" />\r
-    <Compile Include=".\System.Web.Script.Services\ProxyGenerator.cs" />\r
-    <Compile Include=".\System.Web.Script.Services\ResponseFormat.cs" />\r
-    <Compile Include=".\System.Web.Script.Services\RestHandler.cs" />\r
-    <Compile Include=".\System.Web.Script.Services\ScriptHandlerFactory.cs" />\r
-    <Compile Include=".\System.Web.Script.Services\ScriptMethodAttribute.cs" />\r
-    <Compile Include=".\System.Web.Script.Services\ScriptServiceAttribute.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\DataPager.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\DataPagerCommandEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\DataPagerField.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\DataPagerFieldCollection.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\DataPagerFieldCommandEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\DataPagerFieldItem.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\HelperExtensions.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\InsertItemPosition.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\IPageableItemContainer.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\LinqDataSource.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\LinqDataSourceContextEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\LinqDataSourceDeleteEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\LinqDataSourceDisposeEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\LinqDataSourceInsertEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\LinqDataSourceSelectEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\LinqDataSourceStatusEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\LinqDataSourceUpdateEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\LinqDataSourceValidationException.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\LinqDataSourceView.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListView.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewCancelEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewCancelMode.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewCommandEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewContainer.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewDataItem.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewDeletedEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewDeleteEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewEditEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewInsertedEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewInsertEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewItem.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewItemEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewItemType.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewPagedDataSource.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewSelectEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewSortEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewTableCell.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewTableRow.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewUpdatedEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\ListViewUpdateEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\NextPreviousPagerField.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\NumericPagerField.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\PageEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\PagePropertiesChangingEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI.WebControls\TemplatePagerField.cs" />\r
-    <Compile Include=".\System.Web.UI\AsyncPostBackErrorEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI\AsyncPostBackTrigger.cs" />\r
-    <Compile Include=".\System.Web.UI\AuthenticationServiceManager.cs" />\r
-    <Compile Include=".\System.Web.UI\CompositeEntry.cs" />\r
-    <Compile Include=".\System.Web.UI\CompositeScriptReference.cs" />\r
-    <Compile Include=".\System.Web.UI\CompositeScriptReferenceEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI\ExtenderControl.cs" />\r
-    <Compile Include=".\System.Web.UI\IExtenderControl.cs" />\r
-    <Compile Include=".\System.Web.UI\IScriptControl.cs" />\r
-    <Compile Include=".\System.Web.UI\PostBackTrigger.cs" />\r
-    <Compile Include=".\System.Web.UI\ProfileServiceManager.cs" />\r
-    <Compile Include=".\System.Web.UI\RegisteredArrayDeclaration.cs" />\r
-    <Compile Include=".\System.Web.UI\RegisteredDisposeScript.cs" />\r
-    <Compile Include=".\System.Web.UI\RegisteredExpandoAttribute.cs" />\r
-    <Compile Include=".\System.Web.UI\RegisteredHiddenField.cs" />\r
-    <Compile Include=".\System.Web.UI\RegisteredScript.cs" />\r
-    <Compile Include=".\System.Web.UI\RegisteredScriptType.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptBehaviorDescriptor.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptComponentDescriptor.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptControl.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptControlDescriptor.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptDescriptor.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptManager.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptManagerProxy.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptMode.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptReference.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptReferenceBase.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptReferenceCollection.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptReferenceEventArgs.cs" />\r
-    <Compile Include=".\System.Web.UI\ScriptResourceAttribute.cs" />\r
-    <Compile Include=".\System.Web.UI\ServiceReference.cs" />\r
-    <Compile Include=".\System.Web.UI\ServiceReferenceCollection.cs" />\r
-    <Compile Include=".\System.Web.UI\TargetControlTypeAttribute.cs" />\r
-    <Compile Include=".\System.Web.UI\Timer.cs" />\r
-    <Compile Include=".\System.Web.UI\UpdatePanel.cs" />\r
-    <Compile Include=".\System.Web.UI\UpdatePanelControlTrigger.cs" />\r
-    <Compile Include=".\System.Web.UI\UpdatePanelRenderMode.cs" />\r
-    <Compile Include=".\System.Web.UI\UpdatePanelTrigger.cs" />\r
-    <Compile Include=".\System.Web.UI\UpdatePanelTriggerCollection.cs" />\r
-    <Compile Include=".\System.Web.UI\UpdatePanelUpdateMode.cs" />\r
-    <Compile Include=".\System.Web.UI\UpdateProgress.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data.Linq/System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Services/System.Web.Services-net_4_5.csproj">\r
-      <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
-      <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjax.debug.js">\r
-      <LogicalName>MicrosoftAjax.debug.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjax.js">\r
-      <LogicalName>MicrosoftAjax.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxTimer.debug.js">\r
-      <LogicalName>MicrosoftAjaxTimer.debug.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxTimer.js">\r
-      <LogicalName>MicrosoftAjaxTimer.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxWebForms.debug.js">\r
-      <LogicalName>MicrosoftAjaxWebForms.debug.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxWebForms.js">\r
-      <LogicalName>MicrosoftAjaxWebForms.js</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Extensions/System.Web.Extensions-tests-net_4_5.csproj b/mcs/class/System.Web.Extensions/System.Web.Extensions-tests-net_4_5.csproj
deleted file mode 100644 (file)
index fc69b59..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F6ACFFDE-B4F0-4622-AA00-6ED634E1BF3E}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,219,169,1591</NoWarn>\r
-    <OutputPath>bin\Debug\System.Web.Extensions-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Extensions_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,219,169,1591</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_5;SYSTEM_WEB_EXTENSIONS;SYSTEM_WEB_EXTENSIONS</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,219,169,1591</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_5;SYSTEM_WEB_EXTENSIONS;SYSTEM_WEB_EXTENSIONS</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\AssemblyInfo.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\crc32.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\Header.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlAttribute.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlDocument.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlEntity.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlNode.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlNodeNavigator.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlWeb.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\MixedCodeDocument.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\ParseReader.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\tools.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\NunitWebTest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\MainsoftWebTest\XmlComparer.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\BaseControl.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\BaseControlCollection.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\BaseInvoker.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\BaseRequest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\BaseWorkerRequest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\FakeMembershipProvider.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\FormRequest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\Global.asax.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\HandlerInvoker.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\IForeignData.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\MyHandler.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\MyHost.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\MyPageHandlerFactory.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\MyTemplateControls.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\PageDelegates.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\PageInvoker.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\PostableRequest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\PostableWorkerRequest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\Response.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\StandardUrl.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\WebTest.cs" />\r
-    <Compile Include="..\System.Web\Test\mainsoft\NunitWeb\NunitWeb\WebTestResourcesSetupAttribute.cs" />\r
-    <Compile Include="Test\code\Bug604053_DataSource.cs" />\r
-    <Compile Include="Test\code\Country.cs" />\r
-    <Compile Include="Test\code\CountryCollection.cs" />\r
-    <Compile Include="Test\code\WebTestLocal.cs" />\r
-    <Compile Include="Test\System.Web.Script.Serialization\JavaScriptSerializerTest.cs" />\r
-    <Compile Include="Test\System.Web.Script.Services\ProxyGeneratorTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataPagerFieldCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\EventRecorder.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ListViewPagedDataSourceTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ListViewTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\ScriptBehaviorDescriptorTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\ScriptComponentDescriptorTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\ScriptControlDescriptorTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\ScriptReferenceBaseTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\UpdateProgressTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{74D281D8-F725-4D79-B218-2DFCCFD44FA2}</Project>\r
-      <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{725FB152-838A-4C6E-8A12-AC47E2DD4CEA}</Project>\r
-      <Name>System.Web\System.Web-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_5.csproj">\r
-      <Project>{337A92C8-EB50-43A9-9435-CB268AC147DC}</Project>\r
-      <Name>SystemWebTestShim\SystemWebTestShim-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjax.debug.js">\r
-      <LogicalName>MicrosoftAjax.debug.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjax.js">\r
-      <LogicalName>MicrosoftAjax.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxTimer.debug.js">\r
-      <LogicalName>MicrosoftAjaxTimer.debug.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxTimer.js">\r
-      <LogicalName>MicrosoftAjaxTimer.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxWebForms.debug.js">\r
-      <LogicalName>MicrosoftAjaxWebForms.debug.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxWebForms.js">\r
-      <LogicalName>MicrosoftAjaxWebForms.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/resources/Web.mono.config">\r
-      <LogicalName>Web.mono.config</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/resources/profile.config.4.5">\r
-      <LogicalName>profile.config.4.5</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/resources/profile.config.4.0">\r
-      <LogicalName>profile.config.4.0</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/resources/profile.config.2.0">\r
-      <LogicalName>profile.config.2.0</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/resources/ListViewSort.aspx">\r
-      <LogicalName>ListViewSort.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/resources/ListViewTest.aspx">\r
-      <LogicalName>ListViewTest.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/resources/ListViewTotalRowCount_Bug535701_1.aspx">\r
-      <LogicalName>ListViewTotalRowCount_Bug535701_1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/resources/ListViewTotalRowCount_Bug535701_2.aspx">\r
-      <LogicalName>ListViewTotalRowCount_Bug535701_2.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/resources/ListViewTotalRowCount_Bug604053.aspx">\r
-      <LogicalName>ListViewTotalRowCount_Bug604053.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/MyPage.aspx.cs">\r
-      <LogicalName>MyPage.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/Global.asax">\r
-      <LogicalName>Global.asax</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/My.ashx">\r
-      <LogicalName>My.ashx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/MyPage.aspx">\r
-      <LogicalName>MyPage.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/MyPageWithDerivedMaster.aspx">\r
-      <LogicalName>MyPageWithDerivedMaster.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/MyPageWithMaster.aspx">\r
-      <LogicalName>MyPageWithMaster.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/MyPageWithMasterInvalidPlaceHolder.aspx">\r
-      <LogicalName>MyPageWithMasterInvalidPlaceHolder.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/My.master">\r
-      <LogicalName>My.master</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="../System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/MyDerived.master">\r
-      <LogicalName>MyDerived.master</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Http.SelfHost/System.Web.Http.SelfHost-net_4_5.csproj b/mcs/class/System.Web.Http.SelfHost/System.Web.Http.SelfHost-net_4_5.csproj
deleted file mode 100644 (file)
index aa1b8ea..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A7DC51E3-AB8D-4FE4-B25F-4C16F3CCCB5C}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Http.SelfHost</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETMVC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETMVC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\CommonWebApiResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\DictionaryExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\Error.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\HttpMethodHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\TaskHelpers.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\TaskHelpersExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Channels\HttpBinding.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Channels\HttpBindingSecurity.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Channels\HttpBindingSecurityMode.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Channels\HttpBindingSecurityModeHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Channels\HttpMessage.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Channels\HttpMessageEncoderFactory.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Channels\HttpMessageEncodingBindingElement.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Channels\HttpMessageEncodingChannelListener.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Channels\HttpMessageEncodingReplyChannel.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Channels\HttpMessageEncodingRequestContext.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Channels\HttpMessageExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\HttpRequestMessageExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\HttpSelfHostConfiguration.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\HttpSelfHostServer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\Properties\SRResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\Channels\AsyncResult.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\Channels\BufferedOutputStream.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\Channels\BufferManagerOutputStream.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\Channels\ChannelAcceptor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\Channels\ChannelBindingUtility.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\Channels\CompletedAsyncResult.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\Channels\HttpTransportDefaults.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\Channels\IChannelAcceptor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\Channels\LayeredChannel.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\Channels\LayeredChannelAcceptor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\Channels\LayeredChannelListener.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\Channels\TransportDefaults.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\HostNameComparisonModeHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\HttpClientCredentialTypeHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\HttpProxyCredentialTypeHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\HttpTransportSecurityExtensionMethods.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.SelfHost\ServiceModel\TransferModeHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\TransparentCommonAssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Net.Http/System.Net.Http-net_4_5.csproj">\r
-      <Project>{E36C154B-A0AC-4721-B06A-AFE31D357CE5}</Project>\r
-      <Name>System.Net.Http-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
-      <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.IdentityModel/System.IdentityModel-net_4_5.csproj">\r
-      <Project>{F056C062-E467-4989-9366-440E8CD23C0C}</Project>\r
-      <Name>System.IdentityModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Http/System.Web.Http-net_4_5.csproj">\r
-      <Project>{2EFF8684-99DB-4DD6-B3BC-7E7AA42A15FC}</Project>\r
-      <Name>System.Web.Http-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj">\r
-      <Project>{BFBE5444-4F21-45CF-929E-C8FBEF302F5E}</Project>\r
-      <Name>System.Net.Http.Formatting-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Http.WebHost/System.Web.Http.WebHost-net_4_5.csproj b/mcs/class/System.Web.Http.WebHost/System.Web.Http.WebHost-net_4_5.csproj
deleted file mode 100644 (file)
index 7b16627..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{73DBB6D8-132F-4E3B-B437-2F65CBDEF5DE}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Http.WebHost</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETMVC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETMVC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\CommonWebApiResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\DictionaryExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\Error.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\HttpMethodHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\TaskHelpers.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\TaskHelpersExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\GlobalConfiguration.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\HttpControllerHandler.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\HttpControllerRouteHandler.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\HttpControllerTypeCacheSerializer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\PreApplicationStartCode.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\Properties\SRResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\RouteCollectionExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\Routing\HostedHttpRoute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\Routing\HostedHttpRouteCollection.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\Routing\HostedHttpRouteData.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\Routing\HostedHttpVirtualPathData.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\Routing\HttpContextBaseExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\Routing\HttpRouteDataExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\Routing\HttpRouteExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\Routing\HttpWebRoute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\SuppressFormsAuthRedirectModule.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\TaskWrapperAsyncResult.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\WebHostAssembliesResolver.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http.WebHost\WebHostHttpControllerTypeResolver.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\TransparentCommonAssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Net.Http/System.Net.Http-net_4_5.csproj">\r
-      <Project>{E36C154B-A0AC-4721-B06A-AFE31D357CE5}</Project>\r
-      <Name>System.Net.Http-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
-      <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.IdentityModel/System.IdentityModel-net_4_5.csproj">\r
-      <Project>{F056C062-E467-4989-9366-440E8CD23C0C}</Project>\r
-      <Name>System.IdentityModel-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Http/System.Web.Http-net_4_5.csproj">\r
-      <Project>{2EFF8684-99DB-4DD6-B3BC-7E7AA42A15FC}</Project>\r
-      <Name>System.Web.Http-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj">\r
-      <Project>{BFBE5444-4F21-45CF-929E-C8FBEF302F5E}</Project>\r
-      <Name>System.Net.Http.Formatting-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Routing/System.Web.Routing-net_4_5.csproj">\r
-      <Project>{A28F2A14-901C-452C-82B6-75ECE5C7E714}</Project>\r
-      <Name>System.Web.Routing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj">\r
-      <Project>{50DC9191-2D18-4EDB-A929-4ECAB7981A1C}</Project>\r
-      <Name>Microsoft.Web.Infrastructure-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Http/System.Web.Http-net_4_5.csproj b/mcs/class/System.Web.Http/System.Web.Http-net_4_5.csproj
deleted file mode 100644 (file)
index f5d899c..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2EFF8684-99DB-4DD6-B3BC-7E7AA42A15FC}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Http</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETMVC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETMVC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\AptcaCommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\CommonWebApiResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\DictionaryExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\Error.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\HttpMethodHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\PrefixContainer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\TaskHelpers.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\Common\TaskHelpersExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\RS.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\AcceptVerbsAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ActionNameAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\AllowAnonymousAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ApiController.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\AuthorizeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\ApiControllerActionInvoker.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\ApiControllerActionSelector.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\HttpActionBinding.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\HttpActionContext.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\HttpActionContextExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\HttpActionDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\HttpControllerConfigurationAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\HttpControllerContext.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\HttpControllerDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\HttpParameterBinding.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\HttpParameterDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\IActionHttpMethodProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\IActionMethodSelector.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\IActionResultConverter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\IActionValueBinder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\IHttpActionInvoker.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\IHttpActionSelector.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\IHttpController.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\ReflectedHttpActionDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\ReflectedHttpParameterDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\ResponseMessageResultConverter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\ValueResultConverter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Controllers\VoidResultConverter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dependencies\EmptyResolver.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dependencies\IDependencyResolver.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dependencies\IDependencyScope.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Description\ApiDescription.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Description\ApiExplorer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Description\ApiExplorerSettingsAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Description\ApiParameterDescription.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Description\ApiParameterSource.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Description\IApiExplorer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Description\IDocumentationProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dispatcher\DefaultAssembliesResolver.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dispatcher\DefaultHttpControllerActivator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dispatcher\DefaultHttpControllerSelector.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dispatcher\DefaultHttpControllerTypeResolver.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dispatcher\ExceptionSurrogate.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dispatcher\HttpControllerDispatcher.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dispatcher\HttpControllerTypeCache.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dispatcher\IAssembliesResolver.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dispatcher\IHttpControllerActivator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dispatcher\IHttpControllerSelector.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Dispatcher\IHttpControllerTypeResolver.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\ActionDescriptorFilterProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\ActionFilterAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\AuthorizationFilterAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\ConfigurationFilterProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\ExceptionFilterAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\FilterAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\FilterInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\FilterInfoComparer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\FilterScope.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\HttpActionExecutedContext.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\HttpFilterCollection.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\IActionFilter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\IAuthorizationFilter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\IExceptionFilter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\IFilter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Filters\IFilterProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\FromBodyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\FromUriAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Hosting\HttpPipelineFactory.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Hosting\HttpPropertyKeys.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpBindNeverAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpBindRequiredAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpConfiguration.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpDeleteAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpGetAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpHeadAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpOptionsAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpPatchAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpPostAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpPutAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpRequestMessageExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpResponseException.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpResponseMessageExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpRouteCollection.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpRouteCollectionExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\HttpServer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\IncludeErrorDetailPolicy.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Internal\CollectionModelBinderUtil.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Internal\DataTypeUtil.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Internal\HttpActionContextExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Internal\HttpParameterBindingExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Internal\MemberInfoExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Internal\ParameterInfoExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Internal\TypeActivator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Internal\TypeDescriptorHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Internal\TypeHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Internal\UriQueryUtility.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Metadata\ModelMetadata.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Metadata\ModelMetadataProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Metadata\Providers\AssociatedMetadataProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Metadata\Providers\CachedDataAnnotationsMetadataAttributes.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Metadata\Providers\CachedDataAnnotationsModelMetadata.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Metadata\Providers\CachedModelMetadata.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Metadata\Providers\DataAnnotationsModelMetadataProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Metadata\Providers\EmptyMetadataProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\ArrayModelBinder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\ArrayModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\BinaryDataModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\CollectionModelBinder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\CollectionModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\ComplexModelDto.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\ComplexModelDtoModelBinder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\ComplexModelDtoModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\ComplexModelDtoResult.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\CompositeModelBinder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\CompositeModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\DictionaryModelBinder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\DictionaryModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\GenericModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\KeyValuePairModelBinder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\KeyValuePairModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\MutableObjectModelBinder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\MutableObjectModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\SimpleModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\TypeConverterModelBinder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\TypeConverterModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\TypeMatchModelBinder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\Binders\TypeMatchModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\CancellationTokenParameterBinding.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\CustomModelBinderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\DefaultActionValueBinder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\ErrorParameterBinding.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\FormatterParameterBinding.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\FormDataCollectionExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\HttpBindingBehavior.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\HttpBindingBehaviorAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\HttpRequestParameterBinding.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\IModelBinder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\JQueryMVCFormUrlEncodedFormatter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\ModelBinderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\ModelBinderConfig.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\ModelBinderErrorMessageProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\ModelBinderParameterBinding.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\ModelBinderProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\ModelBindingContext.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\ModelBindingHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\ModelError.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\ModelErrorCollection.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\ModelState.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ModelBinding\ModelStateDictionary.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\NonActionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Properties\SRResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Query\DynamicQueryable.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Query\ODataQueryDeserializer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Query\ParseException.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Query\QueryComposer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Query\QueryResolver.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Query\QueryValidator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Query\ServiceQuery.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Query\ServiceQueryPart.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\QueryableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\RouteParameter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\BoundRouteTemplate.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\HttpMethodConstraint.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\HttpParsedRoute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\HttpRoute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\HttpRouteData.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\HttpRouteDirection.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\HttpRouteParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\HttpRouteValueDictionary.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\HttpVirtualPathData.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\IHttpRoute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\IHttpRouteConstraint.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\IHttpRouteData.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\IHttpVirtualPathData.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\MediaTypeFormatterExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\PathContentSegment.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\PathLiteralSubsegment.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\PathParameterSubsegment.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\PathSegment.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\PathSeparatorSegment.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\PathSubsegment.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\UriPathExtensionMapping.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Routing\UrlHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Services\DefaultServices.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ServicesExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\FormattingUtilities.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\IFormatterTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\ITraceManager.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\ITraceWriter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\ITraceWriterExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\TraceCategories.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\TraceKind.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\TraceLevel.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\TraceManager.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\TraceRecord.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\ActionFilterAttributeTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\ActionFilterTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\ActionValueBinderTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\AuthorizationFilterAttributeTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\AuthorizationFilterTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\BufferedMediaTypeFormatterTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\ContentNegotiatorTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\ExceptionFilterAttributeTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\ExceptionFilterTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\FilterTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\FormatterParameterBindingTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\FormUrlEncodedMediaTypeFormatterTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\HttpActionBindingTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\HttpActionDescriptorTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\HttpActionInvokerTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\HttpActionSelectorTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\HttpControllerActivatorTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\HttpControllerDescriptorTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\HttpControllerSelectorTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\HttpControllerTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\HttpParameterBindingTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\JsonMediaTypeFormatterTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\MediaTypeFormatterTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\MessageHandlerTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\RequestMessageHandlerTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Tracing\Tracers\XmlMediaTypeFormatterTracer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\DefaultBodyModelValidator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\IBodyModelValidator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\ModelStateFormatterLogger.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\ModelValidatedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\ModelValidatingEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\ModelValidationNode.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\ModelValidationRequiredMemberSelector.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\ModelValidationResult.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\ModelValidator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\ModelValidatorProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\Providers\AssociatedValidatorProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\Providers\DataAnnotationsModelValidatorProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\Providers\DataMemberModelValidatorProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\Providers\RequiredMemberModelValidatorProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\Validators\DataAnnotationsModelValidator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\Validators\RequiredMemberModelValidator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\Validation\Validators\ValidatableObjectAdapter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\IEnumerableValueProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\IUriValueProviderFactory.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\IValueProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\Providers\CompositeValueProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\Providers\CompositeValueProviderFactory.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\Providers\ElementalValueProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\Providers\NameValueCollectionValueProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\Providers\QueryStringValueProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\Providers\QueryStringValueProviderFactory.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\Providers\RouteDataValueProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\Providers\RouteDataValueProviderFactory.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\ValueProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\ValueProviderFactory.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Http\ValueProviders\ValueProviderResult.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Net.Http/System.Net.Http-net_4_5.csproj">\r
-      <Project>{E36C154B-A0AC-4721-B06A-AFE31D357CE5}</Project>\r
-      <Name>System.Net.Http-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj">\r
-      <Project>{BFBE5444-4F21-45CF-929E-C8FBEF302F5E}</Project>\r
-      <Name>System.Net.Http.Formatting-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj">\r
-      <Project>{CB3E9225-3DFF-4930-BFED-1E8AE5319C32}</Project>\r
-      <Name>System.Runtime.Caching-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data.Linq/System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="System.Web.Http.Properties.CommonWebApiResources.resources">\r
-      <LogicalName>System.Web.Http.Properties.CommonWebApiResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.Http.Properties.SRResources.resources">\r
-      <LogicalName>System.Web.Http.Properties.SRResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Mvc3/System.Web.Mvc3-net_4_5.csproj b/mcs/class/System.Web.Mvc3/System.Web.Mvc3-net_4_5.csproj
deleted file mode 100644 (file)
index 9aa71a3..0000000
+++ /dev/null
@@ -1,496 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AED34264-9E46-4F38-8BBF-6ECB69DE8FD8}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Mvc</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MONO</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MONO</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include=".\GlobalAssemblyInfo.cs" />\r
-    <Compile Include=".\GlobalSuppressions.cs" />\r
-    <Compile Include=".\Mvc\AcceptVerbsAttribute.cs" />\r
-    <Compile Include=".\Mvc\ActionDescriptor.cs" />\r
-    <Compile Include=".\Mvc\ActionExecutedContext.cs" />\r
-    <Compile Include=".\Mvc\ActionExecutingContext.cs" />\r
-    <Compile Include=".\Mvc\ActionFilterAttribute.cs" />\r
-    <Compile Include=".\Mvc\ActionMethodDispatcher.cs" />\r
-    <Compile Include=".\Mvc\ActionMethodDispatcherCache.cs" />\r
-    <Compile Include=".\Mvc\ActionMethodSelector.cs" />\r
-    <Compile Include=".\Mvc\ActionMethodSelectorAttribute.cs" />\r
-    <Compile Include=".\Mvc\ActionNameAttribute.cs" />\r
-    <Compile Include=".\Mvc\ActionNameSelectorAttribute.cs" />\r
-    <Compile Include=".\Mvc\ActionResult.cs" />\r
-    <Compile Include=".\Mvc\ActionSelector.cs" />\r
-    <Compile Include=".\Mvc\AdditionalMetaDataAttribute.cs" />\r
-    <Compile Include=".\Mvc\Ajax\AjaxExtensions.cs" />\r
-    <Compile Include=".\Mvc\Ajax\AjaxOptions.cs" />\r
-    <Compile Include=".\Mvc\Ajax\InsertionMode.cs" />\r
-    <Compile Include=".\Mvc\AjaxHelper.cs" />\r
-    <Compile Include=".\Mvc\AjaxHelper`1.cs" />\r
-    <Compile Include=".\Mvc\AjaxRequestExtensions.cs" />\r
-    <Compile Include=".\Mvc\AllowHtmlAttribute.cs" />\r
-    <Compile Include=".\Mvc\AreaHelpers.cs" />\r
-    <Compile Include=".\Mvc\AreaRegistration.cs" />\r
-    <Compile Include=".\Mvc\AreaRegistrationContext.cs" />\r
-    <Compile Include=".\Mvc\AssociatedMetadataProvider.cs" />\r
-    <Compile Include=".\Mvc\AssociatedValidatorProvider.cs" />\r
-    <Compile Include=".\Mvc\Async\ActionDescriptorCreator.cs" />\r
-    <Compile Include=".\Mvc\Async\AsyncActionDescriptor.cs" />\r
-    <Compile Include=".\Mvc\Async\AsyncActionMethodSelector.cs" />\r
-    <Compile Include=".\Mvc\Async\AsyncControllerActionInvoker.cs" />\r
-    <Compile Include=".\Mvc\Async\AsyncManager.cs" />\r
-    <Compile Include=".\Mvc\Async\AsyncResultWrapper.cs" />\r
-    <Compile Include=".\Mvc\Async\AsyncUtil.cs" />\r
-    <Compile Include=".\Mvc\Async\AsyncVoid.cs" />\r
-    <Compile Include=".\Mvc\Async\BeginInvokeDelegate.cs" />\r
-    <Compile Include=".\Mvc\Async\EndInvokeDelegate.cs" />\r
-    <Compile Include=".\Mvc\Async\EndInvokeDelegate`1.cs" />\r
-    <Compile Include=".\Mvc\Async\IAsyncActionInvoker.cs" />\r
-    <Compile Include=".\Mvc\Async\IAsyncController.cs" />\r
-    <Compile Include=".\Mvc\Async\IAsyncManagerContainer.cs" />\r
-    <Compile Include=".\Mvc\Async\OperationCounter.cs" />\r
-    <Compile Include=".\Mvc\Async\ReflectedAsyncActionDescriptor.cs" />\r
-    <Compile Include=".\Mvc\Async\ReflectedAsyncControllerDescriptor.cs" />\r
-    <Compile Include=".\Mvc\Async\SimpleAsyncResult.cs" />\r
-    <Compile Include=".\Mvc\Async\SingleEntryGate.cs" />\r
-    <Compile Include=".\Mvc\Async\SynchronizationContextUtil.cs" />\r
-    <Compile Include=".\Mvc\Async\SynchronousOperationException.cs" />\r
-    <Compile Include=".\Mvc\Async\Trigger.cs" />\r
-    <Compile Include=".\Mvc\Async\TriggerListener.cs" />\r
-    <Compile Include=".\Mvc\AsyncController.cs" />\r
-    <Compile Include=".\Mvc\AsyncTimeoutAttribute.cs" />\r
-    <Compile Include=".\Mvc\AuthorizationContext.cs" />\r
-    <Compile Include=".\Mvc\AuthorizeAttribute.cs" />\r
-    <Compile Include=".\Mvc\BindAttribute.cs" />\r
-    <Compile Include=".\Mvc\BuildManagerCompiledView.cs" />\r
-    <Compile Include=".\Mvc\BuildManagerViewEngine.cs" />\r
-    <Compile Include=".\Mvc\BuildManagerWrapper.cs" />\r
-    <Compile Include=".\Mvc\ByteArrayModelBinder.cs" />\r
-    <Compile Include=".\Mvc\ChildActionOnlyAttribute.cs" />\r
-    <Compile Include=".\Mvc\ChildActionValueProvider.cs" />\r
-    <Compile Include=".\Mvc\ChildActionValueProviderFactory.cs" />\r
-    <Compile Include=".\Mvc\ClientDataTypeModelValidatorProvider.cs" />\r
-    <Compile Include=".\Mvc\CompareAttribute.cs" />\r
-    <Compile Include=".\Mvc\ContentResult.cs" />\r
-    <Compile Include=".\Mvc\Controller.cs" />\r
-    <Compile Include=".\Mvc\ControllerActionInvoker.cs" />\r
-    <Compile Include=".\Mvc\ControllerBase.cs" />\r
-    <Compile Include=".\Mvc\ControllerBuilder.cs" />\r
-    <Compile Include=".\Mvc\ControllerContext.cs" />\r
-    <Compile Include=".\Mvc\ControllerDescriptor.cs" />\r
-    <Compile Include=".\Mvc\ControllerDescriptorCache.cs" />\r
-    <Compile Include=".\Mvc\ControllerInstanceFilterProvider.cs" />\r
-    <Compile Include=".\Mvc\ControllerTypeCache.cs" />\r
-    <Compile Include=".\Mvc\CustomModelBinderAttribute.cs" />\r
-    <Compile Include=".\Mvc\DataAnnotationsModelMetadata.cs" />\r
-    <Compile Include=".\Mvc\DataAnnotationsModelMetadataProvider.cs" />\r
-    <Compile Include=".\Mvc\DataAnnotationsModelValidator.cs" />\r
-    <Compile Include=".\Mvc\DataAnnotationsModelValidator`1.cs" />\r
-    <Compile Include=".\Mvc\DataAnnotationsModelValidatorProvider.cs" />\r
-    <Compile Include=".\Mvc\DataErrorInfoModelValidatorProvider.cs" />\r
-    <Compile Include=".\Mvc\DataTypeUtil.cs" />\r
-    <Compile Include=".\Mvc\DefaultControllerFactory.cs" />\r
-    <Compile Include=".\Mvc\DefaultModelBinder.cs" />\r
-    <Compile Include=".\Mvc\DefaultViewLocationCache.cs" />\r
-    <Compile Include=".\Mvc\DependencyResolver.cs" />\r
-    <Compile Include=".\Mvc\DependencyResolverExtensions.cs" />\r
-    <Compile Include=".\Mvc\DescriptorUtil.cs" />\r
-    <Compile Include=".\Mvc\DictionaryHelpers.cs" />\r
-    <Compile Include=".\Mvc\DictionaryValueProvider`1.cs" />\r
-    <Compile Include=".\Mvc\DynamicViewDataDictionary.cs" />\r
-    <Compile Include=".\Mvc\EmptyModelMetadataProvider.cs" />\r
-    <Compile Include=".\Mvc\EmptyModelValidatorProvider.cs" />\r
-    <Compile Include=".\Mvc\EmptyResult.cs" />\r
-    <Compile Include=".\Mvc\Error.cs" />\r
-    <Compile Include=".\Mvc\ExceptionContext.cs" />\r
-    <Compile Include=".\Mvc\ExpressionHelper.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\BinaryExpressionFingerprint.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\CachedExpressionCompiler.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\ConditionalExpressionFingerprint.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\ConstantExpressionFingerprint.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\DefaultExpressionFingerprint.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\ExpressionFingerprint.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\ExpressionFingerprintChain.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\FingerprintingExpressionVisitor.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\HashCodeCombiner.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\Hoisted`2.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\HoistingExpressionVisitor.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\IndexExpressionFingerprint.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\LambdaExpressionFingerprint.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\MemberExpressionFingerprint.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\MethodCallExpressionFingerprint.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\ParameterExpressionFingerprint.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\TypeBinaryExpressionFingerprint.cs" />\r
-    <Compile Include=".\Mvc\ExpressionUtil\UnaryExpressionFingerprint.cs" />\r
-    <Compile Include=".\Mvc\FieldValidationMetadata.cs" />\r
-    <Compile Include=".\Mvc\FileContentResult.cs" />\r
-    <Compile Include=".\Mvc\FilePathResult.cs" />\r
-    <Compile Include=".\Mvc\FileResult.cs" />\r
-    <Compile Include=".\Mvc\FileStreamResult.cs" />\r
-    <Compile Include=".\Mvc\Filter.cs" />\r
-    <Compile Include=".\Mvc\FilterAttribute.cs" />\r
-    <Compile Include=".\Mvc\FilterAttributeFilterProvider.cs" />\r
-    <Compile Include=".\Mvc\FilterInfo.cs" />\r
-    <Compile Include=".\Mvc\FilterProviderCollection.cs" />\r
-    <Compile Include=".\Mvc\FilterProviders.cs" />\r
-    <Compile Include=".\Mvc\FilterScope.cs" />\r
-    <Compile Include=".\Mvc\FormCollection.cs" />\r
-    <Compile Include=".\Mvc\FormContext.cs" />\r
-    <Compile Include=".\Mvc\FormMethod.cs" />\r
-    <Compile Include=".\Mvc\FormValueProvider.cs" />\r
-    <Compile Include=".\Mvc\FormValueProviderFactory.cs" />\r
-    <Compile Include=".\Mvc\GlobalFilterCollection.cs" />\r
-    <Compile Include=".\Mvc\GlobalFilters.cs" />\r
-    <Compile Include=".\Mvc\HandleErrorAttribute.cs" />\r
-    <Compile Include=".\Mvc\HandleErrorInfo.cs" />\r
-    <Compile Include=".\Mvc\HiddenInputAttribute.cs" />\r
-    <Compile Include=".\Mvc\Html\ChildActionExtensions.cs" />\r
-    <Compile Include=".\Mvc\Html\DefaultDisplayTemplates.cs" />\r
-    <Compile Include=".\Mvc\Html\DefaultEditorTemplates.cs" />\r
-    <Compile Include=".\Mvc\Html\DisplayExtensions.cs" />\r
-    <Compile Include=".\Mvc\Html\DisplayTextExtensions.cs" />\r
-    <Compile Include=".\Mvc\Html\EditorExtensions.cs" />\r
-    <Compile Include=".\Mvc\Html\FormExtensions.cs" />\r
-    <Compile Include=".\Mvc\Html\InputExtensions.cs" />\r
-    <Compile Include=".\Mvc\Html\LabelExtensions.cs" />\r
-    <Compile Include=".\Mvc\Html\LinkExtensions.cs" />\r
-    <Compile Include=".\Mvc\Html\MvcForm.cs" />\r
-    <Compile Include=".\Mvc\Html\PartialExtensions.cs" />\r
-    <Compile Include=".\Mvc\Html\RenderPartialExtensions.cs" />\r
-    <Compile Include=".\Mvc\Html\SelectExtensions.cs" />\r
-    <Compile Include=".\Mvc\Html\TemplateHelpers.cs" />\r
-    <Compile Include=".\Mvc\Html\TextAreaExtensions.cs" />\r
-    <Compile Include=".\Mvc\Html\ValidationExtensions.cs" />\r
-    <Compile Include=".\Mvc\HtmlHelper.cs" />\r
-    <Compile Include=".\Mvc\HtmlHelper`1.cs" />\r
-    <Compile Include=".\Mvc\HttpDeleteAttribute.cs" />\r
-    <Compile Include=".\Mvc\HttpFileCollectionValueProvider.cs" />\r
-    <Compile Include=".\Mvc\HttpFileCollectionValueProviderFactory.cs" />\r
-    <Compile Include=".\Mvc\HttpGetAttribute.cs" />\r
-    <Compile Include=".\Mvc\HttpHandlerUtil.cs" />\r
-    <Compile Include=".\Mvc\HttpNotFoundResult.cs" />\r
-    <Compile Include=".\Mvc\HttpPostAttribute.cs" />\r
-    <Compile Include=".\Mvc\HttpPostedFileBaseModelBinder.cs" />\r
-    <Compile Include=".\Mvc\HttpPutAttribute.cs" />\r
-    <Compile Include=".\Mvc\HttpRequestExtensions.cs" />\r
-    <Compile Include=".\Mvc\HttpStatusCodeResult.cs" />\r
-    <Compile Include=".\Mvc\HttpUnauthorizedResult.cs" />\r
-    <Compile Include=".\Mvc\HttpVerbs.cs" />\r
-    <Compile Include=".\Mvc\IActionFilter.cs" />\r
-    <Compile Include=".\Mvc\IActionInvoker.cs" />\r
-    <Compile Include=".\Mvc\IAuthorizationFilter.cs" />\r
-    <Compile Include=".\Mvc\IBuildManager.cs" />\r
-    <Compile Include=".\Mvc\IClientValidatable.cs" />\r
-    <Compile Include=".\Mvc\IController.cs" />\r
-    <Compile Include=".\Mvc\IControllerActivator.cs" />\r
-    <Compile Include=".\Mvc\IControllerFactory.cs" />\r
-    <Compile Include=".\Mvc\IDependencyResolver.cs" />\r
-    <Compile Include=".\Mvc\IExceptionFilter.cs" />\r
-    <Compile Include=".\Mvc\IFilterProvider.cs" />\r
-    <Compile Include=".\Mvc\IMetadataAware.cs" />\r
-    <Compile Include=".\Mvc\IModelBinder.cs" />\r
-    <Compile Include=".\Mvc\IModelBinderProvider.cs" />\r
-    <Compile Include=".\Mvc\IMvcControlBuilder.cs" />\r
-    <Compile Include=".\Mvc\IMvcFilter.cs" />\r
-    <Compile Include=".\Mvc\InputType.cs" />\r
-    <Compile Include=".\Mvc\IResolver.cs" />\r
-    <Compile Include=".\Mvc\IResultFilter.cs" />\r
-    <Compile Include=".\Mvc\IRouteWithArea.cs" />\r
-    <Compile Include=".\Mvc\ITempDataProvider.cs" />\r
-    <Compile Include=".\Mvc\IUniquelyIdentifiable.cs" />\r
-    <Compile Include=".\Mvc\IUnvalidatedRequestValues.cs" />\r
-    <Compile Include=".\Mvc\IUnvalidatedValueProvider.cs" />\r
-    <Compile Include=".\Mvc\IValueProvider.cs" />\r
-    <Compile Include=".\Mvc\IView.cs" />\r
-    <Compile Include=".\Mvc\IViewDataContainer.cs" />\r
-    <Compile Include=".\Mvc\IViewEngine.cs" />\r
-    <Compile Include=".\Mvc\IViewLocationCache.cs" />\r
-    <Compile Include=".\Mvc\IViewPageActivator.cs" />\r
-    <Compile Include=".\Mvc\IViewStartPageChild.cs" />\r
-    <Compile Include=".\Mvc\JavaScriptResult.cs" />\r
-    <Compile Include=".\Mvc\JsonRequestBehavior.cs" />\r
-    <Compile Include=".\Mvc\JsonResult.cs" />\r
-    <Compile Include=".\Mvc\JsonValueProviderFactory.cs" />\r
-    <Compile Include=".\Mvc\LinqBinaryModelBinder.cs" />\r
-    <Compile Include=".\Mvc\ModelBinderAttribute.cs" />\r
-    <Compile Include=".\Mvc\ModelBinderDictionary.cs" />\r
-    <Compile Include=".\Mvc\ModelBinderProviderCollection.cs" />\r
-    <Compile Include=".\Mvc\ModelBinderProviders.cs" />\r
-    <Compile Include=".\Mvc\ModelBinders.cs" />\r
-    <Compile Include=".\Mvc\ModelBindingContext.cs" />\r
-    <Compile Include=".\Mvc\ModelClientValidationEqualToRule.cs" />\r
-    <Compile Include=".\Mvc\ModelClientValidationRangeRule.cs" />\r
-    <Compile Include=".\Mvc\ModelClientValidationRegexRule.cs" />\r
-    <Compile Include=".\Mvc\ModelClientValidationRemoteRule.cs" />\r
-    <Compile Include=".\Mvc\ModelClientValidationRequiredRule.cs" />\r
-    <Compile Include=".\Mvc\ModelClientValidationRule.cs" />\r
-    <Compile Include=".\Mvc\ModelClientValidationStringLengthRule.cs" />\r
-    <Compile Include=".\Mvc\ModelError.cs" />\r
-    <Compile Include=".\Mvc\ModelErrorCollection.cs" />\r
-    <Compile Include=".\Mvc\ModelMetadata.cs" />\r
-    <Compile Include=".\Mvc\ModelMetadataProvider.cs" />\r
-    <Compile Include=".\Mvc\ModelMetadataProviders.cs" />\r
-    <Compile Include=".\Mvc\ModelState.cs" />\r
-    <Compile Include=".\Mvc\ModelStateDictionary.cs" />\r
-    <Compile Include=".\Mvc\ModelValidationResult.cs" />\r
-    <Compile Include=".\Mvc\ModelValidator.cs" />\r
-    <Compile Include=".\Mvc\ModelValidatorProvider.cs" />\r
-    <Compile Include=".\Mvc\ModelValidatorProviderCollection.cs" />\r
-    <Compile Include=".\Mvc\ModelValidatorProviders.cs" />\r
-    <Compile Include=".\Mvc\MultiSelectList.cs" />\r
-    <Compile Include=".\Mvc\MultiServiceResolver.cs" />\r
-    <Compile Include=".\Mvc\MvcFilter.cs" />\r
-    <Compile Include=".\Mvc\MvcHandler.cs" />\r
-    <Compile Include=".\Mvc\MvcHtmlString.cs" />\r
-    <Compile Include=".\Mvc\MvcHttpHandler.cs" />\r
-    <Compile Include=".\Mvc\MvcRouteHandler.cs" />\r
-    <Compile Include=".\Mvc\MvcWebRazorHostFactory.cs" />\r
-    <Compile Include=".\Mvc\NameValueCollectionExtensions.cs" />\r
-    <Compile Include=".\Mvc\NameValueCollectionValueProvider.cs" />\r
-    <Compile Include=".\Mvc\NoAsyncTimeoutAttribute.cs" />\r
-    <Compile Include=".\Mvc\NonActionAttribute.cs" />\r
-    <Compile Include=".\Mvc\NullViewLocationCache.cs" />\r
-    <Compile Include=".\Mvc\OutputCacheAttribute.cs" />\r
-    <Compile Include=".\Mvc\ParameterBindingInfo.cs" />\r
-    <Compile Include=".\Mvc\ParameterDescriptor.cs" />\r
-    <Compile Include=".\Mvc\ParameterInfoUtil.cs" />\r
-    <Compile Include=".\Mvc\PartialViewResult.cs" />\r
-    <Compile Include=".\Mvc\PathHelpers.cs" />\r
-    <Compile Include=".\Mvc\PreApplicationStartCode.cs" />\r
-    <Compile Include=".\Mvc\QueryStringValueProvider.cs" />\r
-    <Compile Include=".\Mvc\QueryStringValueProviderFactory.cs" />\r
-    <Compile Include=".\Mvc\RangeAttributeAdapter.cs" />\r
-    <Compile Include=".\Mvc\Razor\MvcCSharpRazorCodeGenerator.cs" />\r
-    <Compile Include=".\Mvc\Razor\MvcCSharpRazorCodeParser.cs" />\r
-    <Compile Include=".\Mvc\Razor\MvcVBRazorCodeParser.cs" />\r
-    <Compile Include=".\Mvc\Razor\MvcWebPageRazorHost.cs" />\r
-    <Compile Include=".\Mvc\Razor\SetModelTypeCodeGenerator.cs" />\r
-    <Compile Include=".\Mvc\Razor\StartPageLookupDelegate.cs" />\r
-    <Compile Include=".\Mvc\RazorView.cs" />\r
-    <Compile Include=".\Mvc\RazorViewEngine.cs" />\r
-    <Compile Include=".\Mvc\ReaderWriterCache`2.cs" />\r
-    <Compile Include=".\Mvc\RedirectResult.cs" />\r
-    <Compile Include=".\Mvc\RedirectToRouteResult.cs" />\r
-    <Compile Include=".\Mvc\ReflectedActionDescriptor.cs" />\r
-    <Compile Include=".\Mvc\ReflectedAttributeCache.cs" />\r
-    <Compile Include=".\Mvc\ReflectedControllerDescriptor.cs" />\r
-    <Compile Include=".\Mvc\ReflectedParameterBindingInfo.cs" />\r
-    <Compile Include=".\Mvc\ReflectedParameterDescriptor.cs" />\r
-    <Compile Include=".\Mvc\RegularExpressionAttributeAdapter.cs" />\r
-    <Compile Include=".\Mvc\RemoteAttribute.cs" />\r
-    <Compile Include=".\Mvc\RequiredAttributeAdapter.cs" />\r
-    <Compile Include=".\Mvc\RequireHttpsAttribute.cs" />\r
-    <Compile Include=".\Mvc\Resources\MvcResources.Designer.cs" />\r
-    <Compile Include=".\Mvc\ResultExecutedContext.cs" />\r
-    <Compile Include=".\Mvc\ResultExecutingContext.cs" />\r
-    <Compile Include=".\Mvc\RouteCollectionExtensions.cs" />\r
-    <Compile Include=".\Mvc\RouteDataValueProvider.cs" />\r
-    <Compile Include=".\Mvc\RouteDataValueProviderFactory.cs" />\r
-    <Compile Include=".\Mvc\RouteValuesHelpers.cs" />\r
-    <Compile Include=".\Mvc\SecurityUtil.cs" />\r
-    <Compile Include=".\Mvc\SelectList.cs" />\r
-    <Compile Include=".\Mvc\SelectListItem.cs" />\r
-    <Compile Include=".\Mvc\SessionStateAttribute.cs" />\r
-    <Compile Include=".\Mvc\SessionStateTempDataProvider.cs" />\r
-    <Compile Include=".\Mvc\SingleServiceResolver.cs" />\r
-    <Compile Include=".\Mvc\StringLengthAttributeAdapter.cs" />\r
-    <Compile Include=".\Mvc\TagBuilderExtensions.cs" />\r
-    <Compile Include=".\Mvc\TempDataDictionary.cs" />\r
-    <Compile Include=".\Mvc\TemplateInfo.cs" />\r
-    <Compile Include=".\Mvc\TryGetValueDelegate.cs" />\r
-    <Compile Include=".\Mvc\TypeCacheSerializer.cs" />\r
-    <Compile Include=".\Mvc\TypeCacheUtil.cs" />\r
-    <Compile Include=".\Mvc\TypeDescriptorHelper.cs" />\r
-    <Compile Include=".\Mvc\TypeHelpers.cs" />\r
-    <Compile Include=".\Mvc\UnvalidatedRequestValuesAccessor.cs" />\r
-    <Compile Include=".\Mvc\UnvalidatedRequestValuesWrapper.cs" />\r
-    <Compile Include=".\Mvc\UrlHelper.cs" />\r
-    <Compile Include=".\Mvc\UrlParameter.cs" />\r
-    <Compile Include=".\Mvc\UrlRewriterHelper.cs" />\r
-    <Compile Include=".\Mvc\ValidatableObjectAdapter.cs" />\r
-    <Compile Include=".\Mvc\ValidateAntiForgeryTokenAttribute.cs" />\r
-    <Compile Include=".\Mvc\ValidateInputAttribute.cs" />\r
-    <Compile Include=".\Mvc\ValueProviderCollection.cs" />\r
-    <Compile Include=".\Mvc\ValueProviderDictionary.cs" />\r
-    <Compile Include=".\Mvc\ValueProviderFactories.cs" />\r
-    <Compile Include=".\Mvc\ValueProviderFactory.cs" />\r
-    <Compile Include=".\Mvc\ValueProviderFactoryCollection.cs" />\r
-    <Compile Include=".\Mvc\ValueProviderResult.cs" />\r
-    <Compile Include=".\Mvc\ValueProviderUtil.cs" />\r
-    <Compile Include=".\Mvc\ViewContext.cs" />\r
-    <Compile Include=".\Mvc\ViewDataDictionary.cs" />\r
-    <Compile Include=".\Mvc\ViewDataDictionary`1.cs" />\r
-    <Compile Include=".\Mvc\ViewDataInfo.cs" />\r
-    <Compile Include=".\Mvc\ViewEngineCollection.cs" />\r
-    <Compile Include=".\Mvc\ViewEngineResult.cs" />\r
-    <Compile Include=".\Mvc\ViewEngines.cs" />\r
-    <Compile Include=".\Mvc\ViewMasterPage.cs" />\r
-    <Compile Include=".\Mvc\ViewMasterPage`1.cs" />\r
-    <Compile Include=".\Mvc\ViewMasterPageControlBuilder.cs" />\r
-    <Compile Include=".\Mvc\ViewPage.cs" />\r
-    <Compile Include=".\Mvc\ViewPage`1.cs" />\r
-    <Compile Include=".\Mvc\ViewPageControlBuilder.cs" />\r
-    <Compile Include=".\Mvc\ViewResult.cs" />\r
-    <Compile Include=".\Mvc\ViewResultBase.cs" />\r
-    <Compile Include=".\Mvc\ViewStartPage.cs" />\r
-    <Compile Include=".\Mvc\ViewTemplateUserControl.cs" />\r
-    <Compile Include=".\Mvc\ViewTemplateUserControl`1.cs" />\r
-    <Compile Include=".\Mvc\ViewType.cs" />\r
-    <Compile Include=".\Mvc\ViewTypeControlBuilder.cs" />\r
-    <Compile Include=".\Mvc\ViewTypeParserFilter.cs" />\r
-    <Compile Include=".\Mvc\ViewUserControl.cs" />\r
-    <Compile Include=".\Mvc\ViewUserControl`1.cs" />\r
-    <Compile Include=".\Mvc\ViewUserControlControlBuilder.cs" />\r
-    <Compile Include=".\Mvc\VirtualPathProviderViewEngine.cs" />\r
-    <Compile Include=".\Mvc\WebFormView.cs" />\r
-    <Compile Include=".\Mvc\WebFormViewEngine.cs" />\r
-    <Compile Include=".\Mvc\WebViewPage.cs" />\r
-    <Compile Include=".\Mvc\WebViewPage`1.cs" />\r
-    <Compile Include=".\Properties\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj">\r
-      <Project>{50DC9191-2D18-4EDB-A929-4ECAB7981A1C}</Project>\r
-      <Name>Microsoft.Web.Infrastructure-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{94BD3939-6937-47AA-86CF-5C3E4C59E272}</Project>\r
-      <Name>System.Web.Abstractions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Routing/System.Web.Routing-net_4_5.csproj">\r
-      <Project>{A28F2A14-901C-452C-82B6-75ECE5C7E714}</Project>\r
-      <Name>System.Web.Routing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Extensions/System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{74D281D8-F725-4D79-B218-2DFCCFD44FA2}</Project>\r
-      <Name>System.Web.Extensions-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data.Linq/System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj">\r
-      <Project>{CB3E9225-3DFF-4930-BFED-1E8AE5319C32}</Project>\r
-      <Name>System.Runtime.Caching-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Razor/System.Web.Razor-net_4_5.csproj">\r
-      <Project>{FF61AB24-4492-47FA-B4D3-8D961113DD08}</Project>\r
-      <Name>System.Web.Razor-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.WebPages.Razor/System.Web.WebPages.Razor-net_4_5.csproj">\r
-      <Project>{4E601800-644F-49B2-B1C9-60D3489AAC38}</Project>\r
-      <Name>System.Web.WebPages.Razor-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.WebPages/System.Web.WebPages-net_4_5.csproj">\r
-      <Project>{FFDF7B0A-BD62-4E39-8A80-A42B560149C5}</Project>\r
-      <Name>System.Web.WebPages-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Mvc/Resources/MvcResources.resources">\r
-      <LogicalName>System.Web.Mvc.Resources.MvcResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Razor/System.Web.Razor-net_4_5.csproj b/mcs/class/System.Web.Razor/System.Web.Razor-net_4_5.csproj
deleted file mode 100644 (file)
index 91c4de8..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FF61AB24-4492-47FA-B4D3-8D961113DD08}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Razor</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETWEBPAGES</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETWEBPAGES</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\ExceptionHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\HashCodeCombiner.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\CSharpRazorCodeLanguage.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\DocumentParseCompleteEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Editor\AutoCompleteEditHandler.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Editor\BackgroundParseTask.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Editor\EditorHints.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Editor\EditResult.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Editor\ImplicitExpressionEditHandler.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Editor\SingleLineMarkupEditHandler.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Editor\SpanEditHandler.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\AddImportCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\AttributeBlockCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\BaseCodeWriter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\BlockCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\CodeGenerationCompleteEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\CodeGeneratorBase.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\CodeGeneratorContext.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\CodeWriter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\CodeWriterExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\CSharpCodeWriter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\CSharpRazorCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\DynamicAttributeBlockCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\ExpressionCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\ExpressionRenderingMode.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\GeneratedClassContext.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\GeneratedCodeMapping.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\HelperCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\HybridCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\IBlockCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\ISpanCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\LiteralAttributeCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\MarkupCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\RazorCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\RazorCommentCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\RazorDirectiveAttributeCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\ResolveUrlCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\SectionCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\SetBaseTypeCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\SetLayoutCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\SetVBOptionCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\SpanCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\StatementCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\TemplateBlockCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\TypeMemberCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\VBCodeWriter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Generator\VBRazorCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\GeneratorResults.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\BalancingModes.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\CallbackVisitor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\ConditionalAttributeCollapser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\CSharpCodeParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\CSharpCodeParser.Directives.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\CSharpCodeParser.Statements.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\CSharpLanguageCharacteristics.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\HtmlLanguageCharacteristics.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\HtmlMarkupParser.Block.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\HtmlMarkupParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\HtmlMarkupParser.Document.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\HtmlMarkupParser.Section.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\ISyntaxTreeRewriter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\LanguageCharacteristics.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\MarkupCollapser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\MarkupRewriter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\ParserBase.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\ParserContext.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\ParserHelpers.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\ParserVisitor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\ParserVisitorExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\RazorParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\SyntaxConstants.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\SyntaxTree\AcceptedCharacters.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\SyntaxTree\Block.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\SyntaxTree\BlockBuilder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\SyntaxTree\BlockType.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\SyntaxTree\EquivalenceComparer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\SyntaxTree\RazorError.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\SyntaxTree\Span.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\SyntaxTree\SpanBuilder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\SyntaxTree\SpanKind.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\SyntaxTree\SyntaxTreeNode.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\TextReaderExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\TokenizerBackedParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\TokenizerBackedParser.Helpers.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\VBCodeParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\VBCodeParser.Directives.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\VBCodeParser.Statements.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\VBLanguageCharacteristics.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Parser\WhitespaceRewriter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\ParserResults.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\PartialParseResult.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\RazorCodeLanguage.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\RazorDebugHelpers.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\RazorDirectiveAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\RazorEditorParser.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\RazorEngineHost.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\RazorTemplateEngine.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Resources\RazorResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\StateMachine.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\BufferingTextReader.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\ITextBuffer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\LineTrackingStringBuffer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\LocationTagged.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\LookaheadTextReader.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\LookaheadToken.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\SeekableTextReader.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\SourceLocation.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\SourceLocationTracker.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\TextBufferReader.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\TextChange.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\TextChangeType.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\TextDocumentReader.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Text\TextExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\CSharpHelpers.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\CSharpKeywordDetector.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\CSharpTokenizer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\HtmlTokenizer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\ITokenizer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\CSharpKeyword.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\CSharpSymbol.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\CSharpSymbolType.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\HtmlSymbol.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\HtmlSymbolType.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\ISymbol.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\KnownSymbolType.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\SymbolBase.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\SymbolExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\SymbolTypeSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\VBKeyword.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\VBSymbol.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Symbols\VBSymbolType.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\Tokenizer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\TokenizerView.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\VBHelpers.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\VBKeywordDetector.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\VBTokenizer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Tokenizer\XmlHelpers.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Utils\CharUtils.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Utils\DisposableAction.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Utils\EnumeratorExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\Utils\EnumUtil.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.Razor\VBRazorCodeLanguage.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\TransparentCommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="System.Web.Razor.Resources.RazorResources.resources">\r
-      <LogicalName>System.Web.Razor.Resources.RazorResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.Razor.Common.CommonResources.resources">\r
-      <LogicalName>System.Web.Razor.Common.CommonResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Routing/System.Web.Routing-net_4_5.csproj b/mcs/class/System.Web.Routing/System.Web.Routing-net_4_5.csproj
deleted file mode 100644 (file)
index da044b1..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A28F2A14-901C-452C-82B6-75ECE5C7E714}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Routing</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{94BD3939-6937-47AA-86CF-5C3E4C59E272}</Project>\r
-      <Name>System.Web.Abstractions-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Routing/System.Web.Routing-tests-net_4_5.csproj b/mcs/class/System.Web.Routing/System.Web.Routing-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 9059e20..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B98A55A6-32F8-43D4-97EC-04118F2731CB}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Web.Routing-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Routing_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Web.Routing\AssertExtensions.cs" />\r
-    <Compile Include="Test\System.Web.Routing\FakeHttpWorkerRequest.cs" />\r
-    <Compile Include="Test\System.Web.Routing\HttpMethodConstraintTest.cs" />\r
-    <Compile Include="Test\System.Web.Routing\KnownResponseHeader.cs" />\r
-    <Compile Include="Test\System.Web.Routing\RequestContext.cs" />\r
-    <Compile Include="Test\System.Web.Routing\RouteCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Routing\RouteDataTest.cs" />\r
-    <Compile Include="Test\System.Web.Routing\RouteTest.cs" />\r
-    <Compile Include="Test\System.Web.Routing\RouteValueDictionaryTest.cs" />\r
-    <Compile Include="Test\System.Web.Routing\StopRoutingHandlerTest.cs" />\r
-    <Compile Include="Test\System.Web.Routing\TestStubTypes.cs" />\r
-    <Compile Include="Test\System.Web.Routing\UnknownResponseHeader.cs" />\r
-    <Compile Include="Test\System.Web.Routing\UrlRoutingHandlerTest.cs" />\r
-    <Compile Include="Test\System.Web.Routing\UrlRoutingModuleTest.cs" />\r
-    <Compile Include="Test\System.Web.Routing\VirtualPathDataTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_5.csproj">\r
-      <Project>{A28F2A14-901C-452C-82B6-75ECE5C7E714}</Project>\r
-      <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{725FB152-838A-4C6E-8A12-AC47E2DD4CEA}</Project>\r
-      <Name>System.Web\System.Web-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{94BD3939-6937-47AA-86CF-5C3E4C59E272}</Project>\r
-      <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index a6f26b6b6f6dfc151d114892ac1f0259ce7dadc0..c2d2d51a28d30b629d9e2d72d8ff3620f0881bb2 100644 (file)
@@ -916,5 +916,15 @@ namespace MonoTests.System.Web.Routing
                        Assert.AreEqual (typeof (PageRouteHandler), rd.RouteHandler.GetType (), "#A4-3");
                        Assert.IsFalse (((PageRouteHandler) rd.RouteHandler).CheckPhysicalUrlAccess, "#A4-4");
                }
+               
+               [Test] // https://bugzilla.xamarin.com/show_bug.cgi?id=13909
+               public void MapPageRoute_Bug13909 ()
+               {
+                       var c = new RouteCollection ();
+
+                       c.MapPageRoute("test", "test", "~/test.aspx");
+                       c.Clear();
+                       c.MapPageRoute("test", "test", "~/test.aspx");
+               }
        }
 }
index 235ddbed880d4aefe7c448f122269888873eb586..c189f7963eb63425694f478679cdad6841ffab3d 100644 (file)
@@ -46,6 +46,14 @@ endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) -nowarn:618
 
+ifndef NO_THREAD_ABORT
+TEST_MCS_FLAGS += -d:MONO_FEATURE_THREAD_ABORT
+endif
+
+ifndef NO_THREAD_SUSPEND_RESUME
+TEST_MCS_FLAGS += -d:MONO_FEATURE_THREAD_SUSPEND_RESUME
+endif
+
 EXTRA_DISTFILES = \
        System.Web.Services.Description/web-reference.xsd       \
        System.Web.Services.Description/wsdl-1.1.xsd            \
diff --git a/mcs/class/System.Web.Services/System.Web.Services-net_4_5.csproj b/mcs/class/System.Web.Services/System.Web.Services-net_4_5.csproj
deleted file mode 100644 (file)
index a3bddf1..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,168,169,219,414,612,649</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Services</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,168,169,219,414,612,649</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MONO_BROKEN_CONFIGURATION_DLL</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,168,169,219,414,612,649</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MONO_BROKEN_CONFIGURATION_DLL</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\inc\InvariantComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\inc\PrivilegedConfigurationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\ComponentModel\CompModSwitches.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\DiagnosticsElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\PriorityGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\ProtocolElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\ProtocolElementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\Protocols.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\SoapEnvelopeProcessingElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\SoapExtensionTypeElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\SoapExtensionTypeElementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\TypeElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\TypeElementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\WebServicesSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\WsdlHelpGeneratorElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\WsiProfilesElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\WsiProfilesElementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\XmlFormatExtensionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\XmlFormatExtensionPointAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Configuration\XmlFormatExtensionPrefixAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\HttpFormatExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\HttpGetProtocolImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\HttpGetProtocolReflector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\HttpPostProtocolImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\HttpPostProtocolReflector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\HttpProtocolImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\HttpProtocolReflector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\MimeAnyImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\MimeFormatExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\MimeFormImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\MimeFormReflector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\MimeImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\MimeParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\MimeParameters.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\MimeReflector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\MimeReturn.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\MimeTextImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\MimeXmlImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\MimeXmlReflector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\ProtocolImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\ProtocolReflector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\SchemaCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\ServiceDescription.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\ServiceDescriptionImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\ServiceDescriptionReflector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\ServiceDescriptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\ServiceDescriptionSerializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\Soap12FormatExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\Soap12ProtocolImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\Soap12ProtocolReflector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\SoapExtensionImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\SoapExtensionReflector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\SoapFormatExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\SoapHttpTransportImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\SoapProtocolImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\SoapProtocolReflector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\SoapTransportImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\WebCodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\WebReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\WebReferenceCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\WebReferenceOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Description\WebServicesInteroperability.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Diagnostics\TraceUtility.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\ContractReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\ContractSearchPattern.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoveryClientDocuments.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoveryClientProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoveryClientReferences.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoveryDocument.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoveryDocumentLinksPattern.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoveryDocumentReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoveryDocumentSearchPattern.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoveryDocumentSerializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoveryExceptionDictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoveryReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoveryReferences.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoveryRequestHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DiscoverySearchPattern.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DynamicDiscoSearcher.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DynamicDiscoveryDocument.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DynamicPhysicalDiscoSearcher.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\DynamicVirtualDiscoSearcher.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\ExcludePathInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\InvalidContentTypeException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\InvalidDocumentContentsException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\LinkGrep.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\SchemaReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\SoapBinding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Discovery\XmlSchemaSearchPattern.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Interop\CallId.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Interop\INotifyConnection2.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Interop\INotifySink2.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Interop\INotifySource2.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Interop\NotifyFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Interop\UserThread.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\NativeMethods.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\PartialTrustHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\AnyReturnReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\BufferedResponseStream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\ClientProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\DiscoveryServerProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\DocumentationServerProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\HtmlFormParameterReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\HtmlFormParameterWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\HttpClientProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\HttpGetClientProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\HttpGetServerProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\HttpMethodAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\HttpPostClientProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\HttpPostLocalhostServerProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\HttpPostServerProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\HttpServerProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\LogicalMethodInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\MatchAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\MimeFormatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\MimeParameterReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\MimeParameterWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\MimeReturnReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\MimeReturnWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\NopReturnReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\PatternMatcher.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\RequestResponse.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\RuntimeUtils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\Scalars.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\ScatterGatherStream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\ServerProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\ServerType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\Soap11ServerProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\Soap12ServerProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapClientMessage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapClientProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapDocumentMethodAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapDocumentServiceAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapExtension.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapExtensionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapExtensionStream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapFaultCodes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapHeader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapHeaderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapHeaderDirection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapHeaderException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapHeaders.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapMessage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapMessageStage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapParameterStyle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapProtocolVersion.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapReflector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapRpcMethodAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapRpcServiceAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapServerMessage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapServerMethod.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapServerProtocol.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapServiceRoutingStyle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\SoapUnknownHeader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\TextReturnReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\UrlEncodedParameterWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\UrlParameterReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\UrlParameterWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\ValueCollectionParameterReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\WebServiceHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\WebServiceHandlerFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\XmlReturnReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Protocols\XmlReturnWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\Soap.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\WebMethodAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\WebService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\WebServiceAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\WebServiceBindingAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\WebServicesDescriptionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Web.Services\System\Web\Services\WsiProfiles.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="ReferenceSources\Res.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-plainweb-net_4_5.csproj">\r
-      <Project>{21892B00-1C9F-44F3-AE4C-A6A9A210CEC7}</Project>\r
-      <Name>System.Web-plainweb-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.DirectoryServices/System.DirectoryServices-net_4_5.csproj">\r
-      <Project>{EC4E43E7-63C0-4D64-8B7A-E00C097872A5}</Project>\r
-      <Name>System.DirectoryServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Design/System.Design-net_4_5.csproj">\r
-      <Project>{D4E6A482-761B-4B41-8B63-C930CA84D268}</Project>\r
-      <Name>System.Design-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="System.Web.Services.Description/wsdl-1.1.xsd">\r
-      <LogicalName>wsdl-1.1.xsd</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.Services.Description/wsdl-1.1-soap.xsd">\r
-      <LogicalName>wsdl-1.1-soap.xsd</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.Services.Description/web-reference.xsd">\r
-      <LogicalName>web-reference.xsd</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.Services/System.Web.Services-tests-net_4_5.csproj b/mcs/class/System.Web.Services/System.Web.Services-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 77e797f..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D5EB5665-A3B2-462E-8753-2B2BC4C8B313}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,649,169,618</NoWarn>\r
-    <OutputPath>bin\Debug\System.Web.Services-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.Services_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,649,169,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,649,169,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Web.Services.Configuration\DiagnosticsElementTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Configuration\ProtocolElementTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Configuration\SoapEnvelopeProcessingElementTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Configuration\SoapExtensionTypeElementTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Configuration\TypeElementTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Configuration\WsdlHelpGeneratorElementTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Configuration\WsiProfilesElementTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Configuration\XmlFormatExtensionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\BindingCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\DocumentableItemTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\OperationCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\OperationMessageCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\OperationMessageTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\PortTypeCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\PortTypeTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\ServiceCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\ServiceDescriptionCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\ServiceDescriptionFormatExtensionCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\ServiceDescriptionImporterTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\ServiceDescriptionReflectorTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\ServiceDescriptionTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\SoapBodyBindingTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\SoapOperationBindingTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\TypesTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\WebReferenceOptionsTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\WebReferenceTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Description\WebServicesInteroperabilityTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Discovery\ContractReferenceTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Protocols\LogicalMethodInfoTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Protocols\SoapHttpClientProtocolTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Protocols\SoapServerTypeTest.cs" />\r
-    <Compile Include="Test\System.Web.Services.Protocols\SocketResponder.cs" />\r
-    <Compile Include="Test\System.Web.Services.Protocols\WebClientProtocolTest.cs" />\r
-    <Compile Include="Test\System.Web.Services\WebMethodAttributeTest.cs" />\r
-    <Compile Include="Test\System.Web.Services\WebServiceAttributeTest.cs" />\r
-    <Compile Include="Test\System.Web.Services\WebServiceTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web\System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web\System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="System.Web.Services.Description/wsdl-1.1.xsd">\r
-      <LogicalName>wsdl-1.1.xsd</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.Services.Description/wsdl-1.1-soap.xsd">\r
-      <LogicalName>wsdl-1.1-soap.xsd</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.Services.Description/web-reference.xsd">\r
-      <LogicalName>web-reference.xsd</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index 0682fa9081475aa7905c0f2fa0f4e877b1278c3c..2ebe7cf7b8e838a94ebba4ca93b170e418cf76fb 100644 (file)
@@ -96,7 +96,11 @@ namespace MonoTests.System.Web.Services.Protocols
                                if (tcpListener != null) {
                                        tcpListener.Stop ();
                                        tcpListener = null;
+#if MONO_FEATURE_THREAD_ABORT
                                        listenThread.Abort ();
+#else
+                                       listenThread.Interrupt ();
+#endif
                                        listenThread.Join ();
                                        listenThread = null;
                                }
diff --git a/mcs/class/System.Web.WebPages.Deployment/System.Web.WebPages.Deployment-net_4_5.csproj b/mcs/class/System.Web.WebPages.Deployment/System.Web.WebPages.Deployment-net_4_5.csproj
deleted file mode 100644 (file)
index bf85858..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CFBE1EF0-4B98-4752-9F6A-4D61CF9DA0EF}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.WebPages.Deployment</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETWEBPAGES</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETWEBPAGES</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\ExceptionHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Deployment\AppDomainHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Deployment\AssemblyUtils.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Deployment\BuildManagerWrapper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Deployment\Common\IFileSystem.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Deployment\Common\PhysicalFileSystem.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Deployment\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Deployment\IBuildManager.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Deployment\PreApplicationStartCode.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Deployment\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Deployment\Resources\ConfigurationResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Deployment\WebPagesDeployment.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\TransparentCommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj">\r
-      <Project>{50DC9191-2D18-4EDB-A929-4ECAB7981A1C}</Project>\r
-      <Name>Microsoft.Web.Infrastructure-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="System.Web.WebPages.Deployment.Common.CommonResources.resources">\r
-      <LogicalName>System.Web.WebPages.Deployment.Common.CommonResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.WebPages.Deployment.Resources.ConfigurationResources.resources">\r
-      <LogicalName>System.Web.WebPages.Deployment.Resources.ConfigurationResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.WebPages.Razor/System.Web.WebPages.Razor-net_4_5.csproj b/mcs/class/System.Web.WebPages.Razor/System.Web.WebPages.Razor-net_4_5.csproj
deleted file mode 100644 (file)
index 2095663..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4E601800-644F-49B2-B1C9-60D3489AAC38}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.WebPages.Razor</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETWEBPAGES</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETWEBPAGES</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\AssemblyBuilderWrapper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\CompilingPathEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\Configuration\HostSection.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\Configuration\RazorPagesSection.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\Configuration\RazorWebSectionGroup.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\HostingEnvironmentWrapper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\IAssemblyBuilder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\IHostingEnvironment.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\PreApplicationStartCode.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\RazorBuildProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\Resources\RazorWebResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\WebCodeRazorHost.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\WebPageRazorHost.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages.Razor\WebRazorHostFactory.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\TransparentCommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.WebPages/System.Web.WebPages-net_4_5.csproj">\r
-      <Project>{FFDF7B0A-BD62-4E39-8A80-A42B560149C5}</Project>\r
-      <Name>System.Web.WebPages-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Razor/System.Web.Razor-net_4_5.csproj">\r
-      <Project>{FF61AB24-4492-47FA-B4D3-8D961113DD08}</Project>\r
-      <Name>System.Web.Razor-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="System.Web.WebPages.Razor.Resources.RazorWebResources.resources">\r
-      <LogicalName>System.Web.WebPages.Razor.Resources.RazorWebResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.WebPages.Razor.Common.CommonResources.resources">\r
-      <LogicalName>System.Web.WebPages.Razor.Common.CommonResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web.WebPages/System.Web.WebPages-net_4_5.csproj b/mcs/class/System.Web.WebPages/System.Web.WebPages-net_4_5.csproj
deleted file mode 100644 (file)
index 69af11e..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FFDF7B0A-BD62-4E39-8A80-A42B560149C5}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web.WebPages</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-    <PropertyGroup>\r
-    <SignAssembly>true</SignAssembly>\r
-    <DelaySign>true</DelaySign>\r
-  </PropertyGroup>\r
-  <PropertyGroup>\r
-    <AssemblyOriginatorKeyFile>../winfx.pub</AssemblyOriginatorKeyFile>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETWEBPAGES</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASPNETWEBPAGES</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\CommonResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\ExceptionHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\HashCodeCombiner.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\IVirtualPathUtility.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\MimeMapping.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\ApplicationPart.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\ApplicationParts\ApplicationPartRegistry.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\ApplicationParts\DictionaryBasedVirtualPathFactory.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\ApplicationParts\IResourceAssembly.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\ApplicationParts\LazyAction.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\ApplicationParts\ResourceAssembly.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\ApplicationParts\ResourceHandler.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\ApplicationParts\ResourceRouteHandler.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\ApplicationStartPage.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\AttributeValue.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\BrowserHelpers.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\BrowserOverride.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\BrowserOverrideStore.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\BrowserOverrideStores.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\BuildManagerWrapper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Common\DisposableAction.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\CookieBrowserOverrideStore.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\DefaultDisplayMode.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\DisplayInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\DisplayModeProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\DynamicHttpApplicationState.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\DynamicPageDataDictionary.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\FileExistenceCache.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\GlobalSuppressions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\HelperPage.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\HelperResult.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiForgery.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiForgeryConfig.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\AntiForgeryConfigWrapper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\AntiForgeryToken.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\AntiForgeryTokenSerializer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\AntiForgeryTokenStore.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\AntiForgeryWorker.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\BinaryBlob.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\ClaimUidExtractor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\IAntiForgeryConfig.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\IAntiForgeryTokenSerializer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\IClaimUidExtractor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\ICryptoSystem.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\ITokenStore.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\ITokenValidator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\MachineKeyCryptoSystem.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\AntiXsrf\TokenValidator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\Claims\Claim.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\Claims\ClaimsIdentity.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\Claims\ClaimsIdentityConverter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\CryptoUtil.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\IAntiForgeryAdditionalDataProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\UnvalidatedRequestValues.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Helpers\Validation.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Html\HtmlHelper.Checkbox.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Html\HtmlHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Html\HtmlHelper.Input.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Html\HtmlHelper.Internal.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Html\HtmlHelper.Label.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Html\HtmlHelper.Radio.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Html\HtmlHelper.Select.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Html\HtmlHelper.TextArea.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Html\HtmlHelper.Validation.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Html\ModelState.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Html\ModelStateDictionary.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Html\SelectListItem.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\HttpContextExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\IDisplayMode.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Instrumentation\HttpContextAdapter.Availability.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Instrumentation\HttpContextAdapter.generated.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Instrumentation\InstrumentationService.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Instrumentation\PageExecutionContextAdapter.generated.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Instrumentation\PageExecutionListenerAdapter.generated.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Instrumentation\PageInstrumentationServiceAdapter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Instrumentation\PositionTagged.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\ITemplateFile.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\IVirtualPathFactory.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\IWebPageRequestExecutor.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Mvc\HttpAntiForgeryException.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Mvc\ModelClientValidationEqualToRule.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Mvc\ModelClientValidationRangeRule.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Mvc\ModelClientValidationRegexRule.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Mvc\ModelClientValidationRemoteRule.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Mvc\ModelClientValidationRequiredRule.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Mvc\ModelClientValidationRule.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Mvc\ModelClientValidationStringLengthRule.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Mvc\TagBuilder.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Mvc\TagRenderMode.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Mvc\UnobtrusiveValidationAttributesGenerator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\PageDataDictionary.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\PageVirtualPathAttribute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\PreApplicationStartCode.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\ReflectionDynamicObject.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\RequestBrowserOverrideStore.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\RequestExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\RequestResourceTracker.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Resources\WebPageResources.Designer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\ResponseExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Scope\ApplicationScopeStorageDictionary.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Scope\AspNetRequestScopeStorageProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Scope\IScopeStorageProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Scope\ScopeStorage.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Scope\ScopeStorageComparer.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Scope\ScopeStorageDictionary.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Scope\StaticScopeStorageProvider.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Scope\WebConfigScopeStorageDictionary.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\SectionWriter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\SecurityUtil.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\StartPage.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\StringExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\TemplateFileInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\TemplateStack.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\UrlDataList.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Utils\BuildManagerExceptionUtil.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Utils\CultureUtil.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Utils\PathUtil.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Utils\SessionStateUtil.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Utils\TypeHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Utils\UrlUtil.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Validation\CompareValidator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Validation\DataTypeValidator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Validation\IValidator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Validation\RequestFieldValidatorBase.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Validation\ValidationAttributeAdapter.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Validation\ValidationHelper.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\Validation\Validator.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\VirtualPathFactoryExtensions.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\VirtualPathFactoryManager.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\WebPage.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\WebPageBase.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\WebPageContext.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\WebPageExecutingBase.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\WebPageHttpHandler.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\WebPageHttpModule.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\WebPageMatch.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\WebPageRenderingBase.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\System.Web.WebPages\WebPageRoute.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\TransparentCommonAssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\aspnetwebstack\src\VirtualPathUtilityWrapper.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj">\r
-      <Project>{D554618C-5D38-413A-82BA-7A70B6FC61A3}</Project>\r
-      <Name>Microsoft.CSharp-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj">\r
-      <Project>{50DC9191-2D18-4EDB-A929-4ECAB7981A1C}</Project>\r
-      <Name>Microsoft.Web.Infrastructure-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data.Linq/System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8AC5471F-9515-4D01-87B9-7974F2CBD6F1}</Project>\r
-      <Name>System.Data.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.WebPages.Deployment/System.Web.WebPages.Deployment-net_4_5.csproj">\r
-      <Project>{CFBE1EF0-4B98-4752-9F6A-4D61CF9DA0EF}</Project>\r
-      <Name>System.Web.WebPages.Deployment-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Razor/System.Web.Razor-net_4_5.csproj">\r
-      <Project>{FF61AB24-4492-47FA-B4D3-8D961113DD08}</Project>\r
-      <Name>System.Web.Razor-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="System.Web.WebPages.Resources.WebPageResources.resources">\r
-      <LogicalName>System.Web.WebPages.Resources.WebPageResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.WebPages.Common.CommonResources.resources">\r
-      <LogicalName>System.Web.WebPages.Common.CommonResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Web/System.Web-net_4_5.csproj b/mcs/class/System.Web/System.Web-net_4_5.csproj
deleted file mode 100644 (file)
index 67956ca..0000000
+++ /dev/null
@@ -1,1613 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,612,618,618</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,612,618,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;INSIDE_SYSTEM_WEB;WEBSERVICES_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,612,618,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;INSIDE_SYSTEM_WEB;WEBSERVICES_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\System.Design\System.Data.Design\TypedDataSetGenerator.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpApplicationStateBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpApplicationStateWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpBrowserCapabilitiesBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpBrowserCapabilitiesWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpCachePolicyBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpCachePolicyWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpContextBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpContextWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpFileCollectionBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpFileCollectionWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpPostedFileBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpPostedFileWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpRequestBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpRequestWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpResponseBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpResponseWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpServerUtilityBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpServerUtilityWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpSessionStateBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpSessionStateWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpStaticObjectsCollectionBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpStaticObjectsCollectionWrapper.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\HttpMethodConstraint.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\IRouteConstraint.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\IRouteHandler.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\PatternParser.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\PatternToken.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\PatternTokenType.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RequestContext.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\Route.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteBase.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteCollection.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteData.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteDirection.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteTable.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteValueDictionary.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteValueDictionaryExtensions.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\StopRoutingHandler.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\UrlRoutingHandler.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\UrlRoutingModule.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\VirtualPathData.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\AssemblyNamesTypeResolutionService.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ByteArrayFromResXHandler.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\FileRefHandler.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\InMemoryHandler.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\NullRefHandler.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXDataNode.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXDataNodeHandler.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXFileRef.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXNullRef.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXResourceReader.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXResourceSet.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXResourceWriter.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\SerializedFromResXHandler.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\TypeConverterFromResXHandler.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Web.Util\ISectionSettingsMapper.cs" />\r
-    <Compile Include="Mono.Web.Util\MembershipSectionMapper.cs" />\r
-    <Compile Include="Mono.Web.Util\RoleManagerSectionMapper.cs" />\r
-    <Compile Include="Mono.Web.Util\SettingsMapping.cs" />\r
-    <Compile Include="Mono.Web.Util\SettingsMappingManager.cs" />\r
-    <Compile Include="Mono.Web.Util\SettingsMappingWhat.cs" />\r
-    <Compile Include="System.Collections.Concurrent\SplitOrderedList.cs" />\r
-    <Compile Include="System.Web.Caching\AggregateCacheDependency.cs" />\r
-    <Compile Include="System.Web.Caching\Cache.cs" />\r
-    <Compile Include="System.Web.Caching\CacheDependency.cs" />\r
-    <Compile Include="System.Web.Caching\CachedRawResponse.cs" />\r
-    <Compile Include="System.Web.Caching\CachedVaryBy.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItem.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemEnumerator.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemLRU.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemPriority.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemPriorityQueue.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemPriorityQueueDebug.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemRemovedCallback.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemRemovedReason.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemUpdateCallback.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemUpdateReason.cs" />\r
-    <Compile Include="System.Web.Caching\DatabaseNotEnabledForNotificationException.cs" />\r
-    <Compile Include="System.Web.Caching\FileResponseElement.cs" />\r
-    <Compile Include="System.Web.Caching\HeaderElement.cs" />\r
-    <Compile Include="System.Web.Caching\InMemoryOutputCacheProvider.cs" />\r
-    <Compile Include="System.Web.Caching\IOutputCacheEntry.cs" />\r
-    <Compile Include="System.Web.Caching\MemoryResponseElement.cs" />\r
-    <Compile Include="System.Web.Caching\OutputCache.cs" />\r
-    <Compile Include="System.Web.Caching\OutputCacheModule.cs" />\r
-    <Compile Include="System.Web.Caching\OutputCacheProvider.cs" />\r
-    <Compile Include="System.Web.Caching\OutputCacheProviderCollection.cs" />\r
-    <Compile Include="System.Web.Caching\ResponseElement.cs" />\r
-    <Compile Include="System.Web.Caching\SqlCacheDependency.cs" />\r
-    <Compile Include="System.Web.Caching\SqlCacheDependencyAdmin.cs" />\r
-    <Compile Include="System.Web.Caching\SubstitutionResponseElement.cs" />\r
-    <Compile Include="System.Web.Caching\TableNotEnabledForNotificationException.cs" />\r
-    <Compile Include="System.Web.Compilation\AppCodeCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\ApplicationFileBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\AppResourceFileInfo.cs" />\r
-    <Compile Include="System.Web.Compilation\AppResourceFilesCollection.cs" />\r
-    <Compile Include="System.Web.Compilation\AppResourcesAssemblyBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\AppResourcesCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\AppSettingsExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\AppWebReferencesCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\AspComponent.cs" />\r
-    <Compile Include="System.Web.Compilation\AspComponentFoundry.cs" />\r
-    <Compile Include="System.Web.Compilation\AspGenerator.cs" />\r
-    <Compile Include="System.Web.Compilation\AspParser.cs" />\r
-    <Compile Include="System.Web.Compilation\AspTokenizer.cs" />\r
-    <Compile Include="System.Web.Compilation\AssemblyBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\BaseCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildDependencySet.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManager.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManagerCacheItem.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManagerDirectoryBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManagerHost.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManagerHostUnloadEventArgs.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManagerHostUnloadEventHandler.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManagerRemoveEntryEventHandler.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProviderAppliesTo.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProviderAppliesToAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProviderGroup.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProviderResultFlags.cs" />\r
-    <Compile Include="System.Web.Compilation\CachingCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\ClientBuildManager.cs" />\r
-    <Compile Include="System.Web.Compilation\ClientBuildManagerCallback.cs" />\r
-    <Compile Include="System.Web.Compilation\ClientBuildManagerParameter.cs" />\r
-    <Compile Include="System.Web.Compilation\CompilationException.cs" />\r
-    <Compile Include="System.Web.Compilation\CompilerType.cs" />\r
-    <Compile Include="System.Web.Compilation\ConnectionStringsExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\DefaultResourceProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\DefaultResourceProviderFactory.cs" />\r
-    <Compile Include="System.Web.Compilation\DesignTimeResourceProviderFactoryAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\Directive.cs" />\r
-    <Compile Include="System.Web.Compilation\ExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\ExpressionBuilderContext.cs" />\r
-    <Compile Include="System.Web.Compilation\ExpressionEditorAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\ExpressionPrefixAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\FolderLevelBuildProviderAppliesTo.cs" />\r
-    <Compile Include="System.Web.Compilation\FolderLevelBuildProviderAppliesToAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\ForceCopyBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\GenericBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\GlobalAsaxCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\IAssemblyPostProcessor.cs" />\r
-    <Compile Include="System.Web.Compilation\IgnoreFileBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\IImplicitResourceProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\ILocation.cs" />\r
-    <Compile Include="System.Web.Compilation\ImplicitResourceKey.cs" />\r
-    <Compile Include="System.Web.Compilation\IResourceProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\LinePragmaCodeInfo.cs" />\r
-    <Compile Include="System.Web.Compilation\Location.cs" />\r
-    <Compile Include="System.Web.Compilation\MasterPageBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\MasterPageCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\PageBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\PageCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\PageThemeCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\ParseException.cs" />\r
-    <Compile Include="System.Web.Compilation\PrecompilationFlags.cs" />\r
-    <Compile Include="System.Web.Compilation\PreservationFile.cs" />\r
-    <Compile Include="System.Web.Compilation\ResourceExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\ResourceExpressionFields.cs" />\r
-    <Compile Include="System.Web.Compilation\ResourceProviderFactory.cs" />\r
-    <Compile Include="System.Web.Compilation\RouteUrlExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\RouteValueExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\SimpleBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\TagAttributes.cs" />\r
-    <Compile Include="System.Web.Compilation\TagType.cs" />\r
-    <Compile Include="System.Web.Compilation\TemplateBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\TemplateControlCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\ThemeDirectoryBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\ThemeDirectoryCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\UserControlBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\UserControlCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\WebHandlerBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\WebServiceBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\WebServiceCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\WsdlBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\XsdBuildProvider.cs" />\r
-    <Compile Include="System.Web.Configuration.Internal\IInternalConfigWebHost.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AdapterDictionary.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AnonymousIdentificationSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ApplicationSettingsConfigurationFileMap.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AssemblyCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AssemblyInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthenticationMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthenticationSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthorizationRule.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthorizationRuleAction.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthorizationRuleCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthorizationSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\BufferModesCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\BufferModeSettings.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\BuildProvider.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\BuildProviderCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CacheSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CapabilitiesBuild.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CapabilitiesResult.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ClientTarget.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ClientTargetCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ClientTargetSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CodeSubDirectoriesCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CodeSubDirectory.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CompilationSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\Compiler.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CompilerCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomError.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomErrorCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomErrorsMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomErrorsRedirectMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomErrorsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\DeploymentSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\EventMappingSettings.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\EventMappingSettingsCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ExpressionBuilderCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationConfiguration.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationCredentials.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationUser.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationUserCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsAuthPasswordFormat.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsProtectionEnum.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\GlobalizationSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HandlersUtil.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HealthMonitoringSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HostingEnvironmentSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpCapabilitiesBase.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpCapabilitiesDefaultProvider.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpCapabilitiesProvider.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpConfigurationContext.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpConfigurationSystem.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpCookiesSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpHandlerAction.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpHandlerActionCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpHandlersSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpModuleAction.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpModuleActionCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpModulesSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpRuntimeSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ICapabilitiesProcess.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IConfigMapPath.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IConfigMapPathFactory.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeyCompatibilityMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeyValidation.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeyValidationConverter.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MembershipSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MonoSettingsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\NamespaceCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\NamespaceInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\Build.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\Exception.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\File.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\Identification.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\Node.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\NodeTypes.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\Result.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\NullableStringValidator.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\OutputCacheProfile.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\OutputCacheProfileCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\OutputCacheSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\OutputCacheSettingsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\PagesEnableSessionState.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\PagesSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\PassportAuthentication.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\PositiveTimeSpanValidator.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelComAuthenticationLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelComImpersonationLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelLogLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfileGroupSettings.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfileGroupSettingsCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfilePropertyNameValidator.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfilePropertySettings.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfilePropertySettingsCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfileSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfileSettings.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfileSettingsCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\PropertyHelper.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProvidersHelper.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\RegexWorker.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\RoleManagerSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\RootProfilePropertySettingsCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\RuleSettings.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\RuleSettingsCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SecurityPolicySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SerializationMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SessionPageStateSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SessionStateSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SiteMapSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SqlCacheDependencyDatabase.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SqlCacheDependencyDatabaseCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SqlCacheDependencySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SystemWebCachingSectionGroup.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SystemWebSectionGroup.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TagMapCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TagMapInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TagPrefixCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TagPrefixInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TraceDisplayMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TraceSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TransformerInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TransformerInfoCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TrustLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TrustLevelCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TrustSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\UrlMapping.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\UrlMappingCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\UrlMappingsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\VersionConverter.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\VirtualDirectoryMapping.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\VirtualDirectoryMappingCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebApplicationLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebConfigurationFileMap.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebConfigurationHost.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebConfigurationManager.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebContext.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebControlsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebPartsPersonalization.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebPartsPersonalizationAuthorization.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebPartsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\XhtmlConformanceMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\XhtmlConformanceSection.cs" />\r
-    <Compile Include="System.Web.Handlers\AssemblyResourceLoader.cs" />\r
-    <Compile Include="System.Web.Handlers\TraceHandler.cs" />\r
-    <Compile Include="System.Web.Hosting\AppDomainFactory.cs" />\r
-    <Compile Include="System.Web.Hosting\ApplicationHost.cs" />\r
-    <Compile Include="System.Web.Hosting\ApplicationInfo.cs" />\r
-    <Compile Include="System.Web.Hosting\ApplicationManager.cs" />\r
-    <Compile Include="System.Web.Hosting\AppManagerAppDomainFactory.cs" />\r
-    <Compile Include="System.Web.Hosting\BareApplicationHost.cs" />\r
-    <Compile Include="System.Web.Hosting\DefaultVirtualDirectory.cs" />\r
-    <Compile Include="System.Web.Hosting\DefaultVirtualFile.cs" />\r
-    <Compile Include="System.Web.Hosting\DefaultVirtualPathProvider.cs" />\r
-    <Compile Include="System.Web.Hosting\HostingEnvironment.cs" />\r
-    <Compile Include="System.Web.Hosting\IAppDomainFactory.cs" />\r
-    <Compile Include="System.Web.Hosting\IApplicationHost.cs" />\r
-    <Compile Include="System.Web.Hosting\IAppManagerAppDomainFactory.cs" />\r
-    <Compile Include="System.Web.Hosting\IISAPIRuntime.cs" />\r
-    <Compile Include="System.Web.Hosting\IRegisteredObject.cs" />\r
-    <Compile Include="System.Web.Hosting\ISAPIRuntime.cs" />\r
-    <Compile Include="System.Web.Hosting\SimpleWorkerRequest.cs" />\r
-    <Compile Include="System.Web.Hosting\VirtualDirectory.cs" />\r
-    <Compile Include="System.Web.Hosting\VirtualFile.cs" />\r
-    <Compile Include="System.Web.Hosting\VirtualFileBase.cs" />\r
-    <Compile Include="System.Web.Hosting\VirtualPathProvider.cs" />\r
-    <Compile Include="System.Web.Mail\Base64AttachmentEncoder.cs" />\r
-    <Compile Include="System.Web.Mail\IAttachmentEncoder.cs" />\r
-    <Compile Include="System.Web.Mail\MailAddress.cs" />\r
-    <Compile Include="System.Web.Mail\MailAddressCollection.cs" />\r
-    <Compile Include="System.Web.Mail\MailAttachment.cs" />\r
-    <Compile Include="System.Web.Mail\MailEncoding.cs" />\r
-    <Compile Include="System.Web.Mail\MailFormat.cs" />\r
-    <Compile Include="System.Web.Mail\MailHeader.cs" />\r
-    <Compile Include="System.Web.Mail\MailMessage.cs" />\r
-    <Compile Include="System.Web.Mail\MailMessageWrapper.cs" />\r
-    <Compile Include="System.Web.Mail\MailPriority.cs" />\r
-    <Compile Include="System.Web.Mail\MailUtil.cs" />\r
-    <Compile Include="System.Web.Mail\RelatedBodyPart.cs" />\r
-    <Compile Include="System.Web.Mail\SmtpClient.cs" />\r
-    <Compile Include="System.Web.Mail\SmtpException.cs" />\r
-    <Compile Include="System.Web.Mail\SmtpMail.cs" />\r
-    <Compile Include="System.Web.Mail\SmtpResponse.cs" />\r
-    <Compile Include="System.Web.Mail\SmtpStream.cs" />\r
-    <Compile Include="System.Web.Mail\ToUUEncodingTransform.cs" />\r
-    <Compile Include="System.Web.Mail\UUAttachmentEncoder.cs" />\r
-    <Compile Include="System.Web.Management\EventNotificationType.cs" />\r
-    <Compile Include="System.Web.Management\IRegiisUtility.cs" />\r
-    <Compile Include="System.Web.Management\IWebEventCustomEvaluator.cs" />\r
-    <Compile Include="System.Web.Management\RuleFiringRecord.cs" />\r
-    <Compile Include="System.Web.Management\SessionStateType.cs" />\r
-    <Compile Include="System.Web.Management\SqlFeatures.cs" />\r
-    <Compile Include="System.Web.Management\WebApplicationInformation.cs" />\r
-    <Compile Include="System.Web.Management\WebBaseEvent.cs" />\r
-    <Compile Include="System.Web.Management\WebEventCodes.cs" />\r
-    <Compile Include="System.Web.Management\WebEventFormatter.cs" />\r
-    <Compile Include="System.Web.Profile\CustomProviderDataAttribute.cs" />\r
-    <Compile Include="System.Web.Profile\DefaultProfile.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileAuthenticationOption.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileAutoSaveEventArgs.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileAutoSaveEventHandler.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileBase.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileEventArgs.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileEventHandler.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileGroupBase.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileInfo.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileInfoCollection.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileManager.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileMigrateEventArgs.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileMigrateEventHandler.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileModule.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileParser.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileProvider.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileProviderAttribute.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileProviderCollection.cs" />\r
-    <Compile Include="System.Web.Profile\SettingsAllowAnonymousAttribute.cs" />\r
-    <Compile Include="System.Web.Profile\SqliteProfileProvider.cs" />\r
-    <Compile Include="System.Web.Profile\SqlProfileProvider.cs" />\r
-    <Compile Include="System.Web.Properties\TranslationProperties.Designer.cs" />\r
-    <Compile Include="System.Web.Routing\PageRouteHandler.cs" />\r
-    <Compile Include="System.Web.Security\ActiveDirectoryConnectionProtection.cs" />\r
-    <Compile Include="System.Web.Security\ActiveDirectoryMembershipProvider.cs" />\r
-    <Compile Include="System.Web.Security\AnonymousIdentificationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\AnonymousIdentificationEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\AnonymousIdentificationModule.cs" />\r
-    <Compile Include="System.Web.Security\AspNetDBSchemaChecker.cs" />\r
-    <Compile Include="System.Web.Security\CookieProtection.cs" />\r
-    <Compile Include="System.Web.Security\DefaultAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\DefaultAuthenticationEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\DefaultAuthenticationModule.cs" />\r
-    <Compile Include="System.Web.Security\FileAuthorizationModule.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthentication.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthenticationEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthenticationModule.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthenticationTicket.cs" />\r
-    <Compile Include="System.Web.Security\FormsIdentity.cs" />\r
-    <Compile Include="System.Web.Security\MachineKey.cs" />\r
-    <Compile Include="System.Web.Security\MachineKeyProtection.cs" />\r
-    <Compile Include="System.Web.Security\Membership.cs" />\r
-    <Compile Include="System.Web.Security\MembershipHelper.cs" />\r
-    <Compile Include="System.Web.Security\MembershipPasswordAttribute.cs" />\r
-    <Compile Include="System.Web.Security\PassportAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\PassportAuthenticationEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\PassportAuthenticationModule.cs" />\r
-    <Compile Include="System.Web.Security\PassportIdentity.cs" />\r
-    <Compile Include="System.Web.Security\RoleManagerEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\RoleManagerEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\RoleManagerModule.cs" />\r
-    <Compile Include="System.Web.Security\RolePrincipal.cs" />\r
-    <Compile Include="System.Web.Security\RoleProviderCollection.cs" />\r
-    <Compile Include="System.Web.Security\Roles.cs" />\r
-    <Compile Include="System.Web.Security\SqliteMembershipProvider.cs" />\r
-    <Compile Include="System.Web.Security\SqliteRoleProvider.cs" />\r
-    <Compile Include="System.Web.Security\SqlMembershipProvider.cs" />\r
-    <Compile Include="System.Web.Security\SqlRoleProvider.cs" />\r
-    <Compile Include="System.Web.Security\UrlAuthorizationModule.cs" />\r
-    <Compile Include="System.Web.Security\WindowsAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\WindowsAuthenticationEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\WindowsAuthenticationModule.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\HttpSessionState.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\HttpSessionStateContainer.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\IHttpSessionState.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\IReadOnlySessionState.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\IRequiresSessionState.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\ISessionIDManager.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\ISessionStateItemCollection.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\IStateRuntime.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\RemoteStateServer.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionId.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionIDManager.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionInProcHandler.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionSQLServerHandler.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateActions.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateBehavior.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateItemCollection.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateItemExpireCallback.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateMode.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateModule.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateServerHandler.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateStoreData.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateStoreProviderBase.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateUtility.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\StateRuntime.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\StateServerItem.cs" />\r
-    <Compile Include="System.Web.UI.Adapters\ControlAdapter.cs" />\r
-    <Compile Include="System.Web.UI.Adapters\PageAdapter.cs" />\r
-    <Compile Include="System.Web.UI.Adapters\WmlPostFieldType.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlAnchor.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlButton.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlContainerControl.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlControl.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlEmptyTagControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlForm.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlGenericControl.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlHead.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlHeadBuilder.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlImage.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputButton.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputCheckBox.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputControl.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputFile.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputHidden.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputImage.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputPassword.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputRadioButton.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputReset.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputSubmit.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputText.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlLink.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlMeta.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlSelect.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlSelectBuilder.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTable.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTableCell.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTableCellCollection.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTableRow.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTableRowCollection.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTextArea.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTitle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.Adapters\DataBoundControlAdapter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.Adapters\HideDisabledControlAdapter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.Adapters\HierarchicalDataBoundControlAdapter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.Adapters\MenuAdapter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.Adapters\WebControlAdapter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ConnectionConsumerCallback.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ConnectionInterfaceCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ConnectionPoint.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ConnectionPointType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ConnectionProviderCallback.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ConsumerConnectionPoint.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\EditorPart.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\EditorPartCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IPersonalizable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ITrackingPersonalizable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ITransformerConfigurationControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IVersioningPersonalizable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebActionable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebEditable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPart.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartHttpHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartParameters.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartTable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\Part.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PartChromeState.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PartChromeType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PersonalizableAttribute.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PersonalizationScope.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ProviderConnectionPoint.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\TypeCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPart.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartAuthorizationEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartAuthorizationEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartCancelEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartCancelEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartExportMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartHelpMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartPageMenuMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerb.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerbCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerbsEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerbsEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AccessDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AccessDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AdCreatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AdCreatedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AdRotator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AssociatedControlConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AuthenticateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AuthenticateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AutoCompleteType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AutoGeneratedField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AutoGeneratedFieldProperties.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BaseCompareValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BaseDataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BaseDataList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BaseMenuRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BaseValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BorderStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BoundColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BoundField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletedList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletedListDisplayMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletedListEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletedListEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Button.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonColumnType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonFieldBase.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Calendar.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CalendarDay.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CalendarSelectionMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ChangePassword.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CheckBox.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CheckBoxField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CheckBoxList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ChildTable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CircleHotSpot.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CollectionDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CommandField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CompareValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CompleteWizardStep.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CompositeControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CompositeDataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ContainedTable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Content.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ContentControlBuilderInternal.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ContentDirection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ContentPlaceHolder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ContentPlaceHolderBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ControlIDConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ControlParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ControlPropertyNameConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CookieParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CreateUserErrorEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CreateUserErrorEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CreateUserWizard.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CreateUserWizardStep.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CustomValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataBoundControlMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlButton.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlCellType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlCommands.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlFieldCell.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlFieldCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlFieldHeaderCell.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlRowState.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlRowType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGrid.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridColumnCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridItemEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridPageChangedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridPageChangedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridPagerStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridSortCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridSortCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataKey.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataKeyArray.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataKeyCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListItemEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataSourceCacheManager.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DayNameFormat.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DayRenderEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DayRenderEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewDeletedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewDeletedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewDeleteEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewDeleteEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewInsertedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewInsertedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewInsertEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewInsertEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewModeEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewModeEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewPageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewPageEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewPagerRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewRowCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewUpdatedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewUpdateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewUpdateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DropDownList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\EditCommandColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\EmbeddedMailObject.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\EmbeddedMailObjectsCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FileUpload.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FirstDayOfWeek.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FontInfo.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FontNamesConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FontSize.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FontUnit.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FontUnitConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewDeletedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewDeletedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewDeleteEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewDeleteEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewInsertedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewInsertedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewInsertEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewInsertEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewModeEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewModeEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewPageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewPageEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewPagerRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewUpdatedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewUpdateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewUpdateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridLines.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCancelEditEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCancelEditEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewDeletedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewDeletedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewDeleteEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewDeleteEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewEditEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewEditEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewPageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewPageEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewRowCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewRowEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewRowEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSelectEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSelectEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSortEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSortEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewUpdatedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewUpdateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewUpdateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HiddenField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HierarchicalDataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HorizontalAlign.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HorizontalAlignConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HotSpot.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HotSpotCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HotSpotMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HyperLink.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HyperLinkColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HyperLinkControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HyperLinkField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IButtonControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ICallbackContainer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ICompositeControlDesignerAccessor.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IDataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IDataBoundItemControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IDataBoundListControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IFieldControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Image.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageAlign.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageButton.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageMap.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageMapEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageMapEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IMenuRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IPersistedSelector.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IPostBackContainer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IRenderOuterTable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IRepeatInfoUser.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Label.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LabelControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LinkButton.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LinkButtonControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListBox.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListItemControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListItemType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListSelectionMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Literal.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LiteralControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LiteralMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Localize.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Login.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginCancelEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginCancelEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginFailureAction.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginName.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginStatus.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginTextLayout.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LogoutAction.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MailDefinition.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MailMessageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MailMessageEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Menu.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItemBinding.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItemBindingCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItemStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItemStyleCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItemTemplateContainer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuListRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuRenderingMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuTableRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MonthChangedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MonthChangedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MultiView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MultiViewControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\NamedCssStyleCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\NextPrevFormat.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceDisposingEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceDisposingEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceFilteringEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceFilteringEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceMethodEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceMethodEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceSelectingEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceSelectingEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceStatusEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceStatusEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Orientation.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagedDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerButtons.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerPosition.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerSettings.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Panel.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PanelStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Parameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ParameterCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PasswordRecovery.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PathDirection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PlaceHolder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PlaceHolderControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PolygonHotSpot.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ProfileParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\QueryStringParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RadioButton.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RadioButtonList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RangeValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RectangleHotSpot.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RegularExpressionValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeatDirection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Repeater.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterItemEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeatInfo.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeatLayout.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RequiredFieldValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RoleGroup.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RoleGroupCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RouteParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ScrollBars.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SelectedDatesCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SendMailErrorEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SendMailErrorEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ServerValidateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ServerValidateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SessionParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapHierarchicalDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItemEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItemType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapPath.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapViewType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SortDirection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceCommandType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceFilteringEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceFilteringEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceSelectingEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceSelectingEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceStatusEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceStatusEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\StringArrayConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Style.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\StyleBlock.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\StyleCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SubMenuStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SubMenuStyleCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Substitution.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Table.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableCaptionAlign.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableCell.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableCellCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableCellControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableFooterRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableHeaderCell.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableHeaderRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableHeaderScope.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableItemStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableRowCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableRowSection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableSectionStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TargetConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TemplateColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TemplatedWizardStep.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TemplateField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TextAlign.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TextBox.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TextBoxControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TextBoxMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TitleFormat.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeBinding.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeBindingCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeSelectAction.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeStyleCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeTypes.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeViewImageSet.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Unit.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\UnitConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\UnitType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidatedControlConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationCompareOperator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationDataType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationSummary.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationSummaryDisplayMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidatorDisplay.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\VerticalAlign.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\VerticalAlignConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\View.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ViewCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WebColorConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WebControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Wizard.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardLayoutContainer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardLayoutNavigationContainer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardNavigationEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardNavigationEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardStep.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardStepBase.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardStepCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardStepControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardStepType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Xml.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlDataSourceNodeDescriptor.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlDataSourcePropertyDescriptor.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlHierarchicalDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlHierarchicalEnumerable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlHierarchyData.cs" />\r
-    <Compile Include="System.Web.UI\ApplicationFileParser.cs" />\r
-    <Compile Include="System.Web.UI\AttributeCollection.cs" />\r
-    <Compile Include="System.Web.UI\BaseParser.cs" />\r
-    <Compile Include="System.Web.UI\BasePartialCachingControl.cs" />\r
-    <Compile Include="System.Web.UI\BaseTemplateParser.cs" />\r
-    <Compile Include="System.Web.UI\BoundPropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\BuilderPropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\BuildMethod.cs" />\r
-    <Compile Include="System.Web.UI\BuildTemplateMethod.cs" />\r
-    <Compile Include="System.Web.UI\ChtmlTextWriter.cs" />\r
-    <Compile Include="System.Web.UI\ClientIDMode.cs" />\r
-    <Compile Include="System.Web.UI\ClientScriptManager.cs" />\r
-    <Compile Include="System.Web.UI\CodeBuilder.cs" />\r
-    <Compile Include="System.Web.UI\CodeConstructType.cs" />\r
-    <Compile Include="System.Web.UI\CodeRenderBuilder.cs" />\r
-    <Compile Include="System.Web.UI\CollectionBuilder.cs" />\r
-    <Compile Include="System.Web.UI\CompilationMode.cs" />\r
-    <Compile Include="System.Web.UI\CompiledBindableTemplateBuilder.cs" />\r
-    <Compile Include="System.Web.UI\CompiledTemplateBuilder.cs" />\r
-    <Compile Include="System.Web.UI\ComplexPropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\ConflictOptions.cs" />\r
-    <Compile Include="System.Web.UI\ConstructorNeedsTagAttribute.cs" />\r
-    <Compile Include="System.Web.UI\Control.cs" />\r
-    <Compile Include="System.Web.UI\ControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\ControlBuilderAttribute.cs" />\r
-    <Compile Include="System.Web.UI\ControlCachePolicy.cs" />\r
-    <Compile Include="System.Web.UI\ControlCollection.cs" />\r
-    <Compile Include="System.Web.UI\ControlSkin.cs" />\r
-    <Compile Include="System.Web.UI\ControlSkinDelegate.cs" />\r
-    <Compile Include="System.Web.UI\ControlValuePropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\CssClassPropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\CssStyleCollection.cs" />\r
-    <Compile Include="System.Web.UI\DataBinder.cs" />\r
-    <Compile Include="System.Web.UI\DataBinding.cs" />\r
-    <Compile Include="System.Web.UI\DataBindingBuilder.cs" />\r
-    <Compile Include="System.Web.UI\DataBindingCollection.cs" />\r
-    <Compile Include="System.Web.UI\DataBindingHandlerAttribute.cs" />\r
-    <Compile Include="System.Web.UI\DataBoundLiteralControl.cs" />\r
-    <Compile Include="System.Web.UI\DataKeyPropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceCacheDurationConverter.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceCacheExpiry.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceCapabilities.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceControl.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceOperation.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceSelectArguments.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceView.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceViewOperationCallback.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceViewSelectCallback.cs" />\r
-    <Compile Include="System.Web.UI\DesignerDataBoundLiteralControl.cs" />\r
-    <Compile Include="System.Web.UI\DesignTimeParseData.cs" />\r
-    <Compile Include="System.Web.UI\DesignTimeTemplateParser.cs" />\r
-    <Compile Include="System.Web.UI\EmptyControlCollection.cs" />\r
-    <Compile Include="System.Web.UI\EventEntry.cs" />\r
-    <Compile Include="System.Web.UI\ExpressionBinding.cs" />\r
-    <Compile Include="System.Web.UI\ExpressionBindingCollection.cs" />\r
-    <Compile Include="System.Web.UI\ExtractTemplateValuesMethod.cs" />\r
-    <Compile Include="System.Web.UI\FileLevelControlBuilderAttribute.cs" />\r
-    <Compile Include="System.Web.UI\FileLevelMasterPageControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\FileLevelPageControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\FileLevelUserControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\FilterableAttribute.cs" />\r
-    <Compile Include="System.Web.UI\HiddenFieldPageStatePersister.cs" />\r
-    <Compile Include="System.Web.UI\HierarchicalDataSourceControl.cs" />\r
-    <Compile Include="System.Web.UI\HierarchicalDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI\Html32TextWriter.cs" />\r
-    <Compile Include="System.Web.UI\HtmlControlPersistableAttribute.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriter.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriterAttribute.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriterStyle.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriterTag.cs" />\r
-    <Compile Include="System.Web.UI\IAttributeAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IAutoFieldGenerator.cs" />\r
-    <Compile Include="System.Web.UI\IBindableControl.cs" />\r
-    <Compile Include="System.Web.UI\IBindableTemplate.cs" />\r
-    <Compile Include="System.Web.UI\ICallbackEventHandler.cs" />\r
-    <Compile Include="System.Web.UI\ICheckBoxControl.cs" />\r
-    <Compile Include="System.Web.UI\IControlBuilderAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IControlDesignerAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IDataBindingsAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IDataItemContainer.cs" />\r
-    <Compile Include="System.Web.UI\IDataKeysControl.cs" />\r
-    <Compile Include="System.Web.UI\IDataSource.cs" />\r
-    <Compile Include="System.Web.UI\IDataSourceViewSchemaAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IDReferencePropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\IEditableTextControl.cs" />\r
-    <Compile Include="System.Web.UI\IExpressionsAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IFilterResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IgnoreUnknownContentAttribute.cs" />\r
-    <Compile Include="System.Web.UI\IHierarchicalDataSource.cs" />\r
-    <Compile Include="System.Web.UI\IHierarchicalEnumerable.cs" />\r
-    <Compile Include="System.Web.UI\IHierarchyData.cs" />\r
-    <Compile Include="System.Web.UI\ImageClickEventArgs.cs" />\r
-    <Compile Include="System.Web.UI\ImageClickEventHandler.cs" />\r
-    <Compile Include="System.Web.UI\INamingContainer.cs" />\r
-    <Compile Include="System.Web.UI\INavigateUIData.cs" />\r
-    <Compile Include="System.Web.UI\IndexedString.cs" />\r
-    <Compile Include="System.Web.UI\INonBindingContainer.cs" />\r
-    <Compile Include="System.Web.UI\IParserAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IPostBackDataHandler.cs" />\r
-    <Compile Include="System.Web.UI\IPostBackEventHandler.cs" />\r
-    <Compile Include="System.Web.UI\IResourceUrlGenerator.cs" />\r
-    <Compile Include="System.Web.UI\IScriptManager.cs" />\r
-    <Compile Include="System.Web.UI\IStateFormatter.cs" />\r
-    <Compile Include="System.Web.UI\IStateManager.cs" />\r
-    <Compile Include="System.Web.UI\IStyleSheet.cs" />\r
-    <Compile Include="System.Web.UI\ITagNameToTypeMapper.cs" />\r
-    <Compile Include="System.Web.UI\ITemplate.cs" />\r
-    <Compile Include="System.Web.UI\ITextControl.cs" />\r
-    <Compile Include="System.Web.UI\IThemeResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IUrlResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IUserControlDesignerAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IUserControlTypeResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IValidator.cs" />\r
-    <Compile Include="System.Web.UI\ListSourceHelper.cs" />\r
-    <Compile Include="System.Web.UI\LiteralControl.cs" />\r
-    <Compile Include="System.Web.UI\LosFormatter.cs" />\r
-    <Compile Include="System.Web.UI\MainDirectiveAttribute.cs" />\r
-    <Compile Include="System.Web.UI\MasterPage.cs" />\r
-    <Compile Include="System.Web.UI\MasterPageControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\MasterPageParser.cs" />\r
-    <Compile Include="System.Web.UI\MinimizableAttributeTypeConverter.cs" />\r
-    <Compile Include="System.Web.UI\NonVisualControlAttribute.cs" />\r
-    <Compile Include="System.Web.UI\ObjectConverter.cs" />\r
-    <Compile Include="System.Web.UI\ObjectPersistData.cs" />\r
-    <Compile Include="System.Web.UI\ObjectStateFormatter.cs" />\r
-    <Compile Include="System.Web.UI\ObjectTag.cs" />\r
-    <Compile Include="System.Web.UI\ObjectTagBuilder.cs" />\r
-    <Compile Include="System.Web.UI\OutputCacheLocation.cs" />\r
-    <Compile Include="System.Web.UI\OutputCacheParameters.cs" />\r
-    <Compile Include="System.Web.UI\Page.cs" />\r
-    <Compile Include="System.Web.UI\PageAsyncTask.cs" />\r
-    <Compile Include="System.Web.UI\PageHandlerFactory.cs" />\r
-    <Compile Include="System.Web.UI\PageLifeCycle.cs" />\r
-    <Compile Include="System.Web.UI\PageParser.cs" />\r
-    <Compile Include="System.Web.UI\PageParserFilter.cs" />\r
-    <Compile Include="System.Web.UI\PageStatePersister.cs" />\r
-    <Compile Include="System.Web.UI\PageTheme.cs" />\r
-    <Compile Include="System.Web.UI\PageThemeBuilder.cs" />\r
-    <Compile Include="System.Web.UI\PageThemeFileParser.cs" />\r
-    <Compile Include="System.Web.UI\PageThemeParser.cs" />\r
-    <Compile Include="System.Web.UI\Pair.cs" />\r
-    <Compile Include="System.Web.UI\ParseChildrenAttribute.cs" />\r
-    <Compile Include="System.Web.UI\PartialCachingAttribute.cs" />\r
-    <Compile Include="System.Web.UI\PartialCachingControl.cs" />\r
-    <Compile Include="System.Web.UI\PersistChildrenAttribute.cs" />\r
-    <Compile Include="System.Web.UI\PersistenceMode.cs" />\r
-    <Compile Include="System.Web.UI\PersistenceModeAttribute.cs" />\r
-    <Compile Include="System.Web.UI\PostBackOptions.cs" />\r
-    <Compile Include="System.Web.UI\PropertyConverter.cs" />\r
-    <Compile Include="System.Web.UI\PropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\ReadOnlyDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI\RenderMethod.cs" />\r
-    <Compile Include="System.Web.UI\ResourceBasedLiteralControl.cs" />\r
-    <Compile Include="System.Web.UI\RootBuilder.cs" />\r
-    <Compile Include="System.Web.UI\SessionPageStatePersister.cs" />\r
-    <Compile Include="System.Web.UI\SimpleHandlerFactory.cs" />\r
-    <Compile Include="System.Web.UI\SimplePropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\SimpleWebHandlerParser.cs" />\r
-    <Compile Include="System.Web.UI\SkinBuilder.cs" />\r
-    <Compile Include="System.Web.UI\StateBag.cs" />\r
-    <Compile Include="System.Web.UI\StateItem.cs" />\r
-    <Compile Include="System.Web.UI\StateManagedCollection.cs" />\r
-    <Compile Include="System.Web.UI\StaticPartialCachingControl.cs" />\r
-    <Compile Include="System.Web.UI\StringPropertyBuilder.cs" />\r
-    <Compile Include="System.Web.UI\SupportsEventValidationAttribute.cs" />\r
-    <Compile Include="System.Web.UI\TagPrefixAttribute.cs" />\r
-    <Compile Include="System.Web.UI\TemplateBuilder.cs" />\r
-    <Compile Include="System.Web.UI\TemplateContainerAttribute.cs" />\r
-    <Compile Include="System.Web.UI\TemplateContentType.cs" />\r
-    <Compile Include="System.Web.UI\TemplateControl.cs" />\r
-    <Compile Include="System.Web.UI\TemplateControlParser.cs" />\r
-    <Compile Include="System.Web.UI\TemplateInstance.cs" />\r
-    <Compile Include="System.Web.UI\TemplateInstanceAttribute.cs" />\r
-    <Compile Include="System.Web.UI\TemplateParser.cs" />\r
-    <Compile Include="System.Web.UI\TemplatePropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\ThemeableAttribute.cs" />\r
-    <Compile Include="System.Web.UI\ThemeProvider.cs" />\r
-    <Compile Include="System.Web.UI\ToolboxDataAttribute.cs" />\r
-    <Compile Include="System.Web.UI\Triplet.cs" />\r
-    <Compile Include="System.Web.UI\UnknownAttributeDescriptor.cs" />\r
-    <Compile Include="System.Web.UI\UrlPropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\UrlTypes.cs" />\r
-    <Compile Include="System.Web.UI\UserControl.cs" />\r
-    <Compile Include="System.Web.UI\UserControlControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\UserControlParser.cs" />\r
-    <Compile Include="System.Web.UI\ValidationPropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\ValidatorCollection.cs" />\r
-    <Compile Include="System.Web.UI\VerificationAttribute.cs" />\r
-    <Compile Include="System.Web.UI\VerificationConditionalOperator.cs" />\r
-    <Compile Include="System.Web.UI\VerificationReportLevel.cs" />\r
-    <Compile Include="System.Web.UI\VerificationRule.cs" />\r
-    <Compile Include="System.Web.UI\ViewStateEncryptionMode.cs" />\r
-    <Compile Include="System.Web.UI\ViewStateException.cs" />\r
-    <Compile Include="System.Web.UI\ViewStateMode.cs" />\r
-    <Compile Include="System.Web.UI\ViewStateModeByIdAttribute.cs" />\r
-    <Compile Include="System.Web.UI\VirtualReferenceType.cs" />\r
-    <Compile Include="System.Web.UI\WebHandlerParser.cs" />\r
-    <Compile Include="System.Web.UI\WebResourceAttribute.cs" />\r
-    <Compile Include="System.Web.UI\WebServiceParser.cs" />\r
-    <Compile Include="System.Web.UI\XhtmlMobileDocType.cs" />\r
-    <Compile Include="System.Web.UI\XhtmlTextWriter.cs" />\r
-    <Compile Include="System.Web.UI\XPathBinder.cs" />\r
-    <Compile Include="System.Web.Util\AltSerialization.cs" />\r
-    <Compile Include="System.Web.Util\DataSourceHelper.cs" />\r
-    <Compile Include="System.Web.Util\DataSourceResolver.cs" />\r
-    <Compile Include="System.Web.Util\FileUtils.cs" />\r
-    <Compile Include="System.Web.Util\Helpers.cs" />\r
-    <Compile Include="System.Web.Util\HttpEncoder.cs" />\r
-    <Compile Include="System.Web.Util\ICalls.cs" />\r
-    <Compile Include="System.Web.Util\IWebObjectFactory.cs" />\r
-    <Compile Include="System.Web.Util\IWebPropertyAccessor.cs" />\r
-    <Compile Include="System.Web.Util\MachineKeySectionUtils.cs" />\r
-    <Compile Include="System.Web.Util\RequestValidationSource.cs" />\r
-    <Compile Include="System.Web.Util\RequestValidator.cs" />\r
-    <Compile Include="System.Web.Util\RuntimeHelpers.cs" />\r
-    <Compile Include="System.Web.Util\SearchPattern.cs" />\r
-    <Compile Include="System.Web.Util\SecureHashCodeProvider.cs" />\r
-    <Compile Include="System.Web.Util\SerializationHelper.cs" />\r
-    <Compile Include="System.Web.Util\SimpleWebObjectFactory.cs" />\r
-    <Compile Include="System.Web.Util\StrUtils.cs" />\r
-    <Compile Include="System.Web.Util\TimeUtil.cs" />\r
-    <Compile Include="System.Web.Util\TransactedCallback.cs" />\r
-    <Compile Include="System.Web.Util\Transactions.cs" />\r
-    <Compile Include="System.Web.Util\UrlUtils.cs" />\r
-    <Compile Include="System.Web.Util\WebEncoding.cs" />\r
-    <Compile Include="System.Web.Util\WebTrace.cs" />\r
-    <Compile Include="System.Web.Util\WorkItem.cs" />\r
-    <Compile Include="System.Web.Util\WorkItemCallback.cs" />\r
-    <Compile Include="System.Web\ApplicationShutdownReason.cs" />\r
-    <Compile Include="System.Web\BaseParamsCollection.cs" />\r
-    <Compile Include="System.Web\BeginEventHandler.cs" />\r
-    <Compile Include="System.Web\BrowserCapabilities.cs" />\r
-    <Compile Include="System.Web\CapabilitiesLoader.cs" />\r
-    <Compile Include="System.Web\DefaultExceptionPageTemplate.cs" />\r
-    <Compile Include="System.Web\DefaultHttpHandler.cs" />\r
-    <Compile Include="System.Web\DynamicModuleManager.cs" />\r
-    <Compile Include="System.Web\EndEventHandler.cs" />\r
-    <Compile Include="System.Web\EventHandlerTaskAsyncHelper.cs" />\r
-    <Compile Include="System.Web\ExceptionPageTemplate.cs" />\r
-    <Compile Include="System.Web\ExceptionPageTemplateFragment.cs" />\r
-    <Compile Include="System.Web\ExceptionPageTemplateFragmentValue.cs" />\r
-    <Compile Include="System.Web\ExceptionPageTemplateType.cs" />\r
-    <Compile Include="System.Web\ExceptionPageTemplateValues.cs" />\r
-    <Compile Include="System.Web\HeadersCollection.cs" />\r
-    <Compile Include="System.Web\HtmlizedException.cs" />\r
-    <Compile Include="System.Web\HtmlString.cs" />\r
-    <Compile Include="System.Web\HttpApplication.cs" />\r
-    <Compile Include="System.Web\HttpApplicationFactory.cs" />\r
-    <Compile Include="System.Web\HttpApplicationState.cs" />\r
-    <Compile Include="System.Web\HttpBrowserCapabilities.cs" />\r
-    <Compile Include="System.Web\HttpCacheability.cs" />\r
-    <Compile Include="System.Web\HttpCachePolicy.cs" />\r
-    <Compile Include="System.Web\HttpCacheRevalidation.cs" />\r
-    <Compile Include="System.Web\HttpCacheValidateHandler.cs" />\r
-    <Compile Include="System.Web\HttpCacheVaryByContentEncodings.cs" />\r
-    <Compile Include="System.Web\HttpCacheVaryByHeaders.cs" />\r
-    <Compile Include="System.Web\HttpCacheVaryByParams.cs" />\r
-    <Compile Include="System.Web\HttpClientCertificate.cs" />\r
-    <Compile Include="System.Web\HttpCompileException.cs" />\r
-    <Compile Include="System.Web\HttpContext.cs" />\r
-    <Compile Include="System.Web\HttpCookie.cs" />\r
-    <Compile Include="System.Web\HttpCookieCollection.cs" />\r
-    <Compile Include="System.Web\HttpCookieMode.cs" />\r
-    <Compile Include="System.Web\HttpException.cs" />\r
-    <Compile Include="System.Web\HttpFileCollection.cs" />\r
-    <Compile Include="System.Web\HttpForbiddenHandler.cs" />\r
-    <Compile Include="System.Web\HttpHeaderCollection.cs" />\r
-    <Compile Include="System.Web\HttpMethodNotAllowedHandler.cs" />\r
-    <Compile Include="System.Web\HttpModuleCollection.cs" />\r
-    <Compile Include="System.Web\HttpNotFoundHandler.cs" />\r
-    <Compile Include="System.Web\HttpNotImplementedHandler.cs" />\r
-    <Compile Include="System.Web\HttpParamsCollection.cs" />\r
-    <Compile Include="System.Web\HttpParseException.cs" />\r
-    <Compile Include="System.Web\HttpPostedFile.cs" />\r
-    <Compile Include="System.Web\HttpRequest.cs" />\r
-    <Compile Include="System.Web\HttpRequestValidationException.cs" />\r
-    <Compile Include="System.Web\HttpResponse.cs" />\r
-    <Compile Include="System.Web\HttpResponseHeader.cs" />\r
-    <Compile Include="System.Web\HttpResponseStream.cs" />\r
-    <Compile Include="System.Web\HttpResponseSubstitutionCallback.cs" />\r
-    <Compile Include="System.Web\HttpRuntime.cs" />\r
-    <Compile Include="System.Web\HttpServerUtility.cs" />\r
-    <Compile Include="System.Web\HttpStaticObjectsCollection.cs" />\r
-    <Compile Include="System.Web\HttpTaskAsyncHandler.cs" />\r
-    <Compile Include="System.Web\HttpUnhandledException.cs" />\r
-    <Compile Include="System.Web\HttpUtility.cs" />\r
-    <Compile Include="System.Web\HttpValidationStatus.cs" />\r
-    <Compile Include="System.Web\HttpWorkerRequest.cs" />\r
-    <Compile Include="System.Web\HttpWriter.cs" />\r
-    <Compile Include="System.Web\IHtmlString.cs" />\r
-    <Compile Include="System.Web\IHttpAsyncHandler.cs" />\r
-    <Compile Include="System.Web\IHttpHandler.cs" />\r
-    <Compile Include="System.Web\IHttpHandlerFactory.cs" />\r
-    <Compile Include="System.Web\IHttpMapPath.cs" />\r
-    <Compile Include="System.Web\IHttpModule.cs" />\r
-    <Compile Include="System.Web\IisTraceListener.cs" />\r
-    <Compile Include="System.Web\InputFilterStream.cs" />\r
-    <Compile Include="System.Web\IntPtrStream.cs" />\r
-    <Compile Include="System.Web\IPartitionResolver.cs" />\r
-    <Compile Include="System.Web\MimeMapping.cs" />\r
-    <Compile Include="System.Web\MimeTypes.cs" />\r
-    <Compile Include="System.Web\NoParamsInvoker.cs" />\r
-    <Compile Include="System.Web\OutputFilterStream.cs" />\r
-    <Compile Include="System.Web\ParserError.cs" />\r
-    <Compile Include="System.Web\ParserErrorCollection.cs" />\r
-    <Compile Include="System.Web\PreApplicationStartMethodAttribute.cs" />\r
-    <Compile Include="System.Web\ProcessInfo.cs" />\r
-    <Compile Include="System.Web\ProcessModelInfo.cs" />\r
-    <Compile Include="System.Web\ProcessShutdownReason.cs" />\r
-    <Compile Include="System.Web\ProcessStatus.cs" />\r
-    <Compile Include="System.Web\QueueManager.cs" />\r
-    <Compile Include="System.Web\ReadEntityBodyMode.cs" />\r
-    <Compile Include="System.Web\RequestNotification.cs" />\r
-    <Compile Include="System.Web\RequestNotificationStatus.cs" />\r
-    <Compile Include="System.Web\ServerVariablesCollection.cs" />\r
-    <Compile Include="System.Web\SiteMap.cs" />\r
-    <Compile Include="System.Web\SiteMapNode.cs" />\r
-    <Compile Include="System.Web\SiteMapNodeCollection.cs" />\r
-    <Compile Include="System.Web\SiteMapProvider.cs" />\r
-    <Compile Include="System.Web\SiteMapProviderCollection.cs" />\r
-    <Compile Include="System.Web\SiteMapResolveEventArgs.cs" />\r
-    <Compile Include="System.Web\StaticFileHandler.cs" />\r
-    <Compile Include="System.Web\StaticSiteMapProvider.cs" />\r
-    <Compile Include="System.Web\TaskAsyncResult.cs" />\r
-    <Compile Include="System.Web\TaskEventHandler.cs" />\r
-    <Compile Include="System.Web\TempFileStream.cs" />\r
-    <Compile Include="System.Web\TraceContext.cs" />\r
-    <Compile Include="System.Web\TraceContextEventArgs.cs" />\r
-    <Compile Include="System.Web\TraceContextEventHandler.cs" />\r
-    <Compile Include="System.Web\TraceContextRecord.cs" />\r
-    <Compile Include="System.Web\TraceData.cs" />\r
-    <Compile Include="System.Web\TraceManager.cs" />\r
-    <Compile Include="System.Web\TraceMode.cs" />\r
-    <Compile Include="System.Web\UnvalidatedRequestValues.cs" />\r
-    <Compile Include="System.Web\UnvalidatedRequestValuesBase.cs" />\r
-    <Compile Include="System.Web\UnvalidatedRequestValuesWrapper.cs" />\r
-    <Compile Include="System.Web\VirtualPath.cs" />\r
-    <Compile Include="System.Web\VirtualPathUtility.cs" />\r
-    <Compile Include="System.Web\WebCategoryAttribute.cs" />\r
-    <Compile Include="System.Web\WebPageTraceListener.cs" />\r
-    <Compile Include="System.Web\WebROCollection.cs" />\r
-    <Compile Include="System.Web\WebSysDescriptionAttribute.cs" />\r
-    <Compile Include="System.Web\XmlSiteMapProvider.cs" />\r
-    <Compile Include="System.Web\UplevelHelper.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{41476FBD-C1CB-4B3C-8078-3281EB1E0EAB}</Project>\r
-      <Name>Mono.Data.Sqlite-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.Services/System.Web.Services-net_4_5.csproj">\r
-      <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Design/System.Design-net_4_5.csproj">\r
-      <Project>{D4E6A482-761B-4B41-8B63-C930CA84D268}</Project>\r
-      <Name>System.Design-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/TranslationResources.resources">\r
-      <LogicalName>TranslationResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/WebUIValidation.js">\r
-      <LogicalName>WebUIValidation.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/folder.gif">\r
-      <LogicalName>folder.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/file.gif">\r
-      <LogicalName>file.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/computer.gif">\r
-      <LogicalName>computer.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_minus.gif">\r
-      <LogicalName>arrow_minus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_noexpand.gif">\r
-      <LogicalName>arrow_noexpand.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_plus.gif">\r
-      <LogicalName>arrow_plus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_up.gif">\r
-      <LogicalName>arrow_up.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_down.gif">\r
-      <LogicalName>arrow_down.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_full.gif">\r
-      <LogicalName>box_full.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_empty.gif">\r
-      <LogicalName>box_empty.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_minus.gif">\r
-      <LogicalName>box_minus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_noexpand.gif">\r
-      <LogicalName>box_noexpand.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_plus.gif">\r
-      <LogicalName>box_plus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/contact.gif">\r
-      <LogicalName>contact.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/dot_empty.gif">\r
-      <LogicalName>dot_empty.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/dot_full.gif">\r
-      <LogicalName>dot_full.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/dots.gif">\r
-      <LogicalName>dots.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/inbox.gif">\r
-      <LogicalName>inbox.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/star_empty.gif">\r
-      <LogicalName>star_empty.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/star_full.gif">\r
-      <LogicalName>star_full.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/warning.gif">\r
-      <LogicalName>warning.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_noexpand.gif">\r
-      <LogicalName>TreeView_noexpand.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_dash.gif">\r
-      <LogicalName>TreeView_dash.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_dashminus.gif">\r
-      <LogicalName>TreeView_dashminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_dashplus.gif">\r
-      <LogicalName>TreeView_dashplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_i.gif">\r
-      <LogicalName>TreeView_i.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_l.gif">\r
-      <LogicalName>TreeView_l.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_lminus.gif">\r
-      <LogicalName>TreeView_lminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_lplus.gif">\r
-      <LogicalName>TreeView_lplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_minus.gif">\r
-      <LogicalName>TreeView_minus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_plus.gif">\r
-      <LogicalName>TreeView_plus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_r.gif">\r
-      <LogicalName>TreeView_r.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_rminus.gif">\r
-      <LogicalName>TreeView_rminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_rplus.gif">\r
-      <LogicalName>TreeView_rplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_t.gif">\r
-      <LogicalName>TreeView_t.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_tminus.gif">\r
-      <LogicalName>TreeView_tminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_tplus.gif">\r
-      <LogicalName>TreeView_tplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/transparent.gif">\r
-      <LogicalName>transparent.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/webform.js">\r
-      <LogicalName>webform.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/WebUIValidation_2.0.js">\r
-      <LogicalName>WebUIValidation_2.0.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/ErrorTemplateCommon_Top.html">\r
-      <LogicalName>ErrorTemplateCommon_Top.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/DefaultErrorTemplate_CustomErrorDefault.html">\r
-      <LogicalName>DefaultErrorTemplate_CustomErrorDefault.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/ErrorTemplateCommon_Bottom.html">\r
-      <LogicalName>ErrorTemplateCommon_Bottom.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/DefaultErrorTemplate_StandardPage.html">\r
-      <LogicalName>DefaultErrorTemplate_StandardPage.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/HtmlizedExceptionPage_Top.html">\r
-      <LogicalName>HtmlizedExceptionPage_Top.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/HtmlizedExceptionPage_FileLongSource.html">\r
-      <LogicalName>HtmlizedExceptionPage_FileLongSource.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/HtmlizedExceptionPage_FileShortSource.html">\r
-      <LogicalName>HtmlizedExceptionPage_FileShortSource.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/HtmlizedExceptionPage_CompilerOutput.html">\r
-      <LogicalName>HtmlizedExceptionPage_CompilerOutput.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/GridView.js">\r
-      <LogicalName>GridView.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/DetailsView.js">\r
-      <LogicalName>DetailsView.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/TreeView.js">\r
-      <LogicalName>TreeView.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/Menu.js">\r
-      <LogicalName>Menu.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/MenuModern.js">\r
-      <LogicalName>MenuModern.js</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index bb59ec36a0df4e24e33260b9adc4d95752268c13..f63b9ab24895dc357932d9ee0dc6400a538a5e62 100644 (file)
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpApplicationStateBase.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpApplicationStateWrapper.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpBrowserCapabilitiesBase.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpBrowserCapabilitiesWrapper.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpCachePolicyBase.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpCachePolicyWrapper.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpFileCollectionBase.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpPostedFileBase.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpPostedFileWrapper.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpResponseBase.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpServerUtilityBase.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpSessionStateBase.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpSessionStateWrapper.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpStaticObjectsCollectionBase.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpStaticObjectsCollectionWrapper.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Cache\IOutputCacheEntry.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Cache\ResponseElement.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\BuildProviderAppliesTo.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\BuildProviderAppliesToAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\DesignTimeResourceProviderFactoryAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\ExpressionEditorAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\ExpressionPrefixAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\FolderLevelBuildProviderAppliesTo.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\FolderLevelBuildProviderAppliesToAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\IAssemblyPostProcessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\IImplicitResourceProvider.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\AdapterDictionary.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\AsyncPreloadModeFlags.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\AuthenticationMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\AuthorizationRuleAction.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\BrowserCapsElementType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\BrowserTree.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\CustomErrorsMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\CustomErrorsRedirectMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\CustomWebEventKey.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\DelayedRegex.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\FormsAuthPasswordFormat.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\FormsProtectionEnum.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\IConfigMapPath.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\IConfigMapPathFactory.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\IRemoteWebConfigurationHostServer.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\MachineKeyCompatibilityMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\MachineKeyValidation.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\PagesEnableSessionState.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\ProcessModelComAuthenticationLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\ProcessModelComImpersonationLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\ProcessModelLogLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\ProfileGuidedOptimizationsFlags.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\RegexMatchTimeoutValidator.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\RegexMatchTimeoutValidatorAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\RpcAuthent.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\RpcImpers.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\RpcLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\SerializationMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\SystemWebCachingSectionGroup.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\TicketCompatibilityMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\TraceDisplayMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\WebApplicationLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\WebLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\XhtmlConformanceMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Hosting\IApplicationHost.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Hosting\IRegisteredObject.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\IHtmlString.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\IHttpAsyncHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\IHttpHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\IHttpHandlerFactory.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\IHttpModule.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ISubscriptionToken.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\ITlsTokenBindingInfo.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\BindingBehavior.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\BindingBehaviorAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\BindNeverAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\ExtensibleModelBinderAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\IModelNameProvider.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\ModelBinderProviderOptionsAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\ModelError.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\ModelErrorCollection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\PreApplicationStartMethodAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Profile\HttpProfileGroupBase.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Profile\ProfileEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Profile\ProfileEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\ReadEntityBodyMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\RequestNotification.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\RequestNotificationStatus.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\IRouteConstraint.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\IRouteHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\RequestContext.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Routing\RouteBase.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\RouteDirection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\RouteTable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\RouteValueDictionary.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\VirtualPathData.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Security\AntiXss\CodeCharts.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\FormsAuthenticationEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\FormsAuthenticationEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\PassportAuthenticationEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\PassportAuthenticationEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\RoleManagerEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\RoleManagerEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\WindowsAuthenticationEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\WindowsAuthenticationEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\State\IReadOnlySessionState.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\State\IRequiresSessionState.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\State\SessionStateBehavior.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ClientIDMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ConflictOptions.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ConstructorNeedsTagAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ControlBuilderAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\CssClassPropertyAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\DataBindingHandlerAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\DataKeyPropertyAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\DataSourceCacheExpiry.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\DataSourceCapabilities.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\DataSourceOperation.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\FileLevelControlBuilderAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\FilterableAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\HtmlTextWriterAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\HtmlTextWriterStyle.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\HtmlTextWriterTag.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IAttributeAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IAutoFieldGenerator.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IBindableControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IBindableTemplate.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ICallbackEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IControlBuilderAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IControlDesignerAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IDataBindingsAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IDataItemContainer.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IDataKeysControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IDataSource.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IDataSourceViewSchemaAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IDReferencePropertyAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IExpressionsAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IFilterResolutionService.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IHierarchicalDataSource.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IHierarchicalEnumerable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IHierarchyData.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ImageClickEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\INamingContainer.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\INavigateUIData.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\INonBindingContainer.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IParserAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IPostBackDataHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IPostBackEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IResourceUrlGenerator.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IScriptResourceDefinition.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IScriptResourceMapping.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IStateFormatter.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IStateManager.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IStyleSheet.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ITemplate.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IThemeResolutionService.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IUrlResolutionService.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IUserControlDesignerAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IUserControlTypeResolutionService.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IValidator.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\NonVisualControlAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\PersistChildrenAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\PersistenceMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\SupportsEventValidationAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\TemplateInstance.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\TemplateInstanceAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ThemeableAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\TraceContextEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\TraceContextEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\UnobtrusiveValidationMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ValidateRequestMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ViewStateEncryptionMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ViewStateMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\Adapters\WmlPostFieldType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\AdCreatedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\AuthenticateEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\AuthenticateEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\AutoCompleteType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\BorderStyle.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\BulletedListEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\BulletedListEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ButtonColumnType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ButtonType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CalendarSelectionMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CallingDataMethodsEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CallingDataMethodsEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ContentDirection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CreateUserErrorEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CreateUserErrorEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataBoundControlMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataControlCellType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataControlRowState.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataControlRowType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridItemEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridItemEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridPageChangedEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridPageChangedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridSortCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridSortCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataListCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataListCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataListItemEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataListItemEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DayNameFormat.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DayRenderEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewDeletedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewDeleteEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewInsertedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewInsertEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewModeEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewModeEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewPageEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewPageEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewUpdatedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewUpdateEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FirstDayOfWeek.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FontSize.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewDeletedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewDeleteEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewInsertedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewInsertEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewModeEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewModeEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewPageEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewPageEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewUpdatedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewUpdateEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridLines.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewCancelEditEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewCancelEditEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewDeletedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewDeleteEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewEditEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewEditEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewPageEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewPageEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewRowEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewRowEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewSelectEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewSelectEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewSortEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewSortEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewUpdatedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewUpdateEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\HorizontalAlign.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\HotSpotMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IButtonControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ICallbackContainer.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ICompositeControlDesignerAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IDataBoundControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IDataBoundItemControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IDataBoundListControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IFieldControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ImageAlign.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ImageMapEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ImageMapEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IPersistedSelector.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IRepeatInfoUser.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ListItemType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ListSelectionMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\LiteralMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\LoginCancelEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\LoginCancelEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\LoginFailureAction.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\LogoutAction.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MailMessageEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MailMessageEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MenuEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MenuEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MenuRenderingMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MonthChangedEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MonthChangedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\NextPrevFormat.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceDisposingEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceDisposingEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceFilteringEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceFilteringEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceMethodEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceMethodEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceSelectingEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceSelectingEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceStatusEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceStatusEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\Orientation.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\PagerButtons.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\PagerMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\PagerPosition.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\PathDirection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\RepeatDirection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\RepeaterCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\RepeaterCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\RepeaterItemEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\RepeaterItemEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\RepeatLayout.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SendMailErrorEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ServerValidateEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SiteMapNodeItemEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SiteMapNodeItemEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SiteMapNodeItemType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SortDirection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceCommandType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceFilteringEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceFilteringEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceSelectingEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceSelectingEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceStatusEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceStatusEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TableCaptionAlign.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TableHeaderScope.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TableRowSection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TextAlign.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TextBoxMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TitleFormat.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TreeNodeEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TreeNodeEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TreeNodeSelectAction.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TreeViewImageSet.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\UnitType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ValidationCompareOperator.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ValidationDataType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ValidationSummaryDisplayMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ValidatorDisplay.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\VerticalAlign.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\WebColorConverter.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\FieldCallback.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\ITrackingPersonalizable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\ITransformerConfigurationControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IVersioningPersonalizable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebActionable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebEditable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebPart.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebPartField.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebPartHttpHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebPartParameters.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebPartRow.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebPartTable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\ParametersCallback.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\PartChromeState.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\PartChromeType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\PersonalizationScope.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\RowCallback.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\TableCallback.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebBrowsableAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebDescriptionAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebDisplayNameAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartAuthorizationEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartCancelEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartCancelEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartExportMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartHelpMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartVerbsEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartVerbsEventHandler.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\UnvalidatedRequestValuesBase.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\UnvalidatedRequestValuesWrapper.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Util\IObjectFactory.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Util\RequestValidationSource.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Util\StringUtil.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\WebSockets\AspNetWebSocketOptions.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\WebSockets\SubprotocolUtil.cs" />\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
+    <Compile Include="..\..\build\common\SR.cs" />\r
     <Compile Include="..\System.Design\System.Data.Design\TypedDataSetGenerator.cs" />\r
     <Compile Include="..\System.Windows.Forms\System.Resources\AssemblyNamesTypeResolutionService.cs" />\r
     <Compile Include="..\System.Windows.Forms\System.Resources\ByteArrayFromResXHandler.cs" />\r
     <Compile Include="Mono.Web.Util\SettingsMapping.cs" />\r
     <Compile Include="Mono.Web.Util\SettingsMappingManager.cs" />\r
     <Compile Include="Mono.Web.Util\SettingsMappingWhat.cs" />\r
+    <Compile Include="ReferenceSources\SR.cs" />\r
     <Compile Include="System.Collections.Concurrent\SplitOrderedList.cs" />\r
     <Compile Include="System.Web.Caching\AggregateCacheDependency.cs" />\r
     <Compile Include="System.Web.Caching\Cache.cs" />\r
     <Compile Include="System.Web.Caching\FileResponseElement.cs" />\r
     <Compile Include="System.Web.Caching\HeaderElement.cs" />\r
     <Compile Include="System.Web.Caching\InMemoryOutputCacheProvider.cs" />\r
-    <Compile Include="System.Web.Caching\IOutputCacheEntry.cs" />\r
     <Compile Include="System.Web.Caching\MemoryResponseElement.cs" />\r
     <Compile Include="System.Web.Caching\OutputCache.cs" />\r
     <Compile Include="System.Web.Caching\OutputCacheModule.cs" />\r
     <Compile Include="System.Web.Caching\OutputCacheProvider.cs" />\r
     <Compile Include="System.Web.Caching\OutputCacheProviderCollection.cs" />\r
-    <Compile Include="System.Web.Caching\ResponseElement.cs" />\r
     <Compile Include="System.Web.Caching\SqlCacheDependency.cs" />\r
     <Compile Include="System.Web.Caching\SqlCacheDependencyAdmin.cs" />\r
     <Compile Include="System.Web.Caching\SubstitutionResponseElement.cs" />\r
     <Compile Include="System.Web.Compilation\BuildManagerHostUnloadEventHandler.cs" />\r
     <Compile Include="System.Web.Compilation\BuildManagerRemoveEntryEventHandler.cs" />\r
     <Compile Include="System.Web.Compilation\BuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProviderAppliesTo.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProviderAppliesToAttribute.cs" />\r
     <Compile Include="System.Web.Compilation\BuildProviderGroup.cs" />\r
     <Compile Include="System.Web.Compilation\BuildProviderResultFlags.cs" />\r
     <Compile Include="System.Web.Compilation\CachingCompiler.cs" />\r
     <Compile Include="System.Web.Compilation\ConnectionStringsExpressionBuilder.cs" />\r
     <Compile Include="System.Web.Compilation\DefaultResourceProvider.cs" />\r
     <Compile Include="System.Web.Compilation\DefaultResourceProviderFactory.cs" />\r
-    <Compile Include="System.Web.Compilation\DesignTimeResourceProviderFactoryAttribute.cs" />\r
     <Compile Include="System.Web.Compilation\Directive.cs" />\r
     <Compile Include="System.Web.Compilation\ExpressionBuilder.cs" />\r
     <Compile Include="System.Web.Compilation\ExpressionBuilderContext.cs" />\r
-    <Compile Include="System.Web.Compilation\ExpressionEditorAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\ExpressionPrefixAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\FolderLevelBuildProviderAppliesTo.cs" />\r
-    <Compile Include="System.Web.Compilation\FolderLevelBuildProviderAppliesToAttribute.cs" />\r
     <Compile Include="System.Web.Compilation\ForceCopyBuildProvider.cs" />\r
     <Compile Include="System.Web.Compilation\GenericBuildProvider.cs" />\r
     <Compile Include="System.Web.Compilation\GlobalAsaxCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\IAssemblyPostProcessor.cs" />\r
     <Compile Include="System.Web.Compilation\IgnoreFileBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\IImplicitResourceProvider.cs" />\r
     <Compile Include="System.Web.Compilation\ILocation.cs" />\r
-    <Compile Include="System.Web.Compilation\ImplicitResourceKey.cs" />\r
     <Compile Include="System.Web.Compilation\IResourceProvider.cs" />\r
     <Compile Include="System.Web.Compilation\LinePragmaCodeInfo.cs" />\r
     <Compile Include="System.Web.Compilation\Location.cs" />\r
     <Compile Include="System.Web.Compilation\WsdlBuildProvider.cs" />\r
     <Compile Include="System.Web.Compilation\XsdBuildProvider.cs" />\r
     <Compile Include="System.Web.Configuration.Internal\IInternalConfigWebHost.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AdapterDictionary.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AnonymousIdentificationSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\ApplicationSettingsConfigurationFileMap.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AssemblyCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AssemblyInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthenticationMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AuthenticationSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AuthorizationRule.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthorizationRuleAction.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AuthorizationRuleCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AuthorizationSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\BufferModesCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\CompilerCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\CustomError.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\CustomErrorCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomErrorsMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomErrorsRedirectMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\CustomErrorsSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\DeploymentSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\EventMappingSettings.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationCredentials.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationUser.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationUserCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsAuthPasswordFormat.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsProtectionEnum.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\GlobalizationSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\HandlersUtil.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\HealthMonitoringSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\HttpModulesSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\HttpRuntimeSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\ICapabilitiesProcess.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IConfigMapPath.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IConfigMapPathFactory.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeyCompatibilityMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeyValidation.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyValidationConverter.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MembershipSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MonoSettingsSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\OutputCacheProfileCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\OutputCacheSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\OutputCacheSettingsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\PagesEnableSessionState.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\PagesSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\PassportAuthentication.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\PositiveTimeSpanValidator.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelComAuthenticationLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelComImpersonationLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelLogLevel.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\ProcessModelSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\ProfileGroupSettings.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\ProfileGroupSettingsCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\RuleSettings.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\RuleSettingsCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SecurityPolicySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SerializationMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SessionPageStateSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SessionStateSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SiteMapSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SqlCacheDependencyDatabase.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SqlCacheDependencyDatabaseCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SqlCacheDependencySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SystemWebCachingSectionGroup.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SystemWebSectionGroup.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TagMapCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TagMapInfo.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TagPrefixCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TagPrefixInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TraceDisplayMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TraceSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TransformerInfo.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TransformerInfoCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\VersionConverter.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\VirtualDirectoryMapping.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\VirtualDirectoryMappingCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebApplicationLevel.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\WebConfigurationFileMap.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\WebConfigurationHost.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\WebConfigurationManager.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\WebPartsPersonalization.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\WebPartsPersonalizationAuthorization.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\WebPartsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\XhtmlConformanceMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\XhtmlConformanceSection.cs" />\r
     <Compile Include="System.Web.Handlers\AssemblyResourceLoader.cs" />\r
     <Compile Include="System.Web.Handlers\TraceHandler.cs" />\r
     <Compile Include="System.Web.Hosting\DefaultVirtualPathProvider.cs" />\r
     <Compile Include="System.Web.Hosting\HostingEnvironment.cs" />\r
     <Compile Include="System.Web.Hosting\IAppDomainFactory.cs" />\r
-    <Compile Include="System.Web.Hosting\IApplicationHost.cs" />\r
     <Compile Include="System.Web.Hosting\IAppManagerAppDomainFactory.cs" />\r
     <Compile Include="System.Web.Hosting\IISAPIRuntime.cs" />\r
-    <Compile Include="System.Web.Hosting\IRegisteredObject.cs" />\r
     <Compile Include="System.Web.Hosting\ISAPIRuntime.cs" />\r
     <Compile Include="System.Web.Hosting\SimpleWorkerRequest.cs" />\r
     <Compile Include="System.Web.Hosting\VirtualDirectory.cs" />\r
     <Compile Include="System.Web.Profile\ProfileAutoSaveEventArgs.cs" />\r
     <Compile Include="System.Web.Profile\ProfileAutoSaveEventHandler.cs" />\r
     <Compile Include="System.Web.Profile\ProfileBase.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileEventArgs.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileEventHandler.cs" />\r
     <Compile Include="System.Web.Profile\ProfileInfo.cs" />\r
     <Compile Include="System.Web.Profile\ProfileInfoCollection.cs" />\r
     <Compile Include="System.Web.Profile\ProfileManager.cs" />\r
     <Compile Include="System.Web.Profile\SqlProfileProvider.cs" />\r
     <Compile Include="System.Web.Properties\TranslationProperties.Designer.cs" />\r
     <Compile Include="System.Web.Routing\HttpMethodConstraint.cs" />\r
-    <Compile Include="System.Web.Routing\IRouteConstraint.cs" />\r
-    <Compile Include="System.Web.Routing\IRouteHandler.cs" />\r
     <Compile Include="System.Web.Routing\PageRouteHandler.cs" />\r
     <Compile Include="System.Web.Routing\PatternParser.cs" />\r
     <Compile Include="System.Web.Routing\PatternToken.cs" />\r
     <Compile Include="System.Web.Routing\PatternTokenType.cs" />\r
-    <Compile Include="System.Web.Routing\RequestContext.cs" />\r
     <Compile Include="System.Web.Routing\Route.cs" />\r
     <Compile Include="System.Web.Routing\RouteCollection.cs" />\r
     <Compile Include="System.Web.Routing\RouteData.cs" />\r
-    <Compile Include="System.Web.Routing\RouteDirection.cs" />\r
-    <Compile Include="System.Web.Routing\RouteTable.cs" />\r
-    <Compile Include="System.Web.Routing\RouteValueDictionary.cs" />\r
     <Compile Include="System.Web.Routing\RouteValueDictionaryExtensions.cs" />\r
     <Compile Include="System.Web.Routing\StopRoutingHandler.cs" />\r
     <Compile Include="System.Web.Routing\UrlRoutingHandler.cs" />\r
     <Compile Include="System.Web.Routing\UrlRoutingModule.cs" />\r
-    <Compile Include="System.Web.Routing\VirtualPathData.cs" />\r
     <Compile Include="System.Web.Security\ActiveDirectoryConnectionProtection.cs" />\r
     <Compile Include="System.Web.Security\ActiveDirectoryMembershipProvider.cs" />\r
     <Compile Include="System.Web.Security\AnonymousIdentificationEventArgs.cs" />\r
     <Compile Include="System.Web.Security\DefaultAuthenticationModule.cs" />\r
     <Compile Include="System.Web.Security\FileAuthorizationModule.cs" />\r
     <Compile Include="System.Web.Security\FormsAuthentication.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthenticationEventHandler.cs" />\r
     <Compile Include="System.Web.Security\FormsAuthenticationModule.cs" />\r
     <Compile Include="System.Web.Security\FormsAuthenticationTicket.cs" />\r
     <Compile Include="System.Web.Security\FormsIdentity.cs" />\r
     <Compile Include="System.Web.Security\Membership.cs" />\r
     <Compile Include="System.Web.Security\MembershipHelper.cs" />\r
     <Compile Include="System.Web.Security\MembershipPasswordAttribute.cs" />\r
-    <Compile Include="System.Web.Security\PassportAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\PassportAuthenticationEventHandler.cs" />\r
     <Compile Include="System.Web.Security\PassportAuthenticationModule.cs" />\r
     <Compile Include="System.Web.Security\PassportIdentity.cs" />\r
-    <Compile Include="System.Web.Security\RoleManagerEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\RoleManagerEventHandler.cs" />\r
     <Compile Include="System.Web.Security\RoleManagerModule.cs" />\r
     <Compile Include="System.Web.Security\RolePrincipal.cs" />\r
     <Compile Include="System.Web.Security\RoleProviderCollection.cs" />\r
     <Compile Include="System.Web.Security\SqlMembershipProvider.cs" />\r
     <Compile Include="System.Web.Security\SqlRoleProvider.cs" />\r
     <Compile Include="System.Web.Security\UrlAuthorizationModule.cs" />\r
-    <Compile Include="System.Web.Security\WindowsAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\WindowsAuthenticationEventHandler.cs" />\r
     <Compile Include="System.Web.Security\WindowsAuthenticationModule.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\HttpSessionState.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\HttpSessionStateContainer.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\IHttpSessionState.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\IReadOnlySessionState.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\IRequiresSessionState.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\ISessionIDManager.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\ISessionStateItemCollection.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\IStateRuntime.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\SessionInProcHandler.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\SessionSQLServerHandler.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\SessionStateActions.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateBehavior.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\SessionStateItemCollection.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\SessionStateItemExpireCallback.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\SessionStateMode.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\StateServerItem.cs" />\r
     <Compile Include="System.Web.UI.Adapters\ControlAdapter.cs" />\r
     <Compile Include="System.Web.UI.Adapters\PageAdapter.cs" />\r
-    <Compile Include="System.Web.UI.Adapters\WmlPostFieldType.cs" />\r
     <Compile Include="System.Web.UI.HtmlControls\HtmlAnchor.cs" />\r
     <Compile Include="System.Web.UI.HtmlControls\HtmlButton.cs" />\r
     <Compile Include="System.Web.UI.HtmlControls\HtmlContainerControl.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\EditorPart.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\EditorPartCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\IPersonalizable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ITrackingPersonalizable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ITransformerConfigurationControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IVersioningPersonalizable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebActionable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebEditable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPart.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartHttpHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartParameters.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartTable.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\Part.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PartChromeState.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PartChromeType.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\PersonalizableAttribute.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PersonalizationScope.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\ProviderConnectionPoint.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\TypeCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\WebPart.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\WebPartAuthorizationEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartAuthorizationEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartCancelEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartCancelEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartExportMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartHelpMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\WebPartPageMenuMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerb.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerbCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerbsEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerbsEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AccessDataSource.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AccessDataSourceView.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AdCreatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AdCreatedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AdRotator.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AssociatedControlConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AuthenticateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AuthenticateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AutoCompleteType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AutoGeneratedField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AutoGeneratedFieldProperties.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BaseCompareValidator.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BaseDataList.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BaseMenuRenderer.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BaseValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BorderStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BoundColumn.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BoundField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BulletedList.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BulletedListDisplayMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletedListEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletedListEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BulletStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Button.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ButtonColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonColumnType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ButtonField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ButtonFieldBase.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Calendar.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CalendarDay.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CalendarSelectionMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ChangePassword.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CheckBox.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CheckBoxField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ChildTable.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CircleHotSpot.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CollectionDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CommandField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CompareValidator.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CompleteWizardStep.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ContainedTable.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Content.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ContentControlBuilderInternal.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ContentDirection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ContentPlaceHolder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ContentPlaceHolderBuilder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ControlIDConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ControlParameter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ControlPropertyNameConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CookieParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CreateUserErrorEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CreateUserErrorEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CreateUserWizard.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CreateUserWizardStep.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CustomValidator.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataBoundControlMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataControlButton.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlCellType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataControlCommands.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataControlField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataControlFieldCell.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataControlFieldCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataControlFieldHeaderCell.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlRowState.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlRowType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataGrid.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataGridColumn.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataGridColumnCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataGridItem.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataGridItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridItemEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridPageChangedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridPageChangedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataGridPagerStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridSortCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridSortCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataKey.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataKeyArray.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataKeyCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataListItem.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataListItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListItemEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataSourceCacheManager.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DayNameFormat.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DayRenderEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DayRenderEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewDeletedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewDeletedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewDeleteEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewDeleteEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewInsertedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewInsertedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewInsertEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewInsertEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewModeEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewModeEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewPageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewPageEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewPagerRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewRowCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewUpdatedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewUpdateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewUpdateEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DropDownList.cs" />\r
     <Compile Include="System.Web.UI.WebControls\EditCommandColumn.cs" />\r
     <Compile Include="System.Web.UI.WebControls\EmbeddedMailObject.cs" />\r
     <Compile Include="System.Web.UI.WebControls\EmbeddedMailObjectsCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FileUpload.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FirstDayOfWeek.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FontInfo.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FontNamesConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FontSize.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FontUnit.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FontUnitConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormParameter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormView.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewDeletedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewDeletedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewDeleteEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewDeleteEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewInsertedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewInsertedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewInsertEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewInsertEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewModeEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewModeEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewPageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewPageEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewPagerRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewUpdatedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewUpdateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewUpdateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridLines.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCancelEditEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCancelEditEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridViewDeletedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewDeletedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridViewDeleteEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewDeleteEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewEditEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewEditEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewPageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewPageEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridViewRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridViewRowCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewRowEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewRowEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSelectEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSelectEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSortEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSortEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridViewUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewUpdatedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridViewUpdateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewUpdateEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HiddenField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HierarchicalDataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HorizontalAlign.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HorizontalAlignConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HotSpot.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HotSpotCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HotSpotMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HyperLink.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HyperLinkColumn.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HyperLinkControlBuilder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HyperLinkField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IButtonControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ICallbackContainer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ICompositeControlDesignerAccessor.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IDataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IDataBoundItemControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IDataBoundListControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IFieldControl.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Image.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageAlign.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ImageButton.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ImageField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ImageMap.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageMapEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageMapEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\IMenuRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IPersistedSelector.cs" />\r
     <Compile Include="System.Web.UI.WebControls\IPostBackContainer.cs" />\r
     <Compile Include="System.Web.UI.WebControls\IRenderOuterTable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IRepeatInfoUser.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Label.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LabelControlBuilder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LinkButton.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ListItem.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ListItemCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ListItemControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListItemType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListSelectionMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Literal.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LiteralControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LiteralMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Localize.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Login.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginCancelEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginCancelEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginFailureAction.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LoginName.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LoginStatus.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LoginTextLayout.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LoginView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LogoutAction.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MailDefinition.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MailMessageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MailMessageEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Menu.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuItem.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuItemBinding.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuItemBindingCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuItemStyleCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuItemTemplateContainer.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuListRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuRenderingMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuTableRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MonthChangedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MonthChangedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MultiView.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MultiViewControlBuilder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\NamedCssStyleCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\NextPrevFormat.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ObjectDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceDisposingEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceDisposingEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceEventArgs.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ObjectDataSourceEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceFilteringEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceFilteringEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceMethodEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceMethodEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceSelectingEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceSelectingEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceStatusEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceStatusEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ObjectDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Orientation.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PagedDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerButtons.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerPosition.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PagerSettings.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Panel.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PanelStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Parameter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ParameterCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PasswordRecovery.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PathDirection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PlaceHolder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PlaceHolderControlBuilder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PolygonHotSpot.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RangeValidator.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RectangleHotSpot.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RegularExpressionValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeatDirection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Repeater.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RepeaterItem.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RepeaterItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterItemEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RepeatInfo.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeatLayout.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RequiredFieldValidator.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RoleGroup.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RoleGroupCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ScrollBars.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SelectedDatesCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SendMailErrorEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SendMailErrorEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ServerValidateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ServerValidateEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SessionParameter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SiteMapDataSource.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SiteMapDataSourceView.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SiteMapHierarchicalDataSourceView.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SiteMapNodeItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItemEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItemType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SiteMapPath.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SiteMapViewType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SortDirection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SqlDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceCommandType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceFilteringEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceFilteringEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceSelectingEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceSelectingEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceStatusEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceStatusEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SqlDataSourceView.cs" />\r
     <Compile Include="System.Web.UI.WebControls\StringArrayConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Style.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SubMenuStyleCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Substitution.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Table.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableCaptionAlign.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableCell.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableCellCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableCellControlBuilder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableFooterRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableHeaderCell.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableHeaderRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableHeaderScope.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableItemStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableRowCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableRowSection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableSectionStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TargetConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TemplateColumn.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TemplatedWizardStep.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TemplateField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TextAlign.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TextBox.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TextBoxControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TextBoxMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TitleFormat.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNodeBinding.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNodeBindingCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNodeCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeSelectAction.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNodeStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNodeStyleCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNodeTypes.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeViewImageSet.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Unit.cs" />\r
     <Compile Include="System.Web.UI.WebControls\UnitConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\UnitType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ValidatedControlConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationCompareOperator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationDataType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ValidationSummary.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationSummaryDisplayMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidatorDisplay.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\VerticalAlign.cs" />\r
     <Compile Include="System.Web.UI.WebControls\VerticalAlignConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\View.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ViewCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WebColorConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\WebControl.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Wizard.cs" />\r
     <Compile Include="System.Web.UI.WebControls\WizardLayoutContainer.cs" />\r
     <Compile Include="System.Web.UI\BuildMethod.cs" />\r
     <Compile Include="System.Web.UI\BuildTemplateMethod.cs" />\r
     <Compile Include="System.Web.UI\ChtmlTextWriter.cs" />\r
-    <Compile Include="System.Web.UI\ClientIDMode.cs" />\r
     <Compile Include="System.Web.UI\ClientScriptManager.cs" />\r
     <Compile Include="System.Web.UI\CodeBuilder.cs" />\r
     <Compile Include="System.Web.UI\CodeConstructType.cs" />\r
     <Compile Include="System.Web.UI\CompiledBindableTemplateBuilder.cs" />\r
     <Compile Include="System.Web.UI\CompiledTemplateBuilder.cs" />\r
     <Compile Include="System.Web.UI\ComplexPropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\ConflictOptions.cs" />\r
-    <Compile Include="System.Web.UI\ConstructorNeedsTagAttribute.cs" />\r
     <Compile Include="System.Web.UI\Control.cs" />\r
     <Compile Include="System.Web.UI\ControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\ControlBuilderAttribute.cs" />\r
     <Compile Include="System.Web.UI\ControlCachePolicy.cs" />\r
     <Compile Include="System.Web.UI\ControlCollection.cs" />\r
     <Compile Include="System.Web.UI\ControlSkin.cs" />\r
     <Compile Include="System.Web.UI\ControlSkinDelegate.cs" />\r
     <Compile Include="System.Web.UI\ControlValuePropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\CssClassPropertyAttribute.cs" />\r
     <Compile Include="System.Web.UI\CssStyleCollection.cs" />\r
     <Compile Include="System.Web.UI\DataBinder.cs" />\r
     <Compile Include="System.Web.UI\DataBinding.cs" />\r
     <Compile Include="System.Web.UI\DataBindingBuilder.cs" />\r
     <Compile Include="System.Web.UI\DataBindingCollection.cs" />\r
-    <Compile Include="System.Web.UI\DataBindingHandlerAttribute.cs" />\r
     <Compile Include="System.Web.UI\DataBoundLiteralControl.cs" />\r
-    <Compile Include="System.Web.UI\DataKeyPropertyAttribute.cs" />\r
     <Compile Include="System.Web.UI\DataSourceCacheDurationConverter.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceCacheExpiry.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceCapabilities.cs" />\r
     <Compile Include="System.Web.UI\DataSourceControl.cs" />\r
     <Compile Include="System.Web.UI\DataSourceControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceOperation.cs" />\r
     <Compile Include="System.Web.UI\DataSourceSelectArguments.cs" />\r
     <Compile Include="System.Web.UI\DataSourceView.cs" />\r
     <Compile Include="System.Web.UI\DataSourceViewOperationCallback.cs" />\r
     <Compile Include="System.Web.UI\ExpressionBinding.cs" />\r
     <Compile Include="System.Web.UI\ExpressionBindingCollection.cs" />\r
     <Compile Include="System.Web.UI\ExtractTemplateValuesMethod.cs" />\r
-    <Compile Include="System.Web.UI\FileLevelControlBuilderAttribute.cs" />\r
     <Compile Include="System.Web.UI\FileLevelMasterPageControlBuilder.cs" />\r
     <Compile Include="System.Web.UI\FileLevelPageControlBuilder.cs" />\r
     <Compile Include="System.Web.UI\FileLevelUserControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\FilterableAttribute.cs" />\r
     <Compile Include="System.Web.UI\HiddenFieldPageStatePersister.cs" />\r
     <Compile Include="System.Web.UI\HierarchicalDataSourceControl.cs" />\r
     <Compile Include="System.Web.UI\HierarchicalDataSourceView.cs" />\r
     <Compile Include="System.Web.UI\Html32TextWriter.cs" />\r
     <Compile Include="System.Web.UI\HtmlControlPersistableAttribute.cs" />\r
     <Compile Include="System.Web.UI\HtmlTextWriter.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriterAttribute.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriterStyle.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriterTag.cs" />\r
-    <Compile Include="System.Web.UI\IAttributeAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IAutoFieldGenerator.cs" />\r
-    <Compile Include="System.Web.UI\IBindableControl.cs" />\r
-    <Compile Include="System.Web.UI\IBindableTemplate.cs" />\r
-    <Compile Include="System.Web.UI\ICallbackEventHandler.cs" />\r
     <Compile Include="System.Web.UI\ICheckBoxControl.cs" />\r
-    <Compile Include="System.Web.UI\IControlBuilderAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IControlDesignerAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IDataBindingsAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IDataItemContainer.cs" />\r
-    <Compile Include="System.Web.UI\IDataKeysControl.cs" />\r
-    <Compile Include="System.Web.UI\IDataSource.cs" />\r
-    <Compile Include="System.Web.UI\IDataSourceViewSchemaAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IDReferencePropertyAttribute.cs" />\r
     <Compile Include="System.Web.UI\IEditableTextControl.cs" />\r
-    <Compile Include="System.Web.UI\IExpressionsAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IFilterResolutionService.cs" />\r
     <Compile Include="System.Web.UI\IgnoreUnknownContentAttribute.cs" />\r
-    <Compile Include="System.Web.UI\IHierarchicalDataSource.cs" />\r
-    <Compile Include="System.Web.UI\IHierarchicalEnumerable.cs" />\r
-    <Compile Include="System.Web.UI\IHierarchyData.cs" />\r
     <Compile Include="System.Web.UI\ImageClickEventArgs.cs" />\r
-    <Compile Include="System.Web.UI\ImageClickEventHandler.cs" />\r
-    <Compile Include="System.Web.UI\INamingContainer.cs" />\r
-    <Compile Include="System.Web.UI\INavigateUIData.cs" />\r
     <Compile Include="System.Web.UI\IndexedString.cs" />\r
-    <Compile Include="System.Web.UI\INonBindingContainer.cs" />\r
-    <Compile Include="System.Web.UI\IParserAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IPostBackDataHandler.cs" />\r
-    <Compile Include="System.Web.UI\IPostBackEventHandler.cs" />\r
-    <Compile Include="System.Web.UI\IResourceUrlGenerator.cs" />\r
     <Compile Include="System.Web.UI\IScriptManager.cs" />\r
-    <Compile Include="System.Web.UI\IStateFormatter.cs" />\r
-    <Compile Include="System.Web.UI\IStateManager.cs" />\r
-    <Compile Include="System.Web.UI\IStyleSheet.cs" />\r
     <Compile Include="System.Web.UI\ITagNameToTypeMapper.cs" />\r
-    <Compile Include="System.Web.UI\ITemplate.cs" />\r
     <Compile Include="System.Web.UI\ITextControl.cs" />\r
-    <Compile Include="System.Web.UI\IThemeResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IUrlResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IUserControlDesignerAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IUserControlTypeResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IValidator.cs" />\r
     <Compile Include="System.Web.UI\ListSourceHelper.cs" />\r
     <Compile Include="System.Web.UI\LiteralControl.cs" />\r
     <Compile Include="System.Web.UI\LosFormatter.cs" />\r
     <Compile Include="System.Web.UI\MasterPageControlBuilder.cs" />\r
     <Compile Include="System.Web.UI\MasterPageParser.cs" />\r
     <Compile Include="System.Web.UI\MinimizableAttributeTypeConverter.cs" />\r
-    <Compile Include="System.Web.UI\NonVisualControlAttribute.cs" />\r
     <Compile Include="System.Web.UI\ObjectConverter.cs" />\r
     <Compile Include="System.Web.UI\ObjectPersistData.cs" />\r
     <Compile Include="System.Web.UI\ObjectStateFormatter.cs" />\r
     <Compile Include="System.Web.UI\ParseChildrenAttribute.cs" />\r
     <Compile Include="System.Web.UI\PartialCachingAttribute.cs" />\r
     <Compile Include="System.Web.UI\PartialCachingControl.cs" />\r
-    <Compile Include="System.Web.UI\PersistChildrenAttribute.cs" />\r
-    <Compile Include="System.Web.UI\PersistenceMode.cs" />\r
     <Compile Include="System.Web.UI\PersistenceModeAttribute.cs" />\r
     <Compile Include="System.Web.UI\PostBackOptions.cs" />\r
     <Compile Include="System.Web.UI\PropertyConverter.cs" />\r
     <Compile Include="System.Web.UI\StateManagedCollection.cs" />\r
     <Compile Include="System.Web.UI\StaticPartialCachingControl.cs" />\r
     <Compile Include="System.Web.UI\StringPropertyBuilder.cs" />\r
-    <Compile Include="System.Web.UI\SupportsEventValidationAttribute.cs" />\r
     <Compile Include="System.Web.UI\TagPrefixAttribute.cs" />\r
     <Compile Include="System.Web.UI\TemplateBuilder.cs" />\r
     <Compile Include="System.Web.UI\TemplateContainerAttribute.cs" />\r
     <Compile Include="System.Web.UI\TemplateContentType.cs" />\r
     <Compile Include="System.Web.UI\TemplateControl.cs" />\r
     <Compile Include="System.Web.UI\TemplateControlParser.cs" />\r
-    <Compile Include="System.Web.UI\TemplateInstance.cs" />\r
-    <Compile Include="System.Web.UI\TemplateInstanceAttribute.cs" />\r
     <Compile Include="System.Web.UI\TemplateParser.cs" />\r
     <Compile Include="System.Web.UI\TemplatePropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\ThemeableAttribute.cs" />\r
     <Compile Include="System.Web.UI\ThemeProvider.cs" />\r
     <Compile Include="System.Web.UI\ToolboxDataAttribute.cs" />\r
     <Compile Include="System.Web.UI\Triplet.cs" />\r
     <Compile Include="System.Web.UI\VerificationConditionalOperator.cs" />\r
     <Compile Include="System.Web.UI\VerificationReportLevel.cs" />\r
     <Compile Include="System.Web.UI\VerificationRule.cs" />\r
-    <Compile Include="System.Web.UI\ViewStateEncryptionMode.cs" />\r
     <Compile Include="System.Web.UI\ViewStateException.cs" />\r
-    <Compile Include="System.Web.UI\ViewStateMode.cs" />\r
     <Compile Include="System.Web.UI\ViewStateModeByIdAttribute.cs" />\r
     <Compile Include="System.Web.UI\VirtualReferenceType.cs" />\r
     <Compile Include="System.Web.UI\WebHandlerParser.cs" />\r
     <Compile Include="System.Web.Util\Helpers.cs" />\r
     <Compile Include="System.Web.Util\HttpEncoder.cs" />\r
     <Compile Include="System.Web.Util\ICalls.cs" />\r
-    <Compile Include="System.Web.Util\IWebObjectFactory.cs" />\r
     <Compile Include="System.Web.Util\IWebPropertyAccessor.cs" />\r
     <Compile Include="System.Web.Util\MachineKeySectionUtils.cs" />\r
-    <Compile Include="System.Web.Util\RequestValidationSource.cs" />\r
     <Compile Include="System.Web.Util\RequestValidator.cs" />\r
     <Compile Include="System.Web.Util\RuntimeHelpers.cs" />\r
     <Compile Include="System.Web.Util\SearchPattern.cs" />\r
     <Compile Include="System.Web\HttpApplication.cs" />\r
     <Compile Include="System.Web\HttpApplicationFactory.cs" />\r
     <Compile Include="System.Web\HttpApplicationState.cs" />\r
-    <Compile Include="System.Web\HttpApplicationStateWrapper.cs" />\r
     <Compile Include="System.Web\HttpBrowserCapabilities.cs" />\r
-    <Compile Include="System.Web\HttpBrowserCapabilitiesWrapper.cs" />\r
     <Compile Include="System.Web\HttpCacheability.cs" />\r
     <Compile Include="System.Web\HttpCachePolicy.cs" />\r
-    <Compile Include="System.Web\HttpCachePolicyWrapper.cs" />\r
     <Compile Include="System.Web\HttpCacheRevalidation.cs" />\r
     <Compile Include="System.Web\HttpCacheValidateHandler.cs" />\r
     <Compile Include="System.Web\HttpCacheVaryByContentEncodings.cs" />\r
     <Compile Include="System.Web\HttpRuntime.cs" />\r
     <Compile Include="System.Web\HttpServerUtility.cs" />\r
     <Compile Include="System.Web\HttpServerUtilityWrapper.cs" />\r
-    <Compile Include="System.Web\HttpSessionStateWrapper.cs" />\r
     <Compile Include="System.Web\HttpStaticObjectsCollection.cs" />\r
     <Compile Include="System.Web\HttpTaskAsyncHandler.cs" />\r
     <Compile Include="System.Web\HttpUnhandledException.cs" />\r
     <Compile Include="System.Web\HttpValidationStatus.cs" />\r
     <Compile Include="System.Web\HttpWorkerRequest.cs" />\r
     <Compile Include="System.Web\HttpWriter.cs" />\r
-    <Compile Include="System.Web\IHtmlString.cs" />\r
-    <Compile Include="System.Web\IHttpAsyncHandler.cs" />\r
-    <Compile Include="System.Web\IHttpHandler.cs" />\r
-    <Compile Include="System.Web\IHttpHandlerFactory.cs" />\r
     <Compile Include="System.Web\IHttpMapPath.cs" />\r
-    <Compile Include="System.Web\IHttpModule.cs" />\r
     <Compile Include="System.Web\IisTraceListener.cs" />\r
     <Compile Include="System.Web\InputFilterStream.cs" />\r
     <Compile Include="System.Web\IntPtrStream.cs" />\r
     <Compile Include="System.Web\OutputFilterStream.cs" />\r
     <Compile Include="System.Web\ParserError.cs" />\r
     <Compile Include="System.Web\ParserErrorCollection.cs" />\r
-    <Compile Include="System.Web\PreApplicationStartMethodAttribute.cs" />\r
     <Compile Include="System.Web\ProcessInfo.cs" />\r
     <Compile Include="System.Web\ProcessModelInfo.cs" />\r
     <Compile Include="System.Web\ProcessShutdownReason.cs" />\r
     <Compile Include="System.Web\ProcessStatus.cs" />\r
     <Compile Include="System.Web\QueueManager.cs" />\r
-    <Compile Include="System.Web\ReadEntityBodyMode.cs" />\r
-    <Compile Include="System.Web\RequestNotification.cs" />\r
-    <Compile Include="System.Web\RequestNotificationStatus.cs" />\r
     <Compile Include="System.Web\ServerVariablesCollection.cs" />\r
     <Compile Include="System.Web\SiteMap.cs" />\r
     <Compile Include="System.Web\SiteMapNode.cs" />\r
     <Compile Include="System.Web\TaskEventHandler.cs" />\r
     <Compile Include="System.Web\TempFileStream.cs" />\r
     <Compile Include="System.Web\TraceContext.cs" />\r
-    <Compile Include="System.Web\TraceContextEventArgs.cs" />\r
-    <Compile Include="System.Web\TraceContextEventHandler.cs" />\r
     <Compile Include="System.Web\TraceContextRecord.cs" />\r
     <Compile Include="System.Web\TraceData.cs" />\r
     <Compile Include="System.Web\TraceManager.cs" />\r
diff --git a/mcs/class/System.Web/System.Web-plainweb-net_4_5.csproj b/mcs/class/System.Web/System.Web-plainweb-net_4_5.csproj
deleted file mode 100644 (file)
index 925358a..0000000
+++ /dev/null
@@ -1,1605 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{21892B00-1C9F-44F3-AE4C-A6A9A210CEC7}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,612,618,618</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5/plainweb</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,612,618,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;INSIDE_SYSTEM_WEB</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,612,618,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;INSIDE_SYSTEM_WEB</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\System.Design\System.Data.Design\TypedDataSetGenerator.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpApplicationStateBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpApplicationStateWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpBrowserCapabilitiesBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpBrowserCapabilitiesWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpCachePolicyBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpCachePolicyWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpContextBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpContextWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpFileCollectionBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpFileCollectionWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpPostedFileBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpPostedFileWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpRequestBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpRequestWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpResponseBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpResponseWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpServerUtilityBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpServerUtilityWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpSessionStateBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpSessionStateWrapper.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpStaticObjectsCollectionBase.cs" />\r
-    <Compile Include="..\System.Web.Abstractions\System.Web\HttpStaticObjectsCollectionWrapper.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\HttpMethodConstraint.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\IRouteConstraint.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\IRouteHandler.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\PatternParser.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\PatternToken.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\PatternTokenType.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RequestContext.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\Route.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteBase.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteCollection.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteData.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteDirection.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteTable.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteValueDictionary.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\RouteValueDictionaryExtensions.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\StopRoutingHandler.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\UrlRoutingHandler.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\UrlRoutingModule.cs" />\r
-    <Compile Include="..\System.Web.Routing\System.Web.Routing\VirtualPathData.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\AssemblyNamesTypeResolutionService.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ByteArrayFromResXHandler.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\FileRefHandler.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\InMemoryHandler.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\NullRefHandler.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXDataNode.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXDataNodeHandler.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXFileRef.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXNullRef.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXResourceReader.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXResourceSet.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\ResXResourceWriter.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\SerializedFromResXHandler.cs" />\r
-    <Compile Include="..\System.Windows.Forms\System.Resources\TypeConverterFromResXHandler.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Web.Util\ISectionSettingsMapper.cs" />\r
-    <Compile Include="Mono.Web.Util\MembershipSectionMapper.cs" />\r
-    <Compile Include="Mono.Web.Util\RoleManagerSectionMapper.cs" />\r
-    <Compile Include="Mono.Web.Util\SettingsMapping.cs" />\r
-    <Compile Include="Mono.Web.Util\SettingsMappingManager.cs" />\r
-    <Compile Include="Mono.Web.Util\SettingsMappingWhat.cs" />\r
-    <Compile Include="System.Collections.Concurrent\SplitOrderedList.cs" />\r
-    <Compile Include="System.Web.Caching\AggregateCacheDependency.cs" />\r
-    <Compile Include="System.Web.Caching\Cache.cs" />\r
-    <Compile Include="System.Web.Caching\CacheDependency.cs" />\r
-    <Compile Include="System.Web.Caching\CachedRawResponse.cs" />\r
-    <Compile Include="System.Web.Caching\CachedVaryBy.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItem.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemEnumerator.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemLRU.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemPriority.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemPriorityQueue.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemPriorityQueueDebug.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemRemovedCallback.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemRemovedReason.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemUpdateCallback.cs" />\r
-    <Compile Include="System.Web.Caching\CacheItemUpdateReason.cs" />\r
-    <Compile Include="System.Web.Caching\DatabaseNotEnabledForNotificationException.cs" />\r
-    <Compile Include="System.Web.Caching\FileResponseElement.cs" />\r
-    <Compile Include="System.Web.Caching\HeaderElement.cs" />\r
-    <Compile Include="System.Web.Caching\InMemoryOutputCacheProvider.cs" />\r
-    <Compile Include="System.Web.Caching\IOutputCacheEntry.cs" />\r
-    <Compile Include="System.Web.Caching\MemoryResponseElement.cs" />\r
-    <Compile Include="System.Web.Caching\OutputCache.cs" />\r
-    <Compile Include="System.Web.Caching\OutputCacheModule.cs" />\r
-    <Compile Include="System.Web.Caching\OutputCacheProvider.cs" />\r
-    <Compile Include="System.Web.Caching\OutputCacheProviderCollection.cs" />\r
-    <Compile Include="System.Web.Caching\ResponseElement.cs" />\r
-    <Compile Include="System.Web.Caching\SqlCacheDependency.cs" />\r
-    <Compile Include="System.Web.Caching\SqlCacheDependencyAdmin.cs" />\r
-    <Compile Include="System.Web.Caching\SubstitutionResponseElement.cs" />\r
-    <Compile Include="System.Web.Caching\TableNotEnabledForNotificationException.cs" />\r
-    <Compile Include="System.Web.Compilation\AppCodeCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\ApplicationFileBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\AppResourceFileInfo.cs" />\r
-    <Compile Include="System.Web.Compilation\AppResourceFilesCollection.cs" />\r
-    <Compile Include="System.Web.Compilation\AppResourcesAssemblyBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\AppResourcesCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\AppSettingsExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\AppWebReferencesCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\AspComponent.cs" />\r
-    <Compile Include="System.Web.Compilation\AspComponentFoundry.cs" />\r
-    <Compile Include="System.Web.Compilation\AspGenerator.cs" />\r
-    <Compile Include="System.Web.Compilation\AspParser.cs" />\r
-    <Compile Include="System.Web.Compilation\AspTokenizer.cs" />\r
-    <Compile Include="System.Web.Compilation\AssemblyBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\BaseCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildDependencySet.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManager.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManagerCacheItem.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManagerDirectoryBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManagerHost.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManagerHostUnloadEventArgs.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManagerHostUnloadEventHandler.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildManagerRemoveEntryEventHandler.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProviderAppliesTo.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProviderAppliesToAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProviderGroup.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProviderResultFlags.cs" />\r
-    <Compile Include="System.Web.Compilation\CachingCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\ClientBuildManager.cs" />\r
-    <Compile Include="System.Web.Compilation\ClientBuildManagerCallback.cs" />\r
-    <Compile Include="System.Web.Compilation\ClientBuildManagerParameter.cs" />\r
-    <Compile Include="System.Web.Compilation\CompilationException.cs" />\r
-    <Compile Include="System.Web.Compilation\CompilerType.cs" />\r
-    <Compile Include="System.Web.Compilation\ConnectionStringsExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\DefaultResourceProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\DefaultResourceProviderFactory.cs" />\r
-    <Compile Include="System.Web.Compilation\DesignTimeResourceProviderFactoryAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\Directive.cs" />\r
-    <Compile Include="System.Web.Compilation\ExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\ExpressionBuilderContext.cs" />\r
-    <Compile Include="System.Web.Compilation\ExpressionEditorAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\ExpressionPrefixAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\FolderLevelBuildProviderAppliesTo.cs" />\r
-    <Compile Include="System.Web.Compilation\FolderLevelBuildProviderAppliesToAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\ForceCopyBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\GenericBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\GlobalAsaxCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\IAssemblyPostProcessor.cs" />\r
-    <Compile Include="System.Web.Compilation\IgnoreFileBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\IImplicitResourceProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\ILocation.cs" />\r
-    <Compile Include="System.Web.Compilation\ImplicitResourceKey.cs" />\r
-    <Compile Include="System.Web.Compilation\IResourceProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\LinePragmaCodeInfo.cs" />\r
-    <Compile Include="System.Web.Compilation\Location.cs" />\r
-    <Compile Include="System.Web.Compilation\MasterPageBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\MasterPageCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\PageBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\PageCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\PageThemeCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\ParseException.cs" />\r
-    <Compile Include="System.Web.Compilation\PrecompilationFlags.cs" />\r
-    <Compile Include="System.Web.Compilation\PreservationFile.cs" />\r
-    <Compile Include="System.Web.Compilation\ResourceExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\ResourceExpressionFields.cs" />\r
-    <Compile Include="System.Web.Compilation\ResourceProviderFactory.cs" />\r
-    <Compile Include="System.Web.Compilation\RouteUrlExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\RouteValueExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Compilation\SimpleBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\TagAttributes.cs" />\r
-    <Compile Include="System.Web.Compilation\TagType.cs" />\r
-    <Compile Include="System.Web.Compilation\TemplateBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\TemplateControlCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\ThemeDirectoryBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\ThemeDirectoryCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\UserControlBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\UserControlCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\WebHandlerBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\WebServiceBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\WebServiceCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\WsdlBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\XsdBuildProvider.cs" />\r
-    <Compile Include="System.Web.Configuration.Internal\IInternalConfigWebHost.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AdapterDictionary.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AnonymousIdentificationSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ApplicationSettingsConfigurationFileMap.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AssemblyCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AssemblyInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthenticationMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthenticationSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthorizationRule.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthorizationRuleAction.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthorizationRuleCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthorizationSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\BufferModesCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\BufferModeSettings.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\BuildProvider.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\BuildProviderCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CacheSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CapabilitiesBuild.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CapabilitiesResult.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ClientTarget.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ClientTargetCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ClientTargetSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CodeSubDirectoriesCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CodeSubDirectory.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CompilationSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\Compiler.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CompilerCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomError.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomErrorCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomErrorsMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomErrorsRedirectMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomErrorsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\DeploymentSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\EventMappingSettings.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\EventMappingSettingsCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ExpressionBuilder.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ExpressionBuilderCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationConfiguration.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationCredentials.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationUser.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationUserCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsAuthPasswordFormat.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsProtectionEnum.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\GlobalizationSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HandlersUtil.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HealthMonitoringSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HostingEnvironmentSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpCapabilitiesBase.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpCapabilitiesDefaultProvider.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpCapabilitiesProvider.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpConfigurationContext.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpConfigurationSystem.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpCookiesSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpHandlerAction.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpHandlerActionCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpHandlersSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpModuleAction.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpModuleActionCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpModulesSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\HttpRuntimeSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ICapabilitiesProcess.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IConfigMapPath.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IConfigMapPathFactory.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeyCompatibilityMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeyValidation.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeyValidationConverter.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MembershipSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MonoSettingsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\NamespaceCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\NamespaceInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\Build.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\Exception.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\File.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\Identification.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\Node.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\NodeTypes.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\nBrowser\Result.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\NullableStringValidator.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\OutputCacheProfile.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\OutputCacheProfileCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\OutputCacheSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\OutputCacheSettingsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\PagesEnableSessionState.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\PagesSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\PassportAuthentication.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\PositiveTimeSpanValidator.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelComAuthenticationLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelComImpersonationLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelLogLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfileGroupSettings.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfileGroupSettingsCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfilePropertyNameValidator.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfilePropertySettings.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfilePropertySettingsCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfileSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfileSettings.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProfileSettingsCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\PropertyHelper.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProvidersHelper.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\RegexWorker.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\RoleManagerSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\RootProfilePropertySettingsCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\RuleSettings.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\RuleSettingsCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SecurityPolicySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SerializationMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SessionPageStateSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SessionStateSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SiteMapSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SqlCacheDependencyDatabase.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SqlCacheDependencyDatabaseCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SqlCacheDependencySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SystemWebCachingSectionGroup.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SystemWebSectionGroup.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TagMapCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TagMapInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TagPrefixCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TagPrefixInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TraceDisplayMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TraceSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TransformerInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TransformerInfoCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TrustLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TrustLevelCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TrustSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\UrlMapping.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\UrlMappingCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\UrlMappingsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\VersionConverter.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\VirtualDirectoryMapping.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\VirtualDirectoryMappingCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebApplicationLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebConfigurationFileMap.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebConfigurationHost.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebConfigurationManager.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebContext.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebControlsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebPartsPersonalization.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebPartsPersonalizationAuthorization.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebPartsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\XhtmlConformanceMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\XhtmlConformanceSection.cs" />\r
-    <Compile Include="System.Web.Handlers\AssemblyResourceLoader.cs" />\r
-    <Compile Include="System.Web.Handlers\TraceHandler.cs" />\r
-    <Compile Include="System.Web.Hosting\AppDomainFactory.cs" />\r
-    <Compile Include="System.Web.Hosting\ApplicationHost.cs" />\r
-    <Compile Include="System.Web.Hosting\ApplicationInfo.cs" />\r
-    <Compile Include="System.Web.Hosting\ApplicationManager.cs" />\r
-    <Compile Include="System.Web.Hosting\AppManagerAppDomainFactory.cs" />\r
-    <Compile Include="System.Web.Hosting\BareApplicationHost.cs" />\r
-    <Compile Include="System.Web.Hosting\DefaultVirtualDirectory.cs" />\r
-    <Compile Include="System.Web.Hosting\DefaultVirtualFile.cs" />\r
-    <Compile Include="System.Web.Hosting\DefaultVirtualPathProvider.cs" />\r
-    <Compile Include="System.Web.Hosting\HostingEnvironment.cs" />\r
-    <Compile Include="System.Web.Hosting\IAppDomainFactory.cs" />\r
-    <Compile Include="System.Web.Hosting\IApplicationHost.cs" />\r
-    <Compile Include="System.Web.Hosting\IAppManagerAppDomainFactory.cs" />\r
-    <Compile Include="System.Web.Hosting\IISAPIRuntime.cs" />\r
-    <Compile Include="System.Web.Hosting\IRegisteredObject.cs" />\r
-    <Compile Include="System.Web.Hosting\ISAPIRuntime.cs" />\r
-    <Compile Include="System.Web.Hosting\SimpleWorkerRequest.cs" />\r
-    <Compile Include="System.Web.Hosting\VirtualDirectory.cs" />\r
-    <Compile Include="System.Web.Hosting\VirtualFile.cs" />\r
-    <Compile Include="System.Web.Hosting\VirtualFileBase.cs" />\r
-    <Compile Include="System.Web.Hosting\VirtualPathProvider.cs" />\r
-    <Compile Include="System.Web.Mail\Base64AttachmentEncoder.cs" />\r
-    <Compile Include="System.Web.Mail\IAttachmentEncoder.cs" />\r
-    <Compile Include="System.Web.Mail\MailAddress.cs" />\r
-    <Compile Include="System.Web.Mail\MailAddressCollection.cs" />\r
-    <Compile Include="System.Web.Mail\MailAttachment.cs" />\r
-    <Compile Include="System.Web.Mail\MailEncoding.cs" />\r
-    <Compile Include="System.Web.Mail\MailFormat.cs" />\r
-    <Compile Include="System.Web.Mail\MailHeader.cs" />\r
-    <Compile Include="System.Web.Mail\MailMessage.cs" />\r
-    <Compile Include="System.Web.Mail\MailMessageWrapper.cs" />\r
-    <Compile Include="System.Web.Mail\MailPriority.cs" />\r
-    <Compile Include="System.Web.Mail\MailUtil.cs" />\r
-    <Compile Include="System.Web.Mail\RelatedBodyPart.cs" />\r
-    <Compile Include="System.Web.Mail\SmtpClient.cs" />\r
-    <Compile Include="System.Web.Mail\SmtpException.cs" />\r
-    <Compile Include="System.Web.Mail\SmtpMail.cs" />\r
-    <Compile Include="System.Web.Mail\SmtpResponse.cs" />\r
-    <Compile Include="System.Web.Mail\SmtpStream.cs" />\r
-    <Compile Include="System.Web.Mail\ToUUEncodingTransform.cs" />\r
-    <Compile Include="System.Web.Mail\UUAttachmentEncoder.cs" />\r
-    <Compile Include="System.Web.Management\EventNotificationType.cs" />\r
-    <Compile Include="System.Web.Management\IRegiisUtility.cs" />\r
-    <Compile Include="System.Web.Management\IWebEventCustomEvaluator.cs" />\r
-    <Compile Include="System.Web.Management\RuleFiringRecord.cs" />\r
-    <Compile Include="System.Web.Management\SessionStateType.cs" />\r
-    <Compile Include="System.Web.Management\SqlFeatures.cs" />\r
-    <Compile Include="System.Web.Management\WebApplicationInformation.cs" />\r
-    <Compile Include="System.Web.Management\WebBaseEvent.cs" />\r
-    <Compile Include="System.Web.Management\WebEventCodes.cs" />\r
-    <Compile Include="System.Web.Management\WebEventFormatter.cs" />\r
-    <Compile Include="System.Web.Profile\CustomProviderDataAttribute.cs" />\r
-    <Compile Include="System.Web.Profile\DefaultProfile.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileAuthenticationOption.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileAutoSaveEventArgs.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileAutoSaveEventHandler.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileBase.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileEventArgs.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileEventHandler.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileGroupBase.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileInfo.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileInfoCollection.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileManager.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileMigrateEventArgs.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileMigrateEventHandler.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileModule.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileParser.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileProvider.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileProviderAttribute.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileProviderCollection.cs" />\r
-    <Compile Include="System.Web.Profile\SettingsAllowAnonymousAttribute.cs" />\r
-    <Compile Include="System.Web.Profile\SqliteProfileProvider.cs" />\r
-    <Compile Include="System.Web.Profile\SqlProfileProvider.cs" />\r
-    <Compile Include="System.Web.Properties\TranslationProperties.Designer.cs" />\r
-    <Compile Include="System.Web.Routing\PageRouteHandler.cs" />\r
-    <Compile Include="System.Web.Security\ActiveDirectoryConnectionProtection.cs" />\r
-    <Compile Include="System.Web.Security\ActiveDirectoryMembershipProvider.cs" />\r
-    <Compile Include="System.Web.Security\AnonymousIdentificationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\AnonymousIdentificationEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\AnonymousIdentificationModule.cs" />\r
-    <Compile Include="System.Web.Security\AspNetDBSchemaChecker.cs" />\r
-    <Compile Include="System.Web.Security\CookieProtection.cs" />\r
-    <Compile Include="System.Web.Security\DefaultAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\DefaultAuthenticationEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\DefaultAuthenticationModule.cs" />\r
-    <Compile Include="System.Web.Security\FileAuthorizationModule.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthentication.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthenticationEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthenticationModule.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthenticationTicket.cs" />\r
-    <Compile Include="System.Web.Security\FormsIdentity.cs" />\r
-    <Compile Include="System.Web.Security\MachineKey.cs" />\r
-    <Compile Include="System.Web.Security\MachineKeyProtection.cs" />\r
-    <Compile Include="System.Web.Security\Membership.cs" />\r
-    <Compile Include="System.Web.Security\MembershipHelper.cs" />\r
-    <Compile Include="System.Web.Security\MembershipPasswordAttribute.cs" />\r
-    <Compile Include="System.Web.Security\PassportAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\PassportAuthenticationEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\PassportAuthenticationModule.cs" />\r
-    <Compile Include="System.Web.Security\PassportIdentity.cs" />\r
-    <Compile Include="System.Web.Security\RoleManagerEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\RoleManagerEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\RoleManagerModule.cs" />\r
-    <Compile Include="System.Web.Security\RolePrincipal.cs" />\r
-    <Compile Include="System.Web.Security\RoleProviderCollection.cs" />\r
-    <Compile Include="System.Web.Security\Roles.cs" />\r
-    <Compile Include="System.Web.Security\SqliteMembershipProvider.cs" />\r
-    <Compile Include="System.Web.Security\SqliteRoleProvider.cs" />\r
-    <Compile Include="System.Web.Security\SqlMembershipProvider.cs" />\r
-    <Compile Include="System.Web.Security\SqlRoleProvider.cs" />\r
-    <Compile Include="System.Web.Security\UrlAuthorizationModule.cs" />\r
-    <Compile Include="System.Web.Security\WindowsAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\WindowsAuthenticationEventHandler.cs" />\r
-    <Compile Include="System.Web.Security\WindowsAuthenticationModule.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\HttpSessionState.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\HttpSessionStateContainer.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\IHttpSessionState.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\IReadOnlySessionState.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\IRequiresSessionState.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\ISessionIDManager.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\ISessionStateItemCollection.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\IStateRuntime.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\RemoteStateServer.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionId.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionIDManager.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionInProcHandler.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionSQLServerHandler.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateActions.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateBehavior.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateItemCollection.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateItemExpireCallback.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateMode.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateModule.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateServerHandler.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateStoreData.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateStoreProviderBase.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateUtility.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\StateRuntime.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\StateServerItem.cs" />\r
-    <Compile Include="System.Web.UI.Adapters\ControlAdapter.cs" />\r
-    <Compile Include="System.Web.UI.Adapters\PageAdapter.cs" />\r
-    <Compile Include="System.Web.UI.Adapters\WmlPostFieldType.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlAnchor.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlButton.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlContainerControl.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlControl.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlEmptyTagControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlForm.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlGenericControl.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlHead.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlHeadBuilder.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlImage.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputButton.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputCheckBox.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputControl.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputFile.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputHidden.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputImage.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputPassword.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputRadioButton.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputReset.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputSubmit.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlInputText.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlLink.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlMeta.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlSelect.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlSelectBuilder.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTable.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTableCell.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTableCellCollection.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTableRow.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTableRowCollection.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTextArea.cs" />\r
-    <Compile Include="System.Web.UI.HtmlControls\HtmlTitle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.Adapters\DataBoundControlAdapter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.Adapters\HideDisabledControlAdapter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.Adapters\HierarchicalDataBoundControlAdapter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.Adapters\MenuAdapter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.Adapters\WebControlAdapter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ConnectionConsumerCallback.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ConnectionInterfaceCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ConnectionPoint.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ConnectionPointType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ConnectionProviderCallback.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ConsumerConnectionPoint.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\EditorPart.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\EditorPartCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IPersonalizable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ITrackingPersonalizable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ITransformerConfigurationControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IVersioningPersonalizable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebActionable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebEditable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPart.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartHttpHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartParameters.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartTable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\Part.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PartChromeState.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PartChromeType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PersonalizableAttribute.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PersonalizationScope.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ProviderConnectionPoint.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\TypeCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPart.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartAuthorizationEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartAuthorizationEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartCancelEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartCancelEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartExportMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartHelpMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartPageMenuMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerb.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerbCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerbsEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerbsEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AccessDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AccessDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AdCreatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AdCreatedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AdRotator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AssociatedControlConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AuthenticateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AuthenticateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AutoCompleteType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AutoGeneratedField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AutoGeneratedFieldProperties.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BaseCompareValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BaseDataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BaseDataList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BaseMenuRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BaseValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BorderStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BoundColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BoundField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletedList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletedListDisplayMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletedListEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletedListEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Button.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonColumnType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonFieldBase.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Calendar.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CalendarDay.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CalendarSelectionMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ChangePassword.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CheckBox.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CheckBoxField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CheckBoxList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ChildTable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CircleHotSpot.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CollectionDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CommandField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CompareValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CompleteWizardStep.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CompositeControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CompositeDataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ContainedTable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Content.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ContentControlBuilderInternal.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ContentDirection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ContentPlaceHolder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ContentPlaceHolderBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ControlIDConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ControlParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ControlPropertyNameConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CookieParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CreateUserErrorEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CreateUserErrorEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CreateUserWizard.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CreateUserWizardStep.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CustomValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataBoundControlMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlButton.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlCellType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlCommands.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlFieldCell.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlFieldCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlFieldHeaderCell.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlRowState.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlRowType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGrid.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridColumnCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridItemEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridPageChangedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridPageChangedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridPagerStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridSortCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridSortCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataKey.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataKeyArray.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataKeyCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListItemEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataSourceCacheManager.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DayNameFormat.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DayRenderEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DayRenderEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewDeletedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewDeletedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewDeleteEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewDeleteEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewInsertedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewInsertedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewInsertEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewInsertEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewModeEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewModeEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewPageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewPageEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewPagerRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewRowCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewUpdatedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewUpdateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewUpdateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DropDownList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\EditCommandColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\EmbeddedMailObject.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\EmbeddedMailObjectsCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FileUpload.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FirstDayOfWeek.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FontInfo.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FontNamesConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FontSize.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FontUnit.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FontUnitConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewDeletedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewDeletedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewDeleteEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewDeleteEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewInsertedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewInsertedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewInsertEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewInsertEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewModeEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewModeEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewPageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewPageEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewPagerRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewUpdatedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewUpdateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewUpdateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridLines.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCancelEditEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCancelEditEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewDeletedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewDeletedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewDeleteEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewDeleteEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewEditEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewEditEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewPageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewPageEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewRowCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewRowEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewRowEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSelectEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSelectEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSortEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSortEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewUpdatedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewUpdateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewUpdateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HiddenField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HierarchicalDataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HorizontalAlign.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HorizontalAlignConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HotSpot.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HotSpotCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HotSpotMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HyperLink.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HyperLinkColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HyperLinkControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HyperLinkField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IButtonControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ICallbackContainer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ICompositeControlDesignerAccessor.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IDataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IDataBoundItemControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IDataBoundListControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IFieldControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Image.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageAlign.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageButton.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageMap.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageMapEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageMapEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IMenuRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IPersistedSelector.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IPostBackContainer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IRenderOuterTable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IRepeatInfoUser.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Label.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LabelControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LinkButton.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LinkButtonControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListBox.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListItemControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListItemType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListSelectionMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Literal.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LiteralControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LiteralMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Localize.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Login.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginCancelEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginCancelEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginFailureAction.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginName.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginStatus.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginTextLayout.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LogoutAction.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MailDefinition.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MailMessageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MailMessageEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Menu.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItemBinding.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItemBindingCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItemStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItemStyleCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuItemTemplateContainer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuListRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuRenderingMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuTableRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MonthChangedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MonthChangedEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MultiView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MultiViewControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\NamedCssStyleCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\NextPrevFormat.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceDisposingEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceDisposingEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceFilteringEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceFilteringEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceMethodEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceMethodEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceSelectingEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceSelectingEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceStatusEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceStatusEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Orientation.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagedDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerButtons.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerPosition.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerSettings.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Panel.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PanelStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Parameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ParameterCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PasswordRecovery.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PathDirection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PlaceHolder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PlaceHolderControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PolygonHotSpot.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ProfileParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\QueryStringParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RadioButton.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RadioButtonList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RangeValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RectangleHotSpot.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RegularExpressionValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeatDirection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Repeater.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterItemEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeatInfo.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeatLayout.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RequiredFieldValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RoleGroup.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RoleGroupCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RouteParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ScrollBars.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SelectedDatesCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SendMailErrorEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SendMailErrorEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ServerValidateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ServerValidateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SessionParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapHierarchicalDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItemEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItemType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapPath.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapViewType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SortDirection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceCommandType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceFilteringEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceFilteringEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceSelectingEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceSelectingEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceStatusEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceStatusEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\StringArrayConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Style.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\StyleBlock.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\StyleCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SubMenuStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SubMenuStyleCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Substitution.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Table.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableCaptionAlign.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableCell.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableCellCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableCellControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableFooterRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableHeaderCell.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableHeaderRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableHeaderScope.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableItemStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableRowCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableRowSection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableSectionStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TargetConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TemplateColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TemplatedWizardStep.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TemplateField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TextAlign.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TextBox.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TextBoxControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TextBoxMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TitleFormat.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeBinding.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeBindingCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeSelectAction.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeStyleCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeTypes.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeViewImageSet.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Unit.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\UnitConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\UnitType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidatedControlConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationCompareOperator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationDataType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationSummary.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationSummaryDisplayMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidatorDisplay.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\VerticalAlign.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\VerticalAlignConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\View.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ViewCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WebColorConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WebControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Wizard.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardLayoutContainer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardLayoutNavigationContainer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardNavigationEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardNavigationEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardStep.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardStepBase.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardStepCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardStepControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WizardStepType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Xml.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlDataSourceNodeDescriptor.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlDataSourcePropertyDescriptor.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlHierarchicalDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlHierarchicalEnumerable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\XmlHierarchyData.cs" />\r
-    <Compile Include="System.Web.UI\ApplicationFileParser.cs" />\r
-    <Compile Include="System.Web.UI\AttributeCollection.cs" />\r
-    <Compile Include="System.Web.UI\BaseParser.cs" />\r
-    <Compile Include="System.Web.UI\BasePartialCachingControl.cs" />\r
-    <Compile Include="System.Web.UI\BaseTemplateParser.cs" />\r
-    <Compile Include="System.Web.UI\BoundPropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\BuilderPropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\BuildMethod.cs" />\r
-    <Compile Include="System.Web.UI\BuildTemplateMethod.cs" />\r
-    <Compile Include="System.Web.UI\ChtmlTextWriter.cs" />\r
-    <Compile Include="System.Web.UI\ClientIDMode.cs" />\r
-    <Compile Include="System.Web.UI\ClientScriptManager.cs" />\r
-    <Compile Include="System.Web.UI\CodeBuilder.cs" />\r
-    <Compile Include="System.Web.UI\CodeConstructType.cs" />\r
-    <Compile Include="System.Web.UI\CodeRenderBuilder.cs" />\r
-    <Compile Include="System.Web.UI\CollectionBuilder.cs" />\r
-    <Compile Include="System.Web.UI\CompilationMode.cs" />\r
-    <Compile Include="System.Web.UI\CompiledBindableTemplateBuilder.cs" />\r
-    <Compile Include="System.Web.UI\CompiledTemplateBuilder.cs" />\r
-    <Compile Include="System.Web.UI\ComplexPropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\ConflictOptions.cs" />\r
-    <Compile Include="System.Web.UI\ConstructorNeedsTagAttribute.cs" />\r
-    <Compile Include="System.Web.UI\Control.cs" />\r
-    <Compile Include="System.Web.UI\ControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\ControlBuilderAttribute.cs" />\r
-    <Compile Include="System.Web.UI\ControlCachePolicy.cs" />\r
-    <Compile Include="System.Web.UI\ControlCollection.cs" />\r
-    <Compile Include="System.Web.UI\ControlSkin.cs" />\r
-    <Compile Include="System.Web.UI\ControlSkinDelegate.cs" />\r
-    <Compile Include="System.Web.UI\ControlValuePropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\CssClassPropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\CssStyleCollection.cs" />\r
-    <Compile Include="System.Web.UI\DataBinder.cs" />\r
-    <Compile Include="System.Web.UI\DataBinding.cs" />\r
-    <Compile Include="System.Web.UI\DataBindingBuilder.cs" />\r
-    <Compile Include="System.Web.UI\DataBindingCollection.cs" />\r
-    <Compile Include="System.Web.UI\DataBindingHandlerAttribute.cs" />\r
-    <Compile Include="System.Web.UI\DataBoundLiteralControl.cs" />\r
-    <Compile Include="System.Web.UI\DataKeyPropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceCacheDurationConverter.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceCacheExpiry.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceCapabilities.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceControl.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceOperation.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceSelectArguments.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceView.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceViewOperationCallback.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceViewSelectCallback.cs" />\r
-    <Compile Include="System.Web.UI\DesignerDataBoundLiteralControl.cs" />\r
-    <Compile Include="System.Web.UI\DesignTimeParseData.cs" />\r
-    <Compile Include="System.Web.UI\DesignTimeTemplateParser.cs" />\r
-    <Compile Include="System.Web.UI\EmptyControlCollection.cs" />\r
-    <Compile Include="System.Web.UI\EventEntry.cs" />\r
-    <Compile Include="System.Web.UI\ExpressionBinding.cs" />\r
-    <Compile Include="System.Web.UI\ExpressionBindingCollection.cs" />\r
-    <Compile Include="System.Web.UI\ExtractTemplateValuesMethod.cs" />\r
-    <Compile Include="System.Web.UI\FileLevelControlBuilderAttribute.cs" />\r
-    <Compile Include="System.Web.UI\FileLevelMasterPageControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\FileLevelPageControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\FileLevelUserControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\FilterableAttribute.cs" />\r
-    <Compile Include="System.Web.UI\HiddenFieldPageStatePersister.cs" />\r
-    <Compile Include="System.Web.UI\HierarchicalDataSourceControl.cs" />\r
-    <Compile Include="System.Web.UI\HierarchicalDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI\Html32TextWriter.cs" />\r
-    <Compile Include="System.Web.UI\HtmlControlPersistableAttribute.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriter.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriterAttribute.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriterStyle.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriterTag.cs" />\r
-    <Compile Include="System.Web.UI\IAttributeAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IAutoFieldGenerator.cs" />\r
-    <Compile Include="System.Web.UI\IBindableControl.cs" />\r
-    <Compile Include="System.Web.UI\IBindableTemplate.cs" />\r
-    <Compile Include="System.Web.UI\ICallbackEventHandler.cs" />\r
-    <Compile Include="System.Web.UI\ICheckBoxControl.cs" />\r
-    <Compile Include="System.Web.UI\IControlBuilderAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IControlDesignerAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IDataBindingsAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IDataItemContainer.cs" />\r
-    <Compile Include="System.Web.UI\IDataKeysControl.cs" />\r
-    <Compile Include="System.Web.UI\IDataSource.cs" />\r
-    <Compile Include="System.Web.UI\IDataSourceViewSchemaAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IDReferencePropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\IEditableTextControl.cs" />\r
-    <Compile Include="System.Web.UI\IExpressionsAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IFilterResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IgnoreUnknownContentAttribute.cs" />\r
-    <Compile Include="System.Web.UI\IHierarchicalDataSource.cs" />\r
-    <Compile Include="System.Web.UI\IHierarchicalEnumerable.cs" />\r
-    <Compile Include="System.Web.UI\IHierarchyData.cs" />\r
-    <Compile Include="System.Web.UI\ImageClickEventArgs.cs" />\r
-    <Compile Include="System.Web.UI\ImageClickEventHandler.cs" />\r
-    <Compile Include="System.Web.UI\INamingContainer.cs" />\r
-    <Compile Include="System.Web.UI\INavigateUIData.cs" />\r
-    <Compile Include="System.Web.UI\IndexedString.cs" />\r
-    <Compile Include="System.Web.UI\INonBindingContainer.cs" />\r
-    <Compile Include="System.Web.UI\IParserAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IPostBackDataHandler.cs" />\r
-    <Compile Include="System.Web.UI\IPostBackEventHandler.cs" />\r
-    <Compile Include="System.Web.UI\IResourceUrlGenerator.cs" />\r
-    <Compile Include="System.Web.UI\IScriptManager.cs" />\r
-    <Compile Include="System.Web.UI\IStateFormatter.cs" />\r
-    <Compile Include="System.Web.UI\IStateManager.cs" />\r
-    <Compile Include="System.Web.UI\IStyleSheet.cs" />\r
-    <Compile Include="System.Web.UI\ITagNameToTypeMapper.cs" />\r
-    <Compile Include="System.Web.UI\ITemplate.cs" />\r
-    <Compile Include="System.Web.UI\ITextControl.cs" />\r
-    <Compile Include="System.Web.UI\IThemeResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IUrlResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IUserControlDesignerAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IUserControlTypeResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IValidator.cs" />\r
-    <Compile Include="System.Web.UI\ListSourceHelper.cs" />\r
-    <Compile Include="System.Web.UI\LiteralControl.cs" />\r
-    <Compile Include="System.Web.UI\LosFormatter.cs" />\r
-    <Compile Include="System.Web.UI\MainDirectiveAttribute.cs" />\r
-    <Compile Include="System.Web.UI\MasterPage.cs" />\r
-    <Compile Include="System.Web.UI\MasterPageControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\MasterPageParser.cs" />\r
-    <Compile Include="System.Web.UI\MinimizableAttributeTypeConverter.cs" />\r
-    <Compile Include="System.Web.UI\NonVisualControlAttribute.cs" />\r
-    <Compile Include="System.Web.UI\ObjectConverter.cs" />\r
-    <Compile Include="System.Web.UI\ObjectPersistData.cs" />\r
-    <Compile Include="System.Web.UI\ObjectStateFormatter.cs" />\r
-    <Compile Include="System.Web.UI\ObjectTag.cs" />\r
-    <Compile Include="System.Web.UI\ObjectTagBuilder.cs" />\r
-    <Compile Include="System.Web.UI\OutputCacheLocation.cs" />\r
-    <Compile Include="System.Web.UI\OutputCacheParameters.cs" />\r
-    <Compile Include="System.Web.UI\Page.cs" />\r
-    <Compile Include="System.Web.UI\PageAsyncTask.cs" />\r
-    <Compile Include="System.Web.UI\PageHandlerFactory.cs" />\r
-    <Compile Include="System.Web.UI\PageLifeCycle.cs" />\r
-    <Compile Include="System.Web.UI\PageParser.cs" />\r
-    <Compile Include="System.Web.UI\PageParserFilter.cs" />\r
-    <Compile Include="System.Web.UI\PageStatePersister.cs" />\r
-    <Compile Include="System.Web.UI\PageTheme.cs" />\r
-    <Compile Include="System.Web.UI\PageThemeBuilder.cs" />\r
-    <Compile Include="System.Web.UI\PageThemeFileParser.cs" />\r
-    <Compile Include="System.Web.UI\PageThemeParser.cs" />\r
-    <Compile Include="System.Web.UI\Pair.cs" />\r
-    <Compile Include="System.Web.UI\ParseChildrenAttribute.cs" />\r
-    <Compile Include="System.Web.UI\PartialCachingAttribute.cs" />\r
-    <Compile Include="System.Web.UI\PartialCachingControl.cs" />\r
-    <Compile Include="System.Web.UI\PersistChildrenAttribute.cs" />\r
-    <Compile Include="System.Web.UI\PersistenceMode.cs" />\r
-    <Compile Include="System.Web.UI\PersistenceModeAttribute.cs" />\r
-    <Compile Include="System.Web.UI\PostBackOptions.cs" />\r
-    <Compile Include="System.Web.UI\PropertyConverter.cs" />\r
-    <Compile Include="System.Web.UI\PropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\ReadOnlyDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI\RenderMethod.cs" />\r
-    <Compile Include="System.Web.UI\ResourceBasedLiteralControl.cs" />\r
-    <Compile Include="System.Web.UI\RootBuilder.cs" />\r
-    <Compile Include="System.Web.UI\SessionPageStatePersister.cs" />\r
-    <Compile Include="System.Web.UI\SimpleHandlerFactory.cs" />\r
-    <Compile Include="System.Web.UI\SimplePropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\SimpleWebHandlerParser.cs" />\r
-    <Compile Include="System.Web.UI\SkinBuilder.cs" />\r
-    <Compile Include="System.Web.UI\StateBag.cs" />\r
-    <Compile Include="System.Web.UI\StateItem.cs" />\r
-    <Compile Include="System.Web.UI\StateManagedCollection.cs" />\r
-    <Compile Include="System.Web.UI\StaticPartialCachingControl.cs" />\r
-    <Compile Include="System.Web.UI\StringPropertyBuilder.cs" />\r
-    <Compile Include="System.Web.UI\SupportsEventValidationAttribute.cs" />\r
-    <Compile Include="System.Web.UI\TagPrefixAttribute.cs" />\r
-    <Compile Include="System.Web.UI\TemplateBuilder.cs" />\r
-    <Compile Include="System.Web.UI\TemplateContainerAttribute.cs" />\r
-    <Compile Include="System.Web.UI\TemplateContentType.cs" />\r
-    <Compile Include="System.Web.UI\TemplateControl.cs" />\r
-    <Compile Include="System.Web.UI\TemplateControlParser.cs" />\r
-    <Compile Include="System.Web.UI\TemplateInstance.cs" />\r
-    <Compile Include="System.Web.UI\TemplateInstanceAttribute.cs" />\r
-    <Compile Include="System.Web.UI\TemplateParser.cs" />\r
-    <Compile Include="System.Web.UI\TemplatePropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\ThemeableAttribute.cs" />\r
-    <Compile Include="System.Web.UI\ThemeProvider.cs" />\r
-    <Compile Include="System.Web.UI\ToolboxDataAttribute.cs" />\r
-    <Compile Include="System.Web.UI\Triplet.cs" />\r
-    <Compile Include="System.Web.UI\UnknownAttributeDescriptor.cs" />\r
-    <Compile Include="System.Web.UI\UrlPropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\UrlTypes.cs" />\r
-    <Compile Include="System.Web.UI\UserControl.cs" />\r
-    <Compile Include="System.Web.UI\UserControlControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\UserControlParser.cs" />\r
-    <Compile Include="System.Web.UI\ValidationPropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\ValidatorCollection.cs" />\r
-    <Compile Include="System.Web.UI\VerificationAttribute.cs" />\r
-    <Compile Include="System.Web.UI\VerificationConditionalOperator.cs" />\r
-    <Compile Include="System.Web.UI\VerificationReportLevel.cs" />\r
-    <Compile Include="System.Web.UI\VerificationRule.cs" />\r
-    <Compile Include="System.Web.UI\ViewStateEncryptionMode.cs" />\r
-    <Compile Include="System.Web.UI\ViewStateException.cs" />\r
-    <Compile Include="System.Web.UI\ViewStateMode.cs" />\r
-    <Compile Include="System.Web.UI\ViewStateModeByIdAttribute.cs" />\r
-    <Compile Include="System.Web.UI\VirtualReferenceType.cs" />\r
-    <Compile Include="System.Web.UI\WebHandlerParser.cs" />\r
-    <Compile Include="System.Web.UI\WebResourceAttribute.cs" />\r
-    <Compile Include="System.Web.UI\WebServiceParser.cs" />\r
-    <Compile Include="System.Web.UI\XhtmlMobileDocType.cs" />\r
-    <Compile Include="System.Web.UI\XhtmlTextWriter.cs" />\r
-    <Compile Include="System.Web.UI\XPathBinder.cs" />\r
-    <Compile Include="System.Web.Util\AltSerialization.cs" />\r
-    <Compile Include="System.Web.Util\DataSourceHelper.cs" />\r
-    <Compile Include="System.Web.Util\DataSourceResolver.cs" />\r
-    <Compile Include="System.Web.Util\FileUtils.cs" />\r
-    <Compile Include="System.Web.Util\Helpers.cs" />\r
-    <Compile Include="System.Web.Util\HttpEncoder.cs" />\r
-    <Compile Include="System.Web.Util\ICalls.cs" />\r
-    <Compile Include="System.Web.Util\IWebObjectFactory.cs" />\r
-    <Compile Include="System.Web.Util\IWebPropertyAccessor.cs" />\r
-    <Compile Include="System.Web.Util\MachineKeySectionUtils.cs" />\r
-    <Compile Include="System.Web.Util\RequestValidationSource.cs" />\r
-    <Compile Include="System.Web.Util\RequestValidator.cs" />\r
-    <Compile Include="System.Web.Util\RuntimeHelpers.cs" />\r
-    <Compile Include="System.Web.Util\SearchPattern.cs" />\r
-    <Compile Include="System.Web.Util\SecureHashCodeProvider.cs" />\r
-    <Compile Include="System.Web.Util\SerializationHelper.cs" />\r
-    <Compile Include="System.Web.Util\SimpleWebObjectFactory.cs" />\r
-    <Compile Include="System.Web.Util\StrUtils.cs" />\r
-    <Compile Include="System.Web.Util\TimeUtil.cs" />\r
-    <Compile Include="System.Web.Util\TransactedCallback.cs" />\r
-    <Compile Include="System.Web.Util\Transactions.cs" />\r
-    <Compile Include="System.Web.Util\UrlUtils.cs" />\r
-    <Compile Include="System.Web.Util\WebEncoding.cs" />\r
-    <Compile Include="System.Web.Util\WebTrace.cs" />\r
-    <Compile Include="System.Web.Util\WorkItem.cs" />\r
-    <Compile Include="System.Web.Util\WorkItemCallback.cs" />\r
-    <Compile Include="System.Web\ApplicationShutdownReason.cs" />\r
-    <Compile Include="System.Web\BaseParamsCollection.cs" />\r
-    <Compile Include="System.Web\BeginEventHandler.cs" />\r
-    <Compile Include="System.Web\BrowserCapabilities.cs" />\r
-    <Compile Include="System.Web\CapabilitiesLoader.cs" />\r
-    <Compile Include="System.Web\DefaultExceptionPageTemplate.cs" />\r
-    <Compile Include="System.Web\DefaultHttpHandler.cs" />\r
-    <Compile Include="System.Web\DynamicModuleManager.cs" />\r
-    <Compile Include="System.Web\EndEventHandler.cs" />\r
-    <Compile Include="System.Web\EventHandlerTaskAsyncHelper.cs" />\r
-    <Compile Include="System.Web\ExceptionPageTemplate.cs" />\r
-    <Compile Include="System.Web\ExceptionPageTemplateFragment.cs" />\r
-    <Compile Include="System.Web\ExceptionPageTemplateFragmentValue.cs" />\r
-    <Compile Include="System.Web\ExceptionPageTemplateType.cs" />\r
-    <Compile Include="System.Web\ExceptionPageTemplateValues.cs" />\r
-    <Compile Include="System.Web\HeadersCollection.cs" />\r
-    <Compile Include="System.Web\HtmlizedException.cs" />\r
-    <Compile Include="System.Web\HtmlString.cs" />\r
-    <Compile Include="System.Web\HttpApplication.cs" />\r
-    <Compile Include="System.Web\HttpApplicationFactory.cs" />\r
-    <Compile Include="System.Web\HttpApplicationState.cs" />\r
-    <Compile Include="System.Web\HttpBrowserCapabilities.cs" />\r
-    <Compile Include="System.Web\HttpCacheability.cs" />\r
-    <Compile Include="System.Web\HttpCachePolicy.cs" />\r
-    <Compile Include="System.Web\HttpCacheRevalidation.cs" />\r
-    <Compile Include="System.Web\HttpCacheValidateHandler.cs" />\r
-    <Compile Include="System.Web\HttpCacheVaryByContentEncodings.cs" />\r
-    <Compile Include="System.Web\HttpCacheVaryByHeaders.cs" />\r
-    <Compile Include="System.Web\HttpCacheVaryByParams.cs" />\r
-    <Compile Include="System.Web\HttpClientCertificate.cs" />\r
-    <Compile Include="System.Web\HttpCompileException.cs" />\r
-    <Compile Include="System.Web\HttpContext.cs" />\r
-    <Compile Include="System.Web\HttpCookie.cs" />\r
-    <Compile Include="System.Web\HttpCookieCollection.cs" />\r
-    <Compile Include="System.Web\HttpCookieMode.cs" />\r
-    <Compile Include="System.Web\HttpException.cs" />\r
-    <Compile Include="System.Web\HttpFileCollection.cs" />\r
-    <Compile Include="System.Web\HttpForbiddenHandler.cs" />\r
-    <Compile Include="System.Web\HttpHeaderCollection.cs" />\r
-    <Compile Include="System.Web\HttpMethodNotAllowedHandler.cs" />\r
-    <Compile Include="System.Web\HttpModuleCollection.cs" />\r
-    <Compile Include="System.Web\HttpNotFoundHandler.cs" />\r
-    <Compile Include="System.Web\HttpNotImplementedHandler.cs" />\r
-    <Compile Include="System.Web\HttpParamsCollection.cs" />\r
-    <Compile Include="System.Web\HttpParseException.cs" />\r
-    <Compile Include="System.Web\HttpPostedFile.cs" />\r
-    <Compile Include="System.Web\HttpRequest.cs" />\r
-    <Compile Include="System.Web\HttpRequestValidationException.cs" />\r
-    <Compile Include="System.Web\HttpResponse.cs" />\r
-    <Compile Include="System.Web\HttpResponseHeader.cs" />\r
-    <Compile Include="System.Web\HttpResponseStream.cs" />\r
-    <Compile Include="System.Web\HttpResponseSubstitutionCallback.cs" />\r
-    <Compile Include="System.Web\HttpRuntime.cs" />\r
-    <Compile Include="System.Web\HttpServerUtility.cs" />\r
-    <Compile Include="System.Web\HttpStaticObjectsCollection.cs" />\r
-    <Compile Include="System.Web\HttpTaskAsyncHandler.cs" />\r
-    <Compile Include="System.Web\HttpUnhandledException.cs" />\r
-    <Compile Include="System.Web\HttpUtility.cs" />\r
-    <Compile Include="System.Web\HttpValidationStatus.cs" />\r
-    <Compile Include="System.Web\HttpWorkerRequest.cs" />\r
-    <Compile Include="System.Web\HttpWriter.cs" />\r
-    <Compile Include="System.Web\IHtmlString.cs" />\r
-    <Compile Include="System.Web\IHttpAsyncHandler.cs" />\r
-    <Compile Include="System.Web\IHttpHandler.cs" />\r
-    <Compile Include="System.Web\IHttpHandlerFactory.cs" />\r
-    <Compile Include="System.Web\IHttpMapPath.cs" />\r
-    <Compile Include="System.Web\IHttpModule.cs" />\r
-    <Compile Include="System.Web\IisTraceListener.cs" />\r
-    <Compile Include="System.Web\InputFilterStream.cs" />\r
-    <Compile Include="System.Web\IntPtrStream.cs" />\r
-    <Compile Include="System.Web\IPartitionResolver.cs" />\r
-    <Compile Include="System.Web\MimeMapping.cs" />\r
-    <Compile Include="System.Web\MimeTypes.cs" />\r
-    <Compile Include="System.Web\NoParamsInvoker.cs" />\r
-    <Compile Include="System.Web\OutputFilterStream.cs" />\r
-    <Compile Include="System.Web\ParserError.cs" />\r
-    <Compile Include="System.Web\ParserErrorCollection.cs" />\r
-    <Compile Include="System.Web\PreApplicationStartMethodAttribute.cs" />\r
-    <Compile Include="System.Web\ProcessInfo.cs" />\r
-    <Compile Include="System.Web\ProcessModelInfo.cs" />\r
-    <Compile Include="System.Web\ProcessShutdownReason.cs" />\r
-    <Compile Include="System.Web\ProcessStatus.cs" />\r
-    <Compile Include="System.Web\QueueManager.cs" />\r
-    <Compile Include="System.Web\ReadEntityBodyMode.cs" />\r
-    <Compile Include="System.Web\RequestNotification.cs" />\r
-    <Compile Include="System.Web\RequestNotificationStatus.cs" />\r
-    <Compile Include="System.Web\ServerVariablesCollection.cs" />\r
-    <Compile Include="System.Web\SiteMap.cs" />\r
-    <Compile Include="System.Web\SiteMapNode.cs" />\r
-    <Compile Include="System.Web\SiteMapNodeCollection.cs" />\r
-    <Compile Include="System.Web\SiteMapProvider.cs" />\r
-    <Compile Include="System.Web\SiteMapProviderCollection.cs" />\r
-    <Compile Include="System.Web\SiteMapResolveEventArgs.cs" />\r
-    <Compile Include="System.Web\StaticFileHandler.cs" />\r
-    <Compile Include="System.Web\StaticSiteMapProvider.cs" />\r
-    <Compile Include="System.Web\TaskAsyncResult.cs" />\r
-    <Compile Include="System.Web\TaskEventHandler.cs" />\r
-    <Compile Include="System.Web\TempFileStream.cs" />\r
-    <Compile Include="System.Web\TraceContext.cs" />\r
-    <Compile Include="System.Web\TraceContextEventArgs.cs" />\r
-    <Compile Include="System.Web\TraceContextEventHandler.cs" />\r
-    <Compile Include="System.Web\TraceContextRecord.cs" />\r
-    <Compile Include="System.Web\TraceData.cs" />\r
-    <Compile Include="System.Web\TraceManager.cs" />\r
-    <Compile Include="System.Web\TraceMode.cs" />\r
-    <Compile Include="System.Web\UnvalidatedRequestValues.cs" />\r
-    <Compile Include="System.Web\UnvalidatedRequestValuesBase.cs" />\r
-    <Compile Include="System.Web\UnvalidatedRequestValuesWrapper.cs" />\r
-    <Compile Include="System.Web\VirtualPath.cs" />\r
-    <Compile Include="System.Web\VirtualPathUtility.cs" />\r
-    <Compile Include="System.Web\WebCategoryAttribute.cs" />\r
-    <Compile Include="System.Web\WebPageTraceListener.cs" />\r
-    <Compile Include="System.Web\WebROCollection.cs" />\r
-    <Compile Include="System.Web\WebSysDescriptionAttribute.cs" />\r
-    <Compile Include="System.Web\XmlSiteMapProvider.cs" />\r
-    <Compile Include="System.Web\UplevelHelper.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{41476FBD-C1CB-4B3C-8078-3281EB1E0EAB}</Project>\r
-      <Name>Mono.Data.Sqlite-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{63EC4158-FFAC-4867-8003-CF6054C8DF0B}</Project>\r
-      <Name>System.ComponentModel.DataAnnotations-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/TranslationResources.resources">\r
-      <LogicalName>TranslationResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/WebUIValidation.js">\r
-      <LogicalName>WebUIValidation.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/folder.gif">\r
-      <LogicalName>folder.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/file.gif">\r
-      <LogicalName>file.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/computer.gif">\r
-      <LogicalName>computer.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_minus.gif">\r
-      <LogicalName>arrow_minus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_noexpand.gif">\r
-      <LogicalName>arrow_noexpand.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_plus.gif">\r
-      <LogicalName>arrow_plus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_up.gif">\r
-      <LogicalName>arrow_up.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_down.gif">\r
-      <LogicalName>arrow_down.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_full.gif">\r
-      <LogicalName>box_full.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_empty.gif">\r
-      <LogicalName>box_empty.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_minus.gif">\r
-      <LogicalName>box_minus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_noexpand.gif">\r
-      <LogicalName>box_noexpand.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_plus.gif">\r
-      <LogicalName>box_plus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/contact.gif">\r
-      <LogicalName>contact.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/dot_empty.gif">\r
-      <LogicalName>dot_empty.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/dot_full.gif">\r
-      <LogicalName>dot_full.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/dots.gif">\r
-      <LogicalName>dots.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/inbox.gif">\r
-      <LogicalName>inbox.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/star_empty.gif">\r
-      <LogicalName>star_empty.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/star_full.gif">\r
-      <LogicalName>star_full.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/warning.gif">\r
-      <LogicalName>warning.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_noexpand.gif">\r
-      <LogicalName>TreeView_noexpand.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_dash.gif">\r
-      <LogicalName>TreeView_dash.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_dashminus.gif">\r
-      <LogicalName>TreeView_dashminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_dashplus.gif">\r
-      <LogicalName>TreeView_dashplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_i.gif">\r
-      <LogicalName>TreeView_i.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_l.gif">\r
-      <LogicalName>TreeView_l.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_lminus.gif">\r
-      <LogicalName>TreeView_lminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_lplus.gif">\r
-      <LogicalName>TreeView_lplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_minus.gif">\r
-      <LogicalName>TreeView_minus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_plus.gif">\r
-      <LogicalName>TreeView_plus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_r.gif">\r
-      <LogicalName>TreeView_r.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_rminus.gif">\r
-      <LogicalName>TreeView_rminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_rplus.gif">\r
-      <LogicalName>TreeView_rplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_t.gif">\r
-      <LogicalName>TreeView_t.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_tminus.gif">\r
-      <LogicalName>TreeView_tminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_tplus.gif">\r
-      <LogicalName>TreeView_tplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/transparent.gif">\r
-      <LogicalName>transparent.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/webform.js">\r
-      <LogicalName>webform.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/WebUIValidation_2.0.js">\r
-      <LogicalName>WebUIValidation_2.0.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/ErrorTemplateCommon_Top.html">\r
-      <LogicalName>ErrorTemplateCommon_Top.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/DefaultErrorTemplate_CustomErrorDefault.html">\r
-      <LogicalName>DefaultErrorTemplate_CustomErrorDefault.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/ErrorTemplateCommon_Bottom.html">\r
-      <LogicalName>ErrorTemplateCommon_Bottom.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/DefaultErrorTemplate_StandardPage.html">\r
-      <LogicalName>DefaultErrorTemplate_StandardPage.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/HtmlizedExceptionPage_Top.html">\r
-      <LogicalName>HtmlizedExceptionPage_Top.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/HtmlizedExceptionPage_FileLongSource.html">\r
-      <LogicalName>HtmlizedExceptionPage_FileLongSource.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/HtmlizedExceptionPage_FileShortSource.html">\r
-      <LogicalName>HtmlizedExceptionPage_FileShortSource.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/HtmlizedExceptionPage_CompilerOutput.html">\r
-      <LogicalName>HtmlizedExceptionPage_CompilerOutput.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/GridView.js">\r
-      <LogicalName>GridView.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/DetailsView.js">\r
-      <LogicalName>DetailsView.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/TreeView.js">\r
-      <LogicalName>TreeView.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/Menu.js">\r
-      <LogicalName>Menu.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/MenuModern.js">\r
-      <LogicalName>MenuModern.js</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index 97642fd1e8434a153827766b83598ab462df4ef2..df7651cee19b7126a8bc06f8a476018140d1c26c 100644 (file)
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpApplicationStateBase.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpApplicationStateWrapper.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpBrowserCapabilitiesBase.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpBrowserCapabilitiesWrapper.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpCachePolicyBase.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpCachePolicyWrapper.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpFileCollectionBase.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpPostedFileBase.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpPostedFileWrapper.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpResponseBase.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpServerUtilityBase.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpSessionStateBase.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpSessionStateWrapper.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpStaticObjectsCollectionBase.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Abstractions\HttpStaticObjectsCollectionWrapper.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Cache\IOutputCacheEntry.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Cache\ResponseElement.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\BuildProviderAppliesTo.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\BuildProviderAppliesToAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\DesignTimeResourceProviderFactoryAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\ExpressionEditorAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\ExpressionPrefixAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\FolderLevelBuildProviderAppliesTo.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\FolderLevelBuildProviderAppliesToAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\IAssemblyPostProcessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Compilation\IImplicitResourceProvider.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\AdapterDictionary.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\AsyncPreloadModeFlags.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\AuthenticationMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\AuthorizationRuleAction.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\BrowserCapsElementType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\BrowserTree.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\CustomErrorsMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\CustomErrorsRedirectMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\CustomWebEventKey.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\DelayedRegex.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\FormsAuthPasswordFormat.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\FormsProtectionEnum.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\IConfigMapPath.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\IConfigMapPathFactory.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\IRemoteWebConfigurationHostServer.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\MachineKeyCompatibilityMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\MachineKeyValidation.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\PagesEnableSessionState.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\ProcessModelComAuthenticationLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\ProcessModelComImpersonationLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\ProcessModelLogLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\ProfileGuidedOptimizationsFlags.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\RegexMatchTimeoutValidator.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\RegexMatchTimeoutValidatorAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\RpcAuthent.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\RpcImpers.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\RpcLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\SerializationMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\SystemWebCachingSectionGroup.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\TicketCompatibilityMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\TraceDisplayMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\WebApplicationLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\WebLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Configuration\XhtmlConformanceMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Hosting\IApplicationHost.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Hosting\IRegisteredObject.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\IHtmlString.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\IHttpAsyncHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\IHttpHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\IHttpHandlerFactory.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\IHttpModule.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ISubscriptionToken.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\ITlsTokenBindingInfo.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\BindingBehavior.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\BindingBehaviorAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\BindNeverAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\ExtensibleModelBinderAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\IModelNameProvider.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\ModelBinderProviderOptionsAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\ModelError.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\ModelBinding\ModelErrorCollection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\PreApplicationStartMethodAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Profile\HttpProfileGroupBase.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Profile\ProfileEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Profile\ProfileEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\ReadEntityBodyMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\RequestNotification.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\RequestNotificationStatus.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\IRouteConstraint.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\IRouteHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\RequestContext.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Routing\RouteBase.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\RouteDirection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\RouteTable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\RouteValueDictionary.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Routing\VirtualPathData.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\Security\AntiXss\CodeCharts.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\FormsAuthenticationEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\FormsAuthenticationEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\PassportAuthenticationEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\PassportAuthenticationEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\RoleManagerEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\RoleManagerEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\WindowsAuthenticationEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Security\WindowsAuthenticationEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\State\IReadOnlySessionState.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\State\IRequiresSessionState.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\State\SessionStateBehavior.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ClientIDMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ConflictOptions.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ConstructorNeedsTagAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ControlBuilderAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\CssClassPropertyAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\DataBindingHandlerAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\DataKeyPropertyAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\DataSourceCacheExpiry.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\DataSourceCapabilities.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\DataSourceOperation.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\FileLevelControlBuilderAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\FilterableAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\HtmlTextWriterAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\HtmlTextWriterStyle.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\HtmlTextWriterTag.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IAttributeAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IAutoFieldGenerator.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IBindableControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IBindableTemplate.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ICallbackEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IControlBuilderAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IControlDesignerAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IDataBindingsAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IDataItemContainer.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IDataKeysControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IDataSource.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IDataSourceViewSchemaAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IDReferencePropertyAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IExpressionsAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IFilterResolutionService.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IHierarchicalDataSource.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IHierarchicalEnumerable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IHierarchyData.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ImageClickEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\INamingContainer.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\INavigateUIData.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\INonBindingContainer.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IParserAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IPostBackDataHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IPostBackEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IResourceUrlGenerator.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IScriptResourceDefinition.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IScriptResourceMapping.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IStateFormatter.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IStateManager.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IStyleSheet.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ITemplate.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IThemeResolutionService.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IUrlResolutionService.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IUserControlDesignerAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IUserControlTypeResolutionService.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\IValidator.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\NonVisualControlAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\PersistChildrenAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\PersistenceMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\SupportsEventValidationAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\TemplateInstance.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\TemplateInstanceAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ThemeableAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\TraceContextEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\TraceContextEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\UnobtrusiveValidationMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ValidateRequestMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ViewStateEncryptionMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\ViewStateMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\Adapters\WmlPostFieldType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\AdCreatedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\AuthenticateEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\AuthenticateEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\AutoCompleteType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\BorderStyle.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\BulletedListEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\BulletedListEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ButtonColumnType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ButtonType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CalendarSelectionMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CallingDataMethodsEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CallingDataMethodsEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ContentDirection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CreateUserErrorEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\CreateUserErrorEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataBoundControlMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataControlCellType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataControlRowState.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataControlRowType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridItemEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridItemEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridPageChangedEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridPageChangedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridSortCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataGridSortCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataListCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataListCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataListItemEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DataListItemEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DayNameFormat.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DayRenderEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewDeletedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewDeleteEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewInsertedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewInsertEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewModeEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewModeEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewPageEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewPageEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewUpdatedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\DetailsViewUpdateEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FirstDayOfWeek.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FontSize.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewDeletedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewDeleteEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewInsertedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewInsertEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewModeEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewModeEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewPageEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewPageEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewUpdatedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\FormViewUpdateEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridLines.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewCancelEditEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewCancelEditEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewDeletedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewDeleteEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewEditEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewEditEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewPageEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewPageEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewRowEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewRowEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewSelectEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewSelectEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewSortEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewSortEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewUpdatedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\GridViewUpdateEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\HorizontalAlign.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\HotSpotMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IButtonControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ICallbackContainer.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ICompositeControlDesignerAccessor.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IDataBoundControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IDataBoundItemControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IDataBoundListControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IFieldControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ImageAlign.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ImageMapEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ImageMapEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IPersistedSelector.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\IRepeatInfoUser.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ListItemType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ListSelectionMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\LiteralMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\LoginCancelEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\LoginCancelEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\LoginFailureAction.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\LogoutAction.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MailMessageEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MailMessageEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MenuEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MenuEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MenuRenderingMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MonthChangedEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\MonthChangedEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\NextPrevFormat.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceDisposingEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceDisposingEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceFilteringEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceFilteringEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceMethodEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceMethodEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceSelectingEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceSelectingEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceStatusEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ObjectDataSourceStatusEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\Orientation.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\PagerButtons.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\PagerMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\PagerPosition.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\PathDirection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\RepeatDirection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\RepeaterCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\RepeaterCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\RepeaterItemEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\RepeaterItemEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\RepeatLayout.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SendMailErrorEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ServerValidateEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SiteMapNodeItemEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SiteMapNodeItemEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SiteMapNodeItemType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SortDirection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceCommandEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceCommandEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceCommandType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceFilteringEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceFilteringEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceSelectingEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceSelectingEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceStatusEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\SqlDataSourceStatusEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TableCaptionAlign.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TableHeaderScope.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TableRowSection.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TextAlign.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TextBoxMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TitleFormat.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TreeNodeEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TreeNodeEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TreeNodeSelectAction.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\TreeViewImageSet.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\UnitType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ValidationCompareOperator.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ValidationDataType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ValidationSummaryDisplayMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\ValidatorDisplay.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\VerticalAlign.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebControls\WebColorConverter.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\FieldCallback.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\ITrackingPersonalizable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\ITransformerConfigurationControl.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IVersioningPersonalizable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebActionable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebEditable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebPart.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebPartField.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebPartHttpHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebPartParameters.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebPartRow.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\IWebPartTable.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\ParametersCallback.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\PartChromeState.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\PartChromeType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\PersonalizationScope.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\RowCallback.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\TableCallback.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebBrowsableAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebDescriptionAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebDisplayNameAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartAuthorizationEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartCancelEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartCancelEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartEventHandler.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartExportMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartHelpMode.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartVerbsEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\UI\WebParts\WebPartVerbsEventHandler.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\UnvalidatedRequestValuesBase.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\UnvalidatedRequestValuesWrapper.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Util\IObjectFactory.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Util\RequestValidationSource.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System.Web\Util\StringUtil.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\WebSockets\AspNetWebSocketOptions.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System.Web\WebSockets\SubprotocolUtil.cs" />\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
+    <Compile Include="..\..\build\common\SR.cs" />\r
     <Compile Include="..\System.Design\System.Data.Design\TypedDataSetGenerator.cs" />\r
     <Compile Include="..\System.Windows.Forms\System.Resources\AssemblyNamesTypeResolutionService.cs" />\r
     <Compile Include="..\System.Windows.Forms\System.Resources\ByteArrayFromResXHandler.cs" />\r
     <Compile Include="Mono.Web.Util\SettingsMapping.cs" />\r
     <Compile Include="Mono.Web.Util\SettingsMappingManager.cs" />\r
     <Compile Include="Mono.Web.Util\SettingsMappingWhat.cs" />\r
+    <Compile Include="ReferenceSources\SR.cs" />\r
     <Compile Include="System.Collections.Concurrent\SplitOrderedList.cs" />\r
     <Compile Include="System.Web.Caching\AggregateCacheDependency.cs" />\r
     <Compile Include="System.Web.Caching\Cache.cs" />\r
     <Compile Include="System.Web.Caching\FileResponseElement.cs" />\r
     <Compile Include="System.Web.Caching\HeaderElement.cs" />\r
     <Compile Include="System.Web.Caching\InMemoryOutputCacheProvider.cs" />\r
-    <Compile Include="System.Web.Caching\IOutputCacheEntry.cs" />\r
     <Compile Include="System.Web.Caching\MemoryResponseElement.cs" />\r
     <Compile Include="System.Web.Caching\OutputCache.cs" />\r
     <Compile Include="System.Web.Caching\OutputCacheModule.cs" />\r
     <Compile Include="System.Web.Caching\OutputCacheProvider.cs" />\r
     <Compile Include="System.Web.Caching\OutputCacheProviderCollection.cs" />\r
-    <Compile Include="System.Web.Caching\ResponseElement.cs" />\r
     <Compile Include="System.Web.Caching\SqlCacheDependency.cs" />\r
     <Compile Include="System.Web.Caching\SqlCacheDependencyAdmin.cs" />\r
     <Compile Include="System.Web.Caching\SubstitutionResponseElement.cs" />\r
     <Compile Include="System.Web.Compilation\BuildManagerHostUnloadEventHandler.cs" />\r
     <Compile Include="System.Web.Compilation\BuildManagerRemoveEntryEventHandler.cs" />\r
     <Compile Include="System.Web.Compilation\BuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProviderAppliesTo.cs" />\r
-    <Compile Include="System.Web.Compilation\BuildProviderAppliesToAttribute.cs" />\r
     <Compile Include="System.Web.Compilation\BuildProviderGroup.cs" />\r
     <Compile Include="System.Web.Compilation\BuildProviderResultFlags.cs" />\r
     <Compile Include="System.Web.Compilation\CachingCompiler.cs" />\r
     <Compile Include="System.Web.Compilation\ConnectionStringsExpressionBuilder.cs" />\r
     <Compile Include="System.Web.Compilation\DefaultResourceProvider.cs" />\r
     <Compile Include="System.Web.Compilation\DefaultResourceProviderFactory.cs" />\r
-    <Compile Include="System.Web.Compilation\DesignTimeResourceProviderFactoryAttribute.cs" />\r
     <Compile Include="System.Web.Compilation\Directive.cs" />\r
     <Compile Include="System.Web.Compilation\ExpressionBuilder.cs" />\r
     <Compile Include="System.Web.Compilation\ExpressionBuilderContext.cs" />\r
-    <Compile Include="System.Web.Compilation\ExpressionEditorAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\ExpressionPrefixAttribute.cs" />\r
-    <Compile Include="System.Web.Compilation\FolderLevelBuildProviderAppliesTo.cs" />\r
-    <Compile Include="System.Web.Compilation\FolderLevelBuildProviderAppliesToAttribute.cs" />\r
     <Compile Include="System.Web.Compilation\ForceCopyBuildProvider.cs" />\r
     <Compile Include="System.Web.Compilation\GenericBuildProvider.cs" />\r
     <Compile Include="System.Web.Compilation\GlobalAsaxCompiler.cs" />\r
-    <Compile Include="System.Web.Compilation\IAssemblyPostProcessor.cs" />\r
     <Compile Include="System.Web.Compilation\IgnoreFileBuildProvider.cs" />\r
-    <Compile Include="System.Web.Compilation\IImplicitResourceProvider.cs" />\r
     <Compile Include="System.Web.Compilation\ILocation.cs" />\r
-    <Compile Include="System.Web.Compilation\ImplicitResourceKey.cs" />\r
     <Compile Include="System.Web.Compilation\IResourceProvider.cs" />\r
     <Compile Include="System.Web.Compilation\LinePragmaCodeInfo.cs" />\r
     <Compile Include="System.Web.Compilation\Location.cs" />\r
     <Compile Include="System.Web.Compilation\WsdlBuildProvider.cs" />\r
     <Compile Include="System.Web.Compilation\XsdBuildProvider.cs" />\r
     <Compile Include="System.Web.Configuration.Internal\IInternalConfigWebHost.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AdapterDictionary.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AnonymousIdentificationSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\ApplicationSettingsConfigurationFileMap.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AssemblyCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AssemblyInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthenticationMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AuthenticationSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AuthorizationRule.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\AuthorizationRuleAction.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AuthorizationRuleCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\AuthorizationSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\BufferModesCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\CompilerCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\CustomError.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\CustomErrorCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomErrorsMode.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\CustomErrorsRedirectMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\CustomErrorsSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\DeploymentSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\EventMappingSettings.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationCredentials.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationUser.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\FormsAuthenticationUserCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsAuthPasswordFormat.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\FormsProtectionEnum.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\GlobalizationSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\HandlersUtil.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\HealthMonitoringSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\HttpModulesSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\HttpRuntimeSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\ICapabilitiesProcess.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IConfigMapPath.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IConfigMapPathFactory.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeyCompatibilityMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\MachineKeyValidation.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyValidationConverter.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MembershipSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MonoSettingsSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\OutputCacheProfileCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\OutputCacheSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\OutputCacheSettingsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\PagesEnableSessionState.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\PagesSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\PassportAuthentication.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\PositiveTimeSpanValidator.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelComAuthenticationLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelComImpersonationLevel.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\ProcessModelLogLevel.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\ProcessModelSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\ProfileGroupSettings.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\ProfileGroupSettingsCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\RuleSettings.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\RuleSettingsCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SecurityPolicySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SerializationMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SessionPageStateSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SessionStateSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SiteMapSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SqlCacheDependencyDatabase.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SqlCacheDependencyDatabaseCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SqlCacheDependencySection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\SystemWebCachingSectionGroup.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\SystemWebSectionGroup.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TagMapCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TagMapInfo.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TagPrefixCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TagPrefixInfo.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\TraceDisplayMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TraceSection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TransformerInfo.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\TransformerInfoCollection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\VersionConverter.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\VirtualDirectoryMapping.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\VirtualDirectoryMappingCollection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\WebApplicationLevel.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\WebConfigurationFileMap.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\WebConfigurationHost.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\WebConfigurationManager.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\WebPartsPersonalization.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\WebPartsPersonalizationAuthorization.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\WebPartsSection.cs" />\r
-    <Compile Include="System.Web.Configuration_2.0\XhtmlConformanceMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\XhtmlConformanceSection.cs" />\r
     <Compile Include="System.Web.Handlers\AssemblyResourceLoader.cs" />\r
     <Compile Include="System.Web.Handlers\TraceHandler.cs" />\r
     <Compile Include="System.Web.Hosting\DefaultVirtualPathProvider.cs" />\r
     <Compile Include="System.Web.Hosting\HostingEnvironment.cs" />\r
     <Compile Include="System.Web.Hosting\IAppDomainFactory.cs" />\r
-    <Compile Include="System.Web.Hosting\IApplicationHost.cs" />\r
     <Compile Include="System.Web.Hosting\IAppManagerAppDomainFactory.cs" />\r
     <Compile Include="System.Web.Hosting\IISAPIRuntime.cs" />\r
-    <Compile Include="System.Web.Hosting\IRegisteredObject.cs" />\r
     <Compile Include="System.Web.Hosting\ISAPIRuntime.cs" />\r
     <Compile Include="System.Web.Hosting\SimpleWorkerRequest.cs" />\r
     <Compile Include="System.Web.Hosting\VirtualDirectory.cs" />\r
     <Compile Include="System.Web.Profile\ProfileAutoSaveEventArgs.cs" />\r
     <Compile Include="System.Web.Profile\ProfileAutoSaveEventHandler.cs" />\r
     <Compile Include="System.Web.Profile\ProfileBase.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileEventArgs.cs" />\r
-    <Compile Include="System.Web.Profile\ProfileEventHandler.cs" />\r
     <Compile Include="System.Web.Profile\ProfileInfo.cs" />\r
     <Compile Include="System.Web.Profile\ProfileInfoCollection.cs" />\r
     <Compile Include="System.Web.Profile\ProfileManager.cs" />\r
     <Compile Include="System.Web.Profile\SqlProfileProvider.cs" />\r
     <Compile Include="System.Web.Properties\TranslationProperties.Designer.cs" />\r
     <Compile Include="System.Web.Routing\HttpMethodConstraint.cs" />\r
-    <Compile Include="System.Web.Routing\IRouteConstraint.cs" />\r
-    <Compile Include="System.Web.Routing\IRouteHandler.cs" />\r
     <Compile Include="System.Web.Routing\PageRouteHandler.cs" />\r
     <Compile Include="System.Web.Routing\PatternParser.cs" />\r
     <Compile Include="System.Web.Routing\PatternToken.cs" />\r
     <Compile Include="System.Web.Routing\PatternTokenType.cs" />\r
-    <Compile Include="System.Web.Routing\RequestContext.cs" />\r
     <Compile Include="System.Web.Routing\Route.cs" />\r
     <Compile Include="System.Web.Routing\RouteCollection.cs" />\r
     <Compile Include="System.Web.Routing\RouteData.cs" />\r
-    <Compile Include="System.Web.Routing\RouteDirection.cs" />\r
-    <Compile Include="System.Web.Routing\RouteTable.cs" />\r
-    <Compile Include="System.Web.Routing\RouteValueDictionary.cs" />\r
     <Compile Include="System.Web.Routing\RouteValueDictionaryExtensions.cs" />\r
     <Compile Include="System.Web.Routing\StopRoutingHandler.cs" />\r
     <Compile Include="System.Web.Routing\UrlRoutingHandler.cs" />\r
     <Compile Include="System.Web.Routing\UrlRoutingModule.cs" />\r
-    <Compile Include="System.Web.Routing\VirtualPathData.cs" />\r
     <Compile Include="System.Web.Security\ActiveDirectoryConnectionProtection.cs" />\r
     <Compile Include="System.Web.Security\ActiveDirectoryMembershipProvider.cs" />\r
     <Compile Include="System.Web.Security\AnonymousIdentificationEventArgs.cs" />\r
     <Compile Include="System.Web.Security\DefaultAuthenticationModule.cs" />\r
     <Compile Include="System.Web.Security\FileAuthorizationModule.cs" />\r
     <Compile Include="System.Web.Security\FormsAuthentication.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\FormsAuthenticationEventHandler.cs" />\r
     <Compile Include="System.Web.Security\FormsAuthenticationModule.cs" />\r
     <Compile Include="System.Web.Security\FormsAuthenticationTicket.cs" />\r
     <Compile Include="System.Web.Security\FormsIdentity.cs" />\r
     <Compile Include="System.Web.Security\Membership.cs" />\r
     <Compile Include="System.Web.Security\MembershipHelper.cs" />\r
     <Compile Include="System.Web.Security\MembershipPasswordAttribute.cs" />\r
-    <Compile Include="System.Web.Security\PassportAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\PassportAuthenticationEventHandler.cs" />\r
     <Compile Include="System.Web.Security\PassportAuthenticationModule.cs" />\r
     <Compile Include="System.Web.Security\PassportIdentity.cs" />\r
-    <Compile Include="System.Web.Security\RoleManagerEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\RoleManagerEventHandler.cs" />\r
     <Compile Include="System.Web.Security\RoleManagerModule.cs" />\r
     <Compile Include="System.Web.Security\RolePrincipal.cs" />\r
     <Compile Include="System.Web.Security\RoleProviderCollection.cs" />\r
     <Compile Include="System.Web.Security\SqlMembershipProvider.cs" />\r
     <Compile Include="System.Web.Security\SqlRoleProvider.cs" />\r
     <Compile Include="System.Web.Security\UrlAuthorizationModule.cs" />\r
-    <Compile Include="System.Web.Security\WindowsAuthenticationEventArgs.cs" />\r
-    <Compile Include="System.Web.Security\WindowsAuthenticationEventHandler.cs" />\r
     <Compile Include="System.Web.Security\WindowsAuthenticationModule.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\HttpSessionState.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\HttpSessionStateContainer.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\IHttpSessionState.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\IReadOnlySessionState.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\IRequiresSessionState.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\ISessionIDManager.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\ISessionStateItemCollection.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\IStateRuntime.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\SessionInProcHandler.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\SessionSQLServerHandler.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\SessionStateActions.cs" />\r
-    <Compile Include="System.Web.SessionState_2.0\SessionStateBehavior.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\SessionStateItemCollection.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\SessionStateItemExpireCallback.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\SessionStateMode.cs" />\r
     <Compile Include="System.Web.SessionState_2.0\StateServerItem.cs" />\r
     <Compile Include="System.Web.UI.Adapters\ControlAdapter.cs" />\r
     <Compile Include="System.Web.UI.Adapters\PageAdapter.cs" />\r
-    <Compile Include="System.Web.UI.Adapters\WmlPostFieldType.cs" />\r
     <Compile Include="System.Web.UI.HtmlControls\HtmlAnchor.cs" />\r
     <Compile Include="System.Web.UI.HtmlControls\HtmlButton.cs" />\r
     <Compile Include="System.Web.UI.HtmlControls\HtmlContainerControl.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\EditorPart.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\EditorPartCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\IPersonalizable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ITrackingPersonalizable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\ITransformerConfigurationControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IVersioningPersonalizable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebActionable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebEditable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPart.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartHttpHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartParameters.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\IWebPartTable.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\Part.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PartChromeState.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PartChromeType.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\PersonalizableAttribute.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\PersonalizationScope.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\ProviderConnectionPoint.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\TypeCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\WebPart.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\WebPartAuthorizationEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartAuthorizationEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartCancelEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartCancelEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartExportMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartHelpMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\WebPartPageMenuMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerb.cs" />\r
     <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerbCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerbsEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls.WebParts\WebPartVerbsEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AccessDataSource.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AccessDataSourceView.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AdCreatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AdCreatedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AdRotator.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AssociatedControlConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AuthenticateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AuthenticateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\AutoCompleteType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AutoGeneratedField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\AutoGeneratedFieldProperties.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BaseCompareValidator.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BaseDataList.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BaseMenuRenderer.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BaseValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BorderStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BoundColumn.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BoundField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BulletedList.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BulletedListDisplayMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletedListEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\BulletedListEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\BulletStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Button.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ButtonColumn.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonColumnType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ButtonField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ButtonFieldBase.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ButtonType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Calendar.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CalendarDay.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CalendarSelectionMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ChangePassword.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CheckBox.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CheckBoxField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ChildTable.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CircleHotSpot.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CollectionDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CommandField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CompareValidator.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CompleteWizardStep.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ContainedTable.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Content.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ContentControlBuilderInternal.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ContentDirection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ContentPlaceHolder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ContentPlaceHolderBuilder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ControlIDConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ControlParameter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ControlPropertyNameConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CookieParameter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CreateUserErrorEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\CreateUserErrorEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CreateUserWizard.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CreateUserWizardStep.cs" />\r
     <Compile Include="System.Web.UI.WebControls\CustomValidator.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataBoundControlMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataControlButton.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlCellType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataControlCommands.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataControlField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataControlFieldCell.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataControlFieldCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataControlFieldHeaderCell.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlRowState.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataControlRowType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataGrid.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataGridColumn.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataGridColumnCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataGridItem.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataGridItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridItemEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridPageChangedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridPageChangedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataGridPagerStyle.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridSortCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataGridSortCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataKey.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataKeyArray.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataKeyCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataList.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataListItem.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataListItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DataListItemEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DataSourceCacheManager.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DayNameFormat.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DayRenderEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DayRenderEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewDeletedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewDeletedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewDeleteEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewDeleteEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewInsertedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewInsertedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewInsertEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewInsertEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewModeEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewModeEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewPageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewPageEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewPagerRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewRowCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewUpdatedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DetailsViewUpdateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\DetailsViewUpdateEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\DropDownList.cs" />\r
     <Compile Include="System.Web.UI.WebControls\EditCommandColumn.cs" />\r
     <Compile Include="System.Web.UI.WebControls\EmbeddedMailObject.cs" />\r
     <Compile Include="System.Web.UI.WebControls\EmbeddedMailObjectsCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FileUpload.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FirstDayOfWeek.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FontInfo.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FontNamesConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FontSize.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FontUnit.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FontUnitConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormParameter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormView.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewDeletedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewDeletedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewDeleteEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewDeleteEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewInsertedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewInsertedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewInsertEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewInsertEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewModeEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewModeEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewPageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewPageEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewPagerRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewUpdatedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\FormViewUpdateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\FormViewUpdateEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridLines.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCancelEditEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCancelEditEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridViewDeletedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewDeletedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridViewDeleteEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewDeleteEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewEditEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewEditEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewPageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewPageEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridViewRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridViewRowCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewRowEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewRowEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSelectEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSelectEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSortEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewSortEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridViewUpdatedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewUpdatedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\GridViewUpdateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\GridViewUpdateEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HiddenField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HierarchicalDataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HorizontalAlign.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HorizontalAlignConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HotSpot.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HotSpotCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\HotSpotMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HyperLink.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HyperLinkColumn.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HyperLinkControlBuilder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\HyperLinkField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IButtonControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ICallbackContainer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ICompositeControlDesignerAccessor.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IDataBoundControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IDataBoundItemControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IDataBoundListControl.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IFieldControl.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Image.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageAlign.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ImageButton.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ImageField.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ImageMap.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageMapEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ImageMapEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\IMenuRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IPersistedSelector.cs" />\r
     <Compile Include="System.Web.UI.WebControls\IPostBackContainer.cs" />\r
     <Compile Include="System.Web.UI.WebControls\IRenderOuterTable.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\IRepeatInfoUser.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Label.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LabelControlBuilder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LinkButton.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ListItem.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ListItemCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ListItemControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListItemType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ListSelectionMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Literal.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LiteralControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LiteralMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Localize.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Login.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginCancelEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginCancelEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LoginFailureAction.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LoginName.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LoginStatus.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LoginTextLayout.cs" />\r
     <Compile Include="System.Web.UI.WebControls\LoginView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\LogoutAction.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MailDefinition.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MailMessageEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MailMessageEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Menu.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuItem.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuItemBinding.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuItemBindingCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuItemStyleCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuItemTemplateContainer.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuListRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MenuRenderingMode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MenuTableRenderer.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MonthChangedEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\MonthChangedEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MultiView.cs" />\r
     <Compile Include="System.Web.UI.WebControls\MultiViewControlBuilder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\NamedCssStyleCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\NextPrevFormat.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ObjectDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceDisposingEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceDisposingEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceEventArgs.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ObjectDataSourceEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceFilteringEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceFilteringEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceMethodEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceMethodEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceSelectingEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceSelectingEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceStatusEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ObjectDataSourceStatusEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ObjectDataSourceView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\Orientation.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PagedDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerButtons.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PagerPosition.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PagerSettings.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Panel.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PanelStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Parameter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ParameterCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PasswordRecovery.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\PathDirection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PlaceHolder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PlaceHolderControlBuilder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\PolygonHotSpot.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RangeValidator.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RectangleHotSpot.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RegularExpressionValidator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeatDirection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Repeater.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterCommandEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RepeaterItem.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RepeaterItemCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeaterItemEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RepeatInfo.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\RepeatLayout.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RequiredFieldValidator.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RoleGroup.cs" />\r
     <Compile Include="System.Web.UI.WebControls\RoleGroupCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ScrollBars.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SelectedDatesCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SendMailErrorEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SendMailErrorEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ServerValidateEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ServerValidateEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SessionParameter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SiteMapDataSource.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SiteMapDataSourceView.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SiteMapHierarchicalDataSourceView.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SiteMapNodeItem.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItemEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItemEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SiteMapNodeItemType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SiteMapPath.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SiteMapViewType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SortDirection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SqlDataSource.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceCommandEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceCommandEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceCommandType.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceFilteringEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceFilteringEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceSelectingEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceSelectingEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceStatusEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\SqlDataSourceStatusEventHandler.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SqlDataSourceView.cs" />\r
     <Compile Include="System.Web.UI.WebControls\StringArrayConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Style.cs" />\r
     <Compile Include="System.Web.UI.WebControls\SubMenuStyleCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Substitution.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Table.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableCaptionAlign.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableCell.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableCellCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableCellControlBuilder.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableFooterRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableHeaderCell.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableHeaderRow.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableHeaderScope.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableItemStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableRow.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableRowCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TableRowSection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableSectionStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TableStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TargetConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TemplateColumn.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TemplatedWizardStep.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TemplateField.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TextAlign.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TextBox.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TextBoxControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TextBoxMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TitleFormat.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNode.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNodeBinding.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNodeBindingCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNodeCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeEventArgs.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeEventHandler.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeNodeSelectAction.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNodeStyle.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNodeStyleCollection.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeNodeTypes.cs" />\r
     <Compile Include="System.Web.UI.WebControls\TreeView.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\TreeViewImageSet.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Unit.cs" />\r
     <Compile Include="System.Web.UI.WebControls\UnitConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\UnitType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ValidatedControlConverter.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationCompareOperator.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationDataType.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ValidationSummary.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidationSummaryDisplayMode.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\ValidatorDisplay.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\VerticalAlign.cs" />\r
     <Compile Include="System.Web.UI.WebControls\VerticalAlignConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\View.cs" />\r
     <Compile Include="System.Web.UI.WebControls\ViewCollection.cs" />\r
-    <Compile Include="System.Web.UI.WebControls\WebColorConverter.cs" />\r
     <Compile Include="System.Web.UI.WebControls\WebControl.cs" />\r
     <Compile Include="System.Web.UI.WebControls\Wizard.cs" />\r
     <Compile Include="System.Web.UI.WebControls\WizardLayoutContainer.cs" />\r
     <Compile Include="System.Web.UI\BuildMethod.cs" />\r
     <Compile Include="System.Web.UI\BuildTemplateMethod.cs" />\r
     <Compile Include="System.Web.UI\ChtmlTextWriter.cs" />\r
-    <Compile Include="System.Web.UI\ClientIDMode.cs" />\r
     <Compile Include="System.Web.UI\ClientScriptManager.cs" />\r
     <Compile Include="System.Web.UI\CodeBuilder.cs" />\r
     <Compile Include="System.Web.UI\CodeConstructType.cs" />\r
     <Compile Include="System.Web.UI\CompiledBindableTemplateBuilder.cs" />\r
     <Compile Include="System.Web.UI\CompiledTemplateBuilder.cs" />\r
     <Compile Include="System.Web.UI\ComplexPropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\ConflictOptions.cs" />\r
-    <Compile Include="System.Web.UI\ConstructorNeedsTagAttribute.cs" />\r
     <Compile Include="System.Web.UI\Control.cs" />\r
     <Compile Include="System.Web.UI\ControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\ControlBuilderAttribute.cs" />\r
     <Compile Include="System.Web.UI\ControlCachePolicy.cs" />\r
     <Compile Include="System.Web.UI\ControlCollection.cs" />\r
     <Compile Include="System.Web.UI\ControlSkin.cs" />\r
     <Compile Include="System.Web.UI\ControlSkinDelegate.cs" />\r
     <Compile Include="System.Web.UI\ControlValuePropertyAttribute.cs" />\r
-    <Compile Include="System.Web.UI\CssClassPropertyAttribute.cs" />\r
     <Compile Include="System.Web.UI\CssStyleCollection.cs" />\r
     <Compile Include="System.Web.UI\DataBinder.cs" />\r
     <Compile Include="System.Web.UI\DataBinding.cs" />\r
     <Compile Include="System.Web.UI\DataBindingBuilder.cs" />\r
     <Compile Include="System.Web.UI\DataBindingCollection.cs" />\r
-    <Compile Include="System.Web.UI\DataBindingHandlerAttribute.cs" />\r
     <Compile Include="System.Web.UI\DataBoundLiteralControl.cs" />\r
-    <Compile Include="System.Web.UI\DataKeyPropertyAttribute.cs" />\r
     <Compile Include="System.Web.UI\DataSourceCacheDurationConverter.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceCacheExpiry.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceCapabilities.cs" />\r
     <Compile Include="System.Web.UI\DataSourceControl.cs" />\r
     <Compile Include="System.Web.UI\DataSourceControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\DataSourceOperation.cs" />\r
     <Compile Include="System.Web.UI\DataSourceSelectArguments.cs" />\r
     <Compile Include="System.Web.UI\DataSourceView.cs" />\r
     <Compile Include="System.Web.UI\DataSourceViewOperationCallback.cs" />\r
     <Compile Include="System.Web.UI\ExpressionBinding.cs" />\r
     <Compile Include="System.Web.UI\ExpressionBindingCollection.cs" />\r
     <Compile Include="System.Web.UI\ExtractTemplateValuesMethod.cs" />\r
-    <Compile Include="System.Web.UI\FileLevelControlBuilderAttribute.cs" />\r
     <Compile Include="System.Web.UI\FileLevelMasterPageControlBuilder.cs" />\r
     <Compile Include="System.Web.UI\FileLevelPageControlBuilder.cs" />\r
     <Compile Include="System.Web.UI\FileLevelUserControlBuilder.cs" />\r
-    <Compile Include="System.Web.UI\FilterableAttribute.cs" />\r
     <Compile Include="System.Web.UI\HiddenFieldPageStatePersister.cs" />\r
     <Compile Include="System.Web.UI\HierarchicalDataSourceControl.cs" />\r
     <Compile Include="System.Web.UI\HierarchicalDataSourceView.cs" />\r
     <Compile Include="System.Web.UI\Html32TextWriter.cs" />\r
     <Compile Include="System.Web.UI\HtmlControlPersistableAttribute.cs" />\r
     <Compile Include="System.Web.UI\HtmlTextWriter.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriterAttribute.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriterStyle.cs" />\r
-    <Compile Include="System.Web.UI\HtmlTextWriterTag.cs" />\r
-    <Compile Include="System.Web.UI\IAttributeAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IAutoFieldGenerator.cs" />\r
-    <Compile Include="System.Web.UI\IBindableControl.cs" />\r
-    <Compile Include="System.Web.UI\IBindableTemplate.cs" />\r
-    <Compile Include="System.Web.UI\ICallbackEventHandler.cs" />\r
     <Compile Include="System.Web.UI\ICheckBoxControl.cs" />\r
-    <Compile Include="System.Web.UI\IControlBuilderAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IControlDesignerAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IDataBindingsAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IDataItemContainer.cs" />\r
-    <Compile Include="System.Web.UI\IDataKeysControl.cs" />\r
-    <Compile Include="System.Web.UI\IDataSource.cs" />\r
-    <Compile Include="System.Web.UI\IDataSourceViewSchemaAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IDReferencePropertyAttribute.cs" />\r
     <Compile Include="System.Web.UI\IEditableTextControl.cs" />\r
-    <Compile Include="System.Web.UI\IExpressionsAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IFilterResolutionService.cs" />\r
     <Compile Include="System.Web.UI\IgnoreUnknownContentAttribute.cs" />\r
-    <Compile Include="System.Web.UI\IHierarchicalDataSource.cs" />\r
-    <Compile Include="System.Web.UI\IHierarchicalEnumerable.cs" />\r
-    <Compile Include="System.Web.UI\IHierarchyData.cs" />\r
     <Compile Include="System.Web.UI\ImageClickEventArgs.cs" />\r
-    <Compile Include="System.Web.UI\ImageClickEventHandler.cs" />\r
-    <Compile Include="System.Web.UI\INamingContainer.cs" />\r
-    <Compile Include="System.Web.UI\INavigateUIData.cs" />\r
     <Compile Include="System.Web.UI\IndexedString.cs" />\r
-    <Compile Include="System.Web.UI\INonBindingContainer.cs" />\r
-    <Compile Include="System.Web.UI\IParserAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IPostBackDataHandler.cs" />\r
-    <Compile Include="System.Web.UI\IPostBackEventHandler.cs" />\r
-    <Compile Include="System.Web.UI\IResourceUrlGenerator.cs" />\r
     <Compile Include="System.Web.UI\IScriptManager.cs" />\r
-    <Compile Include="System.Web.UI\IStateFormatter.cs" />\r
-    <Compile Include="System.Web.UI\IStateManager.cs" />\r
-    <Compile Include="System.Web.UI\IStyleSheet.cs" />\r
     <Compile Include="System.Web.UI\ITagNameToTypeMapper.cs" />\r
-    <Compile Include="System.Web.UI\ITemplate.cs" />\r
     <Compile Include="System.Web.UI\ITextControl.cs" />\r
-    <Compile Include="System.Web.UI\IThemeResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IUrlResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IUserControlDesignerAccessor.cs" />\r
-    <Compile Include="System.Web.UI\IUserControlTypeResolutionService.cs" />\r
-    <Compile Include="System.Web.UI\IValidator.cs" />\r
     <Compile Include="System.Web.UI\ListSourceHelper.cs" />\r
     <Compile Include="System.Web.UI\LiteralControl.cs" />\r
     <Compile Include="System.Web.UI\LosFormatter.cs" />\r
     <Compile Include="System.Web.UI\MasterPageControlBuilder.cs" />\r
     <Compile Include="System.Web.UI\MasterPageParser.cs" />\r
     <Compile Include="System.Web.UI\MinimizableAttributeTypeConverter.cs" />\r
-    <Compile Include="System.Web.UI\NonVisualControlAttribute.cs" />\r
     <Compile Include="System.Web.UI\ObjectConverter.cs" />\r
     <Compile Include="System.Web.UI\ObjectPersistData.cs" />\r
     <Compile Include="System.Web.UI\ObjectStateFormatter.cs" />\r
     <Compile Include="System.Web.UI\ParseChildrenAttribute.cs" />\r
     <Compile Include="System.Web.UI\PartialCachingAttribute.cs" />\r
     <Compile Include="System.Web.UI\PartialCachingControl.cs" />\r
-    <Compile Include="System.Web.UI\PersistChildrenAttribute.cs" />\r
-    <Compile Include="System.Web.UI\PersistenceMode.cs" />\r
     <Compile Include="System.Web.UI\PersistenceModeAttribute.cs" />\r
     <Compile Include="System.Web.UI\PostBackOptions.cs" />\r
     <Compile Include="System.Web.UI\PropertyConverter.cs" />\r
     <Compile Include="System.Web.UI\StateManagedCollection.cs" />\r
     <Compile Include="System.Web.UI\StaticPartialCachingControl.cs" />\r
     <Compile Include="System.Web.UI\StringPropertyBuilder.cs" />\r
-    <Compile Include="System.Web.UI\SupportsEventValidationAttribute.cs" />\r
     <Compile Include="System.Web.UI\TagPrefixAttribute.cs" />\r
     <Compile Include="System.Web.UI\TemplateBuilder.cs" />\r
     <Compile Include="System.Web.UI\TemplateContainerAttribute.cs" />\r
     <Compile Include="System.Web.UI\TemplateContentType.cs" />\r
     <Compile Include="System.Web.UI\TemplateControl.cs" />\r
     <Compile Include="System.Web.UI\TemplateControlParser.cs" />\r
-    <Compile Include="System.Web.UI\TemplateInstance.cs" />\r
-    <Compile Include="System.Web.UI\TemplateInstanceAttribute.cs" />\r
     <Compile Include="System.Web.UI\TemplateParser.cs" />\r
     <Compile Include="System.Web.UI\TemplatePropertyEntry.cs" />\r
-    <Compile Include="System.Web.UI\ThemeableAttribute.cs" />\r
     <Compile Include="System.Web.UI\ThemeProvider.cs" />\r
     <Compile Include="System.Web.UI\ToolboxDataAttribute.cs" />\r
     <Compile Include="System.Web.UI\Triplet.cs" />\r
     <Compile Include="System.Web.UI\VerificationConditionalOperator.cs" />\r
     <Compile Include="System.Web.UI\VerificationReportLevel.cs" />\r
     <Compile Include="System.Web.UI\VerificationRule.cs" />\r
-    <Compile Include="System.Web.UI\ViewStateEncryptionMode.cs" />\r
     <Compile Include="System.Web.UI\ViewStateException.cs" />\r
-    <Compile Include="System.Web.UI\ViewStateMode.cs" />\r
     <Compile Include="System.Web.UI\ViewStateModeByIdAttribute.cs" />\r
     <Compile Include="System.Web.UI\VirtualReferenceType.cs" />\r
     <Compile Include="System.Web.UI\WebHandlerParser.cs" />\r
     <Compile Include="System.Web.Util\Helpers.cs" />\r
     <Compile Include="System.Web.Util\HttpEncoder.cs" />\r
     <Compile Include="System.Web.Util\ICalls.cs" />\r
-    <Compile Include="System.Web.Util\IWebObjectFactory.cs" />\r
     <Compile Include="System.Web.Util\IWebPropertyAccessor.cs" />\r
     <Compile Include="System.Web.Util\MachineKeySectionUtils.cs" />\r
-    <Compile Include="System.Web.Util\RequestValidationSource.cs" />\r
     <Compile Include="System.Web.Util\RequestValidator.cs" />\r
     <Compile Include="System.Web.Util\RuntimeHelpers.cs" />\r
     <Compile Include="System.Web.Util\SearchPattern.cs" />\r
     <Compile Include="System.Web\HttpApplication.cs" />\r
     <Compile Include="System.Web\HttpApplicationFactory.cs" />\r
     <Compile Include="System.Web\HttpApplicationState.cs" />\r
-    <Compile Include="System.Web\HttpApplicationStateWrapper.cs" />\r
     <Compile Include="System.Web\HttpBrowserCapabilities.cs" />\r
-    <Compile Include="System.Web\HttpBrowserCapabilitiesWrapper.cs" />\r
     <Compile Include="System.Web\HttpCacheability.cs" />\r
     <Compile Include="System.Web\HttpCachePolicy.cs" />\r
-    <Compile Include="System.Web\HttpCachePolicyWrapper.cs" />\r
     <Compile Include="System.Web\HttpCacheRevalidation.cs" />\r
     <Compile Include="System.Web\HttpCacheValidateHandler.cs" />\r
     <Compile Include="System.Web\HttpCacheVaryByContentEncodings.cs" />\r
     <Compile Include="System.Web\HttpRuntime.cs" />\r
     <Compile Include="System.Web\HttpServerUtility.cs" />\r
     <Compile Include="System.Web\HttpServerUtilityWrapper.cs" />\r
-    <Compile Include="System.Web\HttpSessionStateWrapper.cs" />\r
     <Compile Include="System.Web\HttpStaticObjectsCollection.cs" />\r
     <Compile Include="System.Web\HttpTaskAsyncHandler.cs" />\r
     <Compile Include="System.Web\HttpUnhandledException.cs" />\r
     <Compile Include="System.Web\HttpValidationStatus.cs" />\r
     <Compile Include="System.Web\HttpWorkerRequest.cs" />\r
     <Compile Include="System.Web\HttpWriter.cs" />\r
-    <Compile Include="System.Web\IHtmlString.cs" />\r
-    <Compile Include="System.Web\IHttpAsyncHandler.cs" />\r
-    <Compile Include="System.Web\IHttpHandler.cs" />\r
-    <Compile Include="System.Web\IHttpHandlerFactory.cs" />\r
     <Compile Include="System.Web\IHttpMapPath.cs" />\r
-    <Compile Include="System.Web\IHttpModule.cs" />\r
     <Compile Include="System.Web\IisTraceListener.cs" />\r
     <Compile Include="System.Web\InputFilterStream.cs" />\r
     <Compile Include="System.Web\IntPtrStream.cs" />\r
     <Compile Include="System.Web\OutputFilterStream.cs" />\r
     <Compile Include="System.Web\ParserError.cs" />\r
     <Compile Include="System.Web\ParserErrorCollection.cs" />\r
-    <Compile Include="System.Web\PreApplicationStartMethodAttribute.cs" />\r
     <Compile Include="System.Web\ProcessInfo.cs" />\r
     <Compile Include="System.Web\ProcessModelInfo.cs" />\r
     <Compile Include="System.Web\ProcessShutdownReason.cs" />\r
     <Compile Include="System.Web\ProcessStatus.cs" />\r
     <Compile Include="System.Web\QueueManager.cs" />\r
-    <Compile Include="System.Web\ReadEntityBodyMode.cs" />\r
-    <Compile Include="System.Web\RequestNotification.cs" />\r
-    <Compile Include="System.Web\RequestNotificationStatus.cs" />\r
     <Compile Include="System.Web\ServerVariablesCollection.cs" />\r
     <Compile Include="System.Web\SiteMap.cs" />\r
     <Compile Include="System.Web\SiteMapNode.cs" />\r
     <Compile Include="System.Web\TaskEventHandler.cs" />\r
     <Compile Include="System.Web\TempFileStream.cs" />\r
     <Compile Include="System.Web\TraceContext.cs" />\r
-    <Compile Include="System.Web\TraceContextEventArgs.cs" />\r
-    <Compile Include="System.Web\TraceContextEventHandler.cs" />\r
     <Compile Include="System.Web\TraceContextRecord.cs" />\r
     <Compile Include="System.Web\TraceData.cs" />\r
     <Compile Include="System.Web\TraceManager.cs" />\r
diff --git a/mcs/class/System.Web/System.Web-tests-net_4_5.csproj b/mcs/class/System.Web/System.Web-tests-net_4_5.csproj
deleted file mode 100644 (file)
index bb9302e..0000000
+++ /dev/null
@@ -1,1327 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{715EA166-6447-4341-B727-C7AC2084665B}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,612,618,618,219,169,1591</NoWarn>\r
-    <OutputPath>bin\Debug\System.Web-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Web_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,612,618,618,219,169,1591</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;INSIDE_SYSTEM_WEB;WEBSERVICES_DEP;MONOWEB_DEP;SYSTEMCORE_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,612,618,618,219,169,1591</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;INSIDE_SYSTEM_WEB;WEBSERVICES_DEP;MONOWEB_DEP;SYSTEMCORE_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\System.Web.DynamicData\Test\Common\AssertExtensions.cs" />\r
-    <Compile Include="Test\Cas\AspNetHostingMinimal.cs" />\r
-    <Compile Include="Test\Cas\AspNetHostingNone.cs" />\r
-    <Compile Include="Test\Cas\AspNetHostingPermissionHelper.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\AssemblyInfo.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\crc32.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\Header.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlAttribute.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlDocument.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlEntity.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlNode.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlNodeNavigator.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\HtmlWeb.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\MixedCodeDocument.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\ParseReader.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\HtmlAgilityPack\tools.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\NunitWebTest.cs" />\r
-    <Compile Include="Test\mainsoft\MainsoftWebTest\XmlComparer.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\BaseControl.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\BaseControlCollection.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\BaseInvoker.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\BaseRequest.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\BaseWorkerRequest.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\CustomSection.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\FakeMembershipProvider.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\FormRequest.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\Global.asax.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\HandlerInvoker.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\IForeignData.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\MyHandler.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\MyHost.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\MyPageHandlerFactory.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\MyTemplateControls.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\PageDelegates.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\PageInvoker.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\PostableRequest.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\PostableWorkerRequest.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\Response.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\StandardUrl.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\TestRoleProvider.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\Tests\Author.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\Tests\AuthorConverter.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\Tests\Book.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\Tests\BookType.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\Tests\TagsNestedInClientTag.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\Tests\TestSiteMapProvider.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\WebTest.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\WebTestLocal.cs" />\r
-    <Compile Include="Test\mainsoft\NunitWeb\NunitWeb\WebTestResourcesSetupAttribute.cs" />\r
-    <Compile Include="Test\System.Web.Caching\AggregateCacheDependencyTest.cs" />\r
-    <Compile Include="Test\System.Web.Caching\CacheCas.cs" />\r
-    <Compile Include="Test\System.Web.Caching\CacheDependencyCas.cs" />\r
-    <Compile Include="Test\System.Web.Caching\CacheItemPriorityQueueTest.cs" />\r
-    <Compile Include="Test\System.Web.Caching\CacheItemPriorityQueueTest_generated.cs" />\r
-    <Compile Include="Test\System.Web.Caching\CacheItemPriorityQueueTestSupport.cs" />\r
-    <Compile Include="Test\System.Web.Caching\FileResponseElementTest.cs" />\r
-    <Compile Include="Test\System.Web.Caching\HeaderElementTest.cs" />\r
-    <Compile Include="Test\System.Web.Caching\MemoryResponseElementTest.cs" />\r
-    <Compile Include="Test\System.Web.Caching\OutputCacheTest.cs" />\r
-    <Compile Include="Test\System.Web.Caching\SqlCacheDependencyTest.cs" />\r
-    <Compile Include="Test\System.Web.Caching\SubstitutionResponseElementTest.cs" />\r
-    <Compile Include="Test\System.Web.Compilation\AppResourcesCompilerTest.cs" />\r
-    <Compile Include="Test\System.Web.Compilation\AppSettingsExpressionBuilderTest.cs" />\r
-    <Compile Include="Test\System.Web.Compilation\BuildManagerTest.cs" />\r
-    <Compile Include="Test\System.Web.Compilation\BuildProviderTest.cs" />\r
-    <Compile Include="Test\System.Web.Compilation\ClientBuildManagerParameterTest.cs" />\r
-    <Compile Include="Test\System.Web.Compilation\RouteUrlExpressionBuilderTest.cs" />\r
-    <Compile Include="Test\System.Web.Compilation\TemplateControlCompilerTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\AnonymousIdentificationSectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\AssemblyCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\AssemblyInfoTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\AuthenticationSectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\AuthorizationRuleCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\AuthorizationRuleTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\AuthorizationSectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\BufferModeSettingsTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\BuildProviderTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\CacheSectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\ClientTargetSectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\ClientTargetTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\CodeSubDirectoryTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\CompilationSectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\CustomErrorCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\CustomErrorsSectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\DeploymentSectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\GlobalizationSectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\HostingEnvironmentSectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\HttpCapabilitiesBaseCas.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\MachineKeySectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\MachineKeyValidationConverterTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\NullableStringValidatorTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\ProfilePropertySettingsTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\SiteMapSectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Configuration\WebConfigurationManagerTest.cs" />\r
-    <Compile Include="Test\System.Web.Handlers\TraceHandlerCas.cs" />\r
-    <Compile Include="Test\System.Web.Hosting\AppDomainFactoryCas.cs" />\r
-    <Compile Include="Test\System.Web.Hosting\ApplicationHostCas.cs" />\r
-    <Compile Include="Test\System.Web.Hosting\ApplicationHostTest.cs" />\r
-    <Compile Include="Test\System.Web.Hosting\HostingEnvironmentTest.cs" />\r
-    <Compile Include="Test\System.Web.Hosting\ISAPIRuntimeCas.cs" />\r
-    <Compile Include="Test\System.Web.Hosting\SimpleWorkerRequestCas.cs" />\r
-    <Compile Include="Test\System.Web.Hosting\SimpleWorkerRequestTest.cs" />\r
-    <Compile Include="Test\System.Web.Hosting\VirtualPathProviderTest.cs" />\r
-    <Compile Include="Test\System.Web.Mail\MailAttachmentCas.cs" />\r
-    <Compile Include="Test\System.Web.Mail\MailMessageCas.cs" />\r
-    <Compile Include="Test\System.Web.Mail\SmtpMailCas.cs" />\r
-    <Compile Include="Test\System.Web.Profile\ProfileInfoTest.cs" />\r
-    <Compile Include="Test\System.Web.Security\DefaultAuthenticationEventArgsCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\DefaultAuthenticationModuleCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\FileAuthorizationModuleCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\FormsAuthenticationCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\FormsAuthenticationEventArgsCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\FormsAuthenticationModuleCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\FormsAuthenticationTest.cs" />\r
-    <Compile Include="Test\System.Web.Security\FormsAuthenticationTicketCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\FormsIdentityCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\FormsIdentityTest.cs" />\r
-    <Compile Include="Test\System.Web.Security\MachineKeyTest.cs" />\r
-    <Compile Include="Test\System.Web.Security\MembershipProviderCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Security\MembershipProviderTest.cs" />\r
-    <Compile Include="Test\System.Web.Security\MembershipTest.cs" />\r
-    <Compile Include="Test\System.Web.Security\MembershipUserCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.Security\PassportAuthenticationEventArgsCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\PassportAuthenticationModuleCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\PassportIdentityCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\RolePrincipalTest.cs" />\r
-    <Compile Include="Test\System.Web.Security\RolesTest.cs" />\r
-    <Compile Include="Test\System.Web.Security\UrlAuthorizationModuleCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\WindowsAuthenticationEventArgsCas.cs" />\r
-    <Compile Include="Test\System.Web.Security\WindowsAuthenticationModuleCas.cs" />\r
-    <Compile Include="Test\System.Web.SessionState\SessionStateModuleCas.cs" />\r
-    <Compile Include="Test\System.Web.SessionState\StateRuntimeCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.Adapters\ControlAdapterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.Adapters\PageAdapterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlAnchorCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlAnchorTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlButtonCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlButtonTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlContainerControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlContainerControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlEmptyTagControlBuilderCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlFormCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlFormTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlGenericControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlHeadBuilderCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlHeadCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlHeadTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlImageCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlImageTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputButtonCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputButtonTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputCheckBoxCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputCheckBoxTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputFileCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputFileTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputHiddenCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputHiddenTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputImageCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputPasswordCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputPasswordTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputRadioButtonCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputRadioButtonTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputResetCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputResetTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputSubmitCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputSubmitTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputTextCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlInputTextTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlLinkCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlLinkTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlMetaCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlMetaTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlSelectBuilderCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlSelectCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlSelectTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlTableCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlTableCellCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlTableCellTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlTableRowCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlTableRowTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlTableTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlTextAreaCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlTextAreaTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.HtmlControls\HtmlTitleCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls.Adapters\DataBoundControlAdapterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls.Adapters\HideDisabledControlAdapterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls.Adapters\HierarchicalDataBoundControlAdapterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls.Adapters\MenuAdapterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls.Adapters\WebControlAdapterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls.WebParts\ConnectionInterfaceCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls.WebParts\WebPartTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\AccessDataSourceTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\AdCreatedEventArgsCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\AdCreatedEventArgsTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\AutoGeneratedFieldTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\BaseCompareValidatorCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\BaseCompareValidatorTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\BaseDataBoundControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\BaseDataBoundControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\BaseDataListCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\BaseDataListTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\BaseValidatorCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\BaseValidatorTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\BoundColumnCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\BoundColumnTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\BoundFieldTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\BulletedListTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ButtonColumnCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ButtonColumnTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ButtonFieldBaseTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ButtonFieldTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ButtonTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CalandarCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CalendarDayCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CalendarDayTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CalendarTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CallBackTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ChangePasswordTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CheckBoxCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CheckBoxFieldTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CheckBoxListCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CheckBoxListTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CheckBoxTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CircleHotSpotTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CommandFieldTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CompareValidatorCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CompareValidatorTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CompleteWizardStepTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CompositeControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CompositeControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CompositeDataBoundControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ContentTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ControlParameterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CookieParameterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CreateUserWizardStepTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CreateUserWizardTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CrossPagePostingTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CustomValidatorCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\CustomValidatorTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataBoundControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataBoundControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataControlFieldCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataControlFieldTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataGridCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataGridColumnCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataGridColumnTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataGridItemCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataGridItemCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataGridItemCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataGridItemTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataGridPagerStyleCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataGridPagerStyleTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataGridTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataKeyArrayTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataKeyCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataKeyCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataKeyTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataListCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataListItemCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataListItemCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataListItemCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataListItemTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataListTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataSourceControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DataSourceViewTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DetailsViewRowCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DetailsViewRowTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DetailsViewTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DropDownListCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\DropDownListTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\EditCommandColumnCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\EditCommandColumnTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\FileUploadTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\FontInfoCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\FontInfoTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\FontNamesConverterCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\FontNamesConverterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\FontUnitCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\FontUnitTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\FormParameterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\FormViewCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\FormViewRowTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\FormViewTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\GridViewRowCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\GridViewRowTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\GridViewTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\HierarchicalDataBoundControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\HotSpotCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\HotSpotTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\HyperLinkCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\HyperLinkColumnCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\HyperLinkColumnTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\HyperLinkFieldTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\HyperLinkTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ImageButtonCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ImageButtonTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ImageCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ImageFieldTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ImageMapTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ImageTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\LabelCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\LabelTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\LinkButtonCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\LinkButtonTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ListBoxCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ListBoxTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ListControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ListControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ListItemCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ListItemCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ListItemCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ListItemTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\LiteralCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\LiteralTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\LoginCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\LoginNameCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\LoginNameTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\LoginStatusCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\LoginStatusTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\LoginTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\MappingUrlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\MasterPageTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\MenuItemBindingTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\MenuTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\MonthChangedEventArgsCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\MonthChangedEventArgsTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\MultiViewControlBuilderTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\MultiViewTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ObjectDataSourceTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ObjectDataSourceViewTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\PagedDataSourceCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\PagedDataSourceTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\PagerSettingsTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\PanelCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\PanelTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ParameterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\PasswordRecoveryTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\PolygonHotSpotTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\QueryStringParameterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RadioButtonCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RadioButtonListCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RadioButtonListTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RadioButtonTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RangeValidatorCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RangeValidatorTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RectangleHotSpotTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RegularExpressionValidatorCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RegularExpressionValidatorTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RepeaterCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RepeaterItemCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RepeaterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RepeatInfoCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RepeatInfoTest.auto.2.0.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RepeatInfoTest.auto.4.0.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RepeatInfoTest.auto.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RepeatInfoTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RepeatInfoUser.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RequiredFieldValidatorCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RoleGroupCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RoleGroupCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RoleGroupCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RoleGroupTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\RouteParameterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\SelectedDatesCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\SelectedDatesCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\SessionParameterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\SiteMapDataSourceTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\SiteMapPathTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\SqlDataSourceTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\SqlDataSourceViewTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\StyleCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\StyleTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableCellCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableCellTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableFooterRowCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableFooterRowTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableHeaderCellCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableHeaderCellTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableHeaderRowCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableHeaderRowTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableItemStyleCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableItemStyleTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableRowCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableRowTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableSectionStyleCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableSectionStyleTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableStyleCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableStyleTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TableTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TargetConverterCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TargetConverterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TemplateFieldTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TestControlIDConverter.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TextBoxCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TextBoxTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ThemeTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TreeNodeBindingCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TreeNodeBindingTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TreeNodeCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TreeNodeStyleCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TreeNodeStyleTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TreeNodeTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TreeViewCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\TreeViewTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\UnitCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\UnitConverterCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\UnitConverterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\UnitTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ValidatedControlConverterCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ValidatedControlConverterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ValidationSummaryCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ValidationSummaryTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ValidatorTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\ViewTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\WebColorConverterCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\WebColorConverterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\WebControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\WebControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\WizardStepBaseTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\WizardStepCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\WizardStepTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\WizardTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\XmlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\XmlDataSourceCas.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\XmlDataSourceTest.cs" />\r
-    <Compile Include="Test\System.Web.UI.WebControls\XmlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\AttributeCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\AttributeCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\BaseParserCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\ChtmlTextWriterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\CleanHtmlTextWriter.cs" />\r
-    <Compile Include="Test\System.Web.UI\ClientScriptManagerTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\CompiledTemplateBuilderCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\ConstructorNeedsTagAttributeCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\ControlBuilderAttributeCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\ControlBuilderCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\ControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\ControlCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\ControlCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\ControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\CssStyleCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\CssStyleCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\DataBinderCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\DataBinderTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\DataBindingCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\DataBindingCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\DataBindingCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\DataBindingHandlerAttributeCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\DataBindingHandlerAttributeTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\DataBoundLiteralControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\DataKeyPropertyAttributeTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\DataSourceCacheDurationConverterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\DataSourceSelectArgumentsTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\DesignerDataBoundLiteralControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\DesignTimeParseDataCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\DesignTimeTemplateParserCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\EmptyCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\Html32TextWriterCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\HtmlTextWriterCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\HtmlTextWriterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\ImageClickEventArgsCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\LiteralControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\LiteralControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\LosFormatterCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\LosFormatterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\MinimizableAttributeTypeConverterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\ObjectConverterCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\ObjectStateFormatterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\ObjectTagBuilderCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\OutputCacheParametersTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\PageCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\PageParserFilterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\PageParserTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\PageTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\PairCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\ParseChildrenAttributeCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\PartialCachingAttributeCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\PersistChildrenAttributeCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\PersistenceModeAttributeCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\PostBackOptionsTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\PropertyConverterCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\PropertyConverterTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\RootBuilderCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\StateBagCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\StateBagTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\StateItemCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\StaticPartialCachingControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\TagPrefixAttributeCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\TemplateBuilderCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\TemplateContainerAttributeCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\TemplateControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\TemplateControlTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\TemplateInstanceAttributeTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\TestUrlPropertyAttribute.cs" />\r
-    <Compile Include="Test\System.Web.UI\ToolboxDataAttributeCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\ToolboxDataAttributeTest.cs" />\r
-    <Compile Include="Test\System.Web.UI\TripletCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\UserControlCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\UserControlControlBuilderCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\ValidationPropertyAttributeCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\ValidatorCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web.UI\XhtmlTextWriterTest.cs" />\r
-    <Compile Include="Test\System.Web.Util\HttpEncoderTest.cs" />\r
-    <Compile Include="Test\System.Web.Util\MachineKeySectionUtilsTest.cs" />\r
-    <Compile Include="Test\System.Web.Util\RequestValidatorTest.cs" />\r
-    <Compile Include="Test\System.Web.Util\TransactionsCas.cs" />\r
-    <Compile Include="Test\System.Web.Util\UrlUtilsTest.cs" />\r
-    <Compile Include="Test\System.Web.Util\WorkItemCas.cs" />\r
-    <Compile Include="Test\System.Web\AppBrowsersTest.cs" />\r
-    <Compile Include="Test\System.Web\EventHandlerTaskAsyncHelperTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpApplicationCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpApplicationStateCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpApplicationTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpBrowserCapabilitiesCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpBrowserCapabilitiesTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpCachePolicyCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpCacheVaryByContentEncodingsTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpCacheVaryByHeadersCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpCacheVaryByHeadersTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpCacheVaryByParamsCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpCacheVaryByParamsTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpClientCertificateCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpClientCertificateTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpCompileExceptionCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpContext.cs" />\r
-    <Compile Include="Test\System.Web\HttpContextCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpCookieCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpCookieCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpCookieCollectionTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpCookieTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpExceptionCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpExceptionTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpFileCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpModuleCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpParseExceptionCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpRequestCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpRequestTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpRequestValidationExceptionCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpResponseCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpResponseTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpRuntimeCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpRuntimeTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpServerUtilityCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpServerUtilityTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpStaticObjectsCollectionCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpTaskAsyncHandlerTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpUnhandledExceptionCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpUtilityCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpUtilityTest.cs" />\r
-    <Compile Include="Test\System.Web\HttpWorkerRequestCas.cs" />\r
-    <Compile Include="Test\System.Web\HttpWriter.cs" />\r
-    <Compile Include="Test\System.Web\HttpWriterCas.cs" />\r
-    <Compile Include="Test\System.Web\ProcessInfoCas.cs" />\r
-    <Compile Include="Test\System.Web\ProcessModelInfoCas.cs" />\r
-    <Compile Include="Test\System.Web\SiteMapNodeTest.cs" />\r
-    <Compile Include="Test\System.Web\SiteMapProviderTest.cs" />\r
-    <Compile Include="Test\System.Web\StaticSiteMapProviderTest.cs" />\r
-    <Compile Include="Test\System.Web\TaskAsyncResultTest.cs" />\r
-    <Compile Include="Test\System.Web\TraceContextCas.cs" />\r
-    <Compile Include="Test\System.Web\TraceContextRecordTest.cs" />\r
-    <Compile Include="Test\System.Web\VirtualPathUtilityTest.cs" />\r
-    <Compile Include="Test\System.Web\XmlSiteMapProviderTest.cs" />\r
-    <Compile Include="System.Web\UplevelHelper.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{725FB152-838A-4C6E-8A12-AC47E2DD4CEA}</Project>\r
-      <Name>System.Web\System.Web-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{773D8BA7-9A88-49AC-81C9-740436270588}</Project>\r
-      <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{41476FBD-C1CB-4B3C-8078-3281EB1E0EAB}</Project>\r
-      <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F}</Project>\r
-      <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{251DB111-FEE1-4080-8411-0AD1CC9BA94B}</Project>\r
-      <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Web\Mono.Web-net_4_5.csproj">\r
-      <Project>{4FCA6281-7800-4198-AE09-89EA51D456EB}</Project>\r
-      <Name>Mono.Web\Mono.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_5.csproj">\r
-      <Project>{337A92C8-EB50-43A9-9435-CB268AC147DC}</Project>\r
-      <Name>SystemWebTestShim\SystemWebTestShim-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/TranslationResources.resources">\r
-      <LogicalName>TranslationResources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/WebUIValidation.js">\r
-      <LogicalName>WebUIValidation.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/folder.gif">\r
-      <LogicalName>folder.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/file.gif">\r
-      <LogicalName>file.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/computer.gif">\r
-      <LogicalName>computer.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_minus.gif">\r
-      <LogicalName>arrow_minus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_noexpand.gif">\r
-      <LogicalName>arrow_noexpand.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_plus.gif">\r
-      <LogicalName>arrow_plus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_up.gif">\r
-      <LogicalName>arrow_up.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/arrow_down.gif">\r
-      <LogicalName>arrow_down.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_full.gif">\r
-      <LogicalName>box_full.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_empty.gif">\r
-      <LogicalName>box_empty.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_minus.gif">\r
-      <LogicalName>box_minus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_noexpand.gif">\r
-      <LogicalName>box_noexpand.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/box_plus.gif">\r
-      <LogicalName>box_plus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/contact.gif">\r
-      <LogicalName>contact.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/dot_empty.gif">\r
-      <LogicalName>dot_empty.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/dot_full.gif">\r
-      <LogicalName>dot_full.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/dots.gif">\r
-      <LogicalName>dots.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/inbox.gif">\r
-      <LogicalName>inbox.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/star_empty.gif">\r
-      <LogicalName>star_empty.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/star_full.gif">\r
-      <LogicalName>star_full.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/warning.gif">\r
-      <LogicalName>warning.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_noexpand.gif">\r
-      <LogicalName>TreeView_noexpand.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_dash.gif">\r
-      <LogicalName>TreeView_dash.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_dashminus.gif">\r
-      <LogicalName>TreeView_dashminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_dashplus.gif">\r
-      <LogicalName>TreeView_dashplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_i.gif">\r
-      <LogicalName>TreeView_i.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_l.gif">\r
-      <LogicalName>TreeView_l.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_lminus.gif">\r
-      <LogicalName>TreeView_lminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_lplus.gif">\r
-      <LogicalName>TreeView_lplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_minus.gif">\r
-      <LogicalName>TreeView_minus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_plus.gif">\r
-      <LogicalName>TreeView_plus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_r.gif">\r
-      <LogicalName>TreeView_r.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_rminus.gif">\r
-      <LogicalName>TreeView_rminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_rplus.gif">\r
-      <LogicalName>TreeView_rplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_t.gif">\r
-      <LogicalName>TreeView_t.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_tminus.gif">\r
-      <LogicalName>TreeView_tminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/TreeView_tplus.gif">\r
-      <LogicalName>TreeView_tplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/transparent.gif">\r
-      <LogicalName>transparent.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/webform.js">\r
-      <LogicalName>webform.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/WebUIValidation_2.0.js">\r
-      <LogicalName>WebUIValidation_2.0.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/ErrorTemplateCommon_Top.html">\r
-      <LogicalName>ErrorTemplateCommon_Top.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/DefaultErrorTemplate_CustomErrorDefault.html">\r
-      <LogicalName>DefaultErrorTemplate_CustomErrorDefault.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/ErrorTemplateCommon_Bottom.html">\r
-      <LogicalName>ErrorTemplateCommon_Bottom.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/DefaultErrorTemplate_StandardPage.html">\r
-      <LogicalName>DefaultErrorTemplate_StandardPage.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/HtmlizedExceptionPage_Top.html">\r
-      <LogicalName>HtmlizedExceptionPage_Top.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/HtmlizedExceptionPage_FileLongSource.html">\r
-      <LogicalName>HtmlizedExceptionPage_FileLongSource.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/HtmlizedExceptionPage_FileShortSource.html">\r
-      <LogicalName>HtmlizedExceptionPage_FileShortSource.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/HtmlizedExceptionPage_CompilerOutput.html">\r
-      <LogicalName>HtmlizedExceptionPage_CompilerOutput.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/GridView.js">\r
-      <LogicalName>GridView.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/DetailsView.js">\r
-      <LogicalName>DetailsView.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/TreeView.js">\r
-      <LogicalName>TreeView.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/Menu.js">\r
-      <LogicalName>Menu.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="System.Web.UI.WebControls/MenuModern.js">\r
-      <LogicalName>MenuModern.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/Global.asax">\r
-      <LogicalName>Global.asax</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/My.ashx">\r
-      <LogicalName>My.ashx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/My.master">\r
-      <LogicalName>My.master</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/MyPage.aspx">\r
-      <LogicalName>MyPage.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/MyPage.aspx.cs">\r
-      <LogicalName>MyPage.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/MyPageWithMaster.aspx">\r
-      <LogicalName>MyPageWithMaster.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/Web.mono.config">\r
-      <LogicalName>Web.mono.config</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/Web.mono.config.4.0">\r
-      <LogicalName>Web.mono.config.4.0</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/sub_map_01.sitemap">\r
-      <LogicalName>sub_map_01.sitemap</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/test_map_01.sitemap">\r
-      <LogicalName>test_map_01.sitemap</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/test_map_02.sitemap">\r
-      <LogicalName>test_map_02.sitemap</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/test_map_03.sitemap">\r
-      <LogicalName>test_map_03.sitemap</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/test_map_04.sitemap">\r
-      <LogicalName>test_map_04.sitemap</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/test_map_05.sitemap">\r
-      <LogicalName>test_map_05.sitemap</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/test_map_06.sitemap">\r
-      <LogicalName>test_map_06.sitemap</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/test_map_07.sitemap">\r
-      <LogicalName>test_map_07.sitemap</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/test_map_08.sitemap">\r
-      <LogicalName>test_map_08.sitemap</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWeb/NunitWeb/Resources/test_map_09.sitemap">\r
-      <LogicalName>test_map_09.sitemap</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/menuclass.aspx">\r
-      <LogicalName>menuclass.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/FormView.aspx">\r
-      <LogicalName>FormView.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/PostBackMenuTest.aspx">\r
-      <LogicalName>PostBackMenuTest.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/PageWithStyleSheet.aspx">\r
-      <LogicalName>PageWithStyleSheet.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/PageWithTheme.aspx">\r
-      <LogicalName>PageWithTheme.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ResolveUrl.ascx">\r
-      <LogicalName>ResolveUrl.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ResolveUrl.aspx">\r
-      <LogicalName>ResolveUrl.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/RunTimeSetTheme.aspx">\r
-      <LogicalName>RunTimeSetTheme.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ReadOnlyPropertyBind.aspx">\r
-      <LogicalName>ReadOnlyPropertyBind.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ReadOnlyPropertyControl.ascx">\r
-      <LogicalName>ReadOnlyPropertyControl.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/Theme1.skin">\r
-      <LogicalName>Theme1.skin</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/Theme2.skin">\r
-      <LogicalName>Theme2.skin</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/UrlProperty.aspx">\r
-      <LogicalName>UrlProperty.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/UrlProperty.ascx">\r
-      <LogicalName>UrlProperty.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/UrlProperty.ascx.cs">\r
-      <LogicalName>UrlProperty.ascx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/Web.sitemap">\r
-      <LogicalName>Web.sitemap</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/WizardTest.skin">\r
-      <LogicalName>WizardTest.skin</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/FooterTemplateTest.aspx">\r
-      <LogicalName>FooterTemplateTest.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/DataGrid.aspx">\r
-      <LogicalName>DataGrid.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/DetailsViewTemplates.aspx">\r
-      <LogicalName>DetailsViewTemplates.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/DetailsViewTemplates_2.aspx">\r
-      <LogicalName>DetailsViewTemplates_2.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/DetailsViewTemplates_3.aspx">\r
-      <LogicalName>DetailsViewTemplates_3.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/DetailsViewDataActions.aspx">\r
-      <LogicalName>DetailsViewDataActions.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/DetailsViewProperties1.aspx">\r
-      <LogicalName>DetailsViewProperties1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/Bluehills.jpg">\r
-      <LogicalName>Bluehills.jpg</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/FormViewTest1.aspx">\r
-      <LogicalName>FormViewTest1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/FormViewTest1_2.aspx">\r
-      <LogicalName>FormViewTest1_2.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/FormViewTest1_3.aspx">\r
-      <LogicalName>FormViewTest1_3.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/FormViewTest1_4.aspx">\r
-      <LogicalName>FormViewTest1_4.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/FormViewInsertEditDelete.aspx">\r
-      <LogicalName>FormViewInsertEditDelete.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/GridViewUpdate.aspx">\r
-      <LogicalName>GridViewUpdate.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/XMLDataSourceTest.xml">\r
-      <LogicalName>XMLDataSourceTest.xml</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/XMLDataSourceTest.xsl">\r
-      <LogicalName>XMLDataSourceTest.xsl</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/XMLDataSourceTest1.aspx">\r
-      <LogicalName>XMLDataSourceTest1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/XMLDataSourceTest2.aspx">\r
-      <LogicalName>XMLDataSourceTest2.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/XMLDataSourceTest3.aspx">\r
-      <LogicalName>XMLDataSourceTest3.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/XMLDataSourceTest4.aspx">\r
-      <LogicalName>XMLDataSourceTest4.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/LoginViewTest1.aspx">\r
-      <LogicalName>LoginViewTest1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/WebControl.config">\r
-      <LogicalName>WebControl.config</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/WebLogin.config">\r
-      <LogicalName>WebLogin.config</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CallbackTest1.aspx">\r
-      <LogicalName>CallbackTest1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CallbackTest2.aspx">\r
-      <LogicalName>CallbackTest2.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/EventValidationTest2.aspx">\r
-      <LogicalName>EventValidationTest2.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/EventValidationTest1.aspx">\r
-      <LogicalName>EventValidationTest1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ClientScript.js">\r
-      <LogicalName>ClientScript.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/EvalTest.aspx">\r
-      <LogicalName>EvalTest.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/TemplateUserControl.ascx">\r
-      <LogicalName>TemplateUserControl.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/WebMapping.config">\r
-      <LogicalName>WebMapping.config</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/Mapping.aspx">\r
-      <LogicalName>Mapping.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/Mapping1.aspx">\r
-      <LogicalName>Mapping1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CrossPagePosting1.aspx">\r
-      <LogicalName>CrossPagePosting1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CrossPagePosting2.aspx">\r
-      <LogicalName>CrossPagePosting2.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/MyDerived.master">\r
-      <LogicalName>MyDerived.master</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/MyPageWithDerivedMaster.aspx">\r
-      <LogicalName>MyPageWithDerivedMaster.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/MasterTypeTest1.aspx">\r
-      <LogicalName>MasterTypeTest1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/MasterTypeTest2.aspx">\r
-      <LogicalName>MasterTypeTest2.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/PageLifecycleTest.aspx">\r
-      <LogicalName>PageLifecycleTest.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/PageValidationTest.aspx">\r
-      <LogicalName>PageValidationTest.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/AsyncPage.aspx">\r
-      <LogicalName>AsyncPage.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/PageCultureTest.aspx">\r
-      <LogicalName>PageCultureTest.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/adapters.browser">\r
-      <LogicalName>adapters.browser</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/NoEventValidation.aspx">\r
-      <LogicalName>NoEventValidation.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ListControlPage.aspx">\r
-      <LogicalName>ListControlPage.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/TextBoxTestlPage.aspx">\r
-      <LogicalName>TextBoxTestlPage.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ClearErrorOnError.aspx">\r
-      <LogicalName>ClearErrorOnError.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/RedirectOnError.aspx">\r
-      <LogicalName>RedirectOnError.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/TestCapability.browser">\r
-      <LogicalName>TestCapability.browser</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/PageWithAdapter.aspx">\r
-      <LogicalName>PageWithAdapter.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/InvalidPropertyBind1.aspx">\r
-      <LogicalName>InvalidPropertyBind1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/InvalidPropertyBind2.aspx">\r
-      <LogicalName>InvalidPropertyBind2.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/InvalidPropertyBind3.aspx">\r
-      <LogicalName>InvalidPropertyBind3.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/InvalidPropertyBind4.aspx">\r
-      <LogicalName>InvalidPropertyBind4.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ValidPropertyBind1.aspx">\r
-      <LogicalName>ValidPropertyBind1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ValidPropertyBind2.aspx">\r
-      <LogicalName>ValidPropertyBind2.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ValidPropertyBind3.aspx">\r
-      <LogicalName>ValidPropertyBind3.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ValidPropertyBind4.aspx">\r
-      <LogicalName>ValidPropertyBind4.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ValidPropertyBind5.aspx">\r
-      <LogicalName>ValidPropertyBind5.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ReadWritePropertyControl.ascx">\r
-      <LogicalName>ReadWritePropertyControl.ascx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/MainsoftWebTest/nunitweb_config.xml">\r
-      <LogicalName>nunitweb_config.xml</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/TemplateControlParsingTest.aspx">\r
-      <LogicalName>TemplateControlParsingTest.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ContentPlaceHolderInTemplate.aspx">\r
-      <LogicalName>ContentPlaceHolderInTemplate.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ContentPlaceHolderInTemplate.master">\r
-      <LogicalName>ContentPlaceHolderInTemplate.master</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/MissingMasterFile.aspx">\r
-      <LogicalName>MissingMasterFile.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CustomSectionEmptyCollection.aspx">\r
-      <LogicalName>CustomSectionEmptyCollection.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/NoDoubleOnInitOnRemoveAdd.aspx">\r
-      <LogicalName>NoDoubleOnInitOnRemoveAdd.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/NoDoubleOnInitOnRemoveAdd.aspx.cs">\r
-      <LogicalName>NoDoubleOnInitOnRemoveAdd.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/LoginDisplayRememberMe.aspx">\r
-      <LogicalName>LoginDisplayRememberMe.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/NoBindForMethodsWithBindInName.aspx">\r
-      <LogicalName>NoBindForMethodsWithBindInName.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/LinkInHeadWithEmbeddedExpression.aspx">\r
-      <LogicalName>LinkInHeadWithEmbeddedExpression.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ExpressionInListControl.aspx">\r
-      <LogicalName>ExpressionInListControl.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ServerSideControlsInScriptBlock.aspx">\r
-      <LogicalName>ServerSideControlsInScriptBlock.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ServerControlInClientSideComment.aspx">\r
-      <LogicalName>ServerControlInClientSideComment.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/PreprocessorDirectivesInMarkup.aspx">\r
-      <LogicalName>PreprocessorDirectivesInMarkup.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/UnquotedAngleBrackets.aspx">\r
-      <LogicalName>UnquotedAngleBrackets.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/FullTagsInText.aspx">\r
-      <LogicalName>FullTagsInText.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/TagsExpressionsAndCommentsInText.aspx">\r
-      <LogicalName>TagsExpressionsAndCommentsInText.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/NewlineInCodeExpression.aspx">\r
-      <LogicalName>NewlineInCodeExpression.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/DuplicateControlsInClientComment.aspx">\r
-      <LogicalName>DuplicateControlsInClientComment.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/TagsNestedInClientTag.aspx">\r
-      <LogicalName>TagsNestedInClientTag.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ConditionalClientComments.aspx">\r
-      <LogicalName>ConditionalClientComments.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/OneLetterIdentifierInCodeRender.aspx">\r
-      <LogicalName>OneLetterIdentifierInCodeRender.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/GlobalResourcesLocalization.aspx">\r
-      <LogicalName>GlobalResourcesLocalization.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/TableSections_Bug551666.aspx">\r
-      <LogicalName>TableSections_Bug551666.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/TableSections_Bug551666.aspx.cs">\r
-      <LogicalName>TableSections_Bug551666.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/NestedParserFileText.aspx">\r
-      <LogicalName>NestedParserFileText.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/StateFormatter_CorrectConverter.aspx">\r
-      <LogicalName>StateFormatter_CorrectConverter.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/StateFormatter_CollectionConverter.aspx">\r
-      <LogicalName>StateFormatter_CollectionConverter.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/StateFormatter_CollectionConverter.aspx.cs">\r
-      <LogicalName>StateFormatter_CollectionConverter.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ChangePasswordContainer_FindControl.aspx">\r
-      <LogicalName>ChangePasswordContainer_FindControl.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/TagWithExpressionWithinAttribute.aspx">\r
-      <LogicalName>TagWithExpressionWithinAttribute.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CheckBoxList_Bug377703_1.aspx">\r
-      <LogicalName>CheckBoxList_Bug377703_1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CheckBoxList_Bug377703_2.aspx">\r
-      <LogicalName>CheckBoxList_Bug377703_2.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CheckBoxList_Bug578770.aspx">\r
-      <LogicalName>CheckBoxList_Bug578770.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/EnumConverter_Bug578586.aspx">\r
-      <LogicalName>EnumConverter_Bug578586.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/ButtonColor_Bug325489.aspx">\r
-      <LogicalName>ButtonColor_Bug325489.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/SqlDataSource_OnInit_Bug572781.aspx">\r
-      <LogicalName>SqlDataSource_OnInit_Bug572781.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/FormViewPagerVisibility.aspx">\r
-      <LogicalName>FormViewPagerVisibility.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/OverridenControlsPropertyAndPostBack_Bug594238.aspx">\r
-      <LogicalName>OverridenControlsPropertyAndPostBack_Bug594238.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/GlobalizationEncodingName.aspx">\r
-      <LogicalName>GlobalizationEncodingName.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_0.aspx">\r
-      <LogicalName>CheckBoxField_Bug595568_0.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_1.aspx">\r
-      <LogicalName>CheckBoxField_Bug595568_1.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_2.aspx">\r
-      <LogicalName>CheckBoxField_Bug595568_2.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_5.aspx">\r
-      <LogicalName>CheckBoxField_Bug595568_5.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_6.aspx">\r
-      <LogicalName>CheckBoxField_Bug595568_6.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_7.aspx">\r
-      <LogicalName>CheckBoxField_Bug595568_7.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/GridView_Bug595567.aspx">\r
-      <LogicalName>GridView_Bug595567.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/CheckBoxList_Bug600415.aspx">\r
-      <LogicalName>CheckBoxList_Bug600415.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/BoundField_Bug646505.aspx">\r
-      <LogicalName>BoundField_Bug646505.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/BoundField_Bug646505.aspx.cs">\r
-      <LogicalName>BoundField_Bug646505.aspx.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/HtmlTitleCodeRender_Bug662918.aspx">\r
-      <LogicalName>HtmlTitleCodeRender_Bug662918.aspx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/App_Code/EnumConverterControl.cs">\r
-      <LogicalName>App_Code/EnumConverterControl.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/App_Code/MyContainer.cs">\r
-      <LogicalName>App_Code/MyContainer.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/App_Code/CustomCheckBoxColumn.cs">\r
-      <LogicalName>App_Code/CustomCheckBoxColumn.cs</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/App_GlobalResources/Common.resx">\r
-      <LogicalName>App_GlobalResources/Common.resx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/App_GlobalResources/Common.fr-FR.resx">\r
-      <LogicalName>App_GlobalResources/Common.fr-FR.resx</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/mainsoft/NunitWebResources/App_GlobalResources/Resource1.resx">\r
-      <LogicalName>App_GlobalResources/Resource1.resx</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index d53c063441e031e840b38712192ef849e2c4bbae..a8ae41da81efdf3bd7c1d45e9527320b817627dc 100644 (file)
@@ -107,8 +107,10 @@ namespace System.Web.Routing
 
                protected override void ClearItems ()
                {
-                       lock (GetWriteLock ())
+                       lock (GetWriteLock ()) {
                                base.ClearItems ();
+                               d.Clear ();
+                       }
                }
 
                public IDisposable GetReadLock ()
index 1e191bf31d6e1555e42fff259155cd7fd5cff3a1..9b7122e2ed850097d2f1795861e4c060293c37c5 100644 (file)
@@ -293,8 +293,8 @@ namespace System.Web.UI.WebControls {
                                catch (Exception e) {
                                        exception = e;
                                }
-                               SqlDataSourceStatusEventArgs selectedArgs =
-                                       new SqlDataSourceStatusEventArgs (command, reader.RecordsAffected, exception);
+                               int rows = reader == null ? 0 : reader.RecordsAffected;
+                               SqlDataSourceStatusEventArgs selectedArgs = new SqlDataSourceStatusEventArgs (command, rows, exception);
                                OnSelected (selectedArgs);
                                if (exception != null && !selectedArgs.ExceptionHandled)
                                        throw exception;
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/WebColorConverter.cs b/mcs/class/System.Web/System.Web.UI.WebControls/WebColorConverter.cs
deleted file mode 100644 (file)
index f2965a3..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
-//
-// Authors:
-//     Peter Bartok    (pbartok@novell.com)
-//     Marek Safar     (marek.safar@gmail.com) 
-//
-//
-
-using System.Collections;
-using System.Drawing;
-using System.Globalization;
-using System.ComponentModel;
-using System.Security.Permissions;
-using System.Web.Util;
-
-namespace System.Web.UI.WebControls {
-
-       // CAS
-       [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
-       [AspNetHostingPermission (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
-       public class WebColorConverter : ColorConverter
-       {
-               // Converts from string to Color
-               public override object ConvertFrom (ITypeDescriptorContext context, CultureInfo culture, object value) 
-               {
-                       if (value is string) {
-                               string  s = ((string)value).Trim();
-                               return ColorTranslator.FromHtml (s);
-                       }
-                       
-                       return base.ConvertFrom (context, culture, value);
-               }
-
-               // Converts from Color to string
-               public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) 
-               {
-                       if (!(value is Color) || destinationType != typeof (string))
-                               return base.ConvertTo (context, culture, value, destinationType);
-
-                       Color c = (Color) value;
-
-                       if (culture == null)
-                               culture = Helpers.InvariantCulture;
-
-                       string s = c.ToKnownColor ().ToString ();
-                       if (s != "0")
-                               return s;
-
-                       return String.Concat ("#", c.R.ToString ("X2"), c.G.ToString ("X2"), c.B.ToString ("X2"));
-               }
-       }
-}
index 4f07e83f1345769d5dfa62d699c17d526a0eda12..e229a913f8f984008c46e2fbb770d21e29bd1188 100644 (file)
@@ -54,7 +54,7 @@ namespace System.Web.Util {
                        if (path.StartsWith (appvpath))
                                path = path.Substring (appvpath.Length);
 
-                       if (path [0] == '/')
+                       if (path.StartsWith("/"))
                                path = path.Length > 1 ? path.Substring (1) : "";
 
                        return Canonic (appvpath + "(" + id + ")/" + path);
index 8f9f3439a1b99d2861f7dd89e6b998d2145514ce..4e492be3e41bbff17053293711aa90a76b306d16 100644 (file)
@@ -1122,7 +1122,7 @@ System.Web.UI.WebControls/VerticalAlignConverter.cs
 ../../../external/referencesource/System.Web/UI/WebControls/VerticalAlign.cs
 System.Web.UI.WebControls/ViewCollection.cs
 System.Web.UI.WebControls/View.cs
-System.Web.UI.WebControls/WebColorConverter.cs
+../../../external/referencesource/System.Web/UI/WebControls/WebColorConverter.cs
 System.Web.UI.WebControls/WebControl.cs
 System.Web.UI.WebControls.WebParts/ConnectionConsumerCallback.cs
 System.Web.UI.WebControls.WebParts/ConnectionInterfaceCollection.cs
@@ -1197,6 +1197,7 @@ System.Web.Util/Helpers.cs
 System.Web.Util/HttpEncoder.cs
 System.Web.Util/ICalls.cs
 ../../../external/referencesource/System.Web/Util/IObjectFactory.cs
+../../../external/referencesource/System.Web/Util/StringUtil.cs
 System.Web.Util/IWebPropertyAccessor.cs
 System.Web.Util/MachineKeySectionUtils.cs
 System.Web.Util/RuntimeHelpers.cs
@@ -1325,7 +1326,7 @@ System.Web.Security/MembershipPasswordAttribute.cs
 System.Web/DynamicModuleManager.cs
 
 ../../../external/referencesource/System.Web/ISubscriptionToken.cs
-
+../../../external/referencesource/System.Web/ITlsTokenBindingInfo.cs
 
 ../../../external/referencesource/System.Web/ModelBinding/IModelNameProvider.cs
 ../../../external/referencesource/System.Web/ModelBinding/BindingBehaviorAttribute.cs
index 03f41d9dbbcd1fe97a89f46d05a66dc16e53ce3a..c91f3cbf402798ae07e3b5e5703dff0ba29a38a4 100644 (file)
@@ -308,7 +308,7 @@ namespace MonoTests.System.Web.UI.WebControls
                [Category ("NunitWeb")]
                public void WizardStepBase_Theme ()
                {
-                       WebTest.CopyResource (GetType (), "WizardTest.skin", "App_Themes/Theme1/WizardTest.skin");
+                       WebTest.CopyResource (GetType (), "WizardTest.skin", "App_Themes/WizardStepBase/WizardTest.skin");
                        WebTest t = new WebTest ();
                        PageDelegates pd = new PageDelegates ();
                        pd.PreInit = set_properties;
@@ -328,7 +328,7 @@ namespace MonoTests.System.Web.UI.WebControls
 
                public static void set_properties (Page p)
                {
-                       p.Theme = "Theme1";
+                       p.Theme = "WizardStepBase";
                }
 
                public static void theme (Page p)
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-net_4_5.csproj b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-net_4_5.csproj
deleted file mode 100644 (file)
index 4ba9510..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5D72C9D5-37E8-4B93-A634-919A3B251C9B}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Windows.Forms.DataVisualization</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Annotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnnotationCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnnotationGroup.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnnotationPathPoint.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnnotationPathPointCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnnotationPositionChangingEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnnotationSmartLabelStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnovaResult.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AntiAliasingStyles.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AreaAlignmentOrientations.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AreaAlignmentStyles.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ArrowAnnotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ArrowStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Axis.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AxisArrowStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AxisEnabled.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AxisName.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AxisScaleBreakStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AxisScaleView.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AxisScrollBar.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AxisType.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Border3DAnnotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\BorderSkin.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\BorderSkinStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\BreakLineStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CalloutAnnotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CalloutStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Chart.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartArea.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartArea3DStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartAreaCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartColorPalette.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartDashStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartElement.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartElementCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartElementType.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartGraphics.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartHatchStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartImageAlignmentStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartImageFormat.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartImageWrapMode.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartNamedElement.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartNamedElementCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartPaintEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartSerializer.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartValueType.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CompareMethod.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Cursor.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CursorEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CustomizeLegendEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CustomLabel.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CustomLabelCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CustomProperties.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\DataFormula.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\DataManipulator.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\DataPoint.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\DataPointCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\DataPointCustomProperties.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\DateRangeType.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\DateTimeIntervalType.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Docking.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ElementPosition.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\EllipseAnnotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\FinancialFormula.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\FormatNumberEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\FTestResult.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\GradientStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Grid.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\GridTickTypes.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\HitTestResult.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\HorizontalLineAnnotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\IDataPointFilter.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ImageAnnotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\IntervalAutoMode.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\IntervalType.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LabelAlignmentStyles.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LabelAutoFitStyles.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LabelCalloutStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LabelMarkStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LabelOutsidePlotAreaStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LabelStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Legend.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendCell.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendCellCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendCellColumn.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendCellColumnCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendCellColumnType.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendCellType.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendImageStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendItem.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendItemOrder.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendItemsCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendSeparatorStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendTableStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LightStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LineAnchorCapStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LineAnnotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Margins.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\MarkerStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\NamedImage.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\NamedImagesCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Point3D.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\PointSortOrder.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\PolygonAnnotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\PolylineAnnotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\PrintingManager.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\RectangleAnnotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ScrollBarButtonStyles.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ScrollBarButtonType.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ScrollBarEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ScrollType.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\SerializationContents.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\SerializationFormat.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Series.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\SeriesChartType.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\SeriesCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\SmartLabelStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\StartFromZero.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\StatisticFormula.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\StripLine.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\StripLinesCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\TextAnnotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\TextAntiAliasingQuality.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\TextOrientation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\TextStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\TickMark.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\TickMarkStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Title.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\TitleCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ToolTipEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\TTestResult.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\VerticalLineAnnotation.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ViewEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ZTestResult.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Windows.Forms/System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-tests-net_4_5.csproj b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 0df66b0..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{53691FB6-46CA-4725-AA1A-03418AFED79A}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Windows.Forms.DataVisualization-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Windows.Forms.DataVisualization_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\AnnotationPathPointTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\AnovaResultTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\ArrowAnnotationTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\AxisScaleBreakStyleTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\ChartElementTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\ChartElementTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_5.csproj">\r
-      <Project>{5D72C9D5-37E8-4B93-A634-919A3B251C9B}</Project>\r
-      <Name>System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Windows.Forms/System.Windows.Forms-net_4_5.csproj b/mcs/class/System.Windows.Forms/System.Windows.Forms-net_4_5.csproj
deleted file mode 100644 (file)
index c26d1f9..0000000
+++ /dev/null
@@ -1,1199 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B102F27C-1A07-487F-BA5B-D5155D201112}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,612,809</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Windows.Forms</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,612,809</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,612,809</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Assembly\Locale.cs" />\r
-    <Compile Include="System.Resources\AssemblyNamesTypeResolutionService.cs" />\r
-    <Compile Include="System.Resources\ByteArrayFromResXHandler.cs" />\r
-    <Compile Include="System.Resources\FileRefHandler.cs" />\r
-    <Compile Include="System.Resources\InMemoryHandler.cs" />\r
-    <Compile Include="System.Resources\NullRefHandler.cs" />\r
-    <Compile Include="System.Resources\ResXDataNode.cs" />\r
-    <Compile Include="System.Resources\ResXDataNodeHandler.cs" />\r
-    <Compile Include="System.Resources\ResXFileRef.cs" />\r
-    <Compile Include="System.Resources\ResXNullRef.cs" />\r
-    <Compile Include="System.Resources\ResXResourceReader.cs" />\r
-    <Compile Include="System.Resources\ResXResourceSet.cs" />\r
-    <Compile Include="System.Resources\ResXResourceWriter.cs" />\r
-    <Compile Include="System.Resources\SerializedFromResXHandler.cs" />\r
-    <Compile Include="System.Resources\TypeConverterFromResXHandler.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\ApplicationHandler.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\ControlHandler.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\Cursor.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\Dnd.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\Enums.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\EventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\EventHandlerBase.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\HIObjectHandler.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\IEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\KeyboardHandler.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\MouseHandler.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\Pasteboard.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\Structs.cs" />\r
-    <Compile Include="System.Windows.Forms.CarbonInternal\WindowHandler.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ComponentEditorForm.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ComponentEditorPage.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\EventsTab.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\IUIService.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\IWindowsFormsEditorService.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\PropertyTab.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ToolStripItemDesignerAvailability.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\ToolStripItemDesignerAvailabilityAttribute.cs" />\r
-    <Compile Include="System.Windows.Forms.Design\WindowsFormsComponentEditor.cs" />\r
-    <Compile Include="System.Windows.Forms.Internal\Accessor.cs" />\r
-    <Compile Include="System.Windows.Forms.Internal\DebugHelper.cs" />\r
-    <Compile Include="System.Windows.Forms.Layout\ArrangedElementCollection.cs" />\r
-    <Compile Include="System.Windows.Forms.Layout\DefaultLayout.cs" />\r
-    <Compile Include="System.Windows.Forms.Layout\FlowLayout.cs" />\r
-    <Compile Include="System.Windows.Forms.Layout\LayoutEngine.cs" />\r
-    <Compile Include="System.Windows.Forms.Layout\TableLayout.cs" />\r
-    <Compile Include="System.Windows.Forms.Layout\TableLayoutSettingsTypeConverter.cs" />\r
-    <Compile Include="System.Windows.Forms.PropertyGridInternal\PropertiesTab.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\Charcode.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\Charset.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\CharsetFlags.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\CharsetType.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\ClassDelegate.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\Color.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\DestinationDelegate.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\Font.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\KeysInit.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\KeyStruct.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\Major.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\Minor.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\Picture.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\RTF.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\RTFException.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\StandardCharCode.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\StandardCharName.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\Style.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\StyleElement.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\StyleType.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\TextMap.cs" />\r
-    <Compile Include="System.Windows.Forms.RTF\TokenClass.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\Default\ButtonPainter.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\Default\CheckBoxPainter.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\Default\LabelPainter.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\Default\LinkLabelPainter.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\Default\RadioButtonPainter.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\Default\TabControlPainter.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\Default\ToolStripPainter.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\ThemeElements.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\ThemeElementsDefault.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\ThemeElementsVisualStyles.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\VisualStyles\CheckBoxPainter.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\VisualStyles\RadioButtonPainter.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\VisualStyles\TabControlPainter.cs" />\r
-    <Compile Include="System.Windows.Forms.Theming\VisualStyles\ToolStripPainter.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\BackgroundType.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\BooleanProperty.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\BorderType.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\CheckBoxState.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\ColorProperty.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\ComboBoxState.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\ContentAlignment.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\EdgeEffects.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\Edges.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\EdgeStyle.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\EnumProperty.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\FilenameProperty.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\FillType.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\FontProperty.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\GlyphFontSizingType.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\GlyphType.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\GroupBoxState.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\GtkPlus.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\HitTestCode.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\HitTestOptions.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\HorizontalAlign.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\IconEffect.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\ImageOrientation.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\ImageSelectType.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\IntegerProperty.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\IVisualStyles.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\MarginProperty.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\OffsetType.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\PointProperty.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\PushButtonState.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\RadioButtonState.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\ScrollBarArrowButtonState.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\ScrollBarSizeBoxState.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\ScrollBarState.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\SizingType.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\StringProperty.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\TabItemState.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\TextBoxState.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\TextMetrics.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\TextMetricsCharacterSet.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\TextMetricsPitchAndFamilyValues.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\TextShadowType.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\ThemeSizeType.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\ToolBarState.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\TrackBarThumbState.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\TrueSizeScalingType.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\UXTheme.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\VerticalAlignment.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\VisualStyleElement.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\VisualStyleInformation.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\VisualStyleRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\VisualStylesEngine.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\VisualStylesGtkPlus.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\VisualStylesNative.cs" />\r
-    <Compile Include="System.Windows.Forms.VisualStyles\VisualStyleState.cs" />\r
-    <Compile Include="System.Windows.Forms.WebBrowserDialogs\AlertCheck.cs" />\r
-    <Compile Include="System.Windows.Forms.WebBrowserDialogs\ConfirmCheck.cs" />\r
-    <Compile Include="System.Windows.Forms.WebBrowserDialogs\Generic.cs" />\r
-    <Compile Include="System.Windows.Forms.WebBrowserDialogs\Prompt.cs" />\r
-    <Compile Include="System.Windows.Forms\AccessibleEvents.cs" />\r
-    <Compile Include="System.Windows.Forms\AccessibleNavigation.cs" />\r
-    <Compile Include="System.Windows.Forms\AccessibleObject.cs" />\r
-    <Compile Include="System.Windows.Forms\AccessibleRole.cs" />\r
-    <Compile Include="System.Windows.Forms\AccessibleSelection.cs" />\r
-    <Compile Include="System.Windows.Forms\AccessibleStates.cs" />\r
-    <Compile Include="System.Windows.Forms\AmbientProperties.cs" />\r
-    <Compile Include="System.Windows.Forms\AnchorStyles.cs" />\r
-    <Compile Include="System.Windows.Forms\Appearance.cs" />\r
-    <Compile Include="System.Windows.Forms\Application.cs" />\r
-    <Compile Include="System.Windows.Forms\ApplicationContext.cs" />\r
-    <Compile Include="System.Windows.Forms\ArrangeDirection.cs" />\r
-    <Compile Include="System.Windows.Forms\ArrangeStartingPosition.cs" />\r
-    <Compile Include="System.Windows.Forms\ArrowDirection.cs" />\r
-    <Compile Include="System.Windows.Forms\AsyncMethodData.cs" />\r
-    <Compile Include="System.Windows.Forms\AsyncMethodResult.cs" />\r
-    <Compile Include="System.Windows.Forms\AutoCompleteMode.cs" />\r
-    <Compile Include="System.Windows.Forms\AutoCompleteSource.cs" />\r
-    <Compile Include="System.Windows.Forms\AutoCompleteStringCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\AutoScaleMode.cs" />\r
-    <Compile Include="System.Windows.Forms\AutoSizeMode.cs" />\r
-    <Compile Include="System.Windows.Forms\AutoValidate.cs" />\r
-    <Compile Include="System.Windows.Forms\AxHost.cs" />\r
-    <Compile Include="System.Windows.Forms\BaseCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\BatteryChargeStatus.cs" />\r
-    <Compile Include="System.Windows.Forms\Binding.cs" />\r
-    <Compile Include="System.Windows.Forms\BindingCompleteContext.cs" />\r
-    <Compile Include="System.Windows.Forms\BindingCompleteEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\BindingCompleteEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\BindingCompleteState.cs" />\r
-    <Compile Include="System.Windows.Forms\BindingContext.cs" />\r
-    <Compile Include="System.Windows.Forms\BindingManagerBase.cs" />\r
-    <Compile Include="System.Windows.Forms\BindingManagerDataErrorEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\BindingManagerDataErrorEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\BindingMemberInfo.cs" />\r
-    <Compile Include="System.Windows.Forms\BindingNavigator.cs" />\r
-    <Compile Include="System.Windows.Forms\BindingsCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\BindingSource.cs" />\r
-    <Compile Include="System.Windows.Forms\BootMode.cs" />\r
-    <Compile Include="System.Windows.Forms\Border3DSide.cs" />\r
-    <Compile Include="System.Windows.Forms\Border3DStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\BorderStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\BoundsSpecified.cs" />\r
-    <Compile Include="System.Windows.Forms\Button.cs" />\r
-    <Compile Include="System.Windows.Forms\ButtonBase.cs" />\r
-    <Compile Include="System.Windows.Forms\ButtonBorderStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\ButtonRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\ButtonState.cs" />\r
-    <Compile Include="System.Windows.Forms\CacheVirtualItemsEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\CacheVirtualItemsEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\CaptionButton.cs" />\r
-    <Compile Include="System.Windows.Forms\CategoryGridEntry.cs" />\r
-    <Compile Include="System.Windows.Forms\CharacterCasing.cs" />\r
-    <Compile Include="System.Windows.Forms\CheckBox.cs" />\r
-    <Compile Include="System.Windows.Forms\CheckBoxRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\CheckedListBox.cs" />\r
-    <Compile Include="System.Windows.Forms\CheckState.cs" />\r
-    <Compile Include="System.Windows.Forms\Clipboard.cs" />\r
-    <Compile Include="System.Windows.Forms\CloseReason.cs" />\r
-    <Compile Include="System.Windows.Forms\ColorDepth.cs" />\r
-    <Compile Include="System.Windows.Forms\ColorDialog.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnClickEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnClickEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnHeader.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnHeaderAutoResizeStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnHeaderConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnHeaderStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnReorderedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnReorderedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnWidthChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnWidthChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnWidthChangingEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ColumnWidthChangingEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ComboBox.cs" />\r
-    <Compile Include="System.Windows.Forms\ComboBoxRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\ComboBoxStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\CommonDialog.cs" />\r
-    <Compile Include="System.Windows.Forms\ComponentModel.cs" />\r
-    <Compile Include="System.Windows.Forms\ContainerControl.cs" />\r
-    <Compile Include="System.Windows.Forms\ContentsResizedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ContentsResizedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ContextMenu.cs" />\r
-    <Compile Include="System.Windows.Forms\ContextMenuStrip.cs" />\r
-    <Compile Include="System.Windows.Forms\Control.cs" />\r
-    <Compile Include="System.Windows.Forms\ControlBindingsCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\ControlEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ControlEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ControlPaint.cs" />\r
-    <Compile Include="System.Windows.Forms\ControlStyles.cs" />\r
-    <Compile Include="System.Windows.Forms\ControlUpdateMode.cs" />\r
-    <Compile Include="System.Windows.Forms\ConvertEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ConvertEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\CreateParams.cs" />\r
-    <Compile Include="System.Windows.Forms\CurrencyManager.cs" />\r
-    <Compile Include="System.Windows.Forms\Cursor.cs" />\r
-    <Compile Include="System.Windows.Forms\CursorConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\Cursors.cs" />\r
-    <Compile Include="System.Windows.Forms\DataFormats.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGrid.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridBoolColumn.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridCell.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridColumnStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridLineStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridParentRowsLabelStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridPreferredColumnWidthTypeConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridTableStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridTextBox.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridTextBoxColumn.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridView.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewAdvancedBorderStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewAdvancedCellBorderStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewAutoSizeColumnMode.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewAutoSizeColumnModeEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewAutoSizeColumnModeEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewAutoSizeColumnsMode.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewAutoSizeColumnsModeEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewAutoSizeColumnsModeEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewAutoSizeModeEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewAutoSizeModeEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewAutoSizeRowMode.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewAutoSizeRowsMode.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewBand.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewBindingCompleteEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewBindingCompleteEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewButtonCell.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewButtonColumn.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCell.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellBorderStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellCancelEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellCancelEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellContextMenuStripNeededEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellContextMenuStripNeededEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellErrorTextNeededEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellErrorTextNeededEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellFormattingEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellFormattingEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellMouseEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellMouseEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellPaintingEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellPaintingEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellParsingEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellParsingEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellStateChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellStateChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellStyleContentChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellStyleContentChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellStyleConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellStyleScopes.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellToolTipTextNeededEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellToolTipTextNeededEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellValidatingEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellValidatingEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellValueEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCellValueEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCheckBoxCell.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewCheckBoxColumn.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewClipboardCopyMode.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewColumn.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewColumnCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewColumnDesignTimeVisibleAttribute.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewColumnDividerDoubleClickEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewColumnDividerDoubleClickEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewColumnEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewColumnEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewColumnHeaderCell.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewColumnHeadersHeightSizeMode.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewColumnSortMode.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewColumnStateChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewColumnStateChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewComboBoxCell.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewComboBoxColumn.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewComboBoxDisplayStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewComboBoxEditingControl.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewContentAlignment.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewDataErrorContexts.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewDataErrorEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewDataErrorEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewEditingControlShowingEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewEditingControlShowingEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewEditMode.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewElement.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewElementStates.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewHeaderBorderStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewHeaderCell.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewHitTestType.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewImageCell.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewImageCellLayout.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewImageColumn.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewLinkCell.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewLinkColumn.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewPaintParts.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRow.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowCancelEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowCancelEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowContextMenuStripNeededEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowContextMenuStripNeededEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowDividerDoubleClickEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowDividerDoubleClickEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowErrorTextNeededEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowErrorTextNeededEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowHeaderCell.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowHeadersWidthSizeMode.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowHeightInfoNeededEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowHeightInfoNeededEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowHeightInfoPushedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowHeightInfoPushedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowPostPaintEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowPostPaintEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowPrePaintEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowPrePaintEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowsAddedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowsAddedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowsRemovedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowsRemovedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowStateChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewRowStateChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewSelectedCellCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewSelectedColumnCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewSelectedRowCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewSelectionMode.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewSortCompareEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewSortCompareEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewTextBoxCell.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewTextBoxColumn.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewTextBoxEditingControl.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewTopLeftHeaderCell.cs" />\r
-    <Compile Include="System.Windows.Forms\DataGridViewTriState.cs" />\r
-    <Compile Include="System.Windows.Forms\DataObject.cs" />\r
-    <Compile Include="System.Windows.Forms\DataSourceUpdateMode.cs" />\r
-    <Compile Include="System.Windows.Forms\DateBoldEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DateBoldEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DateRangeEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DateRangeEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DateTimePicker.cs" />\r
-    <Compile Include="System.Windows.Forms\DateTimePickerFormat.cs" />\r
-    <Compile Include="System.Windows.Forms\Day.cs" />\r
-    <Compile Include="System.Windows.Forms\DialogResult.cs" />\r
-    <Compile Include="System.Windows.Forms\DockingAttribute.cs" />\r
-    <Compile Include="System.Windows.Forms\DockingBehavior.cs" />\r
-    <Compile Include="System.Windows.Forms\DockStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\DomainUpDown.cs" />\r
-    <Compile Include="System.Windows.Forms\DragAction.cs" />\r
-    <Compile Include="System.Windows.Forms\DragDropEffects.cs" />\r
-    <Compile Include="System.Windows.Forms\DragEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DragEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawItemEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawItemEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawItemState.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawListViewColumnHeaderEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawListViewColumnHeaderEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawListViewItemEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawListViewItemEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawListViewSubItemEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawListViewSubItemEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawMode.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawToolTipEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawToolTipEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawTreeNodeEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\DrawTreeNodeEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ErrorBlinkStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\ErrorIconAlignment.cs" />\r
-    <Compile Include="System.Windows.Forms\ErrorProvider.cs" />\r
-    <Compile Include="System.Windows.Forms\FeatureSupport.cs" />\r
-    <Compile Include="System.Windows.Forms\FileDialog.cs" />\r
-    <Compile Include="System.Windows.Forms\FileDialogCustomPlace.cs" />\r
-    <Compile Include="System.Windows.Forms\FileDialogCustomPlacesCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\FixedPanel.cs" />\r
-    <Compile Include="System.Windows.Forms\FixedSizeTextBox.cs" />\r
-    <Compile Include="System.Windows.Forms\FlatButtonAppearance.cs" />\r
-    <Compile Include="System.Windows.Forms\FlatStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\FlowDirection.cs" />\r
-    <Compile Include="System.Windows.Forms\FlowLayoutPanel.cs" />\r
-    <Compile Include="System.Windows.Forms\FlowLayoutSettings.cs" />\r
-    <Compile Include="System.Windows.Forms\FolderBrowserDialog.cs" />\r
-    <Compile Include="System.Windows.Forms\FontDialog.cs" />\r
-    <Compile Include="System.Windows.Forms\Form.cs" />\r
-    <Compile Include="System.Windows.Forms\FormBorderStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\FormClosedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\FormClosedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\FormClosingEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\FormClosingEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\FormCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\FormStartPosition.cs" />\r
-    <Compile Include="System.Windows.Forms\FormWindowManager.cs" />\r
-    <Compile Include="System.Windows.Forms\FormWindowState.cs" />\r
-    <Compile Include="System.Windows.Forms\FrameStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\GetChildAtPointSkip.cs" />\r
-    <Compile Include="System.Windows.Forms\GiveFeedbackEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\GiveFeedbackEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\GridColumnStylesCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\GridEntry.cs" />\r
-    <Compile Include="System.Windows.Forms\GridItem.cs" />\r
-    <Compile Include="System.Windows.Forms\GridItemCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\GridItemType.cs" />\r
-    <Compile Include="System.Windows.Forms\GridTablesFactory.cs" />\r
-    <Compile Include="System.Windows.Forms\GridTableStylesCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\GroupBox.cs" />\r
-    <Compile Include="System.Windows.Forms\GroupBoxRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\HandledMouseEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\Help.cs" />\r
-    <Compile Include="System.Windows.Forms\HelpEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\HelpEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\HelpNavigator.cs" />\r
-    <Compile Include="System.Windows.Forms\HelpProvider.cs" />\r
-    <Compile Include="System.Windows.Forms\HorizontalAlignment.cs" />\r
-    <Compile Include="System.Windows.Forms\HScrollBar.cs" />\r
-    <Compile Include="System.Windows.Forms\HScrollProperties.cs" />\r
-    <Compile Include="System.Windows.Forms\HtmlDocument.cs" />\r
-    <Compile Include="System.Windows.Forms\HtmlElement.cs" />\r
-    <Compile Include="System.Windows.Forms\HtmlElementCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\HtmlElementErrorEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\HtmlElementErrorEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\HtmlElementEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\HtmlElementEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\HtmlElementInsertionOrientation.cs" />\r
-    <Compile Include="System.Windows.Forms\HtmlHistory.cs" />\r
-    <Compile Include="System.Windows.Forms\HtmlWindow.cs" />\r
-    <Compile Include="System.Windows.Forms\HtmlWindowCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\Hwnd.cs" />\r
-    <Compile Include="System.Windows.Forms\IBindableComponent.cs" />\r
-    <Compile Include="System.Windows.Forms\IBounds.cs" />\r
-    <Compile Include="System.Windows.Forms\IButtonControl.cs" />\r
-    <Compile Include="System.Windows.Forms\ICommandExecutor.cs" />\r
-    <Compile Include="System.Windows.Forms\IComponentEditorPageSite.cs" />\r
-    <Compile Include="System.Windows.Forms\IContainerControl.cs" />\r
-    <Compile Include="System.Windows.Forms\ICurrencyManagerProvider.cs" />\r
-    <Compile Include="System.Windows.Forms\IDataGridColumnStyleEditingNotificationService.cs" />\r
-    <Compile Include="System.Windows.Forms\IDataGridEditingService.cs" />\r
-    <Compile Include="System.Windows.Forms\IDataGridViewEditingCell.cs" />\r
-    <Compile Include="System.Windows.Forms\IDataGridViewEditingControl.cs" />\r
-    <Compile Include="System.Windows.Forms\IDataObject.cs" />\r
-    <Compile Include="System.Windows.Forms\IDropTarget.cs" />\r
-    <Compile Include="System.Windows.Forms\IFeatureSupport.cs" />\r
-    <Compile Include="System.Windows.Forms\IFileReaderService.cs" />\r
-    <Compile Include="System.Windows.Forms\IKeyFilter.cs" />\r
-    <Compile Include="System.Windows.Forms\ImageIndexConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\ImageKeyConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\ImageLayout.cs" />\r
-    <Compile Include="System.Windows.Forms\ImageList.cs" />\r
-    <Compile Include="System.Windows.Forms\ImageListConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\ImageListStreamer.cs" />\r
-    <Compile Include="System.Windows.Forms\ImeMode.cs" />\r
-    <Compile Include="System.Windows.Forms\IMessageFilter.cs" />\r
-    <Compile Include="System.Windows.Forms\ImplicitHScrollBar.cs" />\r
-    <Compile Include="System.Windows.Forms\ImplicitVScrollBar.cs" />\r
-    <Compile Include="System.Windows.Forms\InputLanguage.cs" />\r
-    <Compile Include="System.Windows.Forms\InputLanguageChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\InputLanguageChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\InputLanguageChangingEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\InputLanguageChangingEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\InputLanguageCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\InsertKeyMode.cs" />\r
-    <Compile Include="System.Windows.Forms\InternalWindowManager.cs" />\r
-    <Compile Include="System.Windows.Forms\InvalidateEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\InvalidateEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\IRootGridEntry.cs" />\r
-    <Compile Include="System.Windows.Forms\ItemActivation.cs" />\r
-    <Compile Include="System.Windows.Forms\ItemBoundsPortion.cs" />\r
-    <Compile Include="System.Windows.Forms\ItemChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ItemChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ItemCheckedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ItemCheckedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ItemCheckEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ItemCheckEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ItemDragEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ItemDragEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\IToolStripData.cs" />\r
-    <Compile Include="System.Windows.Forms\IWin32Window.cs" />\r
-    <Compile Include="System.Windows.Forms\IWindowTarget.cs" />\r
-    <Compile Include="System.Windows.Forms\KeyboardLayouts.cs" />\r
-    <Compile Include="System.Windows.Forms\KeyEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\KeyEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\KeyPressEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\KeyPressEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\Keys.cs" />\r
-    <Compile Include="System.Windows.Forms\KeysConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\Label.cs" />\r
-    <Compile Include="System.Windows.Forms\LabelEditEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\LabelEditEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\LabelEditTextBox.cs" />\r
-    <Compile Include="System.Windows.Forms\LayoutEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\LayoutEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\LayoutSettings.cs" />\r
-    <Compile Include="System.Windows.Forms\LeftRightAlignment.cs" />\r
-    <Compile Include="System.Windows.Forms\Line.cs" />\r
-    <Compile Include="System.Windows.Forms\LineTag.cs" />\r
-    <Compile Include="System.Windows.Forms\LinkArea.cs" />\r
-    <Compile Include="System.Windows.Forms\LinkBehavior.cs" />\r
-    <Compile Include="System.Windows.Forms\LinkClickedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\LinkClickedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\LinkConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\LinkLabel.cs" />\r
-    <Compile Include="System.Windows.Forms\LinkLabelLinkClickedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\LinkLabelLinkClickedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\LinkState.cs" />\r
-    <Compile Include="System.Windows.Forms\ListBindingConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\ListBindingHelper.cs" />\r
-    <Compile Include="System.Windows.Forms\ListBox.cs" />\r
-    <Compile Include="System.Windows.Forms\ListControl.cs" />\r
-    <Compile Include="System.Windows.Forms\ListControlConvertEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ListControlConvertEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ListView.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewAlignment.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewGroup.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewGroupCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewHitTestInfo.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewHitTestLocations.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewInsertionMark.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewItem.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewItemConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewItemMouseHoverEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewItemMouseHoverEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewItemSelectionChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewItemSelectionChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewItemStates.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewVirtualItemsSelectionRangeChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ListViewVirtualItemsSelectionRangeChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\MainMenu.cs" />\r
-    <Compile Include="System.Windows.Forms\MaskedTextBox.cs" />\r
-    <Compile Include="System.Windows.Forms\MaskFormat.cs" />\r
-    <Compile Include="System.Windows.Forms\MaskInputRejectedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\MaskInputRejectedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\MdiClient.cs" />\r
-    <Compile Include="System.Windows.Forms\MdiControlStrip.cs" />\r
-    <Compile Include="System.Windows.Forms\MdiLayout.cs" />\r
-    <Compile Include="System.Windows.Forms\MdiWindowManager.cs" />\r
-    <Compile Include="System.Windows.Forms\MeasureItemEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\MeasureItemEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\Menu.cs" />\r
-    <Compile Include="System.Windows.Forms\MenuAPI.cs" />\r
-    <Compile Include="System.Windows.Forms\MenuGlyph.cs" />\r
-    <Compile Include="System.Windows.Forms\MenuItem.cs" />\r
-    <Compile Include="System.Windows.Forms\MenuMerge.cs" />\r
-    <Compile Include="System.Windows.Forms\MenuStrip.cs" />\r
-    <Compile Include="System.Windows.Forms\MergeAction.cs" />\r
-    <Compile Include="System.Windows.Forms\Message.cs" />\r
-    <Compile Include="System.Windows.Forms\MessageBox.cs" />\r
-    <Compile Include="System.Windows.Forms\MessageBoxButtons.cs" />\r
-    <Compile Include="System.Windows.Forms\MessageBoxDefaultButton.cs" />\r
-    <Compile Include="System.Windows.Forms\MessageBoxIcon.cs" />\r
-    <Compile Include="System.Windows.Forms\MessageBoxOptions.cs" />\r
-    <Compile Include="System.Windows.Forms\MethodInvoker.cs" />\r
-    <Compile Include="System.Windows.Forms\Mime.cs" />\r
-    <Compile Include="System.Windows.Forms\MimeIcon.cs" />\r
-    <Compile Include="System.Windows.Forms\MonthCalendar.cs" />\r
-    <Compile Include="System.Windows.Forms\MouseButtons.cs" />\r
-    <Compile Include="System.Windows.Forms\MouseEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\MouseEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\MWFCategoryAttribute.cs" />\r
-    <Compile Include="System.Windows.Forms\MWFDescriptionAttribute.cs" />\r
-    <Compile Include="System.Windows.Forms\NativeWindow.cs" />\r
-    <Compile Include="System.Windows.Forms\NavigateEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\NavigateEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\NodeLabelEditEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\NodeLabelEditEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\NotifyIcon.cs" />\r
-    <Compile Include="System.Windows.Forms\NumericTextBox.cs" />\r
-    <Compile Include="System.Windows.Forms\NumericUpDown.cs" />\r
-    <Compile Include="System.Windows.Forms\NumericUpDownAcceleration.cs" />\r
-    <Compile Include="System.Windows.Forms\NumericUpDownAccelerationCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\OpacityConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\OpenFileDialog.cs" />\r
-    <Compile Include="System.Windows.Forms\OpenTreeNodeEnumerator.cs" />\r
-    <Compile Include="System.Windows.Forms\Orientation.cs" />\r
-    <Compile Include="System.Windows.Forms\OSFeature.cs" />\r
-    <Compile Include="System.Windows.Forms\OwnerDrawPropertyBag.cs" />\r
-    <Compile Include="System.Windows.Forms\Padding.cs" />\r
-    <Compile Include="System.Windows.Forms\PaddingConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\PageSetupDialog.cs" />\r
-    <Compile Include="System.Windows.Forms\PaintEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\PaintEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\Panel.cs" />\r
-    <Compile Include="System.Windows.Forms\PictureBox.cs" />\r
-    <Compile Include="System.Windows.Forms\PictureBoxSizeMode.cs" />\r
-    <Compile Include="System.Windows.Forms\PopupEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\PopupEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\PowerLineStatus.cs" />\r
-    <Compile Include="System.Windows.Forms\PowerState.cs" />\r
-    <Compile Include="System.Windows.Forms\PowerStatus.cs" />\r
-    <Compile Include="System.Windows.Forms\PreProcessControlState.cs" />\r
-    <Compile Include="System.Windows.Forms\PreviewKeyDownEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\PreviewKeyDownEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\PrintControllerWithStatusDialog.cs" />\r
-    <Compile Include="System.Windows.Forms\PrintDialog.cs" />\r
-    <Compile Include="System.Windows.Forms\PrintPreviewControl.cs" />\r
-    <Compile Include="System.Windows.Forms\PrintPreviewDialog.cs" />\r
-    <Compile Include="System.Windows.Forms\ProfessionalColors.cs" />\r
-    <Compile Include="System.Windows.Forms\ProfessionalColorTable.cs" />\r
-    <Compile Include="System.Windows.Forms\ProgressBar.cs" />\r
-    <Compile Include="System.Windows.Forms\ProgressBarRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\ProgressBarStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\PropertyGrid.cs" />\r
-    <Compile Include="System.Windows.Forms\PropertyGridCommands.cs" />\r
-    <Compile Include="System.Windows.Forms\PropertyGridTextBox.cs" />\r
-    <Compile Include="System.Windows.Forms\PropertyGridView.cs" />\r
-    <Compile Include="System.Windows.Forms\PropertyManager.cs" />\r
-    <Compile Include="System.Windows.Forms\PropertySort.cs" />\r
-    <Compile Include="System.Windows.Forms\PropertyTabChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\PropertyTabChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\PropertyValueChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\PropertyValueChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\QueryAccessibilityHelpEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\QueryAccessibilityHelpEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\QueryContinueDragEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\QueryContinueDragEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\QuestionEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\QuestionEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\RadioButton.cs" />\r
-    <Compile Include="System.Windows.Forms\RadioButtonRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\RelatedCurrencyManager.cs" />\r
-    <Compile Include="System.Windows.Forms\RelatedImageListAttribute.cs" />\r
-    <Compile Include="System.Windows.Forms\RelatedPropertyManager.cs" />\r
-    <Compile Include="System.Windows.Forms\RetrieveVirtualItemEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\RetrieveVirtualItemEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\RichTextBox.cs" />\r
-    <Compile Include="System.Windows.Forms\RichTextBoxFinds.cs" />\r
-    <Compile Include="System.Windows.Forms\RichTextBoxLanguageOptions.cs" />\r
-    <Compile Include="System.Windows.Forms\RichTextBoxScrollBars.cs" />\r
-    <Compile Include="System.Windows.Forms\RichTextBoxSelectionAttribute.cs" />\r
-    <Compile Include="System.Windows.Forms\RichTextBoxSelectionTypes.cs" />\r
-    <Compile Include="System.Windows.Forms\RichTextBoxStreamType.cs" />\r
-    <Compile Include="System.Windows.Forms\RichTextBoxWordPunctuations.cs" />\r
-    <Compile Include="System.Windows.Forms\RightToLeft.cs" />\r
-    <Compile Include="System.Windows.Forms\RootGridEntry.cs" />\r
-    <Compile Include="System.Windows.Forms\RowStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\SaveFileDialog.cs" />\r
-    <Compile Include="System.Windows.Forms\Screen.cs" />\r
-    <Compile Include="System.Windows.Forms\ScreenOrientation.cs" />\r
-    <Compile Include="System.Windows.Forms\ScrollableControl.cs" />\r
-    <Compile Include="System.Windows.Forms\ScrollBar.cs" />\r
-    <Compile Include="System.Windows.Forms\ScrollBarRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\ScrollBars.cs" />\r
-    <Compile Include="System.Windows.Forms\ScrollButton.cs" />\r
-    <Compile Include="System.Windows.Forms\ScrollEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ScrollEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ScrollEventType.cs" />\r
-    <Compile Include="System.Windows.Forms\ScrollOrientation.cs" />\r
-    <Compile Include="System.Windows.Forms\ScrollProperties.cs" />\r
-    <Compile Include="System.Windows.Forms\SearchDirectionHint.cs" />\r
-    <Compile Include="System.Windows.Forms\SearchForVirtualItemEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\SearchForVirtualItemEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\SecurityIDType.cs" />\r
-    <Compile Include="System.Windows.Forms\SelectedGridItemChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\SelectedGridItemChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\SelectionMode.cs" />\r
-    <Compile Include="System.Windows.Forms\SelectionRange.cs" />\r
-    <Compile Include="System.Windows.Forms\SelectionRangeConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\SendKeys.cs" />\r
-    <Compile Include="System.Windows.Forms\Shortcut.cs" />\r
-    <Compile Include="System.Windows.Forms\SizeGrip.cs" />\r
-    <Compile Include="System.Windows.Forms\SizeGripStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\SizeType.cs" />\r
-    <Compile Include="System.Windows.Forms\SortOrder.cs" />\r
-    <Compile Include="System.Windows.Forms\SplitContainer.cs" />\r
-    <Compile Include="System.Windows.Forms\Splitter.cs" />\r
-    <Compile Include="System.Windows.Forms\SplitterCancelEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\SplitterCancelEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\SplitterEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\SplitterEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\SplitterPanel.cs" />\r
-    <Compile Include="System.Windows.Forms\StatusBar.cs" />\r
-    <Compile Include="System.Windows.Forms\StatusBarDrawItemEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\StatusBarDrawItemEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\StatusBarPanel.cs" />\r
-    <Compile Include="System.Windows.Forms\StatusBarPanelAutoSize.cs" />\r
-    <Compile Include="System.Windows.Forms\StatusBarPanelBorderStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\StatusBarPanelClickEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\StatusBarPanelClickEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\StatusBarPanelStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\StatusStrip.cs" />\r
-    <Compile Include="System.Windows.Forms\StructFormat.cs" />\r
-    <Compile Include="System.Windows.Forms\SystemInformation.cs" />\r
-    <Compile Include="System.Windows.Forms\SystemParameter.cs" />\r
-    <Compile Include="System.Windows.Forms\TabAlignment.cs" />\r
-    <Compile Include="System.Windows.Forms\TabAppearance.cs" />\r
-    <Compile Include="System.Windows.Forms\TabControl.cs" />\r
-    <Compile Include="System.Windows.Forms\TabControlAction.cs" />\r
-    <Compile Include="System.Windows.Forms\TabControlCancelEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\TabControlCancelEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\TabControlEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\TabControlEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\TabDrawMode.cs" />\r
-    <Compile Include="System.Windows.Forms\TableLayoutCellPaintEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\TableLayoutCellPaintEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\TableLayoutColumnStyleCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\TableLayoutControlCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\TableLayoutPanel.cs" />\r
-    <Compile Include="System.Windows.Forms\TableLayoutPanelCellBorderStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\TableLayoutPanelCellPosition.cs" />\r
-    <Compile Include="System.Windows.Forms\TableLayoutPanelGrowStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\TableLayoutRowStyleCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\TableLayoutSettings.cs" />\r
-    <Compile Include="System.Windows.Forms\TableLayoutStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\TableLayoutStyleCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\TabPage.cs" />\r
-    <Compile Include="System.Windows.Forms\TabRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\TabSizeMode.cs" />\r
-    <Compile Include="System.Windows.Forms\TextBox.cs" />\r
-    <Compile Include="System.Windows.Forms\TextBoxBase.cs" />\r
-    <Compile Include="System.Windows.Forms\TextBoxRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\TextBoxTextRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\TextControl.cs" />\r
-    <Compile Include="System.Windows.Forms\TextDataFormat.cs" />\r
-    <Compile Include="System.Windows.Forms\TextFormatFlags.cs" />\r
-    <Compile Include="System.Windows.Forms\TextImageRelation.cs" />\r
-    <Compile Include="System.Windows.Forms\TextRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\Theme.cs" />\r
-    <Compile Include="System.Windows.Forms\ThemeEngine.cs" />\r
-    <Compile Include="System.Windows.Forms\ThemeVisualStyles.cs" />\r
-    <Compile Include="System.Windows.Forms\ThemeWin32Classic.cs" />\r
-    <Compile Include="System.Windows.Forms\ThreadExceptionDialog.cs" />\r
-    <Compile Include="System.Windows.Forms\TickStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\Timer.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolBar.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolBarAppearance.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolBarButton.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolBarButtonClickEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolBarButtonClickEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolBarButtonStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolBarTextAlign.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStrip.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripArrowRenderEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripArrowRenderEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripButton.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripComboBox.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripContainer.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripContentPanel.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripContentPanelRenderEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripContentPanelRenderEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripControlHost.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripDropDown.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripDropDownButton.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripDropDownClosedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripDropDownClosedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripDropDownCloseReason.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripDropDownClosingEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripDropDownClosingEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripDropDownDirection.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripDropDownItem.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripDropDownItemAccessibleObject.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripDropDownMenu.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripGripDisplayStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripGripRenderEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripGripRenderEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripGripStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItem.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemAlignment.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemClickedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemClickedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemDisplayStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemEventType.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemImageRenderEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemImageRenderEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemImageScaling.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemOverflow.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemPlacement.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemRenderEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemRenderEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemTextRenderEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripItemTextRenderEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripLabel.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripLayoutStyle.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripManager.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripManagerRenderMode.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripMenuItem.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripOverflow.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripOverflowButton.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripPanel.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripPanelRenderEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripPanelRenderEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripPanelRow.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripProfessionalRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripProgressBar.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripRenderEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripRenderEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripRenderMode.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripSeparator.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripSeparatorRenderEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripSeparatorRenderEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripSplitButton.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripSplitStackLayout.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripStatusLabel.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripStatusLabelBorderSides.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripSystemRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripTextBox.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolStripTextDirection.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolTip.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolTipIcon.cs" />\r
-    <Compile Include="System.Windows.Forms\ToolWindowManager.cs" />\r
-    <Compile Include="System.Windows.Forms\TrackBar.cs" />\r
-    <Compile Include="System.Windows.Forms\TrackBarRenderer.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeNode.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeNodeCollection.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeNodeConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeNodeMouseClickEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeNodeMouseClickEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeNodeMouseHoverEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeNodeMouseHoverEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeNodeStates.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeView.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeViewAction.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeViewCancelEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeViewCancelEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeViewDrawMode.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeViewEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeViewEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeViewHitTestInfo.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeViewHitTestLocations.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeViewImageIndexConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\TreeViewImageKeyConverter.cs" />\r
-    <Compile Include="System.Windows.Forms\TypeValidationEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\TypeValidationEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\UICues.cs" />\r
-    <Compile Include="System.Windows.Forms\UICuesEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\UICuesEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\UnhandledExceptionMode.cs" />\r
-    <Compile Include="System.Windows.Forms\UpDownBase.cs" />\r
-    <Compile Include="System.Windows.Forms\UpDownEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\UpDownEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\UserControl.cs" />\r
-    <Compile Include="System.Windows.Forms\ValidationConstraints.cs" />\r
-    <Compile Include="System.Windows.Forms\View.cs" />\r
-    <Compile Include="System.Windows.Forms\VScrollBar.cs" />\r
-    <Compile Include="System.Windows.Forms\VScrollProperties.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowser.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserBase.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserDocumentCompletedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserDocumentCompletedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserEncryptionLevel.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserNavigatedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserNavigatedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserNavigatingEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserNavigatingEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserProgressChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserProgressChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserReadyState.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserRefreshOption.cs" />\r
-    <Compile Include="System.Windows.Forms\WebBrowserSiteBase.cs" />\r
-    <Compile Include="System.Windows.Forms\Win32DnD.cs" />\r
-    <Compile Include="System.Windows.Forms\WindowsFormsSection.cs" />\r
-    <Compile Include="System.Windows.Forms\WindowsFormsSynchronizationContext.cs" />\r
-    <Compile Include="System.Windows.Forms\X11Clipboard.cs" />\r
-    <Compile Include="System.Windows.Forms\X11DesktopColors.cs" />\r
-    <Compile Include="System.Windows.Forms\X11Dnd.cs" />\r
-    <Compile Include="System.Windows.Forms\X11Keyboard.cs" />\r
-    <Compile Include="System.Windows.Forms\X11Structs.cs" />\r
-    <Compile Include="System.Windows.Forms\XEventQueue.cs" />\r
-    <Compile Include="System.Windows.Forms\XplatUI.cs" />\r
-    <Compile Include="System.Windows.Forms\XplatUICarbon.cs" />\r
-    <Compile Include="System.Windows.Forms\XplatUIDriver.cs" />\r
-    <Compile Include="System.Windows.Forms\XplatUIStructs.cs" />\r
-    <Compile Include="System.Windows.Forms\XplatUIWin32.cs" />\r
-    <Compile Include="System.Windows.Forms\XplatUIX11.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Drawing/System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Accessibility/Accessibility-net_4_5.csproj">\r
-      <Project>{FACE8136-C95A-4788-90B2-DB0ECF7A020A}</Project>\r
-      <Name>Accessibility-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Posix/Mono.Posix-net_4_5.csproj">\r
-      <Project>{85A9B29B-58FF-4FBE-8998-B0A89AC22880}</Project>\r
-      <Name>Mono.Posix-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../Mono.WebBrowser/Mono.WebBrowser-net_4_5.csproj">\r
-      <Project>{1D660912-8164-4499-A2D7-A3B2FE742E17}</Project>\r
-      <Name>Mono.WebBrowser-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/SplitterNS.cur">\r
-      <LogicalName>System.Windows.Forms.SplitterNS.cur</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/SplitterWE.cur">\r
-      <LogicalName>System.Windows.Forms.SplitterWE.cur</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/NESW.cur">\r
-      <LogicalName>System.Windows.Forms.NESW.cur</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/NWSE.cur">\r
-      <LogicalName>System.Windows.Forms.NWSE.cur</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/DnDNo.cur">\r
-      <LogicalName>System.Windows.Forms.DnDNo.cur</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/DnDCopy.cur">\r
-      <LogicalName>System.Windows.Forms.DnDCopy.cur</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/DnDLink.cur">\r
-      <LogicalName>System.Windows.Forms.DnDLink.cur</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/DnDMove.cur">\r
-      <LogicalName>System.Windows.Forms.DnDMove.cur</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/keyboards.resources">\r
-      <LogicalName>keyboards.resources</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/16_computer.png">\r
-      <LogicalName>16_computer.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/32_computer.png">\r
-      <LogicalName>32_computer.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/computer.png">\r
-      <LogicalName>computer.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/16_document-open.png">\r
-      <LogicalName>16_document-open.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/32_document-open.png">\r
-      <LogicalName>32_document-open.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/document-open.png">\r
-      <LogicalName>document-open.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/16_folder.png">\r
-      <LogicalName>16_folder.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/folder-new.png">\r
-      <LogicalName>folder-new.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/folder.png">\r
-      <LogicalName>folder.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/16_folder-remote.png">\r
-      <LogicalName>16_folder-remote.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/32_folder-remote.png">\r
-      <LogicalName>32_folder-remote.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/folder-remote.png">\r
-      <LogicalName>folder-remote.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/go-previous.png">\r
-      <LogicalName>go-previous.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/go-top.png">\r
-      <LogicalName>go-top.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/22_page-magnifier.png">\r
-      <LogicalName>22_page-magnifier.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/preferences-system-windows.png">\r
-      <LogicalName>preferences-system-windows.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/16_printer.png">\r
-      <LogicalName>16_printer.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/32_printer.png">\r
-      <LogicalName>32_printer.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/text-x-generic.png">\r
-      <LogicalName>text-x-generic.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/16_user-desktop.png">\r
-      <LogicalName>16_user-desktop.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/32_user-desktop.png">\r
-      <LogicalName>32_user-desktop.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/user-desktop.png">\r
-      <LogicalName>user-desktop.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/16_user-home.png">\r
-      <LogicalName>16_user-home.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/32_user-home.png">\r
-      <LogicalName>32_user-home.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/user-home.png">\r
-      <LogicalName>user-home.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/16_dialog-error.png">\r
-      <LogicalName>16_dialog-error.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/16_dialog-information.png">\r
-      <LogicalName>16_dialog-information.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/16_dialog-warning.png">\r
-      <LogicalName>16_dialog-warning.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/1-up.png">\r
-      <LogicalName>1-up.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/2-up.png">\r
-      <LogicalName>2-up.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/3-up.png">\r
-      <LogicalName>3-up.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/4-up.png">\r
-      <LogicalName>4-up.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/6-up.png">\r
-      <LogicalName>6-up.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/nav_delete.png">\r
-      <LogicalName>nav_delete.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/nav_end.png">\r
-      <LogicalName>nav_end.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/nav_first.png">\r
-      <LogicalName>nav_first.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/nav_next.png">\r
-      <LogicalName>nav_next.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/nav_plus.png">\r
-      <LogicalName>nav_plus.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/nav_previous.png">\r
-      <LogicalName>nav_previous.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/image-missing.png">\r
-      <LogicalName>image-missing.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/image-x-generic.png">\r
-      <LogicalName>image-x-generic.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/propertygrid-alphabetical.png">\r
-      <LogicalName>System.Windows.Forms.propertygrid-alphabetical.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/propertygrid-categorized.png">\r
-      <LogicalName>System.Windows.Forms.propertygrid-categorized.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/propertygrid-propertypages.png">\r
-      <LogicalName>System.Windows.Forms.propertygrid-propertypages.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/EventsTab.bmp">\r
-      <LogicalName>System.Windows.Forms.Design.EventsTab.bmp</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/PropertiesTab.bmp">\r
-      <LogicalName>System.Windows.Forms.PropertyGridInternal.PropertiesTab.bmp</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/mono.ico">\r
-      <LogicalName>mono.ico</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/errorProvider.ico">\r
-      <LogicalName>errorProvider.ico</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Windows.Forms/System.Windows.Forms-tests-net_4_5.csproj b/mcs/class/System.Windows.Forms/System.Windows.Forms-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 3c40c97..0000000
+++ /dev/null
@@ -1,312 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B636AE9C-EC26-43BB-B179-29FB9F60A0FA}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,612</NoWarn>\r
-    <OutputPath>bin\Debug\System.Windows.Forms-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Windows.Forms_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,612</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,612</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Test\System.Resources\CompatTest.cs" />\r
-    <Compile Include="Test\System.Resources\CultureTest.cs" />\r
-    <Compile Include="Test\System.Resources\HelperClasses_ITRS.cs" />\r
-    <Compile Include="Test\System.Resources\HelperClasses_Resources.cs" />\r
-    <Compile Include="Test\System.Resources\ResourcesTestHelper.cs" />\r
-    <Compile Include="Test\System.Resources\ResXDataNodeAliasTests.cs" />\r
-    <Compile Include="Test\System.Resources\ResXDataNodeByteArrayTests.cs" />\r
-    <Compile Include="Test\System.Resources\ResXDataNodeFileRefGetValueTests.cs" />\r
-    <Compile Include="Test\System.Resources\ResXDataNodeFileRefGetValueTypeNameTests.cs" />\r
-    <Compile Include="Test\System.Resources\ResXDataNodeSerialisedGetValueTypeNameTests.cs" />\r
-    <Compile Include="Test\System.Resources\ResXDataNodeSerializedGetValueTests.cs" />\r
-    <Compile Include="Test\System.Resources\ResXDataNodeTest.cs" />\r
-    <Compile Include="Test\System.Resources\ResXDataNodeTypeConverterGetValueTests.cs" />\r
-    <Compile Include="Test\System.Resources\ResXDataNodeTypeConverterGetValueTypeNameTests.cs" />\r
-    <Compile Include="Test\System.Resources\ResXDataNodeWriteBehavior.cs" />\r
-    <Compile Include="Test\System.Resources\ResXFileRefTest.cs" />\r
-    <Compile Include="Test\System.Resources\ResXResourceReaderTest.cs" />\r
-    <Compile Include="Test\System.Resources\WriterTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms.Layout\ArrangedElementCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms.Layout\TableLayoutSettingsTypeConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ApplicationContextTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ApplicationTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\AutoCompleteStringCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\BindingContextTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\BindingManagerBaseTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\BindingMemberInfoTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\BindingNavigatorTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\BindingsCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\BindingSourceTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\BindingTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ButtonBaseTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ButtonTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\CheckBoxEventTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\CheckBoxTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\CheckedListBoxEventTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\CheckedListBoxTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ClipboardTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ColumnClickEventArgsTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ColumnHeaderTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ColumnStyleTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ComboBoxTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\Common.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\CommonDialogsTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ContainerControlTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ContextMenuTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ControlBindingsCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ControlBindingsConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ControlCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ControlEventTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ControlHandleTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ControlLogger.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ControlLogger2.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ControlPaintTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ControlPropertyEventsTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ControlStyleTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ControlTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\CurrencyManagerTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\CursorTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataBindingTests.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridColumnStyleTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridTableStyleTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridTextBoxColumnTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridTextBoxTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewAdvancedBorderStyleTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewBandTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewButtonCellTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewCellCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewCellStyleTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewCellTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewCheckBoxCellTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewClipboardHeaderTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewClipboardTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewColumnCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewColumnHeaderTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewColumnTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewComboBoxCellTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewCommon.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewDataBindingTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewElementTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewImageCellTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewLinkCellTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewRowCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewRowHeaderTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewRowTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewTextBoxCellTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataGridViewTextBoxColumnTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DataObjectTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DateTimePickerTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DefaultLayoutTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\DragEventArgsTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ErrorProviderTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\EventArgsTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\EventLogger.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\FlowPanelTests.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\FocusTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\FolderBrowserDialogTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\FormEventTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\FormHandleTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\FormTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\GridColumnStylesCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\GridTableStylesCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\GroupBoxTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\HelpProviderTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\HScrollPropertiesTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ImageKeyConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ImageListStreamerTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ImageListTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\InputLanguageTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\KeyEventArgsTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\KeysConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\LabelTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\LinkAreaTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\LinkConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\LinkLabelTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ListBindingHelperTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ListBoxEventTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ListBoxTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ListControlTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ListViewCollectionsTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ListViewEventTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ListViewGroupCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ListViewGroupTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ListViewItemTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ListViewTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\MaskedTextBoxTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\MdiFormHandleTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\MdiFormTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\MenuItemTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\MenuStripTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\MenuTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\MessageTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\MonthCalendarTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\NotifyIconTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\NumericUpDownTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\PaddingConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\PaddingTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\PaintEventArgsTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\PanelTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\PictureBoxTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\PrintDialogTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ProgressBarTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\PropertyGridTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\PropertyManagerTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\RadioButtonTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\RichTextBoxTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\RowStyleTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\SaveFileDialogTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ScrollableControlTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ScrollBarTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\SelectionRangeTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\SendKeysTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\SplitContainerTests.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\SplitterTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\StatusBarPanelTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\StatusBarTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\StatusStripTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\SystemInformationTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TabControlTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TableLayoutTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TestHelper.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TestImageIndexConverter.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TextBoxTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TimerTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolBarButtonTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolBarTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripButtonTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripComboBoxTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripContainerTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripContentPanelTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripControlHostTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripDropDownItemTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripDropDownTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripItemCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripItemTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripLabelTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripManagerTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripMenuItemTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripOverflowButtonTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripOverflowTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripPanelTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripProgressBarTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripSeparatorTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripStatusLabelTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolStripTextBoxTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\ToolTipTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TrackBarTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TreeNodeCollectionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TreeNodeTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TreeViewEventsTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TreeViewHitTestInfoTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TreeViewImageIndexConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TreeViewImageKeyConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\TreeViewTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\UpDownTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\UserControlTest.cs" />\r
-    <Compile Include="Test\System.Windows.Forms\VScrollPropertiesTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{B102F27C-1A07-487F-BA5B-D5155D201112}</Project>\r
-      <Name>System.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{CB1CB976-AA54-4553-B0E7-05665B199EC4}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Accessibility\Accessibility-net_4_5.csproj">\r
-      <Project>{FACE8136-C95A-4788-90B2-DB0ECF7A020A}</Project>\r
-      <Name>Accessibility\Accessibility-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{B12AABBC-30D1-4885-BF3F-A53B970F68FB}</Project>\r
-      <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Test/resources/a.cur">\r
-      <LogicalName>a.cur</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/resources/32x32.ico">\r
-      <LogicalName>32x32.ico</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index fad6981b745964226a9ff363374068cfde4946ef..58a6f94bd3e379dee860bc20f70b290f9fbf051f 100644 (file)
@@ -98,7 +98,7 @@ namespace System.Windows.Forms
                        items = new ObjectCollection (this);
                        DropDownStyle = ComboBoxStyle.DropDown;
                        item_height = FontHeight + 2;
-                       background_color = ThemeEngine.Current.ColorWindow;
+                       background_color = ThemeEngine.Current.ColorControl;
                        border_style = BorderStyle.None;
 
                        drop_down_height = default_drop_down_height;
index d7f84766858b6967ab5655ab36a5071ac57a86cd..538e9e5ead36ae2bac7737565d2db39dfea73a4b 100644 (file)
@@ -102,7 +102,7 @@ namespace System.Windows.Forms
 
                        requested_height = bounds.Height;
                        InternalBorderStyle = BorderStyle.Fixed3D;
-                       BackColor = ThemeEngine.Current.ColorWindow;
+                       BackColor = ThemeEngine.Current.ColorControl;
 
                        /* Vertical scrollbar */
                        vscrollbar = new ImplicitVScrollBar ();
index d7c548ca0a2aa00a52e785e6e8ff86c1fcaeb61c..bbf7778ce7c98985320c04386f43c7e2418c5ad0 100644 (file)
@@ -69,8 +69,8 @@ namespace System.Windows.Forms {
                        this.RightToLeftChanged += new EventHandler (TextBox_RightToLeftChanged);
                        MouseWheel += new MouseEventHandler (TextBox_MouseWheel);
 
-                       BackColor = SystemColors.Window;
-                       ForeColor = SystemColors.WindowText;
+                       BackColor = ThemeEngine.Current.ColorControl;
+                       ForeColor = ThemeEngine.Current.ColorControlText;
                        backcolor_set = false;
 
                        SetStyle (ControlStyles.StandardClick | ControlStyles.StandardDoubleClick, false);
index 45cc115fe554b915cd5ae664ba7d1ee20eb3acb3..1d090632a1ac178fa39c8d2a335a6c32534ba0f1 100644 (file)
@@ -207,8 +207,9 @@ namespace System.Windows.Forms
                {
                        // Ensure that at least one line is going to get displayed.
                        // Line limit does not ensure that despite its description.
-                       textBounds.Height = Math.Max (textBounds.Height, button.Font.Height);
-                       
+                       if (button.Font != null && button.Font.Height > 0)
+                               textBounds.Height = Math.Max (textBounds.Height, button.Font.Height);
+
                        if (button.Enabled)
                                TextRenderer.DrawTextInternal (g, button.Text, button.Font, textBounds, button.ForeColor, button.TextFormatFlags, button.UseCompatibleTextRendering);
                        else
index 11391af1a7279093caeaea71e177f8d3447a5adb..11b7ad542c20fd335632fb3d19695672758c4b00 100644 (file)
@@ -118,7 +118,7 @@ namespace System.Windows.Forms {
                                        return lqueue.Peek ();
                                }
                        }                               
-                       return xqueue.Peek();
+                       return xqueue.Peek ();
                }
 
                public bool DispatchIdle {
@@ -136,22 +136,30 @@ namespace System.Windows.Forms {
                        private XEvent          xevent;
                        
                        public PaintQueue (int size) {
-                               hwnds = new ArrayList(size);
-                               xevent = new XEvent();
+                               hwnds = new ArrayList (size);
+                               xevent = new XEvent ();
                                xevent.AnyEvent.type = XEventName.Expose;
                        }
 
                        public int Count {
-                               get { return hwnds.Count; }
+                               get {
+                                       lock (hwnds) {
+                                               return hwnds.Count;
+                                       }
+                               }
                        }
 
                        public void Enqueue (Hwnd hwnd) {
-                               hwnds.Add(hwnd);
+                               lock (hwnds) {
+                                       hwnds.Add (hwnd);
+                               }
                        }
 
                        public void Remove(Hwnd hwnd) {
                                if (!hwnd.expose_pending && !hwnd.nc_expose_pending) {
-                                       hwnds.Remove(hwnd);
+                                       lock (hwnds) {
+                                               hwnds.Remove (hwnd);
+                                       }
                                }
                        }
 
@@ -159,36 +167,38 @@ namespace System.Windows.Forms {
                                Hwnd            hwnd;
                                IEnumerator     next;
 
-                               if (hwnds.Count == 0) {
-                                       xevent.ExposeEvent.window = IntPtr.Zero;
-                                       return xevent;
-                               }
-
-                               next = hwnds.GetEnumerator();
-                               next.MoveNext();
-                               hwnd = (Hwnd)next.Current;
-
-                               // We only remove the event from the queue if we have one expose left since
-                               // a single 'entry in our queue may be for both NC and Client exposed
-                               if ( !(hwnd.nc_expose_pending && hwnd.expose_pending)) {
-                                       hwnds.Remove(hwnd);
-                               }
-                               if (hwnd.expose_pending) {
-                                       xevent.ExposeEvent.window = hwnd.client_window;
+                               lock (hwnds) {
+                                       if (hwnds.Count == 0) {
+                                               xevent.ExposeEvent.window = IntPtr.Zero;
+                                               return xevent;
+                                       }
+
+                                       next = hwnds.GetEnumerator ();
+                                       next.MoveNext ();
+                                       hwnd = (Hwnd)next.Current;
+
+                                       // We only remove the event from the queue if we have one expose left since
+                                       // a single 'entry in our queue may be for both NC and Client exposed
+                                       if (!(hwnd.nc_expose_pending && hwnd.expose_pending)) {
+                                               hwnds.Remove (hwnd);
+                                       }
+                                       if (hwnd.expose_pending) {
+                                               xevent.ExposeEvent.window = hwnd.client_window;
 #if not
-                                       xevent.ExposeEvent.x = hwnd.invalid.X;
-                                       xevent.ExposeEvent.y = hwnd.invalid.Y;
-                                       xevent.ExposeEvent.width = hwnd.invalid.Width;
-                                       xevent.ExposeEvent.height = hwnd.invalid.Height;
+                                               xevent.ExposeEvent.x = hwnd.invalid.X;
+                                               xevent.ExposeEvent.y = hwnd.invalid.Y;
+                                               xevent.ExposeEvent.width = hwnd.invalid.Width;
+                                               xevent.ExposeEvent.height = hwnd.invalid.Height;
 #endif
-                                       return xevent;
-                               } else {
-                                       xevent.ExposeEvent.window = hwnd.whole_window;
-                                       xevent.ExposeEvent.x = hwnd.nc_invalid.X;
-                                       xevent.ExposeEvent.y = hwnd.nc_invalid.Y;
-                                       xevent.ExposeEvent.width = hwnd.nc_invalid.Width;
-                                       xevent.ExposeEvent.height = hwnd.nc_invalid.Height;
-                                       return xevent;
+                                               return xevent;
+                                       } else {
+                                               xevent.ExposeEvent.window = hwnd.whole_window;
+                                               xevent.ExposeEvent.x = hwnd.nc_invalid.X;
+                                               xevent.ExposeEvent.y = hwnd.nc_invalid.Y;
+                                               xevent.ExposeEvent.width = hwnd.nc_invalid.Width;
+                                               xevent.ExposeEvent.height = hwnd.nc_invalid.Height;
+                                               return xevent;
+                                       }
                                }
                        }
                }
index 7a568b4c09ec7656cdfd3416b7ce566eaf1d649a..e1937a1fc52e0281283b0f77689a36a3c7a62125 100644 (file)
@@ -202,6 +202,9 @@ namespace System.Windows.Forms {
                }
 
                internal void Initialize () {
+                       if (Marshal.SizeOf<IntPtr> () == 8){
+                               Console.Error.WriteLine ("WARNING: The Carbon driver has not been ported to 64bits, and very few parts of Windows.Forms will work properly, or at all");
+                       }
                        // Initialize the event handlers        
                        Carbon.EventHandler.Driver = this;
                        ApplicationHandler = new Carbon.ApplicationHandler (this);
index c2f6b7b34925c37ce988c253d2b2a0faf3314f34..9ae9d4122f44bfc5f67a1e57e654744b768bd452 100644 (file)
@@ -206,7 +206,7 @@ namespace MonoTests.System.Windows.Forms
                [Test]
                public void BackColorTest ()
                {
-                       Assert.AreEqual (SystemColors.Window, textBox.BackColor, "#A1");
+                       Assert.AreEqual (SystemColors.Control, textBox.BackColor, "#A1");
                        textBox.BackColor = Color.Red;
                        Assert.AreEqual (Color.Red, textBox.BackColor, "#A2");
                        textBox.BackColor = Color.White;
index 895e3732b1f6e803ed944cb77784db33017e29e1..baec48a796e72bc4e501eb6f74026ec478977b4e 100644 (file)
@@ -108,7 +108,7 @@ namespace MonoTests.System.Windows.Forms
                        Assert.AreEqual (SystemColors.Control, tsi.BackColor, "B4");
 
                        tsi = new ToolStripControlHost (new TextBox ());
-                       Assert.AreEqual (SystemColors.Window, tsi.BackColor, "B5");
+                       Assert.AreEqual (SystemColors.Control, tsi.BackColor, "B5");
 
                        tsi = new ToolStripControlHost (new ProgressBar ());
                        Assert.AreEqual (SystemColors.Control, tsi.BackColor, "B6");
@@ -239,7 +239,7 @@ namespace MonoTests.System.Windows.Forms
                        Assert.AreEqual (SystemColors.ControlText, tsi.ForeColor, "B4");
 
                        tsi = new ToolStripControlHost (new TextBox ());
-                       Assert.AreEqual (SystemColors.WindowText, tsi.ForeColor, "B5");
+                       Assert.AreEqual (SystemColors.ControlText, tsi.ForeColor, "B5");
                }
 
                [Test]
diff --git a/mcs/class/System.Windows/System.Windows-net_4_5.csproj b/mcs/class/System.Windows/System.Windows-net_4_5.csproj
deleted file mode 100644 (file)
index 9b5af1f..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{050D4277-82D2-4544-A929-EDCBEA5FD69D}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Windows</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.XML/ReferenceSources/LocalAppContextSwitches.cs b/mcs/class/System.XML/ReferenceSources/LocalAppContextSwitches.cs
new file mode 100644 (file)
index 0000000..9c96102
--- /dev/null
@@ -0,0 +1,7 @@
+namespace System
+{
+    static class LocalAppContextSwitches {
+       public const bool IgnoreEmptyKeySequences = false;
+       public const bool DontThrowOnInvalidSurrogatePairs = false;
+    }
+}
\ No newline at end of file
diff --git a/mcs/class/System.XML/System.Xml-bare-net_4_5.csproj b/mcs/class/System.XML/System.Xml-bare-net_4_5.csproj
deleted file mode 100644 (file)
index 1a53e23..0000000
+++ /dev/null
@@ -1,750 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{21FB091E-0F84-479E-AB16-6503D36852F9}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,219,414,649,1717</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5/bare</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Xml</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,219,414,649,1717</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASYNC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,219,414,649,1717</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASYNC</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\GenerateHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\IteratorDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\OptimizerPatterns.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\StaticDataManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\TailCallAnalyzer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlILAnnotation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlILConstructAnalyzer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlILModule.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlILOptimization.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlILOptimizerVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlIlTrace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlIlTypeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlIlVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\ISourceLineInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\ListBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Pair.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilBinary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilChoice.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilCloneVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilDataSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilFunction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilInvoke.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilInvokeEarlyBound.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilInvokeLateBound.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilLiteral.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilLoop.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilNodeType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilPatternFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilPatternVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilReplaceVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilScopedVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilSortKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilStrConcat.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilTargetType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilTernary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilTypeChecker.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilUnary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilValidationVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilXmlReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilXmlWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\SerializationHints.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\SubstitutionList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\WhitespaceRule.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QueryReaderSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\ContentIterators.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\DecimalFormatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\DocumentOrderComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\DodSequenceMerge.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\EarlyBoundInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\NumberFormatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\RtfNavigator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\SetIterators.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\SiblingIterators.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\StringConcat.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\TreeIterators.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\WhitespaceRuleLookup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\WhitespaceRuleReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlAggregates.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlAttributeCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlCollation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlExtensionFunction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlILIndex.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlILStorageConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlIterators.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlNavigatorFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlNavigatorStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlQueryContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlQueryOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlQueryRuntime.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlQuerySequence.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlQueryStaticData.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlRawWriterWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlSequenceWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlSortKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlSortKeyAccumulator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XslNumber.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XsltConvert.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XsltFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XsltLibrary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\SourceLineInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlILCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlIlGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlNodeKindFlags.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlQualifiedNameTest.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlQueryCardinality.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlQueryType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlQueryTypeFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\IXpathBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\IXPathEnvironment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathAxis.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathCompileException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathQilFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathScanner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPathConvert.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XslException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\Compiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\CompilerScopeManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\Focus.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\IErrorHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\InvokeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\KeyMatchBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\Keywords.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\MatcherBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\OutputScopeManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\QilGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\QilGeneratorEnv.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\QilStrConcatenator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\Scripts.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\Stylesheet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XPathPatternBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XPathPatternParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XslAst.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XslAstAnalyzer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XslFlags.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XsltInput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XsltLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XsltQilFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XslVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Action.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ActionFrame.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ApplyImportsAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ApplyTemplatesAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\AttributeAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\AttributeSetAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Avt.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\AvtEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\BeginEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\BuilderInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CallTemplateAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ChooseAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CommentAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CompiledAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Compiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ContainerAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CopyAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CopyAttributesAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CopyCodeAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CopyNamespacesAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CopyNodesetAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CopyOfAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\DbgCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\DocumentScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ElementAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\EndEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Event.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ForeachAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\HtmlProps.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\IfAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\InputScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\InputScopeManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\MessageAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\NamespaceDecl.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\NamespaceEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\NavigatorInput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\NavigatorOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\NewInstructionAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\NumberAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\OutKeywords.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\OutputScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\OutputScopeManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\PrefixQname.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ProcessingInstructionAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Processor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ReaderOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\RecordBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\RecordOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\RootAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\SequentialOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\SortAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\StateMachine.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\StringOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Stylesheet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TemplateAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TemplateBaseAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TemplateLookupAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Templatemanager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TextAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TextEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TextOnlyOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TextOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TheQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\UseAttributesetsAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ValueOfAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\VariableAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\WithParamAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\WriterOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\XsltCompileContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\XsltDebugger.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\XsltOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\InternalApis\NDP_Common\inc\Win8Helpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\misc\HResults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\misc\InvariantComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\misc\PrivilegedConfigurationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Assembly\System.Xml.Assembly.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\AsyncHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Base64Decoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Base64Encoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Base64EncoderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinaryXml\BinXmltoken.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinaryXml\SqlUtils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinaryXml\XmlBinaryReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinaryXml\XmlBinaryReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinHexDecoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinHexEncoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinHexEncoderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Bits.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BitStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\ByteStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\Shape.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\ShapeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathDocumentBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathDocumentIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathDocumentNavigator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathDocumentView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathNodeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathNodeInfoAtom.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathNodeView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathNodeViewPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\BinaryCompatibility.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\CharEntityEncoderFallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ConformanceLevel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\DtdProcessing.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\EntityHandling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\HtmlEncodedRawTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\HtmlTernaryTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\HtmlUtf8RawTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IDtdInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IDtdParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IDtdParserAdapter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IDtdParserAdapterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IDtdParserAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IncrementalReadDecoders.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IRemovableWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IValidationEventHandling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\NamespaceHandling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\NewLineHandling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\QueryOutputWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\QueryOutputWriterV1.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ReadContentAsBinaryHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ReadContentAsBinaryHelperAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ReadOnlyTernaryTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ReadState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\SecureStringHasher.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\TextEncodedRawTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\TextUtf8RawTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ValidatingReaderNodeData.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ValidationType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\WhitespaceHandling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlAsyncCheckReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlAsyncCheckWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlAutoDetectWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlCharCheckingReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlCharCheckingReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlCharCheckingWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlCharCheckingWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlConfiguration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlEncodedRawTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlEncodedRawTextWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlEventCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlParserContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlRawWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlRawWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlReaderSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlSpace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlSubtreeReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlSubtreeReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextEncoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextReaderImpl.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextReaderImplAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextReaderImplHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextReaderImplHelpersAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlUtf8RawTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlUtf8RawTextWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlValidatingReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlValidatingReaderImpl.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlValidatingReaderImplAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWellFormedWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWellFormedWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWellFormedWriterHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWellFormedWriterHelpersAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWrappingReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWrappingReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWrappingWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWrappingWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWriterSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XsdCachingReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XsdCachingReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XsdValidatingReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XsdValidatingReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\DiagnosticsSwitches.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\DocumentSchemaValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\DocumentXmlWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\DocumentXPathNavigator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\DomNameTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlAttributeCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlCDataSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlCharacterData.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlChildEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlChildNodes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlComment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlDeclaration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlDocument.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlDocumentFragment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlDocumentType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlDomTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlElementList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlEntity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlEntityReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlEventChangedAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlImplementation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlLinkedNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNamedNodemap.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNamedNodeMap.SmallXmlNodeList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNodeChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNodeChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNodeList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNodeReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNotation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlProcessingInstruction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlSignificantWhiteSpace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlText.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlUnspecifiedAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlWhitespace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XPathNodeList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\EmptyEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\HWStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\IApplicationResourceStreamResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\IHasXmlNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\IXmlLineInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\IXmlNamespaceResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\LineInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\MTNameTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\NameTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Ref.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Resolvers\XmlKnownDtds.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Resolvers\XmlPreloadedResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Resolvers\XmlPreloadedResolverAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\Asttree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\AutoValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\BaseProcessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\BaseValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\BitSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\Chameleonkey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\CompiledidEntityConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\ConstraintStruct.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\ContentValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\DataTypeImplementation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\DtdParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\DtdParserAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\DtdValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\FacetChecker.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\Inference\Infer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\Inference\XmlSchemaInferenceException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\IXmlSchemaInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\NamespaceList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\Parser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\ParserAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\Preprocessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaAttDef.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaCollectionCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaCollectionpreProcessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaDeclBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaElementDecl.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaEntity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaNames.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaNamespacemanager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaNotation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaSetCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\ValidationEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\ValidationEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\ValidationState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XdrBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XdrValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlAtomicValue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchema.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAll.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAnnotated.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAnnotation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAny.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAnyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAppInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAttributeGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAttributeGroupref.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaChoice.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaCompilationSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaComplexContent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaComplexContentExtension.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaComplexContentRestriction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaComplexType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaContent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaContentModel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaContentProcessing.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaContentType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaDataType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaDerivationMethod.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaDocumentation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaExternal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaFacet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaForm.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaGroupBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaGroupRef.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaIdEntityConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaImport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaInclude.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaNotation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaObjectCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaObjectTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaParticle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaRedefine.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSequence.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleContent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleContentExtension.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleContentRestriction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleTypeContent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleTypeList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleTypeRestriction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleTypeUnion.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSubstitutionGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaUse.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaValidationException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaValidity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSeverityType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlTokenizedType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlTypeCode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlValueConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XsdBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XsdDateTime.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XsdDuration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XsdValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\_Events.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Advanced\SchemaImporterExtension.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\AppSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\CodeExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\CodeGenerationoptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\CodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\CodeIdentifier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\CodeIdentifiers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Compilation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Compiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\ConfigurationStrings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\DateTimeSerializationSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\SchemaImporterExtensionElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\SchemaImporterExtensionElementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\SchemaImporterExtensionsSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\SerializationSectionGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\XmlSerializerSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\ImportContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\indentedWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\IXmlSerializable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\IXmlTextParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Mappings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Models.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\NameTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\PrimitiveXmlSerializers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SchemaImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SchemaObjectWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapAttributeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapAttributeOverrides.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapCodeExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapElementAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapEnumAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapIgnoreAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapIncludeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapReflectionImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapSchemaExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapSchemaImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapSchemamember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SourceInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\TypeExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Types.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlAnyAttributeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlAnyElementAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlAnyElementAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlArrayAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlArrayItemAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlArrayItemAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlAttributeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlAttributeOverrides.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlChoiceIdentifierAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlCodeExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlCountingReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Xmlcustomformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlElementAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlElementAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlEnumAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlIgnoreAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlIncludeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlMemberMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlMembersMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlNamespaceDeclarationsAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlReflectionImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlReflectionMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlRootAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSchemaExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSchemaImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSchemaProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSchemas.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializationGeneratedCode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializationILGen.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializationReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializationReaderILGen.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializationWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializationWriterILGen.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializerAssemblyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializerFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializerNamespaces.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializerVersionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlTextAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlTypeMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\ValidateNames.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlCharType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlComplianceUtil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlConvert.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlDownloadManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlDownloadManagerAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlEncoding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlNamespacemanager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlNamespaceScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlNameTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlNodeOrder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlNodeType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlNullResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlQualifiedName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlReservedNs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlResolverAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlSecureResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlSecureResolverAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlUrlResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlUrlResolverAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlXapResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\AbsoluteQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\AstNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\AttributeQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Axis.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\BaseAxisQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\BooleanExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\BooleanFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\CacheAxisQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\CacheChildrenQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\CacheOutputQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ChildrenQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ClonableStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\CompiledXPathExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ContextQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\DescendantBaseQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\DescendantoverDescendantQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\DescendantQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\DocumentorderQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\EmptyQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ExtensionQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Filter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\FilterQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\FollowingQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\FollowingSibling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ForwardPositionQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Function.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\FunctionQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Group.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\GroupQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\IdQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\IteratorFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\LogicalExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\MergeFilterQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\NamespaceQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\NodeFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\NumberFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\NumericExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Operand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\OperandQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Operator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ParentQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\PrecedingQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\PrecedingSibling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Query.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\QueryBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ResetableIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ReversePositionQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Root.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\SortQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\StringFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\UnionExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ValueQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Variable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\VariableQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathAncestorIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathAncestorQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathArrayIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathAxisIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathChildIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathDescendantIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathEmptyIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathMultyIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathScanner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathSelectionIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathSelfQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathSingletonIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\IXPathNavigable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathDocument.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathItem.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathNamespaceScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathNavigator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathNavigatorKeyComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathNavigatorReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathNodeIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathNodeType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Xslt\XslCompiledTransform.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Xslt\XsltArgumentList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Xslt\XsltContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Xslt\XsltException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Xslt\XslTransform.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Xslt\XsltSettings.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\SR.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="ReferenceSources\Res.cs" />\r
-    <Compile Include="ReferenceSources\ThisAssembly.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-bare-net_4_5.csproj">\r
-      <Project>{91CDF14E-F60F-4AB7-BC9D-5CBD7E669076}</Project>\r
-      <Name>System-bare-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 53a6be689d820a1fb5facf04b78b3989de337379..07e626b09335305faff46edd89e8b680498a763e 100644 (file)
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\SR.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="ReferenceSources\LocalAppContextSwitches.cs" />\r
     <Compile Include="ReferenceSources\Res.cs" />\r
     <Compile Include="ReferenceSources\ThisAssembly.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
diff --git a/mcs/class/System.XML/System.Xml-net_4_5.csproj b/mcs/class/System.XML/System.Xml-net_4_5.csproj
deleted file mode 100644 (file)
index 15f19ab..0000000
+++ /dev/null
@@ -1,754 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,219,414,649,1717</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Xml</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,219,414,649,1717</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASYNC;CONFIGURATION_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,219,414,649,1717</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;ASYNC;CONFIGURATION_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\GenerateHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\IteratorDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\OptimizerPatterns.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\StaticDataManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\TailCallAnalyzer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlILAnnotation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlILConstructAnalyzer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlILModule.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlILOptimization.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlILOptimizerVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlIlTrace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlIlTypeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\IlGen\XmlIlVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\ISourceLineInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\ListBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Pair.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilBinary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilChoice.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilCloneVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilDataSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilFunction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilInvoke.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilInvokeEarlyBound.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilInvokeLateBound.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilLiteral.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilLoop.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilNodeType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilPatternFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilPatternVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilReplaceVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilScopedVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilSortKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilStrConcat.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilTargetType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilTernary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilTypeChecker.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilUnary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilValidationVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilXmlReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\QilXmlWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\SerializationHints.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\SubstitutionList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QIL\WhitespaceRule.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\QueryReaderSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\ContentIterators.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\DecimalFormatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\DocumentOrderComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\DodSequenceMerge.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\EarlyBoundInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\NumberFormatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\RtfNavigator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\SetIterators.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\SiblingIterators.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\StringConcat.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\TreeIterators.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\WhitespaceRuleLookup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\WhitespaceRuleReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlAggregates.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlAttributeCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlCollation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlExtensionFunction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlILIndex.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlILStorageConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlIterators.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlNavigatorFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlNavigatorStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlQueryContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlQueryOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlQueryRuntime.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlQuerySequence.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlQueryStaticData.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlRawWriterWrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlSequenceWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlSortKey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XmlSortKeyAccumulator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XslNumber.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XsltConvert.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XsltFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Runtime\XsltLibrary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\SourceLineInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlILCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlIlGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlNodeKindFlags.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlQualifiedNameTest.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlQueryCardinality.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlQueryType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XmlQueryTypeFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\IXpathBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\IXPathEnvironment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathAxis.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathCompileException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathOperator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathQilFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPath\XPathScanner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XPathConvert.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XslException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\Compiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\CompilerScopeManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\Focus.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\IErrorHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\InvokeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\KeyMatchBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\Keywords.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\MatcherBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\OutputScopeManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\QilGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\QilGeneratorEnv.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\QilStrConcatenator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\Scripts.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\Stylesheet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XPathPatternBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XPathPatternParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XslAst.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XslAstAnalyzer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XslFlags.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XsltInput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XsltLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XsltQilFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\Xslt\XslVisitor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Action.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ActionFrame.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ApplyImportsAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ApplyTemplatesAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\AttributeAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\AttributeSetAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Avt.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\AvtEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\BeginEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\BuilderInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CallTemplateAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ChooseAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CommentAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CompiledAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Compiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ContainerAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CopyAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CopyAttributesAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CopyCodeAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CopyNamespacesAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CopyNodesetAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\CopyOfAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\DbgCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\DocumentScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ElementAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\EndEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Event.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ForeachAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\HtmlProps.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\IfAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\InputScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\InputScopeManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\MessageAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\NamespaceDecl.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\NamespaceEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\NavigatorInput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\NavigatorOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\NewInstructionAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\NumberAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\OutKeywords.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\OutputScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\OutputScopeManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\PrefixQname.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ProcessingInstructionAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Processor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ReaderOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\RecordBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\RecordOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\RootAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\SequentialOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\SortAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\StateMachine.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\StringOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Stylesheet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TemplateAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TemplateBaseAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TemplateLookupAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\Templatemanager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TextAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TextEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TextOnlyOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TextOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\TheQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\UseAttributesetsAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\ValueOfAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\VariableAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\WithParamAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\WriterOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\XsltCompileContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\XsltDebugger.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Data.SqlXml\System\Xml\Xsl\XsltOld\XsltOutput.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\InternalApis\NDP_Common\inc\Win8Helpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\misc\HResults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\misc\InvariantComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\misc\PrivilegedConfigurationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Assembly\System.Xml.Assembly.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\AsyncHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Base64Decoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Base64Encoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Base64EncoderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinaryXml\BinXmltoken.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinaryXml\SqlUtils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinaryXml\XmlBinaryReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinaryXml\XmlBinaryReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinHexDecoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinHexEncoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BinHexEncoderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Bits.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\BitStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\ByteStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\Shape.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\ShapeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathDocumentBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathDocumentIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathDocumentNavigator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathDocumentView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathNodeHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathNodeInfoAtom.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathNodeView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Cache\XPathNodeViewPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\BinaryCompatibility.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\CharEntityEncoderFallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ConformanceLevel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\DtdProcessing.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\EntityHandling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\HtmlEncodedRawTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\HtmlTernaryTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\HtmlUtf8RawTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IDtdInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IDtdParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IDtdParserAdapter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IDtdParserAdapterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IDtdParserAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IncrementalReadDecoders.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IRemovableWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\IValidationEventHandling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\NamespaceHandling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\NewLineHandling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\QueryOutputWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\QueryOutputWriterV1.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ReadContentAsBinaryHelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ReadContentAsBinaryHelperAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ReadOnlyTernaryTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ReadState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\SecureStringHasher.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\TextEncodedRawTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\TextUtf8RawTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ValidatingReaderNodeData.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\ValidationType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\WhitespaceHandling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlAsyncCheckReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlAsyncCheckWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlAutoDetectWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlCharCheckingReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlCharCheckingReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlCharCheckingWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlCharCheckingWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlConfiguration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlEncodedRawTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlEncodedRawTextWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlEventCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlParserContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlRawWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlRawWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlReaderSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlSpace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlSubtreeReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlSubtreeReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextEncoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextReaderImpl.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextReaderImplAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextReaderImplHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextReaderImplHelpersAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlUtf8RawTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlUtf8RawTextWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlValidatingReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlValidatingReaderImpl.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlValidatingReaderImplAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWellFormedWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWellFormedWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWellFormedWriterHelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWellFormedWriterHelpersAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWrappingReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWrappingReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWrappingWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWrappingWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWriterAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XmlWriterSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XsdCachingReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XsdCachingReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XsdValidatingReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Core\XsdValidatingReaderAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\DiagnosticsSwitches.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\DocumentSchemaValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\DocumentXmlWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\DocumentXPathNavigator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\DomNameTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlAttributeCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlCDataSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlCharacterData.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlChildEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlChildNodes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlComment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlDeclaration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlDocument.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlDocumentFragment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlDocumentType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlDomTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlElementList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlEntity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlEntityReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlEventChangedAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlImplementation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlLinkedNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNamedNodemap.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNamedNodeMap.SmallXmlNodeList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNodeChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNodeChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNodeList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNodeReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlNotation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlProcessingInstruction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlSignificantWhiteSpace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlText.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlUnspecifiedAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XmlWhitespace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Dom\XPathNodeList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\EmptyEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\HWStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\IApplicationResourceStreamResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\IHasXmlNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\IXmlLineInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\IXmlNamespaceResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\LineInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\MTNameTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\NameTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Ref.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Resolvers\XmlKnownDtds.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Resolvers\XmlPreloadedResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Resolvers\XmlPreloadedResolverAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\Asttree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\AutoValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\BaseProcessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\BaseValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\BitSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\Chameleonkey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\CompiledidEntityConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\ConstraintStruct.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\ContentValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\DataTypeImplementation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\DtdParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\DtdParserAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\DtdValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\FacetChecker.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\Inference\Infer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\Inference\XmlSchemaInferenceException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\IXmlSchemaInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\NamespaceList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\Parser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\ParserAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\Preprocessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaAttDef.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaCollectionCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaCollectionpreProcessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaDeclBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaElementDecl.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaEntity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaNames.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaNamespacemanager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaNotation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaSetCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\SchemaType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\ValidationEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\ValidationEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\ValidationState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XdrBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XdrValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlAtomicValue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchema.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAll.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAnnotated.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAnnotation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAny.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAnyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAppInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAttributeGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaAttributeGroupref.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaChoice.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaCompilationSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaComplexContent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaComplexContentExtension.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaComplexContentRestriction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaComplexType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaContent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaContentModel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaContentProcessing.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaContentType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaDataType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaDerivationMethod.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaDocumentation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaExternal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaFacet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaForm.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaGroupBase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaGroupRef.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaIdEntityConstraint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaImport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaInclude.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaNotation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaObjectCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaObjectTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaParticle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaRedefine.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSequence.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSet.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleContent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleContentExtension.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleContentRestriction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleTypeContent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleTypeList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleTypeRestriction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSimpleTypeUnion.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaSubstitutionGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaUse.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaValidationException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSchemaValidity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlSeverityType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlTokenizedType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlTypeCode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XmlValueConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XsdBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XsdDateTime.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XsdDuration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Schema\XsdValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\_Events.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Advanced\SchemaImporterExtension.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\AppSettings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\CodeExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\CodeGenerationoptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\CodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\CodeIdentifier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\CodeIdentifiers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Compilation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Compiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\ConfigurationStrings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\DateTimeSerializationSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\SchemaImporterExtensionElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\SchemaImporterExtensionElementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\SchemaImporterExtensionsSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\SerializationSectionGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Configuration\XmlSerializerSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\ImportContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\indentedWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\IXmlSerializable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\IXmlTextParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Mappings.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Models.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\NameTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\PrimitiveXmlSerializers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SchemaImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SchemaObjectWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapAttributeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapAttributeOverrides.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapCodeExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapElementAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapEnumAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapIgnoreAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapIncludeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapReflectionImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapSchemaExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapSchemaImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapSchemamember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SoapTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\SourceInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\TypeExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Types.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlAnyAttributeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlAnyElementAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlAnyElementAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlArrayAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlArrayItemAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlArrayItemAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlAttributeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlAttributeOverrides.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlChoiceIdentifierAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlCodeExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlCountingReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\Xmlcustomformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlElementAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlElementAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlEnumAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlIgnoreAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlIncludeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlMemberMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlMembersMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlNamespaceDeclarationsAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlReflectionImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlReflectionMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlRootAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSchemaExporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSchemaImporter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSchemaProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSchemas.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializationGeneratedCode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializationILGen.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializationReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializationReaderILGen.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializationWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializationWriterILGen.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializerAssemblyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializerFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializerNamespaces.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlSerializerVersionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlTextAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Serialization\XmlTypeMapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\ValidateNames.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlCharType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlComplianceUtil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlConvert.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlDownloadManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlDownloadManagerAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlEncoding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlNamespacemanager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlNamespaceScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlNameTable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlNodeOrder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlNodeType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlNullResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlQualifiedName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlReservedNs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlResolverAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlSecureResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlSecureResolverAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlUrlResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlUrlResolverAsync.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XmlXapResolver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\AbsoluteQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\AstNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\AttributeQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Axis.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\BaseAxisQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\BooleanExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\BooleanFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\CacheAxisQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\CacheChildrenQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\CacheOutputQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ChildrenQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ClonableStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\CompiledXPathExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ContextQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\DescendantBaseQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\DescendantoverDescendantQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\DescendantQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\DocumentorderQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\EmptyQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ExtensionQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Filter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\FilterQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\FollowingQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\FollowingSibling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ForwardPositionQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Function.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\FunctionQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Group.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\GroupQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\IdQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\IteratorFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\LogicalExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\MergeFilterQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\NamespaceQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\NodeFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\NumberFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\NumericExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Operand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\OperandQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Operator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ParentQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\PrecedingQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\PrecedingSibling.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Query.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\QueryBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ResetableIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ReversePositionQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Root.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\SortQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\StringFunctions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\UnionExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\ValueQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\Variable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\VariableQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathAncestorIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathAncestorQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathArrayIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathAxisIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathChildIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathDescendantIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathEmptyIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathMultyIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathScanner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathSelectionIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathSelfQuery.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\Internal\XPathSingletonIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\IXPathNavigable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathDocument.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathExpr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathItem.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathNamespaceScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathNavigator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathNavigatorKeyComparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathNavigatorReader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathNodeIterator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\XPath\XPathNodeType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Xslt\XslCompiledTransform.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Xslt\XsltArgumentList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Xslt\XsltContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Xslt\XsltException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Xslt\XslTransform.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml\System\Xml\Xslt\XsltSettings.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\SR.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="ReferenceSources\Res.cs" />\r
-    <Compile Include="ReferenceSources\ThisAssembly.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-bare-net_4_5.csproj">\r
-      <Project>{91CDF14E-F60F-4AB7-BC9D-5CBD7E669076}</Project>\r
-      <Name>System-bare-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 2f5e7bacb860524f2d3c0e6c48774cd0552b7a51..cdfb3fdeff89c373c3a959d777dc4ac50420a8cb 100644 (file)
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\SR.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="ReferenceSources\LocalAppContextSwitches.cs" />\r
     <Compile Include="ReferenceSources\Res.cs" />\r
     <Compile Include="ReferenceSources\ThisAssembly.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
diff --git a/mcs/class/System.XML/System.Xml-tests-net_4_5.csproj b/mcs/class/System.XML/System.Xml-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 0f0c1b3..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5CFB4B4E-2DD9-4033-ADEC-D6E26A357B78}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,612,642,618,219,169</NoWarn>\r
-    <OutputPath>bin\Debug\System.Xml-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Xml_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,612,642,618,219,169</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,612,642,618,219,169</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Xml.Schema\XmlSchemaAssertion.cs" />\r
-    <Compile Include="Test\System.Xml.Schema\XmlSchemaBuiltInDatatypeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Schema\XmlSchemaCollectionTests.cs" />\r
-    <Compile Include="Test\System.Xml.Schema\XmlSchemaDatatypeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Schema\XmlSchemaExceptionCas.cs" />\r
-    <Compile Include="Test\System.Xml.Schema\XmlSchemaExceptionTests.cs" />\r
-    <Compile Include="Test\System.Xml.Schema\XmlSchemaLengthFacetTests.cs" />\r
-    <Compile Include="Test\System.Xml.Schema\XmlSchemaSetTests.cs" />\r
-    <Compile Include="Test\System.Xml.Schema\XmlSchemaTests.cs" />\r
-    <Compile Include="Test\System.Xml.Schema\XmlSchemaTypeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Schema\XmlSchemaValidatorTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization.Advanced\SchemaImporterExtensionCollectionTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization.Advanced\SchemaImporterExtensionTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\CodeIdentifiersTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\ComplexDataStructure.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\DeserializeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\SoapAttributeAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\SoapAttributesTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\SoapElementAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\SoapEnumAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\SoapIncludeAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\SoapReflectionImporterTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\SoapSchemaExporterTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\SoapSchemaMemberTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\SoapTypeAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlAnyElementAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlArrayAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlArrayItemAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlAttributeAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlAttributesTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlChoiceIdentifierAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlCodeExporterTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlElementAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlEnumAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlIncludeAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlReflectionImporterTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlRootAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlSchemaExporterTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlSchemaImporterTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlSchemasTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlSerializationReaderTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlSerializationWriterTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlSerializerImplementationTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlSerializerTestClasses.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlSerializerTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlTextAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.Serialization\XmlTypeAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml.XPath\SelectNodesTests.cs" />\r
-    <Compile Include="Test\System.Xml.XPath\XPathEditableNavigatorTests.cs" />\r
-    <Compile Include="Test\System.Xml.XPath\XPathExceptionCas.cs" />\r
-    <Compile Include="Test\System.Xml.XPath\XPathNavigatorCommonTests.cs" />\r
-    <Compile Include="Test\System.Xml.XPath\XPathNavigatorEvaluateTests.cs" />\r
-    <Compile Include="Test\System.Xml.XPath\XPathNavigatorMatchesTests.cs" />\r
-    <Compile Include="Test\System.Xml.XPath\XPathNavigatorReaderTests.cs" />\r
-    <Compile Include="Test\System.Xml.XPath\XPathNavigatorTests.cs" />\r
-    <Compile Include="Test\System.Xml.Xsl\MsxslScriptTests.cs" />\r
-    <Compile Include="Test\System.Xml.Xsl\XsltArgumentListCas.cs" />\r
-    <Compile Include="Test\System.Xml.Xsl\XsltCompileExceptionCas.cs" />\r
-    <Compile Include="Test\System.Xml.Xsl\XsltCompileExceptionTests.cs" />\r
-    <Compile Include="Test\System.Xml.Xsl\XsltExceptionCas.cs" />\r
-    <Compile Include="Test\System.Xml.Xsl\XsltExceptionTests.cs" />\r
-    <Compile Include="Test\System.Xml.Xsl\XslTransformTests.cs" />\r
-    <Compile Include="Test\System.Xml\NameTableTests.cs" />\r
-    <Compile Include="Test\System.Xml\nist_dom\fundamental\Attr\Attr.cs" />\r
-    <Compile Include="Test\System.Xml\nist_dom\fundamental\CharacterData\CharacterData.cs" />\r
-    <Compile Include="Test\System.Xml\nist_dom\fundamental\Comment\Comment.cs" />\r
-    <Compile Include="Test\System.Xml\nist_dom\fundamental\Document\Document.cs" />\r
-    <Compile Include="Test\System.Xml\nist_dom\fundamental\DOMImplementation\DOMImplementation.cs" />\r
-    <Compile Include="Test\System.Xml\nist_dom\fundamental\Element\Element.cs" />\r
-    <Compile Include="Test\System.Xml\nist_dom\fundamental\NamedNodeMap\NamedNodeMap.cs" />\r
-    <Compile Include="Test\System.Xml\nist_dom\fundamental\Node\Node.cs" />\r
-    <Compile Include="Test\System.Xml\nist_dom\fundamental\NodeList\NodeList.cs" />\r
-    <Compile Include="Test\System.Xml\nist_dom\fundamental\Text\Text.cs" />\r
-    <Compile Include="Test\System.Xml\nist_dom\ITest.cs" />\r
-    <Compile Include="Test\System.Xml\nist_dom\util.cs" />\r
-    <Compile Include="Test\System.Xml\XmlAssert.cs" />\r
-    <Compile Include="Test\System.Xml\XmlAttributeCollectionTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlAttributeTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlCDataSectionTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlCharacterDataTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlCommentTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlConvertTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDeclarationTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDefaultReader.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDocumentEventTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDocumentFragmentTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDocumentTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlDocumentTypeTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlElementTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlEntityReferenceTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlEntityTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlExceptionCas.cs" />\r
-    <Compile Include="Test\System.Xml\XmlNamespaceManagerTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlNodeListTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlNodeReaderTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlNodeTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlParserContextTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlProcessingInstructionTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlReaderCommonTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlReaderSettingsTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlResolverTest.cs" />\r
-    <Compile Include="Test\System.Xml\XmlSecureResolverCas.cs" />\r
-    <Compile Include="Test\System.Xml\XmlSecureResolverTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlSignificantWhitespaceTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlTextReaderTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlTextTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlTextWriterTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlUrlResolverTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlValidatingReaderTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlWhiteSpaceTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlWriterSettingsTests.cs" />\r
-    <Compile Include="Test\System.Xml\XmlWriterTests.cs" />\r
-    <Compile Include="Test\System.Xml\XsdParticleValidationTests.cs" />\r
-    <Compile Include="Test\System.Xml\XsdValidatingReaderTests.cs" />\r
-    <Compile Include="Mono.Xml.Xsl\PatternParser.cs" />\r
-    <Compile Include="Mono.Xml.Xsl\PatternTokenizer.cs" />\r
-    <Compile Include="System.Xml.XPath\Parser.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-$(ProjectDir)\..\..\..\mono\msvc\scripts\prepare.exe $(ProjectDir)..\.. xml\r
-$(ProjectDir)\..\..\jay\jay.exe -ct &lt; $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\System.Xml.XPath\Parser.jay > $(ProjectDir)\System.Xml.XPath\Parser.cs\r
-echo #define XSLT_PATTERN > $(ProjectDir)\Mono.Xml.Xsl\PatternParser.cs\r
-$(ProjectDir)\..\..\jay\jay.exe -ct &lt; $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Mono.Xml.Xsl\PatternParser.jay >> $(ProjectDir)\Mono.Xml.Xsl\PatternParser.cs\r
-echo #define XSLT_PATTERN > $(ProjectDir)\Mono.Xml.Xsl\PatternTokenizer.cs\r
-type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\PatternTokenizer.cs\r
-\r\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{0ADBE502-5524-4312-81B0-8456328C367C}</Project>\r
-      <Name>System.Data\System.Data-net_4_0</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 808fa1ace2823ced7f8d6f457b77a147170f417f..94dcc0285baf146428ccc8cb596d6777d8f015de 100644 (file)
@@ -121,7 +121,9 @@ namespace System.Xml.Xsl
 
                public void Transform (IXPathNavigable input, XsltArgumentList arguments, Stream results)
                {
-                       Transform (input.CreateNavigator (), arguments, results);
+                       using (var sw = new StreamWriter (results)) {
+                               Transform (input.CreateNavigator (), arguments, sw);
+                       }
                }
 
                public void Transform (IXPathNavigable input, XmlWriter results)
index 9e79aa64cda18dfdb6eddd9126224b35236a5649..267719b871e93571b74c4c277a04a15e98a32845 100644 (file)
@@ -2,6 +2,7 @@ Assembly/AssemblyInfo.cs
 ../../build/common/Consts.cs
 ../../build/common/SR.cs
 ReferenceSources/Res.cs
+ReferenceSources/LocalAppContextSwitches.cs
 ReferenceSources/ThisAssembly.cs
 ../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/GenerateHelper.cs
 ../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/IteratorDescriptor.cs
index aa333328d962b5cf0d7640c6500f03d266c21e83..3ed7fc3a0667034bde88251c40626829e935f05a 100644 (file)
@@ -168,5 +168,31 @@ xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl='urn:schemas-micros
                        // Returns true on .NET and False on mono 2.10.2
                        Assert.IsTrue (xslCompiledTransform.OutputSettings.Indent, "#1");
                }
+
+               [Test] // Bug 36436
+               public void TransformWithXmlDocument ()
+               {
+                       XmlDocument doc = new XmlDocument ();
+                       doc.LoadXml (@"<ROOT/>");
+                       XmlDocument st = new XmlDocument ();
+                       st.LoadXml (@"<?xml version=""1.0"" encoding=""utf-8""?>
+<xsl:stylesheet version=""1.0"" xmlns:vy=""Vineyard.Elements""
+    xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" xmlns:xlink=""http://www.w3.org/1999/xlink"" xmlns:user=""http://www.mydomain.com/mynamespace"">
+  <xsl:output method=""xml""/>
+
+  <xsl:param name=""os"" select=""ios""/>
+
+  <xsl:template match=""/ROOT"" >
+    <xsl:copy/>
+</xsl:template>
+</xsl:stylesheet>");
+                       XslCompiledTransform xsl = new XslCompiledTransform ();
+                       xsl.Load (st);
+
+                       XsltArgumentList args = new XsltArgumentList ();
+
+                       MemoryStream mstr = new MemoryStream ();
+                       xsl.Transform (doc, args, mstr);
+               }
        }
 }
index 249e726dc5ec8079a6c258a5c19a52394f0370b7..9306044810f02c3f1491fa556fd8b522c9813452 100644 (file)
@@ -1,9 +1,9 @@
 Assembly/AssemblyInfo.cs
 ../../build/common/Consts.cs
-../../build/common/Locale.cs
 ../../build/common/MonoTODOAttribute.cs
 ../../build/common/SR.cs
 ReferenceSources/Res.cs
+ReferenceSources/LocalAppContextSwitches.cs
 ReferenceSources/ThisAssembly.cs
 ReferenceSources/TypeScope.cs
 ReferenceSources/Wsdl.cs
@@ -108,7 +108,6 @@ ReferenceSources/CodeDom.cs
 ../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/XsltCompileContext.cs
 ../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/XsltDebugger.cs
 ../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/XsltOutput.cs
-../../../external/referencesource/System.Xml/InternalApis/NDP_Common/inc/Win8Helpers.cs
 ../../../external/referencesource/System.Xml/misc/HResults.cs
 ../../../external/referencesource/System.Xml/misc/InvariantComparer.cs
 ../../../external/referencesource/System.Xml/misc/PrivilegedConfigurationManager.cs
diff --git a/mcs/class/System.XML/monotouch_tv_runtime_System.Xml.dll.sources b/mcs/class/System.XML/monotouch_tv_runtime_System.Xml.dll.sources
new file mode 100644 (file)
index 0000000..b663093
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.Xml.dll.sources
diff --git a/mcs/class/System.XML/monotouch_watch_runtime_System.Xml.dll.sources b/mcs/class/System.XML/monotouch_watch_runtime_System.Xml.dll.sources
new file mode 100644 (file)
index 0000000..b663093
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.Xml.dll.sources
diff --git a/mcs/class/System.Xaml/System.Xaml-net_4_5.csproj b/mcs/class/System.Xaml/System.Xaml-net_4_5.csproj
deleted file mode 100644 (file)
index 61c63ae..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F574F9BD-1838-4C13-8722-7D6D33DE1781}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Xaml</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Windows.Markup\AmbientAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\ArrayExtension.cs" />\r
-    <Compile Include="System.Windows.Markup\ConstructorArgumentAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\ContentPropertyAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\ContentWrapperAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\DateTimeValueSerializer.cs" />\r
-    <Compile Include="System.Windows.Markup\DependsOnAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\DictionaryKeyPropertyAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\IComponentConnector.cs" />\r
-    <Compile Include="System.Windows.Markup\INameScope.cs" />\r
-    <Compile Include="System.Windows.Markup\INameScopeDictionary.cs" />\r
-    <Compile Include="System.Windows.Markup\IProvideValueTarget.cs" />\r
-    <Compile Include="System.Windows.Markup\IQueryAmbient.cs" />\r
-    <Compile Include="System.Windows.Markup\IUriContext.cs" />\r
-    <Compile Include="System.Windows.Markup\IValueSerializerContext.cs" />\r
-    <Compile Include="System.Windows.Markup\IXamlTypeResolver.cs" />\r
-    <Compile Include="System.Windows.Markup\MarkupExtension.cs" />\r
-    <Compile Include="System.Windows.Markup\MarkupExtensionReturnTypeAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\MemberDefinition.cs" />\r
-    <Compile Include="System.Windows.Markup\NameReferenceConverter.cs" />\r
-    <Compile Include="System.Windows.Markup\NameScopePropertyAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\NullExtension.cs" />\r
-    <Compile Include="System.Windows.Markup\PropertyDefinition.cs" />\r
-    <Compile Include="System.Windows.Markup\Reference.cs" />\r
-    <Compile Include="System.Windows.Markup\RootNamespaceAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\RuntimeNamePropertyAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\StaticExtension.cs" />\r
-    <Compile Include="System.Windows.Markup\StaticExtensionConverter.cs" />\r
-    <Compile Include="System.Windows.Markup\TrimSurroundingWhitespaceAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\TypeExtension.cs" />\r
-    <Compile Include="System.Windows.Markup\TypeExtensionConverter.cs" />\r
-    <Compile Include="System.Windows.Markup\UidPropertyAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\UsableDuringInitializationAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\ValueSerializer.cs" />\r
-    <Compile Include="System.Windows.Markup\WhitespaceSignificantCollectionAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\XamlDeferLoadAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\XamlSetMarkupExtensionAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\XamlSetMarkupExtensionEventArgs.cs" />\r
-    <Compile Include="System.Windows.Markup\XamlSetTypeConverterAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\XamlSetTypeConverterEventArgs.cs" />\r
-    <Compile Include="System.Windows.Markup\XamlSetValueEventArgs.cs" />\r
-    <Compile Include="System.Windows.Markup\XData.cs" />\r
-    <Compile Include="System.Windows.Markup\XmlLangPropertyAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\XmlnsCompatibleWithAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\XmlnsDefinitionAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\XmlnsPrefixAttribute.cs" />\r
-    <Compile Include="System.Xaml.Permissions\XamlAccessLevel.cs" />\r
-    <Compile Include="System.Xaml.Permissions\XamlLoadPermission.cs" />\r
-    <Compile Include="System.Xaml.Schema\AllowedMemberLocations.cs" />\r
-    <Compile Include="System.Xaml.Schema\ShouldSerializeResult.cs" />\r
-    <Compile Include="System.Xaml.Schema\XamlCollectionKind.cs" />\r
-    <Compile Include="System.Xaml.Schema\XamlMemberInvoker.cs" />\r
-    <Compile Include="System.Xaml.Schema\XamlTypeInvoker.cs" />\r
-    <Compile Include="System.Xaml.Schema\XamlTypeName.cs" />\r
-    <Compile Include="System.Xaml.Schema\XamlTypeTypeConverter.cs" />\r
-    <Compile Include="System.Xaml.Schema\XamlValueConverter.cs" />\r
-    <Compile Include="System.Xaml\AmbientPropertyValue.cs" />\r
-    <Compile Include="System.Xaml\AttachableMemberIdentifier.cs" />\r
-    <Compile Include="System.Xaml\AttachablePropertyServices.cs" />\r
-    <Compile Include="System.Xaml\IAmbientProvider.cs" />\r
-    <Compile Include="System.Xaml\IAttachedPropertyStore.cs" />\r
-    <Compile Include="System.Xaml\IDestinationTypeProvider.cs" />\r
-    <Compile Include="System.Xaml\INamespacePrefixLookup.cs" />\r
-    <Compile Include="System.Xaml\IRootObjectProvider.cs" />\r
-    <Compile Include="System.Xaml\IXamlIndexingReader.cs" />\r
-    <Compile Include="System.Xaml\IXamlLineInfo.cs" />\r
-    <Compile Include="System.Xaml\IXamlLineInfoConsumer.cs" />\r
-    <Compile Include="System.Xaml\IXamlNameProvider.cs" />\r
-    <Compile Include="System.Xaml\IXamlNameResolver.cs" />\r
-    <Compile Include="System.Xaml\IXamlNamespaceResolver.cs" />\r
-    <Compile Include="System.Xaml\IXamlObjectWriterFactory.cs" />\r
-    <Compile Include="System.Xaml\IXamlSchemaContextProvider.cs" />\r
-    <Compile Include="System.Xaml\NameScope.cs" />\r
-    <Compile Include="System.Xaml\NamespaceDeclaration.cs" />\r
-    <Compile Include="System.Xaml\ParsedMarkupExtensionInfo.cs" />\r
-    <Compile Include="System.Xaml\PrefixLookup.cs" />\r
-    <Compile Include="System.Xaml\TypeExtensionMethods.cs" />\r
-    <Compile Include="System.Xaml\ValueSerializerContext.cs" />\r
-    <Compile Include="System.Xaml\XamlBackgroundReader.cs" />\r
-    <Compile Include="System.Xaml\XamlDeferringLoader.cs" />\r
-    <Compile Include="System.Xaml\XamlDirective.cs" />\r
-    <Compile Include="System.Xaml\XamlDuplicateMemberException.cs" />\r
-    <Compile Include="System.Xaml\XamlException.cs" />\r
-    <Compile Include="System.Xaml\XamlInternalException.cs" />\r
-    <Compile Include="System.Xaml\XamlLanguage.cs" />\r
-    <Compile Include="System.Xaml\XamlMember.cs" />\r
-    <Compile Include="System.Xaml\XamlNameResolver.cs" />\r
-    <Compile Include="System.Xaml\XamlNode.cs" />\r
-    <Compile Include="System.Xaml\XamlNodeList.cs" />\r
-    <Compile Include="System.Xaml\XamlNodeQueue.cs" />\r
-    <Compile Include="System.Xaml\XamlNodeQueueReader.cs" />\r
-    <Compile Include="System.Xaml\XamlNodeQueueWriter.cs" />\r
-    <Compile Include="System.Xaml\XamlNodeType.cs" />\r
-    <Compile Include="System.Xaml\XamlObjectEventArgs.cs" />\r
-    <Compile Include="System.Xaml\XamlObjectNodeIterator.cs" />\r
-    <Compile Include="System.Xaml\XamlObjectReader.cs" />\r
-    <Compile Include="System.Xaml\XamlObjectReaderException.cs" />\r
-    <Compile Include="System.Xaml\XamlObjectReaderSettings.cs" />\r
-    <Compile Include="System.Xaml\XamlObjectWriter.cs" />\r
-    <Compile Include="System.Xaml\XamlObjectWriterException.cs" />\r
-    <Compile Include="System.Xaml\XamlObjectWriterSettings.cs" />\r
-    <Compile Include="System.Xaml\XamlParseException.cs" />\r
-    <Compile Include="System.Xaml\XamlReader.cs" />\r
-    <Compile Include="System.Xaml\XamlReaderSettings.cs" />\r
-    <Compile Include="System.Xaml\XamlSchemaContext.cs" />\r
-    <Compile Include="System.Xaml\XamlSchemaContextSettings.cs" />\r
-    <Compile Include="System.Xaml\XamlSchemaException.cs" />\r
-    <Compile Include="System.Xaml\XamlServices.cs" />\r
-    <Compile Include="System.Xaml\XamlSubtreeReader.cs" />\r
-    <Compile Include="System.Xaml\XamlType.cs" />\r
-    <Compile Include="System.Xaml\XamlWriter.cs" />\r
-    <Compile Include="System.Xaml\XamlWriterInternalBase.cs" />\r
-    <Compile Include="System.Xaml\XamlWriterSettings.cs" />\r
-    <Compile Include="System.Xaml\XamlWriterStateManager.cs" />\r
-    <Compile Include="System.Xaml\XamlXmlReader.cs" />\r
-    <Compile Include="System.Xaml\XamlXmlReaderSettings.cs" />\r
-    <Compile Include="System.Xaml\XamlXmlWriter.cs" />\r
-    <Compile Include="System.Xaml\XamlXmlWriterException.cs" />\r
-    <Compile Include="System.Xaml\XamlXmlWriterSettings.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Xaml/System.Xaml-tests-net_4_5.csproj b/mcs/class/System.Xaml/System.Xaml-tests-net_4_5.csproj
deleted file mode 100644 (file)
index e78a6bb..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FDA04C3E-7386-4F45-A7F2-C69DB33B72FF}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\System.Xaml-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Xaml_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Windows.Markup\ArrayExtensionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\ReferenceTest.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\StaticExtensionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\TypeExtensionConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\TypeExtensionTest.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\ValueSerializerTest.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\XDataTest.cs" />\r
-    <Compile Include="Test\System.Xaml.Schema\XamlMemberInvokerTest.cs" />\r
-    <Compile Include="Test\System.Xaml.Schema\XamlTypeInvokerTest.cs" />\r
-    <Compile Include="Test\System.Xaml.Schema\XamlTypeNameTest.cs" />\r
-    <Compile Include="Test\System.Xaml.Schema\XamlTypeTypeConverterTest.cs" />\r
-    <Compile Include="Test\System.Xaml.Schema\XamlValueConverterTest.cs" />\r
-    <Compile Include="Test\System.Xaml\AmbientPropertyValueTest.cs" />\r
-    <Compile Include="Test\System.Xaml\AttachableMemberIdentifierTest.cs" />\r
-    <Compile Include="Test\System.Xaml\AttachablePropertyServicesTest.cs" />\r
-    <Compile Include="Test\System.Xaml\DummyValueSerializerContext.cs" />\r
-    <Compile Include="Test\System.Xaml\NamespaceDeclarationTest.cs" />\r
-    <Compile Include="Test\System.Xaml\TestedTypes.cs" />\r
-    <Compile Include="Test\System.Xaml\ValueSerializerContextTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlBackgroundReaderTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlDirectiveTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlDuplicateMemberExceptionTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlLanguageTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlMemberTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlNodeQueueTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlObjectEventArgsTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlObjectReaderSettingsTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlObjectReaderTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlObjectWriterSettingsTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlObjectWriterTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlReaderSettingsTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlReaderTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlReaderTestBase.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlSchemaContextSettingsTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlSchemaContextTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlTypeTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlXmlReaderSettingsTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlXmlReaderTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlXmlWriterSettingsTest.cs" />\r
-    <Compile Include="Test\System.Xaml\XamlXmlWriterTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_5.csproj">\r
-      <Project>{F574F9BD-1838-4C13-8722-7D6D33DE1781}</Project>\r
-      <Name>System.Xaml\System.Xaml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Xml.Linq/System.Xml.Linq-net_4_5.csproj b/mcs/class/System.Xml.Linq/System.Xml.Linq-net_4_5.csproj
deleted file mode 100644 (file)
index 9a5bd93..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Xml.Linq</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml.Linq\System\Xml\Linq\XComponentModel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml.Linq\System\Xml\Linq\XLinq.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml.Linq\System\Xml\Linq\XNodeNavigator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System.Xml.Linq\System\Xml\Linq\XNodeValidator.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{08FF4C26-9C12-433D-AE90-43370046387A}</Project>\r
-      <Name>System.Runtime.Serialization-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/System.Xml.Linq/System.Xml.Linq-tests-net_4_5.csproj b/mcs/class/System.Xml.Linq/System.Xml.Linq-tests-net_4_5.csproj
deleted file mode 100644 (file)
index fa9c220..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{63E33F71-AF79-425B-A8C6-A99998A982AB}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <OutputPath>bin\Debug\System.Xml.Linq-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Xml.Linq_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,1720</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Xml.Linq\ExtensionsTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XAttributeTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XDocumentTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XElementTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XNamespaceTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XNameTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XNodeDocumentOrderComparerTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XNodeEqualityComparerTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XNodeNavigatorTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XNodeReaderTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XNodeWriterTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XObjectTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XProcessingInstructionTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XStreamingElementTest.cs" />\r
-    <Compile Include="Test\System.Xml.Linq\XTextTest.cs" />\r
-    <Compile Include="Test\System.Xml.Schema\ExtensionsTest.cs" />\r
-    <Compile Include="Test\System.Xml.XPath\ExtensionsTest.cs" />\r
-    <Compile Include="Test\System.Xml.XPath\ExtensionsTest2.cs" />\r
-    <Compile Include="Test\System.Xml.XPath\ExtensionsTest3.cs" />\r
-    <Compile Include="Test\System.Xml.XPath\ExtensionsTest4.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index 425ae96b5ec62651263d5cb743ff2c19128e6faf..b3a9d5d422bf83d60763664884e7fee59a1f8d5a 100644 (file)
@@ -37,7 +37,6 @@ namespace MonoTests.System.Xml.Linq
        [TestFixture]
        public class ExtensionsTest
        {
-/* It does not compile probably due to bug #359733.
                [Test]
                public void Remove ()
                {
@@ -45,7 +44,6 @@ namespace MonoTests.System.Xml.Linq
                        doc.Root.Nodes ().Remove<XNode> ();
                        Assert.IsNull (doc.Root.FirstNode, "#1");
                }
-*/
 
                [Test]
                public void InDocumentOrder ()
diff --git a/mcs/class/System.Xml.Serialization/System.Xml.Serialization-net_4_5.csproj b/mcs/class/System.Xml.Serialization/System.Xml.Serialization-net_4_5.csproj
deleted file mode 100644 (file)
index da5b194..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8888F00F-4ADC-4C1E-B542-7A8FA406CD98}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System.Xml.Serialization</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="AssemblyInfo.cs" />\r
-    <Compile Include="TypeForwarders.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.ServiceModel/System.ServiceModel-net_4_5.csproj">\r
-      <Project>{F2156C09-C377-4945-A690-39CFBF3319B3}</Project>\r
-      <Name>System.ServiceModel-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index bdaba29fd4813280ddd5566baa07f1faee85222a..4f0d50bf06504991c01ec1ac1abb9c8a538406f6 100644 (file)
@@ -77,3 +77,7 @@ using System.Runtime.InteropServices;
        [assembly: StringFreezing]
        [assembly: DefaultDependency (LoadHint.Always)]
 #endif
+
+       [assembly: InternalsVisibleTo ("Mono.Security.Providers.NewSystemSource, PublicKey=002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df")]
+       [assembly: InternalsVisibleTo ("Mono.Security.Providers.OldTls, PublicKey=002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df")]
+       [assembly: InternalsVisibleTo ("Mono.Security, PublicKey=002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df")]
index fd2611422255732b4805de94c92d1bae492192e3..9ab8e3c068f57165d7f7b075bf501a692085eee7 100644 (file)
@@ -1036,9 +1036,10 @@ public class CreateDefaultExample
       <Parameters />
       <Docs>
         <remarks>
-          <attribution license="cc4" from="Microsoft" modified="false" />
-          <para>
-            <see cref="M:System.Net.WebRequest.GetSystemWebProxy" /> method reads the current user's Internet Explorer (IE) proxy settings. This process includes the IE options to automatically detect proxy settings, use an automatic configuration script, manual proxy server settings, and advanced manual proxy server settings.</para>
+          <attribution license="cc4" from="Microsoft" modified="true" />
+          <para><see cref="M:System.Net.WebRequest.GetSystemWebProxy" /> creates an appropriate proxy object for the current user.</para>
+          <para>On Windows, the method reads the current user's Internet Explorer (IE) proxy settings. The settings supported on Mono are proxy enabled, proxy URL, and proxy excluded domains.</para>
+          <para>On UNIX-like systems (but not including Mac OS, iOS, or Android), the method reads the environment variables "MONO_PROXY" (or "mono_proxy") and "NO_PROXY" (or "no_proxy"). See the mono man page for more information.</para>
           <para>If your application is impersonating several users, you can use the <see cref="M:System.Net.WebRequest.GetSystemWebProxy" /> method to retrieve a proxy for each impersonated user.</para>
         </remarks>
         <summary>
index 1ca4d6fe4ba85263f56fce29658e45481d8dad43..0aff7f512b538767fdc6eaad07cbaef751a604cb 100644 (file)
@@ -4,7 +4,7 @@
     <remarks>To be added.</remarks>
     <summary>
       <attribution license="cc4" from="Microsoft" modified="false" />
-      <para>The <see cref="N:System.Security.Cryptography" /> namespace provides cryptographic services, including secure encoding and decoding of data, as well as many other operations, such as hashing, random number generation, and message authentication. For more information, see <format type="text/html"><a href="f96284bc-7b73-44b5-ac59-fac613ad09f8">Cryptographic Services</a></format>.</para>
+      <para>The <see cref="N:System.Security.Cryptography" /> namespace provides cryptographic services, including secure encoding and decoding of data, as well as many other operations, such as hashing, random number generation, and message authentication. For more information, see <format type="text/html"><a href="https://msdn.microsoft.com/en-us/library/92f9ye3s(v=vs.110).aspx">Cryptographic Services</a></format>.</para>
     </summary>
   </Docs>
 </Namespace>
\ No newline at end of file
index d5e25bf7f34545092d4ef5e82c04bd4d15cf54e5..9fcb2397d1c8762755e10b5f7c6c07ae8427bf43 100644 (file)
@@ -23,26 +23,33 @@ TEST_MCS_FLAGS = -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:Sy
        $(foreach f, $(TEST_RESOURCES), -resource:$(f),$(notdir $(f)))
 
 REFERENCE_SOURCES_FLAGS = -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX
+ifndef NO_PROCESS_START
+REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_PROCESS_START
+TEST_MCS_FLAGS += -d:MONO_FEATURE_PROCESS_START
+endif
+
 LIB_MCS_FLAGS = -nowarn:618 -d:CONFIGURATION_2_0 $(REFERENCE_SOURCES_FLAGS) -unsafe $(RESOURCE_FILES:%=-resource:%)
 TEST_MCS_FLAGS += -r:System.Configuration
 
-RESOURCE_STRINGS = ../../../external/referencesource/System/System.txt
+ifndef NO_THREAD_ABORT
+REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_THREAD_ABORT
+TEST_MCS_FLAGS += -d:MONO_FEATURE_THREAD_ABORT
+endif
 
-ifeq (2.1, $(FRAMEWORK_VERSION))
-LIB_MCS_FLAGS += -d:INSIDE_SYSTEM
+ifndef NO_THREAD_SUSPEND_RESUME
+REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_THREAD_SUSPEND_RESUME
+TEST_MCS_FLAGS += -d:MONO_FEATURE_THREAD_SUSPEND_RESUME
 endif
 
+RESOURCE_STRINGS = ../../../external/referencesource/System/System.txt
+
 #
-# MOBILE_PROFILE needs SECURITY_DEP, except for XAMMAC
+# MOBILE_PROFILE needs SECURITY_DEP
 #
 ifdef MOBILE_PROFILE
-ifneq ($(PROFILE),xammac)
-LIB_MCS_FLAGS += -d:SECURITY_DEP
-endif
-endif
-
-
-ifndef MOBILE_PROFILE
+LIB_MCS_FLAGS += -d:INSIDE_SYSTEM -d:SECURITY_DEP
+else
+EXTERN_ALIAS_FLAGS = -d:MONO_SECURITY_ALIAS -d:MONO_X509_ALIAS
 FINAL_MCS_FLAGS = -r:System.Configuration.dll -d:CONFIGURATION_DEP
 endif
 
@@ -52,7 +59,7 @@ endif
 ifeq (secxml/, $(intermediate))
 LOCAL_MCS_FLAGS = -lib:$(bare_libdir) 
 LIB_REFS += System.Xml MonoSecurity=Mono.Security
-LIB_MCS_FLAGS += -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=$(bare_libdir)/System.dll
+LIB_MCS_FLAGS += -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=$(bare_libdir)/System.dll $(EXTERN_ALIAS_FLAGS)
 endif
 
 #
@@ -60,7 +67,7 @@ endif
 #
 ifndef intermediate
 LIB_REFS += System.Xml MonoSecurity=Mono.Security
-LIB_MCS_FLAGS += -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=$(secxml_libdir)/System.dll $(FINAL_MCS_FLAGS)
+LIB_MCS_FLAGS += -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=$(secxml_libdir)/System.dll $(EXTERN_ALIAS_FLAGS) $(FINAL_MCS_FLAGS)
 endif
 
 EXTRA_DISTFILES = \
@@ -92,7 +99,7 @@ artifacts = $(system_library_deps)                    \
 
 .NOTPARALLEL: $(system_library_deps)
 
-$(the_libdir_base)System.dll: $(system_library_deps) 
+$(the_libdir_base)System.dll: $(system_library_deps) ../Mono.Security/Makefile
 
 ifeq (bare/,$(intermediate))
 build-bare:
@@ -114,7 +121,7 @@ $(the_libdir_base)System.Xml.dll:
 $(bare_libdir)/System.Xml.dll:
        (cd ../System.XML; $(MAKE) $@)
 
-$(the_libdir_base)Mono.Security.dll:
+$(the_libdir_base)Mono.Security.dll: ../Mono.Security/Makefile
        (cd ../Mono.Security; $(MAKE))
 
 $(the_libdir_base)System.Configuration.dll:
index 5c389a0ea7bbf77b007cd2f1ee498a5ac5f02958..271f500772b62c5e3a254878aa65b8479346e8cf 100644 (file)
@@ -387,6 +387,12 @@ namespace Mono.CSharp
                        \s*
                        (?<message>.*)$";
 
+               static readonly Regex RelatedSymbolsRegex = new Regex(
+                       @"
+            \(Location\ of\ the\ symbol\ related\ to\ previous\ (warning|error)\)
+                       ",
+                       RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.IgnorePatternWhitespace);
+
                private static CompilerError CreateErrorFromString(string error_string)
                {
                        if (error_string.StartsWith ("BETA"))
@@ -399,11 +405,17 @@ namespace Mono.CSharp
                        Regex reg = new Regex (ErrorRegexPattern, RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.IgnorePatternWhitespace);
                        Match match=reg.Match(error_string);
                        if (!match.Success) {
-                               // We had some sort of runtime crash
-                               error.ErrorText = error_string;
-                               error.IsWarning = false;
-                               error.ErrorNumber = "";
-                               return error;
+                               match = RelatedSymbolsRegex.Match (error_string);
+                               if (!match.Success) {
+                                       // We had some sort of runtime crash
+                                       error.ErrorText = error_string;
+                                       error.IsWarning = false;
+                                       error.ErrorNumber = "";
+                                       return error;
+                               } else {
+                                       // This line is a continuation of previous warning of error
+                                       return null;
+                               }
                        }
                        if (String.Empty != match.Result("${file}"))
                                error.FileName=match.Result("${file}");
index 54e85db013edb1ab9dc4d3c2fa9ebb1a8b601a2c..00036654b1cca414fea382dcc02d652b84d1a62d 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security.Protocol.Ntlm;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
 using MonoSecurity::Mono.Security.Protocol.Ntlm;
+#else
+using Mono.Security.Protocol.Ntlm;
 #endif
 
 using System;
 using System.Collections;
 using System.Net;
+using System.Runtime.CompilerServices;
 
 namespace Mono.Http
 {
@@ -122,14 +123,8 @@ namespace Mono.Http
 
        class NtlmClient : IAuthenticationModule
        {
-               static Hashtable cache;
-
-               static NtlmClient () 
-               {
-                       cache = new Hashtable ();
-               }
-       
-               public NtlmClient () {}
+               static readonly ConditionalWeakTable<HttpWebRequest, NtlmSession> cache =
+                       new ConditionalWeakTable<HttpWebRequest, NtlmSession> ();
        
                public Authorization Authenticate (string challenge, WebRequest webRequest, ICredentials credentials) 
                {
@@ -153,12 +148,7 @@ namespace Mono.Http
                                return null;
 
                        lock (cache) {
-                               NtlmSession ds = (NtlmSession) cache [request];
-                               if (ds == null) {
-                                       ds = new NtlmSession ();
-                                       cache.Add (request, ds);
-                               }
-
+                               var ds = cache.GetOrCreateValue (request);
                                return ds.Authenticate (header, webRequest, credentials);
                        }
                }
diff --git a/mcs/class/System/Mono.Net.Security/CallbackHelpers.cs b/mcs/class/System/Mono.Net.Security/CallbackHelpers.cs
new file mode 100644 (file)
index 0000000..6ae2b9f
--- /dev/null
@@ -0,0 +1,137 @@
+//
+// CallbackHelpers.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if SECURITY_DEP
+
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MSI = MonoSecurity::Mono.Security.Interface;
+#else
+using MSI = Mono.Security.Interface;
+#endif
+#if MONO_X509_ALIAS
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+using XX509Chain = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509Chain;
+#else
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+using XX509Chain = System.Security.Cryptography.X509Certificates.X509Chain;
+#endif
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Security.Cryptography.X509Certificates;
+
+namespace Mono.Net.Security.Private
+{
+       /*
+        * Strictly private - do not use outside the Mono.Net.Security directory.
+        */
+       static class CallbackHelpers
+       {
+               internal static MSI.MonoRemoteCertificateValidationCallback PublicToMono (RemoteCertificateValidationCallback callback)
+               {
+                       if (callback == null)
+                               return null;
+
+                       return (h, c, ch, e) => callback (h, c, (X509Chain)(object)ch, (SslPolicyErrors)e);
+               }
+
+               internal static MSI.MonoLocalCertificateSelectionCallback PublicToMono (LocalCertificateSelectionCallback callback)
+               {
+                       if (callback == null)
+                               return null;
+
+                       return (t, lc, rc, ai) => callback (null, t, (XX509CertificateCollection)(object)lc, rc, ai);
+               }
+
+               internal static MSI.MonoRemoteCertificateValidationCallback InternalToMono (RemoteCertValidationCallback callback)
+               {
+                       if (callback == null)
+                               return null;
+
+                       return (h, c, ch, e) => callback (h, c, (X509Chain)(object)ch, (SslPolicyErrors)e);
+               }
+
+               internal static RemoteCertificateValidationCallback InternalToPublic (string hostname, RemoteCertValidationCallback callback)
+               {
+                       if (callback == null)
+                               return null;
+
+                       return (s, c, ch, e) => callback (hostname, c, ch, e);
+               }
+
+               internal static MSI.MonoLocalCertificateSelectionCallback InternalToMono (LocalCertSelectionCallback callback)
+               {
+                       if (callback == null)
+                               return null;
+
+                       return (t, lc, rc, ai) => callback (t, (XX509CertificateCollection)(object)lc, rc, ai);
+               }
+
+               internal static RemoteCertificateValidationCallback MonoToPublic (MSI.MonoRemoteCertificateValidationCallback callback)
+               {
+                       if (callback == null)
+                               return null;
+
+                       return (t, c, ch, e) => callback (null, c, (XX509Chain)(object)ch, (MSI.MonoSslPolicyErrors)e);
+               }
+
+               internal static LocalCertificateSelectionCallback MonoToPublic (MSI.MonoLocalCertificateSelectionCallback callback)
+               {
+                       if (callback == null)
+                               return null;
+
+                       return (s, t, lc, rc, ai) => callback (t, (XX509CertificateCollection)(object)lc, rc, ai);
+               }
+
+               internal static RemoteCertValidationCallback MonoToInternal (MSI.MonoRemoteCertificateValidationCallback callback)
+               {
+                       if (callback == null)
+                               return null;
+
+                       return (h, c, ch, e) => callback (h, c, (XX509Chain)(object)ch, (MSI.MonoSslPolicyErrors)e);
+               }
+
+               internal static LocalCertSelectionCallback MonoToInternal (MSI.MonoLocalCertificateSelectionCallback callback)
+               {
+                       if (callback == null)
+                               return null;
+
+                       return (t, lc, rc, ai) => callback (t, (XX509CertificateCollection)(object)lc, rc, ai);
+               }
+
+       }
+}
+
+#endif
diff --git a/mcs/class/System/Mono.Net.Security/ChainValidationHelper.cs b/mcs/class/System/Mono.Net.Security/ChainValidationHelper.cs
new file mode 100644 (file)
index 0000000..224c4e3
--- /dev/null
@@ -0,0 +1,344 @@
+//
+// System.Net.ServicePointManager
+//
+// Authors:
+//   Lawrence Pit (loz@cable.a2000.nl)
+//   Gonzalo Paniagua Javier (gonzalo@novell.com)
+//
+// Copyright (c) 2003-2010 Novell, Inc (http://www.novell.com)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if SECURITY_DEP
+
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MonoSecurity::Mono.Security.Interface;
+using MSX = MonoSecurity::Mono.Security.X509;
+using MonoSecurity::Mono.Security.X509.Extensions;
+#else
+using Mono.Security.Interface;
+using MSX = Mono.Security.X509;
+using Mono.Security.X509.Extensions;
+#endif
+#if MONO_X509_ALIAS
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+using XX509Chain = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509Chain;
+#else
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+using XX509Chain = System.Security.Cryptography.X509Certificates.X509Chain;
+#endif
+
+using System;
+using System.Net;
+using System.Threading;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+using System.Configuration;
+using System.Net.Configuration;
+using System.Text.RegularExpressions;
+using System.Security.Cryptography.X509Certificates;
+
+using System.Globalization;
+using System.Net.Security;
+using System.Diagnostics;
+
+namespace Mono.Net.Security
+{
+       internal delegate bool ServerCertValidationCallbackWrapper (ServerCertValidationCallback callback, X509Certificate certificate, X509Chain chain, MonoSslPolicyErrors sslPolicyErrors);
+
+       internal class ChainValidationHelper : ICertificateValidator
+       {
+               readonly object sender;
+               readonly MonoTlsSettings settings;
+               readonly MonoTlsProvider provider;
+               readonly ServerCertValidationCallback certValidationCallback;
+               readonly LocalCertSelectionCallback certSelectionCallback;
+               readonly ServerCertValidationCallbackWrapper callbackWrapper;
+               readonly MonoTlsStream tlsStream;
+               readonly HttpWebRequest request;
+
+               internal static ICertificateValidator GetDefaultValidator (MonoTlsProvider provider, MonoTlsSettings settings)
+               {
+                       if (settings == null)
+                               return new ChainValidationHelper (provider, null, false, null, null);
+                       if (settings.CertificateValidator != null)
+                               return settings.CertificateValidator;
+                       return new ChainValidationHelper (provider, settings, false, null, null);
+               }
+
+#region SslStream support
+
+               /*
+                * This is a hack which is used in SslStream - see ReferenceSources/SslStream.cs for details.
+                */
+               internal static ChainValidationHelper CloneWithCallbackWrapper (MonoTlsProvider provider, ref MonoTlsSettings settings, ServerCertValidationCallbackWrapper wrapper)
+               {
+                       var helper = (ChainValidationHelper)settings.CertificateValidator;
+                       if (helper == null)
+                               helper = new ChainValidationHelper (provider, settings, true, null, wrapper);
+                       else
+                               helper = new ChainValidationHelper (helper, provider, settings, wrapper);
+                       settings = helper.settings;
+                       return helper;
+               }
+
+               internal static bool InvokeCallback (ServerCertValidationCallback callback, object sender, X509Certificate certificate, X509Chain chain, MonoSslPolicyErrors sslPolicyErrors)
+               {
+                       return callback.Invoke (sender, certificate, chain, (SslPolicyErrors)sslPolicyErrors);
+               }
+
+#endregion
+
+               ChainValidationHelper (ChainValidationHelper other, MonoTlsProvider provider, MonoTlsSettings settings, ServerCertValidationCallbackWrapper callbackWrapper = null)
+               {
+                       sender = other.sender;
+                       certValidationCallback = other.certValidationCallback;
+                       certSelectionCallback = other.certSelectionCallback;
+                       tlsStream = other.tlsStream;
+                       request = other.request;
+
+                       if (settings == null)
+                               settings = MonoTlsSettings.DefaultSettings;
+
+                       this.provider = provider;
+                       this.settings = settings.CloneWithValidator (this);
+                       this.callbackWrapper = callbackWrapper;
+               }
+
+               internal static ChainValidationHelper Create (MonoTlsProvider provider, ref MonoTlsSettings settings, MonoTlsStream stream)
+               {
+                       var helper = new ChainValidationHelper (provider, settings, true, stream, null);
+                       settings = helper.settings;
+                       return helper;
+               }
+
+               ChainValidationHelper (MonoTlsProvider provider, MonoTlsSettings settings, bool cloneSettings, MonoTlsStream stream, ServerCertValidationCallbackWrapper callbackWrapper)
+               {
+                       if (settings == null)
+                               settings = MonoTlsSettings.CopyDefaultSettings ();
+                       if (cloneSettings)
+                               settings = settings.CloneWithValidator (this);
+
+                       this.provider = provider;
+                       this.settings = settings;
+                       this.tlsStream = stream;
+                       this.callbackWrapper = callbackWrapper;
+
+                       var fallbackToSPM = false;
+
+                       if (settings != null) {
+                               if (settings.RemoteCertificateValidationCallback != null) {
+                                       var callback = Private.CallbackHelpers.MonoToPublic (settings.RemoteCertificateValidationCallback);
+                                       certValidationCallback = new ServerCertValidationCallback (callback);
+                               }
+                               certSelectionCallback = Private.CallbackHelpers.MonoToInternal (settings.ClientCertificateSelectionCallback);
+                               fallbackToSPM = settings.UseServicePointManagerCallback;
+                       }
+
+                       if (stream != null) {
+                               this.request = stream.Request;
+                               this.sender = request;
+
+                               if (certValidationCallback == null)
+                                       certValidationCallback = request.ServerCertValidationCallback;
+                               if (certSelectionCallback == null)
+                                       certSelectionCallback = new LocalCertSelectionCallback (DefaultSelectionCallback);
+
+                               if (settings == null)
+                                       fallbackToSPM = true;
+                       }
+
+                       if (fallbackToSPM && certValidationCallback == null)
+                               certValidationCallback = ServicePointManager.ServerCertValidationCallback;
+               }
+
+               static X509Certificate DefaultSelectionCallback (string targetHost, XX509CertificateCollection localCertificates, X509Certificate remoteCertificate, string[] acceptableIssuers)
+               {
+                       X509Certificate clientCertificate;
+                       if (localCertificates == null || localCertificates.Count == 0)
+                               clientCertificate = null;
+                       else
+                               clientCertificate = localCertificates [0];
+                       return clientCertificate;
+               }
+
+               public MonoTlsProvider Provider {
+                       get { return provider; }
+               }
+
+               public MonoTlsSettings Settings {
+                       get { return settings; }
+               }
+
+               public bool HasCertificateSelectionCallback {
+                       get { return certSelectionCallback != null; }
+               }
+
+               public bool SelectClientCertificate (
+                       string targetHost, XX509CertificateCollection localCertificates, X509Certificate remoteCertificate,
+                       string[] acceptableIssuers, out X509Certificate clientCertificate)
+               {
+                       if (certSelectionCallback == null) {
+                               clientCertificate = null;
+                               return false;
+                       }
+                       clientCertificate = certSelectionCallback (targetHost, localCertificates, remoteCertificate, acceptableIssuers);
+                       return true;
+               }
+
+               internal X509Certificate SelectClientCertificate (
+                       string targetHost, XX509CertificateCollection localCertificates, X509Certificate remoteCertificate,
+                       string[] acceptableIssuers)
+               {
+                       if (certSelectionCallback == null)
+                               return null;
+                       return certSelectionCallback (targetHost, localCertificates, remoteCertificate, acceptableIssuers);
+               }
+
+               internal bool ValidateClientCertificate (X509Certificate certificate, MonoSslPolicyErrors errors)
+               {
+                       var certs = new XX509CertificateCollection ();
+                       certs.Add (new X509Certificate2 (certificate.GetRawCertData ()));
+
+                       var result = ValidateChain (string.Empty, true, certs, (SslPolicyErrors)errors);
+                       if (result == null)
+                               return false;
+
+                       return result.Trusted && !result.UserDenied;
+               }
+
+               public ValidationResult ValidateCertificate (string host, bool serverMode, XX509CertificateCollection certs)
+               {
+                       try {
+                               var result = ValidateChain (host, serverMode, certs, 0);
+                               if (tlsStream != null)
+                                       tlsStream.CertificateValidationFailed = result == null || !result.Trusted || result.UserDenied;
+                               return result;
+                       } catch {
+                               if (tlsStream != null)
+                                       tlsStream.CertificateValidationFailed = true;
+                               throw;
+                       }
+               }
+
+               ValidationResult ValidateChain (string host, bool server, XX509CertificateCollection certs, SslPolicyErrors errors)
+               {
+                       // user_denied is true if the user callback is called and returns false
+                       bool user_denied = false;
+                       bool result = false;
+
+                       var hasCallback = certValidationCallback != null || callbackWrapper != null;
+
+                       X509Certificate leaf;
+                       if (certs == null || certs.Count == 0)
+                               leaf = null;
+                       else
+                               leaf = certs [0];
+
+                       if (tlsStream != null)
+                               request.ServicePoint.SetServerCertificate (leaf);
+
+                       if (leaf == null) {
+                               errors |= SslPolicyErrors.RemoteCertificateNotAvailable;
+                               if (hasCallback) {
+                                       if (callbackWrapper != null)
+                                               result = callbackWrapper.Invoke (certValidationCallback, leaf, null, (MonoSslPolicyErrors)errors);
+                                       else
+                                               result = certValidationCallback.Invoke (sender, leaf, null, errors);
+                                       user_denied = !result;
+                               }
+                               return new ValidationResult (result, user_denied, 0, (MonoSslPolicyErrors)errors);
+                       }
+
+                       ICertificatePolicy policy = ServicePointManager.GetLegacyCertificatePolicy ();
+
+                       int status11 = 0; // Error code passed to the obsolete ICertificatePolicy callback
+                       X509Chain chain = null;
+
+                       bool wantsChain = SystemCertificateValidator.NeedsChain (settings);
+                       if (!wantsChain && hasCallback) {
+                               if (settings == null || settings.CallbackNeedsCertificateChain)
+                                       wantsChain = true;
+                       }
+
+                       if (wantsChain)
+                               chain = SystemCertificateValidator.CreateX509Chain (certs);
+
+                       if (wantsChain || SystemCertificateValidator.NeedsChain (settings))
+                               SystemCertificateValidator.BuildX509Chain (certs, chain, ref errors, ref status11);
+
+                       bool providerValidated = false;
+                       if (provider != null && provider.HasCustomSystemCertificateValidator) {
+                               var xerrors = (MonoSslPolicyErrors)errors;
+                               var xchain = (XX509Chain)(object)chain;
+                               providerValidated = provider.InvokeSystemCertificateValidator (this, host, server, certs, xchain, out result, ref xerrors, ref status11);
+                               errors = (SslPolicyErrors)xerrors;
+                       }
+
+                       if (!providerValidated)
+                               result = SystemCertificateValidator.Evaluate (settings, host, certs, chain, ref errors, ref status11);
+
+                       if (policy != null && (!(policy is DefaultCertificatePolicy) || certValidationCallback == null)) {
+                               ServicePoint sp = null;
+                               if (request != null)
+                                       sp = request.ServicePointNoLock;
+                               if (status11 == 0 && errors != 0) {
+                                       // TRUST_E_FAIL
+                                       status11 = unchecked ((int)0x800B010B);
+                               }
+
+                               // pre 2.0 callback
+                               result = policy.CheckValidationResult (sp, leaf, request, status11);
+                               user_denied = !result && !(policy is DefaultCertificatePolicy);
+                       }
+                       // If there's a 2.0 callback, it takes precedence
+                       if (hasCallback) {
+                               if (callbackWrapper != null)
+                                       result = callbackWrapper.Invoke (certValidationCallback, leaf, chain, (MonoSslPolicyErrors)errors);
+                               else
+                                       result = certValidationCallback.Invoke (sender, leaf, chain, errors);
+                               user_denied = !result;
+                       }
+                       return new ValidationResult (result, user_denied, status11, (MonoSslPolicyErrors)errors);
+               }
+
+               public bool InvokeSystemValidator (string targetHost, bool serverMode, XX509CertificateCollection certificates, XX509Chain xchain, ref MonoSslPolicyErrors xerrors, ref int status11)
+               {
+                       X509Chain chain = (X509Chain)(object)xchain;
+                       var errors = (SslPolicyErrors)xerrors;
+                       var result = SystemCertificateValidator.Evaluate (settings, targetHost, certificates, chain, ref errors, ref status11);
+                       xerrors = (MonoSslPolicyErrors)errors;
+                       return result;
+               }
+       }
+}
+#endif
+
diff --git a/mcs/class/System/Mono.Net.Security/IMonoSslStream.cs b/mcs/class/System/Mono.Net.Security/IMonoSslStream.cs
new file mode 100644 (file)
index 0000000..50193cc
--- /dev/null
@@ -0,0 +1,239 @@
+//
+// IMonoSslStream.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if SECURITY_DEP
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+
+#if MONO_X509_ALIAS
+using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
+#if MONO_SECURITY_ALIAS
+using MSI = MonoSecurity::Mono.Security.Interface;
+#else
+using MSI = Mono.Security.Interface;
+#endif
+#endif
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Threading.Tasks;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.Security.Cryptography;
+
+namespace Mono.Net.Security
+{
+       interface IMonoSslStream : IDisposable
+       {
+               AuthenticatedStream AuthenticatedStream {
+                       get;
+               }
+
+               void AuthenticateAsClient (string targetHost);
+
+               void AuthenticateAsClient (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation);
+
+               IAsyncResult BeginAuthenticateAsClient (string targetHost, AsyncCallback asyncCallback, object asyncState);
+
+               IAsyncResult BeginAuthenticateAsClient (string targetHost, X509CertificateCollection clientCertificates,
+                                                       SslProtocols enabledSslProtocols, bool checkCertificateRevocation,
+                                                       AsyncCallback asyncCallback, object asyncState);
+
+               void EndAuthenticateAsClient (IAsyncResult asyncResult);
+
+               void AuthenticateAsServer (X509Certificate serverCertificate);
+
+               void AuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired,
+                                         SslProtocols enabledSslProtocols, bool checkCertificateRevocation);
+
+               IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, AsyncCallback asyncCallback, object asyncState);
+
+               IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired,
+                                                       SslProtocols enabledSslProtocols, bool checkCertificateRevocation,
+                                                       AsyncCallback asyncCallback,
+                                                       object asyncState);
+
+               void EndAuthenticateAsServer (IAsyncResult asyncResult);
+
+               TransportContext TransportContext {
+                       get;
+               }
+
+               Task AuthenticateAsClientAsync (string targetHost);
+
+               Task AuthenticateAsClientAsync (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation);
+
+               Task AuthenticateAsServerAsync (X509Certificate serverCertificate);
+
+               Task AuthenticateAsServerAsync (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation);
+
+               //
+               //
+               // Base class properties
+               //
+               bool IsAuthenticated {
+                       get;
+               }
+
+               bool IsMutuallyAuthenticated {
+                       get;
+               }
+
+               bool IsEncrypted {
+                       get;
+               }
+
+               bool IsSigned {
+                       get;
+               }
+
+               bool IsServer {
+                       get;
+               }
+
+               //
+               //
+               //SSL specific properties
+               //
+               //
+               SslProtocols SslProtocol {
+                       get;
+               }
+
+               bool CheckCertRevocationStatus {
+                       get;
+               }
+
+               X509Certificate InternalLocalCertificate {
+                       get;
+               }
+
+               X509Certificate LocalCertificate {
+                       get;
+               }
+
+               X509Certificate RemoteCertificate {
+                       get;
+               }
+
+               //
+               // More informational properties
+               //
+               CipherAlgorithmType CipherAlgorithm {
+                       get;
+               }
+
+               int CipherStrength {
+                       get;
+               }
+
+               HashAlgorithmType HashAlgorithm {
+                       get;
+               }
+
+               int HashStrength {
+                       get;
+               }
+
+               ExchangeAlgorithmType KeyExchangeAlgorithm {
+                       get;
+               }
+
+               int KeyExchangeStrength {
+                       get;
+               }
+
+               //
+               //
+               // Stream contract implementation
+               //
+               //
+               //
+               bool CanRead {
+                       get;
+               }
+
+               bool CanTimeout {
+                       get;
+               }
+
+               bool CanWrite {
+                       get;
+               }
+
+               int ReadTimeout {
+                       get;
+                       set;
+               }
+
+               int WriteTimeout {
+                       get;
+                       set;
+               }
+
+               long Length {
+                       get;
+               }
+
+               long Position {
+                       get;
+               }
+
+               void SetLength (long value);
+
+               void Flush ();
+
+               int Read (byte[] buffer, int offset, int count);
+
+               void Write (byte[] buffer);
+
+               void Write (byte[] buffer, int offset, int count);
+
+               IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState);
+
+               int EndRead (IAsyncResult asyncResult);
+
+               IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState);
+
+               void EndWrite (IAsyncResult asyncResult);
+
+#if SECURITY_DEP
+               MSI.MonoTlsProvider Provider {
+                       get;
+               }
+
+               MSI.MonoTlsConnectionInfo GetConnectionInfo ();
+#endif
+       }
+}
diff --git a/mcs/class/System/Mono.Net.Security/IMonoTlsProvider.cs b/mcs/class/System/Mono.Net.Security/IMonoTlsProvider.cs
new file mode 100644 (file)
index 0000000..478ed58
--- /dev/null
@@ -0,0 +1,88 @@
+//
+// IMonoTlsProvider.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MonoSecurity::Mono.Security.Interface;
+#else
+using Mono.Security.Interface;
+#endif
+#if MONO_X509_ALIAS
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#else
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
+#endif
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Security.Cryptography.X509Certificates;
+
+namespace Mono.Net.Security
+{
+       /*
+        * For consumption within System.dll only - do not access from friend assemblies.
+        * 
+        * Unfortunately, there's some compiler madness involved when using Mono.Security.dll
+        * APIs from within System.dll because the compiler perceives those types which come
+        * from the prebuilt version of System.dll being different from those it's currently
+        * compiling.  At runtime, there is only one single System.dll, so these all map to
+        * the same actual type.
+        * 
+        * This internal interface helps to keep all this compilation stuff contained within
+        * the 'Mono.Net.Security.Private' namespace - this namespace should be considered
+        * strictly private and must not be accessed from files outside the Mono.Net.Security
+        * directory.
+        * 
+        */
+       interface IMonoTlsProvider
+       {
+#if SECURITY_DEP
+               MonoTlsProvider Provider {
+                       get;
+               }
+
+               IMonoSslStream CreateSslStream (
+                       Stream innerStream, bool leaveInnerStreamOpen,
+                       MonoTlsSettings settings);
+
+               IMonoTlsContext CreateTlsContext (
+                       string hostname, bool serverMode, TlsProtocols protocolFlags,
+                       X509Certificate serverCertificate, XX509CertificateCollection clientCertificates,
+                       bool remoteCertRequired, bool checkCertName, bool checkCertRevocationStatus,
+                       MonoEncryptionPolicy encryptionPolicy, MonoTlsSettings settings);
+#endif
+       }
+}
diff --git a/mcs/class/System/Mono.Net.Security/LegacySslStream.cs b/mcs/class/System/Mono.Net.Security/LegacySslStream.cs
new file mode 100644 (file)
index 0000000..ab0bc51
--- /dev/null
@@ -0,0 +1,603 @@
+//
+// System.Net.Security.SslStream.cs
+//
+// Authors:
+//     Tim Coleman (tim@timcoleman.com)
+//     Atsushi Enomoto (atsushi@ximian.com)
+//     Marek Safar (marek.safar@gmail.com)
+//
+// Copyright (C) Tim Coleman, 2004
+// (c) 2004,2007 Novell, Inc. (http://www.novell.com)
+// Copyright 2011 Xamarin Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if SECURITY_DEP
+
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MonoCipherAlgorithmType = MonoSecurity::Mono.Security.Protocol.Tls.CipherAlgorithmType;
+using MonoHashAlgorithmType = MonoSecurity::Mono.Security.Protocol.Tls.HashAlgorithmType;
+using MonoExchangeAlgorithmType = MonoSecurity::Mono.Security.Protocol.Tls.ExchangeAlgorithmType;
+using MonoSecurityProtocolType = MonoSecurity::Mono.Security.Protocol.Tls.SecurityProtocolType;
+using MonoSecurity::Mono.Security.Protocol.Tls;
+using MonoSecurity::Mono.Security.Interface;
+#else
+using MonoCipherAlgorithmType = Mono.Security.Protocol.Tls.CipherAlgorithmType;
+using MonoHashAlgorithmType = Mono.Security.Protocol.Tls.HashAlgorithmType;
+using MonoExchangeAlgorithmType = Mono.Security.Protocol.Tls.ExchangeAlgorithmType;
+using MonoSecurityProtocolType = Mono.Security.Protocol.Tls.SecurityProtocolType;
+using Mono.Security.Protocol.Tls;
+using Mono.Security.Interface;
+#endif
+#if MONO_X509_ALIAS
+using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
+
+using CipherAlgorithmType = System.Security.Authentication.CipherAlgorithmType;
+using HashAlgorithmType = System.Security.Authentication.HashAlgorithmType;
+using ExchangeAlgorithmType = System.Security.Authentication.ExchangeAlgorithmType;
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.Security.Cryptography;
+
+using System.Threading.Tasks;
+
+namespace Mono.Net.Security.Private
+{
+       /*
+        * Strictly private - do not use outside the Mono.Net.Security directory.
+        */
+       [MonoTODO ("Non-X509Certificate2 certificate is not supported")]
+       internal class LegacySslStream : AuthenticatedStream, IMonoSslStream
+       {
+               #region Fields
+
+               SslStreamBase ssl_stream;
+               ICertificateValidator certificateValidator;
+               MonoTlsProvider provider;
+
+               #endregion // Fields
+
+               #region Constructors
+
+               public LegacySslStream (Stream innerStream, bool leaveInnerStreamOpen, MonoTlsProvider provider, MonoTlsSettings settings)
+                       : base (innerStream, leaveInnerStreamOpen)
+               {
+                       this.provider = provider;
+                       certificateValidator = ChainValidationHelper.GetDefaultValidator (provider, settings);
+               }
+               #endregion // Constructors
+
+               #region Properties
+
+               public override bool CanRead {
+                       get { return InnerStream.CanRead; }
+               }
+
+               public override bool CanSeek {
+                       get { return InnerStream.CanSeek; }
+               }
+
+               public override bool CanTimeout {
+                       get { return InnerStream.CanTimeout; }
+               }
+
+               public override bool CanWrite {
+                       get { return InnerStream.CanWrite; }
+               }
+
+               public override long Length {
+                       get { return InnerStream.Length; }
+               }
+
+               public override long Position {
+                       get { return InnerStream.Position; }
+                       set {
+                               throw new NotSupportedException ("This stream does not support seek operations");
+                       }
+               }
+
+               // AuthenticatedStream overrides
+
+               public override bool IsAuthenticated { 
+                       get { return ssl_stream != null; }
+               }
+
+               public override bool IsEncrypted { 
+                       get { return IsAuthenticated; }
+               }
+
+               public override bool IsMutuallyAuthenticated { 
+                       get { return IsAuthenticated && (IsServer ? RemoteCertificate != null : LocalCertificate != null); }
+               }
+
+               public override bool IsServer { 
+                       get { return ssl_stream is SslServerStream; }
+               }
+
+               public override bool IsSigned { 
+                       get { return IsAuthenticated; }
+               }
+
+               public override int ReadTimeout {
+                       get { return InnerStream.ReadTimeout; }
+                       set { InnerStream.ReadTimeout = value; }
+               }
+
+               public override int WriteTimeout {
+                       get { return InnerStream.WriteTimeout; }
+                       set { InnerStream.WriteTimeout = value; }
+               }
+
+               // SslStream
+
+               public virtual bool CheckCertRevocationStatus {
+                       get {
+                               if (!IsAuthenticated)
+                                       return false;
+
+                               return ssl_stream.CheckCertRevocationStatus;
+                       }
+               }
+
+               public virtual CipherAlgorithmType CipherAlgorithm  {
+                       get {
+                               CheckConnectionAuthenticated ();
+
+                               switch (ssl_stream.CipherAlgorithm) {
+                               case MonoCipherAlgorithmType.Des:
+                                       return CipherAlgorithmType.Des;
+                               case MonoCipherAlgorithmType.None:
+                                       return CipherAlgorithmType.None;
+                               case MonoCipherAlgorithmType.Rc2:
+                                       return CipherAlgorithmType.Rc2;
+                               case MonoCipherAlgorithmType.Rc4:
+                                       return CipherAlgorithmType.Rc4;
+                               case MonoCipherAlgorithmType.SkipJack:
+                                       break;
+                               case MonoCipherAlgorithmType.TripleDes:
+                                       return CipherAlgorithmType.TripleDes;
+                               case MonoCipherAlgorithmType.Rijndael:
+                                       switch (ssl_stream.CipherStrength) {
+                                       case 128:
+                                               return CipherAlgorithmType.Aes128;
+                                       case 192:
+                                               return CipherAlgorithmType.Aes192;
+                                       case 256:
+                                               return CipherAlgorithmType.Aes256;
+                                       }
+                                       break;
+                               }
+
+                               throw new InvalidOperationException ("Not supported cipher algorithm is in use. It is likely a bug in SslStream.");
+                       }
+               }
+
+               public virtual int CipherStrength  {
+                       get {
+                               CheckConnectionAuthenticated ();
+
+                               return ssl_stream.CipherStrength;
+                       }
+               }
+
+               public virtual HashAlgorithmType HashAlgorithm  {
+                       get {
+                               CheckConnectionAuthenticated ();
+
+                               switch (ssl_stream.HashAlgorithm) {
+                               case MonoHashAlgorithmType.Md5:
+                                       return HashAlgorithmType.Md5;
+                               case MonoHashAlgorithmType.None:
+                                       return HashAlgorithmType.None;
+                               case MonoHashAlgorithmType.Sha1:
+                                       return HashAlgorithmType.Sha1;
+                               }
+
+                               throw new InvalidOperationException ("Not supported hash algorithm is in use. It is likely a bug in SslStream.");
+                       }
+               }
+
+               public virtual int HashStrength  {
+                       get {
+                               CheckConnectionAuthenticated ();
+
+                               return ssl_stream.HashStrength;
+                       }
+               }
+
+               public virtual ExchangeAlgorithmType KeyExchangeAlgorithm { 
+                       get {
+                               CheckConnectionAuthenticated ();
+
+                               switch (ssl_stream.KeyExchangeAlgorithm) {
+                               case MonoExchangeAlgorithmType.DiffieHellman:
+                                       return ExchangeAlgorithmType.DiffieHellman;
+                               case MonoExchangeAlgorithmType.Fortezza:
+                                       break;
+                               case MonoExchangeAlgorithmType.None:
+                                       return ExchangeAlgorithmType.None;
+                               case MonoExchangeAlgorithmType.RsaKeyX:
+                                       return ExchangeAlgorithmType.RsaKeyX;
+                               case MonoExchangeAlgorithmType.RsaSign:
+                                       return ExchangeAlgorithmType.RsaSign;
+                               }
+
+                               throw new InvalidOperationException ("Not supported exchange algorithm is in use. It is likely a bug in SslStream.");
+                       }
+               }
+
+               public virtual int KeyExchangeStrength { 
+                       get {
+                               CheckConnectionAuthenticated ();
+
+                               return ssl_stream.KeyExchangeStrength;
+                       }
+               }
+
+               X509Certificate IMonoSslStream.InternalLocalCertificate {
+                       get {
+                               return IsServer ? ssl_stream.ServerCertificate : ((SslClientStream) ssl_stream).SelectedClientCertificate;
+                       }
+               }
+
+               public virtual X509Certificate LocalCertificate {
+                       get {
+                               CheckConnectionAuthenticated ();
+
+                               return IsServer ? ssl_stream.ServerCertificate : ((SslClientStream) ssl_stream).SelectedClientCertificate;
+                       }
+               }
+
+               public virtual X509Certificate RemoteCertificate {
+                       get {
+                               CheckConnectionAuthenticated ();
+                               return !IsServer ? ssl_stream.ServerCertificate : ((SslServerStream) ssl_stream).ClientCertificate;
+                       }
+               }
+
+               public virtual SslProtocols SslProtocol {
+                       get {
+                               CheckConnectionAuthenticated ();
+
+                               switch (ssl_stream.SecurityProtocol) {
+                               case MonoSecurityProtocolType.Default:
+                                       return SslProtocols.Default;
+                               case MonoSecurityProtocolType.Ssl2:
+                                       return SslProtocols.Ssl2;
+                               case MonoSecurityProtocolType.Ssl3:
+                                       return SslProtocols.Ssl3;
+                               case MonoSecurityProtocolType.Tls:
+                                       return SslProtocols.Tls;
+                               }
+
+                               throw new InvalidOperationException ("Not supported SSL/TLS protocol is in use. It is likely a bug in SslStream.");
+                       }
+               }
+
+               #endregion // Properties
+
+               #region Methods
+
+/*
+               AsymmetricAlgorithm GetPrivateKey (X509Certificate cert, string targetHost)
+               {
+                       // FIXME: what can I do for non-X509Certificate2 ?
+                       X509Certificate2 cert2 = cert as X509Certificate2;
+                       return cert2 != null ? cert2.PrivateKey : null;
+               }
+*/
+               X509Certificate OnCertificateSelection (X509CertificateCollection clientCerts, X509Certificate serverCert, string targetHost, X509CertificateCollection serverRequestedCerts)
+               {
+                       string [] acceptableIssuers = new string [serverRequestedCerts != null ? serverRequestedCerts.Count : 0];
+                       for (int i = 0; i < acceptableIssuers.Length; i++)
+                               acceptableIssuers [i] = serverRequestedCerts [i].GetIssuerName ();
+                       X509Certificate clientCertificate;
+                       certificateValidator.SelectClientCertificate (targetHost, clientCerts, serverCert, acceptableIssuers, out clientCertificate);
+                       return clientCertificate;
+               }
+
+               public virtual IAsyncResult BeginAuthenticateAsClient (string targetHost, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return BeginAuthenticateAsClient (targetHost, new X509CertificateCollection (), SslProtocols.Tls, false, asyncCallback, asyncState);
+               }
+
+               public virtual IAsyncResult BeginAuthenticateAsClient (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
+               {
+                       if (IsAuthenticated)
+                               throw new InvalidOperationException ("This SslStream is already authenticated");
+
+                       SslClientStream s = new SslClientStream (InnerStream, targetHost, !LeaveInnerStreamOpen, GetMonoSslProtocol (enabledSslProtocols), clientCertificates);
+                       s.CheckCertRevocationStatus = checkCertificateRevocation;
+
+                       // Due to the Mono.Security internal, it cannot reuse
+                       // the delegated argument, as Mono.Security creates 
+                       // another instance of X509Certificate which lacks 
+                       // private key but is filled the private key via this
+                       // delegate.
+                       s.PrivateKeyCertSelectionDelegate = delegate (X509Certificate cert, string host) {
+                               string hash = cert.GetCertHashString ();
+                               // ... so, we cannot use the delegate argument.
+                               foreach (X509Certificate cc in clientCertificates) {
+                                       if (cc.GetCertHashString () != hash)
+                                               continue;
+                                       X509Certificate2 cert2 = cc as X509Certificate2;
+                                       cert2 = cert2 ?? new X509Certificate2 (cc);
+                                       return cert2.PrivateKey;
+                               }
+                               return null;
+                       };
+
+                       // Even if validation_callback is null this allows us to verify requests where the user
+                       // does not provide a verification callback but attempts to authenticate with the website
+                       // as a client (see https://bugzilla.xamarin.com/show_bug.cgi?id=18962 for an example)
+                       s.ServerCertValidation2 += (mcerts) => {
+                               X509CertificateCollection certs = null;
+                               if (mcerts != null) {
+                                       certs = new X509CertificateCollection ();
+                                       for (int i = 0; i < mcerts.Count; i++)
+                                               certs.Add (new X509Certificate2 (mcerts [i].RawData));
+                               }
+                               return ((ChainValidationHelper)certificateValidator).ValidateCertificate (targetHost, false, certs);
+                       };
+                       s.ClientCertSelectionDelegate = OnCertificateSelection;
+
+                       ssl_stream = s;
+
+                       return BeginWrite (new byte [0], 0, 0, asyncCallback, asyncState);
+               }
+
+               public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
+               {
+                       CheckConnectionAuthenticated ();
+
+                       return ssl_stream.BeginRead (buffer, offset, count, asyncCallback, asyncState);
+               }
+
+               public virtual IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return BeginAuthenticateAsServer (serverCertificate, false, SslProtocols.Tls, false, asyncCallback, asyncState);
+               }
+
+               public virtual IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
+               {
+                       if (IsAuthenticated)
+                               throw new InvalidOperationException ("This SslStream is already authenticated");
+
+                       SslServerStream s = new SslServerStream (InnerStream, serverCertificate, false, clientCertificateRequired, !LeaveInnerStreamOpen, GetMonoSslProtocol (enabledSslProtocols));
+                       s.CheckCertRevocationStatus = checkCertificateRevocation;
+                       // Due to the Mono.Security internal, it cannot reuse
+                       // the delegated argument, as Mono.Security creates 
+                       // another instance of X509Certificate which lacks 
+                       // private key but is filled the private key via this
+                       // delegate.
+                       s.PrivateKeyCertSelectionDelegate = delegate (X509Certificate cert, string targetHost) {
+                               // ... so, we cannot use the delegate argument.
+                               X509Certificate2 cert2 = serverCertificate as X509Certificate2 ?? new X509Certificate2 (serverCertificate);
+                               return cert2 != null ? cert2.PrivateKey : null;
+                       };
+
+                       s.ClientCertValidationDelegate = delegate (X509Certificate cert, int[] certErrors) {
+                               var errors = certErrors.Length > 0 ? MonoSslPolicyErrors.RemoteCertificateChainErrors : MonoSslPolicyErrors.None;
+                               return ((ChainValidationHelper)certificateValidator).ValidateClientCertificate (cert, errors);
+                       };
+
+                       ssl_stream = s;
+
+                       return BeginWrite (new byte[0], 0, 0, asyncCallback, asyncState);
+               }
+
+               MonoSecurityProtocolType GetMonoSslProtocol (SslProtocols ms)
+               {
+                       switch (ms) {
+                       case SslProtocols.Ssl2:
+                               return MonoSecurityProtocolType.Ssl2;
+                       case SslProtocols.Ssl3:
+                               return MonoSecurityProtocolType.Ssl3;
+                       case SslProtocols.Tls:
+                               return MonoSecurityProtocolType.Tls;
+                       default:
+                               return MonoSecurityProtocolType.Default;
+                       }
+               }
+
+               public override IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
+               {
+                       CheckConnectionAuthenticated ();
+
+                       return ssl_stream.BeginWrite (buffer, offset, count, asyncCallback, asyncState);
+               }
+
+               public virtual void AuthenticateAsClient (string targetHost)
+               {
+                       AuthenticateAsClient (targetHost, new X509CertificateCollection (), SslProtocols.Tls, false);
+               }
+
+               public virtual void AuthenticateAsClient (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       EndAuthenticateAsClient (BeginAuthenticateAsClient (
+                               targetHost, clientCertificates, enabledSslProtocols, checkCertificateRevocation, null, null));
+               }
+
+               public virtual void AuthenticateAsServer (X509Certificate serverCertificate)
+               {
+                       AuthenticateAsServer (serverCertificate, false, SslProtocols.Tls, false);
+               }
+
+               public virtual void AuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       EndAuthenticateAsServer (BeginAuthenticateAsServer (
+                               serverCertificate, clientCertificateRequired, enabledSslProtocols, checkCertificateRevocation, null, null));
+               }
+
+               protected override void Dispose (bool disposing)
+               {
+                       if (disposing) {
+                               if (ssl_stream != null)
+                                       ssl_stream.Dispose ();
+                               ssl_stream = null;
+                       }
+                       base.Dispose (disposing);
+               }
+
+               public virtual void EndAuthenticateAsClient (IAsyncResult asyncResult)
+               {
+                       CheckConnectionAuthenticated ();
+
+                       if (CanRead)
+                               ssl_stream.EndRead (asyncResult);
+                       else
+                               ssl_stream.EndWrite (asyncResult);
+               }
+
+               public virtual void EndAuthenticateAsServer (IAsyncResult asyncResult)
+               {
+                       CheckConnectionAuthenticated ();
+
+                       if (CanRead)
+                               ssl_stream.EndRead (asyncResult);
+                       else
+                               ssl_stream.EndWrite (asyncResult);
+               }
+
+               public override int EndRead (IAsyncResult asyncResult)
+               {
+                       CheckConnectionAuthenticated ();
+
+                       return ssl_stream.EndRead (asyncResult);
+               }
+
+               public override void EndWrite (IAsyncResult asyncResult)
+               {
+                       CheckConnectionAuthenticated ();
+
+                       ssl_stream.EndWrite (asyncResult);
+               }
+
+               public override void Flush ()
+               {
+                       CheckConnectionAuthenticated ();
+
+                       InnerStream.Flush ();
+               }
+
+               public override int Read (byte[] buffer, int offset, int count)
+               {
+                       return EndRead (BeginRead (buffer, offset, count, null, null));
+               }
+
+               public override long Seek (long offset, SeekOrigin origin)
+               {
+                       throw new NotSupportedException ("This stream does not support seek operations");
+               }
+
+               public override void SetLength (long value)
+               {
+                       InnerStream.SetLength (value);
+               }
+
+               public override void Write (byte[] buffer, int offset, int count)
+               {
+                       EndWrite (BeginWrite (buffer, offset, count, null, null));
+               }
+
+               public void Write (byte[] buffer)
+               {
+                       Write (buffer, 0, buffer.Length);
+               }
+
+               void CheckConnectionAuthenticated ()
+               {
+                       if (!IsAuthenticated)
+                               throw new InvalidOperationException ("This operation is invalid until it is successfully authenticated");
+               }
+
+               public virtual Task AuthenticateAsClientAsync (string targetHost)
+               {
+                       return Task.Factory.FromAsync (BeginAuthenticateAsClient, EndAuthenticateAsClient, targetHost, null);
+               }
+
+               public virtual Task AuthenticateAsClientAsync (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       var t = Tuple.Create (targetHost, clientCertificates, enabledSslProtocols, checkCertificateRevocation, this);
+
+                       return Task.Factory.FromAsync ((callback, state) => {
+                               var d = (Tuple<string, X509CertificateCollection, SslProtocols, bool, LegacySslStream>) state;
+                               return d.Item5.BeginAuthenticateAsClient (d.Item1, d.Item2, d.Item3, d.Item4, callback, null);
+                       }, EndAuthenticateAsClient, t);
+               }
+
+               public virtual Task AuthenticateAsServerAsync (X509Certificate serverCertificate)
+               {
+                       return Task.Factory.FromAsync (BeginAuthenticateAsServer, EndAuthenticateAsServer, serverCertificate, null);
+               }
+
+               public virtual Task AuthenticateAsServerAsync (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       var t = Tuple.Create (serverCertificate, clientCertificateRequired, enabledSslProtocols, checkCertificateRevocation, this);
+
+                       return Task.Factory.FromAsync ((callback, state) => {
+                               var d = (Tuple<X509Certificate, bool, SslProtocols, bool, LegacySslStream>) state;
+                               return d.Item5.BeginAuthenticateAsServer (d.Item1, d.Item2, d.Item3, d.Item4, callback, null);
+                       }, EndAuthenticateAsServer, t);
+               }
+
+               #endregion // Methods
+
+               #region IMonoSslStream
+
+               AuthenticatedStream IMonoSslStream.AuthenticatedStream {
+                       get { return this; }
+               }
+
+               TransportContext IMonoSslStream.TransportContext {
+                       get { throw new NotSupportedException (); }
+               }
+
+               MonoTlsProvider IMonoSslStream.Provider {
+                       get { return provider; }
+               }
+
+               MonoTlsConnectionInfo IMonoSslStream.GetConnectionInfo ()
+               {
+                       return null;
+               }
+
+               #endregion
+       }
+}
+
+#endif
diff --git a/mcs/class/System/Mono.Net.Security/MonoDefaultTlsProvider.cs b/mcs/class/System/Mono.Net.Security/MonoDefaultTlsProvider.cs
new file mode 100644 (file)
index 0000000..c39b214
--- /dev/null
@@ -0,0 +1,115 @@
+//
+// MonoDefaultTlsProvider.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+#if SECURITY_DEP
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+
+#if MONO_X509_ALIAS
+using XHttpWebRequest = PrebuiltSystem::System.Net.HttpWebRequest;
+using XSslProtocols = PrebuiltSystem::System.Security.Authentication.SslProtocols;
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#else
+using XHttpWebRequest = System.Net.HttpWebRequest;
+using XSslProtocols = System.Security.Authentication.SslProtocols;
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MonoSecurity::Mono.Security.Interface;
+#else
+using Mono.Security.Interface;
+#endif
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Security.Cryptography.X509Certificates;
+
+namespace Mono.Net.Security.Private
+{
+       /*
+        * Strictly private - do not use outside the Mono.Net.Security directory.
+        */
+       class MonoDefaultTlsProvider : MonoTlsProviderImpl
+       {
+               static readonly Guid id = new Guid ("809e77d5-56cc-4da8-b9f0-45e65ba9cceb");
+
+               public override Guid ID {
+                       get { return id; }
+               }
+
+               public override string Name {
+                       get { return "legacy"; }
+               }
+
+               public MonoTlsProvider Provider {
+                       get { return this; }
+               }
+
+               public override bool SupportsSslStream {
+                       get { return true; }
+               }
+
+               public override bool SupportsConnectionInfo {
+                       get { return false; }
+               }
+
+               public override bool SupportsMonoExtensions {
+                       get { return false; }
+               }
+
+               public override bool SupportsTlsContext {
+                       get { return false; }
+               }
+
+               public override XSslProtocols SupportedProtocols {
+                       get { return XSslProtocols.Ssl3 | XSslProtocols.Tls; }
+               }
+
+               protected override IMonoSslStream CreateSslStreamImpl (
+                       Stream innerStream, bool leaveInnerStreamOpen,
+                       MonoTlsSettings settings)
+               {
+                       return new LegacySslStream (innerStream, leaveInnerStreamOpen, this, settings);
+               }
+
+               protected override IMonoTlsContext CreateTlsContextImpl (
+                       string hostname, bool serverMode, TlsProtocols protocolFlags,
+                       X509Certificate serverCertificate, X509CertificateCollection clientCertificates,
+                       bool remoteCertRequired, MonoEncryptionPolicy encryptionPolicy,
+                       MonoTlsSettings settings)
+               {
+                       throw new NotSupportedException ();
+               }
+       }
+}
+#endif
+
diff --git a/mcs/class/System/Mono.Net.Security/MonoSslStreamImpl.cs b/mcs/class/System/Mono.Net.Security/MonoSslStreamImpl.cs
new file mode 100644 (file)
index 0000000..dfb5c8c
--- /dev/null
@@ -0,0 +1,342 @@
+//
+// MonoSslStream.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if SECURITY_DEP
+
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MSI = MonoSecurity::Mono.Security.Interface;
+#else
+using MSI = Mono.Security.Interface;
+#endif
+#if MONO_X509_ALIAS
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+
+using XTransportContext = PrebuiltSystem::System.Net.TransportContext;
+using XAuthenticatedStream = PrebuiltSystem::System.Net.Security.AuthenticatedStream;
+
+using XCipherAlgorithmType = PrebuiltSystem::System.Security.Authentication.CipherAlgorithmType;
+using XHashAlgorithmType = PrebuiltSystem::System.Security.Authentication.HashAlgorithmType;
+using XExchangeAlgorithmType = PrebuiltSystem::System.Security.Authentication.ExchangeAlgorithmType;
+using XSslProtocols = PrebuiltSystem::System.Security.Authentication.SslProtocols;
+#else
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+
+using XTransportContext = System.Net.TransportContext;
+using XAuthenticatedStream = System.Net.Security.AuthenticatedStream;
+
+using XCipherAlgorithmType = System.Security.Authentication.CipherAlgorithmType;
+using XHashAlgorithmType = System.Security.Authentication.HashAlgorithmType;
+using XExchangeAlgorithmType = System.Security.Authentication.ExchangeAlgorithmType;
+using XSslProtocols = System.Security.Authentication.SslProtocols;
+#endif
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Threading.Tasks;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.Security.Cryptography;
+
+namespace Mono.Net.Security.Private
+{
+       /*
+        * Strictly private - do not use outside the Mono.Net.Security directory.
+        */
+       class MonoSslStreamImpl : MSI.IMonoSslStream
+       {
+               IMonoSslStream impl;
+
+               internal IMonoSslStream Impl {
+                       get {
+                               CheckDisposed ();
+                               return impl;
+                       }
+               }
+
+               public MonoSslStreamImpl (IMonoSslStream impl)
+               {
+                       this.impl = impl;
+               }
+
+               public void AuthenticateAsClient (string targetHost)
+               {
+                       Impl.AuthenticateAsClient (targetHost);
+               }
+
+               public void AuthenticateAsClient (string targetHost, XX509CertificateCollection clientCertificates, XSslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       Impl.AuthenticateAsClient (targetHost, clientCertificates, (SslProtocols)enabledSslProtocols, checkCertificateRevocation);
+               }
+
+               public IAsyncResult BeginAuthenticateAsClient (string targetHost, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsClient (targetHost, asyncCallback, asyncState);
+               }
+
+               public IAsyncResult BeginAuthenticateAsClient (string targetHost, XX509CertificateCollection clientCertificates, XSslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsClient (targetHost, clientCertificates, (SslProtocols)enabledSslProtocols, checkCertificateRevocation, asyncCallback, asyncState);
+               }
+
+               public void EndAuthenticateAsClient (IAsyncResult asyncResult)
+               {
+                       Impl.EndAuthenticateAsClient (asyncResult);
+               }
+
+               public void AuthenticateAsServer (X509Certificate serverCertificate)
+               {
+                       Impl.AuthenticateAsServer (serverCertificate);
+               }
+
+               public void AuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, XSslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       Impl.AuthenticateAsServer (serverCertificate, clientCertificateRequired, (SslProtocols)enabledSslProtocols, checkCertificateRevocation);
+               }
+
+               public IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsServer (serverCertificate, asyncCallback, asyncState);
+               }
+
+               public IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, XSslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsServer (serverCertificate, clientCertificateRequired, (SslProtocols)enabledSslProtocols, checkCertificateRevocation, asyncCallback, asyncState);
+               }
+
+               public void EndAuthenticateAsServer (IAsyncResult asyncResult)
+               {
+                       Impl.EndAuthenticateAsServer (asyncResult);
+               }
+
+               public Task AuthenticateAsClientAsync (string targetHost)
+               {
+                       return Impl.AuthenticateAsClientAsync (targetHost);
+               }
+
+               public Task AuthenticateAsClientAsync (string targetHost, XX509CertificateCollection clientCertificates, XSslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       return Impl.AuthenticateAsClientAsync (targetHost, clientCertificates, (SslProtocols)enabledSslProtocols, checkCertificateRevocation);
+               }
+
+               public Task AuthenticateAsServerAsync (X509Certificate serverCertificate)
+               {
+                       return Impl.AuthenticateAsServerAsync (serverCertificate);
+               }
+
+               public Task AuthenticateAsServerAsync (X509Certificate serverCertificate, bool clientCertificateRequired, XSslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       return Impl.AuthenticateAsServerAsync (serverCertificate, clientCertificateRequired, (SslProtocols)enabledSslProtocols, checkCertificateRevocation);
+               }
+
+               public void Flush ()
+               {
+                       Impl.Flush ();
+               }
+
+               public int Read (byte[] buffer, int offset, int count)
+               {
+                       return Impl.Read (buffer, offset, count);
+               }
+
+               public void Write (byte[] buffer)
+               {
+                       Impl.Write (buffer);
+               }
+
+               public void Write (byte[] buffer, int offset, int count)
+               {
+                       Impl.Write (buffer, offset, count);
+               }
+
+               public IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginRead (buffer, offset, count, asyncCallback, asyncState);
+               }
+
+               public int EndRead (IAsyncResult asyncResult)
+               {
+                       return Impl.EndRead (asyncResult);
+               }
+
+               public IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginWrite (buffer, offset, count, asyncCallback, asyncState);
+               }
+
+               public void EndWrite (IAsyncResult asyncResult)
+               {
+                       Impl.EndWrite (asyncResult);
+               }
+
+               public XTransportContext TransportContext {
+                       get { return (XTransportContext)(object)Impl.TransportContext; }
+               }
+
+               public bool IsAuthenticated {
+                       get { return Impl.IsAuthenticated; }
+               }
+
+               public bool IsMutuallyAuthenticated {
+                       get { return Impl.IsMutuallyAuthenticated; }
+               }
+
+               public bool IsEncrypted {
+                       get { return Impl.IsEncrypted; }
+               }
+
+               public bool IsSigned {
+                       get { return Impl.IsSigned; }
+               }
+
+               public bool IsServer {
+                       get { return Impl.IsServer; }
+               }
+
+               public XCipherAlgorithmType CipherAlgorithm {
+                       get { return (XCipherAlgorithmType)Impl.CipherAlgorithm; }
+               }
+
+               public int CipherStrength {
+                       get { return Impl.CipherStrength; }
+               }
+
+               public XHashAlgorithmType HashAlgorithm {
+                       get { return (XHashAlgorithmType)Impl.HashAlgorithm; }
+               }
+
+               public int HashStrength {
+                       get { return Impl.HashStrength; }
+               }
+
+               public XExchangeAlgorithmType KeyExchangeAlgorithm {
+                       get { return (XExchangeAlgorithmType)Impl.KeyExchangeAlgorithm; }
+               }
+
+               public int KeyExchangeStrength {
+                       get { return KeyExchangeStrength; }
+               }
+
+               public bool CanRead {
+                       get { return Impl.CanRead; }
+               }
+
+               public bool CanTimeout {
+                       get { return Impl.CanTimeout; }
+               }
+
+               public bool CanWrite {
+                       get { return Impl.CanWrite; }
+               }
+
+               public long Length {
+                       get { return Impl.Length; }
+               }
+
+               public long Position {
+                       get { return Impl.Position; }
+               }
+
+               public void SetLength (long value)
+               {
+                       Impl.SetLength (value);
+               }
+
+               public XAuthenticatedStream AuthenticatedStream {
+                       get { return (XAuthenticatedStream)(Stream)Impl.AuthenticatedStream; }
+               }
+
+               public int ReadTimeout {
+                       get { return Impl.ReadTimeout; }
+                       set { Impl.ReadTimeout = value; }
+               }
+
+               public int WriteTimeout {
+                       get { return Impl.WriteTimeout; }
+                       set { Impl.WriteTimeout = value; }
+               }
+
+               public bool CheckCertRevocationStatus {
+                       get { return Impl.CheckCertRevocationStatus; }
+               }
+
+               public X509Certificate InternalLocalCertificate {
+                       get { return Impl.InternalLocalCertificate; }
+               }
+
+               public X509Certificate LocalCertificate {
+                       get { return Impl.LocalCertificate; }
+               }
+
+               public X509Certificate RemoteCertificate {
+                       get { return Impl.RemoteCertificate; }
+               }
+
+               public XSslProtocols SslProtocol {
+                       get { return (XSslProtocols)Impl.SslProtocol; }
+               }
+
+               public MSI.MonoTlsProvider Provider {
+                       get { return Impl.Provider; }
+               }
+
+               public MSI.MonoTlsConnectionInfo GetConnectionInfo ()
+               {
+                       return Impl.GetConnectionInfo ();
+               }
+
+               void CheckDisposed ()
+               {
+                       if (impl == null)
+                               throw new ObjectDisposedException ("MonoSslStream");
+               }
+
+               public void Dispose ()
+               {
+                       Dispose (true);
+                       GC.SuppressFinalize (this);
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       if (impl != null && disposing) {
+                               impl.Dispose ();
+                               impl = null;
+                       }
+               }
+       }
+}
+#endif
+
diff --git a/mcs/class/System/Mono.Net.Security/MonoSslStreamWrapper.cs b/mcs/class/System/Mono.Net.Security/MonoSslStreamWrapper.cs
new file mode 100644 (file)
index 0000000..92f88fe
--- /dev/null
@@ -0,0 +1,330 @@
+//
+// MonoSslStreamImpl.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if SECURITY_DEP
+
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MSI = MonoSecurity::Mono.Security.Interface;
+#else
+using MSI = Mono.Security.Interface;
+#endif
+#if MONO_X509_ALIAS
+using XSslProtocols = PrebuiltSystem::System.Security.Authentication.SslProtocols;
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#else
+using XSslProtocols = System.Security.Authentication.SslProtocols;
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
+
+using CipherAlgorithmType = System.Security.Authentication.CipherAlgorithmType;
+using HashAlgorithmType = System.Security.Authentication.HashAlgorithmType;
+using ExchangeAlgorithmType = System.Security.Authentication.ExchangeAlgorithmType;
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.Security.Cryptography;
+
+using System.Threading.Tasks;
+
+namespace Mono.Net.Security.Private
+{
+       class MonoSslStreamWrapper : IMonoSslStream
+       {
+               MSI.IMonoSslStream impl;
+
+               internal MSI.IMonoSslStream Impl {
+                       get {
+                               CheckDisposed ();
+                               return impl;
+                       }
+               }
+
+               public MonoSslStreamWrapper (MSI.IMonoSslStream impl)
+               {
+                       this.impl = impl;
+               }
+
+               public void AuthenticateAsClient (string targetHost)
+               {
+                       Impl.AuthenticateAsClient (targetHost);
+               }
+
+               public void AuthenticateAsClient (string targetHost, XX509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       Impl.AuthenticateAsClient (targetHost, (XX509CertificateCollection)(object)clientCertificates, (XSslProtocols)enabledSslProtocols, checkCertificateRevocation);
+               }
+
+               public IAsyncResult BeginAuthenticateAsClient (string targetHost, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsClient (targetHost, asyncCallback, asyncState);
+               }
+
+               public IAsyncResult BeginAuthenticateAsClient (string targetHost, XX509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsClient (targetHost, (XX509CertificateCollection)(object)clientCertificates, (XSslProtocols)enabledSslProtocols, checkCertificateRevocation, asyncCallback, asyncState);
+               }
+
+               public void EndAuthenticateAsClient (IAsyncResult asyncResult)
+               {
+                       Impl.EndAuthenticateAsClient (asyncResult);
+               }
+
+               public void AuthenticateAsServer (X509Certificate serverCertificate)
+               {
+                       Impl.AuthenticateAsServer (serverCertificate);
+               }
+
+               public void AuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       Impl.AuthenticateAsServer (serverCertificate, clientCertificateRequired, (XSslProtocols)enabledSslProtocols, checkCertificateRevocation);
+               }
+
+               public IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsServer (serverCertificate, asyncCallback, asyncState);
+               }
+
+               public IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsServer (serverCertificate, clientCertificateRequired, (XSslProtocols)enabledSslProtocols, checkCertificateRevocation, asyncCallback, asyncState);
+               }
+
+               public void EndAuthenticateAsServer (IAsyncResult asyncResult)
+               {
+                       Impl.EndAuthenticateAsServer (asyncResult);
+               }
+
+               public Task AuthenticateAsClientAsync (string targetHost)
+               {
+                       return Impl.AuthenticateAsClientAsync (targetHost);
+               }
+
+               public Task AuthenticateAsClientAsync (string targetHost, XX509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       return Impl.AuthenticateAsClientAsync (targetHost, clientCertificates, (XSslProtocols)enabledSslProtocols, checkCertificateRevocation);
+               }
+
+               public Task AuthenticateAsServerAsync (X509Certificate serverCertificate)
+               {
+                       return Impl.AuthenticateAsServerAsync (serverCertificate);
+               }
+
+               public Task AuthenticateAsServerAsync (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       return Impl.AuthenticateAsServerAsync (serverCertificate, clientCertificateRequired, (XSslProtocols)enabledSslProtocols, checkCertificateRevocation);
+               }
+
+               public void Flush ()
+               {
+                       Impl.Flush ();
+               }
+
+               public int Read (byte[] buffer, int offset, int count)
+               {
+                       return Impl.Read (buffer, offset, count);
+               }
+
+               public void Write (byte[] buffer)
+               {
+                       Impl.Write (buffer);
+               }
+
+               public void Write (byte[] buffer, int offset, int count)
+               {
+                       Impl.Write (buffer, offset, count);
+               }
+
+               public IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginRead (buffer, offset, count, asyncCallback, asyncState);
+               }
+
+               public int EndRead (IAsyncResult asyncResult)
+               {
+                       return Impl.EndRead (asyncResult);
+               }
+
+               public IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginWrite (buffer, offset, count, asyncCallback, asyncState);
+               }
+
+               public void EndWrite (IAsyncResult asyncResult)
+               {
+                       Impl.EndWrite (asyncResult);
+               }
+
+               public TransportContext TransportContext {
+                       get { return (TransportContext)(object)Impl.TransportContext; }
+               }
+
+               public bool IsAuthenticated {
+                       get { return Impl.IsAuthenticated; }
+               }
+
+               public bool IsMutuallyAuthenticated {
+                       get { return Impl.IsMutuallyAuthenticated; }
+               }
+
+               public bool IsEncrypted {
+                       get { return Impl.IsEncrypted; }
+               }
+
+               public bool IsSigned {
+                       get { return Impl.IsSigned; }
+               }
+
+               public bool IsServer {
+                       get { return Impl.IsServer; }
+               }
+
+               public CipherAlgorithmType CipherAlgorithm {
+                       get { return (CipherAlgorithmType)Impl.CipherAlgorithm; }
+               }
+
+               public int CipherStrength {
+                       get { return Impl.CipherStrength; }
+               }
+
+               public HashAlgorithmType HashAlgorithm {
+                       get { return (HashAlgorithmType)Impl.HashAlgorithm; }
+               }
+
+               public int HashStrength {
+                       get { return Impl.HashStrength; }
+               }
+
+               public ExchangeAlgorithmType KeyExchangeAlgorithm {
+                       get { return (ExchangeAlgorithmType)Impl.KeyExchangeAlgorithm; }
+               }
+
+               public int KeyExchangeStrength {
+                       get { return Impl.KeyExchangeStrength; }
+               }
+
+               public bool CanRead {
+                       get { return Impl.CanRead; }
+               }
+
+               public bool CanTimeout {
+                       get { return Impl.CanTimeout; }
+               }
+
+               public bool CanWrite {
+                       get { return Impl.CanWrite; }
+               }
+
+               public long Length {
+                       get { return Impl.Length; }
+               }
+
+               public long Position {
+                       get { return Impl.Position; }
+               }
+
+               public void SetLength (long value)
+               {
+                       Impl.SetLength (value);
+               }
+
+               public AuthenticatedStream AuthenticatedStream {
+                       get { return (AuthenticatedStream)(object)Impl.AuthenticatedStream; }
+               }
+
+               public int ReadTimeout {
+                       get { return Impl.ReadTimeout; }
+                       set { Impl.ReadTimeout = value; }
+               }
+
+               public int WriteTimeout {
+                       get { return Impl.WriteTimeout; }
+                       set { Impl.WriteTimeout = value; }
+               }
+
+               public bool CheckCertRevocationStatus {
+                       get { return Impl.CheckCertRevocationStatus; }
+               }
+
+               X509Certificate IMonoSslStream.InternalLocalCertificate {
+                       get { return Impl.InternalLocalCertificate; }
+               }
+
+               public X509Certificate LocalCertificate {
+                       get { return Impl.LocalCertificate; }
+               }
+
+               public X509Certificate RemoteCertificate {
+                       get { return Impl.RemoteCertificate; }
+               }
+
+               public SslProtocols SslProtocol {
+                       get { return (SslProtocols)Impl.SslProtocol; }
+               }
+
+               public MSI.MonoTlsProvider Provider {
+                       get { return Impl.Provider; }
+               }
+
+               public MSI.MonoTlsConnectionInfo GetConnectionInfo ()
+               {
+                       return Impl.GetConnectionInfo ();
+               }
+
+               void CheckDisposed ()
+               {
+                       if (impl == null)
+                               throw new ObjectDisposedException ("MonoSslStream");
+               }
+
+               public void Dispose ()
+               {
+                       Dispose (true);
+                       GC.SuppressFinalize (this);
+               }
+
+               protected void Dispose (bool disposing)
+               {
+                       if (impl != null && disposing) {
+                               impl.Dispose ();
+                               impl = null;
+                       }
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/System/Mono.Net.Security/MonoTlsProviderFactory.cs b/mcs/class/System/Mono.Net.Security/MonoTlsProviderFactory.cs
new file mode 100644 (file)
index 0000000..8502364
--- /dev/null
@@ -0,0 +1,276 @@
+//
+// MonoTlsProviderFactory.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+using MSI = MonoSecurity::Mono.Security.Interface;
+using MX = MonoSecurity::Mono.Security.X509;
+#else
+using MSI = Mono.Security.Interface;
+using MX = Mono.Security.X509;
+#endif
+using System.Security.Cryptography.X509Certificates;
+#endif
+
+using System;
+using System.Net;
+using System.Collections.Generic;
+
+#if !MOBILE
+using System.Reflection;
+#endif
+
+namespace Mono.Net.Security
+{
+       /*
+        * Keep in sync with Mono.Security/Mono.Security.Interface/MonoTlsProvider.cs.
+        *
+        */
+       static partial class MonoTlsProviderFactory
+       {
+               #region Internal API
+
+               /*
+                * APIs in this section are for consumption within System.dll only - do not access via
+                * reflection or from friend assemblies.
+                * 
+                * @IMonoTlsProvider is defined as empty interface outside 'SECURITY_DEP', so we don't need
+                * this conditional here.
+                */
+
+               internal static IMonoTlsProvider GetProviderInternal ()
+               {
+                       lock (locker) {
+                               if (currentProvider != null)
+                                       return currentProvider;
+
+                               try {
+                                       defaultProvider = CreateDefaultProvider ();
+                               } catch (Exception ex) {
+                                       throw new NotSupportedException ("TLS Support not available.", ex);
+                               }
+
+                               if (defaultProvider == null)
+                                       throw new NotSupportedException ("TLS Support not available.");
+
+                               currentProvider = defaultProvider;
+                               return currentProvider;
+                       }
+               }
+
+               internal static IMonoTlsProvider GetDefaultProviderInternal ()
+               {
+                       lock (locker) {
+                               if (defaultProvider != null)
+                                       return defaultProvider;
+
+                               try {
+                                       defaultProvider = CreateDefaultProvider ();
+                               } catch (Exception ex) {
+                                       throw new NotSupportedException ("TLS Support not available.", ex);
+                               }
+
+                               if (defaultProvider == null)
+                                       throw new NotSupportedException ("TLS Support not available.");
+
+                               return defaultProvider;
+                       }
+               }
+
+#if MONO_FEATURE_NEW_SYSTEM_SOURCE || (!MONOTOUCH && !XAMMAC)
+               static IMonoTlsProvider CreateDefaultProvider ()
+               {
+#if SECURITY_DEP
+#if MONO_FEATURE_NEW_SYSTEM_SOURCE
+                       /*
+                        * This is a hack, which is used in the Mono.Security.Providers.NewSystemSource
+                        * assembly, which will provide a "fake" System.dll.  Use the public Mono.Security
+                        * API to get the "real" System.dll's provider via reflection, then wrap it with
+                        * the "fake" version's perceived view.
+                        *
+                        * NewSystemSource needs to compile MonoTlsProviderFactory.cs, IMonoTlsProvider.cs,
+                        * MonoTlsProviderWrapper.cs and CallbackHelpers.cs from this directory and only these.
+                        */
+                       var userProvider = MSI.MonoTlsProviderFactory.GetProvider ();
+                       return new Private.MonoTlsProviderWrapper (userProvider);
+#else
+                       return CreateDefaultProviderImpl ();
+#endif
+#else
+                       return null;
+#endif
+               }
+#endif
+
+               static object locker = new object ();
+               static IMonoTlsProvider defaultProvider;
+               static IMonoTlsProvider currentProvider;
+
+               #endregion
+
+#if SECURITY_DEP && !MONO_FEATURE_NEW_SYSTEM_SOURCE
+
+#if !MOBILE
+               static Dictionary<string,string> providerRegistration;
+
+               internal static void RegisterProvider (string name, string type)
+               {
+                       lock (locker) {
+                               InitializeProviderRegistration ();
+                               providerRegistration.Add (name, type);
+                       }
+               }
+
+               static string LookupProvider (string name)
+               {
+                       lock (locker) {
+                               InitializeProviderRegistration ();
+                               string type;
+                               if (!providerRegistration.TryGetValue (name, out type))
+                                       type = null;
+                               return type;
+                       }
+               }
+
+               static void InitializeProviderRegistration ()
+               {
+                       lock (locker) {
+                               if (providerRegistration != null)
+                                       return;
+                               providerRegistration = new Dictionary<string,string> ();
+                               providerRegistration.Add ("newtls", "Mono.Security.Providers.NewTls.NewTlsProvider, Mono.Security.Providers.NewTls, Version=4.0.0.0, Culture=neutral, PublicKeyToken=84e3aee7225169c2");
+                               providerRegistration.Add ("oldtls", "Mono.Security.Providers.OldTls.OldTlsProvider, Mono.Security.Providers.OldTls, Version=4.0.0.0, Culture=neutral, PublicKeyToken=84e3aee7225169c2");
+                       }
+               }
+
+               static IMonoTlsProvider TryDynamicLoad ()
+               {
+                       var variable = Environment.GetEnvironmentVariable ("MONO_TLS_PROVIDER");
+                       if (variable == null)
+                               return null;
+
+                       if (string.Equals (variable, "default", StringComparison.OrdinalIgnoreCase))
+                               return null;
+
+                       string typeName;
+                       if (variable.IndexOfAny (new char[] { ',', '.', '=' }) > 0) {
+                               typeName = variable;
+                       } else {
+                               typeName = LookupProvider (variable);
+                               if (typeName == null)
+                                       throw new NotSupportedException (string.Format ("No such TLS Provider: `{0}'.", typeName));
+                       }
+
+                       var type = Type.GetType (typeName, false);
+                       if (type == null)
+                               throw new NotSupportedException (string.Format ("Could not find TLS Provider: `{0}'.", typeName));
+
+                       MSI.MonoTlsProvider provider;
+                       try {
+                               provider = (MSI.MonoTlsProvider)Activator.CreateInstance (type);
+                       } catch (Exception ex) {
+                               throw new NotSupportedException (string.Format ("Unable to instantiate TLS Provider `{0}'.", typeName), ex);
+                       }
+
+                       return new Private.MonoTlsProviderWrapper (provider);
+               }
+#endif
+
+               static IMonoTlsProvider CreateDefaultProviderImpl ()
+               {
+#if !MOBILE
+                       var provider = TryDynamicLoad ();
+                       if (provider != null)
+                               return provider;
+#endif
+
+                       return new Private.MonoDefaultTlsProvider ();
+               }
+
+               #region Mono.Security visible API
+
+               /*
+                * "Public" section, intended to be consumed via reflection.
+                * 
+                * Mono.Security.dll provides a public wrapper around these.
+                */
+
+               internal static MSI.MonoTlsProvider GetProvider ()
+               {
+                       var provider = GetProviderInternal ();
+                       if (provider == null)
+                               throw new NotSupportedException ("No TLS Provider available.");
+
+                       return provider.Provider;
+               }
+
+               internal static MSI.MonoTlsProvider GetDefaultProvider ()
+               {
+                       var provider = GetDefaultProviderInternal ();
+                       if (provider == null)
+                               throw new NotSupportedException ("No TLS Provider available.");
+
+                       return provider.Provider;
+               }
+
+               internal static bool HasProvider {
+                       get {
+                               lock (locker) {
+                                       return currentProvider != null;
+                               }
+                       }
+               }
+
+               internal static void InstallProvider (MSI.MonoTlsProvider provider)
+               {
+                       lock (locker) {
+                               currentProvider = new Private.MonoTlsProviderWrapper (provider);
+                       }
+               }
+
+               internal static HttpWebRequest CreateHttpsRequest (Uri requestUri, MSI.MonoTlsProvider provider, MSI.MonoTlsSettings settings)
+               {
+                       lock (locker) {
+                               var internalProvider = provider != null ? new Private.MonoTlsProviderWrapper (provider) : null;
+                               return new HttpWebRequest (requestUri, internalProvider, settings);
+                       }
+               }
+
+               internal static HttpListener CreateHttpListener (X509Certificate certificate, MSI.MonoTlsProvider provider, MSI.MonoTlsSettings settings)
+               {
+                       lock (locker) {
+                               var internalProvider = provider != null ? new Private.MonoTlsProviderWrapper (provider) : null;
+                               return new HttpListener (certificate, internalProvider, settings);
+                       }
+               }
+               #endregion
+
+#endif
+
+       }
+}
+
diff --git a/mcs/class/System/Mono.Net.Security/MonoTlsProviderImpl.cs b/mcs/class/System/Mono.Net.Security/MonoTlsProviderImpl.cs
new file mode 100644 (file)
index 0000000..4216e58
--- /dev/null
@@ -0,0 +1,118 @@
+//
+// MonoTlsProviderImpl.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if SECURITY_DEP
+
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MSI = MonoSecurity::Mono.Security.Interface;
+#else
+using MSI = Mono.Security.Interface;
+#endif
+#if MONO_X509_ALIAS
+using XHttpWebRequest = PrebuiltSystem::System.Net.HttpWebRequest;
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#else
+using XHttpWebRequest = System.Net.HttpWebRequest;
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Security.Cryptography.X509Certificates;
+
+namespace Mono.Net.Security.Private
+{
+       /*
+        * Strictly private - do not use outside the Mono.Net.Security directory.
+        */
+       abstract class MonoTlsProviderImpl : MSI.MonoTlsProvider, IMonoTlsProvider
+       {
+               MSI.MonoTlsProvider IMonoTlsProvider.Provider {
+                       get { return this; }
+               }
+
+               IMonoSslStream IMonoTlsProvider.CreateSslStream (
+                       Stream innerStream, bool leaveInnerStreamOpen,
+                       MSI.MonoTlsSettings settings)
+               {
+                       return CreateSslStreamImpl (innerStream, leaveInnerStreamOpen, settings);
+               }
+
+               protected abstract IMonoSslStream CreateSslStreamImpl (
+                       Stream innerStream, bool leaveInnerStreamOpen,
+                       MSI.MonoTlsSettings settings);
+
+               public override MSI.IMonoSslStream CreateSslStream (
+                       Stream innerStream, bool leaveInnerStreamOpen,
+                       MSI.MonoTlsSettings settings = null)
+               {
+                       var sslStream = CreateSslStreamImpl (innerStream, leaveInnerStreamOpen, settings);
+                       return new MonoSslStreamImpl (sslStream);
+               }
+
+               MSI.IMonoTlsContext IMonoTlsProvider.CreateTlsContext (
+                       string hostname, bool serverMode, MSI.TlsProtocols protocolFlags,
+                       X509Certificate serverCertificate, XX509CertificateCollection clientCertificates,
+                       bool remoteCertRequired, bool checkCertName, bool checkCertRevocationStatus,
+                       MSI.MonoEncryptionPolicy encryptionPolicy, MSI.MonoTlsSettings settings)
+               {
+                       return CreateTlsContextImpl (
+                               hostname, serverMode, protocolFlags,
+                               serverCertificate, (X509CertificateCollection)(object)clientCertificates,
+                               remoteCertRequired, encryptionPolicy, settings);
+               }
+
+               protected abstract MSI.IMonoTlsContext CreateTlsContextImpl (
+                       string hostname, bool serverMode, MSI.TlsProtocols protocolFlags,
+                       X509Certificate serverCertificate, X509CertificateCollection clientCertificates,
+                       bool remoteCertRequired, MSI.MonoEncryptionPolicy encryptionPolicy,
+                       MSI.MonoTlsSettings settings);
+
+               public override MSI.IMonoTlsContext CreateTlsContext (
+                       string hostname, bool serverMode, MSI.TlsProtocols protocolFlags,
+                       X509Certificate serverCertificate, XX509CertificateCollection clientCertificates,
+                       bool remoteCertRequired, MSI.MonoEncryptionPolicy encryptionPolicy,
+                       MSI.MonoTlsSettings settings)
+               {
+                       return CreateTlsContextImpl (
+                               hostname, serverMode, (MSI.TlsProtocols)protocolFlags,
+                               serverCertificate, (X509CertificateCollection)(object)clientCertificates,
+                               remoteCertRequired, (MSI.MonoEncryptionPolicy)encryptionPolicy,
+                               settings);
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/System/Mono.Net.Security/MonoTlsProviderWrapper.cs b/mcs/class/System/Mono.Net.Security/MonoTlsProviderWrapper.cs
new file mode 100644 (file)
index 0000000..e2ec0f5
--- /dev/null
@@ -0,0 +1,102 @@
+//
+// MonoTlsProviderWrapper.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if SECURITY_DEP
+
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MSI = MonoSecurity::Mono.Security.Interface;
+#else
+using MSI = Mono.Security.Interface;
+#endif
+#if MONO_X509_ALIAS
+using XHttpWebRequest = PrebuiltSystem::System.Net.HttpWebRequest;
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#else
+using XHttpWebRequest = System.Net.HttpWebRequest;
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Security;
+using System.Security.Cryptography.X509Certificates;
+
+namespace Mono.Net.Security.Private
+{
+       /*
+        * Strictly private - do not use outside the Mono.Net.Security directory.
+        * 
+        * This is used by MonoTlsProviderFactory.InstallProvider() to wrap and masquerade
+        * a user-supplied @MonoTlsProvider as @IMonoTlsProvider.
+        */
+       class MonoTlsProviderWrapper : IMonoTlsProvider
+       {
+               MSI.MonoTlsProvider provider;
+
+               public MonoTlsProviderWrapper (MSI.MonoTlsProvider provider)
+               {
+                       this.provider = provider;
+               }
+
+               public MSI.MonoTlsProvider Provider {
+                       get { return provider; }
+               }
+
+               public IMonoSslStream CreateSslStream (
+                       Stream innerStream, bool leaveInnerStreamOpen,
+                       MSI.MonoTlsSettings settings)
+               {
+                       var sslStream = provider.CreateSslStream (innerStream, leaveInnerStreamOpen, settings);
+                       var monoSslStreamImpl = sslStream as MonoSslStreamImpl;
+                       if (monoSslStreamImpl != null)
+                               return monoSslStreamImpl.Impl;
+                       return new MonoSslStreamWrapper (sslStream);
+               }
+
+               public MSI.IMonoTlsContext CreateTlsContext (
+                       string hostname, bool serverMode, MSI.TlsProtocols protocolFlags,
+                       X509Certificate serverCertificate, XX509CertificateCollection clientCertificates,
+                       bool remoteCertRequired, bool checkCertName, bool checkCertRevocationStatus,
+                       MSI.MonoEncryptionPolicy encryptionPolicy, MSI.MonoTlsSettings settings)
+               {
+                       return provider.CreateTlsContext (
+                               hostname, serverMode, protocolFlags,
+                               serverCertificate, (XX509CertificateCollection)(object)clientCertificates,
+                               remoteCertRequired, (MSI.MonoEncryptionPolicy)encryptionPolicy,
+                               settings);
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/System/Mono.Net.Security/MonoTlsStream.cs b/mcs/class/System/Mono.Net.Security/MonoTlsStream.cs
new file mode 100644 (file)
index 0000000..db6e66c
--- /dev/null
@@ -0,0 +1,134 @@
+//
+// MonoTlsStream.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MonoSecurity::Mono.Security.Interface;
+#else
+using Mono.Security.Interface;
+#endif
+#if MONO_X509_ALIAS
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#else
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
+#endif
+
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Sockets;
+using System.Net.Security;
+using System.Threading.Tasks;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.Security.Cryptography;
+
+namespace Mono.Net.Security
+{
+       class MonoTlsStream
+       {
+               readonly IMonoTlsProvider provider;
+               readonly HttpWebRequest request;
+               readonly NetworkStream networkStream;
+
+               IMonoSslStream sslStream;
+               WebExceptionStatus status;
+
+               internal HttpWebRequest Request {
+                       get { return request; }
+               }
+
+               internal IMonoSslStream SslStream {
+                       get { return sslStream; }
+               }
+
+               internal WebExceptionStatus ExceptionStatus {
+                       get { return status; }
+               }
+
+               internal bool CertificateValidationFailed {
+                       get; set;
+               }
+
+#if SECURITY_DEP
+               readonly ChainValidationHelper validationHelper;
+               readonly MonoTlsSettings settings;
+
+               public MonoTlsStream (HttpWebRequest request, NetworkStream networkStream)
+               {
+                       this.request = request;
+                       this.networkStream = networkStream;
+
+                       settings = request.TlsSettings;
+                       provider = request.TlsProvider ?? MonoTlsProviderFactory.GetProviderInternal ();
+                       status = WebExceptionStatus.SecureChannelFailure;
+
+                       validationHelper = ChainValidationHelper.Create (provider.Provider, ref settings, this);
+               }
+
+               internal Stream CreateStream (byte[] buffer)
+               {
+                       sslStream = provider.CreateSslStream (networkStream, false, settings);
+
+                       try {
+                               sslStream.AuthenticateAsClient (
+                                       request.Address.Host, (XX509CertificateCollection)(object)request.ClientCertificates,
+                                       (SslProtocols)ServicePointManager.SecurityProtocol,
+                                       ServicePointManager.CheckCertificateRevocationList);
+
+                               status = WebExceptionStatus.Success;
+                       } finally {
+                               if (CertificateValidationFailed)
+                                       status = WebExceptionStatus.TrustFailure;
+
+                               request.ServicePoint.SetClientCertificate (sslStream.InternalLocalCertificate);
+                               if (status != WebExceptionStatus.Success)
+                                       sslStream = null;
+                       }
+
+                       try {
+                               if (buffer != null)
+                                       sslStream.Write (buffer, 0, buffer.Length);
+                       } catch {
+                               status = WebExceptionStatus.SendFailure;
+                               sslStream = null;
+                               throw;
+                       }
+
+                       return sslStream.AuthenticatedStream;
+               }
+#endif
+       }
+}
diff --git a/mcs/class/System/Mono.Net.Security/NoReflectionHelper.cs b/mcs/class/System/Mono.Net.Security/NoReflectionHelper.cs
new file mode 100644 (file)
index 0000000..f4ccac8
--- /dev/null
@@ -0,0 +1,124 @@
+//
+// NoReflectionHelper.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+using MSI = MonoSecurity::Mono.Security.Interface;
+using MX = MonoSecurity::Mono.Security.X509;
+#else
+using MSI = Mono.Security.Interface;
+using MX = Mono.Security.X509;
+#endif
+using System.Security.Cryptography.X509Certificates;
+#endif
+
+using System;
+using System.Net;
+using System.Net.Security;
+
+namespace Mono.Net.Security
+{
+       //
+       // Internal APIs which are used by Mono.Security.dll to avoid using reflection.
+       //
+       internal static class NoReflectionHelper
+       {
+               internal static object GetDefaultCertificateValidator (object provider, object settings)
+               {
+                       #if SECURITY_DEP
+                       return ChainValidationHelper.GetDefaultValidator ((MSI.MonoTlsProvider)provider, (MSI.MonoTlsSettings)settings);
+                       #else
+                       throw new NotSupportedException ();
+                       #endif
+               }
+
+               internal static object GetProvider ()
+               {
+                       #if SECURITY_DEP
+                       return MonoTlsProviderFactory.GetProvider ();
+                       #else
+                       throw new NotSupportedException ();
+                       #endif
+               }
+
+               internal static object GetDefaultProvider ()
+               {
+                       #if SECURITY_DEP
+                       return MonoTlsProviderFactory.GetDefaultProvider ();
+                       #else
+                       throw new NotSupportedException ();
+                       #endif
+               }
+
+               internal static bool HasProvider {
+                       get {
+                               #if SECURITY_DEP
+                               return MonoTlsProviderFactory.HasProvider;
+                               #else
+                               throw new NotSupportedException ();
+                               #endif
+                       }
+               }
+
+               internal static void InstallProvider (object provider)
+               {
+                       #if SECURITY_DEP
+                       MonoTlsProviderFactory.InstallProvider ((MSI.MonoTlsProvider)provider);
+                       #else
+                       throw new NotSupportedException ();
+                       #endif
+               }
+
+               internal static HttpWebRequest CreateHttpsRequest (Uri requestUri, object provider, object settings)
+               {
+                       #if SECURITY_DEP
+                       return MonoTlsProviderFactory.CreateHttpsRequest (requestUri, (MSI.MonoTlsProvider)provider, (MSI.MonoTlsSettings)settings);
+                       #else
+                       throw new NotSupportedException ();
+                       #endif
+               }
+
+               internal static object CreateHttpListener (object certificate, object provider, object settings)
+               {
+                       #if SECURITY_DEP
+                       return MonoTlsProviderFactory.CreateHttpListener ((X509Certificate)certificate, (MSI.MonoTlsProvider)provider, (MSI.MonoTlsSettings)settings);
+                       #else
+                       throw new NotSupportedException ();
+                       #endif
+               }
+
+               internal static object GetMonoSslStream (SslStream stream)
+               {
+                       #if SECURITY_DEP
+                       return stream.Impl;
+                       #else
+                       throw new NotSupportedException ();
+                       #endif
+               }
+
+       }
+}
diff --git a/mcs/class/System/Mono.Net.Security/SystemCertificateValidator.cs b/mcs/class/System/Mono.Net.Security/SystemCertificateValidator.cs
new file mode 100644 (file)
index 0000000..f0a0be3
--- /dev/null
@@ -0,0 +1,465 @@
+#if SECURITY_DEP
+
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MonoSecurity::Mono.Security.Interface;
+using MSX = MonoSecurity::Mono.Security.X509;
+using MonoSecurity::Mono.Security.X509.Extensions;
+#else
+using Mono.Security.Interface;
+using MSX = Mono.Security.X509;
+using Mono.Security.X509.Extensions;
+#endif
+#if MONO_X509_ALIAS
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+using XX509Chain = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509Chain;
+#else
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+using XX509Chain = System.Security.Cryptography.X509Certificates.X509Chain;
+#endif
+
+using System;
+using System.Net;
+using System.Threading;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+using System.Configuration;
+using System.Net.Configuration;
+using System.Text.RegularExpressions;
+using System.Security.Cryptography.X509Certificates;
+
+using System.Globalization;
+using System.Net.Security;
+using System.Diagnostics;
+
+namespace Mono.Net.Security
+{
+       internal static class SystemCertificateValidator
+       {
+               static bool is_macosx;
+#if !MOBILE
+               static X509RevocationMode revocation_mode;
+#endif
+
+               static SystemCertificateValidator ()
+               {
+#if MONOTOUCH
+                       is_macosx = true;
+#elif MONODROID
+                       is_macosx = false;
+#else
+                       is_macosx = System.IO.File.Exists (OSX509Certificates.SecurityLibrary);
+#endif
+
+#if !MOBILE
+                       revocation_mode = X509RevocationMode.NoCheck;
+                       try {
+                               string str = Environment.GetEnvironmentVariable ("MONO_X509_REVOCATION_MODE");
+                               if (String.IsNullOrEmpty (str))
+                                       return;
+                               revocation_mode = (X509RevocationMode)Enum.Parse (typeof(X509RevocationMode), str, true);
+                       } catch {
+                       }
+#endif
+               }
+
+               public static X509Chain CreateX509Chain (XX509CertificateCollection certs)
+               {
+                       var chain = new X509Chain ();
+                       chain.ChainPolicy = new X509ChainPolicy ();
+
+#if !MOBILE
+                       chain.ChainPolicy.RevocationMode = revocation_mode;
+#endif
+
+                       for (int i = 1; i < certs.Count; i++) {
+                               chain.ChainPolicy.ExtraStore.Add (certs [i]);
+                       }
+
+                       return chain;
+               }
+
+               public static bool BuildX509Chain (XX509CertificateCollection certs, X509Chain chain, ref SslPolicyErrors errors, ref int status11)
+               {
+#if MOBILE
+                       return true;
+#else
+                       if (is_macosx)
+                               return true;
+
+                       var leaf = (X509Certificate2)certs [0];
+
+                       bool ok;
+                       try {
+                               ok = chain.Build (leaf);
+                               if (!ok)
+                                       errors |= GetErrorsFromChain (chain);
+                       } catch (Exception e) {
+                               Console.Error.WriteLine ("ERROR building certificate chain: {0}", e);
+                               Console.Error.WriteLine ("Please, report this problem to the Mono team");
+                               errors |= SslPolicyErrors.RemoteCertificateChainErrors;
+                               ok = false;
+                       }
+
+                       try {
+                               status11 = GetStatusFromChain (chain);
+                       } catch {
+                               status11 = -2146762485; // TRUST_E_FAIL - generic
+                       }
+
+                       return ok;
+#endif
+               }
+
+               static bool CheckUsage (XX509CertificateCollection certs, string host, ref SslPolicyErrors errors, ref int status11)
+               {
+#if !MONOTOUCH
+                       var leaf = (X509Certificate2)certs[0];
+                       // for OSX and iOS we're using the native API to check for the SSL server policy and host names
+                       if (!is_macosx) {
+                               if (!CheckCertificateUsage (leaf)) {
+                                       errors |= SslPolicyErrors.RemoteCertificateChainErrors;
+                                       status11 = -2146762490; //CERT_E_PURPOSE 0x800B0106
+                                       return false;
+                               }
+
+                               if (host != null && !CheckServerIdentity (leaf, host)) {
+                                       errors |= SslPolicyErrors.RemoteCertificateNameMismatch;
+                                       status11 = -2146762481; // CERT_E_CN_NO_MATCH 0x800B010F
+                                       return false;
+                               }
+                       }
+#endif
+                       return true;
+               }
+
+               static bool EvaluateSystem (XX509CertificateCollection certs, XX509CertificateCollection anchors, string host, X509Chain chain, ref SslPolicyErrors errors, ref int status11)
+               {
+                       var leaf = certs [0];
+                       var result = false;
+
+#if MONODROID
+                       result = AndroidPlatform.TrustEvaluateSsl (certs);
+                       if (result) {
+                               // chain.Build() + GetErrorsFromChain() (above) will ALWAYS fail on
+                               // Android (there are no mozroots or preinstalled root certificates),
+                               // thus `errors` will ALWAYS have RemoteCertificateChainErrors.
+                               // Android just verified the chain; clear RemoteCertificateChainErrors.
+                               errors  &= ~SslPolicyErrors.RemoteCertificateChainErrors;
+                       }
+#else
+                       if (is_macosx) {
+                               // Attempt to use OSX certificates
+                               // Ideally we should return the SecTrustResult
+                               OSX509Certificates.SecTrustResult trustResult = OSX509Certificates.SecTrustResult.Deny;
+                               try {
+                                       trustResult = OSX509Certificates.TrustEvaluateSsl (certs, anchors, host);
+                                       // We could use the other values of trustResult to pass this extra information
+                                       // to the .NET 2 callback for values like SecTrustResult.Confirm
+                                       result = (trustResult == OSX509Certificates.SecTrustResult.Proceed ||
+                                               trustResult == OSX509Certificates.SecTrustResult.Unspecified);
+                               } catch {
+                                       // Ignore
+                               }
+
+                               if (result) {
+                                       // TrustEvaluateSsl was successful so there's no trust error
+                                       // IOW we discard our own chain (since we trust OSX one instead)
+                                       errors = 0;
+                               } else {
+                                       // callback and DefaultCertificatePolicy needs this since 'result' is not specified
+                                       status11 = (int)trustResult;
+                                       errors |= SslPolicyErrors.RemoteCertificateChainErrors;
+                               }
+                       }
+#endif
+
+                       return result;
+               }
+
+               public static bool Evaluate (
+                       MonoTlsSettings settings, string host, XX509CertificateCollection certs,
+                       X509Chain chain, ref SslPolicyErrors errors, ref int status11)
+               {
+                       if (!CheckUsage (certs, host, ref errors, ref status11))
+                               return false;
+
+                       if (settings != null && settings.SkipSystemValidators)
+                               return false;
+
+                       var anchors = settings != null ? settings.TrustAnchors : null;
+                       return EvaluateSystem (certs, anchors, host, chain, ref errors, ref status11);
+               }
+
+               internal static bool NeedsChain (MonoTlsSettings settings)
+               {
+#if MOBILE
+                       return false;
+#else
+                       if (!CertificateValidationHelper.SupportsX509Chain)
+                               return false;
+                       if (settings != null)
+                               return !settings.SkipSystemValidators || settings.CallbackNeedsCertificateChain;
+                       else
+                               return true;
+#endif
+               }
+
+#if !MOBILE
+               static int GetStatusFromChain (X509Chain chain)
+               {
+                       long result = 0;
+                       foreach (var status in chain.ChainStatus) {
+                               X509ChainStatusFlags flags = status.Status;
+                               if (flags == X509ChainStatusFlags.NoError)
+                                       continue;
+
+                               // CERT_E_EXPIRED
+                               if ((flags & X509ChainStatusFlags.NotTimeValid) != 0)
+                                       result = 0x800B0101;
+                               // CERT_E_VALIDITYPERIODNESTING
+                               else if ((flags & X509ChainStatusFlags.NotTimeNested) != 0)
+                                       result = 0x800B0102;
+                               // CERT_E_REVOKED
+                               else if ((flags & X509ChainStatusFlags.Revoked) != 0)
+                                       result = 0x800B010C;
+                               // TRUST_E_CERT_SIGNATURE
+                               else if ((flags & X509ChainStatusFlags.NotSignatureValid) != 0)
+                                       result = 0x80096004;
+                               // CERT_E_WRONG_USAGE
+                               else if ((flags & X509ChainStatusFlags.NotValidForUsage) != 0)
+                                       result = 0x800B0110;
+                               // CERT_E_UNTRUSTEDROOT
+                               else if ((flags & X509ChainStatusFlags.UntrustedRoot) != 0)
+                                       result = 0x800B0109;
+                               // CRYPT_E_NO_REVOCATION_CHECK
+                               else if ((flags & X509ChainStatusFlags.RevocationStatusUnknown) != 0)
+                                       result = 0x80092012;
+                               // CERT_E_CHAINING
+                               else if ((flags & X509ChainStatusFlags.Cyclic) != 0)
+                                       result = 0x800B010A;
+                               // TRUST_E_FAIL - generic
+                               else if ((flags & X509ChainStatusFlags.InvalidExtension) != 0)
+                                       result = 0x800B010B;
+                               // CERT_E_UNTRUSTEDROOT
+                               else if ((flags & X509ChainStatusFlags.InvalidPolicyConstraints) != 0)
+                                       result = 0x800B010D;
+                               // TRUST_E_BASIC_CONSTRAINTS
+                               else if ((flags & X509ChainStatusFlags.InvalidBasicConstraints) != 0)
+                                       result = 0x80096019;
+                               // CERT_E_INVALID_NAME
+                               else if ((flags & X509ChainStatusFlags.InvalidNameConstraints) != 0)
+                                       result = 0x800B0114;
+                               // CERT_E_INVALID_NAME
+                               else if ((flags & X509ChainStatusFlags.HasNotSupportedNameConstraint) != 0)
+                                       result = 0x800B0114;
+                               // CERT_E_INVALID_NAME
+                               else if ((flags & X509ChainStatusFlags.HasNotDefinedNameConstraint) != 0)
+                                       result = 0x800B0114;
+                               // CERT_E_INVALID_NAME
+                               else if ((flags & X509ChainStatusFlags.HasNotPermittedNameConstraint) != 0)
+                                       result = 0x800B0114;
+                               // CERT_E_INVALID_NAME
+                               else if ((flags & X509ChainStatusFlags.HasExcludedNameConstraint) != 0)
+                                       result = 0x800B0114;
+                               // CERT_E_CHAINING
+                               else if ((flags & X509ChainStatusFlags.PartialChain) != 0)
+                                       result = 0x800B010A;
+                               // CERT_E_EXPIRED
+                               else if ((flags & X509ChainStatusFlags.CtlNotTimeValid) != 0)
+                                       result = 0x800B0101;
+                               // TRUST_E_CERT_SIGNATURE
+                               else if ((flags & X509ChainStatusFlags.CtlNotSignatureValid) != 0)
+                                       result = 0x80096004;
+                               // CERT_E_WRONG_USAGE
+                               else if ((flags & X509ChainStatusFlags.CtlNotValidForUsage) != 0)
+                                       result = 0x800B0110;
+                               // CRYPT_E_NO_REVOCATION_CHECK
+                               else if ((flags & X509ChainStatusFlags.OfflineRevocation) != 0)
+                                       result = 0x80092012;
+                               // CERT_E_ISSUERCHAINING
+                               else if ((flags & X509ChainStatusFlags.NoIssuanceChainPolicy) != 0)
+                                       result = 0x800B0107;
+                               else
+                                       result = 0x800B010B; // TRUST_E_FAIL - generic
+
+                               break; // Exit the loop on the first error
+                       }
+                       return (int)result;
+               }
+
+               static SslPolicyErrors GetErrorsFromChain (X509Chain chain)
+               {
+                       SslPolicyErrors errors = SslPolicyErrors.None;
+                       foreach (var status in chain.ChainStatus) {
+                               if (status.Status == X509ChainStatusFlags.NoError)
+                                       continue;
+                               errors |= SslPolicyErrors.RemoteCertificateChainErrors;
+                               break;
+                       }
+                       return errors;
+               }
+#endif
+
+#if !MONOTOUCH
+               static X509KeyUsageFlags s_flags = X509KeyUsageFlags.DigitalSignature |
+                       X509KeyUsageFlags.KeyAgreement |
+                       X509KeyUsageFlags.KeyEncipherment;
+               // Adapted to System 2.0+ from TlsServerCertificate.cs
+               //------------------------------
+               // Note: this method only works for RSA certificates
+               // DH certificates requires some changes - does anyone use one ?
+               static bool CheckCertificateUsage (X509Certificate2 cert)
+               {
+                       try {
+                               // certificate extensions are required for this
+                               // we "must" accept older certificates without proofs
+                               if (cert.Version < 3)
+                                       return true;
+
+                               X509KeyUsageExtension kux = (cert.Extensions ["2.5.29.15"] as X509KeyUsageExtension);
+                               X509EnhancedKeyUsageExtension eku = (cert.Extensions ["2.5.29.37"] as X509EnhancedKeyUsageExtension);
+                               if (kux != null && eku != null) {
+                                       // RFC3280 states that when both KeyUsageExtension and 
+                                       // ExtendedKeyUsageExtension are present then BOTH should
+                                       // be valid
+                                       if ((kux.KeyUsages & s_flags) == 0)
+                                               return false;
+                                       return eku.EnhancedKeyUsages ["1.3.6.1.5.5.7.3.1"] != null ||
+                                               eku.EnhancedKeyUsages ["2.16.840.1.113730.4.1"] != null;
+                               } else if (kux != null) {
+                                       return ((kux.KeyUsages & s_flags) != 0);
+                               } else if (eku != null) {
+                                       // Server Authentication (1.3.6.1.5.5.7.3.1) or
+                                       // Netscape Server Gated Crypto (2.16.840.1.113730.4)
+                                       return eku.EnhancedKeyUsages ["1.3.6.1.5.5.7.3.1"] != null ||
+                                               eku.EnhancedKeyUsages ["2.16.840.1.113730.4.1"] != null;
+                               }
+
+                               // last chance - try with older (deprecated) Netscape extensions
+                               X509Extension ext = cert.Extensions ["2.16.840.1.113730.1.1"];
+                               if (ext != null) {
+                                       string text = ext.NetscapeCertType (false);
+                                       return text.IndexOf ("SSL Server Authentication", StringComparison.Ordinal) != -1;
+                               }
+                               return true;
+                       } catch (Exception e) {
+                               Console.Error.WriteLine ("ERROR processing certificate: {0}", e);
+                               Console.Error.WriteLine ("Please, report this problem to the Mono team");
+                               return false;
+                       }
+               }
+
+               // RFC2818 - HTTP Over TLS, Section 3.1
+               // http://www.ietf.org/rfc/rfc2818.txt
+               //
+               // 1.   if present MUST use subjectAltName dNSName as identity
+               // 1.1.         if multiples entries a match of any one is acceptable
+               // 1.2.         wildcard * is acceptable
+               // 2.   URI may be an IP address -> subjectAltName.iPAddress
+               // 2.1.         exact match is required
+               // 3.   Use of the most specific Common Name (CN=) in the Subject
+               // 3.1          Existing practice but DEPRECATED
+               static bool CheckServerIdentity (X509Certificate2 cert, string targetHost)
+               {
+                       try {
+                               var mcert = new MSX.X509Certificate (cert.RawData);
+                               MSX.X509Extension ext = mcert.Extensions ["2.5.29.17"];
+                               // 1. subjectAltName
+                               if (ext != null) {
+                                       SubjectAltNameExtension subjectAltName = new SubjectAltNameExtension (ext);
+                                       // 1.1 - multiple dNSName
+                                       foreach (string dns in subjectAltName.DNSNames) {
+                                               // 1.2 TODO - wildcard support
+                                               if (Match (targetHost, dns))
+                                                       return true;
+                                       }
+                                       // 2. ipAddress
+                                       foreach (string ip in subjectAltName.IPAddresses) {
+                                               // 2.1. Exact match required
+                                               if (ip == targetHost)
+                                                       return true;
+                                       }
+                               }
+                               // 3. Common Name (CN=)
+                               return CheckDomainName (mcert.SubjectName, targetHost);
+                       } catch (Exception e) {
+                               Console.Error.WriteLine ("ERROR processing certificate: {0}", e);
+                               Console.Error.WriteLine ("Please, report this problem to the Mono team");
+                               return false;
+                       }
+               }
+
+               static bool CheckDomainName (string subjectName, string targetHost)
+               {
+                       string  domainName = String.Empty;
+                       Regex search = new Regex (@"CN\s*=\s*([^,]*)");
+                       MatchCollection elements = search.Matches (subjectName);
+                       if (elements.Count == 1) {
+                               if (elements [0].Success)
+                                       domainName = elements [0].Groups [1].Value.ToString ();
+                       }
+
+                       return Match (targetHost, domainName);
+               }
+
+               // ensure the pattern is valid wrt to RFC2595 and RFC2818
+               // http://www.ietf.org/rfc/rfc2595.txt
+               // http://www.ietf.org/rfc/rfc2818.txt
+               static bool Match (string hostname, string pattern)
+               {
+                       // check if this is a pattern
+                       int index = pattern.IndexOf ('*');
+                       if (index == -1) {
+                               // not a pattern, do a direct case-insensitive comparison
+                               return (String.Compare (hostname, pattern, true, CultureInfo.InvariantCulture) == 0);
+                       }
+
+                       // check pattern validity
+                       // A "*" wildcard character MAY be used as the left-most name component in the certificate.
+
+                       // unless this is the last char (valid)
+                       if (index != pattern.Length - 1) {
+                               // then the next char must be a dot .'.
+                               if (pattern [index + 1] != '.')
+                                       return false;
+                       }
+
+                       // only one (A) wildcard is supported
+                       int i2 = pattern.IndexOf ('*', index + 1);
+                       if (i2 != -1)
+                               return false;
+
+                       // match the end of the pattern
+                       string end = pattern.Substring (index + 1);
+                       int length = hostname.Length - end.Length;
+                       // no point to check a pattern that is longer than the hostname
+                       if (length <= 0)
+                               return false;
+
+                       if (String.Compare (hostname, length, end, 0, end.Length, true, CultureInfo.InvariantCulture) != 0)
+                               return false;
+
+                       // special case, we start with the wildcard
+                       if (index == 0) {
+                               // ensure we hostname non-matched part (start) doesn't contain a dot
+                               int i3 = hostname.IndexOf ('.');
+                               return ((i3 == -1) || (i3 >= (hostname.Length - end.Length)));
+                       }
+
+                       // match the start of the pattern
+                       string start = pattern.Substring (0, index);
+                       return (String.Compare (hostname, 0, start, 0, start.Length, true, CultureInfo.InvariantCulture) == 0);
+               }
+#endif
+       }
+}
+#endif
+
diff --git a/mcs/class/System/ReferenceSources/Internal.cs b/mcs/class/System/ReferenceSources/Internal.cs
new file mode 100644 (file)
index 0000000..6c50450
--- /dev/null
@@ -0,0 +1,80 @@
+//
+// Internal.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System.Runtime.InteropServices;
+using System.Security.Cryptography.X509Certificates;
+
+namespace System.Net.Security
+{
+       //From Schannel.h
+       [Flags]
+       internal enum SchProtocols
+       {
+               Zero = 0,
+               PctClient = 0x00000002,
+               PctServer = 0x00000001,
+               Pct = (PctClient | PctServer),
+               Ssl2Client = 0x00000008,
+               Ssl2Server = 0x00000004,
+               Ssl2 = (Ssl2Client | Ssl2Server),
+               Ssl3Client = 0x00000020,
+               Ssl3Server = 0x00000010,
+               Ssl3 = (Ssl3Client | Ssl3Server),
+               Tls10Client = 0x00000080,
+               Tls10Server = 0x00000040,
+               Tls10 = (Tls10Client | Tls10Server),
+               Tls11Client = 0x00000200,
+               Tls11Server = 0x00000100,
+               Tls11 = (Tls11Client | Tls11Server),
+               Tls12Client = 0x00000800,
+               Tls12Server = 0x00000400,
+               Tls12 = (Tls12Client | Tls12Server),
+               Ssl3Tls = (Ssl3 | Tls10),
+               UniClient = unchecked((int)0x80000000),
+               UniServer = 0x40000000,
+               Unified = (UniClient | UniServer),
+               ClientMask = (PctClient | Ssl2Client | Ssl3Client | Tls10Client | Tls11Client | Tls12Client | UniClient),
+               ServerMask = (PctServer | Ssl2Server | Ssl3Server | Tls10Server | Tls11Server | Tls12Server | UniServer)
+       }
+
+       //From Schannel.h
+       [StructLayout (LayoutKind.Sequential)]
+       internal class SslConnectionInfo
+       {
+               public readonly int Protocol;
+               public readonly int DataCipherAlg;
+               public readonly int DataKeySize;
+               public readonly int DataHashAlg;
+               public readonly int DataHashKeySize;
+               public readonly int KeyExchangeAlg;
+               public readonly int KeyExchKeySize;
+
+               internal SslConnectionInfo (int protocol)
+               {
+                       Protocol = protocol;
+               }
+       }
+}
index 71c1c5a9abbeaa624d38075de3dd569d16f4e01c..fe8da2b35823b9b8680f57a91ba898afb2ef4634 100644 (file)
@@ -1,3 +1,4 @@
+#if !MONO_FEATURE_NEW_TLS
 using System.Diagnostics;
 
 namespace System.Net {
@@ -28,6 +29,9 @@ namespace System.Net {
                internal static void Exit(TraceSource traceSource, object obj, string method, object retObject) {
                }
 
+               internal static void PrintInfo(TraceSource traceSource, object obj, string method, string msg) {
+               }
+
                internal static void PrintWarning(TraceSource traceSource, object obj, string method, string msg) {
                }
        }
@@ -40,4 +44,5 @@ namespace System.Net {
        }
 
 #endif
-}
\ No newline at end of file
+}
+#endif
index dbda7ac686451f3e87dc078ed726f5fa0dc9e5cc..fe0aedf17c849fa0330db2a5353a6a13895f658d 100644 (file)
@@ -61,6 +61,7 @@ partial class SR
        public const string UnterminatedBracket="Unterminated [] set.";
        public const string UnterminatedComment="Unterminated (?#...) comment.";
        
+       public const string ArgumentNull_Array = "ArgumentNull_Array";
        public const string ArgumentNull_ArrayWithNullElements = "ArgumentNull_ArrayWithNullElements";
        public const string Arg_ArrayPlusOffTooSmall = "Arg_ArrayPlusOffTooSmall";
        public const string Arg_InsufficientSpace = "Arg_InsufficientSpace";
@@ -74,6 +75,7 @@ partial class SR
        public const string Argument_AddingDuplicate = "Argument_AddingDuplicate";
        public const string Argument_ImplementIComparable = "Argument_ImplementIComparable";
        public const string Argument_InvalidOffLen = "Argument_InvalidOffLen";
+       public const string Argument_InvalidThreshold = "Argument_InvalidThreshold";
        public const string ExternalLinkedListNode = "ExternalLinkedListNode";
        public const string InvalidOperation_CannotRemoveFromStackOrQueue = "InvalidOperation_CannotRemoveFromStackOrQueue";
        public const string InvalidOperation_EmptyCollection = "InvalidOperation_EmptyCollection";
@@ -83,6 +85,7 @@ partial class SR
        public const string InvalidOperation_EnumFailedVersion = "InvalidOperation_EnumFailedVersion";
        public const string InvalidOperation_EnumNotStarted = "InvalidOperation_EnumNotStarted";
        public const string InvalidOperation_EnumOpCantHappen = "InvalidOperation_EnumOpCantHappen";
+       public const string InvalidOperation_HCCountOverflow = "InvalidOperation_HCCountOverflow";
        public const string Invalid_Array_Type = "Invalid_Array_Type";
        public const string LinkedListEmpty = "LinkedListEmpty";
        public const string LinkedListNodeIsAttached = "LinkedListNodeIsAttached";
diff --git a/mcs/class/System/ReferenceSources/SR2.cs b/mcs/class/System/ReferenceSources/SR2.cs
new file mode 100644 (file)
index 0000000..35d8f63
--- /dev/null
@@ -0,0 +1,12 @@
+//
+// Resource strings referenced by the code.
+//
+// Copyright 2014 Xamarin Inc
+//
+// Mono-specific additions, which are not in SR.cs.
+//
+partial class SR
+{
+       public const string mono_net_io_shutdown = "mono_net_io_shutdown";
+       public const string mono_net_io_renegotiate = "mono_net_io_renegotiate";
+}
diff --git a/mcs/class/System/ReferenceSources/SSPIConfiguration.cs b/mcs/class/System/ReferenceSources/SSPIConfiguration.cs
new file mode 100644 (file)
index 0000000..3ab4138
--- /dev/null
@@ -0,0 +1,53 @@
+//
+// SSPIConfiguration.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if MONO_FEATURE_NEW_TLS && SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Interface;
+#else
+using Mono.Security.Interface;
+#endif
+using Mono.Net.Security;
+
+namespace System.Net.Security
+{
+       internal interface SSPIConfiguration
+       {
+               IMonoTlsProvider Provider {
+                       get;
+               }
+
+               MonoTlsSettings Settings {
+                       get;
+               }
+
+               IMonoTlsEventSink EventSink {
+                       get;
+               }
+       }
+}
+#endif
diff --git a/mcs/class/System/ReferenceSources/SSPISafeHandles.cs b/mcs/class/System/ReferenceSources/SSPISafeHandles.cs
new file mode 100644 (file)
index 0000000..b7c1da7
--- /dev/null
@@ -0,0 +1,208 @@
+//
+// SafeHandles.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+#if MONO_FEATURE_NEW_TLS && SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+using IMonoTlsContext = MonoSecurity::Mono.Security.Interface.IMonoTlsContext;
+#else
+using IMonoTlsContext = Mono.Security.Interface.IMonoTlsContext;
+#endif
+
+using System.Runtime.InteropServices;
+using System.Security.Cryptography.X509Certificates;
+
+namespace System.Net.Security
+{
+       class DummySafeHandle : SafeHandle
+       {
+               protected DummySafeHandle ()
+                       : base ((IntPtr)(-1), true)
+               {
+               }
+
+               protected override bool ReleaseHandle ()
+               {
+                       return true;
+               }
+
+               public override bool IsInvalid {
+                       get { return handle == (IntPtr)(-1); }
+               }
+       }
+
+       class SafeFreeCertContext : DummySafeHandle
+       {
+       }
+
+       class SafeFreeCredentials : DummySafeHandle
+       {
+               SecureCredential credential;
+
+               public X509Certificate2 Certificate {
+                       get {
+                               if (IsInvalid)
+                                       throw new ObjectDisposedException ("Certificate");
+                               return credential.certificate;
+                       }
+               }
+
+               public SafeFreeCredentials (SecureCredential credential)
+               {
+                       this.credential = credential;
+                       bool success = true;
+                       DangerousAddRef (ref success);
+               }
+
+               public override bool IsInvalid {
+                       get {
+                               return credential.certificate == null;
+                       }
+               }
+
+               protected override bool ReleaseHandle ()
+               {
+                       credential.Clear ();
+                       return base.ReleaseHandle ();
+               }
+       }
+
+       class SafeDeleteContext : DummySafeHandle
+       {
+               IMonoTlsContext context;
+
+               public IMonoTlsContext Context {
+                       get {
+                               if (IsInvalid)
+                                       throw new ObjectDisposedException ("TlsContext");
+                               return context;
+                       }
+               }
+
+               public SafeDeleteContext (IMonoTlsContext context)
+               {
+                       this.context = context;
+               }
+
+               public override bool IsInvalid {
+                       get {
+                               return context == null || !context.IsValid;
+                       }
+               }
+
+               protected override bool ReleaseHandle ()
+               {
+                       context.Dispose ();
+                       context = null;
+                       return base.ReleaseHandle ();
+               }
+       }
+
+       struct SecureCredential
+       {
+               public const int CurrentVersion = 0x4;
+
+               [Flags]
+               public enum Flags
+               {
+                       Zero = 0,
+                       NoSystemMapper = 0x02,
+                       NoNameCheck = 0x04,
+                       ValidateManual = 0x08,
+                       NoDefaultCred = 0x10,
+                       ValidateAuto = 0x20,
+                       UseStrongCrypto = 0x00400000
+               }
+
+               int version;
+               internal X509Certificate2 certificate;
+               SchProtocols protocols;
+               EncryptionPolicy policy;
+
+               public SecureCredential (int version, X509Certificate2 certificate, SecureCredential.Flags flags, SchProtocols protocols, EncryptionPolicy policy)
+               {
+                       this.version = version;
+                       this.certificate = certificate;
+                       this.protocols = protocols;
+                       this.policy = policy;
+               }
+
+               public void Clear ()
+               {
+                       certificate = null;
+               }
+       }
+
+       internal class SafeCredentialReference : DummySafeHandle
+       {
+               //
+               // Static cache will return the target handle if found the reference in the table.
+               //
+               internal SafeFreeCredentials _Target;
+
+               //
+               //
+               internal static SafeCredentialReference CreateReference (SafeFreeCredentials target)
+               {
+                       SafeCredentialReference result = new SafeCredentialReference (target);
+                       if (result.IsInvalid)
+                               return null;
+
+                       return result;
+               }
+
+               private SafeCredentialReference (SafeFreeCredentials target)
+                       : base ()
+               {
+                       // Bumps up the refcount on Target to signify that target handle is statically cached so
+                       // its dispose should be postponed
+                       bool b = false;
+                       try {
+                               target.DangerousAddRef (ref b);
+                       } catch {
+                               if (b) {
+                                       target.DangerousRelease ();
+                                       b = false;
+                               }
+                       } finally {
+                               if (b) {
+                                       _Target = target;
+                                       SetHandle (new IntPtr (0));   // make this handle valid
+                               }
+                       }
+               }
+
+               override protected bool ReleaseHandle ()
+               {
+                       SafeFreeCredentials target = _Target;
+                       if (target != null)
+                               target.DangerousRelease ();
+                       _Target = null;
+                       return true;
+               }
+       }
+
+}
+#endif
diff --git a/mcs/class/System/ReferenceSources/SSPIWrapper.cs b/mcs/class/System/ReferenceSources/SSPIWrapper.cs
new file mode 100644 (file)
index 0000000..629617f
--- /dev/null
@@ -0,0 +1,311 @@
+//
+// SSPIWrapper.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if MONO_FEATURE_NEW_TLS && SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
+
+#if MONO_SECURITY_ALIAS
+using MX = MonoSecurity::Mono.Security.X509;
+using MonoSecurity::Mono.Security.Interface;
+#else
+using MX = Mono.Security.X509;
+using Mono.Security.Interface;
+#endif
+#if MONO_X509_ALIAS
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#else
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
+
+using System.Runtime.InteropServices;
+using System.Security.Authentication.ExtendedProtection;
+using System.Security.Cryptography.X509Certificates;
+using MNS = Mono.Net.Security;
+
+namespace System.Net.Security
+{
+       internal class SSPIInterface
+       {
+               public IMonoTlsContext Context {
+                       get;
+                       private set;
+               }
+
+               public IMonoTlsEventSink EventSink {
+                       get;
+                       private set;
+               }
+
+               public SSPIInterface (IMonoTlsContext context, IMonoTlsEventSink eventSink)
+               {
+                       Context = context;
+                       EventSink = eventSink;
+               }
+       }
+
+       internal static class GlobalSSPI
+       {
+               internal static SSPIInterface Create (string hostname, bool serverMode, SchProtocols protocolFlags, X509Certificate serverCertificate, XX509CertificateCollection clientCertificates,
+                                                          bool remoteCertRequired, bool checkCertName, bool checkCertRevocationStatus, EncryptionPolicy encryptionPolicy,
+                                                          LocalCertSelectionCallback certSelectionDelegate, RemoteCertValidationCallback remoteValidationCallback, SSPIConfiguration userConfig)
+               {
+                       if (userConfig.Settings != null && remoteValidationCallback != null)
+                               throw new InvalidOperationException ();
+                       var context = userConfig.Provider.CreateTlsContext (
+                               hostname, serverMode, (TlsProtocols)protocolFlags, serverCertificate, clientCertificates,
+                               remoteCertRequired, checkCertName, checkCertRevocationStatus,
+                               (MonoEncryptionPolicy)encryptionPolicy, userConfig.Settings);
+                       return new SSPIInterface (context, userConfig.EventSink);
+               }
+       }
+
+       /*
+        * SSPIWrapper _is a _class that provides a managed implementation of the equivalent
+        * _class _in Microsofts .NET Framework.   
+        * 
+        * The SSPIWrapper class is used by the TLS/SSL stack to implement both the 
+        * protocol handshake as well as the encryption and decryption of messages.
+        * 
+        * Microsoft's implementation of this class is merely a P/Invoke wrapper
+        * around the native SSPI APIs on Windows.   This implementation instead, 
+        * provides a managed implementation that uses the cross platform Mono.Security 
+        * to provide the equivalent functionality.
+        * 
+        * Ideally, this should be abstracted with a different name, and decouple
+        * the naming from the SSPIWrapper name, but this allows Mono to reuse
+        * the .NET code with minimal changes.
+        * 
+        * The "internal" methods here are the API that is consumed by the class
+        * libraries.
+        */
+       internal static class SSPIWrapper
+       {
+               static void SetCredentials (SSPIInterface secModule, SafeFreeCredentials credentials)
+               {
+                       if (credentials != null && !credentials.IsInvalid) {
+                               if (!secModule.Context.HasCredentials && credentials.Certificate != null) {
+                                       var cert = new X509Certificate2 (credentials.Certificate.RawData);
+                                       secModule.Context.SetCertificate (cert, credentials.Certificate.PrivateKey);
+                               }
+                               bool success = true;
+                               credentials.DangerousAddRef (ref success);
+                       }
+               }
+
+               /*
+                * @safecontext is null on the first use, but it will become non-null for invocations 
+                * where the connection is being re-negotiated.
+                * 
+               */
+               internal static int AcceptSecurityContext (SSPIInterface secModule, ref SafeFreeCredentials credentials, ref SafeDeleteContext safeContext, ContextFlags inFlags, Endianness endianness, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, ref ContextFlags outFlags)
+               {
+                       if (endianness != Endianness.Native)
+                               throw new NotSupportedException ();
+
+                       if (safeContext == null) {
+                               if (credentials == null || credentials.IsInvalid)
+                                       return (int)SecurityStatus.CredentialsNeeded;
+
+                               secModule.Context.Initialize (secModule.EventSink);
+                               safeContext = new SafeDeleteContext (secModule.Context);
+                       }
+
+                       SetCredentials (secModule, credentials);
+
+                       var incoming = GetInputBuffer (inputBuffer);
+                       IBufferOffsetSize outgoing;
+
+                       var retval = (int)safeContext.Context.GenerateNextToken (incoming, out outgoing);
+                       UpdateOutput (outgoing, outputBuffer);
+                       return retval;
+               }
+
+               internal static int InitializeSecurityContext (SSPIInterface secModule, ref SafeFreeCredentials credentials, ref SafeDeleteContext safeContext, string targetName, ContextFlags inFlags, Endianness endianness, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, ref ContextFlags outFlags)
+               {
+                       if (inputBuffer != null)
+                               throw new InvalidOperationException ();
+
+                       if (safeContext == null) {
+                               secModule.Context.Initialize (secModule.EventSink);
+                               safeContext = new SafeDeleteContext (secModule.Context);
+                       }
+
+                       return InitializeSecurityContext (secModule, credentials, ref safeContext, targetName, inFlags, endianness, null, outputBuffer, ref outFlags);
+               }
+
+               internal static int InitializeSecurityContext (SSPIInterface secModule, SafeFreeCredentials credentials, ref SafeDeleteContext safeContext, string targetName, ContextFlags inFlags, Endianness endianness, SecurityBuffer[] inputBuffers, SecurityBuffer outputBuffer, ref ContextFlags outFlags)
+               {
+                       if (endianness != Endianness.Native)
+                               throw new NotSupportedException ();
+
+                       SetCredentials (secModule, credentials);
+
+                       SecurityBuffer inputBuffer = null;
+                       if (inputBuffers != null) {
+                               if (inputBuffers.Length != 2 || inputBuffers [1].type != BufferType.Empty)
+                                       throw new NotSupportedException ();
+                               inputBuffer = inputBuffers [0];
+                       }
+
+                       var incoming = GetInputBuffer (inputBuffer);
+                       IBufferOffsetSize outgoing = null;
+
+                       var retval = (int)safeContext.Context.GenerateNextToken (incoming, out outgoing);
+                       UpdateOutput (outgoing, outputBuffer);
+                       return retval;
+               }
+
+               internal static int EncryptMessage (SSPIInterface secModule, SafeDeleteContext safeContext, SecurityBuffer securityBuffer, uint sequenceNumber)
+               {
+                       var incoming = GetInputBuffer (securityBuffer);
+                       var retval = (int)safeContext.Context.EncryptMessage (ref incoming);
+                       UpdateOutput (incoming, securityBuffer);
+                       return retval;
+               }
+
+               internal static int DecryptMessage (SSPIInterface secModule, SafeDeleteContext safeContext, SecurityBuffer securityBuffer, uint sequenceNumber)
+               {
+                       var incoming = GetInputBuffer (securityBuffer);
+                       var retval = (int)safeContext.Context.DecryptMessage (ref incoming);
+                       UpdateOutput (incoming, securityBuffer);
+                       return retval;
+               }
+
+               internal static byte[] CreateShutdownMessage (SSPIInterface secModule, SafeDeleteContext safeContext)
+               {
+                       return safeContext.Context.CreateCloseNotify ();
+               }
+
+               internal static byte[] CreateHelloRequestMessage (SSPIInterface secModule, SafeDeleteContext safeContext)
+               {
+                       return safeContext.Context.CreateHelloRequest ();
+               }
+
+               internal static bool IsClosed (SSPIInterface secModule, SafeDeleteContext safeContext)
+               {
+                       return safeContext.Context.ReceivedCloseNotify;
+               }
+
+               internal static SafeFreeCredentials AcquireCredentialsHandle (SSPIInterface SecModule, string package, CredentialUse intent, SecureCredential scc)
+               {
+                       return new SafeFreeCredentials (scc);
+               }
+
+               public static ChannelBinding QueryContextChannelBinding (SSPIInterface SecModule, SafeDeleteContext securityContext, ContextAttribute contextAttribute)
+               {
+                       return null;
+               }
+
+               internal static X509Certificate2 GetRemoteCertificate (SafeDeleteContext safeContext, out X509Certificate2Collection remoteCertificateStore)
+               {
+                       XX509CertificateCollection monoCollection;
+                       if (safeContext == null || safeContext.IsInvalid) {
+                               remoteCertificateStore = null;
+                               return null;
+                       }
+                       var monoCert = safeContext.Context.GetRemoteCertificate (out monoCollection);
+                       if (monoCert == null) {
+                               remoteCertificateStore = null;
+                               return null;
+                       }
+
+                       remoteCertificateStore = new X509Certificate2Collection ();
+                       foreach (var cert in monoCollection) {
+                               remoteCertificateStore.Add (cert);
+                       }
+                       return (X509Certificate2)monoCert;
+               }
+
+               internal static bool CheckRemoteCertificate (SafeDeleteContext safeContext)
+               {
+                       return safeContext.Context.VerifyRemoteCertificate ();
+               }
+
+               internal static MonoTlsConnectionInfo GetMonoConnectionInfo (SSPIInterface SecModule, SafeDeleteContext securityContext)
+               {
+                       return securityContext.Context.GetConnectionInfo ();
+               }
+
+               internal static SslConnectionInfo GetConnectionInfo (SSPIInterface SecModule, SafeDeleteContext securityContext)
+               {
+                       var info = securityContext.Context.GetConnectionInfo ();
+                       if (info == null)
+                               return null;
+
+                       return new SslConnectionInfo ((int)info.ProtocolVersion);
+               }
+
+               class InputBuffer : IBufferOffsetSize
+               {
+                       public byte[] Buffer {
+                               get;
+                               private set;
+                       }
+
+                       public int Offset {
+                               get;
+                               private set;
+                       }
+
+                       public int Size {
+                               get;
+                               private set;
+                       }
+
+                       public InputBuffer (byte[] buffer, int offset, int size)
+                       {
+                               Buffer = buffer;
+                               Offset = offset;
+                               Size = size;
+                       }
+               }
+
+               static IBufferOffsetSize GetInputBuffer (SecurityBuffer incoming)
+               {
+                       return incoming != null ? new InputBuffer (incoming.token, incoming.offset, incoming.size) : null;
+               }
+
+               static void UpdateOutput (IBufferOffsetSize buffer, SecurityBuffer outputBuffer)
+               {
+                       if (buffer != null) {
+                               outputBuffer.token = buffer.Buffer;
+                               outputBuffer.offset = buffer.Offset;
+                               outputBuffer.size = buffer.Size;
+                               outputBuffer.type = BufferType.Token;
+                       } else {
+                               outputBuffer.token = null;
+                               outputBuffer.size = outputBuffer.offset = 0;
+                               outputBuffer.type = BufferType.Empty;
+                       }
+               }
+       }
+}
+#endif
diff --git a/mcs/class/System/ReferenceSources/SslStream.cs b/mcs/class/System/ReferenceSources/SslStream.cs
new file mode 100644 (file)
index 0000000..fea8922
--- /dev/null
@@ -0,0 +1,141 @@
+//
+// Mono-specific additions to Microsoft's SslStream.cs
+//
+#if MONO_FEATURE_NEW_TLS && SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Interface;
+#else
+using Mono.Security.Interface;
+#endif
+using System.Threading;
+using System.Security.Cryptography.X509Certificates;
+using MNS = Mono.Net.Security;
+
+namespace System.Net.Security
+{
+       using System.Net.Sockets;
+       using System.IO;
+
+       partial class SslStream : IMonoTlsEventSink
+       {
+               #if SECURITY_DEP
+               SSPIConfiguration _Configuration;
+
+               internal SslStream (Stream innerStream, bool leaveInnerStreamOpen, EncryptionPolicy encryptionPolicy, MonoTlsProvider provider, MonoTlsSettings settings)
+                       : base (innerStream, leaveInnerStreamOpen)
+               {
+                       if (encryptionPolicy != EncryptionPolicy.RequireEncryption && encryptionPolicy != EncryptionPolicy.AllowNoEncryption && encryptionPolicy != EncryptionPolicy.NoEncryption)
+                               throw new ArgumentException (SR.GetString (SR.net_invalid_enum, "EncryptionPolicy"), "encryptionPolicy");
+
+                       var validationHelper = MNS.ChainValidationHelper.CloneWithCallbackWrapper (provider, ref settings, myUserCertValidationCallbackWrapper);
+
+                       LocalCertSelectionCallback selectionCallback = null;
+                       if (validationHelper.HasCertificateSelectionCallback)
+                               selectionCallback = validationHelper.SelectClientCertificate;
+
+                       var internalProvider = new MNS.Private.MonoTlsProviderWrapper (provider);
+                       _Configuration = new MyConfiguration (internalProvider, settings, this);
+                       _SslState = new SslState (innerStream, null, selectionCallback, encryptionPolicy, _Configuration);
+               }
+
+               /*
+                * Mono-specific version of 'userCertValidationCallbackWrapper'; we're called from ChainValidationHelper.ValidateChain() here.
+                *
+                * Since we're built without the PrebuiltSystem alias, we can't use 'SslPolicyErrors' here.  This prevents us from creating a subclass of 'ChainValidationHelper'
+                * as well as providing a custom 'ServerCertValidationCallback'.
+                */
+               bool myUserCertValidationCallbackWrapper (ServerCertValidationCallback callback, X509Certificate certificate, X509Chain chain, MonoSslPolicyErrors sslPolicyErrors)
+               {
+                       m_RemoteCertificateOrBytes = certificate == null ? null : certificate.GetRawCertData ();
+                       if (callback == null) {
+                               if (!_SslState.RemoteCertRequired)
+                                       sslPolicyErrors &= ~MonoSslPolicyErrors.RemoteCertificateNotAvailable;
+
+                               return (sslPolicyErrors == MonoSslPolicyErrors.None);
+                       }
+
+                       return MNS.ChainValidationHelper.InvokeCallback (callback, this, certificate, chain, sslPolicyErrors);
+               }
+
+               class MyConfiguration : SSPIConfiguration
+               {
+                       MNS.IMonoTlsProvider provider;
+                       MonoTlsSettings settings;
+                       IMonoTlsEventSink eventSink;
+
+                       public MyConfiguration (MNS.IMonoTlsProvider provider, MonoTlsSettings settings, IMonoTlsEventSink eventSink)
+                       {
+                               this.provider = provider;
+                               this.settings = settings;
+                               this.eventSink = eventSink;
+                       }
+
+                       public MNS.IMonoTlsProvider Provider {
+                               get { return provider; }
+                       }
+
+                       public MonoTlsSettings Settings {
+                               get { return settings; }
+                       }
+
+                       public IMonoTlsEventSink EventSink {
+                               get { return eventSink; }
+                       }
+               }
+               #endif
+
+               internal bool IsClosed {
+                       get { return _SslState.IsClosed; }
+               }
+
+               internal Exception LastError {
+                       get { return lastError; }
+               }
+
+               #region IMonoTlsEventSink
+
+               Exception lastError;
+
+               void IMonoTlsEventSink.Error (Exception exception)
+               {
+                       Interlocked.CompareExchange<Exception> (ref lastError, exception, null);
+               }
+
+               void IMonoTlsEventSink.ReceivedCloseNotify ()
+               {
+               }
+
+               #endregion
+
+               internal IAsyncResult BeginShutdown (AsyncCallback asyncCallback, object asyncState)
+               {
+                       return _SslState.BeginShutdown (asyncCallback, asyncState);
+               }
+
+               internal void EndShutdown (IAsyncResult asyncResult)
+               {
+                       _SslState.EndShutdown (asyncResult);
+               }
+
+               internal IAsyncResult BeginRenegotiate (AsyncCallback asyncCallback, object asyncState)
+               {
+                       return _SslState.BeginRenegotiate (asyncCallback, asyncState);
+               }
+
+               internal void EndRenegotiate (IAsyncResult asyncResult)
+               {
+                       _SslState.EndRenegotiate (asyncResult);
+               }
+
+               internal X509Certificate InternalLocalCertificate {
+                       get { return _SslState.InternalLocalCertificate; }
+               }
+
+               internal MonoTlsConnectionInfo GetMonoConnectionInfo ()
+               {
+                       return _SslState.GetMonoConnectionInfo ();
+               }
+       }
+}
+#endif
diff --git a/mcs/class/System/ReferenceSources/_SecureChannel.cs b/mcs/class/System/ReferenceSources/_SecureChannel.cs
new file mode 100644 (file)
index 0000000..f920353
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// Mono-specific additions to Microsoft's _SecureChannel.cs
+//
+#if MONO_FEATURE_NEW_TLS && SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Interface;
+#else
+using Mono.Security.Interface;
+#endif
+namespace System.Net.Security
+{
+       partial class SecureChannel
+       {
+               internal MonoTlsConnectionInfo GetMonoConnectionInfo ()
+               {
+                       return SSPIWrapper.GetMonoConnectionInfo (m_SecModule, m_SecurityContext);
+               }
+
+               internal ProtocolToken CreateShutdownMessage ()
+               {
+                       var buffer = SSPIWrapper.CreateShutdownMessage (m_SecModule, m_SecurityContext);
+                       return new ProtocolToken (buffer, SecurityStatus.ContinueNeeded);
+               }
+
+               internal ProtocolToken CreateHelloRequestMessage ()
+               {
+                       var buffer = SSPIWrapper.CreateHelloRequestMessage (m_SecModule, m_SecurityContext);
+                       return new ProtocolToken (buffer, SecurityStatus.ContinueNeeded);
+               }
+
+               internal bool IsClosed {
+                       get {
+                               if (m_SecModule == null || m_SecurityContext == null || m_SecurityContext.IsClosed)
+                                       return true;
+                               return SSPIWrapper.IsClosed (m_SecModule, m_SecurityContext);
+                       }
+               }
+       }
+}
+#endif
diff --git a/mcs/class/System/ReferenceSources/_SslState.cs b/mcs/class/System/ReferenceSources/_SslState.cs
new file mode 100644 (file)
index 0000000..8d5ae3f
--- /dev/null
@@ -0,0 +1,141 @@
+//
+// Mono-specific additions to Microsoft's _SslState.cs
+//
+#if MONO_FEATURE_NEW_TLS && SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Interface;
+#else
+using Mono.Security.Interface;
+#endif
+namespace System.Net.Security
+{
+       using System.IO;
+       using System.Threading;
+       using System.Net.Sockets;
+
+       partial class SslState
+       {
+               int _SentShutdown;
+
+               internal MonoTlsConnectionInfo GetMonoConnectionInfo ()
+               {
+                       return Context.GetMonoConnectionInfo ();
+               }
+
+               internal bool IsClosed {
+                       get { return Context.IsClosed; }
+               }
+
+               internal ProtocolToken CreateShutdownMessage ()
+               {
+                       return Context.CreateShutdownMessage ();
+               }
+
+               internal ProtocolToken CreateHelloRequestMessage ()
+               {
+                       return Context.CreateHelloRequestMessage ();
+               }
+
+               internal IAsyncResult BeginShutdown (AsyncCallback asyncCallback, object asyncState)
+               {
+                       var shutdownResult = new ShutdownAsyncResult (this, asyncState, asyncCallback);
+
+                       if (Interlocked.CompareExchange (ref _SentShutdown, 1, 0) == 1) {
+                               shutdownResult.InvokeCallback ();
+                               return shutdownResult;
+                       }
+
+                       try
+                       {
+                               CheckThrow (false);
+                               shutdownResult.SentShutdown = true;
+                               SecureStream.BeginShutdown (shutdownResult);
+                               return shutdownResult;
+                       } catch (Exception e) {
+                               if (e is IOException)
+                                       throw;
+                               throw new IOException (SR.GetString (SR.mono_net_io_shutdown), e);
+                       }
+               }
+
+               internal void EndShutdown (IAsyncResult asyncResult)
+               {
+                       if (asyncResult == null)
+                               throw new ArgumentNullException ("asyncResult");
+
+                       var shutdownResult = asyncResult as ShutdownAsyncResult;
+                       if (shutdownResult == null)
+                               throw new ArgumentException (SR.GetString (SR.net_io_async_result, asyncResult.GetType ().FullName), "asyncResult");
+
+                       if (shutdownResult.SentShutdown)
+                               SecureStream.EndShutdown (shutdownResult);
+               }
+
+               internal IAsyncResult BeginRenegotiate (AsyncCallback asyncCallback, object asyncState)
+               {
+                       var lazyResult = new LazyAsyncResult (this, asyncState, asyncCallback);
+
+                       if (Interlocked.Exchange (ref _NestedAuth, 1) == 1)
+                               throw new InvalidOperationException (SR.GetString (SR.net_io_invalidnestedcall, "BeginRenegotiate", "renegotiate"));
+                       if (Interlocked.CompareExchange (ref _PendingReHandshake, 1, 0) == 1)
+                               throw new InvalidOperationException (SR.GetString (SR.net_io_invalidnestedcall, "BeginRenegotiate", "renegotiate"));
+
+                       try {
+                               CheckThrow (false);
+                               SecureStream.BeginRenegotiate (lazyResult);
+                               return lazyResult;
+                       } catch (Exception e) {
+                               _NestedAuth = 0;
+                               if (e is IOException)
+                                       throw;
+                               throw new IOException (SR.GetString (SR.mono_net_io_renegotiate), e);
+                       }
+               }
+
+               internal void EndRenegotiate (IAsyncResult result)
+               {
+                       if (result == null)
+                               throw new ArgumentNullException ("asyncResult");
+
+                       LazyAsyncResult lazyResult = result as LazyAsyncResult;
+                       if (lazyResult == null)
+                               throw new ArgumentException (SR.GetString (SR.net_io_async_result, result.GetType ().FullName), "asyncResult");
+
+                       if (Interlocked.Exchange (ref _NestedAuth, 0) == 0)
+                               throw new InvalidOperationException (SR.GetString (SR.net_io_invalidendcall, "EndRenegotiate"));
+
+                       SecureStream.EndRenegotiate (lazyResult);
+               }
+
+               internal bool CheckEnqueueHandshakeWrite (byte[] buffer, AsyncProtocolRequest asyncRequest)
+               {
+                       return CheckEnqueueHandshake (buffer, asyncRequest);
+               }
+
+               internal void StartReHandshake (AsyncProtocolRequest asyncRequest)
+               {
+                       if (IsServer) {
+                               byte[] buffer = null;
+                               if (CheckEnqueueHandshakeRead (ref buffer, asyncRequest))
+                                       return;
+
+                               StartReceiveBlob (buffer, asyncRequest);
+                               return;
+                       }
+
+                       ForceAuthentication (false, null, asyncRequest);
+               }
+
+               class ShutdownAsyncResult : LazyAsyncResult
+               {
+                       public bool SentShutdown;
+
+                       internal ShutdownAsyncResult (SslState instance, object userState, AsyncCallback callback)
+                               : base (instance, userState, callback)
+                       {
+                       }
+               }
+       }
+}
+#endif
diff --git a/mcs/class/System/ReferenceSources/_SslStream.cs b/mcs/class/System/ReferenceSources/_SslStream.cs
new file mode 100644 (file)
index 0000000..591b74a
--- /dev/null
@@ -0,0 +1,230 @@
+//
+// Mono-specific additions to Microsoft's _SslStream.cs
+//
+#if MONO_FEATURE_NEW_TLS && SECURITY_DEP
+namespace System.Net.Security
+{
+       using System.IO;
+       using System.Threading;
+       using System.Net.Sockets;
+
+       partial class _SslStream
+       {
+               static readonly AsyncCallback _HandshakeWriteCallback = new AsyncCallback (HandshakeWriteCallback);
+               static readonly HandshakeProtocolCallback _ResumeHandshakeWriteCallback = new HandshakeProtocolCallback (ResumeHandshakeWriteCallback);
+
+               internal void BeginShutdown (LazyAsyncResult lazyResult)
+               {
+                       HandshakeProtocolRequest asyncRequest = new HandshakeProtocolRequest (lazyResult);
+
+                       if (Interlocked.Exchange (ref _NestedWrite, 1) == 1)
+                               throw new NotSupportedException (SR.GetString (SR.net_io_invalidnestedcall, (asyncRequest != null ? "BeginShutdown" : "Shutdown"), "shutdown"));
+
+                       bool failed = false;
+                       try
+                       {
+                               ProtocolToken message = _SslState.CreateShutdownMessage ();
+                               asyncRequest.SetNextRequest (HandshakeProtocolState.Shutdown, message, _ResumeHandshakeWriteCallback);
+
+                               StartHandshakeWrite (asyncRequest);
+                       } catch (Exception e) {
+                               _SslState.FinishWrite ();
+                               failed = true;
+                               throw;
+                       } finally {
+                               if (failed)
+                                       _NestedWrite = 0;
+                       }
+               }
+
+               internal void EndShutdown (LazyAsyncResult lazyResult)
+               {
+                       if (Interlocked.Exchange (ref _NestedWrite, 0) == 0)
+                               throw new InvalidOperationException (SR.GetString (SR.net_io_invalidendcall, "EndShutdown"));
+
+                       // No "artificial" timeouts implemented so far, InnerStream controls timeout.
+                       lazyResult.InternalWaitForCompletion ();
+
+                       if (lazyResult.Result is Exception) {
+                               if (lazyResult.Result is IOException)
+                                       throw (Exception)lazyResult.Result;
+                               throw new IOException (SR.GetString (SR.mono_net_io_shutdown), (Exception)lazyResult.Result);
+                       }
+               }
+
+               internal void BeginRenegotiate (LazyAsyncResult lazyResult)
+               {
+                       HandshakeProtocolRequest asyncRequest = new HandshakeProtocolRequest (lazyResult);
+
+                       if (Interlocked.Exchange (ref _NestedWrite, 1) == 1)
+                               throw new NotSupportedException (SR.GetString (SR.net_io_invalidnestedcall, (asyncRequest != null ? "BeginRenegotiate" : "Renegotiate"), "renegotiate"));
+
+                       bool failed = false;
+                       try
+                       {
+                               if (_SslState.IsServer) {
+                                       ProtocolToken message = _SslState.CreateHelloRequestMessage ();
+                                       asyncRequest.SetNextRequest (HandshakeProtocolState.SendHelloRequest, message, _ResumeHandshakeWriteCallback);
+                               } else {
+                                       asyncRequest.SetNextRequest (HandshakeProtocolState.ClientRenegotiation, null, _ResumeHandshakeWriteCallback);
+                               }
+
+                               StartHandshakeWrite (asyncRequest);
+                       } catch (Exception e) {
+                               _SslState.FinishWrite ();
+                               failed = true;
+                               throw;
+                       } finally {
+                               if (failed)
+                                       _NestedWrite = 0;
+                       }
+               }
+
+               internal void EndRenegotiate (LazyAsyncResult lazyResult)
+               {
+                       if (Interlocked.Exchange (ref _NestedWrite, 0) == 0)
+                               throw new InvalidOperationException (SR.GetString (SR.net_io_invalidendcall, "EndRenegotiate"));
+
+                       // No "artificial" timeouts implemented so far, InnerStream controls timeout.
+                       lazyResult.InternalWaitForCompletion();
+
+                       if (lazyResult.Result is Exception) {
+                               if (lazyResult.Result is IOException)
+                                       throw (Exception)lazyResult.Result;
+                               throw new IOException (SR.GetString (SR.mono_net_io_renegotiate), (Exception)lazyResult.Result);
+                       }
+               }
+
+               void StartHandshakeWrite (HandshakeProtocolRequest asyncRequest)
+               {
+                       byte[] buffer = null;
+                       if (asyncRequest.Message != null) {
+                               buffer = asyncRequest.Message.Payload;
+                               if (buffer.Length != asyncRequest.Message.Size) {
+                                       buffer = new byte [asyncRequest.Message.Size];
+                                       Buffer.BlockCopy (asyncRequest.Message.Payload, 0, buffer, 0, buffer.Length);
+                               }
+                       }
+
+                       switch (asyncRequest.State) {
+                       case HandshakeProtocolState.ClientRenegotiation:
+                       case HandshakeProtocolState.ServerRenegotiation:
+                               _SslState.StartReHandshake (asyncRequest);
+                               return;
+
+                       case HandshakeProtocolState.SendHelloRequest:
+                               if (_SslState.CheckEnqueueHandshakeWrite (buffer, asyncRequest)) {
+                                       // operation is async and has been queued, return.
+                                       return;
+                               }
+                               break;
+
+                       case HandshakeProtocolState.Shutdown:
+                               if (_SslState.CheckEnqueueWrite (asyncRequest)) {
+                                       // operation is async and has been queued, return.
+                                       return;
+                               }
+                               break;
+
+                       default:
+                               throw new InvalidOperationException ();
+                       }
+
+                       if (_SslState.LastPayload != null)
+                               throw new InvalidOperationException ();
+
+                       // prepare for the next request
+                       IAsyncResult ar = ((NetworkStream)_SslState.InnerStream).BeginWrite (buffer, 0, buffer.Length, _HandshakeWriteCallback, asyncRequest);
+                       if (!ar.CompletedSynchronously)
+                               return;
+
+                       HandshakeWriteCallback (asyncRequest, ar);
+               }
+
+               static void HandshakeWriteCallback (IAsyncResult transportResult)
+               {
+                       if (transportResult.CompletedSynchronously)
+                               return;
+
+                       HandshakeProtocolRequest asyncRequest = (HandshakeProtocolRequest)transportResult.AsyncState;
+
+                       SslState sslState = (SslState)asyncRequest.AsyncObject;
+                       sslState.SecureStream.HandshakeWriteCallback (asyncRequest, transportResult);
+               }
+
+               void HandshakeWriteCallback (HandshakeProtocolRequest asyncRequest, IAsyncResult transportResult)
+               {
+                       try {
+                               _SslState.InnerStream.EndWrite (transportResult);
+                       } catch (Exception e) {
+                               _SslState.FinishWrite ();
+                               if (!asyncRequest.IsUserCompleted) {
+                                       asyncRequest.CompleteWithError (e);
+                                       return;
+                               }
+                               throw;
+                       }
+
+                       if (asyncRequest.State == HandshakeProtocolState.SendHelloRequest) {
+                               asyncRequest.SetNextRequest (HandshakeProtocolState.ServerRenegotiation, null, _ResumeHandshakeWriteCallback);
+                               StartHandshakeWrite (asyncRequest);
+                               return;
+                       }
+
+                       try {
+                               _SslState.FinishWrite ();
+                               asyncRequest.CompleteUser ();
+                       } catch (Exception e) {
+                               if (!asyncRequest.IsUserCompleted) {
+                                       asyncRequest.CompleteWithError (e);
+                                       return;
+                               }
+                               throw;
+                       }
+               }
+
+               static void ResumeHandshakeWriteCallback (HandshakeProtocolRequest asyncRequest)
+               {
+                       try {
+                               ((_SslStream)asyncRequest.AsyncObject).StartHandshakeWrite (asyncRequest);
+                       } catch (Exception e) {
+                               if (asyncRequest.IsUserCompleted) {
+                                       // This will throw on a worker thread.
+                                       throw;
+                               }
+                               ((_SslStream)asyncRequest.AsyncObject)._SslState.FinishWrite ();
+                               asyncRequest.CompleteWithError (e);
+                       }
+               }
+
+               delegate void HandshakeProtocolCallback (HandshakeProtocolRequest asyncRequest);
+
+               enum HandshakeProtocolState {
+                       None,
+                       Shutdown,
+                       SendHelloRequest,
+                       ServerRenegotiation,
+                       ClientRenegotiation
+               }
+
+               class HandshakeProtocolRequest : AsyncProtocolRequest
+               {
+                       public ProtocolToken Message;
+                       public HandshakeProtocolState State;
+
+                       public HandshakeProtocolRequest (LazyAsyncResult userAsyncResult)
+                               : base (userAsyncResult)
+                       {
+                               State = HandshakeProtocolState.None;
+                       }
+
+                       public void SetNextRequest (HandshakeProtocolState state, ProtocolToken message, HandshakeProtocolCallback callback)
+                       {
+                               State = state;
+                               Message = message;
+                               SetNextRequest (null, 0, 0, (r) => callback ((HandshakeProtocolRequest)r));
+                       }
+               }
+       }
+}
+#endif
diff --git a/mcs/class/System/System-bare-net_4_5.csproj b/mcs/class/System/System-bare-net_4_5.csproj
deleted file mode 100644 (file)
index b45c994..0000000
+++ /dev/null
@@ -1,1203 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{91CDF14E-F60F-4AB7-BC9D-5CBD7E669076}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5/bare</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeArgumentReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeArrayCreateExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeArrayIndexerExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAssignStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttachEventStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttributeArgument.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttributeArgumentCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttributeDeclaration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttributeDeclarationCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeBaseReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeBinaryOperatorExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeBinaryOperatorType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCastExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCatchClause.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCatchClauseCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeChecksumPragma.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeComment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCommentStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCommentStatementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCompileUnit.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeConditionStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeConstructor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDefaultValueExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDelegateCreateExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDelegateInvokeExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDirectionExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDirective.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDirectiveCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeEntryPointMethod.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeEventReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeExpressionCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeExpressionStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeFieldReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeGotoStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeIndexerExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeIterationStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeLabeledStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeLinePragma.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMemberEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMemberField.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMemberMethod.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMemberProperty.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMethodInvokeExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\codemethodreferenceexpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMethodReturnStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeNamespace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeNamespaceCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeNamespaceImport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeNamespaceImportCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeObjectCreateExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeParameterDeclarationExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeParameterDeclarationExpressionCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodePrimitiveExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodePropertyReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodePropertySetValueReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeRegionDirective.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeRegionMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeRemoveEventStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeSnippetCompileUnit.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeSnippetExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeSnippetStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeSnippetTypeMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeStatementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeThisReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeThrowExceptionStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTryCatchFinallyStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeConstructor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeDeclaration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeDeclarationCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeDelegate.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeMemberCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeOfExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeParameterCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeReferenceCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeVariableDeclarationStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeVariableReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CodeGeneratorOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CodeValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CompilerError.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CompilerErrorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CompilerParameters.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\GeneratedCodeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\GeneratorSupport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\ICodeCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\ICodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\ICodeParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\IndentTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\LanguageOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\FieldDirection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\MemberAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\bithelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\debugview.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\iset.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\linkedlist.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\queue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\sorteddictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\sortedlist.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\sortedset.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\sortedsetdebugview.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\stack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\throwhelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\objectmodel\observablecollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\objectmodel\readonlyobservablecollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\bitvector32.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\casesensitivestringdictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\collectionsutil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\fixedstringlookup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\hybriddictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\inotifycollectionchanged.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\iordereddictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\listdictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\nameobjectcollectionbase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\namevaluecollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\notifycollectionchangedeventargs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\ordereddictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\stringcollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\stringdictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\stringdictionarywithcomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AddingNewEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AddingNewEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AmbientValueAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ArrayConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ArraySubsetEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AsyncCompletedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AsyncCompletedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AsyncOperation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AsyncOperationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AttributeCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AttributeProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BackgroundWorker.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BaseComponentEditor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\basenumberconverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BindableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BindableSupport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BindingDirection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BindingList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BooleanConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BrowsableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ByteConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CancelEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CancelEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CategoryAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CharConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CollectionChangeAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CollectionChangeEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CollectionChangeEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CollectionConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ComplexBindingPropertiesAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CompModSwitches.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Component.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ComponentCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ComponentConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ComponentResourceManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Container.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ContainerFilterService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CultureInfoConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CustomTypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataErrorsChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataObjectAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataObjectFieldAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataObjectMethodAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataObjectMethodType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DateTimeConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DateTimeOffsetConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DebugExtendedPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DebugReflectEventDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DebugReflectPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DebugTypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DecimalConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DefaultBindingPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DefaultEventAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DefaultPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DefaultValueAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DelegatingTypeDescriptionProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DescriptionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ActiveDocumentEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ActiveDocumentEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\CheckoutException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\CommandID.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentChangedEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentChangingEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentChangingEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentRenameEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentRenameEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerOptionService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerTransaction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerTransactionCloseEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerTransactionCloseEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerVerb.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerVerbCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesigntimeLicenseContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesigntimeLicenseContextSerializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DocumentCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DocumentEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DocumentEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\HelpContextType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\HelpKeywordAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\HelpKeywordType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IComponentChangeService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IComponentDiscoveryService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IComponentInitializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesigner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerEventService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerHost.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerHostTransactionState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerOptionService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDictionaryService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IEventPropertyService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IExtenderListService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IExtenderProviderService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IHelpService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IInheritanceService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IMenuCommandService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\InheritanceAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\InheritanceLevel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IReferenceService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IResourceService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IRootDesigner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ISelectionService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IServiceObjectContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ITreeDesigner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ITypeDescriptorFilterService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ITypeDiscoveryService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ITypeResolutionService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\MenuCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\NotifyParentPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ParenthesizePropertyNameAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\PropertyTabAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\PropertyTabScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\RefreshProperties.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\RefreshPropertiesAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\SelectionTypes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\ComponentSerializationService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\ContextStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\DefaultSerializationProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\DesignerLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\DesignerSerializerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerLoaderHost.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerLoaderService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerSerializationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerSerializationProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerSerializationService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\INameCreationService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\InstanceDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\MemberRelationshipService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\ResolveNameEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\ResolveNameEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\RootDesignerSerializerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\SerializationStore.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ServiceCreatorCallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ServiceObjectContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\StandardCommands.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\StandardToolWindows.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ToolboxItemAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ViewTechnology.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignerCategoryAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignerSerializationVisibility.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignerSerializationVisibilityAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignOnlyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignTimeVisibleAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DisplayNameAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DoubleConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DoWorkEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DoWorkEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EditorAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EditorBrowsableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EnumConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EventDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EventDescriptorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EventHandlerList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ExpandableObjectConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ExtendedPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ExtenderProvidedPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\FxCopSuppression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\GuidConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\HandledEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\HandledEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IBindingList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IBindingListView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ICancelAddNew.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IChangeTracking.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IComNativeDescriptorHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IComponent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ICustomTypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IDataErrorInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IEditableObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IExtenderProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IIntellisenseBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IListSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ImmutableObjectAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INestedContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INestedSite.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InitializationEventAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INotifyDataErrorInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INotifyPropertyChanged.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INotifyPropertyChanging.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InstallerTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InstanceCreationEditor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Int16Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Int32Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Int64Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IntSecurity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InvalidAsynchronousStateException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InvalidEnumArgumentException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IRaiseItemChangedEvents.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IRevertibleChangeTracking.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ISite.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ISupportInitialize.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ISupportInitializeNotification.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ISynchronizeInvoke.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ITypeDescriptorContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ITypedList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\License.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseUsageMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicFileLicenseProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListBindableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListChangedType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListSortDescription.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListSortDescriptionCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListSortDirection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LocalizableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LookupBindingPropertiesAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MarshalByValueComponent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MaskedTextProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MaskedTextResultHint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MemberDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MergablePropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MultilineStringConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\NestedContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\NullableConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PasswordPropertyTextAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ProgressChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ProgressChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyChangingEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyChangingEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyDescriptorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ProvidePropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReadOnlyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RecommendedAsConfigurableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReferenceConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReflectEventDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReflectPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReflectTypeDescriptionProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RefreshEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RefreshEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RunInstallerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RunWorkerCompletedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RunWorkerCompletedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\SByteConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\SettingsBindableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\SingleConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\StringConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\SyntaxCheck.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TimeSpanConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ToolboxItemFilterAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ToolboxItemFilterType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeConverterAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeDescriptionProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeDescriptionProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeDescriptionProviderService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeListConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\UInt16Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\UInt32Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\UInt64Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\WarningException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Win32Exception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\AssertSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\BooleanSwitch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\ConsoleTraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\CorrelationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\Debug.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\DelimitedListTraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\DiagnosticsConfiguration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\FilterElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\ListenerElementsCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\PerfCounterSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SeverityFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SourceElementsCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SourceFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SourceLevels.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SourceSwitch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\Switch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SwitchAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SwitchElementsCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SwitchLevelAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SystemDiagnosticsSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TextWriterTraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\Trace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceEventCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceEventType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceInternal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceLevel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceListeners.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceSwitch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\traceutils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TypedElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\XmlWriterTraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\hresults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\invariantcomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\PrivilegedConfigurationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\SecurityUtils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\WeakHashtable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_BufferOffsetSize.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_ScatterGatherBuffers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookie.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookiecollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookiecontainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookieexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\HttpListenerRequestUriBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Internal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Sockets\SocketOptionName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\UnicodeDecodingConformance.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\UnicodeEncodingConformance.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\webclient.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WebPermission.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WriteStreamClosedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\compiledregexrunner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\compiledregexrunnerfactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\Regex.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexBoyerMoore.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCapture.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCaptureCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCharClass.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCompilationInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexFCD.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexGroupCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexInterpreter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexMatch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexMatchCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexMatchTimeoutException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexReplacement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexRunner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexRunnerFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\security\system\security\permissions\typedescriptorpermission.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\services\timers\system\timers\ElapsedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\services\timers\system\timers\Timer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\services\timers\system\timers\TimersDescriptionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\collections\concurrent\BlockingCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\collections\concurrent\ConcurrentBag.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\runtime\versioning\FrameworkName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\threading\Barrier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\windows\markup\ValueSerializerAttribute.cs" />\r
-    <Compile Include="..\..\build\common\SR.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
-    <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
-    <Compile Include="Microsoft.CSharp\CSharpCodeProvider.cs" />\r
-    <Compile Include="Microsoft.VisualBasic\VBCodeCompiler.cs" />\r
-    <Compile Include="Microsoft.VisualBasic\VBCodeGenerator.cs" />\r
-    <Compile Include="Microsoft.VisualBasic\VBCodeProvider.cs" />\r
-    <Compile Include="Microsoft.Win32\IntranetZoneCredentialPolicy.cs" />\r
-    <Compile Include="Microsoft.Win32\PowerModeChangedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\PowerModeChangedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\PowerModes.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndingEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndingEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndReasons.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionSwitchEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionSwitchEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionSwitchReason.cs" />\r
-    <Compile Include="Microsoft.Win32\SystemEvents.cs" />\r
-    <Compile Include="Microsoft.Win32\TimerElapsedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\TimerElapsedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceCategory.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceChangedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceChangedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceChangingEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceChangingEventHandler.cs" />\r
-    <Compile Include="Mono.Http\NtlmClient.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsClass.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsHeader.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsOpCode.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsPacket.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsQClass.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsQType.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsQuery.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsQuestion.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsRCode.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecord.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordA.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordAAAA.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordCName.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordIPAddress.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordPTR.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResponse.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsType.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsUtil.cs" />\r
-    <Compile Include="Mono.Net.Dns\ResolverAsyncOperation.cs" />\r
-    <Compile Include="Mono.Net.Dns\ResolverError.cs" />\r
-    <Compile Include="Mono.Net.Dns\SimpleResolver.cs" />\r
-    <Compile Include="Mono.Net.Dns\SimpleResolverEventArgs.cs" />\r
-    <Compile Include="ReferenceSources\AssertWrapper.cs" />\r
-    <Compile Include="ReferenceSources\BinaryCompatibility.cs" />\r
-    <Compile Include="ReferenceSources\ConfigurationManagerInternalFactory.cs" />\r
-    <Compile Include="ReferenceSources\HttpSysSettings.cs" />\r
-    <Compile Include="ReferenceSources\Logging.cs" />\r
-    <Compile Include="ReferenceSources\NativeMethods.cs" />\r
-    <Compile Include="ReferenceSources\SettingsSectionInternal.cs" />\r
-    <Compile Include="ReferenceSources\Socket.cs" />\r
-    <Compile Include="ReferenceSources\SR.cs" />\r
-    <Compile Include="ReferenceSources\SRCategoryAttribute.cs" />\r
-    <Compile Include="ReferenceSources\SystemNetworkCredential.cs" />\r
-    <Compile Include="ReferenceSources\WebHeaderCollectionType.cs" />\r
-    <Compile Include="ReferenceSources\Win32Exception.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CodeCompiler.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CodeDomConfigurationHandler.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CodeDomProvider.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CodeParser.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\Compiler.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerCollection.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerInfo.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerProviderOption.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerProviderOptionsCollection.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerResults.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\Executor.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\TempFileCollection.cs" />\r
-    <Compile Include="System.Configuration\ApplicationScopedSettingAttribute.cs" />\r
-    <Compile Include="System.Configuration\ApplicationSettingsBase.cs" />\r
-    <Compile Include="System.Configuration\ApplicationSettingsGroup.cs" />\r
-    <Compile Include="System.Configuration\AppSettingsReader.cs" />\r
-    <Compile Include="System.Configuration\ClientSettingsSection.cs" />\r
-    <Compile Include="System.Configuration\ConfigHelper.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationException.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationSettings.cs" />\r
-    <Compile Include="System.Configuration\ConfigXmlDocument.cs" />\r
-    <Compile Include="System.Configuration\CustomizableFileSettingsProvider.cs" />\r
-    <Compile Include="System.Configuration\DefaultSettingValueAttribute.cs" />\r
-    <Compile Include="System.Configuration\DictionarySectionHandler.cs" />\r
-    <Compile Include="System.Configuration\IApplicationSettingsProvider.cs" />\r
-    <Compile Include="System.Configuration\IConfigurationSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\IConfigurationSystem.cs" />\r
-    <Compile Include="System.Configuration\IConfigXmlNode.cs" />\r
-    <Compile Include="System.Configuration\IdnElement.cs" />\r
-    <Compile Include="System.Configuration\IgnoreSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\IPersistComponentSettings.cs" />\r
-    <Compile Include="System.Configuration\IriParsingElement.cs" />\r
-    <Compile Include="System.Configuration\ISettingsProviderService.cs" />\r
-    <Compile Include="System.Configuration\LocalFileSettingsProvider.cs" />\r
-    <Compile Include="System.Configuration\NameValueFileSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\NameValueSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\NoSettingsVersionUpgradeAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingChangingEventArgs.cs" />\r
-    <Compile Include="System.Configuration\SettingChangingEventHandler.cs" />\r
-    <Compile Include="System.Configuration\SettingElement.cs" />\r
-    <Compile Include="System.Configuration\SettingElementCollection.cs" />\r
-    <Compile Include="System.Configuration\SettingsAttributeDictionary.cs" />\r
-    <Compile Include="System.Configuration\SettingsBase.cs" />\r
-    <Compile Include="System.Configuration\SettingsContext.cs" />\r
-    <Compile Include="System.Configuration\SettingsDescriptionAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsGroupDescriptionAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsGroupNameAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsLoadedEventArgs.cs" />\r
-    <Compile Include="System.Configuration\SettingsLoadedEventHandler.cs" />\r
-    <Compile Include="System.Configuration\SettingsManageability.cs" />\r
-    <Compile Include="System.Configuration\SettingsManageabilityAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsProperty.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyCollection.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyIsReadOnlyException.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyNotFoundException.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyValue.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyValueCollection.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyWrongTypeException.cs" />\r
-    <Compile Include="System.Configuration\SettingsProvider.cs" />\r
-    <Compile Include="System.Configuration\SettingsProviderAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsProviderCollection.cs" />\r
-    <Compile Include="System.Configuration\SettingsSavingEventHandler.cs" />\r
-    <Compile Include="System.Configuration\SettingsSerializeAs.cs" />\r
-    <Compile Include="System.Configuration\SettingsSerializeAsAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingValueElement.cs" />\r
-    <Compile Include="System.Configuration\SingleTagSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\SpecialSetting.cs" />\r
-    <Compile Include="System.Configuration\SpecialSettingAttribute.cs" />\r
-    <Compile Include="System.Configuration\UriSection.cs" />\r
-    <Compile Include="System.Configuration\UserScopedSettingAttribute.cs" />\r
-    <Compile Include="System.Configuration\UserSettingsGroup.cs" />\r
-    <Compile Include="System.Diagnostics.CodeAnalysis\ExcludeFromCodeCoverageAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\AlphabeticalEnumConverter.cs" />\r
-    <Compile Include="System.Diagnostics\CounterCreationData.cs" />\r
-    <Compile Include="System.Diagnostics\CounterCreationDataCollection.cs" />\r
-    <Compile Include="System.Diagnostics\CounterSample.cs" />\r
-    <Compile Include="System.Diagnostics\CounterSampleCalculator.cs" />\r
-    <Compile Include="System.Diagnostics\DataReceivedEventArgs.cs" />\r
-    <Compile Include="System.Diagnostics\DataReceivedEventHandler.cs" />\r
-    <Compile Include="System.Diagnostics\DefaultTraceListener.cs" />\r
-    <Compile Include="System.Diagnostics\DiagnosticsConfigurationHandler.cs" />\r
-    <Compile Include="System.Diagnostics\EntryWrittenEventArgs.cs" />\r
-    <Compile Include="System.Diagnostics\EntryWrittenEventHandler.cs" />\r
-    <Compile Include="System.Diagnostics\EventInstance.cs" />\r
-    <Compile Include="System.Diagnostics\EventLog.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogEntry.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogEntryCollection.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogEntryType.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogImpl.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogInstaller.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermission.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermissionAccess.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermissionAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermissionEntry.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermissionEntryCollection.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogTraceListener.cs" />\r
-    <Compile Include="System.Diagnostics\EventSourceCreationData.cs" />\r
-    <Compile Include="System.Diagnostics\FileVersionInfo.cs" />\r
-    <Compile Include="System.Diagnostics\ICollectData.cs" />\r
-    <Compile Include="System.Diagnostics\InstanceData.cs" />\r
-    <Compile Include="System.Diagnostics\InstanceDataCollection.cs" />\r
-    <Compile Include="System.Diagnostics\InstanceDataCollectionCollection.cs" />\r
-    <Compile Include="System.Diagnostics\LocalFileEventLog.cs" />\r
-    <Compile Include="System.Diagnostics\MonitoringDescriptionAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\NullEventLog.cs" />\r
-    <Compile Include="System.Diagnostics\OverflowAction.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounter.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterCategory.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterCategoryType.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterInstaller.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterInstanceLifetime.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterManager.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermission.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermissionAccess.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermissionAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermissionEntry.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermissionEntryCollection.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterType.cs" />\r
-    <Compile Include="System.Diagnostics\Process.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessModule.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessModuleCollection.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessPriorityClass.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessStartInfo.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessThread.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessThreadCollection.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessWindowStyle.cs" />\r
-    <Compile Include="System.Diagnostics\Stopwatch.cs" />\r
-    <Compile Include="System.Diagnostics\ThreadPriorityLevel.cs" />\r
-    <Compile Include="System.Diagnostics\ThreadState.cs" />\r
-    <Compile Include="System.Diagnostics\ThreadWaitReason.cs" />\r
-    <Compile Include="System.Diagnostics\TraceImpl.cs" />\r
-    <Compile Include="System.Diagnostics\TraceSourceInfo.cs" />\r
-    <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
-    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
-    <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
-    <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
-    <Compile Include="System.IO.Compression\GZipStream.cs" />\r
-    <Compile Include="System.IO.Ports\Handshake.cs" />\r
-    <Compile Include="System.IO.Ports\ISerialStream.cs" />\r
-    <Compile Include="System.IO.Ports\Parity.cs" />\r
-    <Compile Include="System.IO.Ports\SerialData.cs" />\r
-    <Compile Include="System.IO.Ports\SerialError.cs" />\r
-    <Compile Include="System.IO.Ports\SerialErrorEventArgs.cs" />\r
-    <Compile Include="System.IO.Ports\SerialPinChange.cs" />\r
-    <Compile Include="System.IO.Ports\SerialPinChangedEventArgs.cs" />\r
-    <Compile Include="System.IO.Ports\SerialPort.cs" />\r
-    <Compile Include="System.IO.Ports\SerialPortStream.cs" />\r
-    <Compile Include="System.IO.Ports\SerialReceivedEventArgs.cs" />\r
-    <Compile Include="System.IO.Ports\SerialSignal.cs" />\r
-    <Compile Include="System.IO.Ports\StopBits.cs" />\r
-    <Compile Include="System.IO.Ports\WinSerialStream.cs" />\r
-    <Compile Include="System.IO\DefaultWatcher.cs" />\r
-    <Compile Include="System.IO\ErrorEventArgs.cs" />\r
-    <Compile Include="System.IO\ErrorEventHandler.cs" />\r
-    <Compile Include="System.IO\FAMWatcher.cs" />\r
-    <Compile Include="System.IO\FileAction.cs" />\r
-    <Compile Include="System.IO\FileSystemEventArgs.cs" />\r
-    <Compile Include="System.IO\FileSystemEventHandler.cs" />\r
-    <Compile Include="System.IO\FileSystemWatcher.cs" />\r
-    <Compile Include="System.IO\IFileWatcher.cs" />\r
-    <Compile Include="System.IO\InotifyWatcher.cs" />\r
-    <Compile Include="System.IO\InternalBufferOverflowException.cs" />\r
-    <Compile Include="System.IO\InvalidDataException.cs" />\r
-    <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
-    <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
-    <Compile Include="System.IO\NotifyFilters.cs" />\r
-    <Compile Include="System.IO\NullFileWatcher.cs" />\r
-    <Compile Include="System.IO\RenamedEventArgs.cs" />\r
-    <Compile Include="System.IO\RenamedEventHandler.cs" />\r
-    <Compile Include="System.IO\SearchPattern.cs" />\r
-    <Compile Include="System.IO\WaitForChangedResult.cs" />\r
-    <Compile Include="System.IO\WatcherChangeTypes.cs" />\r
-    <Compile Include="System.IO\WindowsWatcher.cs" />\r
-    <Compile Include="System.Media\AudioData.cs" />\r
-    <Compile Include="System.Media\AudioDevice.cs" />\r
-    <Compile Include="System.Media\SoundPlayer.cs" />\r
-    <Compile Include="System.Media\SystemSound.cs" />\r
-    <Compile Include="System.Media\SystemSounds.cs" />\r
-    <Compile Include="System.Media\Win32SoundPlayer.cs" />\r
-    <Compile Include="System.Net.Cache\HttpCacheAgeControl.cs" />\r
-    <Compile Include="System.Net.Cache\HttpRequestCacheLevel.cs" />\r
-    <Compile Include="System.Net.Cache\HttpRequestCachePolicy.cs" />\r
-    <Compile Include="System.Net.Cache\RequestCacheLevel.cs" />\r
-    <Compile Include="System.Net.Cache\RequestCachePolicy.cs" />\r
-    <Compile Include="System.Net.Configuration\AuthenticationModuleElement.cs" />\r
-    <Compile Include="System.Net.Configuration\AuthenticationModuleElementCollection.cs" />\r
-    <Compile Include="System.Net.Configuration\AuthenticationModulesSection.cs" />\r
-    <Compile Include="System.Net.Configuration\BypassElement.cs" />\r
-    <Compile Include="System.Net.Configuration\BypassElementCollection.cs" />\r
-    <Compile Include="System.Net.Configuration\ConnectionManagementElement.cs" />\r
-    <Compile Include="System.Net.Configuration\ConnectionManagementElementCollection.cs" />\r
-    <Compile Include="System.Net.Configuration\ConnectionManagementHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\ConnectionManagementSection.cs" />\r
-    <Compile Include="System.Net.Configuration\DefaultProxyHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\DefaultProxySection.cs" />\r
-    <Compile Include="System.Net.Configuration\FtpCachePolicyElement.cs" />\r
-    <Compile Include="System.Net.Configuration\HttpCachePolicyElement.cs" />\r
-    <Compile Include="System.Net.Configuration\HttpWebRequestElement.cs" />\r
-    <Compile Include="System.Net.Configuration\Ipv6Element.cs" />\r
-    <Compile Include="System.Net.Configuration\MailSettingsSectionGroup.cs" />\r
-    <Compile Include="System.Net.Configuration\ModuleElement.cs" />\r
-    <Compile Include="System.Net.Configuration\NetAuthenticationModuleHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\NetConfigurationHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\NetSectionGroup.cs" />\r
-    <Compile Include="System.Net.Configuration\PerformanceCountersElement.cs" />\r
-    <Compile Include="System.Net.Configuration\ProxyElement.cs" />\r
-    <Compile Include="System.Net.Configuration\RequestCachingSection.cs" />\r
-    <Compile Include="System.Net.Configuration\ServicePointManagerElement.cs" />\r
-    <Compile Include="System.Net.Configuration\SettingsSection.cs" />\r
-    <Compile Include="System.Net.Configuration\SmtpNetworkElement.cs" />\r
-    <Compile Include="System.Net.Configuration\SmtpSection.cs" />\r
-    <Compile Include="System.Net.Configuration\SmtpSpecifiedPickupDirectoryElement.cs" />\r
-    <Compile Include="System.Net.Configuration\SocketElement.cs" />\r
-    <Compile Include="System.Net.Configuration\WebProxyScriptElement.cs" />\r
-    <Compile Include="System.Net.Configuration\WebRequestModuleElement.cs" />\r
-    <Compile Include="System.Net.Configuration\WebRequestModuleElementCollection.cs" />\r
-    <Compile Include="System.Net.Configuration\WebRequestModuleHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\WebRequestModulesSection.cs" />\r
-    <Compile Include="System.Net.Mail\AlternateView.cs" />\r
-    <Compile Include="System.Net.Mail\AlternateViewCollection.cs" />\r
-    <Compile Include="System.Net.Mail\Attachment.cs" />\r
-    <Compile Include="System.Net.Mail\AttachmentBase.cs" />\r
-    <Compile Include="System.Net.Mail\AttachmentCollection.cs" />\r
-    <Compile Include="System.Net.Mail\DeliveryNotificationOptions.cs" />\r
-    <Compile Include="System.Net.Mail\LinkedResource.cs" />\r
-    <Compile Include="System.Net.Mail\LinkedResourceCollection.cs" />\r
-    <Compile Include="System.Net.Mail\MailAddress.cs" />\r
-    <Compile Include="System.Net.Mail\MailAddressCollection.cs" />\r
-    <Compile Include="System.Net.Mail\MailMessage.cs" />\r
-    <Compile Include="System.Net.Mail\MailPriority.cs" />\r
-    <Compile Include="System.Net.Mail\SendCompletedEventHandler.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpAccess.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpClient.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpDeliveryMethod.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpException.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpFailedRecipientException.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpFailedRecipientsException.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpPermission.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpPermissionAttribute.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpStatusCode.cs" />\r
-    <Compile Include="System.Net.Mime\ContentDisposition.cs" />\r
-    <Compile Include="System.Net.Mime\ContentType.cs" />\r
-    <Compile Include="System.Net.Mime\DispositionTypeNames.cs" />\r
-    <Compile Include="System.Net.Mime\MediaTypeNames.cs" />\r
-    <Compile Include="System.Net.Mime\TransferEncoding.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\DuplicateAddressDetectionState.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\GatewayIPAddressInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\GatewayIPAddressInformationCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IcmpV4Statistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IcmpV6Statistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPAddressCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPAddressInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPAddressInformationCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPGlobalProperties.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPGlobalStatistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPInterfaceProperties.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPStatus.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPv4InterfaceProperties.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPv4InterfaceStatistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPv6InterfaceProperties.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\LinuxNetworkInterfaceMarshal.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\MacOsNetworkInterfaceMarshal.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\MulticastIPAddressInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\MulticastIPAddressInformationCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetBiosNodeType.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkAddressChangedEventHandler.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkAvailabilityChangedEventHandler.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkAvailabilityEventArgs.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkChange.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInformationAccess.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInformationException.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInformationPermission.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInformationPermissionAttribute.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInterface.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInterfaceComponent.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInterfaceType.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\OperationalStatus.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PhysicalAddress.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\Ping.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingCompletedEventArgs.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingCompletedEventHandler.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingException.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingOptions.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingReply.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PrefixOrigin.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\SuffixOrigin.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\TcpConnectionInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\TcpState.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\TcpStatistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\UdpStatistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\UnicastIPAddressInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\UnicastIPAddressInformationCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\Win32NetworkInterfaceMarshal.cs" />\r
-    <Compile Include="System.Net.Security\AuthenticatedStream.cs" />\r
-    <Compile Include="System.Net.Security\AuthenticationLevel.cs" />\r
-    <Compile Include="System.Net.Security\LocalCertificateSelectionCallback.cs" />\r
-    <Compile Include="System.Net.Security\NegotiateStream.cs" />\r
-    <Compile Include="System.Net.Security\ProtectionLevel.cs" />\r
-    <Compile Include="System.Net.Security\RemoteCertificateValidationCallback.cs" />\r
-    <Compile Include="System.Net.Security\SslPolicyErrors.cs" />\r
-    <Compile Include="System.Net.Security\SslStream.cs" />\r
-    <Compile Include="System.Net.Sockets\AddressFamily.cs" />\r
-    <Compile Include="System.Net.Sockets\IOControlCode.cs" />\r
-    <Compile Include="System.Net.Sockets\IPPacketInformation.cs" />\r
-    <Compile Include="System.Net.Sockets\IPv6MulticastOption.cs" />\r
-    <Compile Include="System.Net.Sockets\LingerOption.cs" />\r
-    <Compile Include="System.Net.Sockets\MulticastOption.cs" />\r
-    <Compile Include="System.Net.Sockets\NetworkStream.cs" />\r
-    <Compile Include="System.Net.Sockets\ProtocolFamily.cs" />\r
-    <Compile Include="System.Net.Sockets\ProtocolType.cs" />\r
-    <Compile Include="System.Net.Sockets\SafeSocketHandle.cs" />\r
-    <Compile Include="System.Net.Sockets\SelectMode.cs" />\r
-    <Compile Include="System.Net.Sockets\SendPacketsElement.cs" />\r
-    <Compile Include="System.Net.Sockets\Socket.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketAsyncEventArgs.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketAsyncOperation.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketAsyncResult.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketError.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketException.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketFlags.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketInformation.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketInformationOptions.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketOperation.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketOptionLevel.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketShutdown.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketType.cs" />\r
-    <Compile Include="System.Net.Sockets\TcpClient.cs" />\r
-    <Compile Include="System.Net.Sockets\TcpListener.cs" />\r
-    <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
-    <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
-    <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
-    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
-    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
-    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
-    <Compile Include="System.Net\AuthenticationManager.cs" />\r
-    <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
-    <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
-    <Compile Include="System.Net\Authorization.cs" />\r
-    <Compile Include="System.Net\BasicClient.cs" />\r
-    <Compile Include="System.Net\BindIPEndPoint.cs" />\r
-    <Compile Include="System.Net\ChunkedInputStream.cs" />\r
-    <Compile Include="System.Net\ChunkStream.cs" />\r
-    <Compile Include="System.Net\ConnectionModes.cs" />\r
-    <Compile Include="System.Net\CredentialCache.cs" />\r
-    <Compile Include="System.Net\DecompressionMethods.cs" />\r
-    <Compile Include="System.Net\DefaultCertificatePolicy.cs" />\r
-    <Compile Include="System.Net\DigestClient.cs" />\r
-    <Compile Include="System.Net\Dns.cs" />\r
-    <Compile Include="System.Net\DnsAsyncResult.cs" />\r
-    <Compile Include="System.Net\DnsEndPoint.cs" />\r
-    <Compile Include="System.Net\DnsPermission.cs" />\r
-    <Compile Include="System.Net\DnsPermissionAttribute.cs" />\r
-    <Compile Include="System.Net\EndPoint.cs" />\r
-    <Compile Include="System.Net\EndPointListener.cs" />\r
-    <Compile Include="System.Net\EndPointManager.cs" />\r
-    <Compile Include="System.Net\EndpointPermission.cs" />\r
-    <Compile Include="System.Net\FileWebRequest.cs" />\r
-    <Compile Include="System.Net\FileWebRequestCreator.cs" />\r
-    <Compile Include="System.Net\FileWebResponse.cs" />\r
-    <Compile Include="System.Net\FtpAsyncResult.cs" />\r
-    <Compile Include="System.Net\FtpDataStream.cs" />\r
-    <Compile Include="System.Net\FtpRequestCreator.cs" />\r
-    <Compile Include="System.Net\FtpStatus.cs" />\r
-    <Compile Include="System.Net\FtpStatusCode.cs" />\r
-    <Compile Include="System.Net\FtpWebRequest.cs" />\r
-    <Compile Include="System.Net\FtpWebResponse.cs" />\r
-    <Compile Include="System.Net\GlobalProxySelection.cs" />\r
-    <Compile Include="System.Net\HttpConnection.cs" />\r
-    <Compile Include="System.Net\HttpListener.cs" />\r
-    <Compile Include="System.Net\HttpListenerBasicIdentity.cs" />\r
-    <Compile Include="System.Net\HttpListenerContext.cs" />\r
-    <Compile Include="System.Net\HttpListenerException.cs" />\r
-    <Compile Include="System.Net\HttpListenerPrefixCollection.cs" />\r
-    <Compile Include="System.Net\HttpListenerRequest.cs" />\r
-    <Compile Include="System.Net\HttpListenerResponse.cs" />\r
-    <Compile Include="System.Net\HttpRequestCreator.cs" />\r
-    <Compile Include="System.Net\HttpRequestHeader.cs" />\r
-    <Compile Include="System.Net\HttpResponseHeader.cs" />\r
-    <Compile Include="System.Net\HttpStatusCode.cs" />\r
-    <Compile Include="System.Net\HttpStreamAsyncResult.cs" />\r
-    <Compile Include="System.Net\HttpUtility.cs" />\r
-    <Compile Include="System.Net\HttpVersion.cs" />\r
-    <Compile Include="System.Net\HttpWebRequest.cs" />\r
-    <Compile Include="System.Net\HttpWebResponse.cs" />\r
-    <Compile Include="System.Net\IAuthenticationModule.cs" />\r
-    <Compile Include="System.Net\ICertificatePolicy.cs" />\r
-    <Compile Include="System.Net\ICredentialLookup.cs" />\r
-    <Compile Include="System.Net\ICredentialPolicy.cs" />\r
-    <Compile Include="System.Net\ICredentialsByHost.cs" />\r
-    <Compile Include="System.Net\IPAddress.cs" />\r
-    <Compile Include="System.Net\IPEndPoint.cs" />\r
-    <Compile Include="System.Net\IPHostEntry.cs" />\r
-    <Compile Include="System.Net\IPv6Address.cs" />\r
-    <Compile Include="System.Net\IWebConnectionState.cs" />\r
-    <Compile Include="System.Net\IWebProxy.cs" />\r
-    <Compile Include="System.Net\IWebProxyScript.cs" />\r
-    <Compile Include="System.Net\IWebRequestCreate.cs" />\r
-    <Compile Include="System.Net\ListenerAsyncResult.cs" />\r
-    <Compile Include="System.Net\ListenerPrefix.cs" />\r
-    <Compile Include="System.Net\MacProxy.cs" />\r
-    <Compile Include="System.Net\MonoHttpDate.cs" />\r
-    <Compile Include="System.Net\NetConfig.cs" />\r
-    <Compile Include="System.Net\NetworkAccess.cs" />\r
-    <Compile Include="System.Net\NetworkCredential.cs" />\r
-    <Compile Include="System.Net\NtlmClient.cs" />\r
-    <Compile Include="System.Net\ProtocolViolationException.cs" />\r
-    <Compile Include="System.Net\RequestStream.cs" />\r
-    <Compile Include="System.Net\ResponseStream.cs" />\r
-    <Compile Include="System.Net\SecurityProtocolType.cs" />\r
-    <Compile Include="System.Net\ServicePoint.cs" />\r
-    <Compile Include="System.Net\ServicePointManager.cs" />\r
-    <Compile Include="System.Net\ServicePointManager.extra.cs" />\r
-    <Compile Include="System.Net\SimpleAsyncResult.cs" />\r
-    <Compile Include="System.Net\SocketAddress.cs" />\r
-    <Compile Include="System.Net\SocketPermission.cs" />\r
-    <Compile Include="System.Net\SocketPermissionAttribute.cs" />\r
-    <Compile Include="System.Net\TransportContext.cs" />\r
-    <Compile Include="System.Net\TransportType.cs" />\r
-    <Compile Include="System.Net\WebAsyncResult.cs" />\r
-    <Compile Include="System.Net\WebConnection.cs" />\r
-    <Compile Include="System.Net\WebConnectionData.cs" />\r
-    <Compile Include="System.Net\WebConnectionGroup.cs" />\r
-    <Compile Include="System.Net\WebConnectionStream.cs" />\r
-    <Compile Include="System.Net\WebException.cs" />\r
-    <Compile Include="System.Net\WebExceptionStatus.cs" />\r
-    <Compile Include="System.Net\WebHeaderCollection.cs" />\r
-    <Compile Include="System.Net\WebProxy.cs" />\r
-    <Compile Include="System.Net\WebRequest.cs" />\r
-    <Compile Include="System.Net\WebRequestMethods.cs" />\r
-    <Compile Include="System.Net\WebResponse.cs" />\r
-    <Compile Include="System.Net\WebUtility.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\ADVF.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\DATADIR.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\DVASPECT.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\FORMATETC.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\IAdviseSink.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\IDataObject.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\IEnumFORMATETC.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\IEnumSTATDATA.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\STATDATA.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\STGMEDIUM.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\TYMED.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\DefaultParameterValueAttribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\HandleCollector.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\StandardOleMarshalObject.cs" />\r
-    <Compile Include="System.Security.AccessControl\SemaphoreAccessRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\SemaphoreAuditRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\SemaphoreRights.cs" />\r
-    <Compile Include="System.Security.AccessControl\SemaphoreSecurity.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection.Configuration\ConfigUtil.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection.Configuration\ExtendedProtectionPolicyElement.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection.Configuration\ServiceNameElement.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection.Configuration\ServiceNameElementCollection.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ChannelBinding.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ChannelBindingKind.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ExtendedProtectionPolicy.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ExtendedProtectionPolicyTypeConverter.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\PolicyEnforcement.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ProtectionScenario.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ServiceNameCollection.cs" />\r
-    <Compile Include="System.Security.Authentication\AuthenticationException.cs" />\r
-    <Compile Include="System.Security.Authentication\CipherAlgorithmType.cs" />\r
-    <Compile Include="System.Security.Authentication\ExchangeAlgorithmType.cs" />\r
-    <Compile Include="System.Security.Authentication\HashAlgorithmType.cs" />\r
-    <Compile Include="System.Security.Authentication\InvalidCredentialException.cs" />\r
-    <Compile Include="System.Security.Authentication\SslProtocols.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\OpenFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\OSX509Certificates.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\PublicKey.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\StoreLocation.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\StoreName.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X500DistinguishedName.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X500DistinguishedNameFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509BasicConstraintsExtension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate2.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate2Collection.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate2Enumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509CertificateCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Chain.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainElement.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainElementCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainElementEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainPolicy.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainStatus.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainStatusFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509EnhancedKeyUsageExtension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Extension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ExtensionCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ExtensionEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509FindType.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509IncludeOption.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509KeyUsageExtension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509KeyUsageFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509NameType.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509RevocationFlag.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509RevocationMode.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Store.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509SubjectKeyIdentifierHashAlgorithm.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509VerificationFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography\AsnEncodedData.cs" />\r
-    <Compile Include="System.Security.Cryptography\AsnEncodedDataCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography\AsnEncodedDataEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography\Oid.cs" />\r
-    <Compile Include="System.Security.Cryptography\OidCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography\OidEnumerator.cs" />\r
-    <Compile Include="System.Security.Permissions\PermissionHelper.cs" />\r
-    <Compile Include="System.Security.Permissions\ResourcePermissionBase.cs" />\r
-    <Compile Include="System.Security.Permissions\ResourcePermissionBaseEntry.cs" />\r
-    <Compile Include="System.Security.Permissions\StorePermission.cs" />\r
-    <Compile Include="System.Security.Permissions\StorePermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\StorePermissionFlags.cs" />\r
-    <Compile Include="System.Threading\Semaphore.cs" />\r
-    <Compile Include="System.Threading\ThreadExceptionEventArgs.cs" />\r
-    <Compile Include="System.Threading\ThreadExceptionEventHandler.cs" />\r
-    <Compile Include="System.Timers\ElapsedEventArgs.cs" />\r
-    <Compile Include="System.Web\AspNetHostingPermission.cs" />\r
-    <Compile Include="System.Web\AspNetHostingPermissionAttribute.cs" />\r
-    <Compile Include="System.Web\AspNetHostingPermissionLevel.cs" />\r
-    <Compile Include="System.Windows.Input\ICommand.cs" />\r
-    <Compile Include="System\DefaultUriParser.cs" />\r
-    <Compile Include="System\FileStyleUriParser.cs" />\r
-    <Compile Include="System\FtpStyleUriParser.cs" />\r
-    <Compile Include="System\GenericUriParser.cs" />\r
-    <Compile Include="System\GenericUriParserOptions.cs" />\r
-    <Compile Include="System\GopherStyleUriParser.cs" />\r
-    <Compile Include="System\HttpStyleUriParser.cs" />\r
-    <Compile Include="System\IUriData.cs" />\r
-    <Compile Include="System\LdapStyleUriParser.cs" />\r
-    <Compile Include="System\NetPipeStyleUriParser.cs" />\r
-    <Compile Include="System\NetTcpStyleUriParser.cs" />\r
-    <Compile Include="System\NewsStyleUriParser.cs" />\r
-    <Compile Include="System\Platform.cs" />\r
-    <Compile Include="System\SRDescriptionAttribute.cs" />\r
-    <Compile Include="System\Uri.cs" />\r
-    <Compile Include="System\UriBuilder.cs" />\r
-    <Compile Include="System\UriComponents.cs" />\r
-    <Compile Include="System\UriData.cs" />\r
-    <Compile Include="System\UriElements.cs" />\r
-    <Compile Include="System\UriFormat.cs" />\r
-    <Compile Include="System\UriFormatException.cs" />\r
-    <Compile Include="System\UriHelper.cs" />\r
-    <Compile Include="System\UriHostNameType.cs" />\r
-    <Compile Include="System\UriIdnScope.cs" />\r
-    <Compile Include="System\UriKind.cs" />\r
-    <Compile Include="System\UriParseComponents.cs" />\r
-    <Compile Include="System\UriParser.cs" />\r
-    <Compile Include="System\UriPartial.cs" />\r
-    <Compile Include="System\UriTypeConverter.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/Asterisk.wav">\r
-      <LogicalName>Asterisk.wav</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/Beep.wav">\r
-      <LogicalName>Beep.wav</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/Exclamation.wav">\r
-      <LogicalName>Exclamation.wav</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/Hand.wav">\r
-      <LogicalName>Hand.wav</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/Question.wav">\r
-      <LogicalName>Question.wav</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index 9e4ca99eef1919e9cf3ecbc49b99bbdfb4e21900..c0a8680cf3fe9e846aec45ad81e168bb9383f9d8 100644 (file)
@@ -25,7 +25,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699,618</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX</DefineConstants>\r
+    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -33,7 +33,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699,618</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX</DefineConstants>\r
+    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_ScatterGatherBuffers.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Cache\RequestCachePolicy.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookie.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookiecollection.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookiecontainer.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\NetworkInformation\IPInterfaceStatistics.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\NetworkInformation\ScopeLevel.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\NetworkInformation\UnicastIPAddressInformation.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\ServicePointManager.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Sockets\IPProtectionLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Sockets\NetworkStream.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Sockets\SocketOptionName.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\UnicodeDecodingConformance.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\UnicodeEncodingConformance.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WebPermission.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WebUtility.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WriteStreamClosedEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\UriEnumTypes.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\URIFormatException.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\UriHostNameType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\URIPartial.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\compiledregexrunner.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\compiledregexrunnerfactory.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\Regex.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\services\timers\system\timers\TimersDescriptionAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\collections\concurrent\BlockingCollection.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\collections\concurrent\ConcurrentBag.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\sys\system\runtime\interopservices\DefaultParameterValueAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\sys\system\runtime\interopservices\handlecollector.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\runtime\versioning\FrameworkName.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\threading\Barrier.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\windows\markup\ValueSerializerAttribute.cs" />\r
     <Compile Include="Mono.Net.Dns\ResolverError.cs" />\r
     <Compile Include="Mono.Net.Dns\SimpleResolver.cs" />\r
     <Compile Include="Mono.Net.Dns\SimpleResolverEventArgs.cs" />\r
+    <Compile Include="Mono.Net.Security\CallbackHelpers.cs" />\r
+    <Compile Include="Mono.Net.Security\ChainValidationHelper.cs" />\r
+    <Compile Include="Mono.Net.Security\IMonoSslStream.cs" />\r
+    <Compile Include="Mono.Net.Security\IMonoTlsProvider.cs" />\r
+    <Compile Include="Mono.Net.Security\LegacySslStream.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoDefaultTlsProvider.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoSslStreamImpl.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoSslStreamWrapper.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoTlsProviderFactory.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoTlsProviderImpl.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoTlsProviderWrapper.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoTlsStream.cs" />\r
+    <Compile Include="Mono.Net.Security\NoReflectionHelper.cs" />\r
+    <Compile Include="Mono.Net.Security\SystemCertificateValidator.cs" />\r
+    <Compile Include="ReferenceSources\_SecureChannel.cs" />\r
+    <Compile Include="ReferenceSources\_SslState.cs" />\r
+    <Compile Include="ReferenceSources\_SslStream.cs" />\r
     <Compile Include="ReferenceSources\AssertWrapper.cs" />\r
     <Compile Include="ReferenceSources\BinaryCompatibility.cs" />\r
     <Compile Include="ReferenceSources\ConfigurationManagerInternalFactory.cs" />\r
     <Compile Include="ReferenceSources\HttpSysSettings.cs" />\r
+    <Compile Include="ReferenceSources\Internal.cs" />\r
     <Compile Include="ReferenceSources\Logging.cs" />\r
     <Compile Include="ReferenceSources\NativeMethods.cs" />\r
     <Compile Include="ReferenceSources\SettingsSectionInternal.cs" />\r
     <Compile Include="ReferenceSources\Socket.cs" />\r
     <Compile Include="ReferenceSources\SR.cs" />\r
+    <Compile Include="ReferenceSources\SR2.cs" />\r
     <Compile Include="ReferenceSources\SRCategoryAttribute.cs" />\r
+    <Compile Include="ReferenceSources\SslStream.cs" />\r
+    <Compile Include="ReferenceSources\SSPIConfiguration.cs" />\r
+    <Compile Include="ReferenceSources\SSPISafeHandles.cs" />\r
+    <Compile Include="ReferenceSources\SSPIWrapper.cs" />\r
     <Compile Include="ReferenceSources\SystemNetworkCredential.cs" />\r
     <Compile Include="ReferenceSources\WebHeaderCollectionType.cs" />\r
     <Compile Include="ReferenceSources\Win32Exception.cs" />\r
     <Compile Include="System.Media\SystemSound.cs" />\r
     <Compile Include="System.Media\SystemSounds.cs" />\r
     <Compile Include="System.Media\Win32SoundPlayer.cs" />\r
-    <Compile Include="System.Net.Cache\HttpCacheAgeControl.cs" />\r
-    <Compile Include="System.Net.Cache\HttpRequestCacheLevel.cs" />\r
-    <Compile Include="System.Net.Cache\HttpRequestCachePolicy.cs" />\r
-    <Compile Include="System.Net.Cache\RequestCacheLevel.cs" />\r
-    <Compile Include="System.Net.Cache\RequestCachePolicy.cs" />\r
     <Compile Include="System.Net.Configuration\AuthenticationModuleElement.cs" />\r
     <Compile Include="System.Net.Configuration\AuthenticationModuleElementCollection.cs" />\r
     <Compile Include="System.Net.Configuration\AuthenticationModulesSection.cs" />\r
     <Compile Include="System.Net.Sockets\IPv6MulticastOption.cs" />\r
     <Compile Include="System.Net.Sockets\LingerOption.cs" />\r
     <Compile Include="System.Net.Sockets\MulticastOption.cs" />\r
-    <Compile Include="System.Net.Sockets\NetworkStream.cs" />\r
     <Compile Include="System.Net.Sockets\ProtocolFamily.cs" />\r
     <Compile Include="System.Net.Sockets\ProtocolType.cs" />\r
     <Compile Include="System.Net.Sockets\SafeSocketHandle.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\STATDATA.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\STGMEDIUM.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\TYMED.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\DefaultParameterValueAttribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\HandleCollector.cs" />\r
     <Compile Include="System.Runtime.InteropServices\StandardOleMarshalObject.cs" />\r
     <Compile Include="System.Security.AccessControl\SemaphoreAccessRule.cs" />\r
     <Compile Include="System.Security.AccessControl\SemaphoreAuditRule.cs" />\r
     <Compile Include="System\GenericUriParserOptions.cs" />\r
     <Compile Include="System\GopherStyleUriParser.cs" />\r
     <Compile Include="System\HttpStyleUriParser.cs" />\r
+    <Compile Include="System\IOSelector.cs" />\r
     <Compile Include="System\IUriData.cs" />\r
     <Compile Include="System\LdapStyleUriParser.cs" />\r
     <Compile Include="System\NetPipeStyleUriParser.cs" />\r
     <Compile Include="System\SRDescriptionAttribute.cs" />\r
     <Compile Include="System\Uri.cs" />\r
     <Compile Include="System\UriBuilder.cs" />\r
-    <Compile Include="System\UriComponents.cs" />\r
     <Compile Include="System\UriData.cs" />\r
     <Compile Include="System\UriElements.cs" />\r
-    <Compile Include="System\UriFormat.cs" />\r
-    <Compile Include="System\UriFormatException.cs" />\r
     <Compile Include="System\UriHelper.cs" />\r
-    <Compile Include="System\UriHostNameType.cs" />\r
-    <Compile Include="System\UriIdnScope.cs" />\r
-    <Compile Include="System\UriKind.cs" />\r
     <Compile Include="System\UriParseComponents.cs" />\r
     <Compile Include="System\UriParser.cs" />\r
-    <Compile Include="System\UriPartial.cs" />\r
     <Compile Include="System\UriTypeConverter.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
diff --git a/mcs/class/System/System-net_4_5.csproj b/mcs/class/System/System-net_4_5.csproj
deleted file mode 100644 (file)
index 79c57dc..0000000
+++ /dev/null
@@ -1,1219 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FFAC0B73-D997-493B-9C62-27656CD858BB}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;SECURITY_DEP;XML_DEP;CONFIGURATION_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;SECURITY_DEP;XML_DEP;CONFIGURATION_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeArgumentReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeArrayCreateExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeArrayIndexerExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAssignStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttachEventStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttributeArgument.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttributeArgumentCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttributeDeclaration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttributeDeclarationCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeBaseReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeBinaryOperatorExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeBinaryOperatorType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCastExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCatchClause.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCatchClauseCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeChecksumPragma.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeComment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCommentStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCommentStatementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCompileUnit.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeConditionStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeConstructor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDefaultValueExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDelegateCreateExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDelegateInvokeExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDirectionExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDirective.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDirectiveCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeEntryPointMethod.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeEventReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeExpressionCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeExpressionStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeFieldReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeGotoStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeIndexerExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeIterationStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeLabeledStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeLinePragma.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMemberEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMemberField.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMemberMethod.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMemberProperty.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMethodInvokeExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\codemethodreferenceexpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMethodReturnStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeNamespace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeNamespaceCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeNamespaceImport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeNamespaceImportCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeObjectCreateExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeParameterDeclarationExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeParameterDeclarationExpressionCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodePrimitiveExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodePropertyReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodePropertySetValueReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeRegionDirective.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeRegionMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeRemoveEventStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeSnippetCompileUnit.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeSnippetExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeSnippetStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeSnippetTypeMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeStatementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeThisReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeThrowExceptionStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTryCatchFinallyStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeConstructor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeDeclaration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeDeclarationCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeDelegate.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeMemberCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeOfExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeParameterCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeReferenceCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeVariableDeclarationStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeVariableReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CodeGeneratorOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CodeValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CompilerError.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CompilerErrorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CompilerParameters.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\GeneratedCodeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\GeneratorSupport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\ICodeCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\ICodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\ICodeParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\IndentTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\LanguageOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\FieldDirection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\MemberAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\bithelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\debugview.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\iset.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\linkedlist.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\queue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\sorteddictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\sortedlist.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\sortedset.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\sortedsetdebugview.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\stack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\throwhelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\objectmodel\observablecollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\objectmodel\readonlyobservablecollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\bitvector32.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\casesensitivestringdictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\collectionsutil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\fixedstringlookup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\hybriddictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\inotifycollectionchanged.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\iordereddictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\listdictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\nameobjectcollectionbase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\namevaluecollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\notifycollectionchangedeventargs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\ordereddictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\stringcollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\stringdictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\stringdictionarywithcomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AddingNewEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AddingNewEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AmbientValueAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ArrayConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ArraySubsetEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AsyncCompletedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AsyncCompletedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AsyncOperation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AsyncOperationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AttributeCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AttributeProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BackgroundWorker.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BaseComponentEditor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\basenumberconverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BindableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BindableSupport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BindingDirection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BindingList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BooleanConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BrowsableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ByteConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CancelEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CancelEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CategoryAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CharConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CollectionChangeAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CollectionChangeEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CollectionChangeEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CollectionConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ComplexBindingPropertiesAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CompModSwitches.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Component.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ComponentCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ComponentConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ComponentResourceManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Container.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ContainerFilterService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CultureInfoConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CustomTypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataErrorsChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataObjectAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataObjectFieldAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataObjectMethodAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataObjectMethodType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DateTimeConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DateTimeOffsetConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DebugExtendedPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DebugReflectEventDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DebugReflectPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DebugTypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DecimalConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DefaultBindingPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DefaultEventAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DefaultPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DefaultValueAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DelegatingTypeDescriptionProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DescriptionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ActiveDocumentEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ActiveDocumentEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\CheckoutException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\CommandID.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentChangedEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentChangingEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentChangingEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentRenameEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentRenameEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerOptionService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerTransaction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerTransactionCloseEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerTransactionCloseEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerVerb.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerVerbCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesigntimeLicenseContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesigntimeLicenseContextSerializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DocumentCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DocumentEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DocumentEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\HelpContextType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\HelpKeywordAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\HelpKeywordType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IComponentChangeService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IComponentDiscoveryService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IComponentInitializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesigner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerEventService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerHost.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerHostTransactionState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerOptionService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDictionaryService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IEventPropertyService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IExtenderListService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IExtenderProviderService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IHelpService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IInheritanceService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IMenuCommandService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\InheritanceAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\InheritanceLevel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IReferenceService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IResourceService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IRootDesigner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ISelectionService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IServiceObjectContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ITreeDesigner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ITypeDescriptorFilterService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ITypeDiscoveryService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ITypeResolutionService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\MenuCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\NotifyParentPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ParenthesizePropertyNameAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\PropertyTabAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\PropertyTabScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\RefreshProperties.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\RefreshPropertiesAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\SelectionTypes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\ComponentSerializationService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\ContextStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\DefaultSerializationProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\DesignerLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\DesignerSerializerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerLoaderHost.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerLoaderService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerSerializationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerSerializationProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerSerializationService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\INameCreationService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\InstanceDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\MemberRelationshipService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\ResolveNameEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\ResolveNameEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\RootDesignerSerializerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\SerializationStore.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ServiceCreatorCallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ServiceObjectContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\StandardCommands.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\StandardToolWindows.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ToolboxItemAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ViewTechnology.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignerCategoryAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignerSerializationVisibility.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignerSerializationVisibilityAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignOnlyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignTimeVisibleAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DisplayNameAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DoubleConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DoWorkEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DoWorkEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EditorAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EditorBrowsableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EnumConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EventDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EventDescriptorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EventHandlerList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ExpandableObjectConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ExtendedPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ExtenderProvidedPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\FxCopSuppression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\GuidConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\HandledEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\HandledEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IBindingList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IBindingListView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ICancelAddNew.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IChangeTracking.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IComNativeDescriptorHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IComponent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ICustomTypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IDataErrorInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IEditableObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IExtenderProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IIntellisenseBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IListSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ImmutableObjectAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INestedContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INestedSite.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InitializationEventAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INotifyDataErrorInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INotifyPropertyChanged.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INotifyPropertyChanging.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InstallerTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InstanceCreationEditor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Int16Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Int32Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Int64Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IntSecurity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InvalidAsynchronousStateException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InvalidEnumArgumentException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IRaiseItemChangedEvents.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IRevertibleChangeTracking.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ISite.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ISupportInitialize.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ISupportInitializeNotification.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ISynchronizeInvoke.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ITypeDescriptorContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ITypedList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\License.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseUsageMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicFileLicenseProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListBindableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListChangedType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListSortDescription.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListSortDescriptionCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListSortDirection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LocalizableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LookupBindingPropertiesAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MarshalByValueComponent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MaskedTextProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MaskedTextResultHint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MemberDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MergablePropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MultilineStringConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\NestedContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\NullableConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PasswordPropertyTextAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ProgressChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ProgressChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyChangingEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyChangingEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyDescriptorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ProvidePropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReadOnlyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RecommendedAsConfigurableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReferenceConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReflectEventDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReflectPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReflectTypeDescriptionProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RefreshEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RefreshEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RunInstallerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RunWorkerCompletedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RunWorkerCompletedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\SByteConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\SettingsBindableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\SingleConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\StringConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\SyntaxCheck.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TimeSpanConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ToolboxItemFilterAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ToolboxItemFilterType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeConverterAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeDescriptionProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeDescriptionProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeDescriptionProviderService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeListConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\UInt16Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\UInt32Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\UInt64Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\WarningException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Win32Exception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\AssertSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\BooleanSwitch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\ConsoleTraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\CorrelationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\Debug.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\DelimitedListTraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\DiagnosticsConfiguration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\FilterElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\ListenerElementsCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\PerfCounterSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SeverityFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SourceElementsCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SourceFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SourceLevels.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SourceSwitch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\Switch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SwitchAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SwitchElementsCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SwitchLevelAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SystemDiagnosticsSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TextWriterTraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\Trace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceEventCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceEventType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceInternal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceLevel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceListeners.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceSwitch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\traceutils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TypedElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\XmlWriterTraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\hresults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\invariantcomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\PrivilegedConfigurationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\SecurityUtils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\WeakHashtable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_BufferOffsetSize.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_ScatterGatherBuffers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookie.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookiecollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookiecontainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookieexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\HttpListenerRequestUriBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Internal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Sockets\SocketOptionName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\UnicodeDecodingConformance.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\UnicodeEncodingConformance.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\webclient.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WebPermission.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WriteStreamClosedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\compiledregexrunner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\compiledregexrunnerfactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\Regex.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexBoyerMoore.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCapture.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCaptureCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCharClass.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCompilationInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexFCD.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexGroupCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexInterpreter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexMatch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexMatchCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexMatchTimeoutException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexReplacement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexRunner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexRunnerFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\security\system\security\permissions\typedescriptorpermission.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\services\timers\system\timers\ElapsedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\services\timers\system\timers\Timer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\services\timers\system\timers\TimersDescriptionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\collections\concurrent\BlockingCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\collections\concurrent\ConcurrentBag.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\runtime\versioning\FrameworkName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\threading\Barrier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\windows\markup\ValueSerializerAttribute.cs" />\r
-    <Compile Include="..\..\build\common\SR.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
-    <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
-    <Compile Include="Microsoft.CSharp\CSharpCodeProvider.cs" />\r
-    <Compile Include="Microsoft.VisualBasic\VBCodeCompiler.cs" />\r
-    <Compile Include="Microsoft.VisualBasic\VBCodeGenerator.cs" />\r
-    <Compile Include="Microsoft.VisualBasic\VBCodeProvider.cs" />\r
-    <Compile Include="Microsoft.Win32\IntranetZoneCredentialPolicy.cs" />\r
-    <Compile Include="Microsoft.Win32\PowerModeChangedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\PowerModeChangedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\PowerModes.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndingEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndingEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndReasons.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionSwitchEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionSwitchEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionSwitchReason.cs" />\r
-    <Compile Include="Microsoft.Win32\SystemEvents.cs" />\r
-    <Compile Include="Microsoft.Win32\TimerElapsedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\TimerElapsedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceCategory.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceChangedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceChangedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceChangingEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceChangingEventHandler.cs" />\r
-    <Compile Include="Mono.Http\NtlmClient.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsClass.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsHeader.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsOpCode.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsPacket.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsQClass.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsQType.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsQuery.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsQuestion.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsRCode.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecord.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordA.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordAAAA.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordCName.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordIPAddress.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordPTR.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResponse.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsType.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsUtil.cs" />\r
-    <Compile Include="Mono.Net.Dns\ResolverAsyncOperation.cs" />\r
-    <Compile Include="Mono.Net.Dns\ResolverError.cs" />\r
-    <Compile Include="Mono.Net.Dns\SimpleResolver.cs" />\r
-    <Compile Include="Mono.Net.Dns\SimpleResolverEventArgs.cs" />\r
-    <Compile Include="ReferenceSources\AssertWrapper.cs" />\r
-    <Compile Include="ReferenceSources\BinaryCompatibility.cs" />\r
-    <Compile Include="ReferenceSources\ConfigurationManagerInternalFactory.cs" />\r
-    <Compile Include="ReferenceSources\HttpSysSettings.cs" />\r
-    <Compile Include="ReferenceSources\Logging.cs" />\r
-    <Compile Include="ReferenceSources\NativeMethods.cs" />\r
-    <Compile Include="ReferenceSources\SettingsSectionInternal.cs" />\r
-    <Compile Include="ReferenceSources\Socket.cs" />\r
-    <Compile Include="ReferenceSources\SR.cs" />\r
-    <Compile Include="ReferenceSources\SRCategoryAttribute.cs" />\r
-    <Compile Include="ReferenceSources\SystemNetworkCredential.cs" />\r
-    <Compile Include="ReferenceSources\WebHeaderCollectionType.cs" />\r
-    <Compile Include="ReferenceSources\Win32Exception.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CodeCompiler.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CodeDomConfigurationHandler.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CodeDomProvider.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CodeParser.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\Compiler.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerCollection.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerInfo.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerProviderOption.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerProviderOptionsCollection.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerResults.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\Executor.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\TempFileCollection.cs" />\r
-    <Compile Include="System.Configuration\ApplicationScopedSettingAttribute.cs" />\r
-    <Compile Include="System.Configuration\ApplicationSettingsBase.cs" />\r
-    <Compile Include="System.Configuration\ApplicationSettingsGroup.cs" />\r
-    <Compile Include="System.Configuration\AppSettingsReader.cs" />\r
-    <Compile Include="System.Configuration\ClientSettingsSection.cs" />\r
-    <Compile Include="System.Configuration\ConfigHelper.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationException.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationSettings.cs" />\r
-    <Compile Include="System.Configuration\ConfigXmlDocument.cs" />\r
-    <Compile Include="System.Configuration\CustomizableFileSettingsProvider.cs" />\r
-    <Compile Include="System.Configuration\DefaultSettingValueAttribute.cs" />\r
-    <Compile Include="System.Configuration\DictionarySectionHandler.cs" />\r
-    <Compile Include="System.Configuration\IApplicationSettingsProvider.cs" />\r
-    <Compile Include="System.Configuration\IConfigurationSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\IConfigurationSystem.cs" />\r
-    <Compile Include="System.Configuration\IConfigXmlNode.cs" />\r
-    <Compile Include="System.Configuration\IdnElement.cs" />\r
-    <Compile Include="System.Configuration\IgnoreSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\IPersistComponentSettings.cs" />\r
-    <Compile Include="System.Configuration\IriParsingElement.cs" />\r
-    <Compile Include="System.Configuration\ISettingsProviderService.cs" />\r
-    <Compile Include="System.Configuration\LocalFileSettingsProvider.cs" />\r
-    <Compile Include="System.Configuration\NameValueFileSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\NameValueSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\NoSettingsVersionUpgradeAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingChangingEventArgs.cs" />\r
-    <Compile Include="System.Configuration\SettingChangingEventHandler.cs" />\r
-    <Compile Include="System.Configuration\SettingElement.cs" />\r
-    <Compile Include="System.Configuration\SettingElementCollection.cs" />\r
-    <Compile Include="System.Configuration\SettingsAttributeDictionary.cs" />\r
-    <Compile Include="System.Configuration\SettingsBase.cs" />\r
-    <Compile Include="System.Configuration\SettingsContext.cs" />\r
-    <Compile Include="System.Configuration\SettingsDescriptionAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsGroupDescriptionAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsGroupNameAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsLoadedEventArgs.cs" />\r
-    <Compile Include="System.Configuration\SettingsLoadedEventHandler.cs" />\r
-    <Compile Include="System.Configuration\SettingsManageability.cs" />\r
-    <Compile Include="System.Configuration\SettingsManageabilityAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsProperty.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyCollection.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyIsReadOnlyException.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyNotFoundException.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyValue.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyValueCollection.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyWrongTypeException.cs" />\r
-    <Compile Include="System.Configuration\SettingsProvider.cs" />\r
-    <Compile Include="System.Configuration\SettingsProviderAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsProviderCollection.cs" />\r
-    <Compile Include="System.Configuration\SettingsSavingEventHandler.cs" />\r
-    <Compile Include="System.Configuration\SettingsSerializeAs.cs" />\r
-    <Compile Include="System.Configuration\SettingsSerializeAsAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingValueElement.cs" />\r
-    <Compile Include="System.Configuration\SingleTagSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\SpecialSetting.cs" />\r
-    <Compile Include="System.Configuration\SpecialSettingAttribute.cs" />\r
-    <Compile Include="System.Configuration\UriSection.cs" />\r
-    <Compile Include="System.Configuration\UserScopedSettingAttribute.cs" />\r
-    <Compile Include="System.Configuration\UserSettingsGroup.cs" />\r
-    <Compile Include="System.Diagnostics.CodeAnalysis\ExcludeFromCodeCoverageAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\AlphabeticalEnumConverter.cs" />\r
-    <Compile Include="System.Diagnostics\CounterCreationData.cs" />\r
-    <Compile Include="System.Diagnostics\CounterCreationDataCollection.cs" />\r
-    <Compile Include="System.Diagnostics\CounterSample.cs" />\r
-    <Compile Include="System.Diagnostics\CounterSampleCalculator.cs" />\r
-    <Compile Include="System.Diagnostics\DataReceivedEventArgs.cs" />\r
-    <Compile Include="System.Diagnostics\DataReceivedEventHandler.cs" />\r
-    <Compile Include="System.Diagnostics\DefaultTraceListener.cs" />\r
-    <Compile Include="System.Diagnostics\DiagnosticsConfigurationHandler.cs" />\r
-    <Compile Include="System.Diagnostics\EntryWrittenEventArgs.cs" />\r
-    <Compile Include="System.Diagnostics\EntryWrittenEventHandler.cs" />\r
-    <Compile Include="System.Diagnostics\EventInstance.cs" />\r
-    <Compile Include="System.Diagnostics\EventLog.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogEntry.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogEntryCollection.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogEntryType.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogImpl.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogInstaller.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermission.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermissionAccess.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermissionAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermissionEntry.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermissionEntryCollection.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogTraceListener.cs" />\r
-    <Compile Include="System.Diagnostics\EventSourceCreationData.cs" />\r
-    <Compile Include="System.Diagnostics\FileVersionInfo.cs" />\r
-    <Compile Include="System.Diagnostics\ICollectData.cs" />\r
-    <Compile Include="System.Diagnostics\InstanceData.cs" />\r
-    <Compile Include="System.Diagnostics\InstanceDataCollection.cs" />\r
-    <Compile Include="System.Diagnostics\InstanceDataCollectionCollection.cs" />\r
-    <Compile Include="System.Diagnostics\LocalFileEventLog.cs" />\r
-    <Compile Include="System.Diagnostics\MonitoringDescriptionAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\NullEventLog.cs" />\r
-    <Compile Include="System.Diagnostics\OverflowAction.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounter.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterCategory.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterCategoryType.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterInstaller.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterInstanceLifetime.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterManager.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermission.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermissionAccess.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermissionAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermissionEntry.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermissionEntryCollection.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterType.cs" />\r
-    <Compile Include="System.Diagnostics\Process.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessModule.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessModuleCollection.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessPriorityClass.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessStartInfo.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessThread.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessThreadCollection.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessWindowStyle.cs" />\r
-    <Compile Include="System.Diagnostics\Stopwatch.cs" />\r
-    <Compile Include="System.Diagnostics\ThreadPriorityLevel.cs" />\r
-    <Compile Include="System.Diagnostics\ThreadState.cs" />\r
-    <Compile Include="System.Diagnostics\ThreadWaitReason.cs" />\r
-    <Compile Include="System.Diagnostics\TraceImpl.cs" />\r
-    <Compile Include="System.Diagnostics\TraceSourceInfo.cs" />\r
-    <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
-    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
-    <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
-    <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
-    <Compile Include="System.IO.Compression\GZipStream.cs" />\r
-    <Compile Include="System.IO.Ports\Handshake.cs" />\r
-    <Compile Include="System.IO.Ports\ISerialStream.cs" />\r
-    <Compile Include="System.IO.Ports\Parity.cs" />\r
-    <Compile Include="System.IO.Ports\SerialData.cs" />\r
-    <Compile Include="System.IO.Ports\SerialError.cs" />\r
-    <Compile Include="System.IO.Ports\SerialErrorEventArgs.cs" />\r
-    <Compile Include="System.IO.Ports\SerialPinChange.cs" />\r
-    <Compile Include="System.IO.Ports\SerialPinChangedEventArgs.cs" />\r
-    <Compile Include="System.IO.Ports\SerialPort.cs" />\r
-    <Compile Include="System.IO.Ports\SerialPortStream.cs" />\r
-    <Compile Include="System.IO.Ports\SerialReceivedEventArgs.cs" />\r
-    <Compile Include="System.IO.Ports\SerialSignal.cs" />\r
-    <Compile Include="System.IO.Ports\StopBits.cs" />\r
-    <Compile Include="System.IO.Ports\WinSerialStream.cs" />\r
-    <Compile Include="System.IO\DefaultWatcher.cs" />\r
-    <Compile Include="System.IO\ErrorEventArgs.cs" />\r
-    <Compile Include="System.IO\ErrorEventHandler.cs" />\r
-    <Compile Include="System.IO\FAMWatcher.cs" />\r
-    <Compile Include="System.IO\FileAction.cs" />\r
-    <Compile Include="System.IO\FileSystemEventArgs.cs" />\r
-    <Compile Include="System.IO\FileSystemEventHandler.cs" />\r
-    <Compile Include="System.IO\FileSystemWatcher.cs" />\r
-    <Compile Include="System.IO\IFileWatcher.cs" />\r
-    <Compile Include="System.IO\InotifyWatcher.cs" />\r
-    <Compile Include="System.IO\InternalBufferOverflowException.cs" />\r
-    <Compile Include="System.IO\InvalidDataException.cs" />\r
-    <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
-    <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
-    <Compile Include="System.IO\NotifyFilters.cs" />\r
-    <Compile Include="System.IO\NullFileWatcher.cs" />\r
-    <Compile Include="System.IO\RenamedEventArgs.cs" />\r
-    <Compile Include="System.IO\RenamedEventHandler.cs" />\r
-    <Compile Include="System.IO\SearchPattern.cs" />\r
-    <Compile Include="System.IO\WaitForChangedResult.cs" />\r
-    <Compile Include="System.IO\WatcherChangeTypes.cs" />\r
-    <Compile Include="System.IO\WindowsWatcher.cs" />\r
-    <Compile Include="System.Media\AudioData.cs" />\r
-    <Compile Include="System.Media\AudioDevice.cs" />\r
-    <Compile Include="System.Media\SoundPlayer.cs" />\r
-    <Compile Include="System.Media\SystemSound.cs" />\r
-    <Compile Include="System.Media\SystemSounds.cs" />\r
-    <Compile Include="System.Media\Win32SoundPlayer.cs" />\r
-    <Compile Include="System.Net.Cache\HttpCacheAgeControl.cs" />\r
-    <Compile Include="System.Net.Cache\HttpRequestCacheLevel.cs" />\r
-    <Compile Include="System.Net.Cache\HttpRequestCachePolicy.cs" />\r
-    <Compile Include="System.Net.Cache\RequestCacheLevel.cs" />\r
-    <Compile Include="System.Net.Cache\RequestCachePolicy.cs" />\r
-    <Compile Include="System.Net.Configuration\AuthenticationModuleElement.cs" />\r
-    <Compile Include="System.Net.Configuration\AuthenticationModuleElementCollection.cs" />\r
-    <Compile Include="System.Net.Configuration\AuthenticationModulesSection.cs" />\r
-    <Compile Include="System.Net.Configuration\BypassElement.cs" />\r
-    <Compile Include="System.Net.Configuration\BypassElementCollection.cs" />\r
-    <Compile Include="System.Net.Configuration\ConnectionManagementElement.cs" />\r
-    <Compile Include="System.Net.Configuration\ConnectionManagementElementCollection.cs" />\r
-    <Compile Include="System.Net.Configuration\ConnectionManagementHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\ConnectionManagementSection.cs" />\r
-    <Compile Include="System.Net.Configuration\DefaultProxyHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\DefaultProxySection.cs" />\r
-    <Compile Include="System.Net.Configuration\FtpCachePolicyElement.cs" />\r
-    <Compile Include="System.Net.Configuration\HttpCachePolicyElement.cs" />\r
-    <Compile Include="System.Net.Configuration\HttpWebRequestElement.cs" />\r
-    <Compile Include="System.Net.Configuration\Ipv6Element.cs" />\r
-    <Compile Include="System.Net.Configuration\MailSettingsSectionGroup.cs" />\r
-    <Compile Include="System.Net.Configuration\ModuleElement.cs" />\r
-    <Compile Include="System.Net.Configuration\NetAuthenticationModuleHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\NetConfigurationHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\NetSectionGroup.cs" />\r
-    <Compile Include="System.Net.Configuration\PerformanceCountersElement.cs" />\r
-    <Compile Include="System.Net.Configuration\ProxyElement.cs" />\r
-    <Compile Include="System.Net.Configuration\RequestCachingSection.cs" />\r
-    <Compile Include="System.Net.Configuration\ServicePointManagerElement.cs" />\r
-    <Compile Include="System.Net.Configuration\SettingsSection.cs" />\r
-    <Compile Include="System.Net.Configuration\SmtpNetworkElement.cs" />\r
-    <Compile Include="System.Net.Configuration\SmtpSection.cs" />\r
-    <Compile Include="System.Net.Configuration\SmtpSpecifiedPickupDirectoryElement.cs" />\r
-    <Compile Include="System.Net.Configuration\SocketElement.cs" />\r
-    <Compile Include="System.Net.Configuration\WebProxyScriptElement.cs" />\r
-    <Compile Include="System.Net.Configuration\WebRequestModuleElement.cs" />\r
-    <Compile Include="System.Net.Configuration\WebRequestModuleElementCollection.cs" />\r
-    <Compile Include="System.Net.Configuration\WebRequestModuleHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\WebRequestModulesSection.cs" />\r
-    <Compile Include="System.Net.Mail\AlternateView.cs" />\r
-    <Compile Include="System.Net.Mail\AlternateViewCollection.cs" />\r
-    <Compile Include="System.Net.Mail\Attachment.cs" />\r
-    <Compile Include="System.Net.Mail\AttachmentBase.cs" />\r
-    <Compile Include="System.Net.Mail\AttachmentCollection.cs" />\r
-    <Compile Include="System.Net.Mail\DeliveryNotificationOptions.cs" />\r
-    <Compile Include="System.Net.Mail\LinkedResource.cs" />\r
-    <Compile Include="System.Net.Mail\LinkedResourceCollection.cs" />\r
-    <Compile Include="System.Net.Mail\MailAddress.cs" />\r
-    <Compile Include="System.Net.Mail\MailAddressCollection.cs" />\r
-    <Compile Include="System.Net.Mail\MailMessage.cs" />\r
-    <Compile Include="System.Net.Mail\MailPriority.cs" />\r
-    <Compile Include="System.Net.Mail\SendCompletedEventHandler.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpAccess.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpClient.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpDeliveryMethod.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpException.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpFailedRecipientException.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpFailedRecipientsException.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpPermission.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpPermissionAttribute.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpStatusCode.cs" />\r
-    <Compile Include="System.Net.Mime\ContentDisposition.cs" />\r
-    <Compile Include="System.Net.Mime\ContentType.cs" />\r
-    <Compile Include="System.Net.Mime\DispositionTypeNames.cs" />\r
-    <Compile Include="System.Net.Mime\MediaTypeNames.cs" />\r
-    <Compile Include="System.Net.Mime\TransferEncoding.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\DuplicateAddressDetectionState.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\GatewayIPAddressInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\GatewayIPAddressInformationCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IcmpV4Statistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IcmpV6Statistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPAddressCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPAddressInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPAddressInformationCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPGlobalProperties.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPGlobalStatistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPInterfaceProperties.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPStatus.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPv4InterfaceProperties.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPv4InterfaceStatistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPv6InterfaceProperties.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\LinuxNetworkInterfaceMarshal.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\MacOsNetworkInterfaceMarshal.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\MulticastIPAddressInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\MulticastIPAddressInformationCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetBiosNodeType.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkAddressChangedEventHandler.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkAvailabilityChangedEventHandler.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkAvailabilityEventArgs.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkChange.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInformationAccess.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInformationException.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInformationPermission.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInformationPermissionAttribute.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInterface.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInterfaceComponent.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInterfaceType.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\OperationalStatus.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PhysicalAddress.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\Ping.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingCompletedEventArgs.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingCompletedEventHandler.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingException.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingOptions.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingReply.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PrefixOrigin.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\SuffixOrigin.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\TcpConnectionInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\TcpState.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\TcpStatistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\UdpStatistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\UnicastIPAddressInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\UnicastIPAddressInformationCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\Win32NetworkInterfaceMarshal.cs" />\r
-    <Compile Include="System.Net.Security\AuthenticatedStream.cs" />\r
-    <Compile Include="System.Net.Security\AuthenticationLevel.cs" />\r
-    <Compile Include="System.Net.Security\LocalCertificateSelectionCallback.cs" />\r
-    <Compile Include="System.Net.Security\NegotiateStream.cs" />\r
-    <Compile Include="System.Net.Security\ProtectionLevel.cs" />\r
-    <Compile Include="System.Net.Security\RemoteCertificateValidationCallback.cs" />\r
-    <Compile Include="System.Net.Security\SslPolicyErrors.cs" />\r
-    <Compile Include="System.Net.Security\SslStream.cs" />\r
-    <Compile Include="System.Net.Sockets\AddressFamily.cs" />\r
-    <Compile Include="System.Net.Sockets\IOControlCode.cs" />\r
-    <Compile Include="System.Net.Sockets\IPPacketInformation.cs" />\r
-    <Compile Include="System.Net.Sockets\IPv6MulticastOption.cs" />\r
-    <Compile Include="System.Net.Sockets\LingerOption.cs" />\r
-    <Compile Include="System.Net.Sockets\MulticastOption.cs" />\r
-    <Compile Include="System.Net.Sockets\NetworkStream.cs" />\r
-    <Compile Include="System.Net.Sockets\ProtocolFamily.cs" />\r
-    <Compile Include="System.Net.Sockets\ProtocolType.cs" />\r
-    <Compile Include="System.Net.Sockets\SafeSocketHandle.cs" />\r
-    <Compile Include="System.Net.Sockets\SelectMode.cs" />\r
-    <Compile Include="System.Net.Sockets\SendPacketsElement.cs" />\r
-    <Compile Include="System.Net.Sockets\Socket.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketAsyncEventArgs.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketAsyncOperation.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketAsyncResult.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketError.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketException.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketFlags.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketInformation.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketInformationOptions.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketOperation.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketOptionLevel.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketShutdown.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketType.cs" />\r
-    <Compile Include="System.Net.Sockets\TcpClient.cs" />\r
-    <Compile Include="System.Net.Sockets\TcpListener.cs" />\r
-    <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
-    <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
-    <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
-    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
-    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
-    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
-    <Compile Include="System.Net\AuthenticationManager.cs" />\r
-    <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
-    <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
-    <Compile Include="System.Net\Authorization.cs" />\r
-    <Compile Include="System.Net\BasicClient.cs" />\r
-    <Compile Include="System.Net\BindIPEndPoint.cs" />\r
-    <Compile Include="System.Net\ChunkedInputStream.cs" />\r
-    <Compile Include="System.Net\ChunkStream.cs" />\r
-    <Compile Include="System.Net\ConnectionModes.cs" />\r
-    <Compile Include="System.Net\CredentialCache.cs" />\r
-    <Compile Include="System.Net\DecompressionMethods.cs" />\r
-    <Compile Include="System.Net\DefaultCertificatePolicy.cs" />\r
-    <Compile Include="System.Net\DigestClient.cs" />\r
-    <Compile Include="System.Net\Dns.cs" />\r
-    <Compile Include="System.Net\DnsAsyncResult.cs" />\r
-    <Compile Include="System.Net\DnsEndPoint.cs" />\r
-    <Compile Include="System.Net\DnsPermission.cs" />\r
-    <Compile Include="System.Net\DnsPermissionAttribute.cs" />\r
-    <Compile Include="System.Net\EndPoint.cs" />\r
-    <Compile Include="System.Net\EndPointListener.cs" />\r
-    <Compile Include="System.Net\EndPointManager.cs" />\r
-    <Compile Include="System.Net\EndpointPermission.cs" />\r
-    <Compile Include="System.Net\FileWebRequest.cs" />\r
-    <Compile Include="System.Net\FileWebRequestCreator.cs" />\r
-    <Compile Include="System.Net\FileWebResponse.cs" />\r
-    <Compile Include="System.Net\FtpAsyncResult.cs" />\r
-    <Compile Include="System.Net\FtpDataStream.cs" />\r
-    <Compile Include="System.Net\FtpRequestCreator.cs" />\r
-    <Compile Include="System.Net\FtpStatus.cs" />\r
-    <Compile Include="System.Net\FtpStatusCode.cs" />\r
-    <Compile Include="System.Net\FtpWebRequest.cs" />\r
-    <Compile Include="System.Net\FtpWebResponse.cs" />\r
-    <Compile Include="System.Net\GlobalProxySelection.cs" />\r
-    <Compile Include="System.Net\HttpConnection.cs" />\r
-    <Compile Include="System.Net\HttpListener.cs" />\r
-    <Compile Include="System.Net\HttpListenerBasicIdentity.cs" />\r
-    <Compile Include="System.Net\HttpListenerContext.cs" />\r
-    <Compile Include="System.Net\HttpListenerException.cs" />\r
-    <Compile Include="System.Net\HttpListenerPrefixCollection.cs" />\r
-    <Compile Include="System.Net\HttpListenerRequest.cs" />\r
-    <Compile Include="System.Net\HttpListenerResponse.cs" />\r
-    <Compile Include="System.Net\HttpRequestCreator.cs" />\r
-    <Compile Include="System.Net\HttpRequestHeader.cs" />\r
-    <Compile Include="System.Net\HttpResponseHeader.cs" />\r
-    <Compile Include="System.Net\HttpStatusCode.cs" />\r
-    <Compile Include="System.Net\HttpStreamAsyncResult.cs" />\r
-    <Compile Include="System.Net\HttpUtility.cs" />\r
-    <Compile Include="System.Net\HttpVersion.cs" />\r
-    <Compile Include="System.Net\HttpWebRequest.cs" />\r
-    <Compile Include="System.Net\HttpWebResponse.cs" />\r
-    <Compile Include="System.Net\IAuthenticationModule.cs" />\r
-    <Compile Include="System.Net\ICertificatePolicy.cs" />\r
-    <Compile Include="System.Net\ICredentialLookup.cs" />\r
-    <Compile Include="System.Net\ICredentialPolicy.cs" />\r
-    <Compile Include="System.Net\ICredentialsByHost.cs" />\r
-    <Compile Include="System.Net\IPAddress.cs" />\r
-    <Compile Include="System.Net\IPEndPoint.cs" />\r
-    <Compile Include="System.Net\IPHostEntry.cs" />\r
-    <Compile Include="System.Net\IPv6Address.cs" />\r
-    <Compile Include="System.Net\IWebConnectionState.cs" />\r
-    <Compile Include="System.Net\IWebProxy.cs" />\r
-    <Compile Include="System.Net\IWebProxyScript.cs" />\r
-    <Compile Include="System.Net\IWebRequestCreate.cs" />\r
-    <Compile Include="System.Net\ListenerAsyncResult.cs" />\r
-    <Compile Include="System.Net\ListenerPrefix.cs" />\r
-    <Compile Include="System.Net\MacProxy.cs" />\r
-    <Compile Include="System.Net\MonoHttpDate.cs" />\r
-    <Compile Include="System.Net\NetConfig.cs" />\r
-    <Compile Include="System.Net\NetworkAccess.cs" />\r
-    <Compile Include="System.Net\NetworkCredential.cs" />\r
-    <Compile Include="System.Net\NtlmClient.cs" />\r
-    <Compile Include="System.Net\ProtocolViolationException.cs" />\r
-    <Compile Include="System.Net\RequestStream.cs" />\r
-    <Compile Include="System.Net\ResponseStream.cs" />\r
-    <Compile Include="System.Net\SecurityProtocolType.cs" />\r
-    <Compile Include="System.Net\ServicePoint.cs" />\r
-    <Compile Include="System.Net\ServicePointManager.cs" />\r
-    <Compile Include="System.Net\ServicePointManager.extra.cs" />\r
-    <Compile Include="System.Net\SimpleAsyncResult.cs" />\r
-    <Compile Include="System.Net\SocketAddress.cs" />\r
-    <Compile Include="System.Net\SocketPermission.cs" />\r
-    <Compile Include="System.Net\SocketPermissionAttribute.cs" />\r
-    <Compile Include="System.Net\TransportContext.cs" />\r
-    <Compile Include="System.Net\TransportType.cs" />\r
-    <Compile Include="System.Net\WebAsyncResult.cs" />\r
-    <Compile Include="System.Net\WebConnection.cs" />\r
-    <Compile Include="System.Net\WebConnectionData.cs" />\r
-    <Compile Include="System.Net\WebConnectionGroup.cs" />\r
-    <Compile Include="System.Net\WebConnectionStream.cs" />\r
-    <Compile Include="System.Net\WebException.cs" />\r
-    <Compile Include="System.Net\WebExceptionStatus.cs" />\r
-    <Compile Include="System.Net\WebHeaderCollection.cs" />\r
-    <Compile Include="System.Net\WebProxy.cs" />\r
-    <Compile Include="System.Net\WebRequest.cs" />\r
-    <Compile Include="System.Net\WebRequestMethods.cs" />\r
-    <Compile Include="System.Net\WebResponse.cs" />\r
-    <Compile Include="System.Net\WebUtility.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\ADVF.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\DATADIR.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\DVASPECT.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\FORMATETC.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\IAdviseSink.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\IDataObject.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\IEnumFORMATETC.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\IEnumSTATDATA.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\STATDATA.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\STGMEDIUM.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\TYMED.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\DefaultParameterValueAttribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\HandleCollector.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\StandardOleMarshalObject.cs" />\r
-    <Compile Include="System.Security.AccessControl\SemaphoreAccessRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\SemaphoreAuditRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\SemaphoreRights.cs" />\r
-    <Compile Include="System.Security.AccessControl\SemaphoreSecurity.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection.Configuration\ConfigUtil.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection.Configuration\ExtendedProtectionPolicyElement.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection.Configuration\ServiceNameElement.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection.Configuration\ServiceNameElementCollection.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ChannelBinding.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ChannelBindingKind.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ExtendedProtectionPolicy.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ExtendedProtectionPolicyTypeConverter.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\PolicyEnforcement.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ProtectionScenario.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ServiceNameCollection.cs" />\r
-    <Compile Include="System.Security.Authentication\AuthenticationException.cs" />\r
-    <Compile Include="System.Security.Authentication\CipherAlgorithmType.cs" />\r
-    <Compile Include="System.Security.Authentication\ExchangeAlgorithmType.cs" />\r
-    <Compile Include="System.Security.Authentication\HashAlgorithmType.cs" />\r
-    <Compile Include="System.Security.Authentication\InvalidCredentialException.cs" />\r
-    <Compile Include="System.Security.Authentication\SslProtocols.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\OpenFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\OSX509Certificates.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\PublicKey.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\StoreLocation.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\StoreName.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X500DistinguishedName.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X500DistinguishedNameFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509BasicConstraintsExtension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate2.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate2Collection.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate2Enumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509CertificateCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Chain.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainElement.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainElementCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainElementEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainPolicy.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainStatus.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainStatusFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509EnhancedKeyUsageExtension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Extension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ExtensionCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ExtensionEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509FindType.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509IncludeOption.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509KeyUsageExtension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509KeyUsageFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509NameType.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509RevocationFlag.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509RevocationMode.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Store.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509SubjectKeyIdentifierHashAlgorithm.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509VerificationFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography\AsnEncodedData.cs" />\r
-    <Compile Include="System.Security.Cryptography\AsnEncodedDataCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography\AsnEncodedDataEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography\Oid.cs" />\r
-    <Compile Include="System.Security.Cryptography\OidCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography\OidEnumerator.cs" />\r
-    <Compile Include="System.Security.Permissions\PermissionHelper.cs" />\r
-    <Compile Include="System.Security.Permissions\ResourcePermissionBase.cs" />\r
-    <Compile Include="System.Security.Permissions\ResourcePermissionBaseEntry.cs" />\r
-    <Compile Include="System.Security.Permissions\StorePermission.cs" />\r
-    <Compile Include="System.Security.Permissions\StorePermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\StorePermissionFlags.cs" />\r
-    <Compile Include="System.Threading\Semaphore.cs" />\r
-    <Compile Include="System.Threading\ThreadExceptionEventArgs.cs" />\r
-    <Compile Include="System.Threading\ThreadExceptionEventHandler.cs" />\r
-    <Compile Include="System.Timers\ElapsedEventArgs.cs" />\r
-    <Compile Include="System.Web\AspNetHostingPermission.cs" />\r
-    <Compile Include="System.Web\AspNetHostingPermissionAttribute.cs" />\r
-    <Compile Include="System.Web\AspNetHostingPermissionLevel.cs" />\r
-    <Compile Include="System.Windows.Input\ICommand.cs" />\r
-    <Compile Include="System\DefaultUriParser.cs" />\r
-    <Compile Include="System\FileStyleUriParser.cs" />\r
-    <Compile Include="System\FtpStyleUriParser.cs" />\r
-    <Compile Include="System\GenericUriParser.cs" />\r
-    <Compile Include="System\GenericUriParserOptions.cs" />\r
-    <Compile Include="System\GopherStyleUriParser.cs" />\r
-    <Compile Include="System\HttpStyleUriParser.cs" />\r
-    <Compile Include="System\IUriData.cs" />\r
-    <Compile Include="System\LdapStyleUriParser.cs" />\r
-    <Compile Include="System\NetPipeStyleUriParser.cs" />\r
-    <Compile Include="System\NetTcpStyleUriParser.cs" />\r
-    <Compile Include="System\NewsStyleUriParser.cs" />\r
-    <Compile Include="System\Platform.cs" />\r
-    <Compile Include="System\SRDescriptionAttribute.cs" />\r
-    <Compile Include="System\Uri.cs" />\r
-    <Compile Include="System\UriBuilder.cs" />\r
-    <Compile Include="System\UriComponents.cs" />\r
-    <Compile Include="System\UriData.cs" />\r
-    <Compile Include="System\UriElements.cs" />\r
-    <Compile Include="System\UriFormat.cs" />\r
-    <Compile Include="System\UriFormatException.cs" />\r
-    <Compile Include="System\UriHelper.cs" />\r
-    <Compile Include="System\UriHostNameType.cs" />\r
-    <Compile Include="System\UriIdnScope.cs" />\r
-    <Compile Include="System\UriKind.cs" />\r
-    <Compile Include="System\UriParseComponents.cs" />\r
-    <Compile Include="System\UriParser.cs" />\r
-    <Compile Include="System\UriPartial.cs" />\r
-    <Compile Include="System\UriTypeConverter.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="System-secxml-net_4_5.csproj">\r
-      <Project>{46F151F2-A422-4A1B-9D29-2E148CE73629}</Project>\r
-      <Name>System-secxml-net_4_5</Name>\r
-      <Aliases>PrebuiltSystem</Aliases>    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security-net_4_5</Name>\r
-      <Aliases>MonoSecurity</Aliases>    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/Asterisk.wav">\r
-      <LogicalName>Asterisk.wav</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/Beep.wav">\r
-      <LogicalName>Beep.wav</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/Exclamation.wav">\r
-      <LogicalName>Exclamation.wav</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/Hand.wav">\r
-      <LogicalName>Hand.wav</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/Question.wav">\r
-      <LogicalName>Question.wav</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index d959dbe4255d837cff26973bcd5e99686b933262..cd216112a6d05862480fdbe7fed966c379624752 100644 (file)
@@ -25,7 +25,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699,618</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;SECURITY_DEP;XML_DEP;CONFIGURATION_DEP</DefineConstants>\r
+    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS;MONO_X509_ALIAS;CONFIGURATION_DEP</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -33,7 +33,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699,618</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;SECURITY_DEP;XML_DEP;CONFIGURATION_DEP</DefineConstants>\r
+    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS;MONO_X509_ALIAS;CONFIGURATION_DEP</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_ScatterGatherBuffers.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Cache\RequestCachePolicy.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookie.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookiecollection.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookiecontainer.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\NetworkInformation\IPInterfaceStatistics.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\NetworkInformation\ScopeLevel.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\NetworkInformation\UnicastIPAddressInformation.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\ServicePointManager.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Sockets\IPProtectionLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Sockets\NetworkStream.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Sockets\SocketOptionName.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\UnicodeDecodingConformance.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\UnicodeEncodingConformance.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WebPermission.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WebUtility.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WriteStreamClosedEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\UriEnumTypes.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\URIFormatException.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\UriHostNameType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\URIPartial.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\compiledregexrunner.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\compiledregexrunnerfactory.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\Regex.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\services\timers\system\timers\TimersDescriptionAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\collections\concurrent\BlockingCollection.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\collections\concurrent\ConcurrentBag.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\sys\system\runtime\interopservices\DefaultParameterValueAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\sys\system\runtime\interopservices\handlecollector.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\runtime\versioning\FrameworkName.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\threading\Barrier.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\windows\markup\ValueSerializerAttribute.cs" />\r
     <Compile Include="Mono.Net.Dns\ResolverError.cs" />\r
     <Compile Include="Mono.Net.Dns\SimpleResolver.cs" />\r
     <Compile Include="Mono.Net.Dns\SimpleResolverEventArgs.cs" />\r
+    <Compile Include="Mono.Net.Security\CallbackHelpers.cs" />\r
+    <Compile Include="Mono.Net.Security\ChainValidationHelper.cs" />\r
+    <Compile Include="Mono.Net.Security\IMonoSslStream.cs" />\r
+    <Compile Include="Mono.Net.Security\IMonoTlsProvider.cs" />\r
+    <Compile Include="Mono.Net.Security\LegacySslStream.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoDefaultTlsProvider.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoSslStreamImpl.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoSslStreamWrapper.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoTlsProviderFactory.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoTlsProviderImpl.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoTlsProviderWrapper.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoTlsStream.cs" />\r
+    <Compile Include="Mono.Net.Security\NoReflectionHelper.cs" />\r
+    <Compile Include="Mono.Net.Security\SystemCertificateValidator.cs" />\r
+    <Compile Include="ReferenceSources\_SecureChannel.cs" />\r
+    <Compile Include="ReferenceSources\_SslState.cs" />\r
+    <Compile Include="ReferenceSources\_SslStream.cs" />\r
     <Compile Include="ReferenceSources\AssertWrapper.cs" />\r
     <Compile Include="ReferenceSources\BinaryCompatibility.cs" />\r
     <Compile Include="ReferenceSources\ConfigurationManagerInternalFactory.cs" />\r
     <Compile Include="ReferenceSources\HttpSysSettings.cs" />\r
+    <Compile Include="ReferenceSources\Internal.cs" />\r
     <Compile Include="ReferenceSources\Logging.cs" />\r
     <Compile Include="ReferenceSources\NativeMethods.cs" />\r
     <Compile Include="ReferenceSources\SettingsSectionInternal.cs" />\r
     <Compile Include="ReferenceSources\Socket.cs" />\r
     <Compile Include="ReferenceSources\SR.cs" />\r
+    <Compile Include="ReferenceSources\SR2.cs" />\r
     <Compile Include="ReferenceSources\SRCategoryAttribute.cs" />\r
+    <Compile Include="ReferenceSources\SslStream.cs" />\r
+    <Compile Include="ReferenceSources\SSPIConfiguration.cs" />\r
+    <Compile Include="ReferenceSources\SSPISafeHandles.cs" />\r
+    <Compile Include="ReferenceSources\SSPIWrapper.cs" />\r
     <Compile Include="ReferenceSources\SystemNetworkCredential.cs" />\r
     <Compile Include="ReferenceSources\WebHeaderCollectionType.cs" />\r
     <Compile Include="ReferenceSources\Win32Exception.cs" />\r
     <Compile Include="System.Media\SystemSound.cs" />\r
     <Compile Include="System.Media\SystemSounds.cs" />\r
     <Compile Include="System.Media\Win32SoundPlayer.cs" />\r
-    <Compile Include="System.Net.Cache\HttpCacheAgeControl.cs" />\r
-    <Compile Include="System.Net.Cache\HttpRequestCacheLevel.cs" />\r
-    <Compile Include="System.Net.Cache\HttpRequestCachePolicy.cs" />\r
-    <Compile Include="System.Net.Cache\RequestCacheLevel.cs" />\r
-    <Compile Include="System.Net.Cache\RequestCachePolicy.cs" />\r
     <Compile Include="System.Net.Configuration\AuthenticationModuleElement.cs" />\r
     <Compile Include="System.Net.Configuration\AuthenticationModuleElementCollection.cs" />\r
     <Compile Include="System.Net.Configuration\AuthenticationModulesSection.cs" />\r
     <Compile Include="System.Net.Sockets\IPv6MulticastOption.cs" />\r
     <Compile Include="System.Net.Sockets\LingerOption.cs" />\r
     <Compile Include="System.Net.Sockets\MulticastOption.cs" />\r
-    <Compile Include="System.Net.Sockets\NetworkStream.cs" />\r
     <Compile Include="System.Net.Sockets\ProtocolFamily.cs" />\r
     <Compile Include="System.Net.Sockets\ProtocolType.cs" />\r
     <Compile Include="System.Net.Sockets\SafeSocketHandle.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\STATDATA.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\STGMEDIUM.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\TYMED.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\DefaultParameterValueAttribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\HandleCollector.cs" />\r
     <Compile Include="System.Runtime.InteropServices\StandardOleMarshalObject.cs" />\r
     <Compile Include="System.Security.AccessControl\SemaphoreAccessRule.cs" />\r
     <Compile Include="System.Security.AccessControl\SemaphoreAuditRule.cs" />\r
     <Compile Include="System\GenericUriParserOptions.cs" />\r
     <Compile Include="System\GopherStyleUriParser.cs" />\r
     <Compile Include="System\HttpStyleUriParser.cs" />\r
+    <Compile Include="System\IOSelector.cs" />\r
     <Compile Include="System\IUriData.cs" />\r
     <Compile Include="System\LdapStyleUriParser.cs" />\r
     <Compile Include="System\NetPipeStyleUriParser.cs" />\r
     <Compile Include="System\SRDescriptionAttribute.cs" />\r
     <Compile Include="System\Uri.cs" />\r
     <Compile Include="System\UriBuilder.cs" />\r
-    <Compile Include="System\UriComponents.cs" />\r
     <Compile Include="System\UriData.cs" />\r
     <Compile Include="System\UriElements.cs" />\r
-    <Compile Include="System\UriFormat.cs" />\r
-    <Compile Include="System\UriFormatException.cs" />\r
     <Compile Include="System\UriHelper.cs" />\r
-    <Compile Include="System\UriHostNameType.cs" />\r
-    <Compile Include="System\UriIdnScope.cs" />\r
-    <Compile Include="System\UriKind.cs" />\r
     <Compile Include="System\UriParseComponents.cs" />\r
     <Compile Include="System\UriParser.cs" />\r
-    <Compile Include="System\UriPartial.cs" />\r
     <Compile Include="System\UriTypeConverter.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
diff --git a/mcs/class/System/System-secxml-net_4_5.csproj b/mcs/class/System/System-secxml-net_4_5.csproj
deleted file mode 100644 (file)
index 1998084..0000000
+++ /dev/null
@@ -1,1215 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{46F151F2-A422-4A1B-9D29-2E148CE73629}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5/secxml</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;SECURITY_DEP;XML_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;SECURITY_DEP;XML_DEP</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeArgumentReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeArrayCreateExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeArrayIndexerExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAssignStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttachEventStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttributeArgument.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttributeArgumentCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttributeDeclaration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeAttributeDeclarationCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeBaseReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeBinaryOperatorExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeBinaryOperatorType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCastExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCatchClause.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCatchClauseCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeChecksumPragma.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeComment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCommentStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCommentStatementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeCompileUnit.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeConditionStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeConstructor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDefaultValueExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDelegateCreateExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDelegateInvokeExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDirectionExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDirective.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeDirectiveCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeEntryPointMethod.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeEventReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeExpressionCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeExpressionStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeFieldReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeGotoStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeIndexerExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeIterationStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeLabeledStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeLinePragma.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMemberEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMemberField.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMemberMethod.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMemberProperty.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMethodInvokeExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\codemethodreferenceexpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeMethodReturnStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeNamespace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeNamespaceCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeNamespaceImport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeNamespaceImportCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeObjectCreateExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeParameterDeclarationExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeParameterDeclarationExpressionCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodePrimitiveExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodePropertyReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodePropertySetValueReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeRegionDirective.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeRegionMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeRemoveEventStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeSnippetCompileUnit.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeSnippetExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeSnippetStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeSnippetTypeMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeStatementCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeThisReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeThrowExceptionStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTryCatchFinallyStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeConstructor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeDeclaration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeDeclarationCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeDelegate.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeMember.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeMemberCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeOfExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeParameter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeParameterCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeReference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeReferenceCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeTypeReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeVariableDeclarationStatement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\CodeVariableReferenceExpression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CodeGeneratorOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CodeValidator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CompilerError.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CompilerErrorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\CompilerParameters.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\GeneratedCodeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\GeneratorSupport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\ICodeCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\ICodeGenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\ICodeParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\IndentTextWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\compiler\LanguageOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\FieldDirection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\codedom\MemberAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\bithelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\debugview.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\iset.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\linkedlist.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\queue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\sorteddictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\sortedlist.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\sortedset.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\sortedsetdebugview.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\stack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\generic\throwhelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\objectmodel\observablecollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\objectmodel\readonlyobservablecollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\bitvector32.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\casesensitivestringdictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\collectionsutil.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\fixedstringlookup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\hybriddictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\inotifycollectionchanged.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\iordereddictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\listdictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\nameobjectcollectionbase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\namevaluecollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\notifycollectionchangedeventargs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\ordereddictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\stringcollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\stringdictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\collections\specialized\stringdictionarywithcomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AddingNewEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AddingNewEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AmbientValueAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ArrayConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ArraySubsetEnumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AsyncCompletedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AsyncCompletedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AsyncOperation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AsyncOperationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AttributeCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\AttributeProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BackgroundWorker.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BaseComponentEditor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\basenumberconverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BindableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BindableSupport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BindingDirection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BindingList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BooleanConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\BrowsableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ByteConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CancelEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CancelEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CategoryAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CharConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CollectionChangeAction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CollectionChangeEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CollectionChangeEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CollectionConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ComplexBindingPropertiesAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CompModSwitches.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Component.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ComponentCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ComponentConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ComponentResourceManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Container.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ContainerFilterService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CultureInfoConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\CustomTypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataErrorsChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataObjectAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataObjectFieldAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataObjectMethodAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DataObjectMethodType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DateTimeConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DateTimeOffsetConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DebugExtendedPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DebugReflectEventDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DebugReflectPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DebugTypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DecimalConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DefaultBindingPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DefaultEventAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DefaultPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DefaultValueAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DelegatingTypeDescriptionProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DescriptionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ActiveDocumentEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ActiveDocumentEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\CheckoutException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\CommandID.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentChangedEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentChangingEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentChangingEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentRenameEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ComponentRenameEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerOptionService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerTransaction.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerTransactionCloseEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerTransactionCloseEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerVerb.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesignerVerbCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesigntimeLicenseContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DesigntimeLicenseContextSerializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DocumentCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DocumentEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\DocumentEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\HelpContextType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\HelpKeywordAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\HelpKeywordType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IComponentChangeService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IComponentDiscoveryService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IComponentInitializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesigner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerEventService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerHost.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerHostTransactionState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDesignerOptionService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IDictionaryService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IEventPropertyService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IExtenderListService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IExtenderProviderService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IHelpService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IInheritanceService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IMenuCommandService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\InheritanceAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\InheritanceLevel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IReferenceService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IResourceService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IRootDesigner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ISelectionService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\IServiceObjectContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ITreeDesigner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ITypeDescriptorFilterService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ITypeDiscoveryService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ITypeResolutionService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\MenuCommand.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\NotifyParentPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ParenthesizePropertyNameAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\PropertyTabAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\PropertyTabScope.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\RefreshProperties.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\RefreshPropertiesAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\SelectionTypes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\ComponentSerializationService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\ContextStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\DefaultSerializationProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\DesignerLoader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\DesignerSerializerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerLoaderHost.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerLoaderService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerSerializationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerSerializationProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\IDesignerSerializationService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\INameCreationService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\InstanceDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\MemberRelationshipService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\ResolveNameEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\ResolveNameEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\RootDesignerSerializerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\serialization\SerializationStore.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ServiceCreatorCallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ServiceObjectContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\StandardCommands.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\StandardToolWindows.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ToolboxItemAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\design\ViewTechnology.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignerCategoryAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignerSerializationVisibility.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignerSerializationVisibilityAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignOnlyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DesignTimeVisibleAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DisplayNameAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DoubleConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DoWorkEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\DoWorkEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EditorAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EditorBrowsableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EnumConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EventDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EventDescriptorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\EventHandlerList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ExpandableObjectConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ExtendedPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ExtenderProvidedPropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\FxCopSuppression.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\GuidConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\HandledEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\HandledEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IBindingList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IBindingListView.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ICancelAddNew.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IChangeTracking.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IComNativeDescriptorHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IComponent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ICustomTypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IDataErrorInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IEditableObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IExtenderProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IIntellisenseBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IListSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ImmutableObjectAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INestedContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INestedSite.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InitializationEventAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INotifyDataErrorInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INotifyPropertyChanged.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\INotifyPropertyChanging.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InstallerTypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InstanceCreationEditor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Int16Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Int32Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Int64Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IntSecurity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InvalidAsynchronousStateException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\InvalidEnumArgumentException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IRaiseItemChangedEvents.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\IRevertibleChangeTracking.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ISite.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ISupportInitialize.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ISupportInitializeNotification.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ISynchronizeInvoke.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ITypeDescriptorContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ITypedList.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\License.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseContext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicenseUsageMode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LicFileLicenseProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListBindableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListChangedType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListSortDescription.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListSortDescriptionCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ListSortDirection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LocalizableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\LookupBindingPropertiesAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MarshalByValueComponent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MaskedTextProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MaskedTextResultHint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MemberDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MergablePropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\MultilineStringConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\NestedContainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\NullableConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PasswordPropertyTextAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ProgressChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ProgressChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyChangedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyChangedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyChangingEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyChangingEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\PropertyDescriptorCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ProvidePropertyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReadOnlyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RecommendedAsConfigurableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReferenceConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReflectEventDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReflectPropertyDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ReflectTypeDescriptionProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RefreshEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RefreshEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RunInstallerAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RunWorkerCompletedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\RunWorkerCompletedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\SByteConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\SettingsBindableAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\SingleConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\StringConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\SyntaxCheck.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TimeSpanConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ToolboxItemFilterAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\ToolboxItemFilterType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeConverterAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeDescriptionProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeDescriptionProviderAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeDescriptionProviderService.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeDescriptor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\TypeListConverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\UInt16Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\UInt32Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\UInt64Converter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\WarningException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\componentmodel\Win32Exception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\AssertSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\BooleanSwitch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\ConsoleTraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\CorrelationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\Debug.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\DelimitedListTraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\DiagnosticsConfiguration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\FilterElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\ListenerElementsCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\PerfCounterSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SeverityFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SourceElementsCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SourceFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SourceLevels.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SourceSwitch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\Switch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SwitchAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SwitchElementsCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SwitchLevelAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\SystemDiagnosticsSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TextWriterTraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\Trace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceEventCache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceEventType.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceFilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceInternal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceLevel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceListeners.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceSection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TraceSwitch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\traceutils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\TypedElement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\compmod\system\diagnostics\XmlWriterTraceListener.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\hresults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\invariantcomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\PrivilegedConfigurationManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\SecurityUtils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\misc\WeakHashtable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_BufferOffsetSize.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_ScatterGatherBuffers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookie.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookiecollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookiecontainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookieexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\HttpListenerRequestUriBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Internal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Sockets\SocketOptionName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\UnicodeDecodingConformance.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\UnicodeEncodingConformance.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\webclient.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WebPermission.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WriteStreamClosedEventArgs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\compiledregexrunner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\compiledregexrunnerfactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\Regex.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexBoyerMoore.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCapture.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCaptureCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCharClass.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCompilationInfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexCompiler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexFCD.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexGroup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexGroupCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexInterpreter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexMatch.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexMatchCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexMatchTimeoutException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexNode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexOptions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexParser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexReplacement.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexRunner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexRunnerFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexTree.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\RegexWriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\security\system\security\permissions\typedescriptorpermission.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\services\timers\system\timers\ElapsedEventHandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\services\timers\system\timers\Timer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\services\timers\system\timers\TimersDescriptionAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\collections\concurrent\BlockingCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\collections\concurrent\ConcurrentBag.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\runtime\versioning\FrameworkName.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\threading\Barrier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\System\sys\system\windows\markup\ValueSerializerAttribute.cs" />\r
-    <Compile Include="..\..\build\common\SR.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
-    <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
-    <Compile Include="Microsoft.CSharp\CSharpCodeProvider.cs" />\r
-    <Compile Include="Microsoft.VisualBasic\VBCodeCompiler.cs" />\r
-    <Compile Include="Microsoft.VisualBasic\VBCodeGenerator.cs" />\r
-    <Compile Include="Microsoft.VisualBasic\VBCodeProvider.cs" />\r
-    <Compile Include="Microsoft.Win32\IntranetZoneCredentialPolicy.cs" />\r
-    <Compile Include="Microsoft.Win32\PowerModeChangedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\PowerModeChangedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\PowerModes.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndingEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndingEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionEndReasons.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionSwitchEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionSwitchEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\SessionSwitchReason.cs" />\r
-    <Compile Include="Microsoft.Win32\SystemEvents.cs" />\r
-    <Compile Include="Microsoft.Win32\TimerElapsedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\TimerElapsedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceCategory.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceChangedEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceChangedEventHandler.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceChangingEventArgs.cs" />\r
-    <Compile Include="Microsoft.Win32\UserPreferenceChangingEventHandler.cs" />\r
-    <Compile Include="Mono.Http\NtlmClient.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsClass.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsHeader.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsOpCode.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsPacket.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsQClass.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsQType.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsQuery.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsQuestion.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsRCode.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecord.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordA.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordAAAA.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordCName.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordIPAddress.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResourceRecordPTR.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsResponse.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsType.cs" />\r
-    <Compile Include="Mono.Net.Dns\DnsUtil.cs" />\r
-    <Compile Include="Mono.Net.Dns\ResolverAsyncOperation.cs" />\r
-    <Compile Include="Mono.Net.Dns\ResolverError.cs" />\r
-    <Compile Include="Mono.Net.Dns\SimpleResolver.cs" />\r
-    <Compile Include="Mono.Net.Dns\SimpleResolverEventArgs.cs" />\r
-    <Compile Include="ReferenceSources\AssertWrapper.cs" />\r
-    <Compile Include="ReferenceSources\BinaryCompatibility.cs" />\r
-    <Compile Include="ReferenceSources\ConfigurationManagerInternalFactory.cs" />\r
-    <Compile Include="ReferenceSources\HttpSysSettings.cs" />\r
-    <Compile Include="ReferenceSources\Logging.cs" />\r
-    <Compile Include="ReferenceSources\NativeMethods.cs" />\r
-    <Compile Include="ReferenceSources\SettingsSectionInternal.cs" />\r
-    <Compile Include="ReferenceSources\Socket.cs" />\r
-    <Compile Include="ReferenceSources\SR.cs" />\r
-    <Compile Include="ReferenceSources\SRCategoryAttribute.cs" />\r
-    <Compile Include="ReferenceSources\SystemNetworkCredential.cs" />\r
-    <Compile Include="ReferenceSources\WebHeaderCollectionType.cs" />\r
-    <Compile Include="ReferenceSources\Win32Exception.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CodeCompiler.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CodeDomConfigurationHandler.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CodeDomProvider.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CodeParser.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\Compiler.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerCollection.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerInfo.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerProviderOption.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerProviderOptionsCollection.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\CompilerResults.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\Executor.cs" />\r
-    <Compile Include="System.CodeDom.Compiler\TempFileCollection.cs" />\r
-    <Compile Include="System.Configuration\ApplicationScopedSettingAttribute.cs" />\r
-    <Compile Include="System.Configuration\ApplicationSettingsBase.cs" />\r
-    <Compile Include="System.Configuration\ApplicationSettingsGroup.cs" />\r
-    <Compile Include="System.Configuration\AppSettingsReader.cs" />\r
-    <Compile Include="System.Configuration\ClientSettingsSection.cs" />\r
-    <Compile Include="System.Configuration\ConfigHelper.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationException.cs" />\r
-    <Compile Include="System.Configuration\ConfigurationSettings.cs" />\r
-    <Compile Include="System.Configuration\ConfigXmlDocument.cs" />\r
-    <Compile Include="System.Configuration\CustomizableFileSettingsProvider.cs" />\r
-    <Compile Include="System.Configuration\DefaultSettingValueAttribute.cs" />\r
-    <Compile Include="System.Configuration\DictionarySectionHandler.cs" />\r
-    <Compile Include="System.Configuration\IApplicationSettingsProvider.cs" />\r
-    <Compile Include="System.Configuration\IConfigurationSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\IConfigurationSystem.cs" />\r
-    <Compile Include="System.Configuration\IConfigXmlNode.cs" />\r
-    <Compile Include="System.Configuration\IdnElement.cs" />\r
-    <Compile Include="System.Configuration\IgnoreSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\IPersistComponentSettings.cs" />\r
-    <Compile Include="System.Configuration\IriParsingElement.cs" />\r
-    <Compile Include="System.Configuration\ISettingsProviderService.cs" />\r
-    <Compile Include="System.Configuration\LocalFileSettingsProvider.cs" />\r
-    <Compile Include="System.Configuration\NameValueFileSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\NameValueSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\NoSettingsVersionUpgradeAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingChangingEventArgs.cs" />\r
-    <Compile Include="System.Configuration\SettingChangingEventHandler.cs" />\r
-    <Compile Include="System.Configuration\SettingElement.cs" />\r
-    <Compile Include="System.Configuration\SettingElementCollection.cs" />\r
-    <Compile Include="System.Configuration\SettingsAttributeDictionary.cs" />\r
-    <Compile Include="System.Configuration\SettingsBase.cs" />\r
-    <Compile Include="System.Configuration\SettingsContext.cs" />\r
-    <Compile Include="System.Configuration\SettingsDescriptionAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsGroupDescriptionAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsGroupNameAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsLoadedEventArgs.cs" />\r
-    <Compile Include="System.Configuration\SettingsLoadedEventHandler.cs" />\r
-    <Compile Include="System.Configuration\SettingsManageability.cs" />\r
-    <Compile Include="System.Configuration\SettingsManageabilityAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsProperty.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyCollection.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyIsReadOnlyException.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyNotFoundException.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyValue.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyValueCollection.cs" />\r
-    <Compile Include="System.Configuration\SettingsPropertyWrongTypeException.cs" />\r
-    <Compile Include="System.Configuration\SettingsProvider.cs" />\r
-    <Compile Include="System.Configuration\SettingsProviderAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingsProviderCollection.cs" />\r
-    <Compile Include="System.Configuration\SettingsSavingEventHandler.cs" />\r
-    <Compile Include="System.Configuration\SettingsSerializeAs.cs" />\r
-    <Compile Include="System.Configuration\SettingsSerializeAsAttribute.cs" />\r
-    <Compile Include="System.Configuration\SettingValueElement.cs" />\r
-    <Compile Include="System.Configuration\SingleTagSectionHandler.cs" />\r
-    <Compile Include="System.Configuration\SpecialSetting.cs" />\r
-    <Compile Include="System.Configuration\SpecialSettingAttribute.cs" />\r
-    <Compile Include="System.Configuration\UriSection.cs" />\r
-    <Compile Include="System.Configuration\UserScopedSettingAttribute.cs" />\r
-    <Compile Include="System.Configuration\UserSettingsGroup.cs" />\r
-    <Compile Include="System.Diagnostics.CodeAnalysis\ExcludeFromCodeCoverageAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\AlphabeticalEnumConverter.cs" />\r
-    <Compile Include="System.Diagnostics\CounterCreationData.cs" />\r
-    <Compile Include="System.Diagnostics\CounterCreationDataCollection.cs" />\r
-    <Compile Include="System.Diagnostics\CounterSample.cs" />\r
-    <Compile Include="System.Diagnostics\CounterSampleCalculator.cs" />\r
-    <Compile Include="System.Diagnostics\DataReceivedEventArgs.cs" />\r
-    <Compile Include="System.Diagnostics\DataReceivedEventHandler.cs" />\r
-    <Compile Include="System.Diagnostics\DefaultTraceListener.cs" />\r
-    <Compile Include="System.Diagnostics\DiagnosticsConfigurationHandler.cs" />\r
-    <Compile Include="System.Diagnostics\EntryWrittenEventArgs.cs" />\r
-    <Compile Include="System.Diagnostics\EntryWrittenEventHandler.cs" />\r
-    <Compile Include="System.Diagnostics\EventInstance.cs" />\r
-    <Compile Include="System.Diagnostics\EventLog.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogEntry.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogEntryCollection.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogEntryType.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogImpl.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogInstaller.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermission.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermissionAccess.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermissionAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermissionEntry.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogPermissionEntryCollection.cs" />\r
-    <Compile Include="System.Diagnostics\EventLogTraceListener.cs" />\r
-    <Compile Include="System.Diagnostics\EventSourceCreationData.cs" />\r
-    <Compile Include="System.Diagnostics\FileVersionInfo.cs" />\r
-    <Compile Include="System.Diagnostics\ICollectData.cs" />\r
-    <Compile Include="System.Diagnostics\InstanceData.cs" />\r
-    <Compile Include="System.Diagnostics\InstanceDataCollection.cs" />\r
-    <Compile Include="System.Diagnostics\InstanceDataCollectionCollection.cs" />\r
-    <Compile Include="System.Diagnostics\LocalFileEventLog.cs" />\r
-    <Compile Include="System.Diagnostics\MonitoringDescriptionAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\NullEventLog.cs" />\r
-    <Compile Include="System.Diagnostics\OverflowAction.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounter.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterCategory.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterCategoryType.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterInstaller.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterInstanceLifetime.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterManager.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermission.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermissionAccess.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermissionAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermissionEntry.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterPermissionEntryCollection.cs" />\r
-    <Compile Include="System.Diagnostics\PerformanceCounterType.cs" />\r
-    <Compile Include="System.Diagnostics\Process.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessModule.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessModuleCollection.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessPriorityClass.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessStartInfo.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessThread.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessThreadCollection.cs" />\r
-    <Compile Include="System.Diagnostics\ProcessWindowStyle.cs" />\r
-    <Compile Include="System.Diagnostics\Stopwatch.cs" />\r
-    <Compile Include="System.Diagnostics\ThreadPriorityLevel.cs" />\r
-    <Compile Include="System.Diagnostics\ThreadState.cs" />\r
-    <Compile Include="System.Diagnostics\ThreadWaitReason.cs" />\r
-    <Compile Include="System.Diagnostics\TraceImpl.cs" />\r
-    <Compile Include="System.Diagnostics\TraceSourceInfo.cs" />\r
-    <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
-    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
-    <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
-    <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
-    <Compile Include="System.IO.Compression\GZipStream.cs" />\r
-    <Compile Include="System.IO.Ports\Handshake.cs" />\r
-    <Compile Include="System.IO.Ports\ISerialStream.cs" />\r
-    <Compile Include="System.IO.Ports\Parity.cs" />\r
-    <Compile Include="System.IO.Ports\SerialData.cs" />\r
-    <Compile Include="System.IO.Ports\SerialError.cs" />\r
-    <Compile Include="System.IO.Ports\SerialErrorEventArgs.cs" />\r
-    <Compile Include="System.IO.Ports\SerialPinChange.cs" />\r
-    <Compile Include="System.IO.Ports\SerialPinChangedEventArgs.cs" />\r
-    <Compile Include="System.IO.Ports\SerialPort.cs" />\r
-    <Compile Include="System.IO.Ports\SerialPortStream.cs" />\r
-    <Compile Include="System.IO.Ports\SerialReceivedEventArgs.cs" />\r
-    <Compile Include="System.IO.Ports\SerialSignal.cs" />\r
-    <Compile Include="System.IO.Ports\StopBits.cs" />\r
-    <Compile Include="System.IO.Ports\WinSerialStream.cs" />\r
-    <Compile Include="System.IO\DefaultWatcher.cs" />\r
-    <Compile Include="System.IO\ErrorEventArgs.cs" />\r
-    <Compile Include="System.IO\ErrorEventHandler.cs" />\r
-    <Compile Include="System.IO\FAMWatcher.cs" />\r
-    <Compile Include="System.IO\FileAction.cs" />\r
-    <Compile Include="System.IO\FileSystemEventArgs.cs" />\r
-    <Compile Include="System.IO\FileSystemEventHandler.cs" />\r
-    <Compile Include="System.IO\FileSystemWatcher.cs" />\r
-    <Compile Include="System.IO\IFileWatcher.cs" />\r
-    <Compile Include="System.IO\InotifyWatcher.cs" />\r
-    <Compile Include="System.IO\InternalBufferOverflowException.cs" />\r
-    <Compile Include="System.IO\InvalidDataException.cs" />\r
-    <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
-    <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
-    <Compile Include="System.IO\NotifyFilters.cs" />\r
-    <Compile Include="System.IO\NullFileWatcher.cs" />\r
-    <Compile Include="System.IO\RenamedEventArgs.cs" />\r
-    <Compile Include="System.IO\RenamedEventHandler.cs" />\r
-    <Compile Include="System.IO\SearchPattern.cs" />\r
-    <Compile Include="System.IO\WaitForChangedResult.cs" />\r
-    <Compile Include="System.IO\WatcherChangeTypes.cs" />\r
-    <Compile Include="System.IO\WindowsWatcher.cs" />\r
-    <Compile Include="System.Media\AudioData.cs" />\r
-    <Compile Include="System.Media\AudioDevice.cs" />\r
-    <Compile Include="System.Media\SoundPlayer.cs" />\r
-    <Compile Include="System.Media\SystemSound.cs" />\r
-    <Compile Include="System.Media\SystemSounds.cs" />\r
-    <Compile Include="System.Media\Win32SoundPlayer.cs" />\r
-    <Compile Include="System.Net.Cache\HttpCacheAgeControl.cs" />\r
-    <Compile Include="System.Net.Cache\HttpRequestCacheLevel.cs" />\r
-    <Compile Include="System.Net.Cache\HttpRequestCachePolicy.cs" />\r
-    <Compile Include="System.Net.Cache\RequestCacheLevel.cs" />\r
-    <Compile Include="System.Net.Cache\RequestCachePolicy.cs" />\r
-    <Compile Include="System.Net.Configuration\AuthenticationModuleElement.cs" />\r
-    <Compile Include="System.Net.Configuration\AuthenticationModuleElementCollection.cs" />\r
-    <Compile Include="System.Net.Configuration\AuthenticationModulesSection.cs" />\r
-    <Compile Include="System.Net.Configuration\BypassElement.cs" />\r
-    <Compile Include="System.Net.Configuration\BypassElementCollection.cs" />\r
-    <Compile Include="System.Net.Configuration\ConnectionManagementElement.cs" />\r
-    <Compile Include="System.Net.Configuration\ConnectionManagementElementCollection.cs" />\r
-    <Compile Include="System.Net.Configuration\ConnectionManagementHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\ConnectionManagementSection.cs" />\r
-    <Compile Include="System.Net.Configuration\DefaultProxyHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\DefaultProxySection.cs" />\r
-    <Compile Include="System.Net.Configuration\FtpCachePolicyElement.cs" />\r
-    <Compile Include="System.Net.Configuration\HttpCachePolicyElement.cs" />\r
-    <Compile Include="System.Net.Configuration\HttpWebRequestElement.cs" />\r
-    <Compile Include="System.Net.Configuration\Ipv6Element.cs" />\r
-    <Compile Include="System.Net.Configuration\MailSettingsSectionGroup.cs" />\r
-    <Compile Include="System.Net.Configuration\ModuleElement.cs" />\r
-    <Compile Include="System.Net.Configuration\NetAuthenticationModuleHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\NetConfigurationHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\NetSectionGroup.cs" />\r
-    <Compile Include="System.Net.Configuration\PerformanceCountersElement.cs" />\r
-    <Compile Include="System.Net.Configuration\ProxyElement.cs" />\r
-    <Compile Include="System.Net.Configuration\RequestCachingSection.cs" />\r
-    <Compile Include="System.Net.Configuration\ServicePointManagerElement.cs" />\r
-    <Compile Include="System.Net.Configuration\SettingsSection.cs" />\r
-    <Compile Include="System.Net.Configuration\SmtpNetworkElement.cs" />\r
-    <Compile Include="System.Net.Configuration\SmtpSection.cs" />\r
-    <Compile Include="System.Net.Configuration\SmtpSpecifiedPickupDirectoryElement.cs" />\r
-    <Compile Include="System.Net.Configuration\SocketElement.cs" />\r
-    <Compile Include="System.Net.Configuration\WebProxyScriptElement.cs" />\r
-    <Compile Include="System.Net.Configuration\WebRequestModuleElement.cs" />\r
-    <Compile Include="System.Net.Configuration\WebRequestModuleElementCollection.cs" />\r
-    <Compile Include="System.Net.Configuration\WebRequestModuleHandler.cs" />\r
-    <Compile Include="System.Net.Configuration\WebRequestModulesSection.cs" />\r
-    <Compile Include="System.Net.Mail\AlternateView.cs" />\r
-    <Compile Include="System.Net.Mail\AlternateViewCollection.cs" />\r
-    <Compile Include="System.Net.Mail\Attachment.cs" />\r
-    <Compile Include="System.Net.Mail\AttachmentBase.cs" />\r
-    <Compile Include="System.Net.Mail\AttachmentCollection.cs" />\r
-    <Compile Include="System.Net.Mail\DeliveryNotificationOptions.cs" />\r
-    <Compile Include="System.Net.Mail\LinkedResource.cs" />\r
-    <Compile Include="System.Net.Mail\LinkedResourceCollection.cs" />\r
-    <Compile Include="System.Net.Mail\MailAddress.cs" />\r
-    <Compile Include="System.Net.Mail\MailAddressCollection.cs" />\r
-    <Compile Include="System.Net.Mail\MailMessage.cs" />\r
-    <Compile Include="System.Net.Mail\MailPriority.cs" />\r
-    <Compile Include="System.Net.Mail\SendCompletedEventHandler.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpAccess.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpClient.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpDeliveryMethod.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpException.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpFailedRecipientException.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpFailedRecipientsException.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpPermission.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpPermissionAttribute.cs" />\r
-    <Compile Include="System.Net.Mail\SmtpStatusCode.cs" />\r
-    <Compile Include="System.Net.Mime\ContentDisposition.cs" />\r
-    <Compile Include="System.Net.Mime\ContentType.cs" />\r
-    <Compile Include="System.Net.Mime\DispositionTypeNames.cs" />\r
-    <Compile Include="System.Net.Mime\MediaTypeNames.cs" />\r
-    <Compile Include="System.Net.Mime\TransferEncoding.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\DuplicateAddressDetectionState.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\GatewayIPAddressInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\GatewayIPAddressInformationCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IcmpV4Statistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IcmpV6Statistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPAddressCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPAddressInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPAddressInformationCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPGlobalProperties.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPGlobalStatistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPInterfaceProperties.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPStatus.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPv4InterfaceProperties.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPv4InterfaceStatistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\IPv6InterfaceProperties.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\LinuxNetworkInterfaceMarshal.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\MacOsNetworkInterfaceMarshal.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\MulticastIPAddressInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\MulticastIPAddressInformationCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetBiosNodeType.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkAddressChangedEventHandler.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkAvailabilityChangedEventHandler.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkAvailabilityEventArgs.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkChange.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInformationAccess.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInformationException.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInformationPermission.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInformationPermissionAttribute.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInterface.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInterfaceComponent.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\NetworkInterfaceType.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\OperationalStatus.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PhysicalAddress.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\Ping.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingCompletedEventArgs.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingCompletedEventHandler.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingException.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingOptions.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PingReply.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\PrefixOrigin.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\SuffixOrigin.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\TcpConnectionInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\TcpState.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\TcpStatistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\UdpStatistics.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\UnicastIPAddressInformation.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\UnicastIPAddressInformationCollection.cs" />\r
-    <Compile Include="System.Net.NetworkInformation\Win32NetworkInterfaceMarshal.cs" />\r
-    <Compile Include="System.Net.Security\AuthenticatedStream.cs" />\r
-    <Compile Include="System.Net.Security\AuthenticationLevel.cs" />\r
-    <Compile Include="System.Net.Security\LocalCertificateSelectionCallback.cs" />\r
-    <Compile Include="System.Net.Security\NegotiateStream.cs" />\r
-    <Compile Include="System.Net.Security\ProtectionLevel.cs" />\r
-    <Compile Include="System.Net.Security\RemoteCertificateValidationCallback.cs" />\r
-    <Compile Include="System.Net.Security\SslPolicyErrors.cs" />\r
-    <Compile Include="System.Net.Security\SslStream.cs" />\r
-    <Compile Include="System.Net.Sockets\AddressFamily.cs" />\r
-    <Compile Include="System.Net.Sockets\IOControlCode.cs" />\r
-    <Compile Include="System.Net.Sockets\IPPacketInformation.cs" />\r
-    <Compile Include="System.Net.Sockets\IPv6MulticastOption.cs" />\r
-    <Compile Include="System.Net.Sockets\LingerOption.cs" />\r
-    <Compile Include="System.Net.Sockets\MulticastOption.cs" />\r
-    <Compile Include="System.Net.Sockets\NetworkStream.cs" />\r
-    <Compile Include="System.Net.Sockets\ProtocolFamily.cs" />\r
-    <Compile Include="System.Net.Sockets\ProtocolType.cs" />\r
-    <Compile Include="System.Net.Sockets\SafeSocketHandle.cs" />\r
-    <Compile Include="System.Net.Sockets\SelectMode.cs" />\r
-    <Compile Include="System.Net.Sockets\SendPacketsElement.cs" />\r
-    <Compile Include="System.Net.Sockets\Socket.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketAsyncEventArgs.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketAsyncOperation.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketAsyncResult.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketError.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketException.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketFlags.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketInformation.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketInformationOptions.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketOperation.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketOptionLevel.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketShutdown.cs" />\r
-    <Compile Include="System.Net.Sockets\SocketType.cs" />\r
-    <Compile Include="System.Net.Sockets\TcpClient.cs" />\r
-    <Compile Include="System.Net.Sockets\TcpListener.cs" />\r
-    <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
-    <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
-    <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
-    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
-    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
-    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
-    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
-    <Compile Include="System.Net\AuthenticationManager.cs" />\r
-    <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
-    <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
-    <Compile Include="System.Net\Authorization.cs" />\r
-    <Compile Include="System.Net\BasicClient.cs" />\r
-    <Compile Include="System.Net\BindIPEndPoint.cs" />\r
-    <Compile Include="System.Net\ChunkedInputStream.cs" />\r
-    <Compile Include="System.Net\ChunkStream.cs" />\r
-    <Compile Include="System.Net\ConnectionModes.cs" />\r
-    <Compile Include="System.Net\CredentialCache.cs" />\r
-    <Compile Include="System.Net\DecompressionMethods.cs" />\r
-    <Compile Include="System.Net\DefaultCertificatePolicy.cs" />\r
-    <Compile Include="System.Net\DigestClient.cs" />\r
-    <Compile Include="System.Net\Dns.cs" />\r
-    <Compile Include="System.Net\DnsAsyncResult.cs" />\r
-    <Compile Include="System.Net\DnsEndPoint.cs" />\r
-    <Compile Include="System.Net\DnsPermission.cs" />\r
-    <Compile Include="System.Net\DnsPermissionAttribute.cs" />\r
-    <Compile Include="System.Net\EndPoint.cs" />\r
-    <Compile Include="System.Net\EndPointListener.cs" />\r
-    <Compile Include="System.Net\EndPointManager.cs" />\r
-    <Compile Include="System.Net\EndpointPermission.cs" />\r
-    <Compile Include="System.Net\FileWebRequest.cs" />\r
-    <Compile Include="System.Net\FileWebRequestCreator.cs" />\r
-    <Compile Include="System.Net\FileWebResponse.cs" />\r
-    <Compile Include="System.Net\FtpAsyncResult.cs" />\r
-    <Compile Include="System.Net\FtpDataStream.cs" />\r
-    <Compile Include="System.Net\FtpRequestCreator.cs" />\r
-    <Compile Include="System.Net\FtpStatus.cs" />\r
-    <Compile Include="System.Net\FtpStatusCode.cs" />\r
-    <Compile Include="System.Net\FtpWebRequest.cs" />\r
-    <Compile Include="System.Net\FtpWebResponse.cs" />\r
-    <Compile Include="System.Net\GlobalProxySelection.cs" />\r
-    <Compile Include="System.Net\HttpConnection.cs" />\r
-    <Compile Include="System.Net\HttpListener.cs" />\r
-    <Compile Include="System.Net\HttpListenerBasicIdentity.cs" />\r
-    <Compile Include="System.Net\HttpListenerContext.cs" />\r
-    <Compile Include="System.Net\HttpListenerException.cs" />\r
-    <Compile Include="System.Net\HttpListenerPrefixCollection.cs" />\r
-    <Compile Include="System.Net\HttpListenerRequest.cs" />\r
-    <Compile Include="System.Net\HttpListenerResponse.cs" />\r
-    <Compile Include="System.Net\HttpRequestCreator.cs" />\r
-    <Compile Include="System.Net\HttpRequestHeader.cs" />\r
-    <Compile Include="System.Net\HttpResponseHeader.cs" />\r
-    <Compile Include="System.Net\HttpStatusCode.cs" />\r
-    <Compile Include="System.Net\HttpStreamAsyncResult.cs" />\r
-    <Compile Include="System.Net\HttpUtility.cs" />\r
-    <Compile Include="System.Net\HttpVersion.cs" />\r
-    <Compile Include="System.Net\HttpWebRequest.cs" />\r
-    <Compile Include="System.Net\HttpWebResponse.cs" />\r
-    <Compile Include="System.Net\IAuthenticationModule.cs" />\r
-    <Compile Include="System.Net\ICertificatePolicy.cs" />\r
-    <Compile Include="System.Net\ICredentialLookup.cs" />\r
-    <Compile Include="System.Net\ICredentialPolicy.cs" />\r
-    <Compile Include="System.Net\ICredentialsByHost.cs" />\r
-    <Compile Include="System.Net\IPAddress.cs" />\r
-    <Compile Include="System.Net\IPEndPoint.cs" />\r
-    <Compile Include="System.Net\IPHostEntry.cs" />\r
-    <Compile Include="System.Net\IPv6Address.cs" />\r
-    <Compile Include="System.Net\IWebConnectionState.cs" />\r
-    <Compile Include="System.Net\IWebProxy.cs" />\r
-    <Compile Include="System.Net\IWebProxyScript.cs" />\r
-    <Compile Include="System.Net\IWebRequestCreate.cs" />\r
-    <Compile Include="System.Net\ListenerAsyncResult.cs" />\r
-    <Compile Include="System.Net\ListenerPrefix.cs" />\r
-    <Compile Include="System.Net\MacProxy.cs" />\r
-    <Compile Include="System.Net\MonoHttpDate.cs" />\r
-    <Compile Include="System.Net\NetConfig.cs" />\r
-    <Compile Include="System.Net\NetworkAccess.cs" />\r
-    <Compile Include="System.Net\NetworkCredential.cs" />\r
-    <Compile Include="System.Net\NtlmClient.cs" />\r
-    <Compile Include="System.Net\ProtocolViolationException.cs" />\r
-    <Compile Include="System.Net\RequestStream.cs" />\r
-    <Compile Include="System.Net\ResponseStream.cs" />\r
-    <Compile Include="System.Net\SecurityProtocolType.cs" />\r
-    <Compile Include="System.Net\ServicePoint.cs" />\r
-    <Compile Include="System.Net\ServicePointManager.cs" />\r
-    <Compile Include="System.Net\ServicePointManager.extra.cs" />\r
-    <Compile Include="System.Net\SimpleAsyncResult.cs" />\r
-    <Compile Include="System.Net\SocketAddress.cs" />\r
-    <Compile Include="System.Net\SocketPermission.cs" />\r
-    <Compile Include="System.Net\SocketPermissionAttribute.cs" />\r
-    <Compile Include="System.Net\TransportContext.cs" />\r
-    <Compile Include="System.Net\TransportType.cs" />\r
-    <Compile Include="System.Net\WebAsyncResult.cs" />\r
-    <Compile Include="System.Net\WebConnection.cs" />\r
-    <Compile Include="System.Net\WebConnectionData.cs" />\r
-    <Compile Include="System.Net\WebConnectionGroup.cs" />\r
-    <Compile Include="System.Net\WebConnectionStream.cs" />\r
-    <Compile Include="System.Net\WebException.cs" />\r
-    <Compile Include="System.Net\WebExceptionStatus.cs" />\r
-    <Compile Include="System.Net\WebHeaderCollection.cs" />\r
-    <Compile Include="System.Net\WebProxy.cs" />\r
-    <Compile Include="System.Net\WebRequest.cs" />\r
-    <Compile Include="System.Net\WebRequestMethods.cs" />\r
-    <Compile Include="System.Net\WebResponse.cs" />\r
-    <Compile Include="System.Net\WebUtility.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\ADVF.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\DATADIR.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\DVASPECT.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\FORMATETC.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\IAdviseSink.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\IDataObject.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\IEnumFORMATETC.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\IEnumSTATDATA.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\STATDATA.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\STGMEDIUM.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.ComTypes\TYMED.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\DefaultParameterValueAttribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\HandleCollector.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\StandardOleMarshalObject.cs" />\r
-    <Compile Include="System.Security.AccessControl\SemaphoreAccessRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\SemaphoreAuditRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\SemaphoreRights.cs" />\r
-    <Compile Include="System.Security.AccessControl\SemaphoreSecurity.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection.Configuration\ConfigUtil.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection.Configuration\ExtendedProtectionPolicyElement.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection.Configuration\ServiceNameElement.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection.Configuration\ServiceNameElementCollection.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ChannelBinding.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ChannelBindingKind.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ExtendedProtectionPolicy.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ExtendedProtectionPolicyTypeConverter.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\PolicyEnforcement.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ProtectionScenario.cs" />\r
-    <Compile Include="System.Security.Authentication.ExtendedProtection\ServiceNameCollection.cs" />\r
-    <Compile Include="System.Security.Authentication\AuthenticationException.cs" />\r
-    <Compile Include="System.Security.Authentication\CipherAlgorithmType.cs" />\r
-    <Compile Include="System.Security.Authentication\ExchangeAlgorithmType.cs" />\r
-    <Compile Include="System.Security.Authentication\HashAlgorithmType.cs" />\r
-    <Compile Include="System.Security.Authentication\InvalidCredentialException.cs" />\r
-    <Compile Include="System.Security.Authentication\SslProtocols.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\OpenFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\OSX509Certificates.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\PublicKey.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\StoreLocation.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\StoreName.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X500DistinguishedName.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X500DistinguishedNameFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509BasicConstraintsExtension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate2.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate2Collection.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate2Enumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509CertificateCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Chain.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainElement.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainElementCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainElementEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainPolicy.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainStatus.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ChainStatusFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509EnhancedKeyUsageExtension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Extension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ExtensionCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ExtensionEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509FindType.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509IncludeOption.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509KeyUsageExtension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509KeyUsageFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509NameType.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509RevocationFlag.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509RevocationMode.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Store.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509SubjectKeyIdentifierHashAlgorithm.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509VerificationFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography\AsnEncodedData.cs" />\r
-    <Compile Include="System.Security.Cryptography\AsnEncodedDataCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography\AsnEncodedDataEnumerator.cs" />\r
-    <Compile Include="System.Security.Cryptography\Oid.cs" />\r
-    <Compile Include="System.Security.Cryptography\OidCollection.cs" />\r
-    <Compile Include="System.Security.Cryptography\OidEnumerator.cs" />\r
-    <Compile Include="System.Security.Permissions\PermissionHelper.cs" />\r
-    <Compile Include="System.Security.Permissions\ResourcePermissionBase.cs" />\r
-    <Compile Include="System.Security.Permissions\ResourcePermissionBaseEntry.cs" />\r
-    <Compile Include="System.Security.Permissions\StorePermission.cs" />\r
-    <Compile Include="System.Security.Permissions\StorePermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\StorePermissionFlags.cs" />\r
-    <Compile Include="System.Threading\Semaphore.cs" />\r
-    <Compile Include="System.Threading\ThreadExceptionEventArgs.cs" />\r
-    <Compile Include="System.Threading\ThreadExceptionEventHandler.cs" />\r
-    <Compile Include="System.Timers\ElapsedEventArgs.cs" />\r
-    <Compile Include="System.Web\AspNetHostingPermission.cs" />\r
-    <Compile Include="System.Web\AspNetHostingPermissionAttribute.cs" />\r
-    <Compile Include="System.Web\AspNetHostingPermissionLevel.cs" />\r
-    <Compile Include="System.Windows.Input\ICommand.cs" />\r
-    <Compile Include="System\DefaultUriParser.cs" />\r
-    <Compile Include="System\FileStyleUriParser.cs" />\r
-    <Compile Include="System\FtpStyleUriParser.cs" />\r
-    <Compile Include="System\GenericUriParser.cs" />\r
-    <Compile Include="System\GenericUriParserOptions.cs" />\r
-    <Compile Include="System\GopherStyleUriParser.cs" />\r
-    <Compile Include="System\HttpStyleUriParser.cs" />\r
-    <Compile Include="System\IUriData.cs" />\r
-    <Compile Include="System\LdapStyleUriParser.cs" />\r
-    <Compile Include="System\NetPipeStyleUriParser.cs" />\r
-    <Compile Include="System\NetTcpStyleUriParser.cs" />\r
-    <Compile Include="System\NewsStyleUriParser.cs" />\r
-    <Compile Include="System\Platform.cs" />\r
-    <Compile Include="System\SRDescriptionAttribute.cs" />\r
-    <Compile Include="System\Uri.cs" />\r
-    <Compile Include="System\UriBuilder.cs" />\r
-    <Compile Include="System\UriComponents.cs" />\r
-    <Compile Include="System\UriData.cs" />\r
-    <Compile Include="System\UriElements.cs" />\r
-    <Compile Include="System\UriFormat.cs" />\r
-    <Compile Include="System\UriFormatException.cs" />\r
-    <Compile Include="System\UriHelper.cs" />\r
-    <Compile Include="System\UriHostNameType.cs" />\r
-    <Compile Include="System\UriIdnScope.cs" />\r
-    <Compile Include="System\UriKind.cs" />\r
-    <Compile Include="System\UriParseComponents.cs" />\r
-    <Compile Include="System\UriParser.cs" />\r
-    <Compile Include="System\UriPartial.cs" />\r
-    <Compile Include="System\UriTypeConverter.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-bare-net_4_5.csproj">\r
-      <Project>{21FB091E-0F84-479E-AB16-6503D36852F9}</Project>\r
-      <Name>System.Xml-bare-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="System-bare-net_4_5.csproj">\r
-      <Project>{91CDF14E-F60F-4AB7-BC9D-5CBD7E669076}</Project>\r
-      <Name>System-bare-net_4_5</Name>\r
-      <Aliases>PrebuiltSystem</Aliases>    </ProjectReference>\r
-    <ProjectReference Include="../Mono.Security/Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security-net_4_5</Name>\r
-      <Aliases>MonoSecurity</Aliases>    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/Asterisk.wav">\r
-      <LogicalName>Asterisk.wav</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/Beep.wav">\r
-      <LogicalName>Beep.wav</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/Exclamation.wav">\r
-      <LogicalName>Exclamation.wav</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/Hand.wav">\r
-      <LogicalName>Hand.wav</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/Question.wav">\r
-      <LogicalName>Question.wav</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index 904ca651aa3d946406376ebfebe04ae8ed91ef20..ed53fe83539ef78bb7283381bbf72ca5fb0de430 100644 (file)
@@ -25,7 +25,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699,618</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;SECURITY_DEP;XML_DEP</DefineConstants>\r
+    <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS;MONO_X509_ALIAS</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -33,7 +33,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699,618</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;SECURITY_DEP;XML_DEP</DefineConstants>\r
+    <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS;MONO_X509_ALIAS</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\_ScatterGatherBuffers.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Cache\RequestCachePolicy.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookie.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookiecollection.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\cookiecontainer.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\NetworkInformation\IPInterfaceStatistics.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\NetworkInformation\ScopeLevel.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\NetworkInformation\UnicastIPAddressInformation.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\ServicePointManager.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Sockets\IPProtectionLevel.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Sockets\NetworkStream.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\Sockets\SocketOptionName.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\UnicodeDecodingConformance.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\UnicodeEncodingConformance.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WebPermission.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WebUtility.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\net\System\Net\WriteStreamClosedEventArgs.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\UriEnumTypes.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\URIFormatException.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\UriHostNameType.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\net\System\URIPartial.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\compiledregexrunner.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\compiledregexrunnerfactory.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\regex\system\text\regularexpressions\Regex.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\services\timers\system\timers\TimersDescriptionAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\collections\concurrent\BlockingCollection.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\collections\concurrent\ConcurrentBag.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\sys\system\runtime\interopservices\DefaultParameterValueAttribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\System\sys\system\runtime\interopservices\handlecollector.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\runtime\versioning\FrameworkName.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\threading\Barrier.cs" />\r
     <Compile Include="..\..\..\external\referencesource\System\sys\system\windows\markup\ValueSerializerAttribute.cs" />\r
     <Compile Include="Mono.Net.Dns\ResolverError.cs" />\r
     <Compile Include="Mono.Net.Dns\SimpleResolver.cs" />\r
     <Compile Include="Mono.Net.Dns\SimpleResolverEventArgs.cs" />\r
+    <Compile Include="Mono.Net.Security\CallbackHelpers.cs" />\r
+    <Compile Include="Mono.Net.Security\ChainValidationHelper.cs" />\r
+    <Compile Include="Mono.Net.Security\IMonoSslStream.cs" />\r
+    <Compile Include="Mono.Net.Security\IMonoTlsProvider.cs" />\r
+    <Compile Include="Mono.Net.Security\LegacySslStream.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoDefaultTlsProvider.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoSslStreamImpl.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoSslStreamWrapper.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoTlsProviderFactory.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoTlsProviderImpl.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoTlsProviderWrapper.cs" />\r
+    <Compile Include="Mono.Net.Security\MonoTlsStream.cs" />\r
+    <Compile Include="Mono.Net.Security\NoReflectionHelper.cs" />\r
+    <Compile Include="Mono.Net.Security\SystemCertificateValidator.cs" />\r
+    <Compile Include="ReferenceSources\_SecureChannel.cs" />\r
+    <Compile Include="ReferenceSources\_SslState.cs" />\r
+    <Compile Include="ReferenceSources\_SslStream.cs" />\r
     <Compile Include="ReferenceSources\AssertWrapper.cs" />\r
     <Compile Include="ReferenceSources\BinaryCompatibility.cs" />\r
     <Compile Include="ReferenceSources\ConfigurationManagerInternalFactory.cs" />\r
     <Compile Include="ReferenceSources\HttpSysSettings.cs" />\r
+    <Compile Include="ReferenceSources\Internal.cs" />\r
     <Compile Include="ReferenceSources\Logging.cs" />\r
     <Compile Include="ReferenceSources\NativeMethods.cs" />\r
     <Compile Include="ReferenceSources\SettingsSectionInternal.cs" />\r
     <Compile Include="ReferenceSources\Socket.cs" />\r
     <Compile Include="ReferenceSources\SR.cs" />\r
+    <Compile Include="ReferenceSources\SR2.cs" />\r
     <Compile Include="ReferenceSources\SRCategoryAttribute.cs" />\r
+    <Compile Include="ReferenceSources\SslStream.cs" />\r
+    <Compile Include="ReferenceSources\SSPIConfiguration.cs" />\r
+    <Compile Include="ReferenceSources\SSPISafeHandles.cs" />\r
+    <Compile Include="ReferenceSources\SSPIWrapper.cs" />\r
     <Compile Include="ReferenceSources\SystemNetworkCredential.cs" />\r
     <Compile Include="ReferenceSources\WebHeaderCollectionType.cs" />\r
     <Compile Include="ReferenceSources\Win32Exception.cs" />\r
     <Compile Include="System.Media\SystemSound.cs" />\r
     <Compile Include="System.Media\SystemSounds.cs" />\r
     <Compile Include="System.Media\Win32SoundPlayer.cs" />\r
-    <Compile Include="System.Net.Cache\HttpCacheAgeControl.cs" />\r
-    <Compile Include="System.Net.Cache\HttpRequestCacheLevel.cs" />\r
-    <Compile Include="System.Net.Cache\HttpRequestCachePolicy.cs" />\r
-    <Compile Include="System.Net.Cache\RequestCacheLevel.cs" />\r
-    <Compile Include="System.Net.Cache\RequestCachePolicy.cs" />\r
     <Compile Include="System.Net.Configuration\AuthenticationModuleElement.cs" />\r
     <Compile Include="System.Net.Configuration\AuthenticationModuleElementCollection.cs" />\r
     <Compile Include="System.Net.Configuration\AuthenticationModulesSection.cs" />\r
     <Compile Include="System.Net.Sockets\IPv6MulticastOption.cs" />\r
     <Compile Include="System.Net.Sockets\LingerOption.cs" />\r
     <Compile Include="System.Net.Sockets\MulticastOption.cs" />\r
-    <Compile Include="System.Net.Sockets\NetworkStream.cs" />\r
     <Compile Include="System.Net.Sockets\ProtocolFamily.cs" />\r
     <Compile Include="System.Net.Sockets\ProtocolType.cs" />\r
     <Compile Include="System.Net.Sockets\SafeSocketHandle.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\STATDATA.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\STGMEDIUM.cs" />\r
     <Compile Include="System.Runtime.InteropServices.ComTypes\TYMED.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\DefaultParameterValueAttribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\HandleCollector.cs" />\r
     <Compile Include="System.Runtime.InteropServices\StandardOleMarshalObject.cs" />\r
     <Compile Include="System.Security.AccessControl\SemaphoreAccessRule.cs" />\r
     <Compile Include="System.Security.AccessControl\SemaphoreAuditRule.cs" />\r
     <Compile Include="System\GenericUriParserOptions.cs" />\r
     <Compile Include="System\GopherStyleUriParser.cs" />\r
     <Compile Include="System\HttpStyleUriParser.cs" />\r
+    <Compile Include="System\IOSelector.cs" />\r
     <Compile Include="System\IUriData.cs" />\r
     <Compile Include="System\LdapStyleUriParser.cs" />\r
     <Compile Include="System\NetPipeStyleUriParser.cs" />\r
     <Compile Include="System\SRDescriptionAttribute.cs" />\r
     <Compile Include="System\Uri.cs" />\r
     <Compile Include="System\UriBuilder.cs" />\r
-    <Compile Include="System\UriComponents.cs" />\r
     <Compile Include="System\UriData.cs" />\r
     <Compile Include="System\UriElements.cs" />\r
-    <Compile Include="System\UriFormat.cs" />\r
-    <Compile Include="System\UriFormatException.cs" />\r
     <Compile Include="System\UriHelper.cs" />\r
-    <Compile Include="System\UriHostNameType.cs" />\r
-    <Compile Include="System\UriIdnScope.cs" />\r
-    <Compile Include="System\UriKind.cs" />\r
     <Compile Include="System\UriParseComponents.cs" />\r
     <Compile Include="System\UriParser.cs" />\r
-    <Compile Include="System\UriPartial.cs" />\r
     <Compile Include="System\UriTypeConverter.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
diff --git a/mcs/class/System/System-tests-net_4_5.csproj b/mcs/class/System/System-tests-net_4_5.csproj
deleted file mode 100644 (file)
index eebbf58..0000000
+++ /dev/null
@@ -1,617 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3CE9EB07-FC9C-4C80-83E6-28259B947E7F}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
-    <OutputPath>bin\Debug\System-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>System_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromCompileUnitTest.cs" />\r
-    <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromExpressionTest.cs" />\r
-    <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromNamespaceTest.cs" />\r
-    <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromStatementTest.cs" />\r
-    <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromTypeTest.cs" />\r
-    <Compile Include="Test\Microsoft.CSharp\CodeGeneratorIdentifierTest.cs" />\r
-    <Compile Include="Test\Microsoft.CSharp\CodeGeneratorTestBase.cs" />\r
-    <Compile Include="Test\Microsoft.CSharp\CodeGeneratorTypeOutputTest.cs" />\r
-    <Compile Include="Test\Microsoft.CSharp\CSharpCodeProviderCas.cs" />\r
-    <Compile Include="Test\Microsoft.CSharp\CSharpCodeProviderTest.cs" />\r
-    <Compile Include="Test\Microsoft.VisualBasic\CodeGeneratorFromBinaryOperatorTest.cs" />\r
-    <Compile Include="Test\Microsoft.VisualBasic\CodeGeneratorFromCompileUnitTest.cs" />\r
-    <Compile Include="Test\Microsoft.VisualBasic\CodeGeneratorFromExpressionTest.cs" />\r
-    <Compile Include="Test\Microsoft.VisualBasic\CodeGeneratorFromNamespaceTest.cs" />\r
-    <Compile Include="Test\Microsoft.VisualBasic\CodeGeneratorFromStatementTest.cs" />\r
-    <Compile Include="Test\Microsoft.VisualBasic\CodeGeneratorFromTypeTest.cs" />\r
-    <Compile Include="Test\Microsoft.VisualBasic\CodeGeneratorTestBase.cs" />\r
-    <Compile Include="Test\Microsoft.VisualBasic\VBCodeProviderCas.cs" />\r
-    <Compile Include="Test\Microsoft.VisualBasic\VBCodeProviderTest.cs" />\r
-    <Compile Include="Test\Microsoft.Win32\IntranetZoneCredentialPolicyCas.cs" />\r
-    <Compile Include="Test\Microsoft.Win32\IntranetZoneCredentialPolicyTest.cs" />\r
-    <Compile Include="Test\Microsoft.Win32\PowerModeChangedEventArgsCas.cs" />\r
-    <Compile Include="Test\Microsoft.Win32\SessionEndedEventArgsCas.cs" />\r
-    <Compile Include="Test\Microsoft.Win32\SessionEndingEventArgsCas.cs" />\r
-    <Compile Include="Test\Microsoft.Win32\SessionSwitchEventArgsCas.cs" />\r
-    <Compile Include="Test\Microsoft.Win32\SessionSwitchEventArgsTest.cs" />\r
-    <Compile Include="Test\Microsoft.Win32\SystemEventsCas.cs" />\r
-    <Compile Include="Test\Microsoft.Win32\TimerElapsedEventArgsCas.cs" />\r
-    <Compile Include="Test\Microsoft.Win32\UserPreferenceChangedEventArgsCas.cs" />\r
-    <Compile Include="Test\Microsoft.Win32\UserPreferenceChangingEventArgsCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CodeCompilerCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CodeDomProviderCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CodeGeneratorCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CodeGeneratorFromTypeTestBase.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CodeGeneratorGenerateFromCompileUnitTest.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CodeGeneratorOptionsCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CodeGeneratorOptionsTest.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CodeGeneratorTest.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CodeGeneratorTestBase.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CodeParserCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CompilerErrorCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CompilerErrorCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CompilerInfoCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CompilerParametersCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\CompilerResultsCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\ExecutorCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\ExecutorTest.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\GeneratedCodeAttributeCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\GeneratedCodeAttributeTest.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\IndentedTextWriterCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\IndentedTextWriterTest.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\TempFileCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom.Compiler\TempFileCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeArgumentReferenceExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeArgumentReferenceExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeArrayCreateExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeArrayCreateExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeArrayIndexerExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeAssignStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeAttachEventStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeAttachEventStatementTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeAttributeArgumentCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeAttributeArgumentCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeAttributeArgumentCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeAttributeArgumentTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeAttributeDeclarationCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeAttributeDeclarationCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeAttributeDeclarationCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeAttributeDeclarationTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeBaseReferenceExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeBinaryOperatorExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeCastExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeCastExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeCatchClauseCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeCatchClauseCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeCatchClauseCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeCatchClauseTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeChecksumPragmaCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeChecksumPragmaTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeCommentStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeCommentStatementCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeCommentStatementCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeCompileUnitCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeConditionStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeConstructorCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeConstructorTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeDefaultValueExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeDefaultValueExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeDelegateCreateExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeDelegateCreateExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeDelegateInvokeExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeDirectionExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeDirectiveCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeDirectiveCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeDirectiveCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeEntryPointMethodCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeEventReferenceExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeEventReferenceExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeExpressionCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeExpressionCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeExpressionStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeFieldReferenceExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeGotoStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeGotoStatementTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeIndexerExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeIterationStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeLabeledStatementTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeLinePragmaCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeLinePragmaTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeMemberEventCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeMemberFieldCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeMemberFieldTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeMemberMethodCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeMemberMethodTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeMemberPropertyCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeMemberPropertyTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeMethodInvokeExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeMethodInvokeExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeMethodReferenceExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeMethodReferenceExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeMethodReturnStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeNamespaceCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeNamespaceCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeNamespaceCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeNamespaceImportCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeNamespaceImportCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeNamespaceImportCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeNamespaceImportTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeNamespaceTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeObjectCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeObjectCreateExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeObjectCreateExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeParameterDeclarationExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeParameterDeclarationExpressionCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeParameterDeclarationExpressionCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeParameterDeclarationExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodePrimitiveExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodePropertyReferenceExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodePropertyReferenceExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodePropertySetValueReferenceExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeRegionDirectiveCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeRegionDirectiveTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeRemoveEventStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeRemoveEventStatementTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeSnippetCompileUnitCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeSnippetCompileUnitTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeSnippetExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeSnippetExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeSnippetStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeSnippetStatementTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeSnippetTypeMemberCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeSnippetTypeMemberTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeStatementCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeStatementCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeThisReferenceExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeThrowExceptionStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTryCatchFinallyStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeConstructorCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeConstructorTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeDeclarationCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeDeclarationCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeDeclarationCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeDelegateCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeDelegateTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeMemberCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeMemberCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeMemberCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeOfExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeOfExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeParameterCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeParameterCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeParameterTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeReferenceCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeReferenceCollectionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeReferenceCollectionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeReferenceExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeReferenceExpressionTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeTypeReferenceTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeVariableDeclarationStatementCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeVariableDeclarationStatementTest.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeVariableReferenceExpressionCas.cs" />\r
-    <Compile Include="Test\System.CodeDom\CodeVariableReferenceExpressionTest.cs" />\r
-    <Compile Include="Test\System.Collections.Concurrent\BlockingCollectionTests.cs" />\r
-    <Compile Include="Test\System.Collections.Concurrent\CollectionStressTestHelper.cs" />\r
-    <Compile Include="Test\System.Collections.Concurrent\ConcurrentBagTests.cs" />\r
-    <Compile Include="Test\System.Collections.Concurrent\ParallelTestHelper.cs" />\r
-    <Compile Include="Test\System.Collections.Generic\LinkedListTest.cs" />\r
-    <Compile Include="Test\System.Collections.Generic\QueueTest.cs" />\r
-    <Compile Include="Test\System.Collections.Generic\SortedDictionaryTest.cs" />\r
-    <Compile Include="Test\System.Collections.Generic\SortedListTest.cs" />\r
-    <Compile Include="Test\System.Collections.Generic\SortedSetTest.cs" />\r
-    <Compile Include="Test\System.Collections.Generic\StackTest.cs" />\r
-    <Compile Include="Test\System.Collections.ObjectModel\CollectionChangedEventValidators.cs" />\r
-    <Compile Include="Test\System.Collections.ObjectModel\ObservableCollectionTest.cs" />\r
-    <Compile Include="Test\System.Collections.ObjectModel\ReadOnlyObservableCollectionTest.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\BasicOperationsTest.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\BitVector32Cas.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\BitVector32Test.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\CollectionsUtilCas.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\HybridDictionaryCas.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\HybridDictionaryTest.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\ListDictionaryCas.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\ListDictionaryTest.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\NameObjectCollectionBaseCas.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\NameObjectCollectionBaseTest.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\NameValueCollectionCas.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\NameValueCollectionTest.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\OrderedDictionaryCas.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\OrderedDictionaryTest.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\StringCollectionCas.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\StringCollectionTest.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\StringDictionaryCas.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\StringDictionaryTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.Design.Serialization\ContextStackTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.Design.Serialization\InstanceDescriptorCas.cs" />\r
-    <Compile Include="Test\System.ComponentModel.Design.Serialization\InstanceDescriptorTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.Design\CheckoutExceptionTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel.Design\ServiceContainerTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\ArrayConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\AsyncOperationManagerTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\AttributeCollectionTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\AttributeProviderAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\BackgroundWorkerTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\BindingListTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\ByteConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\CharConverterTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\CollectionConverterTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\ComplexBindingPropertiesAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\ComponentConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\ComponentResourceManagerTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\ContainerTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\CultureInfoConverterTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\DataObjectMethodAttributeTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\DateTimeConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\DateTimeOffsetConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\DecimalConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\DefaultBindingPropertyAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\DefaultValueAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\DesignerAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\DisplayNameAttributeTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\DoubleConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\EnumConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\EventDescriptorCollectionTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\EventHandlerListTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\Int16ConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\Int32ConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\Int64ConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\InvalidEnumArgumentExceptionTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\LicenseManagerTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\ListChangedEventArgsTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\LookupBindingPropertiesAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\MaskedTextProviderTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\MultilineStringConverterTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\NestedContainerTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\NullableConverterTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\PropertyDescriptorCollectionTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\PropertyDescriptorTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\ReferenceConverterTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\SByteConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\SingleConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\ToolboxItemAttributeTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\TypeConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\TypeDescriptionProviderTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\TypeDescriptorTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\UInt16ConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\UInt32ConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\UInt64ConverterTests.cs" />\r
-    <Compile Include="Test\System.ComponentModel\Win32ExceptionTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ApplicationSettingsBaseTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ConfigurationExceptionTest.cs" />\r
-    <Compile Include="Test\System.Configuration\ConfigXmlDocumentTest.cs" />\r
-    <Compile Include="Test\System.Configuration\LocalFileSettingsProviderTest.cs" />\r
-    <Compile Include="Test\System.Configuration\SettingElementTest.cs" />\r
-    <Compile Include="Test\System.Configuration\SettingsBaseTest.cs" />\r
-    <Compile Include="Test\System.Configuration\SettingsPropertyCollectionTest.cs" />\r
-    <Compile Include="Test\System.Configuration\SettingsPropertyTest.cs" />\r
-    <Compile Include="Test\System.Configuration\SettingsPropertyValueCollectionTest.cs" />\r
-    <Compile Include="Test\System.Configuration\SettingsPropertyValueTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\CounterCreationDataTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\DebugTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\DelimitedListTraceListenerTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\DiagnosticsConfigurationHandlerTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\EventInstanceTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\EventLogPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\EventLogPermissionTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\EventLogTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\EventSourceCreationDataTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\FileVersionInfoTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\PerformanceCounterPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\PerformanceCounterPermissionTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\ProcessStartInfoTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\ProcessTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\SourceSwitchTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\StopwatchTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\SwitchesTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\TextWriterTraceListenerTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\TraceListenerTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\TraceSourceTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\TraceTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\XmlWriterTraceListenerTest.cs" />\r
-    <Compile Include="Test\System.IO.Compression\DeflateStreamCas.cs" />\r
-    <Compile Include="Test\System.IO.Compression\DeflateStreamTest.cs" />\r
-    <Compile Include="Test\System.IO.Compression\GZipStreamCas.cs" />\r
-    <Compile Include="Test\System.IO.Compression\GzipStreamTest.cs" />\r
-    <Compile Include="Test\System.IO.Ports\SerialPortTest.cs" />\r
-    <Compile Include="Test\System.IO\FileSystemWatcherTest.cs" />\r
-    <Compile Include="Test\System.Net.Configuration\ConnectionManagementSectionTest.cs" />\r
-    <Compile Include="Test\System.Net.Configuration\HttpWebRequestElementTest.cs" />\r
-    <Compile Include="Test\System.Net.Configuration\WebRequestModulesSectionTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\AlternateViewCollectionTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\AlternateViewTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\AttachmentCollectionTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\AttachmentTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\LinkedResourceCollectionTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\LinkedResourceTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\MailAddressCollectionTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\MailAddressTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\MailMessageTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\SmtpClientTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\SmtpExceptionTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\SmtpPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\SmtpPermissionTest.cs" />\r
-    <Compile Include="Test\System.Net.Mail\SmtpServer.cs" />\r
-    <Compile Include="Test\System.Net.Mime\ContentDispositionTest.cs" />\r
-    <Compile Include="Test\System.Net.Mime\ContentTypeTest.cs" />\r
-    <Compile Include="Test\System.Net.NetworkInformation\PhysicalAddressTest.cs" />\r
-    <Compile Include="Test\System.Net.Security\SslStreamTest.cs" />\r
-    <Compile Include="Test\System.Net.Sockets\IPv6MulticastOptionTest.cs" />\r
-    <Compile Include="Test\System.Net.Sockets\MulticastOptionTest.cs" />\r
-    <Compile Include="Test\System.Net.Sockets\NetworkStreamCas.cs" />\r
-    <Compile Include="Test\System.Net.Sockets\NetworkStreamTest.cs" />\r
-    <Compile Include="Test\System.Net.Sockets\SocketAsyncEventArgsTest.cs" />\r
-    <Compile Include="Test\System.Net.Sockets\SocketAsyncTest.cs" />\r
-    <Compile Include="Test\System.Net.Sockets\SocketCas.cs" />\r
-    <Compile Include="Test\System.Net.Sockets\SocketTest.cs" />\r
-    <Compile Include="Test\System.Net.Sockets\TcpClientCas.cs" />\r
-    <Compile Include="Test\System.Net.Sockets\TcpClientTest.cs" />\r
-    <Compile Include="Test\System.Net.Sockets\TcpListenerTest.cs" />\r
-    <Compile Include="Test\System.Net.Sockets\UdpClientTest.cs" />\r
-    <Compile Include="Test\System.Net.WebSockets\ClientWebSocketTest.cs" />\r
-    <Compile Include="Test\System.Net\CookieCollectionTest.cs" />\r
-    <Compile Include="Test\System.Net\CookieContainerTest.cs" />\r
-    <Compile Include="Test\System.Net\CookieParserTest.cs" />\r
-    <Compile Include="Test\System.Net\CookieTest.cs" />\r
-    <Compile Include="Test\System.Net\CredentialCacheTest.cs" />\r
-    <Compile Include="Test\System.Net\DnsCas.cs" />\r
-    <Compile Include="Test\System.Net\DnsPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Net\DnsPermissionTest.cs" />\r
-    <Compile Include="Test\System.Net\DnsTest.cs" />\r
-    <Compile Include="Test\System.Net\EndPointTest.cs" />\r
-    <Compile Include="Test\System.Net\FileWebRequestCas.cs" />\r
-    <Compile Include="Test\System.Net\FileWebRequestTest.cs" />\r
-    <Compile Include="Test\System.Net\FileWebResponseTest.cs" />\r
-    <Compile Include="Test\System.Net\FtpWebRequestTest.cs" />\r
-    <Compile Include="Test\System.Net\HttpListener2Test.cs" />\r
-    <Compile Include="Test\System.Net\HttpListenerBasicIdentityTest.cs" />\r
-    <Compile Include="Test\System.Net\HttpListenerPrefixCollectionTest.cs" />\r
-    <Compile Include="Test\System.Net\HttpListenerRequestTest.cs" />\r
-    <Compile Include="Test\System.Net\HttpListenerTest.cs" />\r
-    <Compile Include="Test\System.Net\HttpWebRequestCas.cs" />\r
-    <Compile Include="Test\System.Net\HttpWebRequestTest.cs" />\r
-    <Compile Include="Test\System.Net\HttpWebResponseTest.cs" />\r
-    <Compile Include="Test\System.Net\IPAddressTest.cs" />\r
-    <Compile Include="Test\System.Net\IPEndPointTest.cs" />\r
-    <Compile Include="Test\System.Net\NetworkCredentialTest.cs" />\r
-    <Compile Include="Test\System.Net\ServicePointManagerTest.cs" />\r
-    <Compile Include="Test\System.Net\ServicePointTest.cs" />\r
-    <Compile Include="Test\System.Net\SocketPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Net\SocketPermissionTest.cs" />\r
-    <Compile Include="Test\System.Net\SocketResponder.cs" />\r
-    <Compile Include="Test\System.Net\WebClientTest.cs" />\r
-    <Compile Include="Test\System.Net\WebClientTestAsync.cs" />\r
-    <Compile Include="Test\System.Net\WebHeaderCollectionTest.cs" />\r
-    <Compile Include="Test\System.Net\WebPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Net\WebPermissionTest.cs" />\r
-    <Compile Include="Test\System.Net\WebProxyTest.cs" />\r
-    <Compile Include="Test\System.Net\WebRequestTest.cs" />\r
-    <Compile Include="Test\System.Net\WebUtilityTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Versioning\FrameworkNameTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\SemaphoreSecurityTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_01_SignatureVerification.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_02_ValidityPeriod.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_03_VerifyingNameChaining.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_04_BasicCertificateRevocationTests.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_05_VerifyingPathWithSelfIssuedCertificates.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_06_VerifyingBasicConstraints.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_07_KeyUsage.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_08_CertificatePolicies.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_09_RequireExplicitPolicy.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_10_PolicyMappings.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_11_InhibitPolicyMapping.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_12_InhibitAnyPolicy.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_13_NameConstraints.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_14_DistributionPoints.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_15_DeltaCRL.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\Pkits_4_16_PrivateCertificateExtensions.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\PkitsTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\PublicKeyCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\PublicKeyTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X500DistinguishedNameCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X500DistinguishedNameTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509BasicConstraintsExtensionCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509BasicConstraintsExtensionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509Cert20Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509Certificate2CollectionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509Certificate2Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509CertificateCollectionCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509CertificateCollectionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509ChainCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509ChainPolicyCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509ChainPolicyTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509ChainTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509EnhancedKeyUsageExtensionCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509EnhancedKeyUsageExtensionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509ExtensionCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509ExtensionCollectionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509ExtensionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509KeyUsageExtensionCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509KeyUsageExtensionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509StoreCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509StoreTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509SubjectKeyIdentifierExtensionCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509SubjectKeyIdentifierExtensionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\AsnEncodedDataTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\OidCollectionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\OidEnumeratorTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\OidTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\ResourcePermissionBaseCas.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\ResourcePermissionBaseEntryCas.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\ResourcePermissionBaseEntryTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\ResourcePermissionBaseTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\StorePermissionAttributeCas.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\StorePermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\StorePermissionCas.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\StorePermissionTest.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\CaptureCas.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\CaptureCollectionCas.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\GroupCas.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\GroupCollectionCas.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\GroupTest.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\MatchCas.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\MatchCollectionCas.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\MatchTest.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\PerlTest.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\PerlTrials.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\RegexBugs.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\RegexCas.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\RegexCompilationInfoCas.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\RegexCompilationInfoTest.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\RegexMatchTests.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\RegexReplace.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\RegexReplaceTests.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\RegexResultTests.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\RegexRunnerCas.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\RegexRunnerFactoryCas.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\RegexTest.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\RegexTrial.cs" />\r
-    <Compile Include="Test\System.Text.RegularExpressions\SplitTests.cs" />\r
-    <Compile Include="Test\System.Threading\BarrierTest.cs" />\r
-    <Compile Include="Test\System.Threading\SemaphoreCas.cs" />\r
-    <Compile Include="Test\System.Threading\SemaphoreFullExceptionCas.cs" />\r
-    <Compile Include="Test\System.Threading\SemaphoreTest.cs" />\r
-    <Compile Include="Test\System.Threading\ThreadExceptionEventArgsCas.cs" />\r
-    <Compile Include="Test\System.Timers\ElapsedEventArgsCas.cs" />\r
-    <Compile Include="Test\System.Timers\TimerCas.cs" />\r
-    <Compile Include="Test\System.Timers\TimersDescriptionAttributeCas.cs" />\r
-    <Compile Include="Test\System.Timers\TimersDescriptionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Timers\TimerTest.cs" />\r
-    <Compile Include="Test\System.Web\AspNetHostingPermissionAttributeCas.cs" />\r
-    <Compile Include="Test\System.Web\AspNetHostingPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Web\AspNetHostingPermissionCas.cs" />\r
-    <Compile Include="Test\System.Web\AspNetHostingPermissionTest.cs" />\r
-    <Compile Include="Test\System\FileStyleUriParserCas.cs" />\r
-    <Compile Include="Test\System\FileStyleUriParserTest.cs" />\r
-    <Compile Include="Test\System\FtpStyleUriParserCas.cs" />\r
-    <Compile Include="Test\System\FtpStyleUriParserTest.cs" />\r
-    <Compile Include="Test\System\GenericUriParserCas.cs" />\r
-    <Compile Include="Test\System\GenericUriParserTest.cs" />\r
-    <Compile Include="Test\System\GopherStyleUriParserCas.cs" />\r
-    <Compile Include="Test\System\GopherStyleUriParserTest.cs" />\r
-    <Compile Include="Test\System\HttpStyleUriParserCas.cs" />\r
-    <Compile Include="Test\System\HttpStyleUriParserTest.cs" />\r
-    <Compile Include="Test\System\LdapStyleUriParserCas.cs" />\r
-    <Compile Include="Test\System\LdapStyleUriParserTest.cs" />\r
-    <Compile Include="Test\System\NetPipeStyleUriParserCas.cs" />\r
-    <Compile Include="Test\System\NetPipeStyleUriParserTest.cs" />\r
-    <Compile Include="Test\System\NetTcpStyleUriParserCas.cs" />\r
-    <Compile Include="Test\System\NetTcpStyleUriParserTest.cs" />\r
-    <Compile Include="Test\System\NewsStyleUriParserCas.cs" />\r
-    <Compile Include="Test\System\NewsStyleUriParserTest.cs" />\r
-    <Compile Include="Test\System\UriBuilderCas.cs" />\r
-    <Compile Include="Test\System\UriBuilderTest.cs" />\r
-    <Compile Include="Test\System\UriFormatExceptionCas.cs" />\r
-    <Compile Include="Test\System\UriParserCas.cs" />\r
-    <Compile Include="Test\System\UriParserTest.cs" />\r
-    <Compile Include="Test\System\UriTest.cs" />\r
-    <Compile Include="Test\System\UriTest2.cs" />\r
-    <Compile Include="Test\System\UriTest3.cs" />\r
-    <Compile Include="Test\System\UriTypeConverterCas.cs" />\r
-    <Compile Include="Test\System\UriTypeConverterTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{01A426C8-6E24-4DCF-B6BE-177FF4FBD4BC}</Project>\r
-      <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{D68D4FED-CA32-4800-A628-58BAE485562C}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{0ADBE502-5524-4312-81B0-8456328C367C}</Project>\r
-      <Name>System.Data\System.Data-net_4_0</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Test/System/test-uri-props.txt">\r
-      <LogicalName>test-uri-props.txt</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/System/test-uri-props-manual.txt">\r
-      <LogicalName>test-uri-props-manual.txt</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Test/System/test-uri-relative-props.txt">\r
-      <LogicalName>test-uri-relative-props.txt</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index 9750c53b34a956a5813feffd9624b423be18434a..2bf4cab23c6e5641bcf5c351a09c2c7444058b10 100644 (file)
@@ -160,11 +160,14 @@ namespace System.Diagnostics {
                public override void Fail (string message, string detailMessage)
                {
                        base.Fail (message, detailMessage);
+#if !MOBILE
                        if (ProcessUI (message, detailMessage) == DialogResult.Abort)
                                Thread.CurrentThread.Abort ();
+#endif
                        WriteLine (new StackTrace().ToString());
                }
 
+#if !MOBILE
                DialogResult ProcessUI (string message, string detailMessage)
                {
                        
@@ -210,6 +213,7 @@ namespace System.Diagnostics {
                        Ignore,
                        Abort
                }
+#endif
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                private extern static void WriteWindowsDebugString (string message);
index 604b6a86e7d37c7b18f3204d35200c6109b77e28..8c6fa0dcf4fb77a97882d0bba91e216deb500b15 100644 (file)
@@ -80,8 +80,6 @@ namespace System.Diagnostics {
                Thread background_wait_for_exit_thread;
                ISynchronizeInvoke synchronizingObject;
                EventHandler exited_event;
-               IntPtr stdout_rd;
-               IntPtr stderr_rd;
 
                /* Private constructor called from other methods */
                private Process(IntPtr handle, int id) {
@@ -579,6 +577,7 @@ namespace System.Diagnostics {
                        }
                }
 
+#if MONO_FEATURE_PROCESS_START
                private StreamReader error_stream=null;
                bool error_stream_exposed;
 
@@ -650,6 +649,28 @@ namespace System.Diagnostics {
                                start_info = value;
                        }
                }
+#else
+               [Obsolete ("Process.StandardError is not supported on the current platform.", true)]
+               public StreamReader StandardError {
+                       get { throw new PlatformNotSupportedException ("Process.StandardError is not supported on the current platform."); }
+               }
+
+               [Obsolete ("Process.StandardInput is not supported on the current platform.", true)]
+               public StreamWriter StandardInput {
+                       get { throw new PlatformNotSupportedException ("Process.StandardInput is not supported on the current platform."); }
+               }
+
+               [Obsolete ("Process.StandardOutput is not supported on the current platform.", true)]
+               public StreamReader StandardOutput {
+                       get { throw new PlatformNotSupportedException ("Process.StandardOutput is not supported on the current platform."); }
+               }
+
+               [Obsolete ("Process.StartInfo is not supported on the current platform.", true)]
+               public ProcessStartInfo StartInfo {
+                       get { throw new PlatformNotSupportedException ("Process.StartInfo is not supported on the current platform."); }
+                       set { throw new PlatformNotSupportedException ("Process.StartInfo is not supported on the current platform."); }
+               }
+#endif // MONO_FEATURE_PROCESS_START
 
                /* Returns the process start time in Windows file
                 * times (ticks from DateTime(1/1/1601 00:00 GMT))
@@ -897,6 +918,7 @@ namespace System.Diagnostics {
                        // the process (currently we have none).
                }
 
+#if MONO_FEATURE_PROCESS_START
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                private extern static bool ShellExecuteEx_internal(ProcessStartInfo startInfo,
                                                                   ref ProcInfo proc_info);
@@ -1019,17 +1041,15 @@ namespace System.Diagnostics {
 
                                if (startInfo.RedirectStandardOutput) {
                                        CreatePipe (out stdout_read, out stdout_write, false);
-                                       process.stdout_rd = stdout_read;
                                } else {
-                                       process.stdout_rd = IntPtr.Zero;
+                                       stdout_read = IntPtr.Zero;
                                        stdout_write = MonoIO.ConsoleOutput;
                                }
 
                                if (startInfo.RedirectStandardError) {
                                        CreatePipe (out stderr_read, out stderr_write, false);
-                                       process.stderr_rd  = stderr_read;
                                } else {
-                                       process.stderr_rd = IntPtr.Zero;
+                                       stderr_read = IntPtr.Zero;
                                        stderr_write = MonoIO.ConsoleError;
                                }
 
@@ -1092,7 +1112,7 @@ namespace System.Diagnostics {
 #else
                                var stdinEncoding = Console.InputEncoding;
 #endif
-                               process.input_stream = new StreamWriter (new FileStream (new SafeFileHandle (stdin_write, false), FileAccess.Write, 8192, false), stdinEncoding) {
+                               process.input_stream = new StreamWriter (new FileStream (stdin_write, FileAccess.Write, true, 8192), stdinEncoding) {
                                        AutoFlush = true
                                };
                        }
@@ -1102,7 +1122,7 @@ namespace System.Diagnostics {
 
                                Encoding stdoutEncoding = startInfo.StandardOutputEncoding ?? Console.Out.Encoding;
 
-                               process.output_stream = new StreamReader (new FileStream (new SafeFileHandle (stdout_read, false), FileAccess.Read, 8192, false), stdoutEncoding, true, 8192);
+                               process.output_stream = new StreamReader (new FileStream (stdout_read, FileAccess.Read, true, 8192), stdoutEncoding, true);
                        }
 
                        if (startInfo.RedirectStandardError) {
@@ -1110,7 +1130,7 @@ namespace System.Diagnostics {
 
                                Encoding stderrEncoding = startInfo.StandardErrorEncoding ?? Console.Out.Encoding;
 
-                               process.error_stream = new StreamReader (new FileStream (new SafeFileHandle (stderr_read, false), FileAccess.Read, 8192, false), stderrEncoding, true, 8192);
+                               process.error_stream = new StreamReader (new FileStream (stderr_read, FileAccess.Read, true, 8192), stderrEncoding, true);
                        }
 
                        process.StartBackgroundWaitForExit ();
@@ -1195,6 +1215,43 @@ namespace System.Diagnostics {
                        psi.UseShellExecute = false;
                        return Start(psi);
                }
+#else
+               [Obsolete ("Process.Start is not supported on the current platform.", true)]
+               public bool Start ()
+               {
+                       throw new PlatformNotSupportedException ("Process.Start is not supported on the current platform.");
+               }
+
+               [Obsolete ("Process.Start is not supported on the current platform.", true)]
+               public static Process Start (ProcessStartInfo startInfo)
+               {
+                       throw new PlatformNotSupportedException ("Process.Start is not supported on the current platform.");
+               }
+
+               [Obsolete ("Process.Start is not supported on the current platform.", true)]
+               public static Process Start (string fileName)
+               {
+                       throw new PlatformNotSupportedException ("Process.Start is not supported on the current platform.");
+               }
+
+               [Obsolete ("Process.Start is not supported on the current platform.", true)]
+               public static Process Start(string fileName, string arguments)
+               {
+                       throw new PlatformNotSupportedException ("Process.Start is not supported on the current platform.");
+               }
+
+               [Obsolete ("Process.Start is not supported on the current platform.", true)]
+               public static Process Start(string fileName, string username, SecureString password, string domain)
+               {
+                       throw new PlatformNotSupportedException ("Process.Start is not supported on the current platform.");
+               }
+
+               [Obsolete ("Process.Start is not supported on the current platform.", true)]
+               public static Process Start(string fileName, string arguments, string username, SecureString password, string domain)
+               {
+                       throw new PlatformNotSupportedException ("Process.Start is not supported on the current platform.");
+               }
+#endif // MONO_FEATURE_PROCESS_START
 
                public override string ToString()
                {
@@ -1220,38 +1277,21 @@ namespace System.Diagnostics {
                        if (process_handle == IntPtr.Zero)
                                throw new InvalidOperationException ("No process is associated with this object.");
 
+                       if (!WaitForExit_internal (process_handle, ms))
+                               return false;
 
-                       DateTime start = DateTime.UtcNow;
-                       if (async_output != null && !async_output.IsCompleted) {
-                               if (false == async_output.AsyncWaitHandle.WaitOne (ms, false))
-                                       return false; // Timed out
-
-                               if (ms >= 0) {
-                                       DateTime now = DateTime.UtcNow;
-                                       ms -= (int) (now - start).TotalMilliseconds;
-                                       if (ms <= 0)
-                                               return false;
-                                       start = now;
-                               }
-                       }
-
-                       if (async_error != null && !async_error.IsCompleted) {
-                               if (false == async_error.AsyncWaitHandle.WaitOne (ms, false))
-                                       return false; // Timed out
-
-                               if (ms >= 0) {
-                                       ms -= (int) (DateTime.UtcNow - start).TotalMilliseconds;
-                                       if (ms <= 0)
-                                               return false;
-                               }
-                       }
+#if MONO_FEATURE_PROCESS_START
+                       if (async_output != null && !async_output.IsCompleted)
+                               async_output.AsyncWaitHandle.WaitOne ();
 
-                       bool exited = WaitForExit_internal (process_handle, ms);
+                       if (async_error != null && !async_error.IsCompleted)
+                               async_error.AsyncWaitHandle.WaitOne ();
+#endif // MONO_FEATURE_PROCESS_START
 
-                       if (exited)
+                       if (EnableRaisingEvents)
                                OnExited ();
 
-                       return exited;
+                       return true;
                }
 
                /* Waits up to ms milliseconds for process 'handle' to 
@@ -1301,6 +1341,7 @@ namespace System.Diagnostics {
                                cb (this, new DataReceivedEventArgs (str));
                }
 
+#if MONO_FEATURE_PROCESS_START
                [Flags]
                enum AsyncModes {
                        NoneYet = 0,
@@ -1321,27 +1362,32 @@ namespace System.Diagnostics {
                        StringBuilder sb = new StringBuilder ();
                        byte[] buffer = new byte [4096];
 
-                       public ProcessAsyncReader (Process process, IntPtr handle, bool err_out)
+                       const int ERROR_INVALID_HANDLE = 6;
+
+                       public ProcessAsyncReader (Process process, FileStream stream, bool err_out)
                                : base (null, null)
                        {
                                this.process = process;
-                               this.handle = handle;
-                               this.stream = new FileStream (handle, FileAccess.Read, false);
+                               this.handle = stream.SafeFileHandle.DangerousGetHandle ();
+                               this.stream = stream;
                                this.err_out = err_out;
                        }
 
-                       public void BeginRead ()
+                       public void BeginReadLine ()
                        {
-                               IOSelector.Add (this.handle, new IOSelectorJob (IOOperation.Read, _ => AddInput (), null));
+                               IOSelector.Add (this.handle, new IOSelectorJob (IOOperation.Read, _ => Read (), null));
                        }
 
-                       public void AddInput ()
+                       void Read ()
                        {
                                int nread = 0;
 
                                try {
                                        nread = stream.Read (buffer, 0, buffer.Length);
                                } catch (ObjectDisposedException) {
+                               } catch (IOException ex) {
+                                       if (ex.HResult != (unchecked((int) 0x80070000) | (int) ERROR_INVALID_HANDLE))
+                                               throw;
                                } catch (NotSupportedException) {
                                        if (stream.CanRead)
                                                throw;
@@ -1371,7 +1417,7 @@ namespace System.Diagnostics {
 
                                Flush (false);
 
-                               IOSelector.Add (this.handle, new IOSelectorJob (IOOperation.Read, _ => AddInput (), null));
+                               IOSelector.Add (this.handle, new IOSelectorJob (IOOperation.Read, _ => Read (), null));
                        }
 
                        void Flush (bool last)
@@ -1407,7 +1453,6 @@ namespace System.Diagnostics {
                        public void Close ()
                        {
                                IOSelector.Remove (handle);
-                               stream.Close ();
                        }
 
                        internal override void CompleteDisposed ()
@@ -1434,8 +1479,8 @@ namespace System.Diagnostics {
                        async_mode |= AsyncModes.AsyncOutput;
                        output_canceled = false;
                        if (async_output == null) {
-                               async_output = new ProcessAsyncReader (this, stdout_rd, true);
-                               async_output.BeginRead ();
+                               async_output = new ProcessAsyncReader (this, (FileStream) output_stream.BaseStream, true);
+                               async_output.BeginReadLine ();
                        }
                }
 
@@ -1466,8 +1511,8 @@ namespace System.Diagnostics {
                        async_mode |= AsyncModes.AsyncError;
                        error_canceled = false;
                        if (async_error == null) {
-                               async_error = new ProcessAsyncReader (this, stderr_rd, false);
-                               async_error.BeginRead ();
+                               async_error = new ProcessAsyncReader (this, (FileStream) error_stream.BaseStream, false);
+                               async_error.BeginReadLine ();
                        }
                }
 
@@ -1485,6 +1530,31 @@ namespace System.Diagnostics {
 
                        error_canceled = true;
                }
+#else
+               [Obsolete ("Process.BeginOutputReadLine is not supported on the current platform.", true)]
+               public void BeginOutputReadLine ()
+               {
+                       throw new PlatformNotSupportedException ("Process.BeginOutputReadLine is not supported on the current platform.");
+               }
+
+               [Obsolete ("Process.BeginOutputReadLine is not supported on the current platform.", true)]
+               public void CancelOutputRead ()
+               {
+                       throw new PlatformNotSupportedException ("Process.BeginOutputReadLine is not supported on the current platform.");
+               }
+
+               [Obsolete ("Process.BeginOutputReadLine is not supported on the current platform.", true)]
+               public void BeginErrorReadLine ()
+               {
+                       throw new PlatformNotSupportedException ("Process.BeginOutputReadLine is not supported on the current platform.");
+               }
+
+               [Obsolete ("Process.BeginOutputReadLine is not supported on the current platform.", true)]
+               public void CancelErrorRead ()
+               {
+                       throw new PlatformNotSupportedException ("Process.BeginOutputReadLine is not supported on the current platform.");
+               }
+#endif // MONO_FEATURE_PROCESS_START
 
                [Category ("Behavior")]
                [MonitoringDescription ("Raised when this process exits.")]
@@ -1517,6 +1587,7 @@ namespace System.Diagnostics {
                        // If this is a call to Dispose,
                        // dispose all managed resources.
                        if (disposing) {
+#if MONO_FEATURE_PROCESS_START
                                /* These have open FileStreams on the pipes we are about to close */
                                if (async_output != null)
                                        async_output.Close ();
@@ -1538,6 +1609,7 @@ namespace System.Diagnostics {
                                                error_stream.Close ();
                                        error_stream = null;
                                }
+#endif // MONO_FEATURE_PROCESS_START
                        }
 
                        // Release unmanaged resources
@@ -1604,7 +1676,7 @@ namespace System.Diagnostics {
                        if (background_wait_for_exit_thread != null)
                                return;
 
-                       Thread t = new Thread (_ => WaitForExit ());
+                       Thread t = new Thread (_ => WaitForExit ()) { IsBackground = true };
 
                        if (Interlocked.CompareExchange (ref background_wait_for_exit_thread, t, null) == null)
                                t.Start ();
index d2d8b28d86cef4ebbeeff516308503d14cf10fe2..d08e60984161333f17f2b4ebab9bb5dc8b75c5c6 100644 (file)
@@ -43,6 +43,8 @@ namespace System.IO {
                public bool Enabled;
                public bool NoWildcards;
                public DateTime DisabledTime;
+
+               public object FilesLock = new object ();
                public Hashtable Files;
        }
 
@@ -211,6 +213,13 @@ namespace System.IO {
                                        files = NoStringsArray;
                        }
 
+                       lock (data.FilesLock) {
+                               IterateAndModifyFilesData (data, directory, dispatch, files);
+                       }
+               }
+
+               void IterateAndModifyFilesData (DefaultWatcherData data, string directory, bool dispatch, string[] files)
+               {
                        /* Set all as untested */
                        foreach (string filename in data.Files.Keys) {
                                FileData fd = (FileData) data.Files [filename];
index 0d2e39ee02baddcd7c5f4743b3c8087a6af1cdc6..b2d964ceb5e0cc451618a2dfc914fd78f8dbc446 100644 (file)
@@ -150,7 +150,7 @@ namespace System.IO {
        [StructLayout(LayoutKind.Sequential)]
        struct timespec {
                public IntPtr tv_sec;
-               public IntPtr tv_usec;
+               public IntPtr tv_nsec;
        }
 
        class PathData
@@ -162,6 +162,8 @@ namespace System.IO {
 
        class KqueueMonitor : IDisposable
        {
+               static bool initialized;
+               
                public int Connection
                {
                        get { return conn; }
@@ -171,6 +173,13 @@ namespace System.IO {
                {
                        this.fsw = fsw;
                        this.conn = -1;
+                       if (!initialized){
+                               int t;
+                               initialized = true;
+                               var maxenv = Environment.GetEnvironmentVariable ("MONO_DARWIN_WATCHER_MAXFDS");
+                               if (maxenv != null && Int32.TryParse (maxenv, out t))
+                                       maxFds = t;
+                       }
                }
 
                public void Dispose ()
@@ -304,7 +313,7 @@ namespace System.IO {
 
                        Scan (fullPathNoLastSlash, false, ref initialFds);
 
-                       var immediate_timeout = new timespec { tv_sec = (IntPtr)0, tv_usec = (IntPtr)0 };
+                       var immediate_timeout = new timespec { tv_sec = (IntPtr)0, tv_nsec = (IntPtr)0 };
                        var eventBuffer = new kevent[0]; // we don't want to take any events from the queue at this point
                        var changes = CreateChangeList (ref initialFds);
 
@@ -638,7 +647,7 @@ namespace System.IO {
                const int F_GETPATH = 50;
                const int __DARWIN_MAXPATHLEN = 1024;
                static readonly kevent[] emptyEventList = new System.IO.kevent[0];
-               const int maxFds = 200;
+               int maxFds = Int32.MaxValue;
 
                FileSystemWatcher fsw;
                int conn;
diff --git a/mcs/class/System/System.Net.Cache/ChangeLog b/mcs/class/System/System.Net.Cache/ChangeLog
deleted file mode 100644 (file)
index e73f284..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-2007-11-13  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * HttpRequestCachePolicy.cs
-         HttpCacheAgeControl.cs
-         HttpRequestCacheLevel.cs
-         RequestCacheLevel.cs : fixed enum value binary compat to .net.
-
-2004-09-10  Tim Coleman <tim@timcoleman.com>
-       * HttpCacheAgeControl.cs HttpRequestCacheLevel.cs HttpRequestCachePolicy.cs 
-       * RequestCacheLevel.cs RequestCachePolicy.cs:
-               New classes for Fx 2.0
diff --git a/mcs/class/System/System.Net.Cache/HttpCacheAgeControl.cs b/mcs/class/System/System.Net.Cache/HttpCacheAgeControl.cs
deleted file mode 100644 (file)
index f574237..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.Net.Cache.HttpCacheAgeControl.cs
-//
-// Authors:
-//     Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2004
-// (c) 2004 Novell, Inc. (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Net.Cache 
-{
-       public enum HttpCacheAgeControl
-       {
-               None = 0,
-               MinFresh = 0x01,
-               MaxAge = 0x02,
-               MaxAgeAndMinFresh = 0x03,
-               MaxStale = 0x04,
-               MaxAgeAndMaxStale = 0x06,
-       }
-}
-
diff --git a/mcs/class/System/System.Net.Cache/HttpRequestCacheLevel.cs b/mcs/class/System/System.Net.Cache/HttpRequestCacheLevel.cs
deleted file mode 100644 (file)
index 9aa816d..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Net.Cache.HttpRequestCacheLevel.cs
-//
-// Authors:
-//     Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2004
-// (c) 2004 Novell, Inc. (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Net.Cache 
-{
-       public enum HttpRequestCacheLevel
-       {
-               Default = 0x00,
-               BypassCache = 0x01,
-               CacheOnly = 0x02,
-               CacheIfAvailable = 0x03,
-               Revalidate = 0x04,
-               Reload = 0x05,
-               NoCacheNoStore = 0x06,
-               CacheOrNextCacheOnly = 0x07,
-               Refresh = 0x08,
-       }
-}
-
diff --git a/mcs/class/System/System.Net.Cache/HttpRequestCachePolicy.cs b/mcs/class/System/System.Net.Cache/HttpRequestCachePolicy.cs
deleted file mode 100644 (file)
index d0e2843..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-//
-// System.Net.Cache.HttpRequestCachePolicy.cs
-//
-// Authors:
-//     Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2004
-// (c) 2004 Novell, Inc. (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Net.Cache 
-{
-       public class HttpRequestCachePolicy : RequestCachePolicy
-       {
-               #region Fields
-
-               DateTime cacheSyncDate;
-               HttpRequestCacheLevel level = HttpRequestCacheLevel.Default;
-               TimeSpan maxAge;
-               TimeSpan maxStale;
-               TimeSpan minFresh;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public HttpRequestCachePolicy ()
-               {
-               }
-
-               public HttpRequestCachePolicy (DateTime cacheSyncDate)
-               {
-                       this.cacheSyncDate = cacheSyncDate;
-               }
-
-               public HttpRequestCachePolicy (HttpRequestCacheLevel level)
-               {
-                       this.level = level;
-               }
-
-               public HttpRequestCachePolicy (HttpCacheAgeControl cacheAgeControl, TimeSpan ageOrFreshOrStale)
-               {
-                       switch (cacheAgeControl) {
-                       case HttpCacheAgeControl.MaxAge:
-                               maxAge = ageOrFreshOrStale;
-                               break;
-                       case HttpCacheAgeControl.MaxStale:
-                               maxStale = ageOrFreshOrStale;
-                               break;
-                       case HttpCacheAgeControl.MinFresh:
-                               minFresh = ageOrFreshOrStale;
-                               break;
-                       default:
-                               throw new ArgumentException ("ageOrFreshOrStale");
-                       }
-               }
-
-               public HttpRequestCachePolicy (HttpCacheAgeControl cacheAgeControl, TimeSpan maxAge, TimeSpan freshOrStale)
-               {
-                       this.maxAge = maxAge;
-
-                       switch (cacheAgeControl) {
-                       case HttpCacheAgeControl.MaxStale:
-                               maxStale = freshOrStale;
-                               break;
-                       case HttpCacheAgeControl.MinFresh:
-                               minFresh = freshOrStale;
-                               break;
-                       default:
-                               throw new ArgumentException ("freshOrStale");
-                       }
-               }
-
-               public HttpRequestCachePolicy (HttpCacheAgeControl cacheAgeControl, TimeSpan maxAge, TimeSpan freshOrStale, DateTime cacheSyncDate)
-                       : this (cacheAgeControl, maxAge, freshOrStale)
-               {
-                       this.cacheSyncDate = cacheSyncDate;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public DateTime CacheSyncDate {
-                       get { return cacheSyncDate; }
-               }
-
-               public new HttpRequestCacheLevel Level {
-                       get { return level; }
-               }
-
-               public TimeSpan MaxAge {
-                       get { return maxAge; }
-               }
-
-               public TimeSpan MaxStale {
-                       get { return maxStale; }
-               }
-
-               public TimeSpan MinFresh {
-                       get { return minFresh; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               [MonoTODO]
-               public override string ToString ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System/System.Net.Cache/RequestCacheLevel.cs b/mcs/class/System/System.Net.Cache/RequestCacheLevel.cs
deleted file mode 100644 (file)
index 3b78221..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// System.Net.Cache.RequestCacheLevel.cs
-//
-// Authors:
-//     Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2004
-// (c) 2004 Novell, Inc. (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Net.Cache 
-{
-       public enum RequestCacheLevel
-       {
-               Default = 0x00,
-               BypassCache = 0x01,
-               CacheOnly = 0x02,
-               CacheIfAvailable = 0x03,
-               Revalidate = 0x04,
-               Reload = 0x05,
-               NoCacheNoStore = 0x06,
-       }
-}
-
diff --git a/mcs/class/System/System.Net.Cache/RequestCachePolicy.cs b/mcs/class/System/System.Net.Cache/RequestCachePolicy.cs
deleted file mode 100644 (file)
index 0483192..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// System.Net.Cache.RequestCachePolicy.cs
-//
-// Authors:
-//     Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2004
-// (c) 2004 Novell, Inc. (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Net.Cache 
-{
-       public class RequestCachePolicy
-       {
-               #region Fields
-
-               RequestCacheLevel level = RequestCacheLevel.Default;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public RequestCachePolicy ()
-               {
-               }
-
-               public RequestCachePolicy (RequestCacheLevel level)
-               {
-                       this.level = level;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public RequestCacheLevel Level {
-                       get { return level; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               [MonoTODO]
-               public override string ToString ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
-
index 213c93c07f5085c1deefbaa1c555216404c75850..150a5698e9938e346f826dcfc93b4ce26af75a28 100644 (file)
@@ -136,7 +136,7 @@ namespace System.Net.Mail {
                        sw.Flush ();
                        ms.Position = 0;
                        Attachment a = new Attachment (ms, name, mediaType);
-                       a.TransferEncoding = ContentType.GuessTransferEncoding (contentEncoding);
+                       a.TransferEncoding = MailMessage.GuessTransferEncoding (contentEncoding);
                        a.ContentType.CharSet = sw.Encoding.BodyName;
                        return a;
                }
index 81b0c6ac1e515a39c93ec59ee3d027f14b75ff05..3b978ac32fa813a2f5359fbcd6aab3ffd6d5a8c5 100644 (file)
@@ -145,7 +145,7 @@ namespace System.Net.Mail {
                }
 
                internal TransferEncoding ContentTransferEncoding {
-                       get { return ContentType.GuessTransferEncoding (BodyEncoding); }
+                       get { return GuessTransferEncoding (BodyEncoding); }
                }
 
                public Encoding BodyEncoding {
@@ -244,9 +244,63 @@ namespace System.Net.Mail {
 
                private Encoding GuessEncoding (string s)
                {
-                       return ContentType.GuessEncoding (s);
+                       for (int i = 0; i < s.Length; i++)
+                               if (s [i] >= '\u0080')
+                                       return UTF8Unmarked;
+                       return null;
                }
 
+               internal static TransferEncoding GuessTransferEncoding (Encoding enc)
+               {
+                       if (Encoding.ASCII.Equals (enc))
+                               return TransferEncoding.SevenBit;
+                       else if (Encoding.UTF8.CodePage == enc.CodePage ||
+#if !NET_2_1
+                           Encoding.Unicode.CodePage == enc.CodePage || Encoding.UTF32.CodePage == enc.CodePage
+#else
+                           Encoding.Unicode.CodePage == enc.CodePage
+#endif
+                                        )
+                               return TransferEncoding.Base64;
+                       else
+                               return TransferEncoding.QuotedPrintable;
+               }
+
+               static char [] hex = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+               internal static string To2047(byte [] bytes)
+               {
+                       StringBuilder sb = new StringBuilder ();
+                       foreach (byte i in bytes) {
+                               if (i < 0x21 || i > 0x7E || i == '?' || i == '=' || i == '_') {
+                                       sb.Append ('=');
+                                       sb.Append (hex [(i >> 4) & 0x0f]);
+                                       sb.Append (hex [i & 0x0f]);
+                               } else
+                                       sb.Append ((char) i);
+                       }
+                       return sb.ToString ();
+               }
+
+               internal static string EncodeSubjectRFC2047 (string s, Encoding enc)
+               {
+                       if (s == null || Encoding.ASCII.Equals (enc))
+                               return s;
+                       for (int i = 0; i < s.Length; i++)
+                               if (s [i] >= '\u0080') {
+                                       string quoted = To2047(enc.GetBytes (s));
+                                       return String.Concat ("=?", enc.HeaderName, "?Q?", quoted, "?=");
+                               }
+                       return s;
+               }
+
+               static Encoding utf8unmarked;
+               static Encoding UTF8Unmarked {
+                       get {
+                               if (utf8unmarked == null)
+                                       utf8unmarked = new UTF8Encoding (false);
+                               return utf8unmarked;
+                       }
+               }
                #endregion // Methods
        }
 }
index 4b3f468b091e0a91445b6e5ee363c2df51e07c87..f156c7277ae752d38f462e1bb46631dfbb07bf06 100644 (file)
 //
 
 #if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
 
-#if MONOTOUCH || MONODROID
-using System.Security.Cryptography.X509Certificates;
+#if MONO_SECURITY_ALIAS
+using MSI = MonoSecurity::Mono.Security.Interface;
 #else
-extern alias PrebuiltSystem;
+using MSI = Mono.Security.Interface;
+#endif
+#if MONO_X509_ALIAS
 using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
-using System.Security.Cryptography.X509Certificates;
+#else
+using X509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
 #endif
-
+using System.Security.Cryptography.X509Certificates;
 #endif
 
 using System;
@@ -50,12 +59,12 @@ using System.Net.Mime;
 using System.Net.Sockets;
 using System.Text;
 using System.Threading;
-using System.Reflection;
 using System.Net.Configuration;
 using System.Configuration;
 using System.Net.Security;
 using System.Security.Authentication;
 using System.Threading.Tasks;
+using Mono.Net.Security;
 
 namespace System.Net.Mail {
        [Obsolete ("SmtpClient and its network of types are poorly designed, we strongly recommend you use https://github.com/jstedfast/MailKit and https://github.com/jstedfast/MimeKit instead")]
@@ -276,7 +285,7 @@ namespace System.Net.Mail {
                private static string EncodeAddress(MailAddress address)
                {
                        if (!String.IsNullOrEmpty (address.DisplayName)) {
-                               string encodedDisplayName = ContentType.EncodeSubjectRFC2047 (address.DisplayName, Encoding.UTF8);
+                               string encodedDisplayName = MailMessage.EncodeSubjectRFC2047 (address.DisplayName, Encoding.UTF8);
                                return "\"" + encodedDisplayName + "\" <" + address.Address + ">";
                        }
                        return address.ToString ();
@@ -298,7 +307,7 @@ namespace System.Net.Mail {
 
                private string EncodeSubjectRFC2047 (MailMessage message)
                {
-                       return ContentType.EncodeSubjectRFC2047 (message.Subject, message.SubjectEncoding);
+                       return MailMessage.EncodeSubjectRFC2047 (message.Subject, message.SubjectEncoding);
                }
 
                private string EncodeBody (MailMessage message)
@@ -701,7 +710,7 @@ namespace System.Net.Mail {
                                SendHeader ("Reply-To", EncodeAddresses (message.ReplyToList));
 
                        foreach (string s in message.Headers.AllKeys)
-                               SendHeader (s, ContentType.EncodeSubjectRFC2047 (message.Headers [s], message.HeadersEncoding));
+                               SendHeader (s, MailMessage.EncodeSubjectRFC2047 (message.Headers [s], message.HeadersEncoding));
        
                        AddPriorityHeader (message);
 
@@ -785,13 +794,8 @@ namespace System.Net.Mail {
                                CheckCancellation ();
 
                                if (escapeDots) {
-                                       int i;
-                                       for (i = 0; i < line.Length; i++) {
-                                               if (line[i] != '.')
-                                                       break;
-                                       }
-                                       if (i > 0 && i == line.Length) {
-                                               line += ".";
+                                       if (line.Length > 0 && line[0] == '.') {
+                                               line = "." + line;
                                        }
                                }
                                writer.Write (line);
@@ -1143,21 +1147,6 @@ try {
                        return "unknown";
                }
 
-#if SECURITY_DEP
-               RemoteCertificateValidationCallback callback = delegate (object sender,
-                                                                        X509Certificate certificate,
-                                                                        X509Chain chain,
-                                                                        SslPolicyErrors sslPolicyErrors) {
-                       // honor any exciting callback defined on ServicePointManager
-                       if (ServicePointManager.ServerCertificateValidationCallback != null)
-                               return ServicePointManager.ServerCertificateValidationCallback (sender, certificate, chain, sslPolicyErrors);
-                       // otherwise provide our own
-                       if (sslPolicyErrors != SslPolicyErrors.None)
-                               throw new InvalidOperationException ("SSL authentication error: " + sslPolicyErrors);
-                       return true;
-                       };
-#endif
-
                private void InitiateSecureConnection () {
                        SmtpResponse response = SendCommand ("STARTTLS");
 
@@ -1165,11 +1154,14 @@ try {
                                throw new SmtpException (SmtpStatusCode.GeneralFailure, "Server does not support secure connections.");
                        }
 
-#if   SECURITY_DEP
-                       SslStream sslStream = new SslStream (stream, false, callback, null);
+#if SECURITY_DEP
+                       var tlsProvider = MonoTlsProviderFactory.GetProviderInternal ();
+                       var settings = MSI.MonoTlsSettings.CopyDefaultSettings ();
+                       settings.UseServicePointManagerCallback = true;
+                       var sslStream = tlsProvider.CreateSslStream (stream, false, settings);
                        CheckCancellation ();
                        sslStream.AuthenticateAsClient (Host, this.ClientCertificates, SslProtocols.Default, false);
-                       stream = sslStream;
+                       stream = sslStream.AuthenticatedStream;
 
 #else
                        throw new SystemException ("You are using an incomplete System.dll build");
diff --git a/mcs/class/System/System.Net.Mime/ChangeLog b/mcs/class/System/System.Net.Mime/ChangeLog
deleted file mode 100644 (file)
index 69e35c5..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-2009-09-23  Zoltan Varga  <vargaz@gmail.com>
-
-       * ContentType.cs: Fix the net 2.1 build.
-
-2009-04-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * ContentType.cs : when there are especials, quote parameter values.
-
-2008-08-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * ContentType.cs : patch by Ted Unangst, fixed bug #392843.
-         handle RFC2047 encoding.
-
-2008-02-16  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * ContentType.cs : Reject such MediaType that lacks '/'.
-         Do not reject such parameters that are not standard ones.
-
-2007-12-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * ContentType.cs : for SubjectEncoding, null is returned instead of 
-         ASCII (.net compat way). For this cosmetic change, BodyEncoding is 
-         changed to fill ASCII automatically.
-
-2007-12-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * ContentType.cs : added GuessTransferEncoding() to guess correct
-         encoding type for sys.net.mail.Attachment.
-         Here UTF8Encoding should not include BOM.
-
-2007-10-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * ContentType.cs : moved couple of encoding stuff to here.
-         Encode non-ASCII value in RFC 2047.
-
-2007-09-28  Marek Habersack  <mhabersack@novell.com>
-
-       * ContentDisposition.cs: if the file name contains spaces, enclose
-       it in quotes. Fixes bug #324084.
-
-2006-01-13  John Luke  <john.luke@gmail.com>
-
-       * ContentDisposition.cs: use String.Compare instead
-       of comparing .ToLower's
-       
-2006-01-02  John Luke  <john.luke@gmail.com>
-
-       * ContentDisposition.cs: remove [MonoTODO]'s
-       access and store the properties in Parameters
-       ToString is now just DispositionType + the parameters
-       * ContentType.cs: remove [MonoTODO]'s
-       use parameters to store Name, Boundary, and CharSet
-       ToString is now just MediaType + the parameters
-       throw FormatException for unrecognized paremeter in ctor
-       * TransferEncoding.cs: remove [Serializable]
-
-2005-12-26  John Luke  <john.luke@gmail.com>
-
-       * ContentDisposition.cs: Size is -1 by default
-       throw ArgumentNullException and ArgumentException for
-       set_DispositionType
-       * ContentType.cs: throw ArgumentNullException, ArgumentException,
-       and FormatException for set_MediaType
-       don't print Boundary,Name in ToString() if they are ""
-
-2005-12-23  John Luke  <john.luke@gmail.com>
-
-       * ContentDisposition.cs: override GetHashCode and
-       Equals, implement ToString,
-       fix Size to be long not int,
-       implement Inline property,
-       implement the ctors
-       * ContentType.cs: override GetHashCode and Equals
-       implement ToString, implement the ctors
-       
-2005-12-22  John Luke  <john.luke@gmail.com>
-
-       minor updates I noticed for 2.0 final API
-       * DispositionTypeNames.cs: change to a static class
-       * MediaTypeNames.cs: change these to static classes
-       * TransferEncoding.cs: remove Binary and EightBit
-       add [Serializable] and fix the values
-       
-2004-09-09  Tim Coleman <tim@timcoleman.com>
-       * ContentType.cs: Changes to MIME headers
-
-2004-09-04 Tim Coleman  <tim@timcoleman.com>
-       * ContentDisposition.cs ContentType.cs DispositionTypeNames.cs
-       * MediaTypeNames.cs TransferEncoding.cs:
-               New class stubs for 2.0
diff --git a/mcs/class/System/System.Net.Mime/ContentDisposition.cs b/mcs/class/System/System.Net.Mime/ContentDisposition.cs
deleted file mode 100644 (file)
index b6e3844..0000000
+++ /dev/null
@@ -1,253 +0,0 @@
-//
-// System.Net.Mime.ContentDisposition.cs
-//
-// Authors:
-//     Tim Coleman (tim@timcoleman.com)
-//     John Luke (john.luke@gmail.com)
-//
-// Copyright (C) Tim Coleman, 2004
-// Copyright (C) John Luke, 2005
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Text;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Globalization;
-
-namespace System.Net.Mime {
-       public class ContentDisposition
-       {
-               // FIXME: "r" was not enough, neither was zzz
-               // so this will fail if the offset is not an even hour
-               const string rfc822 = "dd MMM yyyy HH':'mm':'ss zz00";
-               
-               #region Fields
-
-               string dispositionType;
-               StringDictionary parameters = new StringDictionary ();
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public ContentDisposition () : this (DispositionTypeNames.Attachment)
-               {
-               }
-
-               public ContentDisposition (string disposition)
-               {
-                       if (disposition == null)
-                               throw new ArgumentNullException ();
-                       if (disposition.Length < 1)
-                               throw new FormatException ();
-                       Size = -1;
-
-                       try {
-                               int index = disposition.IndexOf (';');
-                               if (index < 0) {
-                                       dispositionType = disposition.Trim ();
-                               }
-                               else {
-                                       string[] split = disposition.Split (';');
-                                       dispositionType = split[0].Trim ();
-                                       for (int i = 1; i < split.Length; i++)
-                                               Parse (split[i]);
-                               }
-                       } catch {
-                               throw new FormatException ();
-                       }
-               }
-
-               // the individual pieces
-               void Parse (string pair)
-               {
-                       if (pair == null || pair.Length < 0)
-                               return;
-
-                       string[] split = pair.Split ('=');
-                       if (split.Length == 2)
-                               parameters.Add (split[0].Trim (), split[1].Trim ());
-                       else
-                               throw new FormatException ();
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public DateTime CreationDate {
-                       get {
-                               if (parameters.ContainsKey ("creation-date"))
-                                       return DateTime.ParseExact (parameters["creation-date"], rfc822, null);
-                               else
-                                       return DateTime.MinValue;
-                       }
-                       set {
-                               if (value > DateTime.MinValue)
-                                       parameters["creation-date"] = value.ToString (rfc822);
-                               else
-                                       parameters.Remove ("modification-date");
-                       }
-               }
-
-               public string DispositionType {
-                       get { return dispositionType; }
-                       set {
-                               if (value == null)
-                                       throw new ArgumentNullException ();
-                               if (value.Length < 1)
-                                       throw new ArgumentException ();
-                               dispositionType = value;
-                       }
-               }
-
-               public string FileName {
-                       get { return parameters["filename"]; }
-                       set { parameters["filename"] = value; }
-               }
-
-               public bool Inline {
-                       get { return String.Compare (dispositionType, DispositionTypeNames.Inline, true, CultureInfo.InvariantCulture) == 0; }
-                       set {
-                               if (value)
-                                       dispositionType = DispositionTypeNames.Inline;
-                               else
-                                       dispositionType = DispositionTypeNames.Attachment;
-                       }
-               }
-
-               public DateTime ModificationDate {
-                       get {
-                               if (parameters.ContainsKey ("modification-date"))
-                                       return DateTime.ParseExact (parameters["modification-date"], rfc822, null);
-                               else
-                                       return DateTime.MinValue;
-                       }
-                       set {
-                               if (value > DateTime.MinValue)
-                                       parameters["modification-date"] = value.ToString (rfc822);
-                               else
-                                       parameters.Remove ("modification-date");
-                       }
-               }
-
-               public StringDictionary Parameters {
-                       get { return parameters; }
-               }
-
-               public DateTime ReadDate {
-                       get {
-                               if (parameters.ContainsKey ("read-date"))
-                                       return DateTime.ParseExact (parameters["read-date"], rfc822, null);
-                               else
-                                       return DateTime.MinValue;
-                       }
-                       set {
-                               if (value > DateTime.MinValue)
-                                       parameters["read-date"] = value.ToString (rfc822);
-                               else
-                                       parameters.Remove ("read-date");
-                       }
-               }
-
-               public long Size {
-                       get {
-                               if (parameters.ContainsKey ("size"))
-                                       return long.Parse (parameters["size"]);
-                               else
-                                       return -1;
-                       }
-                       set {
-                               if (value > -1)
-                                       parameters["size"] = value.ToString ();
-                               else
-                                       parameters.Remove ("size");
-                       }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public override bool Equals (object obj)
-               {
-                       return Equals (obj as ContentDisposition);
-               }
-
-               bool Equals (ContentDisposition other)
-               {
-                       return other != null && ToString () == other.ToString ();
-               }
-
-               public override int GetHashCode ()
-               {
-                       return ToString ().GetHashCode ();
-               }
-
-               public override string ToString ()
-               {
-                       // the content-disposition header as in RFC 2183
-                       // ex. attachment; filename=genome.jpeg; modification-date="Wed, 12 Feb 1997 16:29:51 -0500";
-                       // the dates must be quoted and in RFC 822 format
-                       //
-                       // According to RFC 2183, the filename field value follows the definition
-                       // given in RFC 1521, which is
-                       //
-                       //  value := token / quoted-string
-                       //
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append (DispositionType.ToLower ());
-                       if (Parameters != null && Parameters.Count > 0) {
-                               bool quote = false;
-                               string key, value;
-                               
-                               foreach (DictionaryEntry pair in Parameters)
-                               {
-                                       if (pair.Value != null && pair.Value.ToString ().Length > 0) {
-                                               sb.Append ("; ");
-                                               sb.Append (pair.Key);
-                                               sb.Append ("=");
-
-                                               key = pair.Key.ToString ();
-                                               value = pair.Value.ToString ();
-                                               if ((key == "filename" && value.IndexOf (' ') != -1) || key.EndsWith ("date"))
-                                                       quote = true;
-                                               else
-                                                       quote = false;
-                                               
-                                               if (quote)
-                                                       sb.Append ("\"");
-                                               sb.Append (value);
-                                               if (quote)
-                                                       sb.Append ("\"");
-                                       }
-                               }
-                       }
-                       return sb.ToString ();
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System/System.Net.Mime/ContentType.cs b/mcs/class/System/System.Net.Mime/ContentType.cs
deleted file mode 100644 (file)
index 9a7b9ca..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-//
-// System.Net.Mime.ContentType.cs
-//
-// Authors:
-//     Tim Coleman (tim@timcoleman.com)
-//     John Luke (john.luke@gmail.com)
-//
-// Copyright (C) Tim Coleman, 2004
-// Copyright (C) John Luke, 2005
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.Collections.Specialized;
-using System.Text;
-
-namespace System.Net.Mime {
-       public class ContentType
-       {
-               #region Fields
-               static Encoding utf8unmarked;
-
-               string mediaType;
-               StringDictionary parameters = new StringDictionary ();
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public ContentType ()
-               {
-                       mediaType = "application/octet-stream";
-               }
-       
-               public ContentType (string contentType)
-               {
-                       if (contentType == null)
-                               throw new ArgumentNullException ("contentType");
-                       if (contentType.Length == 0)
-                               throw new ArgumentException ("contentType");
-
-                       string[] split = contentType.Split (';');
-                       this.MediaType = split[0].Trim ();
-                       for (int i = 1; i < split.Length; i++)
-                               Parse (split[i].Trim ());
-               }
-
-               // parse key=value pairs like:
-               // "charset=us-ascii"
-               static char [] eq = new char [] { '=' };
-               void Parse (string pair)
-               {
-                       if (String.IsNullOrEmpty (pair))
-                               return;
-
-                       string [] split = pair.Split (eq, 2);
-                       string key = split [0].Trim ();
-                       string val =  (split.Length > 1) ? split [1].Trim () : "";
-                       int l = val.Length;
-                       if (l >= 2 && val [0] == '"' && val [l - 1] == '"')
-                               val = val.Substring (1, l - 2);
-                       parameters [key] = val;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               static Encoding UTF8Unmarked {
-                       get {
-                               if (utf8unmarked == null)
-                                       utf8unmarked = new UTF8Encoding (false);
-                               return utf8unmarked;
-                       }
-               }
-
-               public string Boundary {
-                       get { return parameters["boundary"]; }
-                       set { parameters["boundary"] = value; }
-               }
-
-               public string CharSet {
-                       get { return parameters["charset"]; }
-                       set { parameters["charset"] = value; }
-               }
-
-               public string MediaType {
-                       get { return mediaType; }
-                       set {
-                               if (value == null)
-                                       throw new ArgumentNullException ();
-                               if (value.Length < 1)
-                                       throw new ArgumentException ();
-                               if (value.IndexOf ('/') < 1)
-                                       throw new FormatException ();
-                               if (value.IndexOf (';') != -1)
-                                       throw new FormatException ();
-                               mediaType = value;
-                       }
-               }
-
-               public string Name {
-                       get { return parameters["name"]; }
-                       set { parameters["name"] = value; }
-               }
-
-               public StringDictionary Parameters {
-                       get { return parameters; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public override bool Equals (object obj)
-               {
-                       return Equals (obj as ContentType);
-               }
-
-               bool Equals (ContentType other)
-               {
-                       return other != null && ToString () == other.ToString ();
-               }
-               
-               public override int GetHashCode ()
-               {
-                       return ToString ().GetHashCode ();
-               }
-
-               public override string ToString ()
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       Encoding enc = CharSet != null ? Encoding.GetEncoding (CharSet) : Encoding.UTF8;
-                       sb.Append (MediaType);
-                       if (Parameters != null && Parameters.Count > 0) {
-                               foreach (DictionaryEntry pair in parameters)
-                               {
-                                       if (pair.Value != null && pair.Value.ToString ().Length > 0) {  
-                                               sb.Append ("; ");
-                                               sb.Append (pair.Key);
-                                               sb.Append ("=");
-                                               sb.Append (WrapIfEspecialsExist (EncodeSubjectRFC2047 (pair.Value as string, enc)));
-                                       }
-                               }
-                       }
-                       return sb.ToString ();
-               }
-
-               // see RFC 2047
-               static readonly char [] especials = {'(', ')', '<', '>', '@', ',', ';', ':', '<', '>', '/', '[', ']', '?', '.', '='};
-
-               static string WrapIfEspecialsExist (string s)
-               {
-                       s = s.Replace ("\"", "\\\"");
-                       if (s.IndexOfAny (especials) >= 0)
-                               return '"' + s + '"';
-                       else
-                               return s;
-               }
-
-               internal static Encoding GuessEncoding (string s)
-               {
-                       for (int i = 0; i < s.Length; i++)
-                               if (s [i] >= '\u0080')
-                                       return UTF8Unmarked;
-                       return null;
-               }
-
-               internal static TransferEncoding GuessTransferEncoding (Encoding enc)
-               {
-                       if (Encoding.ASCII.Equals (enc))
-                               return TransferEncoding.SevenBit;
-                       else if (Encoding.UTF8.CodePage == enc.CodePage ||
-#if !NET_2_1
-                           Encoding.Unicode.CodePage == enc.CodePage || Encoding.UTF32.CodePage == enc.CodePage
-#else
-                           Encoding.Unicode.CodePage == enc.CodePage
-#endif
-                                        )
-                               return TransferEncoding.Base64;
-                       else
-                               return TransferEncoding.QuotedPrintable;
-               }
-
-               static char [] hex = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
-               internal static string To2047(byte [] bytes)
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       foreach (byte i in bytes) {
-                               if (i < 0x21 || i > 0x7E || i == '?' || i == '=' || i == '_') {
-                                       sb.Append ('=');
-                                       sb.Append (hex [(i >> 4) & 0x0f]);
-                                       sb.Append (hex [i & 0x0f]);
-                               } else
-                                       sb.Append ((char) i);
-                       }
-                       return sb.ToString ();
-               }
-
-               internal static string EncodeSubjectRFC2047 (string s, Encoding enc)
-               {
-                       if (s == null || Encoding.ASCII.Equals (enc))
-                               return s;
-                       for (int i = 0; i < s.Length; i++)
-                               if (s [i] >= '\u0080') {
-                                       string quoted = To2047(enc.GetBytes (s));
-                                       return String.Concat ("=?", enc.HeaderName, "?Q?", quoted, "?=");
-                               }
-                       return s;
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System/System.Net.Mime/DispositionTypeNames.cs b/mcs/class/System/System.Net.Mime/DispositionTypeNames.cs
deleted file mode 100644 (file)
index 86abcb7..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// System.Net.Mime.DispositionTypeNames.cs
-//
-// Author:
-//     Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2004
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Net.Mime {
-       public static class DispositionTypeNames
-       {
-               public const string Attachment = "attachment";
-               public const string Inline = "inline";
-       }
-}
-
diff --git a/mcs/class/System/System.Net.Mime/MediaTypeNames.cs b/mcs/class/System/System.Net.Mime/MediaTypeNames.cs
deleted file mode 100644 (file)
index 6b2d551..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// System.Net.Mime.MediaTypeNames.cs
-//
-// Author:
-//     Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2004
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Net.Mime {
-       public static class MediaTypeNames
-       {
-               public static class Application {
-                       const string prefix             = "application/";
-                       public const string Octet       = prefix + "octet-stream";
-                       public const string Pdf         = prefix + "pdf";
-                       public const string Rtf         = prefix + "rtf";
-                       public const string Soap        = prefix + "soap+xml";
-                       public const string Zip         = prefix + "zip";
-               }
-               public static class Image {
-                       const string prefix             = "image/";
-                       public const string Gif         = prefix + "gif";
-                       public const string Jpeg        = prefix + "jpeg";
-                       public const string Tiff        = prefix + "tiff";
-               }
-               public static class Text {
-                       const string prefix             = "text/";
-                       public const string Html        = prefix + "html";
-                       public const string Plain       = prefix + "plain";
-                       public const string RichText    = prefix + "richtext";
-                       public const string Xml         = prefix + "xml";
-               }
-       }
-}
diff --git a/mcs/class/System/System.Net.Mime/TransferEncoding.cs b/mcs/class/System/System.Net.Mime/TransferEncoding.cs
deleted file mode 100644 (file)
index abe9bec..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.Net.Mail.TransferEncoding.cs
-//
-// Author:
-//     Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2004
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Net.Mime {
-       public enum TransferEncoding
-       {
-               QuotedPrintable = 0,
-               Base64 = 1,
-               SevenBit = 2, 
-               Unknown = -1
-       }
-}
-
index 07c8f478dee5dc33884824f8ff3db64433e6ddef..14767dd782b42e4a10bc6315ded535f930af7bcc 100644 (file)
@@ -92,6 +92,7 @@ namespace System.Net.NetworkInformation {
                }
        }
 
+#if !MOBILE
        class Win32GatewayIPAddressInformationCollection : GatewayIPAddressInformationCollection
        {
                public static readonly Win32GatewayIPAddressInformationCollection Empty = new Win32GatewayIPAddressInformationCollection (true);
@@ -127,6 +128,7 @@ namespace System.Net.NetworkInformation {
                        get { return is_readonly; }
                }
        }
+#endif
 
        class UnixGatewayIPAddressInformationCollection : GatewayIPAddressInformationCollection
        {
index 69b05505403740965fca5ba724cf79e59ac5bc3e..3900ac1f192f00d9d8d6f91690e8f010644ce870 100644 (file)
@@ -100,6 +100,7 @@ namespace System.Net.NetworkInformation {
                }
        }
 
+#if !MOBILE
        class Win32IPAddressCollection : IPAddressCollection
        {
                public static readonly Win32IPAddressCollection Empty = new Win32IPAddressCollection (IntPtr.Zero);
@@ -168,6 +169,7 @@ namespace System.Net.NetworkInformation {
                        get { return is_readonly; }
                }
        }
+#endif
 }
 
 
index 40f5f70fef837f68932c36f08fcf3f9e7f8b4f17..1492fe0f925cbc906979606054c419eeed634631 100644 (file)
@@ -109,6 +109,7 @@ namespace System.Net.NetworkInformation {
                        get { return is_readonly; }
                }
 
+#if !MOBILE
                public static IPAddressInformationCollection Win32FromAnycast (IntPtr ptr)
                {
                        IPAddressInformationImplCollection c = new IPAddressInformationImplCollection (false);
@@ -123,6 +124,7 @@ namespace System.Net.NetworkInformation {
                        c.is_readonly = true;
                        return c;
                }
+#endif
 
                public static IPAddressInformationImplCollection LinuxFromAnycast (IList<IPAddress> addresses)
                {
index b7b7ebb2468e0c1c2f4095ed85f23459984243cb..b22a33c9ad541f5e1e196b79841c9ce1f2f2e6bb 100644 (file)
@@ -46,6 +46,8 @@ namespace System.Net.NetworkInformation {
                {
 #if MONODROID
                        return new AndroidIPGlobalProperties ();
+#elif MONOTOUCH || XAMMAC || MOBILE_STATIC
+                       return new UnixIPGlobalProperties ();
 #else
                        switch (Environment.OSVersion.Platform) {
                        case PlatformID.Unix:
@@ -190,6 +192,7 @@ namespace System.Net.NetworkInformation {
                }
        }
 
+#if MONODROID
        sealed class AndroidIPGlobalProperties : UnixIPGlobalProperties
        {
                public override string DomainName {
@@ -198,6 +201,7 @@ namespace System.Net.NetworkInformation {
                        }
                }
        }
+#endif
 
        // It expects /proc/net/snmp (or /usr/compat/linux/proc/net/snmp),
        // formatted like:
@@ -403,6 +407,7 @@ namespace System.Net.NetworkInformation {
                }
        }
 
+#if !MOBILE
        class Win32IPGlobalProperties : IPGlobalProperties
        {
                public const int AF_INET = 2;
@@ -736,4 +741,5 @@ namespace System.Net.NetworkInformation {
                        }
                }
        }
+#endif
 }
index 7a017ef80a854b6700da25c4e8ae2929b40f0e5a..749be358302b0390c4d6454279649f045cd58d69 100644 (file)
@@ -142,6 +142,7 @@ namespace System.Net.NetworkInformation {
                }
        }
 
+#if !MOBILE
        class Win32IPGlobalStatistics : IPGlobalStatistics 
        {
                Win32_MIB_IPSTATS info;
@@ -218,7 +219,7 @@ namespace System.Net.NetworkInformation {
                        get { return info.InUnknownProtos; }
                }
        }
-
+       
        [StructLayout (LayoutKind.Sequential)]
        struct Win32_MIB_IPSTATS
        {
@@ -246,5 +247,6 @@ namespace System.Net.NetworkInformation {
                public int NumAddr;
                public int NumRoutes;
        }
+#endif
 }
 
index 13edcd33351156f76183ec5a80a4f931bd1c7443..3a37594d7553aeb1528d170399781c88f97dce47 100644 (file)
@@ -325,6 +325,7 @@ namespace System.Net.NetworkInformation {
                }
        }
 
+#if !MOBILE
        class Win32IPInterfaceProperties2 : IPInterfaceProperties
        {
                readonly Win32_IP_ADAPTER_ADDRESSES addr;
@@ -406,6 +407,7 @@ namespace System.Net.NetworkInformation {
                }
 
        }
+#endif
 }
 
 
index 9202c0f09a8564eb49657348597f3a4aa050d35f..33264fb4d6a7d07376d26f8f318849d69af19e54 100644 (file)
@@ -137,6 +137,7 @@ namespace System.Net.NetworkInformation {
                }
        }
        
+#if !MOBILE
        sealed class Win32IPv4InterfaceProperties : IPv4InterfaceProperties
        {
                [DllImport ("iphlpapi.dll")]
@@ -198,5 +199,6 @@ namespace System.Net.NetworkInformation {
                public IntPtr CurrentDnsServer; // to Win32_IP_ADDR_STRING
                public Win32_IP_ADDR_STRING DnsServerList;
        }
+#endif
 }
 
index 8dd8743c85ffbcc070cc2fda0f5a766df00a786a..ba12ba067dab630b3b9c7049ab86865d6038cd2a 100644 (file)
@@ -28,6 +28,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 namespace System.Net.NetworkInformation {
+#if !MOBILE
        class Win32IPv4InterfaceStatistics : IPv4InterfaceStatistics
        {
                Win32_MIB_IFROW info;
@@ -86,6 +87,7 @@ namespace System.Net.NetworkInformation {
                }
        
        }
+#endif
 
        class LinuxIPv4InterfaceStatistics : IPv4InterfaceStatistics
        {
index e81df59229c4ca79623a7096488a5b050777cfbb..bf31050377aed351375a6e76145611ef864fa5b7 100644 (file)
@@ -35,7 +35,7 @@ namespace System.Net.NetworkInformation {
                public abstract int Index { get; }
                public abstract int Mtu { get; }
        }
-
+#if !MOBILE
        class Win32IPv6InterfaceProperties : IPv6InterfaceProperties
        {
                Win32_MIB_IFROW mib;
@@ -53,5 +53,6 @@ namespace System.Net.NetworkInformation {
                        get { return mib.Mtu; }
                }
        }
+#endif
 }
 
index bb7fab0b66c9db9e893751b6e3e5308742421f28..3ad40ed2e1cd13361e8af8d0bb0ab2ac14b265b6 100644 (file)
@@ -157,6 +157,7 @@ namespace System.Net.NetworkInformation {
                }
        }
 
+#if !MOBILE
        class Win32IcmpV4Statistics : IcmpV4Statistics
        {
                Win32_MIBICMPSTATS iin, iout;
@@ -269,5 +270,6 @@ namespace System.Net.NetworkInformation {
                public uint AddrMasks;
                public uint AddrMaskReps;
        }
+#endif
 }
 
index 7683ebd33e9bb8f86bc1331e2495520ad8bcd47b..94b05b143429e883141eb4e4e54029371f3ebc0c 100644 (file)
@@ -201,6 +201,7 @@ namespace System.Net.NetworkInformation {
                public const int RouterRenumbering = 138;
        }
 
+#if !MOBILE
        class Win32IcmpV6Statistics : IcmpV6Statistics
        {
                Win32_MIBICMPSTATS_EX iin, iout;
@@ -322,5 +323,6 @@ namespace System.Net.NetworkInformation {
                [MarshalAs (UnmanagedType.ByValArray, SizeConst = 256)]
                public uint [] Counts;
        }
+#endif
 }
 
index 218adff70d6e1788c3511bf7266ccd63c52f8939..36bd9c42de1a4e5b0bf5346432a2998a05b99bb0 100644 (file)
@@ -109,6 +109,7 @@ namespace System.Net.NetworkInformation {
                        get { return is_readonly; }
                }
 
+#if !MOBILE
                public static MulticastIPAddressInformationCollection Win32FromMulticast (IntPtr ptr)
                {
                        MulticastIPAddressInformationImplCollection c = new MulticastIPAddressInformationImplCollection (false);
@@ -123,6 +124,7 @@ namespace System.Net.NetworkInformation {
                        c.is_readonly = true;
                        return c;
                }
+#endif
 
                public static MulticastIPAddressInformationImplCollection LinuxFromList (List<IPAddress> addresses)
                {
index 62748e573f693e4a8344a822c9eec687f543b2fe..27927a81f61092cf2d17a009c4e756bc54b62d6a 100644 (file)
@@ -250,6 +250,10 @@ namespace System.Net.NetworkInformation {
 
                class LinuxNetworkInterfaceAPI : UnixNetworkInterfaceAPI
                {
+                       const int AF_INET = 2;
+                       const int AF_INET6 = 10;
+                       const int AF_PACKET = 17;
+
                        static void FreeInterfaceAddresses (IntPtr ifap)
                        {
 #if MONODROID
@@ -270,9 +274,6 @@ namespace System.Net.NetworkInformation {
 
                        public override NetworkInterface [] GetAllNetworkInterfaces ()
                        {
-                               const int AF_INET   = 2;
-                               const int AF_INET6  = 10;
-                               const int AF_PACKET = 17;
 
                                var interfaces = new Dictionary <string, LinuxNetworkInterface> ();
                                IntPtr ifap;
@@ -406,10 +407,47 @@ namespace System.Net.NetworkInformation {
 
                        public override IPAddress GetNetMask (IPAddress address)
                        {
-                               throw new NotImplementedException ();
+                               foreach (ifaddrs networkInteface in GetNetworkInterfaces()) {
+                                       if (networkInteface.ifa_addr == IntPtr.Zero)
+                                               continue;
+
+                                       var sockaddr = (sockaddr_in)Marshal.PtrToStructure(networkInteface.ifa_addr, typeof(sockaddr_in));
+
+                                       if (sockaddr.sin_family != AF_INET)
+                                               continue;
+
+                                       if (!address.Equals(new IPAddress(sockaddr.sin_addr)))
+                                               continue;
+
+                                       var netmask = (sockaddr_in)Marshal.PtrToStructure(networkInteface.ifa_netmask, typeof(sockaddr_in));
+                                       return new IPAddress(netmask.sin_addr);
+                               }
+
+                               return null;
+                       }
+
+                       private static IEnumerable<ifaddrs> GetNetworkInterfaces()
+                       {
+                               IntPtr ifap = IntPtr.Zero;
+
+                               try {
+                                       if (GetInterfaceAddresses(out ifap) != 0)
+                                               yield break;
+
+                                       var next = ifap;
+                                       while (next != IntPtr.Zero) {
+                                               var addr = (ifaddrs)Marshal.PtrToStructure(next, typeof(ifaddrs));
+                                               yield return addr;
+                                               next = addr.ifa_next;
+                                       }
+                               } finally {
+                                       if (ifap != IntPtr.Zero)
+                                               FreeInterfaceAddresses(ifap);
+                               }
                        }
                }
 
+#if !MOBILE
                class Win32NetworkInterfaceAPI : NetworkInterfaceFactory
                {
                        [DllImport ("iphlpapi.dll", SetLastError = true)]
@@ -457,6 +495,7 @@ namespace System.Net.NetworkInformation {
                                throw new NotImplementedException ();
                        }
                }
+#endif
 
                public abstract NetworkInterface [] GetAllNetworkInterfaces ();
                public abstract int GetLoopbackInterfaceIndex ();
@@ -464,7 +503,7 @@ namespace System.Net.NetworkInformation {
 
                public static NetworkInterfaceFactory Create ()
                {
-#if MONOTOUCH
+#if MONOTOUCH || XAMMAC
                        return new MacOsNetworkInterfaceAPI ();
 #else
                        Version windowsVer51 = new Version (5, 1);
@@ -477,8 +516,10 @@ namespace System.Net.NetworkInformation {
                                return new LinuxNetworkInterfaceAPI ();
                        }
 
+#if !MOBILE
                        if (Environment.OSVersion.Version >= windowsVer51)
                                return new Win32NetworkInterfaceAPI ();
+#endif
 
                        throw new NotImplementedException ();
 #endif
@@ -718,6 +759,7 @@ namespace System.Net.NetworkInformation {
                }
        }
 
+#if !MOBILE
        class Win32NetworkInterface2 : NetworkInterface
        {
                [DllImport ("iphlpapi.dll", SetLastError = true)]
@@ -830,5 +872,6 @@ namespace System.Net.NetworkInformation {
                        get { return !addr.NoMulticast; }
                }
        }
+#endif
 }
 
index 157b888871d4ff1b4b5f90e456bef5d7da26b217..f18b70c0f9ad0babef214d3c27daf9627aebc156 100644 (file)
@@ -6,6 +6,7 @@
 //     Atsushi Enomoto (atsushi@ximian.com)
 //
 // Copyright (c) 2006-2007 Novell, Inc. (http://www.novell.com)
+// Copyright 2015 Xamarin Inc.
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,6 +27,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+
 using System;
 using System.IO;
 using System.Text;
@@ -43,6 +45,7 @@ namespace System.Net.NetworkInformation {
        [MonoTODO ("IPv6 support is missing")]
        public class Ping : Component, IDisposable
        {
+#if !MONOTOUCH
                [StructLayout(LayoutKind.Sequential)]
                struct cap_user_header_t
                {
@@ -68,6 +71,7 @@ namespace System.Net.NetworkInformation {
 #endif
                };
                static readonly string PingBinPath;
+#endif
                const int default_timeout = 4000; // 4 sec.
                ushort identifier;
 
@@ -84,7 +88,8 @@ namespace System.Net.NetworkInformation {
                CancellationTokenSource cts;
                
                public event PingCompletedEventHandler PingCompleted;
-               
+
+#if !MONOTOUCH
                static Ping ()
                {
                        if (Environment.OSVersion.Platform == PlatformID.Unix) {
@@ -106,6 +111,7 @@ namespace System.Net.NetworkInformation {
                        if (PingBinPath == null)
                                PingBinPath = "/bin/ping"; // default, fallback value
                }
+#endif
                
                public Ping ()
                {
@@ -115,7 +121,8 @@ namespace System.Net.NetworkInformation {
                        rng.GetBytes (randomIdentifier);
                        identifier = (ushort)(randomIdentifier [0] + (randomIdentifier [1] << 8));
                }
-  
+
+#if !MONOTOUCH
                [DllImport ("libc", EntryPoint="capget")]
                static extern int capget (ref cap_user_header_t header, ref cap_user_data_t data);
 
@@ -142,6 +149,7 @@ namespace System.Net.NetworkInformation {
                                canSendPrivileged = false;
                        }
                }
+#endif
                
                void IDisposable.Dispose ()
                {
@@ -215,11 +223,16 @@ namespace System.Net.NetworkInformation {
                                throw new ArgumentException ("buffer");
                        // options can be null.
 
+#if MONOTOUCH
+                       throw new InvalidOperationException ();
+#else
                        if (canSendPrivileged)
                                return SendPrivileged (address, timeout, buffer, options);
                        return SendUnprivileged (address, timeout, buffer, options);
+#endif
                }
 
+#if !MONOTOUCH
                private PingReply SendPrivileged (IPAddress address, int timeout, byte [] buffer, PingOptions options)
                {
                        IPEndPoint target = new IPEndPoint (address, 0);
@@ -286,6 +299,7 @@ namespace System.Net.NetworkInformation {
 
                private PingReply SendUnprivileged (IPAddress address, int timeout, byte [] buffer, PingOptions options)
                {
+#if MONO_FEATURE_PROCESS_START
                        DateTime sentTime = DateTime.UtcNow;
 
                        Process ping = new Process ();
@@ -325,7 +339,11 @@ namespace System.Net.NetworkInformation {
                        }
 
                        return new PingReply (address, buffer, options, trip_time, status);
+#else
+                       throw new PlatformNotSupportedException ("Ping is not supported on this platform.");
+#endif // MONO_FEATURE_PROCESS_START
                }
+#endif // !MONOTOUCH
 
                // Async
 
@@ -401,6 +419,7 @@ namespace System.Net.NetworkInformation {
                        worker.CancelAsync ();
                }
 
+#if !MONOTOUCH
                // ICMP message
 
                class IcmpMessage
@@ -534,6 +553,7 @@ namespace System.Net.NetworkInformation {
 
                        return args.ToString ();
                }
+#endif // !MONOTOUCH
 
                public Task<PingReply> SendPingAsync (IPAddress address, int timeout, byte [] buffer)
                {
@@ -592,4 +612,3 @@ namespace System.Net.NetworkInformation {
                }
        }
 }
-
index a7b46e35d6b3701a7f00af123bbc6aba70d2818d..9f8c88a2eb3f8fd0fd2024a0e0c8fb3745e86046 100644 (file)
@@ -109,6 +109,7 @@ namespace System.Net.NetworkInformation {
                }
        }
 
+#if !MOBILE
        class Win32TcpStatistics : TcpStatistics
        {
                Win32_MIB_TCPSTATS info;
@@ -193,6 +194,6 @@ namespace System.Net.NetworkInformation {
                public uint OutRsts;
                public uint NumConns;
        }
-
+#endif
 }
 
index 6126b93d79908833e023602d7b6de3cb0916f5a1..2c9d6962912f899d777f1fc66e6e886630a5c604 100644 (file)
@@ -73,6 +73,7 @@ namespace System.Net.NetworkInformation {
                }
        }
 
+#if !MOBILE
        class Win32UdpStatistics : UdpStatistics
        {
                Win32_MIB_UDPSTATS info;
@@ -111,5 +112,6 @@ namespace System.Net.NetworkInformation {
                public uint OutDatagrams;
                public int NumAddrs;
        }
+#endif
 }
 
index e8c254a2a378e1ce0d9b33a1637cda3ff8d2764a..a7510f033e9bca3608bcf551146d2381f44f10a2 100644 (file)
@@ -32,6 +32,7 @@ using System.Runtime.InteropServices;
 using System.Net.Sockets;
 
 namespace System.Net.NetworkInformation {
+#if !MOBILE
        class Win32UnicastIPAddressInformation : UnicastIPAddressInformation 
        {
                int if_index;
@@ -105,6 +106,7 @@ namespace System.Net.NetworkInformation {
                        get { return info.SuffixOrigin; }
                }
        }
+#endif
 
        class LinuxUnicastIPAddressInformation : UnicastIPAddressInformation
        {
index 3905225f9349b93402b796819fc9de7f3444e5d6..b83959a3faf73ced0c16b365355dc387f135bc35 100644 (file)
@@ -111,6 +111,7 @@ namespace System.Net.NetworkInformation {
                        get { return is_readonly; }
                }
 
+#if !MOBILE
                public static UnicastIPAddressInformationCollection Win32FromUnicast (int ifIndex, IntPtr ptr)
                {
                        UnicastIPAddressInformationImplCollection c = new UnicastIPAddressInformationImplCollection (false);
@@ -122,6 +123,7 @@ namespace System.Net.NetworkInformation {
                        c.is_readonly = true;
                        return c;
                }
+#endif
 
                public static UnicastIPAddressInformationCollection LinuxFromList (List<IPAddress> addresses)
                {
diff --git a/mcs/class/System/System.Net.Security/AuthenticatedStream.cs b/mcs/class/System/System.Net.Security/AuthenticatedStream.cs
deleted file mode 100644 (file)
index 6e0481d..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// System.Net.Security.AuthenticatedStream.cs
-//
-// Authors:
-//     Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2004
-// (c) 2004 Novell, Inc. (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.IO;
-
-namespace System.Net.Security 
-{
-       public abstract class AuthenticatedStream : Stream
-       {
-               #region Fields
-
-               Stream innerStream;
-               bool leaveStreamOpen;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               protected AuthenticatedStream (Stream innerStream, bool leaveInnerStreamOpen)
-               {
-                       this.innerStream = innerStream;
-                       this.leaveStreamOpen = leaveInnerStreamOpen;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               protected Stream InnerStream { 
-                       get { return innerStream; }
-               }
-
-               public abstract bool IsAuthenticated { get; }
-               public abstract bool IsEncrypted { get; }
-               public abstract bool IsMutuallyAuthenticated { get; }
-               public abstract bool IsServer { get; }
-               public abstract bool IsSigned { get; }
-
-               public bool LeaveInnerStreamOpen {
-                       get {
-                               return leaveStreamOpen;
-                       }
-               }
-               
-               #endregion // Properties
-
-               #region Methods
-
-               protected override void Dispose (bool disposing)
-               {
-                       if (disposing && innerStream != null){
-                               if (!leaveStreamOpen)
-                                       innerStream.Close ();
-                               innerStream = null;
-                       }
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System/System.Net.Security/AuthenticationLevel.cs b/mcs/class/System/System.Net.Security/AuthenticationLevel.cs
deleted file mode 100644 (file)
index 39c7718..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// System.Net.Security.AuthenticationLevel.cs
-//
-// Authors:
-//     Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2004
-// (c) 2004 Novell, Inc. (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Net.Security 
-{
-       public enum AuthenticationLevel 
-       {
-               None,
-               MutualAuthRequested,
-               MutualAuthRequired,
-       }
-}
-
index 66236ad28c65addefe5af8882295adb21f2d6546..4db75cc9655e08b634c79f8270ccd4b2d04d527a 100644 (file)
@@ -25,7 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
+#if SECURITY_DEP && !MONO_FEATURE_NEW_TLS
 namespace System.Net.Security
 {
        public enum EncryptionPolicy
@@ -35,3 +35,4 @@ namespace System.Net.Security
                NoEncryption
        }
 }
+#endif
index 53c829076ebe2c3af1ec7b3532b59b46a1ad8dc3..5d0d9b75471a55d28cf32dbf9157559087bae2c9 100644 (file)
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-#if SECURITY_DEP
-
-#if !MONOTOUCH && !MONODROID
+#if SECURITY_DEP && !MONO_FEATURE_NEW_TLS
+#if MONO_X509_ALIAS
 extern alias PrebuiltSystem;
 using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
 #endif
diff --git a/mcs/class/System/System.Net.Security/ProtectionLevel.cs b/mcs/class/System/System.Net.Security/ProtectionLevel.cs
deleted file mode 100644 (file)
index 8483567..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Net.Security.ProtectionLevel.cs
-//
-// Authors:
-//     Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2004
-// (c) 2004 Novell, Inc. (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Net.Security 
-{
-       public enum ProtectionLevel 
-       {
-               None,
-               Sign,
-               EncryptAndSign,
-       }
-}
-
index 10ad8371d207eb8ea16bee024fdbb7517338fdd8..652c91e143fc6d4e18463b192fcfae99c4f9d07b 100644 (file)
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MONO_FEATURE_NEW_TLS
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
 
 using System.Security.Cryptography.X509Certificates;
 
@@ -39,4 +44,4 @@ namespace System.Net.Security
                X509Chain chain,
                SslPolicyErrors sslPolicyErrors);
 }
-
+#endif
index aa0fbd39990a30f0580e1c608c14439d5c3706ff..5a88d88e8bfdaea77a4023501075882b706e0e50 100644 (file)
@@ -25,7 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
+#if !MONO_FEATURE_NEW_TLS
 namespace System.Net.Security 
 {
        [Flags]
@@ -37,3 +37,4 @@ namespace System.Net.Security
                RemoteCertificateChainErrors = 4,
        }
 }
+#endif
index aa075912da212aec92a40908fa65b88aa1c087ce..53e6d2918577369637da3f522ced844a316bb82a 100644 (file)
 //
-// System.Net.Security.SslStream.cs
+// SslStream.cs
 //
-// Authors:
-//     Tim Coleman (tim@timcoleman.com)
-//     Atsushi Enomoto (atsushi@ximian.com)
-//     Marek Safar (marek.safar@gmail.com)
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
 //
-// Copyright (C) Tim Coleman, 2004
-// (c) 2004,2007 Novell, Inc. (http://www.novell.com)
-// Copyright 2011 Xamarin Inc.
+// Copyright (c) 2015 Xamarin, Inc.
 //
-
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
 //
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
 //
-
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if !MONO_FEATURE_NEW_TLS
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security.Protocol.Tls;
-
-using CipherAlgorithmType = System.Security.Authentication.CipherAlgorithmType;
-using HashAlgorithmType = System.Security.Authentication.HashAlgorithmType;
-using ExchangeAlgorithmType = System.Security.Authentication.ExchangeAlgorithmType;
-
-using MonoCipherAlgorithmType = Mono.Security.Protocol.Tls.CipherAlgorithmType;
-using MonoHashAlgorithmType = Mono.Security.Protocol.Tls.HashAlgorithmType;
-using MonoExchangeAlgorithmType = Mono.Security.Protocol.Tls.ExchangeAlgorithmType;
-using MonoSecurityProtocolType = Mono.Security.Protocol.Tls.SecurityProtocolType;
-#else
+#if MONO_X509_ALIAS
 extern alias PrebuiltSystem;
+#endif
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
+#endif
 
-using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#if MONO_SECURITY_ALIAS
+using MonoSecurity::Mono.Security.Interface;
+#else
+using Mono.Security.Interface;
+#endif
+#if MONO_X509_ALIAS
+using XSslProtocols = PrebuiltSystem::System.Security.Authentication.SslProtocols;
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#else
+using XSslProtocols = System.Security.Authentication.SslProtocols;
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
 
 using CipherAlgorithmType = System.Security.Authentication.CipherAlgorithmType;
 using HashAlgorithmType = System.Security.Authentication.HashAlgorithmType;
 using ExchangeAlgorithmType = System.Security.Authentication.ExchangeAlgorithmType;
 
-using MonoCipherAlgorithmType = MonoSecurity::Mono.Security.Protocol.Tls.CipherAlgorithmType;
-using MonoHashAlgorithmType = MonoSecurity::Mono.Security.Protocol.Tls.HashAlgorithmType;
-using MonoExchangeAlgorithmType = MonoSecurity::Mono.Security.Protocol.Tls.ExchangeAlgorithmType;
-using MonoSecurityProtocolType = MonoSecurity::Mono.Security.Protocol.Tls.SecurityProtocolType;
-
-using MonoSecurity::Mono.Security.Protocol.Tls;
-#endif
-
 using System;
 using System.IO;
 using System.Net;
+using System.Net.Security;
 using System.Security.Authentication;
 using System.Security.Cryptography.X509Certificates;
+using System.Security.Permissions;
 using System.Security.Principal;
 using System.Security.Cryptography;
 
 using System.Threading.Tasks;
 
-namespace System.Net.Security 
+using MNS = Mono.Net.Security;
+
+namespace System.Net.Security
 {
-       [MonoTODO ("Non-X509Certificate2 certificate is not supported")]
-       public class SslStream : AuthenticatedStream
+       /*
+        * These two are defined by the referencesource; add them heere to make
+        * it easy to switch between the two implementations.
+        */
+
+       internal delegate bool RemoteCertValidationCallback (
+               string host,
+               X509Certificate certificate,
+               X509Chain chain,
+               SslPolicyErrors sslPolicyErrors);
+
+       internal delegate X509Certificate LocalCertSelectionCallback (
+               string targetHost,
+               XX509CertificateCollection localCertificates,
+               X509Certificate remoteCertificate,
+               string[] acceptableIssuers);
+
+       public class SslStream : AuthenticatedStream, MNS.IMonoSslStream
        {
-               #region Fields
+               MonoTlsProvider provider;
+               IMonoSslStream impl;
 
-               SslStreamBase ssl_stream;
-               RemoteCertificateValidationCallback validation_callback;
-               LocalCertificateSelectionCallback selection_callback;
+               internal IMonoSslStream Impl {
+                       get {
+                               CheckDisposed ();
+                               return impl;
+                       }
+               }
 
-               #endregion // Fields
+               internal MonoTlsProvider Provider {
+                       get {
+                               CheckDisposed ();
+                               return provider;
+                       }
+               }
 
-               #region Constructors
+               static MonoTlsProvider GetProvider ()
+               {
+                       return MonoTlsProviderFactory.GetDefaultProvider ();
+               }
 
                public SslStream (Stream innerStream)
                        : this (innerStream, false)
@@ -96,537 +116,303 @@ namespace System.Net.Security
                public SslStream (Stream innerStream, bool leaveInnerStreamOpen)
                        : base (innerStream, leaveInnerStreamOpen)
                {
+                       provider = GetProvider ();
+                       impl = provider.CreateSslStream (innerStream, leaveInnerStreamOpen);
                }
 
-               [MonoTODO ("userCertificateValidationCallback is not passed X509Chain and SslPolicyErrors correctly")]
                public SslStream (Stream innerStream, bool leaveInnerStreamOpen, RemoteCertificateValidationCallback userCertificateValidationCallback)
                        : this (innerStream, leaveInnerStreamOpen, userCertificateValidationCallback, null)
                {
                }
 
-               [MonoTODO ("userCertificateValidationCallback is not passed X509Chain and SslPolicyErrors correctly")]
                public SslStream (Stream innerStream, bool leaveInnerStreamOpen, RemoteCertificateValidationCallback userCertificateValidationCallback, LocalCertificateSelectionCallback userCertificateSelectionCallback)
                        : base (innerStream, leaveInnerStreamOpen)
                {
-                       // they are nullable.
-                       validation_callback = userCertificateValidationCallback;
-                       selection_callback = userCertificateSelectionCallback;
-               }
-               #endregion // Constructors
-
-               #region Properties
-
-               public override bool CanRead {
-                       get { return InnerStream.CanRead; }
+                       provider = GetProvider ();
+                       var settings = MonoTlsSettings.CopyDefaultSettings ();
+                       settings.RemoteCertificateValidationCallback = MNS.Private.CallbackHelpers.PublicToMono (userCertificateValidationCallback);
+                       settings.ClientCertificateSelectionCallback = MNS.Private.CallbackHelpers.PublicToMono (userCertificateSelectionCallback);
+                       impl = provider.CreateSslStream (innerStream, leaveInnerStreamOpen, settings);
                }
 
-               public override bool CanSeek {
-                       get { return InnerStream.CanSeek; }
-               }
-
-               public override bool CanTimeout {
-                       get { return InnerStream.CanTimeout; }
+               internal SslStream (Stream innerStream, bool leaveInnerStreamOpen, IMonoSslStream impl)
+                       : base (innerStream, leaveInnerStreamOpen)
+               {
+                       this.impl = impl;
                }
 
-               public override bool CanWrite {
-                       get { return InnerStream.CanWrite; }
+               public virtual void AuthenticateAsClient (string targetHost)
+               {
+                       Impl.AuthenticateAsClient (targetHost);
                }
 
-               public override long Length {
-                       get { return InnerStream.Length; }
+               public virtual void AuthenticateAsClient (string targetHost, XX509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       Impl.AuthenticateAsClient (targetHost, (XX509CertificateCollection)(object)clientCertificates, (XSslProtocols)enabledSslProtocols, checkCertificateRevocation);
                }
 
-               public override long Position {
-                       get { return InnerStream.Position; }
-                       set {
-                               throw new NotSupportedException ("This stream does not support seek operations");
-                       }
+               // [HostProtection (ExternalThreading=true)]
+               public virtual IAsyncResult BeginAuthenticateAsClient (string targetHost, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsClient (targetHost, asyncCallback, asyncState);
                }
 
-               // AuthenticatedStream overrides
-
-               public override bool IsAuthenticated { 
-                       get { return ssl_stream != null; }
+               // [HostProtection (ExternalThreading=true)]
+               public virtual IAsyncResult BeginAuthenticateAsClient (string targetHost, XX509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsClient (targetHost, (XX509CertificateCollection)(object)clientCertificates, (XSslProtocols)enabledSslProtocols, checkCertificateRevocation, asyncCallback, asyncState);
                }
 
-               public override bool IsEncrypted { 
-                       get { return IsAuthenticated; }
+               public virtual void EndAuthenticateAsClient (IAsyncResult asyncResult)
+               {
+                       Impl.EndAuthenticateAsClient (asyncResult);
                }
 
-               public override bool IsMutuallyAuthenticated { 
-                       get { return IsAuthenticated && (IsServer ? RemoteCertificate != null : LocalCertificate != null); }
+               public virtual void AuthenticateAsServer (X509Certificate serverCertificate)
+               {
+                       Impl.AuthenticateAsServer (serverCertificate);
                }
 
-               public override bool IsServer { 
-                       get { return ssl_stream is SslServerStream; }
+               public virtual void AuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       Impl.AuthenticateAsServer (serverCertificate, clientCertificateRequired, (XSslProtocols)enabledSslProtocols, checkCertificateRevocation);
                }
 
-               public override bool IsSigned { 
-                       get { return IsAuthenticated; }
+               // [HostProtection (ExternalThreading=true)]
+               public virtual IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsServer (serverCertificate, asyncCallback, asyncState);
                }
 
-               public override int ReadTimeout {
-                       get { return InnerStream.ReadTimeout; }
-                       set { InnerStream.ReadTimeout = value; }
+               public virtual IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
+               {
+                       return Impl.BeginAuthenticateAsServer (serverCertificate, clientCertificateRequired, (XSslProtocols)enabledSslProtocols, checkCertificateRevocation, asyncCallback, asyncState);
                }
 
-               public override int WriteTimeout {
-                       get { return InnerStream.WriteTimeout; }
-                       set { InnerStream.WriteTimeout = value; }
+               public virtual void EndAuthenticateAsServer (IAsyncResult asyncResult)
+               {
+                       Impl.EndAuthenticateAsServer (asyncResult);
                }
 
-               // SslStream
-
-               public virtual bool CheckCertRevocationStatus {
+               public TransportContext TransportContext {
                        get {
-                               if (!IsAuthenticated)
-                                       return false;
-
-                               return ssl_stream.CheckCertRevocationStatus;
+                               throw new NotSupportedException();
                        }
                }
 
-               public virtual CipherAlgorithmType CipherAlgorithm  {
-                       get {
-                               CheckConnectionAuthenticated ();
-
-                               switch (ssl_stream.CipherAlgorithm) {
-                               case MonoCipherAlgorithmType.Des:
-                                       return CipherAlgorithmType.Des;
-                               case MonoCipherAlgorithmType.None:
-                                       return CipherAlgorithmType.None;
-                               case MonoCipherAlgorithmType.Rc2:
-                                       return CipherAlgorithmType.Rc2;
-                               case MonoCipherAlgorithmType.Rc4:
-                                       return CipherAlgorithmType.Rc4;
-                               case MonoCipherAlgorithmType.SkipJack:
-                                       break;
-                               case MonoCipherAlgorithmType.TripleDes:
-                                       return CipherAlgorithmType.TripleDes;
-                               case MonoCipherAlgorithmType.Rijndael:
-                                       switch (ssl_stream.CipherStrength) {
-                                       case 128:
-                                               return CipherAlgorithmType.Aes128;
-                                       case 192:
-                                               return CipherAlgorithmType.Aes192;
-                                       case 256:
-                                               return CipherAlgorithmType.Aes256;
-                                       }
-                                       break;
-                               }
+               // [HostProtection (ExternalThreading=true)]
+               public virtual Task AuthenticateAsClientAsync (string targetHost)
+               {
+                       return Impl.AuthenticateAsClientAsync (targetHost);
+               }
 
-                               throw new InvalidOperationException ("Not supported cipher algorithm is in use. It is likely a bug in SslStream.");
-                       }
+               public virtual Task AuthenticateAsClientAsync (string targetHost, XX509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       return Impl.AuthenticateAsClientAsync (targetHost, clientCertificates, (XSslProtocols)enabledSslProtocols, checkCertificateRevocation);
                }
 
-               public virtual int CipherStrength  {
-                       get {
-                               CheckConnectionAuthenticated ();
+               public virtual Task AuthenticateAsServerAsync (X509Certificate serverCertificate)
+               {
+                       return Impl.AuthenticateAsServerAsync (serverCertificate);
+               }
 
-                               return ssl_stream.CipherStrength;
-                       }
+               public virtual Task AuthenticateAsServerAsync (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               {
+                       return Impl.AuthenticateAsServerAsync (serverCertificate, clientCertificateRequired, (XSslProtocols)enabledSslProtocols, checkCertificateRevocation);
                }
 
-               public virtual HashAlgorithmType HashAlgorithm  {
-                       get {
-                               CheckConnectionAuthenticated ();
-
-                               switch (ssl_stream.HashAlgorithm) {
-                               case MonoHashAlgorithmType.Md5:
-                                       return HashAlgorithmType.Md5;
-                               case MonoHashAlgorithmType.None:
-                                       return HashAlgorithmType.None;
-                               case MonoHashAlgorithmType.Sha1:
-                                       return HashAlgorithmType.Sha1;
-                               }
+               public override bool IsAuthenticated {
+                       get { return Impl.IsAuthenticated; }
+               }
 
-                               throw new InvalidOperationException ("Not supported hash algorithm is in use. It is likely a bug in SslStream.");
-                       }
+               public override bool IsMutuallyAuthenticated {
+                       get { return Impl.IsMutuallyAuthenticated; }
                }
 
-               public virtual int HashStrength  {
-                       get {
-                               CheckConnectionAuthenticated ();
+               public override bool IsEncrypted {
+                       get { return Impl.IsEncrypted; }
+               }
 
-                               return ssl_stream.HashStrength;
-                       }
+               public override bool IsSigned {
+                       get { return Impl.IsSigned; }
                }
 
-               public virtual ExchangeAlgorithmType KeyExchangeAlgorithm { 
-                       get {
-                               CheckConnectionAuthenticated ();
-
-                               switch (ssl_stream.KeyExchangeAlgorithm) {
-                               case MonoExchangeAlgorithmType.DiffieHellman:
-                                       return ExchangeAlgorithmType.DiffieHellman;
-                               case MonoExchangeAlgorithmType.Fortezza:
-                                       break;
-                               case MonoExchangeAlgorithmType.None:
-                                       return ExchangeAlgorithmType.None;
-                               case MonoExchangeAlgorithmType.RsaKeyX:
-                                       return ExchangeAlgorithmType.RsaKeyX;
-                               case MonoExchangeAlgorithmType.RsaSign:
-                                       return ExchangeAlgorithmType.RsaSign;
-                               }
+               public override bool IsServer {
+                       get { return Impl.IsServer; }
+               }
 
-                               throw new InvalidOperationException ("Not supported exchange algorithm is in use. It is likely a bug in SslStream.");
-                       }
+               public virtual SslProtocols SslProtocol {
+                       get { return (SslProtocols)Impl.SslProtocol; }
                }
 
-               public virtual int KeyExchangeStrength { 
-                       get {
-                               CheckConnectionAuthenticated ();
+               public virtual bool CheckCertRevocationStatus {
+                       get { return Impl.CheckCertRevocationStatus; }
+               }
 
-                               return ssl_stream.KeyExchangeStrength;
-                       }
+               X509Certificate MNS.IMonoSslStream.InternalLocalCertificate {
+                       get { return Impl.InternalLocalCertificate; }
                }
 
                public virtual X509Certificate LocalCertificate {
-                       get {
-                               CheckConnectionAuthenticated ();
-
-                               return IsServer ? ssl_stream.ServerCertificate : ((SslClientStream) ssl_stream).SelectedClientCertificate;
-                       }
+                       get { return Impl.LocalCertificate; }
                }
 
                public virtual X509Certificate RemoteCertificate {
-                       get {
-                               CheckConnectionAuthenticated ();
-                               return !IsServer ? ssl_stream.ServerCertificate : ((SslServerStream) ssl_stream).ClientCertificate;
-                       }
+                       get { return Impl.RemoteCertificate; }
                }
 
-               public virtual SslProtocols SslProtocol {
-                       get {
-                               CheckConnectionAuthenticated ();
-
-                               switch (ssl_stream.SecurityProtocol) {
-                               case MonoSecurityProtocolType.Default:
-                                       return SslProtocols.Default;
-                               case MonoSecurityProtocolType.Ssl2:
-                                       return SslProtocols.Ssl2;
-                               case MonoSecurityProtocolType.Ssl3:
-                                       return SslProtocols.Ssl3;
-                               case MonoSecurityProtocolType.Tls:
-                                       return SslProtocols.Tls;
-                               }
-
-                               throw new InvalidOperationException ("Not supported SSL/TLS protocol is in use. It is likely a bug in SslStream.");
-                       }
+               public virtual CipherAlgorithmType CipherAlgorithm {
+                       get { return (CipherAlgorithmType)Impl.CipherAlgorithm; }
                }
 
-               #endregion // Properties
-
-               #region Methods
-/*
-               AsymmetricAlgorithm GetPrivateKey (X509Certificate cert, string targetHost)
-               {
-                       // FIXME: what can I do for non-X509Certificate2 ?
-                       X509Certificate2 cert2 = cert as X509Certificate2;
-                       return cert2 != null ? cert2.PrivateKey : null;
-               }
-*/
-               X509Certificate OnCertificateSelection (X509CertificateCollection clientCerts, X509Certificate serverCert, string targetHost, X509CertificateCollection serverRequestedCerts)
-               {
-                       string [] acceptableIssuers = new string [serverRequestedCerts != null ? serverRequestedCerts.Count : 0];
-                       for (int i = 0; i < acceptableIssuers.Length; i++)
-                               acceptableIssuers [i] = serverRequestedCerts [i].GetIssuerName ();
-                       return selection_callback (this, targetHost, clientCerts, serverCert, acceptableIssuers);
+               public virtual int CipherStrength {
+                       get { return Impl.CipherStrength; }
                }
 
-               public virtual IAsyncResult BeginAuthenticateAsClient (string targetHost, AsyncCallback asyncCallback, object asyncState)
-               {
-                       return BeginAuthenticateAsClient (targetHost, new X509CertificateCollection (), SslProtocols.Tls, false, asyncCallback, asyncState);
+               public virtual HashAlgorithmType HashAlgorithm {
+                       get { return (HashAlgorithmType)Impl.HashAlgorithm; }
                }
 
-               public virtual IAsyncResult BeginAuthenticateAsClient (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
-               {
-                       if (IsAuthenticated)
-                               throw new InvalidOperationException ("This SslStream is already authenticated");
-
-                       SslClientStream s = new SslClientStream (InnerStream, targetHost, !LeaveInnerStreamOpen, GetMonoSslProtocol (enabledSslProtocols), clientCertificates);
-                       s.CheckCertRevocationStatus = checkCertificateRevocation;
-
-                       // Due to the Mono.Security internal, it cannot reuse
-                       // the delegated argument, as Mono.Security creates 
-                       // another instance of X509Certificate which lacks 
-                       // private key but is filled the private key via this
-                       // delegate.
-                       s.PrivateKeyCertSelectionDelegate = delegate (X509Certificate cert, string host) {
-                               string hash = cert.GetCertHashString ();
-                               // ... so, we cannot use the delegate argument.
-                               foreach (X509Certificate cc in clientCertificates) {
-                                       if (cc.GetCertHashString () != hash)
-                                               continue;
-                                       X509Certificate2 cert2 = cc as X509Certificate2;
-                                       cert2 = cert2 ?? new X509Certificate2 (cc);
-                                       return cert2.PrivateKey;
-                               }
-                               return null;
-                       };
-
-#if MONOTOUCH || MONODROID
-                       // Even if validation_callback is null this allows us to verify requests where the user
-                       // does not provide a verification callback but attempts to authenticate with the website
-                       // as a client (see https://bugzilla.xamarin.com/show_bug.cgi?id=18962 for an example)
-                       var helper = new ServicePointManager.ChainValidationHelper (this, targetHost);
-                       helper.ServerCertificateValidationCallback = validation_callback;
-                       s.ServerCertValidation2 += new CertificateValidationCallback2 (helper.ValidateChain);
-#else
-                       if (validation_callback != null) {
-                               s.ServerCertValidationDelegate = delegate (X509Certificate cert, int [] certErrors) {
-                                       X509Chain chain = new X509Chain ();
-                                       X509Certificate2 x2 = (cert as X509Certificate2);
-                                       if (x2 == null)
-                                               x2 = new X509Certificate2 (cert);
-
-                                       if (!ServicePointManager.CheckCertificateRevocationList)
-                                               chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
-
-                                       // SSL specific checks (done by Mono.Security.dll SSL/TLS implementation) 
-                                       SslPolicyErrors errors = SslPolicyErrors.None;
-                                       foreach (int i in certErrors) {
-                                               switch (i) {
-                                               case -2146762490: // CERT_E_PURPOSE
-                                                       errors |= SslPolicyErrors.RemoteCertificateNotAvailable;
-                                                       break;
-                                               case -2146762481: // CERT_E_CN_NO_MATCH
-                                                       errors |= SslPolicyErrors.RemoteCertificateNameMismatch;
-                                                       break;
-                                               default:
-                                                       errors |= SslPolicyErrors.RemoteCertificateChainErrors;
-                                                       break;
-                                               }
-                                       }
-
-                                       chain.Build (x2);
-
-                                       // non-SSL specific X509 checks (i.e. RFC3280 related checks)
-                                       foreach (X509ChainStatus status in chain.ChainStatus) {
-                                               if (status.Status == X509ChainStatusFlags.NoError)
-                                                       continue;
-                                               if ((status.Status & X509ChainStatusFlags.PartialChain) != 0)
-                                                       errors |= SslPolicyErrors.RemoteCertificateNotAvailable;
-                                               else
-                                                       errors |= SslPolicyErrors.RemoteCertificateChainErrors;
-                                       }
-
-                                       return validation_callback (this, cert, chain, errors);
-                               };
-                       }
-#endif
-                       if (selection_callback != null)
-                               s.ClientCertSelectionDelegate = OnCertificateSelection;
-
-                       ssl_stream = s;
-
-                       return BeginWrite (new byte [0], 0, 0, asyncCallback, asyncState);
+               public virtual int HashStrength {
+                       get { return Impl.HashStrength; }
                }
 
-               public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
-               {
-                       CheckConnectionAuthenticated ();
-
-                       return ssl_stream.BeginRead (buffer, offset, count, asyncCallback, asyncState);
+               public virtual ExchangeAlgorithmType KeyExchangeAlgorithm {
+                       get { return (ExchangeAlgorithmType)Impl.KeyExchangeAlgorithm; }
                }
 
-               public virtual IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, AsyncCallback asyncCallback, object asyncState)
-               {
-                       return BeginAuthenticateAsServer (serverCertificate, false, SslProtocols.Tls, false, asyncCallback, asyncState);
+               public virtual int KeyExchangeStrength {
+                       get { return Impl.KeyExchangeStrength; }
                }
 
-               public virtual IAsyncResult BeginAuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation, AsyncCallback asyncCallback, object asyncState)
-               {
-                       if (IsAuthenticated)
-                               throw new InvalidOperationException ("This SslStream is already authenticated");
-
-                       SslServerStream s = new SslServerStream (InnerStream, serverCertificate, clientCertificateRequired, !LeaveInnerStreamOpen, GetMonoSslProtocol (enabledSslProtocols));
-                       s.CheckCertRevocationStatus = checkCertificateRevocation;
-                       // Due to the Mono.Security internal, it cannot reuse
-                       // the delegated argument, as Mono.Security creates 
-                       // another instance of X509Certificate which lacks 
-                       // private key but is filled the private key via this
-                       // delegate.
-                       s.PrivateKeyCertSelectionDelegate = delegate (X509Certificate cert, string targetHost) {
-                               // ... so, we cannot use the delegate argument.
-                               X509Certificate2 cert2 = serverCertificate as X509Certificate2 ?? new X509Certificate2 (serverCertificate);
-                               return cert2 != null ? cert2.PrivateKey : null;
-                       };
-
-                       if (validation_callback != null)
-                               s.ClientCertValidationDelegate = delegate (X509Certificate cert, int [] certErrors) {
-                                       X509Chain chain = null;
-                                       if (cert is X509Certificate2) {
-                                               chain = new X509Chain ();
-                                               chain.Build ((X509Certificate2) cert);
-                                       }
-                                       // FIXME: SslPolicyErrors is incomplete
-                                       SslPolicyErrors errors = certErrors.Length > 0 ? SslPolicyErrors.RemoteCertificateChainErrors : SslPolicyErrors.None;
-                                       return validation_callback (this, cert, chain, errors);
-                               };
-
-                       ssl_stream = s;
-
-                       return BeginWrite (new byte[0], 0, 0, asyncCallback, asyncState);
-               }
-
-               MonoSecurityProtocolType GetMonoSslProtocol (SslProtocols ms)
-               {
-                       switch (ms) {
-                       case SslProtocols.Ssl2:
-                               return MonoSecurityProtocolType.Ssl2;
-                       case SslProtocols.Ssl3:
-                               return MonoSecurityProtocolType.Ssl3;
-                       case SslProtocols.Tls:
-                               return MonoSecurityProtocolType.Tls;
-                       default:
-                               return MonoSecurityProtocolType.Default;
-                       }
+               public override bool CanSeek {
+                       get { return false; }
                }
 
-               public override IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
-               {
-                       CheckConnectionAuthenticated ();
+               public override bool CanRead {
+                       get { return Impl.CanRead; }
+               }
 
-                       return ssl_stream.BeginWrite (buffer, offset, count, asyncCallback, asyncState);
+               public override bool CanTimeout {
+                       get { return Impl.CanTimeout; }
                }
 
-               public virtual void AuthenticateAsClient (string targetHost)
-               {
-                       AuthenticateAsClient (targetHost, new X509CertificateCollection (), SslProtocols.Tls, false);
+               public override bool CanWrite {
+                       get { return Impl.CanWrite; }
                }
 
-               public virtual void AuthenticateAsClient (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
-               {
-                       EndAuthenticateAsClient (BeginAuthenticateAsClient (
-                               targetHost, clientCertificates, enabledSslProtocols, checkCertificateRevocation, null, null));
+               public override int ReadTimeout {
+                       get { return Impl.ReadTimeout; }
+                       set { Impl.ReadTimeout = value; }
                }
 
-               public virtual void AuthenticateAsServer (X509Certificate serverCertificate)
-               {
-                       AuthenticateAsServer (serverCertificate, false, SslProtocols.Tls, false);
+               public override int WriteTimeout {
+                       get { return Impl.WriteTimeout; }
+                       set { Impl.WriteTimeout = value; }
                }
 
-               public virtual void AuthenticateAsServer (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
-               {
-                       EndAuthenticateAsServer (BeginAuthenticateAsServer (
-                               serverCertificate, clientCertificateRequired, enabledSslProtocols, checkCertificateRevocation, null, null));
+               public override long Length {
+                       get { return Impl.Length; }
                }
 
-               protected override void Dispose (bool disposing)
-               {
-                       if (disposing) {
-                               if (ssl_stream != null)
-                                       ssl_stream.Dispose ();
-                               ssl_stream = null;
+               public override long Position {
+                       get { return Impl.Position; }
+                       set {
+                               throw new NotSupportedException (SR.GetString (SR.net_noseek));
                        }
-                       base.Dispose (disposing);
                }
 
-               public virtual void EndAuthenticateAsClient (IAsyncResult asyncResult)
+               public override void SetLength (long value)
                {
-                       CheckConnectionAuthenticated ();
-
-                       if (CanRead)
-                               ssl_stream.EndRead (asyncResult);
-                       else
-                               ssl_stream.EndWrite (asyncResult);
+                       Impl.SetLength (value);
                }
 
-               public virtual void EndAuthenticateAsServer (IAsyncResult asyncResult)
+               public override long Seek (long offset, SeekOrigin origin)
                {
-                       CheckConnectionAuthenticated ();
-
-                       if (CanRead)
-                               ssl_stream.EndRead (asyncResult);
-                       else
-                               ssl_stream.EndWrite (asyncResult);
+                       throw new NotSupportedException (SR.GetString (SR.net_noseek));
                }
 
-               public override int EndRead (IAsyncResult asyncResult)
+               public override void Flush ()
                {
-                       CheckConnectionAuthenticated ();
-
-                       return ssl_stream.EndRead (asyncResult);
+                       Impl.Flush ();
                }
 
-               public override void EndWrite (IAsyncResult asyncResult)
+               void CheckDisposed ()
                {
-                       CheckConnectionAuthenticated ();
-
-                       ssl_stream.EndWrite (asyncResult);
+                       if (impl == null)
+                               throw new ObjectDisposedException ("SslStream");
                }
 
-               public override void Flush ()
+               protected override void Dispose (bool disposing)
                {
-                       CheckConnectionAuthenticated ();
-
-                       InnerStream.Flush ();
+                       try {
+                               if (impl != null && disposing) {
+                                       impl.Dispose ();
+                                       impl = null;
+                               }
+                       } finally {
+                               base.Dispose (disposing);
+                       }
                }
 
                public override int Read (byte[] buffer, int offset, int count)
                {
-                       return EndRead (BeginRead (buffer, offset, count, null, null));
+                       return Impl.Read (buffer, offset, count);
                }
 
-               public override long Seek (long offset, SeekOrigin origin)
-               {
-                       throw new NotSupportedException ("This stream does not support seek operations");
-               }
-
-               public override void SetLength (long value)
+               public void Write (byte[] buffer)
                {
-                       InnerStream.SetLength (value);
+                       Impl.Write (buffer);
                }
 
                public override void Write (byte[] buffer, int offset, int count)
                {
-                       EndWrite (BeginWrite (buffer, offset, count, null, null));
+                       Impl.Write (buffer, offset, count);
                }
 
-               public void Write (byte[] buffer)
+               // [HostProtection (ExternalThreading=true)]
+               public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
                {
-                       Write (buffer, 0, buffer.Length);
+                       return Impl.BeginRead (buffer, offset, count, asyncCallback, asyncState);
                }
 
-               void CheckConnectionAuthenticated ()
+               public override int EndRead (IAsyncResult asyncResult)
                {
-                       if (!IsAuthenticated)
-                               throw new InvalidOperationException ("This operation is invalid until it is successfully authenticated");
+                       return Impl.EndRead (asyncResult);
                }
 
-               public virtual Task AuthenticateAsClientAsync (string targetHost)
+               // [HostProtection (ExternalThreading=true)]
+               public override IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState)
                {
-                       return Task.Factory.FromAsync (BeginAuthenticateAsClient, EndAuthenticateAsClient, targetHost, null);
+                       return Impl.BeginWrite (buffer, offset, count, asyncCallback, asyncState);
                }
 
-               public virtual Task AuthenticateAsClientAsync (string targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               public override void EndWrite (IAsyncResult asyncResult)
                {
-                       var t = Tuple.Create (targetHost, clientCertificates, enabledSslProtocols, checkCertificateRevocation, this);
+                       Impl.EndWrite (asyncResult);
+               }
 
-                       return Task.Factory.FromAsync ((callback, state) => {
-                               var d = (Tuple<string, X509CertificateCollection, SslProtocols, bool, SslStream>) state;
-                               return d.Item5.BeginAuthenticateAsClient (d.Item1, d.Item2, d.Item3, d.Item4, callback, null);
-                       }, EndAuthenticateAsClient, t);
+               AuthenticatedStream MNS.IMonoSslStream.AuthenticatedStream {
+                       get { return this; }
                }
 
-               public virtual Task AuthenticateAsServerAsync (X509Certificate serverCertificate)
-               {
-                       return Task.Factory.FromAsync (BeginAuthenticateAsServer, EndAuthenticateAsServer, serverCertificate, null);
+               MonoTlsProvider MNS.IMonoSslStream.Provider {
+                       get { return provider; }
                }
 
-               public virtual Task AuthenticateAsServerAsync (X509Certificate serverCertificate, bool clientCertificateRequired, SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
+               MonoTlsConnectionInfo MNS.IMonoSslStream.GetConnectionInfo ()
                {
-                       var t = Tuple.Create (serverCertificate, clientCertificateRequired, enabledSslProtocols, checkCertificateRevocation, this);
-
-                       return Task.Factory.FromAsync ((callback, state) => {
-                               var d = (Tuple<X509Certificate, bool, SslProtocols, bool, SslStream>) state;
-                               return d.Item5.BeginAuthenticateAsServer (d.Item1, d.Item2, d.Item3, d.Item4, callback, null);
-                       }, EndAuthenticateAsServer, t);
+                       return Impl.GetConnectionInfo ();
                }
-
-               #endregion // Methods
        }
 }
+#else // !SECURITY_DEP
+namespace System.Net.Security
+{
+       public class SslStream
+       {
+       }
+}
+#endif
 
 #endif
diff --git a/mcs/class/System/System.Net.Sockets/AddressFamily.cs b/mcs/class/System/System.Net.Sockets/AddressFamily.cs
deleted file mode 100644 (file)
index 4a71484..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-// AddressFamily.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Wed, 5 Sep 2001 06:31:59 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Net.Sockets {
-
-
-       public enum AddressFamily {
-               Unknown = -1,
-               Unspecified = 0,
-               Unix = 1,
-               InterNetwork = 2,
-               ImpLink = 3,
-               Pup = 4,
-               Chaos = 5,
-               NS = 6,
-               Ipx = 6,
-               Iso = 7,
-               Osi = 7,
-               Ecma = 8,
-               DataKit = 9,
-               Ccitt = 10,
-               Sna = 11,
-               DecNet = 12,
-               DataLink = 13,
-               Lat = 14,
-               HyperChannel = 15,
-               AppleTalk = 16,
-               NetBios = 17,
-               VoiceView = 18,
-               FireFox = 19,
-               Banyan = 21,
-               Atm = 22,
-               InterNetworkV6 = 23,
-               Cluster = 24,
-               Ieee12844 = 25,
-               Irda = 26,
-               NetworkDesigners = 28,
-               Max = 29,
-       }
-}
diff --git a/mcs/class/System/System.Net.Sockets/IOControlCode.cs b/mcs/class/System/System.Net.Sockets/IOControlCode.cs
deleted file mode 100644 (file)
index 26d8cb5..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// System.Net.Sockets.IOControlCode.cs
-//
-// Author:
-//     Dick Porter (dick@ximian.com)
-//
-// (C) Copyright 2006 Novell, Inc (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Net.Sockets
-{
-       public enum IOControlCode: long
-       {
-               AbsorbRouterAlert                       = 0x98000005,
-               AddMulticastGroupOnInterface            = 0x9800000A,
-               AddressListChange                       = 0x28000017,
-               AddressListQuery                        = 0x48000016,
-               AddressListSort                         = 0xC8000019,
-               AssociateHandle                         = 0x88000001,
-               AsyncIO                                 = 0x8004667D,
-               BindToInterface                         = 0x98000008,
-               DataToRead                              = 0x4004667F,
-               DeleteMulticastGroupFromInterface       = 0x9800000B,
-               EnableCircularQueuing                   = 0x28000002,
-               Flush                                   = 0x28000004,
-               GetBroadcastAddress                     = 0x48000005,
-               GetExtensionFunctionPointer             = 0xC8000006,
-               GetGroupQos                             = 0xC8000008,
-               GetQos                                  = 0xC8000007,
-               KeepAliveValues                         = 0x98000004,
-               LimitBroadcasts                         = 0x98000007,
-               MulticastInterface                      = 0x98000009,
-               MulticastScope                          = 0x8800000A,
-               MultipointLoopback                      = 0x88000009,
-               NamespaceChange                         = 0x88000019,
-               NonBlockingIO                           = 0x8004667E,
-               OobDataRead                             = 0x40047307,
-               QueryTargetPnpHandle                    = 0x48000018,
-               ReceiveAll                              = 0x98000001,
-               ReceiveAllIgmpMulticast                 = 0x98000003,
-               ReceiveAllMulticast                     = 0x98000002,
-               RoutingInterfaceChange                  = 0x88000015,
-               RoutingInterfaceQuery                   = 0xC8000014,
-               SetGroupQos                             = 0x8800000C,
-               SetQos                                  = 0x8800000B,
-               TranslateHandle                         = 0xC800000D,
-               UnicastInterface                        = 0x98000006,
-       }
-}
diff --git a/mcs/class/System/System.Net.Sockets/IPPacketInformation.cs b/mcs/class/System/System.Net.Sockets/IPPacketInformation.cs
deleted file mode 100644 (file)
index ba0bf83..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// System.Net.Sockets.IPPacketInformation.cs
-//
-// Author:
-//     Dick Porter (dick@ximian.com)
-//
-// Copyright (C) 2007 Novell, Inc.  http://www.novell.com
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Net;
-
-namespace System.Net.Sockets
-{
-       public struct IPPacketInformation 
-       {
-               IPAddress address;
-               int iface;
-               
-               internal IPPacketInformation (IPAddress address, int iface)
-               {
-                       this.address = address;
-                       this.iface = iface;
-               }
-               
-               public IPAddress Address
-               {
-                       get {
-                               return(address);
-                       }
-               }
-               
-               public int Interface
-               {
-                       get {
-                               return(iface);
-                       }
-               }
-
-               public override bool Equals (object comparand)
-               {
-                       if (!(comparand is IPPacketInformation)) {
-                               return(false);
-                       }
-                       
-                       IPPacketInformation packet = (IPPacketInformation)comparand;
-                       
-                       if (packet.iface != iface) {
-                               return(false);
-                       }
-                       
-                       return(packet.address.Equals (address));
-               }
-               
-               public override int GetHashCode ()
-               {
-                       /* FIXME: see if we can work out the MS algorithm */
-                       return(address.GetHashCode () + iface);
-               }
-               
-               public static bool operator== (IPPacketInformation p1,
-                                              IPPacketInformation p2)
-               {
-                       return(p1.Equals (p2));
-               }
-
-               public static bool operator!= (IPPacketInformation p1,
-                                              IPPacketInformation p2)
-               {
-                       return(!p1.Equals (p2));
-               }
-       }
-}
-
diff --git a/mcs/class/System/System.Net.Sockets/IPv6MulticastOption.cs b/mcs/class/System/System.Net.Sockets/IPv6MulticastOption.cs
deleted file mode 100644 (file)
index 3db9e6c..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// System.Net.Sockets.MulticastOption.cs
-//
-// Author:
-//   Andrew Sutton
-//
-// (C) Andrew Sutton
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Net;
-
-namespace System.Net.Sockets
-{
-       // <remarks>
-       //   Encapsulates a multicast option
-       // </remarks>
-       public class IPv6MulticastOption
-       {
-               // Don't change the names of these fields without also
-               // changing socket-io.c in the runtime
-               private IPAddress group;
-               private long ifIndex;
-
-               public IPv6MulticastOption (IPAddress group)
-                       : this (group, 0)
-               {
-               }
-
-               public IPv6MulticastOption (IPAddress group, long ifindex)
-               {
-                       if (group == null)
-                               throw new ArgumentNullException ("group");
-                       if (ifindex < 0 || ifindex > 0xffffffff)
-                               throw new ArgumentOutOfRangeException ("ifindex");
-
-                       this.group = group;
-                       this.ifIndex = ifindex;
-               }
-
-               public IPAddress Group
-               {
-                       get { return group; }
-                       set {
-                               if (value == null)
-                                       throw new ArgumentNullException ("value");
-                               group = value;
-                       }
-               }
-
-               public long InterfaceIndex
-               {
-                       get { return ifIndex; }
-                       set {
-                               if (value < 0 || value > 0xffffffff)
-                                       throw new ArgumentOutOfRangeException ("value");
-                               ifIndex = value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.Net.Sockets/LingerOption.cs b/mcs/class/System/System.Net.Sockets/LingerOption.cs
deleted file mode 100644 (file)
index 5a805d6..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// System.Net.Sockets.LingerOption.cs
-//
-// Author:
-//   Andrew Sutton
-//
-// (C) Andrew Sutton
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Net.Sockets
-{
-       // <remarks>
-       //   Encapsulates a linger option.
-       // </remarks>
-       public class LingerOption
-       {
-               // Don't change the names of these fields without also
-               // changing socket-io.c in the runtime
-               private bool    enabled;
-               private int     seconds;
-
-               public LingerOption (bool enable, int seconds)
-               {
-                       enabled = enable;
-                       this.seconds = seconds;
-               }
-
-               public bool Enabled
-               {
-                       get { return enabled; }
-                       set { enabled = value; }
-               }
-
-               public int LingerTime
-               {
-                       get { return seconds; }
-                       set { seconds = value; }
-               }
-       }
-}
diff --git a/mcs/class/System/System.Net.Sockets/MulticastOption.cs b/mcs/class/System/System.Net.Sockets/MulticastOption.cs
deleted file mode 100644 (file)
index 129aa51..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// System.Net.Sockets.MulticastOption.cs
-//
-// Author:
-//   Andrew Sutton
-//
-// (C) Andrew Sutton
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Net;
-
-namespace System.Net.Sockets
-{
-       // <remarks>
-       //   Encapsulates a multicast option
-       // </remarks>
-       public class MulticastOption
-       {
-               // Don't change the names of these fields without also
-               // changing socket-io.c in the runtime
-               private IPAddress group;
-               private IPAddress local;
-               int iface_index;
-
-               public MulticastOption (IPAddress group)
-                       : this (group, IPAddress.Any)
-               {
-               }
-
-               public MulticastOption (IPAddress group, int interfaceIndex)
-               {
-                       if (group == null)
-                               throw new ArgumentNullException ("group");
-                       if (interfaceIndex < 0 || interfaceIndex > 0xffffff)
-                               throw new ArgumentOutOfRangeException ("interfaceIndex");
-
-                       this.group = group;
-                       this.iface_index = interfaceIndex;
-               }
-
-               public MulticastOption (IPAddress group, IPAddress mcint)
-               {
-                       if (group == null)
-                               throw new ArgumentNullException ("group");
-                       if (mcint == null)
-                               throw new ArgumentNullException ("mcint");
-
-                       this.group = group;
-                       this.local = mcint;
-               }
-
-               public IPAddress Group {
-                       get { return group; }
-                       set { group = value; }
-               }
-
-               public IPAddress LocalAddress {
-                       get { return local; }
-                       set {
-                               local = value;
-                               iface_index = 0;
-                       }
-               }
-
-               public int InterfaceIndex {
-                       get { return iface_index; }
-                       set {
-                               if (value < 0 || value > 0xffffff)
-                                       throw new ArgumentOutOfRangeException ("value");
-                               iface_index = value;
-                               local = null;
-                       }
-               }
-       }
-}
-
diff --git a/mcs/class/System/System.Net.Sockets/NetworkStream.cs b/mcs/class/System/System.Net.Sockets/NetworkStream.cs
deleted file mode 100644 (file)
index 27f3c54..0000000
+++ /dev/null
@@ -1,430 +0,0 @@
-//
-// System.Net.Sockets.NetworkStream.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Sridhar Kulkarni <sridharkulkarni@gmail.com>
-//
-// (C) 2002 Ximian, Inc. http://www.ximian.com
-// Copyright (C) 2002-2006 Novell, Inc.  http://www.novell.com
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.IO;
-using System.Runtime.InteropServices;
-#if !NET_2_1 || MOBILE
-using System.Timers;
-using System.Threading;
-#endif
-
-namespace System.Net.Sockets
-{
-       public class NetworkStream : Stream, IDisposable {
-               FileAccess access;
-               Socket socket;
-               bool owns_socket;
-               bool readable, writeable;
-               bool disposed = false;
-               
-               public NetworkStream (Socket socket)
-                       : this (socket, FileAccess.ReadWrite, false)
-               {
-               }
-
-               public NetworkStream (Socket socket, bool ownsSocket)
-                       : this (socket, FileAccess.ReadWrite, ownsSocket)
-               {
-               }
-
-               public NetworkStream (Socket socket, FileAccess access)
-                       : this (socket, access, false)
-               {
-               }
-               
-               public NetworkStream (Socket socket, FileAccess access, bool ownsSocket)
-               {
-                       if (socket == null)
-                               throw new ArgumentNullException ("socket is null");
-                       if (socket.SocketType != SocketType.Stream)
-                               throw new ArgumentException ("Socket is not of type Stream", "socket");
-                       if (!socket.Connected)
-                               throw new IOException ("Not connected");
-                       if (!socket.Blocking)
-                               throw new IOException ("Operation not allowed on a non-blocking socket.");
-                       
-                       this.socket = socket;
-                       this.owns_socket = ownsSocket;
-                       this.access = access;
-
-                       readable = CanRead;
-                       writeable = CanWrite;
-               }
-
-               public override bool CanRead {
-                       get {
-                               return access == FileAccess.ReadWrite || access == FileAccess.Read;
-                       }
-               }
-
-               public override bool CanSeek {
-                       get {
-                               // network sockets cant seek.
-                               return false;
-                       }
-               }
-
-               public override bool CanTimeout
-               {
-                       get {
-                               return(true);
-                       }
-               }
-
-               public override bool CanWrite {
-                       get {
-                               return access == FileAccess.ReadWrite || access == FileAccess.Write;
-                       }
-               }
-
-               public virtual bool DataAvailable {
-                       get {
-                               CheckDisposed ();
-                               return socket.Available > 0;
-                       }
-               }
-
-               public override long Length {
-                       get {
-                               // Network sockets always throw an exception
-                               throw new NotSupportedException ();
-                       }
-               }
-
-               public override long Position {
-                       get {
-                               // Network sockets always throw an exception
-                               throw new NotSupportedException ();
-                       }
-                       
-                       set {
-                               // Network sockets always throw an exception
-                               throw new NotSupportedException ();
-                       }
-               }
-
-               protected bool Readable {
-                       get {
-                               return readable;
-                       }
-
-                       set {
-                               readable = value;
-                       }
-               }
-
-#if !NET_2_1 || MOBILE
-               public override int ReadTimeout
-               {
-                       get {
-                               int r = socket.ReceiveTimeout;
-                               return (r <= 0) ? Timeout.Infinite : r;
-                       }
-                       set {
-                               if (value <= 0 && value != Timeout.Infinite) {
-                                       throw new ArgumentOutOfRangeException ("value", "The value specified is less than or equal to zero and is not Infinite.");
-                               }
-                               
-                               socket.ReceiveTimeout = value;
-                       }
-               }
-#endif
-
-               protected Socket Socket {
-                       get {
-                               return socket;
-                       }
-               }
-
-               protected bool Writeable {
-                       get {
-                               return writeable;
-                       }
-
-                       set {
-                               writeable = value;
-                       }
-               }
-
-#if !NET_2_1 || MOBILE
-               public override int WriteTimeout
-               {
-                       get {
-                               int r = socket.SendTimeout;
-                               return (r <= 0) ? Timeout.Infinite : r;
-                       }
-                       set {
-                               if (value <= 0 && value != Timeout.Infinite) {
-                                       throw new ArgumentOutOfRangeException ("value", "The value specified is less than or equal to zero and is not Infinite");
-                               }
-                               
-                               socket.SendTimeout = value;
-                       }
-               }
-#endif
-
-               public override IAsyncResult BeginRead (byte [] buffer, int offset, int size,
-                                                       AsyncCallback callback, object state)
-               {
-                       CheckDisposed ();                               
-                       IAsyncResult retval;
-
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer is null");
-                       int len = buffer.Length;
-                       if(offset<0 || offset>len) {
-                               throw new ArgumentOutOfRangeException("offset exceeds the size of buffer");
-                       }
-                       if(size<0 || offset+size>len) {
-                               throw new ArgumentOutOfRangeException("offset+size exceeds the size of buffer");
-                       }
-
-                       Socket s = socket;
-
-                       if (s == null) {
-                               throw new IOException("Connection closed");
-                       }
-
-                       try {
-                               retval = s.BeginReceive (buffer, offset, size, 0, callback, state);
-                       } catch (Exception e) {
-                               throw new IOException ("BeginReceive failure", e);
-                       }
-
-                       return retval;
-               }
-
-               public override IAsyncResult BeginWrite (byte [] buffer, int offset, int size,
-                                                       AsyncCallback callback, object state)
-               {
-                       CheckDisposed ();
-                       IAsyncResult retval;
-
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer is null");
-
-                       int len = buffer.Length;
-                       if(offset<0 || offset>len) {
-                               throw new ArgumentOutOfRangeException("offset exceeds the size of buffer");
-                       }
-                       if(size<0 || offset+size>len) {
-                               throw new ArgumentOutOfRangeException("offset+size exceeds the size of buffer");
-                       }
-
-                       Socket s = socket;
-
-                       if (s == null) {
-                               throw new IOException("Connection closed");
-                       }
-
-                       try {
-                               retval = s.BeginSend (buffer, offset, size, 0, callback, state);
-                       } catch (Exception e) {
-                               throw new IOException ("BeginWrite failure", e);
-                       }
-
-                       return retval;
-               }
-
-               ~NetworkStream ()
-               {
-                       Dispose (false);
-               }
-               
-
-#if !NET_2_1 || MOBILE
-               public void Close (int timeout)
-               {
-                       if (timeout < -1) {
-                               throw new ArgumentOutOfRangeException ("timeout", "timeout is less than -1");
-                       }
-                       
-                       System.Timers.Timer close_timer = new System.Timers.Timer ();
-                       close_timer.Elapsed += new ElapsedEventHandler (OnTimeoutClose);
-                       /* NB timeout is in milliseconds here, cf
-                        * seconds in Socket.Close(int)
-                        */
-                       close_timer.Interval = timeout;
-                       close_timer.AutoReset = false;
-                       close_timer.Enabled = true;
-               }
-               
-               private void OnTimeoutClose (object source, ElapsedEventArgs e)
-               {
-                       this.Close ();
-               }
-#endif
-
-               protected override void Dispose (bool disposing)
-               {
-                       if (disposed) 
-                               return;
-                       disposed = true;
-                       
-                       if (owns_socket) {
-                               Socket s = socket;
-                               if (s != null)
-                                       s.Close ();
-                       }
-                       socket = null;
-                       access = 0;
-
-                       if (disposing)
-                               GC.SuppressFinalize (this);
-               }
-
-               public override int EndRead (IAsyncResult ar)
-               {
-                       CheckDisposed ();
-                       int res;
-
-                       if (ar == null)
-                               throw new ArgumentNullException ("async result is null");
-
-                       Socket s = socket;
-
-                       if (s == null) {
-                               throw new IOException("Connection closed");
-                       }
-
-                       try {
-                               res = s.EndReceive (ar);
-                       } catch (Exception e) {
-                               throw new IOException ("EndRead failure", e);
-                       }
-                       return res;
-               }
-
-               public override void EndWrite (IAsyncResult ar)
-               {
-                       CheckDisposed ();
-                       if (ar == null)
-                               throw new ArgumentNullException ("async result is null");
-
-                       Socket s = socket;
-
-                       if (s == null) {
-                               throw new IOException("Connection closed");
-                       }
-
-                       try {
-                               s.EndSend (ar);
-                       } catch (Exception e) {
-                               throw new IOException ("EndWrite failure", e);
-                       }
-               }
-
-               public override void Flush ()
-               {
-                       // network streams are non-buffered, this is a no-op
-               }
-
-               public override int Read ([In,Out] byte [] buffer, int offset, int size)
-               {
-                       CheckDisposed ();
-                       int res;
-
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer is null");
-                       if(offset<0 || offset>buffer.Length) {
-                               throw new ArgumentOutOfRangeException("offset exceeds the size of buffer");
-                       }
-                       if(size < 0 || offset+size>buffer.Length) {
-                               throw new ArgumentOutOfRangeException("offset+size exceeds the size of buffer");
-                       }
-
-                       Socket s = socket;
-
-                       if (s == null) {
-                               throw new IOException("Connection closed");
-                       }
-
-                       try {
-                               res = s.Receive (buffer, offset, size, 0);
-                       } catch (Exception e) {
-                               throw new IOException ("Read failure", e);
-                       }
-                       
-                       return res;
-               }
-
-               public override long Seek (long offset, SeekOrigin origin)
-               {
-                       // NetworkStream objects do not support seeking.
-                       
-                       throw new NotSupportedException ();
-               }
-
-               public override void SetLength (long value)
-               {
-                       // NetworkStream objects do not support SetLength
-                       
-                       throw new NotSupportedException ();
-               }
-
-               public override void Write (byte [] buffer, int offset, int size)
-               {
-                       CheckDisposed ();
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
-
-                       if (offset < 0 || offset > buffer.Length)
-                               throw new ArgumentOutOfRangeException("offset exceeds the size of buffer");
-
-                       if (size < 0 || size > buffer.Length - offset)
-                               throw new ArgumentOutOfRangeException("offset+size exceeds the size of buffer");
-
-                       Socket s = socket;
-
-                       if (s == null) {
-                               throw new IOException("Connection closed");
-                       }
-
-                       try {
-                               int count = 0;
-                               while (size - count > 0) {
-                                       count += s.Send (buffer, offset + count, size - count, 0);
-                               }
-                       } catch (Exception e) {
-                               throw new IOException ("Write failure", e); 
-                       }
-               }
-               
-               private void CheckDisposed ()
-               {
-                       if (disposed)
-                               throw new ObjectDisposedException (GetType().FullName);
-               }
-
-
-       }
-}
diff --git a/mcs/class/System/System.Net.Sockets/ProtocolFamily.cs b/mcs/class/System/System.Net.Sockets/ProtocolFamily.cs
deleted file mode 100644 (file)
index e2e907a..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// System.Net.Sockets.ProtocolFamily.cs
-//
-// Author:
-//   Andrew Sutton
-//
-// (C) Andrew Sutton
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Net.Sockets
-{
-       public enum ProtocolFamily
-       {
-               Unknown = -1,
-               Unspecified = 0,
-               Unix,
-               InterNetwork,
-               ImpLink,
-               Pup,
-               Chaos,
-               Ipx,
-               Iso,
-               Ecma,
-               DataKit,
-               Ccitt,
-               Sna,
-               DecNet,
-               DataLink,
-               Lat,
-               HyperChannel,
-               AppleTalk,
-               NetBios,
-               VoiceView,
-               FireFox,
-               Banyan = 0x15,
-               Atm,
-               InterNetworkV6,
-               Cluster,
-               Ieee12844,
-               Irda,
-               NetworkDesigners = 0x1c,
-               Max,
-
-               NS = Ipx,
-               Osi = Iso,
-       }
-}
diff --git a/mcs/class/System/System.Net.Sockets/ProtocolType.cs b/mcs/class/System/System.Net.Sockets/ProtocolType.cs
deleted file mode 100644 (file)
index b54e9be..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-// ProtocolType.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Wed, 5 Sep 2001 06:32:24 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Net.Sockets {
-
-
-       /// <summary>
-       /// </summary>
-       public enum ProtocolType {
-
-               /// <summary>
-               /// </summary>
-               IP = 0,
-
-               /// <summary>
-               /// </summary>
-               Icmp = 1,
-
-               /// <summary>
-               /// </summary>
-               Igmp = 2,
-
-               /// <summary>
-               /// </summary>
-               Ggp = 3,
-
-               /// <summary>
-               /// </summary>
-               Tcp = 6,
-
-               /// <summary>
-               /// </summary>
-               Pup = 12,
-
-               /// <summary>
-               /// </summary>
-               Udp = 17,
-
-               /// <summary>
-               /// </summary>
-               Idp = 22,
-
-               /// <summary>
-               /// </summary>
-               IPv6 = 41,
-
-               /// <summary>
-               /// </summary>
-               ND = 77,
-
-               /// <summary>
-               /// </summary>
-               Raw = 255,
-
-               /// <summary>
-               /// </summary>
-               Unspecified = 0,
-
-               /// <summary>
-               /// </summary>
-               Ipx = 1000,
-
-               /// <summary>
-               /// </summary>
-               Spx = 1256,
-
-               /// <summary>
-               /// </summary>
-               SpxII = 1257,
-
-               /// <summary>
-               /// </summary>
-               Unknown = -1,
-
-               IPv4 = 4,
-               IPv6RoutingHeader = 43,
-               IPv6FragmentHeader = 44,
-               IPSecEncapsulatingSecurityPayload = 50,
-               IPSecAuthenticationHeader = 51,
-               IcmpV6 = 58,
-               IPv6NoNextHeader = 59,
-               IPv6DestinationOptions = 60,
-               IPv6HopByHopOptions = 0,
-       } // ProtocolType
-
-} // System.Net.Sockets
index 00f14114077d259e3d7956be41c6f2074d686e4e..e0f8569969f680c662d71a55e2019a5650015656 100644 (file)
@@ -37,6 +37,10 @@ namespace System.Net.Sockets {
                        int error = 0;
 
                        Socket.Blocking_internal (handle, false, out error);
+#if MOBILE_STATIC
+                       /* It's only for platforms that do not have working syscall abort mechanism, like WatchOS and TvOS */
+                       Socket.Shutdown_internal (handle, SocketShutdown.Both, out error);
+#endif
 
                        if (blocking_threads != null) {
                                int abort_attempts = 0;
diff --git a/mcs/class/System/System.Net.Sockets/SelectMode.cs b/mcs/class/System/System.Net.Sockets/SelectMode.cs
deleted file mode 100644 (file)
index 2fc360f..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-// SelectMode.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Wed, 5 Sep 2001 06:32:30 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Net.Sockets {
-
-
-       /// <summary>
-       /// </summary>
-       public enum SelectMode {
-
-               /// <summary>
-               /// </summary>
-               SelectRead = 0,
-
-               /// <summary>
-               /// </summary>
-               SelectWrite = 1,
-
-               /// <summary>
-               /// </summary>
-               SelectError = 2,
-       } // SelectMode
-
-} // System.Net.Sockets
index ba638a9b5db5f1cd3d77dcd9e602a5efb4dedee2..8d48b675ae8cf9ed8a03cab67569bb1c49d9033d 100644 (file)
@@ -201,11 +201,9 @@ namespace System.Net.Sockets
                        this.address_family = addressFamily;
                        this.socket_type = socketType;
                        this.protocol_type = protocolType;
-                       
-                       int error;
-                       var handle = Socket_internal (addressFamily, socketType, protocolType, out error);
 
-                       this.safe_handle = new SafeSocketHandle (handle, true);
+                       int error;
+                       this.safe_handle = new SafeSocketHandle (Socket_internal (addressFamily, socketType, protocolType, out error), true);
 
                        if (error != 0)
                                throw new SocketException (error);
@@ -953,7 +951,7 @@ namespace System.Net.Sockets
 
                        InitSocketAsyncEventArgs (e, AcceptAsyncCallback, e, SocketOperation.Accept);
 
-                       QueueIOSelectorJob (readQ, e.socket_async_result.handle, new IOSelectorJob (IOOperation.Read, BeginAcceptCallback, e.socket_async_result));
+                       QueueIOSelectorJob (readQ, e.socket_async_result.Handle, new IOSelectorJob (IOOperation.Read, BeginAcceptCallback, e.socket_async_result));
 
                        return true;
                }
@@ -986,7 +984,7 @@ namespace System.Net.Sockets
 
                        SocketAsyncResult sockares = new SocketAsyncResult (this, callback, state, SocketOperation.Accept);
 
-                       QueueIOSelectorJob (readQ, sockares.handle, new IOSelectorJob (IOOperation.Read, BeginAcceptCallback, sockares));
+                       QueueIOSelectorJob (readQ, sockares.Handle, new IOSelectorJob (IOOperation.Read, BeginAcceptCallback, sockares));
 
                        return sockares;
                }
@@ -1019,7 +1017,7 @@ namespace System.Net.Sockets
                                SockFlags = SocketFlags.None,
                        };
 
-                       QueueIOSelectorJob (readQ, sockares.handle, new IOSelectorJob (IOOperation.Read, BeginAcceptReceiveCallback, sockares));
+                       QueueIOSelectorJob (readQ, sockares.Handle, new IOSelectorJob (IOOperation.Read, BeginAcceptReceiveCallback, sockares));
 
                        return sockares;
                }
@@ -1054,7 +1052,7 @@ namespace System.Net.Sockets
                                AcceptSocket = acceptSocket,
                        };
 
-                       QueueIOSelectorJob (readQ, sockares.handle, new IOSelectorJob (IOOperation.Read, BeginAcceptReceiveCallback, sockares));
+                       QueueIOSelectorJob (readQ, sockares.Handle, new IOSelectorJob (IOOperation.Read, BeginAcceptReceiveCallback, sockares));
 
                        return sockares;
                }
@@ -1420,8 +1418,7 @@ namespace System.Net.Sockets
                                // an error. Better to just close the socket and move on.
                                connect_in_progress = false;
                                safe_handle.Dispose ();
-                               var handle = Socket_internal (address_family, socket_type, protocol_type, out error);
-                               safe_handle = new SafeSocketHandle (handle, true);
+                               safe_handle = new SafeSocketHandle (Socket_internal (address_family, socket_type, protocol_type, out error), true);
                                if (error != 0)
                                        throw new SocketException (error);
                        }
@@ -1454,7 +1451,7 @@ namespace System.Net.Sockets
                        is_bound = false;
                        connect_in_progress = true;
 
-                       IOSelector.Add (sockares.handle, new IOSelectorJob (IOOperation.Write, BeginConnectCallback, sockares));
+                       IOSelector.Add (sockares.Handle, new IOSelectorJob (IOOperation.Write, BeginConnectCallback, sockares));
 
                        return sockares;
                }
@@ -1649,7 +1646,7 @@ namespace System.Net.Sockets
 
                        InitSocketAsyncEventArgs (e, DisconnectAsyncCallback, e, SocketOperation.Disconnect);
 
-                       IOSelector.Add (e.socket_async_result.handle, new IOSelectorJob (IOOperation.Write, BeginDisconnectCallback, e.socket_async_result));
+                       IOSelector.Add (e.socket_async_result.Handle, new IOSelectorJob (IOOperation.Write, BeginDisconnectCallback, e.socket_async_result));
 
                        return true;
                }
@@ -1679,7 +1676,7 @@ namespace System.Net.Sockets
                                ReuseSocket = reuseSocket,
                        };
 
-                       IOSelector.Add (sockares.handle, new IOSelectorJob (IOOperation.Write, BeginDisconnectCallback, sockares));
+                       IOSelector.Add (sockares.Handle, new IOSelectorJob (IOOperation.Write, BeginDisconnectCallback, sockares));
 
                        return sockares;
                }
@@ -1879,7 +1876,7 @@ namespace System.Net.Sockets
 
                                e.socket_async_result.Buffers = e.BufferList;
 
-                               QueueIOSelectorJob (readQ, e.socket_async_result.handle, new IOSelectorJob (IOOperation.Read, BeginReceiveGenericCallback, e.socket_async_result));
+                               QueueIOSelectorJob (readQ, e.socket_async_result.Handle, new IOSelectorJob (IOOperation.Read, BeginReceiveGenericCallback, e.socket_async_result));
                        } else {
                                InitSocketAsyncEventArgs (e, ReceiveAsyncCallback, e, SocketOperation.Receive);
 
@@ -1887,7 +1884,7 @@ namespace System.Net.Sockets
                                e.socket_async_result.Offset = e.Offset;
                                e.socket_async_result.Size = e.Count;
 
-                               QueueIOSelectorJob (readQ, e.socket_async_result.handle, new IOSelectorJob (IOOperation.Read, BeginReceiveCallback, e.socket_async_result));
+                               QueueIOSelectorJob (readQ, e.socket_async_result.Handle, new IOSelectorJob (IOOperation.Read, BeginReceiveCallback, e.socket_async_result));
                        }
 
                        return true;
@@ -1923,7 +1920,7 @@ namespace System.Net.Sockets
                                SockFlags = socket_flags,
                        };
 
-                       QueueIOSelectorJob (readQ, sockares.handle, new IOSelectorJob (IOOperation.Read, BeginReceiveCallback, sockares));
+                       QueueIOSelectorJob (readQ, sockares.Handle, new IOSelectorJob (IOOperation.Read, BeginReceiveCallback, sockares));
 
                        return sockares;
                }
@@ -1964,7 +1961,7 @@ namespace System.Net.Sockets
                                SockFlags = socketFlags,
                        };
 
-                       QueueIOSelectorJob (readQ, sockares.handle, new IOSelectorJob (IOOperation.Read, BeginReceiveGenericCallback, sockares));
+                       QueueIOSelectorJob (readQ, sockares.Handle, new IOSelectorJob (IOOperation.Read, BeginReceiveGenericCallback, sockares));
 
                        return sockares;
                }
@@ -2124,7 +2121,7 @@ namespace System.Net.Sockets
                        e.socket_async_result.EndPoint = e.RemoteEndPoint;
                        e.socket_async_result.SockFlags = e.SocketFlags;
 
-                       QueueIOSelectorJob (readQ, e.socket_async_result.handle, new IOSelectorJob (IOOperation.Read, BeginReceiveFromCallback, e.socket_async_result));
+                       QueueIOSelectorJob (readQ, e.socket_async_result.Handle, new IOSelectorJob (IOOperation.Read, BeginReceiveFromCallback, e.socket_async_result));
 
                        return true;
                }
@@ -2163,7 +2160,7 @@ namespace System.Net.Sockets
                                EndPoint = remote_end,
                        };
 
-                       QueueIOSelectorJob (readQ, sockares.handle, new IOSelectorJob (IOOperation.Read, BeginReceiveFromCallback, sockares));
+                       QueueIOSelectorJob (readQ, sockares.Handle, new IOSelectorJob (IOOperation.Read, BeginReceiveFromCallback, sockares));
 
                        return sockares;
                }
@@ -2483,7 +2480,7 @@ namespace System.Net.Sockets
 
                                e.socket_async_result.Buffers = e.BufferList;
 
-                               QueueIOSelectorJob (writeQ, e.socket_async_result.handle, new IOSelectorJob (IOOperation.Write, BeginSendGenericCallback, e.socket_async_result));
+                               QueueIOSelectorJob (writeQ, e.socket_async_result.Handle, new IOSelectorJob (IOOperation.Write, BeginSendGenericCallback, e.socket_async_result));
                        } else {
                                InitSocketAsyncEventArgs (e, SendAsyncCallback, e, SocketOperation.Send);
 
@@ -2491,7 +2488,7 @@ namespace System.Net.Sockets
                                e.socket_async_result.Offset = e.Offset;
                                e.socket_async_result.Size = e.Count;
 
-                               QueueIOSelectorJob (writeQ, e.socket_async_result.handle, new IOSelectorJob (IOOperation.Write, s => BeginSendCallback ((SocketAsyncResult) s, 0), e.socket_async_result));
+                               QueueIOSelectorJob (writeQ, e.socket_async_result.Handle, new IOSelectorJob (IOOperation.Write, s => BeginSendCallback ((SocketAsyncResult) s, 0), e.socket_async_result));
                        }
 
                        return true;
@@ -2541,7 +2538,7 @@ namespace System.Net.Sockets
                                SockFlags = socket_flags,
                        };
 
-                       QueueIOSelectorJob (writeQ, sockares.handle, new IOSelectorJob (IOOperation.Write, s => BeginSendCallback ((SocketAsyncResult) s, 0), sockares));
+                       QueueIOSelectorJob (writeQ, sockares.Handle, new IOSelectorJob (IOOperation.Write, s => BeginSendCallback ((SocketAsyncResult) s, 0), sockares));
 
                        return sockares;
                }
@@ -2568,7 +2565,7 @@ namespace System.Net.Sockets
                                }
 
                                if (sockares.Size > 0) {
-                                       IOSelector.Add (sockares.handle, new IOSelectorJob (IOOperation.Write, s => BeginSendCallback ((SocketAsyncResult) s, sent_so_far), sockares));
+                                       IOSelector.Add (sockares.Handle, new IOSelectorJob (IOOperation.Write, s => BeginSendCallback ((SocketAsyncResult) s, sent_so_far), sockares));
                                        return; // Have to finish writing everything. See bug #74475.
                                }
 
@@ -2592,7 +2589,7 @@ namespace System.Net.Sockets
                                SockFlags = socketFlags,
                        };
 
-                       QueueIOSelectorJob (writeQ, sockares.handle, new IOSelectorJob (IOOperation.Write, BeginSendGenericCallback, sockares));
+                       QueueIOSelectorJob (writeQ, sockares.Handle, new IOSelectorJob (IOOperation.Write, BeginSendGenericCallback, sockares));
 
                        return sockares;
                }
@@ -2738,7 +2735,7 @@ namespace System.Net.Sockets
                        e.socket_async_result.SockFlags = e.SocketFlags;
                        e.socket_async_result.EndPoint = e.RemoteEndPoint;
 
-                       QueueIOSelectorJob (writeQ, e.socket_async_result.handle, new IOSelectorJob (IOOperation.Write, s => BeginSendToCallback ((SocketAsyncResult) s, 0), e.socket_async_result));
+                       QueueIOSelectorJob (writeQ, e.socket_async_result.Handle, new IOSelectorJob (IOOperation.Write, s => BeginSendToCallback ((SocketAsyncResult) s, 0), e.socket_async_result));
 
                        return true;
                }
@@ -2774,7 +2771,7 @@ namespace System.Net.Sockets
                                EndPoint = remote_end,
                        };
 
-                       QueueIOSelectorJob (writeQ, sockares.handle, new IOSelectorJob (IOOperation.Write, s => BeginSendToCallback ((SocketAsyncResult) s, 0), sockares));
+                       QueueIOSelectorJob (writeQ, sockares.Handle, new IOSelectorJob (IOOperation.Write, s => BeginSendToCallback ((SocketAsyncResult) s, 0), sockares));
 
                        return sockares;
                }
@@ -2792,7 +2789,7 @@ namespace System.Net.Sockets
                                }
 
                                if (sockares.Size > 0) {
-                                       IOSelector.Add (sockares.handle, new IOSelectorJob (IOOperation.Write, s => BeginSendToCallback ((SocketAsyncResult) s, sent_so_far), sockares));
+                                       IOSelector.Add (sockares.Handle, new IOSelectorJob (IOOperation.Write, s => BeginSendToCallback ((SocketAsyncResult) s, sent_so_far), sockares));
                                        return; // Have to finish writing everything. See bug #74475.
                                }
 
@@ -3286,7 +3283,7 @@ namespace System.Net.Sockets
                }
 
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               extern static void Shutdown_internal (IntPtr socket, SocketShutdown how, out int error);
+               internal extern static void Shutdown_internal (IntPtr socket, SocketShutdown how, out int error);
 
 #endregion
 
@@ -3456,6 +3453,9 @@ namespace System.Net.Sockets
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                internal static extern void cancel_blocking_socket_operation (Thread thread);
+
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               internal static extern bool SupportsPortReuse ();
        }
 }
 
index 2d55a52ac0f03aacc6868dca39d29f82d922a199..980ad06e5b2f909333222afba5fea6ea9da6ead2 100644 (file)
@@ -38,7 +38,6 @@ namespace System.Net.Sockets
        internal sealed class SocketAsyncResult: IOAsyncResult
        {
                public Socket socket;
-               public IntPtr handle;
                public SocketOperation operation;
 
                Exception DelayedException;
@@ -62,6 +61,10 @@ namespace System.Net.Sockets
 
                public int EndCalled;
 
+               public IntPtr Handle {
+                       get { return socket != null ? socket.Handle : IntPtr.Zero; }
+               }
+
                /* Used by SocketAsyncEventArgs */
                public SocketAsyncResult ()
                        : base ()
@@ -73,7 +76,6 @@ namespace System.Net.Sockets
                        base.Init (callback, state);
 
                        this.socket = socket;
-                       this.handle = socket != null ? socket.Handle : IntPtr.Zero;
                        this.operation = operation;
 
                        DelayedException = null;
@@ -102,7 +104,6 @@ namespace System.Net.Sockets
                        : base (callback, state)
                {
                        this.socket = socket;
-                       this.handle = socket != null ? socket.Handle : IntPtr.Zero;
                        this.operation = operation;
                }
 
diff --git a/mcs/class/System/System.Net.Sockets/SocketError.cs b/mcs/class/System/System.Net.Sockets/SocketError.cs
deleted file mode 100644 (file)
index 2601bdb..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// System.Net.Sockets.SocketError.cs
-//
-// Author:
-//     Robert Jordan  <robertj@gmx.net>
-//
-// Copyright (C) 2005 Novell, Inc. (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Net.Sockets
-{
-       public enum SocketError
-       {
-               AccessDenied = 10013,
-               AddressAlreadyInUse = 10048,
-               AddressFamilyNotSupported = 10047,
-               AddressNotAvailable = 10049,
-               AlreadyInProgress = 10037,
-               ConnectionAborted = 10053,
-               ConnectionRefused = 10061,
-               ConnectionReset = 10054,
-               DestinationAddressRequired = 10039,
-               Disconnecting = 10101,
-               Fault = 10014,
-               HostDown = 10064,
-               HostNotFound = 11001,
-               HostUnreachable = 10065,
-               InProgress = 10036,
-               Interrupted = 10004,
-               InvalidArgument = 10022,
-               IOPending = 997,
-               IsConnected = 10056,
-               MessageSize = 10040,
-               NetworkDown = 10050,
-               NetworkReset = 10052,
-               NetworkUnreachable = 10051,
-               NoBufferSpaceAvailable = 10055,
-               NoData = 11004,
-               NoRecovery = 11003,
-               NotConnected = 10057,
-               NotInitialized = 10093,
-               NotSocket = 10038,
-               OperationAborted = 995,
-               OperationNotSupported = 10045,
-               ProcessLimit = 10067,
-               ProtocolFamilyNotSupported = 10046,
-               ProtocolNotSupported = 10043,
-               ProtocolOption = 10042,
-               ProtocolType = 10041,
-               Shutdown = 10058,
-               SocketError = -1,
-               SocketNotSupported = 10044,
-               Success = 0,
-               SystemNotReady = 10091,
-               TimedOut = 10060,
-               TooManyOpenSockets = 10024,
-               TryAgain = 11002,
-               TypeNotFound = 10109,
-               VersionNotSupported = 10092,
-               WouldBlock = 10035
-       }
-}
diff --git a/mcs/class/System/System.Net.Sockets/SocketException.cs b/mcs/class/System/System.Net.Sockets/SocketException.cs
deleted file mode 100644 (file)
index d5b217b..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// System.Net.Sockets.NetworkStream.cs
-//
-// Author:
-//     Dick Porter <dick@ximian.com>
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.Serialization;
-using System.ComponentModel;
-using System.Runtime.CompilerServices;
-
-namespace System.Net.Sockets
-{
-       [Serializable]
-       public class SocketException : Win32Exception
-       {
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               private static extern int WSAGetLastError_internal ();
-               public SocketException ()
-                       : base (WSAGetLastError_internal ())
-               {
-               }
-
-               public SocketException (int error)
-                       : base (error) {
-               }
-
-               protected SocketException (SerializationInfo info,
-                                       StreamingContext context)
-                       : base (info, context) {
-               }
-
-
-               internal SocketException (int error, string message)
-                       : base (error, message)
-               {
-               }
-
-               public override int ErrorCode {
-                       get {
-                               return NativeErrorCode;
-                       }
-               }
-
-               public SocketError SocketErrorCode {
-                       get {
-                               return (SocketError) NativeErrorCode;
-                       }
-               }
-
-               public override string Message {
-                       get {
-                               return base.Message;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.Net.Sockets/SocketFlags.cs b/mcs/class/System/System.Net.Sockets/SocketFlags.cs
deleted file mode 100644 (file)
index 061a6d0..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-// SocketFlags.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Wed, 5 Sep 2001 06:32:49 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Net.Sockets {
-       [Flags]
-       public enum SocketFlags {
-               None                    = 0x00000000,
-               OutOfBand               = 0x00000001,
-               Peek                    = 0x00000002,
-               DontRoute               = 0x00000004,
-               MaxIOVectorLength       = 0x00000010,
-               Truncated               = 0x00000100,
-               ControlDataTruncated    = 0x00000200,
-               Broadcast               = 0x00000400,
-               Multicast               = 0x00000800,
-               Partial                 = 0x00008000,
-       } // SocketFlags
-
-} // System.Net.Sockets
diff --git a/mcs/class/System/System.Net.Sockets/SocketInformation.cs b/mcs/class/System/System.Net.Sockets/SocketInformation.cs
deleted file mode 100644 (file)
index 759d31b..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// System.Net.Sockets.SocketInformation.cs
-//
-// Author:
-//     Dick Porter (dick@ximian.com)
-//
-// Copyright (C) 2006 Novell, Inc.  http://www.novell.com
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-
-namespace System.Net.Sockets
-{
-       [Serializable]
-       public struct SocketInformation 
-       {
-               SocketInformationOptions options;
-               byte[] protocol_info;
-               
-               public SocketInformationOptions Options {
-                       get {
-                               return(options);
-                       }
-                       set {
-                               options = value;
-                       }
-               }
-               
-               public byte[] ProtocolInformation {
-                       get {
-                               return(protocol_info);
-                       }
-                       set {
-                               protocol_info = value;
-                       }
-               }
-       }
-}
-
diff --git a/mcs/class/System/System.Net.Sockets/SocketInformationOptions.cs b/mcs/class/System/System.Net.Sockets/SocketInformationOptions.cs
deleted file mode 100644 (file)
index 2b47eac..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// System.Net.Sockets.SocketInformationOptions.cs
-//
-// Author:
-//   Sridhar Kulkarni (sridharkulkarni@gmail.com)
-//
-// (C) 2006 Sridhar Kulkarni
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-
-namespace System.Net.Sockets
-{
-       [FlagsAttribute]
-       public enum SocketInformationOptions {
-               NonBlocking             = 0x00000001,
-               Connected               = 0x00000002,
-               Listening               = 0x00000004,
-               UseOnlyOverlappedIO     = 0x00000008
-       }
-}
diff --git a/mcs/class/System/System.Net.Sockets/SocketOptionLevel.cs b/mcs/class/System/System.Net.Sockets/SocketOptionLevel.cs
deleted file mode 100644 (file)
index cda7027..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-// SocketOptionLevel.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Wed, 5 Sep 2001 06:32:55 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Net.Sockets {
-
-
-       /// <summary>
-       /// </summary>
-       public enum SocketOptionLevel {
-
-               /// <summary>
-               /// </summary>
-               Socket = 65535,
-
-               /// <summary>
-               /// </summary>
-               IP = 0,
-
-               /// <summary>
-               /// </summary>
-               IPv6 = 41,
-
-               /// <summary>
-               /// </summary>
-               Tcp = 6,
-
-               /// <summary>
-               /// </summary>
-               Udp = 17,
-       } // SocketOptionLevel
-
-} // System.Net.Sockets
diff --git a/mcs/class/System/System.Net.Sockets/SocketShutdown.cs b/mcs/class/System/System.Net.Sockets/SocketShutdown.cs
deleted file mode 100644 (file)
index cb7d491..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-// SocketShutdown.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Wed, 5 Sep 2001 06:32:43 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Net.Sockets {
-
-
-       /// <summary>
-       /// </summary>
-       public enum SocketShutdown {
-
-               /// <summary>
-               /// </summary>
-               Receive = 0,
-
-               /// <summary>
-               /// </summary>
-               Send = 1,
-
-               /// <summary>
-               /// </summary>
-               Both = 2,
-       } // SocketShutdown
-
-} // System.Net.Sockets
diff --git a/mcs/class/System/System.Net.Sockets/SocketType.cs b/mcs/class/System/System.Net.Sockets/SocketType.cs
deleted file mode 100644 (file)
index 80cbe1c..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-// SocketType.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Wed, 5 Sep 2001 06:32:37 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Net.Sockets {
-
-
-       /// <summary>
-       /// </summary>
-       public enum SocketType {
-
-               /// <summary>
-               /// </summary>
-               Stream = 1,
-
-               /// <summary>
-               /// </summary>
-               Dgram = 2,
-
-               /// <summary>
-               /// </summary>
-               Raw = 3,
-
-               /// <summary>
-               /// </summary>
-               Rdm = 4,
-
-               /// <summary>
-               /// </summary>
-               Seqpacket = 5,
-
-               /// <summary>
-               /// </summary>
-               Unknown = -1,
-       } // SocketType
-
-} // System.Net.Sockets
diff --git a/mcs/class/System/System.Net.Sockets/TransmitFileOptions.cs b/mcs/class/System/System.Net.Sockets/TransmitFileOptions.cs
deleted file mode 100644 (file)
index 654448c..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.Net.Sockets.TransmitFileOptions.cs
-//
-// Author:
-//   Sridhar Kulkarni (sridharkulkarni@gmail.com)
-//
-// (C) 2006 Sridhar Kulkarni
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Net.Sockets
-{
-       [FlagsAttribute]
-       public enum TransmitFileOptions {
-               UseDefaultWorkerThread  = 0x00000000,
-               Disconnect              = 0x00000001,
-               ReuseSocket             = 0x00000002,
-               WriteBehind             = 0x00000004,
-               UseSystemThread         = 0x00000010,
-               UseKernelApc            = 0x00000020,
-       }
-}
diff --git a/mcs/class/System/System.Net.Sockets/UdpReceiveResult.cs b/mcs/class/System/System.Net.Sockets/UdpReceiveResult.cs
deleted file mode 100644 (file)
index 5017234..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// UdpReceiveResult.cs
-//
-// Authors:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright 2011 Xamarin, Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.CompilerServices;
-
-namespace System.Net.Sockets
-{
-       public struct UdpReceiveResult : IEquatable<UdpReceiveResult>
-       {
-               public UdpReceiveResult (byte[] buffer, IPEndPoint remoteEndPoint)
-                       : this ()
-               {
-                       if (buffer == null) {
-                               throw new ArgumentNullException ("buffer");
-                       }
-
-                       if (remoteEndPoint == null) {
-                               throw new ArgumentNullException ("remoteEndPoint");
-                       }
-
-                       this.Buffer = buffer;
-                       this.RemoteEndPoint = remoteEndPoint;
-               }
-
-               public byte[] Buffer { get; private set; }
-               public IPEndPoint RemoteEndPoint { get; private set; }
-
-               public override int GetHashCode ()
-               {
-                       return RuntimeHelpers.GetHashCode (Buffer) ^ RuntimeHelpers.GetHashCode (RemoteEndPoint);
-               }
-
-               public override bool Equals (object obj)
-               {
-                       return obj is UdpReceiveResult && Equals ((UdpReceiveResult) obj);
-               }
-
-               public bool Equals (UdpReceiveResult other)
-               {
-                       return Buffer == other.Buffer && Equals (RemoteEndPoint, other.RemoteEndPoint);
-               }
-
-               public static bool operator == (UdpReceiveResult left, UdpReceiveResult right)
-               {
-                       return left.Equals (right);
-               }
-
-               public static bool operator != (UdpReceiveResult left, UdpReceiveResult right)
-               {
-                       return !left.Equals (right);
-               }
-       }
-}
\ No newline at end of file
index df73d85428e37786b523f71cb071de1522a4e3e8..9726b91358b2ffeb1030370681e901b519a6ee8d 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security.Authenticode;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
 using MonoSecurity::Mono.Security.Authenticode;
+#else
+using Mono.Security.Authenticode;
 #endif
 
 using System.IO;
@@ -47,21 +47,23 @@ using System.Threading;
 namespace System.Net {
        sealed class EndPointListener
        {
+               HttpListener listener;
                IPEndPoint endpoint;
                Socket sock;
                Hashtable prefixes;  // Dictionary <ListenerPrefix, HttpListener>
                ArrayList unhandled; // List<ListenerPrefix> unhandled; host = '*'
                ArrayList all;       // List<ListenerPrefix> all;  host = '+'
-               X509Certificate2 cert;
-               AsymmetricAlgorithm key;
+               X509Certificate cert;
                bool secure;
                Dictionary<HttpConnection, HttpConnection> unregistered;
 
-               public EndPointListener (IPAddress addr, int port, bool secure)
+               public EndPointListener (HttpListener listener, IPAddress addr, int port, bool secure)
                {
+                       this.listener = listener;
+
                        if (secure) {
                                this.secure = secure;
-                               LoadCertificateAndKey (addr, port);
+                               cert = listener.LoadCertificateAndKey (addr, port);
                        }
 
                        endpoint = new IPEndPoint (addr, port);
@@ -76,24 +78,8 @@ namespace System.Net {
                        unregistered = new Dictionary<HttpConnection, HttpConnection> ();
                }
 
-               void LoadCertificateAndKey (IPAddress addr, int port)
-               {
-                       // Actually load the certificate
-                       try {
-                               string dirname = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData);
-                               string path = Path.Combine (dirname, ".mono");
-                               path = Path.Combine (path, "httplistener");
-                               string cert_file = Path.Combine (path, String.Format ("{0}.cer", port));
-                               if (!File.Exists (cert_file))
-                                       return;
-                               string pvk_file = Path.Combine (path, String.Format ("{0}.pvk", port));
-                               if (!File.Exists (pvk_file))
-                                       return;
-                               cert = new X509Certificate2 (cert_file);
-                               key = PrivateKey.CreateFromFile (pvk_file).RSA;
-                       } catch {
-                               // ignore errors
-                       }
+               internal HttpListener Listener {
+                       get { return listener; }
                }
 
                static void OnAccept (object sender, EventArgs e)
@@ -121,11 +107,11 @@ namespace System.Net {
                        if (accepted == null)
                                return;
 
-                       if (epl.secure && (epl.cert == null || epl.key == null)) {
+                       if (epl.secure && epl.cert == null) {
                                accepted.Close ();
                                return;
                        }
-                       HttpConnection conn = new HttpConnection (accepted, epl, epl.secure, epl.cert, epl.key);
+                       HttpConnection conn = new HttpConnection (accepted, epl, epl.secure, epl.cert);
                        lock (epl.unregistered) {
                                epl.unregistered [conn] = conn;
                        }
index a4ee4a24ad13def9f5c74834acce2ded6f06ff6c..6db036a7f02a3e0c14431511ac0c6cafbc69a915 100644 (file)
@@ -107,7 +107,7 @@ namespace System.Net {
                        if (p.ContainsKey (port)) {
                                epl = (EndPointListener) p [port];
                        } else {
-                               epl = new EndPointListener (addr, port, secure);
+                               epl = new EndPointListener (listener, addr, port, secure);
                                p [port] = epl;
                        }
 
index a45dcc99990d48585bd09b1fd9e69be16bc3b5a1..1fbf80dc7ce4473a80518b3a7d07a146a956a538 100644 (file)
@@ -7,6 +7,15 @@
 // (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
 //
 
+#if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+using MSI = MonoSecurity::Mono.Security.Interface;
+#else
+using MSI = Mono.Security.Interface;
+#endif
+#endif
+
 using System;
 using System.IO;
 using System.Net.Sockets;
@@ -17,6 +26,7 @@ using System.Security.Cryptography.X509Certificates;
 using System.Net;
 using System.Net.Security;
 using System.Security.Authentication;
+using Mono.Net.Security;
 
 namespace System.Net
 {
@@ -1155,28 +1165,14 @@ namespace System.Net
                        ChangeToSSLSocket (ref stream);
                }
 
-#if SECURITY_DEP
-               RemoteCertificateValidationCallback callback = delegate (object sender,
-                                                                        X509Certificate certificate,
-                                                                        X509Chain chain,
-                                                                        SslPolicyErrors sslPolicyErrors) {
-                       // honor any exciting callback defined on ServicePointManager
-                       if (ServicePointManager.ServerCertificateValidationCallback != null)
-                               return ServicePointManager.ServerCertificateValidationCallback (sender, certificate, chain, sslPolicyErrors);
-                       // otherwise provide our own
-                       if (sslPolicyErrors != SslPolicyErrors.None)
-                               throw new InvalidOperationException ("SSL authentication error: " + sslPolicyErrors);
-                       return true;
-                       };
-#endif
-
                internal bool ChangeToSSLSocket (ref Stream stream) {
-#if   SECURITY_DEP
-                       SslStream sslStream = new SslStream (stream, true, callback, null);
-                       //sslStream.AuthenticateAsClient (Host, this.ClientCertificates, SslProtocols.Default, false);
-                       //TODO: client certificates
+#if SECURITY_DEP
+                       var provider = MonoTlsProviderFactory.GetProviderInternal ();
+                       var settings = MSI.MonoTlsSettings.CopyDefaultSettings ();
+                       settings.UseServicePointManagerCallback = true;
+                       var sslStream = provider.CreateSslStream (stream, true, settings);
                        sslStream.AuthenticateAsClient (requestUri.Host, null, SslProtocols.Default, false);
-                       stream = sslStream;
+                       stream = sslStream.AuthenticatedStream;
                        return true;
 #else
                        throw new NotImplementedException ();
index 263bfcd65f78ebb748764e7e9718ae6a2a65b7c4..2be693f5b16c4fa3fee90b2e3daa2096746d714f 100644 (file)
 //
 
 #if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+#endif
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
 
-#if MONOTOUCH || MONODROID
-using Mono.Security.Protocol.Tls;
+#if MONO_SECURITY_ALIAS
+using MSI = MonoSecurity::Mono.Security.Interface;
 #else
-extern alias MonoSecurity;
-using MonoSecurity::Mono.Security.Protocol.Tls;
+using MSI = Mono.Security.Interface;
+#endif
+#if MONO_X509_ALIAS
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#else
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
 #endif
 
 using System.IO;
 using System.Net.Sockets;
-using System.Reflection;
 using System.Text;
 using System.Threading;
+using System.Security.Authentication;
 using System.Security.Cryptography;
 using System.Security.Cryptography.X509Certificates;
+using Mono.Net.Security;
 
 namespace System.Net {
        sealed class HttpConnection
@@ -63,27 +74,35 @@ namespace System.Net {
                int reuses;
                bool context_bound;
                bool secure;
-               AsymmetricAlgorithm key;
+               X509Certificate cert;
                int s_timeout = 90000; // 90k ms for first request, 15k ms from then on
                Timer timer;
                IPEndPoint local_ep;
                HttpListener last_listener;
                int [] client_cert_errors;
                X509Certificate2 client_cert;
+               IMonoSslStream ssl_stream;
 
-               public HttpConnection (Socket sock, EndPointListener epl, bool secure, X509Certificate2 cert, AsymmetricAlgorithm key)
+               public HttpConnection (Socket sock, EndPointListener epl, bool secure, X509Certificate cert)
                {
                        this.sock = sock;
                        this.epl = epl;
                        this.secure = secure;
-                       this.key = key;
+                       this.cert = cert;
                        if (secure == false) {
                                stream = new NetworkStream (sock, false);
                        } else {
-                               SslServerStream ssl_stream = new SslServerStream (new NetworkStream (sock, false), cert, false, true, false);
-                               ssl_stream.PrivateKeyCertSelectionDelegate += OnPVKSelection;
-                               ssl_stream.ClientCertValidationDelegate += OnClientCertificateValidation;
-                               stream = ssl_stream;
+                               ssl_stream = epl.Listener.CreateSslStream (new NetworkStream (sock, false), false, (t, c, ch, e) => {
+                                       if (c == null)
+                                               return true;
+                                       var c2 = c as X509Certificate2;
+                                       if (c2 == null)
+                                               c2 = new X509Certificate2 (c.GetRawCertData ());
+                                       client_cert = c2;
+                                       client_cert_errors = new int[] { (int)e };
+                                       return true;
+                               });
+                               stream = ssl_stream.AuthenticatedStream;
                        }
                        timer = new Timer (OnTimeout, null, Timeout.Infinite, Timeout.Infinite);
                        Init ();
@@ -97,25 +116,12 @@ namespace System.Net {
                        get { return client_cert; }
                }
 
-               bool OnClientCertificateValidation (X509Certificate certificate, int[] errors)
-               {
-                       if (certificate == null)
-                               return true;
-                       X509Certificate2 cert = certificate as X509Certificate2;
-                       if (cert == null)
-                               cert = new X509Certificate2 (certificate.GetRawCertData ());
-                       client_cert = cert;
-                       client_cert_errors = errors;
-                       return true;
-               }
-
-               AsymmetricAlgorithm OnPVKSelection (X509Certificate certificate, string targetHost)
-               {
-                       return key;
-               }
-
                void Init ()
                {
+                       if (ssl_stream != null) {
+                               ssl_stream.AuthenticateAsServer (cert, true, (SslProtocols)ServicePointManager.SecurityProtocol, false);
+                       }
+
                        context_bound = false;
                        i_stream = null;
                        o_stream = null;
@@ -203,8 +209,11 @@ namespace System.Net {
                        // TODO: can we get this stream before reading the input?
                        if (o_stream == null) {
                                HttpListener listener = context.Listener;
-                               bool ign = (listener == null) ? true : listener.IgnoreWriteExceptions;
-                               o_stream = new ResponseStream (stream, context.Response, ign);
+                               
+                               if(listener == null)
+                                       return new ResponseStream (stream, context.Response, true);
+
+                               o_stream = new ResponseStream (stream, context.Response, listener.IgnoreWriteExceptions);
                        }
                        return o_stream;
                }
@@ -306,18 +315,25 @@ namespace System.Net {
                        int used = 0;
                        string line;
 
-                       try {
-                               line = ReadLine (buffer, position, len - position, ref used);
-                               position += used;
-                       } catch {
-                               context.ErrorMessage = "Bad request";
-                               context.ErrorStatus = 400;
-                               return true;
-                       }
+                       while (true) {
+                               if (context.HaveError)
+                                       return true;
+
+                               if (position >= len)
+                                       break;
+
+                               try {
+                                       line = ReadLine (buffer, position, len - position, ref used);
+                                       position += used;
+                               } catch {
+                                       context.ErrorMessage = "Bad request";
+                                       context.ErrorStatus = 400;
+                                       return true;
+                               }
 
-                       do {
                                if (line == null)
                                        break;
+
                                if (line == "") {
                                        if (input_state == InputState.RequestLine)
                                                continue;
@@ -338,21 +354,7 @@ namespace System.Net {
                                                return true;
                                        }
                                }
-
-                               if (context.HaveError)
-                                       return true;
-
-                               if (position >= len)
-                                       break;
-                               try {
-                                       line = ReadLine (buffer, position, len - position, ref used);
-                                       position += used;
-                               } catch {
-                                       context.ErrorMessage = "Bad request";
-                                       context.ErrorStatus = 400;
-                                       return true;
-                               }
-                       } while (line != null);
+                       }
 
                        if (used == len) {
                                ms.SetLength (0);
index 82cf8bda9eb4b076db9e88955333c62dca950d95..29afc0fd84b78ceca4e33b0dfe9efa2b4f9767fd 100644 (file)
 //
 
 #if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Authenticode;
+using MSI = MonoSecurity::Mono.Security.Interface;
+#else
+using Mono.Security.Authenticode;
+using MSI = Mono.Security.Interface;
+#endif
 
+using System.IO;
 using System.Collections;
 using System.Threading;
 using System.Threading.Tasks;
+using System.Security.Cryptography;
+using System.Security.Cryptography.X509Certificates;
+
+using Mono.Net.Security;
+
 
 //TODO: logging
 namespace System.Net {
@@ -46,6 +60,10 @@ namespace System.Net {
                bool listening;
                bool disposed;
 
+               IMonoTlsProvider tlsProvider;
+               MSI.MonoTlsSettings tlsSettings;
+               X509Certificate certificate;
+
                Hashtable registry;   // Dictionary<HttpListenerContext,HttpListenerContext> 
                ArrayList ctx_queue;  // List<HttpListenerContext> ctx_queue;
                ArrayList wait_queue; // List<ListenerAsyncResult> wait_queue;
@@ -61,6 +79,56 @@ namespace System.Net {
                        auth_schemes = AuthenticationSchemes.Anonymous;
                }
 
+               internal HttpListener (X509Certificate certificate, IMonoTlsProvider tlsProvider, MSI.MonoTlsSettings tlsSettings)
+                       : this ()
+               {
+                       this.certificate = certificate;
+                       this.tlsProvider = tlsProvider;
+                       this.tlsSettings = tlsSettings;
+               }
+
+               internal X509Certificate LoadCertificateAndKey (IPAddress addr, int port)
+               {
+                       lock (registry) {
+                               if (certificate != null)
+                                       return certificate;
+
+                               // Actually load the certificate
+                               try {
+                                       string dirname = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData);
+                                       string path = Path.Combine (dirname, ".mono");
+                                       path = Path.Combine (path, "httplistener");
+                                       string cert_file = Path.Combine (path, String.Format ("{0}.cer", port));
+                                       if (!File.Exists (cert_file))
+                                               return null;
+                                       string pvk_file = Path.Combine (path, String.Format ("{0}.pvk", port));
+                                       if (!File.Exists (pvk_file))
+                                               return null;
+                                       var cert = new X509Certificate2 (cert_file);
+                                       cert.PrivateKey = PrivateKey.CreateFromFile (pvk_file).RSA;
+                                       certificate = cert;
+                                       return certificate;
+                               } catch {
+                                       // ignore errors
+                                       certificate = null;
+                                       return null;
+                               }
+                       }
+               }
+
+               internal IMonoSslStream CreateSslStream (Stream innerStream, bool ownsStream, MSI.MonoRemoteCertificateValidationCallback callback)
+               {
+                       lock (registry) {
+                               if (tlsProvider == null)
+                                       tlsProvider = MonoTlsProviderFactory.GetProviderInternal ();
+                               if (tlsSettings == null)
+                                       tlsSettings = MSI.MonoTlsSettings.CopyDefaultSettings ();
+                               if (tlsSettings.RemoteCertificateValidationCallback == null)
+                                       tlsSettings.RemoteCertificateValidationCallback = callback;
+                               return tlsProvider.CreateSslStream (innerStream, ownsStream, tlsSettings);
+                       }
+               }
+
                // TODO: Digest, NTLM and Negotiate require ControlPrincipal
                public AuthenticationSchemes AuthenticationSchemes {
                        get { return auth_schemes; }
@@ -349,5 +417,11 @@ namespace System.Net {
                }
        }
 }
+#else // SECURITY_DEP
+namespace System.Net
+{
+       public sealed class HttpListener
+       {
+       }
+}
 #endif
-
index 8e25aa0629e3fde6425661e16f00a02a34da138a..769195a2b3ec4c965278d9ed8aa7670388d5e800 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security.Protocol.Tls;
-#else
-extern alias MonoSecurity;
-using MonoSecurity::Mono.Security.Protocol.Tls;
-#endif
-
 using System.Collections;
 using System.Collections.Specialized;
 using System.Globalization;
@@ -45,6 +38,7 @@ using System.Security.Cryptography.X509Certificates;
 using System.Text;
 using System.Security.Authentication.ExtendedProtection;
 using System.Threading.Tasks;
+using System.Net;
 
 namespace System.Net {
        public sealed class HttpListenerRequest
@@ -182,7 +176,7 @@ namespace System.Net {
                                                                host, LocalEndPoint.Port);
 
                        if (!Uri.TryCreate (base_uri + path, UriKind.Absolute, out url)){
-                               context.ErrorMessage = "Invalid url: " + base_uri + path;
+                               context.ErrorMessage = WebUtility.HtmlEncode ("Invalid url: " + base_uri + path);
                                return;
                        }
 
index b9cc121d03c7f6dc1455782f6dbf692a96539330..1c1c41214b5b11e1f8bc61f2af96dcba1cc28cbb 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+#if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Interface;
+#else
+using Mono.Security.Interface;
+#endif
+#endif
+
 using System;
 using System.Collections;
 using System.Configuration;
@@ -39,11 +48,13 @@ using System.IO;
 using System.Net;
 using System.Net.Cache;
 using System.Net.Sockets;
+using System.Net.Security;
 using System.Runtime.Remoting.Messaging;
 using System.Runtime.Serialization;
 using System.Security.Cryptography.X509Certificates;
 using System.Text;
 using System.Threading;
+using Mono.Net.Security;
 
 namespace System.Net 
 {
@@ -101,6 +112,11 @@ namespace System.Net
                int maxResponseHeadersLength;
                static int defaultMaxResponseHeadersLength;
                int readWriteTimeout = 300000; // ms
+               IMonoTlsProvider tlsProvider;
+#if SECURITY_DEP
+               MonoTlsSettings tlsSettings;
+#endif
+               ServerCertValidationCallback certValidationCallback;
 
                enum NtlmAuthState {
                        None,
@@ -143,6 +159,15 @@ namespace System.Net
                        ThrowOnError = true;
                        ResetAuthorization ();
                }
+
+#if SECURITY_DEP
+               internal HttpWebRequest (Uri uri, IMonoTlsProvider tlsProvider, MonoTlsSettings settings = null)
+                       : this (uri)
+               {
+                       this.tlsProvider = tlsProvider;
+                       this.tlsSettings = settings;
+               }
+#endif
                
                [Obsolete ("Serialization is obsoleted for this type", false)]
                protected HttpWebRequest (SerializationInfo serializationInfo, StreamingContext streamingContext) 
@@ -240,20 +265,30 @@ namespace System.Net
                                method != "TRACE";
                        }
                }
+
+               internal IMonoTlsProvider TlsProvider {
+                       get { return tlsProvider; }
+               }
+
+#if SECURITY_DEP
+               internal MonoTlsSettings TlsSettings {
+                       get { return tlsSettings; }
+               }
+#endif
                
                public X509CertificateCollection ClientCertificates {
                        get {
                                if (certificates == null)
                                        certificates = new X509CertificateCollection ();
-
                                return certificates;
                        }
-                       [MonoTODO]
                        set {
-                               throw GetMustImplement ();
+                               if (value == null)
+                                       throw new ArgumentNullException ("value");
+                               certificates = value;
                        }
                }
-               
+
                public string Connection {
                        get { return webHeaders ["Connection"]; }
                        set {
@@ -666,7 +701,26 @@ namespace System.Net
                internal bool ProxyQuery {
                        get { return servicePoint.UsesProxy && !servicePoint.UseConnect; }
                }
-               
+
+               internal ServerCertValidationCallback ServerCertValidationCallback {
+                       get { return certValidationCallback; }
+               }
+
+               public RemoteCertificateValidationCallback ServerCertificateValidationCallback {
+                       get {
+                               if (certValidationCallback == null)
+                                       return null;
+                               return certValidationCallback.ValidationCallback;
+                       }
+                       set
+                       {
+                               if (value == null)
+                                       certValidationCallback = null;
+                               else
+                                       certValidationCallback = new ServerCertValidationCallback (value);
+                       }
+               }
+
                // Methods
                
                internal ServicePoint GetServicePoint ()
index 54ea620ead790e0019075566bb65aa08d6760b92..69f2fca0a84d586c6fb220a8b012341d8215e9ac 100644 (file)
@@ -33,6 +33,8 @@ namespace System.Net {
        public
        enum SecurityProtocolType {
                Ssl3 = 48,
-               Tls = 192
+               Tls = 192,
+               Tls11 = 768,
+               Tls12 = 3072
        }
 }
index ebac3e9cf1d2760763fd5753cd4c47763de54c71..00d929e65c29eca4a008b3f35387e58f6c1c3515 100644 (file)
@@ -413,10 +413,14 @@ namespace System.Net
                        return false;
                }
 
-               internal void SetCertificates (X509Certificate client, X509Certificate server) 
+               internal void SetServerCertificate (X509Certificate server)
                {
-                       certificate = server;
-                       clientCertificate = client;
+                       this.certificate = server;
+               }
+
+               internal void SetClientCertificate (X509Certificate clientCertificate)
+               {
+                       this.clientCertificate = clientCertificate;
                }
 
                internal bool CallEndPointDelegate (Socket sock, IPEndPoint remote)
index 9f0ae0b1d9f1ddc35aa68d2858f6285598160e56..1d6b80467278355f7759d901b3cc44fec869fbe1 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if SECURITY_DEP
-
-#if MONOTOUCH || MONODROID
-using Mono.Security.Protocol.Tls;
-using MSX = Mono.Security.X509;
-using Mono.Security.X509.Extensions;
-#else
-extern alias MonoSecurity;
-using MonoSecurity::Mono.Security.X509.Extensions;
-using MonoSecurity::Mono.Security.Protocol.Tls;
-using MSX = MonoSecurity::Mono.Security.X509;
-#endif
-
-using System.Text.RegularExpressions;
-#endif
-
 using System;
 using System.Threading;
 using System.Collections;
@@ -140,7 +124,7 @@ namespace System.Net
 
                static bool expectContinue = true;
                static bool useNagle;
-               static RemoteCertificateValidationCallback server_cert_cb;
+               static ServerCertValidationCallback server_cert_cb;
                static bool tcp_keepalive;
                static int tcp_keepalive_time;
                static int tcp_keepalive_interval;
@@ -194,6 +178,11 @@ namespace System.Net
                        set { policy = value; }
                }
 
+               internal static ICertificatePolicy GetLegacyCertificatePolicy ()
+               {
+                       return policy;
+               }
+
                [MonoTODO("CRL checks not implemented")]
                public static bool CheckCertificateRevocationList {
                        get { return _checkCRL; }
@@ -263,24 +252,27 @@ namespace System.Net
                        }
                }
 
-#if NET_1_0
-               // we need it for SslClientStream
-               internal
-#else
-               public
-#endif
-               static SecurityProtocolType SecurityProtocol {
+               public static SecurityProtocolType SecurityProtocol {
                        get { return _securityProtocol; }
                        set { _securityProtocol = value; }
                }
 
-               public static RemoteCertificateValidationCallback ServerCertificateValidationCallback
-               {
+               internal static ServerCertValidationCallback ServerCertValidationCallback {
+                       get { return server_cert_cb; }
+               }
+
+               public static RemoteCertificateValidationCallback ServerCertificateValidationCallback {
                        get {
-                               return server_cert_cb;
+                               if (server_cert_cb == null)
+                                       return null;
+                               return server_cert_cb.ValidationCallback;
                        }
-                       set {
-                               server_cert_cb = value;
+                       set
+                       {
+                               if (value == null)
+                                       server_cert_cb = null;
+                               else
+                                       server_cert_cb = new ServerCertValidationCallback (value);
                        }
                }
 
@@ -294,6 +286,10 @@ namespace System.Net
                        set { useNagle = value; }
                }
 
+               internal static bool DisableStrongCrypto {
+                       get { return false; }
+               }
+
                // Methods
                public static void SetTcpKeepAlive (bool enabled, int keepAliveTime, int keepAliveInterval)
                {
@@ -378,382 +374,6 @@ namespace System.Net
                                }
                        }
                }
-               
-#if SECURITY_DEP
-               internal class ChainValidationHelper {
-                       object sender;
-                       string host;
-                       RemoteCertificateValidationCallback cb;
-
-#if !MONOTOUCH
-                       static bool is_macosx = System.IO.File.Exists (OSX509Certificates.SecurityLibrary);
-                       static X509RevocationMode revocation_mode;
-
-                       static ChainValidationHelper ()
-                       {
-                               revocation_mode = X509RevocationMode.NoCheck;
-                               try {
-                                       string str = Environment.GetEnvironmentVariable ("MONO_X509_REVOCATION_MODE");
-                                       if (String.IsNullOrEmpty (str))
-                                               return;
-                                       revocation_mode = (X509RevocationMode) Enum.Parse (typeof (X509RevocationMode), str, true);
-                               } catch {
-                               }
-                       }
-#endif
-
-                       public ChainValidationHelper (object sender, string hostName)
-                       {
-                               this.sender = sender;
-                               host = hostName;
-                       }
-
-                       public RemoteCertificateValidationCallback ServerCertificateValidationCallback {
-                               get {
-                                       if (cb == null)
-                                               cb = ServicePointManager.ServerCertificateValidationCallback;
-                                       return cb;
-                               }
-                               set { cb = value; }
-                       }
-
-                       // Used when the obsolete ICertificatePolicy is set to DefaultCertificatePolicy
-                       // and the new ServerCertificateValidationCallback is not null
-                       internal ValidationResult ValidateChain (MSX.X509CertificateCollection certs)
-                       {
-                               // user_denied is true if the user callback is called and returns false
-                               bool user_denied = false;
-                               if (certs == null || certs.Count == 0)
-                                       return null;
-
-                               ICertificatePolicy policy = ServicePointManager.CertificatePolicy;
-
-                               X509Certificate2 leaf = new X509Certificate2 (certs [0].RawData);
-                               int status11 = 0; // Error code passed to the obsolete ICertificatePolicy callback
-                               SslPolicyErrors errors = 0;
-                               X509Chain chain = null;
-                               bool result = false;
-#if MONOTOUCH
-                               // The X509Chain is not really usable with MonoTouch (since the decision is not based on this data)
-                               // However if someone wants to override the results (good or bad) from iOS then they will want all
-                               // the certificates that the server provided (which generally does not include the root) so, only  
-                               // if there's a user callback, we'll create the X509Chain but won't build it
-                               // ref: https://bugzilla.xamarin.com/show_bug.cgi?id=7245
-                               if (ServerCertificateValidationCallback != null) {
-#endif
-                               chain = new X509Chain ();
-                               chain.ChainPolicy = new X509ChainPolicy ();
-#if !MONOTOUCH
-                               chain.ChainPolicy.RevocationMode = revocation_mode;
-#endif
-                               for (int i = 1; i < certs.Count; i++) {
-                                       X509Certificate2 c2 = new X509Certificate2 (certs [i].RawData);
-                                       chain.ChainPolicy.ExtraStore.Add (c2);
-                               }
-#if MONOTOUCH
-                               }
-#else
-                               try {
-                                       if (!chain.Build (leaf))
-                                               errors |= GetErrorsFromChain (chain);
-                               } catch (Exception e) {
-                                       Console.Error.WriteLine ("ERROR building certificate chain: {0}", e);
-                                       Console.Error.WriteLine ("Please, report this problem to the Mono team");
-                                       errors |= SslPolicyErrors.RemoteCertificateChainErrors;
-                               }
-
-                               // for OSX and iOS we're using the native API to check for the SSL server policy and host names
-                               if (!is_macosx) {
-                                       if (!CheckCertificateUsage (leaf)) {
-                                               errors |= SslPolicyErrors.RemoteCertificateChainErrors;
-                                               status11 = -2146762490; //CERT_E_PURPOSE 0x800B0106
-                                       }
-
-                                       if (!CheckServerIdentity (certs [0], host)) {
-                                               errors |= SslPolicyErrors.RemoteCertificateNameMismatch;
-                                               status11 = -2146762481; // CERT_E_CN_NO_MATCH 0x800B010F
-                                       }
-                               } else {
-#endif
-                                       // Attempt to use OSX certificates
-                                       // Ideally we should return the SecTrustResult
-                                       OSX509Certificates.SecTrustResult trustResult = OSX509Certificates.SecTrustResult.Deny;
-                                       try {
-                                               trustResult = OSX509Certificates.TrustEvaluateSsl (certs, host);
-                                               // We could use the other values of trustResult to pass this extra information
-                                               // to the .NET 2 callback for values like SecTrustResult.Confirm
-                                               result = (trustResult == OSX509Certificates.SecTrustResult.Proceed ||
-                                                                 trustResult == OSX509Certificates.SecTrustResult.Unspecified);
-                                       } catch {
-                                               // Ignore
-                                       }
-                                       
-                                       if (result) {
-                                               // TrustEvaluateSsl was successful so there's no trust error
-                                               // IOW we discard our own chain (since we trust OSX one instead)
-                                               errors = 0;
-                                       } else {
-                                               // callback and DefaultCertificatePolicy needs this since 'result' is not specified
-                                               status11 = (int) trustResult;
-                                               errors |= SslPolicyErrors.RemoteCertificateChainErrors;
-                                       }
-#if !MONOTOUCH
-                               }
-#endif
-
-#if MONODROID && SECURITY_DEP
-                               result = AndroidPlatform.TrustEvaluateSsl (certs, sender, leaf, chain, errors);
-                               if (result) {
-                                       // chain.Build() + GetErrorsFromChain() (above) will ALWAYS fail on
-                                       // Android (there are no mozroots or preinstalled root certificates),
-                                       // thus `errors` will ALWAYS have RemoteCertificateChainErrors.
-                                       // Android just verified the chain; clear RemoteCertificateChainErrors.
-                                       errors  &= ~SslPolicyErrors.RemoteCertificateChainErrors;
-                               }
-#endif
-
-                               if (policy != null && (!(policy is DefaultCertificatePolicy) || cb == null)) {
-                                       ServicePoint sp = null;
-                                       HttpWebRequest req = sender as HttpWebRequest;
-                                       if (req != null)
-                                               sp = req.ServicePointNoLock;
-                                       if (status11 == 0 && errors != 0)
-                                               status11 = GetStatusFromChain (chain);
-
-                                       // pre 2.0 callback
-                                       result = policy.CheckValidationResult (sp, leaf, req, status11);
-                                       user_denied = !result && !(policy is DefaultCertificatePolicy);
-                               }
-                               // If there's a 2.0 callback, it takes precedence
-                               if (ServerCertificateValidationCallback != null) {
-                                       result = ServerCertificateValidationCallback (sender, leaf, chain, errors);
-                                       user_denied = !result;
-                               }
-                               return new ValidationResult (result, user_denied, status11);
-                       }
-
-                       static int GetStatusFromChain (X509Chain chain)
-                       {
-                               long result = 0;
-                               foreach (var status in chain.ChainStatus) {
-                                       X509ChainStatusFlags flags = status.Status;
-                                       if (flags == X509ChainStatusFlags.NoError)
-                                               continue;
-
-                                       // CERT_E_EXPIRED
-                                       if ((flags & X509ChainStatusFlags.NotTimeValid) != 0) result = 0x800B0101;
-                                       // CERT_E_VALIDITYPERIODNESTING
-                                       else if ((flags & X509ChainStatusFlags.NotTimeNested) != 0) result = 0x800B0102;
-                                       // CERT_E_REVOKED
-                                       else if ((flags & X509ChainStatusFlags.Revoked) != 0) result = 0x800B010C;
-                                       // TRUST_E_CERT_SIGNATURE
-                                       else if ((flags & X509ChainStatusFlags.NotSignatureValid) != 0) result = 0x80096004;
-                                       // CERT_E_WRONG_USAGE
-                                       else if ((flags & X509ChainStatusFlags.NotValidForUsage) != 0) result = 0x800B0110;
-                                       // CERT_E_UNTRUSTEDROOT
-                                       else if ((flags & X509ChainStatusFlags.UntrustedRoot) != 0) result = 0x800B0109;
-                                       // CRYPT_E_NO_REVOCATION_CHECK
-                                       else if ((flags & X509ChainStatusFlags.RevocationStatusUnknown) != 0) result = 0x80092012;
-                                       // CERT_E_CHAINING
-                                       else if ((flags & X509ChainStatusFlags.Cyclic) != 0) result = 0x800B010A;
-                                       // TRUST_E_FAIL - generic
-                                       else if ((flags & X509ChainStatusFlags.InvalidExtension) != 0) result = 0x800B010B;
-                                       // CERT_E_UNTRUSTEDROOT
-                                       else if ((flags & X509ChainStatusFlags.InvalidPolicyConstraints) != 0) result = 0x800B010D;
-                                       // TRUST_E_BASIC_CONSTRAINTS
-                                       else if ((flags & X509ChainStatusFlags.InvalidBasicConstraints) != 0) result = 0x80096019;
-                                       // CERT_E_INVALID_NAME
-                                       else if ((flags & X509ChainStatusFlags.InvalidNameConstraints) != 0) result = 0x800B0114;
-                                       // CERT_E_INVALID_NAME
-                                       else if ((flags & X509ChainStatusFlags.HasNotSupportedNameConstraint) != 0) result = 0x800B0114;
-                                       // CERT_E_INVALID_NAME
-                                       else if ((flags & X509ChainStatusFlags.HasNotDefinedNameConstraint) != 0) result = 0x800B0114;
-                                       // CERT_E_INVALID_NAME
-                                       else if ((flags & X509ChainStatusFlags.HasNotPermittedNameConstraint) != 0) result = 0x800B0114;
-                                       // CERT_E_INVALID_NAME
-                                       else if ((flags & X509ChainStatusFlags.HasExcludedNameConstraint) != 0) result = 0x800B0114;
-                                       // CERT_E_CHAINING
-                                       else if ((flags & X509ChainStatusFlags.PartialChain) != 0) result = 0x800B010A;
-                                       // CERT_E_EXPIRED
-                                       else if ((flags & X509ChainStatusFlags.CtlNotTimeValid) != 0) result = 0x800B0101;
-                                       // TRUST_E_CERT_SIGNATURE
-                                       else if ((flags & X509ChainStatusFlags.CtlNotSignatureValid) != 0) result = 0x80096004;
-                                       // CERT_E_WRONG_USAGE
-                                       else if ((flags & X509ChainStatusFlags.CtlNotValidForUsage) != 0) result = 0x800B0110;
-                                       // CRYPT_E_NO_REVOCATION_CHECK
-                                       else if ((flags & X509ChainStatusFlags.OfflineRevocation) != 0) result = 0x80092012;
-                                       // CERT_E_ISSUERCHAINING
-                                       else if ((flags & X509ChainStatusFlags.NoIssuanceChainPolicy) != 0) result = 0x800B0107;
-                                       else result = 0x800B010B; // TRUST_E_FAIL - generic
-
-                                       break; // Exit the loop on the first error
-                               }
-                               return (int) result;
-                       }
-#if !MONOTOUCH
-                       static SslPolicyErrors GetErrorsFromChain (X509Chain chain)
-                       {
-                               SslPolicyErrors errors = SslPolicyErrors.None;
-                               foreach (var status in chain.ChainStatus) {
-                                       if (status.Status == X509ChainStatusFlags.NoError)
-                                               continue;
-                                       errors |= SslPolicyErrors.RemoteCertificateChainErrors;
-                                       break;
-                               }
-                               return errors;
-                       }
-
-                       static X509KeyUsageFlags s_flags = X509KeyUsageFlags.DigitalSignature  | 
-                                                       X509KeyUsageFlags.KeyAgreement |
-                                                       X509KeyUsageFlags.KeyEncipherment;
-                       // Adapted to System 2.0+ from TlsServerCertificate.cs
-                       //------------------------------
-                       // Note: this method only works for RSA certificates
-                       // DH certificates requires some changes - does anyone use one ?
-                       static bool CheckCertificateUsage (X509Certificate2 cert) 
-                       {
-                               try {
-                                       // certificate extensions are required for this
-                                       // we "must" accept older certificates without proofs
-                                       if (cert.Version < 3)
-                                               return true;
-
-                                       X509KeyUsageExtension kux = (cert.Extensions ["2.5.29.15"] as X509KeyUsageExtension);
-                                       X509EnhancedKeyUsageExtension eku = (cert.Extensions ["2.5.29.37"] as X509EnhancedKeyUsageExtension);
-                                       if (kux != null && eku != null) {
-                                               // RFC3280 states that when both KeyUsageExtension and 
-                                               // ExtendedKeyUsageExtension are present then BOTH should
-                                               // be valid
-                                               if ((kux.KeyUsages & s_flags) == 0)
-                                                       return false;
-                                               return eku.EnhancedKeyUsages ["1.3.6.1.5.5.7.3.1"] != null ||
-                                                       eku.EnhancedKeyUsages ["2.16.840.1.113730.4.1"] != null;
-                                       } else if (kux != null) {
-                                               return ((kux.KeyUsages & s_flags) != 0);
-                                       } else if (eku != null) {
-                                               // Server Authentication (1.3.6.1.5.5.7.3.1) or
-                                               // Netscape Server Gated Crypto (2.16.840.1.113730.4)
-                                               return eku.EnhancedKeyUsages ["1.3.6.1.5.5.7.3.1"] != null ||
-                                                       eku.EnhancedKeyUsages ["2.16.840.1.113730.4.1"] != null;
-                                       }
-
-                                       // last chance - try with older (deprecated) Netscape extensions
-                                       X509Extension ext = cert.Extensions ["2.16.840.1.113730.1.1"];
-                                       if (ext != null) {
-                                               string text = ext.NetscapeCertType (false);
-                                               return text.IndexOf ("SSL Server Authentication", StringComparison.Ordinal) != -1;
-                                       }
-                                       return true;
-                               } catch (Exception e) {
-                                       Console.Error.WriteLine ("ERROR processing certificate: {0}", e);
-                                       Console.Error.WriteLine ("Please, report this problem to the Mono team");
-                                       return false;
-                               }
-                       }
-
-                       // RFC2818 - HTTP Over TLS, Section 3.1
-                       // http://www.ietf.org/rfc/rfc2818.txt
-                       // 
-                       // 1.   if present MUST use subjectAltName dNSName as identity
-                       // 1.1.         if multiples entries a match of any one is acceptable
-                       // 1.2.         wildcard * is acceptable
-                       // 2.   URI may be an IP address -> subjectAltName.iPAddress
-                       // 2.1.         exact match is required
-                       // 3.   Use of the most specific Common Name (CN=) in the Subject
-                       // 3.1          Existing practice but DEPRECATED
-                       static bool CheckServerIdentity (MSX.X509Certificate cert, string targetHost) 
-                       {
-                               try {
-                                       MSX.X509Extension ext = cert.Extensions ["2.5.29.17"];
-                                       // 1. subjectAltName
-                                       if (ext != null) {
-                                               SubjectAltNameExtension subjectAltName = new SubjectAltNameExtension (ext);
-                                               // 1.1 - multiple dNSName
-                                               foreach (string dns in subjectAltName.DNSNames) {
-                                                       // 1.2 TODO - wildcard support
-                                                       if (Match (targetHost, dns))
-                                                               return true;
-                                               }
-                                               // 2. ipAddress
-                                               foreach (string ip in subjectAltName.IPAddresses) {
-                                                       // 2.1. Exact match required
-                                                       if (ip == targetHost)
-                                                               return true;
-                                               }
-                                       }
-                                       // 3. Common Name (CN=)
-                                       return CheckDomainName (cert.SubjectName, targetHost);
-                               } catch (Exception e) {
-                                       Console.Error.WriteLine ("ERROR processing certificate: {0}", e);
-                                       Console.Error.WriteLine ("Please, report this problem to the Mono team");
-                                       return false;
-                               }
-                       }
-
-                       static bool CheckDomainName (string subjectName, string targetHost)
-                       {
-                               string  domainName = String.Empty;
-                               Regex search = new Regex(@"CN\s*=\s*([^,]*)");
-                               MatchCollection elements = search.Matches(subjectName);
-                               if (elements.Count == 1) {
-                                       if (elements[0].Success)
-                                               domainName = elements[0].Groups[1].Value.ToString();
-                               }
-
-                               return Match (targetHost, domainName);
-                       }
-
-                       // ensure the pattern is valid wrt to RFC2595 and RFC2818
-                       // http://www.ietf.org/rfc/rfc2595.txt
-                       // http://www.ietf.org/rfc/rfc2818.txt
-                       static bool Match (string hostname, string pattern)
-                       {
-                               // check if this is a pattern
-                               int index = pattern.IndexOf ('*');
-                               if (index == -1) {
-                                       // not a pattern, do a direct case-insensitive comparison
-                                       return (String.Compare (hostname, pattern, true, CultureInfo.InvariantCulture) == 0);
-                               }
-
-                               // check pattern validity
-                               // A "*" wildcard character MAY be used as the left-most name component in the certificate.
-
-                               // unless this is the last char (valid)
-                               if (index != pattern.Length - 1) {
-                                       // then the next char must be a dot .'.
-                                       if (pattern [index + 1] != '.')
-                                               return false;
-                               }
-
-                               // only one (A) wildcard is supported
-                               int i2 = pattern.IndexOf ('*', index + 1);
-                               if (i2 != -1)
-                                       return false;
-
-                               // match the end of the pattern
-                               string end = pattern.Substring (index + 1);
-                               int length = hostname.Length - end.Length;
-                               // no point to check a pattern that is longer than the hostname
-                               if (length <= 0)
-                                       return false;
-
-                               if (String.Compare (hostname, length, end, 0, end.Length, true, CultureInfo.InvariantCulture) != 0)
-                                       return false;
-
-                               // special case, we start with the wildcard
-                               if (index == 0) {
-                                       // ensure we hostname non-matched part (start) doesn't contain a dot
-                                       int i3 = hostname.IndexOf ('.');
-                                       return ((i3 == -1) || (i3 >= (hostname.Length - end.Length)));
-                               }
-
-                               // match the start of the pattern
-                               string start = pattern.Substring (0, index);
-                               return (String.Compare (hostname, 0, start, 0, start.Length, true, CultureInfo.InvariantCulture) == 0);
-                       }
-#endif
-               }
-#endif
        }
 }
 
index fcee594ebcf50331e59976fa1645c32d1ca9c602..97d15a285e04ce081f0fee2028ccea25d83c0823 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if SECURITY_DEP
-
-#if MONOTOUCH || MONODROID
-using Mono.Security.Protocol.Tls;
-#else
-extern alias MonoSecurity;
-using MonoSecurity::Mono.Security.Protocol.Tls;
-#endif
-
-#endif
-
 using System.IO;
 using System.Collections;
 using System.Net.Sockets;
-using System.Reflection;
 using System.Security.Cryptography.X509Certificates;
 using System.Text;
 using System.Threading;
 using System.Diagnostics;
+using Mono.Net.Security;
 
 namespace System.Net
 {
@@ -93,16 +82,9 @@ namespace System.Net
                NtlmAuthState connect_ntlm_auth_state;
                HttpWebRequest connect_request;
 
-               bool ssl;
-               bool certsAvailable;
                Exception connect_exception;
                static object classLock = new object ();
-               static Type sslStream;
-#if !MONOTOUCH && !MONODROID
-               static PropertyInfo piClient;
-               static PropertyInfo piServer;
-               static PropertyInfo piTrustFailure;
-#endif
+               MonoTlsStream tlsStream;
 
 #if MONOTOUCH
                [System.Runtime.InteropServices.DllImport ("__Internal")]
@@ -237,34 +219,6 @@ namespace System.Net
                        }
                }
 
-               static void EnsureSSLStreamAvailable ()
-               {
-                       lock (classLock) {
-                               if (sslStream != null)
-                                       return;
-
-#if NET_2_1 && SECURITY_DEP
-                               sslStream = typeof (HttpsClientStream);
-#else
-                               // HttpsClientStream is an internal glue class in Mono.Security.dll
-                               sslStream = Type.GetType ("Mono.Security.Protocol.Tls.HttpsClientStream, " +
-                                                       Consts.AssemblyMono_Security, false);
-
-                               if (sslStream == null) {
-                                       string msg = "Missing Mono.Security.dll assembly. " +
-                                                       "Support for SSL/TLS is unavailable.";
-
-                                       throw new NotSupportedException (msg);
-                               }
-#endif
-#if !MONOTOUCH && !MONODROID
-                               piClient = sslStream.GetProperty ("SelectedClientCertificate");
-                               piServer = sslStream.GetProperty ("ServerCertificate");
-                               piTrustFailure = sslStream.GetProperty ("TrustFailure");
-#endif
-                       }
-               }
-
                bool CreateTunnel (HttpWebRequest request, Uri connectUri,
                                   Stream stream, out byte[] buffer)
                {
@@ -439,40 +393,31 @@ namespace System.Net
                                NetworkStream serverStream = new NetworkStream (socket, false);
 
                                if (request.Address.Scheme == Uri.UriSchemeHttps) {
-                                       ssl = true;
-                                       EnsureSSLStreamAvailable ();
-                                       if (!reused || nstream == null || nstream.GetType () != sslStream) {
+#if SECURITY_DEP
+                                       if (!reused || nstream == null || tlsStream == null) {
                                                byte [] buffer = null;
                                                if (sPoint.UseConnect) {
                                                        bool ok = CreateTunnel (request, sPoint.Address, serverStream, out buffer);
                                                        if (!ok)
                                                                return false;
                                                }
-#if SECURITY_DEP
-#if MONOTOUCH || MONODROID
-                                               nstream = new HttpsClientStream (serverStream, request.ClientCertificates, request, buffer);
-#else
-                                               object[] args = new object [4] { serverStream,
-                                                       request.ClientCertificates,
-                                                       request, buffer};
-                                               nstream = (Stream) Activator.CreateInstance (sslStream, args);
-#endif
-                                               SslClientStream scs = (SslClientStream) nstream;
-                                               var helper = new ServicePointManager.ChainValidationHelper (request, request.Address.Host);
-                                               scs.ServerCertValidation2 += new CertificateValidationCallback2 (helper.ValidateChain);
-#endif
-                                               certsAvailable = false;
+                                               tlsStream = new MonoTlsStream (request, serverStream);
+                                               nstream = tlsStream.CreateStream (buffer);
                                        }
                                        // we also need to set ServicePoint.Certificate 
                                        // and ServicePoint.ClientCertificate but this can
                                        // only be done later (after handshake - which is
                                        // done only after a read operation).
+#else
+                                       throw new NotSupportedException ();
+#endif
                                } else {
-                                       ssl = false;
                                        nstream = serverStream;
                                }
-                       } catch (Exception) {
-                               if (!request.Aborted)
+                       } catch (Exception ex) {
+                               if (tlsStream != null)
+                                       status = tlsStream.ExceptionStatus;
+                               else if (!request.Aborted)
                                        status = WebExceptionStatus.ConnectFailure;
                                return false;
                        }
@@ -623,21 +568,6 @@ namespace System.Net
                        return (statusCode >= 200 && statusCode != 204 && statusCode != 304);
                }
 
-               internal void GetCertificates (Stream stream) 
-               {
-                       // here the SSL negotiation have been done
-#if SECURITY_DEP && (MONOTOUCH || MONODROID)
-                       HttpsClientStream s = (stream as HttpsClientStream);
-                       X509Certificate client = s.SelectedClientCertificate;
-                       X509Certificate server = s.ServerCertificate;
-#else
-                       X509Certificate client = (X509Certificate) piClient.GetValue (stream, null);
-                       X509Certificate server = (X509Certificate) piServer.GetValue (stream, null);
-#endif
-                       sPoint.SetCertificates (client, server);
-                       certsAvailable = (server != null);
-               }
-
                internal static void InitRead (object state)
                {
                        WebConnection cnc = (WebConnection) state;
@@ -1142,9 +1072,6 @@ namespace System.Net
 
                        try {
                                s.Write (buffer, offset, size);
-                               // here SSL handshake should have been done
-                               if (ssl && !certsAvailable)
-                                       GetCertificates (s);
                        } catch (Exception e) {
                                err_msg = e.Message;
                                WebExceptionStatus wes = WebExceptionStatus.SendFailure;
@@ -1154,19 +1081,6 @@ namespace System.Net
                                        return false;
                                }
 
-                               // if SSL is in use then check for TrustFailure
-                               if (ssl) {
-#if SECURITY_DEP && (MONOTOUCH || MONODROID)
-                                       HttpsClientStream https = (s as HttpsClientStream);
-                                       if (https.TrustFailure) {
-#else
-                                       if ((bool) piTrustFailure.GetValue (s , null)) {
-#endif
-                                               wes = WebExceptionStatus.TrustFailure;
-                                               msg = "Trust failure";
-                                       }
-                               }
-
                                HandleError (wes, e, msg);
                                return false;
                        }
index 8dd7b3ea4ab706a0fb042157b3e8e2e706ac4c40..967a4eb0fafacd31913ede4d5ac739008cbf08a0 100644 (file)
@@ -206,8 +206,12 @@ namespace System.Net
                        if (split && IsMultiValue (header)) {
                                List<string> separated = null;
                                foreach (var value in values) {
-                                       if (value.IndexOf (',') < 0)
+                                       if (value.IndexOf (',') < 0) {
+                                               if (separated != null)
+                                                       separated.Add (value);
+                                               
                                                continue;
+                                       }
 
                                        if (separated == null) {
                                                separated = new List<string> (values.Length + 1);
index efb06fe9aa82385b6a9df86d0c63fb8c121111b2..ae1159958aa3ef0738f811e29f27e2cd640cc61b 100644 (file)
@@ -40,6 +40,7 @@ using System.Net.Security;
 using System.Net.Cache;
 using System.Security.Principal;
 using System.Threading.Tasks;
+using System.Text.RegularExpressions;
 
 #if NET_2_1
 using ConfigurationException = System.ArgumentException;
@@ -332,6 +333,19 @@ namespace System.Net
                        throw GetMustImplement ();
                }
                
+               // Takes an ArrayList of fileglob-formatted strings and returns an array of Regex-formatted strings
+               private static string[] CreateBypassList (ArrayList al)
+               {
+                       string[] result = al.ToArray (typeof (string)) as string[];
+                       for (int c = 0; c < result.Length; c++)
+                       {
+                               result [c] = "^" +
+                                       Regex.Escape (result [c]).Replace (@"\*", ".*").Replace (@"\?", ".") +
+                                       "$";
+                       }
+                       return result;
+               }
+
                [MonoTODO("Look in other places for proxy config info")]
                public static IWebProxy GetSystemWebProxy ()
                {
@@ -375,7 +389,7 @@ namespace System.Net
                                                }
                                        }
                                        
-                                       return new WebProxy (strHttpProxy, bBypassOnLocal, al.ToArray (typeof(string)) as string[]);
+                                       return new WebProxy (strHttpProxy, bBypassOnLocal, CreateBypassList (al));
                                }
                        } else {
 #endif
@@ -425,7 +439,7 @@ namespace System.Net
                                                        }
                                                }
                                                
-                                               return new WebProxy (uri, bBypassOnLocal, al.ToArray (typeof(string)) as string[]);
+                                               return new WebProxy (uri, bBypassOnLocal, CreateBypassList (al));
                                        } catch (UriFormatException) {
                                        }
                                }
diff --git a/mcs/class/System/System.Runtime.InteropServices/ChangeLog b/mcs/class/System/System.Runtime.InteropServices/ChangeLog
deleted file mode 100644 (file)
index ca83262..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-2007-09-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * HandleCollector.cs : new file.
-
-2007-03-12  Raja R Harinath  <rharinath@novell.com>
-
-       * StandardOleMarshalObject.cs: New .net2.0 class.
-       * DefaultParameterValueAttribute.cs: Move here from corlib.
-
diff --git a/mcs/class/System/System.Runtime.InteropServices/DefaultParameterValueAttribute.cs b/mcs/class/System/System.Runtime.InteropServices/DefaultParameterValueAttribute.cs
deleted file mode 100644 (file)
index e8988f0..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// System.Runtime.InteropServices.DefaultParameterValueAttribute.cs
-//
-// Author: Zoltan Varga (vargaz@gmail.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-       [AttributeUsage (AttributeTargets.Parameter)]
-       public sealed class DefaultParameterValueAttribute : Attribute
-       {
-               object value;
-               
-               public DefaultParameterValueAttribute (object value)
-               {
-                       this.value = value;
-               }
-
-               public object Value {
-                       get {
-                               return value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.Runtime.InteropServices/HandleCollector.cs b/mcs/class/System/System.Runtime.InteropServices/HandleCollector.cs
deleted file mode 100644 (file)
index ff51de2..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// HandleCollector.cs
-//
-// Author: Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices
-{
-       public sealed class HandleCollector
-       {
-               int count;
-               readonly int init, max;
-               readonly string name;
-               DateTime previous_collection = DateTime.MinValue;
-
-               public HandleCollector (string name, int initialThreshold)
-                       : this (name, initialThreshold, int.MaxValue)
-               {
-               }
-
-               public HandleCollector (string name, int initialThreshold, int maximumThreshold)
-               {
-                       if (initialThreshold < 0)
-                               throw new ArgumentOutOfRangeException ("initialThreshold", "initialThreshold must not be less than zero");
-                       if (maximumThreshold < 0)
-                               throw new ArgumentOutOfRangeException ("maximumThreshold", "maximumThreshold must not be less than zero");
-                       if (maximumThreshold < initialThreshold)
-                               throw new ArgumentException ("maximumThreshold must not be less than initialThreshold");
-
-                       this.name = name;
-                       init = initialThreshold;
-                       max = maximumThreshold;
-               }
-
-               public int Count {
-                       get { return count; }
-               }
-
-               public int InitialThreshold {
-                       get { return init; }
-               }
-
-               public int MaximumThreshold {
-                       get { return max; }
-               }
-
-               public string Name {
-                       get { return name; }
-               }
-
-               public void Add ()
-               {
-/* NET_3_5
-                       if (++count >= max)
-                               GC.Collect (GC.MaxGeneration, GCCollectionMode.Forced);
-                       else if (count >= init)
-                               GC.Collect (GC.MaxGeneration, GCCollectionMode.Optimized);
-*/
-                       if (++count >= max)
-                               GC.Collect (GC.MaxGeneration);
-                       else if (count >= init && DateTime.Now - previous_collection > TimeSpan.FromSeconds (5)) { // some arbitrary criteria
-                               GC.Collect (GC.MaxGeneration);
-                               previous_collection = DateTime.Now;
-                       }
-               }
-
-               public void Remove ()
-               {
-                       if (count == 0)
-                               throw new InvalidOperationException ("Cannot call Remove method when Count is 0");
-                       count--;
-               }
-       }
-}
-
index 4dc4e0a1560032964690910ab9ac72473df08d26..184e586471dd30c167be16eca420d930c5c12bfb 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 #if SECURITY_DEP
+#if MONO_X509_ALIAS
+extern alias PrebuiltSystem;
+#endif
 
-#if MONOTOUCH || MONODROID
-using MSX = Mono.Security.X509;
+#if MONO_X509_ALIAS
+using XX509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
 #else
-extern alias MonoSecurity;
-using MSX = MonoSecurity::Mono.Security.X509;
+using XX509CertificateCollection = System.Security.Cryptography.X509Certificates.X509CertificateCollection;
 #endif
 
 using System;
@@ -44,6 +46,9 @@ namespace System.Security.Cryptography.X509Certificates {
                [DllImport (SecurityLibrary)]
                extern static /* OSStatus */ int SecTrustCreateWithCertificates (IntPtr certOrCertArray, IntPtr policies, out IntPtr sectrustref);
                
+               [DllImport (SecurityLibrary)]
+               extern static /* OSStatus */ int SecTrustSetAnchorCertificates (IntPtr /* SecTrustRef */ trust, IntPtr /* CFArrayRef */ anchorCertificates);
+
                [DllImport (SecurityLibrary)]
                extern static IntPtr SecPolicyCreateSSL ([MarshalAs (UnmanagedType.I1)] bool server, IntPtr cfStringHostname);
                
@@ -56,6 +61,9 @@ namespace System.Security.Cryptography.X509Certificates {
                [DllImport (CoreFoundationLibrary)]
                unsafe extern static IntPtr CFDataCreate (IntPtr allocator, byte *bytes, /* CFIndex */ IntPtr length);
 
+               [DllImport (CoreFoundationLibrary)]
+               extern static void CFRetain (IntPtr handle);
+
                [DllImport (CoreFoundationLibrary)]
                extern static void CFRelease (IntPtr handle);
 
@@ -92,59 +100,98 @@ namespace System.Security.Cryptography.X509Certificates {
                                        IntPtr.Zero);
                        }
                }
+
+               static IntPtr GetCertificate (X509Certificate certificate, out IntPtr dataPtr)
+               {
+                       var handle = certificate.Handle;
+                       if (handle != IntPtr.Zero) {
+                               dataPtr = IntPtr.Zero;
+                               CFRetain (handle);
+                               return handle;
+                       }
+                       dataPtr = MakeCFData (certificate.GetRawCertData ());
+                       return SecCertificateCreateWithData (IntPtr.Zero, dataPtr);
+               }
                
-               public static SecTrustResult TrustEvaluateSsl (MSX.X509CertificateCollection certificates, string host)
+               public static SecTrustResult TrustEvaluateSsl (XX509CertificateCollection certificates, XX509CertificateCollection anchors, string host)
                {
                        if (certificates == null)
                                return SecTrustResult.Deny;
 
                        try {
-                               return _TrustEvaluateSsl (certificates, host);
+                               return _TrustEvaluateSsl (certificates, anchors, host);
                        } catch {
                                return SecTrustResult.Deny;
                        }
                }
-               
-               static SecTrustResult _TrustEvaluateSsl (MSX.X509CertificateCollection certificates, string hostName)
+
+               static SecTrustResult _TrustEvaluateSsl (XX509CertificateCollection certificates, XX509CertificateCollection anchors, string hostName)
                {
                        int certCount = certificates.Count;
+                       int anchorCount = anchors != null ? anchors.Count : 0;
                        IntPtr [] cfDataPtrs = new IntPtr [certCount];
                        IntPtr [] secCerts = new IntPtr [certCount];
+                       IntPtr [] cfDataAnchorPtrs = new IntPtr [anchorCount];
+                       IntPtr [] secCertAnchors = new IntPtr [anchorCount];
                        IntPtr certArray = IntPtr.Zero;
+                       IntPtr anchorArray = IntPtr.Zero;
                        IntPtr sslsecpolicy = IntPtr.Zero;
                        IntPtr host = IntPtr.Zero;
                        IntPtr sectrust = IntPtr.Zero;
                        SecTrustResult result = SecTrustResult.Deny;
 
                        try {
-                               for (int i = 0; i < certCount; i++)
-                                       cfDataPtrs [i] = MakeCFData (certificates [i].RawData);
-                               
-                               for (int i = 0; i < certCount; i++){
-                                       secCerts [i] = SecCertificateCreateWithData (IntPtr.Zero, cfDataPtrs [i]);
+                               for (int i = 0; i < certCount; i++) {
+                                       secCerts [i] = GetCertificate (certificates [i], out cfDataPtrs [i]);
                                        if (secCerts [i] == IntPtr.Zero)
                                                return SecTrustResult.Deny;
                                }
+
+                               for (int i = 0; i < anchorCount; i++) {
+                                       secCertAnchors [i] = GetCertificate (anchors [i], out cfDataAnchorPtrs [i]);
+                                       if (secCertAnchors [i] == IntPtr.Zero)
+                                               return SecTrustResult.Deny;
+                               }
+
                                certArray = FromIntPtrs (secCerts);
+
                                host = CFStringCreateWithCharacters (IntPtr.Zero, hostName, (IntPtr) hostName.Length);
                                sslsecpolicy = SecPolicyCreateSSL (true, host);
 
                                int code = SecTrustCreateWithCertificates (certArray, sslsecpolicy, out sectrust);
-                               if (code == 0)
-                                       code = SecTrustEvaluate (sectrust, out result);
+                               if (code != 0)
+                                       return SecTrustResult.Deny;
+
+                               if (anchorCount > 0) {
+                                       anchorArray = FromIntPtrs (secCertAnchors);
+                                       SecTrustSetAnchorCertificates (sectrust, anchorArray);
+                               }
+
+                               code = SecTrustEvaluate (sectrust, out result);
                                return result;
                        } finally {
                                for (int i = 0; i < certCount; i++)
                                        if (cfDataPtrs [i] != IntPtr.Zero)
                                                CFRelease (cfDataPtrs [i]);
 
+                               for (int i = 0; i < anchorCount; i++)
+                                       if (cfDataAnchorPtrs [i] != IntPtr.Zero)
+                                               CFRelease (cfDataAnchorPtrs [i]);
+
                                if (certArray != IntPtr.Zero)
                                        CFRelease (certArray);
+
+                               if (anchorArray != IntPtr.Zero)
+                                       CFRelease (anchorArray);
                                
                                for (int i = 0; i < certCount; i++)
                                        if (secCerts [i] != IntPtr.Zero)
                                                CFRelease (secCerts [i]);
 
+                               for (int i = 0; i < anchorCount; i++)
+                                       if (secCertAnchors [i] != IntPtr.Zero)
+                                               CFRelease (secCertAnchors [i]);
+
                                if (sslsecpolicy != IntPtr.Zero)
                                        CFRelease (sslsecpolicy);
                                if (host != IntPtr.Zero)
index 007db0a6ac36549733e45e401bec113df4c39428..15641f264213831c7846be0b0492b33f3948297c 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security;
-using Mono.Security.Cryptography;
-using MSX = Mono.Security.X509;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
 using MonoSecurity::Mono.Security;
 using MonoSecurity::Mono.Security.Cryptography;
 using MSX = MonoSecurity::Mono.Security.X509;
+#else
+using Mono.Security;
+using Mono.Security.Cryptography;
+using MSX = Mono.Security.X509;
 #endif
 
 namespace System.Security.Cryptography.X509Certificates {
index f072f7759a4d66ed9b9f22f7fdf8282685a68c8c..0681e9eb5d7c6c4056b0c3008d8c34104f9db8ee 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security;
-using MX = Mono.Security.X509;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
 using MonoSecurity::Mono.Security;
 using MX = MonoSecurity::Mono.Security.X509;
+#else
+using Mono.Security;
+using MX = Mono.Security.X509;
 #endif
 
 using System.Collections;
index 1b9c70a588fb86fc4f86d703fe95a2067f4474d2..d2a9b316c4b3ba43ba2d0db9b7faee39e0d5ef4c 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
 using MonoSecurity::Mono.Security;
+#else
+using Mono.Security;
 #endif
 
 using System.Text;
index fdc87776e6796661479feb4458a03681d3069ba7..afb81cb1ab77e0488174477741d71bf0e3d766c3 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security;
-using Mono.Security.Cryptography;
-using MX = Mono.Security.X509;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
-
 using MonoSecurity::Mono.Security;
 using MonoSecurity::Mono.Security.Cryptography;
 using MX = MonoSecurity::Mono.Security.X509;
+#else
+using Mono.Security;
+using Mono.Security.Cryptography;
+using MX = Mono.Security.X509;
 #endif
 
 #endif
@@ -534,6 +533,42 @@ namespace System.Security.Cryptography.X509Certificates {
                        Import (rawData, (string)null, keyStorageFlags);
                }
 
+               [MonoTODO ("X509ContentType.SerializedCert is not supported")]
+               public override byte[] Export (X509ContentType contentType, string password)
+               {
+                       if (_cert == null)
+                               throw new CryptographicException (empty_error);
+
+                       switch (contentType) {
+                       case X509ContentType.Cert:
+                               return _cert.RawData;
+                       case X509ContentType.Pfx: // this includes Pkcs12
+                               return ExportPkcs12 (password);
+                       case X509ContentType.SerializedCert:
+                               // TODO
+                               throw new NotSupportedException ();
+                       default:
+                               string msg = Locale.GetText ("This certificate format '{0}' cannot be exported.", contentType);
+                               throw new CryptographicException (msg);
+                       }
+               }
+
+               byte[] ExportPkcs12 (string password)
+               {
+                       var pfx = new MX.PKCS12 ();
+                       try {
+                               if (password != null)
+                                       pfx.Password = password;
+                               pfx.AddCertificate (_cert);
+                               var privateKey = PrivateKey;
+                               if (privateKey != null)
+                                       pfx.AddPkcs8ShroudedKeyBag (privateKey);
+                               return pfx.GetBytes ();
+                       } finally {
+                               pfx.Password = null;
+                       }
+               }
+
                public override void Reset () 
                {
                        _cert = null;
index 7dfb699ef349b78611b90500d79cd840b8d7f1ab..9910f3982705c9187eb3a6e9415a507cd9b3e61a 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using MX = Mono.Security.X509;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
 using MX = MonoSecurity::Mono.Security.X509;
+#else
+using MX = Mono.Security.X509;
 #endif
 
 using System.Collections;
index 1312a99d86b2bf35da4f818366fbd4f0226879ed..92007a397d4fd040e8a65f134b55a5a4bbd91662 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
 using MonoSecurity::Mono.Security;
+#else
+using Mono.Security;
 #endif
 
 using System.Text;
index e7f098dbdf130f845a81f094042d3315b061bb23..704b3d3749fb03c9fd0c5290efca4ca11a47e054 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security;
-using MX = Mono.Security.X509;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
 using MonoSecurity::Mono.Security;
 using MX = MonoSecurity::Mono.Security.X509;
+#else
+using Mono.Security;
+using MX = Mono.Security.X509;
 #endif
 
 using System.Collections;
index a4b2af18ee00a444946b9fc3d56ad49dc23f4782..15de9f7b3cce674e63d8f7dd3a41c22ae2bbe0a0 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
 using MonoSecurity::Mono.Security;
+#else
+using Mono.Security;
 #endif
 
 using System.Text;
index 02de8cec747d0d2504d317ab2e3cc705f10eb9cd..42b6c6e3d44dc65bdbf2d8838f498fdd51ed0c33 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using MX = Mono.Security.X509;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
 using MX = MonoSecurity::Mono.Security.X509;
+#else
+using MX = Mono.Security.X509;
 #endif
 
 using System.Security.Permissions;
index b5a4c23e55587576ddc527f6bea8695fdc2fe30c..89e7afb963c119867ef2340516653ac879ac7855 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security;
-using Mono.Security.Cryptography;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
 using MonoSecurity::Mono.Security;
 using MonoSecurity::Mono.Security.Cryptography;
+#else
+using Mono.Security;
+using Mono.Security.Cryptography;
 #endif
 
 using System.Text;
index 5d0cb71100851b74b1e330fcbb451cd935b5460c..99860521102f983a62be9679c90bfa724b77610c 100644 (file)
 
 #if SECURITY_DEP
 
-#if MONOTOUCH || MONODROID
-using Mono.Security;
-using Mono.Security.Cryptography;
-#else
+#if MONO_SECURITY_ALIAS
 extern alias MonoSecurity;
 using MonoSecurity::Mono.Security;
 using MonoSecurity::Mono.Security.Cryptography;
+#else
+using Mono.Security;
+using Mono.Security.Cryptography;
 #endif
 
 using System.Security.Cryptography.X509Certificates;
index dcde0fa57f61468954e8aaa686347ff89c8526ef..6b3ac78003c7c932cdf4a75e71cda945364cec6c 100644 (file)
@@ -222,11 +222,6 @@ System.Net/AuthenticationSchemeSelector.cs
 System.Net/Authorization.cs
 System.Net/BasicClient.cs
 System.Net/BindIPEndPoint.cs
-System.Net.Cache/HttpCacheAgeControl.cs
-System.Net.Cache/HttpRequestCacheLevel.cs
-System.Net.Cache/HttpRequestCachePolicy.cs
-System.Net.Cache/RequestCacheLevel.cs
-System.Net.Cache/RequestCachePolicy.cs
 System.Net/ChunkedInputStream.cs
 System.Net/ChunkStream.cs
 System.Net.Configuration/AuthenticationModuleElementCollection.cs
@@ -342,11 +337,36 @@ System.Net.Mail/SmtpFailedRecipientsException.cs
 System.Net.Mail/SmtpPermission.cs
 System.Net.Mail/SmtpPermissionAttribute.cs
 System.Net.Mail/SmtpStatusCode.cs
-System.Net.Mime/ContentDisposition.cs
-System.Net.Mime/ContentType.cs
-System.Net.Mime/DispositionTypeNames.cs
-System.Net.Mime/MediaTypeNames.cs
-System.Net.Mime/TransferEncoding.cs
+../../../external/referencesource/System/net/System/Net/mail/Base64Stream.cs
+../../../external/referencesource/System/net/System/Net/mail/Base64WriteStateInfo.cs
+../../../external/referencesource/System/net/System/Net/mail/BaseWriter.cs
+../../../external/referencesource/System/net/System/Net/mail/BufferBuilder.cs
+../../../external/referencesource/System/net/System/Net/mail/ClosableStream.cs
+../../../external/referencesource/System/net/System/Net/mail/ContentDisposition.cs
+../../../external/referencesource/System/net/System/Net/mail/ContentType.cs
+../../../external/referencesource/System/net/System/Net/mail/DelegatedStream.cs
+../../../external/referencesource/System/net/System/Net/mail/DispositionTypeNames.cs
+../../../external/referencesource/System/net/System/Net/mail/EightBitStream.cs
+../../../external/referencesource/System/net/System/Net/mail/EncodedStreamFactory.cs
+../../../external/referencesource/System/net/System/Net/mail/HeaderCollection.cs
+../../../external/referencesource/System/net/System/Net/mail/IEncodableStream.cs
+../../../external/referencesource/System/net/System/Net/mail/MailBnfHelper.cs
+../../../external/referencesource/System/net/System/Net/mail/MailHeaderInfo.cs
+../../../external/referencesource/System/net/System/Net/mail/MimeBasePart.cs
+../../../external/referencesource/System/net/System/Net/mail/MimeEmbeddedMessagePart.cs
+../../../external/referencesource/System/net/System/Net/mail/MimeMultiPart.cs
+../../../external/referencesource/System/net/System/Net/mail/MimeMultiPartType.cs
+../../../external/referencesource/System/net/System/Net/mail/MimePart.cs
+../../../external/referencesource/System/net/System/Net/mail/MimeWriter.cs
+../../../external/referencesource/System/net/System/Net/mail/MultiAsyncResult.cs
+../../../external/referencesource/System/net/System/Net/mail/QEncodedStream.cs
+../../../external/referencesource/System/net/System/Net/mail/QuotedPrintableStream.cs
+../../../external/referencesource/System/net/System/Net/mail/SmtpDateTime.cs
+../../../external/referencesource/System/net/System/Net/mail/TrackingStringDictionary.cs
+../../../external/referencesource/System/net/System/Net/mail/TrackingValidationObjectDictionary.cs
+../../../external/referencesource/System/net/System/Net/mail/TransferEncoding.cs
+../../../external/referencesource/System/net/System/Net/mail/WriteStateInfoBase.cs
+../../../external/referencesource/System/net/System/Net/mail/mediatypenames.cs
 System.Net/MacProxy.cs
 System.Net/MonoHttpDate.cs
 System.Net/NetConfig.cs
@@ -405,12 +425,11 @@ System/NetPipeStyleUriParser.cs
 System.Net/ProtocolViolationException.cs
 System.Net/RequestStream.cs
 System.Net/ResponseStream.cs
-System.Net.Security/AuthenticatedStream.cs
-System.Net.Security/AuthenticationLevel.cs
+../../../external/referencesource/System/net/System/Net/SecureProtocols/AuthenticatedStream.cs
+../../../external/referencesource/System/net/System/Net/SecureProtocols/NegotiateEnumTypes.cs
 System.Net.Security/EncryptionPolicy.cs
 System.Net.Security/LocalCertificateSelectionCallback.cs
 System.Net.Security/NegotiateStream.cs
-System.Net.Security/ProtectionLevel.cs
 System.Net/SecurityProtocolType.cs
 System.Net.Security/RemoteCertificateValidationCallback.cs
 System.Net.Security/SslStream.cs
@@ -422,37 +441,35 @@ System.Net/SimpleAsyncResult.cs
 System.Net/SocketAddress.cs
 System.Net/SocketPermissionAttribute.cs
 System.Net/SocketPermission.cs
-System.Net.Sockets/AddressFamily.cs
-System.Net.Sockets/IOControlCode.cs
-System.Net.Sockets/IPv6MulticastOption.cs
-System.Net.Sockets/IPPacketInformation.cs
-System.Net.Sockets/LingerOption.cs
-System.Net.Sockets/MulticastOption.cs
-System.Net.Sockets/NetworkStream.cs
-System.Net.Sockets/ProtocolFamily.cs
-System.Net.Sockets/ProtocolType.cs
+../../../external/referencesource/System/net/System/Net/Sockets/AddressFamily.cs
+../../../external/referencesource/System/net/System/Net/Sockets/IOControlCode.cs
+../../../external/referencesource/System/net/System/Net/Sockets/IPPacketInformation.cs
+../../../external/referencesource/System/net/System/Net/Sockets/LingerOption.cs
+../../../external/referencesource/System/net/System/Net/Sockets/MulticastOption.cs
+../../../external/referencesource/System/net/System/Net/Sockets/ProtocolFamily.cs
+../../../external/referencesource/System/net/System/Net/Sockets/ProtocolType.cs
 System.Net.Sockets/SafeSocketHandle.cs
-System.Net.Sockets/SelectMode.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SelectMode.cs
 System.Net.Sockets/SendPacketsElement.cs
 System.Net.Sockets/Socket.cs
 System.Net.Sockets/SocketAsyncEventArgs.cs
 System.Net.Sockets/SocketAsyncOperation.cs
 System.Net.Sockets/SocketAsyncResult.cs
-System.Net.Sockets/SocketError.cs
-System.Net.Sockets/SocketException.cs
-System.Net.Sockets/SocketFlags.cs
-System.Net.Sockets/SocketInformation.cs
-System.Net.Sockets/SocketInformationOptions.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketErrors.cs
+../../../external/referencesource/System/net/System/Net/SocketException.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketFlags.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketInformation.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketInformationOptions.cs
 System.Net.Sockets/SocketOperation.cs
-System.Net.Sockets/SocketOptionLevel.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketOptionLevel.cs
 ../../../external/referencesource/System/net/System/Net/Sockets/SocketOptionName.cs
-System.Net.Sockets/SocketShutdown.cs
-System.Net.Sockets/SocketType.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketShutdown.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketType.cs
 System.Net.Sockets/TcpClient.cs
 System.Net.Sockets/TcpListener.cs
-System.Net.Sockets/TransmitFileOptions.cs
+../../../external/referencesource/System/net/System/Net/Sockets/TransmitFileFlags.cs
 System.Net.Sockets/UdpClient.cs
-System.Net.Sockets/UdpReceiveResult.cs
+../../../external/referencesource/System/net/System/Net/Sockets/UdpReceiveResult.cs
 System/NetTcpStyleUriParser.cs
 System.Net/TransportContext.cs
 System.Net/TransportType.cs
@@ -554,16 +571,9 @@ System.Threading/ThreadExceptionEventArgs.cs
 System.Threading/ThreadExceptionEventHandler.cs
 System.Timers/ElapsedEventArgs.cs
 System/UriBuilder.cs
-System/UriComponents.cs
 System/Uri.cs
-System/UriFormat.cs
-System/UriFormatException.cs
-System/UriHostNameType.cs
 System/UriHelper.cs
-System/UriIdnScope.cs
-System/UriKind.cs
 System/UriParser.cs
-System/UriPartial.cs
 System/UriTypeConverter.cs
 System/UriElements.cs
 System/UriParseComponents.cs
@@ -571,8 +581,6 @@ System.Web/AspNetHostingPermissionAttribute.cs
 System.Web/AspNetHostingPermission.cs
 System.Web/AspNetHostingPermissionLevel.cs
 
-System.Runtime.InteropServices/DefaultParameterValueAttribute.cs
-System.Runtime.InteropServices/HandleCollector.cs
 System.Runtime.InteropServices/StandardOleMarshalObject.cs
 System.Runtime.InteropServices.ComTypes/ADVF.cs
 System.Runtime.InteropServices.ComTypes/DATADIR.cs
@@ -614,20 +622,45 @@ System.Windows.Input/ICommand.cs
 
 System/IOSelector.cs
 
+Mono.Net.Security/CallbackHelpers.cs
+Mono.Net.Security/ChainValidationHelper.cs
+Mono.Net.Security/IMonoTlsProvider.cs
+Mono.Net.Security/IMonoSslStream.cs
+Mono.Net.Security/LegacySslStream.cs
+Mono.Net.Security/MonoDefaultTlsProvider.cs
+Mono.Net.Security/MonoSslStreamImpl.cs
+Mono.Net.Security/MonoSslStreamWrapper.cs
+Mono.Net.Security/MonoTlsProviderFactory.cs
+Mono.Net.Security/MonoTlsProviderImpl.cs
+Mono.Net.Security/MonoTlsProviderWrapper.cs
+Mono.Net.Security/MonoTlsStream.cs
+Mono.Net.Security/NoReflectionHelper.cs
+Mono.Net.Security/SystemCertificateValidator.cs
+
 ReferenceSources/AssertWrapper.cs
 ReferenceSources/BinaryCompatibility.cs
 ReferenceSources/ConfigurationManagerInternalFactory.cs
+ReferenceSources/Internal.cs
 ReferenceSources/HttpSysSettings.cs
 ReferenceSources/Logging.cs
 ReferenceSources/NativeMethods.cs
 ReferenceSources/SettingsSectionInternal.cs
 ReferenceSources/Socket.cs
 ReferenceSources/SR.cs
+ReferenceSources/SR2.cs
 ReferenceSources/SRCategoryAttribute.cs
 ReferenceSources/SystemNetworkCredential.cs
 ReferenceSources/WebHeaderCollectionType.cs
 ReferenceSources/Win32Exception.cs
 
+ReferenceSources/SSPIConfiguration.cs
+ReferenceSources/SSPISafeHandles.cs
+ReferenceSources/SSPIWrapper.cs
+ReferenceSources/SslStream.cs
+ReferenceSources/_SecureChannel.cs
+ReferenceSources/_SslState.cs
+ReferenceSources/_SslStream.cs
+
 ../../../external/referencesource/System/misc/PrivilegedConfigurationManager.cs
 ../../../external/referencesource/System/regex/system/text/regularexpressions/Regex.cs
 ../../../external/referencesource/System/regex/system/text/regularexpressions/RegexBoyerMoore.cs
@@ -993,6 +1026,11 @@ ReferenceSources/Win32Exception.cs
 ../../../external/referencesource/System/compmod/system/diagnostics/TypedElement.cs
 ../../../external/referencesource/System/compmod/system/diagnostics/XmlWriterTraceListener.cs
 
+../../../external/referencesource/System/net/System/UriEnumTypes.cs
+../../../external/referencesource/System/net/System/URIFormatException.cs
+../../../external/referencesource/System/net/System/UriHostNameType.cs
+../../../external/referencesource/System/net/System/URIPartial.cs
+
 ../../../external/referencesource/System/net/System/Net/_BufferOffsetSize.cs
 ../../../external/referencesource/System/net/System/Net/_LazyAsyncResult.cs
 ../../../external/referencesource/System/net/System/Net/_LoggingObject.cs
@@ -1005,16 +1043,23 @@ ReferenceSources/Win32Exception.cs
 ../../../external/referencesource/System/net/System/Net/Internal.cs
 ../../../external/referencesource/System/net/System/Net/UnicodeDecodingConformance.cs
 ../../../external/referencesource/System/net/System/Net/UnicodeEncodingConformance.cs
+../../../external/referencesource/System/net/System/Net/ServicePointManager.cs
 ../../../external/referencesource/System/net/System/Net/webclient.cs
 ../../../external/referencesource/System/net/System/Net/WebPermission.cs
 ../../../external/referencesource/System/net/System/Net/WebUtility.cs
 ../../../external/referencesource/System/net/System/Net/WriteStreamClosedEventArgs.cs
 
+../../../external/referencesource/System/net/System/Net/Cache/RequestCachePolicy.cs
+
+../../../external/referencesource/System/net/System/Net/Sockets/IPProtectionLevel.cs
+../../../external/referencesource/System/net/System/Net/Sockets/NetworkStream.cs
+
 ../../../external/referencesource/System/net/System/Net/NetworkInformation/IPInterfaceStatistics.cs
 ../../../external/referencesource/System/net/System/Net/NetworkInformation/ScopeLevel.cs
 ../../../external/referencesource/System/net/System/Net/NetworkInformation/UnicastIPAddressInformation.cs
 
-../../../external/referencesource/System/net/System/Net/Sockets/IPProtectionLevel.cs
+../../../external/referencesource/System/sys/system/runtime/interopservices/DefaultParameterValueAttribute.cs
+../../../external/referencesource/System/sys/system/runtime/interopservices/handlecollector.cs
 
 ../../../external/referencesource/System/sys/system/runtime/versioning/FrameworkName.cs
 
index e2e89448d18c80e02e9a17b116b8e040054e4541..1f010668d722f454e024aecb54db05e68905f3a6 100644 (file)
@@ -76,11 +76,11 @@ namespace System {
                }
 
 #if SECURITY_DEP
-               internal static bool TrustEvaluateSsl (MSX.X509CertificateCollection collection, object sender, X509Certificate2 certificate, X509Chain chain, SslPolicyErrors errors)
+               internal static bool TrustEvaluateSsl (X509CertificateCollection collection)
                {
                        var certsRawData = new List <byte[]> (collection.Count);
-                       foreach (MSX.X509Certificate cert in collection)
-                               certsRawData.Add (cert.RawData);
+                       foreach (var cert in collection)
+                               certsRawData.Add (cert.GetRawCertData ());
                        return trustEvaluateSsl (certsRawData);
                }
 #endif  // SECURITY_DEP
index b5b2753b55db9bc6f27c23dc5ee5caefb1774186..094eb13d0bb44617d47ab5a1c3c8eb4f2aa290d7 100644 (file)
@@ -371,7 +371,7 @@ namespace System {
                        if ((path.Length == 0 || path [0] != '/') && baseEl.delimiter == SchemeDelimiter)
                                path = "/" + path;
 
-                       source += UriHelper.Reduce (path, true);
+                       source += UriHelper.Reduce (path, !IriParsing);
 
                        if (relativeEl.query != null) {
                                canUseBase = false;
@@ -800,6 +800,18 @@ namespace System {
                        return (((i >= 0x41) && (i <= 0x5A)) || ((i >= 0x61) && (i <= 0x7A)));
                }
 
+               // taken from referencesource/System/net/System/URI.cs
+               private static bool IsAsciiLetter(char character) {
+
+                       return  (character >= 'a' && character <= 'z') ||
+                                       (character >= 'A' && character <= 'Z');
+               }
+
+               internal static bool IsAsciiLetterOrDigit(char character) {
+                       return IsAsciiLetter (character) || (character >= '0' && character <= '9');
+               }
+               //
+
                public override bool Equals (object comparand) 
                {
                        if (comparand == null) 
@@ -1777,7 +1789,7 @@ namespace System {
 
                // static methods
 
-               private const int MaxUriLength = 32766;
+               private const int MaxUriLength = 0xfff0;
 
                public static int Compare (Uri uri1, Uri uri2, UriComponents partsToCompare, UriFormat compareFormat, StringComparison comparisonType)
                {
@@ -1825,7 +1837,7 @@ namespace System {
                        if (stringToEscape == null)
                                throw new ArgumentNullException ("stringToEscape");
 
-                       if (stringToEscape.Length > MaxUriLength) {
+                       if (stringToEscape.Length >= MaxUriLength) {
                                throw new UriFormatException (string.Format ("Uri is longer than the maximum {0} characters.", MaxUriLength));
                        }
 
@@ -1882,7 +1894,7 @@ namespace System {
                        if (stringToEscape == null)
                                throw new ArgumentNullException ("stringToEscape");
 
-                       if (stringToEscape.Length > MaxUriLength) {
+                       if (stringToEscape.Length >= MaxUriLength) {
                                throw new UriFormatException (string.Format ("Uri is longer than the maximum {0} characters.", MaxUriLength));
                        }
 
diff --git a/mcs/class/System/System/UriComponents.cs b/mcs/class/System/System/UriComponents.cs
deleted file mode 100644 (file)
index bc5fe6b..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// System.UriComponents enumeration
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System {
-
-       [Flags]
-       public enum UriComponents {
-
-               Scheme = 1,
-               UserInfo = 2,
-               Host = 4,
-               Port = 8,
-               Path = 16,
-               Query = 32,
-               Fragment = 64,
-               StrongPort = 128,
-               NormalizedHost = 256,
-               KeepDelimiter = 0x40000000,
-
-               HostAndPort = Host | StrongPort,
-               StrongAuthority = Host | UserInfo | StrongPort,
-               AbsoluteUri = Scheme | UserInfo | Host | Port | Path | Query | Fragment,
-               PathAndQuery = Path | Query,
-               HttpRequestUrl = Scheme | Port| Host | Path | Query,
-               SchemeAndServer = Scheme | Host | Port,
-               SerializationInfoString = Int32.MinValue
-       }
-}
diff --git a/mcs/class/System/System/UriFormat.cs b/mcs/class/System/System/UriFormat.cs
deleted file mode 100644 (file)
index 67c6eeb..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// System.UriFormat enumeration
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System {
-
-       public  enum UriFormat {
-
-               UriEscaped = 1,
-               Unescaped,
-               SafeUnescaped,
-       }
-}
diff --git a/mcs/class/System/System/UriFormatException.cs b/mcs/class/System/System/UriFormatException.cs
deleted file mode 100644 (file)
index 6860619..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// System.UriFormatException.cs
-//
-// Author:
-//   Scott Sanders (scott@stonecobra.com)
-//   Duncan Mak (duncan@ximian.com)
-//
-// (C) 2001 Scott Sanders
-// (C) 2002 Ximian, Inc.
-// Copyright (C) 2005, 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System {
-
-       [Serializable]
-       public class UriFormatException : FormatException, ISerializable
-       {
-
-               // Constructors
-               public UriFormatException ()
-                       : base (Locale.GetText ("Invalid URI format"))
-               {
-               }
-
-               public UriFormatException (string textString)
-                       : base (textString)
-               {
-               }
-
-               public UriFormatException (string textString, Exception e)
-                       : base (textString, e)
-               {
-               }
-               protected UriFormatException (SerializationInfo serializationInfo, StreamingContext streamingContext)
-                       : base (serializationInfo, streamingContext)
-               {
-               }
-
-               // Methods
-
-               // This effectively kills the LinkDemand from Exception.GetObjectData (if someone
-               // use the ISerializable interface to serialize the object). See unit tests.
-               void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context)
-               {
-                       base.GetObjectData (info, context);
-               }
-       }
-}
diff --git a/mcs/class/System/System/UriHostNameType.cs b/mcs/class/System/System/UriHostNameType.cs
deleted file mode 100644 (file)
index fb25a1a..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-// UriHostNameType.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Wed, 5 Sep 2001 06:33:14 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System {
-
-
-       /// <summary>
-       /// </summary>
-       public enum UriHostNameType {
-
-               /// <summary>
-               /// </summary>
-               Unknown = 0,
-               
-               /// <summary>
-               /// </summary>
-               Basic = 1,
-
-               /// <summary>
-               /// </summary>
-               Dns = 2,
-
-               /// <summary>
-               /// </summary>
-               IPv4 = 3,
-
-               /// <summary>
-               /// </summary>
-               IPv6 = 4,
-       } // UriHostNameType
-
-} // System
diff --git a/mcs/class/System/System/UriIdnScope.cs b/mcs/class/System/System/UriIdnScope.cs
deleted file mode 100644 (file)
index 6c38567..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// UriIdnScope.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// Net 3.5 type
-namespace System
-{
-       public enum UriIdnScope
-       {
-               None,
-               AllExceptIntranet,
-               All,
-       }
-}
-
diff --git a/mcs/class/System/System/UriKind.cs b/mcs/class/System/System/UriKind.cs
deleted file mode 100644 (file)
index a6ddc2f..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// System.UriKind enumeration
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System {
-
-       public enum UriKind {
-
-               RelativeOrAbsolute,
-               Absolute,
-               Relative,
-       }
-}
diff --git a/mcs/class/System/System/UriPartial.cs b/mcs/class/System/System/UriPartial.cs
deleted file mode 100644 (file)
index b4ce130..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-// UriPartial.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Wed, 5 Sep 2001 06:33:21 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System {
-
-       public enum UriPartial {
-
-               Scheme = 0,
-               Authority = 1,
-               Path = 2,
-               Query
-       }
-}
index 7b988908317bf3bb26aaff570c3668eeb96832ae..a5899fd28f3ab544f83a1e863f669a3ca5ef3091 100644 (file)
@@ -27,6 +27,9 @@ namespace MonoTests.Microsoft.CSharp
 
                private static readonly string _sourceLibrary1 = "public class Test1 {}";
                private static readonly string _sourceLibrary2 = "public class Test2 {}";
+               private static readonly string _sourceLibrary3 =
+                       @"public class Test3 { public void F() { } }
+                       public class Test4 : Test3 { public void F() { } }";
                private static readonly string _sourceExecutable = "public class Program { static void Main () { } }";
 
                [SetUp]
@@ -547,6 +550,22 @@ namespace MonoTests.Microsoft.CSharp
                        Assert.AreEqual (tempFile, tempFiles[0], "#4");
                }
 
+               [Test]
+               public void MultiLineWarningIsReportedAsOneWarning()
+               {
+                       CompilerParameters options = new CompilerParameters ();
+                       options.GenerateExecutable = false;
+                       options.GenerateInMemory = true;
+                       options.TempFiles = new TempFileCollection (_tempDir);
+
+                       ICodeCompiler compiler = _codeProvider.CreateCompiler ();
+                       CompilerResults results = compiler.CompileAssemblyFromSource (options,
+                               _sourceLibrary3);
+
+                       // verify compilation was successful
+                       AssertCompileResults (results, true);
+               }
+
                private static string CreateTempDirectory ()
                {
                        // create a uniquely named zero-byte file
index 53de1f66db4342d6e78e2e942d9beed4d76220b1..7612efae6ccbea26e24cf58f4eaa6d8193444022 100644 (file)
@@ -8,6 +8,8 @@
 // (c) 2007 Novell, Inc. (http://www.novell.com)
 // 
 
+#if MONO_FEATURE_PROCESS_START
+
 using System;
 using System.Diagnostics;
 using System.Text;
@@ -62,3 +64,5 @@ namespace MonoTests.System.Diagnostics
                }
        }
 }
+
+#endif // MONO_FEATURE_PROCESS_START
index d4372a1ddddc76083a6022ab54d46aa4212ec533..602a07d017a487e811174e4909f508256dcba424 100644 (file)
@@ -104,6 +104,7 @@ namespace MonoTests.System.Diagnostics
                        }
                }
 
+#if MONO_FEATURE_PROCESS_START
                [Test] // Start ()
                public void Start1_FileName_Empty ()
                {
@@ -835,13 +836,38 @@ namespace MonoTests.System.Diagnostics
                        p.BeginOutputReadLine ();
                        p.WaitForExit ();
 
-                       exited.Wait (10000);
+                       Assert.IsTrue (exited.Wait (10000));
                        Assert.AreEqual (1, exitedCalledCounter);
                        Thread.Sleep (50);
                        Assert.AreEqual (1, exitedCalledCounter);
                }
 
-               
+               [Test]
+               [NUnit.Framework.Category ("MobileNotWorking")]
+               public void TestDisableEventsBeforeExitedEvent ()
+               {
+                       Process p = new Process ();
+                       
+                       p.StartInfo = GetCrossPlatformStartInfo ();
+                       p.StartInfo.UseShellExecute = false;
+                       p.StartInfo.RedirectStandardOutput = true;
+                       p.StartInfo.RedirectStandardError = true;
+
+                       p.EnableRaisingEvents = false;
+
+                       var exitedCalledCounter = 0;
+                       p.Exited += (object sender, EventArgs e) => {
+                               exitedCalledCounter++;
+                       };
+
+                       p.Start ();
+                       p.BeginErrorReadLine ();
+                       p.BeginOutputReadLine ();
+                       p.WaitForExit ();
+
+                       Assert.AreEqual (0, exitedCalledCounter);
+               }
+
                ProcessStartInfo GetCrossPlatformStartInfo ()
                {
                        if (RunningOnUnix) {
@@ -855,6 +881,7 @@ namespace MonoTests.System.Diagnostics
                        } else
                                return new ProcessStartInfo ("help", "");
                }
+#endif // MONO_FEATURE_PROCESS_START
 
                [Test]
                public void ProcessName_NotStarted ()
@@ -876,6 +903,7 @@ namespace MonoTests.System.Diagnostics
                        Assert.IsNull (e.InnerException, "IOE inner exception should be null");
                }
                
+#if MONO_FEATURE_PROCESS_START
                [Test]
                [NUnit.Framework.Category ("MobileNotWorking")]
                public void ProcessName_AfterExit ()
@@ -906,6 +934,7 @@ namespace MonoTests.System.Diagnostics
                        
                        Assert.IsNull (e.InnerException, "IOE inner exception should be null");
                }
+#endif // MONO_FEATURE_PROCESS_START
 
                [Test]
                public void Handle_ThrowsOnNotStarted ()
@@ -923,6 +952,7 @@ namespace MonoTests.System.Diagnostics
                        Assert.IsFalse (Process.GetCurrentProcess ().HasExited);
                }
 
+#if MONO_FEATURE_PROCESS_START
                [Test]
                [NUnit.Framework.Category ("MobileNotWorking")]
                public void DisposeWithDisposedStreams ()
@@ -952,6 +982,7 @@ namespace MonoTests.System.Diagnostics
                                        p.StandardInput.Write ('x');
                        }
                }
+#endif // MONO_FEATURE_PROCESS_START
 
                [Test]
                public void Modules () {
index 7f276c19d9b851f052e5413e015a6db604cc9e4e..8fa752a4476c8981af260df18a15091fbe5bef54 100644 (file)
@@ -392,22 +392,48 @@ namespace MonoTests.System.Net.Mail
                [Test]
                public void Deliver_Async ()
                {
-                       var server = new SmtpServer ();
-                       var client = new SmtpClient ("localhost", server.EndPoint.Port);
-                       var msg = new MailMessage ("foo@example.com", "bar@example.com", "hello", "howdydoo\r\n");
-
-                       Thread t = new Thread (server.Run);
-                       t.Start ();
-                       var task = client.SendMailAsync (msg);
-                       t.Join ();
-
-                       Assert.AreEqual ("<foo@example.com>", server.mail_from);
-                       Assert.AreEqual ("<bar@example.com>", server.rcpt_to);
+                       // SmtpClient uses BackgroundWorker and listens for the RunWorkerCompleted
+                       // to mark an async task as completed. The problem is that BackgroundWorker uses
+                       // System.ComponentModel.AsyncOperationManager to get the synchronization
+                       // context, and in monotouch that returns by default a synchronization
+                       // context for the main thread. Since tests are also run on the main thread,
+                       // we'll block the main thread while waiting for the async send to complete,
+                       // while the async completion is waiting for the main thread to process it.
+                       // So instead use a SynchronizationContext that uses the threadpool instead
+                       // of the main thread.
+                       var existing_context = global::System.ComponentModel.AsyncOperationManager.SynchronizationContext;
+                       global::System.ComponentModel.AsyncOperationManager.SynchronizationContext = new ThreadPoolSynchronizationContext ();
+                       try {
+                               var server = new SmtpServer ();
+                               var client = new SmtpClient ("localhost", server.EndPoint.Port);
+                               var msg = new MailMessage ("foo@example.com", "bar@example.com", "hello", "howdydoo\r\n");
+
+                               Thread t = new Thread (server.Run);
+                               t.Start ();
+                               var task = client.SendMailAsync (msg);
+                               t.Join ();
+
+                               Assert.AreEqual ("<foo@example.com>", server.mail_from);
+                               Assert.AreEqual ("<bar@example.com>", server.rcpt_to);
+
+                               Assert.IsTrue (task.Wait (1000));
+                               Assert.IsTrue (task.IsCompleted, "task");
+                       } finally {
+                               global::System.ComponentModel.AsyncOperationManager.SynchronizationContext = existing_context;
+                       }
+               }
 
-                       task.Wait (10);
+               internal class ThreadPoolSynchronizationContext : SynchronizationContext
+               {
+                       public override void Post (SendOrPostCallback d, object state)
+                       {
+                               ThreadPool.QueueUserWorkItem ((v) => d (state));
+                       }
 
-                       Assert.IsTrue (task.IsCompleted, "task");
+                       public override void Send (SendOrPostCallback d, object state)
+                       {
+                               d (state);
+                       }
                }
-
        }
 }
index f215c7912159830fe2cbdf60b68cc77c9334b173..9692cfc4fc2af055ba862ff238b59d1767132e1f 100644 (file)
@@ -87,7 +87,7 @@ namespace MonoTests.System.Net.Mime
                }
 
                [Test]
-               [ExpectedException (typeof (FormatException))]
+               [ExpectedException (typeof (IndexOutOfRangeException))]
                public void FormatException ()
                {
                        new ContentDisposition ("");
@@ -115,8 +115,7 @@ namespace MonoTests.System.Net.Mime
                [Test]
                public void ToStringTest ()
                {
-                       string rfc822 = "dd MMM yyyy HH':'mm':'ss zz00";
-                       string modification_date = DateTime.MaxValue.ToString (rfc822);
+                       string modification_date = "Fri, 31 Dec 9999 23:59:59 -0000";
                        string to_string = cd.ToString ();
                        Assert.IsTrue (to_string.StartsWith ("attachment; "), "#1");
                        Assert.IsTrue (to_string.Contains ("modification-date=\"" + modification_date + "\""), "#2");
index f3712dc9f6ebf678866aa7680c522565f29268ca..b124403e0dd833706377a69420a42179de6d24fc 100644 (file)
@@ -9,6 +9,7 @@ using NUnit.Framework;
 using System;
 using System.Linq;
 using System.Net;
+using System.Net.Sockets;
 using System.Net.NetworkInformation;
 
 namespace MonoTests.System.Net.NetworkInformation
@@ -72,6 +73,25 @@ namespace MonoTests.System.Net.NetworkInformation
                        NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces ();
                        Assert.IsTrue (adapters[0].Speed > 0);
                }
-       
+
+               [Test]
+               public void IPv4Mask ()
+               {
+                       NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces ();
+                       foreach (NetworkInterface adapter in adapters)
+                       {
+                               if (adapter.Supports (NetworkInterfaceComponent.IPv4))
+                               {
+                                       IPInterfaceProperties adapterProperties = adapter.GetIPProperties ();
+                                       foreach (UnicastIPAddressInformation uni in adapterProperties.UnicastAddresses)
+                                       {
+                                               if (uni.Address.AddressFamily == AddressFamily.InterNetwork)
+                                               {
+                                                       Assert.IsNotNull (uni.IPv4Mask);
+                                               }
+                                       }
+                               }
+                       }
+               }
        }
 }
index 4f01439cf194f9ac520c8d240c1f675179d6c1f3..0d2dea47a73f5244dbac722c16b7ab8768e79e23 100755 (executable)
@@ -9,9 +9,11 @@
 //
 
 using System;
+using System.Diagnostics;
 using System.Linq;
 using System.Collections;
 using System.Threading;
+using System.Reflection;
 using System.Text.RegularExpressions;
 using System.Net;
 using System.Net.Sockets;
@@ -125,7 +127,21 @@ namespace MonoTests.System.Net.Sockets
                                                  ProtocolType.Tcp);
                        conn.Connect (ep);
 
-                       Socket client = server.Accept();
+                       Socket client = null;
+                       var sw = Stopwatch.StartNew ();
+                       while (sw.ElapsedMilliseconds < 100)
+                       {
+                               try {
+                                       client = server.Accept();
+                                       break;
+                               }
+                               catch (SocketException ex) {
+                                       if (ex.SocketErrorCode == SocketError.WouldBlock)
+                                               continue;
+                                       throw;
+                               }
+                       }
+                       Assert.IsNotNull (client, "Couldn't accept a client connection within 100ms.");
                        bool client_block = client.Blocking;
 
                        client.Close();
@@ -3479,35 +3495,16 @@ namespace MonoTests.System.Net.Sockets
                        s.Close ();
                }
 
-               static bool supportsTcpReuse = false;
-               static bool supportsTcpReuseSet = false;
-
-               static bool SupportsTcpReuse ()
+               static bool? supportsPortReuse;
+               static bool SupportsPortReuse ()
                {
-                       if (supportsTcpReuseSet)
-                               return supportsTcpReuse;
-
-                       if (Path.DirectorySeparatorChar == '/') {
-                               /*
-                                * On UNIX OS
-                                * Multiple threads listening to the same address and port are not possible
-                                * before linux 3.9 kernel, where the socket option SO_REUSEPORT was introduced.
-                                */
-                               Regex reg = new Regex(@"^#define\s*SO_REUSEPORT");
-                               foreach (string directory in Directory.GetDirectories ("/usr/include")) {
-                                       var f = Directory.GetFiles (directory, "socket.h").SingleOrDefault ();
-                                       if (f != null && File.ReadLines (f).Any (l => reg.Match (l).Success)) {
-                                               supportsTcpReuse = true;
-                                               break;
-                                       }
-                               }
-                       } else {
-                               supportsTcpReuse = true;
-                       }
-
-                       supportsTcpReuseSet = true;
+                       if (supportsPortReuse.HasValue)
+                               return supportsPortReuse.Value;
 
-                       return supportsTcpReuse;
+                       supportsPortReuse = (bool) typeof (Socket).GetMethod ("SupportsPortReuse",
+                                       BindingFlags.Static | BindingFlags.NonPublic)
+                                       .Invoke (null, new object [] {});
+                       return supportsPortReuse.Value;
                }
 
                // Test case for bug #31557
@@ -3533,7 +3530,7 @@ namespace MonoTests.System.Net.Sockets
                                        ex = e;
                                }
 
-                               Assert.AreEqual (SupportsTcpReuse (), ex == null);
+                               Assert.AreEqual (SupportsPortReuse (), ex == null);
                        }
                }
 
@@ -4345,6 +4342,19 @@ namespace MonoTests.System.Net.Sockets
                        client.Receive (bytes, bytes.Length, 0);
                        client.Close ();
                }
+
+               [Test]
+               public void UdpMulticasTimeToLive ()
+               {
+                       /* see https://bugzilla.xamarin.com/show_bug.cgi?id=36941 */
+
+                       using (Socket socket = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) {
+                               IPEndPoint end_point = new IPEndPoint (IPAddress.Any, 11000);
+                               socket.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
+                               socket.Bind (end_point);
+                               socket.SetSocketOption (SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 19);
+                       }
+               }
        }
 }
 
index 959a8c4d9a1e8e3cff0c4a1f04fd2ce704d58310..f1916f261513f3fd9cc98a0f443da94fa48466b8 100644 (file)
@@ -9,6 +9,7 @@ using System;
 using System.Net;
 using System.Net.Sockets;
 using System.Threading;
+using System.Threading.Tasks;
 
 using NUnit.Framework;
 
@@ -830,31 +831,37 @@ namespace MonoTests.System.Net.Sockets {
                {
                        UdpClient client = null;
                        var rnd = new Random ();
-                       for (int i = 0; i < 5; i++) {
+                       for (int i = 0, max = 5; i < max; i++) {
                                int port = rnd.Next (1025, 65534);
                                try {
                                        client = new UdpClient (port);
                                        break;
                                } catch (Exception) {
-                                       if (i == 5)
+                                       if (i == max - 1)
                                                throw;
                                }
                        }
 
-                       new Thread(delegate() {
-                               Thread.Sleep(2000);
-                               client.Close();
-                               }).Start();
-
+                       ManualResetEvent ready = new ManualResetEvent (false);
                        bool got_exc = false;
-                       IPEndPoint ep = new IPEndPoint (IPAddress.Any, 0);
-                       try {
-                               client.Receive(ref ep);
-                       } catch (SocketException) {
-                               got_exc = true;
-                       } finally {
-                               client.Close ();
-                       }
+
+                       Task receive_task = Task.Factory.StartNew (() => {
+                               IPEndPoint ep = new IPEndPoint (IPAddress.Any, 0);
+                               try {
+                                       ready.Set ();
+                                       client.Receive(ref ep);
+                               } catch (SocketException) {
+                                       got_exc = true;
+                               } finally {
+                                       client.Close ();
+                               }
+                       });
+
+                       ready.WaitOne (2000);
+                       Thread.Sleep (20);
+                       client.Close();
+
+                       Assert.IsTrue (receive_task.Wait (1000));
                        Assert.IsTrue (got_exc);
                }
 
index 822bced92518cc7066b3ea109dd0b391c5db27df..6e459b9d07896f0cf07b83e37b9dfdd9d2848656 100644 (file)
@@ -341,7 +341,11 @@ namespace MonoTests.System.Net {
                        Thread thread = new Thread (ReadToEnd);
                        thread.Start ();
                        if (test_evt.WaitOne (3000, false) == false) {
+#if MONO_FEATURE_THREAD_ABORT
                                thread.Abort ();
+#else
+                               thread.Interrupt ();
+#endif
                                test_evt.Close ();
                                Assert.IsTrue (false, "Timed out");
                        }
@@ -774,5 +778,23 @@ namespace MonoTests.System.Net {
                        var c = new TcpClient ("localhost", port);
                        h.Stop ();
                }
+
+               // Test case for bug #31209
+               [Test]
+               public void Test_EmptyLineAtStart ()
+               {
+                       var listener = HttpListener2Test.CreateAndStartListener ("http://127.0.0.1:9124/");
+                       var ns = HttpListener2Test.CreateNS (9124);
+
+                       HttpListener2Test.Send (ns, "\r\nGET / HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n");
+
+                       bool timedout;
+                       HttpListener2Test.GetContextWithTimeout (listener, 1000, out timedout);
+
+                       Assert.IsFalse (timedout, "timed out");
+
+                       ns.Close ();
+                       listener.Close ();
+               }
        }
 }
index 5e9103a1038a1a5155d6e92294fc6539bb02008b..589ec80e924146c2654a16df2109de8a2dfc3695 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
+using System.IO;
 using System.Net;
 using System.Net.Sockets;
 using System.Threading;
+using System.Threading.Tasks;
 using NUnit.Framework;
 using MonoTests.Helpers;
 
@@ -531,6 +533,53 @@ namespace MonoTests.System.Net {
 
                        return clientEndPoint;
                }
+               
+               [Test]
+               public void HttpClientIsDisconnectedCheckForWriteException()
+               {
+                       string uri = "http://localhost:" + NetworkHelpers.FindFreePort () + "/";
+
+                       AutoResetEvent exceptionOccuredEvent = new AutoResetEvent (false);
+                       HttpListener listener = new HttpListener {
+                               IgnoreWriteExceptions = false
+                       };
+                       listener.Prefixes.Add (uri);
+                       listener.Start ();
+                       listener.BeginGetContext (result =>
+                       {
+                               HttpListenerContext context = listener.EndGetContext (result);
+                               context.Response.SendChunked = true;
+                               context.Request.InputStream.Close ();
+                               
+                               var bytes = new byte [1024];
+                               using(Stream outputStream = context.Response.OutputStream) {
+                                       try {
+                                               while (true) 
+                                                       outputStream.Write (bytes, 0, bytes.Length);
+                                       } catch {
+                                               exceptionOccuredEvent.Set ();
+                                       }
+                               }
+                       }, null);
+
+                       Task.Factory.StartNew (() =>
+                       {
+                               var webRequest = (HttpWebRequest)WebRequest.Create (uri);
+                               webRequest.Method = "POST";
+                               webRequest.KeepAlive = false;
+                               Stream requestStream = webRequest.GetRequestStream ();
+                               requestStream.WriteByte (1);
+                               requestStream.Close ();
+                               using (WebResponse response = webRequest.GetResponse ())
+                               using (Stream stream = response.GetResponseStream ()) {
+                                       byte[] clientBytes = new byte [1024];
+                                       Assert.IsNotNull (stream, "#01");
+                                       stream.Read (clientBytes, 0, clientBytes.Length);
+                               }
+                       });
+
+                       Assert.IsTrue (exceptionOccuredEvent.WaitOne (15 * 1000), "#02");
+               }
        }
 }
 
index a44034f267578f4d21eb487ce042c5230fbbcebf..20ee8020a98793e2accd2cb40b813d8bc08b4e25 100644 (file)
@@ -1468,7 +1468,11 @@ namespace MonoTests.System.Net
                        Thread.Sleep (three_seconds_in_milliseconds * 3);
 
                        if (timeoutWorker.End == null) {
+#if MONO_FEATURE_THREAD_ABORT
                                thread.Abort ();
+#else
+                               thread.Interrupt ();
+#endif
                                Assert.Fail ("Thread finished after triple the timeout specified has passed");
                        }
 
index 023782aa39cc0adc0d96c1147562f4a074c1224a..af05477fb6bee65d47eff4747392d2376ce00057 100644 (file)
@@ -43,13 +43,18 @@ namespace MonoTests.System.Net
                private TcpListener tcpListener;
                private readonly IPEndPoint _localEndPoint;
                private Thread listenThread;
+               private Socket listenSocket;
                private SocketRequestHandler _requestHandler;
-               private bool _stopped = true;
+               private int _state = 0;
                private readonly object _syncRoot = new object ();
 
                private const int SOCKET_CLOSED = 10004;
                private const int SOCKET_INVALID_ARGS = 10022;
 
+               private const int STATE_UNINITIALIZED = 0;
+               private const int STATE_RUNNING = 1;
+               private const int STATE_STOPPED = 2;
+
                public SocketResponder (IPEndPoint localEP, SocketRequestHandler requestHandler)
                {
                        _localEndPoint = localEP;
@@ -71,7 +76,7 @@ namespace MonoTests.System.Net
                        get
                        {
                                lock (_syncRoot) {
-                                       return _stopped;
+                                       return _state != STATE_RUNNING;
                                }
                        }
                }
@@ -79,9 +84,9 @@ namespace MonoTests.System.Net
                public void Start ()
                {
                        lock (_syncRoot) {
-                               if (!_stopped)
-                                       return;
-                               _stopped = false;
+                               if (_state != STATE_UNINITIALIZED)
+                                       throw new InvalidOperationException ("cannot restart SocketResponder");
+                               _state = STATE_RUNNING;
                                tcpListener = new TcpListener (LocalEndPoint);
                                tcpListener.Start ();
                                listenThread = new Thread (new ThreadStart (Listen));
@@ -92,13 +97,19 @@ namespace MonoTests.System.Net
                public void Stop ()
                {
                        lock (_syncRoot) {
-                               if (_stopped)
+                               if (_state != STATE_RUNNING)
                                        return;
-                               _stopped = true;
+                               _state = STATE_STOPPED;
                                if (tcpListener != null) {
                                        tcpListener.Stop ();
                                        tcpListener = null;
+                                       if (listenSocket != null)
+                                               listenSocket.Close ();
+#if MONO_FEATURE_THREAD_ABORT
                                        listenThread.Abort ();
+#else
+                                       listenThread.Interrupt ();
+#endif
                                        listenThread.Join ();
                                        listenThread = null;
                                        Thread.Sleep (50);
@@ -108,20 +119,28 @@ namespace MonoTests.System.Net
 
                private void Listen ()
                {
-                       while (!_stopped) {
-                               Socket socket = null;
+                       while (_state == STATE_RUNNING) {
+                               listenSocket = null;
                                try {
-                                       socket = tcpListener.AcceptSocket ();
-                                       socket.Send (_requestHandler (socket));
+                                       listenSocket = tcpListener.AcceptSocket ();
+                                       listenSocket.Send (_requestHandler (listenSocket));
                                        try {
-                                               socket.Shutdown (SocketShutdown.Receive);
-                                               socket.Shutdown (SocketShutdown.Send);
+                                               listenSocket.Shutdown (SocketShutdown.Receive);
+                                               listenSocket.Shutdown (SocketShutdown.Send);
                                        } catch {
                                        }
                                } catch (SocketException ex) {
                                        // ignore interruption of blocking call
-                                       if (ex.ErrorCode != SOCKET_CLOSED && ex.ErrorCode != SOCKET_INVALID_ARGS)
+                                       if (ex.ErrorCode != SOCKET_CLOSED && ex.ErrorCode != SOCKET_INVALID_ARGS && _state != STATE_STOPPED)
+                                               throw;
+                               } catch (ObjectDisposedException ex) {
+                                       Console.WriteLine (ex);
+                                       if (_state != STATE_STOPPED)
                                                throw;
+#if !MONO_FEATURE_THREAD_ABORT
+                               } catch (ThreadInterruptedException) {
+                                       break;
+#endif
 #if MOBILE
                                } catch (InvalidOperationException ex) {
                                        // This breaks some tests running on Android. The problem is that the stack trace
@@ -131,9 +150,17 @@ namespace MonoTests.System.Net
                                        Console.WriteLine (ex);
 #endif
                                } finally {
+#if MONO_FEATURE_THREAD_ABORT
                                        Thread.Sleep (500);
-                                       if (socket != null)
-                                               socket.Close ();
+#else
+                                       try {
+                                               Thread.Sleep (500);
+                                       } catch (ThreadInterruptedException) {
+                                               // nothing to do
+                                       }
+#endif
+                                       if (listenSocket != null)
+                                               listenSocket.Close ();
                                }
                        }
                }
index 2e46d997aa7fad962ecdf219a5e0230d9691f789..1e21e43dc211db035e6e52457c7bb46e0e1e1a5a 100644 (file)
@@ -203,6 +203,15 @@ namespace MonoTests.System.Net
                        Assert.AreEqual (3, w.GetValues ("Accept").Length, "#17");
                }
 
+               [Test]
+               public void GetValuesForMultipleHeaderManyLines ()
+               {
+                       WebHeaderCollection w = new WebHeaderCollection ();
+                       w.Add ("Pragma", "H1, H2");
+                       w.Add ("Pragma", "H3");
+                       Assert.AreEqual (3, w.GetValues ("Pragma").Length, "#1");
+               }
+
                [Test]
                public void Indexers ()
                {
index a8cb6283403a2647408eeea81ba95e6b39b0e905..405c16d93094a5195f576dec95d2b5f5a318dccb 100644 (file)
@@ -2030,6 +2030,19 @@ namespace MonoTests.System
                                Assert.Fail (string.Format ("Unexpected {0} while building URI with username {1}", e.GetType ().Name, userinfo));
                        }
                }
+
+               // Covers #29864
+               [Test]
+               public void PathDotTrim ()
+               {
+                       var baseUri = new Uri ("http://test.com", UriKind.Absolute);
+                       var relUri = new Uri ("path/dot./", UriKind.Relative);
+                       var uri = new Uri (baseUri, relUri);
+                       if (IriParsing)
+                               Assert.AreEqual ("http://test.com/path/dot./", uri.ToString ());
+                       else
+                               Assert.AreEqual ("http://test.com/path/dot/", uri.ToString ());
+               }
        }
 
        // Tests non default IriParsing
index 7ac1859e3874f82241ec2dd7b6b9790288a6efa4..65a7971c6077d4d317b961b8df3b1cabf67db4ef 100644 (file)
@@ -28,11 +28,6 @@ System.IO.Compression/DeflateStream.cs
 System.IO.Compression/GZipStream.cs
 System.IO/InternalBufferOverflowException.cs
 System.IO/InvalidDataException.cs
-System.Net.Cache/HttpCacheAgeControl.cs
-System.Net.Cache/HttpRequestCacheLevel.cs
-System.Net.Cache/HttpRequestCachePolicy.cs
-System.Net.Cache/RequestCacheLevel.cs
-System.Net.Cache/RequestCachePolicy.cs
 System.Net.Mail/AlternateView.cs
 System.Net.Mail/AlternateViewCollection.cs
 System.Net.Mail/Attachment.cs
@@ -54,11 +49,36 @@ System.Net.Mail/SmtpException.cs
 System.Net.Mail/SmtpFailedRecipientException.cs
 System.Net.Mail/SmtpFailedRecipientsException.cs
 System.Net.Mail/SmtpStatusCode.cs
-System.Net.Mime/ContentDisposition.cs
-System.Net.Mime/ContentType.cs
-System.Net.Mime/DispositionTypeNames.cs
-System.Net.Mime/MediaTypeNames.cs
-System.Net.Mime/TransferEncoding.cs
+../../../external/referencesource/System/net/System/Net/mail/Base64Stream.cs
+../../../external/referencesource/System/net/System/Net/mail/Base64WriteStateInfo.cs
+../../../external/referencesource/System/net/System/Net/mail/BaseWriter.cs
+../../../external/referencesource/System/net/System/Net/mail/BufferBuilder.cs
+../../../external/referencesource/System/net/System/Net/mail/ClosableStream.cs
+../../../external/referencesource/System/net/System/Net/mail/ContentDisposition.cs
+../../../external/referencesource/System/net/System/Net/mail/ContentType.cs
+../../../external/referencesource/System/net/System/Net/mail/DelegatedStream.cs
+../../../external/referencesource/System/net/System/Net/mail/DispositionTypeNames.cs
+../../../external/referencesource/System/net/System/Net/mail/EightBitStream.cs
+../../../external/referencesource/System/net/System/Net/mail/EncodedStreamFactory.cs
+../../../external/referencesource/System/net/System/Net/mail/HeaderCollection.cs
+../../../external/referencesource/System/net/System/Net/mail/IEncodableStream.cs
+../../../external/referencesource/System/net/System/Net/mail/MailBnfHelper.cs
+../../../external/referencesource/System/net/System/Net/mail/MailHeaderInfo.cs
+../../../external/referencesource/System/net/System/Net/mail/MimeBasePart.cs
+../../../external/referencesource/System/net/System/Net/mail/MimeEmbeddedMessagePart.cs
+../../../external/referencesource/System/net/System/Net/mail/MimeMultiPart.cs
+../../../external/referencesource/System/net/System/Net/mail/MimeMultiPartType.cs
+../../../external/referencesource/System/net/System/Net/mail/MimePart.cs
+../../../external/referencesource/System/net/System/Net/mail/MimeWriter.cs
+../../../external/referencesource/System/net/System/Net/mail/MultiAsyncResult.cs
+../../../external/referencesource/System/net/System/Net/mail/QEncodedStream.cs
+../../../external/referencesource/System/net/System/Net/mail/QuotedPrintableStream.cs
+../../../external/referencesource/System/net/System/Net/mail/SmtpDateTime.cs
+../../../external/referencesource/System/net/System/Net/mail/TrackingStringDictionary.cs
+../../../external/referencesource/System/net/System/Net/mail/TrackingValidationObjectDictionary.cs
+../../../external/referencesource/System/net/System/Net/mail/TransferEncoding.cs
+../../../external/referencesource/System/net/System/Net/mail/WriteStateInfoBase.cs
+../../../external/referencesource/System/net/System/Net/mail/mediatypenames.cs
 System.Net.NetworkInformation/DuplicateAddressDetectionState.cs
 System.Net.NetworkInformation/GatewayIPAddressInformation.cs
 System.Net.NetworkInformation/GatewayIPAddressInformationCollection.cs
@@ -104,50 +124,46 @@ System.Net.NetworkInformation/TcpStatistics.cs
 System.Net.NetworkInformation/UdpStatistics.cs
 System.Net.NetworkInformation/UnicastIPAddressInformation.cs
 System.Net.NetworkInformation/UnicastIPAddressInformationCollection.cs
-System.Net.NetworkInformation/Win32NetworkInterfaceMarshal.cs
-System.Net.Security/AuthenticatedStream.cs
-System.Net.Security/AuthenticationLevel.cs
+../../../external/referencesource/System/net/System/Net/SecureProtocols/AuthenticatedStream.cs
+../../../external/referencesource/System/net/System/Net/SecureProtocols/NegotiateEnumTypes.cs
 System.Net.Security/EncryptionPolicy.cs
 System.Net.Security/LocalCertificateSelectionCallback.cs
 System.Net.Security/NegotiateStream.cs
-System.Net.Security/ProtectionLevel.cs
 System.Net.Security/RemoteCertificateValidationCallback.cs
 System.Net.Security/SslPolicyErrors.cs
 System.Net.Security/SslStream.cs
 System.Net/SocketAddress.cs
 System.Net/SocketPermissionAttribute.cs
 System.Net/SocketPermission.cs
-System.Net.Sockets/AddressFamily.cs
-System.Net.Sockets/IOControlCode.cs
-System.Net.Sockets/IPPacketInformation.cs
-System.Net.Sockets/IPv6MulticastOption.cs
-System.Net.Sockets/LingerOption.cs
-System.Net.Sockets/MulticastOption.cs
-System.Net.Sockets/NetworkStream.cs
-System.Net.Sockets/ProtocolFamily.cs
-System.Net.Sockets/ProtocolType.cs
+../../../external/referencesource/System/net/System/Net/Sockets/AddressFamily.cs
+../../../external/referencesource/System/net/System/Net/Sockets/IOControlCode.cs
+../../../external/referencesource/System/net/System/Net/Sockets/IPPacketInformation.cs
+../../../external/referencesource/System/net/System/Net/Sockets/LingerOption.cs
+../../../external/referencesource/System/net/System/Net/Sockets/MulticastOption.cs
+../../../external/referencesource/System/net/System/Net/Sockets/ProtocolFamily.cs
+../../../external/referencesource/System/net/System/Net/Sockets/ProtocolType.cs
 System.Net.Sockets/SafeSocketHandle.cs
-System.Net.Sockets/SelectMode.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SelectMode.cs
 System.Net.Sockets/SendPacketsElement.cs
 System.Net.Sockets/Socket.cs
 System.Net.Sockets/SocketAsyncEventArgs.cs
 System.Net.Sockets/SocketAsyncOperation.cs
 System.Net.Sockets/SocketAsyncResult.cs
-System.Net.Sockets/SocketError.cs
-System.Net.Sockets/SocketException.cs
-System.Net.Sockets/SocketFlags.cs
-System.Net.Sockets/SocketInformation.cs
-System.Net.Sockets/SocketInformationOptions.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketErrors.cs
+../../../external/referencesource/System/net/System/Net/SocketException.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketFlags.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketInformation.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketInformationOptions.cs
 System.Net.Sockets/SocketOperation.cs
-System.Net.Sockets/SocketOptionLevel.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketOptionLevel.cs
 ../../../external/referencesource/System/net/System/Net/Sockets/SocketOptionName.cs
-System.Net.Sockets/SocketShutdown.cs
-System.Net.Sockets/SocketType.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketShutdown.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketType.cs
 System.Net.Sockets/TcpClient.cs
 System.Net.Sockets/TcpListener.cs
-System.Net.Sockets/TransmitFileOptions.cs
+../../../external/referencesource/System/net/System/Net/Sockets/TransmitFileFlags.cs
 System.Net.Sockets/UdpClient.cs
-System.Net.Sockets/UdpReceiveResult.cs
+../../../external/referencesource/System/net/System/Net/Sockets/UdpReceiveResult.cs
 System.Net/AuthenticationManager.cs
 System.Net/AuthenticationSchemeSelector.cs
 System.Net/AuthenticationSchemes.cs
@@ -252,7 +268,6 @@ System.Net.WebSockets/WebSocketException.cs
 System.Net.WebSockets/WebSocketMessageType.cs
 System.Net.WebSockets/WebSocketReceiveResult.cs
 System.Net.WebSockets/WebSocketState.cs
-System.Runtime.InteropServices/DefaultParameterValueAttribute.cs
 System.Security.AccessControl/SemaphoreAccessRule.cs
 System.Security.AccessControl/SemaphoreAuditRule.cs
 System.Security.AccessControl/SemaphoreRights.cs
@@ -333,27 +348,35 @@ System/Platform.cs
 System/SRDescriptionAttribute.cs
 System/Uri.cs
 System/UriBuilder.cs
-System/UriComponents.cs
-System/UriFormat.cs
-System/UriFormatException.cs
 System/UriHelper.cs
-System/UriHostNameType.cs
-System/UriIdnScope.cs
-System/UriKind.cs
 System/UriParser.cs
-System/UriPartial.cs
 System/UriTypeConverter.cs
 System/UriElements.cs
 System/UriParseComponents.cs
-System.Runtime.InteropServices/DefaultParameterValueAttribute.cs
-System.Runtime.InteropServices/HandleCollector.cs
 System.Windows.Input/ICommand.cs
 
+Mono.Net.Security/CallbackHelpers.cs
+Mono.Net.Security/ChainValidationHelper.cs
+Mono.Net.Security/IMonoTlsProvider.cs
+Mono.Net.Security/IMonoSslStream.cs
+Mono.Net.Security/LegacySslStream.cs
+Mono.Net.Security/MonoDefaultTlsProvider.cs
+Mono.Net.Security/MonoSslStreamImpl.cs
+Mono.Net.Security/MonoSslStreamWrapper.cs
+Mono.Net.Security/MonoTlsProviderFactory.cs
+Mono.Net.Security/MonoTlsProviderImpl.cs
+Mono.Net.Security/MonoTlsProviderWrapper.cs
+Mono.Net.Security/MonoTlsStream.cs
+Mono.Net.Security/NoReflectionHelper.cs
+Mono.Net.Security/SystemCertificateValidator.cs
+
 ReferenceSources/AssertWrapper.cs
+ReferenceSources/Internal.cs
 ReferenceSources/HttpSysSettings.cs
 ReferenceSources/Logging.cs
 ReferenceSources/NativeMethods.cs
 ReferenceSources/SettingsSectionInternal.cs
+ReferenceSources/Socket.cs
 ReferenceSources/SR.cs
 ReferenceSources/SRCategoryAttribute.cs
 ReferenceSources/SystemNetworkCredential.cs
@@ -714,6 +737,11 @@ ReferenceSources/Win32Exception.cs
 ../../../external/referencesource/System/compmod/system/diagnostics/TraceSwitch.cs
 ../../../external/referencesource/System/compmod/system/diagnostics/traceutils.cs
 
+../../../external/referencesource/System/net/System/UriEnumTypes.cs
+../../../external/referencesource/System/net/System/URIFormatException.cs
+../../../external/referencesource/System/net/System/UriHostNameType.cs
+../../../external/referencesource/System/net/System/URIPartial.cs
+
 ../../../external/referencesource/System/net/System/Net/_BufferOffsetSize.cs
 ../../../external/referencesource/System/net/System/Net/_LazyAsyncResult.cs
 ../../../external/referencesource/System/net/System/Net/_LoggingObject.cs
@@ -726,16 +754,22 @@ ReferenceSources/Win32Exception.cs
 ../../../external/referencesource/System/net/System/Net/Internal.cs
 ../../../external/referencesource/System/net/System/Net/UnicodeDecodingConformance.cs
 ../../../external/referencesource/System/net/System/Net/UnicodeEncodingConformance.cs
+../../../external/referencesource/System/net/System/Net/ServicePointManager.cs
 ../../../external/referencesource/System/net/System/Net/webclient.cs
 ../../../external/referencesource/System/net/System/Net/WebPermission.cs
 ../../../external/referencesource/System/net/System/Net/WebUtility.cs
 ../../../external/referencesource/System/net/System/Net/WriteStreamClosedEventArgs.cs
 
+../../../external/referencesource/System/net/System/Net/Cache/RequestCachePolicy.cs
+
+../../../external/referencesource/System/net/System/Net/Sockets/IPProtectionLevel.cs
+../../../external/referencesource/System/net/System/Net/Sockets/NetworkStream.cs
 ../../../external/referencesource/System/net/System/Net/NetworkInformation/IPInterfaceStatistics.cs
 ../../../external/referencesource/System/net/System/Net/NetworkInformation/ScopeLevel.cs
 ../../../external/referencesource/System/net/System/Net/NetworkInformation/UnicastIPAddressInformation.cs
 
-../../../external/referencesource/System/net/System/Net/Sockets/IPProtectionLevel.cs
+../../../external/referencesource/System/sys/system/runtime/interopservices/DefaultParameterValueAttribute.cs
+../../../external/referencesource/System/sys/system/runtime/interopservices/handlecollector.cs
 
 ../../../external/referencesource/System/sys/system/runtime/versioning/FrameworkName.cs
 
@@ -753,3 +787,97 @@ ReferenceSources/Win32Exception.cs
 ../../../external/referencesource/System/misc/WeakHashtable.cs
 
 ../../../external/referencesource/System/compmod/system/diagnostics/TextWriterTraceListener.cs
+
+../Mono.Security/Mono.Security.Authenticode/PrivateKey.cs
+../Mono.Security/Mono.Security.Cryptography/MD5SHA1.cs
+../Mono.Security/Mono.Security.Cryptography/TlsHMAC.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmSettings.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs
+../Mono.Security/Mono.Security.Protocol.Tls/Alert.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteCollection.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteFactory.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientContext.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientRecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientSessionCache.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ContentType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/Context.cs
+../Mono.Security/Mono.Security.Protocol.Tls/DebugHelper.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HandshakeState.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityParameters.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ServerContext.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ServerRecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslCipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslHandshakeHash.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsCipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsClientSettings.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsException.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsServerSettings.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/ClientCertificateType.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeMessage.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeType.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificateRequest.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHelloDone.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificateVerify.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificateRequest.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHelloDone.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerKeyExchange.cs
+../Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/GeneralNames.cs
+../Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
+
+../Mono.Security/Mono.Security.Interface/Alert.cs
+../Mono.Security/Mono.Security.Interface/CertificateValidationHelper.cs
+../Mono.Security/Mono.Security.Interface/CipherAlgorithmType.cs
+../Mono.Security/Mono.Security.Interface/CipherSuiteCode.cs
+../Mono.Security/Mono.Security.Interface/ExchangeAlgorithmType.cs
+../Mono.Security/Mono.Security.Interface/HashAlgorithmType.cs
+../Mono.Security/Mono.Security.Interface/IBufferOffsetSize.cs
+../Mono.Security/Mono.Security.Interface/IMonoTlsEventSink.cs
+../Mono.Security/Mono.Security.Interface/IMonoTlsContext.cs
+../Mono.Security/Mono.Security.Interface/IMonoSslStream.cs
+../Mono.Security/Mono.Security.Interface/MonoTlsConnectionInfo.cs
+../Mono.Security/Mono.Security.Interface/MonoTlsProvider.cs
+../Mono.Security/Mono.Security.Interface/MonoTlsProviderFactory.cs
+../Mono.Security/Mono.Security.Interface/MonoTlsSettings.cs
+../Mono.Security/Mono.Security.Interface/TlsException.cs
+../Mono.Security/Mono.Security.Interface/TlsProtocolCode.cs
+../Mono.Security/Mono.Security.Interface/TlsProtocols.cs
index f0cc0b5c070ee1231b29409abe2cff64fe095d26..8dce31d234c5b119f6502c1b4dbf3c9b3baf94c0 100644 (file)
@@ -1,77 +1,2 @@
 #include mobile_System.dll.sources
 MonoTouch/MonoPInvokeCallbackAttribute.cs
-../Mono.Security/Mono.Security.Authenticode/PrivateKey.cs
-../Mono.Security/Mono.Security.Cryptography/MD5SHA1.cs
-../Mono.Security/Mono.Security.Cryptography/TlsHMAC.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmSettings.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs
-../Mono.Security/Mono.Security.Protocol.Tls/Alert.cs
-../Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/CipherSuite.cs
-../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteCollection.cs
-../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteFactory.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ClientContext.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ClientRecordProtocol.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ClientSessionCache.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ContentType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/Context.cs
-../Mono.Security/Mono.Security.Protocol.Tls/DebugHelper.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/HandshakeState.cs
-../Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
-../Mono.Security/Mono.Security.Protocol.Tls/RecordProtocol.cs
-../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
-../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SecurityParameters.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ServerContext.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ServerRecordProtocol.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslCipherSuite.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslHandshakeHash.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsCipherSuite.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsClientSettings.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsException.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsServerSettings.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsStream.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake/ClientCertificateType.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeMessage.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeType.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificate.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientHello.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificateRequest.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHello.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHelloDone.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificate.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificateVerify.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientFinished.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientHello.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientKeyExchange.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificate.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificateRequest.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerFinished.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHello.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHelloDone.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerKeyExchange.cs
-../Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
-../Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
-../Mono.Security/Mono.Security.X509.Extensions/GeneralNames.cs
-../Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
-../Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
index 9895ed2ed6e116ecab5dba42e85dac0af3dcabaa..2abef931590df68cffac80eecdf384749c693092 100644 (file)
@@ -1,80 +1,3 @@
 #include mobile_System.dll.sources
 System/AndroidPlatform.cs
 
-../Mono.Security/Mono.Security.Authenticode/PrivateKey.cs
-../Mono.Security/Mono.Security.Cryptography/MD5SHA1.cs
-../Mono.Security/Mono.Security.Cryptography/TlsHMAC.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmSettings.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs
-../Mono.Security/Mono.Security.Protocol.Tls/Alert.cs
-../Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/CipherSuite.cs
-../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteCollection.cs
-../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteFactory.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ClientContext.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ClientRecordProtocol.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ClientSessionCache.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ContentType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/Context.cs
-../Mono.Security/Mono.Security.Protocol.Tls/DebugHelper.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/HandshakeState.cs
-../Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
-../Mono.Security/Mono.Security.Protocol.Tls/RecordProtocol.cs
-../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
-../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SecurityParameters.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ServerContext.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ServerRecordProtocol.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslCipherSuite.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslHandshakeHash.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsCipherSuite.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsClientSettings.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsException.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsServerSettings.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsStream.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake/ClientCertificateType.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeMessage.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeType.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificate.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientHello.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificateRequest.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHello.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHelloDone.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificate.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificateVerify.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientFinished.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientHello.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientKeyExchange.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificate.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificateRequest.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerFinished.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHello.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHelloDone.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerKeyExchange.cs
-../Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
-../Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
-../Mono.Security/Mono.Security.X509.Extensions/GeneralNames.cs
-../Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
-../Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
-
-
index f0cc0b5c070ee1231b29409abe2cff64fe095d26..8dce31d234c5b119f6502c1b4dbf3c9b3baf94c0 100644 (file)
@@ -1,77 +1,2 @@
 #include mobile_System.dll.sources
 MonoTouch/MonoPInvokeCallbackAttribute.cs
-../Mono.Security/Mono.Security.Authenticode/PrivateKey.cs
-../Mono.Security/Mono.Security.Cryptography/MD5SHA1.cs
-../Mono.Security/Mono.Security.Cryptography/TlsHMAC.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmSettings.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs
-../Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs
-../Mono.Security/Mono.Security.Protocol.Tls/Alert.cs
-../Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/CipherSuite.cs
-../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteCollection.cs
-../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteFactory.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ClientContext.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ClientRecordProtocol.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ClientSessionCache.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ContentType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/Context.cs
-../Mono.Security/Mono.Security.Protocol.Tls/DebugHelper.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/HandshakeState.cs
-../Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
-../Mono.Security/Mono.Security.Protocol.Tls/RecordProtocol.cs
-../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
-../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SecurityParameters.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ServerContext.cs
-../Mono.Security/Mono.Security.Protocol.Tls/ServerRecordProtocol.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslCipherSuite.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslHandshakeHash.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs
-../Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsCipherSuite.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsClientSettings.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsException.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsServerSettings.cs
-../Mono.Security/Mono.Security.Protocol.Tls/TlsStream.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake/ClientCertificateType.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeMessage.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeType.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificate.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientHello.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificateRequest.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHello.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHelloDone.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificate.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificateVerify.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientFinished.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientHello.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientKeyExchange.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificate.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificateRequest.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerFinished.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHello.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHelloDone.cs
-../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerKeyExchange.cs
-../Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
-../Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
-../Mono.Security/Mono.Security.X509.Extensions/GeneralNames.cs
-../Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
-../Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
diff --git a/mcs/class/System/monotouch_tv_runtime_System.dll.sources b/mcs/class/System/monotouch_tv_runtime_System.dll.sources
new file mode 100644 (file)
index 0000000..7c0bd59
--- /dev/null
@@ -0,0 +1 @@
+#include monotouch_System.dll.sources
diff --git a/mcs/class/System/monotouch_watch_runtime_System.dll.sources b/mcs/class/System/monotouch_watch_runtime_System.dll.sources
new file mode 100644 (file)
index 0000000..7c0bd59
--- /dev/null
@@ -0,0 +1 @@
+#include monotouch_System.dll.sources
diff --git a/mcs/class/SystemWebTestShim/SystemWebTestShim-net_4_5.csproj b/mcs/class/SystemWebTestShim/SystemWebTestShim-net_4_5.csproj
deleted file mode 100644 (file)
index fc897a2..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{337A92C8-EB50-43A9-9435-CB268AC147DC}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>SystemWebTestShim</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="SystemWebTestShim\Adapters.cs" />\r
-    <Compile Include="SystemWebTestShim\BuildManager.cs" />\r
-    <Compile Include="SystemWebTestShim\HttpCapabilitiesBase.cs" />\r
-    <Compile Include="SystemWebTestShim\Page.cs" />\r
-    <Compile Include="SystemWebTestShim\UrlUtils.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Web/System.Web-net_4_5.csproj">\r
-      <Project>{B489C3DE-3ED3-4EDC-B42B-82B38E101857}</Project>\r
-      <Name>System.Web-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/WebMatrix.Data/WebMatrix.Data-net_4_5.csproj b/mcs/class/WebMatrix.Data/WebMatrix.Data-net_4_5.csproj
deleted file mode 100644 (file)
index 6c2a0af..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9732089B-32BB-43FC-BB72-3EE9BBBE796A}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>WebMatrix.Data</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="WebMatrix.Data\ConnectionEventArgs.cs" />\r
-    <Compile Include="WebMatrix.Data\Database.cs" />\r
-    <Compile Include="WebMatrix.Data\DynamicRecord.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Data/System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/WebMatrix.Data/WebMatrix.Data-tests-net_4_5.csproj b/mcs/class/WebMatrix.Data/WebMatrix.Data-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 65ab6fc..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{22F06C6F-29E9-48BE-AF9B-066C5607C8F7}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\WebMatrix.Data-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>WebMatrix.Data_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="WebMatrix.Data\DynamicRecord.cs" />\r
-    <Compile Include="Test\WebMatrix.Data\ConnectionEventArgsTests.cs" />\r
-    <Compile Include="Test\WebMatrix.Data\DatabaseTests.cs" />\r
-    <Compile Include="Test\WebMatrix.Data\DynamicRecordTests.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\WebMatrix.Data\WebMatrix.Data-net_4_5.csproj">\r
-      <Project>{9732089B-32BB-43FC-BB72-3EE9BBBE796A}</Project>\r
-      <Name>WebMatrix.Data\WebMatrix.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{9A33954F-57A8-4D75-B1D8-0F81808A0DD4}</Project>\r
-      <Name>System.Data\System.Data-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{41476FBD-C1CB-4B3C-8078-3281EB1E0EAB}</Project>\r
-      <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj">\r
-      <Project>{D554618C-5D38-413A-82BA-7A70B6FC61A3}</Project>\r
-      <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/WindowsBase/WindowsBase-net_4_5.csproj b/mcs/class/WindowsBase/WindowsBase-net_4_5.csproj
deleted file mode 100644 (file)
index 1f9888b..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8E6ED7D5-3B08-4A83-905E-8FB4CF0C160D}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>WindowsBase</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="System.Collections.ObjectModel\ObservableCollection.cs" />\r
-    <Compile Include="System.Collections.ObjectModel\ReadOnlyObservableCollection.cs" />\r
-    <Compile Include="System.Collections.Specialized\CollectionChangedEventManager.cs" />\r
-    <Compile Include="System.Collections.Specialized\INotifyCollectionChanged.cs" />\r
-    <Compile Include="System.Collections.Specialized\NotifyCollectionChangedAction.cs" />\r
-    <Compile Include="System.Collections.Specialized\NotifyCollectionChangedEventArgs.cs" />\r
-    <Compile Include="System.Collections.Specialized\NotifyCollectionChangedEventHandler.cs" />\r
-    <Compile Include="System.ComponentModel\CurrentChangedEventManager.cs" />\r
-    <Compile Include="System.ComponentModel\CurrentChangingEventArgs.cs" />\r
-    <Compile Include="System.ComponentModel\CurrentChangingEventHandler.cs" />\r
-    <Compile Include="System.ComponentModel\CurrentChangingEventManager.cs" />\r
-    <Compile Include="System.ComponentModel\DependencyPropertyDescriptor.cs" />\r
-    <Compile Include="System.ComponentModel\GroupDescription.cs" />\r
-    <Compile Include="System.ComponentModel\ICollectionView.cs" />\r
-    <Compile Include="System.ComponentModel\ICollectionViewFactory.cs" />\r
-    <Compile Include="System.ComponentModel\IEditableCollectionView.cs" />\r
-    <Compile Include="System.ComponentModel\IEditableCollectionViewAddNewItem.cs" />\r
-    <Compile Include="System.ComponentModel\IItemProperties.cs" />\r
-    <Compile Include="System.ComponentModel\ItemPropertyInfo.cs" />\r
-    <Compile Include="System.ComponentModel\NewItemPlaceholderPosition.cs" />\r
-    <Compile Include="System.ComponentModel\PropertyChangedEventManager.cs" />\r
-    <Compile Include="System.ComponentModel\PropertyFilterAttribute.cs" />\r
-    <Compile Include="System.ComponentModel\PropertyFilterOptions.cs" />\r
-    <Compile Include="System.ComponentModel\SortDescription.cs" />\r
-    <Compile Include="System.ComponentModel\SortDescriptionCollection.cs" />\r
-    <Compile Include="System.Diagnostics\PresentationTraceLevel.cs" />\r
-    <Compile Include="System.Diagnostics\PresentationTraceSources.cs" />\r
-    <Compile Include="System.IO.Packaging\CertificateEmbeddingOption.cs" />\r
-    <Compile Include="System.IO.Packaging\Check.cs" />\r
-    <Compile Include="System.IO.Packaging\CompressionOption.cs" />\r
-    <Compile Include="System.IO.Packaging\EncryptedPackageEnvelope.cs" />\r
-    <Compile Include="System.IO.Packaging\EncryptionOption.cs" />\r
-    <Compile Include="System.IO.Packaging\InvalidSignatureEventHandler.cs" />\r
-    <Compile Include="System.IO.Packaging\Package.cs" />\r
-    <Compile Include="System.IO.Packaging\PackageDigitalSignature.cs" />\r
-    <Compile Include="System.IO.Packaging\PackageDigitalSignatureManager.cs" />\r
-    <Compile Include="System.IO.Packaging\PackagePart.cs" />\r
-    <Compile Include="System.IO.Packaging\PackagePartCollection.cs" />\r
-    <Compile Include="System.IO.Packaging\PackageProperties.cs" />\r
-    <Compile Include="System.IO.Packaging\PackagePropertiesPart.cs" />\r
-    <Compile Include="System.IO.Packaging\PackageRelationship.cs" />\r
-    <Compile Include="System.IO.Packaging\PackageRelationshipCollection.cs" />\r
-    <Compile Include="System.IO.Packaging\PackageRelationshipSelector.cs" />\r
-    <Compile Include="System.IO.Packaging\PackageRelationshipSelectorType.cs" />\r
-    <Compile Include="System.IO.Packaging\PackUriHelper.cs" />\r
-    <Compile Include="System.IO.Packaging\PackUriParser.cs" />\r
-    <Compile Include="System.IO.Packaging\RightsManagementInformation.cs" />\r
-    <Compile Include="System.IO.Packaging\SignatureVerificationEventArgs.cs" />\r
-    <Compile Include="System.IO.Packaging\StorageInfo.cs" />\r
-    <Compile Include="System.IO.Packaging\StreamInfo.cs" />\r
-    <Compile Include="System.IO.Packaging\TargetMode.cs" />\r
-    <Compile Include="System.IO.Packaging\VerifyResult.cs" />\r
-    <Compile Include="System.IO.Packaging\ZipPackage.cs" />\r
-    <Compile Include="System.IO.Packaging\ZipPackagePart.cs" />\r
-    <Compile Include="System.IO.Packaging\ZipPartStream.cs" />\r
-    <Compile Include="System.IO\FileFormatException.cs" />\r
-    <Compile Include="System.Security.Permissions\MediaPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\MediaPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\MediaPermissionAudio.cs" />\r
-    <Compile Include="System.Security.Permissions\MediaPermissionImage.cs" />\r
-    <Compile Include="System.Security.Permissions\MediaPermissionVideo.cs" />\r
-    <Compile Include="System.Security.Permissions\WebBrowserPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\WebBrowserPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\WebBrowserPermissionLevel.cs" />\r
-    <Compile Include="System.Security.RightsManagement\AuthenticationType.cs" />\r
-    <Compile Include="System.Security.RightsManagement\ContentGrant.cs" />\r
-    <Compile Include="System.Security.RightsManagement\ContentRight.cs" />\r
-    <Compile Include="System.Security.RightsManagement\ContentUser.cs" />\r
-    <Compile Include="System.Security.RightsManagement\CryptoProvider.cs" />\r
-    <Compile Include="System.Security.RightsManagement\LocalizedNameDescriptionPair.cs" />\r
-    <Compile Include="System.Security.RightsManagement\PublishLicense.cs" />\r
-    <Compile Include="System.Security.RightsManagement\RightsManagementException.cs" />\r
-    <Compile Include="System.Security.RightsManagement\RightsManagementFailureCode.cs" />\r
-    <Compile Include="System.Security.RightsManagement\SecureEnvironment.cs" />\r
-    <Compile Include="System.Security.RightsManagement\UnsignedPublishLicense.cs" />\r
-    <Compile Include="System.Security.RightsManagement\UseLicense.cs" />\r
-    <Compile Include="System.Security.RightsManagement\UserActivationMode.cs" />\r
-    <Compile Include="System.Windows.Converters\Int32RectValueSerializer.cs" />\r
-    <Compile Include="System.Windows.Converters\PointValueSerializer.cs" />\r
-    <Compile Include="System.Windows.Converters\RectValueSerializer.cs" />\r
-    <Compile Include="System.Windows.Converters\SizeValueSerializer.cs" />\r
-    <Compile Include="System.Windows.Converters\VectorValueSerializer.cs" />\r
-    <Compile Include="System.Windows.Data\DataSourceProvider.cs" />\r
-    <Compile Include="System.Windows.Input\FocusNavigationDirection.cs" />\r
-    <Compile Include="System.Windows.Input\Key.cs" />\r
-    <Compile Include="System.Windows.Input\KeyConverter.cs" />\r
-    <Compile Include="System.Windows.Input\KeyInterop.cs" />\r
-    <Compile Include="System.Windows.Input\KeyValueSerializer.cs" />\r
-    <Compile Include="System.Windows.Input\ModifierKeys.cs" />\r
-    <Compile Include="System.Windows.Input\ModifierKeysConverter.cs" />\r
-    <Compile Include="System.Windows.Input\ModifierKeysValueSerializer.cs" />\r
-    <Compile Include="System.Windows.Input\TraversalRequest.cs" />\r
-    <Compile Include="System.Windows.Interop\ComponentDispatcher.cs" />\r
-    <Compile Include="System.Windows.Interop\IKeyboardInputSink.cs" />\r
-    <Compile Include="System.Windows.Interop\IKeyboardInputSite.cs" />\r
-    <Compile Include="System.Windows.Interop\MSG.cs" />\r
-    <Compile Include="System.Windows.Interop\ThreadMessageEventHandler.cs" />\r
-    <Compile Include="System.Windows.Markup.Primitives\MarkupObject.cs" />\r
-    <Compile Include="System.Windows.Markup.Primitives\MarkupProperty.cs" />\r
-    <Compile Include="System.Windows.Markup\AmbientAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\ConstructorArgumentAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\ContentPropertyAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\ContentWrapperAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\DateTimeValueSerializer.cs" />\r
-    <Compile Include="System.Windows.Markup\DependsOnAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\DesignerSerializationOptions.cs" />\r
-    <Compile Include="System.Windows.Markup\DesignerSerializationOptionsAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\DictionaryKeyPropertyAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\IComponentConnector.cs" />\r
-    <Compile Include="System.Windows.Markup\INameScope.cs" />\r
-    <Compile Include="System.Windows.Markup\InternalTypeHelper.cs" />\r
-    <Compile Include="System.Windows.Markup\IReceiveMarkupExtension.cs" />\r
-    <Compile Include="System.Windows.Markup\IValueSerializerContext.cs" />\r
-    <Compile Include="System.Windows.Markup\IXamlTypeResolver.cs" />\r
-    <Compile Include="System.Windows.Markup\MarkupExtension.cs" />\r
-    <Compile Include="System.Windows.Markup\MarkupExtensionReturnTypeAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\NameScopePropertyAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\RootNamespaceAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\RuntimeNamePropertyAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\ServiceProviders.cs" />\r
-    <Compile Include="System.Windows.Markup\TrimSurroundingWhitespaceAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\UidPropertyAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\UsableDuringInitializationAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\ValueSerializer.cs" />\r
-    <Compile Include="System.Windows.Markup\ValueSerializerAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\WhitespaceSignificantCollectionAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\XmlLangPropertyAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\XmlnsCompatibleWithAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\XmlnsDefinitionAttribute.cs" />\r
-    <Compile Include="System.Windows.Markup\XmlnsPrefixAttribute.cs" />\r
-    <Compile Include="System.Windows.Media.Converters\MatrixValueSerializer.cs" />\r
-    <Compile Include="System.Windows.Media\DisableDpiAwarenessAttribute.cs" />\r
-    <Compile Include="System.Windows.Media\Matrix.cs" />\r
-    <Compile Include="System.Windows.Media\MatrixConverter.cs" />\r
-    <Compile Include="System.Windows.Threading\Dispatcher.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherEventArgs.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherFrame.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherHookEventArgs.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherHookEventHandler.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherHooks.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherObject.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherOperation.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherOperationCallback.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherOperationStatus.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherPriority.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherProcessingDisabled.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherSynchronizationContext.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherTimer.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherUnhandledExceptionEventArgs.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherUnhandledExceptionEventHandler.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherUnhandledExceptionFilterEventArgs.cs" />\r
-    <Compile Include="System.Windows.Threading\DispatcherUnhandledExceptionFilterEventHandler.cs" />\r
-    <Compile Include="System.Windows\AttachedPropertyBrowsableAttribute.cs" />\r
-    <Compile Include="System.Windows\AttachedPropertyBrowsableForTypeAttribute.cs" />\r
-    <Compile Include="System.Windows\AttachedPropertyBrowsableWhenAttributePresentAttribute.cs" />\r
-    <Compile Include="System.Windows\CoerceValueCallback.cs" />\r
-    <Compile Include="System.Windows\DependencyObject.cs" />\r
-    <Compile Include="System.Windows\DependencyObjectType.cs" />\r
-    <Compile Include="System.Windows\DependencyProperty.cs" />\r
-    <Compile Include="System.Windows\DependencyPropertyChangedEventArgs.cs" />\r
-    <Compile Include="System.Windows\DependencyPropertyChangedEventHandler.cs" />\r
-    <Compile Include="System.Windows\DependencyPropertyKey.cs" />\r
-    <Compile Include="System.Windows\Expression.cs" />\r
-    <Compile Include="System.Windows\ExpressionConverter.cs" />\r
-    <Compile Include="System.Windows\Freezable.cs" />\r
-    <Compile Include="System.Windows\Int32Rect.cs" />\r
-    <Compile Include="System.Windows\Int32RectConverter.cs" />\r
-    <Compile Include="System.Windows\IWeakEventListener.cs" />\r
-    <Compile Include="System.Windows\LocalValueEntry.cs" />\r
-    <Compile Include="System.Windows\LocalValueEnumerator.cs" />\r
-    <Compile Include="System.Windows\Point.cs" />\r
-    <Compile Include="System.Windows\PointConverter.cs" />\r
-    <Compile Include="System.Windows\PropertyChangedCallback.cs" />\r
-    <Compile Include="System.Windows\PropertyMetadata.cs" />\r
-    <Compile Include="System.Windows\Rect.cs" />\r
-    <Compile Include="System.Windows\RectConverter.cs" />\r
-    <Compile Include="System.Windows\Size.cs" />\r
-    <Compile Include="System.Windows\SizeConverter.cs" />\r
-    <Compile Include="System.Windows\SplashScreen.cs" />\r
-    <Compile Include="System.Windows\ValidateValueCallback.cs" />\r
-    <Compile Include="System.Windows\Vector.cs" />\r
-    <Compile Include="System.Windows\VectorConverter.cs" />\r
-    <Compile Include="System.Windows\WeakEventManager.cs" />\r
-    <Compile Include="ZipSharp\IOFunctions.cs" />\r
-    <Compile Include="ZipSharp\NativeUnzip.cs" />\r
-    <Compile Include="ZipSharp\NativeZip.cs" />\r
-    <Compile Include="ZipSharp\UnzipArchive.cs" />\r
-    <Compile Include="ZipSharp\UnzipFileInfo.cs" />\r
-    <Compile Include="ZipSharp\UnzipHandle.cs" />\r
-    <Compile Include="ZipSharp\UnzipReadStream.cs" />\r
-    <Compile Include="ZipSharp\ZipArchive.cs" />\r
-    <Compile Include="ZipSharp\ZipFileInfo.cs" />\r
-    <Compile Include="ZipSharp\ZipHandle.cs" />\r
-    <Compile Include="ZipSharp\ZipStream.cs" />\r
-    <Compile Include="ZipSharp\ZipTime.cs" />\r
-    <Compile Include="ZipSharp\ZipWriteStream.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Xaml/System.Xaml-net_4_5.csproj">\r
-      <Project>{F574F9BD-1838-4C13-8722-7D6D33DE1781}</Project>\r
-      <Name>System.Xaml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/WindowsBase/WindowsBase-tests-net_4_5.csproj b/mcs/class/WindowsBase/WindowsBase-tests-net_4_5.csproj
deleted file mode 100644 (file)
index f255d1d..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C1439AE1-8420-4D56-98F1-2F98B221485A}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>1699</NoWarn>\r
-    <OutputPath>bin\Debug\WindowsBase-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>WindowsBase_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\System.Collections.ObjectModel\ObservableCollectionTest.cs" />\r
-    <Compile Include="Test\System.Collections.ObjectModel\ReadOnlyObservableCollectionTest.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\CollectionChangedEventValidators.cs" />\r
-    <Compile Include="Test\System.Collections.Specialized\NotifyCollectionChangedEventArgsTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\CurrentChangingEventArgsTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\GroupDescriptionTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\PropertyFilterAttributeTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\SortDescriptionCollectionTest.cs" />\r
-    <Compile Include="Test\System.ComponentModel\SortDescriptionTest.cs" />\r
-    <Compile Include="Test\System.IO.Packaging\FakePackage.cs" />\r
-    <Compile Include="Test\System.IO.Packaging\FakePackagePart.cs" />\r
-    <Compile Include="Test\System.IO.Packaging\FakePackagePartTests.cs" />\r
-    <Compile Include="Test\System.IO.Packaging\FakePackageTests.cs" />\r
-    <Compile Include="Test\System.IO.Packaging\FakeStream.cs" />\r
-    <Compile Include="Test\System.IO.Packaging\PackagePartFileTests.cs" />\r
-    <Compile Include="Test\System.IO.Packaging\PackagePartStreamTests.cs" />\r
-    <Compile Include="Test\System.IO.Packaging\PackagePartTest.cs" />\r
-    <Compile Include="Test\System.IO.Packaging\PackageRelationshipTests.cs" />\r
-    <Compile Include="Test\System.IO.Packaging\PackageTest.cs" />\r
-    <Compile Include="Test\System.IO.Packaging\PackUriHelperTests.cs" />\r
-    <Compile Include="Test\System.IO.Packaging\TestBase.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\ConstructorArgumentAttributeTest.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\ContentPropertyAttributeTest.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\ContentWrapperAttributeTest.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\DateTimeValueSerializerTest.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\DependsOnAttributeTest.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\MarkupExtensionReturnTypeAttributeTest.cs" />\r
-    <Compile Include="Test\System.Windows.Markup\ValueSerializerTest.cs" />\r
-    <Compile Include="Test\System.Windows.Media\MatrixTest.cs" />\r
-    <Compile Include="Test\System.Windows.Threading\DispatcherTest.cs" />\r
-    <Compile Include="Test\System.Windows.Threading\DispatcherTimerTest.cs" />\r
-    <Compile Include="Test\System.Windows\DependencyObjectTest.cs" />\r
-    <Compile Include="Test\System.Windows\DependencyObjectTypeTest.cs" />\r
-    <Compile Include="Test\System.Windows\DependencyPropertyTest.cs" />\r
-    <Compile Include="Test\System.Windows\Int32RectConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows\Int32RectTest.cs" />\r
-    <Compile Include="Test\System.Windows\PointConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows\PointTest.cs" />\r
-    <Compile Include="Test\System.Windows\PropertyMetadataTest.cs" />\r
-    <Compile Include="Test\System.Windows\RectConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows\RectTest.cs" />\r
-    <Compile Include="Test\System.Windows\SizeConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows\SizeTest.cs" />\r
-    <Compile Include="Test\System.Windows\VectorConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows\VectorTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_5.csproj">\r
-      <Project>{8E6ED7D5-3B08-4A83-905E-8FB4CF0C160D}</Project>\r
-      <Name>WindowsBase\WindowsBase-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_5.csproj">\r
-      <Project>{8E6ED7D5-3B08-4A83-905E-8FB4CF0C160D}</Project>\r
-      <Name>WindowsBase\WindowsBase-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_5.csproj">\r
-      <Project>{F574F9BD-1838-4C13-8722-7D6D33DE1781}</Project>\r
-      <Name>System.Xaml\System.Xaml-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index a83741386d1022c3daf27e2c1b59b1d0c241e1c5..818dc50039a6657de1396873df885376f49c4b67 100644 (file)
@@ -82,5 +82,21 @@ using System.Runtime.InteropServices;
 #endif
 [assembly: InternalsVisibleTo ("System.Numerics, PublicKey=00000000000000000400000000000000")]
 
+#if MONOTOUCH
+#if MONOTOUCH_TV
+[assembly: InternalsVisibleTo ("Xamarin.TVOS, PublicKey=0024000004800000940000000602000000240000525341310004000011000000438ac2a5acfbf16cbd2b2b47a62762f273df9cb2795ceccdf77d10bf508e69e7a362ea7a45455bbf3ac955e1f2e2814f144e5d817efc4c6502cc012df310783348304e3ae38573c6d658c234025821fda87a0be8a0d504df564e2c93b2b878925f42503e9d54dfef9f9586d9e6f38a305769587b1de01f6c0410328b2c9733db")]
+#elif MONOTOUCH_WATCH
+[assembly: InternalsVisibleTo ("Xamarin.WatchOS, PublicKey=0024000004800000940000000602000000240000525341310004000011000000438ac2a5acfbf16cbd2b2b47a62762f273df9cb2795ceccdf77d10bf508e69e7a362ea7a45455bbf3ac955e1f2e2814f144e5d817efc4c6502cc012df310783348304e3ae38573c6d658c234025821fda87a0be8a0d504df564e2c93b2b878925f42503e9d54dfef9f9586d9e6f38a305769587b1de01f6c0410328b2c9733db")]
+#else
+[assembly: InternalsVisibleTo ("monotouch, PublicKey=0024000004800000940000000602000000240000525341310004000011000000438ac2a5acfbf16cbd2b2b47a62762f273df9cb2795ceccdf77d10bf508e69e7a362ea7a45455bbf3ac955e1f2e2814f144e5d817efc4c6502cc012df310783348304e3ae38573c6d658c234025821fda87a0be8a0d504df564e2c93b2b878925f42503e9d54dfef9f9586d9e6f38a305769587b1de01f6c0410328b2c9733db")]
+[assembly: InternalsVisibleTo ("Xamarin.iOS, PublicKey=0024000004800000940000000602000000240000525341310004000011000000438ac2a5acfbf16cbd2b2b47a62762f273df9cb2795ceccdf77d10bf508e69e7a362ea7a45455bbf3ac955e1f2e2814f144e5d817efc4c6502cc012df310783348304e3ae38573c6d658c234025821fda87a0be8a0d504df564e2c93b2b878925f42503e9d54dfef9f9586d9e6f38a305769587b1de01f6c0410328b2c9733db")]
+#endif
+#endif
+
+#if XAMMAC || XAMMAC_4_5
+[assembly: InternalsVisibleTo ("XamMac, PublicKey=0024000004800000940000000602000000240000525341310004000011000000438ac2a5acfbf16cbd2b2b47a62762f273df9cb2795ceccdf77d10bf508e69e7a362ea7a45455bbf3ac955e1f2e2814f144e5d817efc4c6502cc012df310783348304e3ae38573c6d658c234025821fda87a0be8a0d504df564e2c93b2b878925f42503e9d54dfef9f9586d9e6f38a305769587b1de01f6c0410328b2c9733db")]
+[assembly: InternalsVisibleTo ("Xamarin.Mac, PublicKey=0024000004800000940000000602000000240000525341310004000011000000438ac2a5acfbf16cbd2b2b47a62762f273df9cb2795ceccdf77d10bf508e69e7a362ea7a45455bbf3ac955e1f2e2814f144e5d817efc4c6502cc012df310783348304e3ae38573c6d658c234025821fda87a0be8a0d504df564e2c93b2b878925f42503e9d54dfef9f9586d9e6f38a305769587b1de01f6c0410328b2c9733db")]
+#endif
+
 [assembly: Guid ("BED7F4EA-1A96-11D2-8F08-00A0C9A6186D")]
 
index 89222691f7ea0b0e2f0c929ea801d8d41c1e87d5..ef5490a16611d24189933d8678826a89e6a1f731 100644 (file)
@@ -41,12 +41,27 @@ ifndef MOBILE_STATIC
 REFERENCE_SOURCES_FLAGS += -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY
 endif
 
+ifndef NO_THREAD_ABORT
+REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_THREAD_ABORT
+TEST_MCS_FLAGS += -d:MONO_FEATURE_THREAD_ABORT
+endif
+
+ifndef NO_THREAD_SUSPEND_RESUME
+REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_THREAD_SUSPEND_RESUME
+TEST_MCS_FLAGS += -d:MONO_FEATURE_THREAD_SUSPEND_RESUME
+endif
+
+ifndef NO_MULTIPLE_APPDOMAINS
+REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_MULTIPLE_APPDOMAINS
+TEST_MCS_FLAGS += -d:MONO_FEATURE_MULTIPLE_APPDOMAINS
+endif
+
 WARNING_ABOUT_DISABLED_WARNING=1635
 LOCAL_MCS_FLAGS = -unsafe -nostdlib -nowarn:612,618,$(WARNING_ABOUT_DISABLED_WARNING) -d:INSIDE_CORLIB,MONO_CULTURE_DATA -d:LIBC $(REFERENCE_SOURCES_FLAGS)
 DEFAULT_REFERENCES =
 
 # System.IO/DirectoryInfoTest.cs needs Mono.Posix
-TEST_MCS_FLAGS = -debug -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll \
+TEST_MCS_FLAGS += -debug -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll \
                                 -define:MONO_DATACONVERTER_STATIC_METHODS $(TEST_RESX_RESOURCES:%=-resource:%)
 
 EXTRA_DISTFILES = \
index 80e56a559ac900ae0c4779d6a7e7bb66a58b177b..7a5f9887c6334fff01b0f7f9835659b44fac9be3 100644 (file)
@@ -59,7 +59,10 @@ namespace Mono {
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                static extern string GetNativeStackTrace (Exception exception);
 
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               public static extern bool SetGCAllowSynchronousMajor (bool flag);
+               public static bool SetGCAllowSynchronousMajor (bool flag)
+               {
+                       // No longer used
+                       return true;
+               }
        }
 }
diff --git a/mcs/class/corlib/ReferenceSources/AppContextSwitches.cs b/mcs/class/corlib/ReferenceSources/AppContextSwitches.cs
new file mode 100644 (file)
index 0000000..bf8c824
--- /dev/null
@@ -0,0 +1,5 @@
+namespace System {
+       static class AppContextSwitches {
+               public const bool ThrowExceptionIfDisposedCancellationTokenSource = true;
+       }
+}
\ No newline at end of file
index 2d101642b7b18b3839bf11f09442abe584700e08..125e59cc1acc7b0bc76dd2976380ad60439d13dc 100644 (file)
@@ -3,5 +3,6 @@ namespace System
        static class Array_ReferenceSources
        {
                internal const int MaxArrayLength = 0X7FEFFFFF;
+               internal const int MaxByteArrayLength = 0x7FFFFFC7;
        }
 }
\ No newline at end of file
index 94b3a9552693a37f13cceda859997881a20d8677..f13d7d3699060f10aef53f989774d4d6f9b6c257 100644 (file)
@@ -64,6 +64,44 @@ namespace System
                        }
                }
 
+               [CLSCompliantAttribute (false)]
+               public static unsafe void MemoryCopy (void* source, void* destination, long destinationSizeInBytes, long sourceBytesToCopy)
+               {
+                       if (sourceBytesToCopy > destinationSizeInBytes) {
+                               ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.sourceBytesToCopy);
+                       }
+
+                       var src = (byte*)source;
+                       var dst = (byte*)destination;
+                       while (sourceBytesToCopy > int.MaxValue) {
+                               Memcpy (dst, src, int.MaxValue);
+                               sourceBytesToCopy -= int.MaxValue;
+                               src += int.MaxValue;
+                               dst += int.MaxValue;
+                       }
+
+                       memcpy1 (dst, src, (int) sourceBytesToCopy);
+               }
+
+               [CLSCompliantAttribute (false)]
+               public static unsafe void MemoryCopy (void* source, void* destination, ulong destinationSizeInBytes, ulong sourceBytesToCopy)
+               {
+                       if (sourceBytesToCopy > destinationSizeInBytes) {
+                               ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.sourceBytesToCopy);
+                       }
+
+                       var src = (byte*)source;
+                       var dst = (byte*)destination;
+                       while (sourceBytesToCopy > int.MaxValue) {
+                               Memcpy (dst, src, int.MaxValue);
+                               sourceBytesToCopy -= int.MaxValue;
+                               src += int.MaxValue;
+                               dst += int.MaxValue;
+                       }
+
+                       Memcpy (dst, src, (int) sourceBytesToCopy);
+               }
+
                internal static unsafe void memcpy4 (byte *dest, byte *src, int size) {
                        /*while (size >= 32) {
                                // using long is better than int and slower than double
index 9f2a2d68082cdb64d916563fe784f9747dbe845e..074e754b9580c4b8255240414d812fdb347617dd 100644 (file)
@@ -36,7 +36,10 @@ namespace System
                                return false;
 
                        var from = Type.GetTypeCode (source);
-                       switch (Type.GetTypeCode (target)) {
+                       var to = Type.GetTypeCode (target);
+                       if (from == to && source.IsPrimitive)
+                               return true;
+                       switch (to) {
                        case TypeCode.Char:
                                switch (from) {
                                case TypeCode.Byte:
@@ -146,4 +149,4 @@ namespace System
                        return st == type || CanConvertPrimitive ((RuntimeType) st, type);
                }
        }
-}
\ No newline at end of file
+}
index d5d822fdb00e9c4ddcd788046f1b0918b3aa5409..6189729573d81b741ac2edb0b2a4359217d22fb1 100644 (file)
@@ -16,7 +16,7 @@ namespace System.Runtime.CompilerServices {
 
                static internal long UnsafeEnumCastLong<T>(T val) where T : struct
                {
-                       throw new NotImplementedException ();
+                       return Array.UnsafeMov<T, long> (val);
                }
        }
 }
\ No newline at end of file
index c8fae32d36363d570e0c0385504f5d21042fb400..ce498cb17c52dda886e1cee61a393f79114239b1 100644 (file)
@@ -43,6 +43,8 @@ namespace System
 {
        partial class RuntimeType
        {
+               internal Object GenericCache;
+
                internal virtual MonoCMethod GetDefaultConstructor ()
                {
                        // TODO: Requires MonoType
index 191e9932deff16a1ad8f66cda6e4c0aa92e05274..33ff04a566acbdbfc9ec3c894f074c357092a512 100644 (file)
@@ -41,6 +41,9 @@ namespace System.Diagnostics.Tracing
                        get; private set;
                }
 
+               public EventLevel Level { get; set; }
+               public EventKeywords Keywords { get; set; }
+
        }
 }
 
diff --git a/mcs/class/corlib/System.Diagnostics.Tracing/EventKeywords.cs b/mcs/class/corlib/System.Diagnostics.Tracing/EventKeywords.cs
deleted file mode 100644 (file)
index ca2bfd7..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// EventKeywords.cs
-//
-// Authors:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright (C) 2014 Xamarin Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Diagnostics.Tracing
-{
-       [Flags]
-       public enum EventKeywords : long
-       {
-               None,
-               WdiContext =            0x2000000000000,
-               WdiDiagnostic =         0x4000000000000,
-               Sqm =                           0x8000000000000,
-               AuditFailure =          0x10000000000000,
-               AuditSuccess =          0x20000000000000,
-               CorrelationHint =       0x10000000000000,
-               EventLogClassic =       0x80000000000000
-       }
-}
-
diff --git a/mcs/class/corlib/System.Diagnostics.Tracing/EventLevel.cs b/mcs/class/corlib/System.Diagnostics.Tracing/EventLevel.cs
deleted file mode 100644 (file)
index 6d56cff..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// EventLevel.cs
-//
-// Authors:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright (C) 2014 Xamarin Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Diagnostics.Tracing
-{
-       public enum EventLevel
-       {
-               LogAlways,
-               Critical,
-               Error,
-               Warning,
-               Informational,
-               Verbose
-       }
-}
-
index 37c2b3aba61c66daeadeba23341c2a7a264416ff..181eedff023051bba455a2f3462b63e1d498fa89 100644 (file)
@@ -33,12 +33,68 @@ namespace System.Diagnostics.Tracing
        {
                protected EventSource ()
                {
+                       this.Name = this.GetType().Name;
                }
 
                protected EventSource (bool throwOnEventWriteErrors)
+                       : this ()
                {
                }
 
+               protected EventSource (EventSourceSettings settings)
+                       : this ()
+               {
+                       this.Settings = settings;
+               }
+
+               protected EventSource (EventSourceSettings settings, params string[] traits)
+                       : this (settings)
+               {
+               }
+
+               public EventSource (string eventSourceName)
+               {
+                       this.Name = eventSourceName;
+               }
+
+               public EventSource (string eventSourceName, EventSourceSettings config)
+                       : this (eventSourceName)
+               {
+                       this.Settings = config;
+               }
+
+               public EventSource (string eventSourceName, EventSourceSettings config, params string[] traits)
+                       : this (eventSourceName, config)
+               {
+               }
+
+               public Exception ConstructionException
+               {
+                       get { return null; }
+               }
+
+               public static Guid CurrentThreadActivityId
+               {
+                       get { return Guid.Empty; }
+               }
+
+               public Guid Guid
+               {
+                       get { return Guid.Empty; }
+               }
+
+               public string Name
+               {
+                       get;
+                       private set;
+               }
+
+               public EventSourceSettings Settings
+               {
+                       get;
+                       private set;
+               }
+
                public bool IsEnabled ()
                {
                        return false;
@@ -49,24 +105,66 @@ namespace System.Diagnostics.Tracing
                        return false;
                }
 
+               public bool IsEnabled (EventLevel level, EventKeywords keywords, EventChannel channel)
+               {
+                       return false;
+               }
+
                public void Dispose ()
                {
                        Dispose (true);
                }
 
+               public string GetTrait (string key)
+               {
+                       return null;
+               }
+
+               public void Write (string eventName)
+               {
+               }
+
+               public void Write<T> (string eventName, T data)
+               {
+               }
+
+               public void Write<T> (string eventName, EventSourceOptions options, T data)
+               {
+               }
+
+               public void Write<T> (string eventName, ref EventSourceOptions options, ref T data)
+               {
+               }
+
+               public void Write<T> (string eventName, ref EventSourceOptions options, ref Guid activityId, ref Guid relatedActivityId, ref T data)
+               {
+               }
+
                protected virtual void Dispose (bool disposing)
-               {                       
+               {
                }
 
                protected virtual void OnEventCommand (EventCommandEventArgs command)
                {
                }
 
+               protected void WriteEvent (int eventId)
+               {
+               }
+
+               protected void WriteEvent (int eventId, byte[] arg1)
+               {
+               }
+
+               protected void WriteEvent (int eventId, int arg1)
+               {
+               }
+
                protected void WriteEvent (int eventId, string arg1)
                {
                }
 
-               protected void WriteEvent (int eventId, string arg1, int arg2)
+               protected void WriteEvent (int eventId, int arg1, int arg2)
                {
                }
 
@@ -74,9 +172,53 @@ namespace System.Diagnostics.Tracing
                {
                }
 
+               protected void WriteEvent (int eventId, int arg1, string arg2)
+               {
+               }
+
+               protected void WriteEvent (int eventId, long arg1)
+               {
+               }
+
+               protected void WriteEvent (int eventId, long arg1, byte[] arg2)
+               {
+               }
+
+               protected void WriteEvent (int eventId, long arg1, long arg2)
+               {
+               }
+
+               protected void WriteEvent (int eventId, long arg1, long arg2, long arg3)
+               {
+               }
+
+               protected void WriteEvent (int eventId, long arg1, string arg2)
+               {
+               }
+
+               protected void WriteEvent (int eventId, params object[] args)
+               {
+               }
+
+               protected void WriteEvent (int eventId, string arg1, int arg2)
+               {
+               }
+
                protected void WriteEvent (int eventId, string arg1, int arg2, int arg3)
                {
                }
+
+               protected void WriteEvent (int eventId, string arg1, long arg2)
+               {
+               }
+
+               protected void WriteEvent (int eventId, string arg1, string arg2)
+               {
+               }
+
+               protected void WriteEvent (int eventId, string arg1, string arg2, string arg3)
+               {
+               }
        }
 }
 
diff --git a/mcs/class/corlib/System.Diagnostics.Tracing/EventSourceSettings.cs b/mcs/class/corlib/System.Diagnostics.Tracing/EventSourceSettings.cs
new file mode 100644 (file)
index 0000000..2891172
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// EventSourceSettings.cs
+//
+// Authors:
+//     Frederik Carlier  <frederik.carlier@quamotion.mobi>
+//
+// Copyright (C) 2015 Quamotion (http://quamotion.mobi)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+namespace System.Diagnostics.Tracing
+{
+       [Flags]
+       public enum EventSourceSettings
+       {
+               Default = 0,
+               ThrowOnEventWriteErrors = 1,
+               EtwManifestEventFormat = 4,
+               EtwSelfDescribingEventFormat = 8
+       }
+}
+
index 4b90b6fe8aeb9d55ea39d9c5475df0e47e4600d7..4c322cd107fc95a732c4763db1ffb5bd675d57c9 100644 (file)
@@ -149,6 +149,10 @@ namespace System.Diagnostics {
                        throw new NotImplementedException ();
                }
 
+               internal StackTrace (StackFrame[] frames) {
+                       this.frames = frames;
+               }
+
                public virtual int FrameCount {
                        get {
                                return (frames == null) ? 0 : frames.Length;
index a85039bfa3cf150aaee93726b218077b03561af9..242bc800ac88169845c2dd3b980d754a40d28721 100644 (file)
@@ -143,9 +143,12 @@ namespace System.Globalization
 
                        var locale_name = get_current_locale_name ();
                        CultureInfo ci = null;
-                       try {
-                               ci = CreateSpecificCulture (locale_name);
-                       } catch {
+
+                       if (locale_name != null) {
+                               try {
+                                       ci = CreateSpecificCulture (locale_name);
+                               } catch {
+                               }
                        }
 
                        if (ci == null) {
index a15c475bbaa88aab7ec9854f900dd4bf16215afa..994358c86bec2aff6ec7373da50dcd0ee17d515a 100644 (file)
@@ -51,6 +51,8 @@ namespace System.IO
                public static readonly IntPtr
                        InvalidHandle = (IntPtr)(-1L);
 
+               static bool dump_handles = Environment.GetEnvironmentVariable ("MONO_DUMP_HANDLES_ON_ERROR_TOO_MANY_OPEN_FILES") != null;
+
                // error methods
                public static Exception GetException (MonoIOError error)
                {
@@ -89,6 +91,8 @@ namespace System.IO
                                return new FileNotFoundException (message, path);
 
                        case MonoIOError.ERROR_TOO_MANY_OPEN_FILES:
+                               if (dump_handles)
+                                       DumpHandles ();
                                return new IOException ("Too many open files", unchecked((int)0x80070000) | (int)error);
                                
                        case MonoIOError.ERROR_PATH_NOT_FOUND:
@@ -599,6 +603,9 @@ namespace System.IO
                        [MethodImplAttribute (MethodImplOptions.InternalCall)]
                        get;
                }
+
+               [MethodImplAttribute (MethodImplOptions.InternalCall)]
+               extern static void DumpHandles ();
        }
 }
 
index 7945d4074065aac872d22a30c6b8f0fb969c77db..9ac0e97545427ada48cdaaadfddd1f60b0eef086 100644 (file)
@@ -289,6 +289,7 @@ namespace System.IO {
                        return fullpath;
                }
 
+#if !MOBILE
                // http://msdn.microsoft.com/en-us/library/windows/desktop/aa364963%28v=vs.85%29.aspx
                [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
                private static extern int GetFullPathName(string path, int numBufferChars, StringBuilder buffer, ref IntPtr lpFilePartOrNull); 
@@ -341,6 +342,7 @@ namespace System.IO {
                        }
                        return path;
                }
+#endif
 
                // insecure - do not call directly
                internal static string InsecureGetFullPath (string path)
@@ -352,11 +354,11 @@ namespace System.IO {
                                string msg = Locale.GetText ("The specified path is not of a legal form (empty).");
                                throw new ArgumentException (msg);
                        }
-
+#if !MOBILE
                        // adjust for drives, i.e. a special case for windows
                        if (Environment.IsRunningOnWindows)
                                path = WindowsDriveAdjustment (path);
-
+#endif
                        // if the supplied path ends with a separator...
                        char end = path [path.Length - 1];
 
index 26b89423c471ac27d7aacd55dcecd5067c0ce88e..d6c39114f16ef3da670dd957008a1c592b08af79 100644 (file)
@@ -67,7 +67,8 @@ namespace System.Reflection.Emit {
                
                private TypeBuilder global_type;
                private Type global_type_created;
-               Hashtable name_cache;
+               // name_cache keys are display names
+               Dictionary<TypeName, TypeBuilder> name_cache;
                Dictionary<string, int> us_string_cache;
                private int[] table_indexes;
                bool transient;
@@ -90,7 +91,7 @@ namespace System.Reflection.Emit {
                        guid = Guid.FastNewGuidArray ();
                        // guid = Guid.NewGuid().ToByteArray ();
                        table_idx = get_next_table_index (this, 0x00, true);
-                       name_cache = new Hashtable ();
+                       name_cache = new Dictionary<TypeName, TypeBuilder> ();
                        us_string_cache = new Dictionary<string, int> (512);
 
                        basic_init (this);
@@ -262,24 +263,27 @@ namespace System.Reflection.Emit {
                private TypeBuilder DefineType (string name, TypeAttributes attr, Type parent, Type[] interfaces, PackingSize packingSize, int typesize) {
                        if (name == null)
                                throw new ArgumentNullException ("fullname");
-                       if (name_cache.ContainsKey (name))
+                       TypeIdentifier ident = TypeIdentifiers.FromInternal (name);
+                       if (name_cache.ContainsKey (ident))
                                throw new ArgumentException ("Duplicate type name within an assembly.");
                        TypeBuilder res = new TypeBuilder (this, name, attr, parent, interfaces, packingSize, typesize, null);
                        AddType (res);
 
-                       name_cache.Add (name, res);
+                       name_cache.Add (ident, res);
                        
                        return res;
                }
 
-               internal void RegisterTypeName (TypeBuilder tb, string name)
+               internal void RegisterTypeName (TypeBuilder tb, TypeName name)
                {
                        name_cache.Add (name, tb);
                }
                
-               internal TypeBuilder GetRegisteredType (string name)
+               internal TypeBuilder GetRegisteredType (TypeName name)
                {
-                       return (TypeBuilder) name_cache [name];
+                       TypeBuilder result = null;
+                       name_cache.TryGetValue (name, out result);
+                       return result;
                }
 
                [ComVisible (true)]
@@ -304,13 +308,14 @@ namespace System.Reflection.Emit {
                }
 
                public EnumBuilder DefineEnum( string name, TypeAttributes visibility, Type underlyingType) {
-                       if (name_cache.Contains (name))
+                       TypeIdentifier ident = TypeIdentifiers.FromInternal (name);
+                       if (name_cache.ContainsKey (ident))
                                throw new ArgumentException ("Duplicate type name within an assembly.");
 
                        EnumBuilder eb = new EnumBuilder (this, name, visibility, underlyingType);
                        TypeBuilder res = eb.GetTypeBuilder ();
                        AddType (res);
-                       name_cache.Add (name, res);
+                       name_cache.Add (ident, res);
                        return eb;
                }
 
@@ -324,20 +329,20 @@ namespace System.Reflection.Emit {
                        return GetType (className, false, ignoreCase);
                }
 
-               private TypeBuilder search_in_array (TypeBuilder[] arr, int validElementsInArray, string className) {
+               private TypeBuilder search_in_array (TypeBuilder[] arr, int validElementsInArray, TypeName className) {
                        int i;
                        for (i = 0; i < validElementsInArray; ++i) {
-                               if (String.Compare (className, arr [i].FullName, true, CultureInfo.InvariantCulture) == 0) {
+                               if (String.Compare (className.DisplayName, arr [i].FullName, true, CultureInfo.InvariantCulture) == 0) {
                                        return arr [i];
                                }
                        }
                        return null;
                }
 
-               private TypeBuilder search_nested_in_array (TypeBuilder[] arr, int validElementsInArray, string className) {
+               private TypeBuilder search_nested_in_array (TypeBuilder[] arr, int validElementsInArray, TypeName className) {
                        int i;
                        for (i = 0; i < validElementsInArray; ++i) {
-                               if (String.Compare (className, arr [i].Name, true, CultureInfo.InvariantCulture) == 0)
+                               if (String.Compare (className.DisplayName, arr [i].Name, true, CultureInfo.InvariantCulture) == 0)
                                        return arr [i];
                        }
                        return null;
@@ -346,26 +351,17 @@ namespace System.Reflection.Emit {
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                private static extern Type create_modified_type (TypeBuilder tb, string modifiers);
 
-               static readonly char [] type_modifiers = {'&', '[', '*'};
-
-               private TypeBuilder GetMaybeNested (TypeBuilder t, string className) {
-                       int subt;
-                       string pname, rname;
+               private TypeBuilder GetMaybeNested (TypeBuilder t, IEnumerable<TypeName> nested) {
+                       TypeBuilder result = t;
 
-                       subt = className.IndexOf ('+');
-                       if (subt < 0) {
-                               if (t.subtypes != null)
-                                       return search_nested_in_array (t.subtypes, t.subtypes.Length, className);
-                               return null;
-                       }
-                       if (t.subtypes != null) {
-                               pname = className.Substring (0, subt);
-                               rname = className.Substring (subt + 1);
-                               TypeBuilder result = search_nested_in_array (t.subtypes, t.subtypes.Length, pname);
-                               if (result != null)
-                                       return GetMaybeNested (result, rname);
+                       foreach (TypeName pname in nested) {
+                               if (result.subtypes == null)
+                                       return null;
+                               result = search_nested_in_array(result.subtypes, result.subtypes.Length, pname);
+                               if (result == null)
+                                       return null;
                        }
-                       return null;
+                       return result;
                }
 
                [ComVisible (true)]
@@ -376,40 +372,27 @@ namespace System.Reflection.Emit {
                        if (className.Length == 0)
                                throw new ArgumentException ("className");
 
-                       int subt;
-                       string orig = className;
-                       string modifiers;
                        TypeBuilder result = null;
 
                        if (types == null && throwOnError)
                                throw new TypeLoadException (className);
 
-                       subt = className.IndexOfAny (type_modifiers);
-                       if (subt >= 0) {
-                               modifiers = className.Substring (subt);
-                               className = className.Substring (0, subt);
-                       } else
-                               modifiers = null;
+                       TypeSpec ts = TypeSpec.Parse (className);
 
                        if (!ignoreCase) {
-                               result =  name_cache [className] as TypeBuilder;
+                               var displayNestedName = ts.TypeNameWithoutModifiers();
+                               name_cache.TryGetValue (displayNestedName, out result);
                        } else {
-                               subt = className.IndexOf ('+');
-                               if (subt < 0) {
-                                       if (types != null)
-                                               result = search_in_array (types, num_types,  className);
-                               } else {
-                                       string pname, rname;
-                                       pname = className.Substring (0, subt);
-                                       rname = className.Substring (subt + 1);
-                                       result = search_in_array (types, num_types, pname);
-                                       if (result != null)
-                                               result = GetMaybeNested (result, rname);
+                               if (types != null)
+                                       result = search_in_array (types, num_types,  ts.Name);
+                               if (!ts.IsNested && result != null) {
+                                       result = GetMaybeNested (result, ts.Nested);
                                }
                        }
                        if ((result == null) && throwOnError)
-                               throw new TypeLoadException (orig);
-                       if (result != null && (modifiers != null)) {
+                               throw new TypeLoadException (className);
+                       if (result != null && (ts.HasModifiers || ts.IsByRef)) {
+                               string modifiers = ts.ModifierString ();
                                Type mt = create_modified_type (result, modifiers);
                                result = mt as TypeBuilder;
                                if (result == null)
index 9eff8440e156e0f529df1291592e687f10bcd466..7216a169e468ac070f1c2a18e5090181bd3e3665 100644 (file)
@@ -55,8 +55,8 @@ namespace System.Reflection.Emit
        {
 #pragma warning disable 169            
                #region Sync with reflection.h
-               private string tname;
-               private string nspace;
+               private string tname; // name in internal form
+               private string nspace; // namespace in internal form
                private Type parent;
                private Type nesting_type;
                internal Type[] interfaces;
@@ -81,7 +81,7 @@ namespace System.Reflection.Emit
                #endregion
 #pragma warning restore 169            
                
-               string fullname;
+               TypeName fullname;
                bool createTypeCalled;
                private Type underlying_type;
 
@@ -113,8 +113,9 @@ namespace System.Reflection.Emit
                        this.attrs = attr;
                        this.class_size = UnspecifiedTypeSize;
                        this.table_idx = table_idx;
-                       fullname = this.tname = table_idx == 1 ? "<Module>" : "type_" + table_idx.ToString ();
+                       this.tname = table_idx == 1 ? "<Module>" : "type_" + table_idx.ToString ();
                        this.nspace = String.Empty;
+                       this.fullname = TypeIdentifiers.WithoutEscape(this.tname);
                        pmodule = mb;
                        setup_internal_class (this);
                }
@@ -162,7 +163,7 @@ namespace System.Reflection.Emit
 
                public override string AssemblyQualifiedName {
                        get {
-                               return fullname + ", " + Assembly.FullName;
+                               return fullname.DisplayName + ", " + Assembly.FullName;
                        }
                }
 
@@ -209,18 +210,19 @@ namespace System.Reflection.Emit
                        }
                }
 
-               string GetFullName ()
+               TypeName GetFullName ()
                {
+                       TypeIdentifier ident = TypeIdentifiers.FromInternal (tname);
                        if (nesting_type != null)
-                               return String.Concat (nesting_type.FullName, "+", tname);
+                               return TypeNames.FromDisplay (nesting_type.FullName).NestedName (ident);
                        if ((nspace != null) && (nspace.Length > 0))
-                               return String.Concat (nspace, ".", tname);
-                       return tname;
+                               return TypeIdentifiers.FromInternal (nspace, ident);
+                       return ident;
                }
        
                public override string FullName {
                        get {
-                               return fullname;
+                               return fullname.DisplayName;
                        }
                }
        
@@ -1571,7 +1573,8 @@ namespace System.Reflection.Emit
                        check_not_created ();
 
                        string typeName = "$ArrayType$" + size;
-                       Type datablobtype = pmodule.GetRegisteredType (fullname + "+" + typeName);
+                       TypeIdentifier ident = TypeIdentifiers.WithoutEscape (typeName);
+                       Type datablobtype = pmodule.GetRegisteredType (fullname.NestedName(ident));
                        if (datablobtype == null) {
                                TypeBuilder tb = DefineNestedType (typeName,
                                        TypeAttributes.NestedPrivate|TypeAttributes.ExplicitLayout|TypeAttributes.Sealed,
index 6c7503bd0870c72b2f4e2002b0f34caaa6aacdb5..48ef423cf4e67a23c00bdee5ff354011440a3c12 100644 (file)
@@ -45,10 +45,6 @@ namespace System.Reflection
                        throw new InvalidOperationException ();
                }
 
-               public override extern Type ReflectedType {
-                       [MethodImplAttribute(MethodImplOptions.InternalCall)]
-                       get;
-               }
        }
 
        [Serializable]
@@ -60,10 +56,5 @@ namespace System.Reflection
                        // this should not be used
                        throw new InvalidOperationException ();
                }
-
-               public override extern Type ReflectedType {
-                       [MethodImplAttribute(MethodImplOptions.InternalCall)]
-                       get;
-               }
        }
 }
index 877d9a7e7eeea665ae4f66152fc26c9b3c1fdd08..bb3ed48bced514622cfa2b0d7d33f1e6d653c0c0 100644 (file)
@@ -33,6 +33,7 @@ using System.Security.Policy;
 
 namespace System.Runtime.Hosting {
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
        [ComVisible (true)]
        [MonoTODO ("missing manifest support")]
        public class ApplicationActivator {
@@ -91,5 +92,30 @@ namespace System.Runtime.Hosting {
                        return ad.CreateInstance ("assemblyName", "typeName", null);
                }
        }
+#else
+       [Obsolete ("ApplicationActivator is not supported on this platform.", true)]
+       public class ApplicationActivator {
+
+               public ApplicationActivator ()
+               {
+                       throw new PlatformNotSupportedException ("ApplicationActivator is not supported on this platform.");
+               }
+
+               public virtual ObjectHandle CreateInstance (ActivationContext activationContext)
+               {
+                       throw new PlatformNotSupportedException ("ApplicationActivator is not supported on this platform.");
+               }
+
+               public virtual ObjectHandle CreateInstance (ActivationContext activationContext, string[] activationCustomData)
+               {
+                       throw new PlatformNotSupportedException ("ApplicationActivator is not supported on this platform.");
+               }
+
+               protected static ObjectHandle CreateInstanceHelper (AppDomainSetup adSetup)
+               {
+                       throw new PlatformNotSupportedException ("ApplicationActivator is not supported on this platform.");
+               }
+       }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
 }
 
index d94abd59f38704967dabba3f322a2023726e38c9..1820cbe7fef5598aeb1d071a95dfcc65599cd283 100644 (file)
@@ -55,6 +55,7 @@ namespace System.Runtime.Remoting.Contexts {
                int domain_id;
                int context_id;
                UIntPtr static_data; /* GC-tracked */
+               UIntPtr data;
                #endregion
 #pragma warning restore 169, 414
 
index c0015138cd35639c9a79dda46921f71ca1806a19..bc424ce5e2d7d40c6d6a12cc4aa88eec2f7eb76f 100644 (file)
@@ -819,7 +819,9 @@ namespace System.Runtime.Remoting
                                        }
                                        catch (Exception e) {
                                                if (e is ThreadAbortException) {
+#if MONO_FEATURE_THREAD_ABORT
                                                        Thread.ResetAbort ();
+#endif
                                                        retry = 5;
                                                        ex = e;
                                                }
@@ -840,7 +842,9 @@ namespace System.Runtime.Remoting
                        catch (Exception tex)
                        {
                                byte[] data = SerializeExceptionData (tex);
+#if MONO_FEATURE_THREAD_ABORT
                                Thread.ResetAbort ();
+#endif
                                return data;
                        }
                }
index 766269284d511bbe75f978236ae95377c35646ed..2e364c74fd806e15133959fe9aab669e65889a5b 100644 (file)
@@ -39,6 +39,11 @@ namespace System.Runtime.Versioning {
                {
                        return null;
                }
+
+               internal static string GetValueInternal (string compatibilitySwitchName)
+               {
+                       return null;
+               }
        }
 }
 
index 141d0c9d6cbe46e6e6b7cb34c0c545091f9c1ef0..7e83a6cacf0a297bccf6973c93a0762b405fe84f 100644 (file)
@@ -203,6 +203,9 @@ namespace System.Security.AccessControl
                internal virtual int InternalGet (SafeHandle handle,
                                                  AccessControlSections includeSections)
                {
+#if MOBILE
+                       throw new PlatformNotSupportedException ();
+#else
                        if (Environment.OSVersion.Platform != PlatformID.Win32NT)
                                throw new PlatformNotSupportedException ();
 
@@ -214,11 +217,15 @@ namespace System.Security.AccessControl
                                                                out owner, out group,
                                                                out dacl, out sacl, out descriptor);
                                }, includeSections);
+#endif
                }
                
                internal virtual int InternalGet (string name,
                                                  AccessControlSections includeSections)
                {
+#if MOBILE
+                       throw new PlatformNotSupportedException ();
+#else
                        if (Environment.OSVersion.Platform != PlatformID.Win32NT)
                                throw new PlatformNotSupportedException ();
 
@@ -230,8 +237,20 @@ namespace System.Security.AccessControl
                                                                     out owner, out group,
                                                                     out dacl, out sacl, out descriptor);
                                }, includeSections);
+#endif
                }
                
+#if MOBILE
+               internal virtual int InternalSet (SafeHandle handle, AccessControlSections includeSections)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+
+               internal virtual int InternalSet (string name, AccessControlSections includeSections)
+               {
+                       throw new PlatformNotSupportedException ();
+               }
+#else
                internal virtual int InternalSet (SafeHandle handle,
                                                  AccessControlSections includeSections)
                {
@@ -399,6 +418,7 @@ namespace System.Security.AccessControl
                        public IntPtr Owner, Group, Sacl, Dacl;
                }
                #endregion
+#endif
        }
 }
 
index f1c27f3309d8a36cc4d0f156f187e58e701890f9..144997e573b63c0cb211a47596cdbb0e676228ac 100644 (file)
@@ -53,42 +53,9 @@ namespace System.Security.Cryptography.X509Certificates {
 #else
        public partial class X509Certificate : IDeserializationCallback, ISerializable {
 #endif
-               // typedef struct _CERT_CONTEXT {
-                //     DWORD                   dwCertEncodingType;
-                //     BYTE                    *pbCertEncoded;
-               //      DWORD                   cbCertEncoded;
-               //      PCERT_INFO              pCertInfo;
-               //      HCERTSTORE              hCertStore;
-               // } CERT_CONTEXT, *PCERT_CONTEXT;
-               // typedef const CERT_CONTEXT *PCCERT_CONTEXT;
-               [StructLayout (LayoutKind.Sequential)]
-               internal struct CertificateContext {
-                       public UInt32 dwCertEncodingType;
-                       public IntPtr pbCertEncoded;
-                       public UInt32 cbCertEncoded;
-                       public IntPtr pCertInfo;
-                       public IntPtr hCertStore;
-               }
-               // NOTE: We only define the CryptoAPI structure (from WINCRYPT.H)
-               // so we don't create any dependencies on Windows DLL in corlib
+               X509CertificateImpl impl;
 
-               private Mono.Security.X509.X509Certificate x509;
                private bool hideDates;
-               private byte[] cachedCertificateHash;
-       
-               // almost every byte[] returning function has a string equivalent
-               // sadly the BitConverter insert dash between bytes :-(
-               private string tostr (byte[] data) 
-               {
-                       if (data != null) {
-                               StringBuilder sb = new StringBuilder ();
-                               for (int i = 0; i < data.Length; i++)
-                                       sb.Append (data[i].ToString ("X2"));
-                               return sb.ToString ();
-                       }
-                       else
-                               return null;
-               }
        
                // static methods
        
@@ -133,44 +100,24 @@ namespace System.Security.Cryptography.X509Certificates {
                public X509Certificate (byte[] data) : this (data, true)
                {
                }
-       
+
                public X509Certificate (IntPtr handle) 
                {
                        if (handle == IntPtr.Zero)
                                throw new ArgumentException ("Invalid handle.");
-#if NET_2_1
-                       // this works on Windows-only so it's of no use for Moonlight
-                       // even more since this ctor is [SecurityCritical]
-                       throw new NotSupportedException ();
-#else
-                       InitFromHandle (handle);
-#endif
-               }
 
-               [SecurityPermission (SecurityAction.Demand, UnmanagedCode = true)]
-               private void InitFromHandle (IntPtr handle)
-               {
-                       if (handle != IntPtr.Zero) {
-                               // both Marshal.PtrToStructure and Marshal.Copy use LinkDemand (so they will always success from here)
-                               CertificateContext cc = (CertificateContext) Marshal.PtrToStructure (handle, typeof (CertificateContext));
-                               byte[] data = new byte [cc.cbCertEncoded];
-                               Marshal.Copy (cc.pbCertEncoded, data, 0, (int)cc.cbCertEncoded);
-                               x509 = new Mono.Security.X509.X509Certificate (data);
-                       }
-                       // for 1.x IntPtr.Zero results in an "empty" certificate instance
+                       impl = X509Helper.InitFromHandle (handle);
                }
-       
+
                public X509Certificate (System.Security.Cryptography.X509Certificates.X509Certificate cert) 
                {
                        if (cert == null)
                                throw new ArgumentNullException ("cert");
 
-                       if (cert != null) {
-                               byte[] data = cert.GetRawCertData ();
-                               if (data != null)
-                                       x509 = new Mono.Security.X509.X509Certificate (data);
-                               hideDates = false;
-                       }
+                       X509Helper.ThrowIfContextInvalid (cert.impl);
+
+                       impl = X509Helper.InitFromCertificate (cert.impl);
+                       hideDates = false;
                }
 
 
@@ -181,53 +128,30 @@ namespace System.Security.Cryptography.X509Certificates {
                        if (other == null) {
                                return false;
                        } else {
-                               if (other.x509 == null) {
-                                       if (x509 == null)
+                               if (!X509Helper.IsValid (other.impl)) {
+                                       if (!X509Helper.IsValid (impl))
                                                return true;
                                        throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
                                }
 
-                               byte[] raw = other.x509.RawData;
-                               if (raw != null) {
-                                       if (x509 == null)
-                                               return false;
-                                       if (x509.RawData == null)
-                                               return false;
-                                       if (raw.Length == x509.RawData.Length) {
-                                               for (int i = 0; i < raw.Length; i++) {
-                                                       if (raw[i] != x509.RawData [i])
-                                                               return false;
-                                               }
-                                               // well no choice must be equals!
-                                               return true;
-                                       }
-                                       else
-                                               return false;
-                               }
+                               return X509CertificateImpl.Equals (impl, other.impl);
                        }
-                       return ((x509 == null) || (x509.RawData == null));
                }
-       
+
                // LAMESPEC: This is the equivalent of the "thumbprint" that can be seen
                // in the certificate viewer of Windows. This is ALWAYS the SHA1 hash of
                // the certificate (i.e. it has nothing to do with the actual hash 
                // algorithm used to sign the certificate).
                public virtual byte[] GetCertHash () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       // we'll hash the cert only once and only if required
-                       if ((cachedCertificateHash == null) && (x509 != null)) {
-                               SHA1 sha = SHA1.Create ();
-                               cachedCertificateHash = sha.ComputeHash (x509.RawData);
-                       }
-                       return cachedCertificateHash;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetCertHash ();
                }
        
                public virtual string GetCertHashString () 
                {
                        // must call GetCertHash (not variable) or optimization wont work
-                       return tostr (GetCertHash ());
+                       return X509Helper.ToHexString (GetCertHash ());
                }
        
                // strangly there are no DateTime returning function
@@ -235,10 +159,9 @@ namespace System.Security.Cryptography.X509Certificates {
                {
                        if (hideDates)
                                return null;
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
+                       X509Helper.ThrowIfContextInvalid (impl);
 
-                       return x509.ValidFrom.ToLocalTime ().ToString ();
+                       return impl.GetEffectiveDateString ().ToString ();
                }
        
                // strangly there are no DateTime returning function
@@ -246,10 +169,9 @@ namespace System.Security.Cryptography.X509Certificates {
                {
                        if (hideDates)
                                return null;
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
+                       X509Helper.ThrowIfContextInvalid (impl);
 
-                       return x509.ValidUntil.ToLocalTime ().ToString ();
+                       return impl.GetExpirationDateString ().ToString ();
                }
        
                // well maybe someday there'll be support for PGP or SPKI ?
@@ -260,41 +182,29 @@ namespace System.Security.Cryptography.X509Certificates {
        
                public override int GetHashCode ()
                {
-                       if (x509 == null)
-                               return 0;
-                       // the cert hash may not be (yet) calculated
-                       if (cachedCertificateHash == null)
-                               GetCertHash();
-               
-                       // return the integer of the first 4 bytes of the cert hash
-                       if ((cachedCertificateHash != null) && (cachedCertificateHash.Length >= 4))
-                               return ((cachedCertificateHash[0] << 24) |(cachedCertificateHash[1] << 16) |
-                                       (cachedCertificateHash[2] << 8) | cachedCertificateHash[3]);
-                       else
+                       if (!X509Helper.IsValid (impl))
                                return 0;
+                       return impl.GetHashCode ();
                }
 
                [Obsolete ("Use the Issuer property.")]
                public virtual string GetIssuerName () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return x509.IssuerName;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetIssuerName (true);
                }
        
                public virtual string GetKeyAlgorithm () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return x509.KeyAlgorithm;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetKeyAlgorithm ();
                }
        
                public virtual byte[] GetKeyAlgorithmParameters () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
+                       X509Helper.ThrowIfContextInvalid (impl);
 
-                       byte[] kap = x509.KeyAlgorithmParameters;
+                       byte[] kap = impl.GetKeyAlgorithmParameters ();
                        if (kap == null)
                                throw new CryptographicException (Locale.GetText ("Parameters not part of the certificate"));
 
@@ -303,55 +213,50 @@ namespace System.Security.Cryptography.X509Certificates {
        
                public virtual string GetKeyAlgorithmParametersString () 
                {
-                       return tostr (GetKeyAlgorithmParameters ());
+                       return X509Helper.ToHexString (GetKeyAlgorithmParameters ());
                }
        
                [Obsolete ("Use the Subject property.")]
                public virtual string GetName ()
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return x509.SubjectName;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetSubjectName (true);
                }
        
                public virtual byte[] GetPublicKey () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return x509.PublicKey;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetPublicKey ();
                }
        
                public virtual string GetPublicKeyString () 
                {
-                       return tostr (GetPublicKey ());
+                       return X509Helper.ToHexString (GetPublicKey ());
                }
        
                public virtual byte[] GetRawCertData () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return x509.RawData;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetRawCertData ();
                }
        
                public virtual string GetRawCertDataString () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return tostr (x509.RawData);
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return X509Helper.ToHexString (impl.GetRawCertData ());
                }
        
                public virtual byte[] GetSerialNumber () 
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-                       return x509.SerialNumber;
+                       X509Helper.ThrowIfContextInvalid (impl);
+                       return impl.GetSerialNumber ();
                }
        
                public virtual string GetSerialNumberString () 
                {
                        byte[] sn = GetSerialNumber ();
                        Array.Reverse (sn);
-                       return tostr (sn);
+                       return X509Helper.ToHexString (sn);
                }
        
                // to please corcompare ;-)
@@ -362,18 +267,10 @@ namespace System.Security.Cryptography.X509Certificates {
        
                public virtual string ToString (bool fVerbose) 
                {
-                       if (!fVerbose || (x509 == null))
+                       if (!fVerbose || !X509Helper.IsValid (impl))
                                return base.ToString ();
 
-                       string nl = Environment.NewLine;
-                       StringBuilder sb = new StringBuilder ();
-                       sb.AppendFormat ("[Subject]{0}  {1}{0}{0}", nl, Subject);
-                       sb.AppendFormat ("[Issuer]{0}  {1}{0}{0}", nl, Issuer);
-                       sb.AppendFormat ("[Not Before]{0}  {1}{0}{0}", nl, GetEffectiveDateString ());
-                       sb.AppendFormat ("[Not After]{0}  {1}{0}{0}", nl, GetExpirationDateString ());
-                       sb.AppendFormat ("[Thumbprint]{0}  {1}{0}", nl, GetCertHashString ());
-                       sb.Append (nl);
-                       return sb.ToString ();
+                       return impl.ToString (true);
                }
 
                protected static string FormatDate (DateTime date)
index 7d5273ee1105497fcd9aeb89d1f716bc71ab4e49..78a71adbd566033509abeaf17d98c4e6c6fa9acb 100644 (file)
@@ -42,7 +42,7 @@ namespace System.Security.Cryptography.X509Certificates {
 
        [ComVisible (true)]
        [MonoTODO ("X509ContentType.SerializedCert isn't supported (anywhere in the class)")]
-       public partial class X509Certificate : IDeserializationCallback, ISerializable {
+       public partial class X509Certificate : IDeserializationCallback, ISerializable, IDisposable {
                private string issuer_name;
                private string subject_name;
 
@@ -110,29 +110,31 @@ namespace System.Security.Cryptography.X509Certificates {
 
                public string Issuer {
                        get {
-                               if (x509 == null)
-                                       throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
+                               X509Helper.ThrowIfContextInvalid (impl);
 
                                if (issuer_name == null)
-                                       issuer_name = X501.ToString (x509.GetIssuerName (), true, ", ", true);
+                                       issuer_name = impl.GetIssuerName (false);
                                return issuer_name;
                        }
                }
 
                public string Subject {
                        get {
-                               if (x509 == null)
-                                       throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
+                               X509Helper.ThrowIfContextInvalid (impl);
 
                                if (subject_name == null)
-                                       subject_name = X501.ToString (x509.GetSubjectName (), true, ", ", true);
+                                       subject_name = impl.GetSubjectName (false);
                                return subject_name;
                        }
                }
 
                [ComVisible (false)]
                public IntPtr Handle {
-                       get { return IntPtr.Zero; }
+                       get {
+                               if (X509Helper.IsValid (impl))
+                                       return impl.Handle;
+                               return IntPtr.Zero;
+                       }
                }
 
 
@@ -169,25 +171,10 @@ namespace System.Security.Cryptography.X509Certificates {
 
                internal byte[] Export (X509ContentType contentType, byte[] password)
                {
-                       if (x509 == null)
-                               throw new CryptographicException (Locale.GetText ("Certificate instance is empty."));
-
                        try {
-                               switch (contentType) {
-                               case X509ContentType.Cert:
-                                       return x509.RawData;
-                               case X509ContentType.Pfx: // this includes Pkcs12
-                                       // TODO
-                                       throw new NotSupportedException ();
-                               case X509ContentType.SerializedCert:
-                                       // TODO
-                                       throw new NotSupportedException ();
-                               default:
-                                       string msg = Locale.GetText ("This certificate format '{0}' cannot be exported.", contentType);
-                                       throw new CryptographicException (msg);
-                               }
-                       }
-                       finally {
+                               X509Helper.ThrowIfContextInvalid (impl);
+                               return impl.Export (contentType, password);
+                       } finally {
                                // protect password
                                if (password != null)
                                        Array.Clear (password, 0, password.Length);
@@ -200,59 +187,12 @@ namespace System.Security.Cryptography.X509Certificates {
                        Import (rawData, (string)null, X509KeyStorageFlags.DefaultKeySet);
                }
 
-               private Mono.Security.X509.X509Certificate ImportPkcs12 (byte[] rawData, string password)
-               {
-                       var pfx = (password == null) ? new Mono.Security.X509.PKCS12 (rawData) : new Mono.Security.X509.PKCS12 (rawData, password);
-                       if (pfx.Certificates.Count == 0) {
-                               // no certificate was found
-                               return null;
-                       } else if (pfx.Keys.Count == 0) {
-                               // no key were found - pick the first certificate
-                               return pfx.Certificates [0];
-                       } else {
-                               // find the certificate that match the first key
-                               var keypair = (pfx.Keys [0] as AsymmetricAlgorithm);
-                               string pubkey = keypair.ToXmlString (false);
-                               foreach (var c in pfx.Certificates) {
-                                       if ((c.RSA != null) && (pubkey == c.RSA.ToXmlString (false)))
-                                               return c;
-                                       if ((c.DSA != null) && (pubkey == c.DSA.ToXmlString (false)))
-                                               return c;
-                               }
-                               return pfx.Certificates [0]; // no match, pick first certificate without keys
-                       }
-               }
-
                [MonoTODO ("missing KeyStorageFlags support")]
                [ComVisible (false)]
                public virtual void Import (byte[] rawData, string password, X509KeyStorageFlags keyStorageFlags)
                {
                        Reset ();
-                       if (password == null) {
-                               try {
-                                       x509 = new Mono.Security.X509.X509Certificate (rawData);
-                               }
-                               catch (Exception e) {
-                                       try {
-                                               x509 = ImportPkcs12 (rawData, null);
-                                       }
-                                       catch {
-                                               string msg = Locale.GetText ("Unable to decode certificate.");
-                                               // inner exception is the original (not second) exception
-                                               throw new CryptographicException (msg, e);
-                                       }
-                               }
-                       } else {
-                               // try PKCS#12
-                               try {
-                                       x509 = ImportPkcs12 (rawData, password);
-                               }
-                               catch {
-                                       // it's possible to supply a (unrequired/unusued) password
-                                       // fix bug #79028
-                                       x509 = new Mono.Security.X509.X509Certificate (rawData);
-                               }
-                       }
+                       impl = X509Helper.Import (rawData, password, keyStorageFlags);
                }
 
                [MonoTODO ("SecureString support is incomplete")]
@@ -289,18 +229,34 @@ namespace System.Security.Cryptography.X509Certificates {
 
                void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context)
                {
+                       if (!X509Helper.IsValid (impl))
+                               throw new NullReferenceException ();
                        // will throw a NRE if info is null (just like MS implementation)
-                       info.AddValue ("RawData", x509.RawData);
+                       info.AddValue ("RawData", impl.GetRawCertData ());
+               }
+
+               public void Dispose ()
+               {
+                       Dispose (true);
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       if (disposing)
+                               Reset ();
                }
 
                [ComVisible (false)]
                public virtual void Reset ()
                {
-                       x509 = null;
+                       if (impl != null) {
+                               impl.Dispose ();
+                               impl = null;
+                       }
+
                        issuer_name = null;
                        subject_name = null;
                        hideDates = false;
-                       cachedCertificateHash = null;
                }
        }
 }
diff --git a/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509CertificateImpl.cs b/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509CertificateImpl.cs
new file mode 100644 (file)
index 0000000..e3dc5b3
--- /dev/null
@@ -0,0 +1,148 @@
+//
+// X509Helpers.cs: X.509 helper and utility functions.
+//
+// Authors:
+//     Martin Baulig  <martin.baulig@xamarin.com>
+//
+// Copyright (C) 2015 Xamarin, Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+namespace System.Security.Cryptography.X509Certificates
+{
+       internal abstract class X509CertificateImpl : IDisposable
+       {
+               public abstract bool IsValid {
+                       get;
+               }
+
+               public abstract IntPtr Handle {
+                       get;
+               }
+
+               protected void ThrowIfContextInvalid ()
+               {
+                       if (!IsValid)
+                               throw X509Helper.GetInvalidContextException ();
+               }
+
+               public abstract X509CertificateImpl Clone ();
+
+               public abstract string GetSubjectSummary ();
+
+               public abstract string GetIssuerName (bool legacyV1Mode);
+
+               public abstract string GetSubjectName (bool legacyV1Mode);
+
+               public abstract byte[] GetRawCertData ();
+
+               public abstract DateTime GetEffectiveDateString ();
+
+               public abstract DateTime GetExpirationDateString ();
+
+               byte[] cachedCertificateHash;
+
+               public byte[] GetCertHash ()
+               {
+                       ThrowIfContextInvalid ();
+                       if (cachedCertificateHash == null)
+                               cachedCertificateHash = GetCertHash (false);
+                       return cachedCertificateHash;
+               }
+
+               protected abstract byte[] GetCertHash (bool lazy);
+
+               public override int GetHashCode ()
+               {
+                       if (!IsValid)
+                               return 0;
+                       if (cachedCertificateHash == null)
+                               cachedCertificateHash = GetCertHash (true);
+                       // return the integer of the first 4 bytes of the cert hash
+                       if ((cachedCertificateHash != null) && (cachedCertificateHash.Length >= 4))
+                               return ((cachedCertificateHash [0] << 24) | (cachedCertificateHash [1] << 16) |
+                                       (cachedCertificateHash [2] << 8) | cachedCertificateHash [3]);
+                       else
+                               return 0;
+               }
+
+               public abstract bool Equals (X509CertificateImpl other, out bool result);
+
+               public abstract string GetKeyAlgorithm ();
+
+               public abstract byte[] GetKeyAlgorithmParameters ();
+
+               public abstract byte[] GetPublicKey ();
+
+               public abstract byte[] GetSerialNumber ();
+
+               public abstract byte[] Export (X509ContentType contentType, byte[] password);
+
+               public abstract string ToString (bool full);
+
+               public override bool Equals (object obj)
+               {
+                       var other = obj as X509CertificateImpl;
+                       if (other == null)
+                               return false;
+
+                       if (!IsValid || !other.IsValid)
+                               return false;
+
+                       bool result;
+                       if (Equals (other, out result))
+                               return result;
+
+                       var ourRaw = GetRawCertData ();
+                       var theirRaw = other.GetRawCertData ();
+
+                       if (ourRaw == null)
+                               return theirRaw == null;
+                       else if (theirRaw == null)
+                               return false;
+
+                       if (ourRaw.Length != theirRaw.Length)
+                               return false;
+
+                       for (int i = 0; i < ourRaw.Length; i++) {
+                               if (ourRaw [i] != theirRaw [i])
+                                       return false;
+                       }
+
+                       return true;
+               }
+
+               public void Dispose ()
+               {
+                       Dispose (true);
+                       GC.SuppressFinalize (this);
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       cachedCertificateHash = null;
+               }
+
+               ~X509CertificateImpl ()
+               {
+                       Dispose (false);
+               }
+       }
+}
diff --git a/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509CertificateImplMono.cs b/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509CertificateImplMono.cs
new file mode 100644 (file)
index 0000000..85985c5
--- /dev/null
@@ -0,0 +1,179 @@
+//
+// X509CertificateImplMono.cs: X.509 implementation using Mono.Security.X509.
+//
+// Authors:
+//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Martin Baulig  <martin.baulig@xamarin.com>
+//
+// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2015 Xamarin, Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Text;
+using MX = Mono.Security.X509;
+
+namespace System.Security.Cryptography.X509Certificates
+{
+       class X509CertificateImplMono : X509CertificateImpl
+       {
+               MX.X509Certificate x509;
+
+               public X509CertificateImplMono (MX.X509Certificate x509)
+               {
+                       this.x509 = x509;
+               }
+
+               public override bool IsValid {
+                       get { return x509 != null; }
+               }
+
+               public override IntPtr Handle {
+                       get { return IntPtr.Zero; }
+               }
+
+               public override X509CertificateImpl Clone ()
+               {
+                       ThrowIfContextInvalid ();
+                       return new X509CertificateImplMono (x509);
+               }
+
+               public override string GetIssuerName (bool legacyV1Mode)
+               {
+                       ThrowIfContextInvalid ();
+                       if (legacyV1Mode)
+                               return x509.IssuerName;
+                       else
+                               return MX.X501.ToString (x509.GetIssuerName (), true, ", ", true);
+               }
+
+               public override string GetSubjectSummary ()
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.SubjectName;
+               }
+
+               public override string GetSubjectName (bool legacyV1Mode)
+               {
+                       ThrowIfContextInvalid ();
+                       if (legacyV1Mode)
+                               return x509.SubjectName;
+                       else
+                               return MX.X501.ToString (x509.GetSubjectName (), true, ", ", true);
+               }
+
+               public override byte[] GetRawCertData ()
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.RawData;
+               }
+
+               protected override byte[] GetCertHash (bool lazy)
+               {
+                       ThrowIfContextInvalid ();
+                       SHA1 sha = SHA1.Create ();
+                       return sha.ComputeHash (x509.RawData);
+               }
+
+               public override DateTime GetEffectiveDateString ()
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.ValidFrom.ToLocalTime ();
+               }
+
+               public override DateTime GetExpirationDateString ()
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.ValidUntil.ToLocalTime ();
+               }
+
+               public override bool Equals (X509CertificateImpl other, out bool result)
+               {
+                       // Use default implementation
+                       result = false;
+                       return false;
+               }
+
+               public override string GetKeyAlgorithm () 
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.KeyAlgorithm;
+               }
+
+               public override byte[] GetKeyAlgorithmParameters () 
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.KeyAlgorithmParameters;
+               }
+
+               public override byte[] GetPublicKey ()
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.PublicKey;
+               }
+
+               public override byte[] GetSerialNumber ()
+               {
+                       ThrowIfContextInvalid ();
+                       return x509.SerialNumber;
+               }
+
+               public override byte[] Export (X509ContentType contentType, byte[] password)
+               {
+                       ThrowIfContextInvalid ();
+
+                       switch (contentType) {
+                       case X509ContentType.Cert:
+                               return GetRawCertData ();
+                       case X509ContentType.Pfx: // this includes Pkcs12
+                               // TODO
+                               throw new NotSupportedException ();
+                       case X509ContentType.SerializedCert:
+                               // TODO
+                               throw new NotSupportedException ();
+                       default:
+                               string msg = Locale.GetText ("This certificate format '{0}' cannot be exported.", contentType);
+                               throw new CryptographicException (msg);
+                       }
+               }
+
+               public override string ToString (bool full)
+               {
+                       ThrowIfContextInvalid ();
+
+                       string nl = Environment.NewLine;
+                       StringBuilder sb = new StringBuilder ();
+                       sb.AppendFormat ("[Subject]{0}  {1}{0}{0}", nl, GetSubjectName (false));
+                       sb.AppendFormat ("[Issuer]{0}  {1}{0}{0}", nl, GetIssuerName (false));
+                       sb.AppendFormat ("[Not Before]{0}  {1}{0}{0}", nl, GetEffectiveDateString ());
+                       sb.AppendFormat ("[Not After]{0}  {1}{0}{0}", nl, GetExpirationDateString ());
+                       sb.AppendFormat ("[Thumbprint]{0}  {1}{0}", nl, X509Helper.ToHexString (GetCertHash ()));
+                       sb.Append (nl);
+                       return sb.ToString ();
+               }
+
+               protected override void Dispose (bool disposing)
+               {
+                       x509 = null;
+               }
+       }
+}
diff --git a/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Helper.cs b/mcs/class/corlib/System.Security.Cryptography.X509Certificates/X509Helper.cs
new file mode 100644 (file)
index 0000000..dc73f5a
--- /dev/null
@@ -0,0 +1,214 @@
+//
+// X509Helpers.cs: X.509 helper and utility functions.
+//
+// Authors:
+//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Martin Baulig  <martin.baulig@xamarin.com>
+//
+// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2015 Xamarin, Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Text;
+using System.Runtime.InteropServices;
+#if !NET_2_1
+using System.Security.Permissions;
+#endif
+using MX = Mono.Security.X509;
+
+namespace System.Security.Cryptography.X509Certificates
+{
+       static partial class X509Helper
+       {
+#if !NET_2_1
+               // typedef struct _CERT_CONTEXT {
+               //      DWORD                   dwCertEncodingType;
+               //      BYTE                    *pbCertEncoded;
+               //      DWORD                   cbCertEncoded;
+               //      PCERT_INFO              pCertInfo;
+               //      HCERTSTORE              hCertStore;
+               // } CERT_CONTEXT, *PCERT_CONTEXT;
+               // typedef const CERT_CONTEXT *PCCERT_CONTEXT;
+               [StructLayout (LayoutKind.Sequential)]
+               internal struct CertificateContext {
+                       public UInt32 dwCertEncodingType;
+                       public IntPtr pbCertEncoded;
+                       public UInt32 cbCertEncoded;
+                       public IntPtr pCertInfo;
+                       public IntPtr hCertStore;
+               }
+               // NOTE: We only define the CryptoAPI structure (from WINCRYPT.H)
+               // so we don't create any dependencies on Windows DLL in corlib
+
+               [SecurityPermission (SecurityAction.Demand, UnmanagedCode = true)]
+               public static X509CertificateImpl InitFromHandle (IntPtr handle)
+               {
+                       // both Marshal.PtrToStructure and Marshal.Copy use LinkDemand (so they will always success from here)
+                       CertificateContext cc = (CertificateContext) Marshal.PtrToStructure (handle, typeof (CertificateContext));
+                       byte[] data = new byte [cc.cbCertEncoded];
+                       Marshal.Copy (cc.pbCertEncoded, data, 0, (int)cc.cbCertEncoded);
+                       var x509 = new MX.X509Certificate (data);
+                       return new X509CertificateImplMono (x509);
+               }
+#elif !MONOTOUCH && !XAMMAC
+               public static X509CertificateImpl InitFromHandle (IntPtr handle)
+               {
+                       throw new NotSupportedException ();
+               }
+#endif
+
+               public static X509CertificateImpl InitFromCertificate (X509CertificateImpl impl)
+               {
+                       ThrowIfContextInvalid (impl);
+                       var copy = impl.Clone ();
+                       if (copy != null)
+                               return copy;
+
+                       var data = impl.GetRawCertData ();
+                       if (data == null)
+                               return null;
+
+                       var x509 = new MX.X509Certificate (data);
+                       return new X509CertificateImplMono (x509);
+               }
+
+               public static bool IsValid (X509CertificateImpl impl)
+               {
+                       return impl != null && impl.IsValid;
+               }
+
+               internal static void ThrowIfContextInvalid (X509CertificateImpl impl)
+               {
+                       if (!IsValid (impl))
+                               throw GetInvalidContextException ();
+               }
+
+               internal static Exception GetInvalidContextException ()
+               {
+                       return new CryptographicException (Locale.GetText ("Certificate instance is empty."));
+               }
+
+               internal static MX.X509Certificate ImportPkcs12 (byte[] rawData, string password)
+               {
+                       var pfx = (password == null) ? new MX.PKCS12 (rawData) : new MX.PKCS12 (rawData, password);
+                       if (pfx.Certificates.Count == 0) {
+                               // no certificate was found
+                               return null;
+                       } else if (pfx.Keys.Count == 0) {
+                               // no key were found - pick the first certificate
+                               return pfx.Certificates [0];
+                       } else {
+                               // find the certificate that match the first key
+                               var keypair = (pfx.Keys [0] as AsymmetricAlgorithm);
+                               string pubkey = keypair.ToXmlString (false);
+                               foreach (var c in pfx.Certificates) {
+                                       if ((c.RSA != null) && (pubkey == c.RSA.ToXmlString (false)))
+                                               return c;
+                                       if ((c.DSA != null) && (pubkey == c.DSA.ToXmlString (false)))
+                                               return c;
+                               }
+                               return pfx.Certificates [0]; // no match, pick first certificate without keys
+                       }
+               }
+
+#if !MONOTOUCH && !XAMMAC
+               public static X509CertificateImpl Import (byte[] rawData, string password, X509KeyStorageFlags keyStorageFlags)
+               {
+                       MX.X509Certificate x509;
+                       if (password == null) {
+                               try {
+                                       x509 = new MX.X509Certificate (rawData);
+                               } catch (Exception e) {
+                                       try {
+                                               x509 = ImportPkcs12 (rawData, null);
+                                       } catch {
+                                               string msg = Locale.GetText ("Unable to decode certificate.");
+                                               // inner exception is the original (not second) exception
+                                               throw new CryptographicException (msg, e);
+                                       }
+                               }
+                       } else {
+                               // try PKCS#12
+                               try {
+                                       x509 = ImportPkcs12 (rawData, password);
+                               }
+                               catch {
+                                       // it's possible to supply a (unrequired/unusued) password
+                                       // fix bug #79028
+                                       x509 = new MX.X509Certificate (rawData);
+                               }
+                       }
+
+                       return new X509CertificateImplMono (x509);
+               }
+#endif
+
+               public static byte[] Export (X509CertificateImpl impl, X509ContentType contentType, byte[] password)
+               {
+                       ThrowIfContextInvalid (impl);
+                       return impl.Export (contentType, password);
+               }
+
+               public static bool Equals (X509CertificateImpl first, X509CertificateImpl second)
+               {
+                       if (!IsValid (first) || !IsValid (second))
+                               return false;
+
+                       bool result;
+                       if (first.Equals (second, out result))
+                               return result;
+
+                       var firstRaw = first.GetRawCertData ();
+                       var secondRaw = second.GetRawCertData ();
+
+                       if (firstRaw == null)
+                               return secondRaw == null;
+                       else if (secondRaw == null)
+                               return false;
+
+                       if (firstRaw.Length != secondRaw.Length)
+                               return false;
+
+                       for (int i = 0; i < firstRaw.Length; i++) {
+                               if (firstRaw [i] != secondRaw [i])
+                                       return false;
+                       }
+
+                       return true;
+               }
+
+               // almost every byte[] returning function has a string equivalent
+               // sadly the BitConverter insert dash between bytes :-(
+               public static string ToHexString (byte[] data)
+               {
+                       if (data != null) {
+                               StringBuilder sb = new StringBuilder ();
+                               for (int i = 0; i < data.Length; i++)
+                                       sb.Append (data[i].ToString ("X2"));
+                               return sb.ToString ();
+                       }
+                       else
+                               return null;
+               }
+       }
+}
index 812aa8087ab2b076526e3a070eaec03eae4f3dee..19a36f961a5960b1ca6ca3b4c539c34b461b8736 100644 (file)
@@ -37,6 +37,7 @@ namespace System.Security {
 
                public abstract void EnsureState ();
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                public bool IsStateAvailable ()
                {
                        AppDomainManager adm = AppDomain.CurrentDomain.DomainManager;
@@ -44,6 +45,13 @@ namespace System.Security {
                                return false;
                        return adm.CheckSecuritySettings (this);
                }
+#else
+               [Obsolete ("SecurityState.IsStateAvailable is not supported on this platform.", true)]
+               public bool IsStateAvailable ()
+               {
+                       throw new PlatformNotSupportedException ("SecurityState.IsStateAvailable is not supported on this platform.");
+               }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
        }
 }
 
index 44d0f8491ffa3307368ff57ad0abc73435c453af..7dcb5431760352cf6c2fee9bd2f5a0cafb235903 100644 (file)
@@ -39,6 +39,7 @@ using System.IO;
 using System.Collections.Generic;
 using System.Reflection;
 using System.Security;
+using System.Diagnostics;
 using System.Runtime.ConstrainedExecution;
 
 namespace System.Threading {
@@ -460,6 +461,7 @@ namespace System.Threading {
                        }
                }
 
+#if MONO_FEATURE_THREAD_ABORT
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                private extern static void Abort_internal (InternalThread thread, object stateInfo);
 
@@ -487,6 +489,25 @@ namespace System.Threading {
                void ClearAbortReason ()
                {
                }
+#else
+               [Obsolete ("Thread.Abort is not supported on the current platform.", true)]
+               public void Abort ()
+               {
+                       throw new PlatformNotSupportedException ("Thread.Abort is not supported on the current platform.");
+               }
+
+               [Obsolete ("Thread.Abort is not supported on the current platform.", true)]
+               public void Abort (object stateInfo)
+               {
+                       throw new PlatformNotSupportedException ("Thread.Abort is not supported on the current platform.");
+               }
+
+               [Obsolete ("Thread.ResetAbort is not supported on the current platform.", true)]
+               public static void ResetAbort ()
+               {
+                       throw new PlatformNotSupportedException ("Thread.ResetAbort is not supported on the current platform.");
+               }
+#endif // MONO_FEATURE_THREAD_ABORT
 
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                private extern static void SpinWait_nop ();
@@ -705,5 +726,35 @@ namespace System.Threading {
                {
                        return CultureInfo.CurrentUICulture;
                }
+
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               internal static extern void GetStackTraces (out Thread[] threads, out object[] stack_frames);
+
+               // This is a mono extension to gather the stack traces for all running threads
+               internal static Dictionary<Thread, StackTrace> Mono_GetStackTraces () {
+                       Thread[] threads;
+                       object[] stack_frames;
+
+                       GetStackTraces (out threads, out stack_frames);
+
+                       var res = new Dictionary<Thread, StackTrace> ();
+                       for (int i = 0; i < threads.Length; ++i)
+                               res [threads [i]] = new StackTrace ((StackFrame[])stack_frames [i]);
+                       return res;
+               }
+
+#if !MONO_FEATURE_THREAD_SUSPEND_RESUME
+               [Obsolete ("Thread.Suspend is not supported on the current platform.", true)]
+               public void Suspend ()
+               {
+                       throw new PlatformNotSupportedException ("Thread.Suspend is not supported on the current platform.");
+               }
+
+               [Obsolete ("Thread.Resume is not supported on the current platform.", true)]
+               public void Resume ()
+               {
+                       throw new PlatformNotSupportedException ("Thread.Resume is not supported on the current platform.");
+               }
+#endif
        }
 }
index 22927ecd2f5d668eb44da7da7a933fb180d3983f..13cc078e575b0b757017347382bd9d393214a78d 100644 (file)
@@ -983,6 +983,7 @@ namespace System {
                        return _process_guid;
                }
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                public static AppDomain CreateDomain (string friendlyName)
                {
                        return CreateDomain (friendlyName, null, null);
@@ -1061,6 +1062,25 @@ namespace System {
 
                        return ad;
                }
+#else
+               [Obsolete ("AppDomain.CreateDomain is not supported on the current platform.", true)]
+               public static AppDomain CreateDomain (string friendlyName)
+               {
+                       throw new PlatformNotSupportedException ("AppDomain.CreateDomain is not supported on the current platform.");
+               }
+               
+               [Obsolete ("AppDomain.CreateDomain is not supported on the current platform.", true)]
+               public static AppDomain CreateDomain (string friendlyName, Evidence securityInfo)
+               {
+                       throw new PlatformNotSupportedException ("AppDomain.CreateDomain is not supported on the current platform.");
+               }
+
+               [Obsolete ("AppDomain.CreateDomain is not supported on the current platform.", true)]
+               public static AppDomain CreateDomain (string friendlyName, Evidence securityInfo, AppDomainSetup info)
+               {
+                       throw new PlatformNotSupportedException ("AppDomain.CreateDomain is not supported on the current platform.");
+               }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
 
 #if !NET_2_1
                [Serializable]
@@ -1098,13 +1118,23 @@ namespace System {
                }
 #endif
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                public static AppDomain CreateDomain (string friendlyName, Evidence securityInfo,string appBasePath,
                                                      string appRelativeSearchPath, bool shadowCopyFiles)
                {
                        return CreateDomain (friendlyName, securityInfo, CreateDomainSetup (appBasePath, appRelativeSearchPath, shadowCopyFiles));
                }
+#else
+               [Obsolete ("AppDomain.CreateDomain is not supported on the current platform.", true)]
+               public static AppDomain CreateDomain (string friendlyName, Evidence securityInfo,string appBasePath,
+                                                     string appRelativeSearchPath, bool shadowCopyFiles)
+               {
+                       throw new PlatformNotSupportedException ("AppDomain.CreateDomain is not supported on the current platform.");
+               }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
                
 #if !NET_2_1
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                public static AppDomain CreateDomain (string friendlyName, Evidence securityInfo, AppDomainSetup info,
                                                      PermissionSet grantSet, params StrongName [] fullTrustAssemblies)
                {
@@ -1114,8 +1144,17 @@ namespace System {
                        info.ApplicationTrust = new ApplicationTrust (grantSet, fullTrustAssemblies ?? EmptyArray<StrongName>.Value);
                        return CreateDomain (friendlyName, securityInfo, info);         
                }
+#else
+               [Obsolete ("AppDomain.CreateDomain is not supported on the current platform.", true)]
+               public static AppDomain CreateDomain (string friendlyName, Evidence securityInfo, AppDomainSetup info,
+                                                     PermissionSet grantSet, params StrongName [] fullTrustAssemblies)
+               {
+                       throw new PlatformNotSupportedException ("AppDomain.CreateDomain is not supported on the current platform.");
+               }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
 #endif
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                static AppDomainSetup CreateDomainSetup (string appBasePath, string appRelativeSearchPath, bool shadowCopyFiles)
                {
                        AppDomainSetup info = new AppDomainSetup ();
@@ -1130,6 +1169,7 @@ namespace System {
 
                        return info;
                }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
                
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                private static extern bool InternalIsFinalizingForUnload (int domain_id);
@@ -1149,6 +1189,7 @@ namespace System {
                        return Thread.GetDomainID ();
                }
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                [SecurityPermission (SecurityAction.Demand, ControlAppDomain = true)]
                [ReliabilityContractAttribute (Consistency.MayCorruptAppDomain, Cer.MayFail)]
                public static void Unload (AppDomain domain)
@@ -1158,6 +1199,13 @@ namespace System {
 
                        InternalUnload (domain.getDomainID());
                }
+#else
+               [Obsolete ("AppDomain.Unload is not supported on the current platform.", true)]
+               public static void Unload (AppDomain domain)
+               {
+                       throw new PlatformNotSupportedException ("AppDomain.Unload is not supported on the current platform.");
+               }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
 
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                [SecurityPermission (SecurityAction.LinkDemand, ControlAppDomain = true)]
@@ -1339,11 +1387,13 @@ namespace System {
                        return null;
                }
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                private void DoDomainUnload ()
                {
                        if (DomainUnload != null)
                                DomainUnload(this, null);
                }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                internal extern void DoUnhandledException (Exception e);
@@ -1389,7 +1439,11 @@ namespace System {
                [method: SecurityPermission (SecurityAction.LinkDemand, ControlAppDomain = true)]
                public event ResolveEventHandler AssemblyResolve;
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                [method: SecurityPermission (SecurityAction.LinkDemand, ControlAppDomain = true)]
+#else
+               [Obsolete ("AppDomain.DomainUnload is not supported on the current platform.", true)]
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
                public event EventHandler DomainUnload;
 
                [method: SecurityPermission (SecurityAction.LinkDemand, ControlAppDomain = true)]
@@ -1424,10 +1478,17 @@ namespace System {
 #endif
         #pragma warning restore 649
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                // default is null
                public AppDomainManager DomainManager {
                        get { return (AppDomainManager)_domain_manager; }
                }
+#else
+               [Obsolete ("AppDomain.DomainManager is not supported on this platform.", true)]
+               public AppDomainManager DomainManager {
+                       get { throw new PlatformNotSupportedException ("AppDomain.DomainManager is not supported on this platform."); }
+               }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
 
 #if !MOBILE
                public event ResolveEventHandler ReflectionOnlyAssemblyResolve;
@@ -1473,6 +1534,7 @@ namespace System {
 
                // static methods
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                public static AppDomain CreateDomain (string friendlyName, Evidence securityInfo, string appBasePath,
                        string appRelativeSearchPath, bool shadowCopyFiles, AppDomainInitializer adInit, string[] adInitArgs)
                {
@@ -1483,6 +1545,14 @@ namespace System {
 
                        return CreateDomain (friendlyName, securityInfo, info);
                }
+#else
+               [Obsolete ("AppDomain.CreateDomain is not supported on the current platform.", true)]
+               public static AppDomain CreateDomain (string friendlyName, Evidence securityInfo, string appBasePath,
+                       string appRelativeSearchPath, bool shadowCopyFiles, AppDomainInitializer adInit, string[] adInitArgs)
+               {
+                       throw new PlatformNotSupportedException ("AppDomain.CreateDomain is not supported on the current platform.");
+               }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
 
                public int ExecuteAssemblyByName (string assemblyName)
                {
index 25700d49e5cb58fa41b3d9e0a541d110a438cb50..c50f40da3736298e6817ce0c06d90190d20b2483 100644 (file)
 //
 
 namespace System {
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
        [System.Runtime.InteropServices.ComVisible (true)]
        [Serializable]
+#else
+       [Obsolete ("AppDomainInitializer is not supported on the current platform.", true)]
+#endif
        public delegate void AppDomainInitializer (string[] args);
 
 }
index f0a4770b71ec9157bf31b1d5eb1a65c02f02856a..301fd334c70ef1c2c3aaf5aeb8f4725eaae2e79e 100644 (file)
@@ -36,6 +36,7 @@ using System.Threading;
 
 namespace System {
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
        [ComVisible (true)]
        [SecurityPermission (SecurityAction.LinkDemand, Infrastructure = true)]
        [SecurityPermission (SecurityAction.InheritanceDemand, Infrastructure = true)]
@@ -111,4 +112,55 @@ namespace System {
                        return AppDomain.CreateDomain (friendlyName, securityInfo, appDomainInfo);
                }
        }
+#else
+       [Obsolete ("AppDomainManager is not supported on the current platform.", true)]
+       public class AppDomainManager : MarshalByRefObject {
+               public AppDomainManager ()
+               {
+                       throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
+               }
+
+               public virtual ApplicationActivator ApplicationActivator {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+
+               public virtual Assembly EntryAssembly {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+
+               public virtual HostExecutionContextManager HostExecutionContextManager {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+
+               public virtual HostSecurityManager HostSecurityManager {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+
+               public AppDomainManagerInitializationOptions InitializationFlags {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+                       set { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+
+               public virtual AppDomain CreateDomain (string friendlyName, Evidence securityInfo, AppDomainSetup appDomainInfo)
+               {
+                       throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
+               }
+
+               public virtual void InitializeNewDomain (AppDomainSetup appDomainInfo)
+               {
+                       throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
+               }
+
+               public virtual bool CheckSecuritySettings (SecurityState state)
+               {
+                       throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
+               }
+
+               protected static AppDomain CreateDomainHelper (string friendlyName, Evidence securityInfo, AppDomainSetup appDomainInfo)
+               {
+                       throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform.");
+               }
+       }
+
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
 }
index 572dcae8d2b32b187c79653adf1656292a5aa228..cc45ffd33dec20d26d79f32370a71229609cfe71 100644 (file)
@@ -33,6 +33,7 @@ using System.Security;
 
 namespace System {
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
        [ComVisible (true)]
        public class AppDomainManager {
 
@@ -51,6 +52,26 @@ namespace System {
                        return (state != null);
                }
        }
+#else
+       [Obsolete ("AppDomainManager is not supported on the current platform.", true)]
+       public class AppDomainManager {
+
+               public AppDomainManager ()
+               {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+
+               public virtual void InitializeNewDomain (AppDomainSetup appDomainInfo)
+               {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+
+               public virtual bool CheckSecuritySettings (SecurityState state)
+               {
+                       get { throw new PlatformNotSupportedException ("AppDomainManager is not supported on the current platform."); }
+               }
+       }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
 }
 
 #endif
index d689f379ff24bb7999ef081b05b7efbd9d8160a8..b3e2d510138af5bcc9b4fafc390304de7cd1a159 100644 (file)
@@ -309,6 +309,7 @@ namespace System
                        set { _activationArguments = value; }
                }
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                [MonoLimitation ("it needs to be invoked within the created domain")]
                public AppDomainInitializer AppDomainInitializer {
                        get {
@@ -319,6 +320,14 @@ namespace System
                        }
                        set { domain_initializer = value; }
                }
+#else
+               [Obsolete ("AppDomainSetup.AppDomainInitializer is not supported on this platform.", true)]
+               public AppDomainInitializer AppDomainInitializer {
+                       get { throw new PlatformNotSupportedException ("AppDomainSetup.AppDomainInitializer is not supported on this platform."); }
+                       set { throw new PlatformNotSupportedException ("AppDomainSetup.AppDomainInitializer is not supported on this platform."); }
+               }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
+
 
                [MonoLimitation ("it needs to be used to invoke the initializer within the created domain")]
                public string [] AppDomainInitializerArguments {
@@ -369,7 +378,9 @@ namespace System
                                object [] arr = (object []) bf.Deserialize (ms);
 
                                _activationArguments = (ActivationArguments) arr [0];
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                                domain_initializer = (AppDomainInitializer) arr [1];
+#endif
                                application_trust = (ApplicationTrust) arr [2];
 
                                serialized_non_primitives = null;
index 9c263400572cc9681d3fba5d8ad1ce6f5c579a1c..8f6e0aa098e40b238d2738503705207086c3eb80 100644 (file)
@@ -1689,10 +1689,10 @@ namespace System
                
                        if (keys == null)
                                throw new ArgumentNullException ("keys");
-                               
-                       if (keys.Length != items.Length)
-                               throw new ArgumentException ("Length of keys and items does not match.");
-                       
+
+                       if (keys.Length > items.Length)
+                               throw new ArgumentException ("Length of keys is larger than length of items.");
+
                        SortImpl<TKey, TValue> (keys, items, 0, keys.Length, comparer);
                }
 
@@ -3102,6 +3102,12 @@ namespace System
                        return d;
                }
 
+               [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
+               public static T[] Empty<T>()
+               {
+                       return EmptyArray<T>.Value;
+               }
+
                public static bool Exists<T> (T [] array, Predicate <T> match)
                {
                        if (array == null)
@@ -3183,6 +3189,19 @@ namespace System
                //
                // Moved value from instance into target of different type with no checks (JIT intristics)
                //
+               // Restrictions:
+               //
+               // S and R must either:
+               //       both be blitable valuetypes
+               //       both be reference types (IOW, an unsafe cast)
+               // S and R cannot be float or double
+               // S and R must either:
+               //       both be a struct
+               //       both be a scalar
+               // S and R must either:
+               //       be of same size
+               //       both be a scalar of size <= 4
+               //
                internal static R UnsafeMov<S,R> (S instance) {
                        return (R)(object) instance;
                }
index 99c5236a7ddf1a7f587168c4f624b3918b87e1a9..206c3429d8d5632e17fc9fca10d52920a5a03b68 100644 (file)
@@ -152,10 +152,7 @@ namespace System
                                stdin = new CStreamReader (OpenStandardInput (0), inputEncoding);
                        } else {
 #endif
-// FULL_AOT_RUNTIME is used (instead of MONOTOUCH) since we only want this code when running on 
-// iOS (simulator or devices) and *not* when running tools (e.g. btouch #12179) that needs to use 
-// the mscorlib.dll shipped with Xamarin.iOS
-#if MONOTOUCH && FULL_AOT_RUNTIME
+#if MONOTOUCH
                                stdout = new NSLogWriter ();
 #else
                                stdout = new UnexceptionalStreamWriter (OpenStandardOutput (0), outputEncoding);
@@ -163,7 +160,7 @@ namespace System
 #endif
                                stdout = TextWriter.Synchronized (stdout);
 
-#if MONOTOUCH && FULL_AOT_RUNTIME
+#if MONOTOUCH
                                stderr = new NSLogWriter ();
 #else
                                stderr = new UnexceptionalStreamWriter (OpenStandardError (0), outputEncoding); 
index 00ebfb3e84fb4508cdcbe2c342278abc883c82b6..3329b8046a54921303c9203b925a468ecc4dc396 100644 (file)
@@ -7,7 +7,7 @@
 // Copyright 2012-2014 Xamarin Inc. All rights reserved.
 //
 
-#if FULL_AOT_RUNTIME
+#if MONOTOUCH
 
 using System;
 using System.IO;
index 91eecdccb93919fae0197c20c93d12783945347d..3f6555655945257c194c4a48fc88a3f7fb8f6288 100644 (file)
@@ -102,17 +102,7 @@ namespace System
 
                public MethodInfo Method {
                        get {
-                               if (method_info != null) {
-                                       return method_info;
-                               } else {
-                                       if (method != IntPtr.Zero) {
-                                               if (!method_is_virtual)
-                                                       method_info = (MethodInfo)MethodBase.GetMethodFromHandleNoGenericCheck (new RuntimeMethodHandle (method));
-                                               else
-                                                       method_info = GetVirtualMethod_internal ();
-                                       }
-                                       return method_info;
-                               }
+                               return GetMethodImpl ();
                        }
                }
 
@@ -511,7 +501,17 @@ namespace System
 
                protected virtual MethodInfo GetMethodImpl ()
                {
-                       return Method;
+                       if (method_info != null) {
+                               return method_info;
+                       } else {
+                               if (method != IntPtr.Zero) {
+                                       if (!method_is_virtual)
+                                               method_info = (MethodInfo)MethodBase.GetMethodFromHandleNoGenericCheck (new RuntimeMethodHandle (method));
+                                       else
+                                               method_info = GetVirtualMethod_internal ();
+                               }
+                               return method_info;
+                       }
                }
 
                // This is from ISerializable
index d9267ac32307239d9910c71cc43de3a91bc5f1d6..ba03204a083f1d5dfa90ed7cc399345cb4fb2748 100644 (file)
@@ -57,7 +57,7 @@ namespace System {
                 * of icalls, do not require an increment.
                 */
 #pragma warning disable 169
-               private const int mono_corlib_version = 138;
+               private const int mono_corlib_version = 140;
 #pragma warning restore 169
 
                [ComVisible (true)]
@@ -549,8 +549,7 @@ namespace System {
                        return GetFolderPath (folder, SpecialFolderOption.None);
                }
 
-// for monotouch, not monotouch_runtime
-#if !(MONOTOUCH && FULL_AOT_RUNTIME)
+#if !MONOTOUCH
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                private extern static string GetWindowsFolderPath (int folder);
 
@@ -897,8 +896,11 @@ namespace System {
                        throw new NotImplementedException ();
                }
 
+               [MethodImplAttribute (MethodImplOptions.InternalCall)]
+               extern static bool GetIs64BitOperatingSystem ();
+
                public static bool Is64BitOperatingSystem {
-                       get { return IntPtr.Size == 8; } // FIXME: is this good enough?
+                       get { return GetIs64BitOperatingSystem (); }
                }
 
                public static int SystemPageSize {
index e07d2e85b62917446160a44c05574c47afa90d0f..7b6b4923842067847bc9a421e96aae5ad1db0672 100644 (file)
@@ -248,7 +248,7 @@ namespace System
 
                        info.AddValue ("ClassName", ClassName);
                        info.AddValue ("Message", _message);
-                       info.AddValue ("InnerException", inner_exception);
+                       info.AddValue ("InnerException", inner_exception, typeof (Exception));
                        info.AddValue ("HelpURL", help_link);
                        info.AddValue ("StackTraceString", StackTrace);
                        info.AddValue ("RemoteStackTraceString", _remoteStackTraceString);
index e97a208ef97b2a19bb90c6777171e26d9bf86a2f..0fd8fa7ec75a560f46db6323a72c2fb252bb92d3 100644 (file)
@@ -51,6 +51,9 @@ namespace System
        // Contains information about the type which is expensive to compute
        [StructLayout (LayoutKind.Sequential)]
        internal class MonoTypeInfo {
+               // this is the displayed form: special characters
+               // ,+*&*[]\ in the identifier portions of the names
+               // have been escaped with a leading backslash (\)
                public string full_name;
                public MonoCMethod default_ctor;
        }
index 795593d28ceb603aa1854a90247b1442db68c3ca..6a67652037b656481b74236c8faedce449d88a74 100644 (file)
@@ -33,6 +33,7 @@
 
 using System.Collections;
 using System.Collections.Generic;
+using System.Reflection;
 using System.Runtime.Serialization;
 using System.Runtime.InteropServices;
 
@@ -125,6 +126,14 @@ namespace System
                        return base.GetHashCode ();
                }
 
+               protected override MethodInfo GetMethodImpl ()
+               {
+                       if (delegates != null)
+                               return delegates [delegates.Length - 1].Method;
+
+                       return base.GetMethodImpl ();
+               }
+
                // <summary>
                //   Return, in order of invocation, the invocation list
                //   of a MulticastDelegate
@@ -174,6 +183,32 @@ namespace System
                        return ret;
                }
 
+               /* Based on the Boyer–Moore string search algorithm */
+               int LastIndexOf (Delegate[] haystack, Delegate[] needle)
+               {
+                       if (haystack.Length < needle.Length)
+                               return -1;
+
+                       if (haystack.Length == needle.Length) {
+                               for (int i = 0; i < haystack.Length; ++i)
+                                       if (!haystack [i].Equals (needle [i]))
+                                               return -1;
+
+                               return 0;
+                       }
+
+                       for (int i = haystack.Length - needle.Length, j; i >= 0;) {
+                               for (j = 0; needle [j].Equals (haystack [i]); ++i, ++j) {
+                                       if (j == needle.Length - 1)
+                                               return i - j;
+                               }
+
+                               i -= j + 1;
+                       }
+
+                       return -1;
+               }
+
                protected sealed override Delegate RemoveImpl (Delegate value)
                {
                        if (value == null)
@@ -214,42 +249,23 @@ namespace System
                                return ret;
                        } else {
                                /* wild case : remove MulticastDelegate from MulticastDelegate
-                                * complexity is O(m * n), with n the number of elements in
+                                * complexity is O(m + n), with n the number of elements in
                                 * this.delegates and m the number of elements in other.delegates */
-                               MulticastDelegate ret = AllocDelegateLike_internal (this);
-                               ret.delegates = new Delegate [delegates.Length];
-
-                               /* we should use a set with O(1) lookup complexity
-                                * but HashSet is implemented in System.Core.dll */
-                               List<Delegate> other_delegates = new List<Delegate> ();
-                               for (int i = 0; i < other.delegates.Length; ++i)
-                                       other_delegates.Add (other.delegates [i]);
 
-                               int idx = delegates.Length;
+                               if (delegates.Equals (other.delegates))
+                                       return null;
 
                                /* we need to remove elements from the end to the beginning, as
                                 * the addition and removal of delegates behaves like a stack */
-                               for (int i = delegates.Length - 1; i >= 0; --i) {
-                                       /* if delegates[i] is not in other_delegates,
-                                        * then we can safely add it to ret.delegates
-                                        * otherwise we remove it from other_delegates */
-                                       if (!other_delegates.Remove (delegates [i]))
-                                               ret.delegates [--idx] = delegates [i];
-                               }
-
-                               /* the elements are at the end of the array, we
-                                * need to move them back to the beginning of it */
-                               int count = delegates.Length - idx;
-                               Array.Copy (ret.delegates, idx, ret.delegates, 0, count);
-
-                               if (count == 0)
-                                       return null;
+                               int idx = LastIndexOf (delegates, other.delegates);
+                               if (idx == -1)
+                                       return this;
 
-                               if (count == 1)
-                                       return ret.delegates [0];
+                               MulticastDelegate ret = AllocDelegateLike_internal (this);
+                               ret.delegates = new Delegate [delegates.Length - other.delegates.Length];
 
-                               if (count != delegates.Length)
-                                       Array.Resize (ref ret.delegates, count);
+                               Array.Copy (delegates, ret.delegates, idx);
+                               Array.Copy (delegates, idx + other.delegates.Length, ret.delegates, idx, delegates.Length - idx - other.delegates.Length);
 
                                return ret;
                        }
index bc27da33976e6ff062adc0905a4fe81ec8e7a008..311bb9eb4554e88e5d7f7e001e558e0099233201 100644 (file)
@@ -1378,7 +1378,8 @@ namespace System
                                else {
                                        abbrevs.Add (abbrev_index, sb.ToString ());
                                        //Adding all the substrings too, as it seems to be used, at least for Africa/Windhoek
-                                       for (int j = 1; j < sb.Length; j++)
+                                       //j == sb.Length empty substring also needs to be added #31432
+                                       for (int j = 1; j <= sb.Length; j++)
                                                abbrevs.Add (abbrev_index + j, sb.ToString (j, sb.Length - j));
                                        abbrev_index = i + 1;
                                        sb = new StringBuilder ();
diff --git a/mcs/class/corlib/System/TypeIdentifier.cs b/mcs/class/corlib/System/TypeIdentifier.cs
new file mode 100644 (file)
index 0000000..8d2f9ae
--- /dev/null
@@ -0,0 +1,234 @@
+//
+// System.TypeIdentifier.cs
+//
+// Author:
+//   Aleksey Kliger <aleksey@xamarin.com>
+//
+//
+// Copyright (C) 2015 Xamarin, Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System {
+
+       // A TypeName is wrapper around type names in display form
+       // (that is, with special characters escaped).
+       //
+       // Note that in general if you unescape a type name, you will
+       // lose information: If the type name's DisplayName is
+       // Foo\+Bar+Baz (outer class ``Foo+Bar``, inner class Baz)
+       // unescaping the first plus will give you (outer class Foo,
+       // inner class Bar, innermost class Baz).
+       //
+       // The correct way to take a TypeName apart is to feed its
+       // DisplayName to TypeSpec.Parse()
+       //
+       internal interface TypeName : System.IEquatable<TypeName> {
+               string DisplayName {
+                       get;
+               }
+
+               // add a nested name under this one.
+               TypeName NestedName (TypeIdentifier innerName);
+       }
+
+       // A type identifier is a single component of a type name.
+       // Unlike a general typename, a type identifier can be be
+       // converted to internal form without loss of information.
+       internal interface TypeIdentifier : TypeName {
+
+               string InternalName {
+                       get;
+               }
+
+       }
+
+       internal class TypeNames {
+               internal static TypeName FromDisplay (string displayName)
+               {
+                       return new Display (displayName);
+               }
+
+               internal abstract class ATypeName : TypeName {
+                       public abstract string DisplayName { get; }
+
+                       public abstract TypeName NestedName (TypeIdentifier innerName);
+
+                       public bool Equals(TypeName other)
+                       {
+                               return other != null && DisplayName == other.DisplayName;
+                       }
+
+                       public override int GetHashCode ()
+                       {
+                               return DisplayName.GetHashCode();
+                       }
+
+                       public override bool Equals(object other)
+                       {
+                               return Equals(other as TypeName);
+                       }
+               }
+
+
+               private class Display : ATypeName {
+                       string displayName;
+
+                       internal Display (string displayName)
+                       {
+                               this.displayName = displayName;
+                       }
+
+                       public override string DisplayName { get { return displayName; } }
+
+                       public override TypeName NestedName (TypeIdentifier innerName)
+                       {
+                               return new Display (DisplayName + "+" + innerName.DisplayName);
+                       }
+
+               }
+       }
+
+       internal class TypeIdentifiers {
+
+               internal static TypeIdentifier FromDisplay (string displayName)
+               {
+                       return new Display (displayName);
+               }
+
+               internal static TypeIdentifier FromInternal (string internalName)
+               {
+                       return new Internal (internalName);
+               }
+
+               internal static TypeIdentifier FromInternal (string internalNameSpace, TypeIdentifier typeName)
+               {
+                       return new Internal (internalNameSpace, typeName);
+               }
+
+               // Only use if simpleName is certain not to contain
+               // unexpected characters that ordinarily require
+               // escaping: ,+*&[]\
+               internal static TypeIdentifier WithoutEscape (string simpleName)
+               {
+                       return new NoEscape (simpleName);
+               }
+
+               private class Display : TypeNames.ATypeName, TypeIdentifier {
+                       string displayName;
+                       string internal_name; //cached
+
+                       internal Display (string displayName)
+                       {
+                               this.displayName = displayName;
+                               internal_name = null;
+                       }
+
+                       public override string DisplayName {
+                               get { return displayName; }
+                       }
+
+                       public string InternalName {
+                               get {
+                                       if (internal_name == null)
+                                               internal_name = GetInternalName ();
+                                       return internal_name;
+                               }
+                       }
+
+                       private string GetInternalName ()
+                       {
+                               return TypeSpec.UnescapeInternalName(displayName);
+                       }
+
+                       public override TypeName NestedName (TypeIdentifier innerName) {
+                               return TypeNames.FromDisplay (DisplayName + "+" + innerName.DisplayName);
+                       }
+               }
+
+
+               private class Internal : TypeNames.ATypeName, TypeIdentifier {
+                       string internalName;
+                       string display_name; //cached
+
+                       internal Internal (string internalName)
+                       {
+                               this.internalName = internalName;
+                               this.display_name = null;
+                       }
+
+                       internal Internal (string nameSpaceInternal, TypeIdentifier typeName)
+                       {
+                               this.internalName = nameSpaceInternal + "." + typeName.InternalName;
+                               this.display_name = null;
+                       }
+
+                       public override string DisplayName {
+                               get {
+                                       if (display_name == null)
+                                               display_name = GetDisplayName ();
+                                       return display_name;
+                               }
+                       }
+
+                       public string InternalName {
+                               get { return internalName; }
+                       }
+
+                       private string GetDisplayName ()
+                       {
+                               return TypeSpec.EscapeDisplayName (internalName);
+                       }
+
+                       public override TypeName NestedName (TypeIdentifier innerName)
+                       {
+                               return TypeNames.FromDisplay (DisplayName + "+" + innerName.DisplayName);
+                       }
+
+               }
+
+               private class NoEscape : TypeNames.ATypeName, TypeIdentifier {
+                       string simpleName;
+                       internal NoEscape (string simpleName)
+                       {
+                               this.simpleName = simpleName;
+#if DEBUG
+                               checkNoBadChars(simpleName);
+#endif
+                       }
+
+                       public override string DisplayName { get { return simpleName; } }
+                       public string InternalName { get { return simpleName; } }
+
+#if DEBUG
+                       static private void checkNoBadChars (string s)
+                       {
+                               if (TypeSpec.NeedsEscaping (s))
+                                   throw new ArgumentException ("simpleName");
+                       }
+#endif
+
+                       public override TypeName NestedName (TypeIdentifier innerName) {
+                               return TypeNames.FromDisplay (DisplayName + "+" + innerName.DisplayName);
+                       }
+               }
+       }
+}
index d525dc13fe135807344686e03b5668de64bb7954..9ad485e07cd52b254e1265c18d95f3e0a2fc9c4d 100644 (file)
@@ -32,8 +32,13 @@ using System.IO;
 using System.Reflection;
 
 namespace System {
-       internal class ArraySpec
+       internal interface ModifierSpec {
+               Type Resolve (Type type);
+               Text.StringBuilder Append (Text.StringBuilder sb);
+       }
+        internal class ArraySpec : ModifierSpec
        {
+               // dimensions == 1 and bound, or dimensions > 1 and !bound
                int dimensions;
                bool bound;
 
@@ -43,7 +48,7 @@ namespace System {
                        this.bound = bound;
                }
 
-               internal Type Resolve (Type type)
+               public Type Resolve (Type type)
                {
                        if (bound)
                                return type.MakeArrayType (1);
@@ -52,70 +57,160 @@ namespace System {
                        return type.MakeArrayType (dimensions);
                }
 
-#if DEBUG
-               public override string ToString ()
+               public Text.StringBuilder Append (Text.StringBuilder sb)
                {
                        if (bound)
-                               return "[*]";
-                       string str = "[";
-                       for (int i = 1; i < dimensions; ++i)
-                               str += ",";
-                       return str + "]";
+                               return sb.Append ("[*]");
+                       return sb.Append ('[')
+                               .Append (',', dimensions - 1)
+                               .Append (']');
+                       
                }
-#endif
+               public override string ToString ()
+               {
+                       return Append (new Text.StringBuilder ()).ToString ();
+               }
+       }
+
+       internal class PointerSpec : ModifierSpec
+       {
+               int pointer_level;
+
+               internal PointerSpec (int pointer_level) {
+                       this.pointer_level = pointer_level;
+               }
+
+               public Type Resolve (Type type) {
+                       for (int i = 0; i < pointer_level; ++i)
+                               type = type.MakePointerType ();
+                       return type;
+               }
+
+               public Text.StringBuilder Append (Text.StringBuilder sb)
+               {
+                       return sb.Append ('*', pointer_level);
+               }
+               
+               public override string ToString () {
+                       return Append (new Text.StringBuilder ()).ToString ();
+               }
+
        }
 
        internal class TypeSpec
        {
-               string name, assembly_name;
-               List<string> nested;
+               TypeIdentifier name;
+               string assembly_name;
+               List<TypeIdentifier> nested;
                List<TypeSpec> generic_params;
-               List<ArraySpec> array_spec;
-               int pointer_level;
+               List<ModifierSpec> modifier_spec;
                bool is_byref;
 
-               bool IsArray {
-                       get { return array_spec != null; }
+               string display_fullname; // cache
+
+               internal bool HasModifiers {
+                       get { return modifier_spec != null; }
+               }
+
+               internal bool IsNested {
+                       get { return nested != null && nested.Count > 0; }
+               }
+
+               internal bool IsByRef {
+                       get { return is_byref; }
+               }
+
+               internal TypeName Name {
+                       get { return name; }
+               }
+
+               internal IEnumerable<TypeName> Nested {
+                       get {
+                               if (nested != null)
+                                       return nested;
+                               else
+                                       return EmptyArray<TypeName>.Value;
+                       }
                }
 
+               internal IEnumerable<ModifierSpec> Modifiers {
+                       get {
+                               if (modifier_spec != null)
+                                       return modifier_spec;
+                               else
+                                       return EmptyArray<ModifierSpec>.Value;
+                       }
+               }
+
+               [Flags]
+               internal enum DisplayNameFormat {
+                       Default = 0x0,
+                       WANT_ASSEMBLY = 0x1,
+                       NO_MODIFIERS = 0x2,
+               }
 #if DEBUG
                public override string ToString () {
-                       string str = name;
+                       return GetDisplayFullName (DisplayNameFormat.WANT_ASSEMBLY);
+               }
+#endif
+
+               string GetDisplayFullName (DisplayNameFormat flags)
+               {
+                       bool wantAssembly = (flags & DisplayNameFormat.WANT_ASSEMBLY) != 0;
+                       bool wantModifiers = (flags & DisplayNameFormat.NO_MODIFIERS) == 0;
+                       var sb = new Text.StringBuilder(name.DisplayName);
                        if (nested != null) {
                                foreach (var n in nested)
-                                       str += "+" + n;
+                                       sb.Append ('+').Append (n.DisplayName);
                        }
 
                        if (generic_params != null) {
-                               str += "[";
+                               sb.Append ('[');
                                for (int i = 0; i < generic_params.Count; ++i) {
                                        if (i > 0)
-                                               str += ", ";
+                                               sb.Append (", ");
                                        if (generic_params [i].assembly_name != null)
-                                               str += "[" + generic_params [i] + "]";
+                                               sb.Append ('[').Append (generic_params [i].DisplayFullName).Append (']');
                                        else
-                                               str += generic_params [i];
+                                               sb.Append (generic_params [i].DisplayFullName);
                                }
-                               str += "]";
+                               sb.Append (']');
                        }
 
-                       if (array_spec != null) {
-                               foreach (var ar in array_spec)
-                                       str += ar;
-                       }
+                       if (wantModifiers)
+                               GetModifierString (sb);
 
-                       for (int i = 0; i < pointer_level; ++i)
-                               str += "*";
+                       if (assembly_name != null && wantAssembly)
+                               sb.Append (", ").Append (assembly_name);
+
+                       return sb.ToString();
+               }
+
+               internal string ModifierString ()
+               {
+                       return GetModifierString (new Text.StringBuilder ()).ToString ();
+               }
+
+               private Text.StringBuilder GetModifierString (Text.StringBuilder sb)
+               {
+                       if (modifier_spec != null) {
+                               foreach (var md in modifier_spec)
+                                       md.Append (sb);
+                       }
 
                        if (is_byref)
-                               str += "&";
+                               sb.Append ('&');
 
-                       if (assembly_name != null)
-                               str += ", " + assembly_name;
+                       return sb;
+               }
 
-                       return str;
+               internal string DisplayFullName {
+                       get {
+                               if (display_fullname == null)
+                                       display_fullname = GetDisplayFullName (DisplayNameFormat.Default);
+                               return display_fullname;
+                       }
                }
-#endif
 
                internal static TypeSpec Parse (string typeName)
                {
@@ -129,11 +224,70 @@ namespace System {
                        return res;
                }
 
+               internal static string EscapeDisplayName(string internalName)
+               {
+                       // initial capacity = length of internalName.
+                       // Maybe we won't have to escape anything.
+                       var res = new Text.StringBuilder (internalName.Length);
+                       foreach (char c in internalName)
+                       {
+                               switch (c) {
+                                       case '+':
+                                       case ',':
+                                       case '[':
+                                       case ']':
+                                       case '*':
+                                       case '&':
+                                       case '\\':
+                                               res.Append ('\\').Append (c);
+                                               break;
+                                       default:
+                                               res.Append (c);
+                                               break;
+                               }
+                       }
+                       return res.ToString ();
+               }
+
+               internal static string UnescapeInternalName(string displayName)
+               {
+                       var res = new Text.StringBuilder (displayName.Length);
+                       for (int i = 0; i < displayName.Length; ++i)
+                       {
+                               char c = displayName[i];
+                               if (c == '\\')
+                                       if (++i < displayName.Length)
+                                               c = displayName[i];
+                               res.Append (c);
+                       }
+                       return res.ToString ();
+               }
+
+               internal static bool NeedsEscaping (string internalName)
+               {
+                       foreach (char c in internalName)
+                       {
+                               switch (c) {
+                                       case ',':
+                                       case '+':
+                                       case '*':
+                                       case '&':
+                                       case '[':
+                                       case ']':
+                                       case '\\':
+                                               return true;
+                                       default:
+                                               break;
+                               }
+                       }
+                       return false;
+               }
+
                internal Type Resolve (Func<AssemblyName,Assembly> assemblyResolver, Func<Assembly,string,bool,Type> typeResolver, bool throwOnError, bool ignoreCase)
                {
                        Assembly asm = null;
                        if (assemblyResolver == null && typeResolver == null)
-                               return Type.GetType (name, throwOnError, ignoreCase);
+                               return Type.GetType (name.DisplayName, throwOnError, ignoreCase);
 
                        if (assembly_name != null) {
                                if (assemblyResolver != null)
@@ -150,9 +304,9 @@ namespace System {
 
                        Type type = null;
                        if (typeResolver != null)
-                               type = typeResolver (asm, name, ignoreCase);
+                               type = typeResolver (asm, name.DisplayName, ignoreCase);
                        else
-                               type = asm.GetType (name, false, ignoreCase);
+                               type = asm.GetType (name.DisplayName, false, ignoreCase);
                        if (type == null) {
                                if (throwOnError)
                                        throw new TypeLoadException ("Could not resolve type '" + name + "'");
@@ -161,7 +315,7 @@ namespace System {
 
                        if (nested != null) {
                                foreach (var n in nested) {
-                                       var tmp = type.GetNestedType (n, BindingFlags.Public | BindingFlags.NonPublic);
+                                       var tmp = type.GetNestedType (n.DisplayName, BindingFlags.Public | BindingFlags.NonPublic);
                                        if (tmp == null) {
                                                if (throwOnError)
                                                        throw new TypeLoadException ("Could not resolve type '" + n + "'");
@@ -185,14 +339,11 @@ namespace System {
                                type = type.MakeGenericType (args);
                        }
 
-                       if (array_spec != null) {
-                               foreach (var arr in array_spec)
-                                       type = arr.Resolve (type);
+                       if (modifier_spec != null) {
+                               foreach (var md in modifier_spec)
+                                       type = md.Resolve (type);
                        }
 
-                       for (int i = 0; i < pointer_level; ++i)
-                               type = type.MakePointerType ();
-
                        if (is_byref)
                                type = type.MakeByRefType ();
 
@@ -202,19 +353,19 @@ namespace System {
                void AddName (string type_name)
                {
                        if (name == null) {
-                               name = type_name;
+                               name = ParsedTypeIdentifier(type_name);
                        } else {
                                if (nested == null)
-                                       nested = new List <string> ();
-                               nested.Add (type_name);
+                                       nested = new List <TypeIdentifier> ();
+                               nested.Add (ParsedTypeIdentifier(type_name));
                        }
                }
 
-               void AddArray (ArraySpec array)
+               void AddModifier (ModifierSpec md)
                {
-                       if (array_spec == null)
-                               array_spec = new List<ArraySpec> ();
-                       array_spec.Add (array);
+                       if (modifier_spec == null)
+                               modifier_spec = new List<ModifierSpec> ();
+                       modifier_spec.Add (md);
                }
 
                static void SkipSpace (string name, ref int pos)
@@ -225,6 +376,11 @@ namespace System {
                        pos = p;
                }
 
+               static TypeIdentifier ParsedTypeIdentifier (string displayName)
+               {
+                       return TypeIdentifiers.FromDisplay(displayName);
+               }
+
                static TypeSpec Parse (string name, ref int p, bool is_recurse, bool allow_aqn)
                {
                        int pos = p;
@@ -261,6 +417,9 @@ namespace System {
                                        name_start = pos + 1;
                                        in_modifiers = true;
                                        break;
+                               case '\\':
+                                       pos++;
+                                       break;
                                }
                                if (in_modifiers)
                                        break;
@@ -282,7 +441,13 @@ namespace System {
                                        case '*':
                                                if (data.is_byref)
                                                        throw new ArgumentException ("Can't have a pointer to a byref type", "typeName");
-                                               ++data.pointer_level;
+                                               // take subsequent '*'s too
+                                               int pointer_level = 1;
+                                               while (pos+1 < name.Length && name[pos+1] == '*') {
+                                                       ++pos;
+                                                       ++pointer_level;
+                                               }
+                                               data.AddModifier (new PointerSpec(pointer_level));
                                                break;
                                        case ',':
                                                if (is_recurse) {
@@ -308,8 +473,8 @@ namespace System {
 
                                                if (name [pos] != ',' && name [pos] != '*' && name [pos]  != ']') {//generic args
                                                        List<TypeSpec> args = new List <TypeSpec> ();
-                                                       if (data.IsArray)
-                                                               throw new ArgumentException ("generic args after array spec", "typeName");
+                                                       if (data.HasModifiers)
+                                                               throw new ArgumentException ("generic args after array spec or pointer type", "typeName");
 
                                                        while (pos < name.Length) {
                                                                SkipSpace (name, ref pos);
@@ -348,11 +513,11 @@ namespace System {
                                                                ++pos;
                                                                SkipSpace (name, ref pos);
                                                        }
-                                                       if (name [pos] != ']')
+                                                       if (pos >= name.Length || name [pos] != ']')
                                                                throw new ArgumentException ("Error parsing array spec", "typeName");
                                                        if (dimensions > 1 && bound)
                                                                throw new ArgumentException ("Invalid array spec, multi-dimensional array cannot be bound", "typeName");
-                                                       data.AddArray (new ArraySpec (dimensions, bound));
+                                                       data.AddModifier (new ArraySpec (dimensions, bound));
                                                }
 
                                                break;
@@ -371,6 +536,41 @@ namespace System {
                        p = pos;
                        return data;
                }
+
+               internal TypeName TypeNameWithoutModifiers ()
+               {
+                       return new TypeSpecTypeName (this, false);
+               }
+               
+               internal TypeName TypeName {
+                       get { return new TypeSpecTypeName (this, true); }
+               }
+
+               private class TypeSpecTypeName : TypeNames.ATypeName, TypeName {
+                       TypeSpec ts;
+                       bool want_modifiers;
+
+                       internal TypeSpecTypeName (TypeSpec ts, bool wantModifiers)
+                       {
+                               this.ts = ts;
+                               this.want_modifiers = wantModifiers;
+                       }
+
+                       public override string DisplayName {
+                               get {
+                                       if (want_modifiers)
+                                               return ts.DisplayFullName;
+                                       else
+                                               return ts.GetDisplayFullName (DisplayNameFormat.NO_MODIFIERS);
+                               }
+                       }
+
+                       public override TypeName NestedName (TypeIdentifier innerName)
+                       {
+                               return TypeNames.FromDisplay(DisplayName + "+" + innerName.DisplayName);
+                       }
+               }
+
        }
 }
 
index f2665988d522a91068e6ee20178ed89ea405fc15..4aa89c03720cd1056826dd166d6c787b70eebc96 100644 (file)
@@ -142,6 +142,7 @@ namespace MonoTests.System.Diagnostics {
                        new StackTrace (t, true);
                }
 
+#if MONO_FEATURE_THREAD_SUSPEND_RESUME
                [Test]
                [Ignore ("Not supported in Mono")]
                public void StackTrace_Thread_Suspended ()
@@ -151,6 +152,7 @@ namespace MonoTests.System.Diagnostics {
                        t.Suspend ();
                        new StackTrace (t, true);
                }
+#endif
 
                [Test]
                public void FrameCount ()
index 7850f3f58dc408cac23515c1bbff130f05132d03..42778141784a73269f4cf068341572e9b5a67448 100644 (file)
@@ -100,7 +100,7 @@ namespace MonoTests.System.Globalization
                        Assert.AreEqual ("H:mm:ss", di.LongTimePattern, "#2");
                        Assert.AreEqual ("dddd, d' de 'MMMM' de 'yyyy H:mm:ss", di.FullDateTimePattern, "#3");
                        Assert.AreEqual ("MMMM' de 'yyyy", di.YearMonthPattern, "#4");
-                       Assert.AreEqual ("d' de 'MMMM", di.MonthDayPattern, "#5");
+                       Assert.AreEqual ("d 'de' MMMM", di.MonthDayPattern, "#5");
                }
 
                [Test]
@@ -130,7 +130,7 @@ namespace MonoTests.System.Globalization
                public void QuoteInValue ()
                {
                        var culture = new CultureInfo("mt-MT");
-                       Assert.AreEqual ("dddd, d' ta\\' 'MMMM yyyy", culture.DateTimeFormat.LongDatePattern);
+                       Assert.AreEqual ("dddd, d 'ta'’ MMMM yyyy", culture.DateTimeFormat.LongDatePattern);
                }
 
                [Test]
index aa6f1ba35833bdb3b1c4bf28e54fedd5b0a83718..7f381d63c86c36a38acf4145d9ea0d0956d1f2fd 100644 (file)
@@ -729,6 +729,46 @@ namespace MonoTests.System.Reflection.Emit
                        }
                }
 
+               [Test]
+               public void GetType_Escaped_Chars ()
+               {
+                       AssemblyName an = genAssemblyName ();
+                       AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an, AssemblyBuilderAccess.Run);
+                       ModuleBuilder module = ab.DefineDynamicModule ("mod");
+
+                       var tb = module.DefineType ("NameSpace,+*&[]\\.Type,+*&[]\\",
+                                                   TypeAttributes.Class | TypeAttributes.Public);
+
+                       var nestedTb = tb.DefineNestedType ("Nested,+*&[]\\",
+                                                           TypeAttributes.Class | TypeAttributes.NestedPublic);
+
+                       var escapedOuterName =
+                               "NameSpace\\,\\+\\*\\&\\[\\]\\\\"
+                               + "."
+                               + "Type\\,\\+\\*\\&\\[\\]\\\\";
+
+                       var escapedNestedName =
+                               escapedOuterName
+                               + "+"
+                               + "Nested\\,\\+\\*\\&\\[\\]\\\\";
+
+                       Assert.AreEqual (escapedOuterName, tb.FullName);
+                       Assert.AreEqual (escapedNestedName, nestedTb.FullName);
+
+                       Type outerCreatedTy = tb.CreateType ();
+                       Type nestedCreatedTy = nestedTb.CreateType ();
+                       Type outerTy = module.GetType (escapedOuterName);
+                       Type nestedTy = module.GetType (escapedNestedName);
+
+                       Assert.IsNotNull (outerTy, "A");
+                       Assert.IsNotNull (nestedTy, "B");
+                       Assert.AreEqual (escapedNestedName, nestedTy.FullName);
+
+
+                       Assert.AreEqual (nestedCreatedTy, nestedTy);
+
+               }
+
                [Test]
                public void GetMethodTokenNullParam ()
                {
index fe18b8ee8db18209e2873aec02212b3bcb1c8f1d..7d561f4f9e5b8db67202584ff4eeaa690cce81df 100644 (file)
@@ -5,9 +5,11 @@
 //     Gonzalo Paniagua Javier (gonzalo@ximian.com)
 //     Philippe Lavoie (philippe.lavoie@cactus.ca)
 //     Sebastien Pouliot (sebastien@ximian.com)
+//      Aleksey Kliger (aleksey@xamarin.com)
 //
 // (c) 2003 Ximian, Inc. (http://www.ximian.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2015 Xamarin, Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -40,10 +42,14 @@ using System.Reflection.Emit;
 #endif
 using System.Threading;
 using System.Runtime.Serialization;
+using System.Runtime.CompilerServices;
 using System.Security;
 using System.Linq;
 using System.Resources;
 
+// Used by GetType_TypeForwarder_Nested ()
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CultureInfo))]
+
 namespace MonoTests.System.Reflection
 {
        [TestFixture]
@@ -89,13 +95,58 @@ namespace MonoTests.System.Reflection
                }
 
                [Test] // bug #49114
-               [Category ("NotWorking")]
                [ExpectedException (typeof (ArgumentException))]
                public void GetType_TypeName_Invalid () 
                {
                        typeof (int).Assembly.GetType ("&blabla", true, true);
                }
 
+               [Test] // bug #17571
+               [ExpectedException (typeof (ArgumentException))]
+               public void GetType_Invalid_RefPtr () {
+                       typeof (int).Assembly.GetType ("System.Int32&*", true, true);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void GetType_Invalid_RefArray () {
+                       typeof (int).Assembly.GetType ("System.Int32&[]", true, true);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void GetType_Invalid_RefGeneric () {
+                       typeof (int).Assembly.GetType ("System.Tuple`1&[System.Int32]", true, true);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void GetType_Invalid_PtrGeneric () {
+                       typeof (int).Assembly.GetType ("System.Tuple`1*[System.Int32]", true, true);
+               }
+
+               [Test]
+               public void GetType_ComposeModifiers () {
+                       var a = typeof(int).Assembly;
+
+                       var e1 = typeof (Int32).MakePointerType().MakeByRefType();
+                       var t1 = a.GetType ("System.Int32*&", true, true);
+                       Assert.AreEqual (e1, t1, "#1");
+
+                       var e2 = typeof (Int32).MakeArrayType(2).MakeByRefType();
+                       var t2 = a.GetType ("System.Int32[,]&", true, true);
+                       Assert.AreEqual (e2, t2, "#2");
+
+                       var e3 = typeof (Int32).MakePointerType().MakeArrayType();
+                       var t3 = a.GetType ("System.Int32*[]", true, true);
+                       Assert.AreEqual (e3, t3, "#3");
+
+                       var e4 = typeof (Int32).MakeArrayType().MakePointerType().MakePointerType().MakeArrayType().MakePointerType().MakeByRefType();
+                       var t4 = a.GetType ("System.Int32[]**[]*&", true, true);
+                       Assert.AreEqual (e4, t4, "#4");
+                               
+               }
+               
                [Test] // bug #334203
                public void GetType_TypeName_AssemblyName ()
                {
@@ -117,6 +168,14 @@ namespace MonoTests.System.Reflection
                        Assert.IsNull (type, "#B2");
                }
 
+               [Test]
+               public void GetType_TypeForwarder_Nested () {
+                       // System.Globalization is a PCL assembly
+                       Type t = typeof (AssemblyTest).Assembly.GetType ("System.Globalization.CultureInfo/Data");
+                       Assert.IsNotNull (t);
+                       Assert.AreEqual ("System.Globalization.CultureInfo+Data", t.FullName);
+               }
+
                [Test]
                public void GetEntryAssembly ()
                {
@@ -1186,6 +1245,67 @@ namespace MonoTests.System.Reflection
                        } catch (ArgumentException) {}
                }
 
+               class GetCallingAssemblyCallee {
+                       static int _dummy;
+
+                       static void sideEffect () {
+                               _dummy++;
+                       }
+
+                       // GetCallingAssembly may see an unpredictable
+                       // view of the stack if it's called in tail
+                       // position, or if its caller or the caller's
+                       // caller is inlined.  So we put in a side
+                       // effect to get out of tail position, and we
+                       // tag the methods NoInlining to discourage
+                       // the inliner.
+                       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+                       public static Assembly Leaf () {
+                               var a = Assembly.GetCallingAssembly ();
+                               sideEffect();
+                               return a;
+                       }
+
+                       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+                       public static Assembly DirectCall () {
+                               var a = Leaf();
+                               sideEffect();
+                               return a;
+                       }
+
+                       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+                       public static Assembly InvokeCall () {
+                               var ty = typeof (GetCallingAssemblyCallee);
+                               var mi = ty.GetMethod("Leaf");
+                               var o = mi.Invoke(null, null);
+                               sideEffect();
+                               return (Assembly)o;
+                       }
+               }
+
+               [Test]
+               public void GetCallingAssembly_Direct() {
+                       var a = GetCallingAssemblyCallee.DirectCall ();
+                       Assert.IsNotNull (a);
+
+                       Assert.AreEqual (GetType().Assembly, a);
+               }
+
+               [Test]
+               public void GetCallingAssembly_SkipsReflection () {
+                       // check that the calling assembly is this
+                       // one, not mscorlib (aka, the reflection
+                       // API).
+                       var a = GetCallingAssemblyCallee.InvokeCall ();
+                       Assert.IsNotNull (a);
+
+                       var invokeAssembly =
+                               typeof (MethodInfo).Assembly;
+                       Assert.AreNotEqual (invokeAssembly, a);
+
+                       Assert.AreEqual (GetType().Assembly, a);
+               }
+
 #if NET_4_5
                [Test]
                public void DefinedTypes_Equality ()
index 3c6e3da2ffb6f74955c01a9e2cca04d2fdeaf55b..17ddddd3e04e36b9c91c3224db6597ba370e5681 100644 (file)
@@ -3,9 +3,11 @@
 //
 // Authors:
 //  Zoltan Varga (vargaz@gmail.com)
+//  Aleksey Kliger (aleksey@xamarin.com)
 //
 // (c) 2003 Ximian, Inc. (http://www.ximian.com)
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2015 Xamarin, Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -52,7 +54,12 @@ namespace MonoTests.System.Reflection
        [TestFixture]
        public class MethodInfoTest
        {
+#if MONOTOUCH
+               // use an existing symbol - so we can build without dlsym. It does not matter that the signature does not match for the test
+               [DllImport ("libc", EntryPoint="readlink", CharSet=CharSet.Unicode, ExactSpelling=false, PreserveSig=true, SetLastError=true, BestFitMapping=true, ThrowOnUnmappableChar=true)]
+#else
                [DllImport ("libfoo", EntryPoint="foo", CharSet=CharSet.Unicode, ExactSpelling=false, PreserveSig=true, SetLastError=true, BestFitMapping=true, ThrowOnUnmappableChar=true)]
+#endif
                public static extern void dllImportMethod ();
                [MethodImplAttribute(MethodImplOptions.PreserveSig)]
                public void preserveSigMethod ()
@@ -108,8 +115,13 @@ namespace MonoTests.System.Reflection
                        DllImportAttribute attr = (DllImportAttribute)((t.GetMethod ("dllImportMethod").GetCustomAttributes (typeof (DllImportAttribute), true)) [0]);
 
                        Assert.AreEqual (CallingConvention.Winapi, attr.CallingConvention, "#1");
+#if MONOTOUCH
+                       Assert.AreEqual ("readlink", attr.EntryPoint, "#2");
+                       Assert.AreEqual ("libc", attr.Value, "#3");
+#else
                        Assert.AreEqual ("foo", attr.EntryPoint, "#2");
                        Assert.AreEqual ("libfoo", attr.Value, "#3");
+#endif
                        Assert.AreEqual (CharSet.Unicode, attr.CharSet, "#4");
                        Assert.AreEqual (false, attr.ExactSpelling, "#5");
                        Assert.AreEqual (true, attr.PreserveSig, "#6");
@@ -205,6 +217,7 @@ namespace MonoTests.System.Reflection
                        return (int*) 0;
                }
 
+#if MONO_FEATURE_THREAD_ABORT
                [Test] // bug #81538
                public void InvokeThreadAbort ()
                {
@@ -223,6 +236,7 @@ namespace MonoTests.System.Reflection
                {
                        Thread.CurrentThread.Abort ();
                }
+#endif
 
                [Test] // bug #76541
                public void ToStringByRef ()
@@ -281,6 +295,38 @@ namespace MonoTests.System.Reflection
                        Assert.AreEqual (typeof (GBD_D), typeof (GBD_E).GetMethod ("f").GetBaseDefinition ().DeclaringType);
                }
 
+               class GenericBase<T,H> {
+                       public virtual void f2 () { }
+               }
+
+               class GenericMid<T, U> : GenericBase<T, Action<U>> {
+                       public virtual T f1 () { return default (T); }
+               }
+
+               class GenericChild<T> : GenericMid<T, int> {
+                       public override T f1 () { return default (T); }
+                       public override void f2 () { }
+               }
+
+               class DerivedFromGenericBase : GenericBase<int, int> {
+               }
+
+               [Test]
+               public void GetBaseDefinition_OpenConstructedBaseType () // 36305
+               {
+                       var t = typeof (GenericChild<string>);
+
+                       var mi1 = t.GetMethod ("f1");
+                       var mi1_base = mi1.GetBaseDefinition ();
+
+                       Assert.AreEqual (typeof (GenericMid<string, int>), mi1_base.DeclaringType, "#1");
+
+                       var mi2 = t.GetMethod ("f2");
+                       var mi2_base = mi2.GetBaseDefinition ();
+
+                       Assert.AreEqual (typeof (GenericBase<string, Action<int>>), mi2_base.DeclaringType, "#2");
+               }
+
                class TestInheritedMethodA {
                        private void TestMethod ()
                        {
@@ -781,6 +827,33 @@ namespace MonoTests.System.Reflection
                        Assert.AreEqual ("System.Nullable`1[System.Int32] Bug12856()", m.ToString (), "#1");
                }
 
+               [Test]
+               public void GetReflectedType () // #12205
+               {
+                       // public method declared in base type, queried from a derived type
+                       MethodInfo mi = typeof (TestInheritedMethodB).GetMethod ("TestMethod2");
+                       Assert.AreEqual (mi.ReflectedType, typeof (TestInheritedMethodB), "#1");
+
+                       // public method declared in a generic class,
+                       // queried from a non-generic class derived
+                       // from an instantiation of the generic class.
+                       mi = typeof (DerivedFromGenericBase).GetMethod ("f2");
+                       Assert.AreEqual (mi.ReflectedType, typeof (DerivedFromGenericBase), "#2");
+
+                       // public method declared in a generic class,
+                       // queried from the generic type defintion of
+                       // a generic derived class.
+                       mi = typeof (GenericMid<,>).GetMethod ("f2");
+                       Assert.AreEqual (mi.ReflectedType, typeof (GenericMid<,>), "#3");
+
+                       // public method declared in a generic class,
+                       // queried from an instantiation of a generic
+                       // derived class.
+                       mi = typeof (GenericMid<int,int>).GetMethod ("f2");
+                       Assert.AreEqual (mi.ReflectedType, typeof (GenericMid<int,int>), "#4");
+
+               }
+
 #if !MONOTOUCH
                class GenericClass<T>
                {
index 74624d1ba14c39cf6e4d52fb62f5a556bd7a54c6..9db8bda20fd9b41f96a36a25f56c016ca0814408 100644 (file)
@@ -201,6 +201,89 @@ namespace MonoTests.System.Reflection.Emit
                        Assert.AreSame (expected, t.BaseType, "#1");
                        
                }
+
+               [Test]
+               public void GenericClassFromStaleTypeBuilderDoesNotClassInit ()
+               {
+                       // interface JJJ<T> {
+                       //   abstract void W (x : T)
+                       // }
+                       MethodInfo winfo = null;
+                       TypeBuilder ib = null;
+                       Type ic = null;
+                       Type icreated = null;
+                       {
+                               ib = module.DefineType ("Foo.JJJ`1",
+                                                        TypeAttributes.Public
+                                                        | TypeAttributes.Interface
+                                                        | TypeAttributes.Abstract);
+                               String[] gens = { "T" };
+                               GenericTypeParameterBuilder[] gbs = ib.DefineGenericParameters (gens);
+                               var gb = gbs[0];
+                               winfo = ib.DefineMethod ("W",
+                                                        MethodAttributes.Public |
+                                                        MethodAttributes.Abstract |
+                                                        MethodAttributes.Virtual,
+                                                        CallingConventions.HasThis,
+                                                        typeof(void),
+                                        new Type[] { gb });
+                               icreated = ib.CreateType();
+
+                       }
+
+                       // class SSS : JJJ<char> {
+                       //   bool wasCalled;
+                       //   void JJJ.W (x : T) { wasCalled = true; return; }
+                       // }
+                       TypeBuilder tb = null;
+                       MethodBuilder mb = null;
+                       {
+                               tb = module.DefineType ("Foo.SSS",
+                                                       TypeAttributes.Public,
+                                                       null,
+                                                       new Type[]{ icreated.MakeGenericType(typeof(char)) });
+                               var wasCalledField = tb.DefineField ("wasCalled",
+                                                                    typeof(bool),
+                                                                    FieldAttributes.Public);
+                               mb = tb.DefineMethod ("W_impl",
+                                                     MethodAttributes.Public | MethodAttributes.Virtual,
+                                                     CallingConventions.HasThis,
+                                                     typeof (void),
+                                                     new Type[] { typeof (char) });
+                               {
+                                       var il = mb.GetILGenerator ();
+                                       il.Emit (OpCodes.Ldarg_0); // this
+                                       il.Emit (OpCodes.Ldc_I4_1);
+                                       il.Emit (OpCodes.Stfld, wasCalledField); // this.wasCalled = true
+                                       il.Emit (OpCodes.Ret);
+                               }
+                       }
+
+                       ic = ib.MakeGenericType(typeof (char)); // this is a MonoGenericMethod
+                       var mintf = TypeBuilder.GetMethod(ic, winfo);
+                       // the next line causes mono_class_init() to
+                       // be called on JJJ<char> when we try to setup
+                       // the vtable for SSS
+                       tb.DefineMethodOverride(mb, mintf);
+
+                       var result = tb.CreateType();
+
+                       // o = new SSS()
+                       object o = Activator.CreateInstance(result);
+                       Assert.IsNotNull(o, "#1");
+
+                       // ((JJJ<char>)o).W('a');
+                       var m = icreated.MakeGenericType(typeof(char)).GetMethod("W", BindingFlags.Public | BindingFlags.Instance);
+                       Assert.IsNotNull(m, "#2");
+                       m.Invoke(o, new object[] {'a'});
+
+                       var f = result.GetField("wasCalled", BindingFlags.Public | BindingFlags.Instance);
+                       Assert.IsNotNull(f, "#3");
+                       var wasCalledVal = f.GetValue(o);
+                       Assert.IsNotNull(wasCalledVal, "#4");
+                       Assert.AreEqual (wasCalledVal.GetType(), typeof(Boolean), "#5");
+                       Assert.AreEqual (wasCalledVal, true, "#6");
+               }
        }
 }
 
index 593305d4a67543f5f2d341765e1a4dfd9a385e5f..9234e9fc300cdbbb00d6ce0d774e4e8abcf08ab5 100644 (file)
@@ -119,6 +119,16 @@ namespace MonoTests.System.Runtime.CompilerServices {
                        RuntimeHelpers.RunClassConstructor (typeof (Thrower).TypeHandle);
                }
 
+               class GClass<T> {
+                       protected T Field;
+               }
+
+               [Test]
+               public void RunClassConstructor_Generic ()
+               {
+                       RuntimeHelpers.RunClassConstructor (typeof (GClass<>).TypeHandle);
+               }
+
                class Fielder {
                        public byte [] array = new byte [1];
                }
index 92675b00f7c5750c04f019b47b6484ff6c3b4219..4c38e08ed56fe67b422dce6c7714467301f738c9 100644 (file)
@@ -805,6 +805,7 @@ namespace MonoTests.System.Runtime.InteropServices
                        }
                }
 
+#if !MOBILE
                [DllImport ("kernel32.dll", SetLastError = true)]
                [PreserveSig]
                static extern uint GetModuleFileName (
@@ -816,6 +817,7 @@ namespace MonoTests.System.Runtime.InteropServices
                        [MarshalAs (UnmanagedType.U4)]
                        int nSize
                );
+#endif
        }
 #if !NET_2_1
        [ComImport()]
index 50dfe0e157df65b0feb65022d4502a02f092a5f1..328bbb54a50487b7c5d48879374476d27d145da3 100644 (file)
@@ -72,6 +72,7 @@ namespace MonoTests.System.Security.Cryptography.X509Certificates {
                        File.Delete("temp.b64");
                }
 
+#if !MOBILE
                public IntPtr GetHandleEx (byte[] certificate) 
                {
                        CertificateContext cc = new CertificateContext ();
@@ -151,6 +152,7 @@ namespace MonoTests.System.Security.Cryptography.X509Certificates {
                        Assert.AreEqual (serial, x509.GetSerialNumber (), "GetSerialNumber");
                        Assert.AreEqual ("02720006E8", x509.GetSerialNumberString (), "GetSerialNumberString");
                }
+#endif
 
                [Test]
                [ExpectedException (typeof (ArgumentException))]
index 6cdc052f4fb97f8b2d630733e32e5a69a9b814bc..11e81774310f6912bbf366272d4a7334cd2db67a 100644 (file)
@@ -39,7 +39,7 @@ namespace MonoTests.System.Security.Cryptography {
                public void Ctor () 
                {
                        var cp = new CspParameters ();
-                       Assert.AreEqual (1, cp.ProviderType);
+                       Assert.AreEqual (24, cp.ProviderType);
                }
        }
 }
index 2d9795ade100389d8cf10d5248ec714903ddd60b..b7bf46057a067543d842d0f505357f19943b3ae7 100644 (file)
@@ -176,19 +176,6 @@ namespace MonoTests.System.Security.Cryptography {
                        );
                }
 
-               [Test]
-               [ExpectedException (typeof (CryptographicException))]
-               public void CreateEncryptor_KeyNull ()
-               {
-                       ICryptoTransform encryptor = aes.CreateEncryptor (null, aes.IV);
-                       byte[] data = new byte[encryptor.InputBlockSize];
-                       byte[] encdata = encryptor.TransformFinalBlock (data, 0, data.Length);
-
-                       ICryptoTransform decryptor = aes.CreateDecryptor (aes.Key, aes.IV);
-                       byte[] decdata = decryptor.TransformFinalBlock (encdata, 0, encdata.Length);
-                       // null key != SymmetricAlgorithm.Key
-               }
-
                [Test]
                public void CreateEncryptor_IvNull ()
                {
@@ -220,19 +207,6 @@ namespace MonoTests.System.Security.Cryptography {
                        // SymmetricAlgorithm Key and IV not changed by CreateEncryptor
                }
 
-               [Test]
-               [ExpectedException (typeof (CryptographicException))]
-               public void CreateDecryptor_KeyNull ()
-               {
-                       ICryptoTransform encryptor = aes.CreateEncryptor (aes.Key, aes.IV);
-                       byte[] data = new byte[encryptor.InputBlockSize];
-                       byte[] encdata = encryptor.TransformFinalBlock (data, 0, data.Length);
-
-                       ICryptoTransform decryptor = aes.CreateDecryptor (null, aes.IV);
-                       byte[] decdata = decryptor.TransformFinalBlock (encdata, 0, encdata.Length);
-                       // null key != SymmetricAlgorithm.Key
-               }
-
                [Test]
                public void CreateDecryptor_IvNull ()
                {
index 7744e7ccb7ca4410b9f44770e1f984339d8c4ad1..86b3a1dbad25c7497d8c5b44dbc94a08f3331c10 100644 (file)
@@ -44,12 +44,14 @@ namespace MonoTests.System.Security {
                        }
                }
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                [Test]
                public void Defaults ()
                {
                        ContreteSecurityState ss = new ContreteSecurityState ();
                        Assert.IsFalse (ss.IsStateAvailable (), "IsStateAvailable");
                }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
        }
 }
 
index a4669029b8882302d67cc2953ce2e7eee89677c3..5149ece6900f034409ae09a0ef9558d292894388 100644 (file)
@@ -128,7 +128,11 @@ namespace MonoTests.System.Threading
                                TestUtil.WaitForNotAlive (thread1, "");\r
                                Assert.AreEqual (100, class1.marker);\r
                        } finally {\r
+#if MONO_FEATURE_THREAD_ABORT\r
                                thread1.Abort ();\r
+#else\r
+                               thread1.Interrupt ();\r
+#endif\r
                        }\r
                }\r
 \r
@@ -150,8 +154,13 @@ namespace MonoTests.System.Threading
                        \r
                                Assert.AreEqual (class2.id, class2.marker);\r
                        } finally {\r
+#if MONO_FEATURE_THREAD_ABORT\r
                                thread1.Abort ();\r
                                thread2.Abort ();\r
+#else\r
+                               thread1.Interrupt ();\r
+                               thread2.Interrupt ();\r
+#endif\r
                        }\r
                }\r
 \r
index 57c1ca4dea4bdc7abf4d170840a5496d554085ad..b222d5bcab1cb5aefca7d0d25cac02add0f63be3 100644 (file)
@@ -69,6 +69,7 @@ namespace MonoCasTests.System.Threading {
 
                // test Demand by denying the caller of the required privileges
 
+#if MONO_FEATURE_THREAD_ABORT
                [Test]
                [SecurityPermission (SecurityAction.Deny, ControlThread = true)]
                [ExpectedException (typeof (SecurityException))]
@@ -84,7 +85,8 @@ namespace MonoCasTests.System.Threading {
                {
                        Thread.CurrentThread.Abort (new object [0]);
                }
-
+#endif
+               
                [Test]
                [SecurityPermission (SecurityAction.Deny, ControlThread = true)]
                [ExpectedException (typeof (SecurityException))]
@@ -101,6 +103,7 @@ namespace MonoCasTests.System.Threading {
                        Thread.CurrentThread.Interrupt ();
                }
 
+#if MONO_FEATURE_THREAD_ABORT
                [Test]
                [SecurityPermission (SecurityAction.Deny, ControlThread = true)]
                [ExpectedException (typeof (SecurityException))]
@@ -108,7 +111,9 @@ namespace MonoCasTests.System.Threading {
                {
                        Thread.ResetAbort ();
                }
+#endif
 
+#if MONO_FEATURE_THREAD_SUSPEND_RESUME
                [Test]
                [SecurityPermission (SecurityAction.Deny, ControlThread = true)]
                [ExpectedException (typeof (SecurityException))]
@@ -124,6 +129,7 @@ namespace MonoCasTests.System.Threading {
                {
                        Thread.CurrentThread.Suspend ();
                }
+#endif
 
                // we use reflection to call Mutex as it's named constructors are protected by
                // a LinkDemand (which will be converted into full demand, i.e. a stack walk) 
index 888b90c9b411eaf19fe7acd0492c09553940fbed..98c939312eadb5c37dea947046bf681ae0ae4459 100644 (file)
@@ -35,6 +35,25 @@ namespace MonoTests.System.Threading
        [TestFixture]
        public class ThreadPoolTests
        {
+               int minWorkerThreads;
+               int minCompletionPortThreads;
+               int maxWorkerThreads;
+               int maxCompletionPortThreads;
+
+               [SetUp]
+               public void SetUp ()
+               {
+                       ThreadPool.GetMinThreads (out minWorkerThreads, out minCompletionPortThreads);
+                       ThreadPool.GetMaxThreads (out maxWorkerThreads, out maxCompletionPortThreads);
+               }
+
+               [TearDown]
+               public void TearDown ()
+               {
+                       ThreadPool.SetMinThreads (minWorkerThreads, minCompletionPortThreads);
+                       ThreadPool.SetMaxThreads (maxWorkerThreads, maxCompletionPortThreads);
+               }
+
                [Test]
                public void RegisterWaitForSingleObject_InvalidArguments ()
                {
@@ -97,5 +116,87 @@ namespace MonoTests.System.Threading
                        ThreadPool.UnsafeQueueUserWorkItem (e, null);
                        Assert.IsTrue (ev.Wait (3000));
                }
+
+               [Test]
+               public void SetAndGetMinThreads ()
+               {
+                       int workerThreads, completionPortThreads;
+                       int workerThreads_new, completionPortThreads_new;
+
+                       ThreadPool.GetMinThreads (out workerThreads, out completionPortThreads);
+                       Assert.IsTrue (workerThreads > 0, "#1");
+                       Assert.IsTrue (completionPortThreads > 0, "#2");
+
+                       workerThreads_new = workerThreads == 1 ? 2 : 1;
+                       completionPortThreads_new = completionPortThreads == 1 ? 2 : 1;
+                       ThreadPool.SetMinThreads (workerThreads_new, completionPortThreads_new);
+
+                       ThreadPool.GetMinThreads (out workerThreads, out completionPortThreads);
+                       Assert.IsTrue (workerThreads == workerThreads_new, "#3");
+                       Assert.IsTrue (completionPortThreads == completionPortThreads_new, "#4");
+               }
+
+               [Test]
+               public void SetAndGetMaxThreads ()
+               {
+                       int cpuCount = Environment.ProcessorCount;
+                       int workerThreads, completionPortThreads;
+                       int workerThreads_new, completionPortThreads_new;
+
+                       ThreadPool.GetMaxThreads (out workerThreads, out completionPortThreads);
+                       Assert.IsTrue (workerThreads > 0, "#1");
+                       Assert.IsTrue (completionPortThreads > 0, "#2");
+
+                       workerThreads_new = workerThreads == cpuCount ? cpuCount + 1 : cpuCount;
+                       completionPortThreads_new = completionPortThreads == cpuCount ? cpuCount + 1 : cpuCount;
+                       ThreadPool.SetMaxThreads (workerThreads_new, completionPortThreads_new);
+
+                       ThreadPool.GetMaxThreads (out workerThreads, out completionPortThreads);
+                       Assert.IsTrue (workerThreads == workerThreads_new, "#3");
+                       Assert.IsTrue (completionPortThreads == completionPortThreads_new, "#4");
+               }
+
+               [Test]
+               public void GetAvailableThreads ()
+               {
+                       ManualResetEvent mre = new ManualResetEvent (false);
+                       DateTime start = DateTime.Now;
+                       int i, workerThreads, completionPortThreads;
+
+                       try {
+                               Assert.IsTrue (ThreadPool.SetMaxThreads (Environment.ProcessorCount, Environment.ProcessorCount));
+
+                               while (true) {
+                                       ThreadPool.GetAvailableThreads (out workerThreads, out completionPortThreads);
+                                       if (workerThreads == 0)
+                                               break;
+
+                                       Console.WriteLine ("workerThreads = {0}, completionPortThreads = {1}", workerThreads, completionPortThreads);
+
+                                       if ((DateTime.Now - start).TotalSeconds >= 10)
+                                               Assert.Fail ("did not reach 0 available threads");
+
+                                       ThreadPool.QueueUserWorkItem (GetAvailableThreads_Callback, mre);
+                                       Thread.Sleep (1);
+                               }
+                       } finally {
+                               mre.Set ();
+                       }
+               }
+
+               void GetAvailableThreads_Callback (object state)
+               {
+                       ManualResetEvent mre = (ManualResetEvent) state;
+
+                       if (mre.WaitOne (0))
+                               return;
+
+                       ThreadPool.QueueUserWorkItem (GetAvailableThreads_Callback, mre);
+                       ThreadPool.QueueUserWorkItem (GetAvailableThreads_Callback, mre);
+                       ThreadPool.QueueUserWorkItem (GetAvailableThreads_Callback, mre);
+                       ThreadPool.QueueUserWorkItem (GetAvailableThreads_Callback, mre);
+
+                       mre.WaitOne ();
+               }
        }
 }
\ No newline at end of file
index 53921d2e13f30f80360c47ddd904bd3b26d20f8b..c7f73e95d38cfcee8954a4ff30ef4ee83058fa7e 100644 (file)
@@ -13,6 +13,9 @@ using System;
 using System.Globalization;
 using System.Security.Principal;
 using System.Threading;
+using System.Reflection;
+using System.Collections.Generic;
+using SD = System.Diagnostics;
 
 using NUnit.Framework;
 
@@ -181,7 +184,11 @@ namespace MonoTests.System.Threading
                        {
                                sub_thread.Start();
                                Thread.Sleep (100);
+#if MONO_FEATURE_THREAD_ABORT
                                sub_thread.Abort();
+#else
+                               sub_thread.Interrupt ();
+#endif
                        }
                }
                
@@ -212,10 +219,18 @@ namespace MonoTests.System.Threading
                                thread2.Start();
                                TestUtil.WaitForAlive (thread2, "wait2");
                                T2ON = true;
+#if MONO_FEATURE_THREAD_ABORT
                                thread1.Abort();
+#else
+                               thread1.Interrupt ();
+#endif
                                TestUtil.WaitForNotAlive (thread1, "wait3");
                                T1ON = false;
+#if MONO_FEATURE_THREAD_ABORT
                                thread2.Abort();
+#else
+                               thread2.Interrupt ();
+#endif
                                TestUtil.WaitForNotAlive (thread2, "wait4");
                                T2ON = false;
                        }
@@ -325,7 +340,11 @@ namespace MonoTests.System.Threading
                        C2Test test1 = new C2Test();
                        Thread TestThread = new Thread(new ThreadStart(test1.TestMethod));
                        TestThread.Start();
+#if MONO_FEATURE_THREAD_ABORT
                        TestThread.Abort();
+#else
+                       TestThread.Interrupt ();
+#endif
                        try {
                                TestThread.Start();
                                Assert.Fail ("#2");
@@ -340,7 +359,11 @@ namespace MonoTests.System.Threading
                        }
                        bool started = (TestThread.ThreadState == ThreadState.Running);
                        Assert.AreEqual (started, test1.run, "#15 Thread Is not in the correct state: ");
+#if MONO_FEATURE_THREAD_ABORT
                        TestThread.Abort();
+#else
+                       TestThread.Interrupt ();
+#endif
                }
                }
 
@@ -356,10 +379,15 @@ namespace MonoTests.System.Threading
                        TestThread.Start();
                        TestUtil.WaitForAlive (TestThread, "wait5");
                        Assert.AreEqual (ApartmentState.MTA, TestThread.ApartmentState, "#2");
+#if MONO_FEATURE_THREAD_ABORT
                        TestThread.Abort();
+#else
+                       TestThread.Interrupt ();
+#endif
                }
 
                [Test]
+               [Category ("NotWorking")] // setting the priority of a Thread before it is started isn't implemented in Mono yet
                public void TestPriority1()
                {
                        if (is_win32 && is_mono)
@@ -369,16 +397,22 @@ namespace MonoTests.System.Threading
                        Thread TestThread = new Thread(new ThreadStart(test1.TestMethod));
                        try {
                                TestThread.Priority=ThreadPriority.BelowNormal;
-                               ThreadPriority after = TestThread.Priority;
+                               ThreadPriority before = TestThread.Priority;
+                               Assert.AreEqual (ThreadPriority.BelowNormal, before, "#40 Unexpected priority before thread start: ");
                                TestThread.Start();
                                TestUtil.WaitForAlive (TestThread, "wait7");
-                               ThreadPriority before = TestThread.Priority;
+                               ThreadPriority after = TestThread.Priority;
                                Assert.AreEqual (before, after, "#41 Unexpected Priority Change: ");
                        } finally {
+#if MONO_FEATURE_THREAD_ABORT
                                TestThread.Abort();
+#else
+                               TestThread.Interrupt ();
+#endif
                        }
                }
 
+#if MONO_FEATURE_THREAD_ABORT
                [Test]
                [Category ("NotDotNet")] // on MS, Thread is still in AbortRequested state when Start is invoked
                public void AbortUnstarted ()
@@ -388,6 +422,7 @@ namespace MonoTests.System.Threading
                        th.Abort ();
                        th.Start ();
                }
+#endif
 
                [Test]
                [Category ("NotDotNet")] // on MS, ThreadState is immediately Stopped after Abort
@@ -402,7 +437,11 @@ namespace MonoTests.System.Threading
                                TestUtil.WaitForAliveOrStop (TestThread, "wait8");
                                Assert.AreEqual (ThreadPriority.Normal, TestThread.Priority, "#43 Incorrect Priority in Started thread: ");
                        } finally {
+#if MONO_FEATURE_THREAD_ABORT
                                TestThread.Abort();
+#else
+                               TestThread.Interrupt ();
+#endif
                        }
                        Assert.AreEqual (ThreadPriority.Normal, TestThread.Priority, "#44 Incorrect Priority in Aborted thread: ");
                }
@@ -427,7 +466,11 @@ namespace MonoTests.System.Threading
                                Assert.AreEqual (ThreadPriority.Highest, TestThread.Priority, "#45E Incorrect Priority:");
                        }
                        finally {
+#if MONO_FEATURE_THREAD_ABORT
                                TestThread.Abort();
+#else
+                               TestThread.Interrupt ();
+#endif
                        }
                }
 
@@ -455,7 +498,11 @@ namespace MonoTests.System.Threading
                                bool state = TestThread.IsBackground;
                                Assert.IsFalse (state, "#51 IsBackground not set at the default state: ");
                        } finally {
+#if MONO_FEATURE_THREAD_ABORT
                                TestThread.Abort();
+#else
+                               TestThread.Interrupt ();
+#endif
                        }
                }
 
@@ -468,7 +515,11 @@ namespace MonoTests.System.Threading
                        try {
                                TestThread.Start();
                        } finally {
+#if MONO_FEATURE_THREAD_ABORT
                                TestThread.Abort();
+#else
+                               TestThread.Interrupt ();
+#endif
                        }
                        
                        if (TestThread.IsAlive) {
@@ -497,7 +548,11 @@ namespace MonoTests.System.Threading
                                TestThread.Name = newname;
                                Assert.AreEqual (newname, TestThread.Name, "#62 Name not set when must be set: ");
                        } finally {
+#if MONO_FEATURE_THREAD_ABORT
                                TestThread.Abort();
+#else
+                               TestThread.Interrupt ();
+#endif
                        }
                }
 
@@ -559,7 +614,11 @@ namespace MonoTests.System.Threading
                                TestThread.Start();
                                TestUtil.WaitForAlive (TestThread, "wait11");
                        } finally {
+#if MONO_FEATURE_THREAD_ABORT
                                TestThread.Abort();
+#else
+                               TestThread.Interrupt ();
+#endif
                        }
                }
 
@@ -571,7 +630,11 @@ namespace MonoTests.System.Threading
                        try {
                                TestThread.Start();
                        } finally {
+#if MONO_FEATURE_THREAD_ABORT
                                TestThread.Abort();
+#else
+                               TestThread.Interrupt ();
+#endif
                        }
                }
 
@@ -587,8 +650,13 @@ namespace MonoTests.System.Threading
                                thread2.Start();
                                thread2.Join();
                        } finally {
+#if MONO_FEATURE_THREAD_ABORT
                                thread1.Abort();
                                thread2.Abort();
+#else
+                               thread1.Interrupt ();
+                               thread2.Interrupt ();
+#endif
                        }
                }
 
@@ -673,7 +741,11 @@ namespace MonoTests.System.Threading
                                Assert.IsTrue (TestThread.ThreadState == ThreadState.Running || (TestThread.ThreadState & ThreadState.Unstarted) != 0,
                                        "#102 Wrong Thread State: " + TestThread.ThreadState.ToString ());
                        } finally {
+#if MONO_FEATURE_THREAD_ABORT
                                TestThread.Abort();
+#else
+                               TestThread.Interrupt ();
+#endif
                        }
                        
                        TestUtil.WaitForNotAlive (TestThread, "wait12");
@@ -693,7 +765,11 @@ namespace MonoTests.System.Threading
                                t.Start ();
                                t.Join ();
                        } catch {
+#if MONO_FEATURE_THREAD_ABORT
                                t.Abort ();
+#else
+                               t.Interrupt ();
+#endif
                        }
                }
 
@@ -708,7 +784,11 @@ namespace MonoTests.System.Threading
                                t.Start ();
                                t.Join ();
                        } catch {
+#if MONO_FEATURE_THREAD_ABORT
                                t.Abort ();
+#else
+                               t.Interrupt ();
+#endif
                        }
                }
 
@@ -722,7 +802,11 @@ namespace MonoTests.System.Threading
                                t.Start ();
                                t.Join ();
                        } catch {
+#if MONO_FEATURE_THREAD_ABORT
                                t.Abort ();
+#else
+                               t.Interrupt ();
+#endif
                        }
                }
                
@@ -736,12 +820,17 @@ namespace MonoTests.System.Threading
                                t.Start ();
                                t.Join ();
                        } catch {
+#if MONO_FEATURE_THREAD_ABORT
                                t.Abort ();
+#else
+                               t.Interrupt ();
+#endif
                        }
                }
 
                int counter = 0;
 
+#if MONO_FEATURE_THREAD_SUSPEND_RESUME
                [Test]
                public void TestSuspend ()
                {
@@ -765,7 +854,9 @@ namespace MonoTests.System.Threading
                        TestUtil.WaitForNotAlive (t, "wait13");
                        CheckIsNotRunning ("t6", t);
                }
-
+#endif
+               
+#if MONO_FEATURE_THREAD_SUSPEND_RESUME && MONO_FEATURE_THREAD_ABORT
                [Test]
                [Category("NotDotNet")] // On MS, ThreadStateException is thrown on Abort: "Thread is suspended; attempting to abort"
                public void TestSuspendAbort ()
@@ -796,6 +887,7 @@ namespace MonoTests.System.Threading
                        
                        CheckIsNotRunning ("t6", t);
                }
+#endif
 
                [Test]
                public void Test_Interrupt ()
@@ -858,6 +950,34 @@ namespace MonoTests.System.Threading
                        Assert.AreSame (Thread.GetNamedDataSlot ("te#st"), Thread.GetNamedDataSlot ("te#st"), "#2");
                }
 
+               class DomainClass : MarshalByRefObject {
+                       Thread m_thread;
+                       bool success;
+
+                       public bool Run () {
+                               m_thread = new Thread(ThreadProc);
+                               m_thread.Start(Thread.CurrentThread);
+                               m_thread.Join();
+                               return success;
+                       }
+
+                       public void ThreadProc (object arg) {
+                               success = m_thread == Thread.CurrentThread;
+                       }
+               }
+
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
+               [Test]
+               public void CurrentThread_Domains ()
+               {
+                       AppDomain ad = AppDomain.CreateDomain ("foo");
+                       ad.Load (typeof (DomainClass).Assembly.GetName ());
+                       var o = (DomainClass)ad.CreateInstanceAndUnwrap (typeof (DomainClass).Assembly.FullName, typeof (DomainClass).FullName);
+                       Assert.IsTrue (o.Run ());
+                       AppDomain.Unload (ad);
+               }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
+
                void CheckIsRunning (string s, Thread t)
                {
                        int c = counter;
@@ -1249,6 +1369,17 @@ namespace MonoTests.System.Threading
                static void ThreadProc(Object stateInfo) {
                        Thread.CurrentThread.Name = "My Worker";
                }
+
+               [Test]
+               public void GetStackTraces () {
+                       var m = typeof (Thread).GetMethod ("Mono_GetStackTraces", BindingFlags.NonPublic|BindingFlags.Static);
+                       if (m != null) {
+                               var res = (Dictionary<Thread,SD.StackTrace>)typeof (Thread).GetMethod ("Mono_GetStackTraces", BindingFlags.NonPublic|BindingFlags.Static).Invoke (null, null);
+                               foreach (var t in res.Keys) {
+                                       var st = res [t].ToString ();
+                               }
+                       }
+               }
        }
 
        public class TestUtil
index 6d95120f8ae3eb7c6e5360813f136bf3f2cd9489..3516b040c389e7c5aa7f52224fb54f6fb400c1d4 100644 (file)
@@ -26,6 +26,8 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
+
 using NUnit.Framework;
 
 using System;
@@ -404,3 +406,5 @@ namespace MonoCasTests.System {
                }
        }
 }
+
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
index 83d198ca50393b3f1180310eb7068d085030d46d..f90a9eccc61717737d4669243c8fb99f27152c76 100644 (file)
@@ -26,6 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
 
 using System;
 using System.Security;
@@ -56,3 +57,4 @@ namespace MonoTests.System {
        }
 }
 
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
index 2e4b6e59a834022f2675183428d671ee5329e4eb..121d1c45f10a88ceae0f80fdbbfe3575d7f7cb70 100644 (file)
@@ -169,6 +169,7 @@ namespace MonoTests.System
                        }
                }
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                [Test]
 #if MOBILE
                [Category ("NotWorking")]
@@ -184,6 +185,7 @@ namespace MonoTests.System
                        Assert.IsNotNull (data);
                        Assert.IsTrue ((bool) data);
                }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
 
                static void AppDomainInitialized1 (string [] args)
                {
@@ -199,6 +201,7 @@ namespace MonoTests.System
                {
                }
 
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
                [Test]
 #if MOBILE
                [Category ("NotWorking")]
@@ -211,5 +214,6 @@ namespace MonoTests.System
                        s.AppDomainInitializer = InstanceInitializer;
                        AppDomain.CreateDomain ("MyDomain", null, s);
                }
+#endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
        }
 }
index 6902f43be1e989a386ccaf9144a8dd7d1c881aa9..351d312c92d63c5d217d3f9df04524402671680b 100644 (file)
@@ -2548,6 +2548,33 @@ public class ArrayTest
                        Assert.AreEqual (4, indices [0]);
        }
 
+       [Test]
+       public void TestSortComparable()
+       {
+               int[] source = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+               int[] expected = { 6, 5, 4, 3, 2, 1, 7, 8, 9 };
+               Comp[] c = { new Comp (100), new Comp (16), new Comp (11), new Comp (9), new Comp (0), new Comp (-100) };
+               IComparer<Comp> comp = null;
+               Array.Sort<Comp, int> (c, source, comp);
+
+               Assert.AreEqual (expected, source);
+       }
+
+       class Comp : IComparable
+       {
+               readonly int val;
+
+               public Comp (int a)
+               {
+                       val = a;
+               }
+
+               int IComparable.CompareTo (object obj)
+               {
+                       return val.CompareTo ((obj as Comp).val);
+               }
+       }
+
        [Test]
        public void TestInitializeEmpty()
        {
index 75ebb2abc1ce48888f920843772b9fa107d1b7af..53a8af742b82b8748d706f417fef17544e8b724f 100644 (file)
@@ -836,6 +836,8 @@ namespace MonoTests.System
                }
 
                [Test]
+               // The linker removes the serializable attribute
+               [Category ("MobileNotWorking")]
                public void OrderIsImportant ()
                {
                        var custom = typeof (ClassForOrderIsImportant).GetCustomAttributes (false);
index 94ee388ec564aeb152f43d691285ebabad147b77..fa979412d0774785ec3e223a88fec262e4ce15c8 100644 (file)
@@ -278,5 +278,18 @@ namespace MonoTests.System {
                        Buffer.SetByte (byteArray, 3, (byte) 10);
                        Assert.AreEqual ((Byte)10, Buffer.GetByte (byteArray, 3), "TestSetByte");
                }
+
+               [Test]
+               public void MemoryCopy_Simple ()
+               {
+                       int a = 0xBC614E;
+                       int b = 1;
+                       unsafe {
+                               Buffer.MemoryCopy (&a, &b, 4, 2);                               
+                       }
+
+                       Assert.AreEqual (0xBC614E, a, "#1");
+                       Assert.AreEqual (0x614E, b, "#2");
+               }
        }
 }
diff --git a/mcs/class/corlib/Test/System/DateTimeOffsetTestCoreFx.cs b/mcs/class/corlib/Test/System/DateTimeOffsetTestCoreFx.cs
new file mode 100644 (file)
index 0000000..fb7b3d7
--- /dev/null
@@ -0,0 +1,143 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using System;
+using System.Globalization;
+using NUnit.Framework;
+
+
+namespace MonoTests.System {
+
+[TestFixture]
+public static class DateTimeOffsetUnixTimeConversionTests
+{
+    private class TestTime
+    {
+        private TestTime(DateTimeOffset dateTimeOffset, long unixTimeMilliseconds, long unixTimeSeconds)
+        {
+            DateTimeOffset = dateTimeOffset;
+            UnixTimeMilliseconds = unixTimeMilliseconds;
+            UnixTimeSeconds = unixTimeSeconds;
+        }
+
+        public static TestTime FromMilliseconds(DateTimeOffset dateTimeOffset, long unixTimeMilliseconds)
+        {
+            long unixTimeSeconds = unixTimeMilliseconds / 1000;
+
+            // Always round UnixTimeSeconds down toward 1/1/0001 00:00:00
+            // (this happens automatically for unixTimeMilliseconds > 0)
+            bool hasSubSecondPrecision = unixTimeMilliseconds % 1000 != 0;
+            if (unixTimeMilliseconds < 0 && hasSubSecondPrecision)
+            {
+                --unixTimeSeconds;
+            }
+
+            return new TestTime(dateTimeOffset, unixTimeMilliseconds, unixTimeSeconds);
+        }
+
+        public static TestTime FromSeconds(DateTimeOffset dateTimeOffset, long unixTimeSeconds)
+        {
+            return new TestTime(dateTimeOffset, unixTimeSeconds * 1000, unixTimeSeconds);
+        }
+
+        public DateTimeOffset DateTimeOffset { get; private set; }
+        public long UnixTimeMilliseconds { get; private set; }
+        public long UnixTimeSeconds { get; private set; }
+    }
+
+    private static readonly TestTime[] s_testTimes = {
+        TestTime.FromMilliseconds(DateTimeOffset.MinValue, -62135596800000),
+        TestTime.FromMilliseconds(DateTimeOffset.MaxValue, 253402300799999),
+        TestTime.FromMilliseconds(new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero), 0),
+        TestTime.FromMilliseconds(new DateTimeOffset(2014, 6, 13, 17, 21, 50, TimeSpan.Zero), 1402680110000),
+        TestTime.FromMilliseconds(new DateTimeOffset(2830, 12, 15, 1, 23, 45, TimeSpan.Zero), 27169089825000),
+        TestTime.FromMilliseconds(new DateTimeOffset(2830, 12, 15, 1, 23, 45, 399, TimeSpan.Zero), 27169089825399),
+        TestTime.FromMilliseconds(new DateTimeOffset(9999, 12, 30, 23, 24, 25, TimeSpan.Zero), 253402212265000),
+        TestTime.FromMilliseconds(new DateTimeOffset(1907, 7, 7, 7, 7, 7, TimeSpan.Zero), -1971967973000),
+        TestTime.FromMilliseconds(new DateTimeOffset(1907, 7, 7, 7, 7, 7, 1, TimeSpan.Zero), -1971967972999),
+        TestTime.FromMilliseconds(new DateTimeOffset(1907, 7, 7, 7, 7, 7, 777, TimeSpan.Zero), -1971967972223),
+        TestTime.FromMilliseconds(new DateTimeOffset(601636288270011234, TimeSpan.Zero), -1971967972999)
+    };
+
+    [Test]
+    public static void TestToUnixTime()
+    {
+        foreach (var test in s_testTimes)
+        {
+            TestToUnixTimeMilliseconds(test);
+            TestToUnixTimeSeconds(test);
+        }
+    }
+
+    private static void TestToUnixTimeMilliseconds(TestTime test)
+    {
+        long expectedMilliseconds = test.UnixTimeMilliseconds;
+        long actualMilliseconds = test.DateTimeOffset.ToUnixTimeMilliseconds();
+        Assert.AreEqual(expectedMilliseconds, actualMilliseconds);
+    }
+
+    private static void TestToUnixTimeSeconds(TestTime test)
+    {
+        long expectedSeconds = test.UnixTimeSeconds;
+        long actualSeconds = test.DateTimeOffset.ToUnixTimeSeconds();
+        Assert.AreEqual(expectedSeconds, actualSeconds);
+    }
+
+    [Test]
+    public static void TestFromUnixTime()
+    {
+        foreach (var test in s_testTimes)
+        {
+            TestFromUnixTimeMilliseconds(test);
+            TestFromUnixTimeSeconds(test);
+        }
+    }
+
+    private static void TestFromUnixTimeMilliseconds(TestTime test)
+    {
+        // Only assert that expected == actual up to millisecond precision for conversion from milliseconds
+        long expectedTicks = (test.DateTimeOffset.UtcTicks / TimeSpan.TicksPerMillisecond) * TimeSpan.TicksPerMillisecond;
+        long actualTicks = DateTimeOffset.FromUnixTimeMilliseconds(test.UnixTimeMilliseconds).UtcTicks;
+        Assert.AreEqual(expectedTicks, actualTicks);
+    }
+
+    private static void TestFromUnixTimeSeconds(TestTime test)
+    {
+        // Only assert that expected == actual up to second precision for conversion from seconds
+        long expectedTicks = (test.DateTimeOffset.UtcTicks / TimeSpan.TicksPerSecond) * TimeSpan.TicksPerSecond;
+        long actualTicks = DateTimeOffset.FromUnixTimeSeconds(test.UnixTimeSeconds).UtcTicks;
+        Assert.AreEqual(expectedTicks, actualTicks);
+    }
+
+
+    [Test]
+    public static void TestRoundtripDateTimes()
+    {
+        foreach (var test in s_testTimes)
+        {
+            // Roundtrip through Unix time in milliseconds
+            long unixTimeMilliseconds = test.DateTimeOffset.ToUnixTimeMilliseconds();
+            TestFromUnixTimeMilliseconds(TestTime.FromMilliseconds(test.DateTimeOffset, unixTimeMilliseconds));
+
+            // Roundtrip through Unix time in seconds
+            long unixTimeSeconds = test.DateTimeOffset.ToUnixTimeSeconds();
+            TestFromUnixTimeSeconds(TestTime.FromSeconds(test.DateTimeOffset, unixTimeSeconds));
+        }
+    }
+
+    [Test]
+    public static void TestRoundtripUnixTimes()
+    {
+        foreach (var test in s_testTimes)
+        {
+            // Roundtrip Unix time in milliseconds
+            DateTimeOffset dateTime = DateTimeOffset.FromUnixTimeMilliseconds(test.UnixTimeMilliseconds);
+            TestToUnixTimeMilliseconds(TestTime.FromMilliseconds(dateTime, test.UnixTimeMilliseconds));
+
+            // Roundtrip Unix time in seconds
+            dateTime = DateTimeOffset.FromUnixTimeSeconds(test.UnixTimeSeconds);
+            TestToUnixTimeSeconds(TestTime.FromSeconds(dateTime, test.UnixTimeSeconds));
+        }
+    }
+}
+}
\ No newline at end of file
index e318d62052e98ef1bdc53e5a364e4023948bd29e..a412ae71541af33a56b0d4ddec8e6b82dfc85b46 100644 (file)
@@ -1296,6 +1296,21 @@ namespace MonoTests.System
                        }
                }
 
+               [Test]
+               public void Parse_SameTimeAndDateSeparator ()
+               {
+                       var fiFI = (CultureInfo) CultureInfo.GetCultureInfo("fi-FI").Clone();
+
+                       fiFI.DateTimeFormat.TimeSeparator = fiFI.DateTimeFormat.DateSeparator;
+
+                       var dt = DateTime.Parse("4.3.2010", fiFI);
+
+                       Assert.AreEqual (2010, dt.Year, "#1");
+                       Assert.AreEqual (3, dt.Month, "#2");
+                       Assert.AreEqual (4, dt.Day, "#3");
+               }
+
+
                [Test]
                [ExpectedException (typeof (FormatException))]
                public void Parse_RequireSpaceSeparator ()
index 0a2173d49fd892f8fd3a5f096050a0be4ab5a351..4fcf4a155bc82e0fff045530cbb3e9b4e501ebb4 100644 (file)
@@ -945,28 +945,28 @@ namespace MonoTests.System
                [Test]
                public void GetHashCode_ShouldBeEqualToUnderlyingType ()
                {
-                       Assert.AreEqual (EnInt8.A.GetHashCode(), SByte.MinValue, "i8#0");
-                       Assert.AreEqual (EnInt8.B.GetHashCode(), 44, "i8#1");
-                       Assert.AreEqual (EnInt8.C.GetHashCode(), SByte.MaxValue, "i8#2");
+                       Assert.AreEqual (EnInt8.A.GetHashCode(), SByte.MinValue.GetHashCode (), "i8#0");
+                       Assert.AreEqual (EnInt8.B.GetHashCode(), ((sbyte)44).GetHashCode (), "i8#1");
+                       Assert.AreEqual (EnInt8.C.GetHashCode(), SByte.MaxValue.GetHashCode (), "i8#2");
        
-                       Assert.AreEqual (EnUInt8.A.GetHashCode(), Byte.MinValue, "u8#0");
-                       Assert.AreEqual (EnUInt8.B.GetHashCode(), 55, "u8#1");
-                       Assert.AreEqual (EnUInt8.C.GetHashCode(), Byte.MaxValue, "u8#2");
+                       Assert.AreEqual (EnUInt8.A.GetHashCode(), Byte.MinValue.GetHashCode (), "u8#0");
+                       Assert.AreEqual (EnUInt8.B.GetHashCode(), ((byte)55).GetHashCode (), "u8#1");
+                       Assert.AreEqual (EnUInt8.C.GetHashCode(), Byte.MaxValue.GetHashCode (), "u8#2");
        
-                       Assert.AreEqual (EnInt16.A.GetHashCode(), Int16.MinValue, "i16#0");
-                       Assert.AreEqual (EnInt16.B.GetHashCode(), 66, "i16#1");
-                       Assert.AreEqual (EnInt16.C.GetHashCode(), Int16.MaxValue, "i16#2");
+                       Assert.AreEqual (EnInt16.A.GetHashCode(), Int16.MinValue.GetHashCode (), "i16#0");
+                       Assert.AreEqual (EnInt16.B.GetHashCode(), ((short)66).GetHashCode (), "i16#1");
+                       Assert.AreEqual (EnInt16.C.GetHashCode(), Int16.MaxValue.GetHashCode (), "i16#2");
        
-                       Assert.AreEqual (EnUInt16.A.GetHashCode(), UInt16.MinValue, "u16#0");
-                       Assert.AreEqual (EnUInt16.B.GetHashCode(), 77, "u16#1");
-                       Assert.AreEqual (EnUInt16.C.GetHashCode(), UInt16.MaxValue, "u16#2");
+                       Assert.AreEqual (EnUInt16.A.GetHashCode(), UInt16.MinValue.GetHashCode (), "u16#0");
+                       Assert.AreEqual (EnUInt16.B.GetHashCode(), ((ushort)77).GetHashCode (), "u16#1");
+                       Assert.AreEqual (EnUInt16.C.GetHashCode(), UInt16.MaxValue.GetHashCode (), "u16#2");
        
-                       Assert.AreEqual (EnInt32.A.GetHashCode(), Int32.MinValue, "i32#0");
-                       Assert.AreEqual (EnInt32.B.GetHashCode(), 88, "i32#1");
-                       Assert.AreEqual (EnInt32.C.GetHashCode(), Int32.MaxValue, "i32#2");
+                       Assert.AreEqual (EnInt32.A.GetHashCode(), Int32.MinValue.GetHashCode (), "i32#0");
+                       Assert.AreEqual (EnInt32.B.GetHashCode(), ((int)88).GetHashCode (), "i32#1");
+                       Assert.AreEqual (EnInt32.C.GetHashCode(), Int32.MaxValue.GetHashCode (), "i32#2");
        
-                       Assert.AreEqual (EnUInt32.A.GetHashCode(), UInt32.MinValue, "u32#0");
-                       Assert.AreEqual (EnUInt32.B.GetHashCode(), 99, "u32#1");
+                       Assert.AreEqual (EnUInt32.A.GetHashCode(), UInt32.MinValue.GetHashCode (), "u32#0");
+                       Assert.AreEqual (EnUInt32.B.GetHashCode(), ((uint)99).GetHashCode (), "u32#1");
                        Assert.AreEqual (EnUInt32.C.GetHashCode(), UInt32.MaxValue.GetHashCode (), "u32#2");
        
                        Assert.AreEqual (EnInt64.A.GetHashCode(), Int64.MinValue.GetHashCode (), "i64#0");
@@ -974,7 +974,7 @@ namespace MonoTests.System
                        Assert.AreEqual (EnInt64.C.GetHashCode(), Int64.MaxValue.GetHashCode (), "i64#2");
        
                        Assert.AreEqual (EnUInt64.A.GetHashCode(), UInt64.MinValue.GetHashCode (), "u64#0");
-                       Assert.AreEqual (EnUInt64.B.GetHashCode(), 3488924689489L.GetHashCode (), "u64#1");
+                       Assert.AreEqual (EnUInt64.B.GetHashCode(), ((ulong)3488924689489L).GetHashCode (), "u64#1");
                        Assert.AreEqual (EnUInt64.C.GetHashCode(), UInt64.MaxValue.GetHashCode (), "u64#2");
                }
 
index 537604ec2b73a8ea6bd62446e47732f0f48d8b20..f41b62c1df16551fd182a6094d6ebab18aecd8c7 100644 (file)
@@ -16,8 +16,7 @@ namespace MonoTests.System
        [TestFixture]
        public class MathTest
        {
-               private static double double_epsilon =
-                       double.Epsilon;
+               private static double double_epsilon = 2.2204460492503131e-16; /* DBL_EPSILON = 2^-52 */
 
                static double x = 0.1234;
                static double y = 12.345;
@@ -481,7 +480,6 @@ namespace MonoTests.System
                public void TestPow ()
                {
                        double precision;
-                       int iTest = 1;
 #if MONODROID
                        // It fails on Nexus 9 with
                        //
index ce028bc12afdb847d8f9f77484c0144e5076c176..97c8153bfd57fa5e94fd32117d344a6b0e418411 100644 (file)
@@ -215,6 +215,20 @@ namespace MonoTests.System
                        StringComparer.Ordinal.GetHashCode (null);
                }
 
+               [Test]
+               [SetCulture("en-us")]
+               public void OrdinarCultureSwitch ()
+               {
+                       var cmp1 = StringComparer.OrdinalIgnoreCase;
+                       var h1 = cmp1.GetHashCode ("w");
+
+                       global::System.Threading.Thread.CurrentThread.CurrentCulture = new global::System.Globalization.CultureInfo ("fi");
+
+                       var cmp2 = StringComparer.OrdinalIgnoreCase;
+                       var h2 = cmp2.GetHashCode ("w");
+                       Assert.AreEqual (h1, h2);
+               }
+
                private static readonly byte [] _serializedCurrentCulture = new byte [] {
                        0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00,
                        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00,
index 293479eb851d41f9a6c6a9e89f083f3743b88257..7119236c8aab2bb638ec9916a2191e761088ed7c 100644 (file)
@@ -92,6 +92,21 @@ public class StringTest
                }
        }
 
+       [Test] // ctor (Char, Int32)
+       public void Constructor4_LargeString ()
+       {
+               try {
+                       var x = new String ('A', int.MaxValue);
+                       if (Environment.Is64BitProcess) {
+                               Assert.AreEqual ('A', x[0]);
+                               Assert.AreEqual ('A', x[int.MaxValue - 1]);
+                       }
+                       else
+                               Assert.Fail ("Expected OutOfMemoryException.");
+               } catch (OutOfMemoryException) {
+               }
+       }
+
        [Test] // ctor (Char [], Int32, Int32)
        public void Constructor6 ()
        {
@@ -2993,10 +3008,16 @@ public class StringTest
        }
 
        [Test]
-       public void PadLeft_Overflow ()
+       public void PadLeft_LargeString ()
        {
                try {
-                       "x".PadLeft (int.MaxValue, '-');
+                       var x = "x".PadLeft (int.MaxValue, '-');
+                       if (Environment.Is64BitProcess) {
+                               Assert.AreEqual ('-', x[0]);
+                               Assert.AreEqual ('x', x[int.MaxValue - 1]);
+                       }
+                       else
+                               Assert.Fail ("Expected OutOfMemoryException.");
                } catch (OutOfMemoryException) {
                }
        }
@@ -3043,10 +3064,16 @@ public class StringTest
        }
 
        [Test]
-       public void PadRight_Overflow ()
+       public void PadRight_LargeString ()
        {
                try {
-                       "x".PadRight (int.MaxValue, '-');
+                       var x = "x".PadRight (int.MaxValue, '-');
+                       if (Environment.Is64BitProcess) {
+                               Assert.AreEqual ('x', x[0]);
+                               Assert.AreEqual ('-', x[int.MaxValue - 1]);
+                       }
+                       else
+                               Assert.Fail ("Expected OutOfMemoryException.");
                } catch (OutOfMemoryException) {
                }
        }
index 770ab17dffc7e0907e6c4ebd770fb4bf1f0b87bd..e8990a6013944c01356c76d5fcc2148302a5920c 100644 (file)
@@ -93,8 +93,10 @@ namespace MonoTests.System
                                } catch (DllNotFoundException e) {
                                        return;
                                }
-
+#if !MONOTOUCH && !XAMMAC
+                               // this assumption is incorrect for iOS, tvO, watchOS and OSX
                                Assert.IsTrue (TimeZoneInfo.Local.Id != "Local", "Local timezone id should not be \"Local\"");
+#endif
                        }
                }
 
@@ -1162,5 +1164,30 @@ namespace MonoTests.System
                                }
                        }
                }
+
+               [TestFixture]
+               public class ParseTZBuffer
+               {
+                       MethodInfo parseTZBuffer;
+
+                       [SetUp]
+                       public void Setup()
+                       {
+                               var flags = BindingFlags.Static | BindingFlags.NonPublic;
+                               parseTZBuffer = typeof (TimeZoneInfo).GetMethod ("ParseTZBuffer", flags);
+                       }
+
+                       [Test]
+                       public void Bug31432 ()
+                       {
+                               // Europe/Moscow from failing device
+                               var base64Data = "VFppZjIAAAAAAAAAAAAAAAAAAAAAAAAPAAAADwAAAAAAAABNAAAADwAAACKbXx7HnT7yeZ4q7vme9zlpn4RX+aDYbOmhABYJoTymQKQQbcCkPTKwpRVosKU9A8CnHkVQtaQZYBUnp9AWGNxAFwjbUBf6D8AY6g7QGdtDQBrMk9AbvKDwHKyR8B2cgvAejHPwH3xk8CBsVfAhXEbwIkw38CM8KPAkLBnwJRwK8CYL+/AnBSdwJ/UYcCjlF4ApeL+AKdTQQCrEszArtNxwLKTNcC2UvnAuhK9wL3SgcDBkkXAxXbzwMnKX8DM9nvA0UnnwNR2A8DYyW/A2/WLwOBt4cDjdRPA5+1pwOr0m8DvbPHA8pkNwPbsecD6GJXA/mwBwQGYHcEGEHPBCRelwQ2P+8EQly3BFQ+DwRgWtcEcjwvBH7snwSQOk8EnOq/BK44bwS66N8EzMo3BNjm/wVEwdYAIBAgMBAwUEBQYFBwgHCQcJBwkHCQoLCgsKCwoLCgsKCwoMDQoJBwsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCgsKCwoLCg4KAAAjOQAAAAAxhwEEAAAjdwAAAAA/lwEIAAAqMAADAAA4QAENAABGUAEPAAAqMAARAAAcIAAVAAA4QAEZAAAqMAARAAA4QAEZAAAqMAEdAAAcIAAVAAA4QAARTU1UAE1TVABNRFNUAFMATQBNU0sARUVUAE1TRABFRVNUAAAAAAAAAAAAAAABAQEBAQAAAAAAAAAAAAAAAAAAAFRaaWYyAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAATgAAABAAAAAm/////1a2wMf/////m18ex/////+dPvJ5/////54q7vn/////nvc5af////+fhFf5/////6DYbOn/////oQAWCf////+hPKZA/////6QQbcD/////pD0ysP////+lFWiw/////6U9A8D/////px5FUP////+1pBlgAAAAABUnp9AAAAAAFhjcQAAAAAAXCNtQAAAAABf6D8AAAAAAGOoO0AAAAAAZ20NAAAAAABrMk9AAAAAAG7yg8AAAAAAcrJHwAAAAAB2cgvAAAAAAHoxz8AAAAAAffGTwAAAAACBsVfAAAAAAIVxG8AAAAAAiTDfwAAAAACM8KPAAAAAAJCwZ8AAAAAAlHArwAAAAACYL+/AAAAAAJwUncAAAAAAn9RhwAAAAACjlF4AAAAAAKXi/gAAAAAAp1NBAAAAAACrEszAAAAAAK7TccAAAAAAspM1wAAAAAC2UvnAAAAAALoSvcAAAAAAvdKBwAAAAADBkkXAAAAAAMV288AAAAAAycpfwAAAAADM9nvAAAAAANFJ58AAAAAA1HYDwAAAAADYyW/AAAAAANv1i8AAAAAA4G3hwAAAAADjdRPAAAAAAOftacAAAAAA6vSbwAAAAADvbPHAAAAAAPKZDcAAAAAA9ux5wAAAAAD6GJXAAAAAAP5sAcAAAAABAZgdwAAAAAEGEHPAAAAAAQkXpcAAAAABDY/7wAAAAAEQly3AAAAAARUPg8AAAAABGBa1wAAAAAEcjwvAAAAAAR+7J8AAAAABJA6TwAAAAAEnOq/AAAAAASuOG8AAAAABLro3wAAAAAEzMo3AAAAAATY5v8AAAAABUTB1gAQMCAwQCBAYFBgcGCAkICggKCAoICgsMCwwLDAsMCwwLDAsNDgsKCAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8LAAAjOQAAAAAjOQAEAAAxhwEIAAAjdwAEAAA/lwEMAAAqMAADAAA4QAERAABGUAETAAAqMAAVAAAcIAAZAAA4QAEdAAAqMAAVAAA4QAEdAAAqMAEhAAAcIAAZAAA4QAAVTE1UAE1NVABNU1QATURTVABTAE0ATVNLAEVFVABNU0QARUVTVAAAAAAAAAAAAAAAAAEBAQEBAAAAAAAAAAAAAAAAAAAAAApNU0stMwo=";
+
+                               var data = Convert.FromBase64String (base64Data);
+
+                               var tz = parseTZBuffer.Invoke (null, new object[] { "Test", data, data.Length});
+                               Assert.IsTrue (tz != null);
+                       }
+               }
        }
 }
index 0b550c046a0e30c7f5d5858c2be372a1c4e5dc4e..19dbff4804c0ea37f0033f0911c3674f4bf65b90 100644 (file)
@@ -3,8 +3,10 @@
 // Authors:
 //     Zoltan Varga (vargaz@freemail.hu)
 //  Patrik Torstensson
+//  Aleksey Kliger (aleksey@xamarin.com)
 //
 // (C) 2003 Ximian, Inc.  http://www.ximian.com
+// Copyright (C) 2015 Xamarin, Inc. (http://www.xamarin.com)
 // 
 
 using NUnit.Framework;
@@ -210,6 +212,16 @@ namespace MonoTests.System
                }
        }
 
+       public class GenericIndexers<T, U>
+       {
+               // This class has two indexers that take different
+               // arguments.  GetProperties on all instances of this
+               // generic type should still have 2 properties, even
+               // if T and U are instantiated with the same types.
+               public T this[T t] { get { return t; } }
+               public U this[U u] { get { return u; } }
+       }
+
        public class FirstMethodBinder : Binder
        {
                public override MethodBase BindToMethod (BindingFlags bindingAttr, MethodBase [] match, ref object [] args,
@@ -423,8 +435,25 @@ namespace MonoTests.System
                public void GetProperties ()
                {
                        // Test hide-by-name-and-signature
-                       Assert.AreEqual (1, typeof (Derived2).GetProperties ().Length);
-                       Assert.AreEqual (typeof (Derived2), typeof (Derived2).GetProperties ()[0].DeclaringType);
+                       Assert.AreEqual (1, typeof (Derived2).GetProperties ().Length, "#1");
+                       Assert.AreEqual (typeof (Derived2), typeof (Derived2).GetProperties ()[0].DeclaringType, "#2");
+
+                       // For generics, hide-by-name-and-signature works on the unexpanded types. The
+                       // GenericIndexers<T,U> class has two indexers that take different arguments.
+                       // GetProperties on all instances of this generic type should still have 2 properties,
+                       // even if T and U are instantiated with the same types.
+
+                       var ps = typeof (GenericIndexers<int,int>).GetProperties ();
+                       Assert.AreEqual (2, ps.Length, "#3");
+                       for (int i = 0; i < ps.Length; i++) {
+                               var p = ps[i];
+
+                               var getterResultType = p.GetGetMethod ().ReturnType;
+
+                               var msg = String.Format ("#4-{0}", i);
+                               Assert.AreEqual (typeof (int), getterResultType, msg);
+                       }
+
                }
 
                [Test] // GetProperties (BindingFlags)
@@ -1525,6 +1554,27 @@ namespace MonoTests.System
                                                            typeof (long), new Type[0], null), "#2");
                }
 
+               [Test]
+               public void GetProperty9_Indexers ()
+               {
+
+                       var bindingFlags = BindingFlags.Public | BindingFlags.Instance;
+
+                       Type type1 = typeof (List<byte>);
+                       var p1 = type1.GetProperty ("Item", bindingFlags, null, typeof (byte), new Type[] { typeof (int) }, null);
+                       Assert.IsNotNull (p1, "#1");
+
+                       Type type2 = typeof (List<string>);
+                       var p2 = type2.GetProperty ("Item", bindingFlags, null, typeof (string), new Type[] { typeof (int) }, null);
+                       Assert.IsNotNull (p2, "#2");
+
+                       Type type3 = typeof (List<Type>);
+                       // result type not convertible, make sure we fail.
+                       var p3 = type3.GetProperty ("Item", bindingFlags, null, typeof (string) /*!*/,
+                                                   new Type[] { typeof (int) }, null);
+                       Assert.IsNull (p3, "#3");
+               }
+
                [StructLayout(LayoutKind.Explicit, Pack = 4, Size = 64)]
                public class Class1
                {
@@ -3901,6 +3951,43 @@ namespace MonoTests.System
                                }, false, false);
                        Assert.AreEqual (typeof (MyRealEnum).MakePointerType (), res, "#12");
 
+                       tname = typeof (MyRealEnum).FullName + "*&";
+                       res = Type.GetType (tname, name => {
+                                       return Assembly.Load (name);
+                               },(asm,name,ignore) => {
+                                       return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
+                               }, false, false);
+                       Assert.AreEqual (typeof (MyRealEnum).MakePointerType ().MakeByRefType(),
+                                        res, "#13");
+
+                       tname = typeof (MyRealEnum).FullName + "[,]&";
+                       res = Type.GetType (tname, name => {
+                                       return Assembly.Load (name);
+                               },(asm,name,ignore) => {
+                                       return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
+                               }, false, false);
+                       Assert.AreEqual (typeof (MyRealEnum).MakeArrayType (2).MakeByRefType (),
+                                        res, "#14");
+
+                       tname = typeof (MyRealEnum).FullName + "*[]";
+                       res = Type.GetType (tname, name => {
+                                       return Assembly.Load (name);
+                               },(asm,name,ignore) => {
+                                       return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
+                               }, false, false);
+                       Assert.AreEqual (typeof (MyRealEnum).MakePointerType().MakeArrayType(),
+                                        res, "#15");
+
+                       // not a very useful type, but ought to be parsed correctly
+                       tname = typeof (MyRealEnum).FullName + "[]**[]*&";
+                       res = Type.GetType (tname, name => {
+                                       return Assembly.Load (name);
+                               },(asm,name,ignore) => {
+                                       return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
+                               }, false, false);
+                       Assert.AreEqual (typeof (MyRealEnum).MakeArrayType().MakePointerType().MakePointerType().MakeArrayType().MakePointerType().MakeByRefType(),
+                                        res, "#16");
+
                        // assembly resolve without type resolve
                        res = Type.GetType ("System.String,mscorlib", delegate (AssemblyName aname) { return typeof (int).Assembly; }, null);
                        Assert.AreEqual (typeof (string), res);
@@ -3997,12 +4084,14 @@ namespace MonoTests.System
                [Test]
                public void NewGetTypeErrors () {
                        MustANE (null);
+                       MustAE ("!@#$%^&*");
                        MustAE (string.Format ("{0}[{1}&]", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
                        MustAE (string.Format ("{0}[{1}*]", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
                        MustAE (string.Format ("{0}&&", typeof (MyRealEnum).FullName));
                        MustAE (string.Format ("{0}&*", typeof (MyRealEnum).FullName));
                        MustAE (string.Format ("{0}&[{1}]", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
-
+                       MustAE (string.Format ("{0}[,", typeof (MyRealEnum).FullName));
+                       MustAE (string.Format ("{0}[*", typeof (MyRealEnum).FullName));
 
                        MustAE (string.Format ("{0}[[{1},", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
                        MustAE (string.Format ("{0}[[{1}]", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
@@ -4063,6 +4152,52 @@ namespace MonoTests.System
                        Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[System.Int32"), null, "#15");
                }
 
+#if !MONOTOUCH
+               [Test]
+               [Category ("AndroidNotWorking")] // requires symbol writer
+               public void FullNameGetTypeParseEscapeRoundtrip () // bug #26384
+               {
+                       var nm = new AssemblyName ("asm");
+                       var ab = AssemblyBuilder.DefineDynamicAssembly (nm,
+                                                                       AssemblyBuilderAccess.Run);
+                       var mb = ab.DefineDynamicModule("m", true);
+                       var tb = mb.DefineType ("NameSpace,+*&[]\\.Type,+*&[]\\",
+                                               TypeAttributes.Class | TypeAttributes.Public);
+
+                       var nestedTb = tb.DefineNestedType("Nested,+*&[]\\",
+                                                         TypeAttributes.Class | TypeAttributes.NestedPublic);
+
+                       var ty = tb.CreateType();
+
+                       var nestedTy = nestedTb.CreateType();
+
+                       var escapedNestedName =
+                               "NameSpace\\,\\+\\*\\&\\[\\]\\\\"
+                               + "."
+                               + "Type\\,\\+\\*\\&\\[\\]\\\\"
+                               + "+"
+                               + "Nested\\,\\+\\*\\&\\[\\]\\\\";
+
+                       Assert.AreEqual(escapedNestedName, nestedTy.FullName);
+
+                       var lookupNestedTy =
+                               Type.GetType(escapedNestedName + "," + nm.FullName,
+                                            asmName => {
+                                                    if (asmName.FullName.Equals(nm.FullName)) return ab;
+                                                    else return Assembly.Load (asmName);
+                                            },
+                                            (asm,name,ignore) => {
+                                                    if (asm == null)
+                                                            return Type.GetType(name, true, ignore);
+                                                    else return asm.GetType(name, true, ignore);
+                                            },
+                                            true,
+                                            false);
+                       Assert.AreEqual(nestedTy, lookupNestedTy);
+
+               }
+#endif
+
                public abstract class Stream : IDisposable
                {
                        public void Dispose ()
index 3f0c7cf21bb4110034d6016dc476ca80faeeb772..cdc717d6c9fe5b4083e49e9b4dcdca1bc1b2ea28 100644 (file)
     <Compile Include="System\TypedReference.cs" />\r
     <Compile Include="System\TypeInitializationException.cs" />\r
     <Compile Include="System\TypeLoadException.cs" />\r
+    <Compile Include="System\TypeIdentifier.cs" />\r
     <Compile Include="System\TypeSpec.cs" />\r
     <Compile Include="System\TypeUnloadedException.cs" />\r
     <Compile Include="System\UInt16.cs" />\r
index ecb0c6dc3b1c7012cf41da1c163edaf10a512e5f..a83ee4830e9100674159cec890015fecc49ae3d7 100644 (file)
     <Compile Include="System\TypedReference.cs" />\r
     <Compile Include="System\TypeInitializationException.cs" />\r
     <Compile Include="System\TypeLoadException.cs" />\r
+    <Compile Include="System\TypeIdentifier.cs" />\r
     <Compile Include="System\TypeSpec.cs" />\r
     <Compile Include="System\TypeUnloadedException.cs" />\r
     <Compile Include="System\UInt16.cs" />\r
diff --git a/mcs/class/corlib/corlib-net_4_5.csproj b/mcs/class/corlib/corlib-net_4_5.csproj
deleted file mode 100644 (file)
index 9d56645..0000000
+++ /dev/null
@@ -1,1644 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>612,618,1699</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>mscorlib</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>612,618,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;INSIDE_CORLIB;MONO_CULTURE_DATA;LIBC;FEATURE_PAL;GENERICS_WORK;FEATURE_LIST_PREDICATES;FEATURE_SERIALIZATION;FEATURE_ASCII;FEATURE_LATIN1;FEATURE_UTF7;FEATURE_UTF32;MONO_HYBRID_ENCODING_SUPPORT;FEATURE_ASYNC_IO;NEW_EXPERIMENTAL_ASYNC_IO;FEATURE_UTF32;FEATURE_EXCEPTIONDISPATCHINFO;FEATURE_CORRUPTING_EXCEPTIONS;FEATURE_EXCEPTION_NOTIFICATIONS;FEATURE_STRONGNAME_MIGRATION;FEATURE_USE_LCID;FEATURE_FUSION;FEATURE_CRYPTO;FEATURE_X509_SECURESTRINGS;FEATURE_SYNCHRONIZATIONCONTEXT;FEATURE_SYNCHRONIZATIONCONTEXT_WAIT;FEATURE_REMOTING;MONO_COM;FEATURE_COMINTEROP;FEATURE_ROLE_BASED_SECURITY;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;FEATURE_PAL;GENERICS_WORK;FEATURE_LIST_PREDICATES;FEATURE_SERIALIZATION;FEATURE_ASCII;FEATURE_LATIN1;FEATURE_UTF7;FEATURE_UTF32;MONO_HYBRID_ENCODING_SUPPORT;FEATURE_ASYNC_IO;NEW_EXPERIMENTAL_ASYNC_IO;FEATURE_UTF32;FEATURE_EXCEPTIONDISPATCHINFO;FEATURE_CORRUPTING_EXCEPTIONS;FEATURE_EXCEPTION_NOTIFICATIONS;FEATURE_STRONGNAME_MIGRATION;FEATURE_USE_LCID;FEATURE_FUSION;FEATURE_CRYPTO;FEATURE_X509_SECURESTRINGS;FEATURE_SYNCHRONIZATIONCONTEXT;FEATURE_SYNCHRONIZATIONCONTEXT_WAIT;FEATURE_REMOTING;MONO_COM;FEATURE_COMINTEROP;FEATURE_ROLE_BASED_SECURITY</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>612,618,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>INSIDE_CORLIB;MONO_CULTURE_DATA;LIBC;FEATURE_PAL;GENERICS_WORK;FEATURE_LIST_PREDICATES;FEATURE_SERIALIZATION;FEATURE_ASCII;FEATURE_LATIN1;FEATURE_UTF7;FEATURE_UTF32;MONO_HYBRID_ENCODING_SUPPORT;FEATURE_ASYNC_IO;NEW_EXPERIMENTAL_ASYNC_IO;FEATURE_UTF32;FEATURE_EXCEPTIONDISPATCHINFO;FEATURE_CORRUPTING_EXCEPTIONS;FEATURE_EXCEPTION_NOTIFICATIONS;FEATURE_STRONGNAME_MIGRATION;FEATURE_USE_LCID;FEATURE_FUSION;FEATURE_CRYPTO;FEATURE_X509_SECURESTRINGS;FEATURE_SYNCHRONIZATIONCONTEXT;FEATURE_SYNCHRONIZATIONCONTEXT_WAIT;FEATURE_REMOTING;MONO_COM;FEATURE_COMINTEROP;FEATURE_ROLE_BASED_SECURITY;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;FEATURE_PAL;GENERICS_WORK;FEATURE_LIST_PREDICATES;FEATURE_SERIALIZATION;FEATURE_ASCII;FEATURE_LATIN1;FEATURE_UTF7;FEATURE_UTF32;MONO_HYBRID_ENCODING_SUPPORT;FEATURE_ASYNC_IO;NEW_EXPERIMENTAL_ASYNC_IO;FEATURE_UTF32;FEATURE_EXCEPTIONDISPATCHINFO;FEATURE_CORRUPTING_EXCEPTIONS;FEATURE_EXCEPTION_NOTIFICATIONS;FEATURE_STRONGNAME_MIGRATION;FEATURE_USE_LCID;FEATURE_FUSION;FEATURE_CRYPTO;FEATURE_X509_SECURESTRINGS;FEATURE_SYNCHRONIZATIONCONTEXT;FEATURE_SYNCHRONIZATIONCONTEXT_WAIT;FEATURE_REMOTING;MONO_COM;FEATURE_COMINTEROP;FEATURE_ROLE_BASED_SECURITY</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\\system\runtime\reliability\criticalfinalizerobject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\\system\runtime\reliability\prepreparemethodattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\\system\runtime\reliability\reliabilitycontractattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\microsoft\win32\safehandles\safefilehandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\microsoft\win32\safehandles\saferegistryhandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\microsoft\win32\safehandles\safewaithandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\microsoft\win32\safehandles\win32safehandles.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\__filters.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\__hresults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\_localdatastore.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\_localdatastoremgr.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\accessviolationexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\action.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\activator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\AggregateException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\appdomainattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\appdomainunloadedexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\applicationexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\applicationid.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\argumentexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\argumentnullexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\argumentoutofrangeexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\arithmeticexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\arraysegment.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\arraytypemismatchexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\asynccallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\attribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\attributetargets.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\attributeusageattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\badimageformatexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\bitconverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\boolean.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\buffer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\byte.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\cannotunloadappdomainexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\char.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\charenumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\clscompliantattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\arraylist.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\bitarray.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\caseinsensitivecomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\caseinsensitivehashcodeprovider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\collectionbase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\comparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\compatiblecomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\Concurrent\ConcurrentDictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\Concurrent\ConcurrentQueue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\Concurrent\ConcurrentStack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\Concurrent\IProducerConsumerCollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\Concurrent\OrderablePartitioner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\Concurrent\Partitioner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\Concurrent\PartitionerStatic.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\dictionarybase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\dictionaryentry.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\emptyreadonlydictionaryinternal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\comparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\debugview.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\dictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\equalitycomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\icollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\icomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\idictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\ienumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\ienumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\iequalitycomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\ilist.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\ireadonlycollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\ireadonlydictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\ireadonlylist.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\keynotfoundexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\keyvaluepair.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\generic\list.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\hashtable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\icollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\icomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\idictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\idictionaryenumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\ienumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\ienumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\iequalitycomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\ihashcodeprovider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\ilist.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\istructuralcomparable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\istructuralequatable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\keyvaluepairs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\listdictionaryinternal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\objectmodel\collection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\objectmodel\keyedcollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\objectmodel\readonlycollection.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\objectmodel\readonlydictionary.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\queue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\readonlycollectionbase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\sortedlist.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\stack.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\collections\structuralcomparisons.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\consolecanceleventargs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\consolecolor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\consolekey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\consolekeyinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\consolemodifiers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\consolespecialkey.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\contextboundobject.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\contextmarshalexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\contextstaticattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\convert.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\datamisalignedexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\datetime.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\datetimekind.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\datetimeoffset.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\dayofweek.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\dbnull.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\decimal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\defaultbinder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\assert.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\assertfilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\assertfilters.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\codeanalysis\suppressmessageattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\conditionalattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\contracts\contracts.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\contracts\contractsbcl.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\debuggerattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\dividebyzeroexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\dllnotfoundexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\double.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\duplicatewaitobjectexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\empty.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\entrypointnotfoundexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\enum.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\eventargs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\eventhandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\executionengineexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\fieldaccessexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\flagsattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\formatexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\bidicategory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\calendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\calendaralgorithmtype.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\calendardata.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\calendarweekrule.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\charunicodeinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\chineselunisolarcalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\compareinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\culturenotfoundexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\culturetypes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\datetimeformat.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\datetimeformatinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\datetimeformatinfoscanner.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\datetimeparse.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\datetimestyles.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\daylighttime.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\digitshapes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\eastasianlunisolarcalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\globalizationassembly.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\gregoriancalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\gregoriancalendarhelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\gregoriancalendartypes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\hebrewcalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\hebrewnumber.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\hijricalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\japanesecalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\japaneselunisolarcalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\juliancalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\koreancalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\koreanlunisolarcalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\numberformatinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\numberstyles.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\Persiancalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\sortversion.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\stringinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\taiwancalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\taiwanlunisolarcalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\textelementenumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\textinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\thaibuddhistcalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\timespanformat.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\timespanparse.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\umalquracalendar.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\unicodecategory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\guid.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\iappdomain.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\iappdomainsetup.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\iasyncresult.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\icloneable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\icomparable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\iconvertible.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\icustomformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\idisposable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\iequatable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\iformatprovider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\iformattable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\indexoutofrangeexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\insufficientexecutionstackexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\insufficientmemoryexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\int16.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\int32.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\int64.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\invalidcastexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\invalidoperationexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\invalidprogramexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\invalidtimezoneexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\__error.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\__hresults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\binaryreader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\binarywriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\bufferedstream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\directorynotfoundexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\drivenotfoundexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\endofstreamexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\fileloadexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\filenotfoundexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\ioexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\memorystream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\pathtoolongexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\pinnedbuffermemorystream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\stream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\streamreader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\streamwriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\stringreader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\stringwriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\textreader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\textwriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\unmanagedmemoryaccessor.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\unmanagedmemorystream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\io\unmanagedmemorystreamwrapper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\iobservable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\iobserver.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\iprogress.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\iserviceobjectprovider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\Lazy.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\memberaccessexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\methodaccessexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\midpointrounding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\missingfieldexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\missingmemberexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\missingmethodexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\multicastnotsupportedexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\nonserializedattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\notfinitenumberexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\notimplementedexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\notsupportedexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\nullreferenceexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\number.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\objectdisposedexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\obsoleteattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\operationcanceledexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\outofmemoryexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\overflowexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\paramarrayattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\platformnotsupportedexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\progress.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\random.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\rankexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\ambiguousmatchexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\assemblyattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\assemblynameflags.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\assemblynameproxy.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\binder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\bindingflags.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\callingconventions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\CustomAttributeExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\defaultmemberattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\eventattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\fieldattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\genericparameterattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\icustomattributeprovider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\interfacemapping.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\introspectionextensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\invalidfiltercriteriaexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\ireflect.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\ireflectabletype.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\manifestresourceinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\mdimport.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\memberfilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\memberinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\memberinfoserializationholder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\membertypes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\methodattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\methodbase.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\methodimplattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\missing.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\obfuscateassemblyattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\obfuscationattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\parameterattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\parametermodifier.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\pointer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\propertyattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\reflectioncontext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\resourceattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\RuntimeReflectionExtensions.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\typeattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\typedelegator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\typefilter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\reflection\typeinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resid.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\__fastresourcecomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\__hresults.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\filebasedresourcegroveler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\iresourcegroveler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\iresourcereader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\iresourcewriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\looselylinkedresourcereference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\manifestbasedresourcegroveler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\missingmanifestresourceexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\missingsatelliteassemblyexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\neutralresourceslanguageattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\resourcefallbackmanager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\resourcemanager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\resourcereader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\resourceset.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\resourcetypecode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\resourcewriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\runtimeresourceset.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\satellitecontractversionattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\resources\ultimateresourcefallbacklocation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\rttype.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\accessedthroughpropertyattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\assemblyattributesgohere.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\assemblysettingattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\AsyncMethodBuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\AsyncStateMachineAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\CallerFilePathAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\CallerLineNumberAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\CallerMemberNameAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\callingconvention.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\compilationrelaxations.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\compilergeneratedattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\compilerglobalscopeattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\compilermarshaloverride.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\customconstantattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\datetimeconstantattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\decimalconstantattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\decoratednameattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\discardableattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\extensionattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\fixedaddressvaluetypeattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\fixedbufferattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\hascopysemanticsattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\IAsyncStateMachine.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\idispatchconstantattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\indexernameattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\INotifyCompletion.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\internalsvisibletoattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\isboxed.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\isbyvalue.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\isconst.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\iscopyconstructed.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\isexplicitlydereferenced.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\isimplicitlydereferenced.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\isjitintrinsic.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\islong.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\ispinned.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\issignunspecifiedbyte.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\isudtreturn.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\isvolatile.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\IteratorStateMachineAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\iunknownconstantattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\methodimplattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\nativecppclassattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\ReferenceAssemblyAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\requiredattributeattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\RuntimeCompatibilityAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\RuntimeWrappedException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\scopelessenumattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\specialnameattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\StateMachineAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\suppressildasmattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\suppressmergecheckattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\TaskAwaiter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\typedependencyattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\TypeForwardedFromAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\TypeForwardedToAttribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\unsafevaluetypeattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\compilerservices\YieldAwaitable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\exceptionservices\corruptingexceptioncommon.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\exceptionservices\exceptionnotification.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\exceptionservices\exceptionservicescommon.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\attributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\ibindctx.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\iconnectionpoint.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\iconnectionpointcontainer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\ienumconnectionpoints.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\ienumconnections.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\ienumerable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\ienumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\ienummoniker.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\ienumstring.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\ienumvariant.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\iexpando.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\imoniker.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\ipersistfile.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\ireflect.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\irunningobjecttable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\istream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\itypecomp.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\itypeinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\itypeinfo2.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\itypelib.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ComTypes\itypelib2.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\expando\iexpando.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\safehandle.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\interopservices\ucomienumconnections.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\NgenServicingAttributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\remoting\callcontext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\deserializationeventhandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatterconverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\binary\binarycommonclasses.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\binary\binaryconverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\binary\binaryenums.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\binary\binaryformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\binary\binaryformatterwriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\binary\binarymethodmessage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\binary\binaryobjectinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\binary\binaryobjectreader.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\binary\binaryobjectwriter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\binary\binaryparser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\binary\binaryutilclasses.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\commonenums.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\ifieldinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\isoapmessage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\sertrace.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\soapfault.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatters\soapmessage.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\formatterservices.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\ideserializationcallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\iformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\iformatterconverter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\iobjectreference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\iserializable.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\iserializationsurrogate.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\isurrogateselector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\memberholder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\objectclonehelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\objectidgenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\objectmanager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\safeserializationmanager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\serializationattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\serializationbinder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\serializationeventscache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\serializationexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\serializationfieldinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\serializationinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\serializationinfoenumerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\serializationobjectmanager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\streamingcontext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\surrogateselector.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\serialization\valuetypefixupinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\binarycompatibility.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\componentguaranteesattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\multitargetinghelpers.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\resourceattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\targetframeworkattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\targetframeworkid.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\sbyte.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\attributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\claims\Claim.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\claims\ClaimsIdentity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\claims\ClaimsPrincipal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\claims\ClaimTypes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\claims\ClaimValueTypes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\claims\RoleClaimProvider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\aes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\asymmetricalgorithm.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\asymmetrickeyexchangedeformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\asymmetrickeyexchangeformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\asymmetricsignaturedeformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\asymmetricsignatureformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\base64transforms.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\crypto.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\cryptoapitransform.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\cryptostream.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\derivebytes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\des.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\descryptoserviceprovider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\dsa.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\dsasignaturedeformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\dsasignatureformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\hashalgorithm.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\hmac.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\hmacmd5.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\hmacripemd160.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\hmacsha1.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\hmacsha256.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\hmacsha384.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\hmacsha512.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\icryptotransform.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\keyedhashalgorithm.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\mactripledes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\maskgenerationmethod.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\md5.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\passwordderivebytes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\pkcs1maskgenerationmethod.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\randomnumbergenerator.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rc2.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rc2cryptoserviceprovider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rfc2898derivebytes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rijndael.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rijndaelmanaged.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rijndaelmanagedtransform.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\ripemd160.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\ripemd160managed.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rsa.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rsaoaepkeyexchangedeformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rsaoaepkeyexchangeformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rsapkcs1keyexchangedeformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rsapkcs1keyexchangeformatter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\sha1.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\sha1managed.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\sha256.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\sha256managed.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\sha384.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\sha384managed.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\sha512.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\sha512managed.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\signaturedescription.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\symmetricalgorithm.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\tripledes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\tripledescryptoserviceprovider.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\utils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\x509certificates\x509utils.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\principal\genericidentity.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\securitycontext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\securitydocument.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\util\hex.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\util\parser.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\util\tokenizer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\serializableattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\single.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\stackoverflowexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\string.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\stringcomparer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\stringfreezingattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\systemexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\asciiencoding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\codepageencoding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\decoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\decoderbestfitfallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\decoderexceptionfallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\decoderfallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\decodernls.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\decoderreplacementfallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\encoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\encoderbestfitfallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\encoderexceptionfallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\encoderfallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\encodernls.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\encoderreplacementfallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\encoding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\encodinginfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\mlangcodepageencoding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\stringbuilder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\stringbuildercache.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\surrogateencoder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\unicodeencoding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\utf32encoding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\utf7encoding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\text\utf8encoding.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threadattributes.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\abandonedmutexexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\apartmentstate.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\autoresetevent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\CancellationToken.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\CancellationTokenRegistration.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\CancellationTokenSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\CountdownEvent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\eventresetmode.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\executioncontext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\LazyInitializer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\lockrecursionexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\manualresetevent.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\ManualResetEventSlim.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\parameterizedthreadstart.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\semaphorefullexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\SemaphoreSlim.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\sendorpostcallback.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\SpinLock.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\SpinWait.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\synchronizationcontext.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\synchronizationlockexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\BeginEndAwaitableAdapter.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\ConcurrentExclusiveSchedulerPair.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\Future.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\FutureFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\Parallel.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\ParallelLoopState.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\ParallelRangeManager.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\ProducerConsumerQueues.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\Task.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\TaskCanceledException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\TaskCompletionSource.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\TaskContinuation.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\TaskExceptionHolder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\TaskFactory.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\TaskScheduler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\TaskSchedulerException.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\TaskToApm.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\ThreadPoolTaskScheduler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\thread.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\threadabortexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\threadinterruptedexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\ThreadLocal.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\threadpool.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\threadpriority.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\threadstart.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\threadstartexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\threadstate.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\threadstateexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\timeout.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\waithandlecannotbeopenedexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threadstaticattribute.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\throwhelper.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\timeoutexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\timespan.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\timezoneinfo.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\timezonenotfoundexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\tuple.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\type.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\typeaccessexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\typedreference.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\typeinitializationexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\typeloadexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\typeunloadedexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\uint16.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\uint32.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\uint64.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\unauthorizedaccessexception.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\unhandledexceptioneventargs.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\unhandledexceptioneventhandler.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\unityserializationholder.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\unsafecharbuffer.cs" />\r
-    <Compile Include="..\..\..\external\referencesource\mscorlib\system\version.cs" />\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\Mono.Parallel\Mono.Threading\AtomicBoolean.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Math.Prime\ConfidenceFactor.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Math.Prime\PrimalityTests.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Math\BigInteger.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\ARC4Managed.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoTools.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2Managed.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4Managed.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS1.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS8.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RC4.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RSAManaged.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\SymmetricTransform.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\PKCS12.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\X501Name.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Certificate.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CertificateCollection.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Chain.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\X509ChainStatusFlags.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CRL.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extension.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extensions.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Store.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\X509StoreManager.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Stores.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security.X509\X520Attributes.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security\ASN1.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security\ASN1Convert.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security\BitConverterLE.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security\PKCS7.cs" />\r
-    <Compile Include="..\Mono.Security\Mono.Security\StrongName.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Microsoft.Win32\IRegistryApi.cs" />\r
-    <Compile Include="Microsoft.Win32\Registry.cs" />\r
-    <Compile Include="Microsoft.Win32\RegistryHive.cs" />\r
-    <Compile Include="Microsoft.Win32\RegistryKey.cs" />\r
-    <Compile Include="Microsoft.Win32\RegistryKeyPermissionCheck.cs" />\r
-    <Compile Include="Microsoft.Win32\RegistryOptions.cs" />\r
-    <Compile Include="Microsoft.Win32\RegistryValueKind.cs" />\r
-    <Compile Include="Microsoft.Win32\RegistryValueOptions.cs" />\r
-    <Compile Include="Microsoft.Win32\RegistryView.cs" />\r
-    <Compile Include="Microsoft.Win32\UnixRegistryApi.cs" />\r
-    <Compile Include="Microsoft.Win32\Win32RegistryApi.cs" />\r
-    <Compile Include="Microsoft.Win32\Win32ResultCode.cs" />\r
-    <Compile Include="Mono.Globalization.Unicode\CodePointIndexer.cs" />\r
-    <Compile Include="Mono.Globalization.Unicode\MSCompatUnicodeTable.cs" />\r
-    <Compile Include="Mono.Globalization.Unicode\MSCompatUnicodeTableUtil.cs" />\r
-    <Compile Include="Mono.Globalization.Unicode\Normalization.cs" />\r
-    <Compile Include="Mono.Globalization.Unicode\NormalizationTableUtil.cs" />\r
-    <Compile Include="Mono.Globalization.Unicode\SimpleCollator.cs" />\r
-    <Compile Include="Mono.Globalization.Unicode\SortKey.cs" />\r
-    <Compile Include="Mono.Globalization.Unicode\SortKeyBuffer.cs" />\r
-    <Compile Include="Mono.Interop\ComInteropProxy.cs" />\r
-    <Compile Include="Mono.Interop\IDispatch.cs" />\r
-    <Compile Include="Mono.Interop\IUnknown.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\DSAManaged.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\HMACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\MACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security\StrongNameManager.cs" />\r
-    <Compile Include="Mono.Security\Uri.cs" />\r
-    <Compile Include="Mono.Xml\SecurityParser.cs" />\r
-    <Compile Include="Mono.Xml\SmallXmlParser.cs" />\r
-    <Compile Include="Mono\DataConverter.cs" />\r
-    <Compile Include="Mono\Runtime.cs" />\r
-    <Compile Include="ReferenceSources\__ConsoleStream.cs" />\r
-    <Compile Include="ReferenceSources\AppDomain.cs" />\r
-    <Compile Include="ReferenceSources\Array.cs" />\r
-    <Compile Include="ReferenceSources\BCLDebug.cs" />\r
-    <Compile Include="ReferenceSources\Buffer.cs" />\r
-    <Compile Include="ReferenceSources\CalendarData.cs" />\r
-    <Compile Include="ReferenceSources\CLRConfig.cs" />\r
-    <Compile Include="ReferenceSources\CompareInfo.cs" />\r
-    <Compile Include="ReferenceSources\CompatibilitySwitches.cs" />\r
-    <Compile Include="ReferenceSources\CultureData.cs" />\r
-    <Compile Include="ReferenceSources\DefaultBinder.cs" />\r
-    <Compile Include="ReferenceSources\EncodingDataItem.cs" />\r
-    <Compile Include="ReferenceSources\EncodingTable.cs" />\r
-    <Compile Include="ReferenceSources\Environment.cs" />\r
-    <Compile Include="ReferenceSources\HashHelpers.cs" />\r
-    <Compile Include="ReferenceSources\JitHelpers.cs" />\r
-    <Compile Include="ReferenceSources\MethodBase.cs" />\r
-    <Compile Include="ReferenceSources\ParseNumbers.cs" />\r
-    <Compile Include="ReferenceSources\RemotingFieldCachedData.cs" />\r
-    <Compile Include="ReferenceSources\RuntimeHandles.cs" />\r
-    <Compile Include="ReferenceSources\RuntimeType.cs" />\r
-    <Compile Include="ReferenceSources\SecurityContext.cs" />\r
-    <Compile Include="ReferenceSources\SharedStatics.cs" />\r
-    <Compile Include="ReferenceSources\String.cs" />\r
-    <Compile Include="ReferenceSources\TextInfo.cs" />\r
-    <Compile Include="ReferenceSources\Type.cs" />\r
-    <Compile Include="ReferenceSources\TypeBuilderInstantiation.cs" />\r
-    <Compile Include="ReferenceSources\TypeNameParser.cs" />\r
-    <Compile Include="ReferenceSources\win32native.cs" />\r
-    <Compile Include="System.Configuration.Assemblies\AssemblyHash.cs" />\r
-    <Compile Include="System.Configuration.Assemblies\AssemblyHashAlgorithm.cs" />\r
-    <Compile Include="System.Configuration.Assemblies\AssemblyVersionCompatibility.cs" />\r
-    <Compile Include="System.Configuration.Assemblies\ProcessorID.cs" />\r
-    <Compile Include="System.Deployment.Internal\InternalActivationContextHelper.cs" />\r
-    <Compile Include="System.Deployment.Internal\InternalApplicationIdentityHelper.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\ISymbolBinder.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\ISymbolBinder1.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\ISymbolDocument.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\ISymbolDocumentWriter.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\ISymbolMethod.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\ISymbolNamespace.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\ISymbolReader.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\ISymbolScope.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\ISymbolVariable.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\ISymbolWriter.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\SymAddressKind.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\SymbolToken.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\SymDocumentType.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\SymLanguageType.cs" />\r
-    <Compile Include="System.Diagnostics.SymbolStore\SymLanguageVendor.cs" />\r
-    <Compile Include="System.Diagnostics.Tracing\EventAttribute.cs" />\r
-    <Compile Include="System.Diagnostics.Tracing\EventCommand.cs" />\r
-    <Compile Include="System.Diagnostics.Tracing\EventCommandEventArgs.cs" />\r
-    <Compile Include="System.Diagnostics.Tracing\EventKeywords.cs" />\r
-    <Compile Include="System.Diagnostics.Tracing\EventLevel.cs" />\r
-    <Compile Include="System.Diagnostics.Tracing\EventSource.cs" />\r
-    <Compile Include="System.Diagnostics.Tracing\EventSourceAttribute.cs" />\r
-    <Compile Include="System.Diagnostics.Tracing\NonEventAttribute.cs" />\r
-    <Compile Include="System.Diagnostics\Debugger.cs" />\r
-    <Compile Include="System.Diagnostics\StackFrame.cs" />\r
-    <Compile Include="System.Diagnostics\StackTrace.cs" />\r
-    <Compile Include="System.Globalization\CultureInfo.cs" />\r
-    <Compile Include="System.Globalization\IdnMapping.cs" />\r
-    <Compile Include="System.Globalization\RegionInfo.cs" />\r
-    <Compile Include="System.Globalization\RegionInfo.MonoTouch.cs" />\r
-    <Compile Include="System.IO.IsolatedStorage\INormalizeForIsolatedStorage.cs" />\r
-    <Compile Include="System.IO.IsolatedStorage\IsolatedStorage.cs" />\r
-    <Compile Include="System.IO.IsolatedStorage\IsolatedStorageException.cs" />\r
-    <Compile Include="System.IO.IsolatedStorage\IsolatedStorageFile.cs" />\r
-    <Compile Include="System.IO.IsolatedStorage\IsolatedStorageFileEnumerator.cs" />\r
-    <Compile Include="System.IO.IsolatedStorage\IsolatedStorageFileStream.cs" />\r
-    <Compile Include="System.IO.IsolatedStorage\IsolatedStorageScope.cs" />\r
-    <Compile Include="System.IO.IsolatedStorage\IsolatedStorageSecurityOptions.cs" />\r
-    <Compile Include="System.IO.IsolatedStorage\IsolatedStorageSecurityState.cs" />\r
-    <Compile Include="System.IO\Directory.cs" />\r
-    <Compile Include="System.IO\DirectoryInfo.cs" />\r
-    <Compile Include="System.IO\DriveInfo.cs" />\r
-    <Compile Include="System.IO\DriveType.cs" />\r
-    <Compile Include="System.IO\File.cs" />\r
-    <Compile Include="System.IO\FileAccess.cs" />\r
-    <Compile Include="System.IO\FileAttributes.cs" />\r
-    <Compile Include="System.IO\FileInfo.cs" />\r
-    <Compile Include="System.IO\FileMode.cs" />\r
-    <Compile Include="System.IO\FileOptions.cs" />\r
-    <Compile Include="System.IO\FileShare.cs" />\r
-    <Compile Include="System.IO\FileStream.cs" />\r
-    <Compile Include="System.IO\FileStreamAsyncResult.cs" />\r
-    <Compile Include="System.IO\FileSystemInfo.cs" />\r
-    <Compile Include="System.IO\HGlobalUnmanagedMemoryStream.cs" />\r
-    <Compile Include="System.IO\LogcatTextWriter.cs" />\r
-    <Compile Include="System.IO\MonoFileType.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
-    <Compile Include="System.IO\MonoIOStat.cs" />\r
-    <Compile Include="System.IO\Path.cs" />\r
-    <Compile Include="System.IO\SearchOption.cs" />\r
-    <Compile Include="System.IO\SearchPattern.cs" />\r
-    <Compile Include="System.IO\SeekOrigin.cs" />\r
-    <Compile Include="System.IO\UnexceptionalStreamReader.cs" />\r
-    <Compile Include="System.IO\UnexceptionalStreamWriter.cs" />\r
-    <Compile Include="System.Reflection.Emit\AssemblyBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\AssemblyBuilderAccess.cs" />\r
-    <Compile Include="System.Reflection.Emit\ConstructorBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\ConstructorOnTypeBuilderInst.cs" />\r
-    <Compile Include="System.Reflection.Emit\CustomAttributeBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\DerivedTypes.cs" />\r
-    <Compile Include="System.Reflection.Emit\DynamicILInfo.cs" />\r
-    <Compile Include="System.Reflection.Emit\DynamicMethod.cs" />\r
-    <Compile Include="System.Reflection.Emit\EnumBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\EventBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\EventOnTypeBuilderInst.cs" />\r
-    <Compile Include="System.Reflection.Emit\EventToken.cs" />\r
-    <Compile Include="System.Reflection.Emit\FieldBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\FieldOnTypeBuilderInst.cs" />\r
-    <Compile Include="System.Reflection.Emit\FieldToken.cs" />\r
-    <Compile Include="System.Reflection.Emit\FlowControl.cs" />\r
-    <Compile Include="System.Reflection.Emit\GenericTypeParameterBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\ILGenerator.cs" />\r
-    <Compile Include="System.Reflection.Emit\Label.cs" />\r
-    <Compile Include="System.Reflection.Emit\LocalBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\MethodBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\MethodOnTypeBuilderInst.cs" />\r
-    <Compile Include="System.Reflection.Emit\MethodRental.cs" />\r
-    <Compile Include="System.Reflection.Emit\MethodToken.cs" />\r
-    <Compile Include="System.Reflection.Emit\ModuleBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\MonoArrayMethod.cs" />\r
-    <Compile Include="System.Reflection.Emit\OpCode.cs" />\r
-    <Compile Include="System.Reflection.Emit\OpCodeNames.cs" />\r
-    <Compile Include="System.Reflection.Emit\OpCodes.cs" />\r
-    <Compile Include="System.Reflection.Emit\OpCodeType.cs" />\r
-    <Compile Include="System.Reflection.Emit\OperandType.cs" />\r
-    <Compile Include="System.Reflection.Emit\PackingSize.cs" />\r
-    <Compile Include="System.Reflection.Emit\ParameterBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\ParameterToken.cs" />\r
-    <Compile Include="System.Reflection.Emit\PEFileKinds.cs" />\r
-    <Compile Include="System.Reflection.Emit\PropertyBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\PropertyOnTypeBuilderInst.cs" />\r
-    <Compile Include="System.Reflection.Emit\PropertyToken.cs" />\r
-    <Compile Include="System.Reflection.Emit\SignatureHelper.cs" />\r
-    <Compile Include="System.Reflection.Emit\SignatureToken.cs" />\r
-    <Compile Include="System.Reflection.Emit\StackBehaviour.cs" />\r
-    <Compile Include="System.Reflection.Emit\StringToken.cs" />\r
-    <Compile Include="System.Reflection.Emit\TypeBuilder.cs" />\r
-    <Compile Include="System.Reflection.Emit\TypeToken.cs" />\r
-    <Compile Include="System.Reflection.Emit\UnmanagedMarshal.cs" />\r
-    <Compile Include="System.Reflection\Assembly.cs" />\r
-    <Compile Include="System.Reflection\AssemblyName.cs" />\r
-    <Compile Include="System.Reflection\ConstructorInfo.cs" />\r
-    <Compile Include="System.Reflection\CustomAttributeData.cs" />\r
-    <Compile Include="System.Reflection\CustomAttributeFormatException.cs" />\r
-    <Compile Include="System.Reflection\CustomAttributeNamedArgument.cs" />\r
-    <Compile Include="System.Reflection\CustomAttributeTypedArgument.cs" />\r
-    <Compile Include="System.Reflection\EventInfo.cs" />\r
-    <Compile Include="System.Reflection\ExceptionHandlingClause.cs" />\r
-    <Compile Include="System.Reflection\ExceptionHandlingClauseOptions.cs" />\r
-    <Compile Include="System.Reflection\FieldInfo.cs" />\r
-    <Compile Include="System.Reflection\ImageFileMachine.cs" />\r
-    <Compile Include="System.Reflection\LocalVariableInfo.cs" />\r
-    <Compile Include="System.Reflection\MethodBody.cs" />\r
-    <Compile Include="System.Reflection\MethodInfo.cs" />\r
-    <Compile Include="System.Reflection\Module.cs" />\r
-    <Compile Include="System.Reflection\ModuleResolveEventHandler.cs" />\r
-    <Compile Include="System.Reflection\MonoAssembly.cs" />\r
-    <Compile Include="System.Reflection\MonoEvent.cs" />\r
-    <Compile Include="System.Reflection\MonoField.cs" />\r
-    <Compile Include="System.Reflection\MonoGenericClass.cs" />\r
-    <Compile Include="System.Reflection\MonoGenericMethod.cs" />\r
-    <Compile Include="System.Reflection\MonoMethod.cs" />\r
-    <Compile Include="System.Reflection\MonoModule.cs" />\r
-    <Compile Include="System.Reflection\MonoParameterInfo.cs" />\r
-    <Compile Include="System.Reflection\MonoProperty.cs" />\r
-    <Compile Include="System.Reflection\ParameterInfo.cs" />\r
-    <Compile Include="System.Reflection\PortableExecutableKinds.cs" />\r
-    <Compile Include="System.Reflection\PropertyInfo.cs" />\r
-    <Compile Include="System.Reflection\ReflectionTypeLoadException.cs" />\r
-    <Compile Include="System.Reflection\StrongNameKeyPair.cs" />\r
-    <Compile Include="System.Reflection\TargetException.cs" />\r
-    <Compile Include="System.Reflection\TargetInvocationException.cs" />\r
-    <Compile Include="System.Reflection\TargetParameterCountException.cs" />\r
-    <Compile Include="System.Resources\Win32Resources.cs" />\r
-    <Compile Include="System.Runtime.CompilerServices\ConditionalWeakTable.cs" />\r
-    <Compile Include="System.Runtime.CompilerServices\RuntimeHelpers.cs" />\r
-    <Compile Include="System.Runtime.Hosting\ActivationArguments.cs" />\r
-    <Compile Include="System.Runtime.Hosting\ApplicationActivator.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.WindowsRuntime\DefaultInterfaceAttribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.WindowsRuntime\DesignerNamespaceResolveEventArgs.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.WindowsRuntime\EventRegistrationToken.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.WindowsRuntime\EventRegistrationTokenTable.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.WindowsRuntime\IActivationFactory.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.WindowsRuntime\InterfaceImplementedInVersionAttribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.WindowsRuntime\NamespaceResolveEventArgs.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.WindowsRuntime\ReadOnlyArrayAttribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.WindowsRuntime\ReturnValueNameAttribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.WindowsRuntime\WindowsRuntimeMarshal.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.WindowsRuntime\WindowsRuntimeMetadata.cs" />\r
-    <Compile Include="System.Runtime.InteropServices.WindowsRuntime\WriteOnlyArrayAttribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_Activator.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_Assembly.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_AssemblyBuilder.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_AssemblyName.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_Attribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_ConstructorBuilder.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_ConstructorInfo.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_CustomAttributeBuilder.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_EnumBuilder.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_EventBuilder.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_EventInfo.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_Exception.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_FieldBuilder.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_FieldInfo.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_ILGenerator.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_LocalBuilder.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_MemberInfo.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_MethodBase.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_MethodBuilder.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_MethodInfo.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_MethodRental.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_Module.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_ModuleBuilder.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_ParameterBuilder.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_ParameterInfo.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_PropertyBuilder.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_PropertyInfo.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_SignatureHelper.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_Thread.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_Type.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\_TypeBuilder.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ArrayWithOffset.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\AssemblyRegistrationFlags.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\BIND_OPTS.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\BINDPTR.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\BStrWrapper.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\CALLCONV.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\CallingConvention.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\CharSet.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\COMException.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ComMemberType.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\CriticalHandle.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\CurrencyWrapper.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\DESCKIND.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\DispatchWrapper.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\DISPPARAMS.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ELEMDESC.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ErrorWrapper.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\EXCEPINFO.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ExporterEventKind.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ExtensibleClassFactory.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ExternalException.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\FILETIME.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\FUNCDESC.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\FUNCFLAGS.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\FUNCKIND.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\GCHandle.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\GCHandleType.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\HandleRef.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ICustomAdapter.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ICustomFactory.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ICustomMarshaler.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\IDLDESC.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\IDLFLAG.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\IErrorInfo.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\IMPLTYPEFLAGS.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ImporterEventKind.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\InvalidComObjectException.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\InvalidOleVariantTypeException.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\INVOKEKIND.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\IRegistrationServices.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ITypeLibConverter.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ITypeLibExporterNameProvider.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ITypeLibExporterNotifySink.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ITypeLibImporterNotifySink.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\LayoutKind.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\LIBFLAGS.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ManagedErrorInfo.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\Marshal.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\MarshalAsAttribute.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\MarshalDirectiveException.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\ObjectCreationDelegate.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\PARAMDESC.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\PARAMFLAG.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\RegistrationClassContext.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\RegistrationConnectionType.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\RegistrationServices.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\RuntimeEnvironment.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\SafeArrayRankMismatchException.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\SafeArrayTypeMismatchException.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\SafeBuffer.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\SafeHandle.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\SEHException.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\STATSTG.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\SYSKIND.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\TYPEATTR.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\TYPEDESC.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\TYPEFLAGS.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\TYPEKIND.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\TYPELIBATTR.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\TypeLibConverter.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\TypeLibExporterFlags.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\TypeLibImporterFlags.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMIBindCtx.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMIConnectionPoint.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMIConnectionPointContainer.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMIEnumConnectionPoints.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMIEnumMoniker.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMIEnumString.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMIEnumVARIANT.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMIMoniker.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMIPersistFile.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMIRunningObjectTable.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMIStream.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMITypeComp.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMITypeInfo.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UCOMITypeLib.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\UnknownWrapper.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\VARDESC.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\VARFLAGS.cs" />\r
-    <Compile Include="System.Runtime.InteropServices\VariantWrapper.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Activation\ActivationServices.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Activation\ActivatorLevel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Activation\AppDomainLevelActivator.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Activation\ConstructionLevelActivator.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Activation\ContextLevelActivator.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Activation\IActivator.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Activation\IConstructionCallMessage.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Activation\IConstructionReturnMessage.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Activation\RemoteActivationAttribute.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Activation\RemoteActivator.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Activation\UrlAttribute.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\AggregateDictionary.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\BaseChannelObjectWithProperties.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\BaseChannelSinkWithProperties.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\BaseChannelWithProperties.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\ChannelDataStore.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\ChannelServices.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\ChannelSinkStackEntry.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\ClientChannelSinkStack.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\CrossAppDomainChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IChannelDataStore.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IChannelReceiver.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IChannelReceiverHook.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IChannelSender.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IChannelSinkBase.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IClientChannelSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IClientChannelSinkProvider.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IClientChannelSinkStack.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IClientFormatterSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IClientFormatterSinkProvider.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IClientResponseChannelSinkStack.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\ISecurableChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IServerChannelSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IServerChannelSinkProvider.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IServerChannelSinkStack.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IServerFormatterSinkProvider.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\IServerResponseChannelSinkStack.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\ITransportHeaders.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\ServerChannelSinkStack.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\ServerDispatchSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\ServerDispatchSinkProvider.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\ServerProcessing.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\SinkProviderData.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Channels\TransportHeaders.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\Context.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\ContextAttribute.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\ContextProperty.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\CrossContextChannel.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\CrossContextDelegate.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\IContextAttribute.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\IContextProperty.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\IContextPropertyActivator.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\IContributeClientContextSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\IContributeDynamicSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\IContributeEnvoySink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\IContributeObjectSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\IContributeServerContextSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\IDynamicMessageSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\IDynamicProperty.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Contexts\SynchronizationAttribute.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Lifetime\ClientSponsor.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Lifetime\ILease.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Lifetime\ISponsor.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Lifetime\Lease.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Lifetime\LeaseManager.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Lifetime\LeaseSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Lifetime\LeaseState.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Lifetime\LifetimeServices.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\ArgInfo.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\AsyncResult.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\CADMessages.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\ClientContextTerminatorSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\ConstructionCall.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\ConstructionCallDictionary.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\ConstructionResponse.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\EnvoyTerminatorSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\ErrorMessage.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\Header.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\HeaderHandler.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\IInternalMessage.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\IMessage.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\IMessageCtrl.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\IMessageSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\IMethodCallMessage.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\IMethodMessage.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\IMethodReturnMessage.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\InternalMessageWrapper.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\IRemotingFormatter.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\ISerializationRootObject.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\MessageSurrogateFilter.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\MethodCall.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\MethodCallDictionary.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\MethodCallMessageWrapper.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\MethodDictionary.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\MethodResponse.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\MethodReturnDictionary.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\MethodReturnMessageWrapper.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\MonoMethodMessage.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\OneWayAttribute.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\RemotingSurrogate.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\RemotingSurrogateSelector.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\ReturnMessage.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\ServerContextTerminatorSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\ServerObjectTerminatorSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Messaging\StackBuilderSink.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\ISoapXsd.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapAnyUri.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapBase64Binary.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapDate.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapDateTime.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapDay.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapDuration.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapEntities.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapEntity.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapHelper.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapHexBinary.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapId.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapIdref.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapIdrefs.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapInteger.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapLanguage.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapMonth.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapMonthDay.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapName.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapNcName.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapNegativeInteger.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapNmtoken.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapNmtokens.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapNonNegativeInteger.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapNonPositiveInteger.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapNormalizedString.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapNotation.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapPositiveInteger.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapQName.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapTime.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapToken.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapYear.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata.W3cXsd2001\SoapYearMonth.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata\SoapAttribute.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata\SoapFieldAttribute.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata\SoapMethodAttribute.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata\SoapOption.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata\SoapParameterAttribute.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata\SoapTypeAttribute.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Metadata\XmlFieldOrderOption.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Proxies\ProxyAttribute.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Proxies\RealProxy.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Proxies\RemotingProxy.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Services\EnterpriseServicesHelper.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Services\ITrackingHandler.cs" />\r
-    <Compile Include="System.Runtime.Remoting.Services\TrackingServices.cs" />\r
-    <Compile Include="System.Runtime.Remoting\ActivatedClientTypeEntry.cs" />\r
-    <Compile Include="System.Runtime.Remoting\ActivatedServiceTypeEntry.cs" />\r
-    <Compile Include="System.Runtime.Remoting\CustomErrorsModes.cs" />\r
-    <Compile Include="System.Runtime.Remoting\EnvoyInfo.cs" />\r
-    <Compile Include="System.Runtime.Remoting\IChannelInfo.cs" />\r
-    <Compile Include="System.Runtime.Remoting\Identity.cs" />\r
-    <Compile Include="System.Runtime.Remoting\IEnvoyInfo.cs" />\r
-    <Compile Include="System.Runtime.Remoting\InternalRemotingServices.cs" />\r
-    <Compile Include="System.Runtime.Remoting\IObjectHandle.cs" />\r
-    <Compile Include="System.Runtime.Remoting\IRemotingTypeInfo.cs" />\r
-    <Compile Include="System.Runtime.Remoting\ObjectHandle.cs" />\r
-    <Compile Include="System.Runtime.Remoting\ObjRef.cs" />\r
-    <Compile Include="System.Runtime.Remoting\RemotingConfiguration.cs" />\r
-    <Compile Include="System.Runtime.Remoting\RemotingException.cs" />\r
-    <Compile Include="System.Runtime.Remoting\RemotingServices.cs" />\r
-    <Compile Include="System.Runtime.Remoting\RemotingTimeoutException.cs" />\r
-    <Compile Include="System.Runtime.Remoting\ServerException.cs" />\r
-    <Compile Include="System.Runtime.Remoting\ServerIdentity.cs" />\r
-    <Compile Include="System.Runtime.Remoting\SoapServices.cs" />\r
-    <Compile Include="System.Runtime.Remoting\TypeEntry.cs" />\r
-    <Compile Include="System.Runtime.Remoting\TypeInfo.cs" />\r
-    <Compile Include="System.Runtime.Remoting\WellKnownClientTypeEntry.cs" />\r
-    <Compile Include="System.Runtime.Remoting\WellKnownObjectMode.cs" />\r
-    <Compile Include="System.Runtime.Remoting\WellKnownServiceTypeEntry.cs" />\r
-    <Compile Include="System.Runtime.Versioning\CompatibilitySwitch.cs" />\r
-    <Compile Include="System.Runtime\GCLargeObjectHeapCompactionMode.cs" />\r
-    <Compile Include="System.Runtime\GCLatencyMode.cs" />\r
-    <Compile Include="System.Runtime\GCSettings.cs" />\r
-    <Compile Include="System.Runtime\MemoryFailPoint.cs" />\r
-    <Compile Include="System.Security.AccessControl\AccessControlActions.cs" />\r
-    <Compile Include="System.Security.AccessControl\AccessControlModification.cs" />\r
-    <Compile Include="System.Security.AccessControl\AccessControlSections.cs" />\r
-    <Compile Include="System.Security.AccessControl\AccessControlType.cs" />\r
-    <Compile Include="System.Security.AccessControl\AccessRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\AccessRule_T.cs" />\r
-    <Compile Include="System.Security.AccessControl\AceEnumerator.cs" />\r
-    <Compile Include="System.Security.AccessControl\AceFlags.cs" />\r
-    <Compile Include="System.Security.AccessControl\AceQualifier.cs" />\r
-    <Compile Include="System.Security.AccessControl\AceType.cs" />\r
-    <Compile Include="System.Security.AccessControl\AuditFlags.cs" />\r
-    <Compile Include="System.Security.AccessControl\AuditRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\AuditRule_T.cs" />\r
-    <Compile Include="System.Security.AccessControl\AuthorizationRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\AuthorizationRuleCollection.cs" />\r
-    <Compile Include="System.Security.AccessControl\CommonAce.cs" />\r
-    <Compile Include="System.Security.AccessControl\CommonAcl.cs" />\r
-    <Compile Include="System.Security.AccessControl\CommonObjectSecurity.cs" />\r
-    <Compile Include="System.Security.AccessControl\CommonSecurityDescriptor.cs" />\r
-    <Compile Include="System.Security.AccessControl\CompoundAce.cs" />\r
-    <Compile Include="System.Security.AccessControl\CompoundAceType.cs" />\r
-    <Compile Include="System.Security.AccessControl\ControlFlags.cs" />\r
-    <Compile Include="System.Security.AccessControl\CryptoKeyAccessRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\CryptoKeyAuditRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\CryptoKeyRights.cs" />\r
-    <Compile Include="System.Security.AccessControl\CryptoKeySecurity.cs" />\r
-    <Compile Include="System.Security.AccessControl\CustomAce.cs" />\r
-    <Compile Include="System.Security.AccessControl\DirectoryObjectSecurity.cs" />\r
-    <Compile Include="System.Security.AccessControl\DirectorySecurity.cs" />\r
-    <Compile Include="System.Security.AccessControl\DiscretionaryAcl.cs" />\r
-    <Compile Include="System.Security.AccessControl\EventWaitHandleAccessRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\EventWaitHandleAuditRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\EventWaitHandleRights.cs" />\r
-    <Compile Include="System.Security.AccessControl\EventWaitHandleSecurity.cs" />\r
-    <Compile Include="System.Security.AccessControl\FileSecurity.cs" />\r
-    <Compile Include="System.Security.AccessControl\FileSystemAccessRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\FileSystemAuditRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\FileSystemRights.cs" />\r
-    <Compile Include="System.Security.AccessControl\FileSystemSecurity.cs" />\r
-    <Compile Include="System.Security.AccessControl\GenericAce.cs" />\r
-    <Compile Include="System.Security.AccessControl\GenericAcl.cs" />\r
-    <Compile Include="System.Security.AccessControl\GenericSecurityDescriptor.cs" />\r
-    <Compile Include="System.Security.AccessControl\InheritanceFlags.cs" />\r
-    <Compile Include="System.Security.AccessControl\KnownAce.cs" />\r
-    <Compile Include="System.Security.AccessControl\MutexAccessRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\MutexAuditRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\MutexRights.cs" />\r
-    <Compile Include="System.Security.AccessControl\MutexSecurity.cs" />\r
-    <Compile Include="System.Security.AccessControl\NativeObjectSecurity.cs" />\r
-    <Compile Include="System.Security.AccessControl\ObjectAccessRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\ObjectAce.cs" />\r
-    <Compile Include="System.Security.AccessControl\ObjectAceFlags.cs" />\r
-    <Compile Include="System.Security.AccessControl\ObjectAuditRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\ObjectSecurity.cs" />\r
-    <Compile Include="System.Security.AccessControl\ObjectSecurity_T.cs" />\r
-    <Compile Include="System.Security.AccessControl\PrivilegeNotHeldException.cs" />\r
-    <Compile Include="System.Security.AccessControl\PropagationFlags.cs" />\r
-    <Compile Include="System.Security.AccessControl\QualifiedAce.cs" />\r
-    <Compile Include="System.Security.AccessControl\RawAcl.cs" />\r
-    <Compile Include="System.Security.AccessControl\RawSecurityDescriptor.cs" />\r
-    <Compile Include="System.Security.AccessControl\RegistryAccessRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\RegistryAuditRule.cs" />\r
-    <Compile Include="System.Security.AccessControl\RegistryRights.cs" />\r
-    <Compile Include="System.Security.AccessControl\RegistrySecurity.cs" />\r
-    <Compile Include="System.Security.AccessControl\ResourceType.cs" />\r
-    <Compile Include="System.Security.AccessControl\SddlAccessRight.cs" />\r
-    <Compile Include="System.Security.AccessControl\SecurityInfos.cs" />\r
-    <Compile Include="System.Security.AccessControl\SystemAcl.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate20.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509ContentType.cs" />\r
-    <Compile Include="System.Security.Cryptography.X509Certificates\X509KeyStorageFlags.cs" />\r
-    <Compile Include="System.Security.Cryptography\CryptoAPITransform.cs" />\r
-    <Compile Include="System.Security.Cryptography\CryptoConfig.cs" />\r
-    <Compile Include="System.Security.Cryptography\CryptoConfig.fullaot.cs" />\r
-    <Compile Include="System.Security.Cryptography\CryptoConfig_2_1.cs" />\r
-    <Compile Include="System.Security.Cryptography\CspKeyContainerInfo.cs" />\r
-    <Compile Include="System.Security.Cryptography\DESCryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\DSACryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\ICspAsymmetricAlgorithm.cs" />\r
-    <Compile Include="System.Security.Cryptography\KeyNumber.cs" />\r
-    <Compile Include="System.Security.Cryptography\MD5CryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\RC2CryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\RNGCryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\RSACryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\RSAPKCS1SignatureDeformatter.cs" />\r
-    <Compile Include="System.Security.Cryptography\RSAPKCS1SignatureFormatter.cs" />\r
-    <Compile Include="System.Security.Cryptography\SHA1CryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Cryptography\TripleDESCryptoServiceProvider.cs" />\r
-    <Compile Include="System.Security.Permissions\CodeAccessSecurityAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\EnvironmentPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\EnvironmentPermissionAccess.cs" />\r
-    <Compile Include="System.Security.Permissions\EnvironmentPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\FileDialogPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\FileDialogPermissionAccess.cs" />\r
-    <Compile Include="System.Security.Permissions\FileDialogPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\FileIOPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\FileIOPermissionAccess.cs" />\r
-    <Compile Include="System.Security.Permissions\FileIOPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\GacIdentityPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\GacIdentityPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\HostProtectionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\HostProtectionPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\HostProtectionResource.cs" />\r
-    <Compile Include="System.Security.Permissions\IBuiltInPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\IsolatedStorageContainment.cs" />\r
-    <Compile Include="System.Security.Permissions\IsolatedStorageFilePermission.cs" />\r
-    <Compile Include="System.Security.Permissions\IsolatedStorageFilePermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\IsolatedStoragePermission.cs" />\r
-    <Compile Include="System.Security.Permissions\IsolatedStoragePermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\IUnrestrictedPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\KeyContainerPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\KeyContainerPermissionAccessEntry.cs" />\r
-    <Compile Include="System.Security.Permissions\KeyContainerPermissionAccessEntryCollection.cs" />\r
-    <Compile Include="System.Security.Permissions\KeyContainerPermissionAccessEntryEnumerator.cs" />\r
-    <Compile Include="System.Security.Permissions\KeyContainerPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\KeyContainerPermissionFlags.cs" />\r
-    <Compile Include="System.Security.Permissions\PermissionSetAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\PermissionState.cs" />\r
-    <Compile Include="System.Security.Permissions\PrincipalPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\PrincipalPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\PublisherIdentityPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\PublisherIdentityPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\ReflectionPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\ReflectionPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\ReflectionPermissionFlag.cs" />\r
-    <Compile Include="System.Security.Permissions\RegistryPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\RegistryPermissionAccess.cs" />\r
-    <Compile Include="System.Security.Permissions\RegistryPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\SecurityAction.cs" />\r
-    <Compile Include="System.Security.Permissions\SecurityAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\SecurityPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\SecurityPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\SecurityPermissionFlag.cs" />\r
-    <Compile Include="System.Security.Permissions\SiteIdentityPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\SiteIdentityPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\StrongNameIdentityPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\StrongNamePermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\StrongNamePublicKeyBlob.cs" />\r
-    <Compile Include="System.Security.Permissions\UIPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\UIPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\UIPermissionClipboard.cs" />\r
-    <Compile Include="System.Security.Permissions\UIPermissionWindow.cs" />\r
-    <Compile Include="System.Security.Permissions\UrlIdentityPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\UrlIdentityPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Permissions\ZoneIdentityPermission.cs" />\r
-    <Compile Include="System.Security.Permissions\ZoneIdentityPermissionAttribute.cs" />\r
-    <Compile Include="System.Security.Policy\AllMembershipCondition.cs" />\r
-    <Compile Include="System.Security.Policy\ApplicationDirectory.cs" />\r
-    <Compile Include="System.Security.Policy\ApplicationDirectoryMembershipCondition.cs" />\r
-    <Compile Include="System.Security.Policy\ApplicationSecurityInfo.cs" />\r
-    <Compile Include="System.Security.Policy\ApplicationSecurityManager.cs" />\r
-    <Compile Include="System.Security.Policy\ApplicationTrust.cs" />\r
-    <Compile Include="System.Security.Policy\ApplicationTrustCollection.cs" />\r
-    <Compile Include="System.Security.Policy\ApplicationTrustEnumerator.cs" />\r
-    <Compile Include="System.Security.Policy\ApplicationVersionMatch.cs" />\r
-    <Compile Include="System.Security.Policy\CodeConnectAccess.cs" />\r
-    <Compile Include="System.Security.Policy\CodeGroup.cs" />\r
-    <Compile Include="System.Security.Policy\DefaultPolicies.cs" />\r
-    <Compile Include="System.Security.Policy\Evidence.cs" />\r
-    <Compile Include="System.Security.Policy\EvidenceBase.cs" />\r
-    <Compile Include="System.Security.Policy\FileCodeGroup.cs" />\r
-    <Compile Include="System.Security.Policy\FirstMatchCodeGroup.cs" />\r
-    <Compile Include="System.Security.Policy\Gac.cs" />\r
-    <Compile Include="System.Security.Policy\GacMembershipCondition.cs" />\r
-    <Compile Include="System.Security.Policy\Hash.cs" />\r
-    <Compile Include="System.Security.Policy\HashMembershipCondition.cs" />\r
-    <Compile Include="System.Security.Policy\IApplicationTrustManager.cs" />\r
-    <Compile Include="System.Security.Policy\IBuiltInEvidence.cs" />\r
-    <Compile Include="System.Security.Policy\IConstantMembershipCondition.cs" />\r
-    <Compile Include="System.Security.Policy\IIdentityPermissionFactory.cs" />\r
-    <Compile Include="System.Security.Policy\IMembershipCondition.cs" />\r
-    <Compile Include="System.Security.Policy\MembershipConditionHelper.cs" />\r
-    <Compile Include="System.Security.Policy\MonoTrustManager.cs" />\r
-    <Compile Include="System.Security.Policy\NetCodeGroup.cs" />\r
-    <Compile Include="System.Security.Policy\PermissionRequestEvidence.cs" />\r
-    <Compile Include="System.Security.Policy\PolicyException.cs" />\r
-    <Compile Include="System.Security.Policy\PolicyLevel.cs" />\r
-    <Compile Include="System.Security.Policy\PolicyStatement.cs" />\r
-    <Compile Include="System.Security.Policy\PolicyStatementAttribute.cs" />\r
-    <Compile Include="System.Security.Policy\Publisher.cs" />\r
-    <Compile Include="System.Security.Policy\PublisherMembershipCondition.cs" />\r
-    <Compile Include="System.Security.Policy\Site.cs" />\r
-    <Compile Include="System.Security.Policy\SiteMembershipCondition.cs" />\r
-    <Compile Include="System.Security.Policy\StrongName.cs" />\r
-    <Compile Include="System.Security.Policy\StrongNameMembershipCondition.cs" />\r
-    <Compile Include="System.Security.Policy\TrustManagerContext.cs" />\r
-    <Compile Include="System.Security.Policy\TrustManagerUIContext.cs" />\r
-    <Compile Include="System.Security.Policy\UnionCodeGroup.cs" />\r
-    <Compile Include="System.Security.Policy\Url.cs" />\r
-    <Compile Include="System.Security.Policy\UrlMembershipCondition.cs" />\r
-    <Compile Include="System.Security.Policy\Zone.cs" />\r
-    <Compile Include="System.Security.Policy\ZoneMembershipCondition.cs" />\r
-    <Compile Include="System.Security.Principal\GenericPrincipal.cs" />\r
-    <Compile Include="System.Security.Principal\IdentityNotMappedException.cs" />\r
-    <Compile Include="System.Security.Principal\IdentityReference.cs" />\r
-    <Compile Include="System.Security.Principal\IdentityReferenceCollection.cs" />\r
-    <Compile Include="System.Security.Principal\IIdentity.cs" />\r
-    <Compile Include="System.Security.Principal\IPrincipal.cs" />\r
-    <Compile Include="System.Security.Principal\NTAccount.cs" />\r
-    <Compile Include="System.Security.Principal\PrincipalPolicy.cs" />\r
-    <Compile Include="System.Security.Principal\SecurityIdentifier.cs" />\r
-    <Compile Include="System.Security.Principal\TokenAccessLevels.cs" />\r
-    <Compile Include="System.Security.Principal\TokenImpersonationLevel.cs" />\r
-    <Compile Include="System.Security.Principal\WellKnownAccount.cs" />\r
-    <Compile Include="System.Security.Principal\WellKnownSidType.cs" />\r
-    <Compile Include="System.Security.Principal\WindowsAccountType.cs" />\r
-    <Compile Include="System.Security.Principal\WindowsBuiltInRole.cs" />\r
-    <Compile Include="System.Security.Principal\WindowsIdentity.cs" />\r
-    <Compile Include="System.Security.Principal\WindowsImpersonationContext.cs" />\r
-    <Compile Include="System.Security.Principal\WindowsPrincipal.cs" />\r
-    <Compile Include="System.Security\CodeAccessPermission.cs" />\r
-    <Compile Include="System.Security\HostProtectionException.cs" />\r
-    <Compile Include="System.Security\HostSecurityManager.cs" />\r
-    <Compile Include="System.Security\HostSecurityManagerFlags.cs" />\r
-    <Compile Include="System.Security\IEvidenceFactory.cs" />\r
-    <Compile Include="System.Security\IPermission.cs" />\r
-    <Compile Include="System.Security\ISecurityEncodable.cs" />\r
-    <Compile Include="System.Security\ISecurityPolicyEncodable.cs" />\r
-    <Compile Include="System.Security\IStackWalk.cs" />\r
-    <Compile Include="System.Security\NamedPermissionSet.cs" />\r
-    <Compile Include="System.Security\PermissionBuilder.cs" />\r
-    <Compile Include="System.Security\PermissionSet.cs" />\r
-    <Compile Include="System.Security\PolicyLevelType.cs" />\r
-    <Compile Include="System.Security\SecureString.cs" />\r
-    <Compile Include="System.Security\SecurityElement.cs" />\r
-    <Compile Include="System.Security\SecurityException.cs" />\r
-    <Compile Include="System.Security\SecurityFrame.cs" />\r
-    <Compile Include="System.Security\SecurityManager.cs" />\r
-    <Compile Include="System.Security\SecurityManager_mobile.cs" />\r
-    <Compile Include="System.Security\SecurityState.cs" />\r
-    <Compile Include="System.Security\SecurityZone.cs" />\r
-    <Compile Include="System.Security\VerificationException.cs" />\r
-    <Compile Include="System.Security\XmlSyntaxException.cs" />\r
-    <Compile Include="System.Text\EncodingHelper.cs" />\r
-    <Compile Include="System.Text\Latin1Encoding.cs" />\r
-    <Compile Include="System.Text\NormalizationForm.cs" />\r
-    <Compile Include="System.Threading.Tasks\DecoupledTask.cs" />\r
-    <Compile Include="System.Threading\CompressedStack.cs" />\r
-    <Compile Include="System.Threading\EventWaitHandle.cs" />\r
-    <Compile Include="System.Threading\HostExecutionContext.cs" />\r
-    <Compile Include="System.Threading\HostExecutionContextManager.cs" />\r
-    <Compile Include="System.Threading\Interlocked.cs" />\r
-    <Compile Include="System.Threading\LockCookie.cs" />\r
-    <Compile Include="System.Threading\LockQueue.cs" />\r
-    <Compile Include="System.Threading\Monitor.cs" />\r
-    <Compile Include="System.Threading\Mutex.cs" />\r
-    <Compile Include="System.Threading\NativeEventCalls.cs" />\r
-    <Compile Include="System.Threading\NativeOverlapped.cs" />\r
-    <Compile Include="System.Threading\Overlapped.cs" />\r
-    <Compile Include="System.Threading\ReaderWriterLock.cs" />\r
-    <Compile Include="System.Threading\RegisteredWaitHandle.cs" />\r
-    <Compile Include="System.Threading\Thread.cs" />\r
-    <Compile Include="System.Threading\ThreadPool.cs" />\r
-    <Compile Include="System.Threading\Timer.cs" />\r
-    <Compile Include="System.Threading\TimerCallback.cs" />\r
-    <Compile Include="System.Threading\Volatile.cs" />\r
-    <Compile Include="System.Threading\WaitHandle.cs" />\r
-    <Compile Include="System\__ComObject.cs" />\r
-    <Compile Include="System\ActivationContext.cs" />\r
-    <Compile Include="System\AndroidPlatform.cs" />\r
-    <Compile Include="System\AppDomain.cs" />\r
-    <Compile Include="System\AppDomainInitializer.cs" />\r
-    <Compile Include="System\AppDomainManager.cs" />\r
-    <Compile Include="System\AppDomainSetup.cs" />\r
-    <Compile Include="System\ApplicationIdentity.cs" />\r
-    <Compile Include="System\ArgIterator.cs" />\r
-    <Compile Include="System\Array.cs" />\r
-    <Compile Include="System\AssemblyLoadEventArgs.cs" />\r
-    <Compile Include="System\AssemblyLoadEventHandler.cs" />\r
-    <Compile Include="System\Console.cs" />\r
-    <Compile Include="System\Console.iOS.cs" />\r
-    <Compile Include="System\ConsoleDriver.cs" />\r
-    <Compile Include="System\ControlCharacters.cs" />\r
-    <Compile Include="System\CrossAppDomainDelegate.cs" />\r
-    <Compile Include="System\CStreamReader.cs" />\r
-    <Compile Include="System\CStreamWriter.cs" />\r
-    <Compile Include="System\Delegate.cs" />\r
-    <Compile Include="System\DelegateSerializationHolder.cs" />\r
-    <Compile Include="System\DomainManagerInitializationFlags.cs" />\r
-    <Compile Include="System\EmptyArray.cs" />\r
-    <Compile Include="System\Environment.cs" />\r
-    <Compile Include="System\EnvironmentVariableTarget.cs" />\r
-    <Compile Include="System\Exception.cs" />\r
-    <Compile Include="System\GC.cs" />\r
-    <Compile Include="System\GCCollectionMode.cs" />\r
-    <Compile Include="System\GCNotificationStatus.cs" />\r
-    <Compile Include="System\Guid.cs" />\r
-    <Compile Include="System\Guid.MonoTouch.cs" />\r
-    <Compile Include="System\IConsoleDriver.cs" />\r
-    <Compile Include="System\IntPtr.cs" />\r
-    <Compile Include="System\KnownTerminals.cs" />\r
-    <Compile Include="System\MarshalByRefObject.cs" />\r
-    <Compile Include="System\Math.cs" />\r
-    <Compile Include="System\ModuleHandle.cs" />\r
-    <Compile Include="System\MonoAsyncCall.cs" />\r
-    <Compile Include="System\MonoCQItem.cs" />\r
-    <Compile Include="System\MonoCustomAttrs.cs" />\r
-    <Compile Include="System\MonoListItem.cs" />\r
-    <Compile Include="System\MonoTouchAOTHelper.cs" />\r
-    <Compile Include="System\MonoType.cs" />\r
-    <Compile Include="System\MulticastDelegate.cs" />\r
-    <Compile Include="System\Nullable.cs" />\r
-    <Compile Include="System\NullConsoleDriver.cs" />\r
-    <Compile Include="System\NumberFormatter.cs" />\r
-    <Compile Include="System\Object.cs" />\r
-    <Compile Include="System\OperatingSystem.cs" />\r
-    <Compile Include="System\PlatformID.cs" />\r
-    <Compile Include="System\ResolveEventArgs.cs" />\r
-    <Compile Include="System\ResolveEventHandler.cs" />\r
-    <Compile Include="System\RuntimeArgumentHandle.cs" />\r
-    <Compile Include="System\RuntimeFieldHandle.cs" />\r
-    <Compile Include="System\RuntimeMethodHandle.cs" />\r
-    <Compile Include="System\RuntimeTypeHandle.cs" />\r
-    <Compile Include="System\StringComparison.cs" />\r
-    <Compile Include="System\TermInfoBooleans.cs" />\r
-    <Compile Include="System\TermInfoDriver.cs" />\r
-    <Compile Include="System\TermInfoNumbers.cs" />\r
-    <Compile Include="System\TermInfoReader.cs" />\r
-    <Compile Include="System\TermInfoStrings.cs" />\r
-    <Compile Include="System\TimeZone.cs" />\r
-    <Compile Include="System\TimeZoneInfo.Android.cs" />\r
-    <Compile Include="System\TimeZoneInfo.cs" />\r
-    <Compile Include="System\TimeZoneInfo.MonoTouch.cs" />\r
-    <Compile Include="System\TimeZoneInfo.Serialization.cs" />\r
-    <Compile Include="System\TypeCode.cs" />\r
-    <Compile Include="System\TypeSpec.cs" />\r
-    <Compile Include="System\UIntPtr.cs" />\r
-    <Compile Include="System\ValueType.cs" />\r
-    <Compile Include="System\Variant.cs" />\r
-    <Compile Include="System\Void.cs" />\r
-    <Compile Include="System\WeakReference.cs" />\r
-    <Compile Include="System\WeakReference_T.cs" />\r
-    <Compile Include="System\WindowsConsoleDriver.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="resources/charinfo.nlp">\r
-      <LogicalName>charinfo.nlp</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/collation.core.bin">\r
-      <LogicalName>collation.core.bin</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/collation.tailoring.bin">\r
-      <LogicalName>collation.tailoring.bin</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/collation.cjkCHS.bin">\r
-      <LogicalName>collation.cjkCHS.bin</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/collation.cjkCHT.bin">\r
-      <LogicalName>collation.cjkCHT.bin</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/collation.cjkJA.bin">\r
-      <LogicalName>collation.cjkJA.bin</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/collation.cjkKO.bin">\r
-      <LogicalName>collation.cjkKO.bin</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="resources/collation.cjkKOlv2.bin">\r
-      <LogicalName>collation.cjkKOlv2.bin</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index 74b5445e8e7df58c763c2a055ea64de0adcfb210..a6f4a7fad110797b69555b839fd9690cf96a8074 100644 (file)
@@ -25,7 +25,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>612,618,1635,1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>TRACE;INSIDE_CORLIB;MONO_CULTURE_DATA;LIBC;FEATURE_PAL;GENERICS_WORK;FEATURE_LIST_PREDICATES;FEATURE_SERIALIZATION;FEATURE_ASCII;FEATURE_LATIN1;FEATURE_UTF7;FEATURE_UTF32;MONO_HYBRID_ENCODING_SUPPORT;FEATURE_ASYNC_IO;NEW_EXPERIMENTAL_ASYNC_IO;FEATURE_UTF32;FEATURE_EXCEPTIONDISPATCHINFO;FEATURE_CORRUPTING_EXCEPTIONS;FEATURE_EXCEPTION_NOTIFICATIONS;FEATURE_STRONGNAME_MIGRATION;FEATURE_USE_LCID;FEATURE_FUSION;FEATURE_CRYPTO;FEATURE_X509_SECURESTRINGS;FEATURE_SYNCHRONIZATIONCONTEXT;FEATURE_SYNCHRONIZATIONCONTEXT_WAIT;FEATURE_REMOTING;MONO_COM;FEATURE_COMINTEROP;FEATURE_ROLE_BASED_SECURITY;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;FEATURE_PAL;GENERICS_WORK;FEATURE_LIST_PREDICATES;FEATURE_SERIALIZATION;FEATURE_ASCII;FEATURE_LATIN1;FEATURE_UTF7;FEATURE_UTF32;MONO_HYBRID_ENCODING_SUPPORT;FEATURE_ASYNC_IO;NEW_EXPERIMENTAL_ASYNC_IO;FEATURE_UTF32;FEATURE_EXCEPTIONDISPATCHINFO;FEATURE_CORRUPTING_EXCEPTIONS;FEATURE_EXCEPTION_NOTIFICATIONS;FEATURE_STRONGNAME_MIGRATION;FEATURE_USE_LCID;FEATURE_FUSION;FEATURE_CRYPTO;FEATURE_X509_SECURESTRINGS;FEATURE_SYNCHRONIZATIONCONTEXT;FEATURE_SYNCHRONIZATIONCONTEXT_WAIT;FEATURE_REMOTING;MONO_COM;FEATURE_COMINTEROP;FEATURE_ROLE_BASED_SECURITY</DefineConstants>\r
+    <DefineConstants>TRACE;INSIDE_CORLIB;MONO_CULTURE_DATA;LIBC;FEATURE_PAL;GENERICS_WORK;FEATURE_LIST_PREDICATES;FEATURE_SERIALIZATION;FEATURE_ASCII;FEATURE_LATIN1;FEATURE_UTF7;FEATURE_UTF32;MONO_HYBRID_ENCODING_SUPPORT;FEATURE_ASYNC_IO;NEW_EXPERIMENTAL_ASYNC_IO;FEATURE_UTF32;FEATURE_EXCEPTIONDISPATCHINFO;FEATURE_CORRUPTING_EXCEPTIONS;FEATURE_EXCEPTION_NOTIFICATIONS;FEATURE_STRONGNAME_MIGRATION;FEATURE_USE_LCID;FEATURE_FUSION;FEATURE_CRYPTO;FEATURE_X509_SECURESTRINGS;FEATURE_SYNCHRONIZATIONCONTEXT;FEATURE_SYNCHRONIZATIONCONTEXT_WAIT;FEATURE_REMOTING;MONO_COM;FEATURE_COMINTEROP;FEATURE_ROLE_BASED_SECURITY;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;FEATURE_PAL;GENERICS_WORK;FEATURE_LIST_PREDICATES;FEATURE_SERIALIZATION;FEATURE_ASCII;FEATURE_LATIN1;FEATURE_UTF7;FEATURE_UTF32;MONO_HYBRID_ENCODING_SUPPORT;FEATURE_ASYNC_IO;NEW_EXPERIMENTAL_ASYNC_IO;FEATURE_UTF32;FEATURE_EXCEPTIONDISPATCHINFO;FEATURE_CORRUPTING_EXCEPTIONS;FEATURE_EXCEPTION_NOTIFICATIONS;FEATURE_STRONGNAME_MIGRATION;FEATURE_USE_LCID;FEATURE_FUSION;FEATURE_CRYPTO;FEATURE_X509_SECURESTRINGS;FEATURE_SYNCHRONIZATIONCONTEXT;FEATURE_SYNCHRONIZATIONCONTEXT_WAIT;FEATURE_REMOTING;MONO_COM;FEATURE_COMINTEROP;FEATURE_ROLE_BASED_SECURITY;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -33,7 +33,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>612,618,1635,1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>INSIDE_CORLIB;MONO_CULTURE_DATA;LIBC;FEATURE_PAL;GENERICS_WORK;FEATURE_LIST_PREDICATES;FEATURE_SERIALIZATION;FEATURE_ASCII;FEATURE_LATIN1;FEATURE_UTF7;FEATURE_UTF32;MONO_HYBRID_ENCODING_SUPPORT;FEATURE_ASYNC_IO;NEW_EXPERIMENTAL_ASYNC_IO;FEATURE_UTF32;FEATURE_EXCEPTIONDISPATCHINFO;FEATURE_CORRUPTING_EXCEPTIONS;FEATURE_EXCEPTION_NOTIFICATIONS;FEATURE_STRONGNAME_MIGRATION;FEATURE_USE_LCID;FEATURE_FUSION;FEATURE_CRYPTO;FEATURE_X509_SECURESTRINGS;FEATURE_SYNCHRONIZATIONCONTEXT;FEATURE_SYNCHRONIZATIONCONTEXT_WAIT;FEATURE_REMOTING;MONO_COM;FEATURE_COMINTEROP;FEATURE_ROLE_BASED_SECURITY;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;FEATURE_PAL;GENERICS_WORK;FEATURE_LIST_PREDICATES;FEATURE_SERIALIZATION;FEATURE_ASCII;FEATURE_LATIN1;FEATURE_UTF7;FEATURE_UTF32;MONO_HYBRID_ENCODING_SUPPORT;FEATURE_ASYNC_IO;NEW_EXPERIMENTAL_ASYNC_IO;FEATURE_UTF32;FEATURE_EXCEPTIONDISPATCHINFO;FEATURE_CORRUPTING_EXCEPTIONS;FEATURE_EXCEPTION_NOTIFICATIONS;FEATURE_STRONGNAME_MIGRATION;FEATURE_USE_LCID;FEATURE_FUSION;FEATURE_CRYPTO;FEATURE_X509_SECURESTRINGS;FEATURE_SYNCHRONIZATIONCONTEXT;FEATURE_SYNCHRONIZATIONCONTEXT_WAIT;FEATURE_REMOTING;MONO_COM;FEATURE_COMINTEROP;FEATURE_ROLE_BASED_SECURITY</DefineConstants>\r
+    <DefineConstants>INSIDE_CORLIB;MONO_CULTURE_DATA;LIBC;FEATURE_PAL;GENERICS_WORK;FEATURE_LIST_PREDICATES;FEATURE_SERIALIZATION;FEATURE_ASCII;FEATURE_LATIN1;FEATURE_UTF7;FEATURE_UTF32;MONO_HYBRID_ENCODING_SUPPORT;FEATURE_ASYNC_IO;NEW_EXPERIMENTAL_ASYNC_IO;FEATURE_UTF32;FEATURE_EXCEPTIONDISPATCHINFO;FEATURE_CORRUPTING_EXCEPTIONS;FEATURE_EXCEPTION_NOTIFICATIONS;FEATURE_STRONGNAME_MIGRATION;FEATURE_USE_LCID;FEATURE_FUSION;FEATURE_CRYPTO;FEATURE_X509_SECURESTRINGS;FEATURE_SYNCHRONIZATIONCONTEXT;FEATURE_SYNCHRONIZATIONCONTEXT_WAIT;FEATURE_REMOTING;MONO_COM;FEATURE_COMINTEROP;FEATURE_ROLE_BASED_SECURITY;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;FEATURE_PAL;GENERICS_WORK;FEATURE_LIST_PREDICATES;FEATURE_SERIALIZATION;FEATURE_ASCII;FEATURE_LATIN1;FEATURE_UTF7;FEATURE_UTF32;MONO_HYBRID_ENCODING_SUPPORT;FEATURE_ASYNC_IO;NEW_EXPERIMENTAL_ASYNC_IO;FEATURE_UTF32;FEATURE_EXCEPTIONDISPATCHINFO;FEATURE_CORRUPTING_EXCEPTIONS;FEATURE_EXCEPTION_NOTIFICATIONS;FEATURE_STRONGNAME_MIGRATION;FEATURE_USE_LCID;FEATURE_FUSION;FEATURE_CRYPTO;FEATURE_X509_SECURESTRINGS;FEATURE_SYNCHRONIZATIONCONTEXT;FEATURE_SYNCHRONIZATIONCONTEXT_WAIT;FEATURE_REMOTING;MONO_COM;FEATURE_COMINTEROP;FEATURE_ROLE_BASED_SECURITY;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\contracts\contracts.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\contracts\contractsbcl.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\debuggerattributes.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\eventing\eventactivityoptions.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\eventing\TraceLogging\EventSourceOptions.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\eventing\TraceLogging\TraceLoggingEventTraits.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\diagnostics\eventing\winmeta.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\dividebyzeroexception.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\dllnotfoundexception.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\double.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\calendaralgorithmtype.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\calendardata.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\calendarweekrule.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\CalendricalCalculationsHelper.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\charunicodeinfo.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\chineselunisolarcalendar.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\globalization\compareinfo.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\outofmemoryexception.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\overflowexception.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\paramarrayattribute.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\paramsarray.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\platformnotsupportedexception.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\progress.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\random.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\binarycompatibility.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\componentguaranteesattribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\multitargetinghelpers.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\NonVersionableAttribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\resourceattributes.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\targetframeworkattribute.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\runtime\versioning\targetframeworkid.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\dsasignaturedeformatter.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\dsasignatureformatter.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\hashalgorithm.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\HashAlgorithmName.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\hmac.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\hmacmd5.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\hmacripemd160.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\ripemd160.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\ripemd160managed.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rsa.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\RSAEncryptionPadding.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\RSAEncryptionPaddingMode.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rsaoaepkeyexchangedeformatter.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rsaoaepkeyexchangeformatter.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rsapkcs1keyexchangedeformatter.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\rsapkcs1keyexchangeformatter.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\RSASignaturePadding.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\RSASignaturePaddingMode.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\sha1.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\sha1managed.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\security\cryptography\sha256.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\SpinWait.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\synchronizationcontext.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\synchronizationlockexception.cs" />\r
+    <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\AsyncCausalityTracer.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\BeginEndAwaitableAdapter.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\ConcurrentExclusiveSchedulerPair.cs" />\r
     <Compile Include="..\..\..\external\referencesource\mscorlib\system\threading\Tasks\Future.cs" />\r
     <Compile Include="Mono\DataConverter.cs" />\r
     <Compile Include="Mono\Runtime.cs" />\r
     <Compile Include="ReferenceSources\__ConsoleStream.cs" />\r
+    <Compile Include="ReferenceSources\AppContextSwitches.cs" />\r
     <Compile Include="ReferenceSources\AppDomain.cs" />\r
     <Compile Include="ReferenceSources\Array.cs" />\r
     <Compile Include="ReferenceSources\BCLDebug.cs" />\r
     <Compile Include="System.Diagnostics.Tracing\EventAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Tracing\EventCommand.cs" />\r
     <Compile Include="System.Diagnostics.Tracing\EventCommandEventArgs.cs" />\r
-    <Compile Include="System.Diagnostics.Tracing\EventKeywords.cs" />\r
-    <Compile Include="System.Diagnostics.Tracing\EventLevel.cs" />\r
     <Compile Include="System.Diagnostics.Tracing\EventSource.cs" />\r
     <Compile Include="System.Diagnostics.Tracing\EventSourceAttribute.cs" />\r
+    <Compile Include="System.Diagnostics.Tracing\EventSourceSettings.cs" />\r
     <Compile Include="System.Diagnostics.Tracing\NonEventAttribute.cs" />\r
     <Compile Include="System.Diagnostics\Debugger.cs" />\r
     <Compile Include="System.Diagnostics\StackFrame.cs" />\r
     <Compile Include="System.Security.AccessControl\SystemAcl.cs" />\r
     <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate.cs" />\r
     <Compile Include="System.Security.Cryptography.X509Certificates\X509Certificate20.cs" />\r
+    <Compile Include="System.Security.Cryptography.X509Certificates\X509CertificateImpl.cs" />\r
+    <Compile Include="System.Security.Cryptography.X509Certificates\X509CertificateImplMono.cs" />\r
     <Compile Include="System.Security.Cryptography.X509Certificates\X509ContentType.cs" />\r
+    <Compile Include="System.Security.Cryptography.X509Certificates\X509Helper.cs" />\r
     <Compile Include="System.Security.Cryptography.X509Certificates\X509KeyStorageFlags.cs" />\r
     <Compile Include="System.Security.Cryptography\CryptoAPITransform.cs" />\r
     <Compile Include="System.Security.Cryptography\CryptoConfig.cs" />\r
     <Compile Include="System\TimeZoneInfo.MonoTouch.cs" />\r
     <Compile Include="System\TimeZoneInfo.Serialization.cs" />\r
     <Compile Include="System\TypeCode.cs" />\r
+    <Compile Include="System\TypeIdentifier.cs" />\r
     <Compile Include="System\TypeSpec.cs" />\r
     <Compile Include="System\UIntPtr.cs" />\r
     <Compile Include="System\ValueType.cs" />\r
diff --git a/mcs/class/corlib/corlib-tests-net_4_5.csproj b/mcs/class/corlib/corlib-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 0757959..0000000
+++ /dev/null
@@ -1,588 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DCF26FDD-81D3-463B-B80D-3111DDFFE2D5}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>612,618,1699,168,219,618,672</NoWarn>\r
-    <OutputPath>bin\Debug\corlib-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>corlib_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>612,618,1699,168,219,618,672</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;INSIDE_CORLIB;LIBC;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;MONO_DATACONVERTER_STATIC_METHODS</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>612,618,1699,168,219,618,672</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>INSIDE_CORLIB;LIBC;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;MONO_DATACONVERTER_STATIC_METHODS</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Mono\DataConverter.cs" />\r
-    <Compile Include="Test\Microsoft.Win32\RegistryKeyTest.cs" />\r
-    <Compile Include="Test\Mono\DataConvertTest.cs" />\r
-    <Compile Include="Test\System.Collections.Concurrent\CollectionStressTestHelper.cs" />\r
-    <Compile Include="Test\System.Collections.Concurrent\ConcurrentDictionaryTests.cs" />\r
-    <Compile Include="Test\System.Collections.Concurrent\ConcurrentQueueTests.cs" />\r
-    <Compile Include="Test\System.Collections.Concurrent\ConcurrentStackTests.cs" />\r
-    <Compile Include="Test\System.Collections.Concurrent\ParallelConcurrentQueueTests.cs" />\r
-    <Compile Include="Test\System.Collections.Concurrent\ParallelConcurrentStackTests.cs" />\r
-    <Compile Include="Test\System.Collections.Concurrent\PartitionerTests.cs" />\r
-    <Compile Include="Test\System.Collections.Generic\ComparerTest.cs" />\r
-    <Compile Include="Test\System.Collections.Generic\DictionaryTest.cs" />\r
-    <Compile Include="Test\System.Collections.Generic\EqualityComparerTest.cs" />\r
-    <Compile Include="Test\System.Collections.Generic\IListTest.cs" />\r
-    <Compile Include="Test\System.Collections.Generic\ListTest.cs" />\r
-    <Compile Include="Test\System.Collections.ObjectModel\CollectionTest.cs" />\r
-    <Compile Include="Test\System.Collections.ObjectModel\KeyedCollectionTest.cs" />\r
-    <Compile Include="Test\System.Collections.ObjectModel\ReadOnlyCollectionTest.cs" />\r
-    <Compile Include="Test\System.Collections\ArrayListTest.cs" />\r
-    <Compile Include="Test\System.Collections\BitArrayTest.cs" />\r
-    <Compile Include="Test\System.Collections\CaseInsensitiveComparerTest.cs" />\r
-    <Compile Include="Test\System.Collections\CaseInsensitiveHashCodeProviderTest.cs" />\r
-    <Compile Include="Test\System.Collections\CollectionBaseTest.cs" />\r
-    <Compile Include="Test\System.Collections\ComparerTest.cs" />\r
-    <Compile Include="Test\System.Collections\DictionaryBaseTest.cs" />\r
-    <Compile Include="Test\System.Collections\DictionaryEntryTest.cs" />\r
-    <Compile Include="Test\System.Collections\HashtableTest.cs" />\r
-    <Compile Include="Test\System.Collections\NewArrayListTest.cs" />\r
-    <Compile Include="Test\System.Collections\QueueTest.cs" />\r
-    <Compile Include="Test\System.Collections\ReadOnlyCollectionBaseTest.cs" />\r
-    <Compile Include="Test\System.Collections\SortedListTest.cs" />\r
-    <Compile Include="Test\System.Collections\StackTest.cs" />\r
-    <Compile Include="Test\System.Collections\StructuralComparisonsTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics.Contracts\ContractAssertTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics.Contracts\ContractAssumeTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics.Contracts\ContractCollectionMethodsTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics.Contracts\ContractHelperTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics.Contracts\ContractMarkerMethodsTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics.Contracts\ContractMustUseRewriterTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics.Contracts\Helpers\RunAgainstReferenceAttribute.cs" />\r
-    <Compile Include="Test\System.Diagnostics.Contracts\Helpers\TestContractBase.cs" />\r
-    <Compile Include="Test\System.Diagnostics\DebuggerDisplayAttributeTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\DebuggerTypeProxyAttribute.cs" />\r
-    <Compile Include="Test\System.Diagnostics\StackFrameCas.cs" />\r
-    <Compile Include="Test\System.Diagnostics\StackFrameTest.cs" />\r
-    <Compile Include="Test\System.Diagnostics\StackTraceCas.cs" />\r
-    <Compile Include="Test\System.Diagnostics\StackTraceTest.cs" />\r
-    <Compile Include="Test\System.Globalization\CalendarTest.cs" />\r
-    <Compile Include="Test\System.Globalization\CompareInfoTest.cs" />\r
-    <Compile Include="Test\System.Globalization\CultureInfoTest.cs" />\r
-    <Compile Include="Test\System.Globalization\DateTimeFormatInfoTest.cs" />\r
-    <Compile Include="Test\System.Globalization\DaylightTimeTest.cs" />\r
-    <Compile Include="Test\System.Globalization\EastAsianLunisolarCalendarTest.cs" />\r
-    <Compile Include="Test\System.Globalization\IdnMappingTest.cs" />\r
-    <Compile Include="Test\System.Globalization\NumberFormatInfoTest.cs" />\r
-    <Compile Include="Test\System.Globalization\RegionInfoTest.cs" />\r
-    <Compile Include="Test\System.Globalization\SortKeyTest.cs" />\r
-    <Compile Include="Test\System.Globalization\StringInfoTest.cs" />\r
-    <Compile Include="Test\System.Globalization\TextInfoTest.cs" />\r
-    <Compile Include="Test\System.IO.IsolatedStorage\IsolatedStorageFileCas.cs" />\r
-    <Compile Include="Test\System.IO.IsolatedStorage\IsolatedStorageFileStreamCas.cs" />\r
-    <Compile Include="Test\System.IO.IsolatedStorage\IsolatedStorageFileStreamTest.cs" />\r
-    <Compile Include="Test\System.IO.IsolatedStorage\IsolatedStorageFileTest.cs" />\r
-    <Compile Include="Test\System.IO.IsolatedStorage\IsolatedStorageTest.cs" />\r
-    <Compile Include="Test\System.IO\BinaryReaderTest.cs" />\r
-    <Compile Include="Test\System.IO\BinaryWriterTest.cs" />\r
-    <Compile Include="Test\System.IO\BufferedStreamTest.cs" />\r
-    <Compile Include="Test\System.IO\DirectoryCas.cs" />\r
-    <Compile Include="Test\System.IO\DirectoryInfoTest.cs" />\r
-    <Compile Include="Test\System.IO\DirectoryTest.cs" />\r
-    <Compile Include="Test\System.IO\FileInfoTest.cs" />\r
-    <Compile Include="Test\System.IO\FileLoadExceptionCas.cs" />\r
-    <Compile Include="Test\System.IO\FileNotFoundExceptionCas.cs" />\r
-    <Compile Include="Test\System.IO\FileNotFoundExceptionTest.cs" />\r
-    <Compile Include="Test\System.IO\FileStreamCas.cs" />\r
-    <Compile Include="Test\System.IO\FileStreamTest.cs" />\r
-    <Compile Include="Test\System.IO\FileSystemInfoTest.cs" />\r
-    <Compile Include="Test\System.IO\FileTest.cs" />\r
-    <Compile Include="Test\System.IO\MemoryStreamTest.cs" />\r
-    <Compile Include="Test\System.IO\PathCas.cs" />\r
-    <Compile Include="Test\System.IO\PathTest.cs" />\r
-    <Compile Include="Test\System.IO\StreamCas.cs" />\r
-    <Compile Include="Test\System.IO\StreamHelperTest.cs" />\r
-    <Compile Include="Test\System.IO\StreamReaderTest.cs" />\r
-    <Compile Include="Test\System.IO\StreamTest.cs" />\r
-    <Compile Include="Test\System.IO\StreamWriterTest.cs" />\r
-    <Compile Include="Test\System.IO\StringReaderTest.cs" />\r
-    <Compile Include="Test\System.IO\StringWriterTest.cs" />\r
-    <Compile Include="Test\System.IO\TextReaderTest.cs" />\r
-    <Compile Include="Test\System.IO\TextWriterTest.cs" />\r
-    <Compile Include="Test\System.IO\UnmanagedMemoryStreamTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\AssemblyBuilderAccessTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\AssemblyBuilderTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\ConstructorBuilderTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\ConstructorOnTypeBuilderInstTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\CustomAttributeBuilderTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\DerivedTypesTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\DynamicILInfoTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\DynamicMethodTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\EnumBuilderTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\EventBuilderTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\FieldBuilderTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\GenericTypeParameterBuilderTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\ILGeneratorTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\MethodBuilderTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\MethodOnTypeBuilderInstTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\MethodRentalCas.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\MethodRentalTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\ModuleBuilderTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\ParameterBuilderTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\PropertyBuilderTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\SignatureHelperTest.cs" />\r
-    <Compile Include="Test\System.Reflection.Emit\TypeBuilderTest.cs" />\r
-    <Compile Include="Test\System.Reflection\AssemblyAlgorithmIdAttributeTest.cs" />\r
-    <Compile Include="Test\System.Reflection\AssemblyCas.cs" />\r
-    <Compile Include="Test\System.Reflection\AssemblyConfigurationAttributeTest.cs" />\r
-    <Compile Include="Test\System.Reflection\AssemblyCopyrightAttributeTest.cs" />\r
-    <Compile Include="Test\System.Reflection\AssemblyCultureAttributeTest.cs" />\r
-    <Compile Include="Test\System.Reflection\AssemblyDelaySignAttributeTest.cs" />\r
-    <Compile Include="Test\System.Reflection\AssemblyDescriptionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Reflection\AssemblyFileVersionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Reflection\AssemblyInformationalVersionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Reflection\AssemblyNameCas.cs" />\r
-    <Compile Include="Test\System.Reflection\AssemblyNameTest.cs" />\r
-    <Compile Include="Test\System.Reflection\AssemblyTest.cs" />\r
-    <Compile Include="Test\System.Reflection\BinderTests.cs" />\r
-    <Compile Include="Test\System.Reflection\ConstructorInfoTest.cs" />\r
-    <Compile Include="Test\System.Reflection\CustomAttributeDataTest.cs" />\r
-    <Compile Include="Test\System.Reflection\EventInfoTest.cs" />\r
-    <Compile Include="Test\System.Reflection\FieldInfoTest.cs" />\r
-    <Compile Include="Test\System.Reflection\IntrospectionExtensionsTest.cs" />\r
-    <Compile Include="Test\System.Reflection\MethodBaseTest.cs" />\r
-    <Compile Include="Test\System.Reflection\MethodInfoTest.cs" />\r
-    <Compile Include="Test\System.Reflection\ModuleCas.cs" />\r
-    <Compile Include="Test\System.Reflection\ModuleTest.cs" />\r
-    <Compile Include="Test\System.Reflection\MonoGenericClassTest.cs" />\r
-    <Compile Include="Test\System.Reflection\ParameterInfoTest.cs" />\r
-    <Compile Include="Test\System.Reflection\PropertyInfoTest.cs" />\r
-    <Compile Include="Test\System.Reflection\ReflectedTypeTest.cs" />\r
-    <Compile Include="Test\System.Reflection\StrongNameKeyPairCas.cs" />\r
-    <Compile Include="Test\System.Reflection\StrongNameKeyPairTest.cs" />\r
-    <Compile Include="Test\System.Reflection\TypeDelegatorTest.cs" />\r
-    <Compile Include="Test\System.Resources\ResourceManagerTest.cs" />\r
-    <Compile Include="Test\System.Resources\ResourceReaderCas.cs" />\r
-    <Compile Include="Test\System.Resources\ResourceReaderTest.cs" />\r
-    <Compile Include="Test\System.Resources\ResourceSetCas.cs" />\r
-    <Compile Include="Test\System.Resources\ResourceSetTest.cs" />\r
-    <Compile Include="Test\System.Resources\ResourceWriterTest.cs" />\r
-    <Compile Include="Test\System.Runtime.CompilerServices\AsyncVoidMethodBuilderTest.cs" />\r
-    <Compile Include="Test\System.Runtime.CompilerServices\ConditionalWeakTableTest.cs" />\r
-    <Compile Include="Test\System.Runtime.CompilerServices\InternalsVisibleToAttributeTest.cs" />\r
-    <Compile Include="Test\System.Runtime.CompilerServices\RuntimeHelpersTest.cs" />\r
-    <Compile Include="Test\System.Runtime.CompilerServices\RuntimeWrappedExceptionCas.cs" />\r
-    <Compile Include="Test\System.Runtime.CompilerServices\RuntimeWrappedExceptionTest.cs" />\r
-    <Compile Include="Test\System.Runtime.CompilerServices\TaskAwaiterTest.cs" />\r
-    <Compile Include="Test\System.Runtime.CompilerServices\TaskAwaiterTest_T.cs" />\r
-    <Compile Include="Test\System.Runtime.CompilerServices\YieldAwaitableTest.cs" />\r
-    <Compile Include="Test\System.Runtime.ExceptionServices\ExceptionDispatchInfoTest.cs" />\r
-    <Compile Include="Test\System.Runtime.InteropServices\ExternalExceptionTest.cs" />\r
-    <Compile Include="Test\System.Runtime.InteropServices\GCHandleTest.cs" />\r
-    <Compile Include="Test\System.Runtime.InteropServices\MarshalTest.cs" />\r
-    <Compile Include="Test\System.Runtime.InteropServices\RuntimeEnvironmentCas.cs" />\r
-    <Compile Include="Test\System.Runtime.InteropServices\RuntimeEnvironmentTest.cs" />\r
-    <Compile Include="Test\System.Runtime.InteropServices\SafeHandleTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Remoting.Channels\ChannelServicesTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Remoting.Contexts\SynchronizationAttributeTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Remoting.Messaging\CallContextTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Remoting.Metadata.W3cXsd2001\SoapHexBinaryTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Remoting\ContextTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Remoting\SoapServicesTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Remoting\SynchronizationAttributeTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization.Formatters.Binary\BinaryFormatterCas.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization.Formatters.Binary\BinaryFormatterTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\ArraySerializationTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\FormatterServicesTests.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\ObjectIDGeneratorTests.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\ObjectManagerTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\SerializationBinderTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\SerializationCallbackTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\SerializationInfoTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\SerializationTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Serialization\SerializationTest2.cs" />\r
-    <Compile Include="Test\System.Runtime.Versioning\ResourceConsumptionAttributeCas.cs" />\r
-    <Compile Include="Test\System.Runtime.Versioning\ResourceConsumptionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Versioning\ResourceExposureAttributeCas.cs" />\r
-    <Compile Include="Test\System.Runtime.Versioning\ResourceExposureAttributeTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Versioning\TargetFrameworkAttributeTest.cs" />\r
-    <Compile Include="Test\System.Runtime.Versioning\VersioningHelperCas.cs" />\r
-    <Compile Include="Test\System.Runtime.Versioning\VersioningHelperTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\AuthorizationRuleTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\CommonAceTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\CommonAclTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\CommonObjectSecurityTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\CommonSecurityDescriptorTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\CryptoKeyAccessRuleTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\DirectoryObjectSecurityTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\DirectorySecurityTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\DiscretionaryAclTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\EventWaitHandleSecurityTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\FileSecurityTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\MutexAccessRuleTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\MutexSecurityTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\ObjectAceTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\ObjectSecurity_TTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\ObjectSecurityTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\RawAclTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\RawSecurityDescriptorTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\RegistrySecurityTest.cs" />\r
-    <Compile Include="Test\System.Security.AccessControl\SystemAclTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509CapiTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509CertificateCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509CertificateTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography.X509Certificates\X509SpcTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\AesCfbTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\AllTests2.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\AsymmetricAlgorithmTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CfbTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CipherModeTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CryptoAPITransformCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CryptoConfigCas.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CryptoConfigTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CryptoStreamTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\CspProviderFlagsTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\DesCfbTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\DESCryptoServiceProviderTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\DESTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\DSACryptoServiceProviderTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\DSASignatureDeformatterTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\DSASignatureFormatterTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\DSATest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\FromBase64Transform.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\HashAlgorithmTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\HMACMD5Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\HMACRIPEMD160Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\HMACSHA1Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\HMACSHA256Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\HMACSHA384Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\HMACSHA512Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\KeyedHashAlgorithmTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\MACTripleDESTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\MD5Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\PaddingModeTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\PasswordDeriveBytesTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\PKCS1MaskGenerationMethodTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RandomNumberGeneratorTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\Rc2CfbTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RC2CryptoServiceProviderTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RC2Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\Rfc2898DeriveBytesTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RijndaelCfbTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RijndaelManagedTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RijndaelTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RIPEMD160ManagedTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RIPEMD160Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RNGCryptoServiceProviderTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RSACryptoServiceProviderTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RSAOAEPKeyExchangeDeformatterTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RSAOAEPKeyExchangeFormatterTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RSAPKCS1KeyExchangeDeformatterTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RSAPKCS1KeyExchangeFormatterTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RSAPKCS1SignatureDeformatterTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RSAPKCS1SignatureFormatterTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\RSATest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA1CryptoServiceProviderTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA1Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA256ManagedTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA256Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA384ManagedTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA384Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA512ManagedTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SHA512Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SignatureDescriptionTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SymmetricAlgorithm2Test.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SymmetricAlgorithmTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\SymmetricAlgorithmTransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\ToBase64TransformTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\TripleDesCfbTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\TripleDESCryptoServiceProviderTest.cs" />\r
-    <Compile Include="Test\System.Security.Cryptography\TripleDESTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\CodeAccessSecurityAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\EnvironmentPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\EnvironmentPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\FileDialogPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\FileDialogPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\FileIOPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\FileIOPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\GacIdentityPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\GacIdentityPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\HostProtectionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\IBuiltInPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\IsolatedStorageFilePermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\IsolatedStorageFilePermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\IsolatedStoragePermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\KeyContainerPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\PermissionSetAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\PrincipalPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\PrincipalPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\PublisherIdentityPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\PublisherIdentityPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\ReflectionPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\ReflectionPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\RegistryPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\RegistryPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\SecurityPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\SecurityPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\SiteIdentityPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\SiteIdentityPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\StrongNameIdentityPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\StrongNameIdentityPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\StrongNamePublicKeyBlobTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\UIPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\UIPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\UrlIdentityPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\UrlIdentityPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\ZoneIdentityPermissionAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security.Permissions\ZoneIdentityPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\AllMembershipConditionTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\ApplicationDirectoryMembershipConditionTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\ApplicationDirectoryTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\ApplicationSecurityManagerCas.cs" />\r
-    <Compile Include="Test\System.Security.Policy\ApplicationSecurityManagerTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\ApplicationTrustTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\CodeGroupTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\EvidenceTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\FileCodeGroupTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\FirstMatchCodeGroupTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\GacMembershipConditionTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\GacTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\HashMembershipConditionTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\HashTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\IBuiltInEvidenceTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\NetCodeGroupTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\PermissionRequestEvidenceTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\PolicyLevelTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\PolicyStatementTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\PublisherMembershipConditionTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\PublisherTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\SiteMembershipConditionTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\SiteTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\StrongNameMembershipConditionTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\StrongNameTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\UnionCodeGroupTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\UrlMembershipConditionTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\UrlTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\ZoneMembershipConditionTest.cs" />\r
-    <Compile Include="Test\System.Security.Policy\ZoneTest.cs" />\r
-    <Compile Include="Test\System.Security.Principal\GenericIdentityTest.cs" />\r
-    <Compile Include="Test\System.Security.Principal\GenericPrincipalTest.cs" />\r
-    <Compile Include="Test\System.Security.Principal\NTAccountTest.cs" />\r
-    <Compile Include="Test\System.Security.Principal\SecurityIdentifierTest.cs" />\r
-    <Compile Include="Test\System.Security.Principal\WindowsIdentityTest.cs" />\r
-    <Compile Include="Test\System.Security.Principal\WindowsPrincipalTest.cs" />\r
-    <Compile Include="Test\System.Security\CodeAccessPermissionCas.cs" />\r
-    <Compile Include="Test\System.Security\CodeAccessPermissionTest.cs" />\r
-    <Compile Include="Test\System.Security\HostSecurityManagerTest.cs" />\r
-    <Compile Include="Test\System.Security\NamedPermissionSetTest.cs" />\r
-    <Compile Include="Test\System.Security\PermissionSetCas.cs" />\r
-    <Compile Include="Test\System.Security\PermissionSetTest.cs" />\r
-    <Compile Include="Test\System.Security\SecureStringCas.cs" />\r
-    <Compile Include="Test\System.Security\SecureStringTest.cs" />\r
-    <Compile Include="Test\System.Security\SecurityContextCas.cs" />\r
-    <Compile Include="Test\System.Security\SecurityContextTest.cs" />\r
-    <Compile Include="Test\System.Security\SecurityCriticalAttributeTest.cs" />\r
-    <Compile Include="Test\System.Security\SecurityElementTest.cs" />\r
-    <Compile Include="Test\System.Security\SecurityExceptionCas.cs" />\r
-    <Compile Include="Test\System.Security\SecurityExceptionTest.cs" />\r
-    <Compile Include="Test\System.Security\SecurityManagerCas.cs" />\r
-    <Compile Include="Test\System.Security\SecurityManagerTest.cs" />\r
-    <Compile Include="Test\System.Security\SecurityStateTest.cs" />\r
-    <Compile Include="Test\System.Security\SecurityTransparentAttributeTest.cs" />\r
-    <Compile Include="Test\System.Text\ASCIIEncodingTest.cs" />\r
-    <Compile Include="Test\System.Text\DecoderReplacementFallbackBufferTest.cs" />\r
-    <Compile Include="Test\System.Text\DecoderReplacementFallbackTest.cs" />\r
-    <Compile Include="Test\System.Text\DecoderTest.cs" />\r
-    <Compile Include="Test\System.Text\EncoderReplacementFallbackBufferTest.cs" />\r
-    <Compile Include="Test\System.Text\EncoderReplacementFallbackTest.cs" />\r
-    <Compile Include="Test\System.Text\EncoderTest.cs" />\r
-    <Compile Include="Test\System.Text\EncodingInfoTest.cs" />\r
-    <Compile Include="Test\System.Text\EncodingTest.cs" />\r
-    <Compile Include="Test\System.Text\StringBuilderTest.cs" />\r
-    <Compile Include="Test\System.Text\TestEncoding.cs" />\r
-    <Compile Include="Test\System.Text\UnicodeEncodingTest.cs" />\r
-    <Compile Include="Test\System.Text\UTF32EncodingTest.cs" />\r
-    <Compile Include="Test\System.Text\UTF7EncodingTest.cs" />\r
-    <Compile Include="Test\System.Text\UTF8EncodingTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks\ConcurrentExclusiveSchedulerPairTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks\ParallelTestHelper.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks\ParallelTests.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks\Task_T_Test.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks\TaskCompletionSourceTests.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks\TaskFactoryTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks\TaskFactoryTest_T.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks\TaskSchedulerTest.cs" />\r
-    <Compile Include="Test\System.Threading.Tasks\TaskTest.cs" />\r
-    <Compile Include="Test\System.Threading\AutoResetEventTest.cs" />\r
-    <Compile Include="Test\System.Threading\CancellationTokenSourceTest.cs" />\r
-    <Compile Include="Test\System.Threading\CancellationTokenTests.cs" />\r
-    <Compile Include="Test\System.Threading\CompressedStackCas.cs" />\r
-    <Compile Include="Test\System.Threading\CompressedStackTest.cs" />\r
-    <Compile Include="Test\System.Threading\CountdownEventTests.cs" />\r
-    <Compile Include="Test\System.Threading\EventWaitHandleTest.cs" />\r
-    <Compile Include="Test\System.Threading\ExecutionContextCas.cs" />\r
-    <Compile Include="Test\System.Threading\ExecutionContextTest.cs" />\r
-    <Compile Include="Test\System.Threading\InterlockedTest.cs" />\r
-    <Compile Include="Test\System.Threading\LazyInitializerTest.cs" />\r
-    <Compile Include="Test\System.Threading\ManualResetEventSlimTests.cs" />\r
-    <Compile Include="Test\System.Threading\MonitorTest.cs" />\r
-    <Compile Include="Test\System.Threading\MutexCas.cs" />\r
-    <Compile Include="Test\System.Threading\MutexTest.cs" />\r
-    <Compile Include="Test\System.Threading\ReaderWriterLockTest.cs" />\r
-    <Compile Include="Test\System.Threading\SemaphoreSlimTests.cs" />\r
-    <Compile Include="Test\System.Threading\SpinLockTests.cs" />\r
-    <Compile Include="Test\System.Threading\ThreadCas.cs" />\r
-    <Compile Include="Test\System.Threading\ThreadLocalTests.cs" />\r
-    <Compile Include="Test\System.Threading\ThreadPoolTest.cs" />\r
-    <Compile Include="Test\System.Threading\ThreadTest.cs" />\r
-    <Compile Include="Test\System.Threading\TimerTest.cs" />\r
-    <Compile Include="Test\System.Threading\VolatileTest.cs" />\r
-    <Compile Include="Test\System.Threading\WaitHandleCas.cs" />\r
-    <Compile Include="Test\System.Threading\WaitHandleTest.cs" />\r
-    <Compile Include="Test\System\ActivatorCas.cs" />\r
-    <Compile Include="Test\System\ActivatorTest.cs" />\r
-    <Compile Include="Test\System\AggregateExceptionTests.cs" />\r
-    <Compile Include="Test\System\AppDomainCas.cs" />\r
-    <Compile Include="Test\System\AppDomainManagerTest.cs" />\r
-    <Compile Include="Test\System\AppDomainSetupTest.cs" />\r
-    <Compile Include="Test\System\AppDomainTest.cs" />\r
-    <Compile Include="Test\System\ApplicationIdentityTest.cs" />\r
-    <Compile Include="Test\System\ApplicationIdTest.cs" />\r
-    <Compile Include="Test\System\ArgumentExceptionTest.cs" />\r
-    <Compile Include="Test\System\ArraySegmentTest.cs" />\r
-    <Compile Include="Test\System\ArraySortArgChecks.cs" />\r
-    <Compile Include="Test\System\ArrayTest.cs" />\r
-    <Compile Include="Test\System\AttributeTest.cs" />\r
-    <Compile Include="Test\System\BadImageFormatExceptionCas.cs" />\r
-    <Compile Include="Test\System\BadImageFormatExceptionTest.cs" />\r
-    <Compile Include="Test\System\BitConverterTest.cs" />\r
-    <Compile Include="Test\System\BooleanTest.cs" />\r
-    <Compile Include="Test\System\BufferTest.cs" />\r
-    <Compile Include="Test\System\ByteTest.cs" />\r
-    <Compile Include="Test\System\CharCategoryTest.cs" />\r
-    <Compile Include="Test\System\CharEnumeratorTest.cs" />\r
-    <Compile Include="Test\System\CharTest.cs" />\r
-    <Compile Include="Test\System\ConsoleCas.cs" />\r
-    <Compile Include="Test\System\ConsoleTest.cs" />\r
-    <Compile Include="Test\System\ConvertTest.cs" />\r
-    <Compile Include="Test\System\DateTimeOffsetTest.cs" />\r
-    <Compile Include="Test\System\DateTimeTest.cs" />\r
-    <Compile Include="Test\System\DecimalFormatterTest.cs" />\r
-    <Compile Include="Test\System\DecimalTest.cs" />\r
-    <Compile Include="Test\System\DecimalTest2.cs" />\r
-    <Compile Include="Test\System\DelegateTest.cs" />\r
-    <Compile Include="Test\System\DoubleFormatterTest.cs" />\r
-    <Compile Include="Test\System\DoubleTest.cs" />\r
-    <Compile Include="Test\System\EnumTest.cs" />\r
-    <Compile Include="Test\System\EnvironmentCas.cs" />\r
-    <Compile Include="Test\System\EnvironmentTest.cs" />\r
-    <Compile Include="Test\System\ExceptionCas.cs" />\r
-    <Compile Include="Test\System\ExceptionTest.cs" />\r
-    <Compile Include="Test\System\FloatingPointFormatterTest.cs" />\r
-    <Compile Include="Test\System\GuidTest.cs" />\r
-    <Compile Include="Test\System\Int16Test.cs" />\r
-    <Compile Include="Test\System\Int32Test.cs" />\r
-    <Compile Include="Test\System\Int64Test.cs" />\r
-    <Compile Include="Test\System\IntegerFormatterTest.cs" />\r
-    <Compile Include="Test\System\IntegerTryParse.cs" />\r
-    <Compile Include="Test\System\IntPtrTest.cs" />\r
-    <Compile Include="Test\System\LazyTest.cs" />\r
-    <Compile Include="Test\System\MarshalByRefObjectCas.cs" />\r
-    <Compile Include="Test\System\MathTest.cs" />\r
-    <Compile Include="Test\System\ModuleHandleTest.cs" />\r
-    <Compile Include="Test\System\MulticastDelegate.cs" />\r
-    <Compile Include="Test\System\NullableTest.cs" />\r
-    <Compile Include="Test\System\NumberFormatterTest.cs" />\r
-    <Compile Include="Test\System\ObjectTest.cs" />\r
-    <Compile Include="Test\System\ObsoleteAttributeTest.cs" />\r
-    <Compile Include="Test\System\RandomTest.cs" />\r
-    <Compile Include="Test\System\ResolveEventArgsTest.cs" />\r
-    <Compile Include="Test\System\RuntimeFieldHandleTest.cs" />\r
-    <Compile Include="Test\System\RuntimeMethodHandleCas.cs" />\r
-    <Compile Include="Test\System\RuntimeMethodHandleTest.cs" />\r
-    <Compile Include="Test\System\RuntimeTypeHandleTest.cs" />\r
-    <Compile Include="Test\System\SByteTest.cs" />\r
-    <Compile Include="Test\System\SingleFormatterTest.cs" />\r
-    <Compile Include="Test\System\SingleTest.cs" />\r
-    <Compile Include="Test\System\StringComparerTest.cs" />\r
-    <Compile Include="Test\System\StringTest.cs" />\r
-    <Compile Include="Test\System\TimeSpanTest.cs" />\r
-    <Compile Include="Test\System\TimeZoneTest.cs" />\r
-    <Compile Include="Test\System\TupleTest.cs" />\r
-    <Compile Include="Test\System\TypedReferenceCas.cs" />\r
-    <Compile Include="Test\System\TypeTest.cs" />\r
-    <Compile Include="Test\System\UInt16Test.cs" />\r
-    <Compile Include="Test\System\UInt32Test.cs" />\r
-    <Compile Include="Test\System\UInt64Test.cs" />\r
-    <Compile Include="Test\System\UIntPtrTest.cs" />\r
-    <Compile Include="Test\System\ValueTypeTest.cs" />\r
-    <Compile Include="Test\System\VersionTest.cs" />\r
-    <Compile Include="Test\System\WeakReferenceTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{E9A655D1-EE99-467A-8F4B-CAC80E0E65BE}</Project>\r
-      <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{8B53B0E9-E0CA-4378-8C57-F85D518871D3}</Project>\r
-      <Name>System.Core\System.Core-net_4_0</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="Test/resources/Resources.resources">\r
-      <LogicalName>Resources.resources</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
index 7af21cc117bf581d15584d8654d68b906d2ce25c..f76b8d5ffcf8d8296f2f015049d9f7d955e116f4 100644 (file)
@@ -142,6 +142,7 @@ System/TimeZoneInfo.Android.cs
 System/TimeZoneInfo.MonoTouch.cs
 System/TimeZoneInfo.Serialization.cs
 ../../build/common/MonoTODOAttribute.cs
+System/TypeIdentifier.cs
 System/TypeSpec.cs
 System/TypeCode.cs
 System/UIntPtr.cs
@@ -163,10 +164,13 @@ System.Diagnostics/StackFrame.cs
 System.Diagnostics/StackTrace.cs
 System.Diagnostics.Tracing/EventAttribute.cs
 System.Diagnostics.Tracing/EventCommand.cs
-System.Diagnostics.Tracing/EventKeywords.cs
-System.Diagnostics.Tracing/EventLevel.cs
+../../../external/referencesource/mscorlib/system/diagnostics/eventing/winmeta.cs
+../../../external/referencesource/mscorlib/system/diagnostics/eventing/eventactivityoptions.cs
+../../../external/referencesource/mscorlib/system/diagnostics/eventing/TraceLogging/EventSourceOptions.cs
+../../../external/referencesource/mscorlib/system/diagnostics/eventing/TraceLogging/TraceLoggingEventTraits.cs
 System.Diagnostics.Tracing/EventSource.cs
 System.Diagnostics.Tracing/EventSourceAttribute.cs
+System.Diagnostics.Tracing/EventSourceSettings.cs
 System.Diagnostics.Tracing/EventCommandEventArgs.cs
 System.Diagnostics.Tracing/NonEventAttribute.cs
 System.Diagnostics.SymbolStore/ISymbolBinder.cs
@@ -731,6 +735,9 @@ System.Security.Cryptography/SHA1CryptoServiceProvider.cs
 System.Security.Cryptography/TripleDESCryptoServiceProvider.cs
 System.Security.Cryptography.X509Certificates/X509Certificate.cs
 System.Security.Cryptography.X509Certificates/X509Certificate20.cs
+System.Security.Cryptography.X509Certificates/X509CertificateImpl.cs
+System.Security.Cryptography.X509Certificates/X509CertificateImplMono.cs
+System.Security.Cryptography.X509Certificates/X509Helper.cs
 System.Security.Cryptography.X509Certificates/X509ContentType.cs
 System.Security.Cryptography.X509Certificates/X509KeyStorageFlags.cs
 System.Security.Permissions/CodeAccessSecurityAttribute.cs
@@ -882,6 +889,7 @@ System.Threading.Tasks/DecoupledTask.cs
 ../Mono.Parallel/Mono.Threading/AtomicBoolean.cs
 
 ReferenceSources/__ConsoleStream.cs
+ReferenceSources/AppContextSwitches.cs
 ReferenceSources/Array.cs
 ReferenceSources/BCLDebug.cs
 ReferenceSources/CalendarData.cs
@@ -1019,6 +1027,7 @@ ReferenceSources/SecurityContext.cs
 ../../../external/referencesource/mscorlib/system/outofmemoryexception.cs
 ../../../external/referencesource/mscorlib/system/overflowexception.cs
 ../../../external/referencesource/mscorlib/system/paramarrayattribute.cs
+../../../external/referencesource/mscorlib/system/paramsarray.cs
 ../../../external/referencesource/mscorlib/system/platformnotsupportedexception.cs
 ../../../external/referencesource/mscorlib/system/progress.cs
 ../../../external/referencesource/mscorlib/system/random.cs
@@ -1131,6 +1140,7 @@ ReferenceSources/SecurityContext.cs
 ../../../external/referencesource/mscorlib/system/globalization/bidicategory.cs
 ../../../external/referencesource/mscorlib/system/globalization/calendar.cs
 ../../../external/referencesource/mscorlib/system/globalization/calendaralgorithmtype.cs
+../../../external/referencesource/mscorlib/system/globalization/CalendricalCalculationsHelper.cs
 ../../../external/referencesource/mscorlib/system/globalization/calendardata.cs
 ../../../external/referencesource/mscorlib/system/globalization/calendarweekrule.cs
 ../../../external/referencesource/mscorlib/system/globalization/charunicodeinfo.cs
@@ -1387,6 +1397,7 @@ ReferenceSources/SecurityContext.cs
 ../../../external/referencesource/mscorlib/system/security/cryptography/dsasignaturedeformatter.cs
 ../../../external/referencesource/mscorlib/system/security/cryptography/dsasignatureformatter.cs
 ../../../external/referencesource/mscorlib/system/security/cryptography/hashalgorithm.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/HashAlgorithmName.cs
 ../../../external/referencesource/mscorlib/system/security/cryptography/hmac.cs
 ../../../external/referencesource/mscorlib/system/security/cryptography/hmacmd5.cs
 ../../../external/referencesource/mscorlib/system/security/cryptography/hmacripemd160.cs
@@ -1415,6 +1426,10 @@ ReferenceSources/SecurityContext.cs
 ../../../external/referencesource/mscorlib/system/security/cryptography/rsaoaepkeyexchangeformatter.cs
 ../../../external/referencesource/mscorlib/system/security/cryptography/rsapkcs1keyexchangedeformatter.cs
 ../../../external/referencesource/mscorlib/system/security/cryptography/rsapkcs1keyexchangeformatter.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/RSAEncryptionPadding.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/RSAEncryptionPaddingMode.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/RSASignaturePadding.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/RSASignaturePaddingMode.cs
 ../../../external/referencesource/mscorlib/system/security/cryptography/sha1.cs
 ../../../external/referencesource/mscorlib/system/security/cryptography/sha1managed.cs
 ../../../external/referencesource/mscorlib/system/security/cryptography/sha256.cs
@@ -1514,6 +1529,7 @@ ReferenceSources/SecurityContext.cs
 ../../../external/referencesource/mscorlib/system/runtime/versioning/binarycompatibility.cs
 ../../../external/referencesource/mscorlib/system/runtime/versioning/componentguaranteesattribute.cs
 ../../../external/referencesource/mscorlib/system/runtime/versioning/multitargetinghelpers.cs
+../../../external/referencesource/mscorlib/system/runtime/versioning/NonVersionableAttribute.cs
 ../../../external/referencesource/mscorlib/system/runtime/versioning/resourceattributes.cs
 ../../../external/referencesource/mscorlib/system/runtime/versioning/targetframeworkattribute.cs
 ../../../external/referencesource/mscorlib/system/runtime/versioning/targetframeworkid.cs
@@ -1552,6 +1568,7 @@ ReferenceSources/SecurityContext.cs
 ../../../external/referencesource/mscorlib/system/threading/waithandlecannotbeopenedexception.cs
 ../../../external/referencesource/mscorlib/system/threading/threadpool.cs
 
+../../../external/referencesource/mscorlib/system/threading/Tasks/AsyncCausalityTracer.cs
 ../../../external/referencesource/mscorlib/system/threading/Tasks/BeginEndAwaitableAdapter.cs
 ../../../external/referencesource/mscorlib/system/threading/Tasks/TaskFactory.cs
 ../../../external/referencesource/mscorlib/system/threading/Tasks/FutureFactory.cs
index baad693bffc1f7c5f147b72f4763e0d93ac817fc..70454d6e5ec91dde8aca84122142059f7158eb83 100644 (file)
@@ -55,6 +55,7 @@ System.Collections.ObjectModel/ReadOnlyCollectionTest.cs
 System/ConsoleTest.cs
 System/ConvertTest.cs
 System/DateTimeOffsetTest.cs
+System/DateTimeOffsetTestCoreFx.cs
 System/DateTimeTest.cs
 System/DecimalFormatterTest.cs
 System/DecimalTest2.cs
diff --git a/mcs/class/corlib/monotouch_tv_runtime_corlib.dll.sources b/mcs/class/corlib/monotouch_tv_runtime_corlib.dll.sources
new file mode 100644 (file)
index 0000000..9e173da
--- /dev/null
@@ -0,0 +1 @@
+#include corlib.dll.sources
\ No newline at end of file
diff --git a/mcs/class/corlib/monotouch_watch_runtime_corlib.dll.sources b/mcs/class/corlib/monotouch_watch_runtime_corlib.dll.sources
new file mode 100644 (file)
index 0000000..9e173da
--- /dev/null
@@ -0,0 +1 @@
+#include corlib.dll.sources
\ No newline at end of file
index 4da895bd203ea3e01e8472a2c576b0626fd08487..ad4c33d19fbeccc8e99dc248c4a0425c7a92a996 100644 (file)
@@ -24,7 +24,7 @@ using Microsoft.Scripting.Utils;
 namespace Microsoft.Scripting.Interpreter {
     internal abstract class EqualInstruction : ComparisonInstruction {
         // Perf: EqualityComparer<T> but is 3/2 to 2 times slower.
-        private static Instruction _Reference, _Boolean, _SByte, _Int16, _Char, _Int32, _Int64, _Byte, _UInt16, _UInt32, _UInt64, _Single, _Double;
+        private static Instruction _Reference, _Boolean, _SByte, _Int16, _Char, _String, _Int32, _Int64, _Byte, _UInt16, _UInt32, _UInt64, _Single, _Double;
         private static Instruction _BooleanLifted, _SByteLifted, _Int16Lifted, _CharLifted, _Int32Lifted, _Int64Lifted,
             _ByteLifted, _UInt16Lifted, _UInt32Lifted, _UInt64Lifted, _SingleLifted, _DoubleLifted;
 
@@ -64,6 +64,13 @@ namespace Microsoft.Scripting.Interpreter {
             }
         }
 
+        internal sealed class EqualString : EqualInstruction {
+            protected override object DoCalculate (object l, object r)
+            {
+                return (String)l == (String)r;
+            }
+        }
+
         internal sealed class EqualInt32 : EqualInstruction {
             protected override object DoCalculate (object l, object r)
             {
@@ -140,6 +147,7 @@ namespace Microsoft.Scripting.Interpreter {
                 case TypeCode.SByte: return _SByte ?? (_SByte = new EqualSByte());
                 case TypeCode.Byte: return _Byte ?? (_Byte = new EqualByte());
                 case TypeCode.Char: return _Char ?? (_Char = new EqualChar());
+                case TypeCode.String: return _String ?? (_String = new EqualString());
                 case TypeCode.Int16: return _Int16 ?? (_Int16 = new EqualInt16());
                 case TypeCode.Int32: return _Int32 ?? (_Int32 = new EqualInt32());
                 case TypeCode.Int64: return _Int64 ?? (_Int64 = new EqualInt64());
index 396c3ff71591af1fee0df35dd4b55f84fcc14e28..ebf5e68885adae3db019e0d38310932c1771fd45 100644 (file)
@@ -24,7 +24,7 @@ using Microsoft.Scripting.Utils;
 namespace Microsoft.Scripting.Interpreter {
     internal abstract class NotEqualInstruction : ComparisonInstruction {
         // Perf: EqualityComparer<T> but is 3/2 to 2 times slower.
-        private static Instruction _Reference, _Boolean, _SByte, _Int16, _Char, _Int32, _Int64, _Byte, _UInt16, _UInt32, _UInt64, _Single, _Double;
+        private static Instruction _Reference, _Boolean, _SByte, _Int16, _Char, _String, _Int32, _Int64, _Byte, _UInt16, _UInt32, _UInt64, _Single, _Double;
         private static Instruction _BooleanLifted, _SByteLifted, _Int16Lifted, _CharLifted, _Int32Lifted, _Int64Lifted,
             _ByteLifted, _UInt16Lifted, _UInt32Lifted, _UInt64Lifted, _SingleLifted, _DoubleLifted;
 
@@ -64,6 +64,13 @@ namespace Microsoft.Scripting.Interpreter {
             }
         }
 
+        internal sealed class NotEqualString : NotEqualInstruction {
+            protected override object DoCalculate (object l, object r)
+            {
+                return (String)l != (String)r;
+            }
+        }
+
         internal sealed class NotEqualInt32 : NotEqualInstruction {
             protected override object DoCalculate (object l, object r)
             {
@@ -140,6 +147,7 @@ namespace Microsoft.Scripting.Interpreter {
                 case TypeCode.SByte: return _SByte ?? (_SByte = new NotEqualSByte());
                 case TypeCode.Byte: return _Byte ?? (_Byte = new NotEqualByte());
                 case TypeCode.Char: return _Char ?? (_Char = new NotEqualChar());
+                case TypeCode.String: return _String ?? (_String = new NotEqualString());
                 case TypeCode.Int16: return _Int16 ?? (_Int16 = new NotEqualInt16());
                 case TypeCode.Int32: return _Int32 ?? (_Int32 = new NotEqualInt32());
                 case TypeCode.Int64: return _Int64 ?? (_Int64 = new NotEqualInt64());
index c58b0353f918ac4f8f165396b809f6013ec5815a..779d93a108622e138c1ffca53aeead00d33af366 100644 (file)
@@ -1278,7 +1278,7 @@ namespace Microsoft.Scripting.Interpreter {
             // also could be a mutable value type, Delegate.CreateDelegate and MethodInfo.Invoke both can't handle this, we
             // need to generate code.
             if (!CollectionUtils.TrueForAll(parameters, (p) => !p.ParameterType.IsByRef) ||
-                (!node.Method.IsStatic && node.Method.DeclaringType.IsValueType() && !node.Method.DeclaringType.IsPrimitive())) {
+                (!node.Method.IsStatic && node.Method.DeclaringType.IsValueType && node.Method.DeclaringType.Assembly != typeof (object).Assembly)) {
 #if MONO_INTERPRETER
                 throw new NotImplementedException ("Interpreter of ref types");
 #else
index ccf4b4bb12d91b9720c874de7062d13928296514..2f46c6cc0fddccb6aa562c3bc515ef73c0727b35 100644 (file)
@@ -226,32 +226,24 @@ namespace Monodoc.Ecma
                        return sb.ToString ();
                }
 
-               void ConstructCRef (StringBuilder sb)
+               void ConstructCRef (StringBuilder sb, bool skipLeadingDot = false)
                {
+                       if (string.IsNullOrEmpty (Namespace))
+                               skipLeadingDot = true;
+
                        sb.Append (Namespace);
                        if (DescKind == Kind.Namespace)
                                return;
 
-                       sb.Append ('.');
+                       if (!skipLeadingDot)
+                               sb.Append ('.');
+
                        sb.Append (TypeName);
-                       if (GenericTypeArguments != null && GenericTypeArgumentsIsNumeric) {
-                               sb.AppendFormat ("`{0}", GenericTypeArgumentsCount);
-                       } else if (GenericTypeArguments != null) {
-                               sb.Append ('<');
-                               int i=0;
-                               foreach (var t in GenericTypeArguments) {
-                                       if (i > 0) {
-                                               sb.Append (",");
-                                       }
-                                       t.ConstructCRef (sb);
+                       AppendGenericArguments (sb, GenericTypeArguments, GenericTypeArgumentsIsNumeric, GenericTypeArgumentsCount);
 
-                                       i++;
-                               }
-                               sb.Append ('>');
-                       }
                        if (NestedType != null) {
                                sb.Append ('+');
-                               NestedType.ConstructCRef (sb);
+                               NestedType.ConstructCRef (sb, skipLeadingDot: true);
                        }
                        if (ArrayDimensions != null && ArrayDimensions.Count > 0) {
                                for (int i = 0; i < ArrayDimensions.Count; i++) {
@@ -263,9 +255,18 @@ namespace Monodoc.Ecma
                        if (DescKind == Kind.Type)
                                return;
 
+                       if (ExplicitImplMember != null) {
+                               sb.Append ('$');
+                               ExplicitImplMember.DescKind = this.DescKind;
+                               ExplicitImplMember.ConstructCRef (sb, skipLeadingDot: false);
+                               return;
+                       }
+
                        sb.Append (".");
                        sb.Append (MemberName);
 
+                       AppendGenericArguments (sb, GenericMemberArguments, GenericMemberArgumentsIsNumeric, GenericMemberArgumentsCount);
+
                        if (MemberArguments != null && MemberArgumentsCount > 0) {
                                sb.Append ("(");
                                int i=0;
@@ -280,6 +281,25 @@ namespace Monodoc.Ecma
                        }
                }
 
+               void AppendGenericArguments (StringBuilder sb, IEnumerable<EcmaDesc> arguments, bool isNumeric, int argumentsCount)
+               {
+                       if (arguments != null && isNumeric) {
+                               sb.AppendFormat ("`{0}", argumentsCount);
+                       } else if (arguments != null) {
+                               sb.Append ('<');
+                               int i=0;
+                               foreach (var t in arguments) {
+                                       if (i > 0) {
+                                               sb.Append (",");
+                                       }
+                                       t.ConstructCRef (sb);
+
+                                       i++;
+                               }
+                               sb.Append ('>');
+                       }
+               }
+
                public override string ToString ()
                {
                        return string.Format ("({8}) {0}::{1}{2}{3}{7} {4}{5}{6} {9} {10}",
index 1c8d44311e616b1b250ec5688addd98e553d3809..8e27bc08b13e52b531fbac1494e57989c73d3db9 100644 (file)
@@ -52,6 +52,22 @@ namespace MonoTests.Monodoc.Ecma
                        Assert.AreEqual (expected, actual, "Converted URL differs");
                }
 
+               void AssertEcmaString (string expected, EcmaDesc actual)
+               {
+                       string actualString = actual.ToEcmaCref ();
+                       Assert.AreEqual (expected, actualString);
+               }
+
+               IEnumerable<EcmaDesc> GenericTypeArgumentsList (params string[] parameters) 
+               {
+                       foreach (var p in parameters)
+                               yield return new EcmaDesc {
+                                               DescKind = EcmaDesc.Kind.Type,
+                                               TypeName = p,
+                                               Namespace = string.Empty
+                                       };
+               }
+
                [Test]
                public void CommonMethodUrlIsValidTest ()
                {
@@ -454,38 +470,370 @@ namespace MonoTests.Monodoc.Ecma
                        AssertUrlDesc (ast, "P:System.Web.SessionState.HttpSessionStateContainer$System.Web.SessionState.IHttpSessionState.Item(System.Int32)");
                }
 
-               /*              [Test]
-               public void TreeParsabilityTest ()
+               [Test]
+               public void ToEcmaCref_Namespace ()
                {
-                       var rootTree = RootTree.LoadTree ("/home/jeremie/monodoc/");
-                       Node result;
-                       var generator = new CheckGenerator ();
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Namespace,
+                               Namespace = "System.IO",
+                       };
 
-                       foreach (var leaf in GetLeaves (rootTree.RootNode).Where (IsEcmaNode))
-                               AssertUrl (leaf.PublicUrl);
+                       AssertEcmaString ("N:System.IO", actual);
                }
 
-               IEnumerable<Node> GetLeaves (Node node)
+               [Test]
+               public void ToEcmaCref_SimpleType ()
                {
-                       if (node == null)
-                               yield break;
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Type,
+                               Namespace = "System.IO",
+                               TypeName = "Path",
+                       };
 
-                       if (node.IsLeaf)
-                               yield return node;
-                       else {
-                               foreach (var child in node.Nodes) {
-                                       if (!string.IsNullOrEmpty (child.Element) && !child.Element.StartsWith ("root:/"))
-                                               yield return child;
-                                       foreach (var childLeaf in GetLeaves (child))
-                                               yield return childLeaf;
-                               }
-                       }
+                       AssertEcmaString ("T:System.IO.Path", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_NestedType ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Type,
+                               Namespace = "System.IO",
+                               TypeName = "Path",
+                               NestedType = new EcmaDesc {
+                                       DescKind = EcmaDesc.Kind.Type,
+                                       TypeName = "TheNestedType",
+                               },
+                       };
+
+                       AssertEcmaString ("T:System.IO.Path+TheNestedType", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_NestedType_FourDeep ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Type,
+                               Namespace = "Mono",
+                               TypeName = "DocTest",
+                               NestedType = new EcmaDesc {
+                                       DescKind = EcmaDesc.Kind.Type,
+                                       TypeName = "NestedClass",
+                                       NestedType = new EcmaDesc {
+                                               DescKind = EcmaDesc.Kind.Type,
+                                               TypeName = "Double",
+                                               NestedType = new EcmaDesc {
+                                                       DescKind = EcmaDesc.Kind.Type,
+                                                       TypeName = "Triple",
+                                                       NestedType = new EcmaDesc {
+                                                               DescKind = EcmaDesc.Kind.Type,
+                                                               TypeName = "Quadruple",
+                                                       },
+                                               },
+                                       },
+                               },
+                       };
+
+                       string targetUrl = "T:Mono.DocTest+NestedClass+Double+Triple+Quadruple";
+                       AssertEcmaString (targetUrl, actual);
+                       AssertUrlDesc (actual, targetUrl);
+               }
+
+               [Test]
+               public void ToEcmaCref_NestedType_Field ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Field,
+                               Namespace = "System.IO",
+                               TypeName = "Path",
+                               NestedType = new EcmaDesc {
+                                       DescKind = EcmaDesc.Kind.Type,
+                                       TypeName = "TheNestedType",
+                               },
+                               MemberName = "NestedField"
+                       };
+
+                       AssertEcmaString ("F:System.IO.Path+TheNestedType.NestedField", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_SimpleType_WithGenerics ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Type,
+                               Namespace = "System.IO",
+                               TypeName = "Path",
+                               GenericTypeArguments = GenericTypeArgumentsList ("K").ToArray ()
+                       };
+
+                       AssertEcmaString ("T:System.IO.Path<K>", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_Nestedype_WithGenerics ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Type,
+                               Namespace = "System.IO",
+                               TypeName = "Path",
+                               NestedType = new EcmaDesc {
+                                       DescKind = EcmaDesc.Kind.Type,
+                                       TypeName = "TheNestedType",
+                               },
+                               GenericTypeArguments = GenericTypeArgumentsList ("K").ToArray ()
+                       };
+
+                       AssertEcmaString ("T:System.IO.Path<K>+TheNestedType", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_Nestedype_WithGenericsOnBoth ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Type,
+                               Namespace = "System.IO",
+                               TypeName = "Path",
+                               NestedType = new EcmaDesc {
+                                       DescKind = EcmaDesc.Kind.Type,
+                                       TypeName = "TheNestedType",
+                                       GenericTypeArguments = GenericTypeArgumentsList ("T", "V").ToArray (),
+                               },
+                               GenericTypeArguments = GenericTypeArgumentsList ("K").ToArray ()
+                       };
+
+                       AssertEcmaString ("T:System.IO.Path<K>+TheNestedType<T,V>", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_Nestedype_Property_WithGenericsOnBoth ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Property,
+                               Namespace = "System.IO",
+                               TypeName = "Path",
+                               NestedType = new EcmaDesc {
+                                       DescKind = EcmaDesc.Kind.Type,
+                                       TypeName = "TheNestedType",
+                                       GenericTypeArguments = GenericTypeArgumentsList ("T", "V").ToArray (),
+                               },
+                               GenericTypeArguments = GenericTypeArgumentsList ("K").ToArray (),
+                               MemberName = "TheProperty"
+                       };
+
+                       AssertEcmaString ("P:System.IO.Path<K>+TheNestedType<T,V>.TheProperty", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_Field ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Field,
+                               Namespace = "System.IO",
+                               TypeName = "Path",
+                               MemberName = "TheField"
+                       };
+
+                       AssertEcmaString ("F:System.IO.Path.TheField", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_ExplicitlyImplemented_Field ()
+               {
+                       var explicitImpl = new EcmaDesc {
+                               Namespace = "System.Web.SessionState",
+                               TypeName = "IHttpSessionState",
+                               MemberName = "Item",
+                       };
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Field,
+                               TypeName = "HttpSessionStateContainer",
+                               Namespace = "System.Web.SessionState",
+                               ExplicitImplMember = explicitImpl,
+                       };
+                       AssertEcmaString ("F:System.Web.SessionState.HttpSessionStateContainer$System.Web.SessionState.IHttpSessionState.Item", actual);
+               }               
+
+               [Test]
+               public void ToEcmaCref_Property ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Property,
+                               Namespace = "System.IO",
+                               TypeName = "Path",
+                               MemberName = "TheProperty",
+                       };
+
+                       AssertEcmaString ("P:System.IO.Path.TheProperty", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_ExplicitlyImplemented_Property ()
+               {
+                       var explicitImpl = new EcmaDesc {
+                               Namespace = "System.Web.SessionState",
+                               TypeName = "IHttpSessionState",
+                               MemberName = "Item",
+                       };
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Property,
+                               TypeName = "HttpSessionStateContainer",
+                               Namespace = "System.Web.SessionState",
+                               ExplicitImplMember = explicitImpl,
+                       };
+                       AssertEcmaString ("P:System.Web.SessionState.HttpSessionStateContainer$System.Web.SessionState.IHttpSessionState.Item", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_ExplicitlyImplemented_Method ()
+               {
+                       var explicitImpl = new EcmaDesc {
+                               Namespace = "System.Web.SessionState",
+                               TypeName = "IHttpSessionState",
+                               MemberName = "Item",
+                               MemberArguments = new [] {
+                                       new EcmaDesc {
+                                               DescKind = EcmaDesc.Kind.Type,
+                                               Namespace = "System",
+                                               TypeName = "Int32",
+                                       },
+                               },
+                       };
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Method,
+                               TypeName = "HttpSessionStateContainer",
+                               Namespace = "System.Web.SessionState",
+                               ExplicitImplMember = explicitImpl,
+                       };
+                       AssertEcmaString ("M:System.Web.SessionState.HttpSessionStateContainer$System.Web.SessionState.IHttpSessionState.Item(System.Int32)", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_Event ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Event,
+                               Namespace = "System.IO",
+                               TypeName = "Path",
+                               MemberName = "TheEvent",
+                       };
+
+                       AssertEcmaString ("E:System.IO.Path.TheEvent", actual);
                }
 
-               bool IsEcmaNode (Node node)
+               [Test]
+               public void ToEcmaCref_Operator ()
                {
-                       var url = node.PublicUrl;
-                       return url != null && url.Length > 2 && url[1] == ':';
-               }*/
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Operator,
+                               Namespace = "System",
+                               TypeName = "Int32",
+                               MemberName = "Addition",
+                       };
+
+                       AssertEcmaString ("O:System.Int32.Addition", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_Operator_Conversion ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Operator,
+                               Namespace = "System",
+                               TypeName = "Int32",
+                               MemberName = "ExplicitConversion",
+                               MemberArguments = new [] { 
+                                       new EcmaDesc { 
+                                               DescKind = EcmaDesc.Kind.Type,
+                                               Namespace = "System",
+                                               TypeName = "Double",
+                                       },
+                                       new EcmaDesc {
+                                               DescKind = EcmaDesc.Kind.Type,
+                                               Namespace = "System",
+                                               TypeName = "Int32",
+                                       }
+                               },
+                       };
+
+                       AssertEcmaString ("O:System.Int32.ExplicitConversion(System.Double,System.Int32)", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_Method ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Method,
+                               Namespace = "System",
+                               TypeName = "Int32",
+                               MemberName = "Add"
+                       };
+
+                       AssertEcmaString ("M:System.Int32.Add", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_Method_Parameters ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Method,
+                               Namespace = "System",
+                               TypeName = "Int32",
+                               MemberName = "Add",
+                               MemberArguments = new [] { 
+                                       new EcmaDesc {
+                                               DescKind = EcmaDesc.Kind.Type,
+                                               Namespace = "System",
+                                               TypeName = "Double",
+                                       },
+                                       new EcmaDesc {
+                                               DescKind = EcmaDesc.Kind.Type,
+                                               Namespace = "System",
+                                               TypeName = "Int32",
+                                       },
+                               },
+                       };
+
+                       AssertEcmaString ("M:System.Int32.Add(System.Double,System.Int32)", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_Method_Generics ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Method,
+                               Namespace = "System",
+                               TypeName = "Int32",
+                               MemberName = "Add",
+                               GenericMemberArguments = GenericTypeArgumentsList ("T", "K").ToArray (),
+                       };
+
+                       AssertEcmaString ("M:System.Int32.Add<T,K>", actual);
+               }
+
+               [Test]
+               public void ToEcmaCref_Method_Generics_PlusParameters ()
+               {
+                       var actual = new EcmaDesc {
+                               DescKind = EcmaDesc.Kind.Method,
+                               Namespace = "System",
+                               TypeName = "Int32",
+                               MemberName = "Add",
+                               GenericMemberArguments = GenericTypeArgumentsList ("T", "K").ToArray (),
+                               MemberArguments = new [] { 
+                                       new EcmaDesc {
+                                               DescKind = EcmaDesc.Kind.Type,
+                                               Namespace = "",
+                                               TypeName = "T",
+                                       },
+                                       new EcmaDesc {
+                                               DescKind = EcmaDesc.Kind.Type,
+                                               Namespace = "",
+                                               TypeName = "K",
+                                       },
+                               },
+                       };
+
+                       AssertEcmaString ("M:System.Int32.Add<T,K>(T,K)", actual);
+               }
        }
 }
diff --git a/mcs/class/monodoc/monodoc-net_4_5.csproj b/mcs/class/monodoc/monodoc-net_4_5.csproj
deleted file mode 100644 (file)
index d228f88..0000000
+++ /dev/null
@@ -1,759 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{141D4A4E-C16C-4FF6-9E35-54AF58BE6080}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>618,612,672,809,1699,169,164,162,168,219,618,612</NoWarn>\r
-    <OutputPath>./../../class/lib/net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>True</NoConfig>\r
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>monodoc</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  \r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>618,612,672,809,1699,169,164,162,168,219,618,612</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;LEGACY_MODE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>618,612,672,809,1699,169,164,162,168,219,618,612</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>LEGACY_MODE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Analyzer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\ASCIIFoldingFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\BaseCharFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\CachingTokenFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\CharArraySet.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\CharFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\CharReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\CharStream.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\CharTokenizer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\ISOLatin1AccentFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\KeywordAnalyzer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\KeywordTokenizer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\LengthFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\LetterTokenizer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\LowerCaseFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\LowerCaseTokenizer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\MappingCharFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\NormalizeCharMap.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\NumericTokenStream.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\PerFieldAnalyzerWrapper.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\PorterStemFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\PorterStemmer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\SimpleAnalyzer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Standard\StandardAnalyzer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Standard\StandardFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Standard\StandardTokenizer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Standard\StandardTokenizerImpl.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\StopAnalyzer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\StopFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\TeeSinkTokenFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Token.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenattributes\FlagsAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenattributes\IFlagsAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenattributes\IOffsetAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenattributes\IPayloadAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenattributes\IPositionIncrementAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenattributes\ITermAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenattributes\ITypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenattributes\OffsetAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenattributes\PayloadAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenattributes\PositionIncrementAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenattributes\TermAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenattributes\TypeAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\TokenFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\Tokenizer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\TokenStream.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\WhitespaceAnalyzer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\WhitespaceTokenizer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Analysis\WordlistLoader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\AbstractField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\CompressionTools.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\DateField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\DateTools.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\Document.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\Field.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\Fieldable.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\FieldSelector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\FieldSelectorResult.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\LoadFirstFieldSelector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\MapFieldSelector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\NumberTools.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\NumericField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Document\SetBasedFieldSelector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\AbstractAllTermDocs.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\AllTermDocs.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\BufferedDeletes.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\ByteBlockPool.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\ByteSliceReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\ByteSliceWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\CharBlockPool.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\CheckIndex.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\CompoundFileReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\CompoundFileWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\ConcurrentMergeScheduler.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\CorruptIndexException.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DefaultSkipListReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DefaultSkipListWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DirectoryReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocConsumer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocConsumerPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocFieldConsumer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocFieldConsumerPerField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocFieldConsumerPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocFieldConsumers.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocFieldConsumersPerField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocFieldConsumersPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocFieldProcessor.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocFieldProcessorPerField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocFieldProcessorPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocInverter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocInverterPerField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocInverterPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocumentsWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\DocumentsWriterThreadState.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FieldInfo.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FieldInfos.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FieldInvertState.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FieldReaderException.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FieldSortedTermVectorMapper.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FieldsReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FieldsWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FilterIndexReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FormatPostingsDocsConsumer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FormatPostingsDocsWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FormatPostingsFieldsConsumer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FormatPostingsFieldsWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FormatPostingsPositionsConsumer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FormatPostingsPositionsWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FormatPostingsTermsConsumer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FormatPostingsTermsWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FreqProxFieldMergeState.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FreqProxTermsWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FreqProxTermsWriterPerField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\FreqProxTermsWriterPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\IndexCommit.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\IndexDeletionPolicy.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\IndexFileDeleter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\IndexFileNameFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\IndexFileNames.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\IndexReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\IndexWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\IntBlockPool.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\InvertedDocConsumer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\InvertedDocConsumerPerField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\InvertedDocConsumerPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\InvertedDocEndConsumer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\InvertedDocEndConsumerPerField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\InvertedDocEndConsumerPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\KeepOnlyLastCommitDeletionPolicy.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\LogByteSizeMergePolicy.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\LogDocMergePolicy.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\LogMergePolicy.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\MergeDocIDRemapper.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\MergePolicy.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\MergeScheduler.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\MultiLevelSkipListReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\MultiLevelSkipListWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\MultipleTermPositions.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\MultiReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\NormsWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\NormsWriterPerField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\NormsWriterPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\ParallelReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\Payload.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\PositionBasedTermVectorMapper.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\RawPostingList.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\ReadOnlyDirectoryReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\ReadOnlySegmentReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\ReusableStringReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SegmentInfo.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SegmentInfos.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SegmentMergeInfo.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SegmentMergeQueue.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SegmentMerger.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SegmentReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SegmentTermDocs.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SegmentTermEnum.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SegmentTermPositions.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SegmentTermPositionVector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SegmentTermVector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SegmentWriteState.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SerialMergeScheduler.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SnapshotDeletionPolicy.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\SortedTermVectorMapper.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\StaleReaderException.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\StoredFieldsWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\StoredFieldsWriterPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\Term.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermBuffer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermDocs.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermEnum.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermFreqVector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermInfo.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermInfosReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermInfosWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermPositions.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermPositionVector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermsHash.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermsHashConsumer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermsHashConsumerPerField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermsHashConsumerPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermsHashPerField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermsHashPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermVectorEntry.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermVectorEntryFreqSortedComparator.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermVectorMapper.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermVectorOffsetInfo.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermVectorsReader.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermVectorsTermsWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermVectorsTermsWriterPerField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermVectorsTermsWriterPerThread.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Index\TermVectorsWriter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\LucenePackage.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\LZOCompressor.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Messages\INLSException.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Messages\Message.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Messages\MessageImpl.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Messages\NLS.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\QueryParser\CharStream.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\QueryParser\FastCharStream.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\QueryParser\MultiFieldQueryParser.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\QueryParser\ParseException.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\QueryParser\QueryParser.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\QueryParser\QueryParserConstants.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\QueryParser\QueryParserTokenManager.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\QueryParser\Token.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\QueryParser\TokenMgrError.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\BooleanClause.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\BooleanQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\BooleanScorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\BooleanScorer2.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\CachingSpanFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\CachingWrapperFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Collector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\ComplexExplanation.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\ConjunctionScorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\ConstantScoreQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\DefaultSimilarity.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\DisjunctionMaxQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\DisjunctionMaxScorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\DisjunctionSumScorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\DocIdSet.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\DocIdSetIterator.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\ExactPhraseScorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Explanation.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FieldCache.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FieldCacheImpl.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FieldCacheRangeFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FieldCacheTermsFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FieldComparator.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FieldComparatorSource.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FieldDoc.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FieldDocSortedHitQueue.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FieldValueHitQueue.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Filter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FilteredDocIdSet.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FilteredDocIdSetIterator.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FilteredQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FilteredTermEnum.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FilterManager.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\ByteFieldSource.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\CustomScoreProvider.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\CustomScoreQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\DocValues.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\FieldCacheSource.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\FieldScoreQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\FloatFieldSource.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\IntFieldSource.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\OrdFieldSource.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\ReverseOrdFieldSource.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\ShortFieldSource.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\ValueSource.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Function\ValueSourceQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FuzzyQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\FuzzyTermEnum.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\HitQueue.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\IndexSearcher.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\MatchAllDocsQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\MultiPhraseQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\MultiSearcher.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\MultiTermQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\MultiTermQueryWrapperFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\NumericRangeFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\NumericRangeQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\ParallelMultiSearcher.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Payloads\AveragePayloadFunction.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Payloads\MaxPayloadFunction.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Payloads\MinPayloadFunction.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Payloads\PayloadFunction.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Payloads\PayloadNearQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Payloads\PayloadSpanUtil.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Payloads\PayloadTermQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\PhrasePositions.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\PhraseQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\PhraseQueue.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\PhraseScorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\PositiveScoresOnlyCollector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\PrefixFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\PrefixQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\PrefixTermEnum.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Query.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\QueryTermVector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\QueryWrapperFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\ReqExclScorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\ReqOptSumScorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\ScoreCachingWrappingScorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\ScoreDoc.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Scorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Searchable.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Searcher.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Similarity.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\SimilarityDelegator.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\SingleTermEnum.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\SloppyPhraseScorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Sort.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\SortField.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\SpanFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\SpanFilterResult.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\SpanQueryFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\FieldMaskingSpanQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\NearSpansOrdered.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\NearSpansUnordered.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\SpanFirstQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\SpanNearQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\SpanNotQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\SpanOrQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\SpanQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\Spans.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\SpanScorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\SpanTermQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\SpanWeight.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Spans\TermSpans.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\TermQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\TermRangeFilter.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\TermRangeQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\TermRangeTermEnum.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\TermScorer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\TimeLimitingCollector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\TopDocs.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\TopDocsCollector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\TopFieldCollector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\TopFieldDocs.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\TopScoreDocCollector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\Weight.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\WildcardQuery.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Search\WildcardTermEnum.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\AlreadyClosedException.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\BufferedIndexInput.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\BufferedIndexOutput.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\CheckSumIndexInput.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\CheckSumIndexOutput.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\Directory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\FileSwitchDirectory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\FSDirectory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\FSLockFactory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\IndexInput.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\IndexOutput.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\Lock.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\LockFactory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\LockObtainFailedException.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\LockReleaseFailedException.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\LockStressTest.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\LockVerifyServer.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\MMapDirectory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\NativeFSLockFactory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\NIOFSDirectory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\NoLockFactory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\NoSuchDirectoryException.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\RAMDirectory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\RAMFile.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\RAMInputStream.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\RAMOutputStream.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\SimpleFSDirectory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\SimpleFSLockFactory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\SingleInstanceLockFactory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Store\VerifyingLockFactory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\AppSettings.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\AttributeImplItem.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\BitSetSupport.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\BuildType.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Character.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\CloseableThreadLocalProfiler.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\CollectionsHelper.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Compare.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Compatibility\ConcurrentDictionary.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Compatibility\Func.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Compatibility\ISet.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Compatibility\SetFactory.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Compatibility\SortedSet.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Compatibility\ThreadLocal.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Compatibility\WrappedHashSet.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\CRC32.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Cryptography.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Deflater.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Double.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\EquatableList.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\FileSupport.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\GeneralKeyedCollection.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\HashMap.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\IChecksum.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Inflater.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\IThreadRunnable.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Number.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\OS.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\SharpZipLib.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\Single.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\TextSupport.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\ThreadClass.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\ThreadLock.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Support\WeakDictionary.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\ArrayUtil.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\Attribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\AttributeSource.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\AverageGuessMemoryModel.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\BitUtil.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\BitVector.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\Cache\Cache.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\Cache\SimpleLRUCache.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\Cache\SimpleMapCache.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\CloseableThreadLocal.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\Constants.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\DocIdBitSet.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\FieldCacheSanityChecker.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\IAttribute.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\IdentityDictionary.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\IndexableBinaryStringTools.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\MapOfSets.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\MemoryModel.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\NumericUtils.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\OpenBitSet.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\OpenBitSetDISI.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\OpenBitSetIterator.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\PriorityQueue.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\RamUsageEstimator.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\ReaderUtil.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\ScorerDocQueue.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\SimpleStringInterner.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\SmallFloat.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\SortedVIntList.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\SorterTemplate.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\StringHelper.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\StringInterner.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\ToStringUtils.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\UnicodeUtil.cs" />\r
-    <Compile Include="..\..\..\external\Lucene.Net\src\core\Util\Version.cs" />\r
-    <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="Mono.Documentation\ManifestResourceResolver.cs" />\r
-    <Compile Include="Mono.Documentation\XmlDocUtils.cs" />\r
-    <Compile Include="Mono.Utilities\colorizer.cs" />\r
-    <Compile Include="Mono.Utilities\LRUCache.cs" />\r
-    <Compile Include="Monodoc.Ecma\EcmaDesc.cs" />\r
-    <Compile Include="Monodoc.Ecma\EcmaUrlParser.cs" />\r
-    <Compile Include="Monodoc.Ecma\EcmaUrlTokenizer.cs" />\r
-    <Compile Include="Monodoc\cache.cs" />\r
-    <Compile Include="Monodoc\caches\FileCache.cs" />\r
-    <Compile Include="Monodoc\caches\NullCache.cs" />\r
-    <Compile Include="Monodoc\generator.cs" />\r
-    <Compile Include="Monodoc\generators\html\Addin2Html.cs" />\r
-    <Compile Include="Monodoc\generators\html\Ecma2Html.cs" />\r
-    <Compile Include="Monodoc\generators\html\Ecmaspec2Html.cs" />\r
-    <Compile Include="Monodoc\generators\html\Error2Html.cs" />\r
-    <Compile Include="Monodoc\generators\html\Idem.cs" />\r
-    <Compile Include="Monodoc\generators\html\Man2Html.cs" />\r
-    <Compile Include="Monodoc\generators\html\MonoBook2Html.cs" />\r
-    <Compile Include="Monodoc\generators\html\Toc2Html.cs" />\r
-    <Compile Include="Monodoc\generators\HtmlGenerator.cs" />\r
-    <Compile Include="Monodoc\generators\RawGenerator.cs" />\r
-    <Compile Include="Monodoc\HelpSource.cs" />\r
-    <Compile Include="Monodoc\HelpSource_Legacy.cs" />\r
-    <Compile Include="Monodoc\index.cs" />\r
-    <Compile Include="Monodoc\Node.cs" />\r
-    <Compile Include="Monodoc\Node_Legacy.cs" />\r
-    <Compile Include="Monodoc\Provider.cs" />\r
-    <Compile Include="Monodoc\providers\addins-provider.cs" />\r
-    <Compile Include="Monodoc\providers\EcmaDoc.cs" />\r
-    <Compile Include="Monodoc\providers\ecma-provider.cs" />\r
-    <Compile Include="Monodoc\providers\ecmaspec-provider.cs" />\r
-    <Compile Include="Monodoc\providers\ecmauncompiled-provider.cs" />\r
-    <Compile Include="Monodoc\providers\error-provider.cs" />\r
-    <Compile Include="Monodoc\providers\man-provider.cs" />\r
-    <Compile Include="Monodoc\providers\xhtml-provider.cs" />\r
-    <Compile Include="Monodoc\RootTree.cs" />\r
-    <Compile Include="Monodoc\RootTree_Legacy.cs" />\r
-    <Compile Include="Monodoc\SearchableDocument.cs" />\r
-    <Compile Include="Monodoc\SearchableIndex.cs" />\r
-    <Compile Include="Monodoc\settings.cs" />\r
-    <Compile Include="Monodoc\settings_Legacy.cs" />\r
-    <Compile Include="Monodoc\storage.cs" />\r
-    <Compile Include="Monodoc\storage\NullStorage.cs" />\r
-    <Compile Include="Monodoc\storage\UncompiledDocStorage.cs" />\r
-    <Compile Include="Monodoc\storage\ZipStorage.cs" />\r
-    <Compile Include="Monodoc\Tree.cs" />\r
-    <Compile Include="Monodoc\TypeUtils.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PreBuildEvent>\r
-\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="../corlib/corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj">\r
-      <Project>{0B587DBA-BA92-4B92-821A-AA200C612A7E}</Project>\r
-      <Name>ICSharpCode.SharpZipLib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System/System-net_4_5.csproj">\r
-      <Project>{FFAC0B73-D997-493B-9C62-27656CD858BB}</Project>\r
-      <Name>System-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Core/System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.XML/System.Xml-net_4_5.csproj">\r
-      <Project>{2951DEC2-4393-4A78-83F9-42EB39CB708F}</Project>\r
-      <Name>System.Xml-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Xml.Linq/System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{8328796E-8A15-4972-8F1E-2F15E7D57C42}</Project>\r
-      <Name>System.Xml.Linq-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="../System.Configuration/System.Configuration-net_4_5.csproj">\r
-      <Project>{D52A2CEA-245E-4877-950E-3EAC5F541B8E}</Project>\r
-      <Name>System.Configuration-net_4_5</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <EmbeddedResource Include="../../docs/monodoc.xml">\r
-      <LogicalName>monodoc.xml</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/base.css">\r
-      <LogicalName>base.css</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/ecmaspec-html-css.xsl">\r
-      <LogicalName>ecmaspec-html-css.xsl</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/ecmaspec-html.xsl">\r
-      <LogicalName>ecmaspec-html.xsl</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/ecmaspec.css">\r
-      <LogicalName>ecmaspec.css</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/helper.js">\r
-      <LogicalName>helper.js</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/home.html">\r
-      <LogicalName>home.html</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/Lminus.gif">\r
-      <LogicalName>Lminus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/Lplus.gif">\r
-      <LogicalName>Lplus.gif</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/creativecommons.png">\r
-      <LogicalName>creativecommons.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/mdoc-html-format.xsl">\r
-      <LogicalName>mdoc-html-format.xsl</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/mdoc-html-utils.xsl">\r
-      <LogicalName>mdoc-html-utils.xsl</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/mdoc-sections-css.xsl">\r
-      <LogicalName>mdoc-sections-css.xsl</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/mdoc-sections.xsl">\r
-      <LogicalName>mdoc-sections.xsl</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/mono-ecma-css.xsl">\r
-      <LogicalName>mono-ecma-css.xsl</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/mono-ecma-impl.xsl">\r
-      <LogicalName>mono-ecma-impl.xsl</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/mono-ecma.css">\r
-      <LogicalName>mono-ecma.css</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/mono-ecma.xsl">\r
-      <LogicalName>mono-ecma.xsl</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/toc-html.xsl">\r
-      <LogicalName>toc-html.xsl</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/bc_bg.png">\r
-      <LogicalName>bc_bg.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/bc_separator.png">\r
-      <LogicalName>bc_separator.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/error.png">\r
-      <LogicalName>error.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/hatch.png">\r
-      <LogicalName>hatch.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/headerbg.png">\r
-      <LogicalName>headerbg.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/help.png">\r
-      <LogicalName>help.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/house.png">\r
-      <LogicalName>house.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/members.png">\r
-      <LogicalName>members.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/namespace.png">\r
-      <LogicalName>namespace.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/privclass.png">\r
-      <LogicalName>privclass.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/privdelegate.png">\r
-      <LogicalName>privdelegate.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/privenumeration.png">\r
-      <LogicalName>privenumeration.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/privevent.png">\r
-      <LogicalName>privevent.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/privextension.png">\r
-      <LogicalName>privextension.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/privfield.png">\r
-      <LogicalName>privfield.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/privinterface.png">\r
-      <LogicalName>privinterface.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/privmethod.png">\r
-      <LogicalName>privmethod.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/privproperty.png">\r
-      <LogicalName>privproperty.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/privstructure.png">\r
-      <LogicalName>privstructure.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/protclass.png">\r
-      <LogicalName>protclass.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/protdelegate.png">\r
-      <LogicalName>protdelegate.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/protenumeration.png">\r
-      <LogicalName>protenumeration.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/protevent.png">\r
-      <LogicalName>protevent.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/protextension.png">\r
-      <LogicalName>protextension.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/protfield.png">\r
-      <LogicalName>protfield.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/protinterface.png">\r
-      <LogicalName>protinterface.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/protmethod.png">\r
-      <LogicalName>protmethod.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/protproperty.png">\r
-      <LogicalName>protproperty.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/protstructure.png">\r
-      <LogicalName>protstructure.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/pubclass.png">\r
-      <LogicalName>pubclass.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/pubdelegate.png">\r
-      <LogicalName>pubdelegate.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/pubenumeration.png">\r
-      <LogicalName>pubenumeration.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/pubevent.png">\r
-      <LogicalName>pubevent.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/pubextension.png">\r
-      <LogicalName>pubextension.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/pubfield.png">\r
-      <LogicalName>pubfield.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/pubinterface.png">\r
-      <LogicalName>pubinterface.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/pubmethod.png">\r
-      <LogicalName>pubmethod.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/pubproperty.png">\r
-      <LogicalName>pubproperty.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/pubstructure.png">\r
-      <LogicalName>pubstructure.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/reference.png">\r
-      <LogicalName>reference.png</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Resources/images/treebg.png">\r
-      <LogicalName>treebg.png</LogicalName>\r
-    </EmbeddedResource>\r
-  </ItemGroup>\r
-</Project>\r
-
diff --git a/mcs/class/monodoc/monodoc-tests-net_4_5.csproj b/mcs/class/monodoc/monodoc-tests-net_4_5.csproj
deleted file mode 100644 (file)
index 33d3f5a..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <PropertyGroup>\r
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
-    <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{57ABF26A-1779-4FFD-85BB-79F5DBDA2AA6}</ProjectGuid>\r
-    <OutputType>Library</OutputType>\r
-    <NoWarn>618,612,672,809,1699</NoWarn>\r
-    <OutputPath>bin\Debug\monodoc-tests-net_4_5</OutputPath>\r
-    <NoStdLib>True</NoStdLib>\r
-    <NoConfig>False</NoConfig>\r
-    \r
-    <AppDesignerFolder>Properties</AppDesignerFolder>\r
-    <RootNamespace>\r
-    </RootNamespace>\r
-    <AssemblyName>monodoc_test_net_4_5</AssemblyName>\r
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
-    <FileAlignment>512</FileAlignment>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
-    <DebugSymbols>true</DebugSymbols>\r
-    <DebugType>full</DebugType>\r
-    <NoWarn>618,612,672,809,1699</NoWarn>\r
-    <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;LEGACY_MODE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DebugType>pdbonly</DebugType>\r
-    <NoWarn>618,612,672,809,1699</NoWarn>\r
-    <Optimize>true</Optimize>\r
-    <DefineConstants>LEGACY_MODE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
-    <ErrorReport>prompt</ErrorReport>\r
-    <WarningLevel>4</WarningLevel>\r
-  </PropertyGroup>\r
-  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
-  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
-  is a problem to compile the Mono mscorlib.dll -->\r
-  <PropertyGroup>\r
-    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
-  </PropertyGroup>\r
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
-  <ItemGroup>\r
-    <Compile Include="Test\Monodoc.Ecma\EcmaUrlTests.cs" />\r
-    <Compile Include="Test\Monodoc.Generators\AvoidCDataTextReaderTests.cs" />\r
-    <Compile Include="Test\Monodoc.Generators\RawGeneratorTests.cs" />\r
-    <Compile Include="Test\Monodoc\EcmaDocTests.cs" />\r
-    <Compile Include="Test\Monodoc\HelpSourceTests.cs" />\r
-    <Compile Include="Test\Monodoc\NodeTest.cs" />\r
-    <Compile Include="Test\Monodoc\RootTreeTest.cs" />\r
-    <Compile Include="Test\Monodoc\SettingsTest.cs" />\r
-    <Compile Include="Test\Monodoc\TreeTest.cs" />\r  </ItemGroup>\r
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
-       Other similar extension points exist, see Microsoft.Common.targets.\r
-  <Target Name="BeforeBuild">\r
-  </Target>\r
-  <Target Name="AfterBuild">\r
-  </Target>\r
-  -->\r
-  <PropertyGroup>\r
-    <PreBuildEvent>\r
-\r
-    </PreBuildEvent>\r
-    <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
-    </PostBuildEvent>
-    <PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
-
-    </PostBuildEvent>\r
-  </PropertyGroup>\r
-  <ItemGroup>\r
-    <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
-    <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{33BF0182-AC5C-464C-995B-C9CFE74E1A95}</Project>\r
-      <Name>corlib\corlib-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\monodoc\monodoc-net_4_5.csproj">\r
-      <Project>{141D4A4E-C16C-4FF6-9E35-54AF58BE6080}</Project>\r
-      <Name>monodoc\monodoc-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{5C605B73-19DA-4FB7-AB39-C7EF9A8B19FE}</Project>\r
-      <Name>System\System-net_4_5-2</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E}</Project>\r
-      <Name>System.Core\System.Core-net_4_5</Name>\r
-    </ProjectReference>\r
-    <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{2534ADE0-05E4-490F-933D-1E39310A0CB9}</Project>\r
-      <Name>System.XML\System.Xml-net_4_5-1</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-</Project>\r
-
index b808123cbac44fc1048795815e9aeb8a7ee37653..88bddb6626860eadb0ed7e749f781be2aaeabbe5 100644 (file)
@@ -85,12 +85,17 @@ NETDOCS_DIRS = \
        $(classdir)/System.Design/$(doc_en)                                 \
        $(classdir)/System.DirectoryServices/$(doc_en)                      \
        $(classdir)/System.Drawing/$(doc_en)                                \
+       $(classdir)/System.Json/$(doc_en)                                   \
+       $(classdir)/System.Net.Http/$(doc_en)                               \
        $(classdir)/System.Runtime.Remoting/$(doc_en)                       \
+       $(classdir)/System.Runtime.Serialization/$(doc_en)                  \
        $(classdir)/System.Runtime.Serialization.Formatters.Soap/$(doc_en)  \
        $(classdir)/System.Security/$(doc_en)                               \
+       $(classdir)/System.ServiceModel/$(doc_en)                           \
        $(classdir)/System.Web.Services/$(doc_en)                           \
        $(classdir)/System.Web/$(doc_en)                                    \
        $(classdir)/System.XML/$(doc_en)                                    \
+       $(classdir)/System.Xml.Linq/$(doc_en)                               \
        $(classdir)/System/$(doc_en) 
 
 MONO_DIRS = \
index 328f174f71d4dd87f590ea3c4e8f4841ac7a3a0a..9e516ffd01cf38d0b47eb7b4ee55459617f66ae9 100755 (executable)
 
        In the Mono C# compiler, we use a class for each of the
        statements and expressions in the C# language.  For example,
-       there is a `While' class for the the `while' statement, a
+       there is a `While' class for the `while' statement, a
        `Cast' class to represent a cast expression and so on.
 
        There is a Statement class, and an Expression class which are
diff --git a/mcs/errors/cs0051-3.cs b/mcs/errors/cs0051-3.cs
new file mode 100644 (file)
index 0000000..55041ee
--- /dev/null
@@ -0,0 +1,17 @@
+// CS0051: Inconsistent accessibility: parameter type `NV' is less accessible than method `C1.Foo(NV)'
+// Line: 14
+
+internal class NV
+{
+}
+
+public partial class C1
+{
+}
+
+partial class C1
+{
+       public void Foo (NV arg)
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0208-18.cs b/mcs/errors/cs0208-18.cs
new file mode 100644 (file)
index 0000000..ad8ab81
--- /dev/null
@@ -0,0 +1,17 @@
+// CS0208: Cannot take the address of, get the size of, or declare a pointer to a managed type `S'
+// Line: 9
+// Compiler options: /unsafe
+
+unsafe public class C
+{
+       S* i;
+}
+
+public struct S
+{
+       AC ac;
+}
+
+abstract class AC
+{
+}
diff --git a/mcs/errors/cs0403-4.cs b/mcs/errors/cs0403-4.cs
new file mode 100644 (file)
index 0000000..5298bb3
--- /dev/null
@@ -0,0 +1,10 @@
+// CS0403: Cannot convert null to the type parameter `T' because it could be a value type. Consider using `default (T)' instead
+// Line: 8
+
+class Test<T>
+{
+       public T Null ()
+       {
+               return (null);
+       }
+}
diff --git a/mcs/errors/cs0841-6.cs b/mcs/errors/cs0841-6.cs
new file mode 100644 (file)
index 0000000..11be776
--- /dev/null
@@ -0,0 +1,20 @@
+// CS0841: A local variable `n' cannot be used before it is declared
+// Line: 17
+
+class MainClass
+{
+       public delegate void Fn (MainClass o);
+
+       public static void Call (Fn f)
+       {
+               f(null);
+       }
+
+       public static void Main ()
+       {
+               Call (delegate (MainClass o) {
+                       n = o;
+                       MainClass n = new MainClass ();
+               });
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs9671.cs b/mcs/errors/cs9671.cs
new file mode 100644 (file)
index 0000000..d89b214
--- /dev/null
@@ -0,0 +1,8 @@
+// CS9671: Global attributes must have attribute target specified
+// Line: 8
+
+using System.Reflection;
+
+[assembly: AssemblyTitle ("SidePanels")]
+
+[UsesLibrary ("eaclibrary", Required=true)]
diff --git a/mcs/errors/cs9871.cs b/mcs/errors/cs9871.cs
deleted file mode 100644 (file)
index a41fcff..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-// CS9871: Global attributes must have attribute target specified
-// Line: 8
-
-using System.Reflection;
-
-[assembly: AssemblyTitle ("SidePanels")]
-
-[UsesLibrary ("eaclibrary", Required=true)]
diff --git a/mcs/jay/jay.vcproj b/mcs/jay/jay.vcproj
deleted file mode 100755 (executable)
index a516b02..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>\r
-<VisualStudioProject\r
-       ProjectType="Visual C++"\r
-       Version="7.10"\r
-       Name="jay"\r
-       ProjectGUID="{5D485D32-3B9F-4287-AB24-C8DA5B89F537}"\r
-       RootNamespace="jay"\r
-       Keyword="Win32Proj">\r
-       <Platforms>\r
-               <Platform\r
-                       Name="Win32"/>\r
-       </Platforms>\r
-       <Configurations>\r
-               <Configuration\r
-                       Name="Debug|Win32"\r
-                       OutputDirectory="Debug"\r
-                       IntermediateDirectory="Debug"\r
-                       ConfigurationType="1"\r
-                       CharacterSet="2">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               PreprocessorDefinitions="SKEL_DIRECTORY=&quot;&quot;.&quot;&quot;"\r
-                               MinimalRebuild="TRUE"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="5"\r
-                               UsePrecompiledHeader="0"\r
-                               WarningLevel="3"\r
-                               Detect64BitPortabilityProblems="TRUE"\r
-                               DebugInformationFormat="4"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               OutputFile="$(ProjectDir)/jay.exe"\r
-                               LinkIncremental="2"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(OutDir)/jay.pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="Release|Win32"\r
-                       OutputDirectory="Release"\r
-                       IntermediateDirectory="Release"\r
-                       ConfigurationType="1"\r
-                       CharacterSet="2">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               PreprocessorDefinitions="SKEL_DIRECTORY=&quot;&quot;.&quot;&quot;"\r
-                               RuntimeLibrary="4"\r
-                               UsePrecompiledHeader="0"\r
-                               WarningLevel="3"\r
-                               Detect64BitPortabilityProblems="TRUE"\r
-                               DebugInformationFormat="3"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               OutputFile="$(ProjectDir)/jay.exe"\r
-                               LinkIncremental="1"\r
-                               GenerateDebugInformation="TRUE"\r
-                               SubSystem="1"\r
-                               OptimizeReferences="2"\r
-                               EnableCOMDATFolding="2"\r
-                               TargetMachine="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-       </Configurations>\r
-       <References>\r
-       </References>\r
-       <Files>\r
-               <Filter\r
-                       Name="Source Files"\r
-                       Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
-                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">\r
-                       <File\r
-                               RelativePath=".\closure.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\error.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\lalr.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\lr0.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\main.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\mkpar.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\output.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\reader.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\symtab.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\verbose.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\warshall.c">\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Header Files"\r
-                       Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
-                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">\r
-                       <File\r
-                               RelativePath=".\defs.h">\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Resource Files"\r
-                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"\r
-                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">\r
-               </Filter>\r
-       </Files>\r
-       <Globals>\r
-       </Globals>\r
-</VisualStudioProject>\r
index 80468e43ccafa8f01bc755e7b7cc99e671580807..7e97652e028ef36699422e3275556faae09eae73 100644 (file)
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>$(ProjectDir)/jay.exe</OutputFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(OutDir)jay.pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
+    <PostBuildEvent>\r
+      <Command>copy $(OutDir)jay.exe $(ProjectDir)jay.exe</Command>\r
+    </PostBuildEvent>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
     </ClCompile>\r
     <Link>\r
-      <OutputFile>$(ProjectDir)/jay.exe</OutputFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
       <OptimizeReferences>true</OptimizeReferences>\r
       <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
       <TargetMachine>MachineX86</TargetMachine>\r
     </Link>\r
+    <PostBuildEvent>\r
+      <Command>copy $(OutDir)jay.exe $(ProjectDir)jay.exe</Command>\r
+    </PostBuildEvent>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="closure.c" />\r
diff --git a/mcs/jay/jay2005.vcproj b/mcs/jay/jay2005.vcproj
deleted file mode 100755 (executable)
index f8bc7d1..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>\r
-<VisualStudioProject\r
-       ProjectType="Visual C++"\r
-       Version="8.00"\r
-       Name="jay2005"\r
-       ProjectGUID="{5D485D32-3B9F-4287-AB24-C8DA5B89F537}"\r
-       RootNamespace="jay"\r
-       Keyword="Win32Proj"\r
-       >\r
-       <Platforms>\r
-               <Platform\r
-                       Name="Win32"\r
-               />\r
-       </Platforms>\r
-       <ToolFiles>\r
-       </ToolFiles>\r
-       <Configurations>\r
-               <Configuration\r
-                       Name="Debug|Win32"\r
-                       OutputDirectory="Debug"\r
-                       IntermediateDirectory="Debug"\r
-                       ConfigurationType="1"\r
-                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               PreprocessorDefinitions="SKEL_DIRECTORY=&quot;&quot;.&quot;&quot;"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="1"\r
-                               UsePrecompiledHeader="0"\r
-                               WarningLevel="3"\r
-                               Detect64BitPortabilityProblems="true"\r
-                               DebugInformationFormat="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               OutputFile="$(ProjectDir)/jay.exe"\r
-                               LinkIncremental="2"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(OutDir)/jay.pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="Release|Win32"\r
-                       OutputDirectory="Release"\r
-                       IntermediateDirectory="Release"\r
-                       ConfigurationType="1"\r
-                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               PreprocessorDefinitions="SKEL_DIRECTORY=&quot;&quot;.&quot;&quot;"\r
-                               RuntimeLibrary="0"\r
-                               UsePrecompiledHeader="0"\r
-                               WarningLevel="3"\r
-                               Detect64BitPortabilityProblems="true"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               OutputFile="$(ProjectDir)/jay.exe"\r
-                               LinkIncremental="1"\r
-                               GenerateDebugInformation="true"\r
-                               SubSystem="1"\r
-                               OptimizeReferences="2"\r
-                               EnableCOMDATFolding="2"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-       </Configurations>\r
-       <References>\r
-       </References>\r
-       <Files>\r
-               <Filter\r
-                       Name="Source Files"\r
-                       Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
-                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
-                       >\r
-                       <File\r
-                               RelativePath=".\closure.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\error.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\lalr.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\lr0.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\main.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\mkpar.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\output.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\reader.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\symtab.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\verbose.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\warshall.c"\r
-                               >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Header Files"\r
-                       Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
-                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
-                       >\r
-                       <File\r
-                               RelativePath=".\defs.h"\r
-                               >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Resource Files"\r
-                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"\r
-                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
-                       >\r
-               </Filter>\r
-       </Files>\r
-       <Globals>\r
-       </Globals>\r
-</VisualStudioProject>\r
diff --git a/mcs/jay/jay2008.vcproj b/mcs/jay/jay2008.vcproj
deleted file mode 100644 (file)
index baf29e8..0000000
+++ /dev/null
@@ -1,244 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>\r
-<VisualStudioProject\r
-       ProjectType="Visual C++"\r
-       Version="9.00"\r
-       Name="jay2008"\r
-       ProjectGUID="{5D485D32-3B9F-4287-AB24-C8DA5B89F537}"\r
-       RootNamespace="jay"\r
-       Keyword="Win32Proj"\r
-       TargetFrameworkVersion="131072"\r
-       >\r
-       <Platforms>\r
-               <Platform\r
-                       Name="Win32"\r
-               />\r
-       </Platforms>\r
-       <ToolFiles>\r
-       </ToolFiles>\r
-       <Configurations>\r
-               <Configuration\r
-                       Name="Debug|Win32"\r
-                       OutputDirectory="Debug"\r
-                       IntermediateDirectory="Debug"\r
-                       ConfigurationType="1"\r
-                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               PreprocessorDefinitions="SKEL_DIRECTORY=&quot;&quot;.&quot;&quot;"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="1"\r
-                               UsePrecompiledHeader="0"\r
-                               WarningLevel="3"\r
-                               Detect64BitPortabilityProblems="true"\r
-                               DebugInformationFormat="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               OutputFile="$(ProjectDir)/jay.exe"\r
-                               LinkIncremental="2"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(OutDir)/jay.pdb"\r
-                               SubSystem="1"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="Release|Win32"\r
-                       OutputDirectory="Release"\r
-                       IntermediateDirectory="Release"\r
-                       ConfigurationType="1"\r
-                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               PreprocessorDefinitions="SKEL_DIRECTORY=&quot;&quot;.&quot;&quot;"\r
-                               RuntimeLibrary="0"\r
-                               UsePrecompiledHeader="0"\r
-                               WarningLevel="3"\r
-                               Detect64BitPortabilityProblems="true"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               OutputFile="$(ProjectDir)/jay.exe"\r
-                               LinkIncremental="1"\r
-                               GenerateDebugInformation="true"\r
-                               SubSystem="1"\r
-                               OptimizeReferences="2"\r
-                               EnableCOMDATFolding="2"\r
-                               RandomizedBaseAddress="1"\r
-                               DataExecutionPrevention="0"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-       </Configurations>\r
-       <References>\r
-       </References>\r
-       <Files>\r
-               <Filter\r
-                       Name="Source Files"\r
-                       Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
-                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
-                       >\r
-                       <File\r
-                               RelativePath=".\closure.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\error.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\lalr.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\lr0.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\main.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\mkpar.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\output.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\reader.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\symtab.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\verbose.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\warshall.c"\r
-                               >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Header Files"\r
-                       Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
-                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
-                       >\r
-                       <File\r
-                               RelativePath=".\defs.h"\r
-                               >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Resource Files"\r
-                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"\r
-                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
-                       >\r
-               </Filter>\r
-       </Files>\r
-       <Globals>\r
-       </Globals>\r
-</VisualStudioProject>\r
diff --git a/mcs/jay/jay2010.vcxproj b/mcs/jay/jay2010.vcxproj
deleted file mode 100644 (file)
index 03c8851..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{5D485D32-3B9F-4287-AB24-C8DA5B89F537}</ProjectGuid>\r
-    <RootNamespace>jay</RootNamespace>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>MultiByte</CharacterSet>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.31118.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <PreprocessorDefinitions>SKEL_DIRECTORY=".";%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <OutputFile>$(ProjectDir)/jay.exe</OutputFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(OutDir)jay.pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <PreprocessorDefinitions>SKEL_DIRECTORY=".";%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <OutputFile>$(ProjectDir)/jay.exe</OutputFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="closure.c" />\r
-    <ClCompile Include="error.c" />\r
-    <ClCompile Include="lalr.c" />\r
-    <ClCompile Include="lr0.c" />\r
-    <ClCompile Include="main.c" />\r
-    <ClCompile Include="mkpar.c" />\r
-    <ClCompile Include="output.c" />\r
-    <ClCompile Include="reader.c" />\r
-    <ClCompile Include="symtab.c" />\r
-    <ClCompile Include="verbose.c" />\r
-    <ClCompile Include="warshall.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="defs.h" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
index 301ef3efc5a5f652cc787aefcb89a0ecc7ca7ca4..8b93d720fa1dca32835d6eb4b0480b222eb91bac 100644 (file)
@@ -26,6 +26,16 @@ endif
 
 LOCAL_MCS_FLAGS += -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE
 
+ifndef NO_THREAD_ABORT
+REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_THREAD_ABORT
+endif
+
+ifndef NO_PROCESS_START
+REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_PROCESS_START
+endif
+
+LOCAL_MCS_FLAGS += $(REFERENCE_SOURCES_FLAGS)
+
 PROGRAM_INSTALL_DIR = $(mono_libdir)/mono/4.5
 
 PROGRAM_COMPILE = $(BOOT_COMPILE)
index fc3690c78f053d31d1d73869f8acd9414f41a50a..16ce9dfee86c62e203c26c497ee00f957bebc071 100644 (file)
@@ -1154,7 +1154,8 @@ namespace Mono.CSharp {
                                        prev = null;
                                }
 
-                               var body = CompatibleMethodBody (ec, tic, null, delegate_type);
+                               HashSet<LocalVariable> undeclaredVariables = null;
+                               var body = CompatibleMethodBody (ec, tic, null, delegate_type, ref undeclaredVariables);
                                if (body != null) {
                                        am = body.Compatible (ec, body);
                                } else {
@@ -1164,6 +1165,10 @@ namespace Mono.CSharp {
                                if (TypeInferenceReportPrinter != null) {
                                        ec.Report.SetPrinter (prev);
                                }
+
+                               if (undeclaredVariables != null) {
+                                       body.Block.TopBlock.SetUndeclaredVariables (undeclaredVariables);
+                               }
                        }
 
                        if (am == null)
@@ -1209,8 +1214,8 @@ namespace Mono.CSharp {
                        // we satisfy the rule by setting the return type on the EmitContext
                        // to be the delegate type return type.
                        //
-
-                       var body = CompatibleMethodBody (ec, null, return_type, delegate_type);
+                       HashSet<LocalVariable> undeclaredVariables = null;
+                       var body = CompatibleMethodBody (ec, null, return_type, delegate_type, ref undeclaredVariables);
                        if (body == null)
                                return null;
 
@@ -1268,6 +1273,15 @@ namespace Mono.CSharp {
                                throw;
                        } catch (Exception e) {
                                throw new InternalErrorException (e, loc);
+                       } finally {
+                               //
+                               // LocalVariable is not stateless and it's not easy to clone because it's
+                               // cached in toplevel block. Unsetting any initialized variables should
+                               // be enough
+                               //
+                               if (undeclaredVariables != null) {
+                                       body.Block.TopBlock.SetUndeclaredVariables (undeclaredVariables);
+                               }
                        }
 
                        if (!ec.IsInProbingMode && !etree_conversion) {
@@ -1387,13 +1401,13 @@ namespace Mono.CSharp {
                        return ExprClassName;
                }
 
-               AnonymousMethodBody CompatibleMethodBody (ResolveContext ec, TypeInferenceContext tic, TypeSpec return_type, TypeSpec delegate_type)
+               AnonymousMethodBody CompatibleMethodBody (ResolveContext ec, TypeInferenceContext tic, TypeSpec return_type, TypeSpec delegate_type, ref HashSet<LocalVariable> undeclaredVariables)
                {
                        ParametersCompiled p = ResolveParameters (ec, tic, delegate_type);
                        if (p == null)
                                return null;
 
-                       ParametersBlock b = ec.IsInProbingMode ? (ParametersBlock) Block.PerformClone () : Block;
+                       ParametersBlock b = ec.IsInProbingMode ? (ParametersBlock) Block.PerformClone (ref undeclaredVariables) : Block;
 
                        if (b.IsAsync) {
                                var rt = return_type;
index 059f31c2c6553b6b2bfc9df2faabfd3e33c871af..edc538e7d2ed66a09ab7b5cbd397aec15b3ac3d0 100644 (file)
@@ -530,7 +530,6 @@ namespace Mono.CSharp
 
                bool has_normal_indexers;
                string indexer_name;
-               protected bool requires_delayed_unmanagedtype_check;
                bool error;
                bool members_defined;
                bool members_defined_ok;
@@ -1999,15 +1998,6 @@ namespace Mono.CSharp
                                CheckPairedOperators ();
                        }
 
-                       if (requires_delayed_unmanagedtype_check) {
-                               requires_delayed_unmanagedtype_check = false;
-                               foreach (var member in members) {
-                                       var f = member as Field;
-                                       if (f != null && f.MemberType != null && f.MemberType.IsPointer)
-                                               TypeManager.VerifyUnmanaged (Module, f.MemberType, f.Location);
-                               }
-                       }
-
                        ComputeIndexerName();
 
                        if (HasEquals && !HasGetHashCode) {
@@ -2711,6 +2701,22 @@ namespace Mono.CSharp
                        return true;
                }
 
+               public override void PrepareEmit ()
+               {
+                       var s = this as Struct;
+                       if (s == null || !s.HasUnmanagedCheckDone) {
+                               for (int i = 0; i < Members.Count; ++i) {
+                                       var f = Members [i] as Field;
+                                       if (f == null || f.MemberType == null || !f.MemberType.IsPointer)
+                                               continue;
+
+                                       TypeManager.VerifyUnmanaged (Module, f.MemberType, f.Location);
+                               }
+                       }
+
+                       base.PrepareEmit ();
+               }
+
                public override void Emit ()
                {
                        if (!has_static_constructor && HasStaticFieldInitializer) {
@@ -2959,7 +2965,7 @@ namespace Mono.CSharp
 
        public sealed class Struct : ClassOrStruct
        {
-               bool is_unmanaged, has_unmanaged_check_done;
+               bool is_unmanaged, has_unmanaged_check_done, requires_delayed_unmanagedtype_check;
                bool InTransit;
 
                // <summary>
@@ -3089,6 +3095,12 @@ namespace Mono.CSharp
                        base.Emit ();
                }
 
+               public bool HasUnmanagedCheckDone {
+                       get {
+                               return has_unmanaged_check_done;
+                       }
+               }
+
                bool HasUserDefaultConstructor ()
                {
                        foreach (var m in PartialContainer.Members) {
index d09ae4dd8507e6b1f572e0e816fadc163b812e39..b0c771f7207b2eb26aa12a288bd58e11f811aae3 100644 (file)
@@ -400,14 +400,14 @@ outer_declaration
          }
        | opt_extern_alias_directives opt_using_directives attribute_sections
          {
-
                Attributes attrs = (Attributes) $3;
                if (attrs != null) {
                        foreach (var a in attrs.Attrs) {
                                if (a.ExplicitTarget == "assembly" || a.ExplicitTarget == "module")
                                        continue;
 
-                               report.Error (-1671, a.Location, "Global attributes must have attribute target specified");
+                               if (a.ExplicitTarget == null)
+                                       report.Error (-1671, a.Location, "Global attributes must have attribute target specified");
                        }
                }
 
@@ -1829,9 +1829,9 @@ property_declaration
          accessor_declarations 
          {
                lexer.PropertyParsing = false;
-               
+
                if (doc_support)
-                       current_property.DocComment = ConsumeStoredComment ();                          
+                       current_property.DocComment = ConsumeStoredComment ();
          }
          CLOSE_BRACE
          {
@@ -1893,6 +1893,9 @@ opt_property_initializer
                lbag.AppendToMember (current_property, GetLocation ($1), GetLocation ($4));
                end_block (GetLocation ($4));
                current_local_parameters = null;
+
+               if (doc_support)
+                       Lexer.doc_state = XmlCommentState.Allowed;
          }
        ;
 
index c46fbc92f5477cee2195e0fed0b33adc6d53505e..e07fdcaf6e6437c1a4a39bb53cfc2283bdb25918 100644 (file)
@@ -1095,6 +1095,7 @@ namespace Mono.CSharp
                                                case Token.DECIMAL:
                                                case Token.BOOL:
                                                case Token.STRING:
+                                               case Token.SBYTE:
                                                        return Token.OPEN_PARENS_CAST;
                                                }
                                        }
index a386ab18b3bab8e955d5d175fc99d843ff495d43..3f88a5935c00d273a3ed3f2fc5995b4cc456f7d0 100644 (file)
@@ -524,6 +524,9 @@ namespace Mono.CSharp {
                        while (TypeManager.HasElementType (p))
                                p = TypeManager.GetElementType (p);
 
+                       if (p.BuiltinType != BuiltinTypeSpec.Type.None)
+                               return true;
+
                        if (p.IsGenericParameter)
                                return true;
 
@@ -543,6 +546,10 @@ namespace Mono.CSharp {
 
                                bool same_access_restrictions = false;
                                for (MemberCore mc = this; !same_access_restrictions && mc != null && mc.Parent != null; mc = mc.Parent) {
+                                       var tc = mc as TypeContainer;
+                                       if (tc != null && tc.PartialContainer != null)
+                                               mc = tc.PartialContainer;
+
                                        var al = mc.ModFlags & Modifiers.AccessibilityMask;
                                        switch (pAccess) {
                                        case Modifiers.INTERNAL:
index 994fdb8afd54bae3e36c1a69098dec28ce132305..0a11914328ae79629b356b78bd879de1942f3b69 100644 (file)
@@ -201,6 +201,7 @@ namespace Mono.CSharp
 
                public static string GetPackageFlags (string packages, Report report)
                {
+#if MONO_FEATURE_PROCESS_START
                        ProcessStartInfo pi = new ProcessStartInfo ();
                        pi.FileName = "pkg-config";
                        pi.RedirectStandardOutput = true;
@@ -239,6 +240,9 @@ namespace Mono.CSharp
 
                        p.Close ();
                        return pkgout;
+#else
+                       throw new NotSupportedException ("Process.Start is not supported on this platform.");
+#endif // MONO_FEATURE_PROCESS_START
                }
 
                //
index 68909ea8dd8ebc43eb2613890b4a1840021b060d..b74da01e65ca9826e6ce938d4145d7baf5b651ad 100644 (file)
@@ -4255,6 +4255,7 @@ namespace Mono.CSharp {
 
                        var emg = new ExtensionMethodGroupExpr (methods, InstanceExpression, loc);
                        emg.SetTypeArguments (rc, type_arguments);
+                       emg.ConditionalAccess = ConditionalAccess;
                        return emg;
                }
 
@@ -4740,6 +4741,7 @@ namespace Mono.CSharp {
                        //
                        // We have not reached end of parameters list due to params or used default parameters
                        //
+                       bool defaults_ambiguity = false;
                        while (j < candidate_pd.Count && j < best_pd.Count) {
                                var cand_param = candidate_pd.FixedParameters [j];
                                var best_param = best_pd.FixedParameters [j];
@@ -4747,6 +4749,7 @@ namespace Mono.CSharp {
                                if (cand_param.HasDefaultValue != best_param.HasDefaultValue)
                                        return cand_param.HasDefaultValue;
 
+                               defaults_ambiguity = true;
                                if (candidate_pd.Count == best_pd.Count) {
                                        //
                                        // LAMESPEC:
@@ -4754,27 +4757,30 @@ namespace Mono.CSharp {
                                        // void Foo (int i = 0) is better than void Foo (params int[]) for Foo ()
                                        // void Foo (string[] s, string value = null) is better than Foo (string s, params string[]) for Foo (null) or Foo ()
                                        //
-
                                        if (cand_param.HasDefaultValue) {
                                                ++j;
                                                continue;
                                        }
-                               } else {
-                                       //
-                                       // Neither is better when not all arguments are provided
-                                       //
-                                       // void Foo (string s, int i = 0) <-> Foo (string s, int i = 0, int i2 = 0)
-                                       // void Foo (string s, int i = 0) <-> Foo (string s, byte i = 0)
-                                       // void Foo (string s, params int[]) <-> Foo (string s, params byte[])
-                                       //
-                                       return false;
+
+                                       break;
                                }
 
-                               break;
+                               //
+                               // Neither is better when not all arguments are provided
+                               //
+                               // void Foo (string s, int i = 0) <-> Foo (string s, int i = 0, int i2 = 0)
+                               // void Foo (string s, int i = 0) <-> Foo (string s, byte i = 0)
+                               // void Foo (string s, params int[]) <-> Foo (string s, params byte[])
+                               //
+                               ++j;
                        }
 
-                       if (candidate_pd.Count != best_pd.Count)
+                       if (candidate_pd.Count != best_pd.Count) {
+                               if (defaults_ambiguity && best_pd.Count - 1 == j)
+                                       return best_pd.HasParams;
+
                                return candidate_pd.Count < best_pd.Count;
+                       }
 
                        //
                        // One is a non-generic method and second is a generic method, then non-generic is better
@@ -7038,19 +7044,16 @@ namespace Mono.CSharp {
 
                protected override bool ResolveAutopropertyAssignment (ResolveContext rc, Expression rhs)
                {
-                       var prop = best_candidate.MemberDefinition as Property;
-                       if (prop == null)
-                               return false;
-
                        if (!rc.HasSet (ResolveContext.Options.ConstructorScope))
                                return false;
 
-                       if (prop.Parent.PartialContainer != rc.CurrentMemberDefinition.Parent.PartialContainer) {
-                               var ps = MemberCache.FindMember (rc.CurrentType, MemberFilter.Property (prop.ShortName, prop.MemberType), BindingRestriction.DeclaredOnly) as PropertySpec;
+                       var prop = best_candidate.MemberDefinition as Property;
+                       if (prop == null || prop.Parent.PartialContainer != rc.CurrentMemberDefinition.Parent.PartialContainer) {
+                               var ps = MemberCache.FindMember (rc.CurrentType, MemberFilter.Property (best_candidate.Name, best_candidate.MemberType), BindingRestriction.DeclaredOnly) as PropertySpec;
                                if (ps == null)
                                        return false;
 
-                               prop = (Property) ps.MemberDefinition;
+                               prop = (Property)ps.MemberDefinition;
                        }
 
                        var spec = prop.BackingField;
index 50f15489e3aa28e0678f420fd0aa15af0a9c37ae..62c02b1fd5602de8f4a01d5096f183472d3d2b9a 100644 (file)
@@ -192,8 +192,13 @@ namespace Mono.CSharp
                        if (!inited || !invoking)
                                return;
                        
-                       if (invoke_thread != null)
+                       if (invoke_thread != null) {
+#if MONO_FEATURE_THREAD_ABORT
                                invoke_thread.Abort ();
+#else
+                               invoke_thread.Interrupt ();
+#endif
+                       }
                }
 
                /// <summary>
@@ -367,9 +372,14 @@ namespace Mono.CSharp
                                invoke_thread = System.Threading.Thread.CurrentThread;
                                invoking = true;
                                compiled (ref retval);
+#if MONO_FEATURE_THREAD_ABORT
                        } catch (ThreadAbortException e){
                                Thread.ResetAbort ();
                                Console.WriteLine ("Interrupted!\n{0}", e);
+#else
+                       } catch (ThreadInterruptedException e) {
+                               Console.WriteLine ("Interrupted!\n{0}", e);
+#endif
                        } finally {
                                invoking = false;
 
index 5df7bb0c41e8372e26b2504a18bf583d7c32f769..5192cc102a3fb290bae7cafc60269ae20e9f72c0 100644 (file)
@@ -101,43 +101,24 @@ namespace Mono.CSharp
 
        public class ParenthesizedExpression : ShimExpression
        {
-               bool conditional_access_receiver;
-
                public ParenthesizedExpression (Expression expr, Location loc)
                        : base (expr)
                {
                        this.loc = loc;
                }
 
-               void ResolveConditionalAccessReceiver (ResolveContext rc)
-               {
-                       if (!rc.HasSet (ResolveContext.Options.DontSetConditionalAccessReceiver) && expr.HasConditionalAccess ()) {
-                               conditional_access_receiver = true;
-                       }                       
-               }
-
                protected override Expression DoResolve (ResolveContext rc)
                {
                        Expression res = null;
 
-                       ResolveConditionalAccessReceiver (rc);
-                       if (conditional_access_receiver) {
-                               using (rc.Set (ResolveContext.Options.DontSetConditionalAccessReceiver)) {
-                                       res = expr.Resolve (rc);
-                               }
-                       } else {
-                               res = expr.Resolve (rc);
-                       }
+                       res = expr.Resolve (rc);
 
                        var constant = res as Constant;
-                       if (constant != null && constant.IsLiteral)
+                       if (constant != null && constant.IsLiteral) {
+                               if (res is NullLiteral)
+                                       return res;
+                               
                                return Constant.CreateConstantFromValue (res.Type, constant.GetValue (), expr.Location);
-
-                       if (conditional_access_receiver) {
-                               expr = res;
-                               type = LiftMemberType (rc, res.Type);
-                               eclass = expr.eclass;
-                               return this;
                        }
 
                        return res;
@@ -153,18 +134,6 @@ namespace Mono.CSharp
                        return visitor.Visit (this);
                }
 
-               public override void Emit (EmitContext ec)
-               {
-                       if (!conditional_access_receiver)
-                               base.Emit (ec);
-
-                       var prev = ec.ConditionalAccess;
-                       ec.ConditionalAccess = new ConditionalAccessContext (type, ec.DefineLabel ());
-                       expr.Emit (ec);
-                       ec.CloseConditionalAccess (type.IsNullableType ? type : null);
-                       ec.ConditionalAccess = prev;
-               }
-
                public override bool HasConditionalAccess ()
                {
                        return false;
@@ -2949,11 +2918,11 @@ namespace Mono.CSharp
                                        }
 
                                        lifted.Left = b.left.IsNull ?
-                                               b.left :
+                                               Nullable.LiftedNull.Create (ltype, b.left.Location) :
                                                Convert.ImplicitConversion (rc, lifted.UnwrapLeft ?? b.left, ltype, b.left.Location);
 
                                        lifted.Right = b.right.IsNull ?
-                                               b.right :
+                                               Nullable.LiftedNull.Create (rtype, b.right.Location) :
                                                Convert.ImplicitConversion (rc, lifted.UnwrapRight ?? b.right, rtype, b.right.Location);
 
                                        return lifted.Resolve (rc);
@@ -6044,16 +6013,19 @@ namespace Mono.CSharp
                                }
 
                                right.Emit (ec);
-                               switch (rtype.BuiltinType) {
-                               case BuiltinTypeSpec.Type.SByte:
-                               case BuiltinTypeSpec.Type.Byte:
-                               case BuiltinTypeSpec.Type.Short:
-                               case BuiltinTypeSpec.Type.UShort:
-                                       ec.Emit (OpCodes.Conv_I);
-                                       break;
-                               case BuiltinTypeSpec.Type.UInt:
-                                       ec.Emit (OpCodes.Conv_U);
-                                       break;
+                               if (right_const == null) {
+                                       switch (rtype.BuiltinType) {
+                                       case BuiltinTypeSpec.Type.SByte:
+                                       case BuiltinTypeSpec.Type.Byte:
+                                       case BuiltinTypeSpec.Type.Short:
+                                       case BuiltinTypeSpec.Type.UShort:
+                                       case BuiltinTypeSpec.Type.Int:
+                                               ec.Emit (OpCodes.Conv_I);
+                                               break;
+                                       case BuiltinTypeSpec.Type.UInt:
+                                               ec.Emit (OpCodes.Conv_U);
+                                               break;
+                                       }
                                }
 
                                if (right_const == null && size != 1){
@@ -7089,8 +7061,11 @@ namespace Mono.CSharp
                        // Next, evaluate all the expressions in the argument list
                        //
                        bool dynamic_arg = false;
-                       if (arguments != null)
-                               arguments.Resolve (ec, out dynamic_arg);
+                       if (arguments != null) {
+                               using (ec.With (ResolveContext.Options.DontSetConditionalAccessReceiver, false)) {
+                                       arguments.Resolve (ec, out dynamic_arg);
+                               }
+                       }
 
                        TypeSpec expr_type = member_expr.Type;
                        if (expr_type.BuiltinType == BuiltinTypeSpec.Type.Dynamic)
@@ -10853,7 +10828,9 @@ namespace Mono.CSharp
                        eclass = ExprClass.IndexerAccess;
 
                        bool dynamic;
-                       arguments.Resolve (rc, out dynamic);
+                       using (rc.With (ResolveContext.Options.DontSetConditionalAccessReceiver, false)) {
+                               arguments.Resolve (rc, out dynamic);
+                       }
 
                        if (indexers == null && InstanceExpression.Type.BuiltinType == BuiltinTypeSpec.Type.Dynamic) {
                                dynamic = true;
@@ -11353,7 +11330,10 @@ namespace Mono.CSharp
 
                                single_spec = single_spec.Next;
                        } else if (single_spec.IsPointer) {
-                               if (!TypeManager.VerifyUnmanaged (ec.Module, type, loc))
+                               //
+                               // Declared fields cannot have unmanaged check done before all types are defined
+                               //
+                               if (!(ec.CurrentMemberDefinition is Field) && !TypeManager.VerifyUnmanaged (ec.Module, type, loc))
                                        return null;
 
                                if (!ec.IsUnsafe) {
@@ -12586,6 +12566,15 @@ namespace Mono.CSharp
                        ca.Emit (ec, best, arguments, loc);
                }
 
+               public override void FlowAnalysis (FlowAnalysisContext fc)
+               {
+                       if (interpolations != null) {
+                               foreach (var expr in interpolations) {
+                                       expr.FlowAnalysis (fc);
+                               }
+                       }
+               }
+
                MethodSpec ResolveBestFormatOverload (ResolveContext rc)
                {
                        var members = MemberCache.FindMembers (rc.BuiltinTypes.String, "Format", true);
@@ -12625,6 +12614,11 @@ namespace Mono.CSharp
                        return Convert.ImplicitConversionRequired (rc, expr, rc.BuiltinTypes.Object, expr.Location);
                }
 
+               public override void FlowAnalysis (FlowAnalysisContext fc)
+               {
+                       Child.FlowAnalysis (fc);
+               }
+
                public int? ResolveAligment (ResolveContext rc)
                {
                        var c = Alignment.ResolveLabelConstant (rc);
index e63e999dc79dd325b8e42d7a1ab839be35de00fd..556a08b85241204a64a96bc55d4a65460576f6c9 100644 (file)
@@ -1138,7 +1138,7 @@ namespace Mono.CSharp {
                                //
                                // Iterate over inflated interfaces
                                //
-                               foreach (var iface in Interfaces) {
+                               foreach (var iface in InterfacesDefined) {
                                        found = false;
                                        if (other.InterfacesDefined != null) {
                                                foreach (var oiface in other.Interfaces) {
@@ -1171,7 +1171,7 @@ namespace Mono.CSharp {
                                //
                                // Iterate over inflated interfaces
                                //
-                               foreach (var oiface in other.Interfaces) {
+                               foreach (var oiface in other.InterfacesDefined) {
                                        found = false;
 
                                        if (InterfacesDefined != null) {
@@ -3111,21 +3111,36 @@ namespace Mono.CSharp {
                                return ExactInference (ac_u.Element, ac_v.Element);
                        }
 
-                       // If V is constructed type and U is constructed type
+                       //
+                       // If V is constructed type and U is constructed type or dynamic
+                       //
                        if (TypeManager.IsGenericType (v)) {
-                               if (!TypeManager.IsGenericType (u) || v.MemberDefinition != u.MemberDefinition)
-                                       return 0;
+                               if (u.BuiltinType == BuiltinTypeSpec.Type.Dynamic) {
 
-                               TypeSpec [] ga_u = TypeManager.GetTypeArguments (u);
-                               TypeSpec [] ga_v = TypeManager.GetTypeArguments (v);
-                               if (ga_u.Length != ga_v.Length)
-                                       return 0;
+                                       var ga_v = v.TypeArguments;
 
-                               int score = 0;
-                               for (int i = 0; i < ga_u.Length; ++i)
-                                       score += ExactInference (ga_u [i], ga_v [i]);
+                                       int score = 0;
+                                       for (int i = 0; i < ga_v.Length; ++i)
+                                               score += ExactInference (u, ga_v [i]);
+
+                                       return System.Math.Min (1, score);
 
-                               return System.Math.Min (1, score);
+                               } else {
+                                       if (!TypeManager.IsGenericType (u) || v.MemberDefinition != u.MemberDefinition)
+                                               return 0;
+
+                                       var ga_u = u.TypeArguments;
+                                       var ga_v = v.TypeArguments;
+
+                                       if (u.TypeArguments.Length != u.TypeArguments.Length)
+                                               return 0;
+
+                                       int score = 0;
+                                       for (int i = 0; i < ga_v.Length; ++i)
+                                               score += ExactInference (ga_u [i], ga_v [i]);
+
+                                       return System.Math.Min (1, score);
+                               }
                        }
 
                        // If V is one of the unfixed type arguments
index 57e2e11e19c8dc221a3933ce666ccba0de57a08f..6c2f543f75663cef7ff214dcb828c7b8be1119fa 100644 (file)
@@ -1322,7 +1322,7 @@ namespace Mono.CSharp {
                        if (a.DeclaringType.MemberDefinition != b.DeclaringType.MemberDefinition)
                                return mc_b;
 
-                       if (mc_a.Location.File != mc_a.Location.File)
+                       if (mc_a.Location.File != mc_b.Location.File)
                                return mc_b;
 
                        return mc_b.Location.Row > mc_a.Location.Row ? mc_b : mc_a;
index 2639d046d1bfe1c8ce36790aab6a936847098688..d81c307ae085acd14d48606b1af9d068b0c4ee25 100644 (file)
@@ -1296,16 +1296,20 @@ namespace Mono.CSharp {
                                                continue;
                                        }
 
-                                       entry.Define (this);
+                                       try {
+                                               entry.Define (this);
+                                       } finally {
+                                               //
+                                               // It's needed for repl only, when using clause cannot be resolved don't hold it in
+                                               // global list which is resolved for every evaluation
+                                               //
+                                               if (entry.ResolvedExpression == null) {
+                                                       clauses.RemoveAt (i--);
+                                               }
+                                       }
 
-                                       //
-                                       // It's needed for repl only, when using clause cannot be resolved don't hold it in
-                                       // global list which is resolved for each evaluation
-                                       //
-                                       if (entry.ResolvedExpression == null) {
-                                               clauses.RemoveAt (i--);
+                                       if (entry.ResolvedExpression == null)
                                                continue;
-                                       }
 
                                        var using_ns = entry.ResolvedExpression as NamespaceExpression;
                                        if (using_ns == null) {
@@ -1343,7 +1347,7 @@ namespace Mono.CSharp {
                                        for (int i = 0; i < clauses.Count; ++i) {
                                                var entry = clauses[i];
                                                if (entry.Alias != null) {
-                                                       aliases.Add (entry.Alias.Value, (UsingAliasNamespace) entry);
+                                                       aliases[entry.Alias.Value] = (UsingAliasNamespace) entry;
                                                }
                                        }
                                }
@@ -1439,6 +1443,7 @@ namespace Mono.CSharp {
                        if (resolved != null) {
                                var compiler = ctx.Module.Compiler;
                                var type = resolved.Type;
+                               resolved = null;
 
                                compiler.Report.SymbolRelatedToPreviousError (type);
                                compiler.Report.Error (138, Location,
index 210f5cb8ca6b9e7675e014ed079f6296bafd12e3..dbfc6b0648da0b095787be343dc632f572e14ffe 100644 (file)
@@ -795,7 +795,7 @@ namespace Mono.CSharp.Nullable
                        //
                        // Both operands are bool? types
                        //
-                       if (UnwrapLeft != null && UnwrapRight != null) {
+                       if ((UnwrapLeft != null && !Left.IsNull) && (UnwrapRight != null && !Right.IsNull)) {
                                if (ec.HasSet (BuilderContext.Options.AsyncBody) && Binary.Right.ContainsEmitWithAwait ()) {
                                        Left = Left.EmitToField (ec);
                                        Right = Right.EmitToField (ec);
@@ -861,6 +861,8 @@ namespace Mono.CSharp.Nullable
                                        LiftedNull.Create (type, loc).Emit (ec);
                                } else {
                                        Left.Emit (ec);
+                                       UnwrapRight.Store (ec);
+
                                        ec.Emit (or ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, load_right);
 
                                        ec.EmitInt (or ? 1 : 0);
@@ -869,7 +871,7 @@ namespace Mono.CSharp.Nullable
                                        ec.Emit (OpCodes.Br_S, end_label);
 
                                        ec.MarkLabel (load_right);
-                                       UnwrapRight.Original.Emit (ec);
+                                       UnwrapRight.Load (ec);
                                }
                        } else {
                                //
@@ -897,14 +899,14 @@ namespace Mono.CSharp.Nullable
                                        LiftedNull.Create (type, loc).Emit (ec);
                                } else {
                                        Right.Emit (ec);
-                                       ec.Emit (or ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, load_right);
+                                       ec.Emit (or ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, load_left);
 
                                        ec.EmitInt (or ? 1 : 0);
                                        ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
 
                                        ec.Emit (OpCodes.Br_S, end_label);
 
-                                       ec.MarkLabel (load_right);
+                                       ec.MarkLabel (load_left);
 
                                        UnwrapLeft.Load (ec);
                                }
@@ -1073,6 +1075,7 @@ namespace Mono.CSharp.Nullable
        {
                Expression left, right;
                Unwrap unwrap;
+               bool user_conversion_left;
 
                public NullCoalescingOperator (Expression left, Expression right)
                {
@@ -1220,6 +1223,7 @@ namespace Mono.CSharp.Nullable
                                return ReducedExpression.Create (right, this, false).Resolve (ec);
 
                        left = Convert.ImplicitConversion (ec, unwrap ?? left, rtype, loc);
+                       user_conversion_left = left is UserCast;
                        type = rtype;
                        return this;
                }
@@ -1283,10 +1287,14 @@ namespace Mono.CSharp.Nullable
                        // Null check is done on original expression not after expression is converted to
                        // result type. This is in most cases same but when user conversion is involved
                        // we can end up in situation when user operator does the null handling which is
-                       // not what the operator is supposed to do
+                       // not what the operator is supposed to do.
+                       // There is tricky case where cast of left expression is meant to be cast of
+                       // whole source expression (null check is done on it) and cast from right-to-left
+                       // conversion needs to do null check on unconverted source expression.
                        //
-                       var op_expr = left as UserCast;
-                       if (op_expr != null) {
+                       if (user_conversion_left) {
+                               var op_expr = (UserCast) left;
+
                                op_expr.Source.Emit (ec);
                                LocalTemporary temp;
 
index 13abbd67c67425faf5f9b3701068ea4c9a2aefc2..7b092135a2b09601d4e7d20a7ed471aac6799ea7 100644 (file)
@@ -1210,6 +1210,14 @@ namespace Mono.CSharp {
                                settings.RuntimeMetadataVersion = value;
                                return ParseResult.Success;
 
+                       // csc options that we don't support
+                       case "/utf8output":
+                       case "/subsystemversion":
+                       case "/highentropyva":
+                       case "/highentropyva+":
+                       case "/highentropyva-":
+                               return ParseResult.Success;
+
                        default:
                                return ParseResult.UnknownOption;
                        }
index f3bde1607cbb59d7728eccb21143b870dda1fc0f..e5c8bb4316c6b5af4ce075f1b939559bf7efd40f 100644 (file)
@@ -1408,6 +1408,10 @@ namespace Mono.CSharp {
 
                protected override bool DoFlowAnalysis (FlowAnalysisContext fc)
                {
+                       // Goto to unreachable label
+                       if (label == null)
+                               return true;
+
                        if (fc.AddReachedLabel (label))
                                return true;
 
@@ -1424,12 +1428,12 @@ namespace Mono.CSharp {
 
                        if (try_finally != null) {
                                if (try_finally.FinallyBlock.HasReachableClosingBrace) {
-                                       label.AddGotoReference (rc, false);
+                                       label.AddGotoReference (rc);
                                } else {
-                                       label.AddGotoReference (rc, true);
+                                       label = null;
                                }
                        } else {
-                               label.AddGotoReference (rc, false);
+                               label.AddGotoReference (rc);
                        }
 
                        return Reachability.CreateUnreachable ();
@@ -1442,8 +1446,9 @@ namespace Mono.CSharp {
 
                protected override void DoEmit (EmitContext ec)
                {
+                       // This should only happen for goto from try block to unrechable label
                        if (label == null)
-                               throw new InternalErrorException ("goto emitted before target resolved");
+                               return;
 
                        Label l = label.LabelTarget (ec);
 
@@ -1478,7 +1483,6 @@ namespace Mono.CSharp {
                string name;
                bool defined;
                bool referenced;
-               bool finalTarget;
                Label label;
                Block block;
                
@@ -1525,9 +1529,6 @@ namespace Mono.CSharp {
                {
                        LabelTarget (ec);
                        ec.MarkLabel (label);
-
-                       if (finalTarget)
-                               ec.Emit (OpCodes.Br_S, label);
                }
 
                protected override bool DoFlowAnalysis (FlowAnalysisContext fc)
@@ -1549,7 +1550,7 @@ namespace Mono.CSharp {
                        return rc;
                }
 
-               public void AddGotoReference (Reachability rc, bool finalTarget)
+               public void AddGotoReference (Reachability rc)
                {
                        if (referenced)
                                return;
@@ -1557,17 +1558,6 @@ namespace Mono.CSharp {
                        referenced = true;
                        MarkReachable (rc);
 
-                       //
-                       // Label is final target when goto jumps out of try block with
-                       // finally clause. In that case we need leave with target but in C#
-                       // terms the label is unreachable. Using finalTarget we emit
-                       // explicit label not just marker
-                       //
-                       if (finalTarget) {
-                               this.finalTarget = true;
-                               return;
-                       }
-
                        block.ScanGotoJump (this);
                }
 
@@ -2992,18 +2982,30 @@ namespace Mono.CSharp {
                                if (end_unreachable) {
                                        bool after_goto_case = goto_flow_analysis && s is GotoCase;
 
-                                       for (++startIndex; startIndex < statements.Count; ++startIndex) {
-                                               s = statements[startIndex];
-                                               if (s is SwitchLabel) {
-                                                       if (!after_goto_case)
-                                                               s.FlowAnalysis (fc);
+                                       var f = s as TryFinally;
+                                       if (f != null && !f.FinallyBlock.HasReachableClosingBrace) {
+                                               //
+                                               // Special case for try-finally with unreachable code after
+                                               // finally block. Try block has to include leave opcode but there is
+                                               // no label to leave to after unreachable finally block closing
+                                               // brace. This sentinel ensures there is always IL instruction to
+                                               // leave to even if we know it'll never be reached.
+                                               //
+                                               statements.Insert (startIndex + 1, new SentinelStatement ());
+                                       } else {
+                                               for (++startIndex; startIndex < statements.Count; ++startIndex) {
+                                                       s = statements [startIndex];
+                                                       if (s is SwitchLabel) {
+                                                               if (!after_goto_case)
+                                                                       s.FlowAnalysis (fc);
 
-                                                       break;
-                                               }
+                                                               break;
+                                                       }
 
-                                               if (s.IsUnreachable) {
-                                                       s.FlowAnalysis (fc);
-                                                       statements [startIndex] = RewriteUnreachableStatement (s);
+                                                       if (s.IsUnreachable) {
+                                                               s.FlowAnalysis (fc);
+                                                               statements [startIndex] = RewriteUnreachableStatement (s);
+                                                       }
                                                }
                                        }
 
@@ -3043,7 +3045,7 @@ namespace Mono.CSharp {
                        // L:
                        //      v = 1;
 
-                       if (s is BlockVariable || s is EmptyStatement)
+                       if (s is BlockVariable || s is EmptyStatement || s is SentinelStatement)
                                return s;
 
                        return new EmptyStatement (s.loc);
@@ -3879,8 +3881,10 @@ namespace Mono.CSharp {
                        return new ParameterReference (parameter_info[index], loc);
                }
 
-               public Statement PerformClone ()
+               public Statement PerformClone (ref HashSet<LocalVariable> undeclaredVariables)
                {
+                       undeclaredVariables = TopBlock.GetUndeclaredVariables ();
+
                        CloneContext clonectx = new CloneContext ();
                        return Clone (clonectx);
                }
@@ -4394,6 +4398,63 @@ namespace Mono.CSharp {
                        base.CheckControlExit (fc, dat);
                }
 
+               public HashSet<LocalVariable> GetUndeclaredVariables ()
+               {
+                       if (names == null)
+                               return null;
+
+                       HashSet<LocalVariable> variables = null;
+
+                       foreach (var entry in names) {
+                               var complex = entry.Value as List<INamedBlockVariable>;
+                               if (complex != null) {
+                                       foreach (var centry in complex) {
+                                               if (IsUndeclaredVariable (centry)) {
+                                                       if (variables == null)
+                                                               variables = new HashSet<LocalVariable> ();
+
+                                                       variables.Add ((LocalVariable) centry);
+                                               }
+                                       }
+                               } else if (IsUndeclaredVariable ((INamedBlockVariable)entry.Value)) {
+                                       if (variables == null)
+                                               variables = new HashSet<LocalVariable> ();
+
+                                       variables.Add ((LocalVariable)entry.Value);                                     
+                               }
+                       }
+
+                       return variables;
+               }
+
+               static bool IsUndeclaredVariable (INamedBlockVariable namedBlockVariable)
+               {
+                       var lv = namedBlockVariable as LocalVariable;
+                       return lv != null && !lv.IsDeclared;
+               }
+
+               public void SetUndeclaredVariables (HashSet<LocalVariable> undeclaredVariables)
+               {
+                       if (names == null)
+                               return;
+                       
+                       foreach (var entry in names) {
+                               var complex = entry.Value as List<INamedBlockVariable>;
+                               if (complex != null) {
+                                       foreach (var centry in complex) {
+                                               var lv = centry as LocalVariable;
+                                               if (lv != null && undeclaredVariables.Contains (lv)) {
+                                                       lv.Type = null;
+                                               }
+                                       }
+                               } else {
+                                       var lv = entry.Value as LocalVariable;
+                                       if (lv != null && undeclaredVariables.Contains (lv))
+                                               lv.Type = null;
+                               }
+                       }
+               }
+
                public override void Emit (EmitContext ec)
                {
                        if (Report.Errors > 0)
@@ -8210,4 +8271,23 @@ namespace Mono.CSharp {
                        return visitor.Visit (this);
                }
        }
+
+       class SentinelStatement: Statement
+       {
+               protected override void CloneTo (CloneContext clonectx, Statement target)
+               {
+               }
+
+               protected override void DoEmit (EmitContext ec)
+               {
+                       var l = ec.DefineLabel ();
+                       ec.MarkLabel (l);
+                       ec.Emit (OpCodes.Br_S, l);
+               }
+
+               protected override bool DoFlowAnalysis (FlowAnalysisContext fc)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
 }
index e89d705e83c32e0d5cff7b929c38995ea8a9baf3..24a0b570d32fb5df6693e08c762f14b316a3cb71 100644 (file)
@@ -97,6 +97,8 @@ namespace NUnit.ConsoleRunner
                                                testFilter = new AndFilter( testFilter, excludeFilter );\r
                                }\r
 \r
+                               testFilter = BabysitterSupport.AddBabysitterFilter(testFilter);\r
+\r
                                TestResult result = null;\r
                                string savedDirectory = Environment.CurrentDirectory;\r
                                TextWriter savedOut = Console.Out;\r
@@ -158,7 +160,7 @@ namespace NUnit.ConsoleRunner
                                //if ( testRunner != null )\r
                                //    testRunner.Unload();\r
 \r
-                               if ( collector.HasExceptions )\r
+                               if ( result == null || collector.HasExceptions )\r
                                {\r
                                        collector.WriteExceptions();\r
                                        return UNEXPECTED_ERROR;\r
index 7e3d582688abadbb698bb704a182a102f4b73033..c3f8db9c3d4cd1a39c68b98eb67d37da4da493f8 100644 (file)
@@ -98,6 +98,8 @@ namespace NUnit.ConsoleRunner
                                                        }\r
                                                }\r
                                        }\r
+\r
+                                       BabysitterSupport.RecordFailedTest(currentTestName);\r
                                }\r
                        }\r
                        else\r
diff --git a/mcs/nunit24/NUnitCore/core/BabysitterSupport.cs b/mcs/nunit24/NUnitCore/core/BabysitterSupport.cs
new file mode 100644 (file)
index 0000000..0569119
--- /dev/null
@@ -0,0 +1,111 @@
+//
+// BabysitterSupport.cs: Nunit extensions to support test harness used by Mono.
+//                       See scripts/babysitter in Mono repository.
+//
+// Author:
+//   Andi McClure (andi.mcclure@xamarin.com)
+//
+// Copyright (C) 2015 Xamarin, Inc (http://www.xamarin.com)
+//
+
+namespace NUnit.Core
+{
+       using System;
+       using System.IO;
+       using System.Collections.Generic;
+       using NUnit.Core.Filters;
+
+       public class BabysitterSupport
+       {
+               enum OverrideMode {None, Run, Exclude};
+               public static Dictionary<string, bool> OverrideTests = new Dictionary<string, bool>();
+               private static OverrideMode Override = OverrideMode.None;
+               private static string CurrentTestFile = null, RanTestFile = null, FailedTestFile = null;
+
+               private static void DeleteFile(string path)
+               {
+                       try {
+                               File.Delete(path);
+                       } catch (Exception e) {}
+               }
+               private static void WriteFile(string path, string contents)
+               {
+                       DeleteFile(path);
+                       File.AppendAllText(path, contents);
+               }
+
+               // Environment variables are available from process start, so safe to do setup in a static constructor
+               static BabysitterSupport()
+               {
+                       string overrideModeString = Environment.GetEnvironmentVariable("MONO_BABYSITTER_NUNIT_RUN_MODE");
+                       string overrideTestString = Environment.GetEnvironmentVariable("MONO_BABYSITTER_NUNIT_RUN_TEST");
+                       if (overrideModeString == "RUN")
+                               Override = OverrideMode.Run;
+                       else if (overrideModeString == "EXCLUDE")
+                               Override = OverrideMode.Exclude;
+                       if (Override != OverrideMode.None)
+                       {
+                               string[] overrideTests = overrideTestString.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries);
+                               foreach (string s in overrideTests)
+                                       OverrideTests[s] = true;
+                       }
+
+                       CurrentTestFile = Environment.GetEnvironmentVariable("MONO_BABYSITTER_NUNIT_CURRENT_TEST_FILE");
+                       RanTestFile = Environment.GetEnvironmentVariable("MONO_BABYSITTER_NUNIT_RAN_TEST_FILE");
+                       FailedTestFile = Environment.GetEnvironmentVariable("MONO_BABYSITTER_NUNIT_FAILED_TEST_FILE");
+               }
+
+               // Entry points
+
+               public static void RecordEnterTest( string testName )
+               {
+                       if (CurrentTestFile != null)
+                               WriteFile(CurrentTestFile, testName);
+                       if (RanTestFile != null)
+                               File.AppendAllText(RanTestFile, testName + Environment.NewLine);
+               }
+
+               public static void RecordLeaveTest( string testName )
+               {
+                       if (CurrentTestFile != null)
+                               DeleteFile(CurrentTestFile);
+               }
+
+               public static void RecordFailedTest( string testName )
+               {
+                       if (FailedTestFile != null)
+                               File.AppendAllText(FailedTestFile, testName + Environment.NewLine);
+               }
+
+               public static TestFilter AddBabysitterFilter(TestFilter currentFilter)
+               {
+                       if (Override == OverrideMode.None)
+                               return currentFilter;
+                       return new AndFilter(currentFilter, new BabysitterFilter());
+               }
+
+               [Serializable]
+               private class BabysitterFilter : TestFilter
+               {
+                       public override bool Match(ITest test)
+                       {
+                               if (test.IsSuite) // A suite returning true will automatically run ALL contents, filters ignored
+                                       return false;
+                               bool inList = OverrideTests.ContainsKey(test.TestName.FullName);
+                               bool allow = true;
+                               switch (Override)
+                               {
+                                       case OverrideMode.None:
+                                               break;
+                                       case OverrideMode.Run:
+                                               allow = inList;
+                                               break;
+                                       case OverrideMode.Exclude:
+                                               allow = !inList;
+                                               break;
+                               }
+                               return allow;
+                       }
+               }
+       }
+}
\ No newline at end of file
index 4722bcb954f286018758ad68dc054e9bd7adc966..d43714f3ad5a034af553d2938c587fb71cf305a2 100644 (file)
@@ -49,6 +49,13 @@ namespace NUnit.Core
                                TestCaseResult testResult = MakeTestCaseResult();\r
 \r
                                listener.TestStarted( this.TestName );\r
+\r
+                               // The babysitter's enter/leave "listeners" specifically exist to track crashes,\r
+                               // so unfortunately they can't work through the (asynchronous) listener interface.\r
+                               bool willRun = this.RunState == RunState.Runnable || this.RunState == RunState.Explicit;\r
+                               if (willRun)\r
+                                       BabysitterSupport.RecordEnterTest(this.TestName.FullName);\r
+\r
                                long startTime = DateTime.Now.Ticks;\r
 \r
                                switch (this.RunState)\r
@@ -68,6 +75,10 @@ namespace NUnit.Core
                                }\r
 \r
                                long stopTime = DateTime.Now.Ticks;\r
+\r
+                               if (willRun)\r
+                                       BabysitterSupport.RecordLeaveTest(this.TestName.FullName);\r
+\r
                                double time = ((double)(stopTime - startTime)) / (double)TimeSpan.TicksPerSecond;\r
                                testResult.Time = time;\r
 \r
index 49712e32fd825a536a6f5806a26e0b0e4fa70e53..2651b22376c038820ef28fe23fa7c09f0c60f842 100644 (file)
@@ -11,6 +11,7 @@
         <include name="AssemblyInfo.cs"/>\r
         <include name="AssemblyReader.cs"/>\r
         <include name="AssemblyResolver.cs"/>\r
+        <include name="BabysitterSupport.cs"/>\r
         <include name="CoreExtensions.cs"/>\r
         <include name="CultureDetector.cs"/>\r
         <include name="DirectorySwapper.cs"/>\r
index 8502368a78ab6ebceef866c901f50bff31a7864d..2901792b63e7410faa8a1e74465622a87f4af19d 100644 (file)
                     SubType = "Code"\r
                     BuildAction = "Compile"\r
                 />\r
+                <File\r
+                    RelPath = "BabysitterSupport.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
                 <File\r
                     RelPath = "CommonAssemblyInfo.cs"\r
                     Link = "..\..\CommonAssemblyInfo.cs"\r
index 0efe3c0fd64e6e0462604acae3a2986b8aad444f..4fa186b92065e4fc2c579e09b5e15224111ef909 100644 (file)
@@ -3,6 +3,7 @@ AbstractTestCaseDecoration.cs
 AssemblyInfo.cs
 AssemblyReader.cs
 AssemblyResolver.cs
+BabysitterSupport.cs
 Builders/AbstractFixtureBuilder.cs
 Builders/AbstractTestCaseBuilder.cs
 Builders/LegacySuiteBuilder.cs
index 00e25771939c690585b0eb11c255fac31d695413..eaf015df06b69ec2ff146412473b365184a630bb 100644 (file)
@@ -65,6 +65,9 @@
     <Compile Include="AssemblyResolver.cs">\r
       <SubType>Code</SubType>\r
     </Compile>\r
+    <Compile Include="BabysitterSupport.cs">\r
+      <SubType>Code</SubType>\r
+    </Compile>\r
     <Compile Include="CoreExtensions.cs" />\r
     <Compile Include="CultureDetector.cs" />\r
     <Compile Include="ExtensionPoint.cs" />\r
diff --git a/mcs/tests/dtest-062.cs b/mcs/tests/dtest-062.cs
new file mode 100644 (file)
index 0000000..48fcac2
--- /dev/null
@@ -0,0 +1,18 @@
+using System;
+
+class G<T>
+{
+}
+
+public class Program
+{
+       static void Test<T> (G<G<T>> g)
+       {
+       }
+
+       static void Main ()
+       {
+               dynamic d = new G<G<int>> ();
+               Test (d);
+       }
+}
\ No newline at end of file
index 45d03a328a7594325bb797c3cfc42f5aca1b1c24..d8fee033830cf1a65ea14b44a462ef8c0dc6eb77 100644 (file)
@@ -165,6 +165,11 @@ public class ConditionalParsing
                var t = (Object)string.Empty;
        }
 
+       void Test_21 ()
+       {
+               var t = (Int32)sbyte.MaxValue;
+       }
+
        static void Helper<T> (T arg)
        {
        }
index 7596032d16fcf14d71e45222d72469f2d00056f5..61c94270ef5d24a2da181b2555956df0b949e6ab 100644 (file)
@@ -85,6 +85,19 @@ class C
                
                if ((true | a) != true)
                        return 65;
+
+               var b4 = true;
+               if ((b4 & null) != null)
+                       return 100;
+
+               if ((null & b4) != null)
+                       return 101;
+
+               if ((b4 | null) != true)
+                       return 102;
+
+               if ((null | b4) != true)
+                       return 103;
                
                return 0;
        }
diff --git a/mcs/tests/gtest-635.cs b/mcs/tests/gtest-635.cs
new file mode 100644 (file)
index 0000000..8bb31b3
--- /dev/null
@@ -0,0 +1,27 @@
+public interface I<T>
+{
+       T Clone();
+       T1 Clone<T1>() where T1 : T;
+}
+
+public interface I2 : I<I2>
+{
+}
+
+public class TestClass : I2
+{
+       public I2 Clone ()
+       {
+               return null;
+       }
+
+       public T1 Clone<T1> () where T1 : I2
+       {
+               return (T1) Clone();
+       }
+
+       public static void Main () 
+       {
+               new TestClass ();
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-636.cs b/mcs/tests/gtest-636.cs
new file mode 100644 (file)
index 0000000..9c44fdf
--- /dev/null
@@ -0,0 +1,37 @@
+using System;
+
+class MainClass
+{
+       public static int Main ()
+       {
+               var res = XX () | YY();
+               if (!res.Value)
+                       return 1;
+
+               if (xx != 1)
+                       return 2;
+
+               if (yy != 1)
+                       return 2;
+
+               return 0;
+       }
+
+       static int xx;
+       static bool XX ()
+       {
+               ++xx;
+               Console.WriteLine ("XX");
+               return true;
+       }       
+
+       static int yy;
+       static bool? YY ()
+       {
+               if (xx == 1)
+                       ++yy;
+                       
+               Console.WriteLine ("YY");
+               return true;
+       }       
+}
diff --git a/mcs/tests/gtest-autoproperty-21-lib.cs b/mcs/tests/gtest-autoproperty-21-lib.cs
new file mode 100644 (file)
index 0000000..15e9fa9
--- /dev/null
@@ -0,0 +1,6 @@
+// Compiler options: -t:library
+
+public abstract class Base
+{
+       public abstract string Value { get; }
+}
diff --git a/mcs/tests/gtest-autoproperty-21.cs b/mcs/tests/gtest-autoproperty-21.cs
new file mode 100644 (file)
index 0000000..4a900c8
--- /dev/null
@@ -0,0 +1,16 @@
+// Compiler options: -r:gtest-autoproperty-21-lib.dll
+
+public class Subclass : Base
+{
+       public override string Value { get; }
+
+       public Subclass ()
+       {
+               Value = "test";
+       }
+
+       public static void Main ()
+       {
+               new Subclass ();
+       }
+}
\ No newline at end of file
index f7204392ff0f28660a209d17185bcab900ead40d..c88ac8885e5c075d882071ae3aa485b599ff5091 100644 (file)
@@ -11,7 +11,10 @@ class PointerArithmeticTest
                } catch (System.OverflowException) {}
                
                try {
-                       return CheckSub((short*)(-1), int.MaxValue);
+                       if (IntPtr.Size <= 4)
+                               return CheckSub((short*)(-1), int.MaxValue);
+                       else
+                               return CheckSub((short*)(-1), long.MaxValue);
                } catch (System.OverflowException) {}
                
                CheckSub2((short*)(-1), int.MaxValue);
@@ -44,6 +47,14 @@ class PointerArithmeticTest
                return 102;
        }
 
+       unsafe static int CheckSub(short* ptr, long offset)
+       {
+               if (checked(ptr - offset < ptr))
+                       return 2;
+
+               return 102;
+       }
+
        unsafe static int CheckSub2(short* ptr, int offset)
        {
                short* b = ptr + offset;
diff --git a/mcs/tests/test-929.cs b/mcs/tests/test-929.cs
new file mode 100644 (file)
index 0000000..d814b15
--- /dev/null
@@ -0,0 +1,17 @@
+public class Wibble 
+{
+       public static void Main () {
+               Wibble w = new Wibble();
+               if (w == (null)) {
+               }
+
+               if (w != (null)) {
+               }
+
+               if ((null) == w) {
+               }
+
+               if ((null) != w) {
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-930.cs b/mcs/tests/test-930.cs
new file mode 100644 (file)
index 0000000..daf7b2a
--- /dev/null
@@ -0,0 +1,63 @@
+using System;
+
+class X
+{
+       public static int Main ()
+       {
+               try {
+                       Test1 ();
+                       return 1;
+               } catch (ApplicationException) {
+               }
+
+               try {
+                       Test2 ();
+                       return 2;
+               } catch (ApplicationException) {
+               }
+
+               try {
+                       Test3 ();
+                       return 3;
+               } catch (ApplicationException) {
+               }
+
+               return 0;
+       }
+
+       static void Test1 ()
+       {
+               try
+               {
+               }
+               finally
+               {
+                       throw new ApplicationException ();
+               }
+       }
+
+       static void Test2 ()
+       {
+               try
+               {
+               }
+               catch
+               {
+               }
+               finally
+               {
+                       throw new ApplicationException ();
+               }
+       }
+
+       static void Test3 ()
+       {
+               try
+               {
+                       throw new ApplicationException ();
+               }
+               finally
+               {
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-931.cs b/mcs/tests/test-931.cs
new file mode 100644 (file)
index 0000000..7a1f7be
--- /dev/null
@@ -0,0 +1,20 @@
+using System;
+
+class MainClass
+{
+       public static implicit operator string (MainClass src)
+       {
+               return null;
+       }
+
+       public static int Main ()
+       {
+               var obj = new MainClass ();
+               var s = "x";
+               var res = (string) obj ?? s;
+               if (res != "x")
+                       return 1;
+
+               return 0;
+       }
+}
diff --git a/mcs/tests/test-932.cs b/mcs/tests/test-932.cs
new file mode 100644 (file)
index 0000000..bd5f48e
--- /dev/null
@@ -0,0 +1,18 @@
+using System;
+
+class X
+{
+       static void Main ()
+       {
+               new X().WriteLine("some text");
+       }
+
+       public void WriteLine(string format, ConsoleColor foreColor = ConsoleColor.White, ConsoleColor backColor = ConsoleColor.Black, params object[] args)
+       {
+               throw new ApplicationException ();
+       }
+
+       public void WriteLine(string line, ConsoleColor foreColor = ConsoleColor.White, ConsoleColor backColor = ConsoleColor.Black)
+       {
+       }
+}
diff --git a/mcs/tests/test-async-81.cs b/mcs/tests/test-async-81.cs
new file mode 100644 (file)
index 0000000..591711c
--- /dev/null
@@ -0,0 +1,21 @@
+using System;
+using System.Threading.Tasks;
+
+class MainClass
+{
+       public static void Main ()
+       {
+               new MainClass ().Foo ().Wait ();
+       }
+
+       private async Task<int> Foo() 
+       {
+               await Task.Delay(1);
+               return 42;
+       }
+
+       private async Task Bar()
+       {
+               Console.WriteLine($"Something {await Foo()}");
+       }
+}
diff --git a/mcs/tests/test-null-operator-19.cs b/mcs/tests/test-null-operator-19.cs
new file mode 100644 (file)
index 0000000..16a536e
--- /dev/null
@@ -0,0 +1,26 @@
+using System;
+
+class C
+{
+       public S Acceleration { get; set;}
+}
+
+struct S
+{
+       public double X;
+}
+
+class X
+{
+       public static int Main ()
+       {
+               var c = new C();
+
+               var g = c?.Acceleration.X;
+               Console.WriteLine (g.GetType ());
+               if (g.GetType () != typeof(double))
+                       return 1;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-null-operator-20.cs b/mcs/tests/test-null-operator-20.cs
new file mode 100644 (file)
index 0000000..d22f962
--- /dev/null
@@ -0,0 +1,13 @@
+class M
+{
+       public static void Main ()
+       {
+               string s = null;
+               s?.CompareTo ("xx").CompareTo(s?.EndsWith ("x")).GetHashCode ();
+
+               string s1 = "abcd";
+               string s2 = null;
+
+               var idx = s1.Substring(1)[s2?.GetHashCode () ?? 0].GetHashCode ();
+       }
+}
diff --git a/mcs/tests/test-null-operator-21.cs b/mcs/tests/test-null-operator-21.cs
new file mode 100644 (file)
index 0000000..bb4d04e
--- /dev/null
@@ -0,0 +1,17 @@
+class X
+{
+       public object MyChildObject;
+}
+
+interface ISomeInterface
+{
+}
+
+class MainClass
+{
+       public static void Main ()
+       {
+               X myObject = null;
+               var x = (myObject?.MyChildObject is ISomeInterface);
+       }
+}
diff --git a/mcs/tests/test-null-operator-22.cs b/mcs/tests/test-null-operator-22.cs
new file mode 100644 (file)
index 0000000..04115f9
--- /dev/null
@@ -0,0 +1,33 @@
+class A
+{
+       public A this [string arg] {
+               get {
+                       return new A ();
+               }
+               set {
+               }
+       }
+
+       public int Count (string a)
+       {
+               return 1;
+       }
+}
+
+static class B
+{
+       public static string Count (this A arg)
+       {
+               return "x";
+       }
+}
+
+class X
+{
+       public static void Main ()
+       {
+               var a = new A ();
+               var b = a ["b"]?.Count ();
+               System.Console.WriteLine (b);
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-xml-074-ref.xml b/mcs/tests/test-xml-074-ref.xml
new file mode 100644 (file)
index 0000000..d6cda5a
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-074</name>
+    </assembly>
+    <members>
+        <member name="T:Test">
+             <summary>The Test</summary>
+            </member>
+        <member name="P:Test.Foo">
+             <summary>The Foo</summary>
+            </member>
+        <member name="F:Test.TestFoo">
+             <summary>Tests the Foo</summary>
+            </member>
+    </members>
+</doc>
diff --git a/mcs/tests/test-xml-074.cs b/mcs/tests/test-xml-074.cs
new file mode 100644 (file)
index 0000000..5fec20e
--- /dev/null
@@ -0,0 +1,16 @@
+// Compiler options: -warnaserror -doc:xml-074.xml
+using System.Collections.Generic;
+
+ /// <summary>The Test</summary>
+ public class Test
+ {
+       /// <summary>The Foo</summary>
+       protected Dictionary<string, object> Foo { get; set; } = new Dictionary<string, object>();
+
+       /// <summary>Tests the Foo</summary>
+       protected bool TestFoo;
+
+       static void Main ()
+       {
+       }
+ }
index 5f67520de7d6cdc755b4364fada13315a71de998..b2352089203209034d84842f849045f7e04bd169 100644 (file)
       </method>
     </type>
   </test>
+  <test name="dtest-062.cs">
+    <type name="G`1[T]">
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Program">
+      <method name="Void Test[T](G`1[G`1[T]])" attrs="145">
+        <size>2</size>
+      </method>
+      <method name="Void Main()" attrs="145">
+        <size>112</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="dtest-anontype-01.cs">
     <type name="C">
       <method name="Void Main()" attrs="150">
       <method name="Void Test_20()" attrs="129">
         <size>8</size>
       </method>
+      <method name="Void Test_21()" attrs="129">
+        <size>5</size>
+      </method>
     </type>
   </test>
   <test name="gtest-410.cs">
   <test name="gtest-540.cs">
     <type name="C">
       <method name="Int32 Main()" attrs="150">
-        <size>762</size>
+        <size>1025</size>
       </method>
       <method name="Void .ctor()" attrs="6278">
         <size>7</size>
       </method>
     </type>
   </test>
+  <test name="gtest-635.cs">
+    <type name="TestClass">
+      <method name="I2 Clone()" attrs="486">
+        <size>10</size>
+      </method>
+      <method name="T1 Clone[T1]()" attrs="486">
+        <size>20</size>
+      </method>
+      <method name="Void Main()" attrs="150">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-636.cs">
+    <type name="MainClass">
+      <method name="Int32 Main()" attrs="150">
+        <size>88</size>
+      </method>
+      <method name="Boolean XX()" attrs="145">
+        <size>32</size>
+      </method>
+      <method name="System.Nullable`1[System.Boolean] YY()" attrs="145">
+        <size>48</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-anontype-01.cs">
     <type name="Test">
       <method name="Int32 Main()" attrs="150">
       </method>
     </type>
   </test>
+  <test name="gtest-autoproperty-21.cs">
+    <type name="Subclass">
+      <method name="System.String get_Value()" attrs="2246">
+        <size>14</size>
+      </method>
+      <method name="Void Main()" attrs="150">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>19</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-collectioninit-01.cs">
     <type name="Test">
       <method name="Void TestList(System.Collections.Generic.List`1[System.Int32], Int32)" attrs="145">
   <test name="gtest-fixedbuffer-05.cs">
     <type name="S2">
       <method name="Void Test()" attrs="134">
-        <size>42</size>
+        <size>43</size>
       </method>
       <method name="Void Main()" attrs="150">
         <size>17</size>
   <test name="test-401.cs">
     <type name="X">
       <method name="Int32 Main()" attrs="150">
-        <size>206</size>
+        <size>209</size>
       </method>
       <method name="Void .ctor()" attrs="6278">
         <size>7</size>
   <test name="test-408.cs">
     <type name="T">
       <method name="Int32 Main()" attrs="150">
-        <size>59</size>
+        <size>60</size>
       </method>
       <method name="Void .ctor()" attrs="6278">
         <size>7</size>
   <test name="test-505.cs">
     <type name="T">
       <method name="Int32 f()" attrs="145">
-        <size>20</size>
+        <size>22</size>
       </method>
       <method name="Void Main()" attrs="150">
         <size>37</size>
   <test name="test-643.cs">
     <type name="PointerArithmeticTest">
       <method name="Int32 Main()" attrs="150">
-        <size>137</size>
+        <size>170</size>
       </method>
       <method name="Int32* Conversions(Int64)" attrs="145">
         <size>11</size>
       </method>
       <method name="Int32 CheckAdd(Byte*, Int32)" attrs="145">
-        <size>27</size>
+        <size>28</size>
       </method>
       <method name="Int32 CheckSub(Int16*, Int32)" attrs="145">
-        <size>29</size>
+        <size>30</size>
       </method>
       <method name="Int32 CheckSub2(Int16*, Int32)" attrs="145">
-        <size>36</size>
+        <size>37</size>
       </method>
       <method name="Void .ctor()" attrs="6278">
         <size>7</size>
       </method>
+      <method name="Int32 CheckSub(Int16*, Int64)" attrs="145">
+        <size>31</size>
+      </method>
     </type>
   </test>
   <test name="test-644.cs">
         <size>33</size>
       </method>
       <method name="Void Test2(SByte, Int16, Int32, Int64, UInt64)" attrs="145">
-        <size>40</size>
+        <size>43</size>
       </method>
       <method name="Int32 Main()" attrs="150">
         <size>54</size>
   <test name="test-670.cs">
     <type name="C">
       <method name="Void Main()" attrs="150">
-        <size>15</size>
+        <size>17</size>
       </method>
       <method name="Void .ctor()" attrs="6278">
         <size>7</size>
         <size>7</size>
       </method>
       <method name="Void CopyTo(Int32, Char[], Int32, Int32)" attrs="145">
-        <size>71</size>
+        <size>73</size>
       </method>
     </type>
   </test>
       </method>
     </type>
   </test>
+  <test name="test-929.cs">
+    <type name="Wibble">
+      <method name="Void Main()" attrs="150">
+        <size>40</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-93.cs">
     <type name="N1.C">
       <method name="Void .ctor()" attrs="6278">
       </method>
     </type>
   </test>
+  <test name="test-930.cs">
+    <type name="X">
+      <method name="Int32 Main()" attrs="150">
+        <size>73</size>
+      </method>
+      <method name="Void Test1()" attrs="145">
+        <size>17</size>
+      </method>
+      <method name="Void Test2()" attrs="145">
+        <size>25</size>
+      </method>
+      <method name="Void Test3()" attrs="145">
+        <size>11</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-931.cs">
+    <type name="MainClass">
+      <method name="System.String op_Implicit(MainClass)" attrs="2198">
+        <size>10</size>
+      </method>
+      <method name="Int32 Main()" attrs="150">
+        <size>60</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-932.cs">
+    <type name="X">
+      <method name="Void Main()" attrs="145">
+        <size>20</size>
+      </method>
+      <method name="Void WriteLine(System.String, System.ConsoleColor, System.ConsoleColor, System.Object[])" attrs="134">
+        <size>7</size>
+      </method>
+      <method name="Void WriteLine(System.String, System.ConsoleColor, System.ConsoleColor)" attrs="134">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-94.cs">
     <type name="Base">
       <method name="Int32 IVehicle.Start()" attrs="481">
     </type>
     <type name="Tester+&lt;TestException_4&gt;c__async3">
       <method name="Void MoveNext()" attrs="486">
-        <size>239</size>
+        <size>236</size>
       </method>
     </type>
     <type name="Tester+&lt;TestException_5&gt;c__async4">
       </method>
     </type>
   </test>
+  <test name="test-async-81.cs">
+    <type name="MainClass">
+      <method name="Void Main()" attrs="150">
+        <size>17</size>
+      </method>
+      <method name="System.Threading.Tasks.Task`1[System.Int32] Foo()" attrs="129">
+        <size>33</size>
+      </method>
+      <method name="System.Threading.Tasks.Task Bar()" attrs="129">
+        <size>41</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="MainClass+&lt;Foo&gt;c__async0">
+      <method name="Void MoveNext()" attrs="486">
+        <size>166</size>
+      </method>
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">
+        <size>13</size>
+      </method>
+    </type>
+    <type name="MainClass+&lt;Bar&gt;c__async1">
+      <method name="Void MoveNext()" attrs="486">
+        <size>224</size>
+      </method>
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">
+        <size>13</size>
+      </method>
+    </type>
+  </test>
   <test name="test-cls-00.cs">
     <type name="CLSCLass_6">
       <method name="Void add_Disposed(Delegate)" attrs="2182">
       </method>
     </type>
   </test>
+  <test name="test-null-operator-20.cs">
+    <type name="M">
+      <method name="Void Main()" attrs="150">
+        <size>182</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-null-operator-21.cs">
+    <type name="X">
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="MainClass">
+      <method name="Void Main()" attrs="150">
+        <size>28</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-null-operator-22.cs">
+    <type name="A">
+      <method name="A get_Item(System.String)" attrs="2182">
+        <size>14</size>
+      </method>
+      <method name="Void set_Item(System.String, A)" attrs="2182">
+        <size>2</size>
+      </method>
+      <method name="Int32 Count(System.String)" attrs="134">
+        <size>10</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="System.String Count(A)" attrs="150">
+        <size>14</size>
+      </method>
+    </type>
+    <type name="X">
+      <method name="Void Main()" attrs="150">
+        <size>41</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-partial-01.cs">
     <type name="Foo.Hello">
       <method name="Void .ctor()" attrs="6278">
index 15fec471cd36834ee58ddf617ba19734208b0bc7..4b9478c045ec9640b5b97ba6f4f9c8fb1f28180c 100644 (file)
@@ -11,7 +11,10 @@ COMMON_SOURCES = \
 
 PROGRAM_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)
 
-APIINFO_SOURCES = mono-api-info.cs $(COMMON_SOURCES)
+APIINFO_SOURCES = \
+       mono-api-info.cs \
+       ../../class/Mono.Options/Mono.Options/Options.cs \
+       $(COMMON_SOURCES)
 
 DISTFILES= $(COMMON_SOURCES) $(APIINFO_SOURCES)
 
@@ -39,5 +42,5 @@ clean-local:
 
 dist-local: dist-default
 
-mono-api-info.exe: $(APIINFO_SOURCES)
+mono-api-info.exe: $(APIINFO_SOURCES) ../../class/Mono.Options/Mono.Options/Options.cs
        $(CSCOMPILE) -r:Mono.Cecil.dll -out:$@ $^
index b32394dd5f79d0b8aec634b48cb236b5981f15d3..c43437fe40d869165c5b7d20f02eaa036c58a85f 100644 (file)
@@ -28,38 +28,64 @@ namespace CorCompare
        {
                public static int Main (string [] args)
                {
-                       if (args.Length == 0)
-                               return 1;
-
+                       bool showHelp = false;
                        AbiMode = false;
-
-                       AssemblyCollection acoll = new AssemblyCollection ();
+                       FollowForwarders = false;
+
+                       var acoll = new AssemblyCollection ();
+
+                       var options = new Mono.Options.OptionSet {
+                               "usage: mono-api-info [OPTIONS+] ASSEMBLY+",
+                               "",
+                               "Expose IL structure of CLR assemblies as XML.",
+                               "",
+                               "Available Options:",
+                               { "abi",
+                                       "Generate ABI, not API; contains only classes with instance fields which are not [NonSerialized].",
+                                       v => AbiMode = v != null },
+                               { "f|follow-forwarders",
+                                       "Follow type forwarders.",
+                                       v => FollowForwarders = v != null },
+                               { "d|L|lib|search-directory=",
+                                       "Check for assembly references in {DIRECTORY}.",
+                                       v => TypeHelper.Resolver.AddSearchDirectory (v) },
+                               { "r=",
+                                       "Read and register the file {ASSEMBLY}, and add the directory containing ASSEMBLY to the search path.",
+                                       v => TypeHelper.Resolver.ResolveFile (v) },
+                               { "h|?|help",
+                                       "Show this message and exit.",
+                                       v => showHelp = v != null },
+                       };
+
+                       var asms = options.Parse (args);
+
+                       if (showHelp || asms.Count == 0) {
+                               options.WriteOptionDescriptions (Console.Out);
+                               Console.WriteLine ();
+                               return showHelp? 0 :1;
+                       }
 
                        string windir = Environment.GetFolderPath(Environment.SpecialFolder.Windows);
                        string pf = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
                        TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"assembly\GAC\MSDATASRC\7.0.3300.0__b03f5f7f11d50a3a"));
 
-                       foreach (string arg in args) {
-                               if (arg == "--abi") {
-                                       AbiMode = true;
-                               } else {
-                                       acoll.Add (arg);
-
-                                       if (arg.Contains ("v3.0")) {
-                                               TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v2.0.50727"));
-                                       } else if (arg.Contains ("v3.5")) {
-                                               TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v2.0.50727"));
-                                               TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v3.0\Windows Communication Foundation"));
-                                       } else if (arg.Contains ("v4.0")) {
-                                               if (arg.Contains ("Silverlight")) {
-                                                       TypeHelper.Resolver.AddSearchDirectory (Path.Combine (pf, @"Microsoft Silverlight\4.0.51204.0"));
-                                               } else {
-                                                       TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v4.0.30319"));
-                                                       TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v4.0.30319\WPF"));
-                                               }
+                       foreach (string arg in asms) {
+                               acoll.Add (arg);
+
+                               if (arg.Contains ("v3.0")) {
+                                       TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v2.0.50727"));
+                               } else if (arg.Contains ("v3.5")) {
+                                       TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v2.0.50727"));
+                                       TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v3.0\Windows Communication Foundation"));
+                               } else if (arg.Contains ("v4.0")) {
+                                       if (arg.Contains ("Silverlight")) {
+                                               TypeHelper.Resolver.AddSearchDirectory (Path.Combine (pf, @"Microsoft Silverlight\4.0.51204.0"));
                                        } else {
-                                               TypeHelper.Resolver.AddSearchDirectory (Path.GetDirectoryName (arg));
+                                               TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v4.0.30319"));
+                                               TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v4.0.30319\WPF"));
                                        }
+                               } else {
+                                       TypeHelper.Resolver.AddSearchDirectory (Path.GetDirectoryName (arg));
                                }
                        }
 
@@ -75,6 +101,7 @@ namespace CorCompare
                }
 
                internal static bool AbiMode { get; private set; }
+               internal static bool FollowForwarders { get; private set; }
        }
 
        public class Utils {
@@ -223,16 +250,33 @@ namespace CorCompare
                        AddAttribute (nassembly, "name", aname.Name);
                        AddAttribute (nassembly, "version", aname.Version.ToString ());
                        parent.AppendChild (nassembly);
-                       TypeForwardedToData.OutputForwarders (document, nassembly, ass);
+
+                       if (!Driver.FollowForwarders) {
+                               TypeForwardedToData.OutputForwarders (document, nassembly, ass);
+                       }
+
                        AttributeData.OutputAttributes (document, nassembly, ass);
-                       var typesCollection = ass.MainModule.Types;
-                       if (typesCollection == null || typesCollection.Count == 0)
+
+                       var types = new List<TypeDefinition> ();
+                       if (ass.MainModule.Types != null) {
+                               types.AddRange (ass.MainModule.Types);
+                       }
+
+                       if (Driver.FollowForwarders && ass.MainModule.ExportedTypes != null) {
+                               foreach (var t in ass.MainModule.ExportedTypes) {
+                                       var forwarded = t.Resolve ();
+                                       if (forwarded == null) {
+                                               throw new Exception ("Could not resolve forwarded type " + t.FullName + " in " + ass.Name);
+                                       }
+                                       types.Add (forwarded);
+                               }
+                       }
+
+                       if (types.Count == 0) {
                                return;
-                       var typesArray = new TypeDefinition [typesCollection.Count];
-                       for (int i = 0; i < typesCollection.Count; i++) {
-                               typesArray [i] = typesCollection [i];
                        }
-                       Array.Sort (typesArray, TypeReferenceComparer.Default);
+
+                       types.Sort (TypeReferenceComparer.Default);
 
                        XmlNode nss = document.CreateElement ("namespaces", null);
                        nassembly.AppendChild (nss);
@@ -240,7 +284,7 @@ namespace CorCompare
                        string current_namespace = "$%&$&";
                        XmlNode ns = null;
                        XmlNode classes = null;
-                       foreach (TypeDefinition t in typesArray) {
+                       foreach (TypeDefinition t in types) {
                                if (string.IsNullOrEmpty (t.Namespace))
                                        continue;
 
@@ -452,7 +496,7 @@ namespace CorCompare
 
                                PropertyDefinition[] properties = GetProperties (type);
                                if (properties.Length > 0) {
-                                       Array.Sort (properties, MemberReferenceComparer.Default);
+                                       Array.Sort (properties, PropertyDefinitionComparer.Default);
                                        members.Add (new PropertyData (document, nclass, properties));
                                }
 
@@ -1000,9 +1044,7 @@ namespace CorCompare
                                parent.AppendChild (natts);
                        }
 
-                       for (int i = 0; i < atts.Count; ++i) {
-                               CustomAttribute att = atts [i];
-
+                       foreach (var att in atts.OrderBy ((a) => a.Constructor.DeclaringType.FullName)) {
                                string attName = Utils.CleanupTypeName (att.Constructor.DeclaringType);
                                if (SkipAttribute (att))
                                        continue;
@@ -1340,19 +1382,17 @@ namespace CorCompare
 
        }
 
-       class TypeReferenceComparer : IComparer
+       class TypeReferenceComparer : IComparer<TypeReference>
        {
                public static TypeReferenceComparer Default = new TypeReferenceComparer ();
 
-               public int Compare (object a, object b)
+               public int Compare (TypeReference a, TypeReference b)
                {
-                       TypeReference ta = (TypeReference) a;
-                       TypeReference tb = (TypeReference) b;
-                       int result = String.Compare (ta.Namespace, tb.Namespace);
+                       int result = String.Compare (a.Namespace, b.Namespace, StringComparison.Ordinal);
                        if (result != 0)
                                return result;
 
-                       return String.Compare (ta.Name, tb.Name);
+                       return String.Compare (a.Name, b.Name, StringComparison.Ordinal);
                }
        }
 
@@ -1364,7 +1404,30 @@ namespace CorCompare
                {
                        MemberReference ma = (MemberReference) a;
                        MemberReference mb = (MemberReference) b;
-                       return String.Compare (ma.Name, mb.Name);
+                       return String.Compare (ma.Name, mb.Name, StringComparison.Ordinal);
+               }
+       }
+
+       class PropertyDefinitionComparer : IComparer<PropertyDefinition>
+       {
+               public static PropertyDefinitionComparer Default = new PropertyDefinitionComparer ();
+
+               public int Compare (PropertyDefinition ma, PropertyDefinition mb)
+               {
+                       int res = String.Compare (ma.Name, mb.Name);
+                       if (res != 0)
+                               return res;
+
+                       if (!ma.HasParameters && !mb.HasParameters)
+                               return 0;
+
+                       if (!ma.HasParameters)
+                               return -1;
+
+                       if (!mb.HasParameters)
+                               return 1;
+
+                       return MethodDefinitionComparer.Compare (ma.Parameters, mb.Parameters);
                }
        }
 
@@ -1389,9 +1452,17 @@ namespace CorCompare
                        if (!mb.HasParameters)
                                return 1;
 
-                       IList<ParameterDefinition> pia = ma.Parameters ;
-                       IList<ParameterDefinition> pib = mb.Parameters;
-                       res = pia.Count - pib.Count;
+                       res = Compare (ma.Parameters, mb.Parameters);
+                       if (res != 0)
+                               return res;
+
+                       // operators can differ by only return type
+                       return string.CompareOrdinal (ma.ReturnType.FullName, mb.ReturnType.FullName);
+               }
+
+               public static int Compare (IList<ParameterDefinition> pia, IList<ParameterDefinition> pib)
+               {
+                       var res = pia.Count - pib.Count;
                        if (res != 0)
                                return res;
 
index 44ef75821a1f923b5bf00fffd867b7754b6ca601..6d926858c97ae364e320dfeb5d19993a96e929c6 100644 (file)
@@ -3,7 +3,7 @@
   <PropertyGroup>\r
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ProductVersion>9.0.30729</ProductVersion>\r
+    <ProductVersion>8.0.30703</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
     <ProjectGuid>{6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}</ProjectGuid>\r
     <OutputType>Exe</OutputType>\r
@@ -53,9 +53,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <Reference Include="System" />\r
-    <Reference Include="System.Core">\r
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>\r
-    </Reference>\r
+    <Reference Include="System.Core" />\r
     <Reference Include="System.Xml" />\r
   </ItemGroup>\r
   <ItemGroup>\r
@@ -63,6 +61,9 @@
     <Compile Include="mono-api-info.cs" />\r
     <Compile Include="Util.cs" />\r
     <Compile Include="WellFormedXmlWriter.cs" />\r
+    <Compile Include="..\..\class\Mono.Options\Mono.Options\Options.cs">\r
+      <Link>Options.cs</Link>\r
+    </Compile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <BootstrapperPackage Include="Microsoft.Net.Client.3.5">\r
index b6dcf0759b66fdca59df0a2da54b94235f669be6..068fe5d3178fb09cd40d919051aee03e07d6411e 100644 (file)
@@ -5,6 +5,17 @@
 //   Miguel de Icaza (miguel@novell.com)
 //
 // Copyright 2008 Novell, Inc.
+// Copyright 2016 Xamarin Inc
+//
+// Completion wanted:
+//
+//   * Enable bash-like completion window the window as an option for non-GUI people?
+//
+//   * Continue completing when Backspace is used?
+//
+//   * Should we keep the auto-complete on "."?
+//
+//   * Completion produces an error if the value is not resolvable, we should hide those errors
 //
 // Dual-licensed under the terms of the MIT X11 license or the
 // Apache License 2.0
 //    behind its back (P/Invoke puts for example).
 //    System.Console needs to get the DELETE character, and report accordingly.
 //
-
+// Bug:
+//   About 8 lines missing, type "Con<TAB>" and not enough lines are inserted at the bottom.
+// 
+//
 using System;
 using System.Text;
 using System.IO;
@@ -46,6 +60,9 @@ namespace Mono.Terminal {
                }
                
                public delegate Completion AutoCompleteHandler (string text, int pos);
+
+               // null does nothing, "csharp" uses some heuristics that make sense for C#
+               public string HeuristicsMode;
                
                //static StreamWriter log;
                
@@ -93,35 +110,48 @@ namespace Mono.Terminal {
                
                // Used to implement the Kill semantics (multiple Alt-Ds accumulate)
                KeyHandler last_handler;
+
+               // If we have a popup completion, this is not null and holds the state.
+               CompletionState current_completion;
+
+               // If this is set, it contains an escape sequence to reset the Unix colors to the ones that were used on startup
+               static byte [] unix_reset_colors;
+
+               // This contains a raw stream pointing to stdout, used to bypass the TermInfoDriver
+               static Stream unix_raw_output;
                
                delegate void KeyHandler ();
                
                struct Handler {
                        public ConsoleKeyInfo CKI;
                        public KeyHandler KeyHandler;
-
-                       public Handler (ConsoleKey key, KeyHandler h)
+                       public bool ResetCompletion;
+                       
+                       public Handler (ConsoleKey key, KeyHandler h, bool resetCompletion = true)
                        {
                                CKI = new ConsoleKeyInfo ((char) 0, key, false, false, false);
                                KeyHandler = h;
+                               ResetCompletion = resetCompletion;
                        }
 
-                       public Handler (char c, KeyHandler h)
+                       public Handler (char c, KeyHandler h, bool resetCompletion = true)
                        {
                                KeyHandler = h;
                                // Use the "Zoom" as a flag that we only have a character.
                                CKI = new ConsoleKeyInfo (c, ConsoleKey.Zoom, false, false, false);
+                               ResetCompletion = resetCompletion;
                        }
 
-                       public Handler (ConsoleKeyInfo cki, KeyHandler h)
+                       public Handler (ConsoleKeyInfo cki, KeyHandler h, bool resetCompletion = true)
                        {
                                CKI = cki;
                                KeyHandler = h;
+                               ResetCompletion = resetCompletion;
                        }
                        
-                       public static Handler Control (char c, KeyHandler h)
+                       public static Handler Control (char c, KeyHandler h, bool resetCompletion = true)
                        {
-                               return new Handler ((char) (c - 'A' + 1), h);
+                               return new Handler ((char) (c - 'A' + 1), h, resetCompletion);
                        }
 
                        public static Handler Alt (char c, ConsoleKey k, KeyHandler h)
@@ -144,7 +174,7 @@ namespace Mono.Terminal {
                ///    text
                /// </remarks>
                public AutoCompleteHandler AutoCompleteEvent;
-               
+
                static Handler [] handlers;
 
                public LineEditor (string name) : this (name, 10) { }
@@ -156,20 +186,20 @@ namespace Mono.Terminal {
                                new Handler (ConsoleKey.End,        CmdEnd),
                                new Handler (ConsoleKey.LeftArrow,  CmdLeft),
                                new Handler (ConsoleKey.RightArrow, CmdRight),
-                               new Handler (ConsoleKey.UpArrow,    CmdHistoryPrev),
-                               new Handler (ConsoleKey.DownArrow,  CmdHistoryNext),
-                               new Handler (ConsoleKey.Enter,      CmdDone),
-                               new Handler (ConsoleKey.Backspace,  CmdBackspace),
+                               new Handler (ConsoleKey.UpArrow,    CmdUp, resetCompletion: false),
+                               new Handler (ConsoleKey.DownArrow,  CmdDown, resetCompletion: false),
+                               new Handler (ConsoleKey.Enter,      CmdDone, resetCompletion: false),
+                               new Handler (ConsoleKey.Backspace,  CmdBackspace, resetCompletion: false),
                                new Handler (ConsoleKey.Delete,     CmdDeleteChar),
-                               new Handler (ConsoleKey.Tab,        CmdTabOrComplete),
+                               new Handler (ConsoleKey.Tab,        CmdTabOrComplete, resetCompletion: false),
                                
                                // Emacs keys
                                Handler.Control ('A', CmdHome),
                                Handler.Control ('E', CmdEnd),
                                Handler.Control ('B', CmdLeft),
                                Handler.Control ('F', CmdRight),
-                               Handler.Control ('P', CmdHistoryPrev),
-                               Handler.Control ('N', CmdHistoryNext),
+                               Handler.Control ('P', CmdUp, resetCompletion: false),
+                               Handler.Control ('N', CmdDown, resetCompletion: false),
                                Handler.Control ('K', CmdKillToEOF),
                                Handler.Control ('Y', CmdYank),
                                Handler.Control ('D', CmdDeleteChar),
@@ -193,11 +223,46 @@ namespace Mono.Terminal {
                        text = new StringBuilder ();
 
                        history = new History (name, histsize);
-                       
+
+                       GetUnixConsoleReset ();
                        //if (File.Exists ("log"))File.Delete ("log");
                        //log = File.CreateText ("log"); 
                }
 
+               // On Unix, there is a "default" color which is not represented by any colors in
+               // ConsoleColor and it is not possible to set is by setting the ForegroundColor or
+               // BackgroundColor properties, so we have to use the terminfo driver in Mono to
+               // fetch these values
+
+               void GetUnixConsoleReset ()
+               {
+                       //
+                       // On Unix, we want to be able to reset the color for the pop-up completion
+                       //
+                       int p = (int) Environment.OSVersion.Platform;
+                       var is_unix = (p == 4) || (p == 128);
+                       if (!is_unix)
+                               return;
+
+                       // Sole purpose of this call is to initialize the Terminfo driver
+                       var x = Console.CursorLeft;
+                       
+                       try {
+                               var terminfo_driver = Type.GetType ("System.ConsoleDriver")?.GetField ("driver", BindingFlags.Static | BindingFlags.NonPublic)?.GetValue (null);
+                               if (terminfo_driver == null)
+                                       return;
+
+                               var unix_reset_colors_str = (terminfo_driver?.GetType ()?.GetField ("origPair", BindingFlags.Instance | BindingFlags.NonPublic))?.GetValue (terminfo_driver) as string;
+                               
+                               if (unix_reset_colors_str != null)
+                                       unix_reset_colors = Encoding.UTF8.GetBytes ((string)unix_reset_colors_str);
+                               unix_raw_output = Console.OpenStandardOutput ();
+                       } catch (Exception e){
+                               Console.WriteLine ("Error: " + e);
+                       }
+               }
+               
+
                void CmdDebug ()
                {
                        history.Dump ();
@@ -346,11 +411,259 @@ namespace Mono.Terminal {
                        }
                }
 
+               static void SaveExcursion (Action code)
+               {
+                       var saved_col = Console.CursorLeft;
+                       var saved_row = Console.CursorTop;
+                       var saved_fore = Console.ForegroundColor;
+                       var saved_back = Console.BackgroundColor;
+                       
+                       code ();
+                       
+                       Console.CursorLeft = saved_col;
+                       Console.CursorTop = saved_row;
+                       if (unix_reset_colors != null){
+                               unix_raw_output.Write (unix_reset_colors, 0, unix_reset_colors.Length);
+                       } else {
+                               Console.ForegroundColor = saved_fore;
+                               Console.BackgroundColor = saved_back;
+                       }
+               }
+               
+               class CompletionState {
+                       public string Prefix;
+                       public string [] Completions;
+                       public int Col, Row, Width, Height;
+                       int selected_item, top_item;
+
+                       public CompletionState (int col, int row, int width, int height)
+                       {
+                               Col = col;
+                               Row = row;
+                               Width = width;
+                               Height = height;
+
+                               if (Col < 0)
+                                       throw new ArgumentException ("Cannot be less than zero" + Col, "Col");
+                               if (Row < 0)
+                                       throw new ArgumentException ("Cannot be less than zero", "Row");
+                               if (Width < 1)
+                                       throw new ArgumentException ("Cannot be less than one", "Width");
+                               if (Height < 1)
+                                       throw new ArgumentException ("Cannot be less than one", "Height");
+                               
+                       }
+                       
+                       void DrawSelection ()
+                       {
+                               for (int r = 0; r < Height; r++){
+                                       int item_idx = top_item + r;
+                                       bool selected = (item_idx == selected_item);
+                                       
+                                       Console.ForegroundColor = selected ? ConsoleColor.Black : ConsoleColor.Gray;
+                                       Console.BackgroundColor = selected ? ConsoleColor.Cyan : ConsoleColor.Blue;
+                                       
+                                       var item = Prefix + Completions [item_idx];
+                                       if (item.Length > Width)
+                                               item = item.Substring (0, Width);
+
+                                       Console.CursorLeft = Col;
+                                       Console.CursorTop = Row + r;
+                                       Console.Write (item);
+                                       for (int space = item.Length; space <= Width; space++)
+                                               Console.Write (" ");
+                               }
+                       }
+
+                       public string Current {
+                               get {
+                                       return Completions [selected_item];
+                               }
+                       }
+                       
+                       public void Show ()
+                       {
+                               SaveExcursion (DrawSelection);
+                       }
+
+                       public void SelectNext ()
+                       {
+                               if (selected_item+1 < Completions.Length){
+                                       selected_item++;
+                                       if (selected_item + top_item >= Height)
+                                               top_item++;
+                                       SaveExcursion (DrawSelection);
+                               }
+                       }
+
+                       public void SelectPrevious ()
+                       {
+                               if (selected_item > 0){
+                                       selected_item--;
+                                       if (selected_item < top_item)
+                                               top_item = selected_item;
+                                       SaveExcursion (DrawSelection);
+                               }
+                       }
+
+                       void Clear ()
+                       {
+                               for (int r = 0; r < Height; r++){
+                                       Console.CursorLeft = Col;
+                                       Console.CursorTop = Row + r;
+                                       for (int space = 0; space <= Width; space++)
+                                               Console.Write (" ");
+                               }
+                       }
+                       
+                       public void Remove ()
+                       {
+                               SaveExcursion (Clear);
+                       }
+               }
+
+               void ShowCompletions (string prefix, string [] completions)
+               {
+                       // Ensure we have space, determine window size
+                       int window_height = System.Math.Min (completions.Length, Console.WindowHeight/5);
+                       int target_line = Console.WindowHeight-window_height-1;
+                       if (Console.CursorTop > target_line){
+                               var saved_left = Console.CursorLeft;
+                               var delta = Console.CursorTop-target_line;
+                               Console.CursorLeft = 0;
+                               Console.CursorTop = Console.WindowHeight-1;
+                               for (int i = 0; i < delta+1; i++){
+                                       for (int c = Console.WindowWidth; c > 0; c--)
+                                               Console.Write (" "); // To debug use ("{0}", i%10);
+                               }
+                               Console.CursorTop = target_line;
+                               Console.CursorLeft = 0;
+                               Render ();
+                       }
+
+                       const int MaxWidth = 50;
+                       int window_width = 12;
+                       int plen = prefix.Length;
+                       foreach (var s in completions)
+                               window_width = System.Math.Max (plen + s.Length, window_width);
+                       window_width = System.Math.Min (window_width, MaxWidth);
+
+                       if (current_completion == null){
+                               int left = Console.CursorLeft-prefix.Length;
+                               
+                               if (left + window_width + 1 >= Console.WindowWidth)
+                                       left = Console.WindowWidth-window_width-1;
+                               
+                               current_completion = new CompletionState (left, Console.CursorTop+1, window_width, window_height) {
+                                       Prefix = prefix,
+                                       Completions = completions,
+                               };
+                       } else {
+                               current_completion.Prefix = prefix;
+                               current_completion.Completions = completions;
+                       }
+                       current_completion.Show ();
+                       Console.CursorLeft = 0;
+               }
+
+               void HideCompletions ()
+               {
+                       if (current_completion == null)
+                               return;
+                       current_completion.Remove ();
+                       current_completion = null;
+               }
+
+               //
+               // Triggers the completion engine, if insertBestMatch is true, then this will
+               // insert the best match found, this behaves like the shell "tab" which will
+               // complete as much as possible given the options.
+               //
+               void Complete ()
+               {
+                       Completion completion = AutoCompleteEvent (text.ToString (), cursor);
+                       string [] completions = completion.Result;
+                       if (completions == null){
+                               HideCompletions ();
+                               return;
+                       }
+                                       
+                       int ncompletions = completions.Length;
+                       if (ncompletions == 0){
+                               HideCompletions ();
+                               return;
+                       }
+                                       
+                       if (completions.Length == 1){
+                               InsertTextAtCursor (completions [0]);
+                       } else {
+                               int last = -1;
+
+                               for (int p = 0; p < completions [0].Length; p++){
+                                       char c = completions [0][p];
+
+
+                                       for (int i = 1; i < ncompletions; i++){
+                                               if (completions [i].Length < p)
+                                                       goto mismatch;
+                                                       
+                                               if (completions [i][p] != c){
+                                                       goto mismatch;
+                                               }
+                                       }
+                                       last = p;
+                               }
+                       mismatch:
+                               var prefix = completion.Prefix;
+                               if (last != -1){
+                                       InsertTextAtCursor (completions [0].Substring (0, last+1));
+
+                                       // Adjust the completions to skip the common prefix
+                                       prefix += completions [0].Substring (0, last+1);
+                                       for (int i = 0; i < completions.Length; i++)
+                                               completions [i] = completions [i].Substring (last+1);
+                               }
+                               ShowCompletions (prefix, completions);
+                               Render ();
+                               ForceCursor (cursor);
+                       }
+               }
+
+               //
+               // When the user has triggered a completion window, this will try to update
+               // the contents of it.   The completion window is assumed to be hidden at this
+               // point
+               // 
+               void UpdateCompletionWindow ()
+               {
+                       if (current_completion != null)
+                               throw new Exception ("This method should only be called if the window has been hidden");
+                       
+                       Completion completion = AutoCompleteEvent (text.ToString (), cursor);
+                       string [] completions = completion.Result;
+                       if (completions == null)
+                               return;
+                                       
+                       int ncompletions = completions.Length;
+                       if (ncompletions == 0)
+                               return;
+                       
+                       ShowCompletions (completion.Prefix, completion.Result);
+                       Render ();
+                       ForceCursor (cursor);
+               }
+               
+               
                //
                // Commands
                //
                void CmdDone ()
                {
+                       if (current_completion != null){
+                               InsertTextAtCursor (current_completion.Current);
+                               HideCompletions ();
+                               return;
+                       }
                        done = true;
                }
 
@@ -370,50 +683,9 @@ namespace Mono.Terminal {
                                        }
                                }
 
-                               if (complete){
-                                       Completion completion = AutoCompleteEvent (text.ToString (), cursor);
-                                       string [] completions = completion.Result;
-                                       if (completions == null)
-                                               return;
-                                       
-                                       int ncompletions = completions.Length;
-                                       if (ncompletions == 0)
-                                               return;
-                                       
-                                       if (completions.Length == 1){
-                                               InsertTextAtCursor (completions [0]);
-                                       } else {
-                                               int last = -1;
-                                               
-                                               for (int p = 0; p < completions [0].Length; p++){
-                                                       char c = completions [0][p];
-
-
-                                                       for (int i = 1; i < ncompletions; i++){
-                                                               if (completions [i].Length < p)
-                                                                       goto mismatch;
-                                                       
-                                                               if (completions [i][p] != c){
-                                                                       goto mismatch;
-                                                               }
-                                                       }
-                                                       last = p;
-                                               }
-                                       mismatch:
-                                               if (last != -1){
-                                                       InsertTextAtCursor (completions [0].Substring (0, last+1));
-                                               }
-                                               Console.WriteLine ();
-                                               foreach (string s in completions){
-                                                       Console.Write (completion.Prefix);
-                                                       Console.Write (s);
-                                                       Console.Write (' ');
-                                               }
-                                               Console.WriteLine ();
-                                               Render ();
-                                               ForceCursor (cursor);
-                                       }
-                               } else
+                               if (complete)
+                                       Complete ();
+                               else
                                        HandleChar ('\t');
                        } else
                                HandleChar ('t');
@@ -473,9 +745,14 @@ namespace Mono.Terminal {
                        if (cursor == 0)
                                return;
 
+                       bool completing = current_completion != null;
+                       HideCompletions ();
+                       
                        text.Remove (--cursor, 1);
                        ComputeRendered ();
                        RenderAfter (cursor);
+                       if (completing)
+                               UpdateCompletionWindow ();
                }
 
                void CmdDeleteChar ()
@@ -618,6 +895,22 @@ namespace Mono.Terminal {
                        
                }
 
+               void CmdUp ()
+               {
+                       if (current_completion == null)
+                               CmdHistoryPrev ();
+                       else
+                               current_completion.SelectPrevious ();
+               }
+
+               void CmdDown ()
+               {
+                       if (current_completion == null)
+                               CmdHistoryNext ();
+                       else
+                               current_completion.SelectNext ();
+               }
+               
                void CmdKillToEOF ()
                {
                        kill_buffer = text.ToString (cursor, text.Length-cursor);
@@ -748,12 +1041,52 @@ namespace Mono.Terminal {
                        edit_thread.Abort();
                }
 
+               //
+               // Implements heuristics to show the completion window based on the mode
+               //
+               bool HeuristicAutoComplete (bool wasCompleting, char insertedChar)
+               {
+                       if (HeuristicsMode == "csharp"){
+                               // csharp heuristics
+                               if (wasCompleting){
+                                       if (insertedChar == ' '){
+                                               return false;
+                                       }
+                                       return true;
+                               } 
+                               // If we were not completing, determine if we want to now
+                               if (insertedChar == '.'){
+                                       // Avoid completing for numbers "1.2" for example
+                                       if (cursor > 1 && Char.IsDigit (text[cursor-2])){
+                                               for (int p = cursor-3; p >= 0; p--){
+                                                       char c = text[p];
+                                                       if (Char.IsDigit (c))
+                                                               continue;
+                                                       if (c == '_')
+                                                               return true;
+                                                       if (Char.IsLetter (c) || Char.IsPunctuation (c) || Char.IsSymbol (c) || Char.IsControl (c))
+                                                               return true;
+                                               }
+                                               return false;
+                                       }
+                                       return true;
+                               }
+                       }
+                       return false;
+               }
+               
                void HandleChar (char c)
                {
                        if (searching != 0)
                                SearchAppend (c);
-                       else
+                       else {
+                               bool completing = current_completion != null;
+                               HideCompletions ();
+
                                InsertChar (c);
+                               if (HeuristicAutoComplete (completing, c))
+                                       UpdateCompletionWindow ();
+                       }
                }
 
                void EditLoop ()
@@ -765,9 +1098,14 @@ namespace Mono.Terminal {
                                
                                cki = Console.ReadKey (true);
                                if (cki.Key == ConsoleKey.Escape){
-                                       cki = Console.ReadKey (true);
-
-                                       mod = ConsoleModifiers.Alt;
+                                       if (current_completion != null){
+                                               HideCompletions ();
+                                               continue;
+                                       } else {
+                                               cki = Console.ReadKey (true);
+                                               
+                                               mod = ConsoleModifiers.Alt;
+                                       }
                                } else
                                        mod = cki.Modifiers;
                                
@@ -778,11 +1116,16 @@ namespace Mono.Terminal {
 
                                        if (t.Key == cki.Key && t.Modifiers == mod){
                                                handled = true;
+                                               if (handler.ResetCompletion)
+                                                       HideCompletions ();
                                                handler.KeyHandler ();
                                                last_handler = handler.KeyHandler;
                                                break;
                                        } else if (t.KeyChar == cki.KeyChar && t.Key == ConsoleKey.Zoom){
                                                handled = true;
+                                               if (handler.ResetCompletion)
+                                                       HideCompletions ();
+
                                                handler.KeyHandler ();
                                                last_handler = handler.KeyHandler;
                                                break;
@@ -798,8 +1141,9 @@ namespace Mono.Terminal {
                                        continue;
                                }
 
-                               if (cki.KeyChar != (char) 0)
+                               if (cki.KeyChar != (char) 0){
                                        HandleChar (cki.KeyChar);
+                               }
                        } 
                }
 
@@ -831,7 +1175,7 @@ namespace Mono.Terminal {
                        edit_thread = Thread.CurrentThread;
                        searching = 0;
                        Console.CancelKeyPress += InterruptEdit;
-                       
+                                               
                        done = false;
                        history.CursorToEnd ();
                        max_rendered = 0;
index edd2cb248373b33449440d88937574c0fc01518a..f16fcb9ea698d52ca8e3756fc1e89aa724a5d441 100644 (file)
@@ -197,7 +197,9 @@ namespace Mono {
                        } else
                                dumb = false;
                        
-                       editor = new Mono.Terminal.LineEditor ("csharp", 300);
+                       editor = new Mono.Terminal.LineEditor ("csharp", 300) {
+                               HeuristicsMode = "csharp"
+                       };
                        InteractiveBaseShell.Editor = editor;
 
                        editor.AutoCompleteEvent += delegate (string s, int pos){
@@ -399,9 +401,45 @@ namespace Mono {
                        output.Write (s);
                }
 
-               static string EscapeString (string s)
+               static void EscapeString (TextWriter output, string s)
                {
-                       return s.Replace ("\"", "\\\"");
+                       foreach (var c in s){
+                               if (c > 32){
+                                       output.Write (c);
+                                       continue;
+                               }
+                               switch (c){
+                               case '\"':
+                                       output.Write ("\\\""); break;
+                               case '\a':
+                                       output.Write ("\\a"); break;
+                               case '\b':
+                                       output.Write ("\\b"); break;
+                               case '\n':
+                                       output.Write ("\\n");
+                                       break;
+                               
+                               case '\v':
+                                       output.Write ("\\v");
+                                       break;
+                               
+                               case '\r':
+                                       output.Write ("\\r");
+                                       break;
+                               
+                               case '\f':
+                                       output.Write ("\\f");
+                                       break;
+                               
+                               case '\t':
+                                       output.Write ("\\t");
+                                       break;
+
+                               default:
+                                       output.Write ("\\x{0:x}", (int) c);
+                                       break;
+                               }
+                       }
                }
                
                static void EscapeChar (TextWriter output, char c)
@@ -491,7 +529,9 @@ namespace Mono {
                                else
                                        p (output, "false");
                        } else if (result is string){
-                               p (output, String.Format ("\"{0}\"", EscapeString ((string)result)));
+                               p (output, "\"");
+                               EscapeString (output, (string)result);
+                               p (output, "\"");
                        } else if (result is IDictionary){
                                IDictionary dict = (IDictionary) result;
                                int top = dict.Count, count = 0;
index 33d69411d2e2345bf1390e5fb3239b3c45917413..be09a65f2c985ff16169b141dc0fcfaf33e73790 100644 (file)
@@ -7,6 +7,7 @@
 ../../../external/ikdasm/Program.cs
 ../../../external/ikdasm/Util.cs
 ../../../external/ikdasm/VTableFixups.cs
+../../../external/ikdasm/TableDumper.cs
 
 ../../../external/ikvm/reflect/*.cs
 ../../../external/ikvm/reflect/Emit/*.cs
index 0fae1a02c00e199a0a7ce7fc313fa3cd73f34963..6e07617be3ed6e8fcc86a9bfb68cb99571db7292 100644 (file)
                <type fullname="System.Threading.ExecutionContext" />
                <type fullname="System.Threading.Interlocked">
                        <method name="CompareExchange" />
+                       <method name="Exchange" />
                </type>
                <type fullname="System.Threading.Monitor">
                        <method name="Enter" />
index c65d3037c8e64b6960bf38b312bc2e801aaac43b..6c6344bc3c23311aae12fe03e329e8536fd8910a 100644 (file)
@@ -47,7 +47,7 @@ namespace Mono.Linker.Steps {
                protected override void Process ()
                {
                        foreach (string name in Assembly.GetExecutingAssembly ().GetManifestResourceNames ()) {
-                               if (Path.GetExtension (name) != ".xml" || !IsReferenced (GetAssemblyName (name)))
+                               if (!name.EndsWith (".xml", StringComparison.OrdinalIgnoreCase) || !IsReferenced (GetAssemblyName (name)))
                                        continue;
 
                                try {
@@ -61,22 +61,23 @@ namespace Mono.Linker.Steps {
                                }
                        }
 
-                       foreach (var rsc in Context.GetAssemblies ()
-                                                               .SelectMany (asm => asm.Modules)
-                                                               .SelectMany (mod => mod.Resources)
-                                                               .Where (res => res.ResourceType == ResourceType.Embedded)
-                                                               .Where (res => Path.GetExtension (res.Name) == ".xml")
-                                                               .Where (res => IsReferenced (GetAssemblyName (res.Name)))
-                                                               .Cast<EmbeddedResource> ()) {
-                               try {
-                                       if (Context.LogInternalExceptions)
-                                               Console.WriteLine ("Processing embedded resource linker descriptor: {0}", rsc.Name);
-
-                                       Context.Pipeline.AddStepAfter (typeof (TypeMapStep), GetExternalResolveStep (rsc));
-                               } catch (XmlException ex) {
-                                       /* This could happen if some broken XML file is embedded. */
-                                       if (Context.LogInternalExceptions)
-                                               Console.WriteLine ("Error processing {0}: {1}", rsc.Name, ex);
+                       foreach (var asm in Context.GetAssemblies ()) {
+                               foreach (var rsc in asm.Modules
+                                                                       .SelectMany (mod => mod.Resources)
+                                                                       .Where (res => res.ResourceType == ResourceType.Embedded)
+                                                                       .Where (res => res.Name.EndsWith (".xml", StringComparison.OrdinalIgnoreCase))
+                                                                       .Where (res => IsReferenced (GetAssemblyName (res.Name)))
+                                                                       .Cast<EmbeddedResource> ()) {
+                                       try {
+                                               if (Context.LogInternalExceptions)
+                                                       Console.WriteLine ("Processing embedded resource linker descriptor: {0}", rsc.Name);
+
+                                               Context.Pipeline.AddStepAfter (typeof (TypeMapStep), GetExternalResolveStep (rsc, asm));
+                                       } catch (XmlException ex) {
+                                               /* This could happen if some broken XML file is embedded. */
+                                               if (Context.LogInternalExceptions)
+                                                       Console.WriteLine ("Error processing {0}: {1}", rsc.Name, ex);
+                                       }
                                }
                        }
                }
@@ -99,14 +100,14 @@ namespace Mono.Linker.Steps {
                        return false;
                }
 
-               static ResolveFromXmlStep GetExternalResolveStep (EmbeddedResource resource)
+               static ResolveFromXmlStep GetExternalResolveStep (EmbeddedResource resource, AssemblyDefinition assembly)
                {
-                       return new ResolveFromXmlStep (GetExternalDescriptor (resource));
+                       return new ResolveFromXmlStep (GetExternalDescriptor (resource), "resource " + resource.Name + " in " + assembly.FullName);
                }
 
                static ResolveFromXmlStep GetResolveStep (string descriptor)
                {
-                       return new ResolveFromXmlStep (GetDescriptor (descriptor));
+                       return new ResolveFromXmlStep (GetDescriptor (descriptor), "descriptor " + descriptor + " from " + Assembly.GetExecutingAssembly ().FullName);
                }
 
                static XPathDocument GetExternalDescriptor (EmbeddedResource resource)
index bd55c8527c6d154f2b16908a6a7d4c3144eb83d9..74c219a82b61bd5811c3b708350b6a85a7c19a92 100644 (file)
@@ -336,6 +336,9 @@ namespace Mono.Linker.Steps {
                                        return;
 
                                MarkType (et);
+                               if (argument.Value == null)
+                                       return;
+
                                foreach (var cac in (CustomAttributeArgument[]) argument.Value)
                                        MarkWithResolvedScope ((TypeReference) cac.Value);
                        } else if (at.Namespace == "System" && at.Name == "Type") {
index a0fe3934cac49a2b6e37f020a10d14b5033355bb..5e9f681fd1784d25dfd201c93fc913c409c6fa9f 100644 (file)
@@ -38,6 +38,13 @@ using Mono.Cecil;
 
 namespace Mono.Linker.Steps {
 
+       public class XmlResolutionException : Exception {
+               public XmlResolutionException (string message, Exception innerException)
+                       : base (message, innerException)
+               {
+               }
+       }
+
        public class ResolveFromXmlStep : ResolveStep {
 
                static readonly string _signature = "signature";
@@ -47,10 +54,12 @@ namespace Mono.Linker.Steps {
                static readonly string _ns = string.Empty;
 
                XPathDocument _document;
+               string _xmlDocumentLocation;
 
-               public ResolveFromXmlStep (XPathDocument document)
+               public ResolveFromXmlStep (XPathDocument document, string xmlDocumentLocation = "<unspecified>")
                {
                        _document = document;
+                       _xmlDocumentLocation = xmlDocumentLocation;
                }
 
                protected override void Process ()
@@ -63,7 +72,11 @@ namespace Mono.Linker.Steps {
                        if (nav.LocalName != "linker")
                                return;
 
-                       ProcessAssemblies (Context, nav.SelectChildren ("assembly", _ns));
+                       try {
+                               ProcessAssemblies (Context, nav.SelectChildren ("assembly", _ns));
+                       } catch (Exception ex) {
+                               throw new XmlResolutionException (string.Format ("Failed to process XML description: {0}", _xmlDocumentLocation), ex);
+                       }
                }
 
                void ProcessAssemblies (LinkContext context, XPathNodeIterator iterator)
@@ -129,15 +142,24 @@ namespace Mono.Linker.Steps {
                        return new Regex (pattern.Replace(".", @"\.").Replace("*", "(.*)"));
                }
 
+               void MatchType (TypeDefinition type, Regex regex, XPathNavigator nav)
+               {
+                       if (regex.Match (type.FullName).Success)
+                               ProcessType (type, nav);
+
+                       if (!type.HasNestedTypes)
+                               return;
+
+                       foreach (var nt in type.NestedTypes)
+                               MatchType (nt, regex, nav);
+               }
+
                void ProcessTypePattern (string fullname, AssemblyDefinition assembly, XPathNavigator nav)
                {
                        Regex regex = CreateRegexFromPattern (fullname);
 
                        foreach (TypeDefinition type in assembly.MainModule.Types) {
-                               if (!regex.Match (type.FullName).Success)
-                                       continue;
-
-                               ProcessType (type, nav);
+                               MatchType (type, regex, nav);
                        }
                }
 
index fdb2c66e2d9c2b1eeef43be1f687b8b943f25d5e..5d29a4e829dd5e73d6dd9b12e4374fc5763a0fcd 100755 (executable)
@@ -35,6 +35,14 @@ cd "$APP_PATH/Contents/Resources"
 
 if [ "$X11_MODE" -eq "1" ]; then
        open-x11 "$APP_NAME"
+
+# rcruzs00
+# El Capitan FIX: `which` wont work (system-integrity-protection)
+# elif: Keep compatibility with previous code
+elif [ -f /usr/local/bin/mono ]; then
+        DIR=$(cd "$(dirname "$0")"; pwd)
+        /usr/local/bin/mono $DIR/../Resources/"$ASSEMBLY"
+
 else
        if [ ! -d "./bin" ]; then mkdir bin ; fi
        if [ -f "./bin/$APP_NAME" ]; then rm -f "./bin/$APP_NAME" ; fi
index 0991269d178ba765710c12989456cfbdaaff90e2..77dcbc676d8b1c3b15bc73c37f19974081b346ea 100644 (file)
@@ -60,6 +60,9 @@ EXTRA_DISTFILES = \
        $(MDOC_RESOURCES) \
        $(MDOC_TEST_FILES)
 
+MULTI-CLASSIC = Test/DocTest-DropNS-classic.dll Test/DocTest-DropNS-classic-multitest.dll
+MULTI-UNIFIED = Test/DocTest-DropNS-unified.dll Test/DocTest-DropNS-unified-multitest.dll
+
 $(PROGRAM) : $(MDOC_RESOURCES) $(MONODOC_RESOURCES) $(PROGRAM_DEPS)
 
 PROGRAM_COMPILE = $(CSCOMPILE) -platform:x86
@@ -108,6 +111,14 @@ Test/DocTest-DropNS-classic.dll:
 Test/DocTest-DropNS-unified.dll:
        $(CSCOMPILE) $(TEST_CSCFLAGS) -debug -unsafe -target:library -out:$@ Test/DocTest-DropNS-unified.cs
 
+Test/DocTest-DropNS-unified-multitest.dll:
+       rm -f $@
+       $(CSCOMPILE) $(TEST_CSCFLAGS) -debug -unsafe -target:library -out:$@ Test/DocTest-DropNS-unified.cs /define:MULTITEST
+
+Test/DocTest-DropNS-classic-multitest.dll:
+       rm -f $@
+       $(CSCOMPILE) $(TEST_CSCFLAGS) -debug -unsafe -target:library -out:$@ Test/DocTest-DropNS-classic.cs /define:MULTITEST
+
 Test/DocTest-DropNS-unified-deletetest.dll:
        rm -f Test/DocTest-DropNS-unified-deletetest.dll
        $(CSCOMPILE) $(TEST_CSCFLAGS) -debug -unsafe -target:library -out:$@ Test/DocTest-DropNS-unified.cs /define:DELETETEST
@@ -163,22 +174,57 @@ check-monodocer-dropns-classic: $(PROGRAM)
        # tests the simplest --dropns case, a single class where the root namespace was dropped.
        -rm -Rf Test/en.actual
        $(MAKE) Test/DocTest-DropNS-classic.dll
-       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-classic.dll
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-classic.dll --api-style=classic
        $(MAKE) update-monodocer-dropns-unified
        diff --exclude=.svn -rup Test/en.expected-dropns-classic-v1 Test/en.actual
 
+check-monodocer-dropns-multi: $(PROGRAM)
+       -rm -Rf Test/en.actual
+       $(MAKE) Test/DocTest-DropNS-classic.dll
+       $(MAKE) Test/DocTest-DropNS-unified.dll
+       $(MAKE) Test/DocTest-DropNS-classic-multitest.dll
+       $(MAKE) Test/DocTest-DropNS-unified-multitest.dll
+
+       # mdoc update for both classic and unified
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic -multiassembly
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework -multiassembly
+       
+       # now run it again to verify idempotency
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic -multiassembly
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework -multiassembly
+       
+       diff --exclude=.svn -rup Test/en.expected-dropns-multi Test/en.actual
+
+
+check-monodocer-dropns-multi-withexisting: $(PROGRAM)
+       -rm -Rf Test/en.actual
+       $(MAKE) Test/DocTest-DropNS-classic.dll
+       $(MAKE) Test/DocTest-DropNS-unified.dll
+       $(MAKE) Test/DocTest-DropNS-classic-multitest.dll
+       $(MAKE) Test/DocTest-DropNS-unified-multitest.dll
+
+       # mdoc update to show a pre-existing set of documents
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-classic.dll --api-style=classic
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-unified.dll --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework 
+       
+       # mdoc update for both classic and unified
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic -multiassembly
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework -multiassembly
+       
+       diff --exclude=.svn -rup Test/en.expected-dropns-multi-withexisting Test/en.actual
+
 check-monodocer-dropns-delete: $(PROGRAM)
        -rm -Rf Test/en.actual
        rm -Rf Test/DocTest-DropNS-classic-deletetest.dll
        rm -Rf Test/DocTest-DropNS-unified-deletetest.dll
        $(MAKE) Test/DocTest-DropNS-classic-deletetest.dll
-       $(MONO) $(PROGRAM) update --delete --exceptions=all -o Test/en.actual Test/DocTest-DropNS-classic-deletetest.dll
+       $(MONO) $(PROGRAM) update --delete --exceptions=all -o Test/en.actual Test/DocTest-DropNS-classic-deletetest.dll --api-style=classic
        $(MAKE) Test/DocTest-DropNS-unified-deletetest.dll
-       $(MONO) $(PROGRAM) update --delete --exceptions=all -o Test/en.actual Test/DocTest-DropNS-unified-deletetest.dll --dropns Test/DocTest-DropNS-unified-deletetest.dll=MyFramework
+       $(MONO) $(PROGRAM) update --delete --exceptions=all -o Test/en.actual Test/DocTest-DropNS-unified-deletetest.dll --api-style=unified --dropns Test/DocTest-DropNS-unified-deletetest.dll=MyFramework
        $(MAKE) Test/DocTest-DropNS-classic-deletetest-V2.dll
-       $(MONO) $(PROGRAM) update --delete --exceptions=all -o Test/en.actual Test/DocTest-DropNS-classic-deletetest.dll
+       $(MONO) $(PROGRAM) update --delete --exceptions=all -o Test/en.actual Test/DocTest-DropNS-classic-deletetest.dll --api-style=classic
        $(MAKE) Test/DocTest-DropNS-unified-deletetest-V2.dll
-       $(MONO) $(PROGRAM) update --delete --exceptions=all -o Test/en.actual Test/DocTest-DropNS-unified-deletetest.dll --dropns Test/DocTest-DropNS-unified-deletetest.dll=MyFramework
+       $(MONO) $(PROGRAM) update --delete --exceptions=all -o Test/en.actual Test/DocTest-DropNS-unified-deletetest.dll --api-style=unified --dropns Test/DocTest-DropNS-unified-deletetest.dll=MyFramework
        diff --exclude=.dvn -rup Test/en.expected-dropns-delete Test/en.actual
 
 check-monodocer-dropns-classic-withsecondary: $(PROGRAM)
@@ -186,21 +232,21 @@ check-monodocer-dropns-classic-withsecondary: $(PROGRAM)
        -rm -Rf Test/en.actual
        $(MAKE) Test/DocTest-DropNS-classic.dll
        $(MAKE) Test/DocTest-DropNS-classic-secondary.dll
-       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-classic.dll Test/DocTest-DropNS-classic-secondary.dll
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-classic.dll Test/DocTest-DropNS-classic-secondary.dll --api-style=classic
        $(MAKE) update-monodocer-dropns-unified-withsecondary
        diff --exclude=.svn -rup Test/en.expected-dropns-classic-withsecondary Test/en.actual
 
 update-monodocer-dropns-unified: $(PROGRAM)
        $(MAKE) Test/DocTest-DropNS-unified.dll
-       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-unified.dll --dropns Test/DocTest-DropNS-unified.dll=MyFramework
+       $(MONO) $(PROGRAM) update --debug --exceptions=all -o Test/en.actual Test/DocTest-DropNS-unified.dll --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework
 
 update-monodocer-dropns-unified-withsecondary: $(PROGRAM)
        $(MAKE) Test/DocTest-DropNS-unified.dll
-       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-unified.dll Test/DocTest-DropNS-classic-secondary.dll --dropns Test/DocTest-DropNS-unified.dll=MyFramework
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-unified.dll Test/DocTest-DropNS-classic-secondary.dll --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework
 
 update-monodocer-dropns-classic-secondary: $(PROGRAM)
        $(MAKE) Test/DocTest-DropNS-classic-secondary.dll
-       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-classic-secondary.dll
+       $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-classic-secondary.dll --api-style=classic
 
 check-monodocer-internal-interface: $(PROGRAM)
        # Tests to make sure internal interfaces that are explicitly implemented are not documented
@@ -370,7 +416,9 @@ check-doc-tools: check-monodocer-since \
        check-monodocer-dropns-classic-withsecondary \
        check-monodocer-dropns-delete \
        check-monodocer-internal-interface \
-       check-monodocer-enumerations
+       check-monodocer-enumerations \
+       check-monodocer-dropns-multi \
+       check-monodocer-dropns-multi-withexisting
 
 check-doc-tools-update: check-monodocer-since-update \
        check-monodocer-importecmadoc-update \
index 30cad403132dc83afdd438b11208c2e752de3ef7..207d6cb40f911ba5cda004fefb7b8665b655082d 100644 (file)
@@ -26,7 +26,7 @@ namespace Mono.Documentation {
                                else {
                                        Console.Error.WriteLine ("mdoc: {0}", e.Message);
                                }
-                               Console.Error.WriteLine ("See `mdoc help' for more information.");
+                               Console.Error.WriteLine ("See `mdoc help' for more information or use --debug to diagnose.");
                                Environment.ExitCode = 1;
                        }
                }
index 7d54a28947b1f8da02de4832e9b490b9df27175a..f1b9821365b55675a53246356a664d5ea86c3003 100644 (file)
@@ -133,6 +133,9 @@ class MDocUpdater : MDocCommand
        List<AssemblyDefinition> assemblies;
        readonly DefaultAssemblyResolver assemblyResolver = new DefaultAssemblyResolver();
        
+       string apistyle = string.Empty;
+       bool isClassicRun;
+       bool multiassembly;
        bool delete;
        bool show_exceptions;
        bool no_assembly_versions, ignore_missing_types;
@@ -278,6 +281,12 @@ class MDocUpdater : MDocCommand
                        { "preserve",
                                "Do not delete members that don't exist in the assembly, but rather mark them as preserved.",
                                v => PreserveTag = "true" },
+                       { "multiassembly",
+                               "Allow types to be in multiple assemblies.",
+                               v => multiassembly = true },
+                       { "api-style=",
+                               "Denotes the apistyle. Currently, only `classic` and `unified` are supported. `classic` set of assemblies should be run first, immediately followed by 'unified' assemblies with the `dropns` parameter.",
+                               v => apistyle = v.ToLowerInvariant ()},
                };
                var assemblies = Parse (p, args, "update", 
                                "[OPTIONS]+ ASSEMBLIES",
@@ -286,7 +295,17 @@ class MDocUpdater : MDocCommand
                        return;
                if (assemblies.Count == 0)
                        Error ("No assemblies specified.");
-
+               
+               // validation for the api-style parameter
+               if (apistyle == "classic") 
+                       isClassicRun = true;
+               else if (apistyle == "unified") {
+                       if (!droppedAssemblies.Any ())
+                               Error ("api-style 'unified' must also supply the 'dropns' parameter with at least one assembly and dropped namespace.");
+               } else if (!string.IsNullOrWhiteSpace (apistyle)) 
+                       Error ("api-style '{0}' is not currently supported", apistyle);
+                       
+                               
                foreach (var dir in assemblies
                                .Where (a => a.Contains (Path.DirectorySeparatorChar))
                                .Select (a => Path.GetDirectoryName (a)))
@@ -767,7 +786,13 @@ class MDocUpdater : MDocCommand
 
        private void AddIndexAssembly (AssemblyDefinition assembly, XmlElement parent)
        {
-               XmlElement index_assembly = parent.OwnerDocument.CreateElement("Assembly");
+               XmlElement index_assembly = null;
+               if (multiassembly) 
+                       index_assembly = (XmlElement)parent.SelectSingleNode ("Assembly[@Name='"+ assembly.Name.Name +"']");
+               
+               if (index_assembly == null) 
+                       index_assembly = parent.OwnerDocument.CreateElement ("Assembly");
+
                index_assembly.SetAttribute ("Name", assembly.Name.Name);
                index_assembly.SetAttribute ("Version", assembly.Name.Version.ToString());
 
@@ -842,7 +867,8 @@ class MDocUpdater : MDocCommand
                
                XmlElement index_types = WriteElement(index.DocumentElement, "Types");
                XmlElement index_assemblies = WriteElement(index.DocumentElement, "Assemblies");
-               index_assemblies.RemoveAll ();
+               if (!multiassembly) 
+                       index_assemblies.RemoveAll ();
 
 
                HashSet<string> goodfiles = new HashSet<string> (StringComparer.OrdinalIgnoreCase);
@@ -1004,7 +1030,12 @@ class MDocUpdater : MDocCommand
                                        XmlDocument doc = new XmlDocument ();
                                        doc.Load (typefile.FullName);
                                        XmlElement e = doc.SelectSingleNode("/Type") as XmlElement;
-                                       string assemblyName = doc.SelectSingleNode ("/Type/AssemblyInfo/AssemblyName").InnerText;
+                                       var assemblyNameNode = doc.SelectSingleNode ("/Type/AssemblyInfo/AssemblyName");
+                                       if (assemblyNameNode == null){
+                                               Warning ("Did not find /Type/AssemblyInfo/AssemblyName on {0}", typefile.FullName);
+                                               continue;
+                                       }
+                                       string assemblyName = assemblyNameNode.InnerText;
                                        AssemblyDefinition assembly = assemblies.FirstOrDefault (a => a.Name.Name == assemblyName);
 
                                        Action saveDoc = () => {
@@ -1029,7 +1060,7 @@ class MDocUpdater : MDocCommand
                                                saveDoc ();
 
                                                var unifiedAssemblyNode = doc.SelectSingleNode ("/Type/AssemblyInfo[@apistyle='unified']");
-                                               var classicAssemblyNode = doc.SelectSingleNode ("/Type/AssemblyInfo[@apistyle='classic']");
+                                               var classicAssemblyNode = doc.SelectSingleNode ("/Type/AssemblyInfo[not(@apistyle) or @apistyle='classic']");
                                                var unifiedMembers = doc.SelectNodes ("//Member[@apistyle='unified']|//Member/AssemblyInfo[@apistyle='unified']");
                                                var classicMembers = doc.SelectNodes ("//Member[@apistyle='classic']|//Member/AssemblyInfo[@apistyle='classic']");
                                                bool isUnifiedRun = HasDroppedAnyNamespace ();
@@ -1249,10 +1280,10 @@ class MDocUpdater : MDocCommand
                                XmlElement mm = MakeMember(basefile, new DocsNodeInfo (null, m));
                                if (mm == null) continue;
 
-                               if (MDocUpdater.SwitchingToMagicTypes) {
+                               if (MDocUpdater.SwitchingToMagicTypes || MDocUpdater.HasDroppedNamespace (m)) {
                                        // this is a unified style API that obviously doesn't exist in the classic API. Let's mark
                                        // it with apistyle="unified", so that it's not displayed for classic style APIs
-                                       mm.SetAttribute ("apistyle", "unified");
+                                       mm.AddApiStyle (ApiStyle.Unified);
                                }
 
                                members.AppendChild( mm );
@@ -1363,7 +1394,7 @@ class MDocUpdater : MDocCommand
 
                bool unifiedRun = HasDroppedNamespace (type);
 
-               var classicAssemblyInfo = member.SelectSingleNode ("AssemblyInfo[@apistyle='classic']");
+               var classicAssemblyInfo = member.SelectSingleNode ("AssemblyInfo[not(@apistyle) or @apistyle='classic']");
                bool nodeIsClassic = classicAssemblyInfo != null || member.HasApiStyle (ApiStyle.Classic);
                var unifiedAssemblyInfo = member.SelectSingleNode ("AssemblyInfo[@apistyle='unified']");
                bool nodeIsUnified = unifiedAssemblyInfo != null || member.HasApiStyle (ApiStyle.Unified);
@@ -1382,12 +1413,13 @@ class MDocUpdater : MDocCommand
                } else if (unifiedRun && nodeIsClassic) {
                        // this is a unified run, and the member doesn't exist, but is marked as being in the classic assembly.
                        member.RemoveApiStyle (ApiStyle.Unified);
+                       member.AddApiStyle (ApiStyle.Classic);
                        Warning ("Not removing '{0}' since it's still in the classic assembly.", signature);
                } else if (unifiedRun && !nodeIsClassic) {
                        // unified run, and the node is not classic, which means it doesn't exist anywhere.
                        actuallyDelete ();
                } else { 
-                       if (!nodeIsClassic && !nodeIsUnified) { // regular codepath (ie. not classic/unified)
+                       if (!isClassicRun || (isClassicRun && !nodeIsClassic && !nodeIsUnified)) { // regular codepath (ie. not classic/unified)
                                actuallyDelete ();
                        } else { // this is a classic run
                                Warning ("Removing classic from '{0}' ... will be removed in the unified run if not present there.", signature);
@@ -1535,28 +1567,15 @@ class MDocUpdater : MDocCommand
                                type);
                }
                
-               string assemblyInfoNodeFilter = MDocUpdater.HasDroppedNamespace (type) ? "[@apistyle='unified']" : "[not(@apistyle) or @apistyle='classic']";
-
-               AddXmlNode(
-                       root.SelectNodes ("AssemblyInfo" + assemblyInfoNodeFilter).Cast<XmlElement> ().ToArray (),
-                       x => x.SelectSingleNode("AssemblyName").InnerText == type.Module.Assembly.Name.Name,
-                       x => WriteElementText(x, "AssemblyName", type.Module.Assembly.Name.Name),
-                       () => {
-                               XmlElement ass = WriteElement(root, "AssemblyInfo", forceNewElement:true);
-                               
-                               if (MDocUpdater.HasDroppedNamespace (type)) ass.SetAttribute ("apistyle", "unified");
-
-                               
+               AddAssemblyNameToNode (root, type);
 
-                               return ass;
-                       },
-                       type);
-
-               foreach(var ass in root.SelectNodes ("AssemblyInfo" + assemblyInfoNodeFilter).Cast<XmlElement> ())
+               string assemblyInfoNodeFilter = MDocUpdater.HasDroppedNamespace (type) ? "[@apistyle='unified']" : "[not(@apistyle) or @apistyle='classic']";
+               Func<XmlElement, bool> assemblyFilter = x => x.SelectSingleNode ("AssemblyName").InnerText == type.Module.Assembly.Name.Name;
+               foreach(var ass in root.SelectNodes ("AssemblyInfo" + assemblyInfoNodeFilter).Cast<XmlElement> ().Where (assemblyFilter))
                {
                        WriteElementText(ass, "AssemblyName", type.Module.Assembly.Name.Name);
                        if (!no_assembly_versions) {
-                               UpdateAssemblyVersions (root, type, true);
+                               UpdateAssemblyVersions (ass, type, true);
                        }
                        else {
                                var versions = ass.SelectNodes ("AssemblyVersion").Cast<XmlNode> ().ToList ();
@@ -1654,6 +1673,43 @@ class MDocUpdater : MDocCommand
                NormalizeWhitespace(root);
        }
 
+       /// <summary>Adds an AssemblyInfo with AssemblyName node to an XmlElement.</summary>
+       /// <returns>The assembly that was either added, or was already present</returns>
+       XmlElement AddAssemblyNameToNode (XmlElement root, TypeDefinition type)
+       {
+               return AddAssemblyNameToNode (root, type.Module);
+       }
+
+       /// <summary>Adds an AssemblyInfo with AssemblyName node to an XmlElement.</summary>
+       /// <returns>The assembly that was either added, or was already present</returns>
+       XmlElement AddAssemblyNameToNode (XmlElement root, ModuleDefinition module)
+       {
+               Func<XmlElement, bool> assemblyFilter = x => {
+                       var existingName = x.SelectSingleNode ("AssemblyName");
+
+                       bool apiStyleMatches = true;
+                       string currentApiStyle = x.GetAttribute ("apistyle");
+                       if ((HasDroppedNamespace (module) && !string.IsNullOrWhiteSpace (currentApiStyle) && currentApiStyle != "unified") ||
+                                   (isClassicRun && (string.IsNullOrWhiteSpace (currentApiStyle) || currentApiStyle != "classic"))) {
+                               apiStyleMatches = false;
+                       }
+                       return apiStyleMatches && (existingName == null || (existingName != null && existingName.InnerText == module.Assembly.Name.Name));
+               };
+               
+               return AddAssemblyXmlNode (
+                       root.SelectNodes ("AssemblyInfo").Cast<XmlElement> ().ToArray (), 
+                       assemblyFilter, x => WriteElementText (x, "AssemblyName", module.Assembly.Name.Name), 
+                       () =>  {
+                               XmlElement ass = WriteElement (root, "AssemblyInfo", forceNewElement: true);
+                               
+                               if (MDocUpdater.HasDroppedNamespace (module))
+                                       ass.AddApiStyle (ApiStyle.Unified);
+                               if (isClassicRun) 
+                                       ass.AddApiStyle (ApiStyle.Classic);
+                               return ass;
+                       }, module);
+       }
+
        static readonly string[] TypeNodeOrder = {
                "TypeSignature",
                "MemberOfLibrary",
@@ -1709,7 +1765,13 @@ class MDocUpdater : MDocCommand
                WriteElementText(me, "MemberType", GetMemberType(mi));
 
                if (!no_assembly_versions) {
-                       UpdateAssemblyVersions (me, mi, true);
+                       if (!multiassembly)
+                               UpdateAssemblyVersions (me, mi, true);
+                       else {
+                               var node = AddAssemblyNameToNode (me, mi.Module);
+
+                               UpdateAssemblyVersionForAssemblyInfo (node, me, new[] { GetAssemblyVersion (mi.Module.Assembly) }, add: true);
+                       }
                }
                else {
                        ClearElement (me, "AssemblyInfo");
@@ -1743,6 +1805,25 @@ class MDocUpdater : MDocCommand
                AddXmlNode (relevant, valueMatches, setValue, makeNewNode, type.Module);
        }
 
+       static XmlElement AddAssemblyXmlNode (XmlElement[] relevant, Func<XmlElement, bool> valueMatches, Action<XmlElement> setValue, Func<XmlElement> makeNewNode, ModuleDefinition module)
+       {
+               bool isUnified = MDocUpdater.HasDroppedNamespace (module);
+               XmlElement thisAssemblyNode = relevant.FirstOrDefault (valueMatches);
+               if (thisAssemblyNode == null) {
+                       thisAssemblyNode = makeNewNode ();
+               }
+               setValue (thisAssemblyNode);
+
+               if (isUnified) {
+                       thisAssemblyNode.AddApiStyle (ApiStyle.Unified);
+
+                       foreach (var otherNodes in relevant.Where (n => n != thisAssemblyNode && n.DoesNotHaveApiStyle (ApiStyle.Unified))) {
+                               otherNodes.AddApiStyle (ApiStyle.Classic);
+                       }
+               }
+               return thisAssemblyNode;
+       }
+
        /// <summary>Adds an xml node, reusing the node if it's available</summary>
        /// <param name="relevant">The existing set of nodes</param>
        /// <param name="valueMatches">Checks to see if the node's value matches what you're trying to write.</param>
@@ -2302,12 +2383,18 @@ class MDocUpdater : MDocCommand
                                n.ParentNode.RemoveChild(n);
        }
        
-       private static bool UpdateAssemblyVersions (XmlElement root, MemberReference member, bool add)
+       private bool UpdateAssemblyVersions (XmlElement root, MemberReference member, bool add)
        {
                TypeDefinition type = member as TypeDefinition;
                if (type == null)
                        type = member.DeclaringType as TypeDefinition;
-               return UpdateAssemblyVersions(root, type.Module.Assembly, new string[]{ GetAssemblyVersion (type.Module.Assembly) }, add);
+
+               var versions = new string[] { GetAssemblyVersion (type.Module.Assembly) };
+
+               if (root.LocalName == "AssemblyInfo")
+                       return UpdateAssemblyVersionForAssemblyInfo (root, root.ParentNode as XmlElement, versions, add: true);
+               else 
+                       return UpdateAssemblyVersions (root, type.Module.Assembly, versions, add);
        }
        
        private static string GetAssemblyVersion (AssemblyDefinition assembly)
@@ -2315,8 +2402,11 @@ class MDocUpdater : MDocCommand
                return assembly.Name.Version.ToString();
        }
        
-       private static bool UpdateAssemblyVersions(XmlElement root, AssemblyDefinition assembly, string[] assemblyVersions, bool add)
+       private bool UpdateAssemblyVersions(XmlElement root, AssemblyDefinition assembly, string[] assemblyVersions, bool add)
        {
+               if (multiassembly)
+                       return false;
+                       
                XmlElement av = (XmlElement) root.SelectSingleNode ("AssemblyVersions");
                if (av != null) {
                                // AssemblyVersions is not part of the spec
@@ -2333,7 +2423,7 @@ class MDocUpdater : MDocCommand
                        e = root.OwnerDocument.CreateElement("AssemblyInfo");
 
                        if (MDocUpdater.HasDroppedNamespace (assembly)) {
-                               e.SetAttribute ("apistyle", "unified");
+                               e.AddApiStyle (ApiStyle.Unified);
                        }
 
                        root.AppendChild(e);
@@ -2342,13 +2432,16 @@ class MDocUpdater : MDocCommand
                var thatNode = (XmlElement) root.SelectSingleNode (thatNodeFilter);
                if (MDocUpdater.HasDroppedNamespace (assembly) && thatNode != null) {
                        // there's a classic node, we should add apistyles
-                       e.SetAttribute ("apistyle", "unified");
-                       thatNode.SetAttribute ("apistyle", "classic");
+                       e.AddApiStyle (ApiStyle.Unified);
+                       thatNode.AddApiStyle (ApiStyle.Classic);
                }
 
-               List<XmlNode> matches = e.SelectNodes ("AssemblyVersion").Cast<XmlNode>()
-                       .Where(v => Array.IndexOf (assemblyVersions, v.InnerText) >= 0)
-                       .ToList ();
+               return UpdateAssemblyVersionForAssemblyInfo (e, root, assemblyVersions, add);
+       }
+
+       static bool UpdateAssemblyVersionForAssemblyInfo (XmlElement e, XmlElement root, string[] assemblyVersions, bool add)
+       {
+               List<XmlNode> matches = e.SelectNodes ("AssemblyVersion").Cast<XmlNode> ().Where (v => Array.IndexOf (assemblyVersions, v.InnerText) >= 0).ToList ();
                // matches.Count > 0 && add: ignore -- already present
                if (matches.Count > 0 && !add) {
                        foreach (XmlNode c in matches)
@@ -2978,6 +3071,39 @@ static class DocUtils {
                if (string.IsNullOrWhiteSpace (existingValue) || existingValue != styleString) {
                        element.SetAttribute ("apistyle", styleString);
                }
+               
+               // Propagate the API style up to the membernode if necessary
+               if (element.LocalName == "AssemblyInfo" && element.ParentNode != null && element.ParentNode.LocalName == "Member") {
+                       var member = element.ParentNode;
+                       var unifiedAssemblyNode = member.SelectSingleNode ("AssemblyInfo[@apistyle='unified']");
+                       var classicAssemblyNode = member.SelectSingleNode ("AssemblyInfo[not(@apistyle) or @apistyle='classic']");
+
+                       var parentAttribute = element.ParentNode.Attributes ["apistyle"];
+                       Action removeStyle = () => element.ParentNode.Attributes.Remove (parentAttribute);
+                       Action propagateStyle = () => {
+                               if (parentAttribute == null) {
+                                       // if it doesn't have the attribute, then add it
+                                       parentAttribute = element.OwnerDocument.CreateAttribute ("apistyle");
+                                       parentAttribute.Value = styleString;
+                                       element.ParentNode.Attributes.Append (parentAttribute);
+                               } 
+                       };
+
+                       if ((style == ApiStyle.Classic && unifiedAssemblyNode != null) || (style == ApiStyle.Unified && classicAssemblyNode != null)) 
+                               removeStyle ();
+                       else
+                               propagateStyle ();
+               }
+       }
+       public static void AddApiStyle (this XmlNode node, ApiStyle style) 
+       {
+               string styleString = style.ToString ().ToLowerInvariant ();
+               var existingAttribute = node.Attributes ["apistyle"];
+               if (existingAttribute == null) {
+                       existingAttribute = node.OwnerDocument.CreateAttribute ("apistyle");
+                       node.Attributes.Append (existingAttribute);
+               }
+               existingAttribute.Value = styleString;
        }
        public static void RemoveApiStyle (this XmlElement element, ApiStyle style) 
        {
index 54bb7ffdb51d9be60191ea4a70d3becbe24db516..8d1488a5ac87b2523b9d8ed925dc51db92bb7d2e 100644 (file)
@@ -7,6 +7,7 @@ using Mono.Options;
 
 namespace Mono.Documentation
 {
+       [Obsolete ("This functionality is no longer supported.")]
        public class MDocPreserve : MDocCommand
        {
                MDocUpdater updater;
@@ -18,6 +19,8 @@ namespace Mono.Documentation
 
                public override void Run (IEnumerable<string> args)
                {
+                       Message (System.Diagnostics.TraceLevel.Warning, "This functionality is no longer supported, and will be removed in a future release.");
+
                        string preserveName = string.Empty;
                        var p = new OptionSet () { { "name=",
                                        "Root {DIRECTORY} to generate/update documentation.",
index 8346834b778364e1413d16713c509c446398b228..303c58e8882b0a65ea59086460b6763f8e6ede12 100644 (file)
@@ -4,6 +4,8 @@ namespace MyFramework.MyNamespace {
                public float Hello(int value) {
                        return 0.0f;
                }
+               public double OnlyInClassic {get;set;}
+               
                #if DELETETEST
                public string InBoth {get;set;}
                public string InBothClassic {get;set;}
@@ -20,9 +22,17 @@ namespace MyFramework.MyNamespace {
                #endif
        }
 
+       #if DELETETEST 
+       public class TypeOnlyInClassic {}
+       #endif
+       
        #if DELETETEST && !V2
        public class WillDelete {
                public string Name {get;set;}
        }
        #endif
+       #if MULTITEST
+       public class OnlyInMulti {
+       }
+       #endif
 }
index 9b0c364aef3eb084e5079fe50527f893cda0ddf7..b4fcc9ea01b867f443912233f6fffcf06d8e53b1 100644 (file)
@@ -4,6 +4,8 @@ namespace MyNamespace {
                public float Hello(int value) {
                        return 0.0f;
                }
+               public char OnlyInUnified {get;set;} 
+               
                #if DELETETEST
                public string InBoth {get;set;}
                public string InBothUnified {get;set;}
@@ -30,4 +32,9 @@ namespace MyNamespace {
                public string Name {get;set;}
        }
        #endif
+
+       #if MULTITEST
+       public class OnlyInMulti {
+       }
+       #endif
 }
index e3cda6d9d99c7ab59b553e8fede16e0db2e7ff21..77388be8815e6d2dd07ddcf53b72fdc006852272 100644 (file)
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="OnlyInClassic" apistyle="classic">
+      <MemberSignature Language="C#" Value="public double OnlyInClassic { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Double</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="OnlyInUnified" apistyle="unified">
+      <MemberSignature Language="C#" Value="public char OnlyInUnified { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Char</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
   </Members>
 </Type>
index e3cda6d9d99c7ab59b553e8fede16e0db2e7ff21..77388be8815e6d2dd07ddcf53b72fdc006852272 100644 (file)
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="OnlyInClassic" apistyle="classic">
+      <MemberSignature Language="C#" Value="public double OnlyInClassic { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Double</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="OnlyInUnified" apistyle="unified">
+      <MemberSignature Language="C#" Value="public char OnlyInUnified { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Char</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
   </Members>
 </Type>
index a178fc47d6ef3fae51ff4afab3ec518b7a3a83f2..a920ce2f499be95356c1c871a34f1ad37f34f4ce 100644 (file)
@@ -1,7 +1,7 @@
 <Type Name="MyOtherClass" FullName="MyFramework.MyOtherNamespace.MyOtherClass">
   <TypeSignature Language="C#" Value="public class MyOtherClass" />
   <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyOtherClass extends System.Object" />
-  <AssemblyInfo>
+  <AssemblyInfo apistyle="classic">
     <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
   </AssemblyInfo>
index cb620b81f8a2efad1b87cf3963a35159deb6261a..1ff3447bab2cbf2ea7bed3a8c06f5337bffa4352 100644 (file)
@@ -53,7 +53,7 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
-    <Member MemberName="AddedInV2Classic">
+    <Member MemberName="AddedInV2Classic" apistyle="classic">
       <MemberSignature Language="C#" Value="public string AddedInV2Classic { get; set; }" />
       <MemberSignature Language="ILAsm" Value=".property instance string AddedInV2Classic" />
       <MemberType>Property</MemberType>
@@ -69,7 +69,7 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
-    <Member MemberName="AddedInV2Unified">
+    <Member MemberName="AddedInV2Unified" apistyle="unified">
       <MemberSignature Language="C#" Value="public string AddedInV2Unified { get; set; }" />
       <MemberSignature Language="ILAsm" Value=".property instance string AddedInV2Unified" />
       <MemberType>Property</MemberType>
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
-    <Member MemberName="InBothClassic">
+    <Member MemberName="InBothClassic" apistyle="classic">
       <MemberSignature Language="C#" Value="public string InBothClassic { get; set; }" />
       <MemberSignature Language="ILAsm" Value=".property instance string InBothClassic" />
       <MemberType>Property</MemberType>
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
-    <Member MemberName="InBothUnified">
+    <Member MemberName="InBothUnified" apistyle="unified">
       <MemberSignature Language="C#" Value="public string InBothUnified { get; set; }" />
       <MemberSignature Language="ILAsm" Value=".property instance string InBothUnified" />
       <MemberType>Property</MemberType>
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="OnlyInClassic" apistyle="classic">
+      <MemberSignature Language="C#" Value="public double OnlyInClassic { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Double</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="OnlyInUnified" apistyle="unified">
+      <MemberSignature Language="C#" Value="public char OnlyInUnified { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Char</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
   </Members>
 </Type>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-delete/MyFramework.MyNamespace/TypeOnlyInClassic.xml b/mcs/tools/mdoc/Test/en.expected-dropns-delete/MyFramework.MyNamespace/TypeOnlyInClassic.xml
new file mode 100644 (file)
index 0000000..7e6adf2
--- /dev/null
@@ -0,0 +1,31 @@
+<Type Name="TypeOnlyInClassic" FullName="MyFramework.MyNamespace.TypeOnlyInClassic">
+  <TypeSignature Language="C#" Value="public class TypeOnlyInClassic" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit TypeOnlyInClassic extends System.Object" />
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public TypeOnlyInClassic ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+      <MemberType>Constructor</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/MyFramework.MyNamespace/MyClass.xml b/mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/MyFramework.MyNamespace/MyClass.xml
new file mode 100644 (file)
index 0000000..e73f7d5
--- /dev/null
@@ -0,0 +1,160 @@
+<Type Name="MyClass" FullName="MyFramework.MyNamespace.MyClass">
+  <TypeSignature Language="C#" Value="public class MyClass" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyClass extends System.Object" />
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public MyClass ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+      <MemberType>Constructor</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Hello">
+      <MemberSignature Language="C#" Value="public float Hello (int value);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Single</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="value" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <param name="value">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="MyProperty">
+      <MemberSignature Language="C#" Value="public string MyProperty { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="OnlyInClassic" apistyle="classic">
+      <MemberSignature Language="C#" Value="public double OnlyInClassic { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Double</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="OnlyInUnified" apistyle="unified">
+      <MemberSignature Language="C#" Value="public char OnlyInUnified { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Char</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/MyFramework.MyNamespace/OnlyInMulti.xml b/mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/MyFramework.MyNamespace/OnlyInMulti.xml
new file mode 100644 (file)
index 0000000..dbcf130
--- /dev/null
@@ -0,0 +1,40 @@
+<Type Name="OnlyInMulti" FullName="MyFramework.MyNamespace.OnlyInMulti">
+  <TypeSignature Language="C#" Value="public class OnlyInMulti" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit OnlyInMulti extends System.Object" />
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public OnlyInMulti ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+      <MemberType>Constructor</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/index.xml b/mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/index.xml
new file mode 100644 (file)
index 0000000..6b5124a
--- /dev/null
@@ -0,0 +1,53 @@
+<Overview>
+  <Assemblies>
+    <Assembly Name="DocTest-DropNS-classic" Version="0.0.0.0">
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+        </Attribute>
+        <Attribute>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+        </Attribute>
+      </Attributes>
+    </Assembly>
+    <Assembly Name="DocTest-DropNS-classic-multitest" Version="0.0.0.0">
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+        </Attribute>
+        <Attribute>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+        </Attribute>
+      </Attributes>
+    </Assembly>
+    <Assembly Name="DocTest-DropNS-unified" Version="0.0.0.0">
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+        </Attribute>
+        <Attribute>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+        </Attribute>
+      </Attributes>
+    </Assembly>
+    <Assembly Name="DocTest-DropNS-unified-multitest" Version="0.0.0.0">
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+        </Attribute>
+        <Attribute>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+        </Attribute>
+      </Attributes>
+    </Assembly>
+  </Assemblies>
+  <Remarks>To be added.</Remarks>
+  <Copyright>To be added.</Copyright>
+  <Types>
+    <Namespace Name="MyFramework.MyNamespace">
+      <Type Name="MyClass" Kind="Class" />
+      <Type Name="OnlyInMulti" Kind="Class" />
+    </Namespace>
+  </Types>
+  <Title>DocTest-DropNS-classic</Title>
+</Overview>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/ns-MyFramework.MyNamespace.xml b/mcs/tools/mdoc/Test/en.expected-dropns-multi-withexisting/ns-MyFramework.MyNamespace.xml
new file mode 100644 (file)
index 0000000..74df75a
--- /dev/null
@@ -0,0 +1,6 @@
+<Namespace Name="MyFramework.MyNamespace">
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Namespace>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/MyClass.xml b/mcs/tools/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/MyClass.xml
new file mode 100644 (file)
index 0000000..72eabef
--- /dev/null
@@ -0,0 +1,160 @@
+<Type Name="MyClass" FullName="MyFramework.MyNamespace.MyClass">
+  <TypeSignature Language="C#" Value="public class MyClass" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyClass extends System.Object" />
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public MyClass ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+      <MemberType>Constructor</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Hello">
+      <MemberSignature Language="C#" Value="public float Hello (int value);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Single</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="value" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <param name="value">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="MyProperty">
+      <MemberSignature Language="C#" Value="public string MyProperty { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="OnlyInClassic" apistyle="classic">
+      <MemberSignature Language="C#" Value="public double OnlyInClassic { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Double</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="OnlyInUnified" apistyle="unified">
+      <MemberSignature Language="C#" Value="public char OnlyInUnified { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Char</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/OnlyInMulti.xml b/mcs/tools/mdoc/Test/en.expected-dropns-multi/MyFramework.MyNamespace/OnlyInMulti.xml
new file mode 100644 (file)
index 0000000..dbcf130
--- /dev/null
@@ -0,0 +1,40 @@
+<Type Name="OnlyInMulti" FullName="MyFramework.MyNamespace.OnlyInMulti">
+  <TypeSignature Language="C#" Value="public class OnlyInMulti" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit OnlyInMulti extends System.Object" />
+  <AssemblyInfo apistyle="classic">
+    <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <AssemblyInfo apistyle="unified">
+    <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public OnlyInMulti ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+      <MemberType>Constructor</MemberType>
+      <AssemblyInfo apistyle="classic">
+        <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <AssemblyInfo apistyle="unified">
+        <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-multi/index.xml b/mcs/tools/mdoc/Test/en.expected-dropns-multi/index.xml
new file mode 100644 (file)
index 0000000..3baf401
--- /dev/null
@@ -0,0 +1,53 @@
+<Overview>
+  <Assemblies>
+    <Assembly Name="DocTest-DropNS-classic" Version="0.0.0.0">
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+        </Attribute>
+        <Attribute>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+        </Attribute>
+      </Attributes>
+    </Assembly>
+    <Assembly Name="DocTest-DropNS-classic-multitest" Version="0.0.0.0">
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+        </Attribute>
+        <Attribute>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+        </Attribute>
+      </Attributes>
+    </Assembly>
+    <Assembly Name="DocTest-DropNS-unified" Version="0.0.0.0">
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+        </Attribute>
+        <Attribute>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+        </Attribute>
+      </Attributes>
+    </Assembly>
+    <Assembly Name="DocTest-DropNS-unified-multitest" Version="0.0.0.0">
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+        </Attribute>
+        <Attribute>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+        </Attribute>
+      </Attributes>
+    </Assembly>
+  </Assemblies>
+  <Remarks>To be added.</Remarks>
+  <Copyright>To be added.</Copyright>
+  <Types>
+    <Namespace Name="MyFramework.MyNamespace">
+      <Type Name="MyClass" Kind="Class" />
+      <Type Name="OnlyInMulti" Kind="Class" />
+    </Namespace>
+  </Types>
+  <Title>Untitled</Title>
+</Overview>
diff --git a/mcs/tools/mdoc/Test/en.expected-dropns-multi/ns-MyFramework.MyNamespace.xml b/mcs/tools/mdoc/Test/en.expected-dropns-multi/ns-MyFramework.MyNamespace.xml
new file mode 100644 (file)
index 0000000..74df75a
--- /dev/null
@@ -0,0 +1,6 @@
+<Namespace Name="MyFramework.MyNamespace">
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Namespace>
index 74d23dc1b826dfe5615e9ae5c3bba7bdee5abf65..faace3227d2d336246adbd3aecacf89c211d2674 100644 (file)
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
index f57377ca9cdda724e9a1b743f1f3ef8322d5d399..dcd252d9c5ba9afc2bb3980b9448291493e5d726 100644 (file)
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
index a8d78b03a57c6a80fe5c8ba9db2086c889e3bf5b..06ba0152e52c653c2dcfae3fc8cc77361b0a4b0c 100644 (file)
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
index 465db410e2988d033ee76a78545f7a8275225bd3..7874a68ee4301850d9cc6d87fc5e9d65555d21dd 100644 (file)
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
index e639b1953dc2ac2a12f2b34cc716cc0cd63d1f92..46ed26d9c4dbb34dfac0e5421778d72b1082bbd3 100644 (file)
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
index cb74be754398bca7d8b673e4bd86809325097d96..26557e70431b15004fc4e269f61e73d785fd8f71 100644 (file)
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
index 5754c4bec381d8f9112156d2bbf28e1c4a397376..2efedc427e76f589b69a6f6de2d784b8b597f09e 100644 (file)
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
index d48fb6ea01ab6d224e6182b44604bd931f805ff3..d60ba907ee7cec976a67a6eb3fe46869c4f444bd 100644 (file)
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
index 11134443164e2edc57031a5cfc0fab5b579d25e5..2ec3c2e0fd413d38199361a2a7952229e4da6295 100644 (file)
@@ -257,11 +257,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -272,11 +273,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -287,11 +289,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -302,11 +305,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -317,11 +321,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -332,11 +337,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -347,11 +353,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -364,11 +371,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -379,11 +387,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -463,11 +472,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -478,11 +488,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -493,11 +504,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -508,11 +520,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -523,11 +536,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -538,11 +552,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -553,11 +568,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -570,11 +586,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -585,11 +602,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -985,11 +1003,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1000,11 +1019,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1015,11 +1035,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1030,11 +1051,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1045,11 +1067,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1060,11 +1083,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1075,11 +1099,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1092,11 +1117,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1107,11 +1133,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1126,11 +1153,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1141,11 +1169,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1156,11 +1185,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1171,11 +1201,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1186,11 +1217,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1201,11 +1233,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1216,11 +1249,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1233,11 +1267,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
@@ -1248,11 +1283,12 @@ class Example {
           <see cref="M:System.Array.Copy(System.Array,System.Int32,System.Array,System.Int32,System.Int32)" />,
           <see cref="M:System.Array.CreateArrayTypeMismatchException" />,
           <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
-          <see cref="M:System.String.Format(System.IFormatProvider,System.String,System.Object[])" />,
           <see cref="M:System.String.Format(System.String,System.Object[])" />,
+          <see cref="M:System.String.FormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char*,System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
-          <see cref="M:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider,System.String,System.ParamsArray)" />,
           <see cref="M:System.Text.StringBuilder.ExpandByABlock(System.Int32)" />,
           <see cref="M:System.Text.StringBuilder.FormatError" />,
           <see cref="M:System.Text.StringBuilder.set_Length(System.Int32)" />,
index ec5c1f10aabad6e73e5b4e84fa54d1b42b21a954..fa39892bb03574f3d7a8a0f42533cef69a606f99 100755 (executable)
@@ -33,11 +33,13 @@ class MakeBundle {
        static string machine_config_file = null;
        static string config_dir = null;
        static string style = "linux";
+       static string os_message = "";
        static bool compress;
        static bool nomain;
        static bool? use_dos2unix = null;
        static bool skip_scan;
        static string ctor_func;
+       static bool quiet;
        
        static int Main (string [] args)
        {
@@ -94,8 +96,10 @@ class MakeBundle {
                                break;
                        case "--static":
                                static_link = true;
-                               Console.WriteLine ("Note that statically linking the LGPL Mono runtime has more licensing restrictions than dynamically linking.");
-                               Console.WriteLine ("See http://www.mono-project.com/Licensing for details on licensing.");
+                               if (!quiet) {
+                                       Console.WriteLine ("Note that statically linking the LGPL Mono runtime has more licensing restrictions than dynamically linking.");
+                                       Console.WriteLine ("See http://www.mono-project.com/Licensing for details on licensing.");
+                               }
                                break;
                        case "--config":
                                if (i+1 == top) {
@@ -113,7 +117,8 @@ class MakeBundle {
 
                                machine_config_file = args [++i];
 
-                               Console.WriteLine ("WARNING:\n  Check that the machine.config file you are bundling\n  doesn't contain sensitive information specific to this machine.");
+                               if (!quiet)
+                                       Console.WriteLine ("WARNING:\n  Check that the machine.config file you are bundling\n  doesn't contain sensitive information specific to this machine.");
                                break;
                        case "--config-dir":
                                if (i+1 == top) {
@@ -163,18 +168,21 @@ class MakeBundle {
                        case "--dos2unix=false":
                                use_dos2unix = false;
                                break;
+                       case "-q":
+                       case "--quiet":
+                               quiet = true;
+                               break;
                        default:
                                sources.Add (args [i]);
                                break;
                        }
-                       
-                       if (static_link && style == "windows") {
-                               Console.Error.WriteLine ("The option `{0}' is not supported on this platform.", args [i]);
-                               return 1;
-                       }
+
                }
 
-               Console.WriteLine ("Sources: {0} Auto-dependencies: {1}", sources.Count, autodeps);
+               if (!quiet) {
+                       Console.WriteLine (os_message);
+                       Console.WriteLine ("Sources: {0} Auto-dependencies: {1}", sources.Count, autodeps);
+               }
                if (sources.Count == 0 || output == null) {
                        Help ();
                        Environment.Exit (1);
@@ -303,7 +311,7 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
 
                        // Do the file reading and compression in parallel
                        Action<string> body = delegate (string url) {
-                               string fname = new Uri (url).LocalPath;
+                               string fname = LocateFile (new Uri (url).LocalPath);
                                Stream stream = File.OpenRead (fname);
 
                                long real_size = stream.Length;
@@ -338,7 +346,7 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                        // The non-parallel part
                        byte [] buffer = new byte [8192];
                        foreach (var url in files) {
-                               string fname = new Uri (url).LocalPath;
+                               string fname = LocateFile (new Uri (url).LocalPath);
                                string aname = Path.GetFileName (fname);
                                string encoded = aname.Replace ("-", "_").Replace (".", "_");
 
@@ -348,7 +356,8 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                                var stream = streams [url];
                                var real_size = sizes [url];
 
-                               Console.WriteLine ("   embedding: " + fname);
+                               if (!quiet)
+                                       Console.WriteLine ("   embedding: " + fname);
 
                                WriteSymbol (ts, "assembly_data_" + encoded, stream.Length);
                        
@@ -359,8 +368,10 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                                        tc.WriteLine ("static CompressedAssembly assembly_bundle_{0} = {{{{\"{1}\"," +
                                                                  " assembly_data_{0}, {2}}}, {3}}};",
                                                                  encoded, aname, real_size, stream.Length);
-                                       double ratio = ((double) stream.Length * 100) / real_size;
-                                       Console.WriteLine ("   compression ratio: {0:.00}%", ratio);
+                                       if (!quiet) {
+                                               double ratio = ((double) stream.Length * 100) / real_size;
+                                               Console.WriteLine ("   compression ratio: {0:.00}%", ratio);
+                                       }
                                } else {
                                        tc.WriteLine ("extern const unsigned char assembly_data_{0} [];", encoded);
                                        tc.WriteLine ("static const MonoBundledAssembly assembly_bundle_{0} = {{\"{1}\", assembly_data_{0}, {2}}};",
@@ -372,7 +383,8 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
 
                                try {
                                        FileStream cf = File.OpenRead (fname + ".config");
-                                       Console.WriteLine (" config from: " + fname + ".config");
+                                       if (!quiet)
+                                               Console.WriteLine (" config from: " + fname + ".config");
                                        tc.WriteLine ("extern const unsigned char assembly_config_{0} [];", encoded);
                                        WriteSymbol (ts, "assembly_config_" + encoded, cf.Length);
                                        WriteBuffer (ts, cf, buffer);
@@ -391,7 +403,8 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                                        Error (String.Format ("Failure to open {0}", config_file));
                                        return;
                                }
-                               Console.WriteLine ("System config from: " + config_file);
+                               if (!quiet)
+                                       Console.WriteLine ("System config from: " + config_file);
                                tc.WriteLine ("extern const char system_config;");
                                WriteSymbol (ts, "system_config", config_file.Length);
 
@@ -409,7 +422,8 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                                        Error (String.Format ("Failure to open {0}", machine_config_file));
                                        return;
                                }
-                               Console.WriteLine ("Machine config from: " + machine_config_file);
+                               if (!quiet)
+                                       Console.WriteLine ("Machine config from: " + machine_config_file);
                                tc.WriteLine ("extern const char machine_config;");
                                WriteSymbol (ts, "machine_config", machine_config_file.Length);
 
@@ -419,16 +433,6 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                        }
                        ts.Close ();
 
-                       string assembler = GetEnv ("AS", IsUnix ? "as" : "i686-pc-mingw32-as");
-                       
-                       Console.WriteLine ("Compiling:");
-                       string cmd = String.Format ("{0} -o {1} {2} ", assembler, temp_o, temp_s);
-                       int ret = Execute (cmd);
-                       if (ret != 0){
-                               Error ("[Fail]");
-                               return;
-                       }
-
                        if (compress)
                                tc.WriteLine ("\nstatic const CompressedAssembly *compressed [] = {");
                        else
@@ -478,42 +482,92 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                                string maintemplate = st.ReadToEnd ();
                                tc.Write (maintemplate);
                        }
-                       
+
                        tc.Close ();
 
+                       string assembler = GetEnv("AS", "as");
+                       string as_cmd = String.Format("{0} -o {1} {2} ", assembler, temp_o, temp_s);
+                       Execute(as_cmd);
+
                        if (compile_only)
                                return;
 
-                       string zlib = (compress ? "-lz" : "");
-                       string debugging = "-g";
-                       string cc = GetEnv ("CC", IsUnix ? "cc" : "i686-pc-mingw32-gcc");
+                       if (!quiet)
+                               Console.WriteLine("Compiling:");
+
+                       if (style == "windows")
+                       {
 
-                       if (style == "linux")
-                               debugging = "-ggdb";
-                       if (static_link) {
-                               string smonolib;
-                               if (style == "osx")
-                                       smonolib = "`pkg-config --variable=libdir mono-2`/libmono-2.0.a ";
+                               Func<string, string> quote = (pp) => { return "\"" + pp + "\""; };
+
+                               string compiler = GetEnv("CC", "cl.exe");
+                               string winsdkPath = GetEnv("WINSDK", @"C:\Program Files (x86)\Windows Kits\8.1");
+                               string vsPath = GetEnv("VSINCLUDE", @"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC");
+                               string monoPath = GetEnv("MONOPREFIX", @"C:\Program Files (x86)\Mono");
+
+                               string[] includes = new string[] {winsdkPath + @"\Include\um", winsdkPath + @"\Include\shared", vsPath + @"\include", monoPath + @"\include\mono-2.0"};
+                               string[] libs = new string[] { winsdkPath + @"\Lib\winv6.3\um\x86" , vsPath + @"\lib" };
+                               string monoFile;
+
+                               var compilerArgs = new List<string>();
+                               foreach (string include in includes)
+                                       compilerArgs.Add(String.Format ("/I {0}", quote (include)));
+
+                               if (static_link)
+                                       monoFile = LocateFile (monoPath + @"\lib\monosgen-2.0.lib");
                                else
-                                       smonolib = "-Wl,-Bstatic -lmono-2.0 -Wl,-Bdynamic ";
-                               cmd = String.Format ("{4} -o {2} -Wall `pkg-config --cflags mono-2` {0} {3} " +
-                                                    "`pkg-config --libs-only-L mono-2` " + smonolib +
-                                                    "`pkg-config --libs-only-l mono-2 | sed -e \"s/\\-lmono-2.0 //\"` {1}",
-                                                    temp_c, temp_o, output, zlib, cc);
-                       } else {
-                               
-                               cmd = String.Format ("{4} " + debugging + " -o {2} -Wall {0} `pkg-config --cflags --libs mono-2` {3} {1}",
-                                                    temp_c, temp_o, output, zlib, cc);
-                       }
-                            
-                       ret = Execute (cmd);
-                       if (ret != 0){
-                               Error ("[Fail]");
-                               return;
-                       }
-                       Console.WriteLine ("Done");
+                                       monoFile = LocateFile (monoPath + @"\lib\monosgen-2.0.dll");
+
+                               compilerArgs.Add("/MD");
+                               compilerArgs.Add(temp_c);
+                               compilerArgs.Add(temp_o);
+                               compilerArgs.Add("/link");
+
+                               if (nomain)
+                                       compilerArgs.Add("/NOENTRY");
+                                       compilerArgs.Add("/DLL");
+
+                               foreach (string lib in libs)
+                                       compilerArgs.Add(String.Format ("/LIBPATH:{0}", quote(lib)));
+                               compilerArgs.Add (quote(monoFile));
+
+                               string cl_cmd = String.Format("{0} {1}", compiler, String.Join(" ", compilerArgs.ToArray()));
+                               Execute (cl_cmd);
                        }
+                       else
+                       {
+                               string zlib = (compress ? "-lz" : "");
+                               string debugging = "-g";
+                               string cc = GetEnv("CC", "cc");
+                               string cmd = null;
+
+                               if (style == "linux")
+                                       debugging = "-ggdb";
+                               if (static_link)
+                               {
+                                       string smonolib;
+                                       if (style == "osx")
+                                               smonolib = "`pkg-config --variable=libdir mono-2`/libmono-2.0.a ";
+                                       else
+                                               smonolib = "-Wl,-Bstatic -lmono-2.0 -Wl,-Bdynamic ";
+                                       cmd = String.Format("{4} -o {2} -Wall `pkg-config --cflags mono-2` {0} {3} " +
+                                               "`pkg-config --libs-only-L mono-2` " + smonolib +
+                                               "`pkg-config --libs-only-l mono-2 | sed -e \"s/\\-lmono-2.0 //\"` {1}",
+                                               temp_c, temp_o, output, zlib, cc);
+                               }
+                               else
+                               {
+
+                                       cmd = String.Format("{4} " + debugging + " -o {2} -Wall {0} `pkg-config --cflags --libs mono-2` {3} {1}",
+                                               temp_c, temp_o, output, zlib, cc);
+                               }
+                               Execute (cmd);
                        }
+
+                       if (!quiet)
+                               Console.WriteLine ("Done");
+               }
+       }
                } finally {
                        if (!keeptemp){
                                if (object_out == null){
@@ -542,9 +596,10 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                                }
                        
                                assemblies.Add (a.CodeBase);
-                       } catch (Exception e) {
+                       } catch (Exception) {
                                if (skip_scan) {
-                                       Console.WriteLine ("File will not be scanned: {0}", name);
+                                       if (!quiet)
+                                               Console.WriteLine ("File will not be scanned: {0}", name);
                                        assemblies.Add (new Uri (new FileInfo (name).FullName).ToString ());
                                } else {
                                        throw;
@@ -588,7 +643,7 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                                if (!QueueAssembly (files, a.CodeBase))
                                        return false;
                        }
-               } catch (Exception e) {
+               } catch (Exception) {
                        if (!skip_scan)
                                throw;
                }
@@ -629,7 +684,8 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                                }
                        }
                        Error ("Cannot find assembly `" + assembly + "'" );
-                       Console.WriteLine ("Log: \n" + total_log);
+                       if (!quiet)
+                               Console.WriteLine ("Log: \n" + total_log);
                } catch (IKVM.Reflection.BadImageFormatException f) {
                        if (skip_scan)
                                throw;
@@ -682,19 +738,19 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
        static void DetectOS ()
        {
                if (!IsUnix) {
-                       Console.WriteLine ("OS is: Windows");
+                       os_message = "OS is: Windows";
                        style = "windows";
                        return;
                }
 
                IntPtr buf = Marshal.AllocHGlobal (8192);
                if (uname (buf) != 0){
-                       Console.WriteLine ("Warning: Unable to detect OS");
+                       os_message = "Warning: Unable to detect OS";
                        Marshal.FreeHGlobal (buf);
                        return;
                }
                string os = Marshal.PtrToStringAnsi (buf);
-               Console.WriteLine ("OS is: " + os);
+               os_message = "OS is: " + os;
                if (os == "Darwin")
                        style = "osx";
                
@@ -708,81 +764,114 @@ void          mono_register_config_for_assembly (const char* assembly_name, cons
                }
        }
 
-       static int Execute (string cmdLine)
+       static void Execute (string cmdLine)
        {
                if (IsUnix) {
-                       Console.WriteLine (cmdLine);
-                       return system (cmdLine);
+                       if (!quiet)
+                               Console.WriteLine ("[execute cmd]: " + cmdLine);
+                       int ret = system (cmdLine);
+                       if (ret != 0)
+                       {
+                               Error(String.Format("[Fail] {0}", ret));
+                       }
+                       return;
                }
-               
+
                // on Windows, we have to pipe the output of a
                // `cmd` interpolation to dos2unix, because the shell does not
                // strip the CRLFs generated by the native pkg-config distributed
                // with Mono.
                //
                // But if it's *not* on cygwin, just skip it.
-               
+
                // check if dos2unix is applicable.
-               if (use_dos2unix == null) {
-                       use_dos2unix = false;
+               if (use_dos2unix == true)
                        try {
-                               var info = new ProcessStartInfo ("dos2unix");
-                               info.CreateNoWindow = true;
-                               info.RedirectStandardInput = true;
-                               info.UseShellExecute = false;
-                               var dos2unix = Process.Start (info);
-                               dos2unix.StandardInput.WriteLine ("aaa");
-                               dos2unix.StandardInput.WriteLine ("\u0004");
-                               dos2unix.StandardInput.Close ();
-                               dos2unix.WaitForExit ();
-                               if (dos2unix.ExitCode == 0)
-                                       use_dos2unix = true;
-                       } catch {
-                               // ignore
-                       }
-               }
-               // and if there is no dos2unix, just run cmd /c.
-               if (use_dos2unix == false) {
-                       Console.WriteLine (cmdLine);
-                       ProcessStartInfo dos2unix = new ProcessStartInfo ();
-                       dos2unix.UseShellExecute = false;
-                       dos2unix.FileName = "cmd";
-                       dos2unix.Arguments = String.Format ("/c \"{0}\"", cmdLine);
-
-                       using (Process p = Process.Start (dos2unix)) {
-                               p.WaitForExit ();
-                               return p.ExitCode;
-                       }
+                       var info = new ProcessStartInfo ("dos2unix");
+                       info.CreateNoWindow = true;
+                       info.RedirectStandardInput = true;
+                       info.UseShellExecute = false;
+                       var dos2unix = Process.Start (info);
+                       dos2unix.StandardInput.WriteLine ("aaa");
+                       dos2unix.StandardInput.WriteLine ("\u0004");
+                       dos2unix.StandardInput.Close ();
+                       dos2unix.WaitForExit ();
+                       if (dos2unix.ExitCode == 0)
+                               use_dos2unix = true;
+               } catch {
+                       Console.WriteLine("Warning: dos2unix not found");
+                       use_dos2unix = false;
                }
 
-               StringBuilder b = new StringBuilder ();
-               int count = 0;
-               for (int i = 0; i < cmdLine.Length; i++) {
-                       if (cmdLine [i] == '`') {
-                               if (count % 2 != 0) {
-                                       b.Append ("|dos2unix");
+               if (use_dos2unix == null)
+                       use_dos2unix = false;
+
+               ProcessStartInfo psi = new ProcessStartInfo();
+               psi.UseShellExecute = false;
+
+               // if there is no dos2unix, just run cmd /c.
+               if (use_dos2unix == false)
+               {
+                       psi.FileName = "cmd";
+                       psi.Arguments = String.Format("/c \"{0}\"", cmdLine);
+               }
+               else
+               {
+                       psi.FileName = "sh";
+                       StringBuilder b = new StringBuilder();
+                       int count = 0;
+                       for (int i = 0; i < cmdLine.Length; i++)
+                       {
+                               if (cmdLine[i] == '`')
+                               {
+                                       if (count % 2 != 0)
+                                       {
+                                               b.Append("|dos2unix");
+                                       }
+                                       count++;
                                }
-                               count++;
+                               b.Append(cmdLine[i]);
                        }
-                       b.Append (cmdLine [i]);
+                       cmdLine = b.ToString();
+                       psi.Arguments = String.Format("-c \"{0}\"", cmdLine);
                }
-               cmdLine = b.ToString ();
-               Console.WriteLine (cmdLine);
-                       
-               ProcessStartInfo psi = new ProcessStartInfo ();
-               psi.UseShellExecute = false;
-               psi.FileName = "sh";
-               psi.Arguments = String.Format ("-c \"{0}\"", cmdLine);
 
+               if (!quiet)
+                       Console.WriteLine(cmdLine);
                using (Process p = Process.Start (psi)) {
                        p.WaitForExit ();
-                       return p.ExitCode;
+                       int ret = p.ExitCode;
+                       if (ret != 0){
+                               Error (String.Format("[Fail] {0}", ret));
+                       }
+               }
+       }
+
+       static string GetEnv(string name, string defaultValue)
+       {
+               string val = Environment.GetEnvironmentVariable(name);
+               if (val != null)
+               {
+                       if (!quiet)
+                               Console.WriteLine("{0} = {1}", name, val);
+               }
+               else
+               {
+                       val = defaultValue;
+                       if (!quiet)
+                               Console.WriteLine("{0} = {1} (default)", name, val);
                }
+               return val;
        }
 
-       static string GetEnv (string name, string defaultValue) 
+       static string LocateFile(string default_path)
        {
-               string s = Environment.GetEnvironmentVariable (name);
-               return s != null ? s : defaultValue;
+               var override_path = Path.Combine(Directory.GetCurrentDirectory(), Path.GetFileName(default_path));
+               if (File.Exists(override_path))
+                       return override_path;
+               else if (File.Exists(default_path))
+                       return default_path;
+               else
+                       throw new FileNotFoundException(default_path);
        }
 }
index 75d04c1e21ce9d23a8dd31e477b1cf9b23bc83c4..a4295fbcbc62ad4254c07affec2e307bca17aeb7 100644 (file)
@@ -13,7 +13,7 @@ include ../../build/executable.make
 
 LIB_PATH = $(topdir)/class/lib/$(PROFILE)
 
-MONO = MONO_PATH=$(LIB_PATH)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH $(RUNTIME) -O=-inline
+MONO = MONO_PATH="$(LIB_PATH)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) -O=-inline
 
 OUT_DIR = Test/out
 TEST_CS = Test/StackTraceDumper.cs
@@ -41,10 +41,13 @@ BUILD_TEST_EXE = @\
 
 check: test-local
 
+AOT_SUPPORTED = $(shell $(MONO) --aot 2>&1 | grep -q "AOT compilation is not supported" && echo 0 || echo 1)
+
 test-local: all
        $(BUILD_TEST_EXE)
        @echo "Checking $(PROGRAM) without AOT"
        $(CHECK_DIFF)
+ifeq ($(AOT_SUPPORTED), 1)
        @echo "Checking $(PROGRAM) with AOT"
        @MONO_DEBUG=gen-compact-seq-points $(MONO) --aot $(TEST_EXE) > /dev/null
        $(CHECK_DIFF)
@@ -52,3 +55,4 @@ test-local: all
        $(BUILD_TEST_EXE)
        @MONO_DEBUG=gen-compact-seq-points $(MONO) --aot=gen-seq-points-file $(TEST_EXE) > /dev/null
        $(CHECK_DIFF)
+endif
index 1e1dc25ae6d3f75dfbe02b9f8860b0a55acae1bb..5a97797c95b078efdd8f437f8fabf438eaebc568 100644 (file)
@@ -696,7 +696,7 @@ public class Outline {
                // automatically get the namespace imported by virtue of the
                // namespace {} block.
                //      
-               if (this.t.Namespace.StartsWith (t.Namespace + ".") || t.Namespace == this.t.Namespace)
+               if (this.t.Namespace != null && (this.t.Namespace.StartsWith (t.Namespace + ".") || t.Namespace == this.t.Namespace))
                        return type.Substring (t.Namespace.Length + 1);
        
                return type;
index 2e8d475e6434a95c139859a09cd28922952f917c..1a8047134c0084d631c9a56aa75ca37b5534d0d8 100644 (file)
@@ -35,7 +35,7 @@ namespace Mono.Tools {
                        Console.WriteLine ("Usage: signcode [options] filename{0}", Environment.NewLine);
                        Console.WriteLine ("\t-spc spc\tSoftware Publisher Certificate file");
                        Console.WriteLine ("\t-v pvk\t\tPrivate Key file");
-                       Console.WriteLine ("\t-a md5 | sha1\tHash Algorithm (default: MD5)");
+                       Console.WriteLine ("\t-a sha1 | md5\tHash Algorithm (default: SHA1)");
                        Console.WriteLine ("\t-$ indivisual | commercial\tSignature type");
                        Console.WriteLine ("\t-n description\tDescription for the signed file");
                        Console.WriteLine ("\t-i url\tURL for the signed file");
index b4680fb2de5a1077153aaa917dc986c6b793ef23..6a910a9d97fb59bc0c240e43e94884ffb3327cc5 100644 (file)
@@ -37,11 +37,8 @@ namespace Mono.Tuner {
 
                public override void ProcessField (FieldDefinition field)
                {
-                       var attribute = GetPreserveAttribute (field);
-                       if (attribute == null)
-                               return;
-
-                       Mark (field, attribute);
+                       foreach (var attribute in GetPreserveAttributes (field))
+                               Mark (field, attribute);
                }
 
                public override void ProcessMethod (MethodDefinition method)
@@ -51,32 +48,25 @@ namespace Mono.Tuner {
 
                public override void ProcessProperty (PropertyDefinition property)
                {
-                       var attribute = GetPreserveAttribute (property);
-                       if (attribute == null)
-                               return;
-
-                       MarkMethod (property.GetMethod, attribute);
-                       MarkMethod (property.SetMethod, attribute);
+                       foreach (var attribute in GetPreserveAttributes (property)) {
+                               MarkMethod (property.GetMethod, attribute);
+                               MarkMethod (property.SetMethod, attribute);
+                       }
                }
 
                public override void ProcessEvent (EventDefinition @event)
                {
-                       var attribute = GetPreserveAttribute (@event);
-                       if (attribute == null)
-                               return;
-
-                       MarkMethod (@event.AddMethod, attribute);
-                       MarkMethod (@event.InvokeMethod, attribute);
-                       MarkMethod (@event.RemoveMethod, attribute);
+                       foreach (var attribute in GetPreserveAttributes (@event)) {
+                               MarkMethod (@event.AddMethod, attribute);
+                               MarkMethod (@event.InvokeMethod, attribute);
+                               MarkMethod (@event.RemoveMethod, attribute);
+                       }
                }
 
                void MarkMethodIfPreserved (MethodDefinition method)
                {
-                       var attribute = GetPreserveAttribute (method);
-                       if (attribute == null)
-                               return;
-
-                       MarkMethod (method, attribute);
+                       foreach (var attribute in GetPreserveAttributes (method)) 
+                               MarkMethod (method, attribute);
                }
 
                void MarkMethod (MethodDefinition method, CustomAttribute preserve_attribute)
@@ -135,40 +125,40 @@ namespace Mono.Tuner {
 
                void TryApplyPreserveAttribute (TypeDefinition type)
                {
-                       var attribute = GetPreserveAttribute (type);
-                       if (attribute == null)
-                               return;
-
-                       Annotations.Mark (type);
+                       foreach (var attribute in GetPreserveAttributes (type)) {
+                               Annotations.Mark (type);
 
-                       if (!attribute.HasFields)
-                               return;
-
-                       foreach (var named_argument in attribute.Fields)
-                               if (named_argument.Name == "AllMembers" && (bool) named_argument.Argument.Value)
-                                       Annotations.SetPreserve (type, TypePreserve.All);
+                               if (!attribute.HasFields)
+                                       continue;
+                               foreach (var named_argument in attribute.Fields)
+                                       if (named_argument.Name == "AllMembers" && (bool)named_argument.Argument.Value)
+                                               Annotations.SetPreserve (type, TypePreserve.All);
+                       }
                }
 
-               CustomAttribute GetPreserveAttribute (ICustomAttributeProvider provider)
+               List<CustomAttribute> GetPreserveAttributes (ICustomAttributeProvider provider)
                {
+                       List<CustomAttribute> attrs = new List<CustomAttribute> ();
+
                        if (!provider.HasCustomAttributes)
-                               return null;
+                               return attrs;
 
                        var attributes = provider.CustomAttributes;
 
-                       for (int i = 0; i < attributes.Count; i++) {
+                       for (int i = attributes.Count - 1; i >= 0; i--) {
                                var attribute = attributes [i];
 
                                bool remote_attribute;
                                if (!IsPreservedAttribute (provider, attribute, out remote_attribute))
                                        continue;
 
+                               attrs.Add (attribute);
                                if (remote_attribute)
                                        attributes.RemoveAt (i);
-                               return attribute;
                        }
 
-                       return null;
+                       return attrs;
                }
        }
 }
index 35dda5cc407bbeacd75e7e1383ba22b6ac6040b1..18dbe7ff2514016cb92f5171a38e44d75383c15c 100644 (file)
@@ -60,6 +60,13 @@ namespace Mono.Tuner {
                        AddPreserveInfo (corlib, "HMACSHA512", "SHA512Managed");
 
                        TryAddPreserveInfo (corlib, "Aes", "AesManaged");
+
+                       var corlibAes = GetCryptoType (corlib, "Aes");
+                       Preserve (corlibAes, GetCryptoType (corlib, "AesManaged"));
+
+                       AssemblyDefinition syscore;
+                       if (context.TryGetLinkedAssembly ("System.Core", out syscore))
+                               Preserve (corlibAes, GetCryptoType (syscore, "AesCryptoServiceProvider"));
                }
 
                void ProcessSystemCore (LinkContext context)
@@ -101,6 +108,8 @@ namespace Mono.Tuner {
 
                void Preserve (TypeDefinition marker, TypeDefinition implementation)
                {
+                       if (marker == null || implementation == null)
+                               return;
                        foreach (var constructor in implementation.GetConstructors ())
                                annotations.AddPreservedMethod (marker, constructor);
                }
index 1d32ae1b0bae491313a0ca6a6365f0d8f1c473f0..383d2f53057a1026fa4623b8614934a2fe79bd24 100644 (file)
@@ -55,6 +55,10 @@ install-frameworks:
        $(INSTALL_DATA) frameworks/net_4.5.1.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.5.1/RedistList/FrameworkList.xml
        $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.5.2/RedistList
        $(INSTALL_DATA) frameworks/net_4.5.2.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.5.2/RedistList/FrameworkList.xml
+       $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.6/RedistList
+       $(INSTALL_DATA) frameworks/net_4.6.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.6/RedistList/FrameworkList.xml
+       $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.6.1/RedistList
+       $(INSTALL_DATA) frameworks/net_4.6.1.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.6.1/RedistList/FrameworkList.xml
 
 install-pcl-targets:
        $(MKINSTALLDIRS) $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.0
@@ -67,6 +71,10 @@ install-pcl-targets:
        $(INSTALL_DATA) targets/Microsoft.Portable.VisualBasic_4.5.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.5/Microsoft.Portable.VisualBasic.targets
        $(INSTALL_DATA) targets/Microsoft.Portable.Core.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/Microsoft.Portable.Core.targets
        $(INSTALL_DATA) targets/Microsoft.Portable.Core.props $(DESTDIR)$(PORTABLE_TARGETS_DIR)/Microsoft.Portable.Core.props
+       $(MKINSTALLDIRS) $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.6
+       $(INSTALL_DATA) targets/Microsoft.Portable.Common.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.6/Microsoft.Portable.Common.targets
+       $(INSTALL_DATA) targets/Microsoft.Portable.CSharp_4.5.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.6/Microsoft.Portable.CSharp.targets
+       $(INSTALL_DATA) targets/Microsoft.Portable.VisualBasic_4.5.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.6/Microsoft.Portable.VisualBasic.targets
 
 install-web-targets:
        $(MKINSTALLDIRS) $(DESTDIR)$(VS_TARGETS_DIR)/v9.0/WebApplications
@@ -106,6 +114,8 @@ EXTRA_DISTFILES = \
        frameworks/net_4.5.xml \
        frameworks/net_4.5.1.xml \
        frameworks/net_4.5.2.xml \
+       frameworks/net_4.6.xml \
+       frameworks/net_4.6.1.xml \
        targets/Microsoft.Portable.CSharp_4.0.targets \
        targets/Microsoft.Portable.CSharp_4.5.targets \
        targets/Microsoft.Portable.VisualBasic_4.0.targets \
index 3c27732bf4f26f682aeedbbe4394285df23edb76..518676de5e2b34f44b5d7d13835c15a71f1fdf73 100644 (file)
                Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == '.NETFramework'"
                DependsOnTargets="$(GetFrameworkPathsDependsOn)">
                <GetFrameworkPath>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5' and '$(TargetFrameworkVersion)' == 'v4.5.1'"
+                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5' or '$(TargetFrameworkVersion)' == 'v4.5.1' or '$(TargetFrameworkVersion)' == 'v4.5.2'"
                                TaskParameter="FrameworkVersion45Path"
                                ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
                        <Output Condition="'$(TargetFrameworkVersion)' == 'v4.0'"
                </CreateProperty>
 
                <Warning Text="TargetFrameworkVersion '$(TargetFrameworkVersion)' not supported by this toolset (ToolsVersion: $(MSBuildToolsVersion))."
-                       Condition="'$(TargetFrameworkVersion)' != 'v4.5.1' and '$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
+                       Condition="'$(TargetFrameworkVersion)' != 'v4.5.2' and '$(TargetFrameworkVersion)' != 'v4.5.1' and '$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
        </Target>
 
        <PropertyGroup>
                <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
                        .exe.mdb;
                        .dll.mdb;
+                       .pdb;
                        .xml
                </AllowedReferenceRelatedFileExtensions>
 
                <AssignProjectConfiguration
                        ProjectReferences = "@(ProjectReference)"
                        SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
-                       Condition="'$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true'">
+                       Condition="$(CurrentSolutionConfigurationContents) != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
 
                        <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
                </AssignProjectConfiguration>
 
                <!-- Else, just -->
-               <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true'">
+               <CreateItem Include="@(ProjectReference)" Condition="$(CurrentSolutionConfigurationContents) == '' or ('$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true')">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
                </CreateItem>
 
                        <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
                </Copy>
 
+               <Copy
+                       SourceFiles="$(IntermediateOutputPath)$(AssemblyName).pdb"
+                       Condition="'$(OutDir)' != '' and Exists('$(IntermediateOutputPath)$(AssemblyName).pdb')"
+                       DestinationFolder="$(OutDir)"
+                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" >
+                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+               </Copy>
+
                <Copy SourceFiles="@(IntermediateAssembly)" Condition="'$(OutDir)' != '' and Exists ('@(IntermediateAssembly)')" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
                        <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
                </Copy>
                        Condition="Exists('$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb')">
                        <Output TaskParameter="Include" ItemName="FileWrites"/>
                </CreateItem>
+
+               <CreateItem Include="$(IntermediateOutputPath)$(AssemblyName).pdb"
+                       Condition="Exists('$(IntermediateOutputPath)$(AssemblyName).pdb')">
+                       <Output TaskParameter="Include" ItemName="FileWrites"/>
+               </CreateItem>
        </Target>
 
        <!-- Get the list of files written, for clean -->
index 094a1383bb7b51ec99373e2640d5cfffe5b25bc0..81650fa20c51e46358c939541d18ba27277b8015 100644 (file)
                Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == '.NETFramework'"
                DependsOnTargets="$(GetFrameworkPathsDependsOn)">
                <GetFrameworkPath>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5' and '$(TargetFrameworkVersion)' == 'v4.5.1'"
+                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5' or '$(TargetFrameworkVersion)' == 'v4.5.1' or '$(TargetFrameworkVersion)' == 'v4.5.2' or '$(TargetFrameworkVersion)' == 'v4.6' or '$(TargetFrameworkVersion)' == 'v4.6.1'"
                                TaskParameter="FrameworkVersion45Path"
                                ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
                        <Output Condition="'$(TargetFrameworkVersion)' == 'v4.0'"
                </CreateProperty>
 
                <Warning Text="TargetFrameworkVersion '$(TargetFrameworkVersion)' not supported by this toolset (ToolsVersion: $(MSBuildToolsVersion))."
-                       Condition="'$(TargetFrameworkVersion)' != 'v4.5.1' and '$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
+                       Condition="'$(TargetFrameworkVersion)' != 'v4.6.1' and '$(TargetFrameworkVersion)' != 'v4.6' and '$(TargetFrameworkVersion)' != 'v4.5.2' and '$(TargetFrameworkVersion)' != 'v4.5.1' and '$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
        </Target>
 
        <PropertyGroup>
                <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
                        .exe.mdb;
                        .dll.mdb;
+                       .pdb;
                        .xml
                </AllowedReferenceRelatedFileExtensions>
 
                <AssignProjectConfiguration
                        ProjectReferences = "@(ProjectReference)"
                        SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
-                       Condition="'$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true'">
+                       Condition="$(CurrentSolutionConfigurationContents) != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
 
                        <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
                </AssignProjectConfiguration>
 
                <!-- Else, just -->
-               <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true'">
+               <CreateItem Include="@(ProjectReference)" Condition="$(CurrentSolutionConfigurationContents) == '' or ('$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true')">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
                </CreateItem>
 
                        <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
                </Copy>
 
+               <Copy
+                       SourceFiles="$(IntermediateOutputPath)$(AssemblyName).pdb"
+                       Condition="'$(OutDir)' != '' and Exists('$(IntermediateOutputPath)$(AssemblyName).pdb')"
+                       DestinationFolder="$(OutDir)"
+                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" >
+                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+               </Copy>
+
                <Copy SourceFiles="@(IntermediateAssembly)" Condition="'$(OutDir)' != '' and Exists ('@(IntermediateAssembly)')" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
                        <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
                </Copy>
                        Condition="Exists('$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb')">
                        <Output TaskParameter="Include" ItemName="FileWrites"/>
                </CreateItem>
+
+               <CreateItem Include="$(IntermediateOutputPath)$(AssemblyName).pdb"
+                       Condition="Exists('$(IntermediateOutputPath)$(AssemblyName).pdb')">
+                       <Output TaskParameter="Include" ItemName="FileWrites"/>
+               </CreateItem>
        </Target>
 
        <!-- Get the list of files written, for clean -->
index 079b8e092a2e4154871b7bfec7e714eb7dce598d..1298d3e42d4c4d9c2cf7c9f9b549b48172a7c22d 100644 (file)
                <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
                        .exe.mdb;
                        .dll.mdb;
+                       .pdb;
                        .xml
                </AllowedReferenceRelatedFileExtensions>
 
                <AssignProjectConfiguration
                        ProjectReferences = "@(ProjectReference)"
                        SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
-                       Condition="'$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true'">
+                       Condition="$(CurrentSolutionConfigurationContents) != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
 
                        <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
                </AssignProjectConfiguration>
 
                <!-- Else, just -->
-               <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true'">
+               <CreateItem Include="@(ProjectReference)" Condition="$(CurrentSolutionConfigurationContents) == '' or ('$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true')">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
                </CreateItem>
 
                        <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
                </Copy>
 
+               <Copy
+                       SourceFiles="$(IntermediateOutputPath)$(AssemblyName).pdb"
+                       Condition="'$(OutDir)' != '' and Exists('$(IntermediateOutputPath)$(AssemblyName).pdb')"
+                       DestinationFolder="$(OutDir)"
+                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" >
+                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+               </Copy>
+
                <Copy SourceFiles="@(IntermediateAssembly)" Condition="'$(OutDir)' != '' and Exists ('@(IntermediateAssembly)')" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
                        <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
                </Copy>
                        Condition="Exists('$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb')">
                        <Output TaskParameter="Include" ItemName="FileWrites"/>
                </CreateItem>
+
+               <CreateItem Include="$(IntermediateOutputPath)$(AssemblyName).pdb"
+                       Condition="Exists('$(IntermediateOutputPath)$(AssemblyName).pdb')">
+                       <Output TaskParameter="Include" ItemName="FileWrites"/>
+               </CreateItem>
        </Target>
 
        <!-- Get the list of files written, for clean -->
index c3f560a5f0e6191049df0eddd3bcdab4e1dcd6af..db0acba830ca68fe6a91efa0b68df0dd80005b9f 100644 (file)
                <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
                        .exe.mdb;
                        .dll.mdb;
+                       .pdb;
                        .xml
                </AllowedReferenceRelatedFileExtensions>
 
                <AssignProjectConfiguration
                        ProjectReferences = "@(ProjectReference)"
                        SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
-                       Condition="'$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true'">
+                       Condition="$(CurrentSolutionConfigurationContents) != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
 
                        <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
                </AssignProjectConfiguration>
 
                <!-- Else, just -->
-               <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true'">
+               <CreateItem Include="@(ProjectReference)" Condition="$(CurrentSolutionConfigurationContents) == '' or ('$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true')">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
                </CreateItem>
 
                        <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
                </Copy>
 
+               <Copy
+                       SourceFiles="$(IntermediateOutputPath)$(AssemblyName).pdb"
+                       Condition="'$(OutDir)' != '' and Exists('$(IntermediateOutputPath)$(AssemblyName).pdb')"
+                       DestinationFolder="$(OutDir)"
+                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" >
+                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+               </Copy>
+
                <Copy SourceFiles="@(IntermediateAssembly)" Condition="'$(OutDir)' != '' and Exists ('@(IntermediateAssembly)')" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
                        <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
                </Copy>
                        Condition="Exists('$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb')">
                        <Output TaskParameter="Include" ItemName="FileWrites"/>
                </CreateItem>
+
+               <CreateItem Include="$(IntermediateOutputPath)$(AssemblyName).pdb"
+                       Condition="Exists('$(IntermediateOutputPath)$(AssemblyName).pdb')">
+                       <Output TaskParameter="Include" ItemName="FileWrites"/>
+               </CreateItem>
        </Target>
 
        <!-- Get the list of files written, for clean -->
index 47b6b7f36e068e0631f374b4545c9853de7d9e93..133ff49a0410eca6d575ba5086684556892438a4 100644 (file)
                <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
                        .exe.mdb;
                        .dll.mdb;
+                       .pdb;
                        .xml
                </AllowedReferenceRelatedFileExtensions>
 
                <AssignProjectConfiguration
                        ProjectReferences = "@(ProjectReference)"
                        SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
-                       Condition="'$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true'">
+                       Condition="$(CurrentSolutionConfigurationContents) != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
 
                        <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
                </AssignProjectConfiguration>
 
                <!-- Else, just -->
-               <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true'">
+               <CreateItem Include="@(ProjectReference)" Condition="$(CurrentSolutionConfigurationContents) == '' or ('$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true')">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
                </CreateItem>
 
                        <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
                </Copy>
 
+               <Copy
+                       SourceFiles="$(IntermediateOutputPath)$(AssemblyName).pdb"
+                       Condition="'$(OutDir)' != '' and Exists('$(IntermediateOutputPath)$(AssemblyName).pdb')"
+                       DestinationFolder="$(OutDir)"
+                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" >
+                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+               </Copy>
+
                <Copy SourceFiles="@(IntermediateAssembly)" Condition="'$(OutDir)' != '' and Exists ('@(IntermediateAssembly)')" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
                        <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
                </Copy>
                        Condition="Exists('$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb')">
                        <Output TaskParameter="Include" ItemName="FileWrites"/>
                </CreateItem>
+
+               <CreateItem Include="$(IntermediateOutputPath)$(AssemblyName).pdb"
+                       Condition="Exists('$(IntermediateOutputPath)$(AssemblyName).pdb')">
+                       <Output TaskParameter="Include" ItemName="FileWrites"/>
+               </CreateItem>
        </Target>
 
        <!-- Get the list of files written, for clean -->
diff --git a/mcs/tools/xbuild/frameworks/net_4.6.1.xml b/mcs/tools/xbuild/frameworks/net_4.6.1.xml
new file mode 100644 (file)
index 0000000..9fa1fda
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FileList  Name=".NET Framework 4.6.1" TargetFrameworkDirectory="..\..\..\..\4.5">
+</FileList>
diff --git a/mcs/tools/xbuild/frameworks/net_4.6.xml b/mcs/tools/xbuild/frameworks/net_4.6.xml
new file mode 100644 (file)
index 0000000..a2ba03d
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FileList  Name=".NET Framework 4.6" TargetFrameworkDirectory="..\..\..\..\4.5">
+</FileList>
index 5ba36bbfaa8bafd5bb394a58b06437e2ea307cf4..3ee083f8010ffdf7bad83cc527f8d32e078e6b00 100644 (file)
@@ -485,19 +485,15 @@ typedef struct {
        arminstr_t cond   : 4;
 } ARMInstrMul;
 
-#define ARM_MUL_ID 0
-#define ARM_MUL_ID2 9
-#define ARM_MUL_MASK ((0xF << 24) | (0xF << 4))
-#define ARM_MUL_TAG ((ARM_MUL_ID << 24) | (ARM_MUL_ID2 << 4))
-
+#define ARM_MUL_ID 9
 #define ARM_DEF_MUL_COND(op, rd, rm, rs, rn, s, cond) \
        (rm)             | \
+       ARM_MUL_ID << 4  | \
        ((rs) << 8)      | \
        ((rn) << 12)     | \
        ((rd) << 16)     | \
-       ((s & 1) << 17)  | \
-       ((op & 7) << 18) | \
-       ARM_MUL_TAG      | \
+       ((s & 1) << 20)  | \
+       ((op & 7) << 21) | \
        ARM_DEF_COND(cond)
 
 /* Rd := (Rm * Rs)[31:0]; 32 x 32 -> 32 */
index 9e219a3b61f84fd86b40dd52f95fc3a15847360e..4c3cd243520ea41e3330a8f5bb811b8bd03ff736 100644 (file)
@@ -137,6 +137,42 @@ typedef enum {
        s390_fpc = 256,
 } S390SpecialRegister;
 
+typedef enum {
+       s390_VR0 = 0,
+       s390_VR1 = 1,
+       s390_VR2 = 2,
+       s390_VR3 = 3,
+       s390_VR4 = 4,
+       s390_VR5 = 5,
+       s390_VR6 = 6,
+       s390_VR7 = 7,
+       s390_VR8 = 8,
+       s390_VR9 = 9,
+       s390_VR10 = 10,
+       s390_VR11 = 11,
+       s390_VR12 = 12,
+       s390_VR13 = 13,
+       s390_VR14 = 14,
+       s390_VR15 = 15,
+       s390_VR16 = 16,
+       s390_VR17 = 17,
+       s390_VR18 = 18,
+       s390_VR19 = 19,
+       s390_VR20 = 20,
+       s390_VR21 = 21,
+       s390_VR22 = 22,
+       s390_VR23 = 23,
+       s390_VR24 = 24,
+       s390_VR25 = 25,
+       s390_VR26 = 26,
+       s390_VR27 = 27,
+       s390_VR28 = 28,
+       s390_VR29 = 29,
+       s390_VR30 = 30,
+       s390_VR31 = 31,
+       s390_VR_NREG = 32,
+} s390_VR_Reg_No;
+
 #define s390_is_imm16(val)             ((glong)val >= (glong) SHRT_MIN && \
                                         (glong)val <= (glong) SHRT_MAX)
 #define s390_is_imm32(val)             ((glong)val >= (glong) INT_MIN && \
@@ -205,12 +241,34 @@ typedef struct {
        int     im;
 } I_Format;
 
+typedef struct {
+       short   op;
+       char    xx;
+       char    ri1 : 4;
+       char    ri2 : 4;
+} IE_Format;
+
+typedef struct {
+       short   op;
+       short   m1 : 4;
+       short   ri2 : 12;
+       short   i3;     
+} MII_Format;
+
 typedef struct {
        char    op;
        char    r1 : 4;
        char    r2 : 4;
 } RR_Format;
 
+typedef struct {
+       short   op;
+       char    r1 : 4;
+       char    xx : 4;
+       char    r3 : 4;
+       char    r4 : 4;
+} __attribute__ ((packed)) RRD_Format;
+
 typedef struct {
        short   op;
        char    xx;
@@ -251,29 +309,30 @@ typedef struct {
 } RRF_Format_4;
 
 typedef struct {
-       char    op;
+       char    op1;
        char    r1 : 4;
-       char    x2 : 4;
-       char    b2 : 4;
-       short   d2 : 12;
-} RX_Format;
+       char    r2 : 4;
+       short   b4 : 4;
+       short   d4 : 12;
+       char    m3 : 4;
+       char    xx : 4;
+       char    op2;
+} RRS_Format;
 
 typedef struct {
-       char    op1;
+       char    op;
        char    r1 : 4;
        char    x2 : 4;
-       char    b2 : 4;
-       int     d2 : 12;
-       char    xx;
-       char    op2;
-} RXE_Format;
+       short   b2 : 4;
+       short   d2 : 12;
+} RX_Format;
 
 typedef struct {
        char    op1;
        char    r3 : 4;
        char    x2 : 4;
-       char    b2 : 4;
-       int     d2 : 12;
+       short   b2 : 4;
+       short   d2 : 12;
        char    r1 : 4;
        char    xx : 4;
        char    op2;
@@ -283,7 +342,7 @@ typedef struct {
        char    op1;
        char    r1 : 4;
        char    x2 : 4;
-       char    b2 : 4;
+       int     b2 : 4;
        int     d2 : 20;
        char    op2;
 } __attribute__ ((packed)) RXY_Format;
@@ -292,32 +351,34 @@ typedef struct {
        char    op;
        char    r1 : 4;
        char    r3 : 4;
-       char    b2 : 4;
-       int     d2 : 12;
+       short   b2 : 4;
+       short   d2 : 12;
 } RS_Format_1;
 
 typedef struct {
        char    op;
        char    r1 : 4;
        char    m3 : 4;
-       char    b2 : 4;
-       int     d2 : 12;
+       short   b2 : 4;
+       short   d2 : 12;
 } RS_Format_2;
 
 typedef struct {
        char    op;
        char    r1 : 4;
        char    xx : 4;
-       char    b2 : 4;
-       int     d2 : 12;
+       short   b2 : 4;
+       short   dl2 : 12;
+       char    dh2;
 } RS_Format_3;
 
 typedef struct {
        char    op1;
        char    r1 : 4;
        char    r3 : 4;
-       char    b2 : 4;
-       int     d2 : 20;
+       short   b2 : 4;
+       short   dl2 : 12;
+       char    dh2;
        char    op2;
 } __attribute__ ((packed)) RSY_Format_1;
 
@@ -325,8 +386,9 @@ typedef struct {
        char    op1;
        char    r1 : 4;
        char    m3 : 4;
-       char    b2 : 4;
-       int     d2 : 20;
+       short   b2 : 4;
+       short   dl2 : 12;
+       char    dh2;
        char    op2;
 } __attribute__ ((packed)) RSY_Format_2;
 
@@ -334,25 +396,25 @@ typedef struct {
        char    op1;
        char    l1 : 4;
        char    xx : 4;
-       char    b1 : 4;
-       int     d1 : 12;
+       short   b1 : 4;
+       short   d1 : 12;
        char    yy;
        char    op2;
-} RSL_Format;
+} __attribute__ ((packed)) RSL_Format;
 
 typedef struct {
        char    op;
        char    r1 : 4;
        char    r3 : 4;
        short   i2;
-} RSI_Format;
+} __attribute__ ((packed)) RSI_Format;
 
 typedef struct {
        char    op1;
        char    m1 : 4;
        char    op2 : 4;
        short   i2;
-} RI_Format;
+} __attribute__ ((packed)) RI_Format;
 
 typedef struct {
        char    op1;
@@ -361,7 +423,7 @@ typedef struct {
        short   i2;
        char    xx;
        char    op2;
-} RIE_Format_1;
+} __attribute__ ((packed)) RIE_Format_1;
 
 typedef struct {
        char    op1;
@@ -371,7 +433,7 @@ typedef struct {
        char    m2 : 4;
        char    xx : 4;
        char    op2;
-} RIE_Format_2;
+} __attribute__ ((packed)) RIE_Format_2;
 
 typedef struct {
        char    op1;
@@ -380,7 +442,7 @@ typedef struct {
        short   d;
        char    i;
        char    op2;
-} RIE_Format_3;
+} __attribute__ ((packed)) RIE_Format_3;
 
 typedef struct {
        char    op1;
@@ -390,7 +452,45 @@ typedef struct {
        char    m3 : 4;
        char    xx : 4;
        char    op2;
-} RIE_Format_4;
+} __attribute__ ((packed)) RIE_Format_4;
+
+typedef struct {
+       char    op1;
+       char    r1 : 4;
+       char    r3 : 4;
+       short   ri2;
+       char    xx;
+       char    op2;
+} __attribute__ ((packed)) RIE_Format_5;
+
+typedef struct {
+       char    op1;
+       char    r1 : 4;
+       char    r2 : 4;
+       char    i3;
+       char    i4;
+       char    i5;
+       char    op2;
+} __attribute__ ((packed)) RIE_Format_6;
+
+typedef struct {
+       char    op1;
+       char    r1 : 4;
+       char    m3 : 4;
+       short   i2;
+       char    xx;
+       char    op2;
+} __attribute__ ((packed)) RIE_Format_7;
+
+typedef struct {
+       char    op1;
+       char    r1 : 4;
+       char    m3 : 4;
+       int     b4 : 4;
+       int     d4 : 12;
+       char    i2;
+       char    op2;
+} __attribute__ ((packed)) RIS_Format;
 
 typedef struct {
        char    op1;
@@ -406,12 +506,30 @@ typedef struct {
        int     i2;
 } __attribute__ ((packed)) RIL_Format_2;
 
+typedef struct {
+       short   op1;
+       char    r1 : 4;
+       char    x2 : 4;
+       short   b2 : 4;
+       short   d1 : 12;
+       char    m3 : 4;
+       char    xx : 4;
+       char    op2;
+} __attribute__ ((packed)) RXE_Format;
+
 typedef struct {
        char    op;
        char    i2;
+       short   b1 : 4;
+       short   d1 : 12;
+} __attribute__ ((packed)) SI_Format;
+
+typedef struct {
+       short   op;
        char    b1 : 4;
        short   d1 : 12;
-} SI_Format;
+       short   i2;
+} __attribute__ ((packed)) SIL_Format;
 
 typedef struct {
        char    op1;
@@ -421,50 +539,59 @@ typedef struct {
        char    op2;
 } __attribute__ ((packed)) SIY_Format;
 
+typedef struct {
+       char    op1;
+       char    m1 : 4;
+       char    xx : 4;
+       short   b3 : 4;
+       short   d3 : 12;
+       short   ri2;
+} __attribute__ ((packed)) SMI_Format;
+
 typedef struct {
        short   op;
-       char    b2 : 4;
+       short   b2 : 4;
        short   d2 : 12;
-} S_Format;
+} __attribute__ ((packed)) S_Format;
 
 typedef struct {
        char    op;
        char    ll;
-       char    b1 : 4;
+       short   b1 : 4;
        short   d1 : 12;
-       char    b2 : 4;
+       short   b2 : 4;
        short   d2 : 12;
-} SS_Format_1;
+} __attribute__ ((packed)) SS_Format_1;
 
 typedef struct {
        char    op;
        char    l1 : 4;
        char    l2 : 4;
-       char    b1 : 4; 
+       short   b1 : 4; 
        short   d1 : 12;
-       char    b2 : 4;
+       short   b2 : 4;
        short   d2 : 12;
-} SS_Format_2;
+} __attribute__ ((packed)) SS_Format_2;
 
 typedef struct {
        char    op;
        char    r1 : 4;
        char    r3 : 4;
-       char    b1 : 4; 
+       short   b1 : 4; 
        short   d1 : 12;
-       char    b2 : 4;
+       short   b2 : 4;
        short   d2 : 12;
-} SS_Format_3; 
+} __attribute__ ((packed)) SS_Format_3;        
 
 typedef struct {
        char    op;
        char    r1 : 4;
        char    r3 : 4;
-       char    b2 : 4; 
+       short   b2 : 4; 
        short   d2 : 12;
-       char    b4 : 4;
+       short   b4 : 4;
        short   d4 : 12;
-} SS_Format_4; 
+} __attribute__ ((packed)) SS_Format_4;        
 
 typedef struct {
        short   op;
@@ -484,6 +611,189 @@ typedef struct {
        short   d2 : 12;
 } __attribute__ ((packed)) SSF_Format;
 
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    xx : 4;
+       short   i2;
+       char    m3 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRIa_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    xx : 4;
+       char    i2;
+       char    i3;
+       char    m4 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRIb_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    v3 : 4;
+       short   i2;
+       char    m4 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRIc_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    v2 : 4;
+       char    v3 : 4;
+       char    xx : 4;
+       char    i4;
+       char    m5 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRId_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    v2 : 4;
+       short   i3 : 12;
+       char    m5 : 4;
+       char    m4 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRIe_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    v2 : 4;
+       char    xx;
+       char    m5 : 4;
+       char    m4 : 4;
+       char    m3 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRRa_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    v2 : 4;
+       char    v3 : 4;
+       char    xx : 4;
+       char    m5 : 4;
+       char    yy : 4;
+       char    m4 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRRb_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    v2 : 4;
+       char    v3 : 4;
+       char    xx : 4;
+       char    m5 : 4;
+       char    m4 : 4;
+       char    m3 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRRc_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    v2 : 4;
+       char    v3 : 4;
+       char    m5 : 4;
+       char    m6 : 4;
+       char    xx : 4;
+       char    v4 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRRd_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    v2 : 4;
+       char    v3 : 4;
+       char    m6 : 4;
+       char    xx : 4;
+       char    m5 : 4;
+       char    v4 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRRe_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    r2 : 4;
+       char    r3 : 4;
+       short   xx;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRRf_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    v3 : 4;
+       char    b2 : 4;
+       short   d2 : 12;
+       char    m4 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRSa_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    r3 : 4;
+       char    b2 : 4;
+       short   d2 : 12;
+       char    m4 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRSb_Format;
+
+typedef struct {
+       short   op1;
+       char    r1 : 4;
+       char    v3 : 4;
+       char    b2 : 4;
+       short   d2 : 12;
+       char    m4 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRSc_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    v2 : 4;
+       char    b2 : 4;
+       short   d2 : 12;
+       char    m3 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRV_Format;
+
+typedef struct {
+       short   op1;
+       char    v1 : 4;
+       char    x2 : 4;
+       char    b2 : 4;
+       short   d2 : 12;
+       char    m3 : 4;
+       char    rxb : 4;
+       char    op2;
+} __attribute__ ((packed)) VRX_Format;
+
 #define s390_emit16(c, x) do                   \
 {                                              \
        *((guint16 *) c) = (guint16) x;         \
@@ -677,6 +987,140 @@ typedef struct {
        s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));                  \
 } while (0)
 
+#define S390_VRIa(c,opc,v1,i2,m3) do                           \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7);                                  \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4));          \
+       s390_emit16(c, (i2));                                           \
+       s390_emit16(c, (((m3) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRIb(c,opc,v1,i2,i3,m4) do                                \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7);                                  \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4));          \
+       s390_emit16(c, (((i2) << 8) | (i3)));                           \
+       s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRIc(c,opc,v1,v3,i2,m4) do                                \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6) |            \
+                  (((v3) > 15) << 5);                                  \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
+       s390_emit16(c, (v4));                                           \
+       s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRId(c,opc,v1,v2,v3,i4,m5) do                             \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6) |            \
+                  (((v3) > 15) << 5);                                  \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
+       s390_emit16(c, ((v3) << 12) | (i2));                            \
+       s390_emit16(c, (((m5) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRIe(c,opc,v1,v2,i3,m4,m5) do                             \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6);             \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
+       s390_emit16(c, ((i2) << 8) | (m5));                             \
+       s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRRa(c,opc,v1,v2,m3,m4,m5) do                             \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6);             \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
+       s390_emit16(c, ((m5) << 4) | (m4));                             \
+       s390_emit16(c, (((m3) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRRb(c,opc,v1,v2,v3,m4,m5) do                             \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6) |            \
+                  (((v3) > 15) << 5);                                  \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
+       s390_emit16(c, ((v3) << 12) | ((m5) << 4) | (m4));              \
+       s390_emit16(c, (((m3) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRRc(c,opc,v1,v2,m3,m4,m5) do                             \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6) |            \
+                  (((v3) > 15) << 5);                                  \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
+       s390_emit16(c, (((v3) << 12)| (m5) << 4));                      \
+       s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRRd(c,opc,v1,v2,v3,v4,m5,m6) do                          \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6) |            \
+                  (((v3) > 15) << 5) | (((v4) > 15) << 4);             \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
+       s390_emit16(c, (((v3) << 12)| ((m6) << 8)) | ((m5) << 4));      \
+       s390_emit16(c, (((v4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRRe(c,opc,v1,v2,v3,m4,m5,m6) do                          \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6) |            \
+                  (((v3) > 15) << 5);                                  \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
+       s390_emit16(c, (((v3) << 12)| ((m6) << 8)) | (m5));             \
+       s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRRf(c,opc,v1,r2) do                                      \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6);             \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
+       s390_emit16(c, ((r2) << 12)| ((r3) << r8) | (m5));              \
+       s390_emit16(c, (((rxb) << 8) | ((opc) & 0xff)));                \
+} while (0)
+
+#define S390_VRSa(c,opc,v1,v3,b2,d2,m4) do                             \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6);             \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v3))); \
+       s390_emit16(c, ((b2) << 12)| (d2));                             \
+       s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRSb(c,opc,v1,r3,b2,d2,m4) do                             \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7);                                  \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((r3))); \
+       s390_emit16(c, ((b2) << 12)| (d2));                             \
+       s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRSc(c,opc,r1,v3,b2,d2,m4) do                             \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7);                                  \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((r1) << 4) | ((v3))); \
+       s390_emit16(c, ((b2) << 12)| (d2));                             \
+       s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRV(c,opc,v1,v2,b2,d2,m3) do                              \
+{                                                                      \
+       char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6);             \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
+       s390_emit16(c, ((b2) << 12)| (d2));                             \
+       s390_emit16(c, (((m3) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
+#define S390_VRX(c,opc,v1,x2,b2,d2,m3) do                              \
+{                                                                      \
+       char rxb = ((v1) > 15) << 7;                                    \
+       s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((x2))); \
+       s390_emit16(c, ((b2) << 12)| (d2));                             \
+       s390_emit16(c, (((m3) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
+} while (0)
+
 #define s390_a(c, r, x, b, d)          S390_RX(c, 0x5a, r, x, b, d)
 #define s390_adb(c, r, x, b, d)                S390_RXE(c, 0xed1a, r, x, b, d)
 #define s390_adbr(c, r1, r2)           S390_RRE(c, 0xb31a, r1, r2)
index 5f747c7a9b2458d76a8b1a276ebdd5413ec49f8f..a86b2be374115316ab024a42aec3dcc8d91de75a 100644 (file)
 <opcode name="mono_ldptr_int_req_flag" input="Pop0" output="PushI" args="InlineNone" o1="0xF0" o2="0x14" flow="next" />
 <opcode name="mono_ldptr_card_table" input="Pop0" output="PushI" args="InlineNone" o1="0xF0" o2="0x15" flow="next" />
 <opcode name="mono_ldptr_nursery_start" input="Pop0" output="PushI" args="InlineNone" o1="0xF0" o2="0x16" flow="next" />
+<opcode name="mono_ldptr_nursery_bits" input="Pop0" output="PushI" args="InlineNone" o1="0xF0" o2="0x17" flow="next" />
+<opcode name="mono_calli_extra_arg" input="VarPop" output="VarPush" args="InlineSig" o1="0xF0" o2="0x18" flow="call" />
 </opdesc>
index 037b5ef83feed1b970a367676abc3df93d6def2e..ad89c95e46c2245750c5c2d275fcce1c671f12ab 100644 (file)
@@ -315,6 +315,8 @@ OPDEF(CEE_MONO_JIT_ICALL_ADDR, "mono_jit_icall_addr", Pop0, PushI, InlineI, X, 2
 OPDEF(CEE_MONO_LDPTR_INT_REQ_FLAG, "mono_ldptr_int_req_flag", Pop0, PushI, InlineNone, X, 2, 0xF0, 0x14, NEXT)
 OPDEF(CEE_MONO_LDPTR_CARD_TABLE, "mono_ldptr_card_table", Pop0, PushI, InlineNone, X, 2, 0xF0, 0x15, NEXT)
 OPDEF(CEE_MONO_LDPTR_NURSERY_START, "mono_ldptr_nursery_start", Pop0, PushI, InlineNone, X, 2, 0xF0, 0x16, NEXT)
+OPDEF(CEE_MONO_LDPTR_NURSERY_BITS, "mono_ldptr_nursery_bits", Pop0, PushI, InlineNone, X, 2, 0xF0, 0x17, NEXT)
+OPDEF(CEE_MONO_CALLI_EXTRA_ARG, "mono_calli_extra_arg", VarPop, VarPush, InlineSig, X, 2, 0xF0, 0x18, CALL)
 #ifndef OPALIAS
 #define _MONO_CIL_OPALIAS_DEFINED_
 #define OPALIAS(a,s,r)
index 79f68fb8b24db80ffa61417741c6cabc999e1efb..bc40414ba48f77883ff9131dc48957191e247403 100755 (executable)
@@ -56,7 +56,7 @@ disassemble_cil (MonoImage *m, MonoMethodHeader *mh, MonoGenericContainer *conta
 #endif
 
        if (mh->num_clauses) {
-              trys = g_malloc0 (sizeof (gboolean) * mh->num_clauses);
+              trys = (gboolean *)g_malloc0 (sizeof (gboolean) * mh->num_clauses);
               trys [0] = 1;
               for (i=1; i < mh->num_clauses; ++i) {
 #define jcl mh->clauses [j]    
index db55cef8ef1675381648ccd0f651d3ae726d89c4..d54e382434c290a15b940fc81cb63f38f30c16c8 100755 (executable)
@@ -661,14 +661,14 @@ dump_table_methodimpl (MonoImage *m)
 
        for (i = 1; i <= t->rows; i++){
                guint32 cols [MONO_METHODIMPL_SIZE];
-               char *class, *impl, *decl;
+               char *klass, *impl, *decl;
 
                mono_metadata_decode_row (t, i - 1, cols, MONO_METHODIMPL_SIZE);
-               class = get_typedef (m, cols [MONO_METHODIMPL_CLASS]);
+               klass = get_typedef (m, cols [MONO_METHODIMPL_CLASS]);
                impl = get_method (m, method_dor_to_token (cols [MONO_METHODIMPL_BODY]), NULL);
                decl = get_method (m, method_dor_to_token (cols [MONO_METHODIMPL_DECLARATION]), NULL);
-               fprintf (output, "%d: %s\n\tdecl: %s\n\timpl: %s\n", i, class, decl, impl);
-               g_free (class);
+               fprintf (output, "%d: %s\n\tdecl: %s\n\timpl: %s\n", i, klass, decl, impl);
+               g_free (klass);
                g_free (impl);
                g_free (decl);
        }
index a78324d012f8f136f75fb2a059b6d53b0dc2b4b0..de99c35081dcc99cba3815b5d8562b57ec664c28 100755 (executable)
@@ -1322,13 +1322,13 @@ get_type (MonoImage *m, const char *ptr, char **result, gboolean is_def, MonoGen
        }
 
        default:
-               t = mono_metadata_parse_type_full (m, container, MONO_PARSE_TYPE, 0, start, &ptr);
+               t = mono_metadata_parse_type_full (m, container, 0, start, &ptr);
                if (t) {
                        *result = dis_stringify_type (m, t, is_def);
                } else {
                        GString *err = g_string_new ("@!#$<InvalidType>$#!@");
                        if (container)
-                               t = mono_metadata_parse_type_full (m, NULL, MONO_PARSE_TYPE, 0, start, &ptr);
+                               t = mono_metadata_parse_type_full (m, NULL, 0, start, &ptr);
                        if (t) {
                                char *name = dis_stringify_type (m, t, is_def);
                                g_warning ("Encountered a generic type inappropriate for its context");
@@ -2222,7 +2222,7 @@ get_encoded_user_string_or_bytearray (const unsigned char *ptr, int len)
        char *res, *eres, *result;
        int i;
 
-       res = g_malloc ((len >> 1) + 1);
+       res = (char *)g_malloc ((len >> 1) + 1);
 
        /*
         * I should really use some kind of libunicode here
@@ -3137,7 +3137,7 @@ check_ambiguous_genparams (MonoGenericContainer *container)
        for (i = 0; i < container->type_argc; i++) {
                MonoGenericParam *param = mono_generic_container_get_param (container, i);
 
-               if ((p = g_hash_table_lookup (table, mono_generic_param_info (param)->name)))
+               if ((p = (gpointer *)g_hash_table_lookup (table, mono_generic_param_info (param)->name)))
                        dup_list = g_slist_prepend (g_slist_prepend (dup_list, GUINT_TO_POINTER (i + 1)), p);
                else
                        g_hash_table_insert (table, (char*)mono_generic_param_info (param)->name, GUINT_TO_POINTER (i + 1));
index 20b8b7c9797e99e384a30f4de95aacf7fa4e106f..6a96e4329e1c85db0164f0e0263b2c15791aeb06 100644 (file)
@@ -301,7 +301,7 @@ dis_directive_moduleref (MonoImage *m)
 static void
 dis_nt_header (MonoImage *m)
 {
-       MonoCLIImageInfo *image_info = m->image_info;
+       MonoCLIImageInfo *image_info = (MonoCLIImageInfo *)m->image_info;
        if (image_info && image_info->cli_header.nt.pe_stack_reserve != 0x100000)
                fprintf (output, ".stackreserve 0x%x\n", image_info->cli_header.nt.pe_stack_reserve);
 }
@@ -493,7 +493,7 @@ dis_field_list (MonoImage *m, guint32 start, guint32 end, MonoGenericContainer *
                        
                        if ((crow = mono_metadata_get_constant_index (m, MONO_TOKEN_FIELD_DEF | (i+1), 0))) {
                                mono_metadata_decode_row (&m->tables [MONO_TABLE_CONSTANT], crow-1, const_cols, MONO_CONSTANT_SIZE);
-                               lit = get_constant (m, const_cols [MONO_CONSTANT_TYPE], const_cols [MONO_CONSTANT_VALUE]);
+                               lit = get_constant (m, (MonoTypeEnum)const_cols [MONO_CONSTANT_TYPE], const_cols [MONO_CONSTANT_VALUE]);
                        } else {
                                lit = g_strdup ("not found");
                        }
@@ -800,7 +800,7 @@ dump_cattrs_for_method_params (MonoImage *m, guint32 midx, MonoMethodSignature *
                        if ((crow = mono_metadata_get_constant_index(m, MONO_TOKEN_PARAM_DEF | i, 0))) {
                                guint32 const_cols [MONO_CONSTANT_SIZE];
                                mono_metadata_decode_row( &m->tables[MONO_TABLE_CONSTANT], crow-1, const_cols, MONO_CONSTANT_SIZE);
-                               lit = get_constant(m, const_cols [MONO_CONSTANT_TYPE], const_cols [MONO_CONSTANT_VALUE]);
+                               lit = get_constant (m, (MonoTypeEnum)const_cols [MONO_CONSTANT_TYPE], const_cols [MONO_CONSTANT_VALUE]);
                        }
                        else {
                                lit = g_strdup ("not found");
@@ -980,7 +980,7 @@ dis_property_signature (MonoImage *m, guint32 prop_idx, MonoGenericContainer *co
                g_string_append (res, "instance ");
        ptr++;
        pcount = mono_metadata_decode_value (ptr, &ptr);
-       type = mono_metadata_parse_type_full (m, container, MONO_PARSE_TYPE, 0, ptr, &ptr);
+       type = mono_metadata_parse_type_full (m, container, 0, ptr, &ptr);
        blurb = dis_stringify_type (m, type, TRUE);
        if (prop_flags & 0x0200)
                g_string_append (res, "specialname ");
@@ -993,7 +993,7 @@ dis_property_signature (MonoImage *m, guint32 prop_idx, MonoGenericContainer *co
        for (i = 0; i < pcount; i++) {
                if (i)
                        g_string_append (res, ", ");
-               param = mono_metadata_parse_type_full (m, container, MONO_PARSE_PARAM, 0, ptr, &ptr);
+               param = mono_metadata_parse_type_full (m, container, 0, ptr, &ptr);
                blurb = dis_stringify_param (m, param);
                g_string_append (res, blurb);
                g_free (blurb);
@@ -1664,7 +1664,7 @@ setup_filter (MonoImage *image)
        const char *name = mono_image_get_name (image);
 
        for (item = filter_list; item; item = item->next) {
-               ifilter = item->data;
+               ifilter = (ImageFilter *)item->data;
                if (strcmp (ifilter->name, name) == 0) {
                        cur_filter = ifilter;
                        return;
@@ -1676,8 +1676,8 @@ setup_filter (MonoImage *image)
 static int
 int_cmp (const void *e1, const void *e2)
 {
-       const int *i1 = e1;
-       const int *i2 = e2;
+       const int *i1 = (const int *)e1;
+       const int *i2 = (const int *)e2;
        return *i1 - *i2;
 }
 
@@ -1720,7 +1720,7 @@ add_filter (const char *name)
        GList *item;
 
        for (item = filter_list; item; item = item->next) {
-               ifilter = item->data;
+               ifilter = (ImageFilter *)item->data;
                if (strcmp (ifilter->name, name) == 0)
                        return ifilter;
        }
@@ -1736,10 +1736,10 @@ add_item (TableFilter *tf, int val)
        if (tf->count >= tf->size) {
                if (!tf->size) {
                        tf->size = 8;
-                       tf->elems = g_malloc (sizeof (int) * tf->size);
+                       tf->elems = (int *)g_malloc (sizeof (int) * tf->size);
                } else {
                        tf->size *= 2;
-                       tf->elems = g_realloc (tf->elems, sizeof (int) * tf->size);
+                       tf->elems = (int *)g_realloc (tf->elems, sizeof (int) * tf->size);
                }
        }
        tf->elems [tf->count++] = val;
@@ -1752,7 +1752,7 @@ sort_filter_elems (void)
        GList *item;
 
        for (item = filter_list; item; item = item->next) {
-               ifilter = item->data;
+               ifilter = (ImageFilter *)item->data;
                qsort (ifilter->types.elems, ifilter->types.count, sizeof (int), int_cmp);
                qsort (ifilter->fields.elems, ifilter->fields.count, sizeof (int), int_cmp);
                qsort (ifilter->methods.elems, ifilter->methods.count, sizeof (int), int_cmp);
@@ -1913,7 +1913,7 @@ monodis_assembly_search_hook (MonoAssemblyName *aname, gpointer user_data)
         GList *tmp;
 
        for (tmp = loaded_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                if (mono_assembly_names_equal (aname, &ass->aname))
                       return ass;
        }
@@ -2000,7 +2000,7 @@ main (int argc, char *argv [])
         * If we just have one file, use the corlib version it requires.
         */
        if (!input_files->next) {
-               char *filename = input_files->data;
+               char *filename = (char *)input_files->data;
 
                mono_init_from_assembly (argv [0], filename);
 
@@ -2011,7 +2011,7 @@ main (int argc, char *argv [])
                mono_init (argv [0]);
 
                for (l = input_files; l; l = l->next)
-                       disassemble_file (l->data);
+                       disassemble_file ((const char *)l->data);
        }
 
        return 0;
index 47e31071494b9df89ae82ae2fea109eaa4ab91ee..b963eb6a053a15d5d108e3b3af96fe011c93fa32 100644 (file)
@@ -12,7 +12,6 @@ libwapiincludedir = $(includedir)/mono-$(API_VER)/mono/io-layer
 
 OTHER_H = \
        access.h        \
-       collection.h    \
        context.h       \
        error.h         \
        events.h        \
@@ -39,8 +38,6 @@ OTHER_H = \
 
 OTHER_SRC = \
        access.h                \
-       collection.c            \
-       collection.h            \
        context.c               \
        context.h               \
        error.c                 \
@@ -61,8 +58,6 @@ OTHER_SRC = \
        macros.h                \
        messages.c              \
        messages.h              \
-       misc.c                  \
-       misc-private.h          \
        mutexes.c               \
        mutexes.h               \
        mutex-private.h         \
diff --git a/mono/io-layer/collection.c b/mono/io-layer/collection.c
deleted file mode 100644 (file)
index e731590..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * collection.c:  Garbage collection for handles
- *
- * Author:
- *     Dick Porter (dick@ximian.com)
- *
- * (C) 2004-2006 Novell, Inc.
- */
-
-#include <config.h>
-#include <glib.h>
-#include <pthread.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <mono/io-layer/wapi.h>
-#include <mono/io-layer/collection.h>
-#include <mono/io-layer/handles-private.h>
-#include <mono/utils/atomic.h>
-
-#if 0
-// #define DEBUG(...) g_message(__VA_ARGS__)
-#else
-#define DEBUG(...)
-#endif
-
-static pthread_t collection_thread_id;
-
-static gpointer collection_thread (gpointer unused G_GNUC_UNUSED)
-{
-       struct timespec sleepytime;
-
-       sleepytime.tv_sec = _WAPI_HANDLE_COLLECTION_UPDATE_INTERVAL;
-       sleepytime.tv_nsec = 0;
-
-       while (_wapi_has_shut_down == FALSE) {
-               nanosleep (&sleepytime, NULL);
-
-               //_wapi_handle_dump ();
-               _wapi_handle_update_refs ();
-       }
-
-       pthread_exit (NULL);
-
-       return(NULL);
-}
-
-void _wapi_collection_init (void)
-{
-       pthread_attr_t attr;
-       int ret;
-        int set_stacksize = 0;
-
- retry:
-        ret = pthread_attr_init (&attr);
-        g_assert (ret == 0);
-
-#if defined(HAVE_PTHREAD_ATTR_SETSTACKSIZE)
-        if (set_stacksize == 0) {
-                       ret = pthread_attr_setstacksize (&attr, MAX (65536, PTHREAD_STACK_MIN));
-                       g_assert (ret == 0);
-        } else if (set_stacksize == 1) {
-                       ret = pthread_attr_setstacksize (&attr, 131072);
-                       g_assert (ret == 0);
-        }
-#endif
-
-        ret = pthread_create (&collection_thread_id, &attr, collection_thread,
-                              NULL);
-        if (ret != 0 && set_stacksize < 2) {
-                set_stacksize++;
-                goto retry;
-        }
-       if (ret != 0) {
-               g_error ("%s: Couldn't create handle collection thread: %s",
-                        __func__, g_strerror (ret));
-       }
-}
-
-void _wapi_handle_collect (void)
-{
-       guint32 count = _wapi_shared_layout->collection_count;
-       int i, thr_ret;
-
-       if (!_wapi_shm_enabled ())
-               return;
-       
-       DEBUG ("%s: (%d) Starting a collection", __func__, _wapi_getpid ());
-
-       /* Become the collection master */
-       thr_ret = _wapi_handle_lock_shared_handles ();
-       g_assert (thr_ret == 0);
-       
-       thr_ret = _wapi_shm_sem_lock (_WAPI_SHARED_SEM_FILESHARE);
-       g_assert (thr_ret == 0);
-       
-       DEBUG ("%s: (%d) Master set", __func__, _wapi_getpid ());
-       
-       /* If count has changed, someone else jumped in as master */
-       if (count == _wapi_shared_layout->collection_count) {
-               guint32 too_old = (guint32)(time(NULL) & 0xFFFFFFFF) - _WAPI_HANDLE_COLLECTION_EXPIRED_INTERVAL;
-
-               for (i = 0; i < _WAPI_HANDLE_INITIAL_COUNT; i++) {
-                       struct _WapiHandleShared *data;
-                       
-                       data = &_wapi_shared_layout->handles[i];
-                       if (data->timestamp < too_old) {
-                               DEBUG ("%s: (%d) Deleting handle 0x%x", __func__, _wapi_getpid (), i);
-                               memset (&_wapi_shared_layout->handles[i], '\0', sizeof(struct _WapiHandleShared));
-                       }
-               }
-
-               for (i = 0; i < _wapi_fileshare_layout->hwm; i++) {
-                       struct _WapiFileShare *file_share = &_wapi_fileshare_layout->share_info[i];
-                       
-                       if (file_share->timestamp < too_old) {
-                               memset (file_share, '\0',
-                                       sizeof(struct _WapiFileShare));
-                       }
-               }
-
-               InterlockedIncrement ((gint32 *)&_wapi_shared_layout->collection_count);
-       }
-       
-       thr_ret = _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_FILESHARE);
-       g_assert (thr_ret == 0);
-        
-       _wapi_handle_unlock_shared_handles ();
-
-       DEBUG ("%s: (%d) Collection done", __func__, _wapi_getpid ());
-}
diff --git a/mono/io-layer/collection.h b/mono/io-layer/collection.h
deleted file mode 100644 (file)
index 95831d3..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * collection.h:  Garbage collection for handles
- *
- * Author:
- *     Dick Porter (dick@ximian.com)
- *
- * (C) 2004 Novell, Inc.
- */
-
-#ifndef _WAPI_COLLECTION_H_
-#define _WAPI_COLLECTION_H_
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-#define _WAPI_HANDLE_COLLECTION_UPDATE_INTERVAL                10
-#define _WAPI_HANDLE_COLLECTION_EXPIRED_INTERVAL       60
-
-#include <mono/io-layer/shared.h>
-
-extern void _wapi_collection_init (void);
-extern void _wapi_handle_collect (void);
-
-G_END_DECLS
-
-#endif /* _WAPI_COLLECTION_H_ */
index e45fff4bcdda3efa2f323e8b5f72240d22b18683..6d40dd3b5cc2a7d37bb0f7ef91a40412fd701f1c 100644 (file)
@@ -14,6 +14,7 @@
 #include <errno.h>
 
 #include "mono/io-layer/wapi.h"
+#include "mono/utils/mono-once.h"
 
 static pthread_key_t error_key;
 static mono_once_t error_key_once=MONO_ONCE_INIT;
index 5b3ec44b193410d51fe8ebd500e2035ba0c1b56a..25df9111656ffc62227021b5aa8f01884a41935c 100644 (file)
@@ -14,8 +14,6 @@
 #include <glib.h>
 #include <pthread.h>
 
-#include <mono/utils/mono-mutex.h>
-
 extern struct _WapiHandleOps _wapi_event_ops;
 extern struct _WapiHandleOps _wapi_namedevent_ops;
 
index ac8068d41a472696b34584307a22d514cfe4f6b8..3ad606bcebc95ebdf277e88344cc714b93237138 100644 (file)
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/handles-private.h>
-#include <mono/io-layer/misc-private.h>
-
 #include <mono/io-layer/event-private.h>
+#include <mono/utils/mono-once.h>
 
-#include <mono/utils/mono-mutex.h>
 #if 0
 #define DEBUG(...) g_message(__VA_ARGS__)
 #else
@@ -90,11 +88,9 @@ static mono_once_t event_ops_once=MONO_ONCE_INIT;
 static void event_ops_init (void)
 {
        _wapi_handle_register_capabilities (WAPI_HANDLE_EVENT,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SIGNAL);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SIGNAL));
        _wapi_handle_register_capabilities (WAPI_HANDLE_NAMEDEVENT,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SIGNAL);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SIGNAL));
 }
 
 static void event_signal(gpointer handle)
index c5d4fbeb70e94f400e7824cc1db1373a6f465094..4f20de02d411248bec7f67f5b4dc256d084696f1 100644 (file)
@@ -17,8 +17,6 @@
 #include <sys/types.h>
 
 #include <mono/io-layer/wapi-private.h>
-#include <mono/io-layer/misc-private.h>
-#include <mono/io-layer/collection.h>
 #include <mono/io-layer/shared.h>
 #include <mono/utils/atomic.h>
 
@@ -32,7 +30,6 @@
 
 extern struct _WapiHandleUnshared *_wapi_private_handles [];
 extern struct _WapiHandleSharedLayout *_wapi_shared_layout;
-extern struct _WapiFileShareLayout *_wapi_fileshare_layout;
 
 extern guint32 _wapi_fd_reserve;
 extern mono_mutex_t *_wapi_global_signal_mutex;
@@ -79,8 +76,8 @@ extern gboolean _wapi_handle_count_signalled_handles (guint32 numhandles,
                                                      guint32 *lowest);
 extern void _wapi_handle_unlock_handles (guint32 numhandles,
                                         gpointer *handles);
-extern int _wapi_handle_timedwait_signal (struct timespec *timeout, gboolean poll, gboolean *alerted);
-extern int _wapi_handle_timedwait_signal_handle (gpointer handle, struct timespec *timeout, gboolean alertable, gboolean poll, gboolean *alerted);
+extern int _wapi_handle_timedwait_signal (guint32 timeout, gboolean poll, gboolean *alerted);
+extern int _wapi_handle_timedwait_signal_handle (gpointer handle, guint32 timeout, gboolean alertable, gboolean poll, gboolean *alerted);
 extern gboolean _wapi_handle_get_or_set_share (guint64 device, guint64 inode,
                                               guint32 new_sharemode,
                                               guint32 new_access,
@@ -90,7 +87,6 @@ extern gboolean _wapi_handle_get_or_set_share (guint64 device, guint64 inode,
 extern void _wapi_handle_check_share (struct _WapiFileShare *share_info,
                                      int fd);
 extern void _wapi_handle_dump (void);
-extern void _wapi_handle_update_refs (void);
 extern void _wapi_handle_foreach (WapiHandleType type,
                                        gboolean (*on_each)(gpointer test, gpointer user),
                                        gpointer user_data);
@@ -141,9 +137,9 @@ static inline void _wapi_handle_set_signal_state (gpointer handle,
                /* The condition the global signal cond is waiting on is the signalling of
                 * _any_ handle. So lock it before setting the signalled state.
                 */
-               thr_ret = mono_mutex_lock (_wapi_global_signal_mutex);
+               thr_ret = mono_os_mutex_lock (_wapi_global_signal_mutex);
                if (thr_ret != 0)
-                       g_warning ("Bad call to mono_mutex_lock result %d for global signal mutex", thr_ret);
+                       g_warning ("Bad call to mono_os_mutex_lock result %d for global signal mutex", thr_ret);
                g_assert (thr_ret == 0);
 
                /* This function _must_ be called with
@@ -171,9 +167,9 @@ static inline void _wapi_handle_set_signal_state (gpointer handle,
                        g_warning ("Bad call to pthread_cond_broadcast result %d for handle %p", thr_ret, handle);
                g_assert (thr_ret == 0);
                        
-               thr_ret = mono_mutex_unlock (_wapi_global_signal_mutex);
+               thr_ret = mono_os_mutex_unlock (_wapi_global_signal_mutex);
                if (thr_ret != 0)
-                       g_warning ("Bad call to mono_mutex_unlock result %d for global signal mutex", thr_ret);
+                       g_warning ("Bad call to mono_os_mutex_unlock result %d for global signal mutex", thr_ret);
                g_assert (thr_ret == 0);
        } else {
                handle_data->signalled=state;
@@ -227,7 +223,7 @@ static inline int _wapi_handle_lock_signal_mutex (void)
        g_message ("%s: lock global signal mutex", __func__);
 #endif
 
-       return(mono_mutex_lock (_wapi_global_signal_mutex));
+       return(mono_os_mutex_lock (_wapi_global_signal_mutex));
 }
 
 /* the parameter makes it easier to call from a pthread cleanup handler */
@@ -237,7 +233,7 @@ static inline int _wapi_handle_unlock_signal_mutex (void *unused)
        g_message ("%s: unlock global signal mutex", __func__);
 #endif
 
-       return(mono_mutex_unlock (_wapi_global_signal_mutex));
+       return(mono_os_mutex_unlock (_wapi_global_signal_mutex));
 }
 
 static inline int _wapi_handle_lock_handle (gpointer handle)
@@ -258,7 +254,7 @@ static inline int _wapi_handle_lock_handle (gpointer handle)
                return(0);
        }
        
-       return(mono_mutex_lock (&_WAPI_PRIVATE_HANDLES(idx).signal_mutex));
+       return(mono_os_mutex_lock (&_WAPI_PRIVATE_HANDLES(idx).signal_mutex));
 }
 
 static inline int _wapi_handle_trylock_handle (gpointer handle)
@@ -280,7 +276,7 @@ static inline int _wapi_handle_trylock_handle (gpointer handle)
                return(0);
        }
 
-       ret = mono_mutex_trylock (&_WAPI_PRIVATE_HANDLES(idx).signal_mutex);
+       ret = mono_os_mutex_trylock (&_WAPI_PRIVATE_HANDLES(idx).signal_mutex);
        if (ret != 0) {
                _wapi_handle_unref (handle);
        }
@@ -306,7 +302,7 @@ static inline int _wapi_handle_unlock_handle (gpointer handle)
                return(0);
        }
        
-       ret = mono_mutex_unlock (&_WAPI_PRIVATE_HANDLES(idx).signal_mutex);
+       ret = mono_os_mutex_unlock (&_WAPI_PRIVATE_HANDLES(idx).signal_mutex);
 
        _wapi_handle_unref (handle);
        
index 14fa71c9a74e909f64710bc0ed272c783e448acb..f92b6566d8c4886f5e88bd1f40facfc4e44c8bf9 100644 (file)
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/handles-private.h>
-#include <mono/io-layer/misc-private.h>
 #include <mono/io-layer/shared.h>
-#include <mono/io-layer/collection.h>
 #include <mono/io-layer/process-private.h>
 
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-os-mutex.h>
 #include <mono/utils/mono-proclib.h>
 #include <mono/utils/mono-threads.h>
+#include <mono/utils/mono-once.h>
 #undef DEBUG_REFS
 
 #if 0
@@ -56,7 +55,7 @@
 
 static void (*_wapi_handle_ops_get_close_func (WapiHandleType type))(gpointer, gpointer);
 
-static WapiHandleCapability handle_caps[WAPI_HANDLE_COUNT]={0};
+static WapiHandleCapability handle_caps[WAPI_HANDLE_COUNT] = { (WapiHandleCapability)0 };
 static struct _WapiHandleOps *handle_ops[WAPI_HANDLE_COUNT]={
        NULL,
        &_wapi_file_ops,
@@ -126,11 +125,6 @@ static guint32 _wapi_private_handle_slot_count = 0;
 
 struct _WapiHandleSharedLayout *_wapi_shared_layout = NULL;
 
-/*
- * If SHM is enabled, this will point to shared memory, otherwise it will be NULL.
- */
-struct _WapiFileShareLayout *_wapi_fileshare_layout = NULL;
-
 /*
  * If SHM is disabled, this will point to a hash of _WapiFileShare structures, otherwise
  * it will be NULL. We use this instead of _wapi_fileshare_layout to avoid allocating a
@@ -139,8 +133,8 @@ struct _WapiFileShareLayout *_wapi_fileshare_layout = NULL;
 static GHashTable *file_share_hash;
 static mono_mutex_t file_share_hash_mutex;
 
-#define file_share_hash_lock() mono_mutex_lock (&file_share_hash_mutex)
-#define file_share_hash_unlock() mono_mutex_unlock (&file_share_hash_mutex)
+#define file_share_hash_lock() mono_os_mutex_lock (&file_share_hash_mutex)
+#define file_share_hash_unlock() mono_os_mutex_unlock (&file_share_hash_mutex)
 
 guint32 _wapi_fd_reserve;
 
@@ -208,12 +202,11 @@ static void handle_cleanup (void)
        
        _wapi_shm_semaphores_remove ();
 
-       _wapi_shm_detach (WAPI_SHM_DATA);
-       _wapi_shm_detach (WAPI_SHM_FILESHARE);
+       g_free (_wapi_shared_layout);
 
        if (file_share_hash) {
                g_hash_table_destroy (file_share_hash);
-               mono_mutex_destroy (&file_share_hash_mutex);
+               mono_os_mutex_destroy (&file_share_hash_mutex);
        }
 
        for (i = 0; i < _WAPI_PRIVATE_MAX_SLOTS; ++i)
@@ -257,22 +250,12 @@ wapi_init (void)
        } while(_wapi_fd_reserve > _wapi_private_handle_count);
 
        _wapi_shm_semaphores_init ();
-       
-       _wapi_shared_layout = _wapi_shm_attach (WAPI_SHM_DATA);
+
+       _wapi_shared_layout = (_WapiHandleSharedLayout *)g_malloc0 (sizeof (_WapiHandleSharedLayout));
        g_assert (_wapi_shared_layout != NULL);
-       
-       if (_wapi_shm_enabled ()) {
-               /* This allocates a 4mb array, so do it only if SHM is enabled */
-               _wapi_fileshare_layout = _wapi_shm_attach (WAPI_SHM_FILESHARE);
-               g_assert (_wapi_fileshare_layout != NULL);
-       }
-       
-#if !defined (DISABLE_SHARED_HANDLES)
-       if (_wapi_shm_enabled ())
-               _wapi_collection_init ();
-#endif
+
        _wapi_io_init ();
-       mono_mutex_init (&scan_mutex);
+       mono_os_mutex_init (&scan_mutex);
 
        _wapi_global_signal_handle = _wapi_handle_new (WAPI_HANDLE_EVENT, NULL);
 
@@ -373,7 +356,7 @@ static void _wapi_handle_init (struct _WapiHandleUnshared *handle,
                thr_ret = pthread_cond_init (&handle->signal_cond, NULL);
                g_assert (thr_ret == 0);
                                
-               thr_ret = mono_mutex_init (&handle->signal_mutex);
+               thr_ret = mono_os_mutex_init (&handle->signal_mutex);
                g_assert (thr_ret == 0);
 
                if (handle_specific != NULL) {
@@ -505,7 +488,7 @@ _wapi_handle_new (WapiHandleType type, gpointer handle_specific)
 
        g_assert(!_WAPI_FD_HANDLE(type));
        
-       thr_ret = mono_mutex_lock (&scan_mutex);
+       thr_ret = mono_os_mutex_lock (&scan_mutex);
        g_assert (thr_ret == 0);
                
        while ((handle_idx = _wapi_handle_new_internal (type, handle_specific)) == 0) {
@@ -522,7 +505,7 @@ _wapi_handle_new (WapiHandleType type, gpointer handle_specific)
                _wapi_private_handle_slot_count ++;
        }
        
-       thr_ret = mono_mutex_unlock (&scan_mutex);
+       thr_ret = mono_os_mutex_unlock (&scan_mutex);
        g_assert (thr_ret == 0);
 
        if (handle_idx == 0) {
@@ -544,7 +527,6 @@ _wapi_handle_new (WapiHandleType type, gpointer handle_specific)
                
                ref = _wapi_handle_new_shared (type, handle_specific);
                if (ref == 0) {
-                       _wapi_handle_collect ();
                        ref = _wapi_handle_new_shared (type, handle_specific);
                        if (ref == 0) {
                                /* FIXME: grow the arrays */
@@ -586,7 +568,7 @@ gpointer _wapi_handle_new_from_offset (WapiHandleType type, guint32 offset,
                InterlockedExchange ((gint32 *)&shared->timestamp, now);
        }
                
-       thr_ret = mono_mutex_lock (&scan_mutex);
+       thr_ret = mono_os_mutex_lock (&scan_mutex);
        g_assert (thr_ret == 0);
 
        for (i = SLOT_INDEX (0); i < _wapi_private_handle_slot_count; i++) {
@@ -604,7 +586,7 @@ gpointer _wapi_handle_new_from_offset (WapiHandleType type, guint32 offset,
        }
 
 first_pass_done:
-       thr_ret = mono_mutex_unlock (&scan_mutex);
+       thr_ret = mono_os_mutex_unlock (&scan_mutex);
        g_assert (thr_ret == 0);
 
        if (handle != INVALID_HANDLE_VALUE) {
@@ -633,7 +615,7 @@ first_pass_done:
                goto done;
        }
        
-       thr_ret = mono_mutex_lock (&scan_mutex);
+       thr_ret = mono_os_mutex_lock (&scan_mutex);
        g_assert (thr_ret == 0);
        
        while ((handle_idx = _wapi_handle_new_internal (type, NULL)) == 0) {
@@ -646,7 +628,7 @@ first_pass_done:
                _wapi_private_handle_slot_count ++;
        }
                
-       thr_ret = mono_mutex_unlock (&scan_mutex);
+       thr_ret = mono_os_mutex_unlock (&scan_mutex);
        g_assert (thr_ret == 0);
                
        /* Make sure we left the space for fd mappings */
@@ -670,7 +652,7 @@ init_handles_slot (int idx)
 {
        int thr_ret;
 
-       thr_ret = mono_mutex_lock (&scan_mutex);
+       thr_ret = mono_os_mutex_lock (&scan_mutex);
        g_assert (thr_ret == 0);
 
        if (_wapi_private_handles [idx] == NULL) {
@@ -679,7 +661,7 @@ init_handles_slot (int idx)
                g_assert (_wapi_private_handles [idx]);
        }
 
-       thr_ret = mono_mutex_unlock (&scan_mutex);
+       thr_ret = mono_os_mutex_unlock (&scan_mutex);
        g_assert (thr_ret == 0);
 }
 
@@ -786,7 +768,7 @@ _wapi_handle_foreach (WapiHandleType type,
        guint32 i, k;
        int thr_ret;
 
-       thr_ret = mono_mutex_lock (&scan_mutex);
+       thr_ret = mono_os_mutex_lock (&scan_mutex);
        g_assert (thr_ret == 0);
 
        for (i = SLOT_INDEX (0); i < _wapi_private_handle_slot_count; i++) {
@@ -803,7 +785,7 @@ _wapi_handle_foreach (WapiHandleType type,
                }
        }
 
-       thr_ret = mono_mutex_unlock (&scan_mutex);
+       thr_ret = mono_os_mutex_unlock (&scan_mutex);
        g_assert (thr_ret == 0);
 }
 
@@ -828,7 +810,7 @@ gpointer _wapi_search_handle (WapiHandleType type,
        gboolean found = FALSE;
        int thr_ret;
 
-       thr_ret = mono_mutex_lock (&scan_mutex);
+       thr_ret = mono_os_mutex_lock (&scan_mutex);
        g_assert (thr_ret == 0);
        
        for (i = SLOT_INDEX (0); !found && i < _wapi_private_handle_slot_count; i++) {
@@ -853,7 +835,7 @@ gpointer _wapi_search_handle (WapiHandleType type,
                }
        }
 
-       thr_ret = mono_mutex_unlock (&scan_mutex);
+       thr_ret = mono_os_mutex_unlock (&scan_mutex);
        g_assert (thr_ret == 0);
 
        if (!found && search_shared && _WAPI_SHARED_HANDLE (type)) {
@@ -959,11 +941,6 @@ gint32 _wapi_search_handle_namespace (WapiHandleType type,
        DEBUG ("%s: Lookup for handle named [%s] type %s", __func__,
                   utf8_name, _wapi_handle_typename[type]);
 
-       /* Do a handle collection before starting to look, so that any
-        * stale cruft gets removed
-        */
-       _wapi_handle_collect ();
-       
        thr_ret = _wapi_handle_lock_shared_handles ();
        g_assert (thr_ret == 0);
        
@@ -1097,7 +1074,7 @@ static void _wapi_handle_unref_full (gpointer handle, gboolean ignore_private_bu
                        g_assert (thr_ret == 0);
                }
                
-               thr_ret = mono_mutex_lock (&scan_mutex);
+               thr_ret = mono_os_mutex_lock (&scan_mutex);
 
                DEBUG ("%s: Destroying handle %p", __func__, handle);
                
@@ -1115,7 +1092,7 @@ static void _wapi_handle_unref_full (gpointer handle, gboolean ignore_private_bu
                         * now, but pthreads doesn't have a
                         * "unlock_and_destroy" atomic function.
                         */
-                       thr_ret = mono_mutex_destroy (&_WAPI_PRIVATE_HANDLES(idx).signal_mutex);
+                       thr_ret = mono_os_mutex_destroy (&_WAPI_PRIVATE_HANDLES(idx).signal_mutex);
                        /*WARNING gross hack to make cleanup not crash when exiting without the whole runtime teardown.*/
                        if (thr_ret == EBUSY && ignore_private_busy_handles) {
                                early_exit = TRUE;
@@ -1150,7 +1127,7 @@ static void _wapi_handle_unref_full (gpointer handle, gboolean ignore_private_bu
                        }
                }
 
-               thr_ret = mono_mutex_unlock (&scan_mutex);
+               thr_ret = mono_os_mutex_unlock (&scan_mutex);
                g_assert (thr_ret == 0);
 
                if (early_exit)
@@ -1498,48 +1475,8 @@ void _wapi_handle_unlock_handles (guint32 numhandles, gpointer *handles)
        }
 }
 
-static int timedwait_signal_poll_cond (pthread_cond_t *cond, mono_mutex_t *mutex, struct timespec *timeout, gboolean alertable)
-{
-       struct timespec fake_timeout;
-       int ret;
-
-       if (!alertable) {
-               /*
-                * pthread_cond_(timed)wait() can return 0 even if the condition was not
-                * signalled.  This happens at least on Darwin.  We surface this, i.e., we
-                * get spurious wake-ups.
-                *
-                * http://pubs.opengroup.org/onlinepubs/007908775/xsh/pthread_cond_wait.html
-                */
-               if (timeout)
-                       ret=mono_cond_timedwait (cond, mutex, timeout);
-               else
-                       ret=mono_cond_wait (cond, mutex);
-       } else {
-               _wapi_calc_timeout (&fake_timeout, 100);
-       
-               if (timeout != NULL && ((fake_timeout.tv_sec > timeout->tv_sec) ||
-                                                               (fake_timeout.tv_sec == timeout->tv_sec &&
-                                                                fake_timeout.tv_nsec > timeout->tv_nsec))) {
-                       /* Real timeout is less than 100ms time */
-                       ret=mono_cond_timedwait (cond, mutex, timeout);
-               } else {
-                       ret=mono_cond_timedwait (cond, mutex, &fake_timeout);
-
-                       /* Mask the fake timeout, this will cause
-                        * another poll if the cond was not really signaled
-                        */
-                       if (ret==ETIMEDOUT) {
-                               ret=0;
-                       }
-               }
-       }
-       
-       return(ret);
-}
-
 int
-_wapi_handle_timedwait_signal (struct timespec *timeout, gboolean poll, gboolean *alerted)
+_wapi_handle_timedwait_signal (guint32 timeout, gboolean poll, gboolean *alerted)
 {
        return _wapi_handle_timedwait_signal_handle (_wapi_global_signal_handle, timeout, TRUE, poll, alerted);
 }
@@ -1562,16 +1499,15 @@ signal_handle_and_unref (gpointer handle)
        cond = &_WAPI_PRIVATE_HANDLES (idx).signal_cond;
        mutex = &_WAPI_PRIVATE_HANDLES (idx).signal_mutex;
 
-       mono_mutex_lock (mutex);
-       mono_cond_broadcast (cond);
-       mono_mutex_unlock (mutex);
+       mono_os_mutex_lock (mutex);
+       mono_os_cond_broadcast (cond);
+       mono_os_mutex_unlock (mutex);
 
        _wapi_handle_unref (handle);
 }
 
 int
-_wapi_handle_timedwait_signal_handle (gpointer handle, struct timespec *timeout,
-               gboolean alertable, gboolean poll, gboolean *alerted)
+_wapi_handle_timedwait_signal_handle (gpointer handle, guint32 timeout, gboolean alertable, gboolean poll, gboolean *alerted)
 {
        DEBUG ("%s: waiting for %p (type %s)", __func__, handle,
                   _wapi_handle_typename[_wapi_handle_type (handle)]);
@@ -1586,13 +1522,8 @@ _wapi_handle_timedwait_signal_handle (gpointer handle, struct timespec *timeout,
                if (WAPI_SHARED_HANDLE_DATA(handle).signalled == TRUE) {
                        return (0);
                }
-               if (timeout != NULL) {
-                       struct timespec fake_timeout;
-                       _wapi_calc_timeout (&fake_timeout, 100);
-               
-                       if ((fake_timeout.tv_sec > timeout->tv_sec) ||
-                               (fake_timeout.tv_sec == timeout->tv_sec &&
-                                fake_timeout.tv_nsec > timeout->tv_nsec)) {
+               if (timeout != INFINITE) {
+                       if (timeout < 100) {
                                /* FIXME: Real timeout is less than
                                 * 100ms time, but is it really worth
                                 * calculating to the exact ms?
@@ -1625,14 +1556,33 @@ _wapi_handle_timedwait_signal_handle (gpointer handle, struct timespec *timeout,
                cond = &_WAPI_PRIVATE_HANDLES (idx).signal_cond;
                mutex = &_WAPI_PRIVATE_HANDLES (idx).signal_mutex;
 
-               if (poll) {
-                       /* This is needed when waiting for process handles */
-                       res = timedwait_signal_poll_cond (cond, mutex, timeout, alertable);
+               if (!poll) {
+                       res = mono_os_cond_timedwait (cond, mutex, timeout);
                } else {
-                       if (timeout)
-                               res = mono_cond_timedwait (cond, mutex, timeout);
-                       else
-                               res = mono_cond_wait (cond, mutex);
+                       /* This is needed when waiting for process handles */
+                       if (!alertable) {
+                               /*
+                                * pthread_cond_(timed)wait() can return 0 even if the condition was not
+                                * signalled.  This happens at least on Darwin.  We surface this, i.e., we
+                                * get spurious wake-ups.
+                                *
+                                * http://pubs.opengroup.org/onlinepubs/007908775/xsh/pthread_cond_wait.html
+                                */
+                               res = mono_os_cond_timedwait (cond, mutex, timeout);
+                       } else {
+                               if (timeout < 100) {
+                                       /* Real timeout is less than 100ms time */
+                                       res = mono_os_cond_timedwait (cond, mutex, timeout);
+                               } else {
+                                       res = mono_os_cond_timedwait (cond, mutex, 100);
+
+                                       /* Mask the fake timeout, this will cause
+                                        * another poll if the cond was not really signaled
+                                        */
+                                       if (res == ETIMEDOUT)
+                                               res = 0;
+                               }
+                       }
                }
 
                if (alertable) {
@@ -1650,21 +1600,17 @@ _wapi_handle_timedwait_signal_handle (gpointer handle, struct timespec *timeout,
 void
 _wapi_free_share_info (_WapiFileShare *share_info)
 {
-       if (!_wapi_shm_enabled ()) {
-               file_share_hash_lock ();
-               g_hash_table_remove (file_share_hash, share_info);
-               file_share_hash_unlock ();
-               /* The hashtable dtor frees share_info */
-       } else {
-               memset (share_info, '\0', sizeof(struct _WapiFileShare));
-       }
+       file_share_hash_lock ();
+       g_hash_table_remove (file_share_hash, share_info);
+       file_share_hash_unlock ();
+       /* The hashtable dtor frees share_info */
 }
 
 static gint
 wapi_share_info_equal (gconstpointer ka, gconstpointer kb)
 {
-       const _WapiFileShare *s1 = ka;
-       const _WapiFileShare *s2 = kb;
+       const _WapiFileShare *s1 = (const _WapiFileShare *)ka;
+       const _WapiFileShare *s2 = (const _WapiFileShare *)kb;
 
        return (s1->device == s2->device && s1->inode == s2->inode) ? 1 : 0;
 }
@@ -1672,7 +1618,7 @@ wapi_share_info_equal (gconstpointer ka, gconstpointer kb)
 static guint
 wapi_share_info_hash (gconstpointer data)
 {
-       const _WapiFileShare *s = data;
+       const _WapiFileShare *s = (const _WapiFileShare *)data;
 
        return s->inode;
 }
@@ -1685,8 +1631,7 @@ gboolean _wapi_handle_get_or_set_share (guint64 device, guint64 inode,
                                        struct _WapiFileShare **share_info)
 {
        struct _WapiFileShare *file_share;
-       guint32 now = (guint32)(time(NULL) & 0xFFFFFFFF);
-       int thr_ret, i, first_unused = -1;
+       int thr_ret;
        gboolean exists = FALSE;
 
        /* Prevents entries from expiring under us as we search
@@ -1698,110 +1643,46 @@ gboolean _wapi_handle_get_or_set_share (guint64 device, guint64 inode,
        thr_ret = _wapi_shm_sem_lock (_WAPI_SHARED_SEM_FILESHARE);
        g_assert (thr_ret == 0);
 
-       if (!_wapi_shm_enabled ()) {
-               _WapiFileShare tmp;
+       _WapiFileShare tmp;
 
-               /*
-                * Instead of allocating a 4MB array, we use a hash table to keep track of this
-                * info. This is needed even if SHM is disabled, to track sharing inside
-                * the current process.
-                */
-               if (!file_share_hash) {
-                       file_share_hash = g_hash_table_new_full (wapi_share_info_hash, wapi_share_info_equal, NULL, g_free);
-                       mono_mutex_init_recursive (&file_share_hash_mutex);
-               }
-                       
-               tmp.device = device;
-               tmp.inode = inode;
+       /*
+        * Instead of allocating a 4MB array, we use a hash table to keep track of this
+        * info. This is needed even if SHM is disabled, to track sharing inside
+        * the current process.
+        */
+       if (!file_share_hash) {
+               file_share_hash = g_hash_table_new_full (wapi_share_info_hash, wapi_share_info_equal, NULL, g_free);
+               mono_os_mutex_init_recursive (&file_share_hash_mutex);
+       }
 
-               file_share_hash_lock ();
+       tmp.device = device;
+       tmp.inode = inode;
 
-               file_share = g_hash_table_lookup (file_share_hash, &tmp);
-               if (file_share) {
-                       *old_sharemode = file_share->sharemode;
-                       *old_access = file_share->access;
-                       *share_info = file_share;
-                       
-                       InterlockedIncrement ((gint32 *)&file_share->handle_refs);
-                       exists = TRUE;
-               } else {
-                       file_share = g_new0 (_WapiFileShare, 1);
-
-                       file_share->device = device;
-                       file_share->inode = inode;
-                       file_share->opened_by_pid = _wapi_getpid ();
-                       file_share->sharemode = new_sharemode;
-                       file_share->access = new_access;
-                       file_share->handle_refs = 1;
-                       *share_info = file_share;
+       file_share_hash_lock ();
 
-                       g_hash_table_insert (file_share_hash, file_share, file_share);
-               }
+       file_share = (_WapiFileShare *)g_hash_table_lookup (file_share_hash, &tmp);
+       if (file_share) {
+               *old_sharemode = file_share->sharemode;
+               *old_access = file_share->access;
+               *share_info = file_share;
 
-               file_share_hash_unlock ();
+               InterlockedIncrement ((gint32 *)&file_share->handle_refs);
+               exists = TRUE;
        } else {
-               /* If a linear scan gets too slow we'll have to fit a hash
-                * table onto the shared mem backing store
-                */
-               *share_info = NULL;
-               for (i = 0; i <= _wapi_fileshare_layout->hwm; i++) {
-                       file_share = &_wapi_fileshare_layout->share_info[i];
+               file_share = g_new0 (_WapiFileShare, 1);
 
-                       /* Make a note of an unused slot, in case we need to
-                        * store share info
-                        */
-                       if (first_unused == -1 && file_share->handle_refs == 0) {
-                               first_unused = i;
-                               continue;
-                       }
-               
-                       if (file_share->handle_refs == 0) {
-                               continue;
-                       }
-               
-                       if (file_share->device == device &&
-                               file_share->inode == inode) {
-                               *old_sharemode = file_share->sharemode;
-                               *old_access = file_share->access;
-                               *share_info = file_share;
-                       
-                               /* Increment the reference count while we
-                                * still have sole access to the shared area.
-                                * This makes the increment atomic wrt
-                                * collections
-                                */
-                               InterlockedIncrement ((gint32 *)&file_share->handle_refs);
-                       
-                               exists = TRUE;
-                               break;
-                       }
-               }
-       
-               if (!exists) {
-                       if (i == _WAPI_FILESHARE_SIZE && first_unused == -1) {
-                               /* No more space */
-                       } else {
-                               if (first_unused == -1) {
-                                       file_share = &_wapi_fileshare_layout->share_info[++i];
-                                       _wapi_fileshare_layout->hwm = i;
-                               } else {
-                                       file_share = &_wapi_fileshare_layout->share_info[first_unused];
-                               }
-                       
-                               file_share->device = device;
-                               file_share->inode = inode;
-                               file_share->opened_by_pid = _wapi_getpid ();
-                               file_share->sharemode = new_sharemode;
-                               file_share->access = new_access;
-                               file_share->handle_refs = 1;
-                               *share_info = file_share;
-                       }
-               }
+               file_share->device = device;
+               file_share->inode = inode;
+               file_share->opened_by_pid = _wapi_getpid ();
+               file_share->sharemode = new_sharemode;
+               file_share->access = new_access;
+               file_share->handle_refs = 1;
+               *share_info = file_share;
 
-               if (*share_info != NULL) {
-                       InterlockedExchange ((gint32 *)&(*share_info)->timestamp, now);
-               }
+               g_hash_table_insert (file_share_hash, file_share, file_share);
        }
+
+       file_share_hash_unlock ();
        
        thr_ret = _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_FILESHARE);
 
@@ -1928,7 +1809,7 @@ void _wapi_handle_dump (void)
        guint32 i, k;
        int thr_ret;
        
-       thr_ret = mono_mutex_lock (&scan_mutex);
+       thr_ret = mono_os_mutex_lock (&scan_mutex);
        g_assert (thr_ret == 0);
        
        for(i = SLOT_INDEX (0); i < _wapi_private_handle_slot_count; i++) {
@@ -1952,7 +1833,7 @@ void _wapi_handle_dump (void)
                }
        }
 
-       thr_ret = mono_mutex_unlock (&scan_mutex);
+       thr_ret = mono_os_mutex_unlock (&scan_mutex);
        g_assert (thr_ret == 0);
 }
 
@@ -1962,57 +1843,3 @@ static void _wapi_shared_details (gpointer handle_info)
        
        g_print ("offset: 0x%x", shared->offset);
 }
-
-void _wapi_handle_update_refs (void)
-{
-       guint32 i, k;
-       int thr_ret;
-       guint32 now = (guint32)(time (NULL) & 0xFFFFFFFF);
-       
-       thr_ret = _wapi_handle_lock_shared_handles ();
-       g_assert (thr_ret == 0);
-
-       /* Prevent file share entries racing with us */
-       thr_ret = _wapi_shm_sem_lock (_WAPI_SHARED_SEM_FILESHARE);
-       g_assert(thr_ret == 0);
-
-       thr_ret = mono_mutex_lock (&scan_mutex);
-       
-       for(i = SLOT_INDEX (0); i < _wapi_private_handle_slot_count; i++) {
-               if (_wapi_private_handles [i]) {
-                       for (k = SLOT_OFFSET (0); k < _WAPI_HANDLE_INITIAL_COUNT; k++) {
-                               struct _WapiHandleUnshared *handle = &_wapi_private_handles [i][k];
-
-                               if (_WAPI_SHARED_HANDLE(handle->type)) {
-                                       struct _WapiHandleShared *shared_data;
-                               
-                                       DEBUG ("%s: (%d) handle 0x%x is SHARED (%s)", __func__, _wapi_getpid (), i * _WAPI_HANDLE_INITIAL_COUNT + k, _wapi_handle_typename[handle->type]);
-
-                                       shared_data = &_wapi_shared_layout->handles[handle->u.shared.offset];
-
-                                       DEBUG ("%s: (%d) Updating timestamp of handle 0x%x", __func__, _wapi_getpid (), handle->u.shared.offset);
-
-                                       InterlockedExchange ((gint32 *)&shared_data->timestamp, now);
-                               } else if (handle->type == WAPI_HANDLE_FILE) {
-                                       struct _WapiHandle_file *file_handle = &handle->u.file;
-                               
-                                       DEBUG ("%s: (%d) handle 0x%x is FILE", __func__, _wapi_getpid (), i * _WAPI_HANDLE_INITIAL_COUNT + k);
-                               
-                                       g_assert (file_handle->share_info != NULL);
-
-                                       DEBUG ("%s: (%d) Inc refs on fileshare 0x%x", __func__, _wapi_getpid (), (file_handle->share_info - &_wapi_fileshare_layout->share_info[0]) / sizeof(struct _WapiFileShare));
-
-                                       InterlockedExchange ((gint32 *)&file_handle->share_info->timestamp, now);
-                               }
-                       }
-               }
-       }
-
-       thr_ret = mono_mutex_unlock (&scan_mutex);
-       g_assert (thr_ret == 0);
-       
-       thr_ret = _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_FILESHARE);
-
-       _wapi_handle_unlock_shared_handles ();
-}
-
index b9674955380f25eadf513556862ec3e54f9ea919..8838c304e9c35577a0eaed9f9bf4f12c79adcdab 100644 (file)
@@ -30,8 +30,6 @@
 #include <mono/io-layer/io-portability.h>
 #include <mono/utils/mono-io-portability.h>
 
-#include <mono/utils/mono-mutex.h>
-
 #undef DEBUG
 
 int _wapi_open (const char *pathname, int flags, mode_t mode)
index 685a822749100c2215ded9dd302e080a1d8f5106..e06a61aa9d514437d02dae2e7f62b8199b8dca63 100644 (file)
@@ -43,6 +43,7 @@
 #include <mono/io-layer/thread-private.h>
 #include <mono/io-layer/io-portability.h>
 #include <mono/utils/strenc.h>
+#include <mono/utils/mono-once.h>
 
 #if 0
 #define DEBUG(...) g_message(__VA_ARGS__)
@@ -1453,14 +1454,6 @@ static gboolean share_check (struct stat *statbuf, guint32 sharemode,
                               share_info) == TRUE) {
                return (TRUE);
        }
-       
-       /* Still violating.  It's possible that a process crashed
-        * while still holding a file handle, and that a non-mono
-        * process has the file open.  (For example, C-c mcs while
-        * editing a source file.)  As a last resort, run a handle
-        * collection, which will remove stale share entries.
-        */
-       _wapi_handle_collect ();
 
        return(share_allows_open (statbuf, sharemode, fileaccess, share_info));
 }
@@ -1493,7 +1486,7 @@ static gboolean share_check (struct stat *statbuf, guint32 sharemode,
 gpointer CreateFile(const gunichar2 *name, guint32 fileaccess,
                    guint32 sharemode, WapiSecurityAttributes *security,
                    guint32 createmode, guint32 attrs,
-                   gpointer template G_GNUC_UNUSED)
+                   gpointer template_ G_GNUC_UNUSED)
 {
        struct _WapiHandle_file file_handle = {0};
        gpointer handle;
@@ -1507,7 +1500,7 @@ gpointer CreateFile(const gunichar2 *name, guint32 fileaccess,
        mode_t perms=0666;
        gchar *filename;
        int fd, ret;
-       int handle_type;
+       WapiHandleType handle_type;
        struct stat statbuf;
        
        mono_once (&io_ops_once, io_ops_init);
@@ -2178,7 +2171,7 @@ gpointer GetStdHandle(WapiStdHandle stdhandle)
 
        handle = GINT_TO_POINTER (fd);
 
-       thr_ret = mono_mutex_lock (&stdhandle_mutex);
+       thr_ret = mono_os_mutex_lock (&stdhandle_mutex);
        g_assert (thr_ret == 0);
 
        ok = _wapi_lookup_handle (handle, WAPI_HANDLE_CONSOLE,
@@ -2197,7 +2190,7 @@ gpointer GetStdHandle(WapiStdHandle stdhandle)
        }
        
   done:
-       thr_ret = mono_mutex_unlock (&stdhandle_mutex);
+       thr_ret = mono_os_mutex_unlock (&stdhandle_mutex);
        g_assert (thr_ret == 0);
        
        return(handle);
@@ -3705,7 +3698,7 @@ append_to_mountpoint (LinuxMountInfoParseState *state)
        if (state->mountpoint_allocated) {
                if (state->mountpoint_index >= state->allocated_size) {
                        guint32 newsize = (state->allocated_size << 1) + 1;
-                       gchar *newbuf = g_malloc0 (newsize * sizeof (gchar));
+                       gchar *newbuf = (gchar *)g_malloc0 (newsize * sizeof (gchar));
 
                        memcpy (newbuf, state->mountpoint_allocated, state->mountpoint_index);
                        g_free (state->mountpoint_allocated);
@@ -3716,7 +3709,7 @@ append_to_mountpoint (LinuxMountInfoParseState *state)
        } else {
                if (state->mountpoint_index >= GET_LOGICAL_DRIVE_STRINGS_MOUNTPOINT_BUFFER) {
                        state->allocated_size = (state->mountpoint_index << 1) + 1;
-                       state->mountpoint_allocated = g_malloc0 (state->allocated_size * sizeof (gchar));
+                       state->mountpoint_allocated = (gchar *)g_malloc0 (state->allocated_size * sizeof (gchar));
                        memcpy (state->mountpoint_allocated, state->mountpoint, state->mountpoint_index);
                        state->mountpoint_allocated [state->mountpoint_index++] = ch;
                } else
@@ -4282,5 +4275,5 @@ GetVolumeInformation (const gunichar2 *path, gunichar2 *volumename, int volumesi
 void
 _wapi_io_init (void)
 {
-       mono_mutex_init (&stdhandle_mutex);
+       mono_os_mutex_init (&stdhandle_mutex);
 }
index 12a1310d96784cf7bb40bb5a1c8c6789ebc6b145..4c5a492b95b004db8c46322334e0bea5310ebe01 100644 (file)
@@ -177,7 +177,7 @@ extern gboolean WriteFile(gpointer handle, gconstpointer buffer,
 extern gboolean FlushFileBuffers(gpointer handle);
 extern gboolean SetEndOfFile(gpointer handle);
 extern guint32 SetFilePointer(gpointer handle, gint32 movedistance,
-                             gint32 *highmovedistance, WapiSeekMethod method);
+                             gint32 *highmovedistance, guint32 method);
 extern WapiFileType GetFileType(gpointer handle);
 extern guint32 GetFileSize(gpointer handle, guint32 *highsize);
 extern gboolean GetFileTime(gpointer handle, WapiFileTime *create_time,
index 1b052dbaca7762a9091872067680eabe8634faa0..9c5bd31e06a5307d2e910290ea58cdf3a8f5f296 100644 (file)
@@ -15,7 +15,6 @@
 
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/wapi-private.h>
-#include <mono/io-layer/misc-private.h>
 #include <mono/io-layer/messages.h>
 #include <mono/utils/bsearch.h>
 
@@ -1831,7 +1830,7 @@ find_msg (guint32 id, ErrorDesc *base, int n)
        ErrorDesc d, *result;
        d.id = id;
        
-       result = mono_binary_search (&d, base, n, sizeof (ErrorDesc), msg_compare);
+       result = (ErrorDesc *)mono_binary_search (&d, base, n, sizeof (ErrorDesc), msg_compare);
        if (result == NULL)
                return NULL;
        return result->txt;
diff --git a/mono/io-layer/misc-private.h b/mono/io-layer/misc-private.h
deleted file mode 100644 (file)
index 60e8cd8..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * misc-private.h:  Miscellaneous internal support functions
- *
- * Author:
- *     Dick Porter (dick@ximian.com)
- *
- * (C) 2002 Ximian, Inc.
- */
-
-#ifndef _WAPI_MISC_PRIVATE_H_
-#define _WAPI_MISC_PRIVATE_H_
-
-#include <glib.h>
-#include <sys/time.h>
-#include <time.h>
-
-extern void _wapi_calc_timeout(struct timespec *timeout, guint32 ms);
-
-#endif /* _WAPI_MISC_PRIVATE_H_ */
diff --git a/mono/io-layer/misc.c b/mono/io-layer/misc.c
deleted file mode 100644 (file)
index 82835cc..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * misc.c:  Miscellaneous internal support functions
- *
- * Author:
- *     Dick Porter (dick@ximian.com)
- *
- * (C) 2002 Ximian, Inc.
- */
-
-#include <config.h>
-#include <glib.h>
-#include <sys/time.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "misc-private.h"
-
-void _wapi_calc_timeout(struct timespec *timeout, guint32 ms)
-{
-       struct timeval now;
-       div_t ms_divvy, overflow_divvy;
-       
-       gettimeofday (&now, NULL);
-
-       ms_divvy = div (ms, 1000);
-       overflow_divvy = div ((now.tv_usec / 1000) + ms_divvy.rem, 1000);
-               
-       timeout->tv_sec = now.tv_sec + ms_divvy.quot + overflow_divvy.quot;
-       timeout->tv_nsec = overflow_divvy.rem * 1000000;
-}
index 56bd23a3f944734d41d6d0657f996c5920bee99d..e1a4539a0b193ee513c6cc553bb9855df6a736ff 100644 (file)
 
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/wapi-private.h>
-#include <mono/io-layer/misc-private.h>
 #include <mono/io-layer/handles-private.h>
 #include <mono/io-layer/mutex-private.h>
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-once.h>
 
 #if 0
 #define DEBUG(...) g_message(__VA_ARGS__)
@@ -92,13 +91,9 @@ static mono_once_t mutex_ops_once=MONO_ONCE_INIT;
 static void mutex_ops_init (void)
 {
        _wapi_handle_register_capabilities (WAPI_HANDLE_MUTEX,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SIGNAL |
-                                           WAPI_HANDLE_CAP_OWN);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SIGNAL | WAPI_HANDLE_CAP_OWN));
        _wapi_handle_register_capabilities (WAPI_HANDLE_NAMEDMUTEX,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SIGNAL |
-                                           WAPI_HANDLE_CAP_OWN);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SIGNAL | WAPI_HANDLE_CAP_OWN));
 }
 
 static void mutex_signal(gpointer handle)
index 86a8cf3137d4f9aeaec10bc943c681243d2787da..ddd6e863f36623426672ab8244c2fdf9f7ae216b 100644 (file)
@@ -13,6 +13,8 @@
 #include <config.h>
 #include <glib.h>
 
+#include <mono/utils/mono-os-semaphore.h>
+
 /* There doesn't seem to be a defined symbol for this */
 #define _WAPI_PROCESS_CURRENT (gpointer)0xFFFFFFFF
 
index 94938f53704a8d4213ef0bd118ba658488cc124c..851ffaffb6eb1b6f2712a38daca9cec9d7c59cea 100644 (file)
@@ -83,7 +83,6 @@
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/handles-private.h>
-#include <mono/io-layer/misc-private.h>
 #include <mono/io-layer/process-private.h>
 #include <mono/io-layer/threads.h>
 #include <mono/utils/strenc.h>
 #include <mono/io-layer/timefuncs-private.h>
 #include <mono/utils/mono-time.h>
 #include <mono/utils/mono-membar.h>
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-os-mutex.h>
 #include <mono/utils/mono-signal-handler.h>
 #include <mono/utils/mono-proclib.h>
+#include <mono/utils/mono-once.h>
 
 /* The process' environment strings */
 #if defined(__APPLE__)
@@ -1037,7 +1037,7 @@ gboolean CreateProcess (const gunichar2 *appname, const gunichar2 *cmdline,
        mono_process = (struct MonoProcess *) g_malloc0 (sizeof (struct MonoProcess));
        mono_process->pid = pid;
        mono_process->handle_count = 1;
-       if (MONO_SEM_INIT (&mono_process->exit_sem, 0) != 0) {
+       if (mono_os_sem_init (&mono_process->exit_sem, 0) != 0) {
                /* If we can't create the exit semaphore, we just don't add anything
                 * to our list of mono processes. Waiting on the process will return 
                 * immediately. */
@@ -1051,10 +1051,10 @@ gboolean CreateProcess (const gunichar2 *appname, const gunichar2 *cmdline,
 
                process_handle_data->mono_process = mono_process;
 
-               mono_mutex_lock (&mono_processes_mutex);
+               mono_os_mutex_lock (&mono_processes_mutex);
                mono_process->next = mono_processes;
                mono_processes = mono_process;
-               mono_mutex_unlock (&mono_processes_mutex);
+               mono_os_mutex_unlock (&mono_processes_mutex);
        }
        
        if (process_info != NULL) {
@@ -1137,8 +1137,7 @@ wapi_processes_init (void)
        WapiHandle_process process_handle = {0};
 
        _wapi_handle_register_capabilities (WAPI_HANDLE_PROCESS,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SPECIAL_WAIT);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SPECIAL_WAIT));
        
        process_handle.id = pid;
 
@@ -1148,6 +1147,8 @@ wapi_processes_init (void)
        current_process = _wapi_handle_new (WAPI_HANDLE_PROCESS,
                                            &process_handle);
        g_assert (current_process);
+
+       mono_os_mutex_init (&mono_processes_mutex);
 }
 
 gpointer
@@ -1780,7 +1781,7 @@ gboolean EnumProcessModules (gpointer process, gpointer *modules,
                        return FALSE;
                }
                pid = process_handle->id;
-               proc_name = process_handle->proc_name;
+               proc_name = g_strdup (process_handle->proc_name);
        }
        
 #if defined(PLATFORM_MACOSX) || defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__HAIKU__)
@@ -1798,6 +1799,7 @@ gboolean EnumProcessModules (gpointer process, gpointer *modules,
                 */
                modules[0] = NULL;
                *needed = sizeof(gpointer);
+               g_free (proc_name);
                return TRUE;
        }
        mods = load_modules (fp);
@@ -1828,10 +1830,11 @@ gboolean EnumProcessModules (gpointer process, gpointer *modules,
        }
                
        for (i = 0; i < count; i++) {
-               free_procmodule (g_slist_nth_data (mods, i));
+               free_procmodule ((WapiProcModule *)g_slist_nth_data (mods, i));
        }
        g_slist_free (mods);
-
+       g_free (proc_name);
+       
        return TRUE;
 }
 
@@ -2583,10 +2586,10 @@ mono_processes_cleanup (void)
                if (mp->pid == 0 && mp->handle) {
                        /* This process has exited and we need to remove the artifical ref
                         * on the handle */
-                       mono_mutex_lock (&mono_processes_mutex);
+                       mono_os_mutex_lock (&mono_processes_mutex);
                        unref_handle = mp->handle;
                        mp->handle = NULL;
-                       mono_mutex_unlock (&mono_processes_mutex);
+                       mono_os_mutex_unlock (&mono_processes_mutex);
                        if (unref_handle)
                                _wapi_handle_unref (unref_handle);
                }
@@ -2598,7 +2601,7 @@ mono_processes_cleanup (void)
         * asynchronously. The handler requires that the mono_processes list
         * remain valid.
         */
-       mono_mutex_lock (&mono_processes_mutex);
+       mono_os_mutex_lock (&mono_processes_mutex);
 
        mp = mono_processes;
        while (mp) {
@@ -2629,13 +2632,13 @@ mono_processes_cleanup (void)
                 * they have the 'finished' flag set, which means the sigchld handler is done
                 * accessing them.
                 */
-               mp = l->data;
-               MONO_SEM_DESTROY (&mp->exit_sem);
+               mp = (MonoProcess *)l->data;
+               mono_os_sem_destroy (&mp->exit_sem);
                g_free (mp);
        }
        g_slist_free (finished);
 
-       mono_mutex_unlock (&mono_processes_mutex);
+       mono_os_mutex_unlock (&mono_processes_mutex);
 
        DEBUG ("%s done", __func__);
 
@@ -2687,7 +2690,7 @@ MONO_SIGNAL_HANDLER_FUNC (static, mono_sigchld_signal_handler, (int _dummy, sigi
                if (p) {
                        p->pid = 0; /* this pid doesn't exist anymore, clear it */
                        p->status = status;
-                       MONO_SEM_POST (&p->exit_sem);
+                       mono_os_sem_post (&p->exit_sem);
                        mono_memory_barrier ();
                        /* Mark this as freeable, the pointer becomes invalid afterwards */
                        p->freeable = TRUE;
@@ -2757,12 +2760,11 @@ process_wait (gpointer handle, guint32 timeout, gboolean alertable)
                if (timeout != INFINITE) {
                        DEBUG ("%s (%p, %u): waiting on semaphore for %li ms...", 
                                   __func__, handle, timeout, (timeout - (now - start)));
-
-                       ret = MONO_SEM_TIMEDWAIT_ALERTABLE (&mp->exit_sem, (timeout - (now - start)), alertable);
+                       ret = mono_os_sem_timedwait (&mp->exit_sem, (timeout - (now - start)), alertable ? MONO_SEM_FLAGS_ALERTABLE : MONO_SEM_FLAGS_NONE);
                } else {
                        DEBUG ("%s (%p, %u): waiting on semaphore forever...", 
                                   __func__, handle, timeout);
-                       ret = MONO_SEM_WAIT_ALERTABLE (&mp->exit_sem, alertable);
+                       ret = mono_os_sem_wait (&mp->exit_sem, alertable ? MONO_SEM_FLAGS_ALERTABLE : MONO_SEM_FLAGS_NONE);
                }
 
                if (ret == -1 && errno != EINTR && errno != ETIMEDOUT) {
@@ -2773,7 +2775,7 @@ process_wait (gpointer handle, guint32 timeout, gboolean alertable)
 
                if (ret == 0) {
                        /* Success, process has exited */
-                       MONO_SEM_POST (&mp->exit_sem);
+                       mono_os_sem_post (&mp->exit_sem);
                        break;
                }
 
index c2b78d44387dbc11d3b0bd6105170b2bc74a07ec..a5ff917f4dfb392ce2941f152b600cce216163f8 100644 (file)
@@ -107,13 +107,13 @@ typedef struct _WapiShellExecuteInfo WapiShellExecuteInfo;
 struct _WapiShellExecuteInfo
 {
        guint32 cbSize;
-       WapiShellExecuteInfoFlags fMask;
+       gulong fMask;
        gpointer hwnd;
        const gunichar2 *lpVerb;
        const gunichar2 *lpFile;
        const gunichar2 *lpParameters;
        const gunichar2 *lpDirectory;
-       WapiShellExecuteShowFlags nShow;
+       gulong nShow;
        gpointer hInstApp;
        gpointer lpIDList;
        const gunichar2 *lpClass;
index 445183046320e0f98f4d173bc01c3a93da154875..01179f4d18244f0e3469aeecc5d6a1a0a90de149 100644 (file)
 
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/wapi-private.h>
-#include <mono/io-layer/misc-private.h>
 #include <mono/io-layer/handles-private.h>
 #include <mono/io-layer/semaphore-private.h>
-
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-once.h>
 
 #if 0
 #define DEBUG(...) g_message(__VA_ARGS__)
@@ -89,11 +87,9 @@ static mono_once_t sem_ops_once=MONO_ONCE_INIT;
 static void sem_ops_init (void)
 {
        _wapi_handle_register_capabilities (WAPI_HANDLE_SEM,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SIGNAL);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SIGNAL));
        _wapi_handle_register_capabilities (WAPI_HANDLE_NAMEDSEM,
-                                           WAPI_HANDLE_CAP_WAIT |
-                                           WAPI_HANDLE_CAP_SIGNAL);
+               (WapiHandleCapability)(WAPI_HANDLE_CAP_WAIT | WAPI_HANDLE_CAP_SIGNAL));
 }
 
 static void sema_signal(gpointer handle)
index f8539039cad103441bc63f977c3331251ff5df2c..64a8b330d4400934a3c8bb5667fa2fc3cc6d5fdb 100644 (file)
  * (C) 2002-2006 Novell, Inc.
  */
 
-
 #include <config.h>
 #include <glib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-
-#if defined(HAVE_SYS_SEM_H) && !(defined(__native_client__) && defined(__GLIBC__))
-#  include <sys/sem.h>
-#else
-#  define DISABLE_SHARED_HANDLES
-#endif
-
-#ifndef DISABLE_SHARED_HANDLES
-#  include <sys/mman.h>
-#  include <sys/ipc.h>
-#  ifdef HAVE_SYS_UTSNAME_H
-#    include <sys/utsname.h>
-#  endif
-#endif
 
-#include <mono/io-layer/wapi.h>
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/shared.h>
-#include <mono/io-layer/handles-private.h>
+#include <mono/utils/mono-os-mutex.h>
 
 #define DEBUGLOG(...)
 //#define DEBUGLOG(...) g_message(__VA_ARGS__);
 
-// Semaphores used when no-shared-memory use is in use
-
 static mono_mutex_t noshm_sems[_WAPI_SHARED_SEM_COUNT];
 
-static gpointer wapi_storage [16];
-
-static void
-noshm_semaphores_init (void)
-{
-       int i;
-
-       for (i = 0; i < _WAPI_SHARED_SEM_COUNT; i++) 
-               mono_mutex_init (&noshm_sems [i]);
-}
-
-static int
-noshm_sem_lock (int sem)
-{
-       int ret;
-       
-       DEBUGLOG ("%s: locking nosem %d", __func__, sem);
-       
-       ret = mono_mutex_lock (&noshm_sems[sem]);
-       
-       return ret;
-}
-
-static int
-noshm_sem_trylock (int sem)
-{
-       int ret;
-       
-       DEBUGLOG ("%s: trying to lock nosem %d", __func__, sem);
-       
-       ret = mono_mutex_trylock (&noshm_sems[sem]);
-       
-       return ret;
-}
-
-static int
-noshm_sem_unlock (int sem)
-{
-       int ret;
-       
-       DEBUGLOG ("%s: unlocking nosem %d", __func__, sem);
-       
-       ret = mono_mutex_unlock (&noshm_sems[sem]);
-       
-       return ret;
-}
-
-#ifdef DISABLE_SHARED_HANDLES
 void
 _wapi_shm_semaphores_init (void)
 {
-       noshm_semaphores_init ();
-}
-
-void
-_wapi_shm_semaphores_remove (void)
-{
-       /* Nothing */
-}
-
-int
-_wapi_shm_sem_lock (int sem)
-{
-       return noshm_sem_lock (sem);
-}
-
-int
-_wapi_shm_sem_trylock (int sem)
-{
-       return noshm_sem_trylock (sem);
-}
-
-int
-_wapi_shm_sem_unlock (int sem)
-{
-       return noshm_sem_unlock (sem);
-}
-
-gpointer
-_wapi_shm_attach (_wapi_shm_t type)
-{
-       gpointer res;
-
-       switch(type) {
-       case WAPI_SHM_DATA:
-               res = g_malloc0 (sizeof(struct _WapiHandleSharedLayout));
-               break;
-       case WAPI_SHM_FILESHARE:
-               res = g_malloc0 (sizeof(struct _WapiFileShareLayout));
-               break;
-       default:
-               g_error ("Invalid type in _wapi_shm_attach ()");
-               return NULL;
-       }
-
-       wapi_storage [type] = res;
-       return res;
-}
-
-void
-_wapi_shm_detach (_wapi_shm_t type)
-{
-       g_free (wapi_storage [type]);
-}
-
-gboolean
-_wapi_shm_enabled_internal (void)
-{
-       return FALSE;
-}
-
-#else /* DISABLE_SHARED_HANDLES */
-
-/*
- * Use POSIX shared memory if possible, it is simpler, and it has the advantage that 
- * writes to the shared area does not need to be written to disk, avoiding spinning up 
- * the disk every x secs on laptops.
- */
-#ifdef HAVE_SHM_OPEN
-#define USE_SHM 1
-#endif
-
-static gboolean _wapi_shm_disabled = TRUE;
-
-static gchar *
-_wapi_shm_base_name (_wapi_shm_t type)
-{
-       gchar *name = NULL;
-       gchar machine_name[256];
-       const gchar *fake_name;
-       struct utsname ubuf;
-       int ret;
-       int len;
-       
-       ret = uname (&ubuf);
-       if (ret == -1) {
-               ubuf.machine[0] = '\0';
-               ubuf.sysname[0] = '\0';
-       } else {
-               g_strdelimit (ubuf.sysname, "/", '_');
-               g_strdelimit (ubuf.machine, "/", '_');
-       }
-
-       fake_name = g_getenv ("MONO_SHARED_HOSTNAME");
-       if (fake_name == NULL) {
-               if (gethostname(machine_name, sizeof(machine_name)) != 0)
-                       machine_name[0] = '\0';
-       } else {
-               len = MIN (strlen (fake_name), sizeof (machine_name) - 1);
-               strncpy (machine_name, fake_name, len);
-               machine_name [len] = '\0';
-       }
-       
-       switch (type) {
-       case WAPI_SHM_DATA:
-               name = g_strdup_printf ("shared_data-%s-%s-%s-%d-%d-%d",
-                                       machine_name, ubuf.sysname,
-                                       ubuf.machine,
-                                       (int) sizeof(struct _WapiHandleShared),
-                                       _WAPI_HANDLE_VERSION, 0);
-               break;
-               
-       case WAPI_SHM_FILESHARE:
-               name = g_strdup_printf ("shared_fileshare-%s-%s-%s-%d-%d-%d",
-                                       machine_name, ubuf.sysname,
-                                       ubuf.machine,
-                                       (int) sizeof(struct _WapiFileShare),
-                                       _WAPI_HANDLE_VERSION, 0);
-               break;
-       }
-
-       return name;
-}
-
-#ifdef USE_SHM
-
-static gchar *_wapi_shm_shm_name (_wapi_shm_t type)
-{
-       char *base_name = _wapi_shm_base_name (type);
-
-       /* Also add the uid to avoid permission problems */
-       char *res = g_strdup_printf ("/mono-shared-%d-%s", getuid (), base_name);
-
-       g_free (base_name);
-
-       return res;
-}
-
-static int
-_wapi_shm_open (const char *filename, int size)
-{
-       int fd;
-
-       fd = shm_open (filename, O_CREAT|O_RDWR, S_IRUSR|S_IWUSR|S_IRGRP);
-       if (fd == -1)
-               /* Maybe /dev/shm is not mounted */
-               return -1;
-       if (ftruncate (fd, size) != 0) {
-               perror ("_wapi_shm_open (): ftruncate ()");
-               g_assert_not_reached ();
-       }
-
-       return fd;
-}
-
-#endif
-
-static gchar *
-_wapi_shm_file (_wapi_shm_t type)
-{
-       static gchar file[_POSIX_PATH_MAX];
-       gchar *name = NULL, *filename;
-       const gchar *wapi_dir;
-
-       name = _wapi_shm_base_name (type);
-
-       /* I don't know how nfs affects mmap.  If mmap() of files on
-        * nfs mounts breaks, then there should be an option to set
-        * the directory.
-        */
-       wapi_dir = g_getenv ("MONO_SHARED_DIR");
-       if (wapi_dir == NULL) {
-               filename = g_build_filename (g_get_home_dir (), ".wapi", name,
-                                            NULL);
-       } else {
-               filename = g_build_filename (wapi_dir, ".wapi", name, NULL);
-       }
-       g_free (name);
-
-       g_snprintf (file, _POSIX_PATH_MAX, "%s", filename);
-       g_free (filename);
-       
-       return file;
-}
-
-static int
-_wapi_shm_file_open (const gchar *filename, guint32 wanted_size)
-{
-       int fd;
-       struct stat statbuf;
-       int ret, tries = 0;
-       gboolean created = FALSE;
-       mode_t oldmask;
-       gchar *dir;
-               
-       /* No need to check if the dir already exists or check
-        * mkdir() errors, because on any error the open() call will
-        * report the problem.
-        */
-       dir = g_path_get_dirname (filename);
-       mkdir (dir, 0755);
-       g_free (dir);
-
-try_again:
-       if (tries++ > 10) {
-               /* Just give up */
-               return (-1);
-       } else if (tries > 5) {
-               /* Break out of a loop */
-               unlink (filename);
-       }
-       
-       /* Make sure future processes can open the shared data files */
-       oldmask = umask (066);
-
-       /* No O_CREAT yet, because we need to initialise the file if
-        * we have to create it.
-        */
-       fd = open (filename, O_RDWR, 0600);
-       umask (oldmask);
-       
-       if (fd == -1 && errno == ENOENT) {
-               /* OK, its up to us to create it.  O_EXCL to avoid a
-                * race condition where two processes can
-                * simultaneously try and create the file
-                */
-               oldmask = umask (066);
-               fd = open (filename, O_CREAT|O_EXCL|O_RDWR, 0600);
-               umask (oldmask);
-               
-               if (fd == -1 && errno == EEXIST) {
-                       /* It's possible that the file was created in
-                        * between finding it didn't exist, and trying
-                        * to create it.  Just try opening it again
-                        */
-                       goto try_again;
-               } else if (fd == -1) {
-                       g_critical ("%s: shared file [%s] open error: %s",
-                                   __func__, filename, g_strerror (errno));
-                       return -1;
-               } else {
-                       /* We created the file, so we need to expand
-                        * the file.
-                        *
-                        * (wanted_size-1, because we're about to
-                        * write the other byte to actually expand the
-                        * file.)
-                        */
-                       if (lseek (fd, wanted_size-1, SEEK_SET) == -1) {
-                               g_critical ("%s: shared file [%s] lseek error: %s", __func__, filename, g_strerror (errno));
-                               close (fd);
-                               unlink (filename);
-                               return -1;
-                       }
-                       
-                       do {
-                               ret = write (fd, "", 1);
-                       } while (ret == -1 && errno == EINTR);
-                               
-                       if (ret == -1) {
-                               g_critical ("%s: shared file [%s] write error: %s", __func__, filename, g_strerror (errno));
-                               close (fd);
-                               unlink (filename);
-                               return -1;
-                       }
-                       
-                       created = TRUE;
-
-                       /* The contents of the file is set to all
-                        * zero, because it is opened up with lseek,
-                        * so we don't need to do any more
-                        * initialisation here
-                        */
-               }
-       } else if (fd == -1) {
-               g_critical ("%s: shared file [%s] open error: %s", __func__,
-                           filename, g_strerror (errno));
-               return -1;
-       }
-       
-       /* Use stat to find the file size (instead of hard coding it)
-        * because we can expand the file later if needed (for more
-        * handles or scratch space.)
-        */
-       if (fstat (fd, &statbuf) == -1) {
-               g_critical ("%s: fstat error: %s", __func__,
-                           g_strerror (errno));
-               if (created == TRUE) {
-                       unlink (filename);
-               }
-               close (fd);
-               return -1;
-       }
-
-       if (statbuf.st_size < wanted_size) {
-               close (fd);
-               if (created == TRUE) {
-                       g_critical ("%s: shared file [%s] is not big enough! (found %ld, need %d bytes)", __func__, filename, (long)statbuf.st_size, wanted_size);
-                       unlink (filename);
-                       return -1;
-               } else {
-                       /* We didn't create it, so just try opening it again */
-                       _wapi_handle_spin (100);
-                       goto try_again;
-               }
-       }
-       
-       return fd;
-}
-
-gboolean
-_wapi_shm_enabled_internal (void)
-{
-       static gboolean env_checked;
-
-       if (!env_checked) {
-               if (g_getenv ("MONO_ENABLE_SHM"))
-                       _wapi_shm_disabled = FALSE;
-               env_checked = TRUE;
-       }
-
-       return !_wapi_shm_disabled;
-}
-
-/*
- * _wapi_shm_attach:
- * @success: Was it a success
- *
- * Attach to the shared memory file or create it if it did not exist.
- * Returns the memory area the file was mmapped to.
- */
-gpointer
-_wapi_shm_attach (_wapi_shm_t type)
-{
-       gpointer shm_seg;
-       int fd;
-       struct stat statbuf;
-       gchar *filename = _wapi_shm_file (type), *shm_name;
-       guint32 size;
-       
-       switch(type) {
-       case WAPI_SHM_DATA:
-               size = sizeof(struct _WapiHandleSharedLayout);
-               break;
-               
-       case WAPI_SHM_FILESHARE:
-               size = sizeof(struct _WapiFileShareLayout);
-               break;
-       default:
-               g_error ("Invalid type in _wapi_shm_attach ()");
-               return NULL;
-       }
-
-       if (!_wapi_shm_enabled ()) {
-               wapi_storage [type] = g_malloc0 (size);
-               return wapi_storage [type];
-       }
-
-#ifdef USE_SHM
-       shm_name = _wapi_shm_shm_name (type);
-       fd = _wapi_shm_open (shm_name, size);
-       g_free (shm_name);
-#else
-       fd = -1;
-#endif
-
-       /* Fall back to files if POSIX shm fails (for example, because /dev/shm is not mounted */
-       if (fd == -1)
-               fd = _wapi_shm_file_open (filename, size);
-       if (fd == -1) {
-               g_critical ("%s: shared file [%s] open error", __func__,
-                           filename);
-               return NULL;
-       }
-
-       if (fstat (fd, &statbuf)==-1) {
-               g_critical ("%s: fstat error: %s", __func__,
-                           g_strerror (errno));
-               close (fd);
-               return NULL;
-       }
-       
-       shm_seg = mmap (NULL, statbuf.st_size, PROT_READ|PROT_WRITE,
-                       MAP_SHARED, fd, 0);
-       if (shm_seg == MAP_FAILED) {
-               shm_seg = mmap (NULL, statbuf.st_size, PROT_READ|PROT_WRITE,
-                       MAP_PRIVATE, fd, 0);
-               if (shm_seg == MAP_FAILED) {
-                       g_critical ("%s: mmap error: %s", __func__, g_strerror (errno));
-                       close (fd);
-                       return NULL;
-               }
-       }
-               
-       close (fd);
-       return shm_seg;
-}
-
-void
-_wapi_shm_detach (_wapi_shm_t type)
-{
-       if (!_wapi_shm_enabled ())
-               g_free (wapi_storage [type]);
-}
-
-static void
-shm_semaphores_init (void)
-{
-       key_t key;
-       key_t oldkey;
-       int thr_ret;
-       struct _WapiHandleSharedLayout *tmp_shared;
-       gchar *ftmp;
-       gchar *filename;
-       
-       /*
-        * Yet more barmy API - this union is a well-defined parameter
-        * in a syscall, yet I still have to define it here as it
-        * doesn't appear in a header
-        */
-       union semun {
-               int val;
-               struct semid_ds *buf;
-               ushort *array;
-       } defs;
-       ushort def_vals[_WAPI_SHARED_SEM_COUNT];
        int i;
-       int retries = 0;
-       
-       for (i = 0; i < _WAPI_SHARED_SEM_COUNT; i++) {
-               def_vals[i] = 1;
-       }
-
-       /*
-        * Process count must start at '0' - the 1 for all the others
-        * sets the semaphore to "unlocked"
-        */
-       def_vals[_WAPI_SHARED_SEM_PROCESS_COUNT] = 0;
-       
-       defs.array = def_vals;
-       
-       /*
-        *Temporarily attach the shared data so we can read the
-        * semaphore key.  We release this mapping and attach again
-        * after getting the semaphores to avoid a race condition
-        * where a terminating process can delete the shared files
-        * between a new process attaching the file and getting access
-        * to the semaphores (which increments the process count,
-        * preventing destruction of the shared data...)
-        */
-       tmp_shared = _wapi_shm_attach (WAPI_SHM_DATA);
-       g_assert (tmp_shared != NULL);
-       
-#ifdef USE_SHM
-       ftmp=_wapi_shm_shm_name (WAPI_SHM_DATA);
-       filename = g_build_filename ("/dev/shm", ftmp, NULL);
-       g_assert (filename!=NULL);
-       key = ftok (filename, 'M');
-       g_free (ftmp);
-       g_free (filename);
-#else
-       key = ftok ( _wapi_shm_file (WAPI_SHM_DATA), 'M');
-#endif
-
-again:
-       retries++;
-       oldkey = tmp_shared->sem_key;
-
-       if (oldkey == 0) {
-               DEBUGLOG ("%s: Creating with new key (0x%x)", __func__, key);
-
-               /*
-                * The while loop attempts to make some sense of the
-                * bonkers 'think of a random number' method of
-                * picking a key without collision with other
-                * applications
-                */
-               while ((_wapi_sem_id = semget (key, _WAPI_SHARED_SEM_COUNT,
-                                              IPC_CREAT | IPC_EXCL | 0600)) == -1) {
-                       if (errno == ENOMEM) {
-                               g_error ("%s: semget error: %s", __func__,
-                                           g_strerror (errno));
-                       } else if (errno == ENOSPC) {
-                               g_error ("%s: semget error: %s.  Try deleting some semaphores with ipcs and ipcrm\nor increase the maximum number of semaphore in the system.", __func__, g_strerror (errno));
-                       } else if (errno != EEXIST) {
-                               if (retries > 3)
-                                       g_warning ("%s: semget error: %s key 0x%x - trying again", __func__,
-                                                       g_strerror (errno), key);
-                       }
-                       
-                       key++;
-                       DEBUGLOG ("%s: Got (%s), trying with new key (0x%x)", __func__, g_strerror (errno), key);
-               }
-               /*
-                * Got a semaphore array, so initialise it and install
-                * the key into the shared memory
-                */
-               
-               if (semctl (_wapi_sem_id, 0, SETALL, defs) == -1) {
-                       if (retries > 3)
-                               g_warning ("%s: semctl init error: %s - trying again", __func__, g_strerror (errno));
-
-                       /*
-                        * Something went horribly wrong, so try
-                        * getting a new set from scratch
-                        */
-                       semctl (_wapi_sem_id, 0, IPC_RMID);
-                       goto again;
-               }
-
-               if (InterlockedCompareExchange (&tmp_shared->sem_key,
-                                               key, 0) != 0) {
-                       /*
-                        * Someone else created one and installed the
-                        * key while we were working, so delete the
-                        * array we created and fall through to the
-                        * 'key already known' case.
-                        */
-                       semctl (_wapi_sem_id, 0, IPC_RMID);
-                       oldkey = tmp_shared->sem_key;
-               } else {
-                       /*
-                        * We've installed this semaphore set's key into
-                        * the shared memory
-                        */
-                       goto done;
-               }
-       }
-       
-       DEBUGLOG ("%s: Trying with old key 0x%x", __func__, oldkey);
-
-       _wapi_sem_id = semget (oldkey, _WAPI_SHARED_SEM_COUNT, 0600);
-       if (_wapi_sem_id == -1) {
-               if (retries > 3)
-                       g_warning ("%s: semget error opening old key 0x%x (%s) - trying again",
-                                       __func__, oldkey,g_strerror (errno));
-
-               /*
-                * Someone must have deleted the semaphore set, so
-                * blow away the bad key and try again
-                */
-               InterlockedCompareExchange (&tmp_shared->sem_key, 0, oldkey);
-               
-               goto again;
-       }
-
-  done:
-       /* Increment the usage count of this semaphore set */
-       thr_ret = _wapi_shm_sem_lock (_WAPI_SHARED_SEM_PROCESS_COUNT_LOCK);
-       g_assert (thr_ret == 0);
-       
-       DEBUGLOG ("%s: Incrementing the process count (%d)", __func__, _wapi_getpid ());
-
-       /*
-        * We only ever _unlock_ this semaphore, letting the kernel
-        * restore (ie decrement) this unlock when this process exits.
-        * We lock another semaphore around it so we can serialise
-        * access when we're testing the value of this semaphore when
-        * we exit cleanly, so we can delete the whole semaphore set.
-        */
-       _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_PROCESS_COUNT);
-
-       DEBUGLOG ("%s: Process count is now %d (%d)", __func__, semctl (_wapi_sem_id, _WAPI_SHARED_SEM_PROCESS_COUNT, GETVAL), _wapi_getpid ());
-       
-       _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_PROCESS_COUNT_LOCK);
-
-       if (_wapi_shm_disabled)
-               g_free (tmp_shared);
-       else
-               munmap (tmp_shared, sizeof(struct _WapiHandleSharedLayout));
-}
-
-static void
-shm_semaphores_remove (void)
-{
-       int thr_ret;
-       int proc_count;
-       gchar *shm_name;
-       
-       DEBUGLOG ("%s: Checking process count (%d)", __func__, _wapi_getpid ());
-       
-       thr_ret = _wapi_shm_sem_lock (_WAPI_SHARED_SEM_PROCESS_COUNT_LOCK);
-       g_assert (thr_ret == 0);
-       
-       proc_count = semctl (_wapi_sem_id, _WAPI_SHARED_SEM_PROCESS_COUNT,
-                            GETVAL);
-
-       g_assert (proc_count > 0);
-       if (proc_count == 1) {
-               /*
-                * Just us, so blow away the semaphores and the shared
-                * files
-                */
-               DEBUGLOG ("%s: Removing semaphores! (%d)", __func__, _wapi_getpid ());
-
-               semctl (_wapi_sem_id, 0, IPC_RMID);
-#ifdef USE_SHM
-               shm_name = _wapi_shm_shm_name (WAPI_SHM_DATA);
-               shm_unlink (shm_name);
-               g_free (shm_name);
-
-               shm_name = _wapi_shm_shm_name (WAPI_SHM_FILESHARE);
-               shm_unlink (shm_name);
-               g_free (shm_name);
-#endif
-               unlink (_wapi_shm_file (WAPI_SHM_DATA));
-               unlink (_wapi_shm_file (WAPI_SHM_FILESHARE));
-       } else {
-               /*
-                * "else" clause, because there's no point unlocking
-                * the semaphore if we've just blown it away...
-                */
-               _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_PROCESS_COUNT_LOCK);
-       }
-}
-
-static int
-shm_sem_lock (int sem)
-{
-       struct sembuf ops;
-       int ret;
-       
-       DEBUGLOG ("%s: locking sem %d", __func__, sem);
-
-       ops.sem_num = sem;
-       ops.sem_op = -1;
-       ops.sem_flg = SEM_UNDO;
-       
-  retry:
-       do {
-               ret = semop (_wapi_sem_id, &ops, 1);
-       } while (ret == -1 && errno == EINTR);
-
-       if (ret == -1) {
-               /*
-                * EINVAL covers the case when the semaphore was
-                * deleted before we started the semop
-                */
-               if (errno == EIDRM || errno == EINVAL) {
-                       /*
-                        * Someone blew away this semaphore set, so
-                        * get a new one and try again
-                        */
-                       DEBUGLOG ("%s: Reinitialising the semaphores!", __func__);
-
-                       _wapi_shm_semaphores_init ();
-                       goto retry;
-               }
-               
-               /* Turn this into a pthreads-style return value */
-               ret = errno;
-       }
-       
-       DEBUGLOG ("%s: returning %d (%s)", __func__, ret, g_strerror (ret));
-       
-       return ret;
-}
-
-static int
-shm_sem_trylock (int sem)
-{
-       struct sembuf ops;
-       int ret;
-       
-       DEBUGLOG ("%s: trying to lock sem %d", __func__, sem);
-       
-       ops.sem_num = sem;
-       ops.sem_op = -1;
-       ops.sem_flg = IPC_NOWAIT | SEM_UNDO;
-       
-  retry:
-       do {
-               ret = semop (_wapi_sem_id, &ops, 1);
-       } while (ret == -1 && errno == EINTR);
-
-       if (ret == -1) {
-               /*
-                * EINVAL covers the case when the semaphore was
-                * deleted before we started the semop
-                */
-               if (errno == EIDRM || errno == EINVAL) {
-                       /*
-                        * Someone blew away this semaphore set, so
-                        * get a new one and try again
-                        */
-                       DEBUGLOG ("%s: Reinitialising the semaphores!", __func__);
-
-                       _wapi_shm_semaphores_init ();
-                       goto retry;
-               }
-               
-               /* Turn this into a pthreads-style return value */
-               ret = errno;
-       }
-       
-       if (ret == EAGAIN) {
-               /* But pthreads uses this code instead */
-               ret = EBUSY;
-       }
-       
-       DEBUGLOG ("%s: returning %d (%s)", __func__, ret, g_strerror (ret));
-       
-       return ret;
-}
-
-static int
-shm_sem_unlock (int sem)
-{
-       struct sembuf ops;
-       int ret;
-       
-       DEBUGLOG ("%s: unlocking sem %d", __func__, sem);
-       
-       ops.sem_num = sem;
-       ops.sem_op = 1;
-       ops.sem_flg = SEM_UNDO;
-       
-  retry:
-       do {
-               ret = semop (_wapi_sem_id, &ops, 1);
-       } while (ret == -1 && errno == EINTR);
-
-       if (ret == -1) {
-               /* EINVAL covers the case when the semaphore was
-                * deleted before we started the semop
-                */
-               if (errno == EIDRM || errno == EINVAL) {
-                       /* Someone blew away this semaphore set, so
-                        * get a new one and try again (we can't just
-                        * assume that the semaphore is now unlocked)
-                        */
-                       DEBUGLOG ("%s: Reinitialising the semaphores!", __func__);
-
-                       _wapi_shm_semaphores_init ();
-                       goto retry;
-               }
-               
-               /* Turn this into a pthreads-style return value */
-               ret = errno;
-       }
-       
-       DEBUGLOG ("%s: returning %d (%s)", __func__, ret, g_strerror (ret));
-
-       return ret;
-}
-
-void
-_wapi_shm_semaphores_init (void)
-{
-       if (!_wapi_shm_enabled ())
-               noshm_semaphores_init ();
-       else
-               shm_semaphores_init ();
+       for (i = 0; i < _WAPI_SHARED_SEM_COUNT; i++) 
+               mono_os_mutex_init (&noshm_sems [i]);
 }
 
 void
 _wapi_shm_semaphores_remove (void)
 {
-       if (!_wapi_shm_disabled) 
-               shm_semaphores_remove ();
+       /* Nothing */
 }
 
 int
 _wapi_shm_sem_lock (int sem)
 {
-       if (_wapi_shm_disabled) 
-               return noshm_sem_lock (sem);
-       else
-               return shm_sem_lock (sem);
+       DEBUGLOG ("%s: locking nosem %d", __func__, sem);
+       return mono_os_mutex_lock (&noshm_sems[sem]);
 }
 
 int
 _wapi_shm_sem_trylock (int sem)
 {
-       if (_wapi_shm_disabled) 
-               return noshm_sem_trylock (sem);
-       else 
-               return shm_sem_trylock (sem);
+       DEBUGLOG ("%s: trying to lock nosem %d", __func__, sem);
+       return mono_os_mutex_trylock (&noshm_sems[sem]);
 }
 
 int
 _wapi_shm_sem_unlock (int sem)
 {
-       if (_wapi_shm_disabled) 
-               return noshm_sem_unlock (sem);
-       else 
-               return shm_sem_unlock (sem);
+       DEBUGLOG ("%s: unlocking nosem %d", __func__, sem);
+       return mono_os_mutex_unlock (&noshm_sems[sem]);
 }
-#endif /* !DISABLE_SHARED_HANDLES */
index 5f66a732e6d680d5dcbb4d36c220b500bc48a5d3..4807adc5a8e8af2567b97cf6e1b514d88eefe1e9 100644 (file)
 #ifndef _WAPI_SHARED_H_
 #define _WAPI_SHARED_H_
 
-#include <mono/io-layer/wapi-private.h>
-
-typedef enum {
-       WAPI_SHM_DATA,
-       WAPI_SHM_FILESHARE
-} _wapi_shm_t;
-
-extern gpointer _wapi_shm_attach (_wapi_shm_t type);
-extern void _wapi_shm_detach (_wapi_shm_t type);
-extern gboolean _wapi_shm_enabled_internal (void);
 extern void _wapi_shm_semaphores_init (void);
 extern void _wapi_shm_semaphores_remove (void);
 extern int _wapi_shm_sem_lock (int sem);
 extern int _wapi_shm_sem_trylock (int sem);
 extern int _wapi_shm_sem_unlock (int sem);
 
-static inline gboolean
-_wapi_shm_enabled (void)
-{
-#ifdef DISABLE_SHARED_HANDLES
-       return FALSE;
-#else
-       return _wapi_shm_enabled_internal ();
-#endif
-}
-
 #endif /* _WAPI_SHARED_H_ */
index c5279448570c77be44ca5c6f15b97ede95151c8e..54c8798637c27a71cae21ba763b3dea7cd9a06a9 100644 (file)
@@ -42,6 +42,7 @@
 #include <mono/io-layer/handles-private.h>
 #include <mono/io-layer/socket-wrappers.h>
 #include <mono/utils/mono-poll.h>
+#include <mono/utils/mono-once.h>
 
 #include <netinet/in.h>
 #include <netinet/tcp.h>
@@ -840,10 +841,10 @@ guint32 _wapi_socket(int domain, int type, int protocol, void *unused,
         * https://bugzilla.novell.com/show_bug.cgi?id=MONO53992
         */
        {
-               int ret, true = 1;
+               int ret, true_ = 1;
        
-               ret = setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, &true,
-                                 sizeof (true));
+               ret = setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, &true_,
+                                 sizeof (true_));
                if (ret == -1) {
                        int errnum = errno;
 
@@ -1164,7 +1165,7 @@ WSAIoctl (guint32 fd, gint32 command,
        }
 
        if (i_len > 0) {
-               buffer = g_memdup (input, i_len);
+               buffer = (char *)g_memdup (input, i_len);
        }
 
        ret = ioctl (fd, command, buffer);
index 13ae9961477eae4bfac003d9fd64f6caba15e507..d634ae956ec8f1beb980e440f5261e52bf55ea71 100644 (file)
@@ -72,7 +72,7 @@ typedef struct
 #define SIO_KEEPALIVE_VALS 0x98000004
 
 typedef gboolean (*WapiDisconnectExFn)(guint32, WapiOverlapped *, guint32,
-                                       WapiTransmitFileFlags);
+                                       guint32);
 typedef gboolean (*WapiTransmitFileFn)(guint32, gpointer, guint32, guint32,
                                        WapiOverlapped *,
                                        WapiTransmitFileBuffers *,
index 3ea1af1197884f7efaa31af5c52d7e52b970c7d5..3cf5535c5b821492f971a9c347cc1144a4f0ba28 100644 (file)
@@ -13,7 +13,6 @@
 #include <config.h>
 #include <glib.h>
 #include <pthread.h>
-#include <mono/utils/mono-semaphore.h>
 
 /* There doesn't seem to be a defined symbol for this */
 #define _WAPI_THREAD_CURRENT (gpointer)0xFFFFFFFE
index a756a40fb64a7f42dd96e4b70bcda5252afd34eb..a00569d1a99a34f20708bd86650d0591e54f19fb 100644 (file)
@@ -26,10 +26,6 @@ G_BEGIN_DECLS
 
 typedef guint32 (*WapiThreadStart)(gpointer);
 
-extern gsize GetCurrentThreadId(void); /* NB return is 32bit in MS API */
-extern void Sleep(guint32 ms);
-extern guint32 SleepEx(guint32 ms, gboolean alertable);
-
 gpointer wapi_create_thread_handle (void);
 void wapi_thread_handle_set_exited (gpointer handle, guint32 exitstatus);
 void wapi_ref_thread_handle (gpointer handle);
@@ -37,5 +33,8 @@ gpointer wapi_get_current_thread_handle (void);
 
 char* wapi_current_thread_desc (void);
 
+extern gint32 GetThreadPriority (gpointer handle);
+extern gboolean SetThreadPriority (gpointer handle, gint32 priority);
+
 G_END_DECLS
 #endif /* _WAPI_THREADS_H_ */
index 2dc95f326156918a028873d82738fb35d6cbb933..8a147e1f2e46c0a9fd9124814a548df3ccd2c1ec 100644 (file)
@@ -901,7 +901,7 @@ VerQueryValue (gconstpointer datablock, const gunichar2 *subblock, gpointer *buf
                                            string_value != NULL &&
                                            string_value_len != 0) {
                                                *buffer = string_value;
-                                               *len = unicode_chars (string_value) + 1; /* Include trailing null */
+                                               *len = unicode_chars ((const gunichar2 *)string_value) + 1; /* Include trailing null */
                                                ret = TRUE;
                                                goto done;
                                        }
index 42fc96fe4fb6ad14bdeb451437b48b1bc0b0ac53..2d94e91d4fdf7955bfe7d7cd9e164ba5552a02fa 100644 (file)
@@ -15,9 +15,6 @@
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/handles-private.h>
 #include <mono/io-layer/wapi-private.h>
-#include <mono/io-layer/misc-private.h>
-
-#include <mono/utils/mono-mutex.h>
 
 #if 0
 #define DEBUG(...) g_message(__VA_ARGS__)
@@ -92,7 +89,6 @@ guint32 WaitForSingleObjectEx(gpointer handle, guint32 timeout,
                              gboolean alertable)
 {
        guint32 ret, waited;
-       struct timespec abstime;
        int thr_ret;
        gboolean apc_pending = FALSE;
        gpointer current_thread = wapi_get_current_thread_handle ();
@@ -164,10 +160,6 @@ guint32 WaitForSingleObjectEx(gpointer handle, guint32 timeout,
                ret = WAIT_TIMEOUT;
                goto done;
        }
-       /* Have to wait for it */
-       if (timeout != INFINITE) {
-               _wapi_calc_timeout (&abstime, timeout);
-       }
        
        do {
                /* Check before waiting on the condition, just in case
@@ -182,7 +174,7 @@ guint32 WaitForSingleObjectEx(gpointer handle, guint32 timeout,
                        goto done;
                }
 
-               waited = _wapi_handle_timedwait_signal_handle (handle, timeout == INFINITE ? NULL : &abstime, alertable, FALSE, &apc_pending);
+               waited = _wapi_handle_timedwait_signal_handle (handle, timeout, alertable, FALSE, &apc_pending);
 
                if(waited==0 && !apc_pending) {
                        /* Condition was signalled, so hopefully
@@ -262,7 +254,6 @@ guint32 SignalObjectAndWait(gpointer signal_handle, gpointer wait,
                            guint32 timeout, gboolean alertable)
 {
        guint32 ret, waited;
-       struct timespec abstime;
        int thr_ret;
        gboolean apc_pending = FALSE;
        gpointer current_thread = wapi_get_current_thread_handle ();
@@ -340,11 +331,6 @@ guint32 SignalObjectAndWait(gpointer signal_handle, gpointer wait,
                goto done;
        }
 
-       /* Have to wait for it */
-       if (timeout != INFINITE) {
-               _wapi_calc_timeout (&abstime, timeout);
-       }
-       
        do {
                /* Check before waiting on the condition, just in case
                 */
@@ -357,7 +343,7 @@ guint32 SignalObjectAndWait(gpointer signal_handle, gpointer wait,
                        goto done;
                }
 
-               waited = _wapi_handle_timedwait_signal_handle (wait, timeout == INFINITE ? NULL : &abstime, alertable, FALSE, &apc_pending);
+               waited = _wapi_handle_timedwait_signal_handle (wait, timeout, alertable, FALSE, &apc_pending);
 
                if (waited==0 && !apc_pending) {
                        /* Condition was signalled, so hopefully
@@ -456,7 +442,6 @@ guint32 WaitForMultipleObjectsEx(guint32 numobjects, gpointer *handles,
 {
        gboolean duplicate = FALSE, bogustype = FALSE, done;
        guint32 count, lowest;
-       struct timespec abstime;
        guint i;
        guint32 ret;
        int thr_ret;
@@ -551,10 +536,6 @@ guint32 WaitForMultipleObjectsEx(guint32 numobjects, gpointer *handles,
        /* Have to wait for some or all handles to become signalled
         */
 
-       if(timeout!=INFINITE) {
-               _wapi_calc_timeout (&abstime, timeout);
-       }
-
        for (i = 0; i < numobjects; i++) {
                /* Add a reference, as we need to ensure the handle wont
                 * disappear from under us while we're waiting in the loop
@@ -595,7 +576,7 @@ guint32 WaitForMultipleObjectsEx(guint32 numobjects, gpointer *handles,
                
                if (!done) {
                        /* Enter the wait */
-                       ret = _wapi_handle_timedwait_signal (timeout == INFINITE ? NULL : &abstime, poll, &apc_pending);
+                       ret = _wapi_handle_timedwait_signal (timeout, poll, &apc_pending);
                } else {
                        /* No need to wait */
                        ret = 0;
index ee228b070f943091684369a999f80d4305fac623..e01cdf6804cda195b9b55d6cd89a89f9d0e8c109 100644 (file)
 #include <glib.h>
 #include <sys/stat.h>
 
+#include <mono/io-layer/wapi.h>
 #include <mono/io-layer/handles.h>
 #include <mono/io-layer/io.h>
 
+#include <mono/utils/mono-os-mutex.h>
+
 /* Increment this whenever an incompatible change is made to the
  * shared handle structure.
  */
@@ -171,7 +174,7 @@ struct _WapiHandleSharedLayout
        struct _WapiHandleShared handles[_WAPI_HANDLE_INITIAL_COUNT];
 };
 
-#define _WAPI_FILESHARE_SIZE 102400
+typedef struct _WapiHandleSharedLayout _WapiHandleSharedLayout;
 
 struct _WapiFileShare
 {
@@ -189,15 +192,6 @@ struct _WapiFileShare
 
 typedef struct _WapiFileShare _WapiFileShare;
 
-struct _WapiFileShareLayout
-{
-       guint32 hwm;
-       
-       struct _WapiFileShare share_info[_WAPI_FILESHARE_SIZE];
-};
-
-
-
 #define _WAPI_HANDLE_INVALID (gpointer)-1
 
 #endif /* _WAPI_PRIVATE_H_ */
index 123755888b590792818522f1d80016c2525a74e9..211c92bba176c3d054a87177385a527bec908998 100644 (file)
@@ -89,9 +89,6 @@
 #define WSARecv wapi_WSARecv 
 #define WSASend wapi_WSASend 
 #define GetSystemInfo wapi_GetSystemInfo
-#define GetCurrentThreadId wapi_GetCurrentThreadId
-#define Sleep wapi_Sleep
-#define SleepEx wapi_SleepEx
 #define QueryPerformanceCounter wapi_QueryPerformanceCounter
 #define QueryPerformanceFrequency wapi_QueryPerformanceFrequency
 #define GetTickCount wapi_GetTickCount 
index c2a89920c3469295084603cbc06377c335b92199..c6cbecd49c5758a4501b732c3e840e0b9c80a719 100644 (file)
@@ -31,6 +31,4 @@
 #include <mono/io-layer/versioninfo.h>
 #include <mono/io-layer/wait.h>
 
-#include <mono/utils/mono-mutex.h>
-
 #endif /* _WAPI_WAPI_H_ */
index 31c7f6d94111971a913552abda8b601c234446e3..88864821be44d394939dd5d19a9c87239eee38f7 100644 (file)
@@ -266,8 +266,9 @@ globextend(const gchar *path, wapi_glob_t *pglob, size_t *limitp)
        const gchar *p;
 
        newsize = sizeof(*pathv) * (2 + pglob->gl_pathc + pglob->gl_offs);
-       pathv = pglob->gl_pathv ? realloc((char *)pglob->gl_pathv, newsize) :
-           malloc(newsize);
+       /* FIXME: Can just use realloc(). */
+       pathv = (char **)(pglob->gl_pathv ? realloc((char *)pglob->gl_pathv, newsize) :
+           malloc(newsize));
        if (pathv == NULL) {
                if (pglob->gl_pathv) {
                        free(pglob->gl_pathv);
@@ -288,7 +289,7 @@ globextend(const gchar *path, wapi_glob_t *pglob, size_t *limitp)
                ;
        len = (size_t)(p - path);
        *limitp += len;
-       if ((copy = malloc(len)) != NULL) {
+       if ((copy = (char *)malloc(len)) != NULL) {
                if (g_Ctoc(path, copy, len)) {
                        free(copy);
                        return(WAPI_GLOB_NOSPACE);
index 781e3318f276ec37fd24cc39e700f13c10c746ee..c9c8a907240d84b4aa2d9e00d76dd563954fbef3 100644 (file)
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/handles-private.h>
-#include <mono/io-layer/misc-private.h>
 #include <mono/io-layer/thread-private.h>
 #include <mono/io-layer/mutex-private.h>
 
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/atomic.h>
-#include <mono/utils/mono-mutex.h>
-#include <mono/utils/mono-lazy-init.h>
 #include <mono/utils/mono-time.h>
+#include <mono/utils/mono-once.h>
 
 #ifdef HAVE_VALGRIND_MEMCHECK_H
 #include <valgrind/memcheck.h>
@@ -57,6 +55,14 @@ struct _WapiHandleOps _wapi_thread_ops = {
        NULL,                           /* special_wait */
        NULL                            /* prewait */
 };
+typedef enum {
+       THREAD_PRIORITY_LOWEST = -2,
+       THREAD_PRIORITY_BELOW_NORMAL = -1,
+       THREAD_PRIORITY_NORMAL = 0,
+       THREAD_PRIORITY_ABOVE_NORMAL = 1,
+       THREAD_PRIORITY_HIGHEST = 2
+} WapiThreadPriority;
 
 static mono_once_t thread_ops_once = MONO_ONCE_INIT;
 
@@ -199,193 +205,231 @@ wapi_get_current_thread_handle (void)
        return get_current_thread_handle ();
 }
 
-/**
- * GetCurrentThreadId:
- *
- * Looks up the thread ID of the current thread.  This ID can be
- * passed to OpenThread() to create a new handle on this thread.
- *
- * Return value: the thread ID.  NB this is defined as DWORD (ie 32
- * bit) in the MS API, but we need to cope with 64 bit IDs for s390x
- * and amd64.  This doesn't really break the API, it just embraces and
- * extends it on 64bit platforms :)
- */
-gsize
-GetCurrentThreadId (void)
+gboolean
+_wapi_thread_cur_apc_pending (void)
 {
-       MonoNativeThreadId id;
-
-       id = mono_native_thread_id_get ();
-       return MONO_NATIVE_THREAD_ID_TO_UINT (id);
+       return mono_thread_info_is_interrupt_state (mono_thread_info_current ());
 }
 
-static mono_lazy_init_t sleepex_init = MONO_LAZY_INIT_STATUS_NOT_INITIALIZED;
-static mono_mutex_t sleepex_mutex;
-static mono_cond_t sleepex_cond;
-
-static void
-sleepex_initialize (void)
+void
+_wapi_thread_own_mutex (gpointer mutex)
 {
-       mono_mutex_init (&sleepex_mutex);
-       mono_cond_init (&sleepex_cond, NULL);
-}
+       WapiHandle_thread *thread;
+       
+       thread = get_current_thread ();
 
-static void
-sleepex_interrupt (gpointer data)
-{
-       mono_mutex_lock (&sleepex_mutex);
-       mono_cond_broadcast (&sleepex_cond);
-       mono_mutex_unlock (&sleepex_mutex);
+       _wapi_handle_ref (mutex);
+       
+       g_ptr_array_add (thread->owned_mutexes, mutex);
 }
 
-static inline guint32
-sleepex_interruptable (guint32 ms)
+void
+_wapi_thread_disown_mutex (gpointer mutex)
 {
-       gboolean interrupted;
-       guint32 start, now, end;
-
-       g_assert (INFINITE == G_MAXUINT32);
-
-       start = mono_msec_ticks ();
-
-       if (start < G_MAXUINT32 - ms) {
-               end = start + ms;
-       } else {
-               /* start + ms would overflow guint32 */
-               end = G_MAXUINT32;
-       }
+       WapiHandle_thread *thread;
 
-       mono_lazy_initialize (&sleepex_init, sleepex_initialize);
+       thread = get_current_thread ();
 
-       mono_mutex_lock (&sleepex_mutex);
+       _wapi_handle_unref (mutex);
+       
+       g_ptr_array_remove (thread->owned_mutexes, mutex);
+}
 
-       for (now = mono_msec_ticks (); ms == INFINITE || now - start < ms; now = mono_msec_ticks ()) {
-               mono_thread_info_install_interrupt (sleepex_interrupt, NULL, &interrupted);
-               if (interrupted) {
-                       mono_mutex_unlock (&sleepex_mutex);
-                       return WAIT_IO_COMPLETION;
+/**
+ * _wapi_thread_posix_priority_to_priority:
+ *
+ *   Convert a POSIX priority to a WapiThreadPriority.
+ * sched_priority is a POSIX priority,
+ * policy is the current scheduling policy
+ */
+static WapiThreadPriority 
+_wapi_thread_posix_priority_to_priority (int sched_priority, int policy)
+{
+/* Necessary to get valid priority range */
+#ifdef _POSIX_PRIORITY_SCHEDULING
+       int max,
+           min,
+           i,
+           priority,
+           chunk;
+       WapiThreadPriority priorities[] = {
+               THREAD_PRIORITY_LOWEST,
+               THREAD_PRIORITY_LOWEST,
+               THREAD_PRIORITY_BELOW_NORMAL,
+               THREAD_PRIORITY_NORMAL,
+               THREAD_PRIORITY_ABOVE_NORMAL,
+               THREAD_PRIORITY_HIGHEST,
+               THREAD_PRIORITY_HIGHEST
+       };
+           
+       max = sched_get_priority_max (policy);
+       min = sched_get_priority_min (policy);
+       
+       /* Partition priority range linearly, 
+          assign each partition a thread priority */
+       if (max != min && 0 <= max && 0 <= min) {
+               for (i=1, priority=min, chunk=(max-min)/7; 
+                    i<6 && sched_priority > priority;
+                    ++i) {
+                       priority += chunk;
+               }
+               
+               if (max <= priority)
+               {
+                       return (THREAD_PRIORITY_HIGHEST);
                }
-
-               if (ms < INFINITE)
-                       mono_cond_timedwait_ms (&sleepex_cond, &sleepex_mutex, end - now);
                else
-                       mono_cond_wait (&sleepex_cond, &sleepex_mutex);
-
-               mono_thread_info_uninstall_interrupt (&interrupted);
-               if (interrupted) {
-                       mono_mutex_unlock (&sleepex_mutex);
-                       return WAIT_IO_COMPLETION;
+               {
+                       return (priorities[i-1]);
                }
        }
+#endif
 
-       mono_mutex_unlock (&sleepex_mutex);
-
-       return 0;
+       return (THREAD_PRIORITY_NORMAL);
 }
 
 /**
- * SleepEx:
- * @ms: The time in milliseconds to suspend for
- * @alertable: if TRUE, the wait can be interrupted by an APC call
+ * _wapi_thread_priority_to_posix_priority:
  *
- * Suspends execution of the current thread for @ms milliseconds.  A
- * value of zero causes the thread to relinquish its time slice.  A
- * value of %INFINITE causes an infinite delay.
+ *   Convert a WapiThreadPriority to a POSIX priority.
+ * priority is a WapiThreadPriority,
+ * policy is the current scheduling policy
  */
-guint32
-SleepEx (guint32 ms, gboolean alertable)
+static int 
+_wapi_thread_priority_to_posix_priority (WapiThreadPriority priority, int policy)
 {
-       if (ms == 0) {
-               MonoThreadInfo *info;
-
-               mono_thread_info_yield ();
-
-               info = mono_thread_info_current ();
-               if (info && mono_thread_info_is_interrupt_state (info))
-                       return WAIT_IO_COMPLETION;
-
-               return 0;
-       }
-
-       if (alertable)
-               return sleepex_interruptable (ms);
-
-       DEBUG("%s: Sleeping for %d ms", __func__, ms);
-
-       if (ms == INFINITE) {
-               do {
-                       sleep (G_MAXUINT32);
-               } while (1);
-       } else {
-               int ret;
-#if defined (__linux__) && !defined(PLATFORM_ANDROID)
-               struct timespec start, target;
-
-               /* Use clock_nanosleep () to prevent time drifting problems when nanosleep () is interrupted by signals */
-               ret = clock_gettime (CLOCK_MONOTONIC, &start);
-               g_assert (ret == 0);
-
-               target = start;
-               target.tv_sec += ms / 1000;
-               target.tv_nsec += (ms % 1000) * 1000000;
-               if (target.tv_nsec > 999999999) {
-                       target.tv_nsec -= 999999999;
-                       target.tv_sec ++;
+/* Necessary to get valid priority range */
+#ifdef _POSIX_PRIORITY_SCHEDULING
+       int max,
+           min,
+           posix_priority,
+           i;
+       WapiThreadPriority priorities[] = {
+               THREAD_PRIORITY_LOWEST,
+               THREAD_PRIORITY_LOWEST,
+               THREAD_PRIORITY_BELOW_NORMAL,
+               THREAD_PRIORITY_NORMAL,
+               THREAD_PRIORITY_ABOVE_NORMAL,
+               THREAD_PRIORITY_HIGHEST,
+               THREAD_PRIORITY_HIGHEST
+       };
+       
+       max = sched_get_priority_max (policy);
+       min = sched_get_priority_min (policy);
+
+       /* Partition priority range linearly, 
+          numerically approximate matching ThreadPriority */
+       if (max != min && 0 <= max && 0 <= min) {
+               for (i=0; i<7; ++i) {
+                       if (priorities[i] == priority) {
+                               posix_priority = min + ((max-min)/7) * i;
+                               if (max < posix_priority)
+                               {
+                                       return max;
+                               }
+                               else {
+                                       return posix_priority;
+                               }
+                       }
                }
-
-               do {
-                       ret = clock_nanosleep (CLOCK_MONOTONIC, TIMER_ABSTIME, &target, NULL);
-               } while (ret != 0);
-#else
-               struct timespec req, rem;
-
-               req.tv_sec = ms / 1000;
-               req.tv_nsec = (ms % 1000) * 1000000;
-
-               do {
-                       memset (&rem, 0, sizeof (rem));
-                       ret = nanosleep (&req, &rem);
-               } while (ret != 0);
-#endif /* __linux__ */
        }
+#endif
 
-       return 0;
-}
-
-void
-Sleep(guint32 ms)
-{
-       SleepEx(ms, FALSE);
-}
-
-gboolean
-_wapi_thread_cur_apc_pending (void)
-{
-       return mono_thread_info_is_interrupt_state (mono_thread_info_current ());
+       switch (policy) {
+               case SCHED_FIFO:
+               case SCHED_RR:
+                       return 50;
+#ifdef SCHED_BATCH
+               case SCHED_BATCH:
+#endif
+               case SCHED_OTHER:
+                       return 0;
+               default:
+                       return -1;
+       }
 }
 
-void
-_wapi_thread_own_mutex (gpointer mutex)
+/**
+ * GetThreadPriority:
+ * @param handle: The thread handle to query.
+ *
+ * Gets the priority of the given thread.
+ * @return: A MonoThreadPriority approximating the current POSIX 
+ * thread priority, or THREAD_PRIORITY_NORMAL on error.
+ */
+gint32 
+GetThreadPriority (gpointer handle)
 {
-       WapiHandle_thread *thread;
+       struct _WapiHandle_thread *thread_handle;
+       int policy;
+       struct sched_param param;
+       gboolean ok = _wapi_lookup_handle (handle, WAPI_HANDLE_THREAD,
+                                 (gpointer *)&thread_handle);
+                                 
+       if (ok == FALSE) {
+               return (THREAD_PRIORITY_NORMAL);
+       }
        
-       thread = get_current_thread ();
-
-       _wapi_handle_ref (mutex);
+       switch (pthread_getschedparam (thread_handle->id, &policy, &param)) {
+               case 0:
+                       return (_wapi_thread_posix_priority_to_priority (param.sched_priority, policy));
+               case ESRCH:
+                       g_warning ("pthread_getschedparam: error looking up thread id %x", (gsize)thread_handle->id);
+       }
        
-       g_ptr_array_add (thread->owned_mutexes, mutex);
+       return (THREAD_PRIORITY_NORMAL);
 }
 
-void
-_wapi_thread_disown_mutex (gpointer mutex)
+/**
+ * SetThreadPriority:
+ * @param handle: The thread handle to query.
+ * @param priority: The priority to give to the thread.
+ *
+ * Sets the priority of the given thread.
+ * @return: TRUE on success, FALSE on failure or error.
+ */
+gboolean 
+SetThreadPriority (gpointer handle, gint32 priority)
 {
-       WapiHandle_thread *thread;
-
-       thread = get_current_thread ();
-
-       _wapi_handle_unref (mutex);
+       struct _WapiHandle_thread *thread_handle;
+       int policy,
+           posix_priority,
+           rv;
+       struct sched_param param;
+       gboolean ok = _wapi_lookup_handle (handle, WAPI_HANDLE_THREAD,
+                                 (gpointer *)&thread_handle);
+                                 
+       if (ok == FALSE) {
+               return ok;
+       }
        
-       g_ptr_array_remove (thread->owned_mutexes, mutex);
+       rv = pthread_getschedparam (thread_handle->id, &policy, &param);
+       if (rv) {
+               if (ESRCH == rv)
+                       g_warning ("pthread_getschedparam: error looking up thread id %x", (gsize)thread_handle->id);
+               return FALSE;
+       }
+       
+       posix_priority =  _wapi_thread_priority_to_posix_priority (priority, policy);
+       if (0 > posix_priority)
+               return FALSE;
+               
+       param.sched_priority = posix_priority;
+       switch (pthread_setschedparam (thread_handle->id, policy, &param)) {
+               case 0:
+                       return TRUE;
+               case ESRCH:
+                       g_warning ("pthread_setschedparam: error looking up thread id %x", (gsize)thread_handle->id);
+                       break;
+               case ENOTSUP:
+                       g_warning ("%s: priority %d not supported", __func__, priority);
+                       break;
+               case EPERM:
+                       g_warning ("%s: permission denied", __func__);
+                       break;
+       }
+       
+       return FALSE;
 }
 
 char*
index d0e6fc2fa576554f18eb5aa1984da3d40d3f4d17..a0d7c20748e1601b1e384f22cb8a78f544beb16d 100644 (file)
@@ -129,10 +129,11 @@ common_sources = \
        file-io.h               \
        filewatcher.c           \
        filewatcher.h           \
-       gc-internal.h           \
+       gc-internals.h          \
        icall.c                 \
        icall-def.h             \
        image.c                 \
+       image-internals.h       \
        jit-info.c              \
        loader.c                \
        locales.c               \
@@ -213,7 +214,10 @@ common_sources = \
        abi-details.h   \
        metadata-cross-helpers.c        \
        seq-points-data.h       \
-       seq-points-data.c
+       seq-points-data.c       \
+       handle.c        \
+       handle.h        \
+       handle-private.h
 
 
 # These source files have compile time dependencies on GC code
@@ -237,7 +241,7 @@ sgen_sources = \
        sgen-os-coop.c          \
        sgen-bridge.c           \
        sgen-bridge.h           \
-       sgen-bridge-internal.h  \
+       sgen-bridge-internals.h \
        sgen-old-bridge.c               \
        sgen-new-bridge.c               \
        sgen-tarjan-bridge.c            \
index d4d00deff44394764a3206f2a1149415751a0057..4ec7fc96ec635102871ff065e0de0d780acfd2df 100644 (file)
@@ -9,7 +9,8 @@
 
 #define MONO_ABI_ALIGNOF(type) MONO_ALIGN_ ## type
 #define MONO_CURRENT_ABI_ALIGNOF(type) ((int)G_STRUCT_OFFSET(struct { char c; type x; }, x))
-
+#define MONO_ABI_SIZEOF(type) MONO_SIZEOF_ ## type
+#define MONO_CURRENT_ABI_SIZEOF(type) ((int)sizeof(type))
 
 #undef DECL_OFFSET
 #undef DECL_OFFSET2
@@ -17,6 +18,8 @@
 #define DECL_OFFSET2(struct,field,offset) MONO_OFFSET_ ## struct ## _ ## field = offset,
 #define DECL_ALIGN(type) MONO_ALIGN_ ##type = MONO_CURRENT_ABI_ALIGNOF (type),
 #define DECL_ALIGN2(type,size) MONO_ALIGN_ ##type = size,
+#define DECL_SIZE(type) MONO_SIZEOF_ ##type = MONO_CURRENT_ABI_SIZEOF (type),
+#define DECL_SIZE2(type,size) MONO_SIZEOF_ ##type = size,
 
 enum {
 #include "object-offsets.h"
index b015e748b0a9310c6499ad7177071d1edf20f99e..184fb62150895e0498f046c6f032517dd8c2d825 100644 (file)
@@ -32,7 +32,7 @@
 #endif
 #endif
 
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/object.h>
 #include <mono/metadata/domain-internals.h>
 #include "mono/metadata/metadata-internals.h"
@@ -42,7 +42,7 @@
 #include <mono/metadata/threadpool-ms.h>
 #include <mono/metadata/socket-io.h>
 #include <mono/metadata/tabledefs.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/mono-gc.h>
 #include <mono/metadata/marshal.h>
 #include <mono/metadata/monitor.h>
@@ -56,7 +56,7 @@
 #include <mono/metadata/tokentype.h>
 #include <mono/metadata/profiler-private.h>
 #include <mono/utils/mono-uri.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-path.h>
 #include <mono/utils/mono-stdlib.h>
 #include <mono/utils/mono-io-portability.h>
@@ -79,7 +79,7 @@
  * Changes which are already detected at runtime, like the addition
  * of icalls, do not require an increment.
  */
-#define MONO_CORLIB_VERSION 138
+#define MONO_CORLIB_VERSION 140
 
 typedef struct
 {
@@ -225,7 +225,7 @@ mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb,
 {
        MonoAppDomainSetup *setup;
        MonoAppDomain *ad;
-       MonoClass *class;
+       MonoClass *klass;
 
        mono_portability_helpers_init ();
        
@@ -237,18 +237,18 @@ mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb,
        mono_install_assembly_refonly_preload_hook (mono_domain_assembly_preload, GUINT_TO_POINTER (TRUE));
        mono_install_assembly_search_hook (mono_domain_assembly_search, GUINT_TO_POINTER (FALSE));
        mono_install_assembly_refonly_search_hook (mono_domain_assembly_search, GUINT_TO_POINTER (TRUE));
-       mono_install_assembly_postload_search_hook ((void*)mono_domain_assembly_postload_search, GUINT_TO_POINTER (FALSE));
-       mono_install_assembly_postload_refonly_search_hook ((void*)mono_domain_assembly_postload_search, GUINT_TO_POINTER (TRUE));
+       mono_install_assembly_postload_search_hook ((MonoAssemblySearchFunc)mono_domain_assembly_postload_search, GUINT_TO_POINTER (FALSE));
+       mono_install_assembly_postload_refonly_search_hook ((MonoAssemblySearchFunc)mono_domain_assembly_postload_search, GUINT_TO_POINTER (TRUE));
        mono_install_assembly_load_hook (mono_domain_fire_assembly_load, NULL);
        mono_install_lookup_dynamic_token (mono_reflection_lookup_dynamic_token);
 
        mono_thread_init (start_cb, attach_cb);
 
-       class = mono_class_from_name (mono_defaults.corlib, "System", "AppDomainSetup");
-       setup = (MonoAppDomainSetup *) mono_object_new_pinned (domain, class);
+       klass = mono_class_from_name (mono_defaults.corlib, "System", "AppDomainSetup");
+       setup = (MonoAppDomainSetup *) mono_object_new_pinned (domain, klass);
 
-       class = mono_class_from_name (mono_defaults.corlib, "System", "AppDomain");
-       ad = (MonoAppDomain *) mono_object_new_pinned (domain, class);
+       klass = mono_class_from_name (mono_defaults.corlib, "System", "AppDomain");
+       ad = (MonoAppDomain *) mono_object_new_pinned (domain, klass);
        ad->data = domain;
        domain->domain = ad;
        domain->setup = setup;
@@ -327,11 +327,11 @@ mono_check_corlib_version (void)
 void
 mono_context_init (MonoDomain *domain)
 {
-       MonoClass *class;
+       MonoClass *klass;
        MonoAppContext *context;
 
-       class = mono_class_from_name (mono_defaults.corlib, "System.Runtime.Remoting.Contexts", "Context");
-       context = (MonoAppContext *) mono_object_new_pinned (domain, class);
+       klass = mono_class_from_name (mono_defaults.corlib, "System.Runtime.Remoting.Contexts", "Context");
+       context = (MonoAppContext *) mono_object_new_pinned (domain, klass);
        context->domain_id = domain->domain_id;
        context->context_id = 0;
        ves_icall_System_Runtime_Remoting_Contexts_Context_RegisterContext (context);
@@ -394,10 +394,10 @@ mono_domain_create_appdomain (char *friendly_name, char *configuration_file)
 {
        MonoAppDomain *ad;
        MonoAppDomainSetup *setup;
-       MonoClass *class;
+       MonoClass *klass;
 
-       class = mono_class_from_name (mono_defaults.corlib, "System", "AppDomainSetup");
-       setup = (MonoAppDomainSetup *) mono_object_new (mono_domain_get (), class);
+       klass = mono_class_from_name (mono_defaults.corlib, "System", "AppDomainSetup");
+       setup = (MonoAppDomainSetup *) mono_object_new (mono_domain_get (), klass);
        setup->configuration_file = configuration_file != NULL ? mono_string_new (mono_domain_get (), configuration_file) : NULL;
 
        ad = mono_domain_create_appdomain_internal (friendly_name, setup);
@@ -647,7 +647,7 @@ ves_icall_System_AppDomain_GetData (MonoAppDomain *ad, MonoString *name)
        else if (!strcmp (str, "FORCE_CACHE_INSTALL"))
                o = (MonoObject *)add->setup->shadow_copy_files;
        else 
-               o = mono_g_hash_table_lookup (add->env, name);
+               o = (MonoObject *)mono_g_hash_table_lookup (add->env, name);
 
        mono_domain_unlock (add);
        g_free (str);
@@ -731,7 +731,7 @@ start_element (GMarkupParseContext *context,
               gpointer             user_data,
               GError             **error)
 {
-       RuntimeConfig *runtime_config = user_data;
+       RuntimeConfig *runtime_config = (RuntimeConfig *)user_data;
        
        if (strcmp (element_name, "runtime") == 0) {
                runtime_config->runtime_count++;
@@ -764,7 +764,7 @@ end_element (GMarkupParseContext *context,
             gpointer             user_data,
             GError             **error)
 {
-       RuntimeConfig *runtime_config = user_data;
+       RuntimeConfig *runtime_config = (RuntimeConfig *)user_data;
        if (strcmp (element_name, "runtime") == 0)
                runtime_config->runtime_count--;
        else if (strcmp (element_name, "assemblyBinding") == 0)
@@ -774,7 +774,7 @@ end_element (GMarkupParseContext *context,
 static void
 parse_error   (GMarkupParseContext *context, GError *error, gpointer user_data)
 {
-       RuntimeConfig *state = user_data;
+       RuntimeConfig *state = (RuntimeConfig *)user_data;
        const gchar *msg;
        const gchar *filename;
 
@@ -827,7 +827,7 @@ mono_set_private_bin_path_from_config (MonoDomain *domain)
        if (len > 3 && text [0] == '\xef' && text [1] == (gchar) '\xbb' && text [2] == '\xbf')
                offset = 3; /* Skip UTF-8 BOM */
 
-       context = g_markup_parse_context_new (&mono_parser, 0, &runtime_config, NULL);
+       context = g_markup_parse_context_new (&mono_parser, (GMarkupParseFlags)0, &runtime_config, NULL);
        if (g_markup_parse_context_parse (context, text + offset, len - offset, NULL))
                g_markup_parse_context_end_parse (context, NULL);
        g_markup_parse_context_free (context);
@@ -878,7 +878,7 @@ ves_icall_System_AppDomain_GetAssemblies (MonoAppDomain *ad, MonoBoolean refonly
        /* Need to skip internal assembly builders created by remoting */
        mono_domain_assemblies_lock (domain);
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               ass = tmp->data;
+               ass = (MonoAssembly *)tmp->data;
                if (refonly != ass->ref_only)
                        continue;
                if (ass->corlib_internal)
@@ -889,7 +889,7 @@ ves_icall_System_AppDomain_GetAssemblies (MonoAppDomain *ad, MonoBoolean refonly
 
        res = mono_array_new (domain, System_Reflection_Assembly, assemblies->len);
        for (i = 0; i < assemblies->len; ++i) {
-               ass = g_ptr_array_index (assemblies, i);
+               ass = (MonoAssembly *)g_ptr_array_index (assemblies, i);
                mono_array_setref (res, i, mono_assembly_get_object (domain, ass));
        }
 
@@ -1142,7 +1142,7 @@ set_domain_search_path (MonoDomain *domain)
        if (domain->search_path)
                g_strfreev (domain->search_path);
 
-       tmp = g_malloc ((npaths + 1) * sizeof (gchar *));
+       tmp = (gchar **)g_malloc ((npaths + 1) * sizeof (gchar *));
        tmp [npaths] = NULL;
 
        *tmp = mono_string_to_utf8_checked (setup->application_base, &error);
@@ -1521,7 +1521,7 @@ shadow_copy_create_ini (const char *shadow, const char *filename)
        if (!u16_ini) {
                return FALSE;
        }
-       handle = CreateFile (u16_ini, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
+       handle = (void **)CreateFile (u16_ini, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
                                NULL, CREATE_NEW, FileAttributes_Normal, NULL);
        g_free (u16_ini);
        if (handle == INVALID_HANDLE_VALUE) {
@@ -1864,7 +1864,7 @@ mono_domain_assembly_search (MonoAssemblyName *aname,
 
        mono_domain_assemblies_lock (domain);
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               ass = tmp->data;
+               ass = (MonoAssembly *)tmp->data;
                /* Dynamic assemblies can't match here in MS.NET */
                if (assembly_is_dynamic (ass) || refonly != ass->ref_only || !mono_assembly_names_equal (aname, &ass->aname))
                        continue;
@@ -2221,9 +2221,9 @@ deregister_reflection_info_roots_from_list (MonoImage *image)
        GSList *list = image->reflection_info_unregister_classes;
 
        while (list) {
-               MonoClass *class = list->data;
+               MonoClass *klass = (MonoClass *)list->data;
 
-               mono_class_free_ref_info (class);
+               mono_class_free_ref_info (klass);
 
                list = list->next;
        }
@@ -2238,7 +2238,7 @@ deregister_reflection_info_roots (MonoDomain *domain)
 
        mono_domain_assemblies_lock (domain);
        for (list = domain->domain_assemblies; list; list = list->next) {
-               MonoAssembly *assembly = list->data;
+               MonoAssembly *assembly = (MonoAssembly *)list->data;
                MonoImage *image = assembly->image;
                int i;
 
@@ -2310,11 +2310,11 @@ unload_thread_main (void *arg)
         * the collection there won't be any more remsets.
         */
        for (i = 0; i < domain->class_vtable_array->len; ++i)
-               zero_static_data (g_ptr_array_index (domain->class_vtable_array, i));
+               zero_static_data ((MonoVTable *)g_ptr_array_index (domain->class_vtable_array, i));
        mono_gc_collect (0);
 #endif
        for (i = 0; i < domain->class_vtable_array->len; ++i)
-               clear_cached_vtable (g_ptr_array_index (domain->class_vtable_array, i));
+               clear_cached_vtable ((MonoVTable *)g_ptr_array_index (domain->class_vtable_array, i));
        deregister_reflection_info_roots (domain);
 
        mono_assembly_cleanup_domain_bindings (domain->domain_id);
@@ -2405,12 +2405,12 @@ mono_domain_try_unload (MonoDomain *domain, MonoObject **exc)
        MonoDomain *caller_domain = mono_domain_get ();
        char *name;
 
-       /* printf ("UNLOAD STARTING FOR %s (%p) IN THREAD 0x%x.\n", domain->friendly_name, domain, GetCurrentThreadId ()); */
+       /* printf ("UNLOAD STARTING FOR %s (%p) IN THREAD 0x%x.\n", domain->friendly_name, domain, mono_native_thread_id_get ()); */
 
        /* Atomically change our state to UNLOADING */
-       prev_state = InterlockedCompareExchange ((gint32*)&domain->state,
-                                                                                        MONO_APPDOMAIN_UNLOADING_START,
-                                                                                        MONO_APPDOMAIN_CREATED);
+       prev_state = (MonoAppDomainState)InterlockedCompareExchange ((gint32*)&domain->state,
+               MONO_APPDOMAIN_UNLOADING_START,
+               MONO_APPDOMAIN_CREATED);
        if (prev_state != MONO_APPDOMAIN_CREATED) {
                switch (prev_state) {
                case MONO_APPDOMAIN_UNLOADING_START:
index 45038289621a96ef7e59243a0f0d311c988e586b..a3916463b691522ce18b0f11b87e17c1d5195102 100644 (file)
 #include <mono/metadata/mono-config.h>
 #include <mono/metadata/mono-config-dirs.h>
 #include <mono/utils/mono-digest.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-path.h>
 #include <mono/metadata/reflection.h>
 #include <mono/metadata/coree.h>
 #include <mono/metadata/cil-coff.h>
 #include <mono/utils/mono-io-portability.h>
 #include <mono/utils/atomic.h>
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-os-mutex.h>
 
 #ifndef HOST_WIN32
 #include <sys/types.h>
@@ -182,8 +182,8 @@ mono_set_corlib_data (void *data, size_t size)
 static char* unquote (const char *str);
 
 /* This protects loaded_assemblies and image->references */
-#define mono_assemblies_lock() mono_mutex_lock (&assemblies_mutex)
-#define mono_assemblies_unlock() mono_mutex_unlock (&assemblies_mutex)
+#define mono_assemblies_lock() mono_os_mutex_lock (&assemblies_mutex)
+#define mono_assemblies_unlock() mono_os_mutex_unlock (&assemblies_mutex)
 static mono_mutex_t assemblies_mutex;
 
 /* If defined, points to the bundled assembly information */
@@ -208,7 +208,7 @@ encode_public_tok (const guchar *token, gint32 len)
        gchar *res;
        int i;
 
-       res = g_malloc (len * 2 + 1);
+       res = (gchar *)g_malloc (len * 2 + 1);
        for (i = 0; i < len; i++) {
                res [i * 2] = allowed [token [i] >> 4];
                res [i * 2 + 1] = allowed [token [i] & 0xF];
@@ -752,20 +752,20 @@ mono_assemblies_init (void)
        check_path_env ();
        check_extra_gac_path_env ();
 
-       mono_mutex_init_recursive (&assemblies_mutex);
-       mono_mutex_init (&assembly_binding_mutex);
+       mono_os_mutex_init_recursive (&assemblies_mutex);
+       mono_os_mutex_init (&assembly_binding_mutex);
 }
 
 static void
 mono_assembly_binding_lock (void)
 {
-       mono_locks_mutex_acquire (&assembly_binding_mutex, AssemblyBindingLock);
+       mono_locks_os_acquire (&assembly_binding_mutex, AssemblyBindingLock);
 }
 
 static void
 mono_assembly_binding_unlock (void)
 {
-       mono_locks_mutex_release (&assembly_binding_mutex, AssemblyBindingLock);
+       mono_locks_os_release (&assembly_binding_mutex, AssemblyBindingLock);
 }
 
 gboolean
@@ -791,7 +791,7 @@ mono_assembly_fill_assembly_name (MonoImage *image, MonoAssemblyName *aname)
        aname->revision = cols [MONO_ASSEMBLY_REV_NUMBER];
        aname->hash_alg = cols [MONO_ASSEMBLY_HASH_ALG];
        if (cols [MONO_ASSEMBLY_PUBLIC_KEY]) {
-               guchar* token = g_malloc (8);
+               guchar* token = (guchar *)g_malloc (8);
                gchar* encoded;
                const gchar* pkey;
                int len;
@@ -1116,7 +1116,7 @@ mono_assembly_load_reference (MonoImage *image, int index)
                 * a non loaded reference using the ReflectionOnly api
                */
                if (!reference)
-                       reference = REFERENCE_MISSING;
+                       reference = (MonoAssembly *)REFERENCE_MISSING;
        } else {
                /* we first try without setting the basedir: this can eventually result in a ResolveAssembly
                 * event which is the MS .net compatible behaviour (the assemblyresolve_event3.cs test has been fixed
@@ -1157,7 +1157,7 @@ mono_assembly_load_reference (MonoImage *image, int index)
        mono_assemblies_lock ();
        if (reference == NULL) {
                /* Flag as not found */
-               reference = REFERENCE_MISSING;
+               reference = (MonoAssembly *)REFERENCE_MISSING;
        }       
 
        if (!image->references [index]) {
@@ -1588,6 +1588,7 @@ mono_assembly_open_full (const char *filename, MonoImageOpenStatus *status, gboo
        
        image = NULL;
 
+       // If VM built with mkbundle
        loaded_from_bundle = FALSE;
        if (bundles != NULL) {
                image = mono_assembly_open_from_bundle (fname, status, refonly);
@@ -1936,10 +1937,10 @@ parse_public_key (const gchar *key, gchar** pubkey, gboolean *is_ecma)
        /* Encode the size of the blob */
        offset = 0;
        if (keylen <= 127) {
-               arr = g_malloc (keylen + 1);
+               arr = (gchar *)g_malloc (keylen + 1);
                arr [offset++] = keylen;
        } else {
-               arr = g_malloc (keylen + 2);
+               arr = (gchar *)g_malloc (keylen + 2);
                arr [offset++] = 0x80; /* 10bs */
                arr [offset++] = keylen;
        }
@@ -2546,7 +2547,7 @@ mono_assembly_load_publisher_policy (MonoAssemblyName *aname)
 
        if (strstr (aname->name, ".dll")) {
                len = strlen (aname->name) - 4;
-               name = g_malloc (len);
+               name = (gchar *)g_malloc (len);
                strncpy (name, aname->name, len);
        } else
                name = g_strdup (aname->name);
@@ -2612,7 +2613,7 @@ search_binding_loaded (MonoAssemblyName *aname)
        GSList *tmp;
 
        for (tmp = loaded_assembly_bindings; tmp; tmp = tmp->next) {
-               MonoAssemblyBindingInfo *info = tmp->data;
+               MonoAssemblyBindingInfo *info = (MonoAssemblyBindingInfo *)tmp->data;
                if (assembly_binding_maps_name (info, aname))
                        return info;
        }
@@ -2667,12 +2668,12 @@ assembly_binding_info_parsed (MonoAssemblyBindingInfo *info, void *user_data)
                return;
 
        for (tmp = domain->assembly_bindings; tmp; tmp = tmp->next) {
-               info_tmp = tmp->data;
+               info_tmp = (MonoAssemblyBindingInfo *)tmp->data;
                if (strcmp (info->name, info_tmp->name) == 0 && info_versions_equal (info, info_tmp))
                        return;
        }
 
-       info_copy = mono_mempool_alloc0 (domain->mp, sizeof (MonoAssemblyBindingInfo));
+       info_copy = (MonoAssemblyBindingInfo *)mono_mempool_alloc0 (domain->mp, sizeof (MonoAssemblyBindingInfo));
        memcpy (info_copy, info, sizeof (MonoAssemblyBindingInfo));
        if (info->name)
                info_copy->name = mono_mempool_strdup (domain->mp, info->name);
@@ -2720,7 +2721,7 @@ get_per_domain_assembly_binding_info (MonoDomain *domain, MonoAssemblyName *anam
 
        info = NULL;
        for (list = domain->assembly_bindings; list; list = list->next) {
-               info = list->data;
+               info = (MonoAssemblyBindingInfo *)list->data;
                if (info && !strcmp (aname->name, info->name) && info_major_minor_in_range (info, aname))
                        break;
                info = NULL;
@@ -2786,7 +2787,7 @@ mono_assembly_apply_binding (MonoAssemblyName *aname, MonoAssemblyName *dest_nam
                info2 = get_per_domain_assembly_binding_info (domain, aname);
 
                if (info2) {
-                       info = g_memdup (info2, sizeof (MonoAssemblyBindingInfo));
+                       info = (MonoAssemblyBindingInfo *)g_memdup (info2, sizeof (MonoAssemblyBindingInfo));
                        info->name = g_strdup (info2->name);
                        info->culture = g_strdup (info2->culture);
                        info->domain_id = domain->domain_id;
@@ -2857,7 +2858,7 @@ mono_assembly_load_from_gac (MonoAssemblyName *aname,  gchar *filename, MonoImag
 
        if (strstr (aname->name, ".dll")) {
                len = strlen (filename) - 4;
-               name = g_malloc (len);
+               name = (gchar *)g_malloc (len);
                strncpy (name, aname->name, len);
        } else {
                name = g_strdup (aname->name);
@@ -2920,6 +2921,7 @@ mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *
                return corlib;
        }
 
+       // In native client, Corlib is embedded in the executable as static variable corlibData
 #if defined(__native_client__)
        if (corlibData != NULL && corlibSize != 0) {
                int status = 0;
@@ -2936,6 +2938,7 @@ mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *
        }
 #endif
 
+       // A nonstandard preload hook may provide a special mscorlib assembly
        aname = mono_assembly_name_new ("mscorlib.dll");
        corlib = invoke_assembly_preload_hook (aname, assemblies_path);
        mono_assembly_name_free (aname);
@@ -2943,16 +2946,16 @@ mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *
        if (corlib != NULL)
                return corlib;
 
-       if (assemblies_path) {
+       // This unusual directory layout can occur if mono is being built and run out of its own source repo
+       if (assemblies_path) { // Custom assemblies path set via MONO_PATH or mono_set_assemblies_path
                corlib = load_in_path ("mscorlib.dll", (const char**)assemblies_path, status, FALSE);
                if (corlib)
                        return corlib;
        }
 
-       /* Load corlib from mono/<version> */
-       
+       /* Normal case: Load corlib from mono/<version> */
        corlib_file = g_build_filename ("mono", runtime->framework_version, "mscorlib.dll", NULL);
-       if (assemblies_path) {
+       if (assemblies_path) { // Custom assemblies path
                corlib = load_in_path (corlib_file, (const char**)assemblies_path, status, FALSE);
                if (corlib) {
                        g_free (corlib_file);
@@ -3170,7 +3173,7 @@ mono_assembly_close_except_image_pools (MonoAssembly *assembly)
                assembly->image = NULL;
 
        for (tmp = assembly->friend_assembly_names; tmp; tmp = tmp->next) {
-               MonoAssemblyName *fname = tmp->data;
+               MonoAssemblyName *fname = (MonoAssemblyName *)tmp->data;
                mono_assembly_name_free (fname);
                g_free (fname);
        }
@@ -3245,11 +3248,11 @@ mono_assemblies_cleanup (void)
 {
        GSList *l;
 
-       mono_mutex_destroy (&assemblies_mutex);
-       mono_mutex_destroy (&assembly_binding_mutex);
+       mono_os_mutex_destroy (&assemblies_mutex);
+       mono_os_mutex_destroy (&assembly_binding_mutex);
 
        for (l = loaded_assembly_bindings; l; l = l->next) {
-               MonoAssemblyBindingInfo *info = l->data;
+               MonoAssemblyBindingInfo *info = (MonoAssemblyBindingInfo *)l->data;
 
                mono_assembly_binding_info_free (info);
                g_free (info);
@@ -3271,7 +3274,7 @@ mono_assembly_cleanup_domain_bindings (guint32 domain_id)
        iter = &loaded_assembly_bindings;
        while (*iter) {
                GSList *l = *iter;
-               MonoAssemblyBindingInfo *info = l->data;
+               MonoAssemblyBindingInfo *info = (MonoAssemblyBindingInfo *)l->data;
 
                if (info->domain_id == domain_id) {
                        *iter = l->next;
index 71e87e1c577f09e113fdc7ca9dba54647a044b44..4f5024a72f0bb61a91d78f648b0265e9500b47de 100644 (file)
@@ -37,7 +37,7 @@
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/threads-types.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/utils/mono-threads.h>
 #include "attach.h"
 
@@ -99,10 +99,6 @@ static gboolean stop_receiver_thread;
 
 static gboolean needs_to_start, started;
 
-#define agent_lock() mono_mutex_lock (&agent_mutex)
-#define agent_unlock() mono_mutex_unlock (&agent_mutex)
-static mono_mutex_t agent_mutex;
-
 static void transport_connect (void);
 
 static guint32 WINAPI receiver_thread (void *arg);
@@ -156,7 +152,7 @@ decode_string_value (guint8 *buf, guint8 **endbuf, guint8 *limit)
 
        g_assert (length < (1 << 16));
 
-       s = g_malloc (length + 1);
+       s = (char *)g_malloc (length + 1);
 
        g_assert (p + length <= limit);
        memcpy (s, p, length);
@@ -184,8 +180,6 @@ mono_attach_parse_options (char *options)
 void
 mono_attach_init (void)
 {
-       mono_mutex_init_recursive (&agent_mutex);
-
        config.enabled = TRUE;
 }
 
@@ -530,7 +524,7 @@ receiver_thread (void *arg)
                        content_len = decode_int (p, &p, p_end);
 
                        /* Read message body */
-                       body = g_malloc (content_len);
+                       body = (guint8 *)g_malloc (content_len);
                        res = read (conn_fd, body, content_len);
                        
                        p = body;
index 540c2b94cf647416e3ff835678b41e4d44454795..0bd92412414f81254439cbe17c0edc83af451273 100644 (file)
@@ -11,7 +11,7 @@
 #include <string.h>
 
 #define GC_I_HIDE_POINTERS
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/mono-gc.h>
 #include <mono/metadata/profiler-private.h>
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/runtime.h>
 #include <mono/metadata/sgen-toggleref.h>
 #include <mono/utils/atomic.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-memory-model.h>
 #include <mono/utils/mono-time.h>
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/dtrace.h>
 #include <mono/utils/gc_wrapper.h>
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-os-mutex.h>
 #include <mono/utils/mono-counters.h>
 
 #if HAVE_BOEHM_GC
@@ -64,8 +64,8 @@ static MonoGCFinalizerCallbacks fin_callbacks;
 /* GC Handles */
 
 static mono_mutex_t handle_section;
-#define lock_handles(handles) mono_mutex_lock (&handle_section)
-#define unlock_handles(handles) mono_mutex_unlock (&handle_section)
+#define lock_handles(handles) mono_os_mutex_lock (&handle_section)
+#define unlock_handles(handles) mono_os_mutex_unlock (&handle_section)
 
 typedef struct {
        guint32  *bitmap;
@@ -180,7 +180,7 @@ mono_gc_base_init (void)
                        for (char **ptr = opts; ptr && *ptr; ptr ++) {
                                char *opt = *ptr;
                                if (!strcmp (opt, "do-not-finalize")) {
-                                       do_not_finalize = 1;
+                                       mono_do_not_finalize = 1;
                                } else if (!strcmp (opt, "log-finalizers")) {
                                        log_finalizers = 1;
                                }
@@ -196,6 +196,7 @@ mono_gc_base_init (void)
        GC_finalizer_notifier = mono_gc_finalize_notify;
 
        GC_init_gcj_malloc (5, NULL);
+       GC_allow_register_threads ();
 
        if ((env = g_getenv ("MONO_GC_PARAMS"))) {
                char **ptr, **opts = g_strsplit (env, ",", -1);
@@ -234,11 +235,11 @@ mono_gc_base_init (void)
        memset (&cb, 0, sizeof (cb));
        cb.thread_register = boehm_thread_register;
        cb.thread_unregister = boehm_thread_unregister;
-       cb.mono_method_is_critical = (gpointer)mono_runtime_is_critical_method;
+       cb.mono_method_is_critical = (gboolean (*)(void *))mono_runtime_is_critical_method;
 
        mono_threads_init (&cb, sizeof (MonoThreadInfo));
-       mono_mutex_init (&mono_gc_lock);
-       mono_mutex_init_recursive (&handle_section);
+       mono_os_mutex_init (&mono_gc_lock);
+       mono_os_mutex_init_recursive (&handle_section);
 
        mono_thread_info_attach (&dummy);
 
@@ -370,8 +371,6 @@ mono_gc_is_gc_thread (void)
        return GC_thread_is_registered ();
 }
 
-extern int GC_thread_register_foreign (void *base_addr);
-
 gboolean
 mono_gc_register_thread (void *baseptr)
 {
@@ -381,13 +380,15 @@ mono_gc_register_thread (void *baseptr)
 static void*
 boehm_thread_register (MonoThreadInfo* info, void *baseptr)
 {
-       if (mono_gc_is_gc_thread())
-               return info;
-#if !defined(HOST_WIN32)
-       return GC_thread_register_foreign (baseptr) ? info : NULL;
-#else
-       return NULL;
-#endif
+       struct GC_stack_base sb;
+       int res;
+
+       /* TODO: use GC_get_stack_base instead of baseptr. */
+       sb.mem_base = baseptr;
+       res = GC_register_my_thread (&sb);
+       if (res == GC_UNIMPLEMENTED)
+           return NULL; /* Cannot happen with GC v7+. */
+       return info;
 }
 
 static void
@@ -404,7 +405,7 @@ boehm_thread_unregister (MonoThreadInfo *p)
 gboolean
 mono_object_is_alive (MonoObject* o)
 {
-       return GC_is_marked ((gpointer)o);
+       return GC_is_marked ((ptr_t)o);
 }
 
 int
@@ -416,7 +417,7 @@ mono_gc_walk_heap (int flags, MonoGCReferences callback, void *data)
 static gint64 gc_start_time;
 
 static void
-on_gc_notification (GCEventType event)
+on_gc_notification (GC_EventType event)
 {
        MonoGCEvent e = (MonoGCEvent)event;
 
@@ -495,7 +496,7 @@ on_gc_heap_resize (size_t new_size)
 void
 mono_gc_enable_events (void)
 {
-       GC_notify_event = on_gc_notification;
+       GC_set_on_collection_event (on_gc_notification);
        GC_on_heap_resize = on_gc_heap_resize;
 }
 
@@ -550,14 +551,14 @@ mono_gc_weak_link_remove (void **link_addr, gboolean track)
 static gpointer
 reveal_link (gpointer link_addr)
 {
-       void **link_a = link_addr;
+       void **link_a = (void **)link_addr;
        return REVEAL_POINTER (*link_a);
 }
 
 static MonoObject *
 mono_gc_weak_link_get (void **link_addr)
 {
-       MonoObject *obj = GC_call_with_alloc_lock (reveal_link, link_addr);
+       MonoObject *obj = (MonoObject *)GC_call_with_alloc_lock (reveal_link, link_addr);
        if (obj == (MonoObject *) -1)
                return NULL;
        return obj;
@@ -628,16 +629,16 @@ mono_gc_alloc_obj (MonoVTable *vtable, size_t size)
        MonoObject *obj;
 
        if (!vtable->klass->has_references) {
-               obj = GC_MALLOC_ATOMIC (size);
+               obj = (MonoObject *)GC_MALLOC_ATOMIC (size);
 
                obj->vtable = vtable;
                obj->synchronisation = NULL;
 
                memset ((char *) obj + sizeof (MonoObject), 0, size - sizeof (MonoObject));
        } else if (vtable->gc_descr != GC_NO_DESCRIPTOR) {
-               obj = GC_GCJ_MALLOC (size, vtable);
+               obj = (MonoObject *)GC_GCJ_MALLOC (size, vtable);
        } else {
-               obj = GC_MALLOC (size);
+               obj = (MonoObject *)GC_MALLOC (size);
 
                obj->vtable = vtable;
        }
@@ -654,16 +655,16 @@ mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length)
        MonoArray *obj;
 
        if (!vtable->klass->has_references) {
-               obj = GC_MALLOC_ATOMIC (size);
+               obj = (MonoArray *)GC_MALLOC_ATOMIC (size);
 
                obj->obj.vtable = vtable;
                obj->obj.synchronisation = NULL;
 
                memset ((char *) obj + sizeof (MonoObject), 0, size - sizeof (MonoObject));
        } else if (vtable->gc_descr != GC_NO_DESCRIPTOR) {
-               obj = GC_GCJ_MALLOC (size, vtable);
+               obj = (MonoArray *)GC_GCJ_MALLOC (size, vtable);
        } else {
-               obj = GC_MALLOC (size);
+               obj = (MonoArray *)GC_MALLOC (size);
 
                obj->obj.vtable = vtable;
        }
@@ -682,16 +683,16 @@ mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uint
        MonoArray *obj;
 
        if (!vtable->klass->has_references) {
-               obj = GC_MALLOC_ATOMIC (size);
+               obj = (MonoArray *)GC_MALLOC_ATOMIC (size);
 
                obj->obj.vtable = vtable;
                obj->obj.synchronisation = NULL;
 
                memset ((char *) obj + sizeof (MonoObject), 0, size - sizeof (MonoObject));
        } else if (vtable->gc_descr != GC_NO_DESCRIPTOR) {
-               obj = GC_GCJ_MALLOC (size, vtable);
+               obj = (MonoArray *)GC_GCJ_MALLOC (size, vtable);
        } else {
-               obj = GC_MALLOC (size);
+               obj = (MonoArray *)GC_MALLOC (size);
 
                obj->obj.vtable = vtable;
        }
@@ -710,7 +711,7 @@ mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uint
 void *
 mono_gc_alloc_string (MonoVTable *vtable, size_t size, gint32 len)
 {
-       MonoString *obj = GC_MALLOC_ATOMIC (size);
+       MonoString *obj = (MonoString *)GC_MALLOC_ATOMIC (size);
 
        obj->object.vtable = vtable;
        obj->object.synchronisation = NULL;
@@ -769,7 +770,7 @@ mono_gc_wbarrier_generic_store (gpointer ptr, MonoObject* value)
 void
 mono_gc_wbarrier_generic_store_atomic (gpointer ptr, MonoObject *value)
 {
-       InterlockedWritePointer (ptr, value);
+       InterlockedWritePointer ((volatile gpointer *)ptr, value);
 }
 
 void
@@ -805,7 +806,7 @@ mono_gc_get_suspend_signal (void)
 int
 mono_gc_get_restart_signal (void)
 {
-       return GC_get_restart_signal ();
+       return GC_get_thr_restart_signal ();
 }
 
 #if defined(USE_COMPILER_TLS) && defined(__linux__) && (defined(__i386__) || defined(__x86_64__))
@@ -840,7 +841,7 @@ create_allocator (int atype, int tls_key, gboolean slowpath)
        MonoMethod *res;
        MonoMethodSignature *csig;
        const char *name = NULL;
-       AllocatorWrapperInfo *info;
+       WrapperInfo *info;
 
        if (atype == ATYPE_FREEPTR) {
                name = slowpath ? "SlowAllocPtrfree" : "AllocPtrfree";
@@ -924,11 +925,17 @@ create_allocator (int atype, int tls_key, gboolean slowpath)
        mono_mb_emit_byte (mb, 0x0D); /* CEE_MONO_TLS */
        mono_mb_emit_i4 (mb, tls_key);
        if (atype == ATYPE_FREEPTR || atype == ATYPE_FREEPTR_FOR_BOX || atype == ATYPE_STRING)
-               mono_mb_emit_icon (mb, G_STRUCT_OFFSET (struct GC_Thread_Rep, ptrfree_freelists));
+               mono_mb_emit_icon (mb, G_STRUCT_OFFSET (struct GC_Thread_Rep, tlfs)
+                                       + G_STRUCT_OFFSET (struct thread_local_freelists,
+                                                          ptrfree_freelists));
        else if (atype == ATYPE_NORMAL)
-               mono_mb_emit_icon (mb, G_STRUCT_OFFSET (struct GC_Thread_Rep, normal_freelists));
+               mono_mb_emit_icon (mb, G_STRUCT_OFFSET (struct GC_Thread_Rep, tlfs)
+                                       + G_STRUCT_OFFSET (struct thread_local_freelists,
+                                                          normal_freelists));
        else if (atype == ATYPE_GCJ)
-               mono_mb_emit_icon (mb, G_STRUCT_OFFSET (struct GC_Thread_Rep, gcj_freelists));
+               mono_mb_emit_icon (mb, G_STRUCT_OFFSET (struct GC_Thread_Rep, tlfs)
+                                       + G_STRUCT_OFFSET (struct thread_local_freelists,
+                                                          gcj_freelists));
        else
                g_assert_not_reached ();
        mono_mb_emit_byte (mb, MONO_CEE_ADD);
@@ -1038,15 +1045,14 @@ create_allocator (int atype, int tls_key, gboolean slowpath)
 
        mono_mb_emit_byte (mb, MONO_CEE_RET);
 
-       res = mono_mb_create_method (mb, csig, 8);
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_NONE);
+       info->d.alloc.gc_name = "boehm";
+       info->d.alloc.alloc_type = atype;
+
+       res = mono_mb_create (mb, csig, 8, info);
        mono_mb_free (mb);
        mono_method_get_header (res)->init_locals = FALSE;
 
-       info = mono_image_alloc0 (mono_defaults.corlib, sizeof (AllocatorWrapperInfo));
-       info->gc_name = "boehm";
-       info->alloc_type = atype;
-       mono_marshal_set_wrapper_info (res, info);
-
        return res;
 }
 
@@ -1142,7 +1148,7 @@ mono_gc_get_managed_allocator_by_type (int atype, gboolean slowpath)
                return res;
 
        res = create_allocator (atype, TLS_KEY_BOEHM_GC_THREAD, slowpath);
-       mono_mutex_lock (&mono_gc_lock);
+       mono_os_mutex_lock (&mono_gc_lock);
        if (cache [atype]) {
                mono_free_method (res);
                res = cache [atype];
@@ -1150,7 +1156,7 @@ mono_gc_get_managed_allocator_by_type (int atype, gboolean slowpath)
                mono_memory_barrier ();
                cache [atype] = res;
        }
-       mono_mutex_unlock (&mono_gc_lock);
+       mono_os_mutex_unlock (&mono_gc_lock);
        return res;
 }
 
@@ -1348,7 +1354,7 @@ mono_gc_register_for_finalization (MonoObject *obj, void *user_data)
        g_assert (GC_base (obj) == (char*)obj - offset);
 #endif
 
-       GC_REGISTER_FINALIZER_NO_ORDER ((char*)obj - offset, user_data, GUINT_TO_POINTER (offset), NULL, NULL);
+       GC_REGISTER_FINALIZER_NO_ORDER ((char*)obj - offset, (GC_finalization_proc)user_data, GUINT_TO_POINTER (offset), NULL, NULL);
 }
 
 #ifndef HOST_WIN32
@@ -1369,10 +1375,10 @@ BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reser
 #endif
 
 guint
-mono_gc_get_vtable_bits (MonoClass *class)
+mono_gc_get_vtable_bits (MonoClass *klass)
 {
        if (fin_callbacks.is_class_finalization_aware) {
-               if (fin_callbacks.is_class_finalization_aware (class))
+               if (fin_callbacks.is_class_finalization_aware (klass))
                        return BOEHM_GC_BIT_FINALIZER_AWARE;
        }
        return 0;
@@ -1421,23 +1427,19 @@ mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker)
        return NULL;
 }
 
-gboolean
-mono_gc_set_allow_synchronous_major (gboolean flag)
-{
-       return flag;
-}
 /* Toggleref support */
 
 void
 mono_gc_toggleref_add (MonoObject *object, mono_bool strong_ref)
 {
-       GC_toggleref_add ((GC_PTR)object, (int)strong_ref);
+       if (GC_toggleref_add ((GC_PTR)object, (int)strong_ref) != GC_SUCCESS)
+           g_error ("GC_toggleref_add failed\n");
 }
 
 void
 mono_gc_toggleref_register_callback (MonoToggleRefStatus (*proccess_toggleref) (MonoObject *obj))
 {
-       GC_toggleref_register_callback ((int (*) (GC_PTR obj)) proccess_toggleref);
+       GC_set_toggleref_func ((GC_ToggleRefStatus (*) (GC_PTR obj)) proccess_toggleref);
 }
 
 /* Test support code */
@@ -1446,7 +1448,7 @@ static MonoToggleRefStatus
 test_toggleref_callback (MonoObject *obj)
 {
        static MonoClassField *mono_toggleref_test_field;
-       int status = MONO_TOGGLE_REF_DROP;
+       MonoToggleRefStatus status = MONO_TOGGLE_REF_DROP;
 
        if (!mono_toggleref_test_field) {
                mono_toggleref_test_field = mono_class_get_field_from_name (mono_object_get_class (obj), "__test");
@@ -1486,7 +1488,7 @@ mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks)
 
        fin_callbacks = *callbacks;
 
-       GC_set_finalizer_notify_proc ((void (*) (GC_PTR))fin_notifier);
+       GC_set_await_finalize_proc ((void (*) (GC_PTR))fin_notifier);
 }
 
 #define BITMAP_SIZE (sizeof (*((HandleData *)NULL)->bitmap) * CHAR_BIT)
@@ -1522,12 +1524,12 @@ handle_data_alloc_entries (HandleData *handles)
 {
        handles->size = 32;
        if (MONO_GC_HANDLE_TYPE_IS_WEAK (handles->type)) {
-               handles->entries = g_malloc0 (sizeof (*handles->entries) * handles->size);
-               handles->domain_ids = g_malloc0 (sizeof (*handles->domain_ids) * handles->size);
+               handles->entries = (void **)g_malloc0 (sizeof (*handles->entries) * handles->size);
+               handles->domain_ids = (guint16 *)g_malloc0 (sizeof (*handles->domain_ids) * handles->size);
        } else {
-               handles->entries = mono_gc_alloc_fixed (sizeof (*handles->entries) * handles->size, NULL, MONO_ROOT_SOURCE_GC_HANDLE, "gc handles table");
+               handles->entries = (void **)mono_gc_alloc_fixed (sizeof (*handles->entries) * handles->size, NULL, MONO_ROOT_SOURCE_GC_HANDLE, "gc handles table");
        }
-       handles->bitmap = g_malloc0 (handles->size / CHAR_BIT);
+       handles->bitmap = (guint32 *)g_malloc0 (handles->size / CHAR_BIT);
 }
 
 static gint
@@ -1564,7 +1566,7 @@ handle_data_grow (HandleData *handles, gboolean track)
        guint32 new_size = handles->size * 2; /* always double: we memset to 0 based on this below */
 
        /* resize and copy the bitmap */
-       new_bitmap = g_malloc0 (new_size / CHAR_BIT);
+       new_bitmap = (guint32 *)g_malloc0 (new_size / CHAR_BIT);
        memcpy (new_bitmap, handles->bitmap, handles->size / CHAR_BIT);
        g_free (handles->bitmap);
        handles->bitmap = new_bitmap;
@@ -1574,8 +1576,8 @@ handle_data_grow (HandleData *handles, gboolean track)
                gpointer *entries;
                guint16 *domain_ids;
                gint i;
-               domain_ids = g_malloc0 (sizeof (*handles->domain_ids) * new_size);
-               entries = g_malloc0 (sizeof (*handles->entries) * new_size);
+               domain_ids = (guint16 *)g_malloc0 (sizeof (*handles->domain_ids) * new_size);
+               entries = (void **)g_malloc0 (sizeof (*handles->entries) * new_size);
                memcpy (domain_ids, handles->domain_ids, sizeof (*handles->domain_ids) * handles->size);
                for (i = 0; i < handles->size; ++i) {
                        MonoObject *obj = mono_gc_weak_link_get (&(handles->entries [i]));
@@ -1592,7 +1594,7 @@ handle_data_grow (HandleData *handles, gboolean track)
                handles->domain_ids = domain_ids;
        } else {
                gpointer *entries;
-               entries = mono_gc_alloc_fixed (sizeof (*handles->entries) * new_size, NULL, MONO_ROOT_SOURCE_GC_HANDLE, "gc handles table");
+               entries = (void **)mono_gc_alloc_fixed (sizeof (*handles->entries) * new_size, NULL, MONO_ROOT_SOURCE_GC_HANDLE, "gc handles table");
                mono_gc_memmove_aligned (entries, handles->entries, sizeof (*handles->entries) * handles->size);
                mono_gc_free_fixed (handles->entries);
                handles->entries = entries;
@@ -1710,7 +1712,7 @@ mono_gchandle_get_target (guint32 gchandle)
                if (MONO_GC_HANDLE_TYPE_IS_WEAK (handles->type)) {
                        obj = mono_gc_weak_link_get (&handles->entries [slot]);
                } else {
-                       obj = handles->entries [slot];
+                       obj = (MonoObject *)handles->entries [slot];
                }
        } else {
                /* print a warning? */
@@ -1732,7 +1734,7 @@ mono_gchandle_set_target (guint32 gchandle, MonoObject *obj)
        lock_handles (handles);
        if (slot < handles->size && slot_occupied (handles, slot)) {
                if (MONO_GC_HANDLE_TYPE_IS_WEAK (handles->type)) {
-                       old_obj = handles->entries [slot];
+                       old_obj = (MonoObject *)handles->entries [slot];
                        if (handles->entries [slot])
                                mono_gc_weak_link_remove (&handles->entries [slot], handles->type == HANDLE_WEAK_TRACK);
                        if (obj)
@@ -1779,7 +1781,7 @@ mono_gchandle_is_in_domain (guint32 gchandle, MonoDomain *domain)
                        result = domain->domain_id == handles->domain_ids [slot];
                } else {
                        MonoObject *obj;
-                       obj = handles->entries [slot];
+                       obj = (MonoObject *)handles->entries [slot];
                        if (obj == NULL)
                                result = TRUE;
                        else
index 46ea5ef635098895a28624e2a0dc101d5418e1da..bf2b5c6a8e93c109408a607a10113e4eefbcfee7 100644 (file)
@@ -1,8 +1,8 @@
 /* 
  * Copyright 2012 Xamarin Inc
  */
-#ifndef __MONO_METADATA_CLASS_INTERBALS_H__
-#define __MONO_METADATA_CLASS_INTERBALS_H__
+#ifndef __MONO_METADATA_CLASS_INTERNALS_H__
+#define __MONO_METADATA_CLASS_INTERNALS_H__
 
 #include <mono/metadata/class.h>
 #include <mono/metadata/object.h>
@@ -66,7 +66,7 @@ struct _MonoMethod {
        guint16 flags;  /* method flags */
        guint16 iflags; /* method implementation flags */
        guint32 token;
-       MonoClass *klass;
+       MonoClass *klass; /* To what class does this method belong */
        MonoMethodSignature *signature;
        /* name is useful mostly for debugging */
        const char *name;
@@ -528,7 +528,7 @@ struct _MonoMethodInflated {
  */
 struct _MonoGenericClass {
        MonoClass *container_class;     /* the generic type definition */
-       MonoGenericContext context;     /* a context that contains the type instantiation doesn't contain any method instantiation */
+       MonoGenericContext context;     /* a context that contains the type instantiation doesn't contain any method instantiation */ /* FIXME: Only the class_inst member of "context" is ever used, so this field could be replaced with just a monogenericinst */
        guint is_dynamic  : 1;          /* We're a MonoDynamicGenericClass */
        guint is_tb_open  : 1;          /* This is the fully open instantiation for a type_builder. Quite ugly, but it's temporary.*/
        MonoClass *cached_class;        /* if present, the MonoClass corresponding to the instantiation.  */
@@ -570,21 +570,19 @@ struct _MonoGenericParam {
         * sharing.
         */
        MonoType *gshared_constraint;
-       /* 
-        * If owner is NULL, or owner is 'owned' by this gparam,
-        * then this is the image whose mempool this struct was allocated from.
-        * The second case happens for gparams created in
-        * mono_reflection_initialize_generic_parameter ().
-        */
-       MonoImage *image;
 };
 
 /* Additional details about a MonoGenericParam */
 typedef struct {
        MonoClass *pklass;              /* The corresponding `MonoClass'. */
        const char *name;
+
+       // See GenericParameterAttributes
        guint16 flags;
+
        guint32 token;
+
+       // Constraints on type parameters
        MonoClass** constraints; /* NULL means end of list */
 } MonoGenericParamInfo;
 
@@ -604,33 +602,87 @@ struct _MonoGenericContainer {
           the generic container of the containing class. */
        MonoGenericContainer *parent;
        /* the generic type definition or the generic method definition corresponding to this container */
+       /* Union rules: If is_anonymous, image field is valid; else if is_method, method field is valid; else klass is valid. */
        union {
                MonoClass *klass;
                MonoMethod *method;
+               MonoImage *image;
        } owner;
-       int type_argc    : 31;
+       int type_argc    : 29; // Per the ECMA spec, this value is capped at 16 bits
        /* If true, we're a generic method, otherwise a generic type definition. */
        /* Invariant: parent != NULL => is_method */
-       int is_method    : 1;
+       int is_method     : 1;
+       /* If true, this container has no associated class/method and only the image is known. This can happen:
+          1. For the special anonymous containers kept by MonoImage.
+          2. During container creation via the mono_metadata_load_generic_params path-- in this case the caller
+             sets the owner, so temporarily while load_generic_params is completing the container is anonymous.
+          3. When user code creates a generic parameter via SRE, but has not yet set an owner. */
+       int is_anonymous : 1;
+       /* If false, all params in this container are full-size. If true, all params are just param structs. */
+       /* This field is always == to the is_anonymous field, except in "temporary" cases (2) and (3) above. */
+       /* TODO: Merge GenericParam and GenericParamFull, remove this field. Benefit is marginal. */
+       int is_small_param : 1;
        /* Our type parameters. */
        MonoGenericParamFull *type_params;
-
-       /* 
-        * For owner-less containers created by SRE, the image the container was
-        * allocated from.
-        */
-       MonoImage *image;
 };
 
-#define mono_generic_container_get_param(gc, i) ((MonoGenericParam *) ((gc)->type_params + (i)))
-#define mono_generic_container_get_param_info(gc, i) (&((gc)->type_params + (i))->info)
+static inline MonoGenericParam *
+mono_generic_container_get_param (MonoGenericContainer *gc, int i)
+{
+       return (MonoGenericParam *) &gc->type_params [i];
+}
+
+static inline MonoGenericParamInfo *
+mono_generic_container_get_param_info (MonoGenericContainer *gc, int i)
+{
+       return &gc->type_params [i].info;
+}
+
+static inline MonoGenericContainer *
+mono_generic_param_owner (MonoGenericParam *p)
+{
+       return p->owner;
+}
+
+static inline int
+mono_generic_param_num (MonoGenericParam *p)
+{
+       return p->num;
+}
+
+static inline gboolean
+mono_generic_param_is_fullsize (MonoGenericParam *p)
+{
+       return !mono_generic_param_owner (p)->is_small_param;
+}
 
-#define mono_generic_param_owner(p)            ((p)->owner)
-#define mono_generic_param_num(p)              ((p)->num)
-#define mono_generic_param_info(p)             (mono_generic_param_owner (p) ? &((MonoGenericParamFull *) p)->info : NULL)
-#define mono_generic_param_name(p)             (((mono_generic_param_owner (p) || (p)->gshared_constraint)) ? ((MonoGenericParamFull *) p)->info.name : NULL)
-#define mono_type_get_generic_param_owner(t)   (mono_generic_param_owner ((t)->data.generic_param))
-#define mono_type_get_generic_param_num(t)     (mono_generic_param_num   ((t)->data.generic_param))
+static inline MonoGenericParamInfo *
+mono_generic_param_info (MonoGenericParam *p)
+{
+       if (mono_generic_param_is_fullsize (p))
+               return &((MonoGenericParamFull *) p)->info;
+       return NULL;
+}
+
+static inline const char *
+mono_generic_param_name (MonoGenericParam *p)
+{
+       if (mono_generic_param_is_fullsize (p))
+               return ((MonoGenericParamFull *) p)->info.name;
+       return NULL;
+}
+
+static inline MonoGenericContainer *
+mono_type_get_generic_param_owner (MonoType *t)
+{
+       return mono_generic_param_owner (t->data.generic_param);
+}
+
+static inline int
+mono_type_get_generic_param_num (MonoType *t)
+{
+       return mono_generic_param_num (t->data.generic_param);
+}
 
 /*
  * Class information which might be cached by the runtime in the AOT file for
@@ -1135,14 +1187,14 @@ MonoClass*      \
 mono_class_get_##shortname##_class (void)      \
 {      \
        static MonoClass *tmp_class;    \
-       MonoClass *class = tmp_class;   \
-       if (!class) {   \
-               class = mono_class_from_name (mono_defaults.corlib, #namespace, #name); \
-               g_assert (class);       \
+       MonoClass *klass = tmp_class;   \
+       if (!klass) {   \
+               klass = mono_class_from_name (mono_defaults.corlib, #namespace, #name); \
+               g_assert (klass);       \
                mono_memory_barrier (); \
-               tmp_class = class;      \
+               tmp_class = klass;      \
        }       \
-       return class;   \
+       return klass;   \
 }
 
 #define GENERATE_STATIC_GET_CLASS_WITH_CACHE(shortname,namespace,name) \
@@ -1294,6 +1346,8 @@ MONO_API void mono_class_describe_statics (MonoClass* klass);
 /* method debugging functions, for use inside gdb */
 MONO_API void mono_method_print_code (MonoMethod *method);
 
+char *mono_signature_full_name (MonoMethodSignature *sig);
+
 /*Enum validation related functions*/
 MONO_API gboolean
 mono_type_is_valid_enum_basetype (MonoType * type);
@@ -1411,4 +1465,13 @@ mono_field_from_token_checked (MonoImage *image, uint32_t token, MonoClass **ret
 gpointer
 mono_ldtoken_checked (MonoImage *image, guint32 token, MonoClass **handle_class, MonoGenericContext *context, MonoError *error);
 
-#endif /* __MONO_METADATA_CLASS_INTERBALS_H__ */
+MonoClass *
+mono_class_from_generic_parameter_internal (MonoGenericParam *param);
+
+MonoImage *
+get_image_for_generic_param (MonoGenericParam *param);
+
+char *
+make_generic_name_string (MonoImage *image, int num);
+
+#endif /* __MONO_METADATA_CLASS_INTERNALS_H__ */
index fdfd5c31505f0ffb427a0655627bf562f558ca27..4d74e17e60ebabd5dac765cd6474b1cf751927ed 100644 (file)
 #include <mono/metadata/security-manager.h>
 #include <mono/metadata/security-core-clr.h>
 #include <mono/metadata/attrdefs.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/verify-internals.h>
 #include <mono/metadata/mono-debug.h>
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/mono-string.h>
 #include <mono/utils/mono-error-internals.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-memory-model.h>
 #include <mono/utils/atomic.h>
 #include <mono/utils/bsearch.h>
+#include <mono/utils/checked-build.h>
 
 MonoStats mono_stats;
 
@@ -63,14 +64,14 @@ static MonoClass * mono_class_create_from_typedef (MonoImage *image, guint32 typ
 static gboolean mono_class_get_cached_class_info (MonoClass *klass, MonoCachedClassInfo *res);
 static gboolean can_access_type (MonoClass *access_klass, MonoClass *member_klass);
 static MonoMethod* find_method_in_metadata (MonoClass *klass, const char *name, int param_count, int flags);
-static int generic_array_methods (MonoClass *class);
-static void setup_generic_array_ifaces (MonoClass *class, MonoClass *iface, MonoMethod **methods, int pos);
+static int generic_array_methods (MonoClass *klass);
+static void setup_generic_array_ifaces (MonoClass *klass, MonoClass *iface, MonoMethod **methods, int pos);
 
 static MonoMethod* mono_class_get_virtual_methods (MonoClass* klass, gpointer *iter);
 static char* mono_assembly_name_from_token (MonoImage *image, guint32 type_token);
 static void mono_field_resolve_type (MonoClassField *field, MonoError *error);
 static guint32 mono_field_resolve_flags (MonoClassField *field);
-static void mono_class_setup_vtable_full (MonoClass *class, GList *in_setup);
+static void mono_class_setup_vtable_full (MonoClass *klass, GList *in_setup);
 static void mono_generic_class_setup_parent (MonoClass *klass, MonoClass *gklass);
 
 /*
@@ -103,13 +104,13 @@ typedef gboolean (*gclass_record_func) (MonoClass*, void*);
 static inline void
 classes_lock (void)
 {
-       mono_locks_acquire (&classes_mutex, ClassesLock);
+       mono_locks_os_acquire (&classes_mutex, ClassesLock);
 }
 
 static inline void
 classes_unlock (void)
 {
-       mono_locks_release (&classes_mutex, ClassesLock);
+       mono_locks_os_release (&classes_mutex, ClassesLock);
 }
 
 /* 
@@ -163,9 +164,9 @@ MonoClass *
 mono_class_from_typeref (MonoImage *image, guint32 type_token)
 {
        MonoError error;
-       MonoClass *class = mono_class_from_typeref_checked (image, type_token, &error);
+       MonoClass *klass = mono_class_from_typeref_checked (image, type_token, &error);
        g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
-       return class;
+       return klass;
 }
 
 MonoClass *
@@ -222,7 +223,7 @@ mono_class_from_typeref_checked (MonoImage *image, guint32 type_token, MonoError
                if (enclosing->nested_classes_inited && enclosing->ext) {
                        /* Micro-optimization: don't scan the metadata tables if enclosing is already inited */
                        for (tmp = enclosing->ext->nested_classes; tmp; tmp = tmp->next) {
-                               res = tmp->data;
+                               res = (MonoClass *)tmp->data;
                                if (strcmp (res->name, name) == 0)
                                        return res;
                        }
@@ -298,17 +299,17 @@ MonoArrayType *
 mono_dup_array_type (MonoImage *image, MonoArrayType *a)
 {
        if (image) {
-               a = mono_image_memdup (image, a, sizeof (MonoArrayType));
+               a = (MonoArrayType *)mono_image_memdup (image, a, sizeof (MonoArrayType));
                if (a->sizes)
-                       a->sizes = mono_image_memdup (image, a->sizes, a->numsizes * sizeof (int));
+                       a->sizes = (int *)mono_image_memdup (image, a->sizes, a->numsizes * sizeof (int));
                if (a->lobounds)
-                       a->lobounds = mono_image_memdup (image, a->lobounds, a->numlobounds * sizeof (int));
+                       a->lobounds = (int *)mono_image_memdup (image, a->lobounds, a->numlobounds * sizeof (int));
        } else {
-               a = g_memdup (a, sizeof (MonoArrayType));
+               a = (MonoArrayType *)g_memdup (a, sizeof (MonoArrayType));
                if (a->sizes)
-                       a->sizes = g_memdup (a->sizes, a->numsizes * sizeof (int));
+                       a->sizes = (int *)g_memdup (a->sizes, a->numsizes * sizeof (int));
                if (a->lobounds)
-                       a->lobounds = g_memdup (a->lobounds, a->numlobounds * sizeof (int));
+                       a->lobounds = (int *)g_memdup (a->lobounds, a->numlobounds * sizeof (int));
        }
        return a;
 }
@@ -346,6 +347,50 @@ mono_type_name_check_byref (MonoType *type, GString *str)
                g_string_append_c (str, '&');
 }
 
+/**
+ * mono_identifier_escape_type_name_chars:
+ * @str: a destination string
+ * @identifier: an IDENTIFIER in internal form
+ *
+ * Returns: str.
+ *
+ * The displayed form of the identifier is appended to str.
+ *
+ * The displayed form of an identifier has the characters ,+&*[]\
+ * that have special meaning in type names escaped with a preceeding
+ * backslash (\) character.
+ */
+static GString*
+mono_identifier_escape_type_name_chars (GString* str, const char* identifier)
+{
+       if (!identifier)
+               return str;
+
+       size_t n = str->len;
+       // reserve space for common case: there will be no escaped characters.
+       g_string_set_size(str, n + strlen(identifier));
+       g_string_set_size(str, n);
+
+       for (const char* s = identifier; *s != 0 ; s++) {
+               switch (*s) {
+               case ',':
+               case '+':
+               case '&':
+               case '*':
+               case '[':
+               case ']':
+               case '\\':
+                       g_string_append_c (str, '\\');
+                       g_string_append_c (str, *s);
+                       break;
+               default:
+                       g_string_append_c (str, *s);
+                       break;
+               }
+       }
+       return str;
+}
+
 static void
 mono_type_get_name_recurse (MonoType *type, GString *str, gboolean is_recursed,
                            MonoTypeNameFormat format)
@@ -427,16 +472,19 @@ mono_type_get_name_recurse (MonoType *type, GString *str, gboolean is_recursed,
                        else
                                g_string_append_c (str, '+');
                } else if (*klass->name_space) {
-                       g_string_append (str, klass->name_space);
+                       if (format == MONO_TYPE_NAME_FORMAT_IL)
+                               g_string_append (str, klass->name_space);
+                       else
+                               mono_identifier_escape_type_name_chars (str, klass->name_space);
                        g_string_append_c (str, '.');
                }
                if (format == MONO_TYPE_NAME_FORMAT_IL) {
                        char *s = strchr (klass->name, '`');
                        int len = s ? s - klass->name : strlen (klass->name);
-
                        g_string_append_len (str, klass->name, len);
-               } else
-                       g_string_append (str, klass->name);
+               } else {
+                       mono_identifier_escape_type_name_chars (str, klass->name);
+               }
                if (is_recursed)
                        break;
                if (klass->generic_class) {
@@ -537,9 +585,9 @@ mono_type_get_name_full (MonoType *type, MonoTypeNameFormat format)
  * The inverse of mono_reflection_parse_type ().
  */
 char *
-mono_type_get_full_name (MonoClass *class)
+mono_type_get_full_name (MonoClass *klass)
 {
-       return mono_type_get_name_full (mono_class_get_type (class), MONO_TYPE_NAME_FORMAT_REFLECTION);
+       return mono_type_get_name_full (mono_class_get_type (klass), MONO_TYPE_NAME_FORMAT_REFLECTION);
 }
 
 /**
@@ -758,9 +806,9 @@ mono_generic_class_get_context (MonoGenericClass *gclass)
 }
 
 MonoGenericContext *
-mono_class_get_context (MonoClass *class)
+mono_class_get_context (MonoClass *klass)
 {
-       return class->generic_class ? mono_generic_class_get_context (class->generic_class) : NULL;
+       return klass->generic_class ? mono_generic_class_get_context (klass->generic_class) : NULL;
 }
 
 /*
@@ -1062,7 +1110,7 @@ mono_class_inflate_generic_method_full_checked (MonoMethod *method, MonoClass *k
 
        // check cache
        mono_image_set_lock (set);
-       cached = g_hash_table_lookup (set->gmethod_cache, iresult);
+       cached = (MonoMethodInflated *)g_hash_table_lookup (set->gmethod_cache, iresult);
        mono_image_set_unlock (set);
 
        if (cached) {
@@ -1137,7 +1185,7 @@ mono_class_inflate_generic_method_full_checked (MonoMethod *method, MonoClass *k
 
        // check cache
        mono_image_set_lock (set);
-       cached = g_hash_table_lookup (set->gmethod_cache, iresult);
+       cached = (MonoMethodInflated *)g_hash_table_lookup (set->gmethod_cache, iresult);
        if (!cached) {
                g_hash_table_insert (set->gmethod_cache, iresult, iresult);
                iresult->owner = set;
@@ -1217,7 +1265,7 @@ mono_method_get_generic_container (MonoMethod *method)
        if (!method->is_generic)
                return NULL;
 
-       container = mono_image_property_lookup (method->klass->image, method, MONO_METHOD_PROP_GENERIC_CONTAINER);
+       container = (MonoGenericContainer *)mono_image_property_lookup (method->klass->image, method, MONO_METHOD_PROP_GENERIC_CONTAINER);
        g_assert (container);
 
        return container;
@@ -1245,21 +1293,21 @@ mono_method_set_generic_container (MonoMethod *method, MonoGenericContainer* con
  * in a separate function since it is cheaper than calling mono_class_setup_fields.
  */
 static MonoType*
-mono_class_find_enum_basetype (MonoClass *class, MonoError *error)
+mono_class_find_enum_basetype (MonoClass *klass, MonoError *error)
 {
        MonoGenericContainer *container = NULL;
-       MonoImage *m = class->image; 
-       const int top = class->field.count;
+       MonoImage *m = klass->image;
+       const int top = klass->field.count;
        int i;
 
-       g_assert (class->enumtype);
+       g_assert (klass->enumtype);
 
        mono_error_init (error);
 
-       if (class->generic_container)
-               container = class->generic_container;
-       else if (class->generic_class) {
-               MonoClass *gklass = class->generic_class->container_class;
+       if (klass->generic_container)
+               container = klass->generic_container;
+       else if (klass->generic_class) {
+               MonoClass *gklass = klass->generic_class->container_class;
 
                container = gklass->generic_container;
                g_assert (container);
@@ -1271,17 +1319,17 @@ mono_class_find_enum_basetype (MonoClass *class, MonoError *error)
        for (i = 0; i < top; i++){
                const char *sig;
                guint32 cols [MONO_FIELD_SIZE];
-               int idx = class->field.first + i;
+               int idx = klass->field.first + i;
                MonoType *ftype;
 
-               /* class->field.first and idx points into the fieldptr table */
+               /* klass->field.first and idx points into the fieldptr table */
                mono_metadata_decode_table_row (m, MONO_TABLE_FIELD, idx, cols, MONO_FIELD_SIZE);
 
                if (cols [MONO_FIELD_FLAGS] & FIELD_ATTRIBUTE_STATIC) //no need to decode static fields
                        continue;
 
-               if (!mono_verifier_verify_field_signature (class->image, cols [MONO_FIELD_SIGNATURE], NULL)) {
-                       mono_error_set_bad_image (error, class->image, "Invalid field signature %x", cols [MONO_FIELD_SIGNATURE]);
+               if (!mono_verifier_verify_field_signature (klass->image, cols [MONO_FIELD_SIGNATURE], NULL)) {
+                       mono_error_set_bad_image (error, klass->image, "Invalid field signature %x", cols [MONO_FIELD_SIGNATURE]);
                        goto fail;
                }
 
@@ -1289,21 +1337,21 @@ mono_class_find_enum_basetype (MonoClass *class, MonoError *error)
                mono_metadata_decode_value (sig, &sig);
                /* FIELD signature == 0x06 */
                if (*sig != 0x06) {
-                       mono_error_set_bad_image (error, class->image, "Invalid field signature %x, expected 0x6 but got %x", cols [MONO_FIELD_SIGNATURE], *sig);
+                       mono_error_set_bad_image (error, klass->image, "Invalid field signature %x, expected 0x6 but got %x", cols [MONO_FIELD_SIGNATURE], *sig);
                        goto fail;
                }
 
-               ftype = mono_metadata_parse_type_full (m, container, MONO_PARSE_FIELD, cols [MONO_FIELD_FLAGS], sig + 1, &sig);
+               ftype = mono_metadata_parse_type_full (m, container, cols [MONO_FIELD_FLAGS], sig + 1, &sig);
                if (!ftype) {
                        if (mono_loader_get_last_error ()) /*FIXME plug the above to not leak errors*/
                                mono_error_set_from_loader_error (error);
                        else
-                               mono_error_set_bad_image (error, class->image, "Could not parse type for field signature %x", cols [MONO_FIELD_SIGNATURE]);
+                               mono_error_set_bad_image (error, klass->image, "Could not parse type for field signature %x", cols [MONO_FIELD_SIGNATURE]);
                        goto fail;
                }
-               if (class->generic_class) {
+               if (klass->generic_class) {
                        //FIXME do we leak here?
-                       ftype = mono_class_inflate_generic_type_checked (ftype, mono_class_get_context (class), error);
+                       ftype = mono_class_inflate_generic_type_checked (ftype, mono_class_get_context (klass), error);
                        if (!mono_error_ok (error))
                                goto fail;
                        ftype->attrs = cols [MONO_FIELD_FLAGS];
@@ -1311,7 +1359,7 @@ mono_class_find_enum_basetype (MonoClass *class, MonoError *error)
 
                return ftype;
        }
-       mono_error_set_type_load_class (error, class, "Could not find base type");
+       mono_error_set_type_load_class (error, klass, "Could not find base type");
 
 fail:
        mono_loader_assert_no_error ();
@@ -1345,50 +1393,50 @@ mono_type_has_exceptions (MonoType *type)
  * or from the heap.
  */
 static gpointer
-mono_class_alloc (MonoClass *class, int size)
+mono_class_alloc (MonoClass *klass, int size)
 {
-       if (class->generic_class)
-               return mono_image_set_alloc (class->generic_class->owner, size);
+       if (klass->generic_class)
+               return mono_image_set_alloc (klass->generic_class->owner, size);
        else
-               return mono_image_alloc (class->image, size);
+               return mono_image_alloc (klass->image, size);
 }
 
 static gpointer
-mono_class_alloc0 (MonoClass *class, int size)
+mono_class_alloc0 (MonoClass *klass, int size)
 {
        gpointer res;
 
-       res = mono_class_alloc (class, size);
+       res = mono_class_alloc (klass, size);
        memset (res, 0, size);
        return res;
 }
 
-#define mono_class_new0(class,struct_type, n_structs)          \
-    ((struct_type *) mono_class_alloc0 ((class), ((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
+#define mono_class_new0(klass,struct_type, n_structs)          \
+    ((struct_type *) mono_class_alloc0 ((klass), ((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
 
 /**
  * mono_class_setup_basic_field_info:
  * @class: The class to initialize
  *
- * Initializes the class->fields.
+ * Initializes the klass->fields.
  * LOCKING: Assumes the loader lock is held.
  */
 static void
-mono_class_setup_basic_field_info (MonoClass *class)
+mono_class_setup_basic_field_info (MonoClass *klass)
 {
        MonoClassField *field;
        MonoClass *gtd;
        MonoImage *image;
        int i, top;
 
-       if (class->fields)
+       if (klass->fields)
                return;
 
-       gtd = class->generic_class ? mono_class_get_generic_type_definition (class) : NULL;
-       image = class->image;
-       top = class->field.count;
+       gtd = klass->generic_class ? mono_class_get_generic_type_definition (klass) : NULL;
+       image = klass->image;
+       top = klass->field.count;
 
-       if (class->generic_class && image_is_dynamic (class->generic_class->container_class->image) && !class->generic_class->container_class->wastypebuilder) {
+       if (klass->generic_class && image_is_dynamic (klass->generic_class->container_class->image) && !klass->generic_class->container_class->wastypebuilder) {
                /*
                 * This happens when a generic instance of an unfinished generic typebuilder
                 * is used as an element type for creating an array type. We can't initialize
@@ -1402,24 +1450,24 @@ mono_class_setup_basic_field_info (MonoClass *class)
                mono_class_setup_basic_field_info (gtd);
 
                top = gtd->field.count;
-               class->field.first = gtd->field.first;
-               class->field.count = gtd->field.count;
+               klass->field.first = gtd->field.first;
+               klass->field.count = gtd->field.count;
        }
 
-       class->fields = mono_class_alloc0 (class, sizeof (MonoClassField) * top);
+       klass->fields = (MonoClassField *)mono_class_alloc0 (klass, sizeof (MonoClassField) * top);
 
        /*
         * Fetch all the field information.
         */
        for (i = 0; i < top; i++){
-               field = &class->fields [i];
-               field->parent = class;
+               field = &klass->fields [i];
+               field->parent = klass;
 
                if (gtd) {
                        field->name = mono_field_get_name (&gtd->fields [i]);
                } else {
-                       int idx = class->field.first + i;
-                       /* class->field.first and idx points into the fieldptr table */
+                       int idx = klass->field.first + i;
+                       /* klass->field.first and idx points into the fieldptr table */
                        guint32 name_idx = mono_metadata_decode_table_row_col (image, MONO_TABLE_FIELD, idx, MONO_FIELD_NAME);
                        /* The name is needed for fieldrefs */
                        field->name = mono_metadata_string_heap (image, name_idx);
@@ -1431,23 +1479,23 @@ mono_class_setup_basic_field_info (MonoClass *class)
  * mono_class_setup_fields:
  * @class: The class to initialize
  *
- * Initializes the class->fields.
+ * Initializes the klass->fields.
  * LOCKING: Assumes the loader lock is held.
  */
 static void
-mono_class_setup_fields (MonoClass *class)
+mono_class_setup_fields (MonoClass *klass)
 {
        MonoError error;
-       MonoImage *m = class->image; 
+       MonoImage *m = klass->image;
        int top;
-       guint32 layout = class->flags & TYPE_ATTRIBUTE_LAYOUT_MASK;
+       guint32 layout = klass->flags & TYPE_ATTRIBUTE_LAYOUT_MASK;
        int i, blittable = TRUE;
        guint32 real_size = 0;
        guint32 packing_size = 0;
        gboolean explicit_size;
        MonoClassField *field;
        MonoGenericContainer *container = NULL;
-       MonoClass *gtd = class->generic_class ? mono_class_get_generic_type_definition (class) : NULL;
+       MonoClass *gtd = klass->generic_class ? mono_class_get_generic_type_definition (klass) : NULL;
 
        /*
         * FIXME: We have a race condition here.  It's possible that this function returns
@@ -1462,14 +1510,14 @@ mono_class_setup_fields (MonoClass *class)
         * This function is called for a class whenever one of its subclasses is inited.
         * For example, it's called for every subclass of Object.  What it does is this:
         *
-        *     if (class->setup_fields_called)
+        *     if (klass->setup_fields_called)
         *         return;
         *     ...
-        *     class->instance_size = 0;
+        *     klass->instance_size = 0;
         *     ...
-        *     class->setup_fields_called = 1;
+        *     klass->setup_fields_called = 1;
         *     ... critical point
-        *     class->instance_size = actual_instance_size;
+        *     klass->instance_size = actual_instance_size;
         *
         * The last two steps are sometimes reversed, but that only changes the way in which
         * the race condition works.
@@ -1480,14 +1528,14 @@ mono_class_setup_fields (MonoClass *class)
         *
         * The other case looks like this:
         *
-        *     if (class->setup_fields_called)
+        *     if (klass->setup_fields_called)
         *         return;
         *     ... critical point X
-        *     class->instance_size = 0;
+        *     klass->instance_size = 0;
         *     ... critical point Y
-        *     class->instance_size = actual_instance_size;
+        *     klass->instance_size = actual_instance_size;
         *     ...
-        *     class->setup_fields_called = 1;
+        *     klass->setup_fields_called = 1;
         *
         * Assume thread A goes through the function and makes it to critical point X.  Now
         * thread B runs through the whole of the function, returning, assuming
@@ -1495,10 +1543,10 @@ mono_class_setup_fields (MonoClass *class)
         * critical point Y, at which time `instance_size` is `0` again, invalidating thread
         * B's assumption.
         */
-       if (class->setup_fields_called)
+       if (klass->setup_fields_called)
                return;
 
-       if (class->generic_class && image_is_dynamic (class->generic_class->container_class->image) && !class->generic_class->container_class->wastypebuilder) {
+       if (klass->generic_class && image_is_dynamic (klass->generic_class->container_class->image) && !klass->generic_class->container_class->wastypebuilder) {
                /*
                 * This happens when a generic instance of an unfinished generic typebuilder
                 * is used as an element type for creating an array type. We can't initialize
@@ -1508,39 +1556,39 @@ mono_class_setup_fields (MonoClass *class)
                return;
        }
 
-       mono_class_setup_basic_field_info (class);
-       top = class->field.count;
+       mono_class_setup_basic_field_info (klass);
+       top = klass->field.count;
 
        if (gtd) {
                mono_class_setup_fields (gtd);
                if (gtd->exception_type) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                        return;
                }
        }
 
-       class->instance_size = 0;
-       if (!class->rank)
-               class->sizes.class_size = 0;
+       klass->instance_size = 0;
+       if (!klass->rank)
+               klass->sizes.class_size = 0;
 
-       if (class->parent) {
-               /* For generic instances, class->parent might not have been initialized */
-               mono_class_init (class->parent);
-               if (!class->parent->size_inited) {
-                       mono_class_setup_fields (class->parent);
-                       if (class->parent->exception_type) {
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+       if (klass->parent) {
+               /* For generic instances, klass->parent might not have been initialized */
+               mono_class_init (klass->parent);
+               if (!klass->parent->size_inited) {
+                       mono_class_setup_fields (klass->parent);
+                       if (klass->parent->exception_type) {
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                                return;
                        }
                }
-               class->instance_size += class->parent->instance_size;
-               class->min_align = class->parent->min_align;
+               klass->instance_size += klass->parent->instance_size;
+               klass->min_align = klass->parent->min_align;
                /* we use |= since it may have been set already */
-               class->has_references |= class->parent->has_references;
-               blittable = class->parent->blittable;
+               klass->has_references |= klass->parent->has_references;
+               blittable = klass->parent->blittable;
        } else {
-               class->instance_size = sizeof (MonoObject);
-               class->min_align = 1;
+               klass->instance_size = sizeof (MonoObject);
+               klass->min_align = 1;
        }
 
        /* We can't really enable 16 bytes alignment until the GC supports it.
@@ -1548,42 +1596,42 @@ mono_class_setup_fields (MonoClass *class)
        boxed instance, which leads to unexplainable holes at the beginning of an object embedding a simd type.
        Bug #506144 is an example of this issue.
 
-        if (class->simd_type)
-               class->min_align = 16;
+        if (klass->simd_type)
+               klass->min_align = 16;
         */
        /* Get the real size */
-       explicit_size = mono_metadata_packing_from_typedef (class->image, class->type_token, &packing_size, &real_size);
+       explicit_size = mono_metadata_packing_from_typedef (klass->image, klass->type_token, &packing_size, &real_size);
 
        if (explicit_size) {
                if ((packing_size & 0xffffff00) != 0) {
-                       char *err_msg = g_strdup_printf ("Could not load struct '%s' with packing size %d >= 256", class->name, packing_size);
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, err_msg);
+                       char *err_msg = g_strdup_printf ("Could not load struct '%s' with packing size %d >= 256", klass->name, packing_size);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, err_msg);
                        return;
                }
-               class->packing_size = packing_size;
-               real_size += class->instance_size;
+               klass->packing_size = packing_size;
+               real_size += klass->instance_size;
        }
 
        if (!top) {
                if (explicit_size && real_size) {
-                       class->instance_size = MAX (real_size, class->instance_size);
+                       klass->instance_size = MAX (real_size, klass->instance_size);
                }
-               class->blittable = blittable;
+               klass->blittable = blittable;
                mono_memory_barrier ();
-               class->size_inited = 1;
-               class->fields_inited = 1;
-               class->setup_fields_called = 1;
+               klass->size_inited = 1;
+               klass->fields_inited = 1;
+               klass->setup_fields_called = 1;
                return;
        }
 
-       if (layout == TYPE_ATTRIBUTE_AUTO_LAYOUT && !(mono_is_corlib_image (class->image) && !strcmp (class->name_space, "System") && !strcmp (class->name, "ValueType")))
+       if (layout == TYPE_ATTRIBUTE_AUTO_LAYOUT && !(mono_is_corlib_image (klass->image) && !strcmp (klass->name_space, "System") && !strcmp (klass->name, "ValueType")))
                blittable = FALSE;
 
        /* Prevent infinite loops if the class references itself */
-       class->setup_fields_called = 1;
+       klass->setup_fields_called = 1;
 
-       if (class->generic_container) {
-               container = class->generic_container;
+       if (klass->generic_container) {
+               container = klass->generic_container;
        } else if (gtd) {
                container = gtd->generic_container;
                g_assert (container);
@@ -1593,10 +1641,10 @@ mono_class_setup_fields (MonoClass *class)
         * Fetch all the field information.
         */
        for (i = 0; i < top; i++){
-               int idx = class->field.first + i;
-               field = &class->fields [i];
+               int idx = klass->field.first + i;
+               field = &klass->fields [i];
 
-               field->parent = class;
+               field->parent = klass;
 
                if (!field->type) {
                        mono_field_resolve_type (field, &error);
@@ -1606,7 +1654,7 @@ mono_class_setup_fields (MonoClass *class)
                                return;
                        }
                        if (!field->type)
-                               g_error ("could not resolve %s:%s\n", mono_type_get_full_name(class), field->name);
+                               g_error ("could not resolve %s:%s\n", mono_type_get_full_name(klass), field->name);
                        g_assert (field->type);
                }
 
@@ -1622,15 +1670,15 @@ mono_class_setup_fields (MonoClass *class)
                                field->offset = offset;
 
                                if (field->offset == (guint32)-1 && !(field->type->attrs & FIELD_ATTRIBUTE_STATIC)) {
-                                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Missing field layout info for %s", field->name));
+                                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Missing field layout info for %s", field->name));
                                        break;
                                }
                                if (field->offset < -1) { /*-1 is used to encode special static fields */
-                                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Invalid negative field offset %d for %s", field->offset, field->name));
+                                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Invalid negative field offset %d for %s", field->offset, field->name));
                                        break;
                                }
-                               if (class->generic_container) {
-                                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Generic class cannot have explicit layout."));
+                               if (klass->generic_container) {
+                                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Generic class cannot have explicit layout."));
                                        break;
                                }
                        }
@@ -1645,7 +1693,7 @@ mono_class_setup_fields (MonoClass *class)
                                if (field_class) {
                                        mono_class_setup_fields (field_class);
                                        if (field_class->exception_type) {
-                                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                                                break;
                                        }
                                }
@@ -1654,16 +1702,16 @@ mono_class_setup_fields (MonoClass *class)
                        }
                }
 
-               if (class->enumtype && !(field->type->attrs & FIELD_ATTRIBUTE_STATIC)) {
-                       class->cast_class = class->element_class = mono_class_from_mono_type (field->type);
-                       blittable = class->element_class->blittable;
+               if (klass->enumtype && !(field->type->attrs & FIELD_ATTRIBUTE_STATIC)) {
+                       klass->cast_class = klass->element_class = mono_class_from_mono_type (field->type);
+                       blittable = klass->element_class->blittable;
                }
 
                if (mono_type_has_exceptions (field->type)) {
-                       char *class_name = mono_type_get_full_name (class);
+                       char *class_name = mono_type_get_full_name (klass);
                        char *type_name = mono_type_full_name (field->type);
 
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                        g_warning ("Invalid type %s for instance field %s:%s", type_name, class_name, field->name);
                        g_free (class_name);
                        g_free (type_name);
@@ -1672,46 +1720,46 @@ mono_class_setup_fields (MonoClass *class)
                /* The def_value of fields is compute lazily during vtable creation */
        }
 
-       if (class == mono_defaults.string_class)
+       if (klass == mono_defaults.string_class)
                blittable = FALSE;
 
-       class->blittable = blittable;
+       klass->blittable = blittable;
 
-       if (class->enumtype && !mono_class_enum_basetype (class)) {
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+       if (klass->enumtype && !mono_class_enum_basetype (klass)) {
+               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                return;
        }
        if (explicit_size && real_size) {
-               class->instance_size = MAX (real_size, class->instance_size);
+               klass->instance_size = MAX (real_size, klass->instance_size);
        }
 
-       if (class->exception_type)
+       if (klass->exception_type)
                return;
-       mono_class_layout_fields (class);
+       mono_class_layout_fields (klass);
 
        /*valuetypes can't be neither bigger than 1Mb or empty. */
-       if (class->valuetype && (class->instance_size <= 0 || class->instance_size > (0x100000 + sizeof (MonoObject))))
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+       if (klass->valuetype && (klass->instance_size <= 0 || klass->instance_size > (0x100000 + sizeof (MonoObject))))
+               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
 
        mono_memory_barrier ();
-       class->fields_inited = 1;
+       klass->fields_inited = 1;
 }
 
 /** 
  * mono_class_setup_fields_locking:
  * @class: The class to initialize
  *
- * Initializes the class->fields array of fields.
+ * Initializes the klass->fields array of fields.
  * Aquires the loader lock.
  */
 void
-mono_class_setup_fields_locking (MonoClass *class)
+mono_class_setup_fields_locking (MonoClass *klass)
 {
        /* This can be checked without locks */
-       if (class->fields_inited)
+       if (klass->fields_inited)
                return;
        mono_loader_lock ();
-       mono_class_setup_fields (class);
+       mono_class_setup_fields (klass);
        mono_loader_unlock ();
 }
 
@@ -1780,11 +1828,11 @@ type_has_references (MonoClass *klass, MonoType *ftype)
  * LOCKING: this is supposed to be called with the loader lock held.
  */
 void
-mono_class_layout_fields (MonoClass *class)
+mono_class_layout_fields (MonoClass *klass)
 {
        int i;
-       const int top = class->field.count;
-       guint32 layout = class->flags & TYPE_ATTRIBUTE_LAYOUT_MASK;
+       const int top = klass->field.count;
+       guint32 layout = klass->flags & TYPE_ATTRIBUTE_LAYOUT_MASK;
        guint32 pass, passes, real_size;
        gboolean gc_aware_layout = FALSE;
        gboolean has_static_fields = FALSE;
@@ -1808,7 +1856,7 @@ mono_class_layout_fields (MonoClass *class)
         */
         /* corlib is missing [StructLayout] directives in many places */
        if (layout == TYPE_ATTRIBUTE_AUTO_LAYOUT) {
-               if (!class->valuetype)
+               if (!klass->valuetype)
                        gc_aware_layout = TRUE;
        }
 
@@ -1820,41 +1868,41 @@ mono_class_layout_fields (MonoClass *class)
        for (i = 0; i < top; i++) {
                MonoType *ftype;
 
-               field = &class->fields [i];
+               field = &klass->fields [i];
 
                if (!(field->type->attrs & FIELD_ATTRIBUTE_STATIC)) {
                        ftype = mono_type_get_underlying_type (field->type);
                        ftype = mono_type_get_basic_type_from_generic (ftype);
-                       if (type_has_references (class, ftype))
-                               class->has_references = TRUE;
+                       if (type_has_references (klass, ftype))
+                               klass->has_references = TRUE;
                }
        }
 
        for (i = 0; i < top; i++) {
                MonoType *ftype;
 
-               field = &class->fields [i];
+               field = &klass->fields [i];
 
                if (field->type->attrs & FIELD_ATTRIBUTE_STATIC) {
                        ftype = mono_type_get_underlying_type (field->type);
                        ftype = mono_type_get_basic_type_from_generic (ftype);
-                       if (type_has_references (class, ftype))
-                               class->has_static_refs = TRUE;
+                       if (type_has_references (klass, ftype))
+                               klass->has_static_refs = TRUE;
                }
        }
 
        for (i = 0; i < top; i++) {
                MonoType *ftype;
 
-               field = &class->fields [i];
+               field = &klass->fields [i];
 
                ftype = mono_type_get_underlying_type (field->type);
                ftype = mono_type_get_basic_type_from_generic (ftype);
-               if (type_has_references (class, ftype)) {
+               if (type_has_references (klass, ftype)) {
                        if (field->type->attrs & FIELD_ATTRIBUTE_STATIC)
-                               class->has_static_refs = TRUE;
+                               klass->has_static_refs = TRUE;
                        else
-                               class->has_references = TRUE;
+                               klass->has_references = TRUE;
                }
        }
 
@@ -1874,13 +1922,13 @@ mono_class_layout_fields (MonoClass *class)
                if (layout != TYPE_ATTRIBUTE_AUTO_LAYOUT)
                        passes = 1;
 
-               if (class->parent) {
-                       mono_class_setup_fields (class->parent);
-                       if (class->parent->exception_type) {
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+               if (klass->parent) {
+                       mono_class_setup_fields (klass->parent);
+                       if (klass->parent->exception_type) {
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                                return;
                        }
-                       real_size = class->parent->instance_size;
+                       real_size = klass->parent->instance_size;
                } else {
                        real_size = sizeof (MonoObject);
                }
@@ -1891,7 +1939,7 @@ mono_class_layout_fields (MonoClass *class)
                                guint32 size;
                                MonoType *ftype;
 
-                               field = &class->fields [i];
+                               field = &klass->fields [i];
 
                                if (mono_field_is_deleted (field))
                                        continue;
@@ -1901,7 +1949,7 @@ mono_class_layout_fields (MonoClass *class)
                                ftype = mono_type_get_underlying_type (field->type);
                                ftype = mono_type_get_basic_type_from_generic (ftype);
                                if (gc_aware_layout) {
-                                       if (type_has_references (class, ftype)) {
+                                       if (type_has_references (klass, ftype)) {
                                                if (pass == 1)
                                                        continue;
                                        } else {
@@ -1910,7 +1958,7 @@ mono_class_layout_fields (MonoClass *class)
                                        }
                                }
 
-                               if ((top == 1) && (class->instance_size == sizeof (MonoObject)) &&
+                               if ((top == 1) && (klass->instance_size == sizeof (MonoObject)) &&
                                        (strcmp (mono_field_get_name (field), "$PRIVATE$") == 0)) {
                                        /* This field is a hack inserted by MCS to empty structures */
                                        continue;
@@ -1919,29 +1967,29 @@ mono_class_layout_fields (MonoClass *class)
                                size = mono_type_size (field->type, &align);
                        
                                /* FIXME (LAMESPEC): should we also change the min alignment according to pack? */
-                               align = class->packing_size ? MIN (class->packing_size, align): align;
+                               align = klass->packing_size ? MIN (klass->packing_size, align): align;
                                /* if the field has managed references, we need to force-align it
                                 * see bug #77788
                                 */
-                               if (type_has_references (class, ftype))
+                               if (type_has_references (klass, ftype))
                                        align = MAX (align, sizeof (gpointer));
 
-                               class->min_align = MAX (align, class->min_align);
+                               klass->min_align = MAX (align, klass->min_align);
                                field->offset = real_size;
                                if (align) {
                                        field->offset += align - 1;
                                        field->offset &= ~(align - 1);
                                }
                                /*TypeBuilders produce all sort of weird things*/
-                               g_assert (image_is_dynamic (class->image) || field->offset > 0);
+                               g_assert (image_is_dynamic (klass->image) || field->offset > 0);
                                real_size = field->offset + size;
                        }
 
-                       class->instance_size = MAX (real_size, class->instance_size);
+                       klass->instance_size = MAX (real_size, klass->instance_size);
        
-                       if (class->instance_size & (class->min_align - 1)) {
-                               class->instance_size += class->min_align - 1;
-                               class->instance_size &= ~(class->min_align - 1);
+                       if (klass->instance_size & (klass->min_align - 1)) {
+                               klass->instance_size += klass->min_align - 1;
+                               klass->instance_size &= ~(klass->min_align - 1);
                        }
                }
                break;
@@ -1954,7 +2002,7 @@ mono_class_layout_fields (MonoClass *class)
                        guint32 size;
                        MonoType *ftype;
 
-                       field = &class->fields [i];
+                       field = &klass->fields [i];
 
                        /*
                         * There must be info about all the fields in a type if it
@@ -1966,8 +2014,8 @@ mono_class_layout_fields (MonoClass *class)
                                continue;
 
                        size = mono_type_size (field->type, &align);
-                       align = class->packing_size ? MIN (class->packing_size, align): align;
-                       class->min_align = MAX (align, class->min_align);
+                       align = klass->packing_size ? MIN (klass->packing_size, align): align;
+                       klass->min_align = MAX (align, klass->min_align);
 
                        /*
                         * When we get here, field->offset is already set by the
@@ -1978,9 +2026,9 @@ mono_class_layout_fields (MonoClass *class)
                        field->offset += sizeof (MonoObject);
                        ftype = mono_type_get_underlying_type (field->type);
                        ftype = mono_type_get_basic_type_from_generic (ftype);
-                       if (type_has_references (class, ftype)) {
+                       if (type_has_references (klass, ftype)) {
                                if (field->offset % sizeof (gpointer)) {
-                                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                                }
                        }
 
@@ -1990,14 +2038,14 @@ mono_class_layout_fields (MonoClass *class)
                        real_size = MAX (real_size, size + field->offset);
                }
 
-               if (class->has_references) {
+               if (klass->has_references) {
                        ref_bitmap = g_new0 (guint8, real_size / sizeof (gpointer));
 
                        /* Check for overlapping reference and non-reference fields */
                        for (i = 0; i < top; i++) {
                                MonoType *ftype;
 
-                               field = &class->fields [i];
+                               field = &klass->fields [i];
 
                                if (mono_field_is_deleted (field))
                                        continue;
@@ -2008,7 +2056,7 @@ mono_class_layout_fields (MonoClass *class)
                                        ref_bitmap [field->offset / sizeof (gpointer)] = 1;
                        }
                        for (i = 0; i < top; i++) {
-                               field = &class->fields [i];
+                               field = &klass->fields [i];
 
                                if (mono_field_is_deleted (field))
                                        continue;
@@ -2018,18 +2066,18 @@ mono_class_layout_fields (MonoClass *class)
                                // FIXME: Too much code does this
 #if 0
                                if (!MONO_TYPE_IS_REFERENCE (field->type) && ref_bitmap [field->offset / sizeof (gpointer)]) {
-                                       char *err_msg = g_strdup_printf ("Could not load type '%s' because it contains an object field at offset %d that is incorrectly aligned or overlapped by a non-object field.", class->name, field->offset);
-                                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, err_msg);
+                                       char *err_msg = g_strdup_printf ("Could not load type '%s' because it contains an object field at offset %d that is incorrectly aligned or overlapped by a non-object field.", klass->name, field->offset);
+                                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, err_msg);
                                }
 #endif
                        }
                        g_free (ref_bitmap);
                }
 
-               class->instance_size = MAX (real_size, class->instance_size);
-               if (class->instance_size & (class->min_align - 1)) {
-                       class->instance_size += class->min_align - 1;
-                       class->instance_size &= ~(class->min_align - 1);
+               klass->instance_size = MAX (real_size, klass->instance_size);
+               if (klass->instance_size & (klass->min_align - 1)) {
+                       klass->instance_size += klass->min_align - 1;
+                       klass->instance_size &= ~(klass->min_align - 1);
                }
                break;
        }
@@ -2045,13 +2093,13 @@ mono_class_layout_fields (MonoClass *class)
                 * unaligned accesses otherwise. See #78990 for a testcase.
                 */
                if (mono_align_small_structs) {
-                       if (class->instance_size <= sizeof (MonoObject) + sizeof (gpointer))
-                               class->min_align = MAX (class->min_align, class->instance_size - sizeof (MonoObject));
+                       if (klass->instance_size <= sizeof (MonoObject) + sizeof (gpointer))
+                               klass->min_align = MAX (klass->min_align, klass->instance_size - sizeof (MonoObject));
                }
        }
 
        mono_memory_barrier ();
-       class->size_inited = 1;
+       klass->size_inited = 1;
 
        /*
         * Compute static field layout and size
@@ -2060,43 +2108,40 @@ mono_class_layout_fields (MonoClass *class)
                gint32 align;
                guint32 size;
 
-               field = &class->fields [i];
+               field = &klass->fields [i];
                        
                if (!(field->type->attrs & FIELD_ATTRIBUTE_STATIC) || field->type->attrs & FIELD_ATTRIBUTE_LITERAL)
                        continue;
                if (mono_field_is_deleted (field))
                        continue;
-               // Special static fields do not need a domain-level static slot
-               if (mono_class_field_is_special_static (field))
-                       continue;
 
                if (mono_type_has_exceptions (field->type)) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                        break;
                }
 
                has_static_fields = TRUE;
 
                size = mono_type_size (field->type, &align);
-               field->offset = class->sizes.class_size;
+               field->offset = klass->sizes.class_size;
                /*align is always non-zero here*/
                field->offset += align - 1;
                field->offset &= ~(align - 1);
-               class->sizes.class_size = field->offset + size;
+               klass->sizes.class_size = field->offset + size;
        }
 
-       if (has_static_fields && class->sizes.class_size == 0)
+       if (has_static_fields && klass->sizes.class_size == 0)
                /* Simplify code which depends on class_size != 0 if the class has static fields */
-               class->sizes.class_size = 8;
+               klass->sizes.class_size = 8;
 }
 
 static MonoMethod*
-create_array_method (MonoClass *class, const char *name, MonoMethodSignature *sig)
+create_array_method (MonoClass *klass, const char *name, MonoMethodSignature *sig)
 {
        MonoMethod *method;
 
-       method = (MonoMethod *) mono_image_alloc0 (class->image, sizeof (MonoMethodPInvoke));
-       method->klass = class;
+       method = (MonoMethod *) mono_image_alloc0 (klass->image, sizeof (MonoMethodPInvoke));
+       method->klass = klass;
        method->flags = METHOD_ATTRIBUTE_PUBLIC;
        method->iflags = METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL;
        method->signature = sig;
@@ -2121,47 +2166,47 @@ create_array_method (MonoClass *class, const char *name, MonoMethodSignature *si
  * Methods belonging to an interface are assigned a sequential slot starting
  * from 0.
  *
- * On failure this function sets class->exception_type
+ * On failure this function sets klass->exception_type
  */
 void
-mono_class_setup_methods (MonoClass *class)
+mono_class_setup_methods (MonoClass *klass)
 {
        int i, count;
        MonoMethod **methods;
 
-       if (class->methods)
+       if (klass->methods)
                return;
 
-       if (class->generic_class) {
+       if (klass->generic_class) {
                MonoError error;
-               MonoClass *gklass = class->generic_class->container_class;
+               MonoClass *gklass = klass->generic_class->container_class;
 
                mono_class_init (gklass);
                if (!gklass->exception_type)
                        mono_class_setup_methods (gklass);
                if (gklass->exception_type) {
                        /* FIXME make exception_data less opaque so it's possible to dup it here */
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Generic type definition failed to load"));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Generic type definition failed to load"));
                        return;
                }
 
                /* The + 1 makes this always non-NULL to pass the check in mono_class_setup_methods () */
                count = gklass->method.count;
-               methods = mono_class_alloc0 (class, sizeof (MonoMethod*) * (count + 1));
+               methods = (MonoMethod **)mono_class_alloc0 (klass, sizeof (MonoMethod*) * (count + 1));
 
                for (i = 0; i < count; i++) {
                        methods [i] = mono_class_inflate_generic_method_full_checked (
-                               gklass->methods [i], class, mono_class_get_context (class), &error);
+                               gklass->methods [i], klass, mono_class_get_context (klass), &error);
                        if (!mono_error_ok (&error)) {
                                char *method = mono_method_full_name (gklass->methods [i], TRUE);
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Could not inflate method %s due to %s", method, mono_error_get_message (&error)));
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Could not inflate method %s due to %s", method, mono_error_get_message (&error)));
 
                                g_free (method);
                                mono_error_cleanup (&error);
                                return;                         
                        }
                }
-       } else if (class->rank) {
+       } else if (klass->rank) {
                MonoError error;
                MonoMethod *amethod;
                MonoMethodSignature *sig;
@@ -2169,104 +2214,104 @@ mono_class_setup_methods (MonoClass *class)
                int method_num = 0;
                gboolean jagged_ctor = FALSE;
 
-               count = 3 + (class->rank > 1? 2: 1);
+               count = 3 + (klass->rank > 1? 2: 1);
 
-               mono_class_setup_interfaces (class, &error);
+               mono_class_setup_interfaces (klass, &error);
                g_assert (mono_error_ok (&error)); /*FIXME can this fail for array types?*/
 
-               if (class->rank == 1 && class->element_class->rank) {
+               if (klass->rank == 1 && klass->element_class->rank) {
                        jagged_ctor = TRUE;
-                       class->method.count ++;
+                       klass->method.count ++;
                }
 
-               if (class->interface_count) {
-                       count_generic = generic_array_methods (class);
+               if (klass->interface_count) {
+                       count_generic = generic_array_methods (klass);
                        first_generic = count;
-                       count += class->interface_count * count_generic;
+                       count += klass->interface_count * count_generic;
                }
 
-               methods = mono_class_alloc0 (class, sizeof (MonoMethod*) * count);
+               methods = (MonoMethod **)mono_class_alloc0 (klass, sizeof (MonoMethod*) * count);
 
-               sig = mono_metadata_signature_alloc (class->image, class->rank);
+               sig = mono_metadata_signature_alloc (klass->image, klass->rank);
                sig->ret = &mono_defaults.void_class->byval_arg;
                sig->pinvoke = TRUE;
                sig->hasthis = TRUE;
-               for (i = 0; i < class->rank; ++i)
+               for (i = 0; i < klass->rank; ++i)
                        sig->params [i] = &mono_defaults.int32_class->byval_arg;
 
-               amethod = create_array_method (class, ".ctor", sig);
+               amethod = create_array_method (klass, ".ctor", sig);
                methods [method_num++] = amethod;
-               if (class->rank > 1) {
-                       sig = mono_metadata_signature_alloc (class->image, class->rank * 2);
+               if (klass->rank > 1) {
+                       sig = mono_metadata_signature_alloc (klass->image, klass->rank * 2);
                        sig->ret = &mono_defaults.void_class->byval_arg;
                        sig->pinvoke = TRUE;
                        sig->hasthis = TRUE;
-                       for (i = 0; i < class->rank * 2; ++i)
+                       for (i = 0; i < klass->rank * 2; ++i)
                                sig->params [i] = &mono_defaults.int32_class->byval_arg;
 
-                       amethod = create_array_method (class, ".ctor", sig);
+                       amethod = create_array_method (klass, ".ctor", sig);
                        methods [method_num++] = amethod;
                }
 
                if (jagged_ctor) {
                        /* Jagged arrays have an extra ctor in .net which creates an array of arrays */
-                       sig = mono_metadata_signature_alloc (class->image, class->rank + 1);
+                       sig = mono_metadata_signature_alloc (klass->image, klass->rank + 1);
                        sig->ret = &mono_defaults.void_class->byval_arg;
                        sig->pinvoke = TRUE;
                        sig->hasthis = TRUE;
-                       for (i = 0; i < class->rank + 1; ++i)
+                       for (i = 0; i < klass->rank + 1; ++i)
                                sig->params [i] = &mono_defaults.int32_class->byval_arg;
-                       amethod = create_array_method (class, ".ctor", sig);
+                       amethod = create_array_method (klass, ".ctor", sig);
                        methods [method_num++] = amethod;
                }
 
                /* element Get (idx11, [idx2, ...]) */
-               sig = mono_metadata_signature_alloc (class->image, class->rank);
-               sig->ret = &class->element_class->byval_arg;
+               sig = mono_metadata_signature_alloc (klass->image, klass->rank);
+               sig->ret = &klass->element_class->byval_arg;
                sig->pinvoke = TRUE;
                sig->hasthis = TRUE;
-               for (i = 0; i < class->rank; ++i)
+               for (i = 0; i < klass->rank; ++i)
                        sig->params [i] = &mono_defaults.int32_class->byval_arg;
-               amethod = create_array_method (class, "Get", sig);
+               amethod = create_array_method (klass, "Get", sig);
                methods [method_num++] = amethod;
                /* element& Address (idx11, [idx2, ...]) */
-               sig = mono_metadata_signature_alloc (class->image, class->rank);
-               sig->ret = &class->element_class->this_arg;
+               sig = mono_metadata_signature_alloc (klass->image, klass->rank);
+               sig->ret = &klass->element_class->this_arg;
                sig->pinvoke = TRUE;
                sig->hasthis = TRUE;
-               for (i = 0; i < class->rank; ++i)
+               for (i = 0; i < klass->rank; ++i)
                        sig->params [i] = &mono_defaults.int32_class->byval_arg;
-               amethod = create_array_method (class, "Address", sig);
+               amethod = create_array_method (klass, "Address", sig);
                methods [method_num++] = amethod;
                /* void Set (idx11, [idx2, ...], element) */
-               sig = mono_metadata_signature_alloc (class->image, class->rank + 1);
+               sig = mono_metadata_signature_alloc (klass->image, klass->rank + 1);
                sig->ret = &mono_defaults.void_class->byval_arg;
                sig->pinvoke = TRUE;
                sig->hasthis = TRUE;
-               for (i = 0; i < class->rank; ++i)
+               for (i = 0; i < klass->rank; ++i)
                        sig->params [i] = &mono_defaults.int32_class->byval_arg;
-               sig->params [i] = &class->element_class->byval_arg;
-               amethod = create_array_method (class, "Set", sig);
+               sig->params [i] = &klass->element_class->byval_arg;
+               amethod = create_array_method (klass, "Set", sig);
                methods [method_num++] = amethod;
 
-               for (i = 0; i < class->interface_count; i++)
-                       setup_generic_array_ifaces (class, class->interfaces [i], methods, first_generic + i * count_generic);
+               for (i = 0; i < klass->interface_count; i++)
+                       setup_generic_array_ifaces (klass, klass->interfaces [i], methods, first_generic + i * count_generic);
        } else {
                MonoError error;
 
-               count = class->method.count;
-               methods = mono_class_alloc (class, sizeof (MonoMethod*) * count);
+               count = klass->method.count;
+               methods = (MonoMethod **)mono_class_alloc (klass, sizeof (MonoMethod*) * count);
                for (i = 0; i < count; ++i) {
-                       int idx = mono_metadata_translate_token_index (class->image, MONO_TABLE_METHOD, class->method.first + i + 1);
-                       methods [i] = mono_get_method_checked (class->image, MONO_TOKEN_METHOD_DEF | idx, class, NULL, &error);
+                       int idx = mono_metadata_translate_token_index (klass->image, MONO_TABLE_METHOD, klass->method.first + i + 1);
+                       methods [i] = mono_get_method_checked (klass->image, MONO_TOKEN_METHOD_DEF | idx, klass, NULL, &error);
                        if (!methods [i]) {
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Could not load method %d due to %s", i, mono_error_get_message (&error)));
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Could not load method %d due to %s", i, mono_error_get_message (&error)));
                                mono_error_cleanup (&error);
                        }
                }
        }
 
-       if (MONO_CLASS_IS_INTERFACE (class)) {
+       if (MONO_CLASS_IS_INTERFACE (klass)) {
                int slot = 0;
                /*Only assign slots to virtual methods as interfaces are allowed to have static methods.*/
                for (i = 0; i < count; ++i) {
@@ -2275,38 +2320,38 @@ mono_class_setup_methods (MonoClass *class)
                }
        }
 
-       mono_image_lock (class->image);
+       mono_image_lock (klass->image);
 
-       if (!class->methods) {
-               class->method.count = count;
+       if (!klass->methods) {
+               klass->method.count = count;
 
                /* Needed because of the double-checking locking pattern */
                mono_memory_barrier ();
 
-               class->methods = methods;
+               klass->methods = methods;
        }
 
-       mono_image_unlock (class->image);
+       mono_image_unlock (klass->image);
 }
 
 /*
  * mono_class_get_method_by_index:
  *
- *   Returns class->methods [index], initializing class->methods if neccesary.
+ *   Returns klass->methods [index], initializing klass->methods if neccesary.
  *
  * LOCKING: Acquires the loader lock.
  */
 MonoMethod*
-mono_class_get_method_by_index (MonoClass *class, int index)
+mono_class_get_method_by_index (MonoClass *klass, int index)
 {
        MonoError error;
        /* Avoid calling setup_methods () if possible */
-       if (class->generic_class && !class->methods) {
-               MonoClass *gklass = class->generic_class->container_class;
+       if (klass->generic_class && !klass->methods) {
+               MonoClass *gklass = klass->generic_class->container_class;
                MonoMethod *m;
 
                m = mono_class_inflate_generic_method_full_checked (
-                               gklass->methods [index], class, mono_class_get_context (class), &error);
+                               gklass->methods [index], klass, mono_class_get_context (klass), &error);
                g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
                /*
                 * If setup_methods () is called later for this class, no duplicates are created,
@@ -2314,16 +2359,16 @@ mono_class_get_method_by_index (MonoClass *class, int index)
                 * is created for each context.
                 */
                /*
-               mono_class_setup_methods (class);
-               g_assert (m == class->methods [index]);
+               mono_class_setup_methods (klass);
+               g_assert (m == klass->methods [index]);
                */
                return m;
        } else {
-               mono_class_setup_methods (class);
-               if (class->exception_type) /*FIXME do proper error handling*/
+               mono_class_setup_methods (klass);
+               if (klass->exception_type) /*FIXME do proper error handling*/
                        return NULL;
-               g_assert (index >= 0 && index < class->method.count);
-               return class->methods [index];
+               g_assert (index >= 0 && index < klass->method.count);
+               return klass->methods [index];
        }
 }      
 
@@ -2334,9 +2379,9 @@ mono_class_get_method_by_index (MonoClass *class, int index)
  * CLASS's generic definition, return the inflated method corresponding to METHOD.
  */
 MonoMethod*
-mono_class_get_inflated_method (MonoClass *class, MonoMethod *method)
+mono_class_get_inflated_method (MonoClass *klass, MonoMethod *method)
 {
-       MonoClass *gklass = class->generic_class->container_class;
+       MonoClass *gklass = klass->generic_class->container_class;
        int i;
 
        g_assert (method->klass == gklass);
@@ -2346,11 +2391,11 @@ mono_class_get_inflated_method (MonoClass *class, MonoMethod *method)
 
        for (i = 0; i < gklass->method.count; ++i) {
                if (gklass->methods [i] == method) {
-                       if (class->methods) {
-                               return class->methods [i];
+                       if (klass->methods) {
+                               return klass->methods [i];
                        } else {
                                MonoError error;
-                               MonoMethod *result = mono_class_inflate_generic_method_full_checked (gklass->methods [i], class, mono_class_get_context (class), &error);
+                               MonoMethod *result = mono_class_inflate_generic_method_full_checked (gklass->methods [i], klass, mono_class_get_context (klass), &error);
                                g_assert (mono_error_ok (&error)); /* FIXME don't swallow this error */
                                return result;
                        }
@@ -2363,37 +2408,37 @@ mono_class_get_inflated_method (MonoClass *class, MonoMethod *method)
 /*
  * mono_class_get_vtable_entry:
  *
- *   Returns class->vtable [offset], computing it if neccesary. Returns NULL on failure.
+ *   Returns klass->vtable [offset], computing it if neccesary. Returns NULL on failure.
  * LOCKING: Acquires the loader lock.
  */
 MonoMethod*
-mono_class_get_vtable_entry (MonoClass *class, int offset)
+mono_class_get_vtable_entry (MonoClass *klass, int offset)
 {
        MonoMethod *m;
 
-       if (class->rank == 1) {
+       if (klass->rank == 1) {
                /* 
                 * szarrays do not overwrite any methods of Array, so we can avoid
                 * initializing their vtables in some cases.
                 */
-               mono_class_setup_vtable (class->parent);
-               if (offset < class->parent->vtable_size)
-                       return class->parent->vtable [offset];
+               mono_class_setup_vtable (klass->parent);
+               if (offset < klass->parent->vtable_size)
+                       return klass->parent->vtable [offset];
        }
 
-       if (class->generic_class) {
+       if (klass->generic_class) {
                MonoError error;
-               MonoClass *gklass = class->generic_class->container_class;
+               MonoClass *gklass = klass->generic_class->container_class;
                mono_class_setup_vtable (gklass);
                m = gklass->vtable [offset];
 
-               m = mono_class_inflate_generic_method_full_checked (m, class, mono_class_get_context (class), &error);
+               m = mono_class_inflate_generic_method_full_checked (m, klass, mono_class_get_context (klass), &error);
                g_assert (mono_error_ok (&error)); /* FIXME don't swallow this error */
        } else {
-               mono_class_setup_vtable (class);
-               if (class->exception_type)
+               mono_class_setup_vtable (klass);
+               if (klass->exception_type)
                        return NULL;
-               m = class->vtable [offset];
+               m = klass->vtable [offset];
        }
 
        return m;
@@ -2415,34 +2460,34 @@ mono_class_get_vtable_size (MonoClass *klass)
 /*
  * mono_class_setup_properties:
  *
- *   Initialize class->ext.property and class->ext.properties.
+ *   Initialize klass->ext.property and klass->ext.properties.
  *
  * This method can fail the class.
  */
 static void
-mono_class_setup_properties (MonoClass *class)
+mono_class_setup_properties (MonoClass *klass)
 {
        guint startm, endm, i, j;
        guint32 cols [MONO_PROPERTY_SIZE];
-       MonoTableInfo *msemt = &class->image->tables [MONO_TABLE_METHODSEMANTICS];
+       MonoTableInfo *msemt = &klass->image->tables [MONO_TABLE_METHODSEMANTICS];
        MonoProperty *properties;
        guint32 last;
        int first, count;
 
-       if (class->ext && class->ext->properties)
+       if (klass->ext && klass->ext->properties)
                return;
 
-       if (class->generic_class) {
-               MonoClass *gklass = class->generic_class->container_class;
+       if (klass->generic_class) {
+               MonoClass *gklass = klass->generic_class->container_class;
 
                mono_class_init (gklass);
                mono_class_setup_properties (gklass);
                if (gklass->exception_type) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Generic type definition failed to load"));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Generic type definition failed to load"));
                        return;
                }
 
-               properties = mono_class_new0 (class, MonoProperty, gklass->ext->property.count + 1);
+               properties = mono_class_new0 (klass, MonoProperty, gklass->ext->property.count + 1);
 
                for (i = 0; i < gklass->ext->property.count; i++) {
                        MonoError error;
@@ -2452,47 +2497,47 @@ mono_class_setup_properties (MonoClass *class)
 
                        if (prop->get)
                                prop->get = mono_class_inflate_generic_method_full_checked (
-                                       prop->get, class, mono_class_get_context (class), &error);
+                                       prop->get, klass, mono_class_get_context (klass), &error);
                        if (prop->set)
                                prop->set = mono_class_inflate_generic_method_full_checked (
-                                       prop->set, class, mono_class_get_context (class), &error);
+                                       prop->set, klass, mono_class_get_context (klass), &error);
 
                        g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
-                       prop->parent = class;
+                       prop->parent = klass;
                }
 
                first = gklass->ext->property.first;
                count = gklass->ext->property.count;
        } else {
-               first = mono_metadata_properties_from_typedef (class->image, mono_metadata_token_index (class->type_token) - 1, &last);
+               first = mono_metadata_properties_from_typedef (klass->image, mono_metadata_token_index (klass->type_token) - 1, &last);
                count = last - first;
 
                if (count) {
-                       mono_class_setup_methods (class);
-                       if (class->exception_type)
+                       mono_class_setup_methods (klass);
+                       if (klass->exception_type)
                                return;
                }
 
-               properties = mono_class_alloc0 (class, sizeof (MonoProperty) * count);
+               properties = (MonoProperty *)mono_class_alloc0 (klass, sizeof (MonoProperty) * count);
                for (i = first; i < last; ++i) {
-                       mono_metadata_decode_table_row (class->image, MONO_TABLE_PROPERTY, i, cols, MONO_PROPERTY_SIZE);
-                       properties [i - first].parent = class;
+                       mono_metadata_decode_table_row (klass->image, MONO_TABLE_PROPERTY, i, cols, MONO_PROPERTY_SIZE);
+                       properties [i - first].parent = klass;
                        properties [i - first].attrs = cols [MONO_PROPERTY_FLAGS];
-                       properties [i - first].name = mono_metadata_string_heap (class->image, cols [MONO_PROPERTY_NAME]);
+                       properties [i - first].name = mono_metadata_string_heap (klass->image, cols [MONO_PROPERTY_NAME]);
 
-                       startm = mono_metadata_methods_from_property (class->image, i, &endm);
+                       startm = mono_metadata_methods_from_property (klass->image, i, &endm);
                        for (j = startm; j < endm; ++j) {
                                MonoMethod *method;
 
                                mono_metadata_decode_row (msemt, j, cols, MONO_METHOD_SEMA_SIZE);
 
-                               if (class->image->uncompressed_metadata) {
+                               if (klass->image->uncompressed_metadata) {
                                        MonoError error;
                                        /* It seems like the MONO_METHOD_SEMA_METHOD column needs no remapping */
-                                       method = mono_get_method_checked (class->image, MONO_TOKEN_METHOD_DEF | cols [MONO_METHOD_SEMA_METHOD], class, NULL, &error);
+                                       method = mono_get_method_checked (klass->image, MONO_TOKEN_METHOD_DEF | cols [MONO_METHOD_SEMA_METHOD], klass, NULL, &error);
                                        mono_error_cleanup (&error); /* FIXME don't swallow this error */
                                } else {
-                                       method = class->methods [cols [MONO_METHOD_SEMA_METHOD] - 1 - class->method.first];
+                                       method = klass->methods [cols [MONO_METHOD_SEMA_METHOD] - 1 - klass->method.first];
                                }
 
                                switch (cols [MONO_METHOD_SEMA_SEMANTICS]) {
@@ -2509,30 +2554,30 @@ mono_class_setup_properties (MonoClass *class)
                }
        }
 
-       mono_class_alloc_ext (class);
+       mono_class_alloc_ext (klass);
 
-       mono_image_lock (class->image);
+       mono_image_lock (klass->image);
 
-       if (class->ext->properties) {
+       if (klass->ext->properties) {
                /* We leak 'properties' which was allocated from the image mempool */
-               mono_image_unlock (class->image);
+               mono_image_unlock (klass->image);
                return;
        }
 
-       class->ext->property.first = first;
-       class->ext->property.count = count;
+       klass->ext->property.first = first;
+       klass->ext->property.count = count;
 
-       /* Flush any pending writes as we do double checked locking on class->ext->properties */
+       /* Flush any pending writes as we do double checked locking on klass->ext->properties */
        mono_memory_barrier ();
 
        /* Leave this assignment as the last op in the function */
-       class->ext->properties = properties;
+       klass->ext->properties = properties;
 
-       mono_image_unlock (class->image);
+       mono_image_unlock (klass->image);
 }
 
 static MonoMethod**
-inflate_method_listz (MonoMethod **methods, MonoClass *class, MonoGenericContext *context)
+inflate_method_listz (MonoMethod **methods, MonoClass *klass, MonoGenericContext *context)
 {
        MonoMethod **om, **retval;
        int count;
@@ -2544,7 +2589,7 @@ inflate_method_listz (MonoMethod **methods, MonoClass *class, MonoGenericContext
        count = 0;
        for (om = methods, count = 0; *om; ++om, ++count) {
                MonoError error;
-               retval [count] = mono_class_inflate_generic_method_full_checked (*om, class, context, &error);
+               retval [count] = mono_class_inflate_generic_method_full_checked (*om, klass, context, &error);
                g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
        }
 
@@ -2553,35 +2598,35 @@ inflate_method_listz (MonoMethod **methods, MonoClass *class, MonoGenericContext
 
 /*This method can fail the class.*/
 static void
-mono_class_setup_events (MonoClass *class)
+mono_class_setup_events (MonoClass *klass)
 {
        int first, count;
        guint startm, endm, i, j;
        guint32 cols [MONO_EVENT_SIZE];
-       MonoTableInfo *msemt = &class->image->tables [MONO_TABLE_METHODSEMANTICS];
+       MonoTableInfo *msemt = &klass->image->tables [MONO_TABLE_METHODSEMANTICS];
        guint32 last;
        MonoEvent *events;
 
-       if (class->ext && class->ext->events)
+       if (klass->ext && klass->ext->events)
                return;
 
-       if (class->generic_class) {
-               MonoClass *gklass = class->generic_class->container_class;
+       if (klass->generic_class) {
+               MonoClass *gklass = klass->generic_class->container_class;
                MonoGenericContext *context = NULL;
 
                mono_class_setup_events (gklass);
                if (gklass->exception_type) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Generic type definition failed to load"));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Generic type definition failed to load"));
                        return;
                }
 
                first = gklass->ext->event.first;
                count = gklass->ext->event.count;
 
-               events = mono_class_new0 (class, MonoEvent, count);
+               events = mono_class_new0 (klass, MonoEvent, count);
 
                if (count)
-                       context = mono_class_get_context (class);
+                       context = mono_class_get_context (klass);
 
                for (i = 0; i < count; i++) {
                        MonoError error;
@@ -2590,54 +2635,54 @@ mono_class_setup_events (MonoClass *class)
 
                        mono_error_init (&error); //since we do conditional calls, we must ensure the default value is ok
 
-                       event->parent = class;
+                       event->parent = klass;
                        event->name = gevent->name;
-                       event->add = gevent->add ? mono_class_inflate_generic_method_full_checked (gevent->add, class, context, &error) : NULL;
+                       event->add = gevent->add ? mono_class_inflate_generic_method_full_checked (gevent->add, klass, context, &error) : NULL;
                        g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
-                       event->remove = gevent->remove ? mono_class_inflate_generic_method_full_checked (gevent->remove, class, context, &error) : NULL;
+                       event->remove = gevent->remove ? mono_class_inflate_generic_method_full_checked (gevent->remove, klass, context, &error) : NULL;
                        g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
-                       event->raise = gevent->raise ? mono_class_inflate_generic_method_full_checked (gevent->raise, class, context, &error) : NULL;
+                       event->raise = gevent->raise ? mono_class_inflate_generic_method_full_checked (gevent->raise, klass, context, &error) : NULL;
                        g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
 
 #ifndef MONO_SMALL_CONFIG
-                       event->other = gevent->other ? inflate_method_listz (gevent->other, class, context) : NULL;
+                       event->other = gevent->other ? inflate_method_listz (gevent->other, klass, context) : NULL;
 #endif
                        event->attrs = gevent->attrs;
                }
        } else {
-               first = mono_metadata_events_from_typedef (class->image, mono_metadata_token_index (class->type_token) - 1, &last);
+               first = mono_metadata_events_from_typedef (klass->image, mono_metadata_token_index (klass->type_token) - 1, &last);
                count = last - first;
 
                if (count) {
-                       mono_class_setup_methods (class);
-                       if (class->exception_type) {
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Generic type definition failed to load"));
+                       mono_class_setup_methods (klass);
+                       if (klass->exception_type) {
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Generic type definition failed to load"));
                                return;
                        }
                }
 
-               events = mono_class_alloc0 (class, sizeof (MonoEvent) * count);
+               events = (MonoEvent *)mono_class_alloc0 (klass, sizeof (MonoEvent) * count);
                for (i = first; i < last; ++i) {
                        MonoEvent *event = &events [i - first];
 
-                       mono_metadata_decode_table_row (class->image, MONO_TABLE_EVENT, i, cols, MONO_EVENT_SIZE);
-                       event->parent = class;
+                       mono_metadata_decode_table_row (klass->image, MONO_TABLE_EVENT, i, cols, MONO_EVENT_SIZE);
+                       event->parent = klass;
                        event->attrs = cols [MONO_EVENT_FLAGS];
-                       event->name = mono_metadata_string_heap (class->image, cols [MONO_EVENT_NAME]);
+                       event->name = mono_metadata_string_heap (klass->image, cols [MONO_EVENT_NAME]);
 
-                       startm = mono_metadata_methods_from_event (class->image, i, &endm);
+                       startm = mono_metadata_methods_from_event (klass->image, i, &endm);
                        for (j = startm; j < endm; ++j) {
                                MonoMethod *method;
 
                                mono_metadata_decode_row (msemt, j, cols, MONO_METHOD_SEMA_SIZE);
 
-                               if (class->image->uncompressed_metadata) {
+                               if (klass->image->uncompressed_metadata) {
                                        MonoError error;
                                        /* It seems like the MONO_METHOD_SEMA_METHOD column needs no remapping */
-                                       method = mono_get_method_checked (class->image, MONO_TOKEN_METHOD_DEF | cols [MONO_METHOD_SEMA_METHOD], class, NULL, &error);
+                                       method = mono_get_method_checked (klass->image, MONO_TOKEN_METHOD_DEF | cols [MONO_METHOD_SEMA_METHOD], klass, NULL, &error);
                                        mono_error_cleanup (&error); /* FIXME don't swallow this error */
                                } else {
-                                       method = class->methods [cols [MONO_METHOD_SEMA_METHOD] - 1 - class->method.first];
+                                       method = klass->methods [cols [MONO_METHOD_SEMA_METHOD] - 1 - klass->method.first];
                                }
 
                                switch (cols [MONO_METHOD_SEMA_SEMANTICS]) {
@@ -2659,7 +2704,7 @@ mono_class_setup_events (MonoClass *class)
                                        } else {
                                                while (event->other [n])
                                                        n++;
-                                               event->other = g_realloc (event->other, (n + 2) * sizeof (MonoMethod*));
+                                               event->other = (MonoMethod **)g_realloc (event->other, (n + 2) * sizeof (MonoMethod*));
                                        }
                                        event->other [n] = method;
                                        /* NULL terminated */
@@ -2674,25 +2719,25 @@ mono_class_setup_events (MonoClass *class)
                }
        }
 
-       mono_class_alloc_ext (class);
+       mono_class_alloc_ext (klass);
 
-       mono_image_lock (class->image);
+       mono_image_lock (klass->image);
 
-       if (class->ext->events) {
-               mono_image_unlock (class->image);
+       if (klass->ext->events) {
+               mono_image_unlock (klass->image);
                return;
        }
 
-       class->ext->event.first = first;
-       class->ext->event.count = count;
+       klass->ext->event.first = first;
+       klass->ext->event.count = count;
 
-       /* Flush any pending writes as we do double checked locking on class->ext.events */
+       /* Flush any pending writes as we do double checked locking on klass->ext.events */
        mono_memory_barrier ();
 
        /* Leave this assignment as the last op in the function */
-       class->ext->events = events;
+       klass->ext->events = events;
 
-       mono_image_unlock (class->image);
+       mono_image_unlock (klass->image);
 }
 
 /*
@@ -2718,11 +2763,11 @@ mono_unload_interface_ids (MonoBitSet *bitset)
 }
 
 void
-mono_unload_interface_id (MonoClass *class)
+mono_unload_interface_id (MonoClass *klass)
 {
-       if (global_interface_bitset && class->interface_id) {
+       if (global_interface_bitset && klass->interface_id) {
                classes_lock ();
-               mono_bitset_clear (global_interface_bitset, class->interface_id);
+               mono_bitset_clear (global_interface_bitset, klass->interface_id);
                classes_unlock ();
        }
 }
@@ -2737,11 +2782,11 @@ mono_unload_interface_id (MonoClass *class)
  * Returns: the new ID.
  */
 static guint
-mono_get_unique_iid (MonoClass *class)
+mono_get_unique_iid (MonoClass *klass)
 {
        int iid;
        
-       g_assert (MONO_CLASS_IS_INTERFACE (class));
+       g_assert (MONO_CLASS_IS_INTERFACE (klass));
 
        classes_lock ();
 
@@ -2759,17 +2804,17 @@ mono_get_unique_iid (MonoClass *class)
        }
        mono_bitset_set (global_interface_bitset, iid);
        /* set the bit also in the per-image set */
-       if (!class->generic_class) {
-               if (class->image->interface_bitset) {
-                       if (iid >= mono_bitset_size (class->image->interface_bitset)) {
-                               MonoBitSet *new_set = mono_bitset_clone (class->image->interface_bitset, iid + 1);
-                               mono_bitset_free (class->image->interface_bitset);
-                               class->image->interface_bitset = new_set;
+       if (!klass->generic_class) {
+               if (klass->image->interface_bitset) {
+                       if (iid >= mono_bitset_size (klass->image->interface_bitset)) {
+                               MonoBitSet *new_set = mono_bitset_clone (klass->image->interface_bitset, iid + 1);
+                               mono_bitset_free (klass->image->interface_bitset);
+                               klass->image->interface_bitset = new_set;
                        }
                } else {
-                       class->image->interface_bitset = mono_bitset_new (iid + 1, 0);
+                       klass->image->interface_bitset = mono_bitset_new (iid + 1, 0);
                }
-               mono_bitset_set (class->image->interface_bitset, iid);
+               mono_bitset_set (klass->image->interface_bitset, iid);
        }
 
        classes_unlock ();
@@ -2777,14 +2822,14 @@ mono_get_unique_iid (MonoClass *class)
 #ifndef MONO_SMALL_CONFIG
        if (mono_print_vtable) {
                int generic_id;
-               char *type_name = mono_type_full_name (&class->byval_arg);
-               if (class->generic_class && !class->generic_class->context.class_inst->is_open) {
-                       generic_id = class->generic_class->context.class_inst->id;
+               char *type_name = mono_type_full_name (&klass->byval_arg);
+               if (klass->generic_class && !klass->generic_class->context.class_inst->is_open) {
+                       generic_id = klass->generic_class->context.class_inst->id;
                        g_assert (generic_id != 0);
                } else {
                        generic_id = 0;
                }
-               printf ("Interface: assigned id %d to %s|%s|%d\n", iid, class->image->name, type_name, generic_id);
+               printf ("Interface: assigned id %d to %s|%s|%d\n", iid, klass->image->name, type_name, generic_id);
                g_free (type_name);
        }
 #endif
@@ -2837,8 +2882,8 @@ mono_class_get_implemented_interfaces (MonoClass *klass, MonoError *error)
 
 static int
 compare_interface_ids (const void *p_key, const void *p_element) {
-       const MonoClass *key = p_key;
-       const MonoClass *element = *(MonoClass**) p_element;
+       const MonoClass *key = (const MonoClass *)p_key;
+       const MonoClass *element = *(const MonoClass **)p_element;
        
        return (key->interface_id - element->interface_id);
 }
@@ -2846,7 +2891,7 @@ compare_interface_ids (const void *p_key, const void *p_element) {
 /*FIXME verify all callers if they should switch to mono_class_interface_offset_with_variance*/
 int
 mono_class_interface_offset (MonoClass *klass, MonoClass *itf) {
-       MonoClass **result = mono_binary_search (
+       MonoClass **result = (MonoClass **)mono_binary_search (
                        itf,
                        klass->interfaces_packed,
                        klass->interface_offsets_count,
@@ -2939,7 +2984,7 @@ print_implemented_interfaces (MonoClass *klass) {
                        mono_error_cleanup (&error);
                } else if (ifaces) {
                        for (i = 0; i < ifaces->len; i++) {
-                               MonoClass *ic = g_ptr_array_index (ifaces, i);
+                               MonoClass *ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                                printf ("  [UIID %d] interface %s\n", ic->interface_id, ic->name);
                                printf ("  [%03d][UUID %03d][SLOT %03d][SIZE  %03d] interface %s.%s\n", i,
                                                ic->interface_id,
@@ -2965,9 +3010,9 @@ inflate_class_one_arg (MonoClass *gtype, MonoClass *arg0)
 }
 
 static MonoClass*
-array_class_get_if_rank (MonoClass *class, guint rank)
+array_class_get_if_rank (MonoClass *klass, guint rank)
 {
-       return rank ? mono_array_class_get (class, rank) :  class;
+       return rank ? mono_array_class_get (klass, rank) : klass;
 }
 
 static void
@@ -3008,9 +3053,9 @@ fill_valuetype_array_derived_types (MonoClass **valuetype_types, MonoClass *ecla
  * Fixing this should kill quite some code, save some bits and improve compatibility.
  */
 static MonoClass**
-get_implicit_generic_array_interfaces (MonoClass *class, int *num, int *is_enumerator)
+get_implicit_generic_array_interfaces (MonoClass *klass, int *num, int *is_enumerator)
 {
-       MonoClass *eclass = class->element_class;
+       MonoClass *eclass = klass->element_class;
        static MonoClass* generic_icollection_class = NULL;
        static MonoClass* generic_ienumerable_class = NULL;
        static MonoClass* generic_ienumerator_class = NULL;
@@ -3030,12 +3075,12 @@ get_implicit_generic_array_interfaces (MonoClass *class, int *num, int *is_enume
        internal_enumerator = FALSE;
        eclass_is_valuetype = FALSE;
        original_rank = eclass->rank;
-       if (class->byval_arg.type != MONO_TYPE_SZARRAY) {
-               if (class->generic_class && class->nested_in == mono_defaults.array_class && strcmp (class->name, "InternalEnumerator`1") == 0)  {
+       if (klass->byval_arg.type != MONO_TYPE_SZARRAY) {
+               if (klass->generic_class && klass->nested_in == mono_defaults.array_class && strcmp (klass->name, "InternalEnumerator`1") == 0)  {
                        /*
                         * For a Enumerator<T[]> we need to get the list of interfaces for T.
                         */
-                       eclass = mono_class_from_mono_type (class->generic_class->context.class_inst->type_argv [0]);
+                       eclass = mono_class_from_mono_type (klass->generic_class->context.class_inst->type_argv [0]);
                        original_rank = eclass->rank;
                        if (!eclass->rank)
                                eclass = eclass->element_class;
@@ -3091,7 +3136,7 @@ get_implicit_generic_array_interfaces (MonoClass *class, int *num, int *is_enume
                                ++real_count;
                }
 
-               interfaces = g_malloc0 (sizeof (MonoClass*) * real_count);
+               interfaces = (MonoClass **)g_malloc0 (sizeof (MonoClass*) * real_count);
                interfaces [0] = valuetype_types [0];
                if (valuetype_types [1])
                        interfaces [nifaces] = valuetype_types [1];
@@ -3131,7 +3176,7 @@ get_implicit_generic_array_interfaces (MonoClass *class, int *num, int *is_enume
                        if (valuetype_types [1])
                                ++real_count;
                }
-               interfaces = g_malloc0 (sizeof (MonoClass*) * real_count);
+               interfaces = (MonoClass **)g_malloc0 (sizeof (MonoClass*) * real_count);
                if (MONO_CLASS_IS_INTERFACE (eclass)) {
                        interfaces [0] = mono_defaults.object_class;
                        j = nifaces;
@@ -3207,7 +3252,7 @@ get_implicit_generic_array_interfaces (MonoClass *class, int *num, int *is_enume
        }
 #if 0
        {
-       char *type_name = mono_type_get_name_full (&class->byval_arg, 0);
+       char *type_name = mono_type_get_name_full (&klass->byval_arg, 0);
        for (i = 0; i  < real_count; ++i) {
                char *name = mono_type_get_name_full (&interfaces [i]->byval_arg, 0);
                g_print ("%s implements %s\n", type_name, name);
@@ -3238,25 +3283,25 @@ find_array_interface (MonoClass *klass, const char *name)
  * FIXME It would be nice if this information could be cached somewhere.
  */
 static int
-count_virtual_methods (MonoClass *class)
+count_virtual_methods (MonoClass *klass)
 {
        int i, count = 0;
        guint32 flags;
-       class = mono_class_get_generic_type_definition (class); /*We can find this information by looking at the GTD*/
+       klass = mono_class_get_generic_type_definition (klass); /*We can find this information by looking at the GTD*/
 
-       if (class->methods || !MONO_CLASS_HAS_STATIC_METADATA (class)) {
-               mono_class_setup_methods (class);
-               if (class->exception_type)
+       if (klass->methods || !MONO_CLASS_HAS_STATIC_METADATA (klass)) {
+               mono_class_setup_methods (klass);
+               if (klass->exception_type)
                        return -1;
 
-               for (i = 0; i < class->method.count; ++i) {
-                       flags = class->methods [i]->flags;
+               for (i = 0; i < klass->method.count; ++i) {
+                       flags = klass->methods [i]->flags;
                        if (flags & METHOD_ATTRIBUTE_VIRTUAL)
                                ++count;
                }
        } else {
-               for (i = 0; i < class->method.count; ++i) {
-                       flags = mono_metadata_decode_table_row_col (class->image, MONO_TABLE_METHOD, class->method.first + i, MONO_METHOD_FLAGS);
+               for (i = 0; i < klass->method.count; ++i) {
+                       flags = mono_metadata_decode_table_row_col (klass->image, MONO_TABLE_METHOD, klass->method.first + i, MONO_METHOD_FLAGS);
 
                        if (flags & METHOD_ATTRIBUTE_VIRTUAL)
                                ++count;
@@ -3434,7 +3479,7 @@ mono_class_interface_match (const uint8_t *bitmap, int id)
  * Return -1 on failure and set exception_type
  */
 static int
-setup_interface_offsets (MonoClass *class, int cur_slot, gboolean overwrite)
+setup_interface_offsets (MonoClass *klass, int cur_slot, gboolean overwrite)
 {
        MonoError error;
        MonoClass *k, *ic;
@@ -3448,20 +3493,20 @@ setup_interface_offsets (MonoClass *class, int cur_slot, gboolean overwrite)
        int num_array_interfaces;
        int is_enumerator = FALSE;
 
-       mono_class_setup_supertypes (class);
+       mono_class_setup_supertypes (klass);
        /* 
         * get the implicit generic interfaces for either the arrays or for System.Array/InternalEnumerator<T>
         * implicit interfaces have the property that they are assigned the same slot in the
         * vtables for compatible interfaces
         */
-       array_interfaces = get_implicit_generic_array_interfaces (class, &num_array_interfaces, &is_enumerator);
+       array_interfaces = get_implicit_generic_array_interfaces (klass, &num_array_interfaces, &is_enumerator);
 
        /* compute maximum number of slots and maximum interface id */
        max_iid = 0;
        num_ifaces = num_array_interfaces; /* this can include duplicated ones */
-       ifaces_array = g_new0 (GPtrArray *, class->idepth);
-       for (j = 0; j < class->idepth; j++) {
-               k = class->supertypes [j];
+       ifaces_array = g_new0 (GPtrArray *, klass->idepth);
+       for (j = 0; j < klass->idepth; j++) {
+               k = klass->supertypes [j];
                num_ifaces += k->interface_count;
                for (i = 0; i < k->interface_count; i++) {
                        ic = k->interfaces [i];
@@ -3475,7 +3520,7 @@ setup_interface_offsets (MonoClass *class, int cur_slot, gboolean overwrite)
                ifaces = mono_class_get_implemented_interfaces (k, &error);
                if (!mono_error_ok (&error)) {
                        char *name = mono_type_get_full_name (k);
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Error getting the interfaces of %s due to %s", name, mono_error_get_message (&error)));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Error getting the interfaces of %s due to %s", name, mono_error_get_message (&error)));
                        g_free (name);
                        mono_error_cleanup (&error);
                        cur_slot = -1;
@@ -3484,7 +3529,7 @@ setup_interface_offsets (MonoClass *class, int cur_slot, gboolean overwrite)
                if (ifaces) {
                        num_ifaces += ifaces->len;
                        for (i = 0; i < ifaces->len; ++i) {
-                               ic = g_ptr_array_index (ifaces, i);
+                               ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                                if (max_iid < ic->interface_id)
                                        max_iid = ic->interface_id;
                        }
@@ -3499,29 +3544,29 @@ setup_interface_offsets (MonoClass *class, int cur_slot, gboolean overwrite)
                        max_iid = ic->interface_id;
        }
 
-       if (MONO_CLASS_IS_INTERFACE (class)) {
+       if (MONO_CLASS_IS_INTERFACE (klass)) {
                num_ifaces++;
-               if (max_iid < class->interface_id)
-                       max_iid = class->interface_id;
+               if (max_iid < klass->interface_id)
+                       max_iid = klass->interface_id;
        }
-       class->max_interface_id = max_iid;
+       klass->max_interface_id = max_iid;
        /* compute vtable offset for interfaces */
-       interfaces_full = g_malloc0 (sizeof (MonoClass*) * num_ifaces);
-       interface_offsets_full = g_malloc (sizeof (int) * num_ifaces);
+       interfaces_full = (MonoClass **)g_malloc0 (sizeof (MonoClass*) * num_ifaces);
+       interface_offsets_full = (int *)g_malloc (sizeof (int) * num_ifaces);
 
        for (i = 0; i < num_ifaces; i++) {
                interface_offsets_full [i] = -1;
        }
 
        /* skip the current class */
-       for (j = 0; j < class->idepth - 1; j++) {
-               k = class->supertypes [j];
+       for (j = 0; j < klass->idepth - 1; j++) {
+               k = klass->supertypes [j];
                ifaces = ifaces_array [j];
 
                if (ifaces) {
                        for (i = 0; i < ifaces->len; ++i) {
                                int io;
-                               ic = g_ptr_array_index (ifaces, i);
+                               ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                                
                                /*Force the sharing of interface offsets between parent and subtypes.*/
                                io = mono_class_interface_offset (k, ic);
@@ -3531,18 +3576,18 @@ setup_interface_offsets (MonoClass *class, int cur_slot, gboolean overwrite)
                }
        }
 
-       g_assert (class == class->supertypes [class->idepth - 1]);
-       ifaces = ifaces_array [class->idepth - 1];
+       g_assert (klass == klass->supertypes [klass->idepth - 1]);
+       ifaces = ifaces_array [klass->idepth - 1];
        if (ifaces) {
                for (i = 0; i < ifaces->len; ++i) {
                        int count;
-                       ic = g_ptr_array_index (ifaces, i);
+                       ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                        if (set_interface_and_offset (num_ifaces, interfaces_full, interface_offsets_full, ic, cur_slot, FALSE))
                                continue;
                        count = count_virtual_methods (ic);
                        if (count == -1) {
                                char *name = mono_type_get_full_name (ic);
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Error calculating interface offset of %s", name));
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Error calculating interface offset of %s", name));
                                g_free (name);
                                cur_slot = -1;
                                goto end;
@@ -3551,13 +3596,13 @@ setup_interface_offsets (MonoClass *class, int cur_slot, gboolean overwrite)
                }
        }
 
-       if (MONO_CLASS_IS_INTERFACE (class))
-               set_interface_and_offset (num_ifaces, interfaces_full, interface_offsets_full, class, cur_slot, TRUE);
+       if (MONO_CLASS_IS_INTERFACE (klass))
+               set_interface_and_offset (num_ifaces, interfaces_full, interface_offsets_full, klass, cur_slot, TRUE);
 
        if (num_array_interfaces) {
                if (is_enumerator) {
-                       int ienumerator_idx = find_array_interface (class, "IEnumerator`1");
-                       int ienumerator_offset = find_interface_offset (num_ifaces, interfaces_full, interface_offsets_full, class->interfaces [ienumerator_idx]);
+                       int ienumerator_idx = find_array_interface (klass, "IEnumerator`1");
+                       int ienumerator_offset = find_interface_offset (num_ifaces, interfaces_full, interface_offsets_full, klass->interfaces [ienumerator_idx]);
                        g_assert (ienumerator_offset >= 0);
                        for (i = 0; i < num_array_interfaces; ++i) {
                                ic = array_interfaces [i];
@@ -3565,21 +3610,21 @@ setup_interface_offsets (MonoClass *class, int cur_slot, gboolean overwrite)
                                        set_interface_and_offset (num_ifaces, interfaces_full, interface_offsets_full, ic, ienumerator_offset, TRUE);
                                else
                                        g_assert_not_reached ();
-                               /*g_print ("type %s has %s offset at %d (%s)\n", class->name, ic->name, interface_offsets_full [ic->interface_id], class->interfaces [0]->name);*/
+                               /*g_print ("type %s has %s offset at %d (%s)\n", klass->name, ic->name, interface_offsets_full [ic->interface_id], klass->interfaces [0]->name);*/
                        }
                } else {
                        int ilist_offset, icollection_offset, ienumerable_offset, ireadonlylist_offset, ireadonlycollection_offset;
-                       int ilist_iface_idx = find_array_interface (class, "IList`1");
-                       MonoClass* ilist_class = class->interfaces [ilist_iface_idx];
-                       int ireadonlylist_iface_idx = find_array_interface (class, "IReadOnlyList`1");
-                       MonoClass* ireadonlylist_class = ireadonlylist_iface_idx != -1 ? class->interfaces [ireadonlylist_iface_idx] : NULL;
+                       int ilist_iface_idx = find_array_interface (klass, "IList`1");
+                       MonoClass* ilist_class = klass->interfaces [ilist_iface_idx];
+                       int ireadonlylist_iface_idx = find_array_interface (klass, "IReadOnlyList`1");
+                       MonoClass* ireadonlylist_class = ireadonlylist_iface_idx != -1 ? klass->interfaces [ireadonlylist_iface_idx] : NULL;
                        int icollection_iface_idx = find_array_interface (ilist_class, "ICollection`1");
                        int ienumerable_iface_idx = find_array_interface (ilist_class, "IEnumerable`1");
                        int ireadonlycollection_iface_idx = ireadonlylist_iface_idx != -1 ? find_array_interface (ireadonlylist_class, "IReadOnlyCollection`1") : -1;
-                       ilist_offset = find_interface_offset (num_ifaces, interfaces_full, interface_offsets_full, class->interfaces [ilist_iface_idx]);
+                       ilist_offset = find_interface_offset (num_ifaces, interfaces_full, interface_offsets_full, klass->interfaces [ilist_iface_idx]);
                        icollection_offset = find_interface_offset (num_ifaces, interfaces_full, interface_offsets_full, ilist_class->interfaces [icollection_iface_idx]);
                        ienumerable_offset = find_interface_offset (num_ifaces, interfaces_full, interface_offsets_full, ilist_class->interfaces [ienumerable_iface_idx]);
-                       ireadonlylist_offset = ireadonlylist_iface_idx != -1 ? find_interface_offset (num_ifaces, interfaces_full, interface_offsets_full, class->interfaces [ireadonlylist_iface_idx]) : -1;
+                       ireadonlylist_offset = ireadonlylist_iface_idx != -1 ? find_interface_offset (num_ifaces, interfaces_full, interface_offsets_full, klass->interfaces [ireadonlylist_iface_idx]) : -1;
                        ireadonlycollection_offset = ireadonlycollection_iface_idx != -1 ? find_interface_offset (num_ifaces, interfaces_full, interface_offsets_full, ireadonlylist_class->interfaces [ireadonlycollection_iface_idx]) : -1;
                        g_assert (ilist_offset >= 0 && icollection_offset >= 0 && ienumerable_offset >= 0);
                        for (i = 0; i < num_array_interfaces; ++i) {
@@ -3598,7 +3643,7 @@ setup_interface_offsets (MonoClass *class, int cur_slot, gboolean overwrite)
                                else
                                        g_assert_not_reached ();
                                set_interface_and_offset (num_ifaces, interfaces_full, interface_offsets_full, ic, offset, TRUE);
-                               /*g_print ("type %s has %s offset at %d (%s)\n", class->name, ic->name, offset, class->interfaces [0]->name);*/
+                               /*g_print ("type %s has %s offset at %d (%s)\n", klass->name, ic->name, offset, klass->interfaces [0]->name);*/
                        }
                }
        }
@@ -3617,36 +3662,36 @@ setup_interface_offsets (MonoClass *class, int cur_slot, gboolean overwrite)
         * mono_class_setup_interface_offsets () passes 0 as CUR_SLOT, so the computed interface offsets will be invalid. This
         * means we have to overwrite those when called from other places (#4440).
         */
-       if (class->interfaces_packed) {
+       if (klass->interfaces_packed) {
                if (!overwrite)
-                       g_assert (class->interface_offsets_count == interface_offsets_count);
+                       g_assert (klass->interface_offsets_count == interface_offsets_count);
        } else {
                uint8_t *bitmap;
                int bsize;
-               class->interface_offsets_count = interface_offsets_count;
-               class->interfaces_packed = mono_class_alloc (class, sizeof (MonoClass*) * interface_offsets_count);
-               class->interface_offsets_packed = mono_class_alloc (class, sizeof (guint16) * interface_offsets_count);
+               klass->interface_offsets_count = interface_offsets_count;
+               klass->interfaces_packed = (MonoClass **)mono_class_alloc (klass, sizeof (MonoClass*) * interface_offsets_count);
+               klass->interface_offsets_packed = (guint16 *)mono_class_alloc (klass, sizeof (guint16) * interface_offsets_count);
                bsize = (sizeof (guint8) * ((max_iid + 1) >> 3)) + (((max_iid + 1) & 7)? 1 :0);
 #ifdef COMPRESSED_INTERFACE_BITMAP
                bitmap = g_malloc0 (bsize);
 #else
-               bitmap = mono_class_alloc0 (class, bsize);
+               bitmap = (uint8_t *)mono_class_alloc0 (klass, bsize);
 #endif
                for (i = 0; i < interface_offsets_count; i++) {
                        int id = interfaces_full [i]->interface_id;
                        bitmap [id >> 3] |= (1 << (id & 7));
-                       class->interfaces_packed [i] = interfaces_full [i];
-                       class->interface_offsets_packed [i] = interface_offsets_full [i];
+                       klass->interfaces_packed [i] = interfaces_full [i];
+                       klass->interface_offsets_packed [i] = interface_offsets_full [i];
                        /*if (num_array_interfaces)
-                         g_print ("type %s has %s offset at %d\n", mono_type_get_name_full (&class->byval_arg, 0), mono_type_get_name_full (&interfaces_full [i]->byval_arg, 0), interface_offsets_full [i]);*/
+                         g_print ("type %s has %s offset at %d\n", mono_type_get_name_full (&klass->byval_arg, 0), mono_type_get_name_full (&interfaces_full [i]->byval_arg, 0), interface_offsets_full [i]);*/
                }
 #ifdef COMPRESSED_INTERFACE_BITMAP
                i = mono_compress_bitmap (NULL, bitmap, bsize);
-               class->interface_bitmap = mono_class_alloc0 (class, i);
-               mono_compress_bitmap (class->interface_bitmap, bitmap, bsize);
+               klass->interface_bitmap = mono_class_alloc0 (klass, i);
+               mono_compress_bitmap (klass->interface_bitmap, bitmap, bsize);
                g_free (bitmap);
 #else
-               class->interface_bitmap = bitmap;
+               klass->interface_bitmap = bitmap;
 #endif
        }
 
@@ -3654,7 +3699,7 @@ end:
        g_free (interfaces_full);
        g_free (interface_offsets_full);
        g_free (array_interfaces);
-       for (i = 0; i < class->idepth; i++) {
+       for (i = 0; i < klass->idepth; i++) {
                ifaces = ifaces_array [i];
                if (ifaces)
                        g_ptr_array_free (ifaces, TRUE);
@@ -3662,7 +3707,7 @@ end:
        g_free (ifaces_array);
        
        //printf ("JUST DONE: ");
-       //print_implemented_interfaces (class);
+       //print_implemented_interfaces (klass);
  
        return cur_slot;
 }
@@ -3670,20 +3715,20 @@ end:
 /*
  * Setup interface offsets for interfaces. 
  * Initializes:
- * - class->max_interface_id
- * - class->interface_offsets_count
- * - class->interfaces_packed
- * - class->interface_offsets_packed
- * - class->interface_bitmap
+ * - klass->max_interface_id
+ * - klass->interface_offsets_count
+ * - klass->interfaces_packed
+ * - klass->interface_offsets_packed
+ * - klass->interface_bitmap
  *
  * This function can fail @class.
  */
 void
-mono_class_setup_interface_offsets (MonoClass *class)
+mono_class_setup_interface_offsets (MonoClass *klass)
 {
        mono_loader_lock ();
 
-       setup_interface_offsets (class, 0, FALSE);
+       setup_interface_offsets (klass, 0, FALSE);
 
        mono_loader_unlock ();
 }
@@ -3708,32 +3753,32 @@ mono_class_has_gtd_parent (MonoClass *klass, MonoClass *parent)
 }
 
 gboolean
-mono_class_check_vtable_constraints (MonoClass *class, GList *in_setup)
+mono_class_check_vtable_constraints (MonoClass *klass, GList *in_setup)
 {
        MonoGenericInst *ginst;
        int i;
-       if (!class->generic_class) {
-               mono_class_setup_vtable_full (class, in_setup);
-               return class->exception_type == 0;
+       if (!klass->generic_class) {
+               mono_class_setup_vtable_full (klass, in_setup);
+               return klass->exception_type == 0;
        }
 
-       mono_class_setup_vtable_full (mono_class_get_generic_type_definition (class), in_setup);
-       if (class->generic_class->container_class->exception_type) {
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Failed to load generic definition vtable"));
+       mono_class_setup_vtable_full (mono_class_get_generic_type_definition (klass), in_setup);
+       if (klass->generic_class->container_class->exception_type) {
+               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Failed to load generic definition vtable"));
                return FALSE;
        }
 
-       ginst = class->generic_class->context.class_inst;
+       ginst = klass->generic_class->context.class_inst;
        for (i = 0; i < ginst->type_argc; ++i) {
                MonoClass *arg;
                if (ginst->type_argv [i]->type != MONO_TYPE_GENERICINST)
                        continue;
                arg = mono_class_from_mono_type (ginst->type_argv [i]);
                /*Those 2 will be checked by mono_class_setup_vtable itself*/
-               if (mono_class_has_gtd_parent (class, arg) || mono_class_has_gtd_parent (arg, class))
+               if (mono_class_has_gtd_parent (klass, arg) || mono_class_has_gtd_parent (arg, klass))
                        continue;
                if (!mono_class_check_vtable_constraints (arg, in_setup)) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Failed to load generic parameter %d", i));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Failed to load generic parameter %d", i));
                        return FALSE;
                }
        }
@@ -3748,18 +3793,18 @@ mono_class_check_vtable_constraints (MonoClass *class, GList *in_setup)
  * - vtable
  * - vtable_size
  * Plus all the fields initialized by setup_interface_offsets ().
- * If there is an error during vtable construction, class->exception_type is set.
+ * If there is an error during vtable construction, klass->exception_type is set.
  *
  * LOCKING: Acquires the loader lock.
  */
 void
-mono_class_setup_vtable (MonoClass *class)
+mono_class_setup_vtable (MonoClass *klass)
 {
-       mono_class_setup_vtable_full (class, NULL);
+       mono_class_setup_vtable_full (klass, NULL);
 }
 
 static void
-mono_class_setup_vtable_full (MonoClass *class, GList *in_setup)
+mono_class_setup_vtable_full (MonoClass *klass, GList *in_setup)
 {
        MonoMethod **overrides;
        MonoGenericContext *context;
@@ -3767,66 +3812,66 @@ mono_class_setup_vtable_full (MonoClass *class, GList *in_setup)
        int onum = 0;
        gboolean ok = TRUE;
 
-       if (class->vtable)
+       if (klass->vtable)
                return;
 
-       if (MONO_CLASS_IS_INTERFACE (class)) {
+       if (MONO_CLASS_IS_INTERFACE (klass)) {
                /* This sets method->slot for all methods if this is an interface */
-               mono_class_setup_methods (class);
+               mono_class_setup_methods (klass);
                return;
        }
 
-       if (class->exception_type)
+       if (klass->exception_type)
                return;
 
-       if (g_list_find (in_setup, class))
+       if (g_list_find (in_setup, klass))
                return;
 
        mono_loader_lock ();
 
-       if (class->vtable) {
+       if (klass->vtable) {
                mono_loader_unlock ();
                return;
        }
 
        mono_stats.generic_vtable_count ++;
-       in_setup = g_list_prepend (in_setup, class);
+       in_setup = g_list_prepend (in_setup, klass);
 
-       if (class->generic_class) {
-               if (!mono_class_check_vtable_constraints (class, in_setup)) {
+       if (klass->generic_class) {
+               if (!mono_class_check_vtable_constraints (klass, in_setup)) {
                        mono_loader_unlock ();
-                       g_list_remove (in_setup, class);
+                       g_list_remove (in_setup, klass);
                        return;
                }
 
-               context = mono_class_get_context (class);
-               type_token = class->generic_class->container_class->type_token;
+               context = mono_class_get_context (klass);
+               type_token = klass->generic_class->container_class->type_token;
        } else {
-               context = (MonoGenericContext *) class->generic_container;              
-               type_token = class->type_token;
+               context = (MonoGenericContext *) klass->generic_container;
+               type_token = klass->type_token;
        }
 
-       if (image_is_dynamic (class->image)) {
+       if (image_is_dynamic (klass->image)) {
                /* Generic instances can have zero method overrides without causing any harm.
                 * This is true since we don't do layout all over again for them, we simply inflate
                 * the layout of the parent.
                 */
-               mono_reflection_get_dynamic_overrides (class, &overrides, &onum);
+               mono_reflection_get_dynamic_overrides (klass, &overrides, &onum);
        } else {
                /* The following call fails if there are missing methods in the type */
                /* FIXME it's probably a good idea to avoid this for generic instances. */
-               ok = mono_class_get_overrides_full (class->image, type_token, &overrides, &onum, context);
+               ok = mono_class_get_overrides_full (klass->image, type_token, &overrides, &onum, context);
        }
 
        if (ok)
-               mono_class_setup_vtable_general (class, overrides, onum, in_setup);
+               mono_class_setup_vtable_general (klass, overrides, onum, in_setup);
        else
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not load list of method overrides"));
+               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not load list of method overrides"));
                
        g_free (overrides);
 
        mono_loader_unlock ();
-       g_list_remove (in_setup, class);
+       g_list_remove (in_setup, klass);
 
        return;
 }
@@ -3912,7 +3957,7 @@ is_wcf_hack_disabled (void)
 }
 
 static gboolean
-check_interface_method_override (MonoClass *class, MonoMethod *im, MonoMethod *cm, gboolean require_newslot, gboolean interface_is_explicitly_implemented_by_class, gboolean slot_is_empty)
+check_interface_method_override (MonoClass *klass, MonoMethod *im, MonoMethod *cm, gboolean require_newslot, gboolean interface_is_explicitly_implemented_by_class, gboolean slot_is_empty)
 {
        MonoMethodSignature *cmsig, *imsig;
        if (strcmp (im->name, cm->name) == 0) {
@@ -3937,7 +3982,7 @@ check_interface_method_override (MonoClass *class, MonoMethod *im, MonoMethod *c
                cmsig = mono_method_signature (cm);
                imsig = mono_method_signature (im);
                if (!cmsig || !imsig) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not resolve the signature of a virtual method"));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not resolve the signature of a virtual method"));
                        return FALSE;
                }
 
@@ -3949,13 +3994,13 @@ check_interface_method_override (MonoClass *class, MonoMethod *im, MonoMethod *c
                }
                TRACE_INTERFACE_VTABLE (printf ("[SECURITY CHECKS]"));
                if (mono_security_core_clr_enabled ())
-                       mono_security_core_clr_check_override (class, cm, im);
+                       mono_security_core_clr_check_override (klass, cm, im);
 
                TRACE_INTERFACE_VTABLE (printf ("[NAME CHECK OK]"));
                if (is_wcf_hack_disabled () && !mono_method_can_access_method_full (cm, im, NULL)) {
                        char *body_name = mono_method_full_name (cm, TRUE);
                        char *decl_name = mono_method_full_name (im, TRUE);
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Method %s overrides method '%s' which is not accessible", body_name, decl_name));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Method %s overrides method '%s' which is not accessible", body_name, decl_name));
                        g_free (body_name);
                        g_free (decl_name);
                        return FALSE;
@@ -3979,7 +4024,7 @@ check_interface_method_override (MonoClass *class, MonoMethod *im, MonoMethod *c
                cmsig = mono_method_signature (cm);
                imsig = mono_method_signature (im);
                if (!cmsig || !imsig) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not resolve the signature of a virtual method"));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not resolve the signature of a virtual method"));
                        return FALSE;
                }
 
@@ -4030,13 +4075,13 @@ check_interface_method_override (MonoClass *class, MonoMethod *im, MonoMethod *c
                
                TRACE_INTERFACE_VTABLE (printf ("[SECURITY CHECKS (INJECTED CASE)]"));
                if (mono_security_core_clr_enabled ())
-                       mono_security_core_clr_check_override (class, cm, im);
+                       mono_security_core_clr_check_override (klass, cm, im);
 
                TRACE_INTERFACE_VTABLE (printf ("[INJECTED INTERFACE CHECK OK]"));
                if (is_wcf_hack_disabled () && !mono_method_can_access_method_full (cm, im, NULL)) {
                        char *body_name = mono_method_full_name (cm, TRUE);
                        char *decl_name = mono_method_full_name (im, TRUE);
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Method %s overrides method '%s' which is not accessible", body_name, decl_name));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Method %s overrides method '%s' which is not accessible", body_name, decl_name));
                        g_free (body_name);
                        g_free (decl_name);
                        return FALSE;
@@ -4069,20 +4114,20 @@ print_overrides (GHashTable *override_map, const char *message) {
        }
 }
 static void
-print_vtable_full (MonoClass *class, MonoMethod** vtable, int size, int first_non_interface_slot, const char *message, gboolean print_interfaces) {
-       char *full_name = mono_type_full_name (&class->byval_arg);
+print_vtable_full (MonoClass *klass, MonoMethod** vtable, int size, int first_non_interface_slot, const char *message, gboolean print_interfaces) {
+       char *full_name = mono_type_full_name (&klass->byval_arg);
        int i;
        int parent_size;
        
        printf ("*** Vtable for class '%s' at \"%s\" (size %d)\n", full_name, message, size);
        
        if (print_interfaces) {
-               print_implemented_interfaces (class);
+               print_implemented_interfaces (klass);
                printf ("* Interfaces for class '%s' done.\nStarting vtable (size %d):\n", full_name, size);
        }
        
-       if (class->parent) {
-               parent_size = class->parent->vtable_size;
+       if (klass->parent) {
+               parent_size = klass->parent->vtable_size;
        } else {
                parent_size = 0;
        }
@@ -4112,20 +4157,20 @@ mono_method_try_get_vtable_index (MonoMethod *method)
 }
 
 static void
-mono_class_verify_vtable (MonoClass *class)
+mono_class_verify_vtable (MonoClass *klass)
 {
        int i;
-       char *full_name = mono_type_full_name (&class->byval_arg);
+       char *full_name = mono_type_full_name (&klass->byval_arg);
 
        printf ("*** Verifying VTable of class '%s' \n", full_name);
        g_free (full_name);
        full_name = NULL;
        
-       if (!class->methods)
+       if (!klass->methods)
                return;
 
-       for (i = 0; i < class->method.count; ++i) {
-               MonoMethod *cm = class->methods [i];
+       for (i = 0; i < klass->method.count; ++i) {
+               MonoMethod *cm = klass->methods [i];
                int slot;
 
                if (!(cm->flags & METHOD_ATTRIBUTE_VIRTUAL))
@@ -4136,13 +4181,13 @@ mono_class_verify_vtable (MonoClass *class)
 
                slot = mono_method_try_get_vtable_index (cm);
                if (slot >= 0) {
-                       if (slot >= class->vtable_size) {
-                               printf ("\tInvalid method %s at index %d with vtable of length %d\n", full_name, slot, class->vtable_size);
+                       if (slot >= klass->vtable_size) {
+                               printf ("\tInvalid method %s at index %d with vtable of length %d\n", full_name, slot, klass->vtable_size);
                                continue;
                        }
 
-                       if (slot >= 0 && class->vtable [slot] != cm && (class->vtable [slot])) {
-                               char *other_name = class->vtable [slot] ? mono_method_full_name (class->vtable [slot], TRUE) : g_strdup ("[null value]");
+                       if (slot >= 0 && klass->vtable [slot] != cm && (klass->vtable [slot])) {
+                               char *other_name = klass->vtable [slot] ? mono_method_full_name (klass->vtable [slot], TRUE) : g_strdup ("[null value]");
                                printf ("\tMethod %s has slot %d but vtable has %s on it\n", full_name, slot, other_name);
                                g_free (other_name);
                        }
@@ -4154,7 +4199,7 @@ mono_class_verify_vtable (MonoClass *class)
 #endif
 
 static void
-print_unimplemented_interface_method_info (MonoClass *class, MonoClass *ic, MonoMethod *im, int im_slot, MonoMethod **overrides, int onum) {
+print_unimplemented_interface_method_info (MonoClass *klass, MonoClass *ic, MonoMethod *im, int im_slot, MonoMethod **overrides, int onum) {
        int index;
        char *method_signature;
        char *type_name;
@@ -4164,20 +4209,20 @@ print_unimplemented_interface_method_info (MonoClass *class, MonoClass *ic, Mono
                         overrides [index*2+1]->slot, overrides [index*2]->name, overrides [index*2]->slot);
        }
        method_signature = mono_signature_get_desc (mono_method_signature (im), FALSE);
-       type_name = mono_type_full_name (&class->byval_arg);
+       type_name = mono_type_full_name (&klass->byval_arg);
        mono_trace_warning (MONO_TRACE_TYPE, "no implementation for interface method %s::%s(%s) in class %s\n",
                mono_type_get_name (&ic->byval_arg), im->name, method_signature, type_name);
        g_free (method_signature);
        g_free (type_name);
-       mono_class_setup_methods (class);
-       if (class->exception_type) {
-               char *name = mono_type_get_full_name (class);
+       mono_class_setup_methods (klass);
+       if (klass->exception_type) {
+               char *name = mono_type_get_full_name (klass);
                mono_trace_warning (MONO_TRACE_TYPE, "CLASS %s failed to resolve methods\n", name);
                g_free (name);
                return;
        }
-       for (index = 0; index < class->method.count; ++index) {
-               MonoMethod *cm = class->methods [index];
+       for (index = 0; index < klass->method.count; ++index) {
+               MonoMethod *cm = klass->methods [index];
                method_signature = mono_signature_get_desc (mono_method_signature (cm), TRUE);
 
                mono_trace_warning (MONO_TRACE_TYPE, "METHOD %s(%s)\n", cm->name, method_signature);
@@ -4194,7 +4239,7 @@ mono_method_get_method_definition (MonoMethod *method)
 }
 
 static gboolean
-verify_class_overrides (MonoClass *class, MonoMethod **overrides, int onum)
+verify_class_overrides (MonoClass *klass, MonoMethod **overrides, int onum)
 {
        int i;
 
@@ -4202,29 +4247,29 @@ verify_class_overrides (MonoClass *class, MonoMethod **overrides, int onum)
                MonoMethod *decl = overrides [i * 2];
                MonoMethod *body = overrides [i * 2 + 1];
 
-               if (mono_class_get_generic_type_definition (body->klass) != mono_class_get_generic_type_definition (class)) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Method belongs to a different class than the declared one"));
+               if (mono_class_get_generic_type_definition (body->klass) != mono_class_get_generic_type_definition (klass)) {
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Method belongs to a different class than the declared one"));
                        return FALSE;
                }
 
                if (!(body->flags & METHOD_ATTRIBUTE_VIRTUAL) || (body->flags & METHOD_ATTRIBUTE_STATIC)) {
                        if (body->flags & METHOD_ATTRIBUTE_STATIC)
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Method must not be static to override a base type"));
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Method must not be static to override a base type"));
                        else
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Method must be virtual to override a base type"));
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Method must be virtual to override a base type"));
                        return FALSE;
                }
 
                if (!(decl->flags & METHOD_ATTRIBUTE_VIRTUAL) || (decl->flags & METHOD_ATTRIBUTE_STATIC)) {
                        if (body->flags & METHOD_ATTRIBUTE_STATIC)
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Cannot override a static method in a base type"));
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Cannot override a static method in a base type"));
                        else
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Cannot override a non virtual method in a base type"));
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Cannot override a non virtual method in a base type"));
                        return FALSE;
                }
 
-               if (!mono_class_is_assignable_from_slow (decl->klass, class)) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Method overrides a class or interface that extended or implemented by this type"));
+               if (!mono_class_is_assignable_from_slow (decl->klass, klass)) {
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Method overrides a class or interface that is not extended or implemented by this type"));
                        return FALSE;
                }
 
@@ -4234,7 +4279,7 @@ verify_class_overrides (MonoClass *class, MonoMethod **overrides, int onum)
                if (is_wcf_hack_disabled () && !mono_method_can_access_method_full (body, decl, NULL)) {
                        char *body_name = mono_method_full_name (body, TRUE);
                        char *decl_name = mono_method_full_name (decl, TRUE);
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Method %s overrides method '%s' which is not accessible", body_name, decl_name));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Method %s overrides method '%s' which is not accessible", body_name, decl_name));
                        g_free (body_name);
                        g_free (decl_name);
                        return FALSE;
@@ -4244,16 +4289,16 @@ verify_class_overrides (MonoClass *class, MonoMethod **overrides, int onum)
 }
 
 static gboolean
-mono_class_need_stelemref_method (MonoClass *class)
+mono_class_need_stelemref_method (MonoClass *klass)
 {
-       return class->rank == 1 && MONO_TYPE_IS_REFERENCE (&class->element_class->byval_arg);
+       return klass->rank == 1 && MONO_TYPE_IS_REFERENCE (&klass->element_class->byval_arg);
 }
 
 /*
  * LOCKING: this is supposed to be called with the loader lock held.
  */
 void
-mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int onum, GList *in_setup)
+mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int onum, GList *in_setup)
 {
        MonoError error;
        MonoClass *k, *ic;
@@ -4268,84 +4313,84 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
        GSList *virt_methods = NULL, *l;
        int stelemref_slot = 0;
 
-       if (class->vtable)
+       if (klass->vtable)
                return;
 
-       if (overrides && !verify_class_overrides (class, overrides, onum))
+       if (overrides && !verify_class_overrides (klass, overrides, onum))
                return;
 
-       ifaces = mono_class_get_implemented_interfaces (class, &error);
+       ifaces = mono_class_get_implemented_interfaces (klass, &error);
        if (!mono_error_ok (&error)) {
-               char *name = mono_type_get_full_name (class);
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Could not resolve %s interfaces due to %s", name, mono_error_get_message (&error)));
+               char *name = mono_type_get_full_name (klass);
+               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Could not resolve %s interfaces due to %s", name, mono_error_get_message (&error)));
                g_free (name);
                mono_error_cleanup (&error);
                return;
        } else if (ifaces) {
                for (i = 0; i < ifaces->len; i++) {
-                       MonoClass *ic = g_ptr_array_index (ifaces, i);
+                       MonoClass *ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                        max_vtsize += ic->method.count;
                }
                g_ptr_array_free (ifaces, TRUE);
                ifaces = NULL;
        }
        
-       if (class->parent) {
-               mono_class_init (class->parent);
-               mono_class_setup_vtable_full (class->parent, in_setup);
+       if (klass->parent) {
+               mono_class_init (klass->parent);
+               mono_class_setup_vtable_full (klass->parent, in_setup);
 
-               if (class->parent->exception_type) {
-                       char *name = mono_type_get_full_name (class->parent);
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Parent %s failed to load", name));
+               if (klass->parent->exception_type) {
+                       char *name = mono_type_get_full_name (klass->parent);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Parent %s failed to load", name));
                        g_free (name);
                        return;
                }
 
-               max_vtsize += class->parent->vtable_size;
-               cur_slot = class->parent->vtable_size;
+               max_vtsize += klass->parent->vtable_size;
+               cur_slot = klass->parent->vtable_size;
        }
 
-       max_vtsize += class->method.count;
+       max_vtsize += klass->method.count;
 
        /*Array have a slot for stelemref*/
-       if (mono_class_need_stelemref_method (class)) {
+       if (mono_class_need_stelemref_method (klass)) {
                stelemref_slot = cur_slot;
                ++max_vtsize;
                ++cur_slot;
        }
 
-       vtable = alloca (sizeof (gpointer) * max_vtsize);
+       vtable = (MonoMethod **)alloca (sizeof (gpointer) * max_vtsize);
        memset (vtable, 0, sizeof (gpointer) * max_vtsize);
 
-       /* printf ("METAINIT %s.%s\n", class->name_space, class->name); */
+       /* printf ("METAINIT %s.%s\n", klass->name_space, klass->name); */
 
-       cur_slot = setup_interface_offsets (class, cur_slot, TRUE);
+       cur_slot = setup_interface_offsets (klass, cur_slot, TRUE);
        if (cur_slot == -1) /*setup_interface_offsets fails the type.*/
                return;
 
-       max_iid = class->max_interface_id;
+       max_iid = klass->max_interface_id;
        DEBUG_INTERFACE_VTABLE (first_non_interface_slot = cur_slot);
 
        /* Optimized version for generic instances */
-       if (class->generic_class) {
+       if (klass->generic_class) {
                MonoError error;
-               MonoClass *gklass = class->generic_class->container_class;
+               MonoClass *gklass = klass->generic_class->container_class;
                MonoMethod **tmp;
 
                mono_class_setup_vtable_full (gklass, in_setup);
                if (gklass->exception_type != MONO_EXCEPTION_NONE) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                        return;
                }
 
-               tmp = mono_class_alloc0 (class, sizeof (gpointer) * gklass->vtable_size);
-               class->vtable_size = gklass->vtable_size;
+               tmp = (MonoMethod **)mono_class_alloc0 (klass, sizeof (gpointer) * gklass->vtable_size);
+               klass->vtable_size = gklass->vtable_size;
                for (i = 0; i < gklass->vtable_size; ++i)
                        if (gklass->vtable [i]) {
-                               MonoMethod *inflated = mono_class_inflate_generic_method_full_checked (gklass->vtable [i], class, mono_class_get_context (class), &error);
+                               MonoMethod *inflated = mono_class_inflate_generic_method_full_checked (gklass->vtable [i], klass, mono_class_get_context (klass), &error);
                                if (!mono_error_ok (&error)) {
                                        char *err_msg = g_strdup_printf ("Could not inflate method due to %s", mono_error_get_message (&error));
-                                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, err_msg);
+                                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, err_msg);
                                        g_free (err_msg);
                                        mono_error_cleanup (&error);
                                        return;
@@ -4354,20 +4399,20 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                tmp [i]->slot = gklass->vtable [i]->slot;
                        }
                mono_memory_barrier ();
-               class->vtable = tmp;
+               klass->vtable = tmp;
 
                /* Have to set method->slot for abstract virtual methods */
-               if (class->methods && gklass->methods) {
-                       for (i = 0; i < class->method.count; ++i)
-                               if (class->methods [i]->slot == -1)
-                                       class->methods [i]->slot = gklass->methods [i]->slot;
+               if (klass->methods && gklass->methods) {
+                       for (i = 0; i < klass->method.count; ++i)
+                               if (klass->methods [i]->slot == -1)
+                                       klass->methods [i]->slot = gklass->methods [i]->slot;
                }
 
                return;
        }
 
-       if (class->parent && class->parent->vtable_size) {
-               MonoClass *parent = class->parent;
+       if (klass->parent && klass->parent->vtable_size) {
+               MonoClass *parent = klass->parent;
                int i;
                
                memcpy (vtable, parent->vtable,  sizeof (gpointer) * parent->vtable_size);
@@ -4378,7 +4423,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                // classes the ".override" information is not used anymore.
                for (i = 0; i < parent->interface_offsets_count; i++) {
                        MonoClass *parent_interface = parent->interfaces_packed [i];
-                       int interface_offset = mono_class_interface_offset (class, parent_interface);
+                       int interface_offset = mono_class_interface_offset (klass, parent_interface);
                        /*FIXME this is now dead code as this condition will never hold true.
                        Since interface offsets are inherited then the offset of an interface implemented
                        by a parent will never be the out of it's vtable boundary.
@@ -4389,7 +4434,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                
                                mono_class_setup_methods (parent_interface); /*FIXME Just kill this whole chunk of dead code*/
                                TRACE_INTERFACE_VTABLE (printf ("    +++ Inheriting interface %s.%s\n", parent_interface->name_space, parent_interface->name));
-                               for (j = 0; j < parent_interface->method.count && !class->exception_type; j++) {
+                               for (j = 0; j < parent_interface->method.count && !klass->exception_type; j++) {
                                        vtable [interface_offset + j] = parent->vtable [parent_interface_offset + j];
                                        TRACE_INTERFACE_VTABLE (printf ("    --- Inheriting: [%03d][(%03d)+(%03d)] => [%03d][(%03d)+(%03d)]\n",
                                                        parent_interface_offset + j, parent_interface_offset, j,
@@ -4401,8 +4446,8 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
        }
 
        /*Array have a slot for stelemref*/
-       if (mono_class_need_stelemref_method (class)) {
-               MonoMethod *method = mono_marshal_get_virtual_stelemref (class);
+       if (mono_class_need_stelemref_method (klass)) {
+               MonoMethod *method = mono_marshal_get_virtual_stelemref (klass);
                if (!method->slot)
                        method->slot = stelemref_slot;
                else
@@ -4411,7 +4456,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                vtable [stelemref_slot] = method;
        }
 
-       TRACE_INTERFACE_VTABLE (print_vtable_full (class, vtable, cur_slot, first_non_interface_slot, "AFTER INHERITING PARENT VTABLE", TRUE));
+       TRACE_INTERFACE_VTABLE (print_vtable_full (klass, vtable, cur_slot, first_non_interface_slot, "AFTER INHERITING PARENT VTABLE", TRUE));
        /* override interface methods */
        for (i = 0; i < onum; i++) {
                MonoMethod *decl = overrides [i*2];
@@ -4419,11 +4464,11 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                        int dslot;
                        dslot = mono_method_get_vtable_slot (decl);
                        if (dslot == -1) {
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                                return;
                        }
 
-                       dslot += mono_class_interface_offset (class, decl->klass);
+                       dslot += mono_class_interface_offset (klass, decl->klass);
                        vtable [dslot] = overrides [i*2 + 1];
                        vtable [dslot]->slot = dslot;
                        if (!override_map)
@@ -4432,11 +4477,11 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                        g_hash_table_insert (override_map, overrides [i * 2], overrides [i * 2 + 1]);
 
                        if (mono_security_core_clr_enabled ())
-                               mono_security_core_clr_check_override (class, vtable [dslot], decl);
+                               mono_security_core_clr_check_override (klass, vtable [dslot], decl);
                }
        }
        TRACE_INTERFACE_VTABLE (print_overrides (override_map, "AFTER OVERRIDING INTERFACE METHODS"));
-       TRACE_INTERFACE_VTABLE (print_vtable_full (class, vtable, cur_slot, first_non_interface_slot, "AFTER OVERRIDING INTERFACE METHODS", FALSE));
+       TRACE_INTERFACE_VTABLE (print_vtable_full (klass, vtable, cur_slot, first_non_interface_slot, "AFTER OVERRIDING INTERFACE METHODS", FALSE));
 
        /*
         * Create a list of virtual methods to avoid calling 
@@ -4448,22 +4493,22 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                MonoMethod *cm;
 
                virt_methods = NULL;
-               while ((cm = mono_class_get_virtual_methods (class, &iter))) {
+               while ((cm = mono_class_get_virtual_methods (klass, &iter))) {
                        virt_methods = g_slist_prepend (virt_methods, cm);
                }
-               if (class->exception_type)
+               if (klass->exception_type)
                        goto fail;
        }
        
        // Loop on all implemented interfaces...
-       for (i = 0; i < class->interface_offsets_count; i++) {
-               MonoClass *parent = class->parent;
+       for (i = 0; i < klass->interface_offsets_count; i++) {
+               MonoClass *parent = klass->parent;
                int ic_offset;
                gboolean interface_is_explicitly_implemented_by_class;
                int im_index;
                
-               ic = class->interfaces_packed [i];
-               ic_offset = mono_class_interface_offset (class, ic);
+               ic = klass->interfaces_packed [i];
+               ic_offset = mono_class_interface_offset (klass, ic);
 
                mono_class_setup_methods (ic);
                if (ic->exception_type)
@@ -4473,8 +4518,8 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                if (parent != NULL) {
                        int implemented_interfaces_index;
                        interface_is_explicitly_implemented_by_class = FALSE;
-                       for (implemented_interfaces_index = 0; implemented_interfaces_index < class->interface_count; implemented_interfaces_index++) {
-                               if (ic == class->interfaces [implemented_interfaces_index]) {
+                       for (implemented_interfaces_index = 0; implemented_interfaces_index < klass->interface_count; implemented_interfaces_index++) {
+                               if (ic == klass->interfaces [implemented_interfaces_index]) {
                                        interface_is_explicitly_implemented_by_class = TRUE;
                                        break;
                                }
@@ -4487,7 +4532,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                for (im_index = 0; im_index < ic->method.count; im_index++) {
                        MonoMethod *im = ic->methods [im_index];
                        int im_slot = ic_offset + im->slot;
-                       MonoMethod *override_im = (override_map != NULL) ? g_hash_table_lookup (override_map, im) : NULL;
+                       MonoMethod *override_im = (override_map != NULL) ? (MonoMethod *)g_hash_table_lookup (override_map, im) : NULL;
                        
                        if (im->flags & METHOD_ATTRIBUTE_STATIC)
                                continue;
@@ -4502,9 +4547,9 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
 
                                // First look for a suitable method among the class methods
                                for (l = virt_methods; l; l = l->next) {
-                                       cm = l->data;
+                                       cm = (MonoMethod *)l->data;
                                        TRACE_INTERFACE_VTABLE (printf ("    For slot %d ('%s'.'%s':'%s'), trying method '%s'.'%s':'%s'... [EXPLICIT IMPLEMENTATION = %d][SLOT IS NULL = %d]", im_slot, ic->name_space, ic->name, im->name, cm->klass->name_space, cm->klass->name, cm->name, interface_is_explicitly_implemented_by_class, (vtable [im_slot] == NULL)));
-                                       if (check_interface_method_override (class, im, cm, TRUE, interface_is_explicitly_implemented_by_class, (vtable [im_slot] == NULL))) {
+                                       if (check_interface_method_override (klass, im, cm, TRUE, interface_is_explicitly_implemented_by_class, (vtable [im_slot] == NULL))) {
                                                TRACE_INTERFACE_VTABLE (printf ("[check ok]: ASSIGNING"));
                                                vtable [im_slot] = cm;
                                                /* Why do we need this? */
@@ -4513,19 +4558,19 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                                }
                                        }
                                        TRACE_INTERFACE_VTABLE (printf ("\n"));
-                                       if (class->exception_type)  /*Might be set by check_interface_method_override*/ 
+                                       if (klass->exception_type)  /*Might be set by check_interface_method_override*/
                                                goto fail;
                                }
                                
                                // If the slot is still empty, look in all the inherited virtual methods...
-                               if ((vtable [im_slot] == NULL) && class->parent != NULL) {
-                                       MonoClass *parent = class->parent;
+                               if ((vtable [im_slot] == NULL) && klass->parent != NULL) {
+                                       MonoClass *parent = klass->parent;
                                        // Reverse order, so that last added methods are preferred
                                        for (cm_index = parent->vtable_size - 1; cm_index >= 0; cm_index--) {
                                                MonoMethod *cm = parent->vtable [cm_index];
                                                
                                                TRACE_INTERFACE_VTABLE ((cm != NULL) && printf ("    For slot %d ('%s'.'%s':'%s'), trying (ancestor) method '%s'.'%s':'%s'... ", im_slot, ic->name_space, ic->name, im->name, cm->klass->name_space, cm->klass->name, cm->name));
-                                               if ((cm != NULL) && check_interface_method_override (class, im, cm, FALSE, FALSE, TRUE)) {
+                                               if ((cm != NULL) && check_interface_method_override (klass, im, cm, FALSE, FALSE, TRUE)) {
                                                        TRACE_INTERFACE_VTABLE (printf ("[everything ok]: ASSIGNING"));
                                                        vtable [im_slot] = cm;
                                                        /* Why do we need this? */
@@ -4534,7 +4579,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                                        }
                                                        break;
                                                }
-                                               if (class->exception_type) /*Might be set by check_interface_method_override*/ 
+                                               if (klass->exception_type) /*Might be set by check_interface_method_override*/
                                                        goto fail;
                                                TRACE_INTERFACE_VTABLE ((cm != NULL) && printf ("\n"));
                                        }
@@ -4550,13 +4595,13 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
        // it can happen (for injected generic array interfaces) that the same slot is
        // processed multiple times (those interfaces have overlapping slots), and it
        // will not always be the first pass the one that fills the slot.
-       if (! (class->flags & TYPE_ATTRIBUTE_ABSTRACT)) {
-               for (i = 0; i < class->interface_offsets_count; i++) {
+       if (! (klass->flags & TYPE_ATTRIBUTE_ABSTRACT)) {
+               for (i = 0; i < klass->interface_offsets_count; i++) {
                        int ic_offset;
                        int im_index;
                        
-                       ic = class->interfaces_packed [i];
-                       ic_offset = mono_class_interface_offset (class, ic);
+                       ic = klass->interfaces_packed [i];
+                       ic_offset = mono_class_interface_offset (klass, ic);
                        
                        for (im_index = 0; im_index < ic->method.count; im_index++) {
                                MonoMethod *im = ic->methods [im_index];
@@ -4568,23 +4613,23 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                TRACE_INTERFACE_VTABLE (printf ("      [class is not abstract, checking slot %d for interface '%s'.'%s', method %s, slot check is %d]\n",
                                                im_slot, ic->name_space, ic->name, im->name, (vtable [im_slot] == NULL)));
                                if (vtable [im_slot] == NULL) {
-                                       print_unimplemented_interface_method_info (class, ic, im, im_slot, overrides, onum);
+                                       print_unimplemented_interface_method_info (klass, ic, im, im_slot, overrides, onum);
                                        goto fail;
                                }
                        }
                }
        }
 
-       TRACE_INTERFACE_VTABLE (print_vtable_full (class, vtable, cur_slot, first_non_interface_slot, "AFTER SETTING UP INTERFACE METHODS", FALSE));
+       TRACE_INTERFACE_VTABLE (print_vtable_full (klass, vtable, cur_slot, first_non_interface_slot, "AFTER SETTING UP INTERFACE METHODS", FALSE));
        for (l = virt_methods; l; l = l->next) {
-               cm = l->data;
+               cm = (MonoMethod *)l->data;
                /*
                 * If the method is REUSE_SLOT, we must check in the
                 * base class for a method to override.
                 */
                if (!(cm->flags & METHOD_ATTRIBUTE_NEW_SLOT)) {
                        int slot = -1;
-                       for (k = class->parent; k ; k = k->parent) {
+                       for (k = klass->parent; k ; k = k->parent) {
                                gpointer k_iter;
                                MonoMethod *m1;
 
@@ -4596,7 +4641,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                        m1sig = mono_method_signature (m1);
 
                                        if (!cmsig || !m1sig) {
-                                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                                                return;
                                        }
 
@@ -4604,7 +4649,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                            mono_metadata_signature_equal (cmsig, m1sig)) {
 
                                                if (mono_security_core_clr_enabled ())
-                                                       mono_security_core_clr_check_override (class, cm, m1);
+                                                       mono_security_core_clr_check_override (klass, cm, m1);
 
                                                slot = mono_method_get_vtable_slot (m1);
                                                if (slot == -1)
@@ -4613,7 +4658,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                                if (is_wcf_hack_disabled () && !mono_method_can_access_method_full (cm, m1, NULL)) {
                                                        char *body_name = mono_method_full_name (cm, TRUE);
                                                        char *decl_name = mono_method_full_name (m1, TRUE);
-                                                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Method %s overrides method '%s' which is not accessible", body_name, decl_name));
+                                                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Method %s overrides method '%s' which is not accessible", body_name, decl_name));
                                                        g_free (body_name);
                                                        g_free (decl_name);
                                                        goto fail;
@@ -4665,7 +4710,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                        g_hash_table_insert (override_map, decl, overrides [i * 2 + 1]);
 
                        if (mono_security_core_clr_enabled ())
-                               mono_security_core_clr_check_override (class, vtable [decl->slot], decl);
+                               mono_security_core_clr_check_override (klass, vtable [decl->slot], decl);
                }
        }
 
@@ -4680,7 +4725,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                        if (vtable [i]) {
                                TRACE_INTERFACE_VTABLE (printf ("checking slot %d method %s[%p] for overrides\n", i, mono_method_full_name (vtable [i], 1), vtable [i]));
 
-                               cm = g_hash_table_lookup (override_map, vtable [i]);
+                               cm = (MonoMethod *)g_hash_table_lookup (override_map, vtable [i]);
                                if (cm)
                                        vtable [i] = cm;
                        }
@@ -4693,12 +4738,12 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
        virt_methods = NULL;
 
        /* Ensure that all vtable slots are filled with concrete instance methods */
-       if (!(class->flags & TYPE_ATTRIBUTE_ABSTRACT)) {
+       if (!(klass->flags & TYPE_ATTRIBUTE_ABSTRACT)) {
                for (i = 0; i < cur_slot; ++i) {
                        if (vtable [i] == NULL || (vtable [i]->flags & (METHOD_ATTRIBUTE_ABSTRACT | METHOD_ATTRIBUTE_STATIC))) {
-                               char *type_name = mono_type_get_full_name (class);
+                               char *type_name = mono_type_get_full_name (klass);
                                char *method_name = vtable [i] ? mono_method_full_name (vtable [i], TRUE) : g_strdup ("none");
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Type %s has invalid vtable method slot %d with method %s", type_name, i, method_name));
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Type %s has invalid vtable method slot %d with method %s", type_name, i, method_name));
                                g_free (type_name);
                                g_free (method_name);
                                return;
@@ -4706,42 +4751,42 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                }
        }
 
-       if (class->generic_class) {
-               MonoClass *gklass = class->generic_class->container_class;
+       if (klass->generic_class) {
+               MonoClass *gklass = klass->generic_class->container_class;
 
                mono_class_init (gklass);
 
-               class->vtable_size = MAX (gklass->vtable_size, cur_slot);
+               klass->vtable_size = MAX (gklass->vtable_size, cur_slot);
        } else {
                /* Check that the vtable_size value computed in mono_class_init () is correct */
-               if (class->vtable_size)
-                       g_assert (cur_slot == class->vtable_size);
-               class->vtable_size = cur_slot;
+               if (klass->vtable_size)
+                       g_assert (cur_slot == klass->vtable_size);
+               klass->vtable_size = cur_slot;
        }
 
        /* Try to share the vtable with our parent. */
-       if (class->parent && (class->parent->vtable_size == class->vtable_size) && (memcmp (class->parent->vtable, vtable, sizeof (gpointer) * class->vtable_size) == 0)) {
+       if (klass->parent && (klass->parent->vtable_size == klass->vtable_size) && (memcmp (klass->parent->vtable, vtable, sizeof (gpointer) * klass->vtable_size) == 0)) {
                mono_memory_barrier ();
-               class->vtable = class->parent->vtable;
+               klass->vtable = klass->parent->vtable;
        } else {
-               MonoMethod **tmp = mono_class_alloc0 (class, sizeof (gpointer) * class->vtable_size);
-               memcpy (tmp, vtable,  sizeof (gpointer) * class->vtable_size);
+               MonoMethod **tmp = (MonoMethod **)mono_class_alloc0 (klass, sizeof (gpointer) * klass->vtable_size);
+               memcpy (tmp, vtable,  sizeof (gpointer) * klass->vtable_size);
                mono_memory_barrier ();
-               class->vtable = tmp;
+               klass->vtable = tmp;
        }
 
-       DEBUG_INTERFACE_VTABLE (print_vtable_full (class, class->vtable, class->vtable_size, first_non_interface_slot, "FINALLY", FALSE));
+       DEBUG_INTERFACE_VTABLE (print_vtable_full (klass, klass->vtable, klass->vtable_size, first_non_interface_slot, "FINALLY", FALSE));
        if (mono_print_vtable) {
                int icount = 0;
 
-               print_implemented_interfaces (class);
+               print_implemented_interfaces (klass);
                
                for (i = 0; i <= max_iid; i++)
-                       if (MONO_CLASS_IMPLEMENTS_INTERFACE (class, i))
+                       if (MONO_CLASS_IMPLEMENTS_INTERFACE (klass, i))
                                icount++;
 
-               printf ("VTable %s (vtable entries = %d, interfaces = %d)\n", mono_type_full_name (&class->byval_arg), 
-                       class->vtable_size, icount); 
+               printf ("VTable %s (vtable entries = %d, interfaces = %d)\n", mono_type_full_name (&klass->byval_arg),
+                       klass->vtable_size, icount);
 
                for (i = 0; i < cur_slot; ++i) {
                        MonoMethod *cm;
@@ -4755,34 +4800,34 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
 
 
                if (icount) {
-                       printf ("Interfaces %s.%s (max_iid = %d)\n", class->name_space, 
-                               class->name, max_iid);
+                       printf ("Interfaces %s.%s (max_iid = %d)\n", klass->name_space,
+                               klass->name, max_iid);
        
-                       for (i = 0; i < class->interface_count; i++) {
-                               ic = class->interfaces [i];
+                       for (i = 0; i < klass->interface_count; i++) {
+                               ic = klass->interfaces [i];
                                printf ("  slot offset: %03d, method count: %03d, iid: %03d %s\n",  
-                                       mono_class_interface_offset (class, ic),
+                                       mono_class_interface_offset (klass, ic),
                                        count_virtual_methods (ic), ic->interface_id, mono_type_full_name (&ic->byval_arg));
                        }
 
-                       for (k = class->parent; k ; k = k->parent) {
+                       for (k = klass->parent; k ; k = k->parent) {
                                for (i = 0; i < k->interface_count; i++) {
                                        ic = k->interfaces [i]; 
                                        printf ("  parent slot offset: %03d, method count: %03d, iid: %03d %s\n",  
-                                               mono_class_interface_offset (class, ic),
+                                               mono_class_interface_offset (klass, ic),
                                                count_virtual_methods (ic), ic->interface_id, mono_type_full_name (&ic->byval_arg));
                                }
                        }
                }
        }
 
-       VERIFY_INTERFACE_VTABLE (mono_class_verify_vtable (class));
+       VERIFY_INTERFACE_VTABLE (mono_class_verify_vtable (klass));
        return;
 
 fail:
        {
-       char *name = mono_type_get_full_name (class);
-       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("VTable setup of type %s failed", name));
+       char *name = mono_type_get_full_name (klass);
+       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("VTable setup of type %s failed", name));
        g_free (name);
        if (override_map)
                g_hash_table_destroy (override_map);
@@ -4860,15 +4905,15 @@ static int finalize_slot = -1;
 static int ghc_slot = -1;
 
 static void
-initialize_object_slots (MonoClass *class)
+initialize_object_slots (MonoClass *klass)
 {
        int i;
        if (default_ghc)
                return;
-       if (class == mono_defaults.object_class) { 
-               mono_class_setup_vtable (class);                       
-               for (i = 0; i < class->vtable_size; ++i) {
-                       MonoMethod *cm = class->vtable [i];
+       if (klass == mono_defaults.object_class) {
+               mono_class_setup_vtable (klass);
+               for (i = 0; i < klass->vtable_size; ++i) {
+                       MonoMethod *cm = klass->vtable [i];
        
                        if (!strcmp (cm->name, "GetHashCode"))
                                ghc_slot = i;
@@ -4877,10 +4922,10 @@ initialize_object_slots (MonoClass *class)
                }
 
                g_assert (ghc_slot > 0);
-               default_ghc = class->vtable [ghc_slot];
+               default_ghc = klass->vtable [ghc_slot];
 
                g_assert (finalize_slot > 0);
-               default_finalize = class->vtable [finalize_slot];
+               default_finalize = klass->vtable [finalize_slot];
        }
 }
 
@@ -4893,28 +4938,28 @@ static int generic_array_method_num = 0;
 static GenericArrayMethodInfo *generic_array_method_info = NULL;
 
 static int
-generic_array_methods (MonoClass *class)
+generic_array_methods (MonoClass *klass)
 {
        int i, count_generic = 0;
        GList *list = NULL, *tmp;
        if (generic_array_method_num)
                return generic_array_method_num;
-       mono_class_setup_methods (class->parent); /*This is setting up System.Array*/
-       g_assert (!class->parent->exception_type); /*So hitting this assert is a huge problem*/
-       for (i = 0; i < class->parent->method.count; i++) {
-               MonoMethod *m = class->parent->methods [i];
+       mono_class_setup_methods (klass->parent); /*This is setting up System.Array*/
+       g_assert (!klass->parent->exception_type); /*So hitting this assert is a huge problem*/
+       for (i = 0; i < klass->parent->method.count; i++) {
+               MonoMethod *m = klass->parent->methods [i];
                if (!strncmp (m->name, "InternalArray__", 15)) {
                        count_generic++;
                        list = g_list_prepend (list, m);
                }
        }
        list = g_list_reverse (list);
-       generic_array_method_info = mono_image_alloc (mono_defaults.corlib, sizeof (GenericArrayMethodInfo) * count_generic);
+       generic_array_method_info = (GenericArrayMethodInfo *)mono_image_alloc (mono_defaults.corlib, sizeof (GenericArrayMethodInfo) * count_generic);
        i = 0;
        for (tmp = list; tmp; tmp = tmp->next) {
                const char *mname, *iname;
                gchar *name;
-               MonoMethod *m = tmp->data;
+               MonoMethod *m = (MonoMethod *)tmp->data;
                const char *ireadonlylist_prefix = "InternalArray__IReadOnlyList_";
                const char *ireadonlycollection_prefix = "InternalArray__IReadOnlyCollection_";
 
@@ -4938,7 +4983,7 @@ generic_array_methods (MonoClass *class)
                        g_assert_not_reached ();
                }
 
-               name = mono_image_alloc (mono_defaults.corlib, strlen (iname) + strlen (mname) + 1);
+               name = (gchar *)mono_image_alloc (mono_defaults.corlib, strlen (iname) + strlen (mname) + 1);
                strcpy (name, iname);
                strcpy (name + strlen (iname), mname);
                generic_array_method_info [i].name = name;
@@ -4952,7 +4997,7 @@ generic_array_methods (MonoClass *class)
 }
 
 static void
-setup_generic_array_ifaces (MonoClass *class, MonoClass *iface, MonoMethod **methods, int pos)
+setup_generic_array_ifaces (MonoClass *klass, MonoClass *iface, MonoMethod **methods, int pos)
 {
        MonoGenericContext tmp_context;
        int i;
@@ -4968,7 +5013,7 @@ setup_generic_array_ifaces (MonoClass *class, MonoClass *iface, MonoMethod **met
 
                inflated = mono_class_inflate_generic_method_checked (m, &tmp_context, &error);
                g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
-               methods [pos++] = mono_marshal_get_generic_array_helper (class, iface, generic_array_method_info [i].name, inflated);
+               methods [pos++] = mono_marshal_get_generic_array_helper (klass, iface, generic_array_method_info [i].name, inflated);
        }
 }
 
@@ -4977,7 +5022,7 @@ concat_two_strings_with_zero (MonoImage *image, const char *s1, const char *s2)
 {
        int null_length = strlen ("(null)");
        int len = (s1 ? strlen (s1) : null_length) + (s2 ? strlen (s2) : null_length) + 2;
-       char *s = mono_image_alloc (image, len);
+       char *s = (char *)mono_image_alloc (image, len);
        int result;
 
        result = g_snprintf (s, len, "%s%c%s", s1 ? s1 : "(null)", '\0', s2 ? s2 : "(null)");
@@ -4987,17 +5032,17 @@ concat_two_strings_with_zero (MonoImage *image, const char *s1, const char *s2)
 }
 
 static void
-set_failure_from_loader_error (MonoClass *class, MonoLoaderError *error)
+set_failure_from_loader_error (MonoClass *klass, MonoLoaderError *error)
 {
        gpointer exception_data = NULL;
 
        switch (error->exception_type) {
        case MONO_EXCEPTION_TYPE_LOAD:
-               exception_data = concat_two_strings_with_zero (class->image, error->class_name, error->assembly_name);
+               exception_data = concat_two_strings_with_zero (klass->image, error->class_name, error->assembly_name);
                break;
 
        case MONO_EXCEPTION_MISSING_METHOD:
-               exception_data = concat_two_strings_with_zero (class->image, error->class_name, error->member_name);
+               exception_data = concat_two_strings_with_zero (klass->image, error->class_name, error->member_name);
                break;
 
        case MONO_EXCEPTION_MISSING_FIELD: {
@@ -5009,7 +5054,7 @@ set_failure_from_loader_error (MonoClass *class, MonoLoaderError *error)
                else
                        class_name = error->klass->name;
 
-               exception_data = concat_two_strings_with_zero (class->image, class_name, error->member_name);
+               exception_data = concat_two_strings_with_zero (klass->image, class_name, error->member_name);
                
                if (name_space)
                        g_free ((void*)class_name);
@@ -5024,7 +5069,7 @@ set_failure_from_loader_error (MonoClass *class, MonoLoaderError *error)
                else
                        msg = "Could not load file or assembly '%s' or one of its dependencies.";
 
-               exception_data = concat_two_strings_with_zero (class->image, msg, error->assembly_name);
+               exception_data = concat_two_strings_with_zero (klass->image, msg, error->assembly_name);
                break;
        }
 
@@ -5036,7 +5081,7 @@ set_failure_from_loader_error (MonoClass *class, MonoLoaderError *error)
                g_assert_not_reached ();
        }
 
-       mono_class_set_failure (class, error->exception_type, exception_data);
+       mono_class_set_failure (klass, error->exception_type, exception_data);
 }
 
 /**
@@ -5051,117 +5096,117 @@ set_failure_from_loader_error (MonoClass *class, MonoLoaderError *error)
  * LOCKING: Acquires the loader lock.
  */
 gboolean
-mono_class_init (MonoClass *class)
+mono_class_init (MonoClass *klass)
 {
        int i;
        MonoCachedClassInfo cached_info;
        gboolean has_cached_info;
        
-       g_assert (class);
+       g_assert (klass);
 
        /* Double-checking locking pattern */
-       if (class->inited || class->exception_type)
-               return class->exception_type == MONO_EXCEPTION_NONE;
+       if (klass->inited || klass->exception_type)
+               return klass->exception_type == MONO_EXCEPTION_NONE;
 
-       /*g_print ("Init class %s\n", mono_type_get_full_name (class));*/
+       /*g_print ("Init class %s\n", mono_type_get_full_name (klass));*/
 
        /* We do everything inside the lock to prevent races */
        mono_loader_lock ();
 
-       if (class->inited || class->exception_type) {
+       if (klass->inited || klass->exception_type) {
                mono_loader_unlock ();
                /* Somebody might have gotten in before us */
-               return class->exception_type == MONO_EXCEPTION_NONE;
+               return klass->exception_type == MONO_EXCEPTION_NONE;
        }
 
-       if (class->init_pending) {
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Recursive type definition detected"));
+       if (klass->init_pending) {
+               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Recursive type definition detected"));
                goto leave;
        }
 
-       class->init_pending = 1;
+       klass->init_pending = 1;
 
-       if (mono_verifier_is_enabled_for_class (class) && !mono_verifier_verify_class (class)) {
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, concat_two_strings_with_zero (class->image, class->name, class->image->assembly_name));
+       if (mono_verifier_is_enabled_for_class (klass) && !mono_verifier_verify_class (klass)) {
+               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, concat_two_strings_with_zero (klass->image, klass->name, klass->image->assembly_name));
                goto leave;
        }
 
 
-       if (class->byval_arg.type == MONO_TYPE_ARRAY || class->byval_arg.type == MONO_TYPE_SZARRAY) {
-               MonoClass *element_class = class->element_class;
+       if (klass->byval_arg.type == MONO_TYPE_ARRAY || klass->byval_arg.type == MONO_TYPE_SZARRAY) {
+               MonoClass *element_class = klass->element_class;
                if (!element_class->inited) 
                        mono_class_init (element_class);
                if (element_class->exception_type != MONO_EXCEPTION_NONE) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                        goto leave;
                }
        }
 
        mono_stats.initialized_class_count++;
 
-       if (class->generic_class && !class->generic_class->is_dynamic) {
-               MonoClass *gklass = class->generic_class->container_class;
+       if (klass->generic_class && !klass->generic_class->is_dynamic) {
+               MonoClass *gklass = klass->generic_class->container_class;
 
                mono_stats.generic_class_count++;
 
-               class->method = gklass->method;
-               class->field = gklass->field;
+               klass->method = gklass->method;
+               klass->field = gklass->field;
 
                mono_class_init (gklass);
                // FIXME: Why is this needed ?
                if (!gklass->exception_type)
                        mono_class_setup_methods (gklass);
                if (gklass->exception_type) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Generic Type Defintion failed to init"));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Generic Type Defintion failed to init"));
                        goto leave;
                }
 
-               if (MONO_CLASS_IS_INTERFACE (class))
-                       class->interface_id = mono_get_unique_iid (class);
+               if (MONO_CLASS_IS_INTERFACE (klass))
+                       klass->interface_id = mono_get_unique_iid (klass);
        }
 
-       if (class->parent && !class->parent->inited)
-               mono_class_init (class->parent);
+       if (klass->parent && !klass->parent->inited)
+               mono_class_init (klass->parent);
 
-       has_cached_info = mono_class_get_cached_class_info (class, &cached_info);
+       has_cached_info = mono_class_get_cached_class_info (klass, &cached_info);
 
-       if (class->generic_class || image_is_dynamic (class->image) || !class->type_token || (has_cached_info && !cached_info.has_nested_classes))
-               class->nested_classes_inited = TRUE;
+       if (klass->generic_class || image_is_dynamic (klass->image) || !klass->type_token || (has_cached_info && !cached_info.has_nested_classes))
+               klass->nested_classes_inited = TRUE;
 
        /*
         * Computes the size used by the fields, and their locations
         */
        if (has_cached_info) {
-               class->instance_size = cached_info.instance_size;
-               class->sizes.class_size = cached_info.class_size;
-               class->packing_size = cached_info.packing_size;
-               class->min_align = cached_info.min_align;
-               class->blittable = cached_info.blittable;
-               class->has_references = cached_info.has_references;
-               class->has_static_refs = cached_info.has_static_refs;
-               class->no_special_static_fields = cached_info.no_special_static_fields;
+               klass->instance_size = cached_info.instance_size;
+               klass->sizes.class_size = cached_info.class_size;
+               klass->packing_size = cached_info.packing_size;
+               klass->min_align = cached_info.min_align;
+               klass->blittable = cached_info.blittable;
+               klass->has_references = cached_info.has_references;
+               klass->has_static_refs = cached_info.has_static_refs;
+               klass->no_special_static_fields = cached_info.no_special_static_fields;
        }
        else
-               if (!class->size_inited){
-                       mono_class_setup_fields (class);
-                       if (class->exception_type || mono_loader_get_last_error ())
+               if (!klass->size_inited){
+                       mono_class_setup_fields (klass);
+                       if (klass->exception_type || mono_loader_get_last_error ())
                                goto leave;
                }
                                
        /* Initialize arrays */
-       if (class->rank) {
-               class->method.count = 3 + (class->rank > 1? 2: 1);
+       if (klass->rank) {
+               klass->method.count = 3 + (klass->rank > 1? 2: 1);
 
-               if (class->interface_count) {
-                       int count_generic = generic_array_methods (class);
-                       class->method.count += class->interface_count * count_generic;
+               if (klass->interface_count) {
+                       int count_generic = generic_array_methods (klass);
+                       klass->method.count += klass->interface_count * count_generic;
                }
        }
 
-       mono_class_setup_supertypes (class);
+       mono_class_setup_supertypes (klass);
 
        if (!default_ghc)
-               initialize_object_slots (class);
+               initialize_object_slots (klass);
 
        /* 
         * Initialize the rest of the data without creating a generic vtable if possible.
@@ -5170,74 +5215,74 @@ mono_class_init (MonoClass *class)
         */
        if (has_cached_info) {
                /* AOT case */
-               class->vtable_size = cached_info.vtable_size;
-               class->has_finalize = cached_info.has_finalize;
-               class->has_finalize_inited = TRUE;
-               class->ghcimpl = cached_info.ghcimpl;
-               class->has_cctor = cached_info.has_cctor;
-       } else if (class->rank == 1 && class->byval_arg.type == MONO_TYPE_SZARRAY) {
+               klass->vtable_size = cached_info.vtable_size;
+               klass->has_finalize = cached_info.has_finalize;
+               klass->has_finalize_inited = TRUE;
+               klass->ghcimpl = cached_info.ghcimpl;
+               klass->has_cctor = cached_info.has_cctor;
+       } else if (klass->rank == 1 && klass->byval_arg.type == MONO_TYPE_SZARRAY) {
                /* SZARRAY can have 2 vtable layouts, with and without the stelemref method.
                 * The first slot if for array with.
                 */
                static int szarray_vtable_size[2] = { 0 };
 
-               int slot = MONO_TYPE_IS_REFERENCE (&class->element_class->byval_arg) ? 0 : 1;
+               int slot = MONO_TYPE_IS_REFERENCE (&klass->element_class->byval_arg) ? 0 : 1;
 
                /* SZARRAY case */
                if (!szarray_vtable_size [slot]) {
-                       mono_class_setup_vtable (class);
-                       szarray_vtable_size [slot] = class->vtable_size;
+                       mono_class_setup_vtable (klass);
+                       szarray_vtable_size [slot] = klass->vtable_size;
                } else {
-                       class->vtable_size = szarray_vtable_size[slot];
+                       klass->vtable_size = szarray_vtable_size[slot];
                }
-       } else if (class->generic_class && !MONO_CLASS_IS_INTERFACE (class)) {
-               MonoClass *gklass = class->generic_class->container_class;
+       } else if (klass->generic_class && !MONO_CLASS_IS_INTERFACE (klass)) {
+               MonoClass *gklass = klass->generic_class->container_class;
 
                /* Generic instance case */
-               class->ghcimpl = gklass->ghcimpl;
-               class->has_cctor = gklass->has_cctor;
+               klass->ghcimpl = gklass->ghcimpl;
+               klass->has_cctor = gklass->has_cctor;
 
                mono_class_setup_vtable (gklass);
                if (gklass->exception_type) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                        goto leave;
                }
 
-               class->vtable_size = gklass->vtable_size;
+               klass->vtable_size = gklass->vtable_size;
        } else {
                /* General case */
 
                /* ghcimpl is not currently used
-               class->ghcimpl = 1;
-               if (class->parent) { 
-                       MonoMethod *cmethod = class->vtable [ghc_slot];
+               klass->ghcimpl = 1;
+               if (klass->parent) {
+                       MonoMethod *cmethod = klass->vtable [ghc_slot];
                        if (cmethod->is_inflated)
                                cmethod = ((MonoMethodInflated*)cmethod)->declaring;
                        if (cmethod == default_ghc) {
-                               class->ghcimpl = 0;
+                               klass->ghcimpl = 0;
                        }
                }
                */
 
                /* C# doesn't allow interfaces to have cctors */
-               if (!MONO_CLASS_IS_INTERFACE (class) || class->image != mono_defaults.corlib) {
+               if (!MONO_CLASS_IS_INTERFACE (klass) || klass->image != mono_defaults.corlib) {
                        MonoMethod *cmethod = NULL;
 
-                       if (class->type_token) {
-                               cmethod = find_method_in_metadata (class, ".cctor", 0, METHOD_ATTRIBUTE_SPECIAL_NAME);
+                       if (klass->type_token && !image_is_dynamic(klass->image)) {
+                               cmethod = find_method_in_metadata (klass, ".cctor", 0, METHOD_ATTRIBUTE_SPECIAL_NAME);
                                /* The find_method function ignores the 'flags' argument */
                                if (cmethod && (cmethod->flags & METHOD_ATTRIBUTE_SPECIAL_NAME))
-                                       class->has_cctor = 1;
+                                       klass->has_cctor = 1;
                        } else {
-                               mono_class_setup_methods (class);
-                               if (class->exception_type)
+                               mono_class_setup_methods (klass);
+                               if (klass->exception_type)
                                        goto leave;
 
-                               for (i = 0; i < class->method.count; ++i) {
-                                       MonoMethod *method = class->methods [i];
+                               for (i = 0; i < klass->method.count; ++i) {
+                                       MonoMethod *method = klass->methods [i];
                                        if ((method->flags & METHOD_ATTRIBUTE_SPECIAL_NAME) && 
                                                (strcmp (".cctor", method->name) == 0)) {
-                                               class->has_cctor = 1;
+                                               klass->has_cctor = 1;
                                                break;
                                        }
                                }
@@ -5245,58 +5290,58 @@ mono_class_init (MonoClass *class)
                }
        }
 
-       if (class->parent) {
+       if (klass->parent) {
                int first_iface_slot;
-               /* This will compute class->parent->vtable_size for some classes */
-               mono_class_init (class->parent);
-               if (class->parent->exception_type) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+               /* This will compute klass->parent->vtable_size for some classes */
+               mono_class_init (klass->parent);
+               if (klass->parent->exception_type) {
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                        goto leave;
                }
                if (mono_loader_get_last_error ())
                        goto leave;
-               if (!class->parent->vtable_size) {
+               if (!klass->parent->vtable_size) {
                        /* FIXME: Get rid of this somehow */
-                       mono_class_setup_vtable (class->parent);
-                       if (class->parent->exception_type) {
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       mono_class_setup_vtable (klass->parent);
+                       if (klass->parent->exception_type) {
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                                goto leave;
                        }
                        if (mono_loader_get_last_error ())
                                goto leave;
                }
-               first_iface_slot = class->parent->vtable_size;
-               if (mono_class_need_stelemref_method (class))
+               first_iface_slot = klass->parent->vtable_size;
+               if (mono_class_need_stelemref_method (klass))
                        ++first_iface_slot;
-               setup_interface_offsets (class, first_iface_slot, TRUE);
+               setup_interface_offsets (klass, first_iface_slot, TRUE);
        } else {
-               setup_interface_offsets (class, 0, TRUE);
+               setup_interface_offsets (klass, 0, TRUE);
        }
 
        if (mono_security_core_clr_enabled ())
-               mono_security_core_clr_check_inheritance (class);
+               mono_security_core_clr_check_inheritance (klass);
 
        if (mono_loader_get_last_error ()) {
-               if (class->exception_type == MONO_EXCEPTION_NONE) {
-                       set_failure_from_loader_error (class, mono_loader_get_last_error ());
+               if (klass->exception_type == MONO_EXCEPTION_NONE) {
+                       set_failure_from_loader_error (klass, mono_loader_get_last_error ());
                }
                mono_loader_clear_error ();
        }
 
-       if (class->generic_class && !mono_verifier_class_is_valid_generic_instantiation (class))
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Invalid generic instantiation"));
+       if (klass->generic_class && !mono_verifier_class_is_valid_generic_instantiation (klass))
+               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Invalid generic instantiation"));
 
        goto leave;
 
  leave:
        /* Because of the double-checking locking pattern */
        mono_memory_barrier ();
-       class->inited = 1;
-       class->init_pending = 0;
+       klass->inited = 1;
+       klass->init_pending = 0;
 
        mono_loader_unlock ();
 
-       return class->exception_type == MONO_EXCEPTION_NONE;
+       return klass->exception_type == MONO_EXCEPTION_NONE;
 }
 
 /*
@@ -5308,40 +5353,39 @@ mono_class_init (MonoClass *class)
 gboolean
 mono_class_has_finalizer (MonoClass *klass)
 {
-       MonoClass *class = klass;
        gboolean has_finalize = FALSE;
 
        if (klass->has_finalize_inited)
                return klass->has_finalize;
 
        /* Interfaces and valuetypes are not supposed to have finalizers */
-       if (!(MONO_CLASS_IS_INTERFACE (class) || class->valuetype)) {
+       if (!(MONO_CLASS_IS_INTERFACE (klass) || klass->valuetype)) {
                MonoMethod *cmethod = NULL;
 
-               if (class->rank == 1 && class->byval_arg.type == MONO_TYPE_SZARRAY) {
-               } else if (class->generic_class) {
-                       MonoClass *gklass = class->generic_class->container_class;
+               if (klass->rank == 1 && klass->byval_arg.type == MONO_TYPE_SZARRAY) {
+               } else if (klass->generic_class) {
+                       MonoClass *gklass = klass->generic_class->container_class;
 
                        has_finalize = mono_class_has_finalizer (gklass);
-               } else if (class->parent && class->parent->has_finalize) {
+               } else if (klass->parent && klass->parent->has_finalize) {
                        has_finalize = TRUE;
                } else {
-                       if (class->parent) {
+                       if (klass->parent) {
                                /*
                                 * Can't search in metadata for a method named Finalize, because that
                                 * ignores overrides.
                                 */
-                               mono_class_setup_vtable (class);
-                               if (class->exception_type || mono_loader_get_last_error ())
+                               mono_class_setup_vtable (klass);
+                               if (klass->exception_type || mono_loader_get_last_error ())
                                        cmethod = NULL;
                                else
-                                       cmethod = class->vtable [finalize_slot];
+                                       cmethod = klass->vtable [finalize_slot];
                        }
 
                        if (cmethod) {
-                               g_assert (class->vtable_size > finalize_slot);
+                               g_assert (klass->vtable_size > finalize_slot);
 
-                               if (class->parent) {
+                               if (klass->parent) {
                                        if (cmethod->is_inflated)
                                                cmethod = ((MonoMethodInflated*)cmethod)->declaring;
                                        if (cmethod != default_finalize)
@@ -5379,42 +5423,45 @@ mono_is_corlib_image (MonoImage *image)
  * LOCKING: this assumes the loader lock is held
  */
 void
-mono_class_setup_mono_type (MonoClass *class)
+mono_class_setup_mono_type (MonoClass *klass)
 {
-       const char *name = class->name;
-       const char *nspace = class->name_space;
-       gboolean is_corlib = mono_is_corlib_image (class->image);
+       const char *name = klass->name;
+       const char *nspace = klass->name_space;
+       gboolean is_corlib = mono_is_corlib_image (klass->image);
 
-       class->this_arg.byref = 1;
-       class->this_arg.data.klass = class;
-       class->this_arg.type = MONO_TYPE_CLASS;
-       class->byval_arg.data.klass = class;
-       class->byval_arg.type = MONO_TYPE_CLASS;
+       klass->this_arg.byref = 1;
+       klass->this_arg.data.klass = klass;
+       klass->this_arg.type = MONO_TYPE_CLASS;
+       klass->byval_arg.data.klass = klass;
+       klass->byval_arg.type = MONO_TYPE_CLASS;
 
        if (is_corlib && !strcmp (nspace, "System")) {
                if (!strcmp (name, "ValueType")) {
                        /*
                         * do not set the valuetype bit for System.ValueType.
-                        * class->valuetype = 1;
+                        * klass->valuetype = 1;
                         */
-                       class->blittable = TRUE;
+                       klass->blittable = TRUE;
                } else if (!strcmp (name, "Enum")) {
                        /*
                         * do not set the valuetype bit for System.Enum.
-                        * class->valuetype = 1;
+                        * klass->valuetype = 1;
                         */
-                       class->valuetype = 0;
-                       class->enumtype = 0;
+                       klass->valuetype = 0;
+                       klass->enumtype = 0;
                } else if (!strcmp (name, "Object")) {
-                       class->this_arg.type = class->byval_arg.type = MONO_TYPE_OBJECT;
+                       klass->byval_arg.type = MONO_TYPE_OBJECT;
+                       klass->this_arg.type = MONO_TYPE_OBJECT;
                } else if (!strcmp (name, "String")) {
-                       class->this_arg.type = class->byval_arg.type = MONO_TYPE_STRING;
+                       klass->byval_arg.type = MONO_TYPE_STRING;
+                       klass->this_arg.type = MONO_TYPE_STRING;
                } else if (!strcmp (name, "TypedReference")) {
-                       class->this_arg.type = class->byval_arg.type = MONO_TYPE_TYPEDBYREF;
+                       klass->byval_arg.type = MONO_TYPE_TYPEDBYREF;
+                       klass->this_arg.type = MONO_TYPE_TYPEDBYREF;
                }
        }
 
-       if (class->valuetype) {
+       if (klass->valuetype) {
                int t = MONO_TYPE_VALUETYPE;
 
                if (is_corlib && !strcmp (nspace, "System")) {
@@ -5424,7 +5471,7 @@ mono_class_setup_mono_type (MonoClass *class)
                                        t = MONO_TYPE_BOOLEAN;
                                } else if (!strcmp(name, "Byte")) {
                                        t = MONO_TYPE_U1;
-                                       class->blittable = TRUE;                                                
+                                       klass->blittable = TRUE;                                                
                                }
                                break;
                        case 'C':
@@ -5435,52 +5482,52 @@ mono_class_setup_mono_type (MonoClass *class)
                        case 'D':
                                if (!strcmp (name, "Double")) {
                                        t = MONO_TYPE_R8;
-                                       class->blittable = TRUE;                                                
+                                       klass->blittable = TRUE;                                                
                                }
                                break;
                        case 'I':
                                if (!strcmp (name, "Int32")) {
                                        t = MONO_TYPE_I4;
-                                       class->blittable = TRUE;
+                                       klass->blittable = TRUE;
                                } else if (!strcmp(name, "Int16")) {
                                        t = MONO_TYPE_I2;
-                                       class->blittable = TRUE;
+                                       klass->blittable = TRUE;
                                } else if (!strcmp(name, "Int64")) {
                                        t = MONO_TYPE_I8;
-                                       class->blittable = TRUE;
+                                       klass->blittable = TRUE;
                                } else if (!strcmp(name, "IntPtr")) {
                                        t = MONO_TYPE_I;
-                                       class->blittable = TRUE;
+                                       klass->blittable = TRUE;
                                }
                                break;
                        case 'S':
                                if (!strcmp (name, "Single")) {
                                        t = MONO_TYPE_R4;
-                                       class->blittable = TRUE;                                                
+                                       klass->blittable = TRUE;                                                
                                } else if (!strcmp(name, "SByte")) {
                                        t = MONO_TYPE_I1;
-                                       class->blittable = TRUE;
+                                       klass->blittable = TRUE;
                                }
                                break;
                        case 'U':
                                if (!strcmp (name, "UInt32")) {
                                        t = MONO_TYPE_U4;
-                                       class->blittable = TRUE;
+                                       klass->blittable = TRUE;
                                } else if (!strcmp(name, "UInt16")) {
                                        t = MONO_TYPE_U2;
-                                       class->blittable = TRUE;
+                                       klass->blittable = TRUE;
                                } else if (!strcmp(name, "UInt64")) {
                                        t = MONO_TYPE_U8;
-                                       class->blittable = TRUE;
+                                       klass->blittable = TRUE;
                                } else if (!strcmp(name, "UIntPtr")) {
                                        t = MONO_TYPE_U;
-                                       class->blittable = TRUE;
+                                       klass->blittable = TRUE;
                                }
                                break;
                        case 'T':
                                if (!strcmp (name, "TypedReference")) {
                                        t = MONO_TYPE_TYPEDBYREF;
-                                       class->blittable = TRUE;
+                                       klass->blittable = TRUE;
                                }
                                break;
                        case 'V':
@@ -5492,11 +5539,12 @@ mono_class_setup_mono_type (MonoClass *class)
                                break;
                        }
                }
-               class->this_arg.type = class->byval_arg.type = t;
+               klass->byval_arg.type = (MonoTypeEnum)t;
+               klass->this_arg.type = (MonoTypeEnum)t;
        }
 
-       if (MONO_CLASS_IS_INTERFACE (class))
-               class->interface_id = mono_get_unique_iid (class);
+       if (MONO_CLASS_IS_INTERFACE (klass))
+               klass->interface_id = mono_get_unique_iid (klass);
 
 }
 
@@ -5508,16 +5556,16 @@ mono_class_setup_mono_type (MonoClass *class)
  * lacks the types that COM depends on (e.g. Variant on Silverlight).
  */
 static void
-init_com_from_comimport (MonoClass *class)
+init_com_from_comimport (MonoClass *klass)
 {
        /* we don't always allow COM initialization under the CoreCLR (e.g. Moonlight does not require it) */
        if (mono_security_core_clr_enabled ()) {
                /* but some other CoreCLR user could requires it for their platform (i.e. trusted) code */
-               if (!mono_security_core_clr_determine_platform_image (class->image)) {
+               if (!mono_security_core_clr_determine_platform_image (klass->image)) {
                        /* but it can not be made available for application (i.e. user code) since all COM calls
                         * are considered native calls. In this case we fail with a TypeLoadException (just like
                         * Silverlight 2 does */
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                        return;
                }
        }
@@ -5530,30 +5578,30 @@ init_com_from_comimport (MonoClass *class)
  * LOCKING: this assumes the loader lock is held
  */
 void
-mono_class_setup_parent (MonoClass *class, MonoClass *parent)
+mono_class_setup_parent (MonoClass *klass, MonoClass *parent)
 {
        gboolean system_namespace;
-       gboolean is_corlib = mono_is_corlib_image (class->image);
+       gboolean is_corlib = mono_is_corlib_image (klass->image);
 
-       system_namespace = !strcmp (class->name_space, "System") && is_corlib;
+       system_namespace = !strcmp (klass->name_space, "System") && is_corlib;
 
        /* if root of the hierarchy */
-       if (system_namespace && !strcmp (class->name, "Object")) {
-               class->parent = NULL;
-               class->instance_size = sizeof (MonoObject);
+       if (system_namespace && !strcmp (klass->name, "Object")) {
+               klass->parent = NULL;
+               klass->instance_size = sizeof (MonoObject);
                return;
        }
-       if (!strcmp (class->name, "<Module>")) {
-               class->parent = NULL;
-               class->instance_size = 0;
+       if (!strcmp (klass->name, "<Module>")) {
+               klass->parent = NULL;
+               klass->instance_size = 0;
                return;
        }
 
-       if (!MONO_CLASS_IS_INTERFACE (class)) {
+       if (!MONO_CLASS_IS_INTERFACE (klass)) {
                /* Imported COM Objects always derive from __ComObject. */
 #ifndef DISABLE_COM
-               if (MONO_CLASS_IS_IMPORT (class)) {
-                       init_com_from_comimport (class);
+               if (MONO_CLASS_IS_IMPORT (klass)) {
+                       init_com_from_comimport (klass);
                        if (parent == mono_defaults.object_class)
                                parent = mono_class_get_com_object_class ();
                }
@@ -5561,10 +5609,10 @@ mono_class_setup_parent (MonoClass *class, MonoClass *parent)
                if (!parent) {
                        /* set the parent to something useful and safe, but mark the type as broken */
                        parent = mono_defaults.object_class;
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                }
 
-               class->parent = parent;
+               klass->parent = parent;
 
                if (parent->generic_class && !parent->name) {
                        /*
@@ -5576,41 +5624,41 @@ mono_class_setup_parent (MonoClass *class, MonoClass *parent)
                }
 
 #ifndef DISABLE_REMOTING
-               class->marshalbyref = parent->marshalbyref;
-               class->contextbound  = parent->contextbound;
+               klass->marshalbyref = parent->marshalbyref;
+               klass->contextbound  = parent->contextbound;
 #endif
 
-               class->delegate  = parent->delegate;
+               klass->delegate  = parent->delegate;
 
-               if (MONO_CLASS_IS_IMPORT (class) || mono_class_is_com_object (parent))
-                       mono_class_set_is_com_object (class);
+               if (MONO_CLASS_IS_IMPORT (klass) || mono_class_is_com_object (parent))
+                       mono_class_set_is_com_object (klass);
                
                if (system_namespace) {
 #ifndef DISABLE_REMOTING
-                       if (*class->name == 'M' && !strcmp (class->name, "MarshalByRefObject"))
-                               class->marshalbyref = 1;
+                       if (klass->name [0] == 'M' && !strcmp (klass->name, "MarshalByRefObject"))
+                               klass->marshalbyref = 1;
 
-                       if (*class->name == 'C' && !strcmp (class->name, "ContextBoundObject")) 
-                               class->contextbound  = 1;
+                       if (klass->name [0] == 'C' && !strcmp (klass->name, "ContextBoundObject")) 
+                               klass->contextbound  = 1;
 #endif
-                       if (*class->name == 'D' && !strcmp (class->name, "Delegate")) 
-                               class->delegate  = 1;
+                       if (klass->name [0] == 'D' && !strcmp (klass->name, "Delegate")) 
+                               klass->delegate  = 1;
                }
 
-               if (class->parent->enumtype || (mono_is_corlib_image (class->parent->image) && (strcmp (class->parent->name, "ValueType") == 0) && 
-                                               (strcmp (class->parent->name_space, "System") == 0)))
-                       class->valuetype = 1;
-               if (mono_is_corlib_image (class->parent->image) && ((strcmp (class->parent->name, "Enum") == 0) && (strcmp (class->parent->name_space, "System") == 0))) {
-                       class->valuetype = class->enumtype = 1;
+               if (klass->parent->enumtype || (mono_is_corlib_image (klass->parent->image) && (strcmp (klass->parent->name, "ValueType") == 0) && 
+                                               (strcmp (klass->parent->name_space, "System") == 0)))
+                       klass->valuetype = 1;
+               if (mono_is_corlib_image (klass->parent->image) && ((strcmp (klass->parent->name, "Enum") == 0) && (strcmp (klass->parent->name_space, "System") == 0))) {
+                       klass->valuetype = klass->enumtype = 1;
                }
-               /*class->enumtype = class->parent->enumtype; */
+               /*klass->enumtype = klass->parent->enumtype; */
        } else {
                /* initialize com types if COM interfaces are present */
 #ifndef DISABLE_COM
-               if (MONO_CLASS_IS_IMPORT (class))
-                       init_com_from_comimport (class);
+               if (MONO_CLASS_IS_IMPORT (klass))
+                       init_com_from_comimport (klass);
 #endif
-               class->parent = NULL;
+               klass->parent = NULL;
        }
 
 }
@@ -5629,33 +5677,36 @@ mono_class_setup_parent (MonoClass *class, MonoClass *parent)
  * LOCKING: This function is atomic, in case of contention we waste memory.
  */
 void
-mono_class_setup_supertypes (MonoClass *class)
+mono_class_setup_supertypes (MonoClass *klass)
 {
        int ms;
        MonoClass **supertypes;
 
-       mono_atomic_load_acquire (supertypes, void*, &class->supertypes);
+       mono_atomic_load_acquire (supertypes, MonoClass **, &klass->supertypes);
        if (supertypes)
                return;
 
-       if (class->parent && !class->parent->supertypes)
-               mono_class_setup_supertypes (class->parent);
-       if (class->parent)
-               class->idepth = class->parent->idepth + 1;
+       if (klass->parent && !klass->parent->supertypes)
+               mono_class_setup_supertypes (klass->parent);
+       if (klass->parent)
+               klass->idepth = klass->parent->idepth + 1;
        else
-               class->idepth = 1;
+               klass->idepth = 1;
 
-       ms = MAX (MONO_DEFAULT_SUPERTABLE_SIZE, class->idepth);
-       supertypes = mono_class_alloc0 (class, sizeof (MonoClass *) * ms);
+       ms = MAX (MONO_DEFAULT_SUPERTABLE_SIZE, klass->idepth);
+       supertypes = (MonoClass **)mono_class_alloc0 (klass, sizeof (MonoClass *) * ms);
 
-       if (class->parent) {
-               supertypes [class->idepth - 1] = class;
-               memcpy (supertypes, class->parent->supertypes, class->parent->idepth * sizeof (gpointer));
+       if (klass->parent) {
+               CHECKED_METADATA_WRITE_PTR ( supertypes [klass->idepth - 1] , klass );
+
+               int supertype_idx;
+               for (supertype_idx = 0; supertype_idx < klass->parent->idepth; supertype_idx++)
+                       CHECKED_METADATA_WRITE_PTR ( supertypes [supertype_idx] , klass->parent->supertypes [supertype_idx] );
        } else {
-               supertypes [0] = class;
+               CHECKED_METADATA_WRITE_PTR ( supertypes [0] , klass );
        }
 
-       mono_atomic_store_release (&class->supertypes, supertypes);
+       CHECKED_METADATA_WRITE_PTR_ATOMIC ( klass->supertypes , supertypes );
 }
 
 static gboolean
@@ -5674,25 +5725,25 @@ fix_gclass_incomplete_instantiation (MonoClass *gclass, void *user_data)
 }
 
 static void
-mono_class_set_failure_and_error (MonoClass *class, MonoError *error, const char *msg)
+mono_class_set_failure_and_error (MonoClass *klass, MonoError *error, const char *msg)
 {
-       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup (msg));
-       mono_error_set_type_load_class (error, class, msg);
+       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup (msg));
+       mono_error_set_type_load_class (error, klass, msg);
 }
 
 static void
-mono_class_set_failure_from_loader_error (MonoClass *class, MonoError *error, char *msg)
+mono_class_set_failure_from_loader_error (MonoClass *klass, MonoError *error, char *msg)
 {
        MonoLoaderError *lerror = mono_loader_get_last_error ();
 
        if (lerror) {
-               set_failure_from_loader_error (class, lerror);
+               set_failure_from_loader_error (klass, lerror);
                mono_error_set_from_loader_error (error);
                if (msg)
                        g_free (msg);
        } else {
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, msg);
-               mono_error_set_type_load_class (error, class, msg);
+               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, msg);
+               mono_error_set_type_load_class (error, klass, msg);
        }
 }
 
@@ -5711,7 +5762,7 @@ static MonoClass *
 mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError *error)
 {
        MonoTableInfo *tt = &image->tables [MONO_TABLE_TYPEDEF];
-       MonoClass *class, *parent = NULL;
+       MonoClass *klass, *parent = NULL;
        guint32 cols [MONO_TYPEDEF_SIZE];
        guint32 cols_next [MONO_TYPEDEF_SIZE];
        guint tidx = mono_metadata_token_index (type_token);
@@ -5732,10 +5783,10 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError
 
        mono_loader_lock ();
 
-       if ((class = mono_internal_hash_table_lookup (&image->class_cache, GUINT_TO_POINTER (type_token)))) {
+       if ((klass = (MonoClass *)mono_internal_hash_table_lookup (&image->class_cache, GUINT_TO_POINTER (type_token)))) {
                mono_loader_unlock ();
                mono_loader_assert_no_error ();
-               return class;
+               return klass;
        }
 
        mono_metadata_decode_row (tt, tidx - 1, cols, MONO_TYPEDEF_SIZE);
@@ -5743,32 +5794,33 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError
        name = mono_metadata_string_heap (image, cols [MONO_TYPEDEF_NAME]);
        nspace = mono_metadata_string_heap (image, cols [MONO_TYPEDEF_NAMESPACE]);
 
-       class = mono_image_alloc0 (image, sizeof (MonoClass));
+       klass = (MonoClass *)mono_image_alloc0 (image, sizeof (MonoClass));
 
-       class->name = name;
-       class->name_space = nspace;
+       klass->name = name;
+       klass->name_space = nspace;
 
-       mono_profiler_class_event (class, MONO_PROFILE_START_LOAD);
+       mono_profiler_class_event (klass, MONO_PROFILE_START_LOAD);
 
-       class->image = image;
-       class->type_token = type_token;
-       class->flags = cols [MONO_TYPEDEF_FLAGS];
+       klass->image = image;
+       klass->type_token = type_token;
+       klass->flags = cols [MONO_TYPEDEF_FLAGS];
 
-       mono_internal_hash_table_insert (&image->class_cache, GUINT_TO_POINTER (type_token), class);
+       mono_internal_hash_table_insert (&image->class_cache, GUINT_TO_POINTER (type_token), klass);
 
        classes_size += sizeof (MonoClass);
 
        /*
         * Check whether we're a generic type definition.
         */
-       class->generic_container = mono_metadata_load_generic_params (image, class->type_token, NULL);
-       if (class->generic_container) {
-               class->is_generic = 1;
-               class->generic_container->owner.klass = class;
-               context = &class->generic_container->context;
+       klass->generic_container = mono_metadata_load_generic_params (image, klass->type_token, NULL);
+       if (klass->generic_container) {
+               klass->is_generic = 1;
+               klass->generic_container->owner.klass = klass;
+               klass->generic_container->is_anonymous = FALSE; // Owner class is now known, container is no longer anonymous
+               context = &klass->generic_container->context;
        }
 
-       if (class->generic_container)
+       if (klass->generic_container)
                enable_gclass_recording ();
 
        if (cols [MONO_TYPEDEF_EXTENDS]) {
@@ -5777,80 +5829,80 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError
 
                if (mono_metadata_token_table (parent_token) == MONO_TABLE_TYPESPEC) {
                        /*WARNING: this must satisfy mono_metadata_type_hash*/
-                       class->this_arg.byref = 1;
-                       class->this_arg.data.klass = class;
-                       class->this_arg.type = MONO_TYPE_CLASS;
-                       class->byval_arg.data.klass = class;
-                       class->byval_arg.type = MONO_TYPE_CLASS;
+                       klass->this_arg.byref = 1;
+                       klass->this_arg.data.klass = klass;
+                       klass->this_arg.type = MONO_TYPE_CLASS;
+                       klass->byval_arg.data.klass = klass;
+                       klass->byval_arg.type = MONO_TYPE_CLASS;
                }
                parent = mono_class_get_checked (image, parent_token, error);
                if (parent && context) /* Always inflate */
                        parent = mono_class_inflate_generic_class_checked (parent, context, error);
 
                if (parent == NULL) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup (mono_error_get_message (error)));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup (mono_error_get_message (error)));
                        goto parent_failure;
                }
 
                for (tmp = parent; tmp; tmp = tmp->parent) {
-                       if (tmp == class) {
-                               mono_class_set_failure_and_error (class, error, "Cycle found while resolving parent");
+                       if (tmp == klass) {
+                               mono_class_set_failure_and_error (klass, error, "Cycle found while resolving parent");
                                goto parent_failure;
                        }
-                       if (class->generic_container && tmp->generic_class && tmp->generic_class->container_class == class) {
-                               mono_class_set_failure_and_error (class, error, "Parent extends generic instance of this type");
+                       if (klass->generic_container && tmp->generic_class && tmp->generic_class->container_class == klass) {
+                               mono_class_set_failure_and_error (klass, error, "Parent extends generic instance of this type");
                                goto parent_failure;
                        }
                }
        }
 
-       mono_class_setup_parent (class, parent);
+       mono_class_setup_parent (klass, parent);
 
        /* uses ->valuetype, which is initialized by mono_class_setup_parent above */
-       mono_class_setup_mono_type (class);
+       mono_class_setup_mono_type (klass);
 
-       if (class->generic_container)
-               disable_gclass_recording (fix_gclass_incomplete_instantiation, class);
+       if (klass->generic_container)
+               disable_gclass_recording (fix_gclass_incomplete_instantiation, klass);
 
        /* 
-        * This might access class->byval_arg for recursion generated by generic constraints,
+        * This might access klass->byval_arg for recursion generated by generic constraints,
         * so it has to come after setup_mono_type ().
         */
        if ((nesting_tokeen = mono_metadata_nested_in_typedef (image, type_token))) {
-               class->nested_in = mono_class_create_from_typedef (image, nesting_tokeen, error);
+               klass->nested_in = mono_class_create_from_typedef (image, nesting_tokeen, error);
                if (!mono_error_ok (error)) {
                        /*FIXME implement a mono_class_set_failure_from_mono_error */
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup (mono_error_get_message (error)));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup (mono_error_get_message (error)));
                        mono_loader_unlock ();
-                       mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+                       mono_profiler_class_loaded (klass, MONO_PROFILE_FAILED);
                        mono_loader_assert_no_error ();
                        return NULL;
                }
        }
 
-       if ((class->flags & TYPE_ATTRIBUTE_STRING_FORMAT_MASK) == TYPE_ATTRIBUTE_UNICODE_CLASS)
-               class->unicode = 1;
+       if ((klass->flags & TYPE_ATTRIBUTE_STRING_FORMAT_MASK) == TYPE_ATTRIBUTE_UNICODE_CLASS)
+               klass->unicode = 1;
 
 #ifdef HOST_WIN32
-       if ((class->flags & TYPE_ATTRIBUTE_STRING_FORMAT_MASK) == TYPE_ATTRIBUTE_AUTO_CLASS)
-               class->unicode = 1;
+       if ((klass->flags & TYPE_ATTRIBUTE_STRING_FORMAT_MASK) == TYPE_ATTRIBUTE_AUTO_CLASS)
+               klass->unicode = 1;
 #endif
 
-       class->cast_class = class->element_class = class;
+       klass->cast_class = klass->element_class = klass;
 
-       if (!class->enumtype) {
+       if (!klass->enumtype) {
                if (!mono_metadata_interfaces_from_typedef_full (
                            image, type_token, &interfaces, &icount, FALSE, context, error)){
 
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup (mono_error_get_message (error)));
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup (mono_error_get_message (error)));
                        mono_loader_unlock ();
-                       mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+                       mono_profiler_class_loaded (klass, MONO_PROFILE_FAILED);
                        return NULL;
                }
 
-               class->interfaces = interfaces;
-               class->interface_count = icount;
-               class->interfaces_inited = 1;
+               klass->interfaces = interfaces;
+               klass->interface_count = icount;
+               klass->interfaces_inited = 1;
        }
 
        /*g_print ("Load class %s\n", name);*/
@@ -5858,8 +5910,8 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError
        /*
         * Compute the field and method lists
         */
-       class->field.first  = cols [MONO_TYPEDEF_FIELD_LIST] - 1;
-       class->method.first = cols [MONO_TYPEDEF_METHOD_LIST] - 1;
+       klass->field.first  = cols [MONO_TYPEDEF_FIELD_LIST] - 1;
+       klass->method.first = cols [MONO_TYPEDEF_METHOD_LIST] - 1;
 
        if (tt->rows > tidx){           
                mono_metadata_decode_row (tt, tidx, cols_next, MONO_TYPEDEF_SIZE);
@@ -5872,33 +5924,33 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError
 
        if (cols [MONO_TYPEDEF_FIELD_LIST] && 
            cols [MONO_TYPEDEF_FIELD_LIST] <= image->tables [MONO_TABLE_FIELD].rows)
-               class->field.count = field_last - class->field.first;
+               klass->field.count = field_last - klass->field.first;
        else
-               class->field.count = 0;
+               klass->field.count = 0;
 
        if (cols [MONO_TYPEDEF_METHOD_LIST] <= image->tables [MONO_TABLE_METHOD].rows)
-               class->method.count = method_last - class->method.first;
+               klass->method.count = method_last - klass->method.first;
        else
-               class->method.count = 0;
+               klass->method.count = 0;
 
        /* reserve space to store vector pointer in arrays */
        if (mono_is_corlib_image (image) && !strcmp (nspace, "System") && !strcmp (name, "Array")) {
-               class->instance_size += 2 * sizeof (gpointer);
-               g_assert (class->field.count == 0);
+               klass->instance_size += 2 * sizeof (gpointer);
+               g_assert (klass->field.count == 0);
        }
 
-       if (class->enumtype) {
-               MonoType *enum_basetype = mono_class_find_enum_basetype (class, error);
+       if (klass->enumtype) {
+               MonoType *enum_basetype = mono_class_find_enum_basetype (klass, error);
                if (!enum_basetype) {
                        /*set it to a default value as the whole runtime can't handle this to be null*/
-                       class->cast_class = class->element_class = mono_defaults.int32_class;
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup (mono_error_get_message (error)));
+                       klass->cast_class = klass->element_class = mono_defaults.int32_class;
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup (mono_error_get_message (error)));
                        mono_loader_unlock ();
-                       mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+                       mono_profiler_class_loaded (klass, MONO_PROFILE_FAILED);
                        mono_loader_assert_no_error ();
                        return NULL;
                }
-               class->cast_class = class->element_class = mono_class_from_mono_type (enum_basetype);
+               klass->cast_class = klass->element_class = mono_class_from_mono_type (enum_basetype);
        }
 
        /*
@@ -5906,35 +5958,35 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError
         * We must do this after the class has been constructed to make certain recursive scenarios
         * work.
         */
-       if (class->generic_container && !mono_metadata_load_generic_param_constraints_checked (image, type_token, class->generic_container, error)) {
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Could not load generic parameter constrains due to %s", mono_error_get_message (error)));
+       if (klass->generic_container && !mono_metadata_load_generic_param_constraints_checked (image, type_token, klass->generic_container, error)) {
+               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Could not load generic parameter constrains due to %s", mono_error_get_message (error)));
                mono_loader_unlock ();
-               mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+               mono_profiler_class_loaded (klass, MONO_PROFILE_FAILED);
                mono_loader_assert_no_error ();
                return NULL;
        }
 
-       if (class->image->assembly_name && !strcmp (class->image->assembly_name, "Mono.Simd") && !strcmp (nspace, "Mono.Simd")) {
+       if (klass->image->assembly_name && !strcmp (klass->image->assembly_name, "Mono.Simd") && !strcmp (nspace, "Mono.Simd")) {
                if (!strncmp (name, "Vector", 6))
-                       class->simd_type = !strcmp (name + 6, "2d") || !strcmp (name + 6, "2ul") || !strcmp (name + 6, "2l") || !strcmp (name + 6, "4f") || !strcmp (name + 6, "4ui") || !strcmp (name + 6, "4i") || !strcmp (name + 6, "8s") || !strcmp (name + 6, "8us") || !strcmp (name + 6, "16b") || !strcmp (name + 6, "16sb");
+                       klass->simd_type = !strcmp (name + 6, "2d") || !strcmp (name + 6, "2ul") || !strcmp (name + 6, "2l") || !strcmp (name + 6, "4f") || !strcmp (name + 6, "4ui") || !strcmp (name + 6, "4i") || !strcmp (name + 6, "8s") || !strcmp (name + 6, "8us") || !strcmp (name + 6, "16b") || !strcmp (name + 6, "16sb");
        }
 
        mono_loader_unlock ();
 
-       mono_profiler_class_loaded (class, MONO_PROFILE_OK);
+       mono_profiler_class_loaded (klass, MONO_PROFILE_OK);
        mono_loader_assert_no_error ();
 
-       return class;
+       return klass;
 
 parent_failure:
-       mono_class_setup_mono_type (class);
+       mono_class_setup_mono_type (klass);
        mono_loader_unlock ();
-       mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+       mono_profiler_class_loaded (klass, MONO_PROFILE_FAILED);
        mono_loader_assert_no_error ();
        return NULL;
 }
 
-/** is klass Nullable<T>? */
+/** Is klass a Nullable<T> ginst? */
 gboolean
 mono_class_is_nullable (MonoClass *klass)
 {
@@ -5994,7 +6046,7 @@ mono_generic_class_get_class (MonoGenericClass *gclass)
                return gclass->cached_class;
        }
 
-       klass = mono_image_set_alloc0 (gclass->owner, sizeof (MonoClass));
+       klass = (MonoClass *)mono_image_set_alloc0 (gclass->owner, sizeof (MonoClass));
 
        gklass = gclass->container_class;
 
@@ -6019,7 +6071,8 @@ mono_generic_class_get_class (MonoGenericClass *gclass)
        klass->is_inflated = 1;
        klass->generic_class = gclass;
 
-       klass->this_arg.type = klass->byval_arg.type = MONO_TYPE_GENERICINST;
+       klass->byval_arg.type = MONO_TYPE_GENERICINST;
+       klass->this_arg.type = klass->byval_arg.type;
        klass->this_arg.data.generic_class = klass->byval_arg.data.generic_class = gclass;
        klass->this_arg.byref = TRUE;
        klass->enumtype = gklass->enumtype;
@@ -6074,42 +6127,83 @@ mono_generic_class_get_class (MonoGenericClass *gclass)
        return klass;
 }
 
+static MonoImage *
+get_image_for_container (MonoGenericContainer *container)
+{
+       MonoImage *result;
+       if (container->is_anonymous) {
+               result = container->owner.image;
+       } else {
+               MonoClass *klass;
+               if (container->is_method) {
+                       MonoMethod *method = container->owner.method;
+                       g_assert_checked (method);
+                       klass = method->klass;
+               } else {
+                       klass = container->owner.klass;
+               }
+               g_assert_checked (klass);
+               result = klass->image;
+       }
+       g_assert (result);
+       return result;
+}
+
+MonoImage *
+get_image_for_generic_param (MonoGenericParam *param)
+{
+       MonoGenericContainer *container = mono_generic_param_owner (param);
+       g_assert_checked (container);
+       return get_image_for_container (container);
+}
+
+// Make a string in the designated image consisting of a single integer.
+#define INT_STRING_SIZE 16
+char *
+make_generic_name_string (MonoImage *image, int num)
+{
+       char *name = (char *)mono_image_alloc0 (image, INT_STRING_SIZE);
+       g_snprintf (name, INT_STRING_SIZE, "%d", num);
+       return name;
+}
+
+// This is called by mono_class_from_generic_parameter_internal when a new class must be created.
+// pinfo is derived from param by the caller for us.
 static MonoClass*
-make_generic_param_class (MonoGenericParam *param, MonoImage *image, gboolean is_mvar, MonoGenericParamInfo *pinfo)
+make_generic_param_class (MonoGenericParam *param, MonoGenericParamInfo *pinfo)
 {
        MonoClass *klass, **ptr;
        int count, pos, i;
        MonoGenericContainer *container = mono_generic_param_owner (param);
+       g_assert_checked (container);
 
-       if (!image)
-               /* FIXME: */
-               image = mono_defaults.corlib;
+       MonoImage *image = get_image_for_container (container);
+       gboolean is_mvar = container->is_method;
+       gboolean is_anonymous = container->is_anonymous;
 
-       klass = mono_image_alloc0 (image, sizeof (MonoClass));
+       klass = (MonoClass *)mono_image_alloc0 (image, sizeof (MonoClass));
        classes_size += sizeof (MonoClass);
 
        if (pinfo) {
-               klass->name = pinfo->name;
+               CHECKED_METADATA_WRITE_PTR_EXEMPT ( klass->name , pinfo->name );
        } else {
                int n = mono_generic_param_num (param);
-               klass->name = mono_image_alloc0 (image, 16);
-               sprintf ((char*)klass->name, "%d", n);
+               CHECKED_METADATA_WRITE_PTR_LOCAL ( klass->name , make_generic_name_string (image, n) );
        }
 
-       if (container) {
-               if (is_mvar) {
-                       MonoMethod *omethod = container->owner.method;
-                       klass->name_space = (omethod && omethod->klass) ? omethod->klass->name_space : "";
-               } else {
-                       MonoClass *oklass = container->owner.klass;
-                       klass->name_space = oklass ? oklass->name_space : "";
-               }
+       if (is_anonymous) {
+               CHECKED_METADATA_WRITE_PTR_EXEMPT ( klass->name_space ,  "" );
+       } else if (is_mvar) {
+               MonoMethod *omethod = container->owner.method;
+               CHECKED_METADATA_WRITE_PTR_EXEMPT ( klass->name_space , (omethod && omethod->klass) ? omethod->klass->name_space : "" );
        } else {
-               klass->name_space = "";
+               MonoClass *oklass = container->owner.klass;
+               CHECKED_METADATA_WRITE_PTR_EXEMPT ( klass->name_space , oklass ? oklass->name_space : "" );
        }
 
        mono_profiler_class_event (klass, MONO_PROFILE_START_LOAD);
 
+       // Count non-NULL items in pinfo->constraints
        count = 0;
        if (pinfo)
                for (ptr = pinfo->constraints; ptr && *ptr; ptr++, count++)
@@ -6117,30 +6211,33 @@ make_generic_param_class (MonoGenericParam *param, MonoImage *image, gboolean is
 
        pos = 0;
        if ((count > 0) && !MONO_CLASS_IS_INTERFACE (pinfo->constraints [0])) {
-               klass->parent = pinfo->constraints [0];
+               CHECKED_METADATA_WRITE_PTR ( klass->parent , pinfo->constraints [0] );
                pos++;
-       } else if (pinfo && pinfo->flags & GENERIC_PARAMETER_ATTRIBUTE_VALUE_TYPE_CONSTRAINT)
-               klass->parent = mono_class_from_name (mono_defaults.corlib, "System", "ValueType");
-       else
-               klass->parent = mono_defaults.object_class;
-
+       } else if (pinfo && pinfo->flags & GENERIC_PARAMETER_ATTRIBUTE_VALUE_TYPE_CONSTRAINT) {
+               CHECKED_METADATA_WRITE_PTR ( klass->parent , mono_class_from_name (mono_defaults.corlib, "System", "ValueType") );
+       } else {
+               CHECKED_METADATA_WRITE_PTR ( klass->parent , mono_defaults.object_class );
+       }
 
        if (count - pos > 0) {
                klass->interface_count = count - pos;
-               klass->interfaces = mono_image_alloc0 (image, sizeof (MonoClass *) * (count - pos));
+               CHECKED_METADATA_WRITE_PTR_LOCAL ( klass->interfaces , (MonoClass **)mono_image_alloc0 (image, sizeof (MonoClass *) * (count - pos)) );
                klass->interfaces_inited = TRUE;
                for (i = pos; i < count; i++)
-                       klass->interfaces [i - pos] = pinfo->constraints [i];
+                       CHECKED_METADATA_WRITE_PTR ( klass->interfaces [i - pos] , pinfo->constraints [i] );
        }
 
-       klass->image = image;
+       CHECKED_METADATA_WRITE_PTR_EXEMPT ( klass->image , image );
 
        klass->inited = TRUE;
-       klass->cast_class = klass->element_class = klass;
+       CHECKED_METADATA_WRITE_PTR_LOCAL ( klass->cast_class ,    klass );
+       CHECKED_METADATA_WRITE_PTR_LOCAL ( klass->element_class , klass );
        klass->flags = TYPE_ATTRIBUTE_PUBLIC;
 
-       klass->this_arg.type = klass->byval_arg.type = is_mvar ? MONO_TYPE_MVAR : MONO_TYPE_VAR;
-       klass->this_arg.data.generic_param = klass->byval_arg.data.generic_param = param;
+       klass->byval_arg.type = is_mvar ? MONO_TYPE_MVAR : MONO_TYPE_VAR;
+       klass->this_arg.type = klass->byval_arg.type;
+       CHECKED_METADATA_WRITE_PTR ( klass->this_arg.data.generic_param ,  param );
+       CHECKED_METADATA_WRITE_PTR ( klass->byval_arg.data.generic_param , param );
        klass->this_arg.byref = TRUE;
 
        /* We don't use type_token for VAR since only classes can use it (not arrays, pointer, VARs, etc) */
@@ -6173,24 +6270,31 @@ make_generic_param_class (MonoGenericParam *param, MonoImage *image, gboolean is
 #define FAST_CACHE_SIZE 16
 
 /*
+ * get_anon_gparam_class and set_anon_gparam_class are helpers for mono_class_from_generic_parameter_internal.
+ * The latter will sometimes create MonoClasses for anonymous generic params. To prevent this being wasteful,
+ * we cache the MonoClasses.
+ * FIXME: It would be better to instead cache anonymous MonoGenericParams, and allow anonymous params to point directly to classes using the pklass field.
  * LOCKING: Takes the image lock depending on @take_lock.
  */
 static MonoClass *
-get_anon_gparam_class (MonoGenericParam *param, gboolean is_mvar, gboolean take_lock)
+get_anon_gparam_class (MonoGenericParam *param, gboolean take_lock)
 {
        int n = mono_generic_param_num (param);
-       MonoImage *image = param->image;
+       MonoImage *image = get_image_for_generic_param (param);
+       gboolean is_mvar = mono_generic_param_owner (param)->is_method;
        MonoClass *klass = NULL;
        GHashTable *ht;
 
        g_assert (image);
 
+       // For params with a small num and no constraints, we use a "fast" cache which does simple num lookup in an array.
+       // For high numbers or constraints we have to use pointer hashes.
        if (param->gshared_constraint) {
                ht = is_mvar ? image->mvar_cache_constrained : image->var_cache_constrained;
                if (ht) {
                        if (take_lock)
                                mono_image_lock (image);
-                       klass = g_hash_table_lookup (ht, param);
+                       klass = (MonoClass *)g_hash_table_lookup (ht, param);
                        if (take_lock)
                                mono_image_unlock (image);
                }
@@ -6207,7 +6311,7 @@ get_anon_gparam_class (MonoGenericParam *param, gboolean is_mvar, gboolean take_
                if (ht) {
                        if (take_lock)
                                mono_image_lock (image);
-                       klass = g_hash_table_lookup (ht, GINT_TO_POINTER (n));
+                       klass = (MonoClass *)g_hash_table_lookup (ht, GINT_TO_POINTER (n));
                        if (take_lock)
                                mono_image_unlock (image);
                }
@@ -6219,10 +6323,11 @@ get_anon_gparam_class (MonoGenericParam *param, gboolean is_mvar, gboolean take_
  * LOCKING: Image lock (param->image) must be held
  */
 static void
-set_anon_gparam_class (MonoGenericParam *param, gboolean is_mvar, MonoClass *klass)
+set_anon_gparam_class (MonoGenericParam *param, MonoClass *klass)
 {
        int n = mono_generic_param_num (param);
-       MonoImage *image = param->image;
+       MonoImage *image = get_image_for_generic_param (param);
+       gboolean is_mvar = mono_generic_param_owner (param)->is_method;
 
        g_assert (image);
 
@@ -6241,11 +6346,11 @@ set_anon_gparam_class (MonoGenericParam *param, gboolean is_mvar, MonoClass *kla
                if (is_mvar) {
                        /* Requires locking to avoid droping an already published class */
                        if (!image->mvar_cache_fast)
-                               image->mvar_cache_fast = mono_image_alloc0 (image, sizeof (MonoClass*) * FAST_CACHE_SIZE);
+                               image->mvar_cache_fast = (MonoClass **)mono_image_alloc0 (image, sizeof (MonoClass*) * FAST_CACHE_SIZE);
                        image->mvar_cache_fast [n] = klass;
                } else {
                        if (!image->var_cache_fast)
-                               image->var_cache_fast = mono_image_alloc0 (image, sizeof (MonoClass*) * FAST_CACHE_SIZE);
+                               image->var_cache_fast = (MonoClass **)mono_image_alloc0 (image, sizeof (MonoClass*) * FAST_CACHE_SIZE);
                        image->var_cache_fast [n] = klass;
                }
        } else {
@@ -6269,66 +6374,71 @@ set_anon_gparam_class (MonoGenericParam *param, gboolean is_mvar, MonoClass *kla
  * LOCKING: Acquires the image lock (@image).
  */
 MonoClass *
-mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *image, gboolean is_mvar)
+mono_class_from_generic_parameter_internal (MonoGenericParam *param)
 {
-       MonoGenericContainer *container = mono_generic_param_owner (param);
-       MonoGenericParamInfo *pinfo = NULL;
+       MonoImage *image = get_image_for_generic_param (param);
+       MonoGenericParamInfo *pinfo = mono_generic_param_info (param);
        MonoClass *klass, *klass2;
 
-       if (container) {
-               pinfo = mono_generic_param_info (param);
+       // If a klass already exists for this object and is cached, return it.
+       if (pinfo) // Non-anonymous
                klass = pinfo->pklass;
-       } else {
-               image = NULL;
-               klass = get_anon_gparam_class (param, is_mvar, TRUE);
-       }
+       else     // Anonymous
+               klass = get_anon_gparam_class (param, TRUE);
+
        if (klass)
                return klass;
 
-       if (!image && container) {
-               if (is_mvar) {
-                       MonoMethod *method = container->owner.method;
-                       image = (method && method->klass) ? method->klass->image : NULL;
-               } else {
-                       MonoClass *klass = container->owner.klass;
-                       // FIXME: 'klass' should not be null
-                       //        But, monodis creates GenericContainers without associating a owner to it
-                       image = klass ? klass->image : NULL;
-               }
-       }
-
-       klass = make_generic_param_class (param, image, is_mvar, pinfo);
+       // Create a new klass
+       klass = make_generic_param_class (param, pinfo);
 
+       // Now we need to cache the klass we created.
+       // But since we wait to grab the lock until after creating the klass, we need to check to make sure
+       // another thread did not get in and cache a klass ahead of us. In that case, return their klass
+       // and allow our newly-created klass object to just leak.
        mono_memory_barrier ();
 
-       if (!image) //FIXME is this only needed by monodis? Can't we fix monodis instead of having this hack?
-               image = mono_defaults.corlib;
-
        mono_image_lock (image);
-       if (container)
+
+    // Here "klass2" refers to the klass potentially created by the other thread.
+       if (pinfo) // Repeat check from above
                klass2 = pinfo->pklass;
        else
-               klass2 = get_anon_gparam_class (param, is_mvar, FALSE);
+               klass2 = get_anon_gparam_class (param, FALSE);
 
        if (klass2) {
                klass = klass2;
        } else {
-               if (container)
+               // Cache here
+               if (pinfo)
                        pinfo->pklass = klass;
                else
-                       set_anon_gparam_class (param, is_mvar, klass);
+                       set_anon_gparam_class (param, klass);
        }
        mono_image_unlock (image);
 
        /* FIXME: Should this go inside 'make_generic_param_klass'? */
        if (klass2)
-               mono_profiler_class_loaded (klass2, MONO_PROFILE_FAILED);
+               mono_profiler_class_loaded (klass2, MONO_PROFILE_FAILED); // Alert profiler about botched class create
        else
                mono_profiler_class_loaded (klass, MONO_PROFILE_OK);
 
        return klass;
 }
 
+/**
+ * mono_class_from_generic_parameter:
+ * @param: Parameter to find/construct a class for.
+ * @arg2: Is ignored.
+ * @arg3: Is ignored.
+ */
+MonoClass *
+mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *arg2 G_GNUC_UNUSED, gboolean arg3 G_GNUC_UNUSED)
+{
+       return mono_class_from_generic_parameter_internal (param);
+}
+
+
 MonoClass *
 mono_ptr_class_get (MonoType *type)
 {
@@ -6342,14 +6452,14 @@ mono_ptr_class_get (MonoType *type)
 
        mono_image_lock (image);
        if (image->ptr_cache) {
-               if ((result = g_hash_table_lookup (image->ptr_cache, el_class))) {
+               if ((result = (MonoClass *)g_hash_table_lookup (image->ptr_cache, el_class))) {
                        mono_image_unlock (image);
                        return result;
                }
        }
        mono_image_unlock (image);
        
-       result = mono_image_alloc0 (image, sizeof (MonoClass));
+       result = (MonoClass *)mono_image_alloc0 (image, sizeof (MonoClass));
 
        classes_size += sizeof (MonoClass);
 
@@ -6369,7 +6479,8 @@ mono_ptr_class_get (MonoType *type)
        result->cast_class = result->element_class = el_class;
        result->blittable = TRUE;
 
-       result->this_arg.type = result->byval_arg.type = MONO_TYPE_PTR;
+       result->byval_arg.type = MONO_TYPE_PTR;
+       result->this_arg.type = result->byval_arg.type;
        result->this_arg.data.type = result->byval_arg.data.type = &result->element_class->byval_arg;
        result->this_arg.byref = TRUE;
 
@@ -6378,7 +6489,7 @@ mono_ptr_class_get (MonoType *type)
        mono_image_lock (image);
        if (image->ptr_cache) {
                MonoClass *result2;
-               if ((result2 = g_hash_table_lookup (image->ptr_cache, el_class))) {
+               if ((result2 = (MonoClass *)g_hash_table_lookup (image->ptr_cache, el_class))) {
                        mono_image_unlock (image);
                        mono_profiler_class_loaded (result, MONO_PROFILE_FAILED);
                        return result2;
@@ -6407,7 +6518,7 @@ mono_fnptr_class_get (MonoMethodSignature *sig)
        if (!ptr_hash)
                ptr_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
        
-       if ((result = g_hash_table_lookup (ptr_hash, sig))) {
+       if ((result = (MonoClass *)g_hash_table_lookup (ptr_hash, sig))) {
                mono_loader_unlock ();
                return result;
        }
@@ -6427,7 +6538,8 @@ mono_fnptr_class_get (MonoMethodSignature *sig)
        result->cast_class = result->element_class = result;
        result->blittable = TRUE;
 
-       result->this_arg.type = result->byval_arg.type = MONO_TYPE_FNPTR;
+       result->byval_arg.type = MONO_TYPE_FNPTR;
+       result->this_arg.type = result->byval_arg.type;
        result->this_arg.data.method = result->byval_arg.data.method = sig;
        result->this_arg.byref = TRUE;
        result->blittable = TRUE;
@@ -6496,10 +6608,9 @@ mono_class_from_mono_type (MonoType *type)
                return type->data.klass;
        case MONO_TYPE_GENERICINST:
                return mono_generic_class_get_class (type->data.generic_class);
-       case MONO_TYPE_VAR:
-               return mono_class_from_generic_parameter (type->data.generic_param, NULL, FALSE);
        case MONO_TYPE_MVAR:
-               return mono_class_from_generic_parameter (type->data.generic_param, NULL, TRUE);
+       case MONO_TYPE_VAR:
+               return mono_class_from_generic_parameter_internal (type->data.generic_param);
        default:
                g_warning ("mono_class_from_mono_type: implement me 0x%02x\n", type->type);
                g_assert_not_reached ();
@@ -6573,7 +6684,7 @@ MonoClass *
 mono_bounded_array_class_get (MonoClass *eclass, guint32 rank, gboolean bounded)
 {
        MonoImage *image;
-       MonoClass *class;
+       MonoClass *klass;
        MonoClass *parent = NULL;
        GSList *list, *rootlist = NULL;
        int nsize;
@@ -6594,13 +6705,13 @@ mono_bounded_array_class_get (MonoClass *eclass, guint32 rank, gboolean bounded)
                 * from mono_class_from_mono_type (), mono_array_new (), 
                 * Array:CreateInstance (), etc, so use a separate cache + a separate lock.
                 */
-               mono_mutex_lock (&image->szarray_cache_lock);
+               mono_os_mutex_lock (&image->szarray_cache_lock);
                if (!image->szarray_cache)
                        image->szarray_cache = g_hash_table_new (mono_aligned_addr_hash, NULL);
-               class = g_hash_table_lookup (image->szarray_cache, eclass);
-               mono_mutex_unlock (&image->szarray_cache_lock);
-               if (class)
-                       return class;
+               klass = (MonoClass *)g_hash_table_lookup (image->szarray_cache, eclass);
+               mono_os_mutex_unlock (&image->szarray_cache_lock);
+               if (klass)
+                       return klass;
 
                mono_loader_lock ();
        } else {
@@ -6609,12 +6720,12 @@ mono_bounded_array_class_get (MonoClass *eclass, guint32 rank, gboolean bounded)
                if (!image->array_cache)
                        image->array_cache = g_hash_table_new (mono_aligned_addr_hash, NULL);
 
-               if ((rootlist = list = g_hash_table_lookup (image->array_cache, eclass))) {
+               if ((rootlist = list = (GSList *)g_hash_table_lookup (image->array_cache, eclass))) {
                        for (; list; list = list->next) {
-                               class = list->data;
-                               if ((class->rank == rank) && (class->byval_arg.type == (((rank > 1) || bounded) ? MONO_TYPE_ARRAY : MONO_TYPE_SZARRAY))) {
+                               klass = (MonoClass *)list->data;
+                               if ((klass->rank == rank) && (klass->byval_arg.type == (((rank > 1) || bounded) ? MONO_TYPE_ARRAY : MONO_TYPE_SZARRAY))) {
                                        mono_loader_unlock ();
-                                       return class;
+                                       return klass;
                                }
                        }
                }
@@ -6630,12 +6741,12 @@ mono_bounded_array_class_get (MonoClass *eclass, guint32 rank, gboolean bounded)
                        mono_class_init (parent);
        }
 
-       class = mono_image_alloc0 (image, sizeof (MonoClass));
+       klass = (MonoClass *)mono_image_alloc0 (image, sizeof (MonoClass));
 
-       class->image = image;
-       class->name_space = eclass->name_space;
+       klass->image = image;
+       klass->name_space = eclass->name_space;
        nsize = strlen (eclass->name);
-       name = g_malloc (nsize + 2 + rank + 1);
+       name = (char *)g_malloc (nsize + 2 + rank + 1);
        memcpy (name, eclass->name, nsize);
        name [nsize] = '[';
        if (rank > 1)
@@ -6644,117 +6755,117 @@ mono_bounded_array_class_get (MonoClass *eclass, guint32 rank, gboolean bounded)
                name [nsize + rank] = '*';
        name [nsize + rank + bounded] = ']';
        name [nsize + rank + bounded + 1] = 0;
-       class->name = mono_image_strdup (image, name);
+       klass->name = mono_image_strdup (image, name);
        g_free (name);
 
-       mono_profiler_class_event (class, MONO_PROFILE_START_LOAD);
+       mono_profiler_class_event (klass, MONO_PROFILE_START_LOAD);
 
        classes_size += sizeof (MonoClass);
 
-       class->type_token = 0;
+       klass->type_token = 0;
        /* all arrays are marked serializable and sealed, bug #42779 */
-       class->flags = TYPE_ATTRIBUTE_CLASS | TYPE_ATTRIBUTE_SERIALIZABLE | TYPE_ATTRIBUTE_SEALED | TYPE_ATTRIBUTE_PUBLIC;
-       class->parent = parent;
-       class->instance_size = mono_class_instance_size (class->parent);
+       klass->flags = TYPE_ATTRIBUTE_CLASS | TYPE_ATTRIBUTE_SERIALIZABLE | TYPE_ATTRIBUTE_SEALED | TYPE_ATTRIBUTE_PUBLIC;
+       klass->parent = parent;
+       klass->instance_size = mono_class_instance_size (klass->parent);
 
        if (eclass->byval_arg.type == MONO_TYPE_TYPEDBYREF || eclass->byval_arg.type == MONO_TYPE_VOID) {
                /*Arrays of those two types are invalid.*/
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
        } else if (eclass->enumtype && !mono_class_enum_basetype (eclass)) {
                if (!eclass->ref_info_handle || eclass->wastypebuilder) {
                        g_warning ("Only incomplete TypeBuilder objects are allowed to be an enum without base_type");
                        g_assert (eclass->ref_info_handle && !eclass->wastypebuilder);
                }
                /* element_size -1 is ok as this is not an instantitable type*/
-               class->sizes.element_size = -1;
+               klass->sizes.element_size = -1;
        } else
-               class->sizes.element_size = mono_class_array_element_size (eclass);
+               klass->sizes.element_size = mono_class_array_element_size (eclass);
 
-       mono_class_setup_supertypes (class);
+       mono_class_setup_supertypes (klass);
 
        if (eclass->generic_class)
                mono_class_init (eclass);
        if (!eclass->size_inited)
                mono_class_setup_fields (eclass);
        if (eclass->exception_type) /*FIXME we fail the array type, but we have to let other fields be set.*/
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
 
-       class->has_references = MONO_TYPE_IS_REFERENCE (&eclass->byval_arg) || eclass->has_references? TRUE: FALSE;
+       klass->has_references = MONO_TYPE_IS_REFERENCE (&eclass->byval_arg) || eclass->has_references? TRUE: FALSE;
 
-       class->rank = rank;
+       klass->rank = rank;
        
        if (eclass->enumtype)
-               class->cast_class = eclass->element_class;
+               klass->cast_class = eclass->element_class;
        else
-               class->cast_class = eclass;
+               klass->cast_class = eclass;
 
-       switch (class->cast_class->byval_arg.type) {
+       switch (klass->cast_class->byval_arg.type) {
        case MONO_TYPE_I1:
-               class->cast_class = mono_defaults.byte_class;
+               klass->cast_class = mono_defaults.byte_class;
                break;
        case MONO_TYPE_U2:
-               class->cast_class = mono_defaults.int16_class;
+               klass->cast_class = mono_defaults.int16_class;
                break;
        case MONO_TYPE_U4:
 #if SIZEOF_VOID_P == 4
        case MONO_TYPE_I:
        case MONO_TYPE_U:
 #endif
-               class->cast_class = mono_defaults.int32_class;
+               klass->cast_class = mono_defaults.int32_class;
                break;
        case MONO_TYPE_U8:
 #if SIZEOF_VOID_P == 8
        case MONO_TYPE_I:
        case MONO_TYPE_U:
 #endif
-               class->cast_class = mono_defaults.int64_class;
+               klass->cast_class = mono_defaults.int64_class;
                break;
        default:
                break;
        }
 
-       class->element_class = eclass;
+       klass->element_class = eclass;
 
        if ((rank > 1) || bounded) {
-               MonoArrayType *at = mono_image_alloc0 (image, sizeof (MonoArrayType));
-               class->byval_arg.type = MONO_TYPE_ARRAY;
-               class->byval_arg.data.array = at;
+               MonoArrayType *at = (MonoArrayType *)mono_image_alloc0 (image, sizeof (MonoArrayType));
+               klass->byval_arg.type = MONO_TYPE_ARRAY;
+               klass->byval_arg.data.array = at;
                at->eklass = eclass;
                at->rank = rank;
                /* FIXME: complete.... */
        } else {
-               class->byval_arg.type = MONO_TYPE_SZARRAY;
-               class->byval_arg.data.klass = eclass;
+               klass->byval_arg.type = MONO_TYPE_SZARRAY;
+               klass->byval_arg.data.klass = eclass;
        }
-       class->this_arg = class->byval_arg;
-       class->this_arg.byref = 1;
+       klass->this_arg = klass->byval_arg;
+       klass->this_arg.byref = 1;
        if (corlib_type) {
-               class->inited = 1;
+               klass->inited = 1;
        }
 
-       class->generic_container = eclass->generic_container;
+       klass->generic_container = eclass->generic_container;
 
        if (rank == 1 && !bounded) {
                MonoClass *prev_class;
 
-               mono_mutex_lock (&image->szarray_cache_lock);
-               prev_class = g_hash_table_lookup (image->szarray_cache, eclass);
+               mono_os_mutex_lock (&image->szarray_cache_lock);
+               prev_class = (MonoClass *)g_hash_table_lookup (image->szarray_cache, eclass);
                if (prev_class)
                        /* Someone got in before us */
-                       class = prev_class;
+                       klass = prev_class;
                else
-                       g_hash_table_insert (image->szarray_cache, eclass, class);
-               mono_mutex_unlock (&image->szarray_cache_lock);
+                       g_hash_table_insert (image->szarray_cache, eclass, klass);
+               mono_os_mutex_unlock (&image->szarray_cache_lock);
        } else {
-               list = g_slist_append (rootlist, class);
+               list = g_slist_append (rootlist, klass);
                g_hash_table_insert (image->array_cache, eclass, list);
        }
 
        mono_loader_unlock ();
 
-       mono_profiler_class_loaded (class, MONO_PROFILE_OK);
+       mono_profiler_class_loaded (klass, MONO_PROFILE_OK);
 
-       return class;
+       return klass;
 }
 
 /**
@@ -6857,34 +6968,34 @@ mono_class_data_size (MonoClass *klass)
  * Takes a field index instead of a field token.
  */
 static MonoClassField *
-mono_class_get_field_idx (MonoClass *class, int idx)
+mono_class_get_field_idx (MonoClass *klass, int idx)
 {
-       mono_class_setup_fields_locking (class);
-       if (class->exception_type)
+       mono_class_setup_fields_locking (klass);
+       if (klass->exception_type)
                return NULL;
 
-       while (class) {
-               if (class->image->uncompressed_metadata) {
+       while (klass) {
+               if (klass->image->uncompressed_metadata) {
                        /* 
-                        * class->field.first points to the FieldPtr table, while idx points into the
+                        * klass->field.first points to the FieldPtr table, while idx points into the
                         * Field table, so we have to do a search.
                         */
                        /*FIXME this is broken for types with multiple fields with the same name.*/
-                       const char *name = mono_metadata_string_heap (class->image, mono_metadata_decode_row_col (&class->image->tables [MONO_TABLE_FIELD], idx, MONO_FIELD_NAME));
+                       const char *name = mono_metadata_string_heap (klass->image, mono_metadata_decode_row_col (&klass->image->tables [MONO_TABLE_FIELD], idx, MONO_FIELD_NAME));
                        int i;
 
-                       for (i = 0; i < class->field.count; ++i)
-                               if (mono_field_get_name (&class->fields [i]) == name)
-                                       return &class->fields [i];
+                       for (i = 0; i < klass->field.count; ++i)
+                               if (mono_field_get_name (&klass->fields [i]) == name)
+                                       return &klass->fields [i];
                        g_assert_not_reached ();
                } else {                        
-                       if (class->field.count) {
-                               if ((idx >= class->field.first) && (idx < class->field.first + class->field.count)){
-                                       return &class->fields [idx - class->field.first];
+                       if (klass->field.count) {
+                               if ((idx >= klass->field.first) && (idx < klass->field.first + klass->field.count)){
+                                       return &klass->fields [idx - klass->field.first];
                                }
                        }
                }
-               class = class->parent;
+               klass = klass->parent;
        }
        return NULL;
 }
@@ -6899,13 +7010,13 @@ mono_class_get_field_idx (MonoClass *class, int idx)
  * class.
  */
 MonoClassField *
-mono_class_get_field (MonoClass *class, guint32 field_token)
+mono_class_get_field (MonoClass *klass, guint32 field_token)
 {
        int idx = mono_metadata_token_index (field_token);
 
        g_assert (mono_metadata_token_code (field_token) == MONO_TOKEN_FIELD_DEF);
 
-       return mono_class_get_field_idx (class, idx - 1);
+       return mono_class_get_field_idx (klass, idx - 1);
 }
 
 /**
@@ -7030,7 +7141,7 @@ mono_class_get_field_default_value (MonoClassField *field, MonoTypeEnum *def_typ
 
                mono_class_alloc_ext (klass);
 
-               def_values = mono_class_alloc0 (klass, sizeof (MonoFieldDefaultValue) * klass->field.count);
+               def_values = (MonoFieldDefaultValue *)mono_class_alloc0 (klass, sizeof (MonoFieldDefaultValue) * klass->field.count);
 
                mono_image_lock (klass->image);
                mono_memory_barrier ();
@@ -7049,8 +7160,8 @@ mono_class_get_field_default_value (MonoClassField *field, MonoTypeEnum *def_typ
                g_assert (!(field->type->attrs & FIELD_ATTRIBUTE_HAS_FIELD_RVA));
 
                mono_metadata_decode_row (&field->parent->image->tables [MONO_TABLE_CONSTANT], cindex - 1, constant_cols, MONO_CONSTANT_SIZE);
-               klass->ext->field_def_values [field_index].def_type = constant_cols [MONO_CONSTANT_TYPE];
-               klass->ext->field_def_values [field_index].data = (gpointer)mono_metadata_blob_heap (field->parent->image, constant_cols [MONO_CONSTANT_VALUE]);
+               klass->ext->field_def_values [field_index].def_type = (MonoTypeEnum)constant_cols [MONO_CONSTANT_TYPE];
+               klass->ext->field_def_values [field_index].data = (const char *)mono_metadata_blob_heap (field->parent->image, constant_cols [MONO_CONSTANT_VALUE]);
        }
 
        *def_type = klass->ext->field_def_values [field_index].def_type;
@@ -7099,8 +7210,8 @@ mono_class_get_property_default_value (MonoProperty *property, MonoTypeEnum *def
                return NULL;
 
        mono_metadata_decode_row (&klass->image->tables [MONO_TABLE_CONSTANT], cindex - 1, constant_cols, MONO_CONSTANT_SIZE);
-       *def_type = constant_cols [MONO_CONSTANT_TYPE];
-       return (gpointer)mono_metadata_blob_heap (klass->image, constant_cols [MONO_CONSTANT_VALUE]);
+       *def_type = (MonoTypeEnum)constant_cols [MONO_CONSTANT_TYPE];
+       return (const char *)mono_metadata_blob_heap (klass->image, constant_cols [MONO_CONSTANT_VALUE]);
 }
 
 guint32
@@ -7287,29 +7398,29 @@ MonoClass *
 mono_class_get_full (MonoImage *image, guint32 type_token, MonoGenericContext *context)
 {
        MonoError error;
-       MonoClass *class;
-       class = mono_class_get_checked (image, type_token, &error);
+       MonoClass *klass;
+       klass = mono_class_get_checked (image, type_token, &error);
 
-       if (class && context && mono_metadata_token_table (type_token) == MONO_TABLE_TYPESPEC)
-               class = mono_class_inflate_generic_class_checked (class, context, &error);
+       if (klass && context && mono_metadata_token_table (type_token) == MONO_TABLE_TYPESPEC)
+               klass = mono_class_inflate_generic_class_checked (klass, context, &error);
 
        g_assert (mono_error_ok (&error)); /* FIXME deprecate this function and forbit the runtime from using it. */
-       return class;
+       return klass;
 }
 
 
 MonoClass *
 mono_class_get_and_inflate_typespec_checked (MonoImage *image, guint32 type_token, MonoGenericContext *context, MonoError *error)
 {
-       MonoClass *class;
+       MonoClass *klass;
 
        mono_error_init (error);
-       class = mono_class_get_checked (image, type_token, error);
+       klass = mono_class_get_checked (image, type_token, error);
 
-       if (class && context && mono_metadata_token_table (type_token) == MONO_TABLE_TYPESPEC)
-               class = mono_class_inflate_generic_class_checked (class, context, error);
+       if (klass && context && mono_metadata_token_table (type_token) == MONO_TABLE_TYPESPEC)
+               klass = mono_class_inflate_generic_class_checked (klass, context, error);
 
-       return class;
+       return klass;
 }
 /**
  * mono_class_get_checked:
@@ -7322,7 +7433,7 @@ mono_class_get_and_inflate_typespec_checked (MonoImage *image, guint32 type_toke
 MonoClass *
 mono_class_get_checked (MonoImage *image, guint32 type_token, MonoError *error)
 {
-       MonoClass *class = NULL;
+       MonoClass *klass = NULL;
 
        mono_error_init (error);
 
@@ -7333,19 +7444,19 @@ mono_class_get_checked (MonoImage *image, guint32 type_token, MonoError *error)
                        mono_error_set_bad_image (error, image,"Bad token table for dynamic image: %x", table);
                        return NULL;
                }
-               class = mono_lookup_dynamic_token (image, type_token, NULL); /*FIXME proper error handling*/
+               klass = (MonoClass *)mono_lookup_dynamic_token (image, type_token, NULL); /*FIXME proper error handling*/
                goto done;
        }
 
        switch (type_token & 0xff000000){
        case MONO_TOKEN_TYPE_DEF:
-               class = mono_class_create_from_typedef (image, type_token, error);
+               klass = mono_class_create_from_typedef (image, type_token, error);
                break;          
        case MONO_TOKEN_TYPE_REF:
-               class = mono_class_from_typeref_checked (image, type_token, error);
+               klass = mono_class_from_typeref_checked (image, type_token, error);
                break;
        case MONO_TOKEN_TYPE_SPEC:
-               class = mono_class_create_from_typespec (image, type_token, NULL, error);
+               klass = mono_class_create_from_typespec (image, type_token, NULL, error);
                break;
        default:
                mono_error_set_bad_image (error, image, "Unknown type token %x", type_token & 0xff000000);
@@ -7353,13 +7464,13 @@ mono_class_get_checked (MonoImage *image, guint32 type_token, MonoError *error)
 
 done:
        /* Generic case, should be avoided for when a better error is possible. */
-       if (!class && mono_error_ok (error)) {
+       if (!klass && mono_error_ok (error)) {
                char *name = mono_class_name_from_token (image, type_token);
                char *assembly = mono_assembly_name_from_token (image, type_token);
                mono_error_set_type_load_name (error, name, assembly, "Could not resolve type with token %08x", type_token);
        }
 
-       return class;
+       return klass;
 }
 
 
@@ -7384,18 +7495,18 @@ mono_type_get_checked (MonoImage *image, guint32 type_token, MonoGenericContext
 
        //FIXME: this will not fix the very issue for which mono_type_get_full exists -but how to do it then?
        if (image_is_dynamic (image))
-               return mono_class_get_type (mono_lookup_dynamic_token (image, type_token, context));
+               return mono_class_get_type ((MonoClass *)mono_lookup_dynamic_token (image, type_token, context));
 
        if ((type_token & 0xff000000) != MONO_TOKEN_TYPE_SPEC) {
-               MonoClass *class = mono_class_get_checked (image, type_token, error);
+               MonoClass *klass = mono_class_get_checked (image, type_token, error);
 
-               if (!class) {
+               if (!klass) {
                        mono_loader_assert_no_error ();
                        return NULL;
                }
 
-               g_assert (class);
-               return mono_class_get_type (class);
+               g_assert (klass);
+               return mono_class_get_type (klass);
        }
 
        type = mono_type_retrieve_from_typespec (image, type_token, context, &inflated, error);
@@ -7479,7 +7590,7 @@ mono_image_init_name_cache (MonoImage *image)
                nspace = mono_metadata_string_heap (image, cols [MONO_TYPEDEF_NAMESPACE]);
 
                nspace_index = cols [MONO_TYPEDEF_NAMESPACE];
-               nspace_table = g_hash_table_lookup (name_cache2, GUINT_TO_POINTER (nspace_index));
+               nspace_table = (GHashTable *)g_hash_table_lookup (name_cache2, GUINT_TO_POINTER (nspace_index));
                if (!nspace_table) {
                        nspace_table = g_hash_table_new (g_str_hash, g_str_equal);
                        g_hash_table_insert (the_name_cache, (char*)nspace, nspace_table);
@@ -7497,11 +7608,17 @@ mono_image_init_name_cache (MonoImage *image)
 
                for (i = 0; i < t->rows; ++i) {
                        mono_metadata_decode_row (t, i, cols, MONO_EXP_TYPE_SIZE);
+
+                       guint32 impl = cols [MONO_EXP_TYPE_IMPLEMENTATION];
+                       if ((impl & MONO_IMPLEMENTATION_MASK) == MONO_IMPLEMENTATION_EXP_TYPE)
+                               /* Nested type */
+                               continue;
+
                        name = mono_metadata_string_heap (image, cols [MONO_EXP_TYPE_NAME]);
                        nspace = mono_metadata_string_heap (image, cols [MONO_EXP_TYPE_NAMESPACE]);
 
                        nspace_index = cols [MONO_EXP_TYPE_NAMESPACE];
-                       nspace_table = g_hash_table_lookup (name_cache2, GUINT_TO_POINTER (nspace_index));
+                       nspace_table = (GHashTable *)g_hash_table_lookup (name_cache2, GUINT_TO_POINTER (nspace_index));
                        if (!nspace_table) {
                                nspace_table = g_hash_table_new (g_str_hash, g_str_equal);
                                g_hash_table_insert (the_name_cache, (char*)nspace, nspace_table);
@@ -7537,7 +7654,7 @@ mono_image_add_to_name_cache (MonoImage *image, const char *nspace,
        mono_image_lock (image);
 
        name_cache = image->name_cache;
-       if (!(nspace_table = g_hash_table_lookup (name_cache, nspace))) {
+       if (!(nspace_table = (GHashTable *)g_hash_table_lookup (name_cache, nspace))) {
                nspace_table = g_hash_table_new (g_str_hash, g_str_equal);
                g_hash_table_insert (name_cache, (char *)nspace, (char *)nspace_table);
        }
@@ -7647,7 +7764,7 @@ mono_class_from_name_case_checked (MonoImage *image, const char* name_space, con
 }
 
 static MonoClass*
-return_nested_in (MonoClass *class, char *nested)
+return_nested_in (MonoClass *klass, char *nested)
 {
        MonoClass *found;
        char *s = strchr (nested, '/');
@@ -7658,7 +7775,7 @@ return_nested_in (MonoClass *class, char *nested)
                s++;
        }
 
-       while ((found = mono_class_get_nested_types (class, &iter))) {
+       while ((found = mono_class_get_nested_types (klass, &iter))) {
                if (strcmp (found->name, nested) == 0) {
                        if (s)
                                return return_nested_in (found, s);
@@ -7673,7 +7790,7 @@ search_modules (MonoImage *image, const char *name_space, const char *name)
 {
        MonoTableInfo *file_table = &image->tables [MONO_TABLE_FILE];
        MonoImage *file_image;
-       MonoClass *class;
+       MonoClass *klass;
        int i;
 
        /* 
@@ -7690,9 +7807,9 @@ search_modules (MonoImage *image, const char *name_space, const char *name)
 
                file_image = mono_image_load_file_for_image (image, i + 1);
                if (file_image) {
-                       class = mono_class_from_name (file_image, name_space, name);
-                       if (class)
-                               return class;
+                       klass = mono_class_from_name (file_image, name_space, name);
+                       if (klass)
+                               return klass;
                }
        }
 
@@ -7706,7 +7823,7 @@ mono_class_from_name_checked_aux (MonoImage *image, const char* name_space, cons
        MonoImage *loaded_image;
        guint32 token = 0;
        int i;
-       MonoClass *class;
+       MonoClass *klass;
        char *nested;
        char buf [1024];
 
@@ -7731,21 +7848,21 @@ mono_class_from_name_checked_aux (MonoImage *image, const char* name_space, cons
 
        /* FIXME: get_class_from_name () can't handle types in the EXPORTEDTYPE table */
        if (get_class_from_name && image->tables [MONO_TABLE_EXPORTEDTYPE].rows == 0) {
-               gboolean res = get_class_from_name (image, name_space, name, &class);
+               gboolean res = get_class_from_name (image, name_space, name, &klass);
                if (res) {
-                       if (!class)
-                               class = search_modules (image, name_space, name);
+                       if (!klass)
+                               klass = search_modules (image, name_space, name);
                        if (nested)
-                               return class ? return_nested_in (class, nested) : NULL;
+                               return klass ? return_nested_in (klass, nested) : NULL;
                        else
-                               return class;
+                               return klass;
                }
        }
 
        mono_image_init_name_cache (image);
        mono_image_lock (image);
 
-       nspace_table = g_hash_table_lookup (image->name_cache, name_space);
+       nspace_table = (GHashTable *)g_hash_table_lookup (image->name_cache, name_space);
 
        if (nspace_table)
                token = GPOINTER_TO_UINT (g_hash_table_lookup (nspace_table, name));
@@ -7757,16 +7874,16 @@ mono_class_from_name_checked_aux (MonoImage *image, const char* name_space, cons
                for (i = 0; i < image->module_count; ++i) {
                        MonoImage *module = image->modules [i];
 
-                       class = mono_class_from_name (module, name_space, name);
-                       if (class)
-                               return class;
+                       klass = mono_class_from_name (module, name_space, name);
+                       if (klass)
+                               return klass;
                }
        }
 
        if (!token) {
-               class = search_modules (image, name_space, name);
-               if (class)
-                       return class;
+               klass = search_modules (image, name_space, name);
+               if (klass)
+                       return klass;
        }
 
        if (!token)
@@ -7786,10 +7903,10 @@ mono_class_from_name_checked_aux (MonoImage *image, const char* name_space, cons
                        loaded_image = mono_assembly_load_module (image->assembly, impl >> MONO_IMPLEMENTATION_BITS);
                        if (!loaded_image)
                                return NULL;
-                       class = mono_class_from_name_checked_aux (loaded_image, name_space, name, error, visited_images);
+                       klass = mono_class_from_name_checked_aux (loaded_image, name_space, name, error, visited_images);
                        if (nested)
-                               return return_nested_in (class, nested);
-                       return class;
+                               return klass ? return_nested_in (klass, nested) : NULL;
+                       return klass;
                } else if ((impl & MONO_IMPLEMENTATION_MASK) == MONO_IMPLEMENTATION_ASSEMBLYREF) {
                        guint32 assembly_idx;
 
@@ -7799,19 +7916,21 @@ mono_class_from_name_checked_aux (MonoImage *image, const char* name_space, cons
                        g_assert (image->references [assembly_idx - 1]);
                        if (image->references [assembly_idx - 1] == (gpointer)-1)
                                return NULL;                    
-                       else
-                               return mono_class_from_name_checked_aux (image->references [assembly_idx - 1]->image, name_space, name, error, visited_images);
+                       klass = mono_class_from_name_checked_aux (image->references [assembly_idx - 1]->image, name_space, name, error, visited_images);
+                       if (nested)
+                               return return_nested_in (klass, nested);
+                       return klass;
                } else {
-                       g_error ("not yet implemented");
+                       g_assert_not_reached ();
                }
        }
 
        token = MONO_TOKEN_TYPE_DEF | token;
 
-       class = mono_class_get_checked (image, token, error);
+       klass = mono_class_get_checked (image, token, error);
        if (nested)
-               return return_nested_in (class, nested);
-       return class;
+               return return_nested_in (klass, nested);
+       return klass;
 }
 
 MonoClass *
@@ -8276,7 +8395,7 @@ mono_class_implement_interface_slow (MonoClass *target, MonoClass *candidate)
 
                /*A TypeBuilder can have more interfaces on tb->interfaces than on candidate->interfaces*/
                if (image_is_dynamic (candidate->image) && !candidate->wastypebuilder) {
-                       MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (candidate);
+                       MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (candidate);
                        int j;
                        if (tb && tb->interfaces) {
                                for (j = mono_array_length (tb->interfaces) - 1; j >= 0; --j) {
@@ -8585,7 +8704,7 @@ mono_ldtoken_checked (MonoImage *image, guint32 token, MonoClass **handle_class,
                return type;
        }
        case MONO_TOKEN_FIELD_DEF: {
-               MonoClass *class;
+               MonoClass *klass;
                guint32 type = mono_metadata_typedef_from_field (image, mono_metadata_token_index (token));
                if (!type) {
                        mono_error_set_bad_image (error, image, "Bad ldtoken %x", token);
@@ -8593,12 +8712,12 @@ mono_ldtoken_checked (MonoImage *image, guint32 token, MonoClass **handle_class,
                }
                if (handle_class)
                        *handle_class = mono_defaults.fieldhandle_class;
-               class = mono_class_get_and_inflate_typespec_checked (image, MONO_TOKEN_TYPE_DEF | type, context, error);
-               if (!class)
+               klass = mono_class_get_and_inflate_typespec_checked (image, MONO_TOKEN_TYPE_DEF | type, context, error);
+               if (!klass)
                        return NULL;
 
-               mono_class_init (class);
-               return mono_class_get_field (class, token);
+               mono_class_init (klass);
+               return mono_class_get_field (klass, token);
        }
        case MONO_TOKEN_METHOD_DEF:
        case MONO_TOKEN_METHOD_SPEC: {
@@ -8937,16 +9056,18 @@ mono_class_get_fields (MonoClass* klass, gpointer *iter)
                        return NULL;
                /* start from the first */
                if (klass->field.count) {
-                       return *iter = &klass->fields [0];
+                       *iter = &klass->fields [0];
+                       return &klass->fields [0];
                } else {
                        /* no fields */
                        return NULL;
                }
        }
-       field = *iter;
+       field = (MonoClassField *)*iter;
        field++;
        if (field < &klass->fields [klass->field.count]) {
-               return *iter = field;
+               *iter = field;
+               return field;
        }
        return NULL;
 }
@@ -8987,7 +9108,7 @@ mono_class_get_methods (MonoClass* klass, gpointer *iter)
                        return NULL;
                }
        }
-       method = *iter;
+       method = (MonoMethod **)*iter;
        method++;
        if (method < &klass->methods [klass->method.count]) {
                *iter = method;
@@ -9021,7 +9142,7 @@ mono_class_get_virtual_methods (MonoClass* klass, gpointer *iter)
                        /* start from the first */
                        method = &klass->methods [0];
                } else {
-                       method = *iter;
+                       method = (MonoMethod **)*iter;
                        method++;
                }
                while (method < &klass->methods [klass->method.count]) {
@@ -9049,7 +9170,7 @@ mono_class_get_virtual_methods (MonoClass* klass, gpointer *iter)
                for (i = start_index; i < klass->method.count; ++i) {
                        guint32 flags;
 
-                       /* class->method.first points into the methodptr table */
+                       /* klass->method.first points into the methodptr table */
                        flags = mono_metadata_decode_table_row_col (klass->image, MONO_TABLE_METHOD, klass->method.first + i, MONO_METHOD_FLAGS);
 
                        if (flags & METHOD_ATTRIBUTE_VIRTUAL)
@@ -9092,16 +9213,18 @@ mono_class_get_properties (MonoClass* klass, gpointer *iter)
                mono_class_setup_properties (klass);
                /* start from the first */
                if (klass->ext->property.count) {
-                       return *iter = &klass->ext->properties [0];
+                       *iter = &klass->ext->properties [0];
+                       return (MonoProperty *)*iter;
                } else {
                        /* no fields */
                        return NULL;
                }
        }
-       property = *iter;
+       property = (MonoProperty *)*iter;
        property++;
        if (property < &klass->ext->properties [klass->ext->property.count]) {
-               return *iter = property;
+               *iter = property;
+               return (MonoProperty *)*iter;
        }
        return NULL;
 }
@@ -9128,16 +9251,18 @@ mono_class_get_events (MonoClass* klass, gpointer *iter)
                mono_class_setup_events (klass);
                /* start from the first */
                if (klass->ext->event.count) {
-                       return *iter = &klass->ext->events [0];
+                       *iter = &klass->ext->events [0];
+                       return (MonoEvent *)*iter;
                } else {
                        /* no fields */
                        return NULL;
                }
        }
-       event = *iter;
+       event = (MonoEvent *)*iter;
        event++;
        if (event < &klass->ext->events [klass->ext->event.count]) {
-               return *iter = event;
+               *iter = event;
+               return (MonoEvent *)*iter;
        }
        return NULL;
 }
@@ -9180,7 +9305,7 @@ mono_class_get_interfaces (MonoClass* klass, gpointer *iter)
                        return NULL;
                }
        }
-       iface = *iter;
+       iface = (MonoClass **)*iter;
        iface++;
        if (iface < &klass->interfaces [klass->interface_count]) {
                *iter = iface;
@@ -9268,17 +9393,17 @@ mono_class_get_nested_types (MonoClass* klass, gpointer *iter)
                /* start from the first */
                if (klass->ext && klass->ext->nested_classes) {
                        *iter = klass->ext->nested_classes;
-                       return klass->ext->nested_classes->data;
+                       return (MonoClass *)klass->ext->nested_classes->data;
                } else {
                        /* no nested types */
                        return NULL;
                }
        }
-       item = *iter;
+       item = (GList *)*iter;
        item = item->next;
        if (item) {
                *iter = item;
-               return item->data;
+               return (MonoClass *)item->data;
        }
        return NULL;
 }
@@ -9410,7 +9535,7 @@ mono_field_get_rva (MonoClassField *field)
        if (!klass->ext || !klass->ext->field_def_values) {
                mono_class_alloc_ext (klass);
 
-               field_def_values = mono_class_alloc0 (klass, sizeof (MonoFieldDefaultValue) * klass->field.count);
+               field_def_values = (MonoFieldDefaultValue *)mono_class_alloc0 (klass, sizeof (MonoFieldDefaultValue) * klass->field.count);
 
                mono_image_lock (klass->image);
                if (!klass->ext->field_def_values)
@@ -9617,7 +9742,7 @@ find_method_in_metadata (MonoClass *klass, const char *name, int param_count, in
                MonoMethod *method;
                MonoMethodSignature *sig;
 
-               /* class->method.first points into the methodptr table */
+               /* klass->method.first points into the methodptr table */
                mono_metadata_decode_table_row (klass->image, MONO_TABLE_METHOD, klass->method.first + i, cols, MONO_METHOD_SIZE);
 
                if (!strcmp (mono_metadata_string_heap (klass->image, cols [MONO_METHOD_NAME]), name)) {
@@ -9668,7 +9793,8 @@ mono_class_get_method_from_name_flags (MonoClass *klass, const char *name, int p
                if (res) {
                        MonoError error;
                        res = mono_class_inflate_generic_method_full_checked (res, klass, mono_class_get_context (klass), &error);
-                       g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
+                       if (!mono_error_ok (&error))
+                               mono_error_cleanup (&error); /*FIXME don't swallow the error */
                }
                return res;
        }
@@ -9748,7 +9874,7 @@ mono_class_get_exception_data (MonoClass *klass)
 void
 mono_classes_init (void)
 {
-       mono_mutex_init (&classes_mutex);
+       mono_os_mutex_init (&classes_mutex);
 
        mono_counters_register ("Inflated methods size",
                                                        MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &inflated_methods_size);
@@ -9773,7 +9899,7 @@ mono_classes_cleanup (void)
        if (global_interface_bitset)
                mono_bitset_free (global_interface_bitset);
        global_interface_bitset = NULL;
-       mono_mutex_destroy (&classes_mutex);
+       mono_os_mutex_destroy (&classes_mutex);
 }
 
 /**
@@ -9802,19 +9928,19 @@ mono_class_get_exception_for_failure (MonoClass *klass)
                return ex;
        }
        case MONO_EXCEPTION_MISSING_METHOD: {
-               char *class_name = exception_data;
+               char *class_name = (char *)exception_data;
                char *assembly_name = class_name + strlen (class_name) + 1;
 
                return mono_get_exception_missing_method (class_name, assembly_name);
        }
        case MONO_EXCEPTION_MISSING_FIELD: {
-               char *class_name = exception_data;
+               char *class_name = (char *)exception_data;
                char *member_name = class_name + strlen (class_name) + 1;
 
                return mono_get_exception_missing_field (class_name, member_name);
        }
        case MONO_EXCEPTION_FILE_NOT_FOUND: {
-               char *msg_format = exception_data;
+               char *msg_format = (char *)exception_data;
                char *assembly_name = msg_format + strlen (msg_format) + 1;
                char *msg = g_strdup_printf (msg_format, assembly_name);
                MonoException *ex;
@@ -9826,7 +9952,7 @@ mono_class_get_exception_for_failure (MonoClass *klass)
                return ex;
        }
        case MONO_EXCEPTION_BAD_IMAGE: {
-               return mono_get_exception_bad_image_format (exception_data);
+               return mono_get_exception_bad_image_format ((const char *)exception_data);
        }
        default: {
                MonoLoaderError *error;
@@ -9931,16 +10057,16 @@ can_access_internals (MonoAssembly *accessing, MonoAssembly* accessed)
 
        mono_assembly_load_friends (accessed);
        for (tmp = accessed->friend_assembly_names; tmp; tmp = tmp->next) {
-               MonoAssemblyName *friend = tmp->data;
+               MonoAssemblyName *friend_ = (MonoAssemblyName *)tmp->data;
                /* Be conservative with checks */
-               if (!friend->name)
+               if (!friend_->name)
                        continue;
-               if (strcmp (accessing->aname.name, friend->name))
+               if (strcmp (accessing->aname.name, friend_->name))
                        continue;
-               if (friend->public_key_token [0]) {
+               if (friend_->public_key_token [0]) {
                        if (!accessing->aname.public_key_token [0])
                                continue;
-                       if (!mono_public_tokens_are_equal (friend->public_key_token, accessing->aname.public_key_token))
+                       if (!mono_public_tokens_are_equal (friend_->public_key_token, accessing->aname.public_key_token))
                                continue;
                }
                return TRUE;
@@ -10351,11 +10477,11 @@ mono_generic_class_is_generic_type_definition (MonoGenericClass *gklass)
  * LOCKING: Acquires the loader lock.
  */
 void
-mono_class_setup_interface_id (MonoClass *class)
+mono_class_setup_interface_id (MonoClass *klass)
 {
        mono_loader_lock ();
-       if (MONO_CLASS_IS_INTERFACE (class) && !class->interface_id)
-               class->interface_id = mono_get_unique_iid (class);
+       if (MONO_CLASS_IS_INTERFACE (klass) && !klass->interface_id)
+               klass->interface_id = mono_get_unique_iid (klass);
        mono_loader_unlock ();
 }
 
@@ -10372,7 +10498,7 @@ mono_class_alloc_ext (MonoClass *klass)
        if (klass->ext)
                return;
 
-       ext = mono_class_alloc0 (klass, sizeof (MonoClassExt));
+       ext = (MonoClassExt *)mono_class_alloc0 (klass, sizeof (MonoClassExt));
        mono_image_lock (klass->image);
        mono_memory_barrier ();
        if (!klass->ext)
@@ -10384,7 +10510,7 @@ mono_class_alloc_ext (MonoClass *klass)
 /*
  * mono_class_setup_interfaces:
  *
- *   Initialize class->interfaces/interfaces_count.
+ *   Initialize klass->interfaces/interfaces_count.
  * LOCKING: Acquires the loader lock.
  * This function can fail the type.
  */
@@ -10404,7 +10530,7 @@ mono_class_setup_interfaces (MonoClass *klass, MonoError *error)
 
                /* generic IList, ICollection, IEnumerable */
                interface_count = mono_defaults.generic_ireadonlylist_class ? 2 : 1;
-               interfaces = mono_image_alloc0 (klass->image, sizeof (MonoClass*) * interface_count);
+               interfaces = (MonoClass **)mono_image_alloc0 (klass->image, sizeof (MonoClass*) * interface_count);
 
                args [0] = &klass->element_class->byval_arg;
                interfaces [0] = mono_class_bind_generic_parameters (
@@ -10452,10 +10578,10 @@ mono_class_setup_interfaces (MonoClass *klass, MonoError *error)
 static void
 mono_field_resolve_type (MonoClassField *field, MonoError *error)
 {
-       MonoClass *class = field->parent;
-       MonoImage *image = class->image;
-       MonoClass *gtd = class->generic_class ? mono_class_get_generic_type_definition (class) : NULL;
-       int field_idx = field - class->fields;
+       MonoClass *klass = field->parent;
+       MonoImage *image = klass->image;
+       MonoClass *gtd = klass->generic_class ? mono_class_get_generic_type_definition (klass) : NULL;
+       int field_idx = field - klass->fields;
 
        mono_error_init (error);
 
@@ -10464,38 +10590,38 @@ mono_field_resolve_type (MonoClassField *field, MonoError *error)
                MonoType *gtype = mono_field_get_type_checked (gfield, error);
                if (!mono_error_ok (error)) {
                        char *err_msg = g_strdup_printf ("Could not load field %d type due to: %s", field_idx, mono_error_get_message (error));
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, err_msg);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, err_msg);
                        g_free (err_msg);
                }
 
-               field->type = mono_class_inflate_generic_type_no_copy (image, gtype, mono_class_get_context (class), error);
+               field->type = mono_class_inflate_generic_type_no_copy (image, gtype, mono_class_get_context (klass), error);
                if (!mono_error_ok (error)) {
                        char *err_msg = g_strdup_printf ("Could not load field %d type due to: %s", field_idx, mono_error_get_message (error));
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, err_msg);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, err_msg);
                        g_free (err_msg);
                }
        } else {
                const char *sig;
                guint32 cols [MONO_FIELD_SIZE];
                MonoGenericContainer *container = NULL;
-               int idx = class->field.first + field_idx;
+               int idx = klass->field.first + field_idx;
 
                /*FIXME, in theory we do not lazy load SRE fields*/
                g_assert (!image_is_dynamic (image));
 
-               if (class->generic_container) {
-                       container = class->generic_container;
+               if (klass->generic_container) {
+                       container = klass->generic_container;
                } else if (gtd) {
                        container = gtd->generic_container;
                        g_assert (container);
                }
 
-               /* class->field.first and idx points into the fieldptr table */
+               /* klass->field.first and idx points into the fieldptr table */
                mono_metadata_decode_table_row (image, MONO_TABLE_FIELD, idx, cols, MONO_FIELD_SIZE);
 
                if (!mono_verifier_verify_field_signature (image, cols [MONO_FIELD_SIGNATURE], NULL)) {
-                       mono_error_set_type_load_class (error, class, "Could not verify field %s signature", field->name);
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       mono_error_set_type_load_class (error, klass, "Could not verify field %s signature", field->name);
+                       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                        return;
                }
 
@@ -10504,26 +10630,26 @@ mono_field_resolve_type (MonoClassField *field, MonoError *error)
                mono_metadata_decode_value (sig, &sig);
                /* FIELD signature == 0x06 */
                g_assert (*sig == 0x06);
-               field->type = mono_metadata_parse_type_full (image, container, MONO_PARSE_FIELD, cols [MONO_FIELD_FLAGS], sig + 1, &sig);
+               field->type = mono_metadata_parse_type_full (image, container, cols [MONO_FIELD_FLAGS], sig + 1, &sig);
                if (!field->type)
-                       mono_class_set_failure_from_loader_error (class, error, g_strdup_printf ("Could not load field %s type", field->name));
+                       mono_class_set_failure_from_loader_error (klass, error, g_strdup_printf ("Could not load field %s type", field->name));
        }
 }
 
 static guint32
 mono_field_resolve_flags (MonoClassField *field)
 {
-       MonoClass *class = field->parent;
-       MonoImage *image = class->image;
-       MonoClass *gtd = class->generic_class ? mono_class_get_generic_type_definition (class) : NULL;
-       int field_idx = field - class->fields;
+       MonoClass *klass = field->parent;
+       MonoImage *image = klass->image;
+       MonoClass *gtd = klass->generic_class ? mono_class_get_generic_type_definition (klass) : NULL;
+       int field_idx = field - klass->fields;
 
 
        if (gtd) {
                MonoClassField *gfield = &gtd->fields [field_idx];
                return mono_field_get_flags (gfield);
        } else {
-               int idx = class->field.first + field_idx;
+               int idx = klass->field.first + field_idx;
 
                /*FIXME, in theory we do not lazy load SRE fields*/
                g_assert (!image_is_dynamic (image));
@@ -10536,14 +10662,14 @@ mono_field_resolve_flags (MonoClassField *field)
  * mono_class_setup_basic_field_info:
  * @class: The class to initialize
  *
- * Initializes the class->fields array of fields.
+ * Initializes the klass->fields array of fields.
  * Aquires the loader lock.
  */
 static void
-mono_class_setup_basic_field_info_locking (MonoClass *class)
+mono_class_setup_basic_field_info_locking (MonoClass *klass)
 {
        mono_loader_lock ();
-       mono_class_setup_basic_field_info (class);
+       mono_class_setup_basic_field_info (klass);
        mono_loader_unlock ();
 }
 
@@ -10573,16 +10699,18 @@ mono_class_get_fields_lazy (MonoClass* klass, gpointer *iter)
                        return NULL;
                /* start from the first */
                if (klass->field.count) {
-                       return *iter = &klass->fields [0];
+                       *iter = &klass->fields [0];
+                       return (MonoClassField *)*iter;
                } else {
                        /* no fields */
                        return NULL;
                }
        }
-       field = *iter;
+       field = (MonoClassField *)*iter;
        field++;
        if (field < &klass->fields [klass->field.count]) {
-               return *iter = field;
+               *iter = field;
+               return (MonoClassField *)*iter;
        }
        return NULL;
 }
index 14585755bc58a8baa3055a169bbf410798945802..9c4c8e60d371401b4c8b96845db4122bd7ca7d3c 100644 (file)
 #include "mono/metadata/monitor.h"
 #include "mono/metadata/metadata-internals.h"
 #include "mono/metadata/domain-internals.h"
-#include "mono/metadata/gc-internal.h"
+#include "mono/metadata/gc-internals.h"
 #include "mono/metadata/threads-types.h"
 #include "mono/metadata/string-icalls.h"
 #include "mono/metadata/attrdefs.h"
-#include "mono/metadata/gc-internal.h"
+#include "mono/metadata/gc-internals.h"
 #include "mono/utils/mono-counters.h"
 #include "mono/utils/strenc.h"
 #include "mono/utils/atomic.h"
@@ -75,8 +75,8 @@ enum {
 #undef OPDEF
 
 /* This mutex protects the various cominterop related caches in MonoImage */
-#define mono_cominterop_lock() mono_mutex_lock (&cominterop_mutex)
-#define mono_cominterop_unlock() mono_mutex_unlock (&cominterop_mutex)
+#define mono_cominterop_lock() mono_os_mutex_lock (&cominterop_mutex)
+#define mono_cominterop_unlock() mono_os_mutex_unlock (&cominterop_mutex)
 static mono_mutex_t cominterop_mutex;
 
 /* STDCALL on windows, CDECL everywhere else to work with XPCOM and MainWin COM */
@@ -322,7 +322,7 @@ cominterop_get_method_interface (MonoMethod* method)
                        for (i = 0; i < ifaces->len; ++i) {
                                int j, offset;
                                gboolean found = FALSE;
-                               ic = g_ptr_array_index (ifaces, i);
+                               ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                                offset = mono_class_interface_offset (method->klass, ic);
                                for (j = 0; j < ic->method.count; ++j) {
                                        if (method->klass->vtable [j + offset] == method) {
@@ -443,7 +443,7 @@ cominterop_com_visible (MonoClass* klass)
                int i;
                for (i = 0; i < ifaces->len; ++i) {
                        MonoClass *ic = NULL;
-                       ic = g_ptr_array_index (ifaces, i);
+                       ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                        if (MONO_CLASS_IS_IMPORT (ic))
                                visible = TRUE;
 
@@ -532,7 +532,7 @@ mono_cominterop_init (void)
 {
        const char* com_provider_env;
 
-       mono_mutex_init_recursive (&cominterop_mutex);
+       mono_os_mutex_init_recursive (&cominterop_mutex);
 
        com_provider_env = g_getenv ("MONO_COM");
        if (com_provider_env && !strcmp(com_provider_env, "MS"))
@@ -564,7 +564,7 @@ mono_cominterop_init (void)
 void
 mono_cominterop_cleanup (void)
 {
-       mono_mutex_destroy (&cominterop_mutex);
+       mono_os_mutex_destroy (&cominterop_mutex);
 }
 
 void
@@ -1640,7 +1640,8 @@ ves_icall_System_ComObject_ReleaseInterfaces (MonoComObject* obj)
                g_hash_table_foreach_remove (obj->itf_hash, cominterop_rcw_interface_finalizer, NULL);
                g_hash_table_destroy (obj->itf_hash);
                ves_icall_System_Runtime_InteropServices_Marshal_ReleaseInternal (obj->iunknown);
-               obj->itf_hash = obj->iunknown = NULL;
+               obj->iunknown = NULL;
+               obj->itf_hash = NULL;
                mono_cominterop_unlock ();
        }
 }
@@ -1661,7 +1662,8 @@ cominterop_rcw_finalizer (gpointer key, gpointer value, gpointer user_data)
                        }
                        if (proxy->com_object->iunknown)
                                ves_icall_System_Runtime_InteropServices_Marshal_ReleaseInternal (proxy->com_object->iunknown);
-                       proxy->com_object->itf_hash = proxy->com_object->iunknown = NULL;
+                       proxy->com_object->iunknown = NULL;
+                       proxy->com_object->itf_hash = NULL;
                }
                
                mono_gchandle_free (gchandle);
@@ -1689,13 +1691,13 @@ gpointer
 ves_icall_System_ComObject_GetInterfaceInternal (MonoComObject* obj, MonoReflectionType* type, MonoBoolean throw_exception)
 {
 #ifndef DISABLE_COM
-       MonoClass *class = mono_type_get_class (type->type);
-       if (!mono_class_init (class)) {
-               mono_set_pending_exception (mono_class_get_exception_for_failure (class));
+       MonoClass *klass = mono_type_get_class (type->type);
+       if (!mono_class_init (klass)) {
+               mono_set_pending_exception (mono_class_get_exception_for_failure (klass));
                return NULL;
        }
 
-       return cominterop_get_interface (obj, class, (gboolean)throw_exception);
+       return cominterop_get_interface (obj, klass, (gboolean)throw_exception);
 #else
        g_assert_not_reached ();
 #endif
@@ -1764,7 +1766,7 @@ cominterop_get_ccw_object (MonoCCWInterface* ccw_entry, gboolean verify)
                return NULL;
 
        if (verify) {
-               ccw = g_hash_table_lookup (ccw_interface_hash, ccw_entry);
+               ccw = (MonoCCW *)g_hash_table_lookup (ccw_interface_hash, ccw_entry);
        }
        else {
                ccw = ccw_entry->ccw;
@@ -1838,12 +1840,12 @@ cominterop_get_ccw (MonoObject* object, MonoClass* itf)
        if (!ccw_interface_hash)
                ccw_interface_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
 
-       ccw_list = g_hash_table_lookup (ccw_hash, GINT_TO_POINTER (mono_object_hash (object)));
+       ccw_list = (GList *)g_hash_table_lookup (ccw_hash, GINT_TO_POINTER (mono_object_hash (object)));
        mono_cominterop_unlock ();
 
        ccw_list_item = ccw_list;
        while (ccw_list_item) {
-               MonoCCW* ccw_iter = ccw_list_item->data;
+               MonoCCW* ccw_iter = (MonoCCW *)ccw_list_item->data;
                if (mono_gchandle_get_target (ccw_iter->gc_handle) == object) {
                        ccw = ccw_iter;
                        break;
@@ -1913,11 +1915,11 @@ cominterop_get_ccw (MonoObject* object, MonoClass* itf)
                iface = NULL;
        }
 
-       ccw_entry = g_hash_table_lookup (ccw->vtable_hash, itf);
+       ccw_entry = (MonoCCWInterface *)g_hash_table_lookup (ccw->vtable_hash, itf);
 
        if (!ccw_entry) {
                int vtable_index = method_count-1+start_slot;
-               vtable = mono_image_alloc0 (klass->image, sizeof (gpointer)*(method_count+start_slot));
+               vtable = (void **)mono_image_alloc0 (klass->image, sizeof (gpointer)*(method_count+start_slot));
                memcpy (vtable, iunknown, sizeof (iunknown));
                if (start_slot == 7)
                        memcpy (vtable+3, idispatch, sizeof (idispatch));
@@ -2055,7 +2057,7 @@ mono_marshal_free_ccw (MonoObject* object)
 
        /* need to cache orig list address to remove from hash_table if empty */
        mono_cominterop_lock ();
-       ccw_list = ccw_list_orig = g_hash_table_lookup (ccw_hash, GINT_TO_POINTER (mono_object_hash (object)));
+       ccw_list = ccw_list_orig = (GList *)g_hash_table_lookup (ccw_hash, GINT_TO_POINTER (mono_object_hash (object)));
        mono_cominterop_unlock ();
 
        if (!ccw_list)
@@ -2063,7 +2065,7 @@ mono_marshal_free_ccw (MonoObject* object)
 
        ccw_list_item = ccw_list;
        while (ccw_list_item) {
-               MonoCCW* ccw_iter = ccw_list_item->data;
+               MonoCCW* ccw_iter = (MonoCCW *)ccw_list_item->data;
                MonoObject* handle_target = mono_gchandle_get_target (ccw_iter->gc_handle);
 
                /* Looks like the GC NULLs the weakref handle target before running the
@@ -2072,7 +2074,7 @@ mono_marshal_free_ccw (MonoObject* object)
                */
                gboolean destroy_ccw = !handle_target || handle_target == object;
                if (!handle_target) {
-                       MonoCCWInterface* ccw_entry = g_hash_table_lookup (ccw_iter->vtable_hash, mono_class_get_iunknown_class ());
+                       MonoCCWInterface* ccw_entry = (MonoCCWInterface *)g_hash_table_lookup (ccw_iter->vtable_hash, mono_class_get_iunknown_class ());
                        if (!(ccw_entry && object == cominterop_get_ccw_object (ccw_entry, FALSE)))
                                destroy_ccw = FALSE;
                }
@@ -2350,7 +2352,7 @@ cominterop_ccw_queryinterface (MonoCCWInterface* ccwe, guint8* riid, gpointer* p
        if (cominterop_class_guid_equal (riid, mono_class_get_iunknown_class ())) {
                *ppv = cominterop_get_ccw (object, mono_class_get_iunknown_class ());
                /* remember to addref on QI */
-               cominterop_ccw_addref (*ppv);
+               cominterop_ccw_addref ((MonoCCWInterface *)*ppv);
                return MONO_S_OK;
        }
 
@@ -2361,7 +2363,7 @@ cominterop_ccw_queryinterface (MonoCCWInterface* ccwe, guint8* riid, gpointer* p
                
                *ppv = cominterop_get_ccw (object, mono_class_get_idispatch_class ());
                /* remember to addref on QI */
-               cominterop_ccw_addref (*ppv);
+               cominterop_ccw_addref ((MonoCCWInterface *)*ppv);
                return MONO_S_OK;
        }
 
@@ -2378,7 +2380,7 @@ cominterop_ccw_queryinterface (MonoCCWInterface* ccwe, guint8* riid, gpointer* p
                if (ifaces) {
                        for (i = 0; i < ifaces->len; ++i) {
                                MonoClass *ic = NULL;
-                               ic = g_ptr_array_index (ifaces, i);
+                               ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                                if (cominterop_class_guid_equal (riid, ic)) {
                                        itf = ic;
                                        break;
@@ -2395,7 +2397,7 @@ cominterop_ccw_queryinterface (MonoCCWInterface* ccwe, guint8* riid, gpointer* p
        if (itf) {
                *ppv = cominterop_get_ccw (object, itf);
                /* remember to addref on QI */
-               cominterop_ccw_addref (*ppv);
+               cominterop_ccw_addref ((MonoCCWInterface *)*ppv);
                return MONO_S_OK;
        }
 
@@ -2619,7 +2621,7 @@ mono_string_to_bstr (MonoString *string_obj)
        if (com_provider == MONO_COM_DEFAULT) {
                int slen = mono_string_length (string_obj);
                /* allocate len + 1 utf16 characters plus 4 byte integer for length*/
-               char *ret = g_malloc ((slen + 1) * sizeof(gunichar2) + sizeof(guint32));
+               char *ret = (char *)g_malloc ((slen + 1) * sizeof(gunichar2) + sizeof(guint32));
                if (ret == NULL)
                        return NULL;
                memcpy (ret + sizeof(guint32), mono_string_chars (string_obj), slen * sizeof(gunichar2));
@@ -2653,13 +2655,13 @@ mono_string_from_bstr (gpointer bstr)
        return mono_string_new_utf16 (mono_domain_get (), bstr, SysStringLen (bstr));
 #else
        if (com_provider == MONO_COM_DEFAULT) {
-               return mono_string_new_utf16 (mono_domain_get (), bstr, *((guint32 *)bstr - 1) / sizeof(gunichar2));
+               return mono_string_new_utf16 (mono_domain_get (), (const mono_unichar2 *)bstr, *((guint32 *)bstr - 1) / sizeof(gunichar2));
        } else if (com_provider == MONO_COM_MS && init_com_provider_ms ()) {
                MonoString* str = NULL;
                glong written = 0;
                gunichar2* utf16 = NULL;
 
-               utf16 = g_ucs4_to_utf16 (bstr, sys_string_len_ms (bstr), NULL, &written, NULL);
+               utf16 = g_ucs4_to_utf16 ((const gunichar *)bstr, sys_string_len_ms (bstr), NULL, &written, NULL);
                str = mono_string_new_utf16 (mono_domain_get (), utf16, written);
                g_free (utf16);
                return str;
@@ -2681,7 +2683,7 @@ mono_free_bstr (gpointer bstr)
        if (com_provider == MONO_COM_DEFAULT) {
                g_free (((char *)bstr) - 4);
        } else if (com_provider == MONO_COM_MS && init_com_provider_ms ()) {
-               sys_free_string_ms (bstr);
+               sys_free_string_ms ((gunichar *)bstr);
        } else {
                g_assert_not_reached ();
        }
@@ -3017,8 +3019,8 @@ mono_marshal_safearray_begin (gpointer safearray, MonoArray **result, gpointer *
 
                        *indices = g_malloc (dim * sizeof(int));
 
-                       sizes = alloca (dim * sizeof(uintptr_t));
-                       bounds = alloca (dim * sizeof(intptr_t));
+                       sizes = (uintptr_t *)alloca (dim * sizeof(uintptr_t));
+                       bounds = (intptr_t *)alloca (dim * sizeof(intptr_t));
 
                        for (i=0; i<dim; ++i) {
                                glong lbound, ubound;
@@ -3049,7 +3051,7 @@ mono_marshal_safearray_begin (gpointer safearray, MonoArray **result, gpointer *
                                aklass = mono_bounded_array_class_get (mono_defaults.object_class, dim, bounded);
                                *result = mono_array_new_full (mono_domain_get (), aklass, sizes, bounds);
                        } else {
-                               *result = parameter;
+                               *result = (MonoArray *)parameter;
                        }
                }
        }
@@ -3067,7 +3069,7 @@ gpointer mono_marshal_safearray_get_value (gpointer safearray, gpointer indices)
        }
 #else
        if (com_provider == MONO_COM_MS && init_com_provider_ms ()) {
-               int hr = safe_array_ptr_of_index_ms (safearray, indices, &result);
+               int hr = safe_array_ptr_of_index_ms (safearray, (glong *)indices, &result);
                if (hr < 0) {
                        cominterop_raise_hr_exception (hr);
                }
@@ -3151,7 +3153,7 @@ mono_marshal_safearray_create (MonoArray *input, gpointer *newsafearray, gpointe
        dim = ((MonoObject *)input)->vtable->klass->rank;
 
        *indices = g_malloc (dim * sizeof (int));
-       bounds = alloca (dim * sizeof (SAFEARRAYBOUND));
+       bounds = (SAFEARRAYBOUND *)alloca (dim * sizeof (SAFEARRAYBOUND));
        (*(int*)empty) = (max_array_length == 0);
 
        if (dim > 1) {
@@ -3183,7 +3185,7 @@ void mono_marshal_safearray_set_value (gpointer safearray, gpointer indices, gpo
                cominterop_raise_hr_exception (hr);
 #else
        if (com_provider == MONO_COM_MS && init_com_provider_ms ()) {
-               int hr = safe_array_put_element_ms (safearray, indices, value);
+               int hr = safe_array_put_element_ms (safearray, (glong *)indices, (void **)value);
                if (hr < 0) {
                        cominterop_raise_hr_exception (hr);
                }
index 46554d214abaadce47008ef1d68aa61f794bf319..7c778bfacd14e66a927884e720d07a7d9bcd315f 100644 (file)
@@ -11,7 +11,7 @@
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/domain-internals.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 
 #include <mono/metadata/console-io.h>
 #include <mono/metadata/exception.h>
index 7708a482d7d2cc17b484f49c7235c599a8bb96fa..0ac3b3981f1a6dc5d0bc3f83c317c4c031321635 100644 (file)
@@ -31,7 +31,7 @@
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/domain-internals.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/metadata.h>
 #include <mono/metadata/threadpool-ms.h>
 #include <mono/utils/mono-signal-handler.h>
@@ -344,19 +344,19 @@ console_set_signal_handlers ()
        memset (&sigwinch, 0, sizeof (struct sigaction));
        
        // Continuing
-       sigcont.sa_handler = (void *) sigcont_handler;
+       sigcont.sa_handler = (void (*)(int)) sigcont_handler;
        sigcont.sa_flags = 0;
        sigemptyset (&sigcont.sa_mask);
        sigaction (SIGCONT, &sigcont, &save_sigcont);
        
        // Interrupt handler
-       sigint.sa_handler = (void *) sigint_handler;
+       sigint.sa_handler = (void (*)(int)) sigint_handler;
        sigint.sa_flags = 0;
        sigemptyset (&sigint.sa_mask);
        sigaction (SIGINT, &sigint, &save_sigint);
 
        // Window size changed
-       sigwinch.sa_handler = (void *) sigwinch_handler;
+       sigwinch.sa_handler = (void (*)(int)) sigwinch_handler;
        sigwinch.sa_flags = 0;
        sigemptyset (&sigwinch.sa_mask);
        sigaction (SIGWINCH, &sigwinch, &save_sigwinch);
index 7de83602c9b252cdfce50d16369e75de67e2f1a0..ff703808c3d9587a3cb6e7ed4a19b919e4cd1139 100644 (file)
@@ -24,7 +24,7 @@
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/domain-internals.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/metadata.h>
 
 #include <mono/metadata/console-io.h>
index 20306b572ddc8e866c948eb5b022acbe9c68f920..300cce8fd978697e9bef3b2c17cafb1126a4083e 100644 (file)
 static const DateTimeFormatEntry datetime_format_entries [] = {
        {1, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {9, 18, 25, 45, 65, 89, 113, 120, 131, 142, 151, 169, 0}, {9, 18, 25, 45, 65, 89, 113, 120, 131, 142, 151, 169, 0}, {9, 18, 25, 45, 65, 89, 113, 120, 131, 142, 151, 169, 0}, {9, 18, 25, 45, 65, 89, 113, 120, 131, 142, 151, 169, 0}, 0, 6, 185, 187, {189,198,0,0,0,0,0,0,0,0,0,0,0,0},{209,222,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
        {289, 296, 307, {318, 331, 352, 367, 378, 397, 408}, {421, 426, 431, 436, 441, 446, 451}, {456, 459, 462, 465, 468, 459, 465}, {471, 484, 501, 510, 521, 528, 535, 542, 555, 574, 591, 606, 0}, {471, 484, 501, 510, 521, 528, 535, 542, 555, 574, 591, 606, 0}, {623, 629, 501, 639, 521, 528, 535, 647, 655, 665, 673, 683, 0}, {623, 629, 501, 639, 521, 528, 535, 647, 655, 665, 673, 683, 0}, 2, 1, 691, 187, {693,708,724,740,0,0,0,0,0,0,0,0,0,0},{757,776,794,819,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{856,0,0,0,0,0,0,0}},
-       {289, 872, 878, {884, 893, 901, 909, 918, 925, 935}, {944, 948, 952, 956, 960, 964, 968}, {972, 975, 978, 981, 984, 987, 990}, {993, 999, 1006, 1012, 1018, 1023, 1028, 1035, 1041, 1050, 1058, 1067, 0}, {993, 999, 1006, 1012, 1018, 1023, 1028, 1035, 1041, 1050, 1058, 1067, 0}, {1076, 1081, 1006, 1086, 1018, 1023, 1091, 1096, 1100, 1105, 1110, 1115, 0}, {1076, 1081, 1006, 1086, 1018, 1023, 1091, 1096, 1100, 1105, 1110, 1115, 0}, 2, 1, 185, 187, {198,189,1120,1128,1139,1148,1156,1167,1176,0,0,0,0,0},{1184,1207,1225,1242,1254,1270,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{848,0,0,0,0,0,0,0,0},{1286,1301,1311,1320,0,0,0,0}},
-       {1327, 1340, 1347, {1354, 1364, 1374, 1384, 1394, 1404, 1414}, {1424, 1431, 1438, 1445, 1452, 1459, 1466}, {1473, 1477, 1481, 1485, 1489, 1493, 1497}, {1501, 1508, 1515, 1522, 1529, 1536, 1543, 1550, 1557, 1564, 1571, 1581, 0}, {1501, 1508, 1515, 1522, 1529, 1536, 1543, 1550, 1557, 1564, 1571, 1581, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, 0, 0, 185, 187, {1654,1663,1672,1681,1692,1703,1714,1721,1728,1735,0,0,0,0},{1744,1766,1794,1822,1837,0,0,0,0,0},{843,251,1858,1866,0,0,0,0,0,0,0,0},{848,269,1875,1886,0,0,0,0,0},{1898,1914,0,0,0,0,0,0}},
-       {1327, 1340, 1347, {1354, 1364, 1374, 1384, 1394, 1404, 1414}, {1424, 1431, 1438, 1445, 1452, 1459, 1466}, {1473, 1477, 1481, 1485, 1489, 1493, 1497}, {1501, 1508, 1515, 1522, 1529, 1536, 1543, 1550, 1557, 1564, 1571, 1581, 0}, {1501, 1508, 1515, 1522, 1529, 1536, 1543, 1550, 1557, 1564, 1571, 1581, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, 0, 0, 185, 187, {1654,1663,1672,1681,1692,1703,1714,1721,1728,1735,0,0,0,0},{1744,1766,1794,1822,1837,0,0,0,0,0},{843,251,1858,1866,0,0,0,0,0,0,0,0},{848,269,1875,1886,0,0,0,0,0},{1898,1914,0,0,0,0,0,0}},
-       {1921, 1929, 1932, {1935, 1943, 1953, 1961, 1969, 1978, 1985}, {1992, 1995, 1998, 2002, 2005, 2009, 2013}, {2016, 2018, 2020, 2023, 2025, 2018, 2023}, {2028, 2034, 2040, 2048, 2054, 2062, 2070, 2080, 2086, 2094, 2102, 2111, 0}, {2120, 2126, 2133, 2141, 2147, 2155, 2163, 2173, 2086, 2179, 2187, 2197, 0}, {2206, 2210, 2215, 2220, 2224, 2229, 2234, 2239, 2243, 2249, 2255, 2259, 0}, {2206, 2210, 2215, 2220, 2224, 2229, 2234, 2239, 2243, 2249, 2255, 2259, 0}, 2, 1, 2263, 187, {2266,2277,198,2286,189,2293,1692,1663,1721,0,0,0,0,0},{2300,0,0,0,0,0,0,0,0,0},{843,251,2313,2321,0,0,0,0,0,0,0,0},{848,269,2326,2337,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 1929, 1932, {2345, 2353, 2360, 2368, 2375, 2383, 2390}, {2398, 2403, 2407, 2411, 2415, 2419, 2423}, {2023, 2428, 2430, 2432, 2430, 2434, 2436}, {2438, 2445, 2453, 2459, 2465, 2469, 2474, 2479, 2486, 2496, 2504, 2513, 0}, {2438, 2445, 2453, 2459, 2465, 2469, 2474, 2479, 2486, 2496, 2504, 2513, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, 2, 1, 2566, 187, {1128,1139,1692,2568,0,0,0,0,0,0,0,0,0,0},{2300,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 2579, 2585, {2592, 2600, 2607, 2616, 2625, 2636, 2644}, {2652, 2655, 2658, 2661, 2664, 2667, 2670}, {2023, 2428, 2673, 2428, 2673, 2434, 2023}, {2675, 2682, 2690, 2696, 2702, 2706, 2711, 2716, 2723, 2733, 2741, 2750, 0}, {2675, 2682, 2690, 2696, 2702, 2706, 2711, 2716, 2723, 2733, 2741, 2750, 0}, {2759, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, {2759, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, 2, 1, 691, 187, {1156,1167,1692,2804,0,0,0,0,0,0,0,0,0,0},{2818,2300,2837,0,0,0,0,0,0,0},{251,2850,0,0,0,0,0,0,0,0,0,0},{269,2862,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 2877, 2884, {2891, 2906, 2921, 2932, 2947, 2960, 2979}, {2994, 3001, 3008, 3015, 3022, 3029, 3036}, {3043, 3046, 3049, 3049, 3052, 3052, 3055}, {3058, 3079, 3102, 3117, 3134, 3145, 3160, 3175, 3194, 3217, 3236, 3255, 0}, {3276, 3297, 3320, 3335, 3352, 3363, 3378, 3393, 3412, 3435, 3454, 3473, 0}, {3494, 3501, 3508, 3515, 3522, 3529, 3538, 3547, 3554, 3561, 3568, 3575, 0}, {3494, 3501, 3508, 3515, 3522, 3529, 3538, 3547, 3554, 3561, 3568, 3575, 0}, 2, 1, 185, 187, {2277,198,2286,189,3582,1692,0,0,0,0,0,0,0,0},{1207,1242,0,0,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3613, 1929, 1932, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 185, 187, {3773,3782,3789,3798,1735,1692,3809,0,0,0,0,0,0,0},{3819,3838,3851,3870,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 1, 185, 187, {198,189,1120,2286,2293,1139,1167,1692,0,0,0,0,0,0},{4211,4239,4266,0,0,0,0,0,0,0},{843,251,2321,4288,4294,0,0,0,0,0,0,0},{848,269,2337,4302,4311,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {4322, 4332, 4336, {4340, 4352, 4364, 4374, 4388, 4398, 4410}, {4421, 4424, 4427, 4430, 4433, 4436, 4439}, {2023, 2428, 2430, 4442, 2430, 2018, 2436}, {4444, 4453, 4462, 4472, 4481, 4490, 4499, 4509, 4516, 4524, 4532, 4542, 0}, {4551, 4562, 4573, 4585, 4596, 4607, 4618, 4630, 4639, 4649, 4659, 4671, 0}, {4682, 4688, 4694, 4701, 4707, 4713, 4719, 4726, 4730, 4735, 4740, 4747, 0}, {4682, 4688, 4694, 4701, 4707, 4713, 4719, 4726, 4730, 4735, 4740, 4747, 0}, 2, 1, 691, 187, {4753,1156,4762,1692,0,0,0,0,0,0,0,0,0,0},{2300,4769,2818,0,0,0,0,0,0,0},{843,2321,0,0,0,0,0,0,0,0,0,0},{848,2337,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {4783, 4792, 4798, 4804, 4813, 4819, 4828}, {4835, 4840, 4845, 4850, 4855, 4860, 4865}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, 0, 1, 185, 187, {198,189,1167,1139,1692,0,0,0,0,0,0,0,0,0},{4985,1242,5002,0,0,0,0,0,0,0},{251,843,4288,5011,5021,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1, 5029, 5042, {5053, 5071, 5085, 5103, 5121, 5139, 5155}, {5169, 5181, 5193, 5205, 5217, 5229, 5241}, {5248, 5253, 5258, 5263, 5268, 5273, 5278}, {5283, 5294, 5307, 5314, 5325, 5332, 5341, 5350, 5363, 5376, 5391, 5404, 0}, {5283, 5294, 5307, 5314, 5325, 5332, 5341, 5350, 5363, 5376, 5391, 5404, 0}, {5415, 5424, 5307, 5433, 5325, 5442, 5451, 5460, 5469, 5478, 5487, 5496, 0}, {5415, 5424, 5307, 5433, 5325, 5442, 5451, 5460, 5469, 5478, 5487, 5496, 0}, 0, 0, 185, 187, {198,5505,189,209,1139,1128,5518,1692,5531,5548,0,0,0,0},{5558,5505,5576,5598,5531,0,0,0,0,0},{251,242,0,0,0,0,0,0,0,0,0,0},{269,257,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {5619, 5627, 5631, {5635, 5645, 5653, 5658, 5665, 5678, 5686}, {3989, 5694, 4442, 5696, 5700, 2018, 5703}, {3989, 5694, 4442, 5707, 5700, 2018, 5707}, {5710, 5718, 5727, 5736, 5745, 5752, 5760, 5768, 5778, 5789, 2504, 2513, 0}, {5710, 5718, 5727, 5736, 5745, 5752, 5760, 5768, 5778, 5789, 2504, 2513, 0}, {5798, 5803, 5809, 5816, 5822, 5828, 5834, 5840, 5845, 5852, 1110, 5857, 0}, {5798, 5803, 5809, 5816, 5822, 5828, 5834, 5840, 5845, 5852, 1110, 5857, 0}, 2, 1, 691, 187, {5862,5874,1692,5888,0,0,0,0,0,0,0,0,0,0},{5897,0,0,0,0,0,0,0,0,0},{843,251,3594,0,0,0,0,0,0,0,0,0},{848,269,3602,0,0,0,0,0,0},{5911,0,0,0,0,0,0,0}},
-       {1921, 5922, 5927, {5932, 5943, 5954, 5968, 5982, 5994, 6006}, {6018, 6023, 6029, 6035, 6041, 6046, 6052}, {2023, 2428, 6057, 2428, 2434, 2434, 2436}, {6060, 6068, 4887, 6077, 6084, 6089, 6096, 6103, 2486, 5789, 6111, 6121, 0}, {6060, 6068, 4887, 6077, 6084, 6089, 6096, 6103, 2486, 5789, 6111, 6121, 0}, {5798, 1081, 4845, 6130, 6084, 5828, 5834, 6135, 6142, 5852, 6147, 1115, 0}, {5798, 1081, 4845, 6130, 6084, 5828, 5834, 6135, 6142, 5852, 6147, 1115, 0}, 2, 1, 691, 187, {4753,1167,6153,6165,1692,6179,189,0,0,0,0,0,0,0},{2300,4769,6188,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {6207, 6216, 6224, 6233, 6244, 6253, 6262}, {6269, 6273, 2530, 6277, 6281, 6285, 6289}, {2673, 2436, 2428, 2428, 6293, 3989, 2023}, {6295, 6303, 4005, 6312, 6319, 6326, 6333, 4034, 6340, 6350, 6358, 6367, 0}, {6376, 6384, 4094, 6393, 6400, 6407, 6414, 4117, 6421, 6431, 1058, 6439, 0}, {6448, 2526, 2530, 2534, 6452, 6456, 6460, 6464, 6468, 6472, 2558, 6476, 0}, {6448, 2526, 2530, 2534, 6452, 6456, 6460, 6464, 6468, 6472, 2558, 6476, 0}, 2, 1, 185, 187, {198,3582,189,6480,2286,0,0,0,0,0,0,0,0,0},{4985,6488,1242,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1327, 6497, 6504, {6511, 6521, 6531, 6541, 6551, 6561, 6571}, {1473, 6581, 6585, 6589, 6593, 6597, 6601}, {1473, 6581, 6585, 6589, 6593, 6597, 6601}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, 0, 0, 185, 187, {1681,1735,1714,1654,1692,0,0,0,0,0,0,0,0,0},{1744,6632,6656,6683,6712,6736,6765,6785,0,0},{843,251,1858,1866,0,0,0,0,0,0,0,0},{848,269,1875,1886,0,0,0,0,0},{1898,0,0,0,0,0,0,0}},
-       {6810, 6824, 6831, {6838, 6848, 6858, 6868, 6878, 6888, 6898}, {6908, 6912, 6916, 6920, 6924, 6928, 6932}, {6908, 6912, 6916, 6920, 6924, 6928, 6932}, {6936, 6941, 6946, 6951, 6956, 6961, 6966, 6971, 6976, 6981, 6987, 6993, 0}, {6936, 6941, 6946, 6951, 6956, 6961, 6966, 6971, 6976, 6981, 6987, 6993, 0}, {6936, 6941, 6946, 6951, 6956, 6961, 6966, 6971, 6976, 6981, 6987, 6993, 0}, {6936, 6941, 6946, 6951, 6956, 6961, 6966, 6971, 6976, 6981, 6987, 6993, 0}, 0, 0, 2566, 187, {1692,5888,1721,1663,0,0,0,0,0,0,0,0,0,0},{6999,7028,7052,7079,7101,7132,7158,7189,7215,7242},{1858,1866,843,251,0,0,0,0,0,0,0,0},{1875,1886,848,269,0,0,0,0,0},{7264,0,0,0,0,0,0,0}},
-       {289, 7281, 7286, {7291, 7298, 7306, 7314, 7323, 7333, 7341}, {7350, 4424, 7353, 7356, 7359, 7362, 7365}, {7368, 2428, 2673, 3705, 2673, 3989, 7368}, {7370, 7378, 7387, 2459, 7393, 2469, 2474, 7397, 2486, 2496, 2504, 2513, 0}, {7370, 7378, 7387, 2459, 7393, 2469, 2474, 7397, 2486, 2496, 2504, 2513, 0}, {2522, 2526, 7406, 2534, 7393, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 7406, 2534, 7393, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, 2, 1, 2566, 187, {7410,2293,1139,189,1167,7419,1692,0,0,0,0,0,0,0},{4985,6488,1242,5002,0,0,0,0,0,0},{251,843,2321,7431,7443,0,0,0,0,0,0,0},{269,848,7455,7470,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 7281, 7286, {2345, 2353, 2360, 2368, 2375, 2383, 2390}, {7485, 7490, 7494, 7498, 7502, 7506, 7510}, {2023, 2428, 2430, 2432, 2430, 2434, 2436}, {2438, 2445, 4887, 2459, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2438, 2445, 4887, 2459, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, 0, 0, 691, 187, {1156,7519,1167,4762,2804,1692,0,0,0,0,0,0,0,0},{2300,4769,0,0,0,0,0,0,0,0},{251,843,7529,7539,4288,2321,7550,7561,0,0,0,0},{269,848,7571,7585,4302,2337,7598,7612,0},{1301,7625,7635,0,0,0,0,0}},
-       {289, 1929, 1932, {7643, 7653, 7667, 7674, 7681, 7690, 1985}, {7698, 7705, 7710, 7714, 7719, 7724, 7728}, {2016, 2018, 3705, 7733, 7736, 2018, 2023}, {7738, 7747, 7752, 7759, 2465, 7769, 7778, 7785, 7795, 7805, 2102, 7818, 0}, {7828, 7837, 7844, 7850, 7859, 7864, 7872, 7878, 7887, 7897, 7911, 7921, 0}, {7929, 7933, 2530, 7937, 2465, 7941, 7945, 7949, 7953, 7957, 2255, 7962, 0}, {7929, 7933, 2530, 7937, 2465, 7941, 7945, 7949, 7953, 7957, 2255, 7962, 0}, 2, 1, 2566, 187, {1692,5888,0,0,0,0,0,0,0,0,0,0,0,0},{1242,5505,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3883, 1929, 1932, {3895, 7966, 7980, 7993, 8006, 8019, 3942}, {6269, 8031, 8035, 8039, 8043, 8047, 8051}, {2673, 2023, 2430, 8056, 8056, 2023, 2023}, {8058, 8066, 8076, 1012, 8083, 8088, 8094, 4117, 8100, 8109, 8117, 8126, 0}, {8058, 8066, 8076, 1012, 8083, 8088, 8094, 4117, 8100, 8109, 8117, 8126, 0}, {2522, 8135, 2530, 8139, 4898, 2538, 2542, 6464, 6468, 8143, 2558, 8147, 0}, {2522, 8135, 2530, 8139, 4898, 2538, 2542, 6464, 6468, 8143, 2558, 8147, 0}, 0, 0, 185, 187, {198,189,2277,2286,1139,1128,2293,7410,1167,1156,7419,4762,4753,1692},{4211,4266,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {289, 8151, 8154, {8157, 8166, 4798, 8176, 8184, 8192, 8201}, {8207, 8210, 4424, 8214, 8217, 8221, 2013}, {2673, 6293, 2428, 2428, 6293, 3989, 2023}, {8224, 8232, 4887, 8239, 8246, 8251, 8261, 8269, 8275, 8285, 2504, 2513, 0}, {8224, 8232, 4887, 8239, 8246, 8251, 8261, 8269, 8275, 8285, 2504, 2513, 0}, {8293, 8300, 4887, 4962, 8246, 8306, 8313, 8269, 8318, 1105, 1110, 5857, 0}, {8293, 8300, 4887, 4962, 8246, 8306, 8313, 8269, 8318, 1105, 1110, 5857, 0}, 2, 1, 2566, 187, {1128,1139,0,0,0,0,0,0,0,0,0,0,0,0},{8324,0,0,0,0,0,0,0,0,0},{251,843,8353,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 7281, 7286, {8356, 8366, 8371, 8378, 8387, 8391, 8398}, {8409, 8413, 3761, 8417, 8421, 8425, 8429}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {8434, 8443, 8453, 8460, 4898, 8468, 8474, 2479, 8480, 8491, 8501, 8511, 0}, {8434, 8443, 8453, 8460, 4898, 8468, 8474, 2479, 8480, 8491, 8501, 8511, 0}, {8521, 1081, 4845, 6130, 4898, 8526, 8531, 5840, 4973, 1105, 1110, 5857, 0}, {8521, 1081, 4845, 6130, 4898, 8526, 8531, 5840, 4973, 1105, 1110, 5857, 0}, 0, 1, 691, 187, {1156,4753,1176,1128,1139,8536,8551,1692,8564,0,0,0,0,0},{1242,1207,4985,8579,0,0,0,0,0,0},{843,251,3594,242,0,0,0,0,0,0,0,0},{848,269,3602,257,0,0,0,0,0},{1301,1311,8590,1320,7635,8598,8604,8614}},
-       {289, 8622, 8642, {8668, 8691, 352, 8714, 8725, 8740, 8755}, {8770, 8775, 8780, 8785, 8790, 8795, 8800}, {8805, 8808, 8805, 8811, 8814, 8808, 8811}, {8817, 8830, 8845, 8854, 8867, 8874, 8883, 8892, 8905, 8922, 8937, 8950, 0}, {8965, 8978, 8993, 9004, 9017, 9024, 9033, 9042, 9057, 9074, 9089, 9102, 0}, {9117, 9125, 8845, 9135, 8867, 8874, 8883, 9143, 9151, 9161, 9169, 9179, 0}, {9117, 9125, 8845, 9135, 8867, 8874, 8883, 9143, 9151, 9161, 9169, 9179, 0}, 0, 1, 691, 187, {1156,1167,4762,1128,189,0,0,0,0,0,0,0,0,0},{776,757,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 1929, 1932, {9187, 9196, 9208, 9215, 9223, 9233, 9239}, {9246, 9250, 9254, 9258, 9262, 9267, 9271}, {9275, 9277, 9279, 9281, 9283, 9277, 9281}, {9286, 9296, 9305, 9313, 9321, 9329, 9336, 9343, 9351, 2102, 9357, 9365, 0}, {9374, 9384, 9393, 9401, 9409, 9417, 9424, 9431, 9440, 7911, 9446, 9456, 0}, {9465, 9469, 9474, 9479, 9483, 7945, 2239, 9487, 9491, 2255, 9495, 2259, 0}, {9465, 9469, 9474, 9479, 9483, 7945, 2239, 9487, 9491, 2255, 9495, 2259, 0}, 0, 1, 691, 187, {9499,9509,6153,9517,9529,9539,9549,1692,0,0,0,0,0,0},{9561,9575,9590,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1921, 1929, 1932, {9610, 9618, 9627, 9634, 9641, 9650, 1985}, {1992, 1995, 9657, 2002, 9660, 9664, 2013}, {2016, 2018, 9667, 2023, 9669, 2018, 2023}, {5710, 5718, 9672, 6077, 9678, 9683, 9688, 2479, 2486, 5789, 2504, 2513, 0}, {9693, 9702, 7844, 9712, 9720, 9726, 9732, 9738, 9746, 9756, 9765, 9774, 0}, {2522, 2526, 2530, 2534, 9678, 9683, 9688, 2546, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 9678, 9683, 9688, 2546, 2550, 2554, 2558, 2562, 0}, 2, 1, 691, 187, {4753,1156,1167,1692,5888,9783,9796,9806,0,0,0,0,0,0},{2300,0,0,0,0,0,0,0,0,0},{843,251,2321,0,0,0,0,0,0,0,0,0},{848,269,2337,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 9817, 9826, {9834, 9841, 9850, 9859, 9871, 9879, 9888}, {9898, 9902, 3761, 9907, 9912, 9916, 9920}, {2673, 5694, 2428, 2428, 9924, 2018, 2023}, {9926, 9932, 4887, 9939, 2465, 9945, 9953, 9960, 9966, 9974, 9980, 9988, 0}, {9926, 9932, 4887, 9939, 2465, 9945, 9953, 9960, 9966, 9974, 9980, 9988, 0}, {2759, 9996, 3761, 10000, 10004, 10008, 10012, 10016, 9920, 10020, 10024, 10029, 0}, {2759, 9996, 3761, 10000, 10004, 10008, 10012, 10016, 9920, 10020, 10024, 10029, 0}, 0, 1, 691, 187, {4753,4762,0,0,0,0,0,0,0,0,0,0,0,0},{1207,0,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {10033, 10046, 10049, {10052, 10060, 10068, 2368, 2375, 2383, 10075}, {10083, 10088, 10093, 2411, 2415, 2419, 10097}, {2023, 2428, 2430, 2432, 2430, 2434, 2436}, {7370, 7378, 4887, 2459, 2465, 2469, 2474, 10102, 2486, 2496, 2504, 2513, 0}, {7370, 7378, 4887, 2459, 2465, 2469, 2474, 10102, 2486, 2496, 2504, 2513, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, 2, 1, 2566, 187, {1692,5888,0,0,0,0,0,0,0,0,0,0,0,0},{10110,10128,0,0,0,0,0,0,0,0},{251,843,7529,0,0,0,0,0,0,0,0,0},{269,848,7585,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, 0, 0, 185, 187, {2277,2286,189,198,8579,10151,1692,0,0,0,0,0,0,0},{1242,10163,10179,0,0,0,0,0,0,0},{843,251,3594,242,0,0,0,0,0,0,0,0},{848,269,3602,257,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 10221, 10226, {10230, 10236, 10246, 10252, 10263, 10273, 10278}, {10288, 10292, 10296, 10300, 10305, 10309, 10313}, {2018, 2018, 2023, 10317, 2018, 7736, 7736}, {10320, 10325, 10332, 10337, 10343, 10350, 10358, 10365, 10374, 10381, 10386, 10393, 0}, {10320, 10325, 10332, 10337, 10343, 10350, 10358, 10365, 10374, 10381, 10386, 10393, 0}, {10401, 10405, 3761, 10410, 3730, 10414, 10418, 10422, 10427, 10431, 10435, 10439, 0}, {10401, 10405, 3761, 10410, 3730, 10414, 10418, 10422, 10427, 10431, 10435, 10439, 0}, 0, 1, 691, 187, {4753,4762,1156,1167,0,0,0,0,0,0,0,0,0,0},{10443,1242,10460,5505,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1, 10478, 10496, {10514, 10525, 10538, 10547, 10554, 10567, 10576}, {10514, 10525, 10538, 10547, 10554, 10567, 10576}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {10585, 10596, 10607, 10616, 10627, 10634, 10641, 10654, 10663, 10674, 10687, 10698, 0}, {10585, 10596, 10607, 10616, 10627, 10634, 10641, 10654, 10663, 10674, 10687, 10698, 0}, {10585, 10596, 10607, 10616, 10627, 10634, 10641, 10654, 10663, 10674, 10687, 10698, 0}, {10585, 10596, 10607, 10616, 10627, 10634, 10641, 10654, 10663, 10674, 10687, 10698, 0}, 0, 0, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 1929, 1932, {10723, 10730, 10736, 10743, 10748, 10754, 10760}, {10766, 10770, 10774, 10778, 10782, 10786, 10790}, {2428, 2023, 2023, 10794, 4442, 3987, 2023}, {10796, 10804, 10813, 2696, 10819, 2706, 2711, 10823, 2723, 2733, 2741, 10831, 0}, {10796, 10804, 10813, 2696, 10819, 2706, 2711, 10823, 2723, 2733, 2741, 10831, 0}, {2759, 2763, 3761, 2772, 10819, 2776, 2780, 10840, 2788, 2792, 2796, 10844, 0}, {2759, 2763, 3761, 2772, 10819, 2776, 2780, 10840, 2788, 2792, 2796, 10844, 0}, 0, 0, 185, 187, {198,189,1128,0,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 10848, 10853, {10858, 10871, 10890, 10907, 10920, 10933, 10950}, {10963, 8775, 8780, 8785, 8790, 8795, 8800}, {10968, 8808, 8805, 8811, 8814, 8808, 8811}, {10971, 10984, 10995, 11012, 11027, 11042, 11057, 11070, 11085, 11102, 11117, 11134, 0}, {11149, 11160, 11173, 11188, 11201, 11214, 11227, 11238, 11251, 11266, 11279, 11298, 0}, {11311, 11318, 11325, 11332, 11339, 11346, 11353, 11360, 11367, 11374, 11381, 11388, 0}, {11311, 11318, 11325, 11332, 11339, 11346, 11353, 11360, 11367, 11374, 11381, 11388, 0}, 0, 1, 691, 187, {1156,1167,1692,0,0,0,0,0,0,0,0,0,0,0},{11395,0,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{11413,0,0,0,0,0,0,0}},
-       {289, 11429, 11442, {11455, 11470, 11491, 11506, 11519, 11532, 10950}, {421, 426, 11547, 436, 11552, 446, 451}, {456, 459, 11557, 465, 468, 459, 465}, {11560, 11577, 11586, 11601, 521, 11618, 11633, 11646, 11661, 11678, 11699, 11716, 0}, {11731, 11748, 11761, 11778, 9017, 11797, 11812, 11825, 11838, 11853, 11876, 11895, 0}, {11908, 11915, 11922, 11929, 521, 11936, 11943, 11950, 11957, 11964, 11971, 11978, 0}, {11908, 11915, 11922, 11929, 521, 11936, 11943, 11950, 11957, 11964, 11971, 11978, 0}, 0, 0, 691, 187, {1167,0,0,0,0,0,0,0,0,0,0,0,0,0},{1242,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 11985, 11990, {11995, 12003, 12014, 12020, 12026, 12035, 1985}, {9246, 9250, 2415, 12041, 9262, 9267, 12045}, {9275, 9277, 12049, 9281, 9283, 9277, 9281}, {2438, 2445, 9672, 2459, 2465, 12051, 12057, 12063, 2486, 2496, 2504, 2513, 0}, {2438, 2445, 9672, 2459, 2465, 12051, 12057, 12063, 2486, 2496, 2504, 2513, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, 0, 1, 691, 187, {4753,4762,2266,1156,12074,1167,9806,0,0,0,0,0,0,0},{2300,4769,2818,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {12084, 12093, 12098, {12103, 12114, 12125, 12136, 12147, 12158, 12164}, {2018, 9924, 2430, 4442, 2016, 10794, 2436}, {2018, 9924, 2430, 4442, 2016, 10794, 2436}, {12173, 12181, 12190, 12197, 4898, 12204, 12210, 2479, 2486, 12216, 2504, 12225, 0}, {12173, 12181, 12190, 12197, 4898, 12204, 12210, 2479, 2486, 12216, 2504, 12225, 0}, {12235, 12240, 12190, 2534, 4898, 12204, 12210, 2546, 12246, 2554, 2558, 12251, 0}, {12235, 12240, 12190, 2534, 4898, 12204, 12210, 2546, 12246, 2554, 2558, 12251, 0}, 2, 1, 691, 187, {7519,1156,1167,1692,0,0,0,0,0,0,0,0,0,0},{2300,4769,2818,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 12256, 12273, {12287, 12298, 12308, 12317, 12328, 12340, 12351}, {12361, 12364, 12367, 12370, 12373, 12376, 12379}, {2023, 2018, 2432, 2430, 7736, 2018, 2023}, {12382, 12392, 12403, 12409, 12418, 12424, 12432, 12440, 12448, 12459, 12468, 12478, 0}, {12488, 12498, 2453, 12509, 12518, 12524, 12532, 12540, 12548, 12559, 12568, 12578, 0}, {12588, 12594, 12403, 12600, 12418, 12605, 12611, 12617, 4190, 12622, 4201, 12627, 0}, {12588, 12594, 12403, 12600, 12418, 12605, 12611, 12617, 4190, 12622, 4201, 12627, 0}, 0, 1, 691, 187, {9517,9539,12632,0,0,0,0,0,0,0,0,0,0,0},{12644,0,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{12671,0,0,0,0,0,0,0}},
-       {12689, 12701, 11990, {12707, 12719, 12731, 12743, 12757, 12772, 12785}, {12799, 12802, 12805, 12808, 12811, 12814, 9660}, {2023, 2018, 12817, 2430, 4442, 2018, 9669}, {12819, 12826, 12834, 12840, 12849, 12858, 12868, 12874, 12885, 12895, 12902, 12912, 0}, {12819, 12826, 12834, 12840, 12849, 12858, 12868, 12874, 12885, 12895, 12902, 12912, 0}, {12920, 12926, 12931, 12936, 12941, 12946, 12953, 12959, 12965, 12971, 12977, 12984, 0}, {12920, 12926, 12931, 12936, 12941, 12946, 12953, 12959, 12965, 12971, 12977, 12984, 0}, 2, 1, 2566, 187, {1692,2568,0,0,0,0,0,0,0,0,0,0,0,0},{12991,0,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{13013,0,0,0,0,0,0,0}},
-       {1, 13028, 13040, {13052, 13067, 13082, 13097, 13114, 13133, 13144}, {13155, 13162, 13169, 13176, 13183, 13190, 13197}, {0, 0, 0, 0, 0, 0, 0}, {13204, 13215, 8845, 13228, 8867, 13239, 13246, 8892, 13253, 13268, 13281, 13292, 0}, {13204, 13215, 8845, 13228, 8867, 13239, 13246, 8892, 13253, 13268, 13281, 13292, 0}, {13305, 13312, 13319, 13326, 8867, 13239, 13246, 13333, 13340, 13347, 13354, 13361, 0}, {13305, 13312, 13319, 13326, 8867, 13239, 13246, 13333, 13340, 13347, 13354, 13361, 0}, 0, 0, 691, 187, {1156,1167,4762,1128,189,0,0,0,0,0,0,0,0,0},{13368,13386,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 13405, 13425, {13442, 13455, 13468, 13484, 13501, 13516, 13525}, {13442, 13455, 13468, 13484, 13501, 13516, 13525}, {13534, 13537, 13540, 13543, 13546, 13549, 13552}, {13555, 13568, 13579, 13588, 13599, 13604, 13613, 13624, 13631, 13646, 13657, 13670, 0}, {13683, 13698, 13579, 13588, 13711, 13604, 13718, 13624, 13631, 13646, 13657, 13670, 0}, {13555, 13568, 13579, 13588, 13599, 13604, 13613, 13624, 13631, 13646, 13657, 13670, 0}, {13555, 13568, 13579, 13588, 13599, 13604, 13613, 13624, 13631, 13646, 13657, 13670, 0}, 0, 6, 185, 187, {198,189,0,0,0,0,0,0,0,0,0,0,0,0},{13731,5505,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 13750, 13753, {13756, 13769, 13779, 13788, 13798, 13809, 13820}, {13832, 13835, 13840, 13845, 13850, 13855, 13860}, {13832, 13865, 13868, 13871, 13874, 13877, 13880}, {13883, 13892, 13901, 13910, 13919, 13928, 13937, 13946, 13955, 13964, 13974, 13984, 0}, {13994, 14003, 14012, 14021, 14030, 14039, 14048, 14057, 14066, 14075, 14085, 14095, 0}, {14105, 14111, 14117, 14123, 14129, 14135, 14141, 14147, 14153, 14159, 14166, 14173, 0}, {14105, 14111, 14117, 14123, 14129, 14135, 14141, 14147, 14153, 14159, 14166, 14173, 0}, 0, 1, 185, 187, {198,189,1139,1128,1692,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 14180, 14204, {14228, 14241, 14262, 14281, 14302, 14321, 14334}, {14345, 14352, 14359, 14366, 14373, 14380, 14387}, {14394, 14397, 14397, 14400, 14403, 14406, 14411}, {14414, 14429, 14444, 14453, 14464, 14475, 14488, 14501, 14516, 14535, 14554, 14571, 0}, {14590, 14607, 14624, 14635, 14648, 14661, 14676, 14691, 14708, 14729, 14750, 14769, 0}, {14790, 14797, 14804, 14811, 14818, 14825, 14832, 14839, 14846, 14853, 14860, 14867, 0}, {14790, 14797, 14804, 14811, 14818, 14825, 14832, 14839, 14846, 14853, 14860, 14867, 0}, 0, 1, 691, 187, {1156,1167,9796,198,14874,3582,1692,0,0,0,0,0,0,0},{3870,1207,13731,5505,14885,14896,14908,14925,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {14943, 14949, 14963, 14986, 15000, 15016, 15023}, {15032, 15035, 15040, 15046, 15050, 7736, 15055}, {6617, 6605, 6607, 6609, 6611, 6613, 6615}, {15059, 15066, 10332, 15073, 3730, 15079, 15085, 15091, 15098, 15107, 15115, 15122, 0}, {15129, 15136, 15143, 15148, 15154, 15158, 15163, 15168, 15175, 15184, 15192, 15199, 0}, {15206, 8135, 2530, 2534, 15154, 15210, 15214, 15218, 15222, 2554, 15226, 15230, 0}, {15206, 8135, 2530, 2534, 15154, 15210, 15214, 15218, 15222, 2554, 15226, 15230, 0}, 0, 0, 691, 187, {1156,1167,4762,189,1692,0,0,0,0,0,0,0,0,0},{15234,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {15256, 1929, 1932, {15271, 15279, 15290, 15300, 15311, 15320, 15329}, {15339, 15343, 15347, 15351, 15355, 15359, 15363}, {15367, 12817, 12817, 12817, 2432, 2432, 2436}, {15369, 15379, 15387, 15395, 15403, 15411, 15418, 15426, 15434, 15441, 15447, 15454, 0}, {15462, 15473, 15482, 15491, 15500, 15509, 15517, 15526, 15535, 15543, 15550, 15558, 0}, {15567, 15572, 4845, 15577, 15582, 15587, 15592, 15597, 15602, 15607, 15612, 15617, 0}, {15567, 15572, 4845, 15577, 15582, 15587, 15592, 15597, 15602, 15607, 15612, 15617, 0}, 2, 1, 185, 187, {1681,1692,0,0,0,0,0,0,0,0,0,0,0,0},{15622,0,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{15655,0,0,0,0,0,0,0}},
-       {289, 15672, 15693, {15710, 331, 352, 8714, 15723, 15740, 15751}, {15764, 15772, 15780, 15786, 15794, 15802, 15810}, {456, 459, 462, 465, 468, 459, 465}, {15818, 484, 501, 510, 15833, 15840, 15849, 542, 555, 574, 591, 606, 0}, {15818, 484, 501, 510, 15833, 15840, 15849, 542, 555, 574, 591, 606, 0}, {15858, 15866, 15874, 639, 15833, 15882, 15890, 647, 655, 665, 673, 683, 0}, {15858, 15866, 15874, 639, 15833, 15882, 15890, 647, 655, 665, 673, 683, 0}, 0, 1, 691, 187, {1156,1167,15898,0,0,0,0,0,0,0,0,0,0,0},{13731,0,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 0, 0, {15915, 15922, 15933, 15942, 15951, 15958, 15969}, {15979, 15983, 15987, 15991, 15995, 15998, 16002}, {0, 0, 0, 0, 0, 0, 0}, {16006, 16016, 16025, 16033, 16042, 16055, 16067, 16074, 16081, 16088, 16098, 16110, 0}, {16006, 16016, 16025, 16033, 16042, 16055, 16067, 16074, 16081, 16088, 16098, 16110, 0}, {16123, 16127, 16131, 16135, 16139, 16143, 16147, 16151, 16155, 16159, 16163, 16167, 0}, {16123, 16127, 16131, 16135, 16139, 16143, 16147, 16151, 16155, 16159, 16163, 16167, 0}, 0, 0, 185, 187, {189,1681,1735,1692,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{242,3594,251,0,0,0,0,0,0,0,0,0},{257,3602,269,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 0, 0, {16171, 16176, 16182, 16192, 16204, 16212, 16223}, {16232, 16236, 16240, 16244, 16248, 16252, 16256}, {0, 0, 0, 0, 0, 0, 0}, {16260, 16270, 16280, 16287, 16294, 2706, 16299, 16306, 16313, 16322, 16330, 16338, 0}, {16260, 16270, 16280, 16287, 16294, 2706, 16299, 16306, 16313, 16322, 16330, 16338, 0}, {2759, 2763, 16002, 16346, 16350, 2776, 2780, 16354, 2788, 2792, 2796, 16358, 0}, {2759, 2763, 16002, 16346, 16350, 2776, 2780, 16354, 2788, 2792, 2796, 16358, 0}, 0, 0, 185, 187, {1681,1735,1692,0,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{242,3594,251,0,0,0,0,0,0,0,0,0},{257,3602,269,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {16362, 16368, 16379, 16192, 16204, 16212, 16223}, {16389, 16393, 16397, 16244, 16248, 16252, 16256}, {2023, 2428, 16401, 2430, 2023, 5694, 2428}, {16403, 16413, 16424, 16431, 16440, 16446, 16452, 16460, 16468, 16479, 16489, 16498, 0}, {16507, 16270, 16516, 16522, 16294, 2706, 16299, 16306, 16529, 16322, 16330, 16338, 0}, {2759, 2763, 16539, 2772, 16350, 2776, 2780, 16354, 2788, 2792, 2796, 16358, 0}, {2759, 2763, 16539, 2772, 16350, 2776, 2780, 16354, 2788, 2792, 2796, 16358, 0}, 0, 0, 2566, 187, {1128,1139,189,1681,1735,1692,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{242,3594,251,0,0,0,0,0,0,0,0,0},{257,3602,269,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 16543, 16547, {16551, 16558, 16566, 16574, 16583, 16593, 16600}, {2652, 16609, 2658, 16612, 2664, 16615, 2670}, {2023, 2428, 2673, 3705, 2673, 3989, 2023}, {16618, 16627, 16637, 2696, 10819, 16643, 16649, 16655, 2723, 2733, 2741, 10831, 0}, {16618, 16627, 16637, 2696, 10819, 16643, 16649, 16655, 2723, 2733, 2741, 10831, 0}, {2759, 2763, 3761, 2772, 10819, 2776, 2780, 2784, 2788, 2792, 2796, 10844, 0}, {2759, 2763, 3761, 2772, 10819, 2776, 2780, 2784, 2788, 2792, 2796, 10844, 0}, 0, 0, 185, 187, {1681,1735,1692,16664,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{242,3594,251,0,0,0,0,0,0,0,0,0},{257,3602,269,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {16676, 16692, 16717, 16745, 16773, 16801, 16829}, {16848, 16858, 16868, 16878, 16888, 16898, 16908}, {16918, 16922, 16926, 16922, 16930, 16934, 16938}, {16942, 16964, 16992, 17008, 17027, 17043, 17062, 17081, 17103, 17134, 17162, 17187, 0}, {16942, 16964, 16992, 17008, 17027, 17043, 17062, 17081, 17103, 17134, 17162, 17187, 0}, {17215, 17225, 17235, 17245, 17255, 17265, 17275, 17285, 17295, 17305, 17315, 17325, 0}, {17215, 17225, 17235, 17245, 17255, 17265, 17275, 17285, 17295, 17305, 17315, 17325, 0}, 0, 1, 691, 187, {1156,1167,7419,1176,4762,4753,1692,0,0,0,0,0,0,0},{17335,17369,17402,3870,17436,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 17448, 17453, {5932, 17458, 17469, 17479, 17489, 17499, 17513}, {17525, 17529, 17534, 17539, 17543, 17548, 17553}, {2023, 2428, 2430, 2428, 5694, 2434, 2436}, {2438, 2445, 4887, 6077, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2438, 2445, 4887, 6077, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, 2, 1, 2566, 187, {1128,1139,1692,0,0,0,0,0,0,0,0,0,0,0},{2300,0,0,0,0,0,0,0,0,0},{251,4288,0,0,0,0,0,0,0,0,0,0},{269,4302,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1, 17557, 17573, {17583, 17602, 17621, 17643, 17662, 17684, 17709}, {17728, 17738, 17748, 17761, 17771, 17784, 17800}, {17810, 17814, 17821, 17828, 17835, 17842, 17849}, {17853, 17869, 17888, 17904, 17923, 17930, 17940, 17956, 17972, 17991, 18013, 18029, 0}, {17853, 17869, 17888, 17904, 17923, 17930, 17940, 17956, 17972, 17991, 18013, 18029, 0}, {18048, 18055, 17888, 18065, 17923, 17930, 18081, 18094, 18101, 18114, 18130, 18140, 0}, {18048, 18055, 17888, 18065, 17923, 17930, 18081, 18094, 18101, 18114, 18130, 18140, 0}, 0, 0, 2566, 187, {1128,1139,2293,4762,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {18153, 18167, 18170, {18173, 18182, 18191, 18201, 18211, 18221, 18233}, {18241, 18246, 18250, 18254, 18258, 18263, 18268}, {18272, 2430, 2430, 9924, 18272, 18275, 2023}, {18278, 18285, 18290, 2696, 18296, 18302, 18309, 18315, 18323, 18333, 18341, 18350, 0}, {18278, 18285, 18290, 2696, 18296, 18302, 18309, 18315, 18323, 18333, 18341, 18350, 0}, {2759, 18360, 3761, 2772, 18364, 18368, 18373, 18377, 18381, 18385, 2796, 18389, 0}, {2759, 18360, 3761, 2772, 18364, 18368, 18373, 18377, 18381, 18385, 2796, 18389, 0}, 0, 0, 185, 187, {198,1692,18394,7410,2277,0,0,0,0,0,0,0,0,0},{18403,18428,10151,0,0,0,0,0,0,0},{251,3594,843,0,0,0,0,0,0,0,0,0},{269,3602,848,3594,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {18447, 18460, 18465, {18470, 18482, 18493, 18507, 18519, 18529, 18539}, {18550, 18555, 18560, 18565, 18570, 18575, 18580}, {2023, 3989, 2428, 6293, 2673, 16401, 2436}, {18585, 18602, 18615, 18629, 18642, 18655, 18668, 18682, 18694, 18708, 18722, 18736, 0}, {18585, 18602, 18615, 18629, 18642, 18655, 18668, 18682, 18694, 18708, 18722, 18736, 0}, {18749, 18756, 18761, 18766, 18770, 18775, 18780, 18785, 18790, 18797, 18802, 18808, 0}, {18749, 18756, 18761, 18766, 18770, 18775, 18780, 18785, 18790, 18797, 18802, 18808, 0}, 2, 1, 691, 187, {1156,1167,4762,1692,0,0,0,0,0,0,0,0,0,0},{18813,18837,0,0,0,0,0,0,0,0},{251,843,4288,0,0,0,0,0,0,0,0,0},{269,848,4302,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 7281, 7286, {18855, 18869, 18879, 18890, 18904, 18915, 18926}, {18939, 18944, 18949, 18956, 18962, 18968, 18974}, {2673, 2436, 2428, 7736, 2673, 12817, 2023}, {18979, 18987, 18995, 19002, 19011, 19021, 19031, 19037, 19045, 19060, 19078, 19086, 0}, {18979, 18987, 18995, 19002, 19011, 19021, 19031, 19037, 19045, 19060, 19078, 19086, 0}, {19094, 19098, 18995, 19104, 19108, 19113, 19031, 19119, 19124, 19131, 19138, 19143, 0}, {19094, 19098, 18995, 19104, 19108, 19113, 19031, 19119, 19124, 19131, 19138, 19143, 0}, 2, 0, 185, 187, {198,189,2286,4762,1692,0,0,0,0,0,0,0,0,0},{1242,5505,10151,8579,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1, 19148, 19151, {19155, 19160, 10736, 10743, 19166, 19173, 10760}, {19180, 19184, 10774, 10778, 19188, 10786, 10790}, {12817, 15367, 2023, 10794, 4442, 3987, 2023}, {10796, 10804, 19192, 2696, 10819, 2776, 19196, 19202, 2723, 2733, 2741, 19207, 0}, {10796, 10804, 19192, 2696, 10819, 2776, 19196, 19202, 2723, 2733, 2741, 19207, 0}, {2759, 2763, 19192, 2772, 10819, 2776, 2780, 19216, 2788, 2792, 2796, 16358, 0}, {2759, 2763, 19192, 2772, 10819, 2776, 2780, 19216, 2788, 2792, 2796, 16358, 0}, 0, 0, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 19220, 19242, {19266, 19281, 19298, 19315, 19332, 19349, 19358}, {19369, 19375, 19381, 19387, 19393, 19399, 19405}, {19411, 19414, 8811, 8811, 19417, 19411, 8811}, {19420, 19433, 19444, 19457, 19468, 19479, 19492, 19503, 19514, 19531, 19542, 19555, 0}, {19420, 19433, 19444, 19457, 19468, 19479, 19492, 19503, 19514, 19531, 19542, 19555, 0}, {19574, 19582, 19590, 19598, 19606, 19614, 19622, 19630, 19638, 19646, 19654, 19662, 0}, {19574, 19582, 19590, 19598, 19606, 19614, 19622, 19630, 19638, 19646, 19654, 19662, 0}, 0, 0, 2566, 187, {6488,0,0,0,0,0,0,0,0,0,0,0,0,0},{19672,19690,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {19709, 19718, 19744, {19772, 19779, 19786, 19793, 19800, 19807, 19814}, {19772, 19779, 19786, 19793, 19800, 19807, 19814}, {19411, 19414, 19821, 19821, 19417, 19411, 19824}, {19827, 19840, 501, 19855, 521, 19868, 19877, 542, 19886, 19903, 19918, 19931, 0}, {19827, 19840, 501, 19855, 521, 19868, 19877, 542, 19886, 19903, 19918, 19931, 0}, {19946, 15866, 15874, 639, 521, 19954, 19962, 647, 19970, 665, 19978, 683, 0}, {19946, 15866, 15874, 639, 521, 19954, 19962, 647, 19970, 665, 19978, 683, 0}, 0, 0, 2566, 187, {19986,0,0,0,0,0,0,0,0,0,0,0,0,0},{19995,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{20016,0,0,0,0,0,0,0}},
-       {20032, 1929, 1932, {20040, 20049, 20058, 20066, 20075, 20084, 20091}, {20100, 20103, 20106, 20109, 20112, 20116, 20119}, {6607, 6609, 6611, 6613, 12817, 15367, 6605}, {10796, 10804, 20122, 20128, 10819, 2706, 19196, 20135, 16313, 20142, 16330, 20149, 0}, {10796, 10804, 20122, 20128, 10819, 2706, 19196, 20135, 16313, 20142, 16330, 20149, 0}, {2759, 2763, 19192, 2772, 10819, 2776, 2780, 20157, 2788, 2792, 2796, 10844, 0}, {2759, 2763, 19192, 2772, 10819, 2776, 2780, 20157, 2788, 2792, 2796, 10844, 0}, 0, 0, 185, 187, {3773,3782,3789,3798,1735,1692,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {20195, 1929, 1932, {20202, 20212, 20221, 20230, 20241, 20251, 20256}, {20263, 20269, 20274, 20279, 20284, 10786, 20288}, {20293, 2673, 2023, 7736, 2018, 3987, 2023}, {15059, 15066, 10332, 15073, 3730, 20295, 20300, 20305, 15098, 15107, 15115, 15122, 0}, {15059, 15066, 10332, 15073, 3730, 20295, 20300, 20305, 15098, 15107, 15115, 15122, 0}, {20312, 20317, 3761, 2772, 3730, 20295, 20300, 20321, 10770, 2792, 20325, 20330, 0}, {20312, 20317, 3761, 2772, 3730, 20295, 20300, 20321, 10770, 2792, 20325, 20330, 0}, 0, 0, 691, 187, {1156,0,0,0,0,0,0,0,0,0,0,0,0,0},{20334,1242,5505,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 20352, 20380, {20402, 20421, 20440, 20465, 20484, 20518, 20543}, {20562, 20572, 20582, 20598, 20608, 20633, 20649}, {20659, 20663, 20670, 20674, 20681, 20688, 20695}, {20699, 20727, 20761, 20777, 20796, 20803, 20813, 20829, 20845, 20876, 20898, 20920, 0}, {20699, 20727, 20761, 20777, 20796, 20803, 20813, 20829, 20845, 20876, 20898, 20920, 0}, {20699, 20727, 20761, 20777, 20796, 20803, 20813, 20829, 20845, 20876, 20898, 20920, 0}, {20699, 20727, 20761, 20777, 20796, 20803, 20813, 20829, 20845, 20876, 20898, 20920, 0}, 0, 1, 2566, 187, {1139,2293,1128,20945,20958,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{4288,2321,20973,20982,0,0,0,0,0,0,0,0},{4302,2337,20990,21002,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 1929, 1932, {21013, 21029, 21048, 21070, 21089, 21108, 21136}, {21158, 21166, 21177, 21191, 21202, 21213, 21233}, {21247, 21251, 21258, 21265, 21275, 21282, 21295}, {21302, 21318, 21337, 21350, 21369, 21376, 21386, 21402, 21415, 21431, 21450, 21466, 0}, {21302, 21318, 21337, 21350, 21369, 21376, 21386, 21402, 21415, 21431, 21450, 21466, 0}, {21302, 21318, 21337, 21350, 21369, 21376, 21386, 21402, 21415, 21431, 21450, 21466, 0}, {21302, 21318, 21337, 21350, 21369, 21376, 21386, 21402, 21415, 21431, 21450, 21466, 0}, 0, 0, 2566, 187, {1139,2293,4762,1128,1692,0,0,0,0,0,0,0,0,0},{10460,1242,0,0,0,0,0,0,0,0},{1866,1858,843,251,0,0,0,0,0,0,0,0},{1886,1875,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 1929, 1932, {21482, 21501, 21520, 21542, 21561, 21583, 21608}, {21627, 21637, 21647, 21660, 21670, 21683, 21699}, {21709, 21713, 21720, 21727, 21734, 21741, 21748}, {21752, 21780, 21808, 21824, 21843, 21850, 21860, 21876, 21892, 21920, 21942, 21964, 0}, {21752, 21780, 21808, 21824, 21843, 21850, 21860, 21876, 21892, 21920, 21942, 21964, 0}, {21989, 22008, 21808, 21824, 21843, 21850, 21860, 22027, 22034, 22050, 22066, 22076, 0}, {21989, 22008, 21808, 21824, 21843, 21850, 21860, 22027, 22034, 22050, 22066, 22076, 0}, 0, 0, 2566, 187, {1139,2293,4762,1128,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 8151, 22089, {22092, 22111, 22130, 22155, 22174, 22196, 22221}, {22240, 22250, 22260, 22276, 22286, 22299, 22315}, {22325, 22329, 22336, 22340, 22347, 22354, 22361}, {22365, 22387, 22418, 22440, 22459, 22466, 22476, 22492, 22508, 22539, 22561, 22583, 0}, {22365, 22387, 22418, 22440, 22459, 22466, 22476, 22492, 22508, 22539, 22561, 22583, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, 0, 0, 2566, 187, {1139,2293,4762,1128,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 22608, 22633, {22658, 22677, 22699, 22724, 22740, 22762, 22781}, {22791, 22798, 22805, 22812, 22819, 22826, 22833}, {22791, 22798, 22805, 22812, 22819, 22826, 22833}, {22837, 22853, 22878, 22897, 22916, 22923, 22936, 22949, 22968, 22999, 23024, 23046, 0}, {22837, 22853, 22878, 22897, 22916, 22923, 22936, 23071, 22968, 22999, 23024, 23046, 0}, {23090, 23098, 23112, 23126, 22916, 22923, 22936, 23137, 23145, 23159, 23170, 23178, 0}, {23090, 23098, 23112, 23126, 22916, 22923, 22936, 23137, 23145, 23159, 23170, 23178, 0}, 0, 0, 2566, 187, {1128,1139,2293,4762,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3613, 1929, 1932, {23189, 23211, 23233, 23258, 23280, 23305, 23333}, {23355, 23365, 23375, 23388, 23398, 23411, 23427}, {23437, 23441, 23448, 23452, 23459, 23466, 23473}, {23477, 23493, 23518, 23537, 23559, 23566, 23579, 23592, 23611, 23642, 23667, 23686, 0}, {23477, 23493, 23518, 23537, 23559, 23566, 23711, 23592, 23611, 23642, 23667, 23686, 0}, {23724, 23731, 23518, 23747, 23559, 23566, 23711, 23592, 23763, 23785, 23801, 23811, 0}, {23724, 23731, 23518, 23747, 23559, 23566, 23711, 23592, 23763, 23785, 23801, 23811, 0}, 0, 0, 2566, 187, {1139,2293,4762,1128,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {3613, 1929, 1932, {23827, 23846, 23865, 23887, 23906, 23928, 23953}, {23972, 23982, 23992, 24005, 24015, 24028, 24044}, {24054, 24058, 24065, 24072, 24079, 24086, 24093}, {24097, 24113, 24138, 24157, 24179, 24186, 24199, 24212, 24231, 24259, 24284, 24306, 0}, {24097, 24113, 24138, 24157, 24179, 24186, 24199, 24212, 24231, 24259, 24284, 24306, 0}, {24331, 24339, 24359, 24366, 24179, 24383, 24390, 24398, 24406, 24429, 24446, 24460, 0}, {24331, 24339, 24359, 24366, 24179, 24383, 24390, 24398, 24406, 24429, 24446, 24460, 0}, 0, 0, 2566, 187, {1139,2293,4762,1128,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {20032, 1929, 1932, {24477, 24505, 24539, 24567, 24595, 24626, 24663}, {24691, 24704, 24723, 24739, 24752, 24771, 24790}, {24800, 24807, 24814, 24821, 24828, 24841, 24848}, {24852, 24871, 24899, 24921, 24940, 24953, 24963, 24976, 25001, 25032, 25057, 25073, 0}, {24852, 24871, 24899, 24921, 24940, 24953, 24963, 24976, 25001, 25032, 25057, 25073, 0}, {25092, 25102, 25121, 25131, 24940, 24953, 24963, 25147, 25154, 25179, 25195, 25205, 0}, {25092, 25102, 25121, 25131, 24940, 24953, 24963, 25147, 25154, 25179, 25195, 25205, 0}, 0, 0, 2566, 187, {1139,2293,1167,4762,0,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{4288,2321,20973,20982,0,0,0,0,0,0,0,0},{4302,2337,20990,21002,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 25218, 25246, {25268, 25287, 25306, 25331, 25350, 25384, 25409}, {25428, 20572, 20582, 20598, 25438, 25463, 20649}, {0, 0, 0, 0, 0, 0, 0}, {25479, 25504, 25535, 25551, 20796, 20803, 20813, 25570, 25586, 25617, 25639, 25661, 0}, {25479, 25504, 25535, 25551, 20796, 20803, 20813, 25570, 25586, 25617, 25639, 25661, 0}, {25686, 25699, 25535, 25551, 20796, 20803, 20813, 25718, 25725, 25741, 25757, 25767, 0}, {25686, 25699, 25535, 25551, 20796, 20803, 20813, 25718, 25725, 25741, 25757, 25767, 0}, 0, 0, 2566, 187, {1128,0,0,0,0,0,0,0,0,0,0,0,0,0},{25780,0,0,0,0,0,0,0,0,0},{1858,1866,0,0,0,0,0,0,0,0,0,0},{1875,1886,0,0,0,0,0,0,0},{25799,25807,0,0,0,0,0,0}},
-       {1, 1929, 1932, {17583, 17602, 25817, 17643, 17662, 17684, 17709}, {17728, 17738, 25839, 17761, 17771, 17784, 17800}, {17810, 17814, 17821, 17828, 17835, 17842, 17849}, {25852, 25877, 17888, 25908, 25927, 17930, 25934, 25947, 25963, 25988, 26010, 26038, 0}, {25852, 25877, 17888, 25908, 25927, 17930, 25934, 25947, 25963, 25988, 26010, 26038, 0}, {26060, 26073, 17888, 26092, 25927, 17930, 25934, 26108, 26115, 26134, 26150, 26172, 0}, {26060, 26073, 17888, 26092, 25927, 17930, 25934, 26108, 26115, 26134, 26150, 26172, 0}, 0, 0, 2566, 187, {1128,1139,2293,4762,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {5619, 26188, 26193, {26198, 26205, 26216, 26229, 26242, 26253, 26266}, {26277, 26282, 26287, 26292, 26297, 26302, 26307}, {6605, 6607, 6609, 6611, 6613, 6615, 6617}, {26312, 26338, 26366, 26396, 26426, 26452, 26482, 26508, 26536, 26560, 26588, 26625, 0}, {26312, 26338, 26366, 26396, 26426, 26452, 26482, 26508, 26536, 26560, 26588, 26625, 0}, {26664, 26676, 26688, 26700, 26712, 26724, 26736, 26748, 26760, 26772, 26785, 26798, 0}, {26664, 26676, 26688, 26700, 26712, 26724, 26736, 26748, 26760, 26772, 26785, 26798, 0}, 0, 0, 2566, 187, {1692,0,0,0,0,0,0,0,0,0,0,0,0,0},{26811,26865,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{26901,0,0,0,0,0,0,0}},
-       {26920, 26944, 26966, {26991, 27019, 27047, 27084, 27115, 27149, 27174}, {27208, 27224, 27240, 27265, 27284, 27306, 27319}, {27341, 27348, 27355, 27362, 27369, 27376, 27380}, {27390, 27424, 27461, 27495, 27529, 27560, 27597, 27634, 27674, 27708, 27742, 27791, 0}, {27390, 27424, 27461, 27495, 27529, 27560, 27597, 27634, 27674, 27708, 27742, 27791, 0}, {27840, 27853, 27866, 27879, 27892, 27905, 27918, 27931, 27944, 27957, 27973, 27989, 0}, {27840, 27853, 27866, 27879, 27892, 27905, 27918, 27931, 27944, 27957, 27973, 27989, 0}, 0, 0, 185, 187, {1654,1663,1672,1703,1692,1681,1721,1714,1728,0,0,0,0,0},{28005,28048,28096,28128,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{28165,1914,0,0,0,0,0,0}},
-       {289, 1929, 1932, {28198, 28207, 28217, 28229, 28242, 28251, 28263}, {28275, 28279, 28284, 28288, 28292, 28296, 28300}, {2023, 28304, 2428, 2428, 15367, 6293, 2023}, {28307, 28314, 28323, 28330, 2702, 28337, 28345, 28356, 28361, 28366, 28373, 28382, 0}, {28307, 28314, 28323, 28330, 2702, 28337, 28345, 28356, 28361, 28366, 28373, 28382, 0}, {28390, 28394, 28284, 28398, 2702, 28402, 28406, 28356, 28361, 28410, 28414, 28419, 0}, {28390, 28394, 28284, 28398, 2702, 28402, 28406, 28356, 28361, 28410, 28414, 28419, 0}, 2, 1, 185, 187, {189,198,5002,8579,0,0,0,0,0,0,0,0,0,0},{1242,1207,0,0,0,0,0,0,0,0},{251,843,242,3594,0,0,0,0,0,0,0,0},{269,848,257,3602,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 28424, 28440, {28456, 28478, 28491, 28510, 28520, 28551, 28567}, {28456, 28478, 28491, 28510, 28520, 28551, 28567}, {6605, 6607, 6609, 6611, 6613, 6615, 6617}, {28580, 28593, 28612, 28625, 28638, 28651, 28670, 28689, 28702, 28718, 28731, 28756, 0}, {28580, 28593, 28612, 28625, 28638, 28651, 28670, 28689, 28702, 28718, 28731, 28756, 0}, {28580, 28593, 28612, 28625, 28638, 28651, 28670, 28689, 28702, 28718, 28731, 28756, 0}, {28580, 28593, 28612, 28625, 28638, 28651, 28670, 28689, 28702, 28718, 28731, 28756, 0}, 0, 0, 185, 187, {189,1692,0,0,0,0,0,0,0,0,0,0,0,0},{1242,10163,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{28769,0,0,0,0,0,0,0}},
-       {289, 28804, 28829, {28854, 28879, 28898, 28926, 28945, 28970, 28989}, {28854, 28879, 28898, 28926, 28945, 28970, 28989}, {29011, 29015, 29019, 29023, 29033, 29037, 29047}, {29051, 29070, 29086, 29099, 29112, 29134, 29153, 29175, 29191, 29207, 29220, 29236, 0}, {29051, 29070, 29086, 29099, 29112, 29134, 29153, 29175, 29191, 29207, 29220, 29236, 0}, {29252, 29261, 29270, 29279, 29288, 29297, 29309, 29318, 29327, 29336, 29345, 29354, 0}, {29252, 29261, 29270, 29279, 29288, 29297, 29309, 29318, 29327, 29336, 29345, 29354, 0}, 0, 0, 185, 187, {198,29363,6480,0,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3883, 7281, 7286, {3895, 29373, 3909, 29378, 29388, 29394, 3942}, {29401, 8413, 3761, 29405, 29410, 29414, 29418}, {2673, 2436, 2428, 2428, 29423, 3989, 2023}, {29425, 29433, 4005, 4011, 29442, 29447, 29453, 4034, 29459, 29468, 29476, 29485, 0}, {29494, 29502, 4094, 1012, 8083, 29511, 29517, 4117, 8100, 8109, 8117, 29523, 0}, {29532, 2763, 3761, 29536, 2702, 29540, 29545, 20157, 18381, 29549, 2796, 3769, 0}, {29532, 2763, 3761, 29536, 2702, 29540, 29545, 20157, 18381, 29549, 2796, 3769, 0}, 2, 1, 185, 187, {198,189,1120,2286,1139,1167,1692,0,0,0,0,0,0,0},{29553,4239,4266,1242,0,0,0,0,0,0},{843,251,242,29582,0,0,0,0,0,0,0,0},{848,269,257,29594,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {1, 29614, 29626, {29638, 17602, 29666, 17643, 17662, 17684, 17709}, {17728, 17738, 25839, 17761, 17771, 17784, 17800}, {0, 0, 0, 0, 0, 0, 0}, {25852, 25877, 17888, 25908, 25927, 17930, 25934, 29685, 29701, 29729, 26010, 26038, 0}, {25852, 25877, 17888, 25908, 25927, 17930, 25934, 29685, 29701, 29729, 26010, 26038, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, 0, 0, 2566, 187, {1128,1139,2293,4762,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {20032, 29751, 29763, {29772, 29788, 29804, 29832, 29848, 29891, 29916}, {29772, 29788, 29944, 29832, 29954, 29976, 29989}, {29999, 30003, 30007, 30011, 30015, 30028, 30035}, {30042, 30061, 30086, 30105, 30130, 30143, 30156, 30169, 30191, 30225, 30250, 30278, 0}, {30042, 30061, 30086, 30105, 30130, 30143, 30156, 30169, 30191, 30225, 30250, 30278, 0}, {30306, 30313, 30323, 30105, 30130, 30143, 30156, 30336, 30346, 30359, 30369, 30382, 0}, {30306, 30313, 30323, 30105, 30130, 30143, 30156, 30336, 30346, 30359, 30369, 30382, 0}, 0, 1, 2566, 187, {1692,1681,1735,198,189,0,0,0,0,0,0,0,0,0},{30395,0,0,0,0,0,0,0,0,0},{1858,1866,843,251,0,0,0,0,0,0,0,0},{1875,1886,848,269,0,0,0,0,0},{30443,0,0,0,0,0,0,0}},
-       {30453, 30469, 30479, {30492, 30502, 30509, 30522, 30532, 30542, 30552}, {30492, 30502, 30562, 30522, 30532, 30542, 30552}, {30572, 30576, 30580, 30584, 30588, 30592, 30596}, {30600, 30616, 30632, 30642, 30655, 30662, 30669, 30679, 30692, 30711, 30727, 30743, 0}, {30600, 30616, 30632, 30642, 30655, 30662, 30669, 30679, 30692, 30759, 30727, 30743, 0}, {30778, 30788, 30632, 30798, 30655, 30662, 30669, 30808, 30818, 30828, 30838, 30848, 0}, {30778, 30788, 30632, 30798, 30655, 30662, 30669, 30808, 30818, 30828, 30838, 30848, 0}, 0, 0, 185, 187, {2277,1692,0,0,0,0,0,0,0,0,0,0,0,0},{30858,0,0,0,0,0,0,0,0,0},{3594,0,0,0,0,0,0,0,0,0,0,0},{3602,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 30890, 30900, {30913, 30920, 30926, 30933, 30939, 30945, 30953}, {30963, 30967, 30971, 30975, 30979, 30983, 30987}, {12817, 12817, 12817, 12817, 12817, 12817, 12817}, {30993, 31002, 31011, 31016, 31022, 31028, 31034, 31041, 31047, 31056, 31065, 31073, 0}, {30993, 31002, 31011, 31016, 31022, 31028, 31034, 31041, 31047, 31056, 31065, 31073, 0}, {31082, 31086, 3761, 31090, 3730, 31094, 31098, 31102, 31107, 31111, 31117, 31121, 0}, {31082, 31086, 3761, 31090, 3730, 31094, 31098, 31102, 31107, 31111, 31117, 31121, 0}, 0, 0, 2566, 187, {1128,1139,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 31125, 31166, {31207, 31226, 31245, 31270, 31289, 31311, 31336}, {31355, 17738, 31365, 17761, 31381, 17784, 17800}, {31394, 17814, 31398, 17828, 31402, 17842, 17849}, {17853, 31409, 17888, 31437, 25927, 31456, 17940, 31466, 31482, 31513, 31535, 31560, 0}, {17853, 31409, 17888, 31437, 25927, 31456, 17940, 31466, 31482, 31513, 31535, 31560, 0}, {17853, 31409, 17888, 31437, 25927, 31456, 17940, 31466, 31482, 31513, 31535, 31560, 0}, {17853, 31409, 17888, 31437, 25927, 31456, 17940, 31466, 31482, 31513, 31535, 31560, 0}, 0, 0, 185, 187, {3773,3782,3789,3798,1735,1692,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{25807,0,0,0,0,0,0,0}},
-       {289, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {31585, 31592, 31601, 31616, 31627, 31636, 31643, 31650, 31657, 31668, 31681, 31694, 0}, {31585, 31592, 31601, 31616, 31627, 31636, 31643, 31650, 31657, 31668, 31681, 31694, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, 0, 6, 185, 187, {1654,1692,0,0,0,0,0,0,0,0,0,0,0,0},{31699,31720,0,0,0,0,0,0,0,0},{3594,843,0,0,0,0,0,0,0,0,0,0},{3602,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {31735, 1929, 1932, {31741, 31748, 31754, 31761, 31772, 31780, 31789}, {31796, 8413, 3761, 31800, 31804, 31808, 10790}, {2436, 2436, 2428, 2428, 5694, 16401, 2023}, {3991, 31812, 31820, 4011, 4017, 31826, 31832, 4034, 31838, 31848, 31856, 31866, 0}, {3991, 31812, 31820, 4011, 4017, 31826, 31832, 4034, 31838, 31848, 31856, 31866, 0}, {31876, 31880, 3761, 29536, 3730, 31884, 31888, 20157, 18381, 2792, 31892, 16358, 0}, {31876, 31880, 3761, 29536, 3730, 31884, 31888, 20157, 18381, 2792, 31892, 16358, 0}, 0, 0, 185, 187, {3773,3782,3789,3798,1735,1692,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 0, 0, {31896, 31903, 31911, 31918, 31925, 31933, 31941}, {31948, 31951, 31954, 31957, 31960, 31963, 31966}, {2436, 2436, 2430, 2436, 12817, 3987, 12817}, {31969, 31977, 31987, 31993, 32001, 32006, 32011, 32016, 32023, 20142, 32031, 32039, 0}, {31969, 31977, 31987, 31993, 32001, 32006, 32011, 32016, 32023, 20142, 32031, 32039, 0}, {2759, 32047, 3761, 32051, 3730, 31094, 31098, 32055, 3701, 2792, 32059, 16358, 0}, {2759, 32047, 3761, 32051, 3730, 31094, 31098, 32055, 3701, 2792, 32059, 16358, 0}, 0, 0, 185, 187, {2277,2286,189,198,1735,1692,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 32063, 32074, {32084, 32102, 32117, 32139, 32152, 32166, 32183}, {32207, 32215, 32220, 32139, 32152, 32232, 32239}, {0, 0, 0, 0, 0, 0, 0}, {32253, 32275, 32291, 32311, 32325, 32342, 32357, 32374, 32388, 32401, 32420, 32434, 0}, {32253, 32275, 32291, 32311, 32325, 32342, 32357, 32374, 32388, 32401, 32420, 32434, 0}, {32453, 32468, 32477, 32490, 32497, 32507, 32515, 32525, 32532, 32538, 32550, 32557, 0}, {32453, 32468, 32477, 32490, 32497, 32507, 32515, 32525, 32532, 32538, 32550, 32557, 0}, 0, 0, 185, 187, {2277,2286,189,198,1735,1692,3809,0,0,0,0,0,0,0},{222,20161,20181,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{25807,0,0,0,0,0,0,0}},
-       {3613, 0, 0, {32569, 32577, 15933, 15942, 15951, 32588, 32598}, {16389, 15983, 15987, 15991, 15995, 16252, 32607}, {0, 0, 0, 0, 0, 0, 0}, {32611, 32620, 32630, 32638, 10819, 3734, 32646, 32652, 32661, 32670, 32679, 32688, 0}, {32611, 32620, 32630, 32638, 10819, 3734, 32646, 32652, 32661, 32670, 32679, 32688, 0}, {2759, 2763, 16002, 32697, 10819, 2776, 2780, 20157, 18381, 2792, 32701, 16358, 0}, {2759, 2763, 16002, 32697, 10819, 2776, 2780, 20157, 18381, 2792, 32701, 16358, 0}, 0, 0, 185, 187, {189,1681,1735,1692,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{242,3594,251,0,0,0,0,0,0,0,0,0},{257,3602,269,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {32705, 32718, 32723, {32728, 32735, 32750, 32764, 32780, 32795, 32811}, {6289, 32826, 2530, 32830, 32834, 32838, 32842}, {2023, 12817, 2428, 2018, 2023, 2430, 12817}, {7370, 7378, 32846, 32853, 32860, 2469, 2474, 32865, 32875, 32886, 32895, 32905, 0}, {7370, 7378, 32846, 32853, 32860, 2469, 2474, 32865, 32875, 32886, 32895, 32905, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, 0, 0, 2566, 187, {1128,1139,1692,2568,0,0,0,0,0,0,0,0,0,0},{32915,2300,4769,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 32934, 32939, {32944, 32960, 32968, 32976, 32985, 32997, 33007}, {33017, 33023, 33029, 33033, 33037, 33045, 3701}, {0, 0, 0, 0, 0, 0, 0}, {33052, 33065, 33079, 33088, 33094, 33098, 33103, 33111, 16313, 33124, 16330, 16338, 0}, {33052, 33065, 33079, 33088, 33094, 33098, 33103, 33111, 16313, 33124, 16330, 16338, 0}, {33133, 2763, 33137, 16346, 33094, 33141, 2780, 33145, 2788, 33153, 2796, 16358, 0}, {33133, 2763, 33137, 16346, 33094, 33141, 2780, 33145, 2788, 33153, 2796, 16358, 0}, 0, 0, 185, 187, {2277,2286,189,198,1735,1692,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{2313,0,0,0,0,0,0,0,0,0,0,0},{2326,0,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {33159, 33186, 33193, {33200, 33210, 33220, 33230, 33240, 33250, 33260}, {33270, 33277, 33284, 33291, 33298, 33305, 33312}, {33319, 33323, 33327, 33331, 33335, 33339, 33343}, {33347, 33354, 33361, 33368, 33375, 33382, 33389, 33396, 33403, 33410, 33417, 33427, 0}, {33347, 33354, 33361, 33368, 33375, 33382, 33389, 33396, 33403, 33410, 33417, 33427, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, 0, 0, 185, 187, {1654,1663,1672,1703,1692,1681,0,0,0,0,0,0,0,0},{33437,33461,33491,33521,33538,0,0,0,0,0},{1858,843,251,0,0,0,0,0,0,0,0,0},{1875,848,269,0,0,0,0,0,0},{33561,1914,0,0,0,0,0,0}},
-       {289, 0, 0, {28275, 8413, 33578, 33585, 33595, 33600, 33607}, {33614, 6273, 33618, 4850, 33623, 33628, 33633}, {4421, 33638, 33641, 33644, 33647, 33650, 33653}, {33656, 33663, 33578, 33674, 33680, 33684, 33693, 33700, 33705, 33714, 33719, 33722, 0}, {33656, 33663, 33578, 33674, 33680, 33684, 33693, 33700, 33705, 33714, 33719, 33722, 0}, {33728, 33732, 33739, 28398, 33680, 33744, 33749, 33700, 33754, 33714, 33719, 33759, 0}, {33728, 33732, 33739, 28398, 33680, 33744, 33749, 33700, 33754, 33714, 33719, 33759, 0}, 2, 1, 185, 187, {198,189,1167,1139,1692,0,0,0,0,0,0,0,0,0},{4985,5002,1242,0,0,0,0,0,0,0},{251,843,4288,5011,5021,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 33763, 33768, {33773, 33781, 33791, 33801, 33810, 33820, 33828}, {33838, 33842, 33847, 33851, 33855, 33859, 33863}, {2023, 2428, 2673, 2428, 2673, 2434, 2023}, {2675, 2682, 2690, 2696, 2702, 2706, 2711, 33867, 33876, 33887, 33896, 33906, 0}, {2675, 2682, 2690, 2696, 2702, 2706, 2711, 33867, 33876, 33887, 33896, 33906, 0}, {2759, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, {2759, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, 0, 0, 185, 187, {198,189,1167,1139,1692,0,0,0,0,0,0,0,0,0},{4985,5002,1242,0,0,0,0,0,0,0},{251,843,4288,5011,5021,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {33916, 33934, 33939, {33944, 33969, 33998, 34023, 34036, 34051, 34068}, {34083, 34088, 34093, 34098, 34103, 34108, 8800}, {19417, 19417, 34113, 8811, 8814, 19417, 8811}, {34116, 34135, 34150, 34172, 34192, 34208, 34224, 34238, 34264, 34288, 34305, 34322, 0}, {34116, 34135, 34150, 34172, 34192, 34208, 34224, 34238, 34264, 34288, 34305, 34322, 0}, {34339, 34348, 34357, 34371, 34385, 34397, 34409, 34419, 34435, 34449, 34456, 34463, 0}, {34339, 34348, 34357, 34371, 34385, 34397, 34409, 34419, 34435, 34449, 34456, 34463, 0}, 0, 1, 691, 187, {1156,4753,1692,34470,34480,0,0,0,0,0,0,0,0,0},{34493,34528,34557,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{34592,0,0,0,0,0,0,0}},
-       {20032, 0, 0, {34608, 34620, 34631, 34643, 34655, 34665, 34677}, {34692, 34697, 34702, 34707, 34712, 34717, 34722}, {0, 0, 0, 0, 0, 0, 0}, {34727, 34736, 34748, 34756, 34761, 34771, 34778, 34787, 34794, 34800, 34809, 34820, 0}, {34727, 34736, 34748, 34756, 34761, 34771, 34778, 34787, 34794, 34800, 34809, 34820, 0}, {34828, 34833, 34838, 34843, 34848, 34853, 34858, 34712, 34863, 34868, 34873, 34878, 0}, {34828, 34833, 34838, 34843, 34848, 34853, 34858, 34712, 34863, 34868, 34873, 34878, 0}, 0, 0, 185, 187, {9796,2286,0,0,0,0,0,0,0,0,0,0,0,0},{34883,1207,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{848,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 34903, 34905, {34907, 34920, 34928, 34937, 34947, 34957, 34966}, {34978, 34982, 34986, 34990, 34994, 34998, 35002}, {2673, 2436, 2428, 7736, 12817, 5694, 2023}, {35006, 35020, 35031, 35040, 35051, 35063, 35077, 35089, 35102, 35115, 35127, 35140, 0}, {35006, 35020, 35031, 35040, 35051, 35063, 35077, 35089, 35102, 35115, 35127, 35140, 0}, {35154, 35159, 35165, 35171, 35176, 35182, 35188, 35193, 35199, 35204, 19138, 35210, 0}, {35154, 35159, 35165, 35171, 35176, 35182, 35188, 35193, 35199, 35204, 19138, 35210, 0}, 2, 1, 185, 187, {198,189,2286,4762,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,242,3594,0,0,0,0,0,0,0,0},{269,848,257,3602,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
+       {289, 872, 878, {884, 893, 901, 909, 918, 925, 935}, {944, 948, 952, 956, 960, 964, 968}, {972, 975, 978, 981, 984, 987, 990}, {993, 999, 1006, 1012, 1018, 1023, 1028, 1035, 1041, 1050, 1058, 1067, 0}, {993, 999, 1006, 1012, 1018, 1023, 1028, 1035, 1041, 1050, 1058, 1067, 0}, {1076, 1081, 1006, 1086, 1018, 1023, 1091, 1096, 1100, 1105, 1110, 1115, 0}, {1076, 1081, 1006, 1086, 1018, 1023, 1091, 1096, 1100, 1105, 1110, 1115, 0}, 2, 1, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{1140,1163,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {1195, 1204, 1211, {1218, 1228, 1238, 1248, 1258, 1268, 1278}, {1288, 1295, 1302, 1309, 1316, 1323, 1330}, {1337, 1341, 1345, 1349, 1353, 1357, 1361}, {1365, 1372, 1379, 1386, 1393, 1400, 1407, 1414, 1421, 1428, 1435, 1445, 0}, {1365, 1372, 1379, 1386, 1393, 1400, 1407, 1414, 1421, 1428, 1435, 1445, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, 0, 0, 185, 187, {1518,1527,1536,1545,1556,1567,1578,1585,1592,1599,0,0,0,0},{1608,1630,1658,1686,1701,0,0,0,0,0},{843,251,1722,1730,0,0,0,0,0,0,0,0},{848,269,1739,1750,0,0,0,0,0},{1762,1778,1791,1805,0,0,0,0}},
+       {1195, 1204, 1211, {1218, 1228, 1238, 1248, 1258, 1268, 1278}, {1288, 1295, 1302, 1309, 1316, 1323, 1330}, {1337, 1341, 1345, 1349, 1353, 1357, 1361}, {1365, 1372, 1379, 1386, 1393, 1400, 1407, 1414, 1421, 1428, 1435, 1445, 0}, {1365, 1372, 1379, 1386, 1393, 1400, 1407, 1414, 1421, 1428, 1435, 1445, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, 0, 0, 185, 187, {1518,1527,1536,1545,1556,1567,1578,1585,1592,1599,0,0,0,0},{1608,1630,1658,1686,1701,0,0,0,0,0},{843,251,1722,1730,0,0,0,0,0,0,0,0},{848,269,1739,1750,0,0,0,0,0},{1762,1778,1791,1805,0,0,0,0}},
+       {1812, 1820, 1823, {1826, 1834, 1844, 1852, 1860, 1869, 1876}, {1883, 1886, 1889, 1893, 1896, 1900, 1904}, {1907, 1909, 1911, 1914, 1916, 1909, 1914}, {1919, 1925, 1931, 1939, 1945, 1953, 1961, 1971, 1977, 1985, 1993, 2002, 0}, {2011, 2017, 2024, 2032, 2038, 2046, 2054, 2064, 1977, 2070, 2078, 2088, 0}, {2097, 2101, 2106, 2111, 2115, 2120, 2125, 2130, 2134, 2140, 2146, 2150, 0}, {2097, 2101, 2106, 2111, 2115, 2120, 2125, 2130, 2134, 2140, 2146, 2150, 0}, 2, 1, 691, 187, {2154,2165,0,0,0,0,0,0,0,0,0,0,0,0},{2176,2194,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{848,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 1820, 1823, {2217, 2225, 2232, 2240, 2247, 2255, 2262}, {2270, 2275, 2279, 2283, 2287, 2291, 2295}, {1914, 2300, 2302, 2304, 2302, 2306, 2308}, {2310, 2317, 2325, 2331, 2337, 2341, 2346, 2351, 2358, 2368, 2376, 2385, 0}, {2310, 2317, 2325, 2331, 2337, 2341, 2346, 2351, 2358, 2368, 2376, 2385, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, 2, 1, 2438, 187, {2440,2451,1556,2460,0,0,0,0,0,0,0,0,0,0},{2194,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 2471, 2477, {2484, 2492, 2499, 2508, 2517, 2528, 2536}, {2544, 2547, 2550, 2553, 2556, 2559, 2562}, {1914, 2300, 2565, 2300, 2565, 2306, 1914}, {2567, 2574, 2582, 2588, 2594, 2598, 2603, 2608, 2615, 2625, 2633, 2642, 0}, {2567, 2574, 2582, 2588, 2594, 2598, 2603, 2608, 2615, 2625, 2633, 2642, 0}, {2651, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, {2651, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, 2, 1, 691, 187, {2154,2696,1556,2705,0,0,0,0,0,0,0,0,0,0},{2719,2194,2738,0,0,0,0,0,0,0},{251,2751,0,0,0,0,0,0,0,0,0,0},{269,2763,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 2778, 2785, {2792, 2807, 2822, 2833, 2848, 2861, 2880}, {2895, 2902, 2909, 2916, 2923, 2930, 2937}, {2944, 2947, 2950, 2950, 2953, 2953, 2956}, {2959, 2980, 3003, 3018, 3035, 3046, 3061, 3076, 3095, 3118, 3137, 3156, 0}, {3177, 3198, 3221, 3236, 3253, 3264, 3279, 3294, 3313, 3336, 3355, 3374, 0}, {3395, 3402, 3409, 3416, 3423, 3430, 3439, 3448, 3455, 3462, 3469, 3476, 0}, {3395, 3402, 3409, 3416, 3423, 3430, 3439, 3448, 3455, 3462, 3469, 3476, 0}, 2, 1, 185, 187, {1120,198,3483,189,3490,1556,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,242,843,251,0,0,0,0,0,0,0,0},{3540,257,848,269,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 185, 187, {3711,3720,3727,3736,1599,1556,3747,0,0,0,0,0,0,0},{3757,3776,3789,3808,0,0,0,0,0,0},{3532,242,843,251,0,0,0,0,0,0,0,0},{3540,257,848,269,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3821, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 1, 185, 187, {198,189,4149,3483,4157,2451,2696,1556,0,0,0,0,0,0},{4164,4192,4219,0,0,0,0,0,0,0},{843,251,4241,4246,4252,0,0,0,0,0,0,0},{848,269,4260,4268,4277,0,0,0,0},{4288,0,0,0,0,0,0,0}},
+       {1812, 4303, 4307, {4311, 4323, 4335, 4345, 4359, 4369, 4381}, {4392, 4395, 4398, 4401, 4404, 4407, 4410}, {1914, 2300, 2302, 4413, 2302, 1909, 2308}, {4415, 4424, 4433, 4443, 4452, 4461, 4470, 4480, 4487, 4495, 4503, 4513, 0}, {4522, 4533, 4544, 4556, 4567, 4578, 4589, 4601, 4610, 4620, 4630, 4642, 0}, {4653, 4659, 4665, 4672, 4678, 4684, 4690, 4697, 4701, 4706, 4711, 4718, 0}, {4653, 4659, 4665, 4672, 4678, 4684, 4690, 4697, 4701, 4706, 4711, 4718, 0}, 2, 1, 691, 691, {4724,0,0,0,0,0,0,0,0,0,0,0,0,0},{2176,2194,0,0,0,0,0,0,0,0},{4241,0,0,0,0,0,0,0,0,0,0,0},{4260,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {4733, 4742, 4748, 4754, 4763, 4769, 4778}, {4785, 4790, 4795, 4800, 4805, 4810, 4815}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, 0, 1, 185, 187, {198,189,2696,2451,1556,0,0,0,0,0,0,0,0,0},{4935,3520,4952,0,0,0,0,0,0,0},{251,843,4246,4961,4971,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1, 4979, 4992, {5003, 5021, 5035, 5053, 5071, 5089, 5105}, {5119, 5131, 5143, 5155, 5167, 5179, 5191}, {5198, 5203, 5208, 5213, 5218, 5223, 5228}, {5233, 5244, 5257, 5264, 5275, 5282, 5291, 5300, 5313, 5326, 5341, 5354, 0}, {5233, 5244, 5257, 5264, 5275, 5282, 5291, 5300, 5313, 5326, 5341, 5354, 0}, {5365, 5374, 5257, 5383, 5275, 5392, 5401, 5410, 5419, 5428, 5437, 5446, 0}, {5365, 5374, 5257, 5383, 5275, 5392, 5401, 5410, 5419, 5428, 5437, 5446, 0}, 0, 0, 185, 187, {198,5455,189,209,2451,2440,5468,1556,5481,5498,0,0,0,0},{5508,5455,5526,5548,5481,0,0,0,0,0},{251,242,0,0,0,0,0,0,0,0,0,0},{269,257,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {5569, 5577, 5581, {5585, 5595, 5603, 5608, 5615, 5628, 5636}, {3927, 5644, 4413, 5646, 5650, 1909, 5653}, {3927, 5644, 4413, 5657, 5650, 1909, 5657}, {5660, 5668, 5677, 5686, 5695, 5702, 5710, 5718, 5728, 5739, 2376, 2385, 0}, {5660, 5668, 5677, 5686, 5695, 5702, 5710, 5718, 5728, 5739, 2376, 2385, 0}, {5748, 5753, 5759, 5766, 5772, 5778, 5784, 5790, 5795, 5802, 1110, 5807, 0}, {5748, 5753, 5759, 5766, 5772, 5778, 5784, 5790, 5795, 5802, 1110, 5807, 0}, 2, 1, 5812, 187, {5815,5829,0,0,0,0,0,0,0,0,0,0,0,0},{5842,5862,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{848,0,0,0,0,0,0,0,0},{5876,0,0,0,0,0,0,0}},
+       {1812, 5887, 5892, {5897, 5908, 5919, 5933, 5947, 5959, 5971}, {5983, 5988, 5994, 6000, 6006, 6011, 6017}, {1914, 2300, 6022, 2300, 2306, 2306, 2308}, {6025, 6033, 4837, 6042, 6049, 6054, 6061, 6068, 2358, 5739, 6076, 6086, 0}, {6025, 6033, 4837, 6042, 6049, 6054, 6061, 6068, 2358, 5739, 6076, 6086, 0}, {5748, 1081, 4795, 6095, 6049, 5778, 5784, 6100, 6107, 5802, 6112, 1115, 0}, {5748, 1081, 4795, 6095, 6049, 5778, 5784, 6100, 6107, 5802, 6112, 1115, 0}, 2, 1, 691, 187, {4724,6118,0,0,0,0,0,0,0,0,0,0,0,0},{2719,2194,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {6130, 6139, 6147, 6156, 6167, 6176, 6185}, {6192, 6196, 2402, 6200, 6204, 6208, 6212}, {2565, 2308, 2300, 2300, 6216, 3927, 1914}, {6218, 6226, 3943, 6235, 6242, 6249, 6256, 3972, 6263, 6273, 6281, 6290, 0}, {6299, 6307, 4032, 6316, 6323, 6330, 6337, 4055, 6344, 6354, 1058, 6362, 0}, {6371, 2398, 2402, 2406, 6375, 6379, 6383, 6387, 6391, 6395, 2430, 6399, 0}, {6371, 2398, 2402, 2406, 6375, 6379, 6383, 6387, 6391, 6395, 2430, 6399, 0}, 2, 1, 185, 187, {198,3490,189,6403,3483,0,0,0,0,0,0,0,0,0},{4935,6411,3520,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1195, 6420, 6427, {6434, 6444, 6454, 6464, 6474, 6484, 6494}, {1337, 6504, 6508, 6512, 6516, 6520, 6524}, {1337, 6504, 6508, 6512, 6516, 6520, 6524}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, 0, 0, 185, 187, {1545,1599,1578,1518,1556,0,0,0,0,0,0,0,0,0},{1608,6555,6579,6606,6635,6659,6688,6708,0,0},{843,251,1722,1730,0,0,0,0,0,0,0,0},{848,269,1739,1750,0,0,0,0,0},{1762,6733,1791,0,0,0,0,0}},
+       {6751, 6761, 6768, {6775, 6785, 6795, 6805, 6815, 6825, 6835}, {6845, 6849, 6853, 6857, 6861, 6865, 6869}, {6845, 6849, 6853, 6857, 6861, 6865, 6869}, {6873, 6878, 6883, 6888, 6893, 6898, 6903, 6908, 6913, 6918, 6924, 6930, 0}, {6873, 6878, 6883, 6888, 6893, 6898, 6903, 6908, 6913, 6918, 6924, 6930, 0}, {6873, 6878, 6883, 6888, 6893, 6898, 6903, 6908, 6913, 6918, 6924, 6930, 0}, {6873, 6878, 6883, 6888, 6893, 6898, 6903, 6908, 6913, 6918, 6924, 6930, 0}, 0, 0, 2438, 187, {1556,6936,1585,1527,0,0,0,0,0,0,0,0,0,0},{6945,6974,6998,7025,7047,7078,7104,7135,7161,7188},{1722,1730,843,251,0,0,0,0,0,0,0,0},{1739,1750,848,269,0,0,0,0,0},{7210,7227,7246,0,0,0,0,0}},
+       {289, 7261, 7266, {7271, 7278, 7286, 7294, 7303, 7313, 7321}, {7330, 4395, 7333, 7336, 7339, 7342, 7345}, {7348, 2300, 2565, 3643, 2565, 3927, 7348}, {7350, 7358, 7367, 2331, 7373, 2341, 2346, 7377, 2358, 2368, 2376, 2385, 0}, {7350, 7358, 7367, 2331, 7373, 2341, 2346, 7377, 2358, 2368, 2376, 2385, 0}, {2394, 2398, 7386, 2406, 7373, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 7386, 2406, 7373, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, 2, 1, 2438, 187, {7390,4157,2451,189,2696,7399,1556,0,0,0,0,0,0,0},{4935,6411,3520,4952,0,0,0,0,0,0},{251,843,4241,7411,7423,0,0,0,0,0,0,0},{269,848,7435,7450,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {7465, 7261, 7266, {2217, 2225, 2232, 2240, 2247, 2255, 2262}, {7473, 7478, 7482, 7486, 7490, 7494, 7498}, {1914, 2300, 2302, 2304, 2302, 2306, 2308}, {2310, 2317, 4837, 2331, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2310, 2317, 4837, 2331, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, 0, 0, 691, 691, {2154,6118,0,0,0,0,0,0,0,0,0,0,0,0},{2176,2194,0,0,0,0,0,0,0,0},{4246,0,0,0,0,0,0,0,0,0,0,0},{4268,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {7507, 7517, 7531, 7538, 7545, 7554, 1876}, {7562, 7569, 7574, 7578, 7583, 7588, 7592}, {1907, 1909, 3643, 7597, 7600, 1909, 1914}, {7602, 7611, 7616, 7623, 2337, 7633, 7642, 7649, 7659, 7669, 1993, 7682, 0}, {7692, 7701, 7708, 7714, 7723, 7728, 7736, 7742, 7751, 7761, 7775, 7785, 0}, {7793, 7797, 2402, 7801, 2337, 7805, 7809, 7813, 7817, 7821, 2146, 7826, 0}, {7793, 7797, 2402, 7801, 2337, 7805, 7809, 7813, 7817, 7821, 2146, 7826, 0}, 2, 1, 691, 187, {2154,0,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3821, 1820, 1823, {3833, 7830, 7844, 7857, 7870, 7883, 3880}, {6192, 7895, 7899, 7903, 7907, 7911, 7915}, {2565, 1914, 2302, 7920, 7920, 1914, 1914}, {7922, 7930, 7940, 1012, 7947, 7952, 7958, 4055, 7964, 7973, 7981, 7990, 0}, {7922, 7930, 7940, 1012, 7947, 7952, 7958, 4055, 7964, 7973, 7981, 7990, 0}, {2394, 7999, 2402, 8003, 4848, 2410, 2414, 6387, 6391, 8007, 2430, 8011, 0}, {2394, 7999, 2402, 8003, 4848, 2410, 2414, 6387, 6391, 8007, 2430, 8011, 0}, 0, 0, 185, 187, {198,189,1120,3483,2451,2440,4157,7390,2696,2154,7399,8015,4724,1556},{4164,4219,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{4288,0,0,0,0,0,0,0}},
+       {1812, 8022, 8025, {8028, 8037, 4748, 8047, 8055, 8063, 8072}, {8078, 8081, 4395, 8085, 8088, 8092, 1904}, {2565, 6216, 2300, 2300, 6216, 3927, 1914}, {8095, 8103, 4837, 8110, 8117, 8122, 8132, 8140, 8146, 8156, 2376, 2385, 0}, {8095, 8103, 4837, 8110, 8117, 8122, 8132, 8140, 8146, 8156, 2376, 2385, 0}, {8164, 8171, 4837, 4912, 8117, 8177, 8184, 8140, 8189, 1105, 1110, 5807, 0}, {8164, 8171, 4837, 4912, 8117, 8177, 8184, 8140, 8189, 1105, 1110, 5807, 0}, 2, 1, 2438, 187, {2440,0,0,0,0,0,0,0,0,0,0,0,0,0},{8195,8224,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 7261, 7266, {8241, 8251, 8256, 8263, 8272, 8276, 8283}, {8294, 8298, 3699, 8302, 8306, 8310, 8314}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {8319, 8328, 8338, 8345, 4848, 8353, 8359, 2351, 8365, 8376, 8386, 8396, 0}, {8319, 8328, 8338, 8345, 4848, 8353, 8359, 2351, 8365, 8376, 8386, 8396, 0}, {8406, 1081, 4795, 6095, 4848, 8411, 8416, 5790, 4923, 1105, 1110, 5807, 0}, {8406, 1081, 4795, 6095, 4848, 8411, 8416, 5790, 4923, 1105, 1110, 5807, 0}, 0, 1, 691, 187, {2154,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 8421, 8441, {8467, 8490, 352, 8513, 8524, 8539, 8554}, {8569, 8574, 8579, 8584, 8589, 8594, 8599}, {8604, 8607, 8604, 8610, 8613, 8607, 8610}, {8616, 8629, 8644, 8653, 8666, 8673, 8682, 8691, 8704, 8721, 8736, 8749, 0}, {8764, 8777, 8792, 8803, 8816, 8823, 8832, 8841, 8856, 8873, 8888, 8901, 0}, {8916, 8924, 8644, 8934, 8666, 8673, 8682, 8942, 8950, 8960, 8968, 8978, 0}, {8916, 8924, 8644, 8934, 8666, 8673, 8682, 8942, 8950, 8960, 8968, 8978, 0}, 0, 1, 691, 187, {2154,2696,8015,2440,189,0,0,0,0,0,0,0,0,0},{776,757,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 1820, 1823, {8986, 8995, 9007, 9014, 9022, 9032, 9038}, {9045, 9049, 9053, 9057, 9061, 9066, 9070}, {9074, 9076, 9078, 9080, 9082, 9076, 9080}, {9085, 9095, 9104, 9112, 9120, 9128, 9135, 9142, 9150, 1993, 9156, 9164, 0}, {9173, 9183, 9192, 9200, 9208, 9216, 9223, 9230, 9239, 7775, 9245, 9255, 0}, {9264, 9268, 9273, 9278, 9282, 7809, 2130, 9286, 9290, 2146, 9294, 2150, 0}, {9264, 9268, 9273, 9278, 9282, 7809, 2130, 9286, 9290, 2146, 9294, 2150, 0}, 0, 1, 691, 187, {9298,9308,9316,9328,9340,9350,9360,1556,0,0,0,0,0,0},{9372,9386,9401,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1812, 1820, 1823, {9421, 9429, 9438, 9445, 9452, 9461, 1876}, {1883, 1886, 9468, 1893, 9471, 9475, 1904}, {1907, 1909, 9478, 1914, 9480, 1909, 1914}, {5660, 5668, 9483, 6042, 9489, 9494, 9499, 2351, 2358, 5739, 2376, 2385, 0}, {9504, 9513, 7708, 9523, 9531, 9537, 9543, 9549, 9557, 9567, 9576, 9585, 0}, {2394, 2398, 2402, 2406, 9489, 9494, 9499, 2418, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 9489, 9494, 9499, 2418, 2422, 2426, 2430, 2434, 0}, 2, 1, 691, 187, {2154,2165,0,0,0,0,0,0,0,0,0,0,0,0},{2719,2194,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{848,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 9594, 9603, {9611, 9618, 9627, 9636, 9648, 9656, 9665}, {9675, 9679, 3699, 9684, 9689, 9693, 9697}, {2565, 5644, 2300, 2300, 9701, 1909, 1914}, {9703, 9709, 4837, 9716, 2337, 9722, 9730, 9737, 9743, 9751, 9757, 9765, 0}, {9703, 9709, 4837, 9716, 2337, 9722, 9730, 9737, 9743, 9751, 9757, 9765, 0}, {2651, 9773, 3699, 9777, 9781, 9785, 9789, 9793, 9697, 9797, 9801, 9806, 0}, {2651, 9773, 3699, 9777, 9781, 9785, 9789, 9793, 9697, 9797, 9801, 9806, 0}, 0, 1, 691, 187, {4724,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {9810, 9823, 9826, {9829, 9837, 9845, 2240, 2247, 2255, 9852}, {9860, 9865, 9870, 2283, 2287, 2291, 9874}, {1914, 2300, 2302, 2304, 2302, 2306, 2308}, {7350, 7358, 4837, 2331, 2337, 2341, 2346, 9879, 2358, 2368, 2376, 2385, 0}, {7350, 7358, 4837, 2331, 2337, 2341, 2346, 9879, 2358, 2368, 2376, 2385, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, 2, 1, 2438, 187, {1556,6936,0,0,0,0,0,0,0,0,0,0,0,0},{9887,9905,0,0,0,0,0,0,0,0},{251,843,9928,0,0,0,0,0,0,0,0,0},{269,848,9938,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, 0, 0, 185, 187, {1120,3483,189,198,1129,9951,1556,0,0,0,0,0,0,0},{3520,9963,9979,0,0,0,0,0,0,0},{843,251,3532,242,0,0,0,0,0,0,0,0},{848,269,3540,257,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1, 10021, 10026, {10030, 10036, 10046, 10052, 10063, 10073, 10078}, {10088, 10092, 10096, 10100, 10105, 10109, 10113}, {1909, 1909, 1914, 10117, 1909, 7600, 7600}, {10120, 10125, 10132, 10137, 10143, 10150, 10158, 10165, 10174, 10181, 10186, 10193, 0}, {10120, 10125, 10132, 10137, 10143, 10150, 10158, 10165, 10174, 10181, 10186, 10193, 0}, {10201, 10205, 3699, 10210, 3668, 10214, 10218, 10222, 10227, 10231, 10235, 10239, 0}, {10201, 10205, 3699, 10210, 3668, 10214, 10218, 10222, 10227, 10231, 10235, 10239, 0}, 0, 1, 691, 187, {10243,1129,0,0,0,0,0,0,0,0,0,0,0,0},{10253,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1, 10270, 10288, {10306, 10317, 10330, 10339, 10346, 10359, 10368}, {10306, 10317, 10330, 10339, 10346, 10359, 10368}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {10377, 10388, 10399, 10408, 10419, 10426, 10433, 10446, 10455, 10466, 10479, 10490, 0}, {10377, 10388, 10399, 10408, 10419, 10426, 10433, 10446, 10455, 10466, 10479, 10490, 0}, {10377, 10388, 10399, 10408, 10419, 10426, 10433, 10446, 10455, 10466, 10479, 10490, 0}, {10377, 10388, 10399, 10408, 10419, 10426, 10433, 10446, 10455, 10466, 10479, 10490, 0}, 0, 0, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{3532,242,843,251,0,0,0,0,0,0,0,0},{3540,257,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {10515, 10522, 10528, 10535, 10540, 10546, 10552}, {10558, 10562, 10566, 10570, 10574, 10578, 10582}, {2300, 1914, 1914, 10586, 4413, 3925, 1914}, {10588, 10596, 10605, 2588, 10611, 2598, 2603, 10615, 2615, 2625, 2633, 10623, 0}, {10588, 10596, 10605, 2588, 10611, 2598, 2603, 10615, 2615, 2625, 2633, 10623, 0}, {2651, 2655, 3699, 2664, 10611, 2668, 2672, 10632, 2680, 2684, 2688, 10636, 0}, {2651, 2655, 3699, 2664, 10611, 2668, 2672, 10632, 2680, 2684, 2688, 10636, 0}, 0, 0, 185, 691, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{10640,3520,0,0,0,0,0,0,0,0},{4246,0,0,0,0,0,0,0,0,0,0,0},{4268,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 10659, 10664, {10669, 10682, 10701, 10718, 10731, 10744, 10761}, {10774, 8574, 8579, 8584, 8589, 8594, 8599}, {10779, 8607, 8604, 8610, 8613, 8607, 8610}, {10782, 10795, 10806, 10823, 10838, 10853, 10868, 10881, 10896, 10913, 10928, 10945, 0}, {10960, 10971, 10984, 10999, 11012, 11025, 11038, 11049, 11062, 11077, 11090, 11109, 0}, {11122, 11129, 11136, 11143, 11150, 11157, 11164, 11171, 11178, 11185, 11192, 11199, 0}, {11122, 11129, 11136, 11143, 11150, 11157, 11164, 11171, 11178, 11185, 11192, 11199, 0}, 0, 1, 691, 187, {2154,2696,1556,0,0,0,0,0,0,0,0,0,0,0},{11206,0,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{11224,0,0,0,0,0,0,0}},
+       {289, 11240, 11253, {11266, 11281, 11302, 11317, 11330, 11343, 10761}, {421, 426, 11358, 436, 11363, 446, 451}, {456, 459, 11368, 465, 468, 459, 465}, {11371, 11388, 11397, 11412, 521, 11429, 11444, 11457, 11472, 11489, 11510, 11527, 0}, {11542, 11559, 11572, 11589, 8816, 11608, 11623, 11636, 11649, 11664, 11687, 11706, 0}, {11719, 11726, 11733, 11740, 521, 11747, 11754, 11761, 11768, 11775, 11782, 11789, 0}, {11719, 11726, 11733, 11740, 521, 11747, 11754, 11761, 11768, 11775, 11782, 11789, 0}, 0, 0, 691, 187, {2696,0,0,0,0,0,0,0,0,0,0,0,0,0},{3520,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{11796,0,0,0,0,0,0,0}},
+       {1812, 11810, 11815, {11820, 11828, 11839, 11845, 11851, 11860, 1876}, {9045, 9049, 2287, 11866, 9061, 9066, 11870}, {9074, 9076, 11874, 9080, 9082, 9076, 9080}, {2310, 2317, 9483, 2331, 2337, 11876, 11882, 11888, 2358, 2368, 2376, 2385, 0}, {2310, 2317, 9483, 2331, 2337, 11876, 11882, 11888, 2358, 2368, 2376, 2385, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, 0, 1, 5812, 187, {11899,6118,0,0,0,0,0,0,0,0,0,0,0,0},{11911,11931,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 11945, 11950, {11955, 11966, 11977, 11988, 11999, 12010, 12016}, {1909, 9701, 2302, 4413, 1907, 10586, 2308}, {1909, 9701, 2302, 4413, 1907, 10586, 2308}, {12025, 12033, 12042, 12049, 4848, 12056, 12062, 2351, 2358, 12068, 2376, 12077, 0}, {12025, 12033, 12042, 12049, 4848, 12056, 12062, 2351, 2358, 12068, 2376, 12077, 0}, {12087, 12092, 12042, 2406, 4848, 12056, 12062, 2418, 12098, 2426, 2430, 12103, 0}, {12087, 12092, 12042, 2406, 4848, 12056, 12062, 2418, 12098, 2426, 2430, 12103, 0}, 2, 1, 691, 187, {2154,6118,0,0,0,0,0,0,0,0,0,0,0,0},{2719,2194,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{12108,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 12116, 12133, {12147, 12158, 12168, 12177, 12188, 12200, 12211}, {12221, 12224, 12227, 12230, 12233, 12236, 12239}, {1914, 1909, 2304, 2302, 7600, 1909, 1914}, {12242, 12252, 12263, 12269, 12278, 12284, 12292, 12300, 12308, 12319, 12328, 12338, 0}, {12348, 12358, 2325, 12369, 12378, 12384, 12392, 12400, 12408, 12419, 12428, 12438, 0}, {12448, 12454, 12263, 12460, 12278, 12465, 12471, 12477, 4128, 12482, 4139, 12487, 0}, {12448, 12454, 12263, 12460, 12278, 12465, 12471, 12477, 4128, 12482, 4139, 12487, 0}, 0, 1, 691, 187, {2154,12492,0,0,0,0,0,0,0,0,0,0,0,0},{12512,12539,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12560,0,0,0,0,0,0,0}},
+       {3551, 12576, 11815, {12582, 12594, 12606, 12618, 12632, 12647, 12660}, {12674, 12677, 12680, 12683, 12686, 12689, 9471}, {1914, 1909, 12692, 2302, 4413, 1909, 9480}, {12694, 12701, 12709, 12715, 12724, 12733, 12743, 12749, 12760, 12770, 12777, 12787, 0}, {12694, 12701, 12709, 12715, 12724, 12733, 12743, 12749, 12760, 12770, 12777, 12787, 0}, {12795, 12801, 12806, 12811, 12816, 12821, 12828, 12834, 12840, 12846, 12852, 12859, 0}, {12795, 12801, 12806, 12811, 12816, 12821, 12828, 12834, 12840, 12846, 12852, 12859, 0}, 2, 1, 2438, 187, {1556,0,0,0,0,0,0,0,0,0,0,0,0,0},{12866,12894,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {1, 12926, 12938, {12950, 12965, 12980, 12995, 13012, 13031, 13042}, {13053, 13060, 13067, 13074, 13081, 13088, 13095}, {0, 0, 0, 0, 0, 0, 0}, {13102, 13113, 8644, 13126, 8666, 13137, 13144, 8691, 13151, 13166, 13179, 13190, 0}, {13102, 13113, 8644, 13126, 8666, 13137, 13144, 8691, 13151, 13166, 13179, 13190, 0}, {13203, 13210, 13217, 13224, 8666, 13137, 13144, 13231, 13238, 13245, 13252, 13259, 0}, {13203, 13210, 13217, 13224, 8666, 13137, 13144, 13231, 13238, 13245, 13252, 13259, 0}, 0, 0, 691, 187, {2154,2696,8015,2440,189,0,0,0,0,0,0,0,0,0},{13266,13284,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 13303, 13323, {13340, 13353, 13366, 13382, 13399, 13414, 13423}, {13340, 13353, 13366, 13382, 13399, 13414, 13423}, {13432, 13435, 13438, 13441, 13444, 13447, 13450}, {13453, 13466, 13477, 13486, 13497, 13502, 13511, 13522, 13529, 13544, 13555, 13568, 0}, {13581, 13596, 13477, 13486, 13609, 13502, 13616, 13522, 13529, 13544, 13555, 13568, 0}, {13453, 13466, 13477, 13486, 13497, 13502, 13511, 13522, 13529, 13544, 13555, 13568, 0}, {13453, 13466, 13477, 13486, 13497, 13502, 13511, 13522, 13529, 13544, 13555, 13568, 0}, 0, 6, 185, 187, {198,189,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 13629, 13632, {13635, 13648, 13658, 13667, 13677, 13688, 13699}, {13711, 13714, 13719, 13724, 13729, 13734, 13739}, {13711, 13744, 13747, 13750, 13753, 13756, 13759}, {13762, 13771, 13780, 13789, 13798, 13807, 13816, 13825, 13834, 13843, 13853, 13863, 0}, {13873, 13882, 13891, 13900, 13909, 13918, 13927, 13936, 13945, 13954, 13964, 13974, 0}, {13984, 13990, 13996, 14002, 14008, 14014, 14020, 14026, 14032, 14038, 14045, 14052, 0}, {13984, 13990, 13996, 14002, 14008, 14014, 14020, 14026, 14032, 14038, 14045, 14052, 0}, 0, 1, 185, 187, {198,189,2451,2440,1556,0,0,0,0,0,0,0,0,0},{5455,0,0,0,0,0,0,0,0,0},{3532,242,843,251,0,0,0,0,0,0,0,0},{3540,257,848,269,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 14059, 14083, {14107, 14120, 14141, 14160, 14181, 14200, 14213}, {14224, 14231, 14238, 14245, 14252, 14259, 14266}, {14273, 14276, 14276, 14279, 14282, 14285, 14290}, {14293, 14308, 14323, 14332, 14343, 14354, 14367, 14380, 14395, 14414, 14433, 14450, 0}, {14469, 14486, 14503, 14514, 14527, 14540, 14555, 14570, 14587, 14608, 14629, 14648, 0}, {14669, 14676, 14683, 14690, 14697, 14704, 14711, 14718, 14725, 14732, 14739, 14746, 0}, {14669, 14676, 14683, 14690, 14697, 14704, 14711, 14718, 14725, 14732, 14739, 14746, 0}, 0, 1, 691, 187, {2154,2696,14753,198,14763,3490,1556,0,0,0,0,0,0,0},{3808,3502,10640,5455,14774,14785,14797,14814,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {14832, 14838, 14852, 14875, 14889, 14905, 14912}, {14921, 14924, 14929, 14935, 14939, 7600, 14944}, {6540, 6528, 6530, 6532, 6534, 6536, 6538}, {14948, 14955, 10132, 14962, 3668, 14968, 14974, 14980, 14987, 14996, 15004, 15011, 0}, {15018, 15025, 15032, 15037, 15043, 15047, 15052, 15057, 15064, 15073, 15081, 15088, 0}, {15095, 7999, 2402, 2406, 15043, 15099, 15103, 15107, 15111, 2426, 15115, 15119, 0}, {15095, 7999, 2402, 2406, 15043, 15099, 15103, 15107, 15111, 2426, 15115, 15119, 0}, 0, 0, 691, 187, {2154,1129,0,0,0,0,0,0,0,0,0,0,0,0},{15123,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {15141, 15149, 15160, 15170, 15181, 15190, 15199}, {15209, 15213, 15217, 15221, 15225, 15229, 15233}, {15237, 12692, 12692, 12692, 2304, 2304, 2308}, {15239, 15249, 15257, 15265, 15273, 15281, 15288, 15296, 15304, 15311, 15317, 15324, 0}, {15332, 15343, 15352, 15361, 15370, 15379, 15387, 15396, 15405, 15413, 15420, 15428, 0}, {15437, 15442, 4795, 15447, 15452, 15457, 15462, 15467, 15472, 15477, 15482, 15487, 0}, {15437, 15442, 4795, 15447, 15452, 15457, 15462, 15467, 15472, 15477, 15482, 15487, 0}, 2, 1, 185, 187, {1545,15492,0,0,0,0,0,0,0,0,0,0,0,0},{15503,15530,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{15551,0,0,0,0,0,0,0}},
+       {289, 15570, 15591, {15608, 331, 352, 8513, 15621, 15638, 15649}, {15662, 15670, 15678, 15684, 15692, 15700, 15708}, {456, 459, 462, 465, 468, 459, 465}, {15716, 484, 501, 510, 15731, 15738, 15747, 542, 555, 574, 591, 606, 0}, {15716, 484, 501, 510, 15731, 15738, 15747, 542, 555, 574, 591, 606, 0}, {15756, 15764, 15772, 639, 15731, 15780, 15788, 647, 655, 665, 673, 683, 0}, {15756, 15764, 15772, 639, 15731, 15780, 15788, 647, 655, 665, 673, 683, 0}, 0, 1, 691, 187, {15796,0,0,0,0,0,0,0,0,0,0,0,0,0},{10640,5455,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{15806,0,0,0,0,0,0,0}},
+       {3551, 0, 0, {15822, 15829, 15840, 15849, 15858, 15865, 15876}, {15886, 15890, 15894, 15898, 15902, 15905, 15909}, {0, 0, 0, 0, 0, 0, 0}, {15913, 15923, 15932, 15940, 15949, 15962, 15974, 15981, 15988, 15995, 16005, 16017, 0}, {15913, 15923, 15932, 15940, 15949, 15962, 15974, 15981, 15988, 15995, 16005, 16017, 0}, {16030, 16034, 16038, 16042, 16046, 16050, 16054, 16058, 16062, 16066, 16070, 16074, 0}, {16030, 16034, 16038, 16042, 16046, 16050, 16054, 16058, 16062, 16066, 16070, 16074, 0}, 0, 0, 2438, 187, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{16078,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {3551, 0, 0, {16108, 16113, 16119, 16129, 16141, 16149, 16160}, {16169, 16173, 16177, 16181, 16185, 16189, 16193}, {0, 0, 0, 0, 0, 0, 0}, {16197, 16207, 16217, 16224, 16231, 2598, 16236, 16243, 16250, 16259, 16267, 16275, 0}, {16197, 16207, 16217, 16224, 16231, 2598, 16236, 16243, 16250, 16259, 16267, 16275, 0}, {2651, 2655, 15909, 16283, 16287, 2668, 2672, 16291, 2680, 2684, 2688, 16295, 0}, {2651, 2655, 15909, 16283, 16287, 2668, 2672, 16291, 2680, 2684, 2688, 16295, 0}, 0, 0, 2438, 187, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{16078,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {16299, 16305, 16316, 16129, 16141, 16149, 16160}, {16326, 16330, 16334, 16181, 16185, 16189, 16193}, {1914, 2300, 16338, 2302, 1914, 5644, 2300}, {16340, 16350, 16361, 16368, 16377, 16383, 16389, 16397, 16405, 16416, 16426, 16435, 0}, {16444, 16207, 16453, 16459, 16231, 2598, 16236, 16243, 16466, 16259, 16267, 16275, 0}, {2651, 2655, 16476, 2664, 16287, 2668, 2672, 16291, 2680, 2684, 2688, 16295, 0}, {2651, 2655, 16476, 2664, 16287, 2668, 2672, 16291, 2680, 2684, 2688, 16295, 0}, 0, 0, 185, 187, {3711,16480,0,0,0,0,0,0,0,0,0,0,0,0},{3757,3776,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 16492, 16496, {16500, 16507, 16515, 16523, 16532, 16542, 16549}, {2544, 16558, 2550, 16561, 2556, 16564, 2562}, {1914, 2300, 2565, 3643, 2565, 3927, 1914}, {16567, 16576, 16586, 2588, 10611, 16592, 16598, 16604, 2615, 2625, 2633, 10623, 0}, {16567, 16576, 16586, 2588, 10611, 16592, 16598, 16604, 2615, 2625, 2633, 10623, 0}, {2651, 2655, 3699, 2664, 10611, 2668, 2672, 2676, 2680, 2684, 2688, 10636, 0}, {2651, 2655, 3699, 2664, 10611, 2668, 2672, 2676, 2680, 2684, 2688, 10636, 0}, 0, 0, 2438, 187, {1556,9951,0,0,0,0,0,0,0,0,0,0,0,0},{10640,5455,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {16613, 16629, 16654, 16682, 16710, 16738, 16766}, {16785, 16795, 16805, 16815, 16825, 16835, 16845}, {16855, 16859, 16863, 16859, 16867, 16871, 16875}, {16879, 16901, 16929, 16945, 16964, 16980, 16999, 17018, 17040, 17071, 17099, 17124, 0}, {16879, 16901, 16929, 16945, 16964, 16980, 16999, 17018, 17040, 17071, 17099, 17124, 0}, {17152, 17162, 17172, 17182, 17192, 17202, 17212, 17222, 17232, 17242, 17252, 17262, 0}, {17152, 17162, 17172, 17182, 17192, 17202, 17212, 17222, 17232, 17242, 17252, 17262, 0}, 0, 1, 691, 187, {2154,17272,0,0,0,0,0,0,0,0,0,0,0,0},{222,3808,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {3551, 17284, 17289, {5897, 17294, 17305, 17315, 17325, 17335, 17349}, {17361, 17365, 17370, 17375, 17379, 17384, 17389}, {1914, 2300, 2302, 2300, 5644, 2306, 2308}, {2310, 2317, 4837, 6042, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2310, 2317, 4837, 6042, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, 2, 1, 2438, 187, {2440,0,0,0,0,0,0,0,0,0,0,0,0,0},{5508,6118,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {1, 17393, 17409, {17419, 17438, 17457, 17479, 17498, 17520, 17545}, {17564, 17574, 17584, 17597, 17607, 17620, 17636}, {17646, 17650, 17657, 17664, 17671, 17678, 17685}, {17689, 17705, 17724, 17740, 17759, 17766, 17776, 17792, 17808, 17827, 17849, 17865, 0}, {17689, 17705, 17724, 17740, 17759, 17766, 17776, 17792, 17808, 17827, 17849, 17865, 0}, {17884, 17891, 17724, 17901, 17759, 17766, 17917, 17930, 17937, 17950, 17966, 17976, 0}, {17884, 17891, 17724, 17901, 17759, 17766, 17917, 17930, 17937, 17950, 17966, 17976, 0}, 0, 0, 2438, 187, {2440,2451,4157,8015,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {17989, 18004, 18007, {18010, 18019, 18028, 18038, 18048, 18058, 18070}, {18078, 18083, 18087, 18091, 18095, 18100, 18105}, {18109, 2302, 2302, 9701, 18109, 18112, 1914}, {18115, 18122, 18127, 2588, 18133, 18139, 18146, 18152, 18160, 18170, 18178, 18187, 0}, {18115, 18122, 18127, 2588, 18133, 18139, 18146, 18152, 18160, 18170, 18178, 18187, 0}, {2651, 18197, 3699, 2664, 18201, 18205, 18210, 18214, 18218, 18222, 2688, 18226, 0}, {2651, 18197, 3699, 2664, 18201, 18205, 18210, 18214, 18218, 18222, 2688, 18226, 0}, 0, 0, 185, 187, {198,9951,0,0,0,0,0,0,0,0,0,0,0,0},{18231,18257,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{18277,0,0,0,0,0,0,0}},
+       {3551, 18295, 18300, {18305, 18317, 18328, 18342, 18354, 18364, 18374}, {18385, 18390, 18395, 18400, 18405, 18410, 18415}, {1914, 3927, 2300, 6216, 2565, 16338, 2308}, {18420, 18437, 18450, 18464, 18477, 18490, 18503, 18517, 18529, 18543, 18557, 18571, 0}, {18420, 18437, 18450, 18464, 18477, 18490, 18503, 18517, 18529, 18543, 18557, 18571, 0}, {18584, 18591, 18596, 18601, 18605, 18610, 18615, 18620, 18625, 18632, 18637, 18643, 0}, {18584, 18591, 18596, 18601, 18605, 18610, 18615, 18620, 18625, 18632, 18637, 18643, 0}, 2, 1, 2438, 187, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{16078,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {289, 7261, 7266, {18648, 18662, 18672, 18683, 18697, 18708, 18719}, {18732, 18737, 18742, 18749, 18755, 18761, 18767}, {2565, 2308, 2300, 7600, 2565, 12692, 1914}, {18772, 18780, 18788, 18795, 18804, 18814, 18824, 18830, 18838, 18853, 18871, 18879, 0}, {18772, 18780, 18788, 18795, 18804, 18814, 18824, 18830, 18838, 18853, 18871, 18879, 0}, {18887, 18891, 18788, 18897, 18901, 18906, 18824, 18912, 18917, 18924, 18931, 18936, 0}, {18887, 18891, 18788, 18897, 18901, 18906, 18824, 18912, 18917, 18924, 18931, 18936, 0}, 2, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{4935,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 18941, 18944, {18948, 18953, 10528, 10535, 18959, 18966, 10552}, {18973, 18977, 10566, 10570, 18981, 10578, 10582}, {12692, 15237, 1914, 10586, 4413, 3925, 1914}, {10588, 10596, 18985, 2588, 10611, 2668, 18989, 18995, 2615, 2625, 2633, 19000, 0}, {10588, 10596, 18985, 2588, 10611, 2668, 18989, 18995, 2615, 2625, 2633, 19000, 0}, {2651, 2655, 18985, 2664, 10611, 2668, 2672, 19009, 2680, 2684, 2688, 16295, 0}, {2651, 2655, 18985, 2664, 10611, 2668, 2672, 19009, 2680, 2684, 2688, 16295, 0}, 0, 0, 185, 187, {14753,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 19013, 19035, {19059, 19074, 19091, 19108, 19125, 19142, 19151}, {19162, 19168, 19174, 19180, 19186, 19192, 19198}, {19204, 19207, 8610, 8610, 19210, 19204, 8610}, {19213, 19226, 19237, 19250, 19261, 19272, 19285, 19296, 19307, 19324, 19335, 19348, 0}, {19213, 19226, 19237, 19250, 19261, 19272, 19285, 19296, 19307, 19324, 19335, 19348, 0}, {19367, 19375, 19383, 19391, 19399, 19407, 19415, 19423, 19431, 19439, 19447, 19455, 0}, {19367, 19375, 19383, 19391, 19399, 19407, 19415, 19423, 19431, 19439, 19447, 19455, 0}, 0, 0, 185, 187, {198,19465,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {19478, 19485, 19511, {19539, 19546, 19553, 19560, 19567, 19574, 19581}, {19539, 19546, 19553, 19560, 19567, 19574, 19581}, {19204, 19207, 19588, 19588, 19210, 19204, 19591}, {19594, 19607, 501, 19622, 521, 19635, 19644, 542, 19653, 19670, 19685, 19698, 0}, {19594, 19607, 501, 19622, 521, 19635, 19644, 542, 19653, 19670, 19685, 19698, 0}, {19713, 15764, 15772, 639, 521, 19721, 19729, 647, 19737, 665, 19745, 683, 0}, {19713, 15764, 15772, 639, 521, 19721, 19729, 647, 19737, 665, 19745, 683, 0}, 0, 0, 2438, 187, {19753,0,0,0,0,0,0,0,0,0,0,0,0,0},{19762,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{19781,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {19797, 19806, 19815, 19823, 19832, 19841, 19848}, {19857, 19860, 19863, 19866, 19869, 19873, 19876}, {6530, 6532, 6534, 6536, 12692, 15237, 6528}, {10588, 10596, 19879, 19885, 10611, 2598, 18989, 19892, 16250, 19899, 16267, 19906, 0}, {10588, 10596, 19879, 19885, 10611, 2598, 18989, 19892, 16250, 19899, 16267, 19906, 0}, {2651, 2655, 18985, 2664, 10611, 2668, 2672, 19914, 2680, 2684, 2688, 10636, 0}, {2651, 2655, 18985, 2664, 10611, 2668, 2672, 19914, 2680, 2684, 2688, 10636, 0}, 0, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {19918, 19928, 19937, 19946, 19957, 19967, 19972}, {19979, 19985, 19990, 19995, 20000, 10578, 20004}, {20009, 2565, 1914, 7600, 1909, 3925, 1914}, {14948, 14955, 10132, 14962, 3668, 20011, 20016, 20021, 14987, 14996, 15004, 15011, 0}, {14948, 14955, 10132, 14962, 3668, 20011, 20016, 20021, 14987, 14996, 15004, 15011, 0}, {20028, 20033, 3699, 2664, 3668, 20011, 20016, 20037, 10562, 2684, 20041, 20046, 0}, {20028, 20033, 3699, 2664, 3668, 20011, 20016, 20037, 10562, 2684, 20041, 20046, 0}, 0, 0, 185, 187, {1545,15492,0,0,0,0,0,0,0,0,0,0,0,0},{20050,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {289, 20069, 20097, {20119, 20138, 20157, 20182, 20201, 20235, 20260}, {20279, 20289, 20299, 20315, 20325, 20350, 20366}, {20376, 20380, 20387, 20391, 20398, 20405, 20412}, {20416, 20444, 20478, 20494, 20513, 20520, 20530, 20546, 20562, 20593, 20615, 20637, 0}, {20416, 20444, 20478, 20494, 20513, 20520, 20530, 20546, 20562, 20593, 20615, 20637, 0}, {20416, 20444, 20478, 20494, 20513, 20520, 20530, 20546, 20562, 20593, 20615, 20637, 0}, {20416, 20444, 20478, 20494, 20513, 20520, 20530, 20546, 20562, 20593, 20615, 20637, 0}, 0, 1, 2438, 691, {2451,4157,2440,2451,2440,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{4246,4241,20662,20671,0,0,0,0,0,0,0,0},{4268,4260,20679,20691,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 1820, 1823, {20702, 20718, 20737, 20759, 20778, 20797, 20825}, {20847, 20855, 20866, 20880, 20891, 20902, 20922}, {20936, 20940, 20947, 20954, 20964, 20971, 20984}, {20991, 21007, 21026, 21039, 21058, 21065, 21075, 21091, 21104, 21120, 21139, 21155, 0}, {20991, 21007, 21026, 21039, 21058, 21065, 21075, 21091, 21104, 21120, 21139, 21155, 0}, {20991, 21007, 21026, 21039, 21058, 21065, 21075, 21091, 21104, 21120, 21139, 21155, 0}, {20991, 21007, 21026, 21039, 21058, 21065, 21075, 21091, 21104, 21120, 21139, 21155, 0}, 0, 0, 2438, 187, {2451,4157,8015,2440,1556,0,0,0,0,0,0,0,0,0},{21171,3520,0,0,0,0,0,0,0,0},{1730,1722,843,251,0,0,0,0,0,0,0,0},{1750,1739,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 1820, 1823, {21189, 21208, 21227, 21249, 21268, 21290, 21315}, {21334, 21344, 21354, 21367, 21377, 21390, 21406}, {21416, 21420, 21427, 21434, 21441, 21448, 21455}, {21459, 21487, 21515, 21531, 21550, 21557, 21567, 21583, 21599, 21627, 21649, 21671, 0}, {21459, 21487, 21515, 21531, 21550, 21557, 21567, 21583, 21599, 21627, 21649, 21671, 0}, {21696, 21715, 21515, 21531, 21550, 21557, 21567, 21734, 21741, 21757, 21773, 21783, 0}, {21696, 21715, 21515, 21531, 21550, 21557, 21567, 21734, 21741, 21757, 21773, 21783, 0}, 0, 0, 2438, 187, {2451,4157,8015,2440,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 8022, 21796, {21799, 21818, 21837, 21862, 21881, 21903, 21928}, {21947, 21957, 21967, 21983, 21993, 22006, 22022}, {22032, 22036, 22043, 22047, 22054, 22061, 22068}, {22072, 22094, 22125, 22147, 22166, 22173, 22183, 22199, 22215, 22246, 22268, 22290, 0}, {22072, 22094, 22125, 22147, 22166, 22173, 22183, 22199, 22215, 22246, 22268, 22290, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, 0, 0, 2438, 187, {2451,4157,8015,2440,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {289, 22315, 22340, {22365, 22384, 22406, 22431, 22447, 22469, 22488}, {22498, 22505, 22512, 22519, 22526, 22533, 22540}, {22498, 22505, 22512, 22519, 22526, 22533, 22540}, {22544, 22560, 22585, 22604, 22623, 22630, 22643, 22656, 22675, 22706, 22731, 22753, 0}, {22544, 22560, 22585, 22604, 22623, 22630, 22643, 22778, 22675, 22706, 22731, 22753, 0}, {22797, 22805, 22819, 22833, 22623, 22630, 22643, 22844, 22852, 22866, 22877, 22885, 0}, {22797, 22805, 22819, 22833, 22623, 22630, 22643, 22844, 22852, 22866, 22877, 22885, 0}, 0, 0, 2438, 187, {2440,2451,4157,8015,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {22896, 22918, 22940, 22965, 22987, 23012, 23040}, {23062, 23072, 23082, 23095, 23105, 23118, 23134}, {23144, 23148, 23155, 23159, 23166, 23173, 23180}, {23184, 23200, 23225, 23244, 23266, 23273, 23286, 23299, 23318, 23349, 23374, 23393, 0}, {23184, 23200, 23225, 23244, 23266, 23273, 23418, 23299, 23318, 23349, 23374, 23393, 0}, {23431, 23438, 23225, 23454, 23266, 23273, 23418, 23299, 23470, 23492, 23508, 23518, 0}, {23431, 23438, 23225, 23454, 23266, 23273, 23418, 23299, 23470, 23492, 23508, 23518, 0}, 0, 0, 2438, 187, {2451,4157,8015,2440,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {23534, 23553, 23572, 23594, 23613, 23635, 23660}, {23679, 23689, 23699, 23712, 23722, 23735, 23751}, {23761, 23765, 23772, 23779, 23786, 23793, 23800}, {23804, 23820, 23845, 23864, 23886, 23893, 23906, 23919, 23938, 23966, 23991, 24013, 0}, {23804, 23820, 23845, 23864, 23886, 23893, 23906, 23919, 23938, 23966, 23991, 24013, 0}, {24038, 24046, 24066, 24073, 23886, 24090, 24097, 24105, 24113, 24136, 24153, 24167, 0}, {24038, 24046, 24066, 24073, 23886, 24090, 24097, 24105, 24113, 24136, 24153, 24167, 0}, 0, 0, 2438, 187, {2451,4157,8015,2440,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {24184, 1820, 1823, {24192, 24220, 24254, 24282, 24310, 24341, 24378}, {24406, 24419, 24438, 24454, 24467, 24486, 24505}, {24515, 24522, 24529, 24536, 24543, 24556, 24563}, {24567, 24586, 24614, 24636, 24655, 24668, 24678, 24691, 24716, 24747, 24772, 24788, 0}, {24567, 24586, 24614, 24636, 24655, 24668, 24678, 24691, 24716, 24747, 24772, 24788, 0}, {24807, 24817, 24836, 24846, 24655, 24668, 24678, 24862, 24869, 24894, 24910, 24920, 0}, {24807, 24817, 24836, 24846, 24655, 24668, 24678, 24862, 24869, 24894, 24910, 24920, 0}, 0, 0, 2438, 691, {2451,4157,2696,8015,0,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{4246,4241,20662,20671,0,0,0,0,0,0,0,0},{4268,4260,20679,20691,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {289, 24933, 24961, {24983, 25002, 25021, 25046, 25065, 25099, 25124}, {25143, 20289, 20299, 20315, 25153, 25178, 20366}, {0, 0, 0, 0, 0, 0, 0}, {25194, 25219, 25250, 25266, 20513, 20520, 20530, 25285, 25301, 25332, 25354, 25376, 0}, {25194, 25219, 25250, 25266, 20513, 20520, 20530, 25285, 25301, 25332, 25354, 25376, 0}, {25401, 25414, 25250, 25266, 20513, 20520, 20530, 25433, 25440, 25456, 25472, 25482, 0}, {25401, 25414, 25250, 25266, 20513, 20520, 20530, 25433, 25440, 25456, 25472, 25482, 0}, 0, 0, 2438, 187, {2440,0,0,0,0,0,0,0,0,0,0,0,0,0},{25495,0,0,0,0,0,0,0,0,0},{1722,1730,843,0,0,0,0,0,0,0,0,0},{1739,1750,848,0,0,0,0,0,0},{25514,25522,0,0,0,0,0,0}},
+       {1, 1820, 1823, {17419, 17438, 25532, 17479, 17498, 17520, 17545}, {17564, 17574, 25554, 17597, 17607, 17620, 17636}, {17646, 17650, 17657, 17664, 17671, 17678, 17685}, {25567, 25592, 17724, 25623, 25642, 17766, 25649, 25662, 25678, 25703, 25725, 25753, 0}, {25567, 25592, 17724, 25623, 25642, 17766, 25649, 25662, 25678, 25703, 25725, 25753, 0}, {25775, 25788, 17724, 25807, 25642, 17766, 25649, 25823, 25830, 25849, 25865, 25887, 0}, {25775, 25788, 17724, 25807, 25642, 17766, 25649, 25823, 25830, 25849, 25865, 25887, 0}, 0, 0, 2438, 187, {2440,2451,4157,8015,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {3551, 25903, 25908, {25913, 25920, 25931, 25944, 25957, 25968, 25981}, {25992, 25997, 26002, 26007, 26012, 26017, 26022}, {6528, 6530, 6532, 6534, 6536, 6538, 6540}, {26027, 26053, 26081, 26111, 26141, 26167, 26197, 26223, 26251, 26275, 26303, 26340, 0}, {26027, 26053, 26081, 26111, 26141, 26167, 26197, 26223, 26251, 26275, 26303, 26340, 0}, {26379, 26391, 26403, 26415, 26427, 26439, 26451, 26463, 26475, 26487, 26500, 26513, 0}, {26379, 26391, 26403, 26415, 26427, 26439, 26451, 26463, 26475, 26487, 26500, 26513, 0}, 0, 0, 2438, 187, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{26526,26564,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {26596, 26620, 26642, {26667, 26695, 26723, 26760, 26791, 26825, 26850}, {26884, 26900, 26916, 26941, 26960, 26982, 26995}, {27017, 27024, 27031, 27038, 27045, 27052, 27056}, {27066, 27100, 27137, 27171, 27205, 27236, 27273, 27310, 27350, 27384, 27418, 27467, 0}, {27066, 27100, 27137, 27171, 27205, 27236, 27273, 27310, 27350, 27384, 27418, 27467, 0}, {27516, 27529, 27542, 27555, 27568, 27581, 27594, 27607, 27620, 27633, 27649, 27665, 0}, {27516, 27529, 27542, 27555, 27568, 27581, 27594, 27607, 27620, 27633, 27649, 27665, 0}, 0, 0, 185, 187, {1518,1527,1536,1567,1556,1545,1585,1578,1592,0,0,0,0,0},{27681,27724,27772,27804,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{27841,1805,0,0,0,0,0,0}},
+       {289, 1820, 1823, {27874, 27883, 27893, 27905, 27918, 27927, 27939}, {27951, 27955, 27960, 27964, 27968, 27972, 27976}, {1914, 27980, 2300, 2300, 15237, 6216, 1914}, {27983, 27990, 27999, 28006, 2594, 28013, 28021, 28032, 28037, 28042, 28049, 28058, 0}, {27983, 27990, 27999, 28006, 2594, 28013, 28021, 28032, 28037, 28042, 28049, 28058, 0}, {28066, 28070, 27960, 28074, 2594, 28078, 28082, 28032, 28037, 28086, 28090, 28095, 0}, {28066, 28070, 27960, 28074, 2594, 28078, 28082, 28032, 28037, 28086, 28090, 28095, 0}, 2, 1, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 28100, 28116, {28132, 28154, 28167, 28186, 28196, 28227, 28243}, {28132, 28154, 28167, 28186, 28196, 28227, 28243}, {6528, 6530, 6532, 6534, 6536, 6538, 6540}, {28256, 28269, 28288, 28301, 28314, 28327, 28346, 28365, 28378, 28394, 28407, 28432, 0}, {28256, 28269, 28288, 28301, 28314, 28327, 28346, 28365, 28378, 28394, 28407, 28432, 0}, {28256, 28269, 28288, 28301, 28314, 28327, 28346, 28365, 28378, 28394, 28407, 28432, 0}, {28256, 28269, 28288, 28301, 28314, 28327, 28346, 28365, 28378, 28394, 28407, 28432, 0}, 0, 0, 185, 187, {189,1556,0,0,0,0,0,0,0,0,0,0,0,0},{3520,9963,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{28445,0,0,0,0,0,0,0}},
+       {289, 28480, 28505, {28530, 28555, 28574, 28602, 28621, 28646, 28665}, {28530, 28555, 28574, 28602, 28621, 28646, 28665}, {28687, 28691, 28695, 28699, 28709, 28713, 28723}, {28727, 28746, 28762, 28775, 28788, 28810, 28829, 28851, 28867, 28883, 28896, 28912, 0}, {28727, 28746, 28762, 28775, 28788, 28810, 28829, 28851, 28867, 28883, 28896, 28912, 0}, {28928, 28937, 28946, 28955, 28964, 28973, 28985, 28994, 29003, 29012, 29021, 29030, 0}, {28928, 28937, 28946, 28955, 28964, 28973, 28985, 28994, 29003, 29012, 29021, 29030, 0}, 0, 0, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{29039,3520,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 7261, 7266, {3833, 29066, 3847, 29071, 29081, 29087, 3880}, {29094, 8298, 3699, 29098, 29103, 29107, 29111}, {2565, 2308, 2300, 2300, 29116, 3927, 1914}, {29118, 29126, 3943, 3949, 29135, 29140, 29146, 3972, 29152, 29161, 29169, 29178, 0}, {29187, 29195, 4032, 1012, 7947, 29204, 29210, 4055, 7964, 7973, 7981, 29216, 0}, {29225, 2655, 3699, 29229, 2594, 29233, 29238, 19914, 18218, 29242, 2688, 3707, 0}, {29225, 2655, 3699, 29229, 2594, 29233, 29238, 19914, 18218, 29242, 2688, 3707, 0}, 2, 1, 185, 187, {198,17272,0,0,0,0,0,0,0,0,0,0,0,0},{5508,5455,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1, 29246, 29258, {29270, 17438, 29298, 17479, 17498, 17520, 17545}, {17564, 17574, 25554, 17597, 17607, 17620, 17636}, {0, 0, 0, 0, 0, 0, 0}, {25567, 25592, 17724, 25623, 25642, 17766, 25649, 29317, 29333, 29361, 25725, 25753, 0}, {25567, 25592, 17724, 25623, 25642, 17766, 25649, 29317, 29333, 29361, 25725, 25753, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, 0, 0, 2438, 187, {2440,2451,4157,8015,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {3551, 29383, 29395, {29404, 29420, 29436, 29464, 29480, 29523, 29548}, {29404, 29420, 29576, 29464, 29586, 29608, 29621}, {29631, 29635, 29639, 29643, 29647, 29660, 29667}, {29674, 29693, 29718, 29737, 29762, 29775, 29788, 29801, 29823, 29857, 29882, 29910, 0}, {29674, 29693, 29718, 29737, 29762, 29775, 29788, 29801, 29823, 29857, 29882, 29910, 0}, {29938, 29945, 29955, 29737, 29762, 29775, 29788, 29968, 29978, 29991, 30001, 30014, 0}, {29938, 29945, 29955, 29737, 29762, 29775, 29788, 29968, 29978, 29991, 30001, 30014, 0}, 0, 1, 2438, 691, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{16078,16096,0,0,0,0,0,0,0,0},{20671,251,0,0,0,0,0,0,0,0,0,0},{20691,269,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {3551, 30027, 30037, {30050, 30060, 30067, 30080, 30090, 30100, 30110}, {30050, 30060, 30120, 30080, 30090, 30100, 30110}, {30130, 30134, 30138, 30142, 30146, 30150, 30154}, {30158, 30174, 30190, 30200, 30213, 30220, 30227, 30237, 30250, 30269, 30285, 30301, 0}, {30158, 30174, 30190, 30200, 30213, 30220, 30227, 30237, 30250, 30317, 30285, 30301, 0}, {30336, 30346, 30190, 30356, 30213, 30220, 30227, 30366, 30376, 30386, 30396, 30406, 0}, {30336, 30346, 30190, 30356, 30213, 30220, 30227, 30366, 30376, 30386, 30396, 30406, 0}, 0, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 30416, 30426, {30439, 30446, 30452, 30459, 30465, 30471, 30479}, {30489, 30493, 30497, 30501, 30505, 30509, 30513}, {12692, 12692, 12692, 12692, 12692, 12692, 12692}, {30519, 30528, 30537, 30542, 30548, 30554, 30560, 30567, 30573, 30582, 30591, 30599, 0}, {30519, 30528, 30537, 30542, 30548, 30554, 30560, 30567, 30573, 30582, 30591, 30599, 0}, {30608, 30612, 3699, 30616, 3668, 30620, 30624, 30628, 30633, 30637, 30643, 30647, 0}, {30608, 30612, 3699, 30616, 3668, 30620, 30624, 30628, 30633, 30637, 30643, 30647, 0}, 0, 0, 2438, 187, {2440,2451,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 30651, 30692, {30733, 30752, 30771, 30796, 30815, 30837, 30862}, {30881, 17574, 30891, 17597, 30907, 17620, 17636}, {30920, 17650, 30924, 17664, 30928, 17678, 17685}, {17689, 30935, 17724, 30963, 25642, 30982, 17776, 30992, 31008, 31039, 31061, 31086, 0}, {17689, 30935, 17724, 30963, 25642, 30982, 17776, 30992, 31008, 31039, 31061, 31086, 0}, {17689, 30935, 17724, 30963, 25642, 30982, 17776, 30992, 31008, 31039, 31061, 31086, 0}, {17689, 30935, 17724, 30963, 25642, 30982, 17776, 30992, 31008, 31039, 31061, 31086, 0}, 0, 0, 185, 187, {3711,3720,3727,3736,1599,1556,3747,0,0,0,0,0,0,0},{31111,31131,222,10501,0,0,0,0,0,0},{3532,242,843,251,0,0,0,0,0,0,0,0},{3540,257,848,269,0,0,0,0,0},{25522,0,0,0,0,0,0,0}},
+       {289, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {31145, 31152, 31161, 31176, 31187, 31196, 31203, 31210, 31217, 31228, 31241, 31254, 0}, {31145, 31152, 31161, 31176, 31187, 31196, 31203, 31210, 31217, 31228, 31241, 31254, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, 0, 6, 185, 187, {1518,1556,0,0,0,0,0,0,0,0,0,0,0,0},{3520,4935,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{848,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {31259, 31266, 31272, 31279, 31290, 31298, 31307}, {31314, 8298, 3699, 31318, 31322, 31326, 10582}, {2308, 2308, 2300, 2300, 5644, 16338, 1914}, {3929, 31330, 31338, 3949, 3955, 31344, 31350, 3972, 31356, 31366, 31374, 31384, 0}, {3929, 31330, 31338, 3949, 3955, 31344, 31350, 3972, 31356, 31366, 31374, 31384, 0}, {31394, 31398, 3699, 29229, 3668, 31402, 31406, 19914, 18218, 2684, 31410, 16295, 0}, {31394, 31398, 3699, 29229, 3668, 31402, 31406, 19914, 18218, 2684, 31410, 16295, 0}, 0, 0, 185, 187, {3711,16480,0,0,0,0,0,0,0,0,0,0,0,0},{3757,3776,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 0, 0, {31414, 31421, 31429, 31436, 31443, 31451, 31459}, {31466, 31469, 31472, 31475, 31478, 31481, 31484}, {2308, 2308, 2302, 2308, 12692, 3925, 12692}, {31487, 31495, 31505, 31511, 31519, 31524, 31529, 31534, 31541, 19899, 31549, 31557, 0}, {31487, 31495, 31505, 31511, 31519, 31524, 31529, 31534, 31541, 19899, 31549, 31557, 0}, {2651, 31565, 3699, 31569, 3668, 30620, 30624, 31573, 3639, 2684, 31577, 16295, 0}, {2651, 31565, 3699, 31569, 3668, 30620, 30624, 31573, 3639, 2684, 31577, 16295, 0}, 0, 0, 185, 187, {1120,17272,0,0,0,0,0,0,0,0,0,0,0,0},{3789,3808,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 31581, 31592, {31602, 31620, 31635, 31657, 31670, 31684, 31701}, {31725, 31733, 31738, 31657, 31670, 31750, 31757}, {0, 0, 0, 0, 0, 0, 0}, {31771, 31793, 31809, 31829, 31843, 31860, 31875, 31892, 31906, 31919, 31938, 31952, 0}, {31771, 31793, 31809, 31829, 31843, 31860, 31875, 31892, 31906, 31919, 31938, 31952, 0}, {31971, 31986, 31995, 32008, 32015, 32025, 32033, 32043, 32050, 32056, 32068, 32075, 0}, {31971, 31986, 31995, 32008, 32015, 32025, 32033, 32043, 32050, 32056, 32068, 32075, 0}, 0, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 0, 0, {32087, 32095, 15840, 15849, 15858, 32106, 32116}, {16326, 15890, 15894, 15898, 15902, 16189, 32125}, {0, 0, 0, 0, 0, 0, 0}, {32129, 32138, 32148, 32156, 10611, 3672, 32164, 32170, 32179, 32188, 32197, 32206, 0}, {32129, 32138, 32148, 32156, 10611, 3672, 32164, 32170, 32179, 32188, 32197, 32206, 0}, {2651, 2655, 15909, 32215, 10611, 2668, 2672, 19914, 18218, 2684, 32219, 16295, 0}, {2651, 2655, 15909, 32215, 10611, 2668, 2672, 19914, 18218, 2684, 32219, 16295, 0}, 0, 0, 2438, 187, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{16078,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {32223, 32236, 32241, {32246, 32253, 32268, 32282, 32298, 32313, 32329}, {6212, 32344, 2402, 32348, 32352, 32356, 32360}, {1914, 12692, 2300, 1909, 1914, 2302, 12692}, {7350, 7358, 32364, 32371, 32378, 2341, 2346, 32383, 32393, 32404, 32413, 32423, 0}, {7350, 7358, 32364, 32371, 32378, 2341, 2346, 32383, 32393, 32404, 32413, 32423, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, 0, 0, 2438, 187, {2440,2451,1556,2460,0,0,0,0,0,0,0,0,0,0},{32433,2194,11931,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 32452, 32457, {32462, 32478, 32486, 32494, 32503, 32515, 32525}, {32535, 32541, 32547, 32551, 32555, 32563, 3639}, {0, 0, 0, 0, 0, 0, 0}, {32570, 32583, 32597, 32606, 32612, 32616, 32621, 32629, 16250, 32642, 16267, 16275, 0}, {32570, 32583, 32597, 32606, 32612, 32616, 32621, 32629, 16250, 32642, 16267, 16275, 0}, {32651, 2655, 32655, 16283, 32612, 32659, 2672, 32663, 2680, 32671, 2688, 16295, 0}, {32651, 2655, 32655, 16283, 32612, 32659, 2672, 32663, 2680, 32671, 2688, 16295, 0}, 0, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {32677, 32700, 32707, {32714, 32724, 32734, 32744, 32754, 32764, 32774}, {32784, 32791, 32798, 32805, 32812, 32819, 32826}, {32833, 32837, 32841, 32845, 32849, 32853, 32857}, {32861, 32868, 32875, 32882, 32889, 32896, 32903, 32910, 32917, 32924, 32931, 32941, 0}, {32861, 32868, 32875, 32882, 32889, 32896, 32903, 32910, 32917, 32924, 32931, 32941, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, 0, 0, 185, 187, {1518,1527,1536,1567,1556,1545,0,0,0,0,0,0,0,0},{32951,32975,33005,33035,33052,0,0,0,0,0},{1722,843,251,0,0,0,0,0,0,0,0,0},{1739,848,269,0,0,0,0,0,0},{33075,1805,0,0,0,0,0,0}},
+       {289, 0, 0, {27951, 8298, 33092, 33099, 33109, 33114, 33121}, {33128, 6196, 33132, 4800, 33137, 33142, 33147}, {4392, 33152, 33155, 33158, 33161, 33164, 33167}, {33170, 33177, 33092, 33188, 33194, 33198, 33207, 33214, 33219, 33228, 33233, 33236, 0}, {33170, 33177, 33092, 33188, 33194, 33198, 33207, 33214, 33219, 33228, 33233, 33236, 0}, {33242, 33246, 33253, 28074, 33194, 33258, 33263, 33214, 33268, 33228, 33233, 33273, 0}, {33242, 33246, 33253, 28074, 33194, 33258, 33263, 33214, 33268, 33228, 33233, 33273, 0}, 2, 1, 2438, 187, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{16078,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 33277, 33282, {33287, 33295, 33305, 33315, 33324, 33334, 33342}, {33352, 33356, 33361, 33365, 33369, 33373, 33377}, {1914, 2300, 2565, 2300, 2565, 2306, 1914}, {2567, 2574, 2582, 2588, 2594, 2598, 2603, 33381, 33390, 33401, 33410, 33420, 0}, {2567, 2574, 2582, 2588, 2594, 2598, 2603, 33381, 33390, 33401, 33410, 33420, 0}, {2651, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, {2651, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, 0, 0, 185, 187, {198,189,2696,2451,1556,0,0,0,0,0,0,0,0,0},{4935,4952,3520,0,0,0,0,0,0,0},{251,843,4246,4961,4971,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {33430, 33446, 33451, {33456, 33481, 33510, 33535, 33548, 33563, 33580}, {33595, 33600, 33605, 33610, 33615, 33620, 8599}, {19210, 19210, 33625, 8610, 8613, 19210, 8610}, {33628, 33647, 33662, 33684, 33704, 33720, 33736, 33750, 33776, 33800, 33817, 33834, 0}, {33628, 33647, 33662, 33684, 33704, 33720, 33736, 33750, 33776, 33800, 33817, 33834, 0}, {33851, 33860, 33869, 33883, 33897, 33909, 33921, 33931, 33947, 33961, 33968, 33975, 0}, {33851, 33860, 33869, 33883, 33897, 33909, 33921, 33931, 33947, 33961, 33968, 33975, 0}, 0, 1, 691, 187, {2154,4724,1556,33982,33992,0,0,0,0,0,0,0,0,0},{34005,34040,34069,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{34104,0,0,0,0,0,0,0}},
+       {3551, 0, 0, {34120, 34132, 34143, 34155, 34167, 34177, 34189}, {34204, 34209, 34214, 34219, 34224, 34229, 34234}, {0, 0, 0, 0, 0, 0, 0}, {34239, 34248, 34260, 34268, 34273, 34283, 34290, 34299, 34306, 34312, 34321, 34332, 0}, {34239, 34248, 34260, 34268, 34273, 34283, 34290, 34299, 34306, 34312, 34321, 34332, 0}, {34340, 34345, 34350, 34355, 34360, 34365, 34370, 34224, 34375, 34380, 34385, 34390, 0}, {34340, 34345, 34350, 34355, 34360, 34365, 34370, 34224, 34375, 34380, 34385, 34390, 0}, 0, 0, 185, 187, {1545,15492,0,0,0,0,0,0,0,0,0,0,0,0},{20050,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {34395, 34406, 34408, {34410, 34423, 34431, 34440, 34450, 34460, 34469}, {34481, 34485, 34489, 34493, 34497, 34501, 34505}, {2565, 2308, 2300, 7600, 12692, 5644, 1914}, {34509, 34523, 34534, 34543, 34554, 34566, 34580, 34592, 34605, 34618, 34630, 34643, 0}, {34509, 34523, 34534, 34543, 34554, 34566, 34580, 34592, 34605, 34618, 34630, 34643, 0}, {34657, 34662, 34668, 34674, 34679, 34685, 34691, 34696, 34702, 34707, 18931, 34713, 0}, {34657, 34662, 34668, 34674, 34679, 34685, 34691, 34696, 34702, 34707, 18931, 34713, 0}, 2, 1, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{34719,34741,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
        {1, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {9, 18, 25, 45, 65, 89, 113, 120, 131, 142, 151, 169, 0}, {9, 18, 25, 45, 65, 89, 113, 120, 131, 142, 151, 169, 0}, {9, 18, 25, 45, 65, 89, 113, 120, 131, 142, 151, 169, 0}, {9, 18, 25, 45, 65, 89, 113, 120, 131, 142, 151, 169, 0}, 0, 0, 185, 187, {189,198,0,0,0,0,0,0,0,0,0,0,0,0},{209,222,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
        {289, 296, 307, {318, 331, 352, 367, 378, 397, 408}, {421, 426, 431, 436, 441, 446, 451}, {456, 459, 462, 465, 468, 459, 465}, {471, 484, 501, 510, 521, 528, 535, 542, 555, 574, 591, 606, 0}, {471, 484, 501, 510, 521, 528, 535, 542, 555, 574, 591, 606, 0}, {623, 629, 501, 639, 521, 528, 535, 647, 655, 665, 673, 683, 0}, {623, 629, 501, 639, 521, 528, 535, 647, 655, 665, 673, 683, 0}, 2, 1, 691, 187, {693,708,724,740,0,0,0,0,0,0,0,0,0,0},{757,776,794,819,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{856,0,0,0,0,0,0,0}},
-       {289, 872, 878, {884, 893, 901, 909, 918, 925, 935}, {944, 948, 952, 956, 960, 964, 968}, {972, 975, 978, 981, 984, 987, 990}, {993, 999, 1006, 1012, 1018, 1023, 1028, 1035, 1041, 1050, 1058, 1067, 0}, {993, 999, 1006, 1012, 1018, 1023, 1028, 1035, 1041, 1050, 1058, 1067, 0}, {1076, 1081, 1006, 1086, 1018, 1023, 1091, 1096, 1100, 1105, 1110, 1115, 0}, {1076, 1081, 1006, 1086, 1018, 1023, 1091, 1096, 1100, 1105, 1110, 1115, 0}, 2, 1, 185, 187, {198,189,1120,1128,1139,1148,1156,1167,1176,0,0,0,0,0},{1184,1207,1225,1242,1254,1270,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{848,0,0,0,0,0,0,0,0},{1286,1301,1311,1320,0,0,0,0}},
-       {1327, 1340, 1347, {1354, 1364, 1374, 1384, 1394, 1404, 1414}, {35216, 35223, 35230, 35237, 35244, 35251, 35258}, {1473, 1477, 1481, 1485, 1489, 1493, 1497}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, 0, 0, 185, 187, {1654,1681,1692,0,0,0,0,0,0,0,0,0,0,0},{1744,6632,1822,35265,0,0,0,0,0,0},{1866,1858,251,843,0,0,0,0,0,0,0,0},{1886,1875,269,848,0,0,0,0,0},{1898,0,0,0,0,0,0,0}},
-       {1921, 1929, 1932, {1935, 1943, 1953, 1961, 1969, 1978, 1985}, {1992, 1995, 1998, 2002, 2005, 2009, 2013}, {2016, 2018, 2020, 2023, 2025, 2018, 2023}, {2028, 2034, 2040, 2048, 2054, 2062, 2070, 2080, 2086, 2094, 2102, 2111, 0}, {2120, 2126, 2133, 2141, 2147, 2155, 2163, 2173, 2086, 2179, 2187, 2197, 0}, {2206, 2210, 2215, 2220, 2224, 2229, 2234, 2239, 2243, 2249, 2255, 2259, 0}, {2206, 2210, 2215, 2220, 2224, 2229, 2234, 2239, 2243, 2249, 2255, 2259, 0}, 2, 1, 2263, 187, {2266,2277,198,2286,189,2293,1692,1663,1721,0,0,0,0,0},{2300,0,0,0,0,0,0,0,0,0},{843,251,2313,2321,0,0,0,0,0,0,0,0},{848,269,2326,2337,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 1929, 1932, {2345, 2353, 2360, 2368, 2375, 2383, 2390}, {2398, 2403, 2407, 2411, 2415, 2419, 2423}, {2023, 2428, 2430, 2432, 2430, 2434, 2436}, {2438, 2445, 2453, 2459, 2465, 2469, 2474, 2479, 2486, 2496, 2504, 2513, 0}, {2438, 2445, 2453, 2459, 2465, 2469, 2474, 2479, 2486, 2496, 2504, 2513, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, 2, 1, 2566, 187, {1128,1139,1692,2568,0,0,0,0,0,0,0,0,0,0},{2300,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 2579, 2585, {2592, 2600, 2607, 2616, 2625, 2636, 2644}, {2652, 2655, 2658, 2661, 2664, 2667, 2670}, {2023, 2428, 2673, 2428, 2673, 2434, 2023}, {2675, 2682, 2690, 2696, 2702, 2706, 2711, 2716, 2723, 2733, 2741, 2750, 0}, {2675, 2682, 2690, 2696, 2702, 2706, 2711, 2716, 2723, 2733, 2741, 2750, 0}, {2759, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, {2759, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, 2, 1, 691, 187, {1156,1167,1692,2804,0,0,0,0,0,0,0,0,0,0},{2818,2300,2837,0,0,0,0,0,0,0},{251,2850,0,0,0,0,0,0,0,0,0,0},{269,2862,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 2877, 2884, {2891, 2906, 2921, 2932, 2947, 2960, 2979}, {2994, 3001, 3008, 3015, 3022, 3029, 3036}, {3043, 3046, 3049, 3049, 3052, 3052, 3055}, {3058, 3079, 3102, 3117, 3134, 3145, 3160, 3175, 3194, 3217, 3236, 3255, 0}, {3276, 3297, 3320, 3335, 3352, 3363, 3378, 3393, 3412, 3435, 3454, 3473, 0}, {3494, 3501, 3508, 3515, 3522, 3529, 3538, 3547, 3554, 3561, 3568, 3575, 0}, {3494, 3501, 3508, 3515, 3522, 3529, 3538, 3547, 3554, 3561, 3568, 3575, 0}, 2, 1, 185, 187, {2277,198,2286,189,3582,1692,0,0,0,0,0,0,0,0},{1207,1242,0,0,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3613, 1929, 1932, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 185, 187, {3773,3782,3789,3798,1735,1692,3809,0,0,0,0,0,0,0},{3819,3838,3851,3870,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {4322, 4332, 4336, {4340, 4352, 4364, 4374, 4388, 4398, 4410}, {4421, 4424, 4427, 4430, 4433, 4436, 4439}, {2023, 2428, 2430, 4442, 2430, 2018, 2436}, {4444, 4453, 4462, 4472, 4481, 4490, 4499, 4509, 4516, 4524, 4532, 4542, 0}, {4551, 4562, 4573, 4585, 4596, 4607, 4618, 4630, 4639, 4649, 4659, 4671, 0}, {4682, 4688, 4694, 4701, 4707, 4713, 4719, 4726, 4730, 4735, 4740, 4747, 0}, {4682, 4688, 4694, 4701, 4707, 4713, 4719, 4726, 4730, 4735, 4740, 4747, 0}, 2, 1, 691, 187, {4753,1156,4762,1692,0,0,0,0,0,0,0,0,0,0},{2300,4769,2818,0,0,0,0,0,0,0},{843,2321,0,0,0,0,0,0,0,0,0,0},{848,2337,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {4783, 4792, 4798, 4804, 4813, 4819, 4828}, {4835, 4840, 4845, 4850, 4855, 4860, 4865}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, 2, 1, 185, 187, {198,189,1167,1139,1692,0,0,0,0,0,0,0,0,0},{4985,1242,5002,0,0,0,0,0,0,0},{251,843,4288,5011,5021,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1, 5029, 5042, {5053, 5071, 5085, 5103, 5121, 5139, 5155}, {5169, 5181, 5193, 5205, 5217, 5229, 5241}, {5248, 5253, 5258, 5263, 5268, 5273, 5278}, {5283, 5294, 5307, 5314, 5325, 5332, 5341, 5350, 5363, 5376, 5391, 5404, 0}, {5283, 5294, 5307, 5314, 5325, 5332, 5341, 5350, 5363, 5376, 5391, 5404, 0}, {5415, 5424, 5307, 5433, 5325, 5442, 5451, 5460, 5469, 5478, 5487, 5496, 0}, {5415, 5424, 5307, 5433, 5325, 5442, 5451, 5460, 5469, 5478, 5487, 5496, 0}, 0, 0, 185, 187, {198,5505,189,209,1139,1128,5518,1692,5531,5548,0,0,0,0},{5558,5505,5576,5598,5531,0,0,0,0,0},{251,242,0,0,0,0,0,0,0,0,0,0},{269,257,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {5619, 5627, 5631, {5635, 5645, 5653, 5658, 5665, 5678, 5686}, {3989, 5694, 4442, 5696, 5700, 2018, 5703}, {3989, 5694, 4442, 5707, 5700, 2018, 5707}, {5710, 5718, 5727, 5736, 5745, 5752, 5760, 5768, 5778, 5789, 2504, 2513, 0}, {5710, 5718, 5727, 5736, 5745, 5752, 5760, 5768, 5778, 5789, 2504, 2513, 0}, {5798, 5803, 5809, 5816, 5822, 5828, 5834, 5840, 5845, 5852, 1110, 5857, 0}, {5798, 5803, 5809, 5816, 5822, 5828, 5834, 5840, 5845, 5852, 1110, 5857, 0}, 2, 1, 691, 187, {5862,5874,1692,5888,0,0,0,0,0,0,0,0,0,0},{5897,0,0,0,0,0,0,0,0,0},{843,251,3594,0,0,0,0,0,0,0,0,0},{848,269,3602,0,0,0,0,0,0},{5911,0,0,0,0,0,0,0}},
-       {1921, 5922, 5927, {5932, 5943, 5954, 5968, 5982, 5994, 6006}, {6018, 6023, 6029, 6035, 6041, 6046, 6052}, {2023, 2428, 6057, 2428, 2434, 2434, 2436}, {6060, 6068, 4887, 6077, 6084, 6089, 6096, 6103, 2486, 5789, 6111, 6121, 0}, {6060, 6068, 4887, 6077, 6084, 6089, 6096, 6103, 2486, 5789, 6111, 6121, 0}, {5798, 1081, 4845, 6130, 6084, 5828, 5834, 6135, 6142, 5852, 6147, 1115, 0}, {5798, 1081, 4845, 6130, 6084, 5828, 5834, 6135, 6142, 5852, 6147, 1115, 0}, 2, 1, 691, 187, {4753,1167,6153,6165,1692,6179,189,0,0,0,0,0,0,0},{2300,4769,6188,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {6207, 6216, 6224, 6233, 6244, 6253, 6262}, {6269, 6273, 2530, 6277, 6281, 6285, 6289}, {2673, 2436, 2428, 2428, 6293, 3989, 2023}, {6295, 6303, 4005, 6312, 6319, 6326, 6333, 4034, 6340, 6350, 6358, 6367, 0}, {6376, 6384, 4094, 6393, 6400, 6407, 6414, 4117, 6421, 6431, 1058, 6439, 0}, {6448, 2526, 2530, 2534, 6452, 6456, 6460, 6464, 6468, 6472, 2558, 6476, 0}, {6448, 2526, 2530, 2534, 6452, 6456, 6460, 6464, 6468, 6472, 2558, 6476, 0}, 2, 1, 185, 187, {198,3582,189,6480,2286,0,0,0,0,0,0,0,0,0},{4985,6488,1242,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1327, 6497, 6504, {6511, 6521, 6531, 6541, 6551, 6561, 6571}, {1473, 6581, 6585, 6589, 6593, 6597, 6601}, {1473, 6581, 6585, 6589, 6593, 6597, 6601}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, 0, 0, 185, 187, {1681,1735,1714,1654,1692,0,0,0,0,0,0,0,0,0},{1744,6632,6656,6683,6712,6736,6765,6785,0,0},{843,251,1858,1866,0,0,0,0,0,0,0,0},{848,269,1875,1886,0,0,0,0,0},{1898,0,0,0,0,0,0,0}},
-       {6810, 6824, 6831, {6838, 6848, 6858, 6868, 6878, 6888, 6898}, {6908, 6912, 6916, 6920, 6924, 6928, 6932}, {6908, 6912, 6916, 6920, 6924, 6928, 6932}, {6936, 6941, 6946, 6951, 6956, 6961, 6966, 6971, 6976, 6981, 6987, 6993, 0}, {6936, 6941, 6946, 6951, 6956, 6961, 6966, 6971, 6976, 6981, 6987, 6993, 0}, {6936, 6941, 6946, 6951, 6956, 6961, 6966, 6971, 6976, 6981, 6987, 6993, 0}, {6936, 6941, 6946, 6951, 6956, 6961, 6966, 6971, 6976, 6981, 6987, 6993, 0}, 0, 0, 2566, 187, {1692,5888,1721,1663,0,0,0,0,0,0,0,0,0,0},{6999,7028,7052,7079,7101,7132,7158,7189,7215,7242},{1858,1866,843,251,0,0,0,0,0,0,0,0},{1875,1886,848,269,0,0,0,0,0},{7264,0,0,0,0,0,0,0}},
-       {289, 7281, 7286, {7291, 7298, 7306, 7314, 7323, 7333, 7341}, {7350, 4424, 7353, 7356, 7359, 7362, 7365}, {7368, 2428, 2673, 3705, 2673, 3989, 7368}, {7370, 7378, 7387, 2459, 7393, 2469, 2474, 7397, 2486, 2496, 2504, 2513, 0}, {7370, 7378, 7387, 2459, 7393, 2469, 2474, 7397, 2486, 2496, 2504, 2513, 0}, {2522, 2526, 7406, 2534, 7393, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 7406, 2534, 7393, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, 2, 1, 2566, 187, {7410,2293,1139,189,1167,7419,1692,0,0,0,0,0,0,0},{4985,6488,1242,5002,0,0,0,0,0,0},{251,843,2321,7431,7443,0,0,0,0,0,0,0},{269,848,7455,7470,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 7281, 7286, {2345, 2353, 2360, 2368, 2375, 2383, 2390}, {7485, 7490, 7494, 7498, 7502, 7506, 7510}, {2023, 2428, 2430, 2432, 2430, 2434, 2436}, {2438, 2445, 4887, 2459, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2438, 2445, 4887, 2459, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, 2, 1, 691, 187, {1156,7519,1167,4762,2804,1692,0,0,0,0,0,0,0,0},{2300,4769,0,0,0,0,0,0,0,0},{251,843,7529,7539,4288,2321,7550,7561,0,0,0,0},{269,848,7571,7585,4302,2337,7598,7612,0},{1301,7625,7635,0,0,0,0,0}},
-       {289, 1929, 1932, {7643, 7653, 7667, 7674, 7681, 7690, 1985}, {7698, 7705, 7710, 7714, 7719, 7724, 7728}, {2016, 2018, 3705, 7733, 7736, 2018, 2023}, {7738, 7747, 7752, 7759, 2465, 7769, 7778, 7785, 7795, 7805, 2102, 7818, 0}, {7828, 7837, 7844, 7850, 7859, 7864, 7872, 7878, 7887, 7897, 7911, 7921, 0}, {7929, 7933, 2530, 7937, 2465, 7941, 7945, 7949, 7953, 7957, 2255, 7962, 0}, {7929, 7933, 2530, 7937, 2465, 7941, 7945, 7949, 7953, 7957, 2255, 7962, 0}, 2, 1, 2566, 187, {1692,5888,0,0,0,0,0,0,0,0,0,0,0,0},{1242,5505,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3883, 1929, 1932, {3895, 7966, 7980, 7993, 8006, 8019, 3942}, {6269, 8031, 8035, 8039, 8043, 8047, 8051}, {2673, 2023, 2430, 8056, 8056, 2023, 2023}, {8058, 8066, 8076, 1012, 8083, 8088, 8094, 4117, 8100, 8109, 8117, 8126, 0}, {8058, 8066, 8076, 1012, 8083, 8088, 8094, 4117, 8100, 8109, 8117, 8126, 0}, {2522, 8135, 2530, 8139, 4898, 2538, 2542, 6464, 6468, 8143, 2558, 8147, 0}, {2522, 8135, 2530, 8139, 4898, 2538, 2542, 6464, 6468, 8143, 2558, 8147, 0}, 0, 0, 185, 187, {198,189,2277,2286,1139,1128,2293,7410,1167,1156,7419,4762,4753,1692},{4211,4266,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {289, 8151, 8154, {8157, 8166, 4798, 8176, 8184, 8192, 8201}, {8207, 8210, 4424, 8214, 8217, 8221, 2013}, {2673, 6293, 2428, 2428, 6293, 3989, 2023}, {8224, 8232, 4887, 8239, 8246, 8251, 8261, 8269, 8275, 8285, 2504, 2513, 0}, {8224, 8232, 4887, 8239, 8246, 8251, 8261, 8269, 8275, 8285, 2504, 2513, 0}, {8293, 8300, 4887, 4962, 8246, 8306, 8313, 8269, 8318, 1105, 1110, 5857, 0}, {8293, 8300, 4887, 4962, 8246, 8306, 8313, 8269, 8318, 1105, 1110, 5857, 0}, 2, 1, 2566, 187, {1128,1139,0,0,0,0,0,0,0,0,0,0,0,0},{8324,0,0,0,0,0,0,0,0,0},{251,843,8353,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 7281, 7286, {8356, 8366, 8371, 8378, 8387, 8391, 8398}, {8409, 8413, 3761, 8417, 8421, 8425, 8429}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {8434, 8443, 8453, 8460, 4898, 8468, 8474, 2479, 8480, 8491, 8501, 8511, 0}, {8434, 8443, 8453, 8460, 4898, 8468, 8474, 2479, 8480, 8491, 8501, 8511, 0}, {8521, 1081, 4845, 6130, 4898, 8526, 8531, 5840, 4973, 1105, 1110, 5857, 0}, {8521, 1081, 4845, 6130, 4898, 8526, 8531, 5840, 4973, 1105, 1110, 5857, 0}, 0, 1, 691, 187, {1156,4753,1176,1128,1139,8536,8551,1692,8564,0,0,0,0,0},{1242,1207,4985,8579,0,0,0,0,0,0},{843,251,3594,242,0,0,0,0,0,0,0,0},{848,269,3602,257,0,0,0,0,0},{1301,1311,8590,1320,7635,8598,8604,8614}},
-       {289, 8622, 8642, {8668, 8691, 352, 8714, 8725, 8740, 8755}, {8770, 8775, 8780, 8785, 8790, 8795, 8800}, {8805, 8808, 8805, 8811, 8814, 8808, 8811}, {8817, 8830, 8845, 8854, 8867, 8874, 8883, 8892, 8905, 8922, 8937, 8950, 0}, {8965, 8978, 8993, 9004, 9017, 9024, 9033, 9042, 9057, 9074, 9089, 9102, 0}, {9117, 9125, 8845, 9135, 8867, 8874, 8883, 9143, 9151, 9161, 9169, 9179, 0}, {9117, 9125, 8845, 9135, 8867, 8874, 8883, 9143, 9151, 9161, 9169, 9179, 0}, 0, 1, 691, 187, {1156,1167,4762,1128,189,0,0,0,0,0,0,0,0,0},{776,757,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 1929, 1932, {9187, 9196, 9208, 9215, 9223, 9233, 9239}, {9246, 9250, 9254, 9258, 9262, 9267, 9271}, {9275, 9277, 9279, 9281, 9283, 9277, 9281}, {9286, 9296, 9305, 9313, 9321, 9329, 9336, 9343, 9351, 2102, 9357, 9365, 0}, {9374, 9384, 9393, 9401, 9409, 9417, 9424, 9431, 9440, 7911, 9446, 9456, 0}, {9465, 9469, 9474, 9479, 9483, 7945, 2239, 9487, 9491, 2255, 9495, 2259, 0}, {9465, 9469, 9474, 9479, 9483, 7945, 2239, 9487, 9491, 2255, 9495, 2259, 0}, 0, 1, 691, 187, {9499,9509,6153,9517,9529,9539,9549,1692,0,0,0,0,0,0},{9561,9575,9590,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1921, 1929, 1932, {9610, 9618, 9627, 9634, 9641, 9650, 1985}, {1992, 1995, 9657, 2002, 9660, 9664, 2013}, {2016, 2018, 9667, 2023, 9669, 2018, 2023}, {5710, 5718, 9672, 6077, 9678, 9683, 9688, 2479, 2486, 5789, 2504, 2513, 0}, {9693, 9702, 7844, 9712, 9720, 9726, 9732, 9738, 9746, 9756, 9765, 9774, 0}, {2522, 2526, 2530, 2534, 9678, 9683, 9688, 2546, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 9678, 9683, 9688, 2546, 2550, 2554, 2558, 2562, 0}, 2, 1, 691, 187, {4753,1156,1167,1692,5888,9783,9796,9806,0,0,0,0,0,0},{2300,0,0,0,0,0,0,0,0,0},{843,251,2321,0,0,0,0,0,0,0,0,0},{848,269,2337,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 9817, 9826, {9834, 9841, 9850, 9859, 9871, 9879, 9888}, {9898, 9902, 3761, 9907, 9912, 9916, 9920}, {2673, 5694, 2428, 2428, 9924, 2018, 2023}, {9926, 9932, 4887, 9939, 2465, 9945, 9953, 9960, 9966, 9974, 9980, 9988, 0}, {9926, 9932, 4887, 9939, 2465, 9945, 9953, 9960, 9966, 9974, 9980, 9988, 0}, {2759, 9996, 3761, 10000, 10004, 10008, 10012, 10016, 9920, 10020, 10024, 10029, 0}, {2759, 9996, 3761, 10000, 10004, 10008, 10012, 10016, 9920, 10020, 10024, 10029, 0}, 0, 1, 691, 187, {4753,4762,0,0,0,0,0,0,0,0,0,0,0,0},{1207,0,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {10033, 10046, 10049, {10052, 10060, 10068, 2368, 2375, 2383, 10075}, {10083, 10088, 10093, 2411, 2415, 2419, 10097}, {2023, 2428, 2430, 2432, 2430, 2434, 2436}, {7370, 7378, 4887, 2459, 2465, 2469, 2474, 10102, 2486, 2496, 2504, 2513, 0}, {7370, 7378, 4887, 2459, 2465, 2469, 2474, 10102, 2486, 2496, 2504, 2513, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, 2, 1, 2566, 187, {1692,5888,0,0,0,0,0,0,0,0,0,0,0,0},{10110,10128,0,0,0,0,0,0,0,0},{251,843,7529,0,0,0,0,0,0,0,0,0},{269,848,7585,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, 0, 0, 185, 187, {2277,2286,189,198,8579,10151,1692,0,0,0,0,0,0,0},{1242,10163,10179,0,0,0,0,0,0,0},{843,251,3594,242,0,0,0,0,0,0,0,0},{848,269,3602,257,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 10221, 10226, {10230, 10236, 10246, 10252, 10263, 10273, 10278}, {10288, 10292, 10296, 10300, 10305, 10309, 10313}, {2018, 2018, 2023, 10317, 2018, 7736, 7736}, {10320, 10325, 10332, 10337, 10343, 10350, 10358, 10365, 10374, 10381, 10386, 10393, 0}, {10320, 10325, 10332, 10337, 10343, 10350, 10358, 10365, 10374, 10381, 10386, 10393, 0}, {10401, 10405, 3761, 10410, 3730, 10414, 10418, 10422, 10427, 10431, 10435, 10439, 0}, {10401, 10405, 3761, 10410, 3730, 10414, 10418, 10422, 10427, 10431, 10435, 10439, 0}, 0, 1, 691, 187, {4753,4762,1156,1167,0,0,0,0,0,0,0,0,0,0},{10443,1242,10460,5505,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1, 10478, 10496, {10514, 10525, 10538, 10547, 10554, 10567, 10576}, {10514, 10525, 10538, 10547, 10554, 10567, 10576}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {10585, 10596, 10607, 10616, 10627, 10634, 10641, 10654, 10663, 10674, 10687, 10698, 0}, {10585, 10596, 10607, 10616, 10627, 10634, 10641, 10654, 10663, 10674, 10687, 10698, 0}, {10585, 10596, 10607, 10616, 10627, 10634, 10641, 10654, 10663, 10674, 10687, 10698, 0}, {10585, 10596, 10607, 10616, 10627, 10634, 10641, 10654, 10663, 10674, 10687, 10698, 0}, 0, 0, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 1929, 1932, {10723, 10730, 10736, 10743, 10748, 10754, 10760}, {10766, 10770, 10774, 10778, 10782, 10786, 10790}, {2428, 2023, 2023, 10794, 4442, 3987, 2023}, {10796, 10804, 10813, 2696, 10819, 2706, 2711, 10823, 2723, 2733, 2741, 10831, 0}, {10796, 10804, 10813, 2696, 10819, 2706, 2711, 10823, 2723, 2733, 2741, 10831, 0}, {2759, 2763, 3761, 2772, 10819, 2776, 2780, 10840, 2788, 2792, 2796, 10844, 0}, {2759, 2763, 3761, 2772, 10819, 2776, 2780, 10840, 2788, 2792, 2796, 10844, 0}, 0, 0, 185, 187, {198,189,1128,0,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 10848, 10853, {10858, 10871, 10890, 10907, 10920, 10933, 10950}, {10963, 8775, 8780, 8785, 8790, 8795, 8800}, {10968, 8808, 8805, 8811, 8814, 8808, 8811}, {10971, 10984, 10995, 11012, 11027, 11042, 11057, 11070, 11085, 11102, 11117, 11134, 0}, {11149, 11160, 11173, 11188, 11201, 11214, 11227, 11238, 11251, 11266, 11279, 11298, 0}, {11311, 11318, 11325, 11332, 11339, 11346, 11353, 11360, 11367, 11374, 11381, 11388, 0}, {11311, 11318, 11325, 11332, 11339, 11346, 11353, 11360, 11367, 11374, 11381, 11388, 0}, 0, 1, 691, 187, {1156,1167,1692,0,0,0,0,0,0,0,0,0,0,0},{11395,0,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{11413,0,0,0,0,0,0,0}},
-       {289, 11429, 11442, {11455, 11470, 11491, 11506, 11519, 11532, 10950}, {421, 426, 11547, 436, 11552, 446, 451}, {456, 459, 11557, 465, 468, 459, 465}, {11560, 11577, 11586, 11601, 521, 11618, 11633, 11646, 11661, 11678, 11699, 11716, 0}, {11731, 11748, 11761, 11778, 9017, 11797, 11812, 11825, 11838, 11853, 11876, 11895, 0}, {11908, 11915, 11922, 11929, 521, 11936, 11943, 11950, 11957, 11964, 11971, 11978, 0}, {11908, 11915, 11922, 11929, 521, 11936, 11943, 11950, 11957, 11964, 11971, 11978, 0}, 0, 0, 691, 187, {1167,0,0,0,0,0,0,0,0,0,0,0,0,0},{1242,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 11985, 11990, {11995, 12003, 12014, 12020, 12026, 12035, 1985}, {9246, 9250, 2415, 12041, 9262, 9267, 12045}, {9275, 9277, 12049, 9281, 9283, 9277, 9281}, {2438, 2445, 9672, 2459, 2465, 12051, 12057, 12063, 2486, 2496, 2504, 2513, 0}, {2438, 2445, 9672, 2459, 2465, 12051, 12057, 12063, 2486, 2496, 2504, 2513, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, 0, 1, 691, 187, {4753,4762,2266,1156,12074,1167,9806,0,0,0,0,0,0,0},{2300,4769,2818,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {12084, 12093, 12098, {12103, 12114, 12125, 12136, 12147, 12158, 12164}, {2018, 9924, 2430, 4442, 2016, 10794, 2436}, {2018, 9924, 2430, 4442, 2016, 10794, 2436}, {12173, 12181, 12190, 12197, 4898, 12204, 12210, 2479, 2486, 12216, 2504, 12225, 0}, {12173, 12181, 12190, 12197, 4898, 12204, 12210, 2479, 2486, 12216, 2504, 12225, 0}, {12235, 12240, 12190, 2534, 4898, 12204, 12210, 2546, 12246, 2554, 2558, 12251, 0}, {12235, 12240, 12190, 2534, 4898, 12204, 12210, 2546, 12246, 2554, 2558, 12251, 0}, 2, 1, 691, 187, {7519,1156,1167,1692,0,0,0,0,0,0,0,0,0,0},{2300,4769,2818,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 12256, 12273, {12287, 12298, 12308, 12317, 12328, 12340, 12351}, {12361, 12364, 12367, 12370, 12373, 12376, 12379}, {2023, 2018, 2432, 2430, 7736, 2018, 2023}, {12382, 12392, 12403, 12409, 12418, 12424, 12432, 12440, 12448, 12459, 12468, 12478, 0}, {12488, 12498, 2453, 12509, 12518, 12524, 12532, 12540, 12548, 12559, 12568, 12578, 0}, {12588, 12594, 12403, 12600, 12418, 12605, 12611, 12617, 4190, 12622, 4201, 12627, 0}, {12588, 12594, 12403, 12600, 12418, 12605, 12611, 12617, 4190, 12622, 4201, 12627, 0}, 0, 1, 691, 187, {9517,9539,12632,0,0,0,0,0,0,0,0,0,0,0},{12644,0,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{12671,0,0,0,0,0,0,0}},
-       {12689, 12701, 11990, {12707, 12719, 12731, 12743, 12757, 12772, 12785}, {12799, 12802, 12805, 12808, 12811, 12814, 9660}, {2023, 2018, 12817, 2430, 4442, 2018, 9669}, {12819, 12826, 12834, 12840, 12849, 12858, 12868, 12874, 12885, 12895, 12902, 12912, 0}, {12819, 12826, 12834, 12840, 12849, 12858, 12868, 12874, 12885, 12895, 12902, 12912, 0}, {12920, 12926, 12931, 12936, 12941, 12946, 12953, 12959, 12965, 12971, 12977, 12984, 0}, {12920, 12926, 12931, 12936, 12941, 12946, 12953, 12959, 12965, 12971, 12977, 12984, 0}, 2, 1, 2566, 187, {1692,2568,0,0,0,0,0,0,0,0,0,0,0,0},{12991,0,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{13013,0,0,0,0,0,0,0}},
-       {1, 13028, 13040, {13052, 13067, 13082, 13097, 13114, 13133, 13144}, {13155, 13162, 13169, 13176, 13183, 13190, 13197}, {0, 0, 0, 0, 0, 0, 0}, {13204, 13215, 8845, 13228, 8867, 13239, 13246, 8892, 13253, 13268, 13281, 13292, 0}, {13204, 13215, 8845, 13228, 8867, 13239, 13246, 8892, 13253, 13268, 13281, 13292, 0}, {13305, 13312, 13319, 13326, 8867, 13239, 13246, 13333, 13340, 13347, 13354, 13361, 0}, {13305, 13312, 13319, 13326, 8867, 13239, 13246, 13333, 13340, 13347, 13354, 13361, 0}, 0, 1, 691, 187, {1156,1167,4762,1128,189,0,0,0,0,0,0,0,0,0},{13368,13386,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 13405, 13425, {13442, 13455, 13468, 13484, 13501, 13516, 13525}, {13442, 13455, 13468, 13484, 13501, 13516, 13525}, {13534, 13537, 13540, 13543, 13546, 13549, 13552}, {13555, 13568, 13579, 13588, 13599, 13604, 13613, 13624, 13631, 13646, 13657, 13670, 0}, {13683, 13698, 13579, 13588, 13711, 13604, 13718, 13624, 13631, 13646, 13657, 13670, 0}, {13555, 13568, 13579, 13588, 13599, 13604, 13613, 13624, 13631, 13646, 13657, 13670, 0}, {13555, 13568, 13579, 13588, 13599, 13604, 13613, 13624, 13631, 13646, 13657, 13670, 0}, 0, 6, 185, 187, {198,189,0,0,0,0,0,0,0,0,0,0,0,0},{13731,5505,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 13750, 13753, {13756, 13769, 13779, 13788, 13798, 13809, 13820}, {13832, 13835, 13840, 13845, 13850, 13855, 13860}, {13832, 13865, 13868, 13871, 13874, 13877, 13880}, {13883, 13892, 13901, 13910, 13919, 13928, 13937, 13946, 13955, 13964, 13974, 13984, 0}, {13994, 14003, 14012, 14021, 14030, 14039, 14048, 14057, 14066, 14075, 14085, 14095, 0}, {14105, 14111, 14117, 14123, 14129, 14135, 14141, 14147, 14153, 14159, 14166, 14173, 0}, {14105, 14111, 14117, 14123, 14129, 14135, 14141, 14147, 14153, 14159, 14166, 14173, 0}, 0, 1, 185, 187, {198,189,1139,1128,1692,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 14180, 14204, {14228, 14241, 14262, 14281, 14302, 14321, 14334}, {14345, 14352, 14359, 14366, 14373, 14380, 14387}, {14394, 14397, 14397, 14400, 14403, 14406, 14411}, {14414, 14429, 14444, 14453, 14464, 14475, 14488, 14501, 14516, 14535, 14554, 14571, 0}, {14590, 14607, 14624, 14635, 14648, 14661, 14676, 14691, 14708, 14729, 14750, 14769, 0}, {14790, 14797, 14804, 14811, 14818, 14825, 14832, 14839, 14846, 14853, 14860, 14867, 0}, {14790, 14797, 14804, 14811, 14818, 14825, 14832, 14839, 14846, 14853, 14860, 14867, 0}, 0, 1, 691, 187, {1156,1167,9796,198,14874,3582,1692,0,0,0,0,0,0,0},{3870,1207,13731,5505,14885,14896,14908,14925,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {14943, 14949, 14963, 14986, 15000, 15016, 15023}, {15032, 15035, 15040, 15046, 15050, 7736, 15055}, {6617, 6605, 6607, 6609, 6611, 6613, 6615}, {15059, 15066, 10332, 15073, 3730, 15079, 15085, 15091, 15098, 15107, 15115, 15122, 0}, {15129, 15136, 15143, 15148, 15154, 15158, 15163, 15168, 15175, 15184, 15192, 15199, 0}, {15206, 8135, 2530, 2534, 15154, 15210, 15214, 15218, 15222, 2554, 15226, 15230, 0}, {15206, 8135, 2530, 2534, 15154, 15210, 15214, 15218, 15222, 2554, 15226, 15230, 0}, 0, 1, 691, 187, {1156,1167,4762,189,1692,0,0,0,0,0,0,0,0,0},{15234,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {15256, 1929, 1932, {15271, 15279, 15290, 15300, 15311, 15320, 15329}, {15339, 15343, 15347, 15351, 15355, 15359, 15363}, {15367, 12817, 12817, 12817, 2432, 2432, 2436}, {15369, 15379, 15387, 15395, 15403, 15411, 15418, 15426, 15434, 15441, 15447, 15454, 0}, {15462, 15473, 15482, 15491, 15500, 15509, 15517, 15526, 15535, 15543, 15550, 15558, 0}, {15567, 15572, 4845, 15577, 15582, 15587, 15592, 15597, 15602, 15607, 15612, 15617, 0}, {15567, 15572, 4845, 15577, 15582, 15587, 15592, 15597, 15602, 15607, 15612, 15617, 0}, 2, 1, 185, 187, {1681,1692,0,0,0,0,0,0,0,0,0,0,0,0},{15622,0,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{15655,0,0,0,0,0,0,0}},
-       {289, 15672, 15693, {15710, 331, 352, 8714, 15723, 15740, 15751}, {15764, 15772, 15780, 15786, 15794, 15802, 15810}, {456, 459, 462, 465, 468, 459, 465}, {15818, 484, 501, 510, 15833, 15840, 15849, 542, 555, 574, 591, 606, 0}, {15818, 484, 501, 510, 15833, 15840, 15849, 542, 555, 574, 591, 606, 0}, {15858, 15866, 15874, 639, 15833, 15882, 15890, 647, 655, 665, 673, 683, 0}, {15858, 15866, 15874, 639, 15833, 15882, 15890, 647, 655, 665, 673, 683, 0}, 0, 1, 691, 187, {1156,1167,15898,0,0,0,0,0,0,0,0,0,0,0},{13731,0,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 0, 0, {15915, 15922, 15933, 15942, 15951, 15958, 15969}, {15979, 15983, 15987, 15991, 15995, 15998, 16002}, {0, 0, 0, 0, 0, 0, 0}, {16006, 16016, 16025, 16033, 16042, 16055, 16067, 16074, 16081, 16088, 16098, 16110, 0}, {16006, 16016, 16025, 16033, 16042, 16055, 16067, 16074, 16081, 16088, 16098, 16110, 0}, {16123, 16127, 16131, 16135, 16139, 16143, 16147, 16151, 16155, 16159, 16163, 16167, 0}, {16123, 16127, 16131, 16135, 16139, 16143, 16147, 16151, 16155, 16159, 16163, 16167, 0}, 0, 0, 185, 187, {189,1681,1735,1692,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{242,3594,251,0,0,0,0,0,0,0,0,0},{257,3602,269,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 0, 0, {16171, 16176, 16182, 16192, 16204, 16212, 16223}, {16232, 16236, 16240, 16244, 16248, 16252, 16256}, {0, 0, 0, 0, 0, 0, 0}, {16260, 16270, 16280, 16287, 16294, 2706, 16299, 16306, 16313, 16322, 16330, 16338, 0}, {16260, 16270, 16280, 16287, 16294, 2706, 16299, 16306, 16313, 16322, 16330, 16338, 0}, {2759, 2763, 16002, 16346, 16350, 2776, 2780, 16354, 2788, 2792, 2796, 16358, 0}, {2759, 2763, 16002, 16346, 16350, 2776, 2780, 16354, 2788, 2792, 2796, 16358, 0}, 0, 0, 185, 187, {1681,1735,1692,0,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{242,3594,251,0,0,0,0,0,0,0,0,0},{257,3602,269,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {16362, 16368, 16379, 16192, 16204, 16212, 16223}, {16389, 16393, 16397, 16244, 16248, 16252, 16256}, {2023, 2428, 16401, 2430, 2023, 5694, 2428}, {16403, 16413, 16424, 16431, 16440, 16446, 16452, 16460, 16468, 16479, 16489, 16498, 0}, {16507, 16270, 16516, 16522, 16294, 2706, 16299, 16306, 16529, 16322, 16330, 16338, 0}, {2759, 2763, 16539, 2772, 16350, 2776, 2780, 16354, 2788, 2792, 2796, 16358, 0}, {2759, 2763, 16539, 2772, 16350, 2776, 2780, 16354, 2788, 2792, 2796, 16358, 0}, 0, 0, 2566, 187, {1128,1139,189,1681,1735,1692,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{242,3594,251,0,0,0,0,0,0,0,0,0},{257,3602,269,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 16543, 16547, {16551, 16558, 16566, 16574, 16583, 16593, 16600}, {2652, 16609, 2658, 16612, 2664, 16615, 2670}, {2023, 2428, 2673, 3705, 2673, 3989, 2023}, {16618, 16627, 16637, 2696, 10819, 16643, 16649, 16655, 2723, 2733, 2741, 10831, 0}, {16618, 16627, 16637, 2696, 10819, 16643, 16649, 16655, 2723, 2733, 2741, 10831, 0}, {2759, 2763, 3761, 2772, 10819, 2776, 2780, 2784, 2788, 2792, 2796, 10844, 0}, {2759, 2763, 3761, 2772, 10819, 2776, 2780, 2784, 2788, 2792, 2796, 10844, 0}, 0, 0, 185, 187, {1681,1735,1692,16664,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{242,3594,251,0,0,0,0,0,0,0,0,0},{257,3602,269,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {16676, 16692, 16717, 16745, 16773, 16801, 16829}, {16848, 16858, 16868, 16878, 16888, 16898, 16908}, {16918, 16922, 16926, 16922, 16930, 16934, 16938}, {16942, 16964, 16992, 17008, 17027, 17043, 17062, 17081, 17103, 17134, 17162, 17187, 0}, {16942, 16964, 16992, 17008, 17027, 17043, 17062, 17081, 17103, 17134, 17162, 17187, 0}, {17215, 17225, 17235, 17245, 17255, 17265, 17275, 17285, 17295, 17305, 17315, 17325, 0}, {17215, 17225, 17235, 17245, 17255, 17265, 17275, 17285, 17295, 17305, 17315, 17325, 0}, 0, 1, 691, 187, {1156,1167,7419,1176,4762,4753,1692,0,0,0,0,0,0,0},{17335,17369,17402,3870,17436,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 17448, 17453, {5932, 17458, 17469, 17479, 17489, 17499, 17513}, {17525, 17529, 17534, 17539, 17543, 17548, 17553}, {2023, 2428, 2430, 2428, 5694, 2434, 2436}, {2438, 2445, 4887, 6077, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2438, 2445, 4887, 6077, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, 2, 1, 2566, 187, {1128,1139,1692,0,0,0,0,0,0,0,0,0,0,0},{2300,0,0,0,0,0,0,0,0,0},{251,4288,0,0,0,0,0,0,0,0,0,0},{269,4302,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1, 17557, 17573, {17583, 17602, 17621, 17643, 17662, 17684, 17709}, {17728, 17738, 17748, 17761, 17771, 17784, 17800}, {17810, 17814, 17821, 17828, 17835, 17842, 17849}, {17853, 17869, 17888, 17904, 17923, 17930, 17940, 17956, 17972, 17991, 18013, 18029, 0}, {17853, 17869, 17888, 17904, 17923, 17930, 17940, 17956, 17972, 17991, 18013, 18029, 0}, {18048, 18055, 17888, 18065, 17923, 17930, 18081, 18094, 18101, 18114, 18130, 18140, 0}, {18048, 18055, 17888, 18065, 17923, 17930, 18081, 18094, 18101, 18114, 18130, 18140, 0}, 0, 0, 2566, 187, {1128,1139,2293,4762,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {18153, 18167, 18170, {18173, 18182, 18191, 18201, 18211, 18221, 18233}, {18241, 18246, 18250, 18254, 18258, 18263, 18268}, {18272, 2430, 2430, 9924, 18272, 18275, 2023}, {18278, 18285, 18290, 2696, 18296, 18302, 18309, 18315, 18323, 18333, 18341, 18350, 0}, {18278, 18285, 18290, 2696, 18296, 18302, 18309, 18315, 18323, 18333, 18341, 18350, 0}, {2759, 18360, 3761, 2772, 18364, 18368, 18373, 18377, 18381, 18385, 2796, 18389, 0}, {2759, 18360, 3761, 2772, 18364, 18368, 18373, 18377, 18381, 18385, 2796, 18389, 0}, 0, 0, 185, 187, {198,1692,18394,7410,2277,0,0,0,0,0,0,0,0,0},{18403,18428,10151,0,0,0,0,0,0,0},{251,3594,843,0,0,0,0,0,0,0,0,0},{269,3602,848,3594,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {18447, 18460, 18465, {18470, 18482, 18493, 18507, 18519, 18529, 18539}, {18550, 18555, 18560, 18565, 18570, 18575, 18580}, {2023, 3989, 2428, 6293, 2673, 16401, 2436}, {18585, 18602, 18615, 18629, 18642, 18655, 18668, 18682, 18694, 18708, 18722, 18736, 0}, {18585, 18602, 18615, 18629, 18642, 18655, 18668, 18682, 18694, 18708, 18722, 18736, 0}, {18749, 18756, 18761, 18766, 18770, 18775, 18780, 18785, 18790, 18797, 18802, 18808, 0}, {18749, 18756, 18761, 18766, 18770, 18775, 18780, 18785, 18790, 18797, 18802, 18808, 0}, 2, 1, 691, 187, {1156,1167,4762,1692,0,0,0,0,0,0,0,0,0,0},{18813,18837,0,0,0,0,0,0,0,0},{251,843,4288,0,0,0,0,0,0,0,0,0},{269,848,4302,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {20032, 1929, 1932, {20040, 20049, 20058, 20066, 20075, 20084, 20091}, {20100, 20103, 20106, 20109, 20112, 20116, 20119}, {6607, 6609, 6611, 6613, 12817, 15367, 6605}, {10796, 10804, 20122, 20128, 10819, 2706, 19196, 20135, 16313, 20142, 16330, 20149, 0}, {10796, 10804, 20122, 20128, 10819, 2706, 19196, 20135, 16313, 20142, 16330, 20149, 0}, {2759, 2763, 19192, 2772, 10819, 2776, 2780, 20157, 2788, 2792, 2796, 10844, 0}, {2759, 2763, 19192, 2772, 10819, 2776, 2780, 20157, 2788, 2792, 2796, 10844, 0}, 0, 0, 185, 187, {3773,3782,3789,3798,1735,1692,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {20195, 1929, 1932, {20202, 20212, 20221, 20230, 20241, 20251, 20256}, {20263, 20269, 20274, 20279, 20284, 10786, 20288}, {20293, 2673, 2023, 7736, 2018, 3987, 2023}, {15059, 15066, 10332, 15073, 3730, 20295, 20300, 20305, 15098, 15107, 15115, 15122, 0}, {15059, 15066, 10332, 15073, 3730, 20295, 20300, 20305, 15098, 15107, 15115, 15122, 0}, {20312, 20317, 3761, 2772, 3730, 20295, 20300, 20321, 10770, 2792, 20325, 20330, 0}, {20312, 20317, 3761, 2772, 3730, 20295, 20300, 20321, 10770, 2792, 20325, 20330, 0}, 0, 1, 691, 187, {1156,0,0,0,0,0,0,0,0,0,0,0,0,0},{20334,1242,5505,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 20352, 20380, {20402, 20421, 20440, 20465, 20484, 20518, 20543}, {20562, 20572, 20582, 20598, 20608, 20633, 20649}, {20659, 20663, 20670, 20674, 20681, 20688, 20695}, {20699, 20727, 20761, 20777, 20796, 20803, 20813, 20829, 20845, 20876, 20898, 20920, 0}, {20699, 20727, 20761, 20777, 20796, 20803, 20813, 20829, 20845, 20876, 20898, 20920, 0}, {20699, 20727, 20761, 20777, 20796, 20803, 20813, 20829, 20845, 20876, 20898, 20920, 0}, {20699, 20727, 20761, 20777, 20796, 20803, 20813, 20829, 20845, 20876, 20898, 20920, 0}, 0, 0, 2566, 187, {1139,2293,1128,20945,20958,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{4288,2321,20973,20982,0,0,0,0,0,0,0,0},{4302,2337,20990,21002,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 1929, 1932, {21482, 21501, 21520, 21542, 21561, 21583, 21608}, {21627, 21637, 21647, 21660, 21670, 21683, 21699}, {21709, 21713, 21720, 21727, 21734, 21741, 21748}, {21752, 21780, 21808, 21824, 21843, 21850, 21860, 21876, 21892, 21920, 21942, 21964, 0}, {21752, 21780, 21808, 21824, 21843, 21850, 21860, 21876, 21892, 21920, 21942, 21964, 0}, {21989, 22008, 21808, 21824, 21843, 21850, 21860, 22027, 22034, 22050, 22066, 22076, 0}, {21989, 22008, 21808, 21824, 21843, 21850, 21860, 22027, 22034, 22050, 22066, 22076, 0}, 0, 0, 2566, 187, {1139,2293,4762,1128,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 8151, 22089, {22092, 22111, 22130, 22155, 22174, 22196, 22221}, {22240, 22250, 22260, 22276, 22286, 22299, 22315}, {22325, 22329, 22336, 22340, 22347, 22354, 22361}, {22365, 22387, 22418, 22440, 22459, 22466, 22476, 22492, 22508, 22539, 22561, 22583, 0}, {22365, 22387, 22418, 22440, 22459, 22466, 22476, 22492, 22508, 22539, 22561, 22583, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, 0, 0, 2566, 187, {1139,2293,4762,1128,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 22608, 22633, {22658, 22677, 22699, 22724, 22740, 22762, 22781}, {22791, 22798, 22805, 22812, 22819, 22826, 22833}, {22791, 22798, 22805, 22812, 22819, 22826, 22833}, {22837, 22853, 22878, 22897, 22916, 22923, 22936, 22949, 22968, 22999, 23024, 23046, 0}, {22837, 22853, 22878, 22897, 22916, 22923, 22936, 23071, 22968, 22999, 23024, 23046, 0}, {23090, 23098, 23112, 23126, 22916, 22923, 22936, 23137, 23145, 23159, 23170, 23178, 0}, {23090, 23098, 23112, 23126, 22916, 22923, 22936, 23137, 23145, 23159, 23170, 23178, 0}, 0, 0, 2566, 187, {1128,1139,2293,4762,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3613, 1929, 1932, {23189, 23211, 23233, 23258, 23280, 23305, 23333}, {23355, 23365, 23375, 23388, 23398, 23411, 23427}, {23437, 23441, 23448, 23452, 23459, 23466, 23473}, {23477, 23493, 23518, 23537, 23559, 23566, 23579, 23592, 23611, 23642, 23667, 23686, 0}, {23477, 23493, 23518, 23537, 23559, 23566, 23711, 23592, 23611, 23642, 23667, 23686, 0}, {23724, 23731, 23518, 23747, 23559, 23566, 23711, 23592, 23763, 23785, 23801, 23811, 0}, {23724, 23731, 23518, 23747, 23559, 23566, 23711, 23592, 23763, 23785, 23801, 23811, 0}, 0, 0, 2566, 187, {1139,2293,4762,1128,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {3613, 1929, 1932, {23827, 23846, 23865, 23887, 23906, 23928, 23953}, {23972, 23982, 23992, 24005, 24015, 24028, 24044}, {24054, 24058, 24065, 24072, 24079, 24086, 24093}, {24097, 24113, 24138, 24157, 24179, 24186, 24199, 24212, 24231, 24259, 24284, 24306, 0}, {24097, 24113, 24138, 24157, 24179, 24186, 24199, 24212, 24231, 24259, 24284, 24306, 0}, {24331, 24339, 24359, 24366, 24179, 24383, 24390, 24398, 24406, 24429, 24446, 24460, 0}, {24331, 24339, 24359, 24366, 24179, 24383, 24390, 24398, 24406, 24429, 24446, 24460, 0}, 0, 0, 2566, 187, {1139,2293,4762,1128,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {20032, 1929, 1932, {24477, 24505, 24539, 24567, 24595, 24626, 24663}, {24691, 24704, 24723, 24739, 24752, 24771, 24790}, {24800, 24807, 24814, 24821, 24828, 24841, 24848}, {24852, 24871, 24899, 24921, 24940, 24953, 24963, 24976, 25001, 25032, 25057, 25073, 0}, {24852, 24871, 24899, 24921, 24940, 24953, 24963, 24976, 25001, 25032, 25057, 25073, 0}, {25092, 25102, 25121, 25131, 24940, 24953, 24963, 25147, 25154, 25179, 25195, 25205, 0}, {25092, 25102, 25121, 25131, 24940, 24953, 24963, 25147, 25154, 25179, 25195, 25205, 0}, 0, 0, 2566, 187, {1139,2293,1167,4762,0,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{4288,2321,20973,20982,0,0,0,0,0,0,0,0},{4302,2337,20990,21002,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 25218, 25246, {25268, 25287, 25306, 25331, 25350, 25384, 25409}, {25428, 20572, 20582, 20598, 25438, 25463, 20649}, {0, 0, 0, 0, 0, 0, 0}, {25479, 25504, 25535, 25551, 20796, 20803, 20813, 25570, 25586, 25617, 25639, 25661, 0}, {25479, 25504, 25535, 25551, 20796, 20803, 20813, 25570, 25586, 25617, 25639, 25661, 0}, {25686, 25699, 25535, 25551, 20796, 20803, 20813, 25718, 25725, 25741, 25757, 25767, 0}, {25686, 25699, 25535, 25551, 20796, 20803, 20813, 25718, 25725, 25741, 25757, 25767, 0}, 0, 0, 2566, 187, {1128,0,0,0,0,0,0,0,0,0,0,0,0,0},{25780,0,0,0,0,0,0,0,0,0},{1858,1866,0,0,0,0,0,0,0,0,0,0},{1875,1886,0,0,0,0,0,0,0},{25799,25807,0,0,0,0,0,0}},
-       {1, 1929, 1932, {17583, 17602, 25817, 17643, 17662, 17684, 17709}, {17728, 17738, 25839, 17761, 17771, 17784, 17800}, {17810, 17814, 17821, 17828, 17835, 17842, 17849}, {25852, 25877, 17888, 25908, 25927, 17930, 25934, 25947, 25963, 25988, 26010, 26038, 0}, {25852, 25877, 17888, 25908, 25927, 17930, 25934, 25947, 25963, 25988, 26010, 26038, 0}, {26060, 26073, 17888, 26092, 25927, 17930, 25934, 26108, 26115, 26134, 26150, 26172, 0}, {26060, 26073, 17888, 26092, 25927, 17930, 25934, 26108, 26115, 26134, 26150, 26172, 0}, 0, 0, 2566, 187, {1128,1139,2293,4762,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {26920, 26944, 26966, {26991, 27019, 27047, 27084, 27115, 27149, 27174}, {27208, 27224, 27240, 27265, 27284, 27306, 27319}, {27341, 27348, 27355, 27362, 27369, 27376, 27380}, {27390, 27424, 27461, 27495, 27529, 27560, 27597, 27634, 27674, 27708, 27742, 27791, 0}, {27390, 27424, 27461, 27495, 27529, 27560, 27597, 27634, 27674, 27708, 27742, 27791, 0}, {27840, 27853, 27866, 27879, 27892, 27905, 27918, 27931, 27944, 27957, 27973, 27989, 0}, {27840, 27853, 27866, 27879, 27892, 27905, 27918, 27931, 27944, 27957, 27973, 27989, 0}, 0, 0, 185, 187, {1654,1663,1672,1703,1692,1681,1721,1714,1728,0,0,0,0,0},{28005,28048,28096,28128,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{28165,1914,0,0,0,0,0,0}},
-       {289, 1929, 1932, {28198, 28207, 28217, 28229, 28242, 28251, 28263}, {28275, 28279, 28284, 28288, 28292, 28296, 28300}, {2023, 28304, 2428, 2428, 15367, 6293, 2023}, {28307, 28314, 28323, 28330, 2702, 28337, 28345, 28356, 28361, 28366, 28373, 28382, 0}, {28307, 28314, 28323, 28330, 2702, 28337, 28345, 28356, 28361, 28366, 28373, 28382, 0}, {28390, 28394, 28284, 28398, 2702, 28402, 28406, 28356, 28361, 28410, 28414, 28419, 0}, {28390, 28394, 28284, 28398, 2702, 28402, 28406, 28356, 28361, 28410, 28414, 28419, 0}, 2, 1, 185, 187, {189,198,5002,8579,0,0,0,0,0,0,0,0,0,0},{1242,1207,0,0,0,0,0,0,0,0},{251,843,242,3594,0,0,0,0,0,0,0,0},{269,848,257,3602,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 28424, 28440, {28456, 28478, 28491, 28510, 28520, 28551, 28567}, {28456, 28478, 28491, 28510, 28520, 28551, 28567}, {6605, 6607, 6609, 6611, 6613, 6615, 6617}, {28580, 28593, 28612, 28625, 28638, 28651, 28670, 28689, 28702, 28718, 28731, 28756, 0}, {28580, 28593, 28612, 28625, 28638, 28651, 28670, 28689, 28702, 28718, 28731, 28756, 0}, {28580, 28593, 28612, 28625, 28638, 28651, 28670, 28689, 28702, 28718, 28731, 28756, 0}, {28580, 28593, 28612, 28625, 28638, 28651, 28670, 28689, 28702, 28718, 28731, 28756, 0}, 0, 0, 185, 187, {189,1692,0,0,0,0,0,0,0,0,0,0,0,0},{1242,10163,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{28769,0,0,0,0,0,0,0}},
-       {289, 28804, 28829, {28854, 28879, 28898, 28926, 28945, 28970, 28989}, {28854, 28879, 28898, 28926, 28945, 28970, 28989}, {29011, 29015, 29019, 29023, 29033, 29037, 29047}, {29051, 29070, 29086, 29099, 29112, 29134, 29153, 29175, 29191, 29207, 29220, 29236, 0}, {29051, 29070, 29086, 29099, 29112, 29134, 29153, 29175, 29191, 29207, 29220, 29236, 0}, {29252, 29261, 29270, 29279, 29288, 29297, 29309, 29318, 29327, 29336, 29345, 29354, 0}, {29252, 29261, 29270, 29279, 29288, 29297, 29309, 29318, 29327, 29336, 29345, 29354, 0}, 0, 0, 185, 187, {198,29363,6480,0,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3883, 7281, 7286, {3895, 29373, 3909, 29378, 29388, 29394, 3942}, {29401, 8413, 3761, 29405, 29410, 29414, 29418}, {2673, 2436, 2428, 2428, 29423, 3989, 2023}, {29425, 29433, 4005, 4011, 29442, 29447, 29453, 4034, 29459, 29468, 29476, 29485, 0}, {29494, 29502, 4094, 1012, 8083, 29511, 29517, 4117, 8100, 8109, 8117, 29523, 0}, {29532, 2763, 3761, 29536, 2702, 29540, 29545, 20157, 18381, 29549, 2796, 3769, 0}, {29532, 2763, 3761, 29536, 2702, 29540, 29545, 20157, 18381, 29549, 2796, 3769, 0}, 2, 1, 185, 187, {198,189,1120,2286,1139,1167,1692,0,0,0,0,0,0,0},{29553,4239,4266,1242,0,0,0,0,0,0},{843,251,242,29582,0,0,0,0,0,0,0,0},{848,269,257,29594,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {1, 29614, 29626, {29638, 17602, 29666, 17643, 17662, 17684, 17709}, {17728, 17738, 25839, 17761, 17771, 17784, 17800}, {0, 0, 0, 0, 0, 0, 0}, {25852, 25877, 17888, 25908, 25927, 17930, 25934, 29685, 29701, 29729, 26010, 26038, 0}, {25852, 25877, 17888, 25908, 25927, 17930, 25934, 29685, 29701, 29729, 26010, 26038, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, 0, 0, 2566, 187, {1128,1139,2293,4762,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,1866,1858,0,0,0,0,0,0,0,0},{269,848,1886,1875,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {20032, 29751, 29763, {29772, 29788, 29804, 29832, 29848, 29891, 29916}, {29772, 29788, 29944, 29832, 29954, 29976, 29989}, {29999, 30003, 30007, 30011, 30015, 30028, 30035}, {30042, 30061, 30086, 30105, 30130, 30143, 30156, 30169, 30191, 30225, 30250, 30278, 0}, {30042, 30061, 30086, 30105, 30130, 30143, 30156, 30169, 30191, 30225, 30250, 30278, 0}, {30306, 30313, 30323, 30105, 30130, 30143, 30156, 30336, 30346, 30359, 30369, 30382, 0}, {30306, 30313, 30323, 30105, 30130, 30143, 30156, 30336, 30346, 30359, 30369, 30382, 0}, 0, 1, 2566, 187, {1692,1681,1735,198,189,0,0,0,0,0,0,0,0,0},{30395,0,0,0,0,0,0,0,0,0},{1858,1866,843,251,0,0,0,0,0,0,0,0},{1875,1886,848,269,0,0,0,0,0},{30443,0,0,0,0,0,0,0}},
-       {30453, 30469, 30479, {30492, 30502, 30509, 30522, 30532, 30542, 30552}, {30492, 30502, 30562, 30522, 30532, 30542, 30552}, {30572, 30576, 30580, 30584, 30588, 30592, 30596}, {30600, 30616, 30632, 30642, 30655, 30662, 30669, 30679, 30692, 30711, 30727, 30743, 0}, {30600, 30616, 30632, 30642, 30655, 30662, 30669, 30679, 30692, 30759, 30727, 30743, 0}, {30778, 30788, 30632, 30798, 30655, 30662, 30669, 30808, 30818, 30828, 30838, 30848, 0}, {30778, 30788, 30632, 30798, 30655, 30662, 30669, 30808, 30818, 30828, 30838, 30848, 0}, 0, 0, 185, 187, {2277,1692,0,0,0,0,0,0,0,0,0,0,0,0},{30858,0,0,0,0,0,0,0,0,0},{3594,0,0,0,0,0,0,0,0,0,0,0},{3602,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1, 31125, 31166, {31207, 31226, 31245, 31270, 31289, 31311, 31336}, {31355, 17738, 31365, 17761, 31381, 17784, 17800}, {31394, 17814, 31398, 17828, 31402, 17842, 17849}, {17853, 31409, 17888, 31437, 25927, 31456, 17940, 31466, 31482, 31513, 31535, 31560, 0}, {17853, 31409, 17888, 31437, 25927, 31456, 17940, 31466, 31482, 31513, 31535, 31560, 0}, {17853, 31409, 17888, 31437, 25927, 31456, 17940, 31466, 31482, 31513, 31535, 31560, 0}, {17853, 31409, 17888, 31437, 25927, 31456, 17940, 31466, 31482, 31513, 31535, 31560, 0}, 0, 0, 185, 187, {3773,3782,3789,3798,1735,1692,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{25807,0,0,0,0,0,0,0}},
-       {289, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {31585, 31592, 31601, 31616, 31627, 31636, 31643, 31650, 31657, 31668, 31681, 31694, 0}, {31585, 31592, 31601, 31616, 31627, 31636, 31643, 31650, 31657, 31668, 31681, 31694, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, 0, 6, 185, 187, {1654,1692,0,0,0,0,0,0,0,0,0,0,0,0},{31699,31720,0,0,0,0,0,0,0,0},{3594,843,0,0,0,0,0,0,0,0,0,0},{3602,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {31735, 1929, 1932, {31741, 31748, 31754, 31761, 31772, 31780, 31789}, {31796, 8413, 3761, 31800, 31804, 31808, 10790}, {2436, 2436, 2428, 2428, 5694, 16401, 2023}, {3991, 31812, 31820, 4011, 4017, 31826, 31832, 4034, 31838, 31848, 31856, 31866, 0}, {3991, 31812, 31820, 4011, 4017, 31826, 31832, 4034, 31838, 31848, 31856, 31866, 0}, {31876, 31880, 3761, 29536, 3730, 31884, 31888, 20157, 18381, 2792, 31892, 16358, 0}, {31876, 31880, 3761, 29536, 3730, 31884, 31888, 20157, 18381, 2792, 31892, 16358, 0}, 0, 0, 185, 187, {3773,3782,3789,3798,1735,1692,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 0, 0, {31896, 31903, 31911, 31918, 31925, 31933, 31941}, {31948, 31951, 31954, 31957, 31960, 31963, 31966}, {2436, 2436, 2430, 2436, 12817, 3987, 12817}, {31969, 31977, 31987, 31993, 32001, 32006, 32011, 32016, 32023, 20142, 32031, 32039, 0}, {31969, 31977, 31987, 31993, 32001, 32006, 32011, 32016, 32023, 20142, 32031, 32039, 0}, {2759, 32047, 3761, 32051, 3730, 31094, 31098, 32055, 3701, 2792, 32059, 16358, 0}, {2759, 32047, 3761, 32051, 3730, 31094, 31098, 32055, 3701, 2792, 32059, 16358, 0}, 0, 0, 185, 187, {2277,2286,189,198,1735,1692,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 32063, 32074, {32084, 32102, 32117, 32139, 32152, 32166, 32183}, {32207, 32215, 32220, 32139, 32152, 32232, 32239}, {0, 0, 0, 0, 0, 0, 0}, {32253, 32275, 32291, 32311, 32325, 32342, 32357, 32374, 32388, 32401, 32420, 32434, 0}, {32253, 32275, 32291, 32311, 32325, 32342, 32357, 32374, 32388, 32401, 32420, 32434, 0}, {32453, 32468, 32477, 32490, 32497, 32507, 32515, 32525, 32532, 32538, 32550, 32557, 0}, {32453, 32468, 32477, 32490, 32497, 32507, 32515, 32525, 32532, 32538, 32550, 32557, 0}, 0, 0, 185, 187, {2277,2286,189,198,1735,1692,3809,0,0,0,0,0,0,0},{222,20161,20181,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{25807,0,0,0,0,0,0,0}},
-       {3613, 0, 0, {32569, 32577, 15933, 15942, 15951, 32588, 32598}, {16389, 15983, 15987, 15991, 15995, 16252, 32607}, {0, 0, 0, 0, 0, 0, 0}, {32611, 32620, 32630, 32638, 10819, 3734, 32646, 32652, 32661, 32670, 32679, 32688, 0}, {32611, 32620, 32630, 32638, 10819, 3734, 32646, 32652, 32661, 32670, 32679, 32688, 0}, {2759, 2763, 16002, 32697, 10819, 2776, 2780, 20157, 18381, 2792, 32701, 16358, 0}, {2759, 2763, 16002, 32697, 10819, 2776, 2780, 20157, 18381, 2792, 32701, 16358, 0}, 0, 0, 185, 187, {189,1681,1735,1692,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{242,3594,251,0,0,0,0,0,0,0,0,0},{257,3602,269,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {32705, 32718, 32723, {32728, 32735, 32750, 32764, 32780, 32795, 32811}, {6289, 32826, 2530, 32830, 32834, 32838, 32842}, {2023, 12817, 2428, 2018, 2023, 2430, 12817}, {7370, 7378, 32846, 32853, 32860, 2469, 2474, 32865, 32875, 32886, 32895, 32905, 0}, {7370, 7378, 32846, 32853, 32860, 2469, 2474, 32865, 32875, 32886, 32895, 32905, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, 0, 0, 2566, 187, {1128,1139,1692,2568,0,0,0,0,0,0,0,0,0,0},{32915,2300,4769,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 32934, 32939, {32944, 32960, 32968, 32976, 32985, 32997, 33007}, {33017, 33023, 33029, 33033, 33037, 33045, 3701}, {0, 0, 0, 0, 0, 0, 0}, {33052, 33065, 33079, 33088, 33094, 33098, 33103, 33111, 16313, 33124, 16330, 16338, 0}, {33052, 33065, 33079, 33088, 33094, 33098, 33103, 33111, 16313, 33124, 16330, 16338, 0}, {33133, 2763, 33137, 16346, 33094, 33141, 2780, 33145, 2788, 33153, 2796, 16358, 0}, {33133, 2763, 33137, 16346, 33094, 33141, 2780, 33145, 2788, 33153, 2796, 16358, 0}, 0, 0, 185, 187, {2277,2286,189,198,1735,1692,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{2313,0,0,0,0,0,0,0,0,0,0,0},{2326,0,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {33159, 33186, 33193, {33200, 33210, 33220, 33230, 33240, 33250, 33260}, {33270, 33277, 33284, 33291, 33298, 33305, 33312}, {33319, 33323, 33327, 33331, 33335, 33339, 33343}, {33347, 33354, 33361, 33368, 33375, 33382, 33389, 33396, 33403, 33410, 33417, 33427, 0}, {33347, 33354, 33361, 33368, 33375, 33382, 33389, 33396, 33403, 33410, 33417, 33427, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, {6605, 6607, 6609, 6611, 6613, 6615, 6617, 6619, 6621, 6623, 6626, 6629, 0}, 0, 0, 185, 187, {1654,1663,1672,1703,1692,1681,0,0,0,0,0,0,0,0},{33437,33461,33491,33521,33538,0,0,0,0,0},{1858,843,251,0,0,0,0,0,0,0,0,0},{1875,848,269,0,0,0,0,0,0},{33561,1914,0,0,0,0,0,0}},
-       {289, 0, 0, {28275, 8413, 33578, 33585, 33595, 33600, 33607}, {33614, 6273, 33618, 4850, 33623, 33628, 33633}, {4421, 33638, 33641, 33644, 33647, 33650, 33653}, {33656, 33663, 33578, 33674, 33680, 33684, 33693, 33700, 33705, 33714, 33719, 33722, 0}, {33656, 33663, 33578, 33674, 33680, 33684, 33693, 33700, 33705, 33714, 33719, 33722, 0}, {33728, 33732, 33739, 28398, 33680, 33744, 33749, 33700, 33754, 33714, 33719, 33759, 0}, {33728, 33732, 33739, 28398, 33680, 33744, 33749, 33700, 33754, 33714, 33719, 33759, 0}, 2, 1, 185, 187, {198,189,1167,1139,1692,0,0,0,0,0,0,0,0,0},{4985,5002,1242,0,0,0,0,0,0,0},{251,843,4288,5011,5021,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {33916, 33934, 33939, {33944, 33969, 33998, 34023, 34036, 34051, 34068}, {34083, 34088, 34093, 34098, 34103, 34108, 8800}, {19417, 19417, 34113, 8811, 8814, 19417, 8811}, {34116, 34135, 34150, 34172, 34192, 34208, 34224, 34238, 34264, 34288, 34305, 34322, 0}, {34116, 34135, 34150, 34172, 34192, 34208, 34224, 34238, 34264, 34288, 34305, 34322, 0}, {34339, 34348, 34357, 34371, 34385, 34397, 34409, 34419, 34435, 34449, 34456, 34463, 0}, {34339, 34348, 34357, 34371, 34385, 34397, 34409, 34419, 34435, 34449, 34456, 34463, 0}, 0, 1, 691, 187, {1156,4753,1692,34470,34480,0,0,0,0,0,0,0,0,0},{34493,34528,34557,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{34592,0,0,0,0,0,0,0}},
-       {20032, 0, 0, {34608, 34620, 34631, 34643, 34655, 34665, 34677}, {34692, 34697, 34702, 34707, 34712, 34717, 34722}, {0, 0, 0, 0, 0, 0, 0}, {34727, 34736, 34748, 34756, 34761, 34771, 34778, 34787, 34794, 34800, 34809, 34820, 0}, {34727, 34736, 34748, 34756, 34761, 34771, 34778, 34787, 34794, 34800, 34809, 34820, 0}, {34828, 34833, 34838, 34843, 34848, 34853, 34858, 34712, 34863, 34868, 34873, 34878, 0}, {34828, 34833, 34838, 34843, 34848, 34853, 34858, 34712, 34863, 34868, 34873, 34878, 0}, 0, 0, 185, 187, {9796,2286,0,0,0,0,0,0,0,0,0,0,0,0},{34883,1207,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{848,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 34903, 34905, {34907, 34920, 34928, 34937, 34947, 34957, 34966}, {34978, 34982, 34986, 34990, 34994, 34998, 35002}, {2673, 2436, 2428, 7736, 12817, 5694, 2023}, {35006, 35020, 35031, 35040, 35051, 35063, 35077, 35089, 35102, 35115, 35127, 35140, 0}, {35006, 35020, 35031, 35040, 35051, 35063, 35077, 35089, 35102, 35115, 35127, 35140, 0}, {35154, 35159, 35165, 35171, 35176, 35182, 35188, 35193, 35199, 35204, 19138, 35210, 0}, {35154, 35159, 35165, 35171, 35176, 35182, 35188, 35193, 35199, 35204, 19138, 35210, 0}, 2, 1, 185, 187, {198,189,2286,4762,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,242,3594,0,0,0,0,0,0,0,0},{269,848,257,3602,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, 0, 6, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1327, 1340, 1347, {1354, 1364, 1374, 1384, 1394, 1404, 1414}, {1424, 1431, 1438, 1445, 1452, 1459, 1466}, {1473, 1477, 1481, 1485, 1489, 1493, 1497}, {1501, 1508, 1515, 1522, 1529, 1536, 1543, 1550, 1557, 1564, 1571, 1581, 0}, {1501, 1508, 1515, 1522, 1529, 1536, 1543, 1550, 1557, 1564, 1571, 1581, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, 0, 0, 185, 187, {1654,1663,1672,1681,1692,1703,1714,1721,1728,1735,0,0,0,0},{1744,1766,1794,1822,1837,0,0,0,0,0},{843,251,1858,1866,0,0,0,0,0,0,0,0},{848,269,1875,1886,0,0,0,0,0},{1898,1914,0,0,0,0,0,0}},
-       {1921, 2579, 2585, {2592, 2600, 2607, 2616, 2625, 2636, 2644}, {2652, 2655, 2658, 2661, 2664, 2667, 2670}, {2023, 2428, 2673, 2428, 2673, 2434, 2023}, {2675, 2682, 2690, 2696, 2702, 2706, 2711, 2716, 2723, 2733, 2741, 2750, 0}, {2675, 2682, 2690, 2696, 2702, 2706, 2711, 2716, 2723, 2733, 2741, 2750, 0}, {2759, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, {2759, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, 2, 1, 691, 187, {1156,1167,1176,35571,4762,1692,0,0,0,0,0,0,0,0},{2818,2300,35581,0,0,0,0,0,0,0},{251,843,35591,35600,35610,35621,8353,35626,35632,0,0,0},{269,848,35640,35653,2862,35665,35679,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 8151, 22089, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 2, 1, 185, 187, {198,189,2286,4762,1692,0,0,0,0,0,0,0,0,0},{5505,1242,1207,13731,0,0,0,0,0,0},{251,843,242,3594,0,0,0,0,0,0,0,0},{269,848,257,3602,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3883, 7281, 7286, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {35686, 6273, 4845, 35691, 35697, 35702, 35706}, {2673, 2436, 2428, 29423, 3987, 3989, 2023}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {35712, 5803, 35716, 1086, 35721, 2538, 2542, 1096, 1100, 1105, 1110, 35725, 0}, {35712, 5803, 35716, 1086, 35721, 2538, 2542, 1096, 1100, 1105, 1110, 35725, 0}, 0, 0, 185, 187, {198,3582,189,1120,2286,1139,1692,0,0,0,0,0,0,0},{4211,4266,0,0,0,0,0,0,0,0},{242,3594,843,251,0,0,0,0,0,0,0,0},{257,3602,848,269,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {4783, 4792, 4798, 4804, 4813, 4819, 4828}, {4835, 4840, 4845, 4850, 4855, 4860, 4865}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, 2, 1, 2566, 187, {1139,198,189,1128,0,0,0,0,0,0,0,0,0,0},{4985,1242,0,0,0,0,0,0,0,0},{251,843,4288,5011,5021,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {6207, 6216, 6224, 6233, 6244, 6253, 6262}, {6269, 6273, 2530, 6277, 6281, 6285, 6289}, {2673, 2436, 2428, 2428, 6293, 3989, 2023}, {6295, 6303, 4005, 6312, 6319, 6326, 6333, 4034, 6340, 6350, 6358, 6367, 0}, {6376, 6384, 4094, 6393, 6400, 6407, 6414, 4117, 6421, 6431, 1058, 6439, 0}, {6448, 2526, 2530, 2534, 6452, 6456, 6460, 6464, 6468, 6472, 2558, 6476, 0}, {6448, 2526, 2530, 2534, 6452, 6456, 6460, 6464, 6468, 6472, 2558, 6476, 0}, 2, 1, 691, 187, {1156,1167,9806,2286,6480,0,0,0,0,0,0,0,0,0},{2818,1242,1207,0,0,0,0,0,0,0},{251,843,35591,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 7281, 7286, {7291, 7298, 7306, 7314, 7323, 7333, 7341}, {7350, 4424, 7353, 7356, 7359, 7362, 7365}, {7368, 2428, 2673, 3705, 2673, 3989, 7368}, {7370, 7378, 7387, 2459, 7393, 2469, 2474, 7397, 2486, 2496, 2504, 2513, 0}, {7370, 7378, 7387, 2459, 7393, 2469, 2474, 7397, 2486, 2496, 2504, 2513, 0}, {2522, 2526, 7406, 2534, 7393, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 7406, 2534, 7393, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, 2, 1, 185, 187, {9796,1120,1139,1167,7419,1692,0,0,0,0,0,0,0,0},{4985,3809,1242,5548,0,0,0,0,0,0},{843,251,35730,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 35740, 35745, {2345, 10060, 35750, 2368, 2375, 2383, 35757}, {2398, 10088, 35765, 2411, 2415, 2419, 35769}, {2023, 2428, 2430, 2432, 2430, 2434, 2436}, {2438, 2445, 4887, 2459, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2438, 2445, 4887, 2459, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, 2, 1, 691, 187, {1156,7519,1167,4762,2804,1692,0,0,0,0,0,0,0,0},{2300,4769,0,0,0,0,0,0,0,0},{251,843,7529,7539,4288,2321,7550,7561,0,0,0,0},{269,848,7571,7585,4302,2337,7598,7612,0},{1301,7625,7635,0,0,0,0,0}},
-       {3883, 7281, 7286, {3895, 7966, 7980, 7993, 8006, 8019, 3942}, {6269, 8031, 8035, 8039, 8043, 8047, 8051}, {2673, 2023, 2430, 8056, 8056, 2023, 2023}, {35773, 35781, 35791, 4011, 29442, 35798, 35804, 4034, 29459, 29468, 29476, 35810, 0}, {35773, 35781, 35791, 4011, 29442, 35798, 35804, 4034, 29459, 29468, 29476, 35810, 0}, {2759, 20317, 3761, 29536, 2702, 2776, 2780, 20157, 18381, 29549, 2796, 2800, 0}, {2759, 20317, 3761, 29536, 2702, 2776, 2780, 20157, 18381, 29549, 2796, 2800, 0}, 2, 1, 185, 187, {198,1156,1128,189,1167,1139,1681,1703,1692,1735,35819,5888,0,0},{4266,4211,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {10033, 10046, 10049, {10052, 10060, 10068, 2368, 2375, 2383, 10075}, {10083, 10088, 10093, 2411, 2415, 2419, 10097}, {2023, 2428, 2430, 2432, 2430, 2434, 2436}, {7370, 7378, 4887, 2459, 2465, 2469, 2474, 10102, 2486, 2496, 2504, 2513, 0}, {7370, 7378, 4887, 2459, 2465, 2469, 2474, 10102, 2486, 2496, 2504, 2513, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 0}, 2, 1, 691, 187, {4753,1156,4762,1692,0,0,0,0,0,0,0,0,0,0},{10110,10128,0,0,0,0,0,0,0,0},{251,843,7529,0,0,0,0,0,0,0,0,0},{269,848,7585,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {35828, 35839, 35863, 35893, 35910, 35932, 35941}, {15032, 15035, 15040, 15046, 15050, 7736, 15055}, {6617, 6605, 6607, 6609, 6611, 6613, 6615}, {35952, 35965, 501, 35978, 521, 35989, 35998, 542, 36007, 36024, 36039, 36052, 0}, {35952, 35965, 501, 35978, 521, 35989, 35998, 542, 36007, 36024, 36039, 36052, 0}, {15206, 8135, 2530, 2534, 15154, 15210, 15214, 15218, 15222, 2554, 15226, 15230, 0}, {15206, 8135, 2530, 2534, 15154, 15210, 15214, 15218, 15222, 2554, 15226, 15230, 0}, 0, 1, 691, 187, {1156,1167,4762,189,1692,0,0,0,0,0,0,0,0,0},{1242,5505,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 7281, 7286, {18855, 18869, 18879, 18890, 18904, 18915, 18926}, {18939, 18944, 18949, 18956, 18962, 18968, 18974}, {2673, 2436, 2428, 7736, 2673, 12817, 2023}, {18979, 18987, 18995, 19002, 19011, 19021, 19031, 19037, 19045, 19060, 19078, 19086, 0}, {18979, 18987, 18995, 19002, 19011, 19021, 19031, 19037, 19045, 19060, 19078, 19086, 0}, {19094, 19098, 18995, 19104, 19108, 19113, 19031, 19119, 19124, 19131, 19138, 19143, 0}, {19094, 19098, 18995, 19104, 19108, 19113, 19031, 19119, 19124, 19131, 19138, 19143, 0}, 2, 0, 185, 187, {198,189,2286,4762,1692,0,0,0,0,0,0,0,0,0},{1242,5505,10151,8579,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {36065, 36080, 36095, 36110, 36127, 36144, 36153}, {36164, 36171, 36178, 36185, 36192, 19807, 36199}, {36206, 19414, 8811, 8814, 8808, 19411, 19821}, {13204, 13215, 8845, 13228, 8867, 13239, 13246, 8892, 13253, 13268, 13281, 13292, 0}, {13204, 13215, 8845, 13228, 8867, 13239, 13246, 8892, 13253, 13268, 13281, 13292, 0}, {13305, 13312, 13319, 13326, 8867, 13239, 13246, 13333, 13340, 13347, 13354, 13361, 0}, {13305, 13312, 13319, 13326, 8867, 13239, 13246, 13333, 13340, 13347, 13354, 13361, 0}, 0, 1, 691, 187, {1156,1167,36209,4762,189,1692,0,0,0,0,0,0,0,0},{36220,1242,5505,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1, 20352, 20380, {20402, 20421, 20440, 20465, 20484, 20518, 20543}, {20562, 20572, 20582, 20598, 20608, 20633, 20649}, {20659, 20663, 20670, 20674, 20681, 20688, 20695}, {20699, 20727, 20761, 20777, 20796, 20803, 20813, 20829, 20845, 20876, 20898, 20920, 0}, {20699, 20727, 20761, 20777, 20796, 20803, 20813, 20829, 20845, 20876, 20898, 20920, 0}, {20699, 20727, 20761, 20777, 20796, 20803, 20813, 20829, 20845, 20876, 20898, 20920, 0}, {20699, 20727, 20761, 20777, 20796, 20803, 20813, 20829, 20845, 20876, 20898, 20920, 0}, 0, 5, 2566, 187, {1139,2293,4762,1128,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{4288,2321,20973,20982,0,0,0,0,0,0,0,0},{4302,2337,20990,21002,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, 0, 6, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1327, 1340, 1347, {1354, 1364, 1374, 1384, 1394, 1404, 1414}, {35216, 35223, 35230, 35237, 35244, 35251, 35258}, {1473, 1477, 1481, 1485, 1489, 1493, 1497}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, 0, 0, 185, 187, {2277,2286,189,1714,1735,1654,1681,1692,0,0,0,0,0,0},{1744,6632,1822,1837,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1898,1914,0,0,0,0,0,0}},
-       {1921, 2579, 2585, {2592, 2600, 2607, 2616, 2625, 2636, 2644}, {2652, 2655, 2658, 2661, 2664, 2667, 2670}, {2023, 2428, 2673, 2428, 2673, 2434, 2023}, {36370, 2682, 2690, 2696, 2702, 2706, 2711, 2716, 2723, 2733, 2741, 2750, 0}, {36370, 2682, 2690, 2696, 2702, 2706, 2711, 2716, 2723, 2733, 2741, 2750, 0}, {36378, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, {36378, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, 2, 1, 691, 187, {1156,1167,1692,36383,7419,0,0,0,0,0,0,0,0,0},{36393,36413,0,0,0,0,0,0,0,0},{251,843,2850,36425,35621,8353,35632,0,0,0,0,0},{269,848,2862,35665,35679,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3613, 1929, 1932, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 185, 187, {9796,1120,2286,2277,189,198,3809,5518,1692,1735,1681,0,0,0},{1207,1242,0,0,0,0,0,0,0,0},{3594,843,251,0,0,0,0,0,0,0,0,0},{3602,848,269,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 2, 1, 185, 187, {198,189,1120,2286,2293,1139,1167,1692,0,0,0,0,0,0},{4211,4239,4266,0,0,0,0,0,0,0},{843,251,2321,4288,4294,0,0,0,0,0,0,0},{848,269,2337,4302,4311,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {4783, 4792, 4798, 4804, 4813, 4819, 4828}, {4835, 4840, 4845, 4850, 4855, 4860, 4865}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, 0, 0, 2566, 187, {1692,5888,1139,6179,189,3582,0,0,0,0,0,0,0,0},{1242,8579,0,0,0,0,0,0,0,0},{251,843,4288,5011,5021,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {18447, 18460, 18465, {36436, 36444, 36452, 36460, 36472, 36481, 36493}, {18550, 18555, 18560, 18565, 18570, 18575, 18580}, {2023, 2428, 2673, 6293, 2673, 16401, 2436}, {18585, 18602, 18615, 18629, 18642, 18655, 18668, 18682, 18694, 18708, 18722, 18736, 0}, {18585, 18602, 18615, 18629, 18642, 18655, 18668, 18682, 18694, 18708, 18722, 18736, 0}, {36504, 36515, 36522, 36530, 36537, 36544, 36551, 36559, 36565, 36573, 36581, 36589, 0}, {36504, 36515, 36522, 36530, 36537, 36544, 36551, 36559, 36565, 36573, 36581, 36589, 0}, 2, 1, 691, 187, {4753,1156,4762,1692,0,0,0,0,0,0,0,0,0,0},{36596,18837,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, 0, 6, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1327, 1340, 1347, {1354, 1364, 1374, 1384, 1394, 1404, 1414}, {1424, 1431, 1438, 1445, 1452, 1459, 1466}, {1473, 1477, 1481, 1485, 1489, 1493, 1497}, {1501, 1508, 1515, 1522, 1529, 1536, 1543, 1550, 1557, 1564, 1571, 1581, 0}, {1501, 1508, 1515, 1522, 1529, 1536, 1543, 1550, 1557, 1564, 1571, 1581, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, 0, 0, 185, 187, {2277,2286,189,1714,1735,1654,1681,1692,0,0,0,0,0,0},{1744,6632,1822,35265,0,0,0,0,0,0},{1858,1866,843,251,0,0,0,0,0,0,0,0},{1875,1886,848,269,0,0,0,0,0},{1898,0,0,0,0,0,0,0}},
-       {1921, 2579, 2585, {2592, 2600, 2607, 2616, 2625, 2636, 2644}, {2652, 2655, 2658, 2661, 2664, 2667, 2670}, {2023, 2428, 2673, 2428, 2673, 2434, 2023}, {2675, 2682, 2690, 2696, 2702, 2706, 2711, 2716, 2723, 2733, 2741, 2750, 0}, {2675, 2682, 2690, 2696, 2702, 2706, 2711, 2716, 2723, 2733, 2741, 2750, 0}, {2759, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, {2759, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, 2, 1, 691, 187, {1156,1167,1176,4762,4753,1692,0,0,0,0,0,0,0,0},{36622,2818,36648,36663,0,0,0,0,0,0},{251,843,2321,35610,0,0,0,0,0,0,0,0},{269,35665,2862,35679,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 2566, 187, {1692,198,189,2286,5888,36677,3809,14896,1692,0,0,0,0,0},{3838,20161,36685,6488,0,0,0,0,0,0},{3594,242,251,843,0,0,0,0,0,0,0,0},{3602,257,269,848,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {198,189,9796,2286,1139,1692,0,0,0,0,0,0,0,0},{29553,4239,4266,0,0,0,0,0,0,0},{3594,843,0,0,0,0,0,0,0,0,0,0},{3602,848,0,0,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {4783, 4792, 4798, 4804, 4813, 4819, 4828}, {4835, 4840, 4845, 4850, 4855, 4860, 4865}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, 2, 1, 691, 187, {1156,1167,4762,1692,0,0,0,0,0,0,0,0,0,0},{4985,1242,5002,0,0,0,0,0,0,0},{251,843,4288,5011,5021,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 1929, 1932, {9187, 9196, 9208, 9215, 9223, 9233, 9239}, {9246, 9250, 9254, 9258, 9262, 9267, 9271}, {9275, 9277, 9279, 9281, 9283, 9277, 9281}, {9286, 9296, 9305, 9313, 9321, 9329, 9336, 9343, 9351, 2102, 9357, 9365, 0}, {9374, 9384, 9393, 9401, 9409, 9417, 9424, 9431, 9440, 7911, 9446, 9456, 0}, {9465, 9469, 9474, 9479, 9483, 7945, 2239, 9487, 9491, 2255, 9495, 2259, 0}, {9465, 9469, 9474, 9479, 9483, 7945, 2239, 9487, 9491, 2255, 9495, 2259, 0}, 0, 1, 691, 187, {9499,9509,6153,9517,9529,9539,9549,1692,0,0,0,0,0,0},{9561,9575,9590,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {36696, 36707, 13579, 36718, 36729, 36736, 36745, 36758, 36318, 36331, 36344, 36357, 0}, {36696, 36707, 13579, 36718, 36729, 36736, 36745, 36758, 36318, 36331, 36344, 36357, 0}, {36696, 36707, 13579, 36718, 36729, 36736, 36745, 36758, 36318, 36331, 36344, 36357, 0}, {36696, 36707, 13579, 36718, 36729, 36736, 36745, 36758, 36318, 36331, 36344, 36357, 0}, 0, 6, 2566, 187, {1128,1139,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{843,251,242,0,0,0,0,0,0,0,0,0},{848,269,257,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1327, 1340, 1347, {1354, 1364, 1374, 1384, 1394, 1404, 1414}, {35216, 35223, 35230, 35237, 35244, 35251, 35258}, {1473, 1477, 1481, 1485, 1489, 1493, 1497}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, 0, 0, 185, 187, {2277,2286,189,1714,1735,1654,1681,1692,0,0,0,0,0,0},{1744,36765,36792,2568,1822,35265,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1898,1914,0,0,0,0,0,0}},
-       {1921, 2579, 2585, {2592, 2600, 2607, 2616, 2625, 2636, 2644}, {2652, 2655, 2658, 2661, 2664, 2667, 2670}, {2023, 2428, 2673, 2428, 2673, 2434, 2023}, {2675, 2682, 2690, 2696, 2702, 2706, 2711, 2716, 2723, 2733, 2741, 2750, 0}, {2675, 2682, 2690, 2696, 2702, 2706, 2711, 2716, 2723, 2733, 2741, 2750, 0}, {2759, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, {2759, 2763, 2767, 2772, 2702, 2776, 2780, 2784, 2788, 2792, 2796, 2800, 0}, 2, 1, 691, 187, {1156,1167,1176,35571,4762,1692,7419,4753,0,0,0,0,0,0},{2818,2300,36808,0,0,0,0,0,0,0},{251,843,35610,35621,2321,0,0,0,0,0,0,0},{269,848,2862,35665,35679,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 7281, 7286, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 185, 187, {9796,1120,189,1176,1692,0,0,0,0,0,0,0,0,0},{1207,1242,0,0,0,0,0,0,0,0},{3594,242,251,843,0,0,0,0,0,0,0,0},{3602,257,269,848,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 1, 185, 187, {198,189,2286,1139,0,0,0,0,0,0,0,0,0,0},{4239,4266,3809,36820,14885,0,0,0,0,0},{242,3594,843,251,0,0,0,0,0,0,0,0},{257,3602,848,269,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {4783, 4792, 4798, 4804, 4813, 4819, 4828}, {4835, 4840, 4845, 4850, 4855, 4860, 4865}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, 2, 1, 185, 187, {198,189,1167,1139,1692,0,0,0,0,0,0,0,0,0},{36829,4985,5002,1242,0,0,0,0,0,0},{251,843,4288,5011,5021,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {12084, 36852, 36862, {9187, 9196, 9208, 9215, 9223, 9233, 9239}, {9246, 9250, 9254, 9258, 9262, 9267, 9271}, {0, 0, 0, 0, 0, 0, 0}, {2438, 2445, 15143, 2459, 2465, 2469, 2474, 12063, 36870, 36880, 36888, 36897, 0}, {2438, 2445, 15143, 2459, 2465, 2469, 2474, 12063, 36870, 36880, 36888, 36897, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, 0, 1, 691, 187, {4753,4762,2266,1156,36906,1167,9806,1692,0,0,0,0,0,0},{2300,4769,2818,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {36241, 36252, 13579, 36265, 36729, 36285, 36915, 36928, 36935, 36331, 36946, 36957, 0}, {36241, 36252, 13579, 36265, 36729, 36285, 36915, 36928, 36935, 36331, 36946, 36957, 0}, {36241, 36252, 13579, 36265, 36729, 36285, 36915, 36928, 36935, 36331, 36946, 36957, 0}, {36241, 36252, 13579, 36265, 36729, 36285, 36915, 36928, 36935, 36331, 36946, 36957, 0}, 0, 6, 2566, 187, {1128,1139,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{843,251,242,0,0,0,0,0,0,0,0,0},{848,269,257,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 7281, 7286, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 2, 0, 185, 187, {198,1128,1692,0,0,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {2286,189,1139,1692,0,0,0,0,0,0,0,0,0,0},{29553,4239,4266,0,0,0,0,0,0,0},{3594,843,0,0,0,0,0,0,0,0,0,0},{3602,848,0,0,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {4783, 4792, 4798, 4804, 4813, 4819, 4828}, {4835, 4840, 4845, 4850, 4855, 4860, 4865}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4870, 4878, 4887, 4892, 4898, 4902, 4907, 4915, 4921, 4931, 1058, 4939, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, {4949, 4955, 4887, 4962, 4898, 4902, 4967, 4915, 4973, 1105, 1110, 4979, 0}, 2, 1, 185, 187, {198,189,1167,1139,1692,0,0,0,0,0,0,0,0,0},{4985,1242,5002,0,0,0,0,0,0,0},{251,843,4288,5011,5021,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 36852, 36862, {11995, 36968, 9208, 12020, 9223, 9233, 9239}, {9246, 9250, 9254, 12041, 9262, 9267, 9271}, {9275, 9277, 9279, 9281, 9283, 9277, 9281}, {2438, 2445, 15143, 2459, 2465, 2538, 2542, 12063, 36870, 36880, 36888, 36897, 0}, {2438, 2445, 15143, 2459, 2465, 2538, 2542, 12063, 36870, 36880, 36888, 36897, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, 0, 1, 691, 187, {9499,9517,0,0,0,0,0,0,0,0,0,0,0,0},{9561,9575,9590,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{36979,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {36696, 36707, 13579, 36718, 36729, 36736, 36745, 36758, 36318, 36331, 36344, 36357, 0}, {36696, 36707, 13579, 36718, 36729, 36736, 36745, 36758, 36318, 36331, 36344, 36357, 0}, {36696, 36707, 13579, 36718, 36729, 36736, 36745, 36758, 36318, 36331, 36344, 36357, 0}, {36696, 36707, 13579, 36718, 36729, 36736, 36745, 36758, 36318, 36331, 36344, 36357, 0}, 0, 0, 2566, 187, {1128,1139,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{843,251,242,0,0,0,0,0,0,0,0,0},{848,269,257,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {3613, 1929, 1932, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 2566, 187, {1692,0,0,0,0,0,0,0,0,0,0,0,0,0},{5505,0,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {2286,2277,2293,7410,4762,4753,0,0,0,0,0,0,0,0},{29553,4266,0,0,0,0,0,0,0,0},{3594,843,0,0,0,0,0,0,0,0,0,0},{3602,848,0,0,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {1921, 36990, 37008, {37023, 37036, 37055, 37068, 37083, 37100, 10950}, {37111, 37118, 37125, 37132, 37139, 37146, 37153}, {456, 459, 37160, 465, 468, 459, 465}, {37163, 37176, 501, 510, 15833, 15840, 15849, 542, 37191, 37210, 37225, 37242, 0}, {37163, 37176, 501, 510, 15833, 15840, 15849, 542, 37191, 37210, 37225, 37242, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, 0, 1, 691, 187, {9499,9517,0,0,0,0,0,0,0,0,0,0,0,0},{2300,4769,2818,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, 0, 6, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 185, 187, {198,1692,0,0,0,0,0,0,0,0,0,0,0,0},{10709,14896,1128,20161,20181,222,0,0,0,0},{251,242,3594,843,0,0,0,0,0,0,0,0},{269,257,3602,848,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 2566, 187, {1128,198,189,2286,1139,1692,0,0,0,0,0,0,0,0},{29553,4239,4266,0,0,0,0,0,0,0},{242,3594,843,251,0,0,0,0,0,0,0,0},{257,3602,848,269,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {20032, 36990, 37008, {37023, 37036, 37055, 37068, 37083, 37100, 10950}, {37111, 37118, 37125, 37132, 37139, 37146, 37153}, {456, 459, 37160, 465, 468, 459, 465}, {37163, 37176, 501, 510, 15833, 15840, 15849, 542, 37191, 37210, 37225, 37242, 0}, {37163, 37176, 501, 510, 15833, 15840, 15849, 542, 37191, 37210, 37225, 37242, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, 0, 1, 691, 187, {4753,4762,2266,1156,36906,1167,9806,1692,0,0,0,0,0,0},{2300,4769,2818,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, 0, 0, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {198,189,9796,2286,1139,1692,0,0,0,0,0,0,0,0},{29553,4239,4266,0,0,0,0,0,0,0},{3594,843,0,0,0,0,0,0,0,0,0,0},{3602,848,0,0,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {1921, 36852, 36862, {11995, 36968, 9208, 12020, 9223, 9233, 9239}, {9246, 9250, 9254, 12041, 9262, 9267, 9271}, {9275, 9277, 9279, 9281, 9283, 9277, 9281}, {2438, 2445, 15143, 2459, 2465, 2538, 2542, 12063, 36870, 36880, 36888, 36897, 0}, {2438, 2445, 15143, 2459, 2465, 2538, 2542, 12063, 36870, 36880, 36888, 36897, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, 0, 1, 691, 187, {9499,9517,0,0,0,0,0,0,0,0,0,0,0,0},{9561,9575,9590,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{36979,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, 0, 6, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 185, 187, {198,1692,0,0,0,0,0,0,0,0,0,0,0,0},{13731,0,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {198,189,2286,1139,1692,0,0,0,0,0,0,0,0,0},{29553,4239,4266,0,0,0,0,0,0,0},{242,3594,843,251,0,0,0,0,0,0,0,0},{257,3602,848,269,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {1921, 36990, 37008, {37023, 37036, 37055, 8714, 37083, 37100, 10950}, {37111, 37118, 37125, 37336, 37139, 37146, 37153}, {456, 459, 37160, 465, 468, 459, 465}, {37163, 37176, 501, 510, 15833, 37287, 37294, 542, 37191, 37210, 37225, 37242, 0}, {37163, 37176, 501, 510, 15833, 37287, 37294, 542, 37191, 37210, 37225, 37242, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, 0, 1, 691, 187, {9499,9517,0,0,0,0,0,0,0,0,0,0,0,0},{9561,9575,9590,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{36979,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, 0, 6, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 185, 187, {198,1692,0,0,0,0,0,0,0,0,0,0,0,0},{13731,0,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {37343, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {198,189,2286,1139,1692,0,0,0,0,0,0,0,0,0},{29553,4239,4266,0,0,0,0,0,0,0},{242,3594,251,843,0,0,0,0,0,0,0,0},{257,3602,269,848,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {1921, 36852, 36862, {11995, 36968, 9208, 12020, 9223, 9233, 9239}, {9246, 9250, 9254, 12041, 9262, 9267, 9271}, {9275, 9277, 9279, 9281, 9283, 9277, 9281}, {2438, 2445, 15143, 2459, 2465, 2538, 2542, 12063, 36870, 36880, 36888, 36897, 0}, {2438, 2445, 15143, 2459, 2465, 2538, 2542, 12063, 36870, 36880, 36888, 36897, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, 0, 1, 691, 187, {9499,9509,6153,9517,9529,9539,9549,1692,0,0,0,0,0,0},{9561,9575,9590,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{36979,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, {35403, 35427, 35436, 35445, 35456, 35465, 35478, 35487, 35492, 35503, 35525, 35549, 0}, 0, 1, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 185, 187, {198,2277,0,0,0,0,0,0,0,0,0,0,0,0},{1207,1242,5002,10163,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{37356,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 1, 185, 187, {198,189,2286,1139,1692,0,0,0,0,0,0,0,0,0},{29553,4239,4266,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {1921, 36990, 37008, {37023, 37036, 37055, 8714, 37083, 37100, 10950}, {37111, 37118, 37125, 37336, 37139, 37146, 37153}, {456, 459, 37160, 465, 468, 459, 465}, {37163, 37176, 501, 510, 15833, 37287, 37294, 542, 37191, 37210, 37225, 37242, 0}, {37163, 37176, 501, 510, 15833, 37287, 37294, 542, 37191, 37210, 37225, 37242, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, 0, 1, 691, 187, {9499,9509,6153,9517,9529,9539,9549,37366,0,0,0,0,0,0},{9561,9575,9590,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{36979,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, 0, 6, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {3613, 1929, 1932, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 185, 187, {3773,3782,3789,3798,1692,1735,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {37378, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 1, 2566, 187, {1128,1139,189,2286,0,0,0,0,0,0,0,0,0,0},{29553,4239,4266,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, 0, 6, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 1, 185, 187, {198,189,2286,1139,1692,0,0,0,0,0,0,0,0,0},{29553,4239,4266,0,0,0,0,0,0,0},{843,251,242,3594,0,0,0,0,0,0,0,0},{848,269,257,3602,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, 0, 6, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {198,189,2286,1139,1692,0,0,0,0,0,0,0,0,0},{29553,4239,4266,0,0,0,0,0,0,0},{242,3594,843,251,0,0,0,0,0,0,0,0},{257,3602,848,269,0,0,0,0,0},{1286,278,0,0,0,0,0,0}},
-       {1, 35285, 35288, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35291, 35302, 35317, 35334, 35351, 35364, 35377}, {35388, 35391, 35394, 35397, 35400, 13549, 13540}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, {36241, 36252, 13579, 36265, 36276, 36285, 36296, 36307, 36318, 36331, 36344, 36357, 0}, 0, 6, 185, 187, {198,189,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 8151, 22089, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 2566, 187, {1128,1139,2293,4762,1692,0,0,0,0,0,0,0,0,0},{5505,1242,0,0,0,0,0,0,0,0},{251,843,242,0,0,0,0,0,0,0,0,0},{269,848,2326,257,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {37378, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {198,189,2286,1139,0,0,0,0,0,0,0,0,0,0},{29553,4266,0,0,0,0,0,0,0,0},{242,3594,843,251,0,0,0,0,0,0,0,0},{257,3602,848,269,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {198,189,37389,1692,0,0,0,0,0,0,0,0,0,0},{29553,0,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {289, 8151, 22089, {3620, 3627, 3634, 3642, 3652, 3661, 3668}, {3677, 3681, 3685, 3689, 3693, 3697, 3701}, {2023, 2428, 2430, 3705, 2430, 2434, 2023}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {3707, 3715, 3724, 2696, 3730, 3734, 3739, 2716, 2723, 3744, 2741, 3752, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, {2759, 2763, 3761, 2772, 3730, 2776, 2780, 2784, 2788, 3765, 2796, 3769, 0}, 0, 0, 185, 187, {2277,2286,198,189,1692,0,0,0,0,0,0,0,0,0},{1207,1242,0,0,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {198,189,37389,1692,0,0,0,0,0,0,0,0,0,0},{4211,0,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {198,189,37389,1692,0,0,0,0,0,0,0,0,0,0},{4211,0,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{37400,0,0,0,0,0,0,0}},
-       {3883, 872, 878, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {198,189,37389,1692,0,0,0,0,0,0,0,0,0,0},{29553,0,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {3613, 1929, 1932, {3895, 3903, 3909, 3916, 3927, 3934, 3942}, {3950, 3955, 3960, 3965, 3971, 3976, 3981}, {2673, 2436, 2428, 2428, 3987, 3989, 2023}, {3991, 3997, 4005, 4011, 4017, 4022, 4028, 4034, 4041, 4052, 4060, 4070, 0}, {4080, 4086, 4094, 1012, 4100, 4105, 4111, 4117, 4124, 1050, 4135, 4145, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, {4155, 4160, 3960, 4165, 4170, 4175, 4180, 4185, 4190, 4196, 4201, 4206, 0}, 0, 0, 185, 187, {3773,3782,3789,3798,1735,1692,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{1286,0,0,0,0,0,0,0}},
-       {20032, 36990, 37008, {37023, 37036, 37055, 37068, 37083, 37100, 10950}, {37111, 37118, 37125, 37132, 37139, 37146, 37153}, {456, 459, 37160, 465, 468, 459, 465}, {37163, 37176, 501, 510, 15833, 15840, 15849, 542, 37191, 37210, 37225, 37242, 0}, {37163, 37176, 501, 510, 15833, 15840, 15849, 542, 37191, 37210, 37225, 37242, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, 0, 1, 691, 187, {4753,4762,2266,1156,36906,1167,9806,1692,0,0,0,0,0,0},{2300,4769,2818,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {12084, 36852, 36862, {9187, 9196, 9208, 9215, 9223, 9233, 9239}, {9246, 9250, 9254, 9258, 9262, 9267, 9271}, {0, 0, 0, 0, 0, 0, 0}, {2438, 2445, 15143, 2459, 2465, 2469, 2474, 12063, 36870, 36880, 36888, 36897, 0}, {2438, 2445, 15143, 2459, 2465, 2469, 2474, 12063, 36870, 36880, 36888, 36897, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, 0, 1, 691, 187, {4753,4762,2266,1156,36906,1167,9806,1692,0,0,0,0,0,0},{2300,4769,2818,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1921, 36990, 37008, {37023, 37036, 37055, 8714, 37083, 37100, 10950}, {37111, 37118, 37125, 37336, 37139, 37146, 37153}, {456, 459, 37160, 465, 468, 459, 465}, {37163, 37176, 501, 510, 15833, 37287, 37294, 542, 37191, 37210, 37225, 37242, 0}, {37163, 37176, 501, 510, 15833, 37287, 37294, 542, 37191, 37210, 37225, 37242, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, 0, 1, 691, 187, {9499,9517,0,0,0,0,0,0,0,0,0,0,0,0},{9561,9575,9590,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{36979,0,0,0,0,0,0,0}},
-       {1921, 36852, 36862, {11995, 36968, 9208, 12020, 9223, 9233, 9239}, {9246, 9250, 9254, 12041, 9262, 9267, 9271}, {9275, 9277, 9279, 9281, 9283, 9277, 9281}, {2438, 2445, 15143, 2459, 2465, 2538, 2542, 12063, 36870, 36880, 36888, 36897, 0}, {2438, 2445, 15143, 2459, 2465, 2538, 2542, 12063, 36870, 36880, 36888, 36897, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, 0, 1, 691, 187, {9499,9517,0,0,0,0,0,0,0,0,0,0,0,0},{9561,9575,9590,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{36979,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {35828, 35839, 35863, 35893, 35910, 35932, 35941}, {15032, 15035, 15040, 15046, 15050, 7736, 15055}, {6617, 6605, 6607, 6609, 6611, 6613, 6615}, {35952, 35965, 501, 35978, 521, 35989, 35998, 542, 36007, 36024, 36039, 36052, 0}, {35952, 35965, 501, 35978, 521, 35989, 35998, 542, 36007, 36024, 36039, 36052, 0}, {15206, 8135, 2530, 2534, 15154, 15210, 15214, 15218, 15222, 2554, 15226, 15230, 0}, {15206, 8135, 2530, 2534, 15154, 15210, 15214, 15218, 15222, 2554, 15226, 15230, 0}, 0, 1, 691, 187, {1156,1167,4762,189,1692,0,0,0,0,0,0,0,0,0},{1242,5505,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {1327, 1340, 1347, {1354, 1364, 1374, 1384, 1394, 1404, 1414}, {1424, 1431, 1438, 1445, 1452, 1459, 1466}, {1473, 1477, 1481, 1485, 1489, 1493, 1497}, {1501, 1508, 1515, 1522, 1529, 1536, 1543, 1550, 1557, 1564, 1571, 1581, 0}, {1501, 1508, 1515, 1522, 1529, 1536, 1543, 1550, 1557, 1564, 1571, 1581, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, 0, 0, 185, 187, {1654,1663,1672,1681,1692,1703,1714,1721,1728,1735,0,0,0,0},{1744,1766,1794,1822,1837,0,0,0,0,0},{843,251,1858,1866,0,0,0,0,0,0,0,0},{848,269,1875,1886,0,0,0,0,0},{1898,1914,0,0,0,0,0,0}},
-       {1921, 35740, 35745, {2345, 10060, 35750, 2368, 2375, 2383, 35757}, {2398, 10088, 35765, 2411, 2415, 2419, 35769}, {2023, 2428, 2430, 2432, 2430, 2434, 2436}, {2438, 2445, 4887, 2459, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2438, 2445, 4887, 2459, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, 2, 1, 691, 187, {1156,7519,1167,4762,2804,1692,0,0,0,0,0,0,0,0},{2300,4769,0,0,0,0,0,0,0,0},{251,843,7529,7539,4288,2321,7550,7561,0,0,0,0},{269,848,7571,7585,4302,2337,7598,7612,0},{1301,7625,7635,0,0,0,0,0}},
-       {12084, 36852, 36862, {9187, 9196, 9208, 9215, 9223, 9233, 9239}, {9246, 9250, 9254, 9258, 9262, 9267, 9271}, {0, 0, 0, 0, 0, 0, 0}, {2438, 2445, 15143, 2459, 2465, 2469, 2474, 12063, 36870, 36880, 36888, 36897, 0}, {2438, 2445, 15143, 2459, 2465, 2469, 2474, 12063, 36870, 36880, 36888, 36897, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, {2522, 2526, 2530, 2534, 2465, 2538, 2542, 12070, 2550, 2554, 2558, 2562, 0}, 0, 1, 691, 187, {4753,4762,2266,1156,36906,1167,9806,1692,0,0,0,0,0,0},{2300,4769,2818,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {14943, 14949, 14963, 14986, 15000, 15016, 15023}, {15032, 15035, 15040, 15046, 15050, 7736, 15055}, {6617, 6605, 6607, 6609, 6611, 6613, 6615}, {15059, 15066, 10332, 15073, 3730, 15079, 15085, 15091, 15098, 15107, 15115, 15122, 0}, {15129, 15136, 15143, 15148, 15154, 15158, 15163, 15168, 15175, 15184, 15192, 15199, 0}, {15206, 8135, 2530, 2534, 15154, 15210, 15214, 15218, 15222, 2554, 15226, 15230, 0}, {15206, 8135, 2530, 2534, 15154, 15210, 15214, 15218, 15222, 2554, 15226, 15230, 0}, 0, 1, 691, 187, {1156,1167,4762,189,1692,0,0,0,0,0,0,0,0,0},{15234,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 1929, 1932, {36065, 36080, 36095, 36110, 36127, 36144, 36153}, {36164, 36171, 36178, 36185, 36192, 19807, 36199}, {36206, 19414, 8811, 8814, 8808, 19411, 19821}, {13204, 13215, 8845, 13228, 8867, 13239, 13246, 8892, 13253, 13268, 13281, 13292, 0}, {13204, 13215, 8845, 13228, 8867, 13239, 13246, 8892, 13253, 13268, 13281, 13292, 0}, {13305, 13312, 13319, 13326, 8867, 13239, 13246, 13333, 13340, 13347, 13354, 13361, 0}, {13305, 13312, 13319, 13326, 8867, 13239, 13246, 13333, 13340, 13347, 13354, 13361, 0}, 0, 1, 691, 187, {1156,1167,36209,4762,189,1692,0,0,0,0,0,0,0,0},{36220,1242,5505,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {5619, 26188, 26193, {26198, 26205, 26216, 26229, 26242, 26253, 26266}, {26277, 26282, 26287, 26292, 26297, 26302, 26307}, {6605, 6607, 6609, 6611, 6613, 6615, 6617}, {26312, 26338, 26366, 26396, 26426, 26452, 26482, 26508, 26536, 26560, 26588, 26625, 0}, {26312, 26338, 26366, 26396, 26426, 26452, 26482, 26508, 26536, 26560, 26588, 26625, 0}, {26664, 26676, 26688, 26700, 26712, 26724, 26736, 26748, 26760, 26772, 26785, 26798, 0}, {26664, 26676, 26688, 26700, 26712, 26724, 26736, 26748, 26760, 26772, 26785, 26798, 0}, 0, 0, 2566, 187, {1692,0,0,0,0,0,0,0,0,0,0,0,0,0},{26811,26865,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{26901,0,0,0,0,0,0,0}},
-       {1327, 1340, 1347, {1354, 1364, 1374, 1384, 1394, 1404, 1414}, {35216, 35223, 35230, 35237, 35244, 35251, 35258}, {1473, 1477, 1481, 1485, 1489, 1493, 1497}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, 0, 0, 185, 187, {2277,2286,189,1714,1735,1654,1681,1692,0,0,0,0,0,0},{1744,6632,1822,1837,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1898,1914,0,0,0,0,0,0}},
-       {1327, 1340, 1347, {1354, 1364, 1374, 1384, 1394, 1404, 1414}, {35216, 35223, 35230, 35237, 35244, 35251, 35258}, {1473, 1477, 1481, 1485, 1489, 1493, 1497}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, {1591, 1596, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1642, 1648, 0}, 0, 0, 185, 187, {2277,2286,189,1714,1735,1654,1681,1692,0,0,0,0,0,0},{1744,6632,1822,1837,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1898,1914,0,0,0,0,0,0}},
-       {1921, 7281, 7286, {2345, 2353, 2360, 2368, 2375, 2383, 2390}, {7485, 7490, 7494, 7498, 7502, 7506, 7510}, {2023, 2428, 2430, 2432, 2430, 2434, 2436}, {2438, 2445, 4887, 2459, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2438, 2445, 4887, 2459, 4898, 2469, 2474, 2479, 2486, 2496, 2504, 6121, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, {2522, 2526, 2530, 2534, 4898, 2538, 2542, 2546, 2550, 2554, 2558, 7515, 0}, 2, 1, 691, 187, {1156,7519,1167,4762,2804,1692,0,0,0,0,0,0,0,0},{2300,4769,0,0,0,0,0,0,0,0},{251,843,7529,7539,4288,2321,7550,7561,0,0,0,0},{269,848,7571,7585,4302,2337,7598,7612,0},{1301,7625,7635,0,0,0,0,0}},
-       {1921, 36990, 37008, {37023, 37036, 37055, 8714, 37083, 37100, 10950}, {37111, 37118, 37125, 37336, 37139, 37146, 37153}, {456, 459, 37160, 465, 468, 459, 465}, {37163, 37176, 501, 510, 15833, 37287, 37294, 542, 37191, 37210, 37225, 37242, 0}, {37163, 37176, 501, 510, 15833, 37287, 37294, 542, 37191, 37210, 37225, 37242, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, {37259, 37266, 37273, 37280, 15833, 37287, 37294, 37301, 37308, 37315, 37322, 37329, 0}, 0, 1, 691, 187, {9499,9517,0,0,0,0,0,0,0,0,0,0,0,0},{9561,9575,9590,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{36979,0,0,0,0,0,0,0}},
-       {1, 13028, 13040, {13052, 13067, 13082, 13097, 13114, 13133, 13144}, {13155, 13162, 13169, 13176, 13183, 13190, 13197}, {0, 0, 0, 0, 0, 0, 0}, {13204, 13215, 8845, 13228, 8867, 13239, 13246, 8892, 13253, 13268, 13281, 13292, 0}, {13204, 13215, 8845, 13228, 8867, 13239, 13246, 8892, 13253, 13268, 13281, 13292, 0}, {13305, 13312, 13319, 13326, 8867, 13239, 13246, 13333, 13340, 13347, 13354, 13361, 0}, {13305, 13312, 13319, 13326, 8867, 13239, 13246, 13333, 13340, 13347, 13354, 13361, 0}, 0, 1, 691, 187, {1156,1167,4762,1128,189,0,0,0,0,0,0,0,0,0},{13368,13386,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {20195, 1929, 1932, {20202, 20212, 20221, 20230, 20241, 20251, 20256}, {20263, 20269, 20274, 20279, 20284, 10786, 20288}, {20293, 2673, 2023, 7736, 2018, 3987, 2023}, {15059, 15066, 10332, 15073, 3730, 20295, 20300, 20305, 15098, 15107, 15115, 15122, 0}, {15059, 15066, 10332, 15073, 3730, 20295, 20300, 20305, 15098, 15107, 15115, 15122, 0}, {20312, 20317, 3761, 2772, 3730, 20295, 20300, 20321, 10770, 2792, 20325, 20330, 0}, {20312, 20317, 3761, 2772, 3730, 20295, 20300, 20321, 10770, 2792, 20325, 20330, 0}, 0, 1, 691, 187, {1156,0,0,0,0,0,0,0,0,0,0,0,0,0},{20334,1242,5505,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{1301,0,0,0,0,0,0,0}},
-       {289, 30890, 30900, {30913, 30920, 30926, 30933, 30939, 30945, 30953}, {30963, 30967, 30971, 30975, 30979, 30983, 30987}, {12817, 12817, 12817, 12817, 12817, 12817, 12817}, {30993, 31002, 31011, 31016, 31022, 31028, 31034, 31041, 31047, 31056, 31065, 31073, 0}, {30993, 31002, 31011, 31016, 31022, 31028, 31034, 31041, 31047, 31056, 31065, 31073, 0}, {31082, 31086, 3761, 31090, 3730, 31094, 31098, 31102, 31107, 31111, 31117, 31121, 0}, {31082, 31086, 3761, 31090, 3730, 31094, 31098, 31102, 31107, 31111, 31117, 31121, 0}, 0, 0, 2566, 187, {1128,1139,1692,0,0,0,0,0,0,0,0,0,0,0},{10709,222,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
-       {289, 0, 0, {31896, 31903, 31911, 31918, 31925, 31933, 31941}, {31948, 31951, 31954, 31957, 31960, 31963, 31966}, {2436, 2436, 2430, 2436, 12817, 3987, 12817}, {31969, 31977, 31987, 31993, 32001, 32006, 32011, 32016, 32023, 20142, 32031, 32039, 0}, {31969, 31977, 31987, 31993, 32001, 32006, 32011, 32016, 32023, 20142, 32031, 32039, 0}, {2759, 32047, 3761, 32051, 3730, 31094, 31098, 32055, 3701, 2792, 32059, 16358, 0}, {2759, 32047, 3761, 32051, 3730, 31094, 31098, 32055, 3701, 2792, 32059, 16358, 0}, 0, 0, 185, 187, {2277,2286,189,198,1735,1692,3809,0,0,0,0,0,0,0},{20161,20181,222,10709,0,0,0,0,0,0},{3594,242,843,251,0,0,0,0,0,0,0,0},{3602,257,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}}
+       {289, 872, 878, {884, 893, 901, 909, 918, 925, 935}, {944, 948, 952, 956, 960, 964, 968}, {972, 975, 978, 981, 984, 987, 990}, {993, 999, 1006, 1012, 1018, 1023, 1028, 1035, 1041, 1050, 1058, 1067, 0}, {993, 999, 1006, 1012, 1018, 1023, 1028, 1035, 1041, 1050, 1058, 1067, 0}, {1076, 1081, 1006, 1086, 1018, 1023, 1091, 1096, 1100, 1105, 1110, 1115, 0}, {1076, 1081, 1006, 1086, 1018, 1023, 1091, 1096, 1100, 1105, 1110, 1115, 0}, 2, 1, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{1140,1163,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {1195, 1204, 1211, {1218, 1228, 1238, 1248, 1258, 1268, 1278}, {34757, 34764, 34771, 34778, 34785, 34792, 34799}, {1337, 1341, 1345, 1349, 1353, 1357, 1361}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, 0, 0, 185, 187, {1518,1545,1556,0,0,0,0,0,0,0,0,0,0,0},{1608,6555,1686,34806,0,0,0,0,0,0},{1730,1722,251,843,0,0,0,0,0,0,0,0},{1750,1739,269,848,0,0,0,0,0},{1762,1778,1791,0,0,0,0,0}},
+       {1812, 1820, 1823, {1826, 1834, 1844, 1852, 1860, 1869, 1876}, {1883, 1886, 1889, 1893, 1896, 1900, 1904}, {1907, 1909, 1911, 1914, 1916, 1909, 1914}, {1919, 1925, 1931, 1939, 1945, 1953, 1961, 1971, 1977, 1985, 1993, 2002, 0}, {2011, 2017, 2024, 2032, 2038, 2046, 2054, 2064, 1977, 2070, 2078, 2088, 0}, {2097, 2101, 2106, 2111, 2115, 2120, 2125, 2130, 2134, 2140, 2146, 2150, 0}, {2097, 2101, 2106, 2111, 2115, 2120, 2125, 2130, 2134, 2140, 2146, 2150, 0}, 2, 1, 691, 187, {2154,2165,0,0,0,0,0,0,0,0,0,0,0,0},{2176,2194,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{848,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 1820, 1823, {2217, 2225, 2232, 2240, 2247, 2255, 2262}, {2270, 2275, 2279, 2283, 2287, 2291, 2295}, {1914, 2300, 2302, 2304, 2302, 2306, 2308}, {2310, 2317, 2325, 2331, 2337, 2341, 2346, 2351, 2358, 2368, 2376, 2385, 0}, {2310, 2317, 2325, 2331, 2337, 2341, 2346, 2351, 2358, 2368, 2376, 2385, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, 2, 1, 2438, 187, {2440,2451,1556,2460,0,0,0,0,0,0,0,0,0,0},{2194,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 2471, 2477, {2484, 2492, 2499, 2508, 2517, 2528, 2536}, {2544, 2547, 2550, 2553, 2556, 2559, 2562}, {1914, 2300, 2565, 2300, 2565, 2306, 1914}, {2567, 2574, 2582, 2588, 2594, 2598, 2603, 2608, 2615, 2625, 2633, 2642, 0}, {2567, 2574, 2582, 2588, 2594, 2598, 2603, 2608, 2615, 2625, 2633, 2642, 0}, {2651, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, {2651, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, 2, 1, 691, 187, {2154,2696,1556,2705,0,0,0,0,0,0,0,0,0,0},{2719,2194,2738,0,0,0,0,0,0,0},{251,2751,0,0,0,0,0,0,0,0,0,0},{269,2763,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 2778, 2785, {2792, 2807, 2822, 2833, 2848, 2861, 2880}, {2895, 2902, 2909, 2916, 2923, 2930, 2937}, {2944, 2947, 2950, 2950, 2953, 2953, 2956}, {2959, 2980, 3003, 3018, 3035, 3046, 3061, 3076, 3095, 3118, 3137, 3156, 0}, {3177, 3198, 3221, 3236, 3253, 3264, 3279, 3294, 3313, 3336, 3355, 3374, 0}, {3395, 3402, 3409, 3416, 3423, 3430, 3439, 3448, 3455, 3462, 3469, 3476, 0}, {3395, 3402, 3409, 3416, 3423, 3430, 3439, 3448, 3455, 3462, 3469, 3476, 0}, 2, 1, 185, 187, {1120,198,3483,189,3490,1556,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,242,843,251,0,0,0,0,0,0,0,0},{3540,257,848,269,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 185, 187, {3711,3720,3727,3736,1599,1556,3747,0,0,0,0,0,0,0},{3757,3776,3789,3808,0,0,0,0,0,0},{3532,242,843,251,0,0,0,0,0,0,0,0},{3540,257,848,269,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 4303, 4307, {4311, 4323, 4335, 4345, 4359, 4369, 4381}, {4392, 4395, 4398, 4401, 4404, 4407, 4410}, {1914, 2300, 2302, 4413, 2302, 1909, 2308}, {4415, 4424, 4433, 4443, 4452, 4461, 4470, 4480, 4487, 4495, 4503, 4513, 0}, {4522, 4533, 4544, 4556, 4567, 4578, 4589, 4601, 4610, 4620, 4630, 4642, 0}, {4653, 4659, 4665, 4672, 4678, 4684, 4690, 4697, 4701, 4706, 4711, 4718, 0}, {4653, 4659, 4665, 4672, 4678, 4684, 4690, 4697, 4701, 4706, 4711, 4718, 0}, 2, 1, 691, 691, {4724,0,0,0,0,0,0,0,0,0,0,0,0,0},{2176,2194,0,0,0,0,0,0,0,0},{4241,0,0,0,0,0,0,0,0,0,0,0},{4260,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {4733, 4742, 4748, 4754, 4763, 4769, 4778}, {4785, 4790, 4795, 4800, 4805, 4810, 4815}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, 2, 1, 185, 187, {198,189,2696,2451,1556,0,0,0,0,0,0,0,0,0},{4935,3520,4952,0,0,0,0,0,0,0},{251,843,4246,4961,4971,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1, 4979, 4992, {5003, 5021, 5035, 5053, 5071, 5089, 5105}, {5119, 5131, 5143, 5155, 5167, 5179, 5191}, {5198, 5203, 5208, 5213, 5218, 5223, 5228}, {5233, 5244, 5257, 5264, 5275, 5282, 5291, 5300, 5313, 5326, 5341, 5354, 0}, {5233, 5244, 5257, 5264, 5275, 5282, 5291, 5300, 5313, 5326, 5341, 5354, 0}, {5365, 5374, 5257, 5383, 5275, 5392, 5401, 5410, 5419, 5428, 5437, 5446, 0}, {5365, 5374, 5257, 5383, 5275, 5392, 5401, 5410, 5419, 5428, 5437, 5446, 0}, 0, 0, 185, 187, {198,5455,189,209,2451,2440,5468,1556,5481,5498,0,0,0,0},{5508,5455,5526,5548,5481,0,0,0,0,0},{251,242,0,0,0,0,0,0,0,0,0,0},{269,257,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {5569, 5577, 5581, {5585, 5595, 5603, 5608, 5615, 5628, 5636}, {3927, 5644, 4413, 5646, 5650, 1909, 5653}, {3927, 5644, 4413, 5657, 5650, 1909, 5657}, {5660, 5668, 5677, 5686, 5695, 5702, 5710, 5718, 5728, 5739, 2376, 2385, 0}, {5660, 5668, 5677, 5686, 5695, 5702, 5710, 5718, 5728, 5739, 2376, 2385, 0}, {5748, 5753, 5759, 5766, 5772, 5778, 5784, 5790, 5795, 5802, 1110, 5807, 0}, {5748, 5753, 5759, 5766, 5772, 5778, 5784, 5790, 5795, 5802, 1110, 5807, 0}, 2, 1, 5812, 187, {5815,5829,0,0,0,0,0,0,0,0,0,0,0,0},{5842,5862,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{848,0,0,0,0,0,0,0,0},{5876,0,0,0,0,0,0,0}},
+       {1812, 5887, 5892, {5897, 5908, 5919, 5933, 5947, 5959, 5971}, {5983, 5988, 5994, 6000, 6006, 6011, 6017}, {1914, 2300, 6022, 2300, 2306, 2306, 2308}, {6025, 6033, 4837, 6042, 6049, 6054, 6061, 6068, 2358, 5739, 6076, 6086, 0}, {6025, 6033, 4837, 6042, 6049, 6054, 6061, 6068, 2358, 5739, 6076, 6086, 0}, {5748, 1081, 4795, 6095, 6049, 5778, 5784, 6100, 6107, 5802, 6112, 1115, 0}, {5748, 1081, 4795, 6095, 6049, 5778, 5784, 6100, 6107, 5802, 6112, 1115, 0}, 2, 1, 691, 187, {4724,6118,0,0,0,0,0,0,0,0,0,0,0,0},{2719,2194,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {6130, 6139, 6147, 6156, 6167, 6176, 6185}, {6192, 6196, 2402, 6200, 6204, 6208, 6212}, {2565, 2308, 2300, 2300, 6216, 3927, 1914}, {6218, 6226, 3943, 6235, 6242, 6249, 6256, 3972, 6263, 6273, 6281, 6290, 0}, {6299, 6307, 4032, 6316, 6323, 6330, 6337, 4055, 6344, 6354, 1058, 6362, 0}, {6371, 2398, 2402, 2406, 6375, 6379, 6383, 6387, 6391, 6395, 2430, 6399, 0}, {6371, 2398, 2402, 2406, 6375, 6379, 6383, 6387, 6391, 6395, 2430, 6399, 0}, 2, 1, 185, 187, {198,3490,189,6403,3483,0,0,0,0,0,0,0,0,0},{4935,6411,3520,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1195, 6420, 6427, {6434, 6444, 6454, 6464, 6474, 6484, 6494}, {1337, 6504, 6508, 6512, 6516, 6520, 6524}, {1337, 6504, 6508, 6512, 6516, 6520, 6524}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, 0, 0, 185, 187, {1545,1599,1578,1518,1556,0,0,0,0,0,0,0,0,0},{1608,6555,6579,6606,6635,6659,6688,6708,0,0},{843,251,1722,1730,0,0,0,0,0,0,0,0},{848,269,1739,1750,0,0,0,0,0},{1762,6733,1791,0,0,0,0,0}},
+       {6751, 6761, 6768, {6775, 6785, 6795, 6805, 6815, 6825, 6835}, {6845, 6849, 6853, 6857, 6861, 6865, 6869}, {6845, 6849, 6853, 6857, 6861, 6865, 6869}, {6873, 6878, 6883, 6888, 6893, 6898, 6903, 6908, 6913, 6918, 6924, 6930, 0}, {6873, 6878, 6883, 6888, 6893, 6898, 6903, 6908, 6913, 6918, 6924, 6930, 0}, {6873, 6878, 6883, 6888, 6893, 6898, 6903, 6908, 6913, 6918, 6924, 6930, 0}, {6873, 6878, 6883, 6888, 6893, 6898, 6903, 6908, 6913, 6918, 6924, 6930, 0}, 0, 0, 2438, 187, {1556,6936,1585,1527,0,0,0,0,0,0,0,0,0,0},{6945,6974,6998,7025,7047,7078,7104,7135,7161,7188},{1722,1730,843,251,0,0,0,0,0,0,0,0},{1739,1750,848,269,0,0,0,0,0},{7210,7227,7246,0,0,0,0,0}},
+       {289, 7261, 7266, {7271, 7278, 7286, 7294, 7303, 7313, 7321}, {7330, 4395, 7333, 7336, 7339, 7342, 7345}, {7348, 2300, 2565, 3643, 2565, 3927, 7348}, {7350, 7358, 7367, 2331, 7373, 2341, 2346, 7377, 2358, 2368, 2376, 2385, 0}, {7350, 7358, 7367, 2331, 7373, 2341, 2346, 7377, 2358, 2368, 2376, 2385, 0}, {2394, 2398, 7386, 2406, 7373, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 7386, 2406, 7373, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, 2, 1, 2438, 187, {7390,4157,2451,189,2696,7399,1556,0,0,0,0,0,0,0},{4935,6411,3520,4952,0,0,0,0,0,0},{251,843,4241,7411,7423,0,0,0,0,0,0,0},{269,848,7435,7450,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {7465, 7261, 7266, {2217, 2225, 2232, 2240, 2247, 2255, 2262}, {7473, 7478, 7482, 7486, 7490, 7494, 7498}, {1914, 2300, 2302, 2304, 2302, 2306, 2308}, {2310, 2317, 4837, 2331, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2310, 2317, 4837, 2331, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, 2, 1, 691, 691, {2154,6118,0,0,0,0,0,0,0,0,0,0,0,0},{2176,2194,0,0,0,0,0,0,0,0},{4246,0,0,0,0,0,0,0,0,0,0,0},{4268,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {7507, 7517, 7531, 7538, 7545, 7554, 1876}, {7562, 7569, 7574, 7578, 7583, 7588, 7592}, {1907, 1909, 3643, 7597, 7600, 1909, 1914}, {7602, 7611, 7616, 7623, 2337, 7633, 7642, 7649, 7659, 7669, 1993, 7682, 0}, {7692, 7701, 7708, 7714, 7723, 7728, 7736, 7742, 7751, 7761, 7775, 7785, 0}, {7793, 7797, 2402, 7801, 2337, 7805, 7809, 7813, 7817, 7821, 2146, 7826, 0}, {7793, 7797, 2402, 7801, 2337, 7805, 7809, 7813, 7817, 7821, 2146, 7826, 0}, 2, 1, 691, 187, {2154,0,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3821, 1820, 1823, {3833, 7830, 7844, 7857, 7870, 7883, 3880}, {6192, 7895, 7899, 7903, 7907, 7911, 7915}, {2565, 1914, 2302, 7920, 7920, 1914, 1914}, {7922, 7930, 7940, 1012, 7947, 7952, 7958, 4055, 7964, 7973, 7981, 7990, 0}, {7922, 7930, 7940, 1012, 7947, 7952, 7958, 4055, 7964, 7973, 7981, 7990, 0}, {2394, 7999, 2402, 8003, 4848, 2410, 2414, 6387, 6391, 8007, 2430, 8011, 0}, {2394, 7999, 2402, 8003, 4848, 2410, 2414, 6387, 6391, 8007, 2430, 8011, 0}, 0, 0, 185, 187, {198,189,1120,3483,2451,2440,4157,7390,2696,2154,7399,8015,4724,1556},{4164,4219,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{4288,0,0,0,0,0,0,0}},
+       {1812, 8022, 8025, {8028, 8037, 4748, 8047, 8055, 8063, 8072}, {8078, 8081, 4395, 8085, 8088, 8092, 1904}, {2565, 6216, 2300, 2300, 6216, 3927, 1914}, {8095, 8103, 4837, 8110, 8117, 8122, 8132, 8140, 8146, 8156, 2376, 2385, 0}, {8095, 8103, 4837, 8110, 8117, 8122, 8132, 8140, 8146, 8156, 2376, 2385, 0}, {8164, 8171, 4837, 4912, 8117, 8177, 8184, 8140, 8189, 1105, 1110, 5807, 0}, {8164, 8171, 4837, 4912, 8117, 8177, 8184, 8140, 8189, 1105, 1110, 5807, 0}, 2, 1, 2438, 187, {2440,0,0,0,0,0,0,0,0,0,0,0,0,0},{8195,8224,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 7261, 7266, {8241, 8251, 8256, 8263, 8272, 8276, 8283}, {8294, 8298, 3699, 8302, 8306, 8310, 8314}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {8319, 8328, 8338, 8345, 4848, 8353, 8359, 2351, 8365, 8376, 8386, 8396, 0}, {8319, 8328, 8338, 8345, 4848, 8353, 8359, 2351, 8365, 8376, 8386, 8396, 0}, {8406, 1081, 4795, 6095, 4848, 8411, 8416, 5790, 4923, 1105, 1110, 5807, 0}, {8406, 1081, 4795, 6095, 4848, 8411, 8416, 5790, 4923, 1105, 1110, 5807, 0}, 0, 1, 691, 187, {2154,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 8421, 8441, {8467, 8490, 352, 8513, 8524, 8539, 8554}, {8569, 8574, 8579, 8584, 8589, 8594, 8599}, {8604, 8607, 8604, 8610, 8613, 8607, 8610}, {8616, 8629, 8644, 8653, 8666, 8673, 8682, 8691, 8704, 8721, 8736, 8749, 0}, {8764, 8777, 8792, 8803, 8816, 8823, 8832, 8841, 8856, 8873, 8888, 8901, 0}, {8916, 8924, 8644, 8934, 8666, 8673, 8682, 8942, 8950, 8960, 8968, 8978, 0}, {8916, 8924, 8644, 8934, 8666, 8673, 8682, 8942, 8950, 8960, 8968, 8978, 0}, 0, 1, 691, 187, {2154,2696,8015,2440,189,0,0,0,0,0,0,0,0,0},{776,757,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 1820, 1823, {8986, 8995, 9007, 9014, 9022, 9032, 9038}, {9045, 9049, 9053, 9057, 9061, 9066, 9070}, {9074, 9076, 9078, 9080, 9082, 9076, 9080}, {9085, 9095, 9104, 9112, 9120, 9128, 9135, 9142, 9150, 1993, 9156, 9164, 0}, {9173, 9183, 9192, 9200, 9208, 9216, 9223, 9230, 9239, 7775, 9245, 9255, 0}, {9264, 9268, 9273, 9278, 9282, 7809, 2130, 9286, 9290, 2146, 9294, 2150, 0}, {9264, 9268, 9273, 9278, 9282, 7809, 2130, 9286, 9290, 2146, 9294, 2150, 0}, 0, 1, 691, 187, {9298,9308,9316,9328,9340,9350,9360,1556,0,0,0,0,0,0},{9372,9386,9401,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1812, 1820, 1823, {9421, 9429, 9438, 9445, 9452, 9461, 1876}, {1883, 1886, 9468, 1893, 9471, 9475, 1904}, {1907, 1909, 9478, 1914, 9480, 1909, 1914}, {5660, 5668, 9483, 6042, 9489, 9494, 9499, 2351, 2358, 5739, 2376, 2385, 0}, {9504, 9513, 7708, 9523, 9531, 9537, 9543, 9549, 9557, 9567, 9576, 9585, 0}, {2394, 2398, 2402, 2406, 9489, 9494, 9499, 2418, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 9489, 9494, 9499, 2418, 2422, 2426, 2430, 2434, 0}, 2, 1, 691, 187, {2154,2165,0,0,0,0,0,0,0,0,0,0,0,0},{2719,2194,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{848,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 9594, 9603, {9611, 9618, 9627, 9636, 9648, 9656, 9665}, {9675, 9679, 3699, 9684, 9689, 9693, 9697}, {2565, 5644, 2300, 2300, 9701, 1909, 1914}, {9703, 9709, 4837, 9716, 2337, 9722, 9730, 9737, 9743, 9751, 9757, 9765, 0}, {9703, 9709, 4837, 9716, 2337, 9722, 9730, 9737, 9743, 9751, 9757, 9765, 0}, {2651, 9773, 3699, 9777, 9781, 9785, 9789, 9793, 9697, 9797, 9801, 9806, 0}, {2651, 9773, 3699, 9777, 9781, 9785, 9789, 9793, 9697, 9797, 9801, 9806, 0}, 0, 1, 691, 187, {4724,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {9810, 9823, 9826, {9829, 9837, 9845, 2240, 2247, 2255, 9852}, {9860, 9865, 9870, 2283, 2287, 2291, 9874}, {1914, 2300, 2302, 2304, 2302, 2306, 2308}, {7350, 7358, 4837, 2331, 2337, 2341, 2346, 9879, 2358, 2368, 2376, 2385, 0}, {7350, 7358, 4837, 2331, 2337, 2341, 2346, 9879, 2358, 2368, 2376, 2385, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, 2, 1, 2438, 187, {1556,6936,0,0,0,0,0,0,0,0,0,0,0,0},{9887,9905,0,0,0,0,0,0,0,0},{251,843,9928,0,0,0,0,0,0,0,0,0},{269,848,9938,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, 0, 0, 185, 187, {1120,3483,189,198,1129,9951,1556,0,0,0,0,0,0,0},{3520,9963,9979,0,0,0,0,0,0,0},{843,251,3532,242,0,0,0,0,0,0,0,0},{848,269,3540,257,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1, 10021, 10026, {10030, 10036, 10046, 10052, 10063, 10073, 10078}, {10088, 10092, 10096, 10100, 10105, 10109, 10113}, {1909, 1909, 1914, 10117, 1909, 7600, 7600}, {10120, 10125, 10132, 10137, 10143, 10150, 10158, 10165, 10174, 10181, 10186, 10193, 0}, {10120, 10125, 10132, 10137, 10143, 10150, 10158, 10165, 10174, 10181, 10186, 10193, 0}, {10201, 10205, 3699, 10210, 3668, 10214, 10218, 10222, 10227, 10231, 10235, 10239, 0}, {10201, 10205, 3699, 10210, 3668, 10214, 10218, 10222, 10227, 10231, 10235, 10239, 0}, 0, 1, 691, 187, {10243,1129,0,0,0,0,0,0,0,0,0,0,0,0},{10253,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1, 10270, 10288, {10306, 10317, 10330, 10339, 10346, 10359, 10368}, {10306, 10317, 10330, 10339, 10346, 10359, 10368}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {10377, 10388, 10399, 10408, 10419, 10426, 10433, 10446, 10455, 10466, 10479, 10490, 0}, {10377, 10388, 10399, 10408, 10419, 10426, 10433, 10446, 10455, 10466, 10479, 10490, 0}, {10377, 10388, 10399, 10408, 10419, 10426, 10433, 10446, 10455, 10466, 10479, 10490, 0}, {10377, 10388, 10399, 10408, 10419, 10426, 10433, 10446, 10455, 10466, 10479, 10490, 0}, 0, 0, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{3532,242,843,251,0,0,0,0,0,0,0,0},{3540,257,848,269,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {10515, 10522, 10528, 10535, 10540, 10546, 10552}, {10558, 10562, 10566, 10570, 10574, 10578, 10582}, {2300, 1914, 1914, 10586, 4413, 3925, 1914}, {10588, 10596, 10605, 2588, 10611, 2598, 2603, 10615, 2615, 2625, 2633, 10623, 0}, {10588, 10596, 10605, 2588, 10611, 2598, 2603, 10615, 2615, 2625, 2633, 10623, 0}, {2651, 2655, 3699, 2664, 10611, 2668, 2672, 10632, 2680, 2684, 2688, 10636, 0}, {2651, 2655, 3699, 2664, 10611, 2668, 2672, 10632, 2680, 2684, 2688, 10636, 0}, 0, 0, 185, 691, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{10640,3520,0,0,0,0,0,0,0,0},{4246,0,0,0,0,0,0,0,0,0,0,0},{4268,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 10659, 10664, {10669, 10682, 10701, 10718, 10731, 10744, 10761}, {10774, 8574, 8579, 8584, 8589, 8594, 8599}, {10779, 8607, 8604, 8610, 8613, 8607, 8610}, {10782, 10795, 10806, 10823, 10838, 10853, 10868, 10881, 10896, 10913, 10928, 10945, 0}, {10960, 10971, 10984, 10999, 11012, 11025, 11038, 11049, 11062, 11077, 11090, 11109, 0}, {11122, 11129, 11136, 11143, 11150, 11157, 11164, 11171, 11178, 11185, 11192, 11199, 0}, {11122, 11129, 11136, 11143, 11150, 11157, 11164, 11171, 11178, 11185, 11192, 11199, 0}, 0, 1, 691, 187, {2154,2696,1556,0,0,0,0,0,0,0,0,0,0,0},{11206,0,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{11224,0,0,0,0,0,0,0}},
+       {289, 11240, 11253, {11266, 11281, 11302, 11317, 11330, 11343, 10761}, {421, 426, 11358, 436, 11363, 446, 451}, {456, 459, 11368, 465, 468, 459, 465}, {11371, 11388, 11397, 11412, 521, 11429, 11444, 11457, 11472, 11489, 11510, 11527, 0}, {11542, 11559, 11572, 11589, 8816, 11608, 11623, 11636, 11649, 11664, 11687, 11706, 0}, {11719, 11726, 11733, 11740, 521, 11747, 11754, 11761, 11768, 11775, 11782, 11789, 0}, {11719, 11726, 11733, 11740, 521, 11747, 11754, 11761, 11768, 11775, 11782, 11789, 0}, 0, 0, 691, 187, {2696,0,0,0,0,0,0,0,0,0,0,0,0,0},{3520,0,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{11796,0,0,0,0,0,0,0}},
+       {1812, 11810, 11815, {11820, 11828, 11839, 11845, 11851, 11860, 1876}, {9045, 9049, 2287, 11866, 9061, 9066, 11870}, {9074, 9076, 11874, 9080, 9082, 9076, 9080}, {2310, 2317, 9483, 2331, 2337, 11876, 11882, 11888, 2358, 2368, 2376, 2385, 0}, {2310, 2317, 9483, 2331, 2337, 11876, 11882, 11888, 2358, 2368, 2376, 2385, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, 0, 1, 5812, 187, {11899,6118,0,0,0,0,0,0,0,0,0,0,0,0},{11911,11931,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 11945, 11950, {11955, 11966, 11977, 11988, 11999, 12010, 12016}, {1909, 9701, 2302, 4413, 1907, 10586, 2308}, {1909, 9701, 2302, 4413, 1907, 10586, 2308}, {12025, 12033, 12042, 12049, 4848, 12056, 12062, 2351, 2358, 12068, 2376, 12077, 0}, {12025, 12033, 12042, 12049, 4848, 12056, 12062, 2351, 2358, 12068, 2376, 12077, 0}, {12087, 12092, 12042, 2406, 4848, 12056, 12062, 2418, 12098, 2426, 2430, 12103, 0}, {12087, 12092, 12042, 2406, 4848, 12056, 12062, 2418, 12098, 2426, 2430, 12103, 0}, 2, 1, 691, 187, {2154,6118,0,0,0,0,0,0,0,0,0,0,0,0},{2719,2194,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{12108,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 12116, 12133, {12147, 12158, 12168, 12177, 12188, 12200, 12211}, {12221, 12224, 12227, 12230, 12233, 12236, 12239}, {1914, 1909, 2304, 2302, 7600, 1909, 1914}, {12242, 12252, 12263, 12269, 12278, 12284, 12292, 12300, 12308, 12319, 12328, 12338, 0}, {12348, 12358, 2325, 12369, 12378, 12384, 12392, 12400, 12408, 12419, 12428, 12438, 0}, {12448, 12454, 12263, 12460, 12278, 12465, 12471, 12477, 4128, 12482, 4139, 12487, 0}, {12448, 12454, 12263, 12460, 12278, 12465, 12471, 12477, 4128, 12482, 4139, 12487, 0}, 0, 1, 691, 187, {2154,12492,0,0,0,0,0,0,0,0,0,0,0,0},{12512,12539,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12560,0,0,0,0,0,0,0}},
+       {3551, 12576, 11815, {12582, 12594, 12606, 12618, 12632, 12647, 12660}, {12674, 12677, 12680, 12683, 12686, 12689, 9471}, {1914, 1909, 12692, 2302, 4413, 1909, 9480}, {12694, 12701, 12709, 12715, 12724, 12733, 12743, 12749, 12760, 12770, 12777, 12787, 0}, {12694, 12701, 12709, 12715, 12724, 12733, 12743, 12749, 12760, 12770, 12777, 12787, 0}, {12795, 12801, 12806, 12811, 12816, 12821, 12828, 12834, 12840, 12846, 12852, 12859, 0}, {12795, 12801, 12806, 12811, 12816, 12821, 12828, 12834, 12840, 12846, 12852, 12859, 0}, 2, 1, 2438, 187, {1556,0,0,0,0,0,0,0,0,0,0,0,0,0},{12866,12894,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {1, 12926, 12938, {12950, 12965, 12980, 12995, 13012, 13031, 13042}, {13053, 13060, 13067, 13074, 13081, 13088, 13095}, {0, 0, 0, 0, 0, 0, 0}, {13102, 13113, 8644, 13126, 8666, 13137, 13144, 8691, 13151, 13166, 13179, 13190, 0}, {13102, 13113, 8644, 13126, 8666, 13137, 13144, 8691, 13151, 13166, 13179, 13190, 0}, {13203, 13210, 13217, 13224, 8666, 13137, 13144, 13231, 13238, 13245, 13252, 13259, 0}, {13203, 13210, 13217, 13224, 8666, 13137, 13144, 13231, 13238, 13245, 13252, 13259, 0}, 0, 1, 691, 187, {2154,2696,8015,2440,189,0,0,0,0,0,0,0,0,0},{13266,13284,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 13303, 13323, {13340, 13353, 13366, 13382, 13399, 13414, 13423}, {13340, 13353, 13366, 13382, 13399, 13414, 13423}, {13432, 13435, 13438, 13441, 13444, 13447, 13450}, {13453, 13466, 13477, 13486, 13497, 13502, 13511, 13522, 13529, 13544, 13555, 13568, 0}, {13581, 13596, 13477, 13486, 13609, 13502, 13616, 13522, 13529, 13544, 13555, 13568, 0}, {13453, 13466, 13477, 13486, 13497, 13502, 13511, 13522, 13529, 13544, 13555, 13568, 0}, {13453, 13466, 13477, 13486, 13497, 13502, 13511, 13522, 13529, 13544, 13555, 13568, 0}, 0, 6, 185, 187, {198,189,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 13629, 13632, {13635, 13648, 13658, 13667, 13677, 13688, 13699}, {13711, 13714, 13719, 13724, 13729, 13734, 13739}, {13711, 13744, 13747, 13750, 13753, 13756, 13759}, {13762, 13771, 13780, 13789, 13798, 13807, 13816, 13825, 13834, 13843, 13853, 13863, 0}, {13873, 13882, 13891, 13900, 13909, 13918, 13927, 13936, 13945, 13954, 13964, 13974, 0}, {13984, 13990, 13996, 14002, 14008, 14014, 14020, 14026, 14032, 14038, 14045, 14052, 0}, {13984, 13990, 13996, 14002, 14008, 14014, 14020, 14026, 14032, 14038, 14045, 14052, 0}, 0, 1, 185, 187, {198,189,2451,2440,1556,0,0,0,0,0,0,0,0,0},{5455,0,0,0,0,0,0,0,0,0},{3532,242,843,251,0,0,0,0,0,0,0,0},{3540,257,848,269,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 14059, 14083, {14107, 14120, 14141, 14160, 14181, 14200, 14213}, {14224, 14231, 14238, 14245, 14252, 14259, 14266}, {14273, 14276, 14276, 14279, 14282, 14285, 14290}, {14293, 14308, 14323, 14332, 14343, 14354, 14367, 14380, 14395, 14414, 14433, 14450, 0}, {14469, 14486, 14503, 14514, 14527, 14540, 14555, 14570, 14587, 14608, 14629, 14648, 0}, {14669, 14676, 14683, 14690, 14697, 14704, 14711, 14718, 14725, 14732, 14739, 14746, 0}, {14669, 14676, 14683, 14690, 14697, 14704, 14711, 14718, 14725, 14732, 14739, 14746, 0}, 0, 1, 691, 187, {2154,2696,14753,198,14763,3490,1556,0,0,0,0,0,0,0},{3808,3502,10640,5455,14774,14785,14797,14814,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {14832, 14838, 14852, 14875, 14889, 14905, 14912}, {14921, 14924, 14929, 14935, 14939, 7600, 14944}, {6540, 6528, 6530, 6532, 6534, 6536, 6538}, {14948, 14955, 10132, 14962, 3668, 14968, 14974, 14980, 14987, 14996, 15004, 15011, 0}, {15018, 15025, 15032, 15037, 15043, 15047, 15052, 15057, 15064, 15073, 15081, 15088, 0}, {15095, 7999, 2402, 2406, 15043, 15099, 15103, 15107, 15111, 2426, 15115, 15119, 0}, {15095, 7999, 2402, 2406, 15043, 15099, 15103, 15107, 15111, 2426, 15115, 15119, 0}, 0, 1, 691, 187, {2154,1129,0,0,0,0,0,0,0,0,0,0,0,0},{15123,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {15141, 15149, 15160, 15170, 15181, 15190, 15199}, {15209, 15213, 15217, 15221, 15225, 15229, 15233}, {15237, 12692, 12692, 12692, 2304, 2304, 2308}, {15239, 15249, 15257, 15265, 15273, 15281, 15288, 15296, 15304, 15311, 15317, 15324, 0}, {15332, 15343, 15352, 15361, 15370, 15379, 15387, 15396, 15405, 15413, 15420, 15428, 0}, {15437, 15442, 4795, 15447, 15452, 15457, 15462, 15467, 15472, 15477, 15482, 15487, 0}, {15437, 15442, 4795, 15447, 15452, 15457, 15462, 15467, 15472, 15477, 15482, 15487, 0}, 2, 1, 185, 187, {1545,15492,0,0,0,0,0,0,0,0,0,0,0,0},{15503,15530,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{15551,0,0,0,0,0,0,0}},
+       {289, 15570, 15591, {15608, 331, 352, 8513, 15621, 15638, 15649}, {15662, 15670, 15678, 15684, 15692, 15700, 15708}, {456, 459, 462, 465, 468, 459, 465}, {15716, 484, 501, 510, 15731, 15738, 15747, 542, 555, 574, 591, 606, 0}, {15716, 484, 501, 510, 15731, 15738, 15747, 542, 555, 574, 591, 606, 0}, {15756, 15764, 15772, 639, 15731, 15780, 15788, 647, 655, 665, 673, 683, 0}, {15756, 15764, 15772, 639, 15731, 15780, 15788, 647, 655, 665, 673, 683, 0}, 0, 1, 691, 187, {15796,0,0,0,0,0,0,0,0,0,0,0,0,0},{10640,5455,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{15806,0,0,0,0,0,0,0}},
+       {3551, 0, 0, {15822, 15829, 15840, 15849, 15858, 15865, 15876}, {15886, 15890, 15894, 15898, 15902, 15905, 15909}, {0, 0, 0, 0, 0, 0, 0}, {15913, 15923, 15932, 15940, 15949, 15962, 15974, 15981, 15988, 15995, 16005, 16017, 0}, {15913, 15923, 15932, 15940, 15949, 15962, 15974, 15981, 15988, 15995, 16005, 16017, 0}, {16030, 16034, 16038, 16042, 16046, 16050, 16054, 16058, 16062, 16066, 16070, 16074, 0}, {16030, 16034, 16038, 16042, 16046, 16050, 16054, 16058, 16062, 16066, 16070, 16074, 0}, 0, 0, 2438, 187, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{16078,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {3551, 0, 0, {16108, 16113, 16119, 16129, 16141, 16149, 16160}, {16169, 16173, 16177, 16181, 16185, 16189, 16193}, {0, 0, 0, 0, 0, 0, 0}, {16197, 16207, 16217, 16224, 16231, 2598, 16236, 16243, 16250, 16259, 16267, 16275, 0}, {16197, 16207, 16217, 16224, 16231, 2598, 16236, 16243, 16250, 16259, 16267, 16275, 0}, {2651, 2655, 15909, 16283, 16287, 2668, 2672, 16291, 2680, 2684, 2688, 16295, 0}, {2651, 2655, 15909, 16283, 16287, 2668, 2672, 16291, 2680, 2684, 2688, 16295, 0}, 0, 0, 2438, 187, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{16078,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {16299, 16305, 16316, 16129, 16141, 16149, 16160}, {16326, 16330, 16334, 16181, 16185, 16189, 16193}, {1914, 2300, 16338, 2302, 1914, 5644, 2300}, {16340, 16350, 16361, 16368, 16377, 16383, 16389, 16397, 16405, 16416, 16426, 16435, 0}, {16444, 16207, 16453, 16459, 16231, 2598, 16236, 16243, 16466, 16259, 16267, 16275, 0}, {2651, 2655, 16476, 2664, 16287, 2668, 2672, 16291, 2680, 2684, 2688, 16295, 0}, {2651, 2655, 16476, 2664, 16287, 2668, 2672, 16291, 2680, 2684, 2688, 16295, 0}, 0, 0, 185, 187, {3711,16480,0,0,0,0,0,0,0,0,0,0,0,0},{3757,3776,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 16492, 16496, {16500, 16507, 16515, 16523, 16532, 16542, 16549}, {2544, 16558, 2550, 16561, 2556, 16564, 2562}, {1914, 2300, 2565, 3643, 2565, 3927, 1914}, {16567, 16576, 16586, 2588, 10611, 16592, 16598, 16604, 2615, 2625, 2633, 10623, 0}, {16567, 16576, 16586, 2588, 10611, 16592, 16598, 16604, 2615, 2625, 2633, 10623, 0}, {2651, 2655, 3699, 2664, 10611, 2668, 2672, 2676, 2680, 2684, 2688, 10636, 0}, {2651, 2655, 3699, 2664, 10611, 2668, 2672, 2676, 2680, 2684, 2688, 10636, 0}, 0, 0, 2438, 187, {1556,9951,0,0,0,0,0,0,0,0,0,0,0,0},{10640,5455,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {16613, 16629, 16654, 16682, 16710, 16738, 16766}, {16785, 16795, 16805, 16815, 16825, 16835, 16845}, {16855, 16859, 16863, 16859, 16867, 16871, 16875}, {16879, 16901, 16929, 16945, 16964, 16980, 16999, 17018, 17040, 17071, 17099, 17124, 0}, {16879, 16901, 16929, 16945, 16964, 16980, 16999, 17018, 17040, 17071, 17099, 17124, 0}, {17152, 17162, 17172, 17182, 17192, 17202, 17212, 17222, 17232, 17242, 17252, 17262, 0}, {17152, 17162, 17172, 17182, 17192, 17202, 17212, 17222, 17232, 17242, 17252, 17262, 0}, 0, 1, 691, 187, {2154,17272,0,0,0,0,0,0,0,0,0,0,0,0},{222,3808,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {3551, 17284, 17289, {5897, 17294, 17305, 17315, 17325, 17335, 17349}, {17361, 17365, 17370, 17375, 17379, 17384, 17389}, {1914, 2300, 2302, 2300, 5644, 2306, 2308}, {2310, 2317, 4837, 6042, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2310, 2317, 4837, 6042, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, 2, 1, 2438, 187, {2440,0,0,0,0,0,0,0,0,0,0,0,0,0},{5508,6118,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {1, 17393, 17409, {17419, 17438, 17457, 17479, 17498, 17520, 17545}, {17564, 17574, 17584, 17597, 17607, 17620, 17636}, {17646, 17650, 17657, 17664, 17671, 17678, 17685}, {17689, 17705, 17724, 17740, 17759, 17766, 17776, 17792, 17808, 17827, 17849, 17865, 0}, {17689, 17705, 17724, 17740, 17759, 17766, 17776, 17792, 17808, 17827, 17849, 17865, 0}, {17884, 17891, 17724, 17901, 17759, 17766, 17917, 17930, 17937, 17950, 17966, 17976, 0}, {17884, 17891, 17724, 17901, 17759, 17766, 17917, 17930, 17937, 17950, 17966, 17976, 0}, 0, 0, 2438, 187, {2440,2451,4157,8015,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {17989, 18004, 18007, {18010, 18019, 18028, 18038, 18048, 18058, 18070}, {18078, 18083, 18087, 18091, 18095, 18100, 18105}, {18109, 2302, 2302, 9701, 18109, 18112, 1914}, {18115, 18122, 18127, 2588, 18133, 18139, 18146, 18152, 18160, 18170, 18178, 18187, 0}, {18115, 18122, 18127, 2588, 18133, 18139, 18146, 18152, 18160, 18170, 18178, 18187, 0}, {2651, 18197, 3699, 2664, 18201, 18205, 18210, 18214, 18218, 18222, 2688, 18226, 0}, {2651, 18197, 3699, 2664, 18201, 18205, 18210, 18214, 18218, 18222, 2688, 18226, 0}, 0, 0, 185, 187, {198,9951,0,0,0,0,0,0,0,0,0,0,0,0},{18231,18257,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{18277,0,0,0,0,0,0,0}},
+       {3551, 18295, 18300, {18305, 18317, 18328, 18342, 18354, 18364, 18374}, {18385, 18390, 18395, 18400, 18405, 18410, 18415}, {1914, 3927, 2300, 6216, 2565, 16338, 2308}, {18420, 18437, 18450, 18464, 18477, 18490, 18503, 18517, 18529, 18543, 18557, 18571, 0}, {18420, 18437, 18450, 18464, 18477, 18490, 18503, 18517, 18529, 18543, 18557, 18571, 0}, {18584, 18591, 18596, 18601, 18605, 18610, 18615, 18620, 18625, 18632, 18637, 18643, 0}, {18584, 18591, 18596, 18601, 18605, 18610, 18615, 18620, 18625, 18632, 18637, 18643, 0}, 2, 1, 2438, 187, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{16078,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {19797, 19806, 19815, 19823, 19832, 19841, 19848}, {19857, 19860, 19863, 19866, 19869, 19873, 19876}, {6530, 6532, 6534, 6536, 12692, 15237, 6528}, {10588, 10596, 19879, 19885, 10611, 2598, 18989, 19892, 16250, 19899, 16267, 19906, 0}, {10588, 10596, 19879, 19885, 10611, 2598, 18989, 19892, 16250, 19899, 16267, 19906, 0}, {2651, 2655, 18985, 2664, 10611, 2668, 2672, 19914, 2680, 2684, 2688, 10636, 0}, {2651, 2655, 18985, 2664, 10611, 2668, 2672, 19914, 2680, 2684, 2688, 10636, 0}, 0, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {19918, 19928, 19937, 19946, 19957, 19967, 19972}, {19979, 19985, 19990, 19995, 20000, 10578, 20004}, {20009, 2565, 1914, 7600, 1909, 3925, 1914}, {14948, 14955, 10132, 14962, 3668, 20011, 20016, 20021, 14987, 14996, 15004, 15011, 0}, {14948, 14955, 10132, 14962, 3668, 20011, 20016, 20021, 14987, 14996, 15004, 15011, 0}, {20028, 20033, 3699, 2664, 3668, 20011, 20016, 20037, 10562, 2684, 20041, 20046, 0}, {20028, 20033, 3699, 2664, 3668, 20011, 20016, 20037, 10562, 2684, 20041, 20046, 0}, 0, 1, 185, 187, {1545,15492,0,0,0,0,0,0,0,0,0,0,0,0},{20050,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {289, 20069, 20097, {20119, 20138, 20157, 20182, 20201, 20235, 20260}, {20279, 20289, 20299, 20315, 20325, 20350, 20366}, {20376, 20380, 20387, 20391, 20398, 20405, 20412}, {20416, 20444, 20478, 20494, 20513, 20520, 20530, 20546, 20562, 20593, 20615, 20637, 0}, {20416, 20444, 20478, 20494, 20513, 20520, 20530, 20546, 20562, 20593, 20615, 20637, 0}, {20416, 20444, 20478, 20494, 20513, 20520, 20530, 20546, 20562, 20593, 20615, 20637, 0}, {20416, 20444, 20478, 20494, 20513, 20520, 20530, 20546, 20562, 20593, 20615, 20637, 0}, 0, 0, 2438, 691, {2451,4157,2440,2451,2440,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{4246,4241,20662,20671,0,0,0,0,0,0,0,0},{4268,4260,20679,20691,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 1820, 1823, {21189, 21208, 21227, 21249, 21268, 21290, 21315}, {21334, 21344, 21354, 21367, 21377, 21390, 21406}, {21416, 21420, 21427, 21434, 21441, 21448, 21455}, {21459, 21487, 21515, 21531, 21550, 21557, 21567, 21583, 21599, 21627, 21649, 21671, 0}, {21459, 21487, 21515, 21531, 21550, 21557, 21567, 21583, 21599, 21627, 21649, 21671, 0}, {21696, 21715, 21515, 21531, 21550, 21557, 21567, 21734, 21741, 21757, 21773, 21783, 0}, {21696, 21715, 21515, 21531, 21550, 21557, 21567, 21734, 21741, 21757, 21773, 21783, 0}, 0, 0, 2438, 187, {2451,4157,8015,2440,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 8022, 21796, {21799, 21818, 21837, 21862, 21881, 21903, 21928}, {21947, 21957, 21967, 21983, 21993, 22006, 22022}, {22032, 22036, 22043, 22047, 22054, 22061, 22068}, {22072, 22094, 22125, 22147, 22166, 22173, 22183, 22199, 22215, 22246, 22268, 22290, 0}, {22072, 22094, 22125, 22147, 22166, 22173, 22183, 22199, 22215, 22246, 22268, 22290, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, 0, 0, 2438, 187, {2451,4157,8015,2440,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {289, 22315, 22340, {22365, 22384, 22406, 22431, 22447, 22469, 22488}, {22498, 22505, 22512, 22519, 22526, 22533, 22540}, {22498, 22505, 22512, 22519, 22526, 22533, 22540}, {22544, 22560, 22585, 22604, 22623, 22630, 22643, 22656, 22675, 22706, 22731, 22753, 0}, {22544, 22560, 22585, 22604, 22623, 22630, 22643, 22778, 22675, 22706, 22731, 22753, 0}, {22797, 22805, 22819, 22833, 22623, 22630, 22643, 22844, 22852, 22866, 22877, 22885, 0}, {22797, 22805, 22819, 22833, 22623, 22630, 22643, 22844, 22852, 22866, 22877, 22885, 0}, 0, 0, 2438, 187, {2440,2451,4157,8015,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {22896, 22918, 22940, 22965, 22987, 23012, 23040}, {23062, 23072, 23082, 23095, 23105, 23118, 23134}, {23144, 23148, 23155, 23159, 23166, 23173, 23180}, {23184, 23200, 23225, 23244, 23266, 23273, 23286, 23299, 23318, 23349, 23374, 23393, 0}, {23184, 23200, 23225, 23244, 23266, 23273, 23418, 23299, 23318, 23349, 23374, 23393, 0}, {23431, 23438, 23225, 23454, 23266, 23273, 23418, 23299, 23470, 23492, 23508, 23518, 0}, {23431, 23438, 23225, 23454, 23266, 23273, 23418, 23299, 23470, 23492, 23508, 23518, 0}, 0, 0, 2438, 187, {2451,4157,8015,2440,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {23534, 23553, 23572, 23594, 23613, 23635, 23660}, {23679, 23689, 23699, 23712, 23722, 23735, 23751}, {23761, 23765, 23772, 23779, 23786, 23793, 23800}, {23804, 23820, 23845, 23864, 23886, 23893, 23906, 23919, 23938, 23966, 23991, 24013, 0}, {23804, 23820, 23845, 23864, 23886, 23893, 23906, 23919, 23938, 23966, 23991, 24013, 0}, {24038, 24046, 24066, 24073, 23886, 24090, 24097, 24105, 24113, 24136, 24153, 24167, 0}, {24038, 24046, 24066, 24073, 23886, 24090, 24097, 24105, 24113, 24136, 24153, 24167, 0}, 0, 0, 2438, 187, {2451,4157,8015,2440,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {24184, 1820, 1823, {24192, 24220, 24254, 24282, 24310, 24341, 24378}, {24406, 24419, 24438, 24454, 24467, 24486, 24505}, {24515, 24522, 24529, 24536, 24543, 24556, 24563}, {24567, 24586, 24614, 24636, 24655, 24668, 24678, 24691, 24716, 24747, 24772, 24788, 0}, {24567, 24586, 24614, 24636, 24655, 24668, 24678, 24691, 24716, 24747, 24772, 24788, 0}, {24807, 24817, 24836, 24846, 24655, 24668, 24678, 24862, 24869, 24894, 24910, 24920, 0}, {24807, 24817, 24836, 24846, 24655, 24668, 24678, 24862, 24869, 24894, 24910, 24920, 0}, 0, 0, 2438, 691, {2451,4157,2696,8015,0,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{4246,4241,20662,20671,0,0,0,0,0,0,0,0},{4268,4260,20679,20691,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {289, 24933, 24961, {24983, 25002, 25021, 25046, 25065, 25099, 25124}, {25143, 20289, 20299, 20315, 25153, 25178, 20366}, {0, 0, 0, 0, 0, 0, 0}, {25194, 25219, 25250, 25266, 20513, 20520, 20530, 25285, 25301, 25332, 25354, 25376, 0}, {25194, 25219, 25250, 25266, 20513, 20520, 20530, 25285, 25301, 25332, 25354, 25376, 0}, {25401, 25414, 25250, 25266, 20513, 20520, 20530, 25433, 25440, 25456, 25472, 25482, 0}, {25401, 25414, 25250, 25266, 20513, 20520, 20530, 25433, 25440, 25456, 25472, 25482, 0}, 0, 0, 2438, 187, {2440,0,0,0,0,0,0,0,0,0,0,0,0,0},{25495,0,0,0,0,0,0,0,0,0},{1722,1730,843,0,0,0,0,0,0,0,0,0},{1739,1750,848,0,0,0,0,0,0},{25514,25522,0,0,0,0,0,0}},
+       {1, 1820, 1823, {17419, 17438, 25532, 17479, 17498, 17520, 17545}, {17564, 17574, 25554, 17597, 17607, 17620, 17636}, {17646, 17650, 17657, 17664, 17671, 17678, 17685}, {25567, 25592, 17724, 25623, 25642, 17766, 25649, 25662, 25678, 25703, 25725, 25753, 0}, {25567, 25592, 17724, 25623, 25642, 17766, 25649, 25662, 25678, 25703, 25725, 25753, 0}, {25775, 25788, 17724, 25807, 25642, 17766, 25649, 25823, 25830, 25849, 25865, 25887, 0}, {25775, 25788, 17724, 25807, 25642, 17766, 25649, 25823, 25830, 25849, 25865, 25887, 0}, 0, 0, 2438, 187, {2440,2451,4157,8015,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {26596, 26620, 26642, {26667, 26695, 26723, 26760, 26791, 26825, 26850}, {26884, 26900, 26916, 26941, 26960, 26982, 26995}, {27017, 27024, 27031, 27038, 27045, 27052, 27056}, {27066, 27100, 27137, 27171, 27205, 27236, 27273, 27310, 27350, 27384, 27418, 27467, 0}, {27066, 27100, 27137, 27171, 27205, 27236, 27273, 27310, 27350, 27384, 27418, 27467, 0}, {27516, 27529, 27542, 27555, 27568, 27581, 27594, 27607, 27620, 27633, 27649, 27665, 0}, {27516, 27529, 27542, 27555, 27568, 27581, 27594, 27607, 27620, 27633, 27649, 27665, 0}, 0, 0, 185, 187, {1518,1527,1536,1567,1556,1545,1585,1578,1592,0,0,0,0,0},{27681,27724,27772,27804,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{27841,1805,0,0,0,0,0,0}},
+       {289, 1820, 1823, {27874, 27883, 27893, 27905, 27918, 27927, 27939}, {27951, 27955, 27960, 27964, 27968, 27972, 27976}, {1914, 27980, 2300, 2300, 15237, 6216, 1914}, {27983, 27990, 27999, 28006, 2594, 28013, 28021, 28032, 28037, 28042, 28049, 28058, 0}, {27983, 27990, 27999, 28006, 2594, 28013, 28021, 28032, 28037, 28042, 28049, 28058, 0}, {28066, 28070, 27960, 28074, 2594, 28078, 28082, 28032, 28037, 28086, 28090, 28095, 0}, {28066, 28070, 27960, 28074, 2594, 28078, 28082, 28032, 28037, 28086, 28090, 28095, 0}, 2, 1, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 28100, 28116, {28132, 28154, 28167, 28186, 28196, 28227, 28243}, {28132, 28154, 28167, 28186, 28196, 28227, 28243}, {6528, 6530, 6532, 6534, 6536, 6538, 6540}, {28256, 28269, 28288, 28301, 28314, 28327, 28346, 28365, 28378, 28394, 28407, 28432, 0}, {28256, 28269, 28288, 28301, 28314, 28327, 28346, 28365, 28378, 28394, 28407, 28432, 0}, {28256, 28269, 28288, 28301, 28314, 28327, 28346, 28365, 28378, 28394, 28407, 28432, 0}, {28256, 28269, 28288, 28301, 28314, 28327, 28346, 28365, 28378, 28394, 28407, 28432, 0}, 0, 0, 185, 187, {189,1556,0,0,0,0,0,0,0,0,0,0,0,0},{3520,9963,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{28445,0,0,0,0,0,0,0}},
+       {289, 28480, 28505, {28530, 28555, 28574, 28602, 28621, 28646, 28665}, {28530, 28555, 28574, 28602, 28621, 28646, 28665}, {28687, 28691, 28695, 28699, 28709, 28713, 28723}, {28727, 28746, 28762, 28775, 28788, 28810, 28829, 28851, 28867, 28883, 28896, 28912, 0}, {28727, 28746, 28762, 28775, 28788, 28810, 28829, 28851, 28867, 28883, 28896, 28912, 0}, {28928, 28937, 28946, 28955, 28964, 28973, 28985, 28994, 29003, 29012, 29021, 29030, 0}, {28928, 28937, 28946, 28955, 28964, 28973, 28985, 28994, 29003, 29012, 29021, 29030, 0}, 0, 0, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{29039,3520,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 7261, 7266, {3833, 29066, 3847, 29071, 29081, 29087, 3880}, {29094, 8298, 3699, 29098, 29103, 29107, 29111}, {2565, 2308, 2300, 2300, 29116, 3927, 1914}, {29118, 29126, 3943, 3949, 29135, 29140, 29146, 3972, 29152, 29161, 29169, 29178, 0}, {29187, 29195, 4032, 1012, 7947, 29204, 29210, 4055, 7964, 7973, 7981, 29216, 0}, {29225, 2655, 3699, 29229, 2594, 29233, 29238, 19914, 18218, 29242, 2688, 3707, 0}, {29225, 2655, 3699, 29229, 2594, 29233, 29238, 19914, 18218, 29242, 2688, 3707, 0}, 2, 1, 185, 187, {198,17272,0,0,0,0,0,0,0,0,0,0,0,0},{5508,5455,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1, 29246, 29258, {29270, 17438, 29298, 17479, 17498, 17520, 17545}, {17564, 17574, 25554, 17597, 17607, 17620, 17636}, {0, 0, 0, 0, 0, 0, 0}, {25567, 25592, 17724, 25623, 25642, 17766, 25649, 29317, 29333, 29361, 25725, 25753, 0}, {25567, 25592, 17724, 25623, 25642, 17766, 25649, 29317, 29333, 29361, 25725, 25753, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, 0, 0, 2438, 187, {2440,2451,4157,8015,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,1730,1722,0,0,0,0,0,0,0,0},{269,848,1750,1739,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {3551, 29383, 29395, {29404, 29420, 29436, 29464, 29480, 29523, 29548}, {29404, 29420, 29576, 29464, 29586, 29608, 29621}, {29631, 29635, 29639, 29643, 29647, 29660, 29667}, {29674, 29693, 29718, 29737, 29762, 29775, 29788, 29801, 29823, 29857, 29882, 29910, 0}, {29674, 29693, 29718, 29737, 29762, 29775, 29788, 29801, 29823, 29857, 29882, 29910, 0}, {29938, 29945, 29955, 29737, 29762, 29775, 29788, 29968, 29978, 29991, 30001, 30014, 0}, {29938, 29945, 29955, 29737, 29762, 29775, 29788, 29968, 29978, 29991, 30001, 30014, 0}, 0, 1, 2438, 691, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{16078,16096,0,0,0,0,0,0,0,0},{20671,251,0,0,0,0,0,0,0,0,0,0},{20691,269,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {3551, 30027, 30037, {30050, 30060, 30067, 30080, 30090, 30100, 30110}, {30050, 30060, 30120, 30080, 30090, 30100, 30110}, {30130, 30134, 30138, 30142, 30146, 30150, 30154}, {30158, 30174, 30190, 30200, 30213, 30220, 30227, 30237, 30250, 30269, 30285, 30301, 0}, {30158, 30174, 30190, 30200, 30213, 30220, 30227, 30237, 30250, 30317, 30285, 30301, 0}, {30336, 30346, 30190, 30356, 30213, 30220, 30227, 30366, 30376, 30386, 30396, 30406, 0}, {30336, 30346, 30190, 30356, 30213, 30220, 30227, 30366, 30376, 30386, 30396, 30406, 0}, 0, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1, 30651, 30692, {30733, 30752, 30771, 30796, 30815, 30837, 30862}, {30881, 17574, 30891, 17597, 30907, 17620, 17636}, {30920, 17650, 30924, 17664, 30928, 17678, 17685}, {17689, 30935, 17724, 30963, 25642, 30982, 17776, 30992, 31008, 31039, 31061, 31086, 0}, {17689, 30935, 17724, 30963, 25642, 30982, 17776, 30992, 31008, 31039, 31061, 31086, 0}, {17689, 30935, 17724, 30963, 25642, 30982, 17776, 30992, 31008, 31039, 31061, 31086, 0}, {17689, 30935, 17724, 30963, 25642, 30982, 17776, 30992, 31008, 31039, 31061, 31086, 0}, 0, 0, 185, 187, {3711,3720,3727,3736,1599,1556,3747,0,0,0,0,0,0,0},{31111,31131,222,10501,0,0,0,0,0,0},{3532,242,843,251,0,0,0,0,0,0,0,0},{3540,257,848,269,0,0,0,0,0},{25522,0,0,0,0,0,0,0}},
+       {289, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {31145, 31152, 31161, 31176, 31187, 31196, 31203, 31210, 31217, 31228, 31241, 31254, 0}, {31145, 31152, 31161, 31176, 31187, 31196, 31203, 31210, 31217, 31228, 31241, 31254, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, 0, 6, 185, 187, {1518,1556,0,0,0,0,0,0,0,0,0,0,0,0},{3520,4935,0,0,0,0,0,0,0,0},{843,0,0,0,0,0,0,0,0,0,0,0},{848,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {31259, 31266, 31272, 31279, 31290, 31298, 31307}, {31314, 8298, 3699, 31318, 31322, 31326, 10582}, {2308, 2308, 2300, 2300, 5644, 16338, 1914}, {3929, 31330, 31338, 3949, 3955, 31344, 31350, 3972, 31356, 31366, 31374, 31384, 0}, {3929, 31330, 31338, 3949, 3955, 31344, 31350, 3972, 31356, 31366, 31374, 31384, 0}, {31394, 31398, 3699, 29229, 3668, 31402, 31406, 19914, 18218, 2684, 31410, 16295, 0}, {31394, 31398, 3699, 29229, 3668, 31402, 31406, 19914, 18218, 2684, 31410, 16295, 0}, 0, 0, 185, 187, {3711,16480,0,0,0,0,0,0,0,0,0,0,0,0},{3757,3776,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 0, 0, {31414, 31421, 31429, 31436, 31443, 31451, 31459}, {31466, 31469, 31472, 31475, 31478, 31481, 31484}, {2308, 2308, 2302, 2308, 12692, 3925, 12692}, {31487, 31495, 31505, 31511, 31519, 31524, 31529, 31534, 31541, 19899, 31549, 31557, 0}, {31487, 31495, 31505, 31511, 31519, 31524, 31529, 31534, 31541, 19899, 31549, 31557, 0}, {2651, 31565, 3699, 31569, 3668, 30620, 30624, 31573, 3639, 2684, 31577, 16295, 0}, {2651, 31565, 3699, 31569, 3668, 30620, 30624, 31573, 3639, 2684, 31577, 16295, 0}, 0, 0, 185, 187, {1120,17272,0,0,0,0,0,0,0,0,0,0,0,0},{3789,3808,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 31581, 31592, {31602, 31620, 31635, 31657, 31670, 31684, 31701}, {31725, 31733, 31738, 31657, 31670, 31750, 31757}, {0, 0, 0, 0, 0, 0, 0}, {31771, 31793, 31809, 31829, 31843, 31860, 31875, 31892, 31906, 31919, 31938, 31952, 0}, {31771, 31793, 31809, 31829, 31843, 31860, 31875, 31892, 31906, 31919, 31938, 31952, 0}, {31971, 31986, 31995, 32008, 32015, 32025, 32033, 32043, 32050, 32056, 32068, 32075, 0}, {31971, 31986, 31995, 32008, 32015, 32025, 32033, 32043, 32050, 32056, 32068, 32075, 0}, 0, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 0, 0, {32087, 32095, 15840, 15849, 15858, 32106, 32116}, {16326, 15890, 15894, 15898, 15902, 16189, 32125}, {0, 0, 0, 0, 0, 0, 0}, {32129, 32138, 32148, 32156, 10611, 3672, 32164, 32170, 32179, 32188, 32197, 32206, 0}, {32129, 32138, 32148, 32156, 10611, 3672, 32164, 32170, 32179, 32188, 32197, 32206, 0}, {2651, 2655, 15909, 32215, 10611, 2668, 2672, 19914, 18218, 2684, 32219, 16295, 0}, {2651, 2655, 15909, 32215, 10611, 2668, 2672, 19914, 18218, 2684, 32219, 16295, 0}, 0, 0, 2438, 187, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{16078,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {32223, 32236, 32241, {32246, 32253, 32268, 32282, 32298, 32313, 32329}, {6212, 32344, 2402, 32348, 32352, 32356, 32360}, {1914, 12692, 2300, 1909, 1914, 2302, 12692}, {7350, 7358, 32364, 32371, 32378, 2341, 2346, 32383, 32393, 32404, 32413, 32423, 0}, {7350, 7358, 32364, 32371, 32378, 2341, 2346, 32383, 32393, 32404, 32413, 32423, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, 0, 0, 2438, 187, {2440,2451,1556,2460,0,0,0,0,0,0,0,0,0,0},{32433,2194,11931,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 32452, 32457, {32462, 32478, 32486, 32494, 32503, 32515, 32525}, {32535, 32541, 32547, 32551, 32555, 32563, 3639}, {0, 0, 0, 0, 0, 0, 0}, {32570, 32583, 32597, 32606, 32612, 32616, 32621, 32629, 16250, 32642, 16267, 16275, 0}, {32570, 32583, 32597, 32606, 32612, 32616, 32621, 32629, 16250, 32642, 16267, 16275, 0}, {32651, 2655, 32655, 16283, 32612, 32659, 2672, 32663, 2680, 32671, 2688, 16295, 0}, {32651, 2655, 32655, 16283, 32612, 32659, 2672, 32663, 2680, 32671, 2688, 16295, 0}, 0, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {32677, 32700, 32707, {32714, 32724, 32734, 32744, 32754, 32764, 32774}, {32784, 32791, 32798, 32805, 32812, 32819, 32826}, {32833, 32837, 32841, 32845, 32849, 32853, 32857}, {32861, 32868, 32875, 32882, 32889, 32896, 32903, 32910, 32917, 32924, 32931, 32941, 0}, {32861, 32868, 32875, 32882, 32889, 32896, 32903, 32910, 32917, 32924, 32931, 32941, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, {6528, 6530, 6532, 6534, 6536, 6538, 6540, 6542, 6544, 6546, 6549, 6552, 0}, 0, 0, 185, 187, {1518,1527,1536,1567,1556,1545,0,0,0,0,0,0,0,0},{32951,32975,33005,33035,33052,0,0,0,0,0},{1722,843,251,0,0,0,0,0,0,0,0,0},{1739,848,269,0,0,0,0,0,0},{33075,1805,0,0,0,0,0,0}},
+       {289, 0, 0, {27951, 8298, 33092, 33099, 33109, 33114, 33121}, {33128, 6196, 33132, 4800, 33137, 33142, 33147}, {4392, 33152, 33155, 33158, 33161, 33164, 33167}, {33170, 33177, 33092, 33188, 33194, 33198, 33207, 33214, 33219, 33228, 33233, 33236, 0}, {33170, 33177, 33092, 33188, 33194, 33198, 33207, 33214, 33219, 33228, 33233, 33236, 0}, {33242, 33246, 33253, 28074, 33194, 33258, 33263, 33214, 33268, 33228, 33233, 33273, 0}, {33242, 33246, 33253, 28074, 33194, 33258, 33263, 33214, 33268, 33228, 33233, 33273, 0}, 2, 1, 2438, 187, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{16078,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {33430, 33446, 33451, {33456, 33481, 33510, 33535, 33548, 33563, 33580}, {33595, 33600, 33605, 33610, 33615, 33620, 8599}, {19210, 19210, 33625, 8610, 8613, 19210, 8610}, {33628, 33647, 33662, 33684, 33704, 33720, 33736, 33750, 33776, 33800, 33817, 33834, 0}, {33628, 33647, 33662, 33684, 33704, 33720, 33736, 33750, 33776, 33800, 33817, 33834, 0}, {33851, 33860, 33869, 33883, 33897, 33909, 33921, 33931, 33947, 33961, 33968, 33975, 0}, {33851, 33860, 33869, 33883, 33897, 33909, 33921, 33931, 33947, 33961, 33968, 33975, 0}, 0, 1, 691, 187, {2154,4724,1556,33982,33992,0,0,0,0,0,0,0,0,0},{34005,34040,34069,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{34104,0,0,0,0,0,0,0}},
+       {3551, 0, 0, {34120, 34132, 34143, 34155, 34167, 34177, 34189}, {34204, 34209, 34214, 34219, 34224, 34229, 34234}, {0, 0, 0, 0, 0, 0, 0}, {34239, 34248, 34260, 34268, 34273, 34283, 34290, 34299, 34306, 34312, 34321, 34332, 0}, {34239, 34248, 34260, 34268, 34273, 34283, 34290, 34299, 34306, 34312, 34321, 34332, 0}, {34340, 34345, 34350, 34355, 34360, 34365, 34370, 34224, 34375, 34380, 34385, 34390, 0}, {34340, 34345, 34350, 34355, 34360, 34365, 34370, 34224, 34375, 34380, 34385, 34390, 0}, 0, 0, 185, 187, {1545,15492,0,0,0,0,0,0,0,0,0,0,0,0},{20050,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {34395, 34406, 34408, {34410, 34423, 34431, 34440, 34450, 34460, 34469}, {34481, 34485, 34489, 34493, 34497, 34501, 34505}, {2565, 2308, 2300, 7600, 12692, 5644, 1914}, {34509, 34523, 34534, 34543, 34554, 34566, 34580, 34592, 34605, 34618, 34630, 34643, 0}, {34509, 34523, 34534, 34543, 34554, 34566, 34580, 34592, 34605, 34618, 34630, 34643, 0}, {34657, 34662, 34668, 34674, 34679, 34685, 34691, 34696, 34702, 34707, 18931, 34713, 0}, {34657, 34662, 34668, 34674, 34679, 34685, 34691, 34696, 34702, 34707, 18931, 34713, 0}, 2, 1, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{34719,34741,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, 0, 6, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1195, 1204, 1211, {1218, 1228, 1238, 1248, 1258, 1268, 1278}, {1288, 1295, 1302, 1309, 1316, 1323, 1330}, {1337, 1341, 1345, 1349, 1353, 1357, 1361}, {1365, 1372, 1379, 1386, 1393, 1400, 1407, 1414, 1421, 1428, 1435, 1445, 0}, {1365, 1372, 1379, 1386, 1393, 1400, 1407, 1414, 1421, 1428, 1435, 1445, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, 0, 0, 185, 187, {1518,1527,1536,1545,1556,1567,1578,1585,1592,1599,0,0,0,0},{1608,1630,1658,1686,1701,0,0,0,0,0},{843,251,1722,1730,0,0,0,0,0,0,0,0},{848,269,1739,1750,0,0,0,0,0},{1762,1778,1791,1805,0,0,0,0}},
+       {35112, 2471, 2477, {2484, 2492, 2499, 2508, 2517, 2528, 2536}, {2544, 2547, 2550, 2553, 2556, 2559, 2562}, {1914, 2300, 2565, 2300, 2565, 2306, 1914}, {2567, 2574, 2582, 2588, 2594, 2598, 2603, 2608, 2615, 2625, 2633, 2642, 0}, {2567, 2574, 2582, 2588, 2594, 2598, 2603, 2608, 2615, 2625, 2633, 2642, 0}, {2651, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, {2651, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, 2, 1, 691, 187, {2154,0,0,0,0,0,0,0,0,0,0,0,0,0},{2719,2194,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 8022, 21796, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 2, 1, 185, 187, {198,189,3483,8015,1556,0,0,0,0,0,0,0,0,0},{5455,3520,3502,10640,0,0,0,0,0,0},{251,843,242,3532,0,0,0,0,0,0,0,0},{269,848,257,3540,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3821, 7261, 7266, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {35121, 6196, 4795, 35126, 35132, 35137, 35141}, {2565, 2308, 2300, 29116, 3925, 3927, 1914}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {35147, 5753, 35151, 1086, 35156, 2410, 2414, 1096, 1100, 1105, 1110, 35160, 0}, {35147, 5753, 35151, 1086, 35156, 2410, 2414, 1096, 1100, 1105, 1110, 35160, 0}, 0, 0, 185, 187, {198,3490,189,4149,3483,2451,1556,0,0,0,0,0,0,0},{4164,4219,0,0,0,0,0,0,0,0},{242,3532,843,251,0,0,0,0,0,0,0,0},{257,3540,848,269,0,0,0,0,0},{4288,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {4733, 4742, 4748, 4754, 4763, 4769, 4778}, {4785, 4790, 4795, 4800, 4805, 4810, 4815}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, 2, 1, 2438, 187, {2451,198,189,2440,0,0,0,0,0,0,0,0,0,0},{4935,3520,0,0,0,0,0,0,0,0},{251,843,4246,4961,4971,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {35165, 1820, 1823, {6130, 6139, 6147, 6156, 6167, 6176, 6185}, {6192, 6196, 2402, 6200, 6204, 6208, 6212}, {2565, 2308, 2300, 2300, 6216, 3927, 1914}, {6218, 6226, 3943, 6235, 6242, 6249, 6256, 3972, 6263, 6273, 6281, 6290, 0}, {6299, 6307, 4032, 6316, 6323, 6330, 6337, 4055, 6344, 6354, 1058, 6362, 0}, {6371, 2398, 2402, 2406, 6375, 6379, 6383, 6387, 6391, 6395, 2430, 6399, 0}, {6371, 2398, 2402, 2406, 6375, 6379, 6383, 6387, 6391, 6395, 2430, 6399, 0}, 2, 1, 691, 187, {2154,14774,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{35173,0,0,0,0,0,0,0}},
+       {289, 7261, 7266, {7271, 7278, 7286, 7294, 7303, 7313, 7321}, {7330, 4395, 7333, 7336, 7339, 7342, 7345}, {7348, 2300, 2565, 3643, 2565, 3927, 7348}, {7350, 7358, 7367, 2331, 7373, 2341, 2346, 7377, 2358, 2368, 2376, 2385, 0}, {7350, 7358, 7367, 2331, 7373, 2341, 2346, 7377, 2358, 2368, 2376, 2385, 0}, {2394, 2398, 7386, 2406, 7373, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 7386, 2406, 7373, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, 2, 1, 185, 187, {14753,4149,2451,2696,7399,1556,0,0,0,0,0,0,0,0},{4935,3747,3520,5498,0,0,0,0,0,0},{843,251,35183,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 35193, 35198, {2217, 9837, 35203, 2240, 2247, 2255, 35210}, {2270, 9865, 35218, 2283, 2287, 2291, 35222}, {1914, 2300, 2302, 2304, 2302, 2306, 2308}, {2310, 2317, 4837, 2331, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2310, 2317, 4837, 2331, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, 2, 1, 691, 187, {2154,6118,0,0,0,0,0,0,0,0,0,0,0,0},{2176,2194,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3821, 7261, 7266, {3833, 7830, 7844, 7857, 7870, 7883, 3880}, {6192, 7895, 7899, 7903, 7907, 7911, 7915}, {2565, 1914, 2302, 7920, 7920, 1914, 1914}, {35226, 35234, 35244, 3949, 29135, 35251, 35257, 3972, 29152, 29161, 29169, 35263, 0}, {35226, 35234, 35244, 3949, 29135, 35251, 35257, 3972, 29152, 29161, 29169, 35263, 0}, {2651, 20033, 3699, 29229, 2594, 2668, 2672, 19914, 18218, 29242, 2688, 2692, 0}, {2651, 20033, 3699, 29229, 2594, 2668, 2672, 19914, 18218, 29242, 2688, 2692, 0}, 2, 1, 185, 187, {198,2154,2440,189,2696,2451,1545,1567,1556,1599,35272,6936,0,0},{4219,4164,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{4288,0,0,0,0,0,0,0}},
+       {289, 9823, 9826, {9829, 9837, 9845, 2240, 2247, 2255, 9852}, {9860, 9865, 9870, 2283, 2287, 2291, 9874}, {1914, 2300, 2302, 2304, 2302, 2306, 2308}, {7350, 7358, 4837, 2331, 2337, 2341, 2346, 9879, 2358, 2368, 2376, 2385, 0}, {7350, 7358, 4837, 2331, 2337, 2341, 2346, 9879, 2358, 2368, 2376, 2385, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 2418, 2422, 2426, 2430, 2434, 0}, 2, 1, 2438, 187, {2440,1129,0,0,0,0,0,0,0,0,0,0,0,0},{4935,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {35281, 35292, 35316, 35346, 35363, 35385, 35394}, {14921, 14924, 14929, 14935, 14939, 7600, 14944}, {6540, 6528, 6530, 6532, 6534, 6536, 6538}, {35405, 35418, 501, 35431, 521, 35442, 35451, 542, 35460, 35477, 35492, 35505, 0}, {35405, 35418, 501, 35431, 521, 35442, 35451, 542, 35460, 35477, 35492, 35505, 0}, {15095, 7999, 2402, 2406, 15043, 15099, 15103, 15107, 15111, 2426, 15115, 15119, 0}, {15095, 7999, 2402, 2406, 15043, 15099, 15103, 15107, 15111, 2426, 15115, 15119, 0}, 0, 1, 691, 187, {2154,2696,8015,189,1556,0,0,0,0,0,0,0,0,0},{3520,5455,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 7261, 7266, {18648, 18662, 18672, 18683, 18697, 18708, 18719}, {18732, 18737, 18742, 18749, 18755, 18761, 18767}, {2565, 2308, 2300, 7600, 2565, 12692, 1914}, {18772, 18780, 18788, 18795, 18804, 18814, 18824, 18830, 18838, 18853, 18871, 18879, 0}, {18772, 18780, 18788, 18795, 18804, 18814, 18824, 18830, 18838, 18853, 18871, 18879, 0}, {18887, 18891, 18788, 18897, 18901, 18906, 18824, 18912, 18917, 18924, 18931, 18936, 0}, {18887, 18891, 18788, 18897, 18901, 18906, 18824, 18912, 18917, 18924, 18931, 18936, 0}, 2, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{4935,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {35518, 35533, 35548, 35563, 35580, 35597, 35606}, {35617, 35624, 35631, 35638, 35645, 19574, 35652}, {35659, 19207, 8610, 8613, 8607, 19204, 19588}, {13102, 13113, 8644, 13126, 8666, 13137, 13144, 8691, 13151, 13166, 13179, 13190, 0}, {13102, 13113, 8644, 13126, 8666, 13137, 13144, 8691, 13151, 13166, 13179, 13190, 0}, {13203, 13210, 13217, 13224, 8666, 13137, 13144, 13231, 13238, 13245, 13252, 13259, 0}, {13203, 13210, 13217, 13224, 8666, 13137, 13144, 13231, 13238, 13245, 13252, 13259, 0}, 0, 1, 185, 187, {1545,15492,0,0,0,0,0,0,0,0,0,0,0,0},{20050,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {1, 20069, 20097, {20119, 20138, 20157, 20182, 20201, 20235, 20260}, {20279, 20289, 20299, 20315, 20325, 20350, 20366}, {20376, 20380, 20387, 20391, 20398, 20405, 20412}, {20416, 20444, 20478, 20494, 20513, 20520, 20530, 20546, 20562, 20593, 20615, 20637, 0}, {20416, 20444, 20478, 20494, 20513, 20520, 20530, 20546, 20562, 20593, 20615, 20637, 0}, {20416, 20444, 20478, 20494, 20513, 20520, 20530, 20546, 20562, 20593, 20615, 20637, 0}, {20416, 20444, 20478, 20494, 20513, 20520, 20530, 20546, 20562, 20593, 20615, 20637, 0}, 0, 5, 2438, 691, {2451,4157,8015,2440,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{4246,4241,20662,20671,0,0,0,0,0,0,0,0},{4268,4260,20679,20691,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, 0, 6, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1195, 1204, 1211, {1218, 1228, 1238, 1248, 1258, 1268, 1278}, {34757, 34764, 34771, 34778, 34785, 34792, 34799}, {1337, 1341, 1345, 1349, 1353, 1357, 1361}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, 0, 0, 185, 187, {1120,3483,189,1578,1599,1518,1545,1556,0,0,0,0,0,0},{1608,6555,1686,1701,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1762,1778,1791,1805,0,0,0,0}},
+       {35112, 2471, 2477, {2484, 2492, 2499, 2508, 2517, 2528, 2536}, {2544, 2547, 2550, 2553, 2556, 2559, 2562}, {1914, 2300, 2565, 2300, 2565, 2306, 1914}, {35791, 2574, 2582, 2588, 2594, 2598, 2603, 2608, 2615, 2625, 2633, 2642, 0}, {35791, 2574, 2582, 2588, 2594, 2598, 2603, 2608, 2615, 2625, 2633, 2642, 0}, {35799, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, {35799, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, 2, 1, 691, 187, {2154,0,0,0,0,0,0,0,0,0,0,0,0,0},{2719,2194,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 185, 187, {14753,4149,3483,1120,189,198,3747,5468,1556,1599,1545,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,843,251,0,0,0,0,0,0,0,0,0},{3540,848,269,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3821, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 2, 1, 185, 187, {198,189,4149,3483,4157,2451,2696,1556,0,0,0,0,0,0},{4164,4192,4219,0,0,0,0,0,0,0},{843,251,4241,4246,4252,0,0,0,0,0,0,0},{848,269,4260,4268,4277,0,0,0,0},{4288,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {4733, 4742, 4748, 4754, 4763, 4769, 4778}, {4785, 4790, 4795, 4800, 4805, 4810, 4815}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, 0, 0, 2438, 187, {1556,6936,2451,35804,189,3490,0,0,0,0,0,0,0,0},{3520,1129,0,0,0,0,0,0,0,0},{251,843,4246,4961,4971,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {35813, 18295, 18300, {35826, 35834, 35842, 35850, 35862, 35871, 35883}, {18385, 18390, 18395, 18400, 18405, 18410, 18415}, {1914, 2300, 2565, 6216, 2565, 16338, 2308}, {18420, 18437, 18450, 18464, 18477, 18490, 18503, 18517, 18529, 18543, 18557, 18571, 0}, {18420, 18437, 18450, 18464, 18477, 18490, 18503, 18517, 18529, 18543, 18557, 18571, 0}, {35894, 35905, 35912, 35920, 35927, 35934, 35941, 35949, 35955, 35963, 35971, 35979, 0}, {35894, 35905, 35912, 35920, 35927, 35934, 35941, 35949, 35955, 35963, 35971, 35979, 0}, 2, 1, 691, 187, {4724,2154,8015,1556,0,0,0,0,0,0,0,0,0,0},{35986,36012,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, 0, 6, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{242,251,0,0,0,0,0,0,0,0,0,0},{257,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1195, 1204, 1211, {1218, 1228, 1238, 1248, 1258, 1268, 1278}, {1288, 1295, 1302, 1309, 1316, 1323, 1330}, {1337, 1341, 1345, 1349, 1353, 1357, 1361}, {1365, 1372, 1379, 1386, 1393, 1400, 1407, 1414, 1421, 1428, 1435, 1445, 0}, {1365, 1372, 1379, 1386, 1393, 1400, 1407, 1414, 1421, 1428, 1435, 1445, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, 0, 0, 185, 187, {1120,3483,189,1578,1599,1518,1545,1556,0,0,0,0,0,0},{1608,6555,1686,34806,0,0,0,0,0,0},{1722,1730,843,251,0,0,0,0,0,0,0,0},{1739,1750,848,269,0,0,0,0,0},{1762,1778,1791,0,0,0,0,0}},
+       {35112, 2471, 2477, {2484, 2492, 2499, 2508, 2517, 2528, 2536}, {2544, 2547, 2550, 2553, 2556, 2559, 2562}, {1914, 2300, 2565, 2300, 2565, 2306, 1914}, {2567, 2574, 2582, 2588, 2594, 2598, 2603, 2608, 2615, 2625, 2633, 2642, 0}, {2567, 2574, 2582, 2588, 2594, 2598, 2603, 2608, 2615, 2625, 2633, 2642, 0}, {2651, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, {2651, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, 2, 1, 691, 187, {2154,0,0,0,0,0,0,0,0,0,0,0,0,0},{2719,2194,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 2438, 187, {1556,198,189,3483,6936,36030,3747,14785,1556,0,0,0,0,0},{3776,31111,36038,6411,0,0,0,0,0,0},{3532,242,251,843,0,0,0,0,0,0,0,0},{3540,257,269,848,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {14753,0,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {35165, 1820, 1823, {4733, 4742, 4748, 4754, 4763, 4769, 4778}, {4785, 4790, 4795, 4800, 4805, 4810, 4815}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, 2, 1, 691, 187, {2154,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{35173,0,0,0,0,0,0,0}},
+       {1812, 1820, 1823, {8986, 8995, 9007, 9014, 9022, 9032, 9038}, {9045, 9049, 9053, 9057, 9061, 9066, 9070}, {9074, 9076, 9078, 9080, 9082, 9076, 9080}, {9085, 9095, 9104, 9112, 9120, 9128, 9135, 9142, 9150, 1993, 9156, 9164, 0}, {9173, 9183, 9192, 9200, 9208, 9216, 9223, 9230, 9239, 7775, 9245, 9255, 0}, {9264, 9268, 9273, 9278, 9282, 7809, 2130, 9286, 9290, 2146, 9294, 2150, 0}, {9264, 9268, 9273, 9278, 9282, 7809, 2130, 9286, 9290, 2146, 9294, 2150, 0}, 0, 1, 691, 187, {9328,36107,0,0,0,0,0,0,0,0,0,0,0,0},{9401,9372,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{36120,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {36131, 36142, 13477, 36153, 36164, 36171, 36180, 36193, 35739, 35752, 35765, 35778, 0}, {36131, 36142, 13477, 36153, 36164, 36171, 36180, 36193, 35739, 35752, 35765, 35778, 0}, {36131, 36142, 13477, 36153, 36164, 36171, 36180, 36193, 35739, 35752, 35765, 35778, 0}, {36131, 36142, 13477, 36153, 36164, 36171, 36180, 36193, 35739, 35752, 35765, 35778, 0}, 0, 6, 2438, 187, {2440,2451,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{843,251,242,0,0,0,0,0,0,0,0,0},{848,269,257,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1195, 1204, 1211, {1218, 1228, 1238, 1248, 1258, 1268, 1278}, {34757, 34764, 34771, 34778, 34785, 34792, 34799}, {1337, 1341, 1345, 1349, 1353, 1357, 1361}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, 0, 0, 185, 187, {1120,3483,189,1578,1599,1518,1545,1556,0,0,0,0,0,0},{1608,36200,36227,2460,1686,34806,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1762,1778,1791,1805,0,0,0,0}},
+       {35112, 2471, 2477, {2484, 2492, 2499, 2508, 2517, 2528, 2536}, {2544, 2547, 2550, 2553, 2556, 2559, 2562}, {1914, 2300, 2565, 2300, 2565, 2306, 1914}, {2567, 2574, 2582, 2588, 2594, 2598, 2603, 2608, 2615, 2625, 2633, 2642, 0}, {2567, 2574, 2582, 2588, 2594, 2598, 2603, 2608, 2615, 2625, 2633, 2642, 0}, {2651, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, {2651, 2655, 2659, 2664, 2594, 2668, 2672, 2676, 2680, 2684, 2688, 2692, 0}, 2, 1, 691, 187, {2154,0,0,0,0,0,0,0,0,0,0,0,0,0},{2719,2194,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {36243, 7261, 7266, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 185, 187, {14753,0,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{36250,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 1, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {4733, 4742, 4748, 4754, 4763, 4769, 4778}, {4785, 4790, 4795, 4800, 4805, 4810, 4815}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, 2, 1, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{4935,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 36260, 36270, {8986, 8995, 9007, 9014, 9022, 9032, 9038}, {9045, 9049, 9053, 9057, 9061, 9066, 9070}, {0, 0, 0, 0, 0, 0, 0}, {2310, 2317, 15032, 2331, 2337, 2341, 2346, 11888, 36278, 36288, 36296, 36305, 0}, {2310, 2317, 15032, 2331, 2337, 2341, 2346, 11888, 36278, 36288, 36296, 36305, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, 0, 1, 691, 187, {9328,36314,0,0,0,0,0,0,0,0,0,0,0,0},{36329,9386,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{36120,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {35662, 35673, 13477, 35686, 36164, 35706, 36350, 36363, 36370, 35752, 36381, 36392, 0}, {35662, 35673, 13477, 35686, 36164, 35706, 36350, 36363, 36370, 35752, 36381, 36392, 0}, {35662, 35673, 13477, 35686, 36164, 35706, 36350, 36363, 36370, 35752, 36381, 36392, 0}, {35662, 35673, 13477, 35686, 36164, 35706, 36350, 36363, 36370, 35752, 36381, 36392, 0}, 0, 6, 2438, 187, {2440,2451,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{843,251,242,0,0,0,0,0,0,0,0,0},{848,269,257,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {36243, 7261, 7266, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 2, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{4935,3520,0,0,0,0,0,0,0,0},{251,3532,0,0,0,0,0,0,0,0,0,0},{269,3540,0,0,0,0,0,0,0},{36250,0,0,0,0,0,0,0}},
+       {36403, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {3736,0,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{36250,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {4733, 4742, 4748, 4754, 4763, 4769, 4778}, {4785, 4790, 4795, 4800, 4805, 4810, 4815}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4820, 4828, 4837, 4842, 4848, 4852, 4857, 4865, 4871, 4881, 1058, 4889, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, {4899, 4905, 4837, 4912, 4848, 4852, 4917, 4865, 4923, 1105, 1110, 4929, 0}, 2, 1, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{4935,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 36260, 36270, {11820, 36411, 9007, 11845, 9022, 9032, 9038}, {9045, 9049, 9053, 11866, 9061, 9066, 9070}, {9074, 9076, 9078, 9080, 9082, 9076, 9080}, {2310, 2317, 15032, 2331, 2337, 2410, 2414, 11888, 36278, 36288, 36296, 36305, 0}, {2310, 2317, 15032, 2331, 2337, 2410, 2414, 11888, 36278, 36288, 36296, 36305, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, 0, 1, 691, 187, {9298,9328,0,0,0,0,0,0,0,0,0,0,0,0},{36329,9386,0,0,0,0,0,0,0,0},{251,4246,0,0,0,0,0,0,0,0,0,0},{269,4268,0,0,0,0,0,0,0},{36120,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {36131, 36142, 13477, 36153, 36164, 36171, 36180, 36193, 35739, 35752, 35765, 35778, 0}, {36131, 36142, 13477, 36153, 36164, 36171, 36180, 36193, 35739, 35752, 35765, 35778, 0}, {36131, 36142, 13477, 36153, 36164, 36171, 36180, 36193, 35739, 35752, 35765, 35778, 0}, {36131, 36142, 13477, 36153, 36164, 36171, 36180, 36193, 35739, 35752, 35765, 35778, 0}, 0, 0, 2438, 187, {2440,2451,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{843,251,242,0,0,0,0,0,0,0,0,0},{848,269,257,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 1820, 1823, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 185, 187, {1545,9951,0,0,0,0,0,0,0,0,0,0,0,0},{10640,5455,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{36250,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {1812, 36422, 36440, {36455, 36468, 36487, 36500, 36515, 36532, 10761}, {36543, 36550, 36557, 36564, 36571, 36578, 36585}, {456, 459, 36592, 465, 468, 459, 465}, {36595, 36608, 501, 510, 15731, 15738, 15747, 542, 36623, 36642, 36657, 36674, 0}, {36595, 36608, 501, 510, 15731, 15738, 15747, 542, 36623, 36642, 36657, 36674, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, 0, 1, 691, 187, {9298,9328,0,0,0,0,0,0,0,0,0,0,0,0},{2194,11931,2719,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, 0, 6, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {36243, 1820, 1823, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{36250,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {24184, 36422, 36440, {36455, 36468, 36487, 36500, 36515, 36532, 10761}, {36543, 36550, 36557, 36564, 36571, 36578, 36585}, {456, 459, 36592, 465, 468, 459, 465}, {36595, 36608, 501, 510, 15731, 15738, 15747, 542, 36623, 36642, 36657, 36674, 0}, {36595, 36608, 501, 510, 15731, 15738, 15747, 542, 36623, 36642, 36657, 36674, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, 0, 1, 691, 187, {4724,8015,2165,2154,36768,2696,36777,1556,0,0,0,0,0,0},{2194,11931,2719,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, 0, 0, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {14753,0,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {1812, 36260, 36270, {11820, 36411, 9007, 11845, 9022, 9032, 9038}, {9045, 9049, 9053, 11866, 9061, 9066, 9070}, {9074, 9076, 9078, 9080, 9082, 9076, 9080}, {2310, 2317, 15032, 2331, 2337, 2410, 2414, 11888, 36278, 36288, 36296, 36305, 0}, {2310, 2317, 15032, 2331, 2337, 2410, 2414, 11888, 36278, 36288, 36296, 36305, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, 0, 1, 691, 691, {9298,9328,0,0,0,0,0,0,0,0,0,0,0,0},{36329,9386,0,0,0,0,0,0,0,0},{4246,0,0,0,0,0,0,0,0,0,0,0},{4268,0,0,0,0,0,0,0,0},{36120,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, 0, 6, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 1820, 1823, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 185, 187, {198,14785,0,0,0,0,0,0,0,0,0,0,0,0},{10640,5455,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{36250,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {14753,1129,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {1812, 36422, 36440, {36455, 36468, 36487, 8513, 36515, 36532, 10761}, {36543, 36550, 36557, 36788, 36571, 36578, 36585}, {456, 459, 36592, 465, 468, 459, 465}, {36595, 36608, 501, 510, 15731, 36719, 36726, 542, 36623, 36642, 36657, 36674, 0}, {36595, 36608, 501, 510, 15731, 36719, 36726, 542, 36623, 36642, 36657, 36674, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, 0, 1, 691, 187, {9328,0,0,0,0,0,0,0,0,0,0,0,0,0},{9372,9386,9401,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{36120,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, 0, 6, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{36250,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{36795,0,0,0,0,0,0,0}},
+       {1812, 36260, 36270, {11820, 36411, 9007, 11845, 9022, 9032, 9038}, {9045, 9049, 9053, 11866, 9061, 9066, 9070}, {9074, 9076, 9078, 9080, 9082, 9076, 9080}, {2310, 2317, 15032, 2331, 2337, 2410, 2414, 11888, 36278, 36288, 36296, 36305, 0}, {2310, 2317, 15032, 2331, 2337, 2410, 2414, 11888, 36278, 36288, 36296, 36305, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, 0, 1, 691, 691, {9298,9328,0,0,0,0,0,0,0,0,0,0,0,0},{36329,9386,0,0,0,0,0,0,0,0},{4246,0,0,0,0,0,0,0,0,0,0,0},{4268,0,0,0,0,0,0,0,0},{36120,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, {34944, 34968, 34977, 34986, 34997, 35006, 35019, 35028, 35033, 35044, 35066, 35090, 0}, 0, 1, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1, 1820, 1823, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 185, 187, {1120,36805,0,0,0,0,0,0,0,0,0,0,0,0},{10640,5455,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{36250,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 1, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {1812, 36422, 36440, {36455, 36468, 36487, 8513, 36515, 36532, 10761}, {36543, 36550, 36557, 36788, 36571, 36578, 36585}, {456, 459, 36592, 465, 468, 459, 465}, {36595, 36608, 501, 510, 15731, 36719, 36726, 542, 36623, 36642, 36657, 36674, 0}, {36595, 36608, 501, 510, 15731, 36719, 36726, 542, 36623, 36642, 36657, 36674, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, 0, 1, 691, 187, {9298,9308,9316,9328,9340,9350,9360,36817,0,0,0,0,0,0},{9372,9386,9401,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{36120,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, 0, 6, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 185, 187, {198,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{36250,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 1, 2438, 187, {2440,0,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{36795,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, 0, 6, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 1, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{843,251,242,3532,0,0,0,0,0,0,0,0},{848,269,257,3540,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, 0, 6, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {1, 34826, 34829, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34832, 34843, 34858, 34875, 34892, 34905, 34918}, {34929, 34932, 34935, 34938, 34941, 13447, 13438}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, {35662, 35673, 13477, 35686, 35697, 35706, 35717, 35728, 35739, 35752, 35765, 35778, 0}, 0, 6, 185, 187, {198,189,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{242,251,843,0,0,0,0,0,0,0,0,0},{257,269,848,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {289, 8022, 21796, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 2438, 187, {2440,2451,4157,8015,1556,0,0,0,0,0,0,0,0,0},{5455,3520,0,0,0,0,0,0,0,0},{251,843,242,0,0,0,0,0,0,0,0,0},{269,848,36829,257,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {289, 8022, 21796, {3558, 3565, 3572, 3580, 3590, 3599, 3606}, {3615, 3619, 3623, 3627, 3631, 3635, 3639}, {1914, 2300, 2302, 3643, 2302, 2306, 1914}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {3645, 3653, 3662, 2588, 3668, 3672, 3677, 2608, 2615, 3682, 2633, 3690, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, {2651, 2655, 3699, 2664, 3668, 2668, 2672, 2676, 2680, 3703, 2688, 3707, 0}, 0, 0, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{3502,3520,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{36250,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{36840,36868,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {36049, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {1120,1129,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{1180,0,0,0,0,0,0,0}},
+       {36403, 872, 878, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {3736,0,0,0,0,0,0,0,0,0,0,0,0,0},{36057,36085,0,0,0,0,0,0,0,0},{3532,251,0,0,0,0,0,0,0,0,0,0},{3540,269,0,0,0,0,0,0,0},{36250,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {3833, 3841, 3847, 3854, 3865, 3872, 3880}, {3888, 3893, 3898, 3903, 3909, 3914, 3919}, {2565, 2308, 2300, 2300, 3925, 3927, 1914}, {3929, 3935, 3943, 3949, 3955, 3960, 3966, 3972, 3979, 3990, 3998, 4008, 0}, {4018, 4024, 4032, 1012, 4038, 4043, 4049, 4055, 4062, 1050, 4073, 4083, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, {4093, 4098, 3898, 4103, 4108, 4113, 4118, 4123, 4128, 4134, 4139, 4144, 0}, 0, 0, 185, 187, {3711,3720,3727,3736,1599,1556,3747,0,0,0,0,0,0,0},{31111,31131,222,10501,0,0,0,0,0,0},{3532,242,843,251,0,0,0,0,0,0,0,0},{3540,257,848,269,0,0,0,0,0},{4288,0,0,0,0,0,0,0}},
+       {24184, 36422, 36440, {36455, 36468, 36487, 36500, 36515, 36532, 10761}, {36543, 36550, 36557, 36564, 36571, 36578, 36585}, {456, 459, 36592, 465, 468, 459, 465}, {36595, 36608, 501, 510, 15731, 15738, 15747, 542, 36623, 36642, 36657, 36674, 0}, {36595, 36608, 501, 510, 15731, 15738, 15747, 542, 36623, 36642, 36657, 36674, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, 0, 1, 691, 187, {4724,8015,2165,2154,36768,2696,36777,1556,0,0,0,0,0,0},{2194,11931,2719,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {1812, 36260, 36270, {8986, 8995, 9007, 9014, 9022, 9032, 9038}, {9045, 9049, 9053, 9057, 9061, 9066, 9070}, {0, 0, 0, 0, 0, 0, 0}, {2310, 2317, 15032, 2331, 2337, 2341, 2346, 11888, 36278, 36288, 36296, 36305, 0}, {2310, 2317, 15032, 2331, 2337, 2341, 2346, 11888, 36278, 36288, 36296, 36305, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, 0, 1, 691, 187, {9328,36314,0,0,0,0,0,0,0,0,0,0,0,0},{36329,9386,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{36120,0,0,0,0,0,0,0}},
+       {1812, 36422, 36440, {36455, 36468, 36487, 8513, 36515, 36532, 10761}, {36543, 36550, 36557, 36788, 36571, 36578, 36585}, {456, 459, 36592, 465, 468, 459, 465}, {36595, 36608, 501, 510, 15731, 36719, 36726, 542, 36623, 36642, 36657, 36674, 0}, {36595, 36608, 501, 510, 15731, 36719, 36726, 542, 36623, 36642, 36657, 36674, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, 0, 1, 691, 187, {9328,0,0,0,0,0,0,0,0,0,0,0,0,0},{9372,9386,9401,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{36120,0,0,0,0,0,0,0}},
+       {1812, 36260, 36270, {11820, 36411, 9007, 11845, 9022, 9032, 9038}, {9045, 9049, 9053, 11866, 9061, 9066, 9070}, {9074, 9076, 9078, 9080, 9082, 9076, 9080}, {2310, 2317, 15032, 2331, 2337, 2410, 2414, 11888, 36278, 36288, 36296, 36305, 0}, {2310, 2317, 15032, 2331, 2337, 2410, 2414, 11888, 36278, 36288, 36296, 36305, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, 0, 1, 691, 691, {9298,9328,0,0,0,0,0,0,0,0,0,0,0,0},{36329,9386,0,0,0,0,0,0,0,0},{4246,0,0,0,0,0,0,0,0,0,0,0},{4268,0,0,0,0,0,0,0,0},{36120,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {35281, 35292, 35316, 35346, 35363, 35385, 35394}, {14921, 14924, 14929, 14935, 14939, 7600, 14944}, {6540, 6528, 6530, 6532, 6534, 6536, 6538}, {35405, 35418, 501, 35431, 521, 35442, 35451, 542, 35460, 35477, 35492, 35505, 0}, {35405, 35418, 501, 35431, 521, 35442, 35451, 542, 35460, 35477, 35492, 35505, 0}, {15095, 7999, 2402, 2406, 15043, 15099, 15103, 15107, 15111, 2426, 15115, 15119, 0}, {15095, 7999, 2402, 2406, 15043, 15099, 15103, 15107, 15111, 2426, 15115, 15119, 0}, 0, 1, 691, 187, {2154,2696,8015,189,1556,0,0,0,0,0,0,0,0,0},{3520,5455,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1195, 1204, 1211, {1218, 1228, 1238, 1248, 1258, 1268, 1278}, {1288, 1295, 1302, 1309, 1316, 1323, 1330}, {1337, 1341, 1345, 1349, 1353, 1357, 1361}, {1365, 1372, 1379, 1386, 1393, 1400, 1407, 1414, 1421, 1428, 1435, 1445, 0}, {1365, 1372, 1379, 1386, 1393, 1400, 1407, 1414, 1421, 1428, 1435, 1445, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, 0, 0, 185, 187, {1518,1527,1536,1545,1556,1567,1578,1585,1592,1599,0,0,0,0},{1608,1630,1658,1686,1701,0,0,0,0,0},{843,251,1722,1730,0,0,0,0,0,0,0,0},{848,269,1739,1750,0,0,0,0,0},{1762,1778,1791,1805,0,0,0,0}},
+       {1812, 35193, 35198, {2217, 9837, 35203, 2240, 2247, 2255, 35210}, {2270, 9865, 35218, 2283, 2287, 2291, 35222}, {1914, 2300, 2302, 2304, 2302, 2306, 2308}, {2310, 2317, 4837, 2331, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2310, 2317, 4837, 2331, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, 2, 1, 691, 187, {2154,6118,0,0,0,0,0,0,0,0,0,0,0,0},{2176,2194,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 36260, 36270, {8986, 8995, 9007, 9014, 9022, 9032, 9038}, {9045, 9049, 9053, 9057, 9061, 9066, 9070}, {0, 0, 0, 0, 0, 0, 0}, {2310, 2317, 15032, 2331, 2337, 2341, 2346, 11888, 36278, 36288, 36296, 36305, 0}, {2310, 2317, 15032, 2331, 2337, 2341, 2346, 11888, 36278, 36288, 36296, 36305, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, {2394, 2398, 2402, 2406, 2337, 2410, 2414, 11895, 2422, 2426, 2430, 2434, 0}, 0, 1, 691, 187, {9328,36314,0,0,0,0,0,0,0,0,0,0,0,0},{36329,9386,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{36120,0,0,0,0,0,0,0}},
+       {289, 1820, 1823, {14832, 14838, 14852, 14875, 14889, 14905, 14912}, {14921, 14924, 14929, 14935, 14939, 7600, 14944}, {6540, 6528, 6530, 6532, 6534, 6536, 6538}, {14948, 14955, 10132, 14962, 3668, 14968, 14974, 14980, 14987, 14996, 15004, 15011, 0}, {15018, 15025, 15032, 15037, 15043, 15047, 15052, 15057, 15064, 15073, 15081, 15088, 0}, {15095, 7999, 2402, 2406, 15043, 15099, 15103, 15107, 15111, 2426, 15115, 15119, 0}, {15095, 7999, 2402, 2406, 15043, 15099, 15103, 15107, 15111, 2426, 15115, 15119, 0}, 0, 1, 691, 187, {2154,1129,0,0,0,0,0,0,0,0,0,0,0,0},{15123,3520,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {35518, 35533, 35548, 35563, 35580, 35597, 35606}, {35617, 35624, 35631, 35638, 35645, 19574, 35652}, {35659, 19207, 8610, 8613, 8607, 19204, 19588}, {13102, 13113, 8644, 13126, 8666, 13137, 13144, 8691, 13151, 13166, 13179, 13190, 0}, {13102, 13113, 8644, 13126, 8666, 13137, 13144, 8691, 13151, 13166, 13179, 13190, 0}, {13203, 13210, 13217, 13224, 8666, 13137, 13144, 13231, 13238, 13245, 13252, 13259, 0}, {13203, 13210, 13217, 13224, 8666, 13137, 13144, 13231, 13238, 13245, 13252, 13259, 0}, 0, 1, 185, 187, {1545,15492,0,0,0,0,0,0,0,0,0,0,0,0},{20050,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {3551, 25903, 25908, {25913, 25920, 25931, 25944, 25957, 25968, 25981}, {25992, 25997, 26002, 26007, 26012, 26017, 26022}, {6528, 6530, 6532, 6534, 6536, 6538, 6540}, {26027, 26053, 26081, 26111, 26141, 26167, 26197, 26223, 26251, 26275, 26303, 26340, 0}, {26027, 26053, 26081, 26111, 26141, 26167, 26197, 26223, 26251, 26275, 26303, 26340, 0}, {26379, 26391, 26403, 26415, 26427, 26439, 26451, 26463, 26475, 26487, 26500, 26513, 0}, {26379, 26391, 26403, 26415, 26427, 26439, 26451, 26463, 26475, 26487, 26500, 26513, 0}, 0, 0, 2438, 187, {1556,15492,0,0,0,0,0,0,0,0,0,0,0,0},{26526,26564,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {1195, 1204, 1211, {1218, 1228, 1238, 1248, 1258, 1268, 1278}, {34757, 34764, 34771, 34778, 34785, 34792, 34799}, {1337, 1341, 1345, 1349, 1353, 1357, 1361}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, 0, 0, 185, 187, {1120,3483,189,1578,1599,1518,1545,1556,0,0,0,0,0,0},{1608,6555,1686,1701,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1762,1778,1791,1805,0,0,0,0}},
+       {1195, 1204, 1211, {1218, 1228, 1238, 1248, 1258, 1268, 1278}, {34757, 34764, 34771, 34778, 34785, 34792, 34799}, {1337, 1341, 1345, 1349, 1353, 1357, 1361}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, {1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1506, 1512, 0}, 0, 0, 185, 187, {1120,3483,189,1578,1599,1518,1545,1556,0,0,0,0,0,0},{1608,6555,1686,1701,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{1762,1778,1791,1805,0,0,0,0}},
+       {7465, 7261, 7266, {2217, 2225, 2232, 2240, 2247, 2255, 2262}, {7473, 7478, 7482, 7486, 7490, 7494, 7498}, {1914, 2300, 2302, 2304, 2302, 2306, 2308}, {2310, 2317, 4837, 2331, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2310, 2317, 4837, 2331, 4848, 2341, 2346, 2351, 2358, 2368, 2376, 6086, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, {2394, 2398, 2402, 2406, 4848, 2410, 2414, 2418, 2422, 2426, 2430, 7503, 0}, 2, 1, 691, 691, {2154,6118,0,0,0,0,0,0,0,0,0,0,0,0},{2176,2194,0,0,0,0,0,0,0,0},{4246,0,0,0,0,0,0,0,0,0,0,0},{4268,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {1812, 36422, 36440, {36455, 36468, 36487, 8513, 36515, 36532, 10761}, {36543, 36550, 36557, 36788, 36571, 36578, 36585}, {456, 459, 36592, 465, 468, 459, 465}, {36595, 36608, 501, 510, 15731, 36719, 36726, 542, 36623, 36642, 36657, 36674, 0}, {36595, 36608, 501, 510, 15731, 36719, 36726, 542, 36623, 36642, 36657, 36674, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, {36691, 36698, 36705, 36712, 15731, 36719, 36726, 36733, 36740, 36747, 36754, 36761, 0}, 0, 1, 691, 691, {9298,9328,0,0,0,0,0,0,0,0,0,0,0,0},{36329,9386,0,0,0,0,0,0,0,0},{4246,0,0,0,0,0,0,0,0,0,0,0},{4268,0,0,0,0,0,0,0,0},{36120,0,0,0,0,0,0,0}},
+       {1, 12926, 12938, {12950, 12965, 12980, 12995, 13012, 13031, 13042}, {13053, 13060, 13067, 13074, 13081, 13088, 13095}, {0, 0, 0, 0, 0, 0, 0}, {13102, 13113, 8644, 13126, 8666, 13137, 13144, 8691, 13151, 13166, 13179, 13190, 0}, {13102, 13113, 8644, 13126, 8666, 13137, 13144, 8691, 13151, 13166, 13179, 13190, 0}, {13203, 13210, 13217, 13224, 8666, 13137, 13144, 13231, 13238, 13245, 13252, 13259, 0}, {13203, 13210, 13217, 13224, 8666, 13137, 13144, 13231, 13238, 13245, 13252, 13259, 0}, 0, 1, 691, 187, {2154,2696,8015,2440,189,0,0,0,0,0,0,0,0,0},{13266,13284,0,0,0,0,0,0,0,0},{251,843,0,0,0,0,0,0,0,0,0,0},{269,848,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}},
+       {3551, 1820, 1823, {19918, 19928, 19937, 19946, 19957, 19967, 19972}, {19979, 19985, 19990, 19995, 20000, 10578, 20004}, {20009, 2565, 1914, 7600, 1909, 3925, 1914}, {14948, 14955, 10132, 14962, 3668, 20011, 20016, 20021, 14987, 14996, 15004, 15011, 0}, {14948, 14955, 10132, 14962, 3668, 20011, 20016, 20021, 14987, 14996, 15004, 15011, 0}, {20028, 20033, 3699, 2664, 3668, 20011, 20016, 20037, 10562, 2684, 20041, 20046, 0}, {20028, 20033, 3699, 2664, 3668, 20011, 20016, 20037, 10562, 2684, 20041, 20046, 0}, 0, 1, 185, 187, {1545,15492,0,0,0,0,0,0,0,0,0,0,0,0},{20050,16096,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{12916,0,0,0,0,0,0,0}},
+       {289, 30416, 30426, {30439, 30446, 30452, 30459, 30465, 30471, 30479}, {30489, 30493, 30497, 30501, 30505, 30509, 30513}, {12692, 12692, 12692, 12692, 12692, 12692, 12692}, {30519, 30528, 30537, 30542, 30548, 30554, 30560, 30567, 30573, 30582, 30591, 30599, 0}, {30519, 30528, 30537, 30542, 30548, 30554, 30560, 30567, 30573, 30582, 30591, 30599, 0}, {30608, 30612, 3699, 30616, 3668, 30620, 30624, 30628, 30633, 30637, 30643, 30647, 0}, {30608, 30612, 3699, 30616, 3668, 30620, 30624, 30628, 30633, 30637, 30643, 30647, 0}, 0, 0, 2438, 187, {2440,2451,1556,0,0,0,0,0,0,0,0,0,0,0},{10501,222,0,0,0,0,0,0,0,0},{843,251,0,0,0,0,0,0,0,0,0,0},{848,269,0,0,0,0,0,0,0},{278,0,0,0,0,0,0,0}},
+       {3551, 0, 0, {31414, 31421, 31429, 31436, 31443, 31451, 31459}, {31466, 31469, 31472, 31475, 31478, 31481, 31484}, {2308, 2308, 2302, 2308, 12692, 3925, 12692}, {31487, 31495, 31505, 31511, 31519, 31524, 31529, 31534, 31541, 19899, 31549, 31557, 0}, {31487, 31495, 31505, 31511, 31519, 31524, 31529, 31534, 31541, 19899, 31549, 31557, 0}, {2651, 31565, 3699, 31569, 3668, 30620, 30624, 31573, 3639, 2684, 31577, 16295, 0}, {2651, 31565, 3699, 31569, 3668, 30620, 30624, 31573, 3639, 2684, 31577, 16295, 0}, 0, 0, 185, 187, {1120,17272,0,0,0,0,0,0,0,0,0,0,0,0},{3789,3808,0,0,0,0,0,0,0,0},{251,0,0,0,0,0,0,0,0,0,0,0},{269,0,0,0,0,0,0,0,0},{2207,0,0,0,0,0,0,0}}
 };
 
 
 static const NumberFormatEntry number_format_entries [] = {
-       {691, 37416, 691, 37418, 37421, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37479, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37501, 37510, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37518, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 2, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37518, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 2, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37521, 37485, 37487, 37491, 37525, 37537, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37549, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37552, 37563, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37574, 37588, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 37622, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 37487, 37491, 37631, 37639, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37647, 37485, 37487, 37491, 37651, 37462, 37664, 37669, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37674, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37549, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37603, 37677, 2566, 37495, 9, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37687, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37691, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37695, 37705, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 0, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37714, 37485, 37487, 37491, 37718, 37737, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37756, 37485, 37487, 37491, 37603, 37677, 2566, 37495, 9, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37476, 691, 37759, 37763, 37485, 37487, 37491, 37767, 37776, 2566, 37495, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 0, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37785, 37485, 37793, 37491, 37810, 37838, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37865, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 2, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 37487, 37491, 37525, 37537, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 37476, 37868, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 37476, 37549, 37485, 37874, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37881, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37885, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37889, 37485, 37892, 37491, 37915, 37462, 37931, 37939, 3, 0, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37947, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37950, 37485, 37954, 37491, 37452, 37462, 2566, 37495, 5, 1, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37971, 37485, 0, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37975, 37989, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37476, 37416, 37476, 37497, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 38002, 37491, 38016, 38028, 2566, 37495, 9, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 38039, 37416, 37476, 38041, 37485, 37487, 37491, 38044, 38055, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37416, 0, 37485, 0, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, 0}, {3, 0}},
-       {185, 37416, 185, 37418, 38065, 37431, 38074, 37449, 38085, 37462, 38100, 37939, 3, 0, 0, 0, 3, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38107, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 691, 38111, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 691, 0, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 38117, 38127, 2566, 37495, 8, 3, 10, 3, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38136, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37476, 10794, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37476, 10794, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 10794, 37485, 38143, 37491, 37452, 37462, 2566, 37495, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 38039, 37416, 37476, 10794, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 0, 37485, 38149, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37549, 37485, 37874, 37491, 37452, 37462, 2566, 37495, 12, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 37497, 37485, 0, 37491, 37452, 37462, 2566, 37495, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 37874, 37491, 37452, 37462, 2566, 37495, 12, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37497, 37485, 0, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38194, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {2566, 37476, 37416, 37476, 0, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 0, 37485, 38197, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38214, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37418, 0, 37431, 37487, 37449, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38218, 37485, 38225, 37491, 37452, 37462, 2566, 37495, 12, 2, 1, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 0, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 0, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 2, 2, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 0, 37491, 37452, 37462, 2566, 37495, 12, 2, 1, 1, 1, 2, 2, {3, 2}, {3, 2}},
-       {38252, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {37416, 37476, 37416, 37416, 0, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37518, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 2, 0, 1, 1, 1, 2, 2, {3, 0}, {3, 0}},
-       {691, 37416, 691, 37416, 38254, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 691, 38257, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 5, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 0}},
-       {691, 37416, 691, 691, 38261, 37485, 38265, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, 0}, {3, 0}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38190, 37485, 0, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38302, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 14, 2, 0, 0, 1, 2, 2, {3, -1}, {3, 2}},
-       {691, 37416, 691, 37416, 38310, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 1, {3, 0}, {3, 0}},
-       {37416, 38039, 37416, 37476, 0, 37485, 0, 37491, 37631, 37639, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38317, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, 2}},
-       {691, 37416, 691, 37418, 38330, 37431, 0, 37491, 37452, 37462, 2566, 37495, 3, 0, 4, 2, 3, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38333, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 0, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38337, 37485, 0, 37491, 37452, 37462, 2566, 37495, 9, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37476, 10794, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37549, 37485, 37874, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 0}, {3, 0}},
-       {691, 37416, 691, 37416, 38337, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37518, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 0, 1, 1, 1, 2, 2, {3, -1}, {3, 0}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 0, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37759, 0, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37416, 37785, 37485, 0, 37491, 37452, 37462, 2566, 37495, 5, 1, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 691, 38341, 37485, 0, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38254, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37418, 37421, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37479, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37501, 37510, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38344, 37485, 38348, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37521, 37485, 37487, 37491, 37525, 37537, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37549, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37552, 37563, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37574, 37588, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 37622, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 37487, 37491, 37631, 37639, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37647, 37485, 37487, 37491, 37651, 37462, 37664, 37669, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37674, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37549, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37603, 37677, 2566, 37495, 9, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37687, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37691, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37695, 37705, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37549, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37714, 37485, 37487, 37491, 37718, 37737, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37756, 37485, 37487, 37491, 37603, 37677, 2566, 37495, 9, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37476, 691, 37759, 37763, 37485, 37487, 37491, 37767, 37776, 2566, 37495, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 0, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37785, 37485, 37793, 37491, 37810, 37838, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37865, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 2, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 37487, 37491, 37525, 37537, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 37476, 37868, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 37476, 37549, 37485, 37874, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37881, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37885, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37889, 37485, 37892, 37491, 37915, 37462, 37931, 37939, 3, 0, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37947, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37950, 37485, 37954, 37491, 37452, 37462, 2566, 37495, 5, 1, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37971, 37485, 0, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37975, 37989, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37476, 37416, 37476, 37497, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 38002, 37491, 38016, 38028, 2566, 37495, 9, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 38039, 37416, 37476, 38041, 37485, 37487, 37491, 38044, 38055, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37416, 38358, 37485, 0, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, 0}, {3, 0}},
-       {185, 37416, 185, 37418, 38065, 37431, 38074, 37449, 38085, 37462, 38100, 37939, 3, 0, 0, 0, 3, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38107, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 691, 38111, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 691, 38365, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 38117, 38127, 2566, 37495, 8, 3, 10, 3, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38136, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37476, 10794, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37476, 10794, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 10794, 37485, 38143, 37491, 37452, 37462, 2566, 37495, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 38039, 37416, 37476, 10794, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 0, 37485, 38149, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37549, 37485, 37874, 37491, 37452, 37462, 2566, 37495, 12, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 37497, 37485, 0, 37491, 37452, 37462, 2566, 37495, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37549, 37485, 37874, 37491, 37452, 37462, 2566, 37495, 12, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38214, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37418, 38370, 37431, 37487, 37449, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38190, 37485, 38225, 37491, 37452, 37462, 2566, 37495, 12, 2, 1, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 0, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 2, 2, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38190, 37485, 0, 37491, 37452, 37462, 2566, 37495, 12, 2, 1, 1, 1, 2, 2, {3, 2}, {3, 2}},
-       {38252, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 37518, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 2, 0, 1, 1, 1, 2, 2, {3, 0}, {3, 0}},
-       {691, 37416, 691, 37416, 38254, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 691, 38257, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 5, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 0}},
-       {691, 37416, 691, 691, 38261, 37485, 38265, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, 0}, {3, 0}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38190, 37485, 0, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37416, 38302, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 14, 2, 0, 0, 1, 2, 2, {3, -1}, {3, 2}},
-       {691, 37416, 691, 37416, 38310, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 1, {3, 0}, {3, 0}},
-       {691, 37416, 691, 37416, 38317, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, 2}},
-       {691, 37416, 691, 37418, 38330, 37431, 0, 37491, 37452, 37462, 2566, 37495, 3, 0, 4, 2, 3, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38333, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38337, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38337, 37485, 0, 37491, 37452, 37462, 2566, 37495, 9, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37476, 10794, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37549, 37485, 37874, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, 0}, {3, 0}},
-       {691, 37416, 691, 37416, 38337, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37518, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 0, 1, 1, 1, 2, 2, {3, -1}, {3, 0}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 0, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37416, 37785, 37485, 0, 37491, 37452, 37462, 2566, 37495, 5, 1, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 691, 38341, 37485, 0, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38254, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37418, 38376, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37687, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 2, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37476, 37416, 38386, 37763, 37485, 37487, 37491, 37552, 37563, 2566, 37495, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38254, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37631, 37639, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37476, 37416, 38386, 37763, 37485, 37487, 37491, 37603, 37677, 2566, 37495, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37695, 37705, 2566, 37495, 12, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37549, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 37487, 37491, 37603, 37677, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 37874, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 691, 38388, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37497, 37485, 0, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37418, 38396, 37431, 37487, 37449, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38403, 37485, 38225, 37491, 37452, 37462, 2566, 37495, 12, 2, 1, 0, 1, 2, 2, {3, 2}, {3, 2}},
-       {691, 37416, 691, 37418, 38407, 37431, 37487, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 38348, 37491, 37452, 37462, 2566, 37495, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37552, 37563, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37601, 37485, 37487, 37491, 37631, 37639, 2566, 37495, 15, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 37874, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 691, 38417, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 0, 0, 0, 3, 3, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37552, 37563, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 8056, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37476, 37416, 38386, 37763, 37485, 37487, 37491, 37631, 37639, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38427, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 2, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37418, 38430, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38440, 37485, 38348, 37491, 37452, 37462, 2566, 37495, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 38386, 0, 37485, 37487, 37491, 37552, 37563, 2566, 37495, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38445, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 0, 0, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 691, 37497, 37485, 37487, 37491, 37631, 37639, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38427, 37485, 0, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37418, 38449, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37497, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38459, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 14, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37497, 37485, 37487, 37491, 37631, 37639, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38427, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 691, 38463, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 3, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 10794, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38473, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37418, 38478, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 3, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38488, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38473, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37418, 38492, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37601, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 1, 0, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38502, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37418, 38507, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38517, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38521, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37418, 38529, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 3, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37601, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 2, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 691, 38539, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37601, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 14, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37497, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37418, 38549, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 3, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38333, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37601, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 9, 2, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37418, 38559, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 37601, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 9, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37418, 38569, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 3, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38579, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 14, 2, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37418, 38583, 37431, 37434, 37449, 37452, 37462, 2566, 37471, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38190, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 1, 1, 1, 2, 2, {3, 2}, {3, 2}},
-       {37416, 691, 37416, 691, 38593, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 14, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 2436, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 12, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38596, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37601, 37485, 37487, 37491, 37603, 37613, 2566, 37495, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, 0}},
-       {37416, 691, 37416, 691, 38473, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38427, 37485, 0, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38599, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38607, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 691, 38388, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 37518, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 2, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37549, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38427, 37485, 0, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 691, 38365, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37418, 38396, 37431, 37487, 37449, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37416, 0, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38612, 37485, 38348, 37491, 37452, 37462, 2566, 37495, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38612, 37485, 38348, 37491, 37452, 37462, 2566, 37495, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37476, 37549, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 691, 37416, 691, 38607, 37485, 37487, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
-       {37416, 37476, 37416, 37416, 38358, 37485, 0, 37491, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 2, 2, {3, 0}, {3, 0}},
-       {37416, 37476, 37416, 37418, 38370, 37431, 37487, 37449, 37452, 37462, 2566, 37495, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
-       {37416, 38039, 37416, 37476, 0, 37485, 0, 37491, 37631, 37639, 2566, 37495, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
-       {691, 37416, 691, 37416, 38337, 37485, 0, 37491, 37452, 37462, 2566, 37495, 2, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}}
+       {691, 36891, 691, 36893, 36896, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36954, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 36976, 36985, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 36993, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 2, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 36993, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 2, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36996, 36960, 36962, 36966, 37000, 37012, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37024, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37027, 37038, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37049, 37063, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 37097, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 36962, 36966, 37106, 37114, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37122, 36960, 36962, 36966, 37126, 36937, 37139, 37144, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37149, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37024, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37078, 37152, 2438, 36970, 9, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37162, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37166, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37170, 37180, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 0, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37189, 36960, 36962, 36966, 37193, 37212, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37231, 36960, 36962, 36966, 37078, 37152, 2438, 36970, 9, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36951, 691, 37234, 37238, 36960, 36962, 36966, 37242, 37251, 2438, 36970, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 0, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37260, 36960, 37268, 36966, 37285, 37313, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37340, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 2, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 36962, 36966, 37000, 37012, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 36951, 37343, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 36951, 37024, 36960, 37349, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37356, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37360, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37364, 36960, 37367, 36966, 37390, 36937, 37406, 37414, 3, 0, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37422, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37425, 36960, 37429, 36966, 36927, 36937, 2438, 36970, 5, 1, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37446, 36960, 0, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37450, 37464, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36951, 36891, 36951, 36972, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 37477, 36966, 37491, 37503, 2438, 36970, 9, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 37514, 36891, 36951, 37516, 36960, 36962, 36966, 37519, 37530, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36891, 0, 36960, 0, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, 0}, {3, 0}},
+       {185, 36891, 185, 36893, 37540, 36906, 37549, 36924, 37560, 36937, 37575, 37414, 3, 0, 0, 0, 3, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37582, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 691, 37586, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 691, 0, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37592, 37602, 2438, 36970, 8, 3, 10, 3, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37611, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36951, 10586, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36951, 10586, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 10586, 36960, 37618, 36966, 36927, 36937, 2438, 36970, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 37514, 36891, 36951, 10586, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 0, 36960, 37624, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37024, 36960, 37349, 36966, 36927, 36937, 2438, 36970, 12, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 36972, 36960, 0, 36966, 36927, 36937, 2438, 36970, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 37349, 36966, 36927, 36937, 2438, 36970, 12, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 36972, 36960, 0, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37669, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {2438, 36951, 36891, 36951, 0, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 0, 36960, 37672, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37689, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36893, 0, 36906, 36962, 36924, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37693, 36960, 37700, 36966, 36927, 36937, 2438, 36970, 12, 2, 1, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 0, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 0, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 2, 2, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 0, 36966, 36927, 36937, 2438, 36970, 12, 2, 1, 1, 1, 2, 2, {3, 2}, {3, 2}},
+       {37727, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {36891, 36951, 36891, 36891, 0, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 36993, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 2, 0, 1, 1, 1, 2, 2, {3, 0}, {3, 0}},
+       {691, 36891, 691, 36891, 37729, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 691, 37732, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 5, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 0}},
+       {691, 36891, 691, 691, 37736, 36960, 37740, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, 0}, {3, 0}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37665, 36960, 0, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37777, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 14, 2, 0, 0, 1, 2, 2, {3, -1}, {3, 2}},
+       {691, 36891, 691, 36891, 37785, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 1, {3, 0}, {3, 0}},
+       {36891, 37514, 36891, 36951, 0, 36960, 0, 36966, 37106, 37114, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37792, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, 2}},
+       {691, 36891, 691, 36893, 37805, 36906, 0, 36966, 36927, 36937, 2438, 36970, 3, 0, 4, 2, 3, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37808, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 0, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37812, 36960, 0, 36966, 36927, 36937, 2438, 36970, 9, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36951, 10586, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37024, 36960, 37349, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 0}, {3, 0}},
+       {691, 36891, 691, 36891, 37812, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 36993, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 0, 1, 1, 1, 2, 2, {3, -1}, {3, 0}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 0, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 37234, 0, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36891, 37260, 36960, 0, 36966, 36927, 36937, 2438, 36970, 5, 1, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 691, 37816, 36960, 0, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37729, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36893, 36896, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36954, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 36976, 36985, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37819, 36960, 37823, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36996, 36960, 36962, 36966, 37000, 37012, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37024, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37027, 37038, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37049, 37063, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 37097, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 36962, 36966, 37106, 37114, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37122, 36960, 36962, 36966, 37126, 36937, 37139, 37144, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37149, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37024, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37078, 37152, 2438, 36970, 9, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37162, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37166, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37170, 37180, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37024, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37189, 36960, 36962, 36966, 37193, 37212, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37231, 36960, 36962, 36966, 37078, 37152, 2438, 36970, 9, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36951, 691, 37234, 37238, 36960, 36962, 36966, 37242, 37251, 2438, 36970, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 0, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37260, 36960, 37268, 36966, 37285, 37313, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37340, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 2, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 36962, 36966, 37000, 37012, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 36951, 37343, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 36951, 37024, 36960, 37349, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37356, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37360, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37364, 36960, 37367, 36966, 37390, 36937, 37406, 37414, 3, 0, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37422, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37425, 36960, 37429, 36966, 36927, 36937, 2438, 36970, 5, 1, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37446, 36960, 0, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37450, 37464, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36951, 36891, 36951, 36972, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 37477, 36966, 37491, 37503, 2438, 36970, 9, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 37514, 36891, 36951, 37516, 36960, 36962, 36966, 37519, 37530, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36891, 37833, 36960, 0, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, 0}, {3, 0}},
+       {185, 36891, 185, 36893, 37540, 36906, 37549, 36924, 37560, 36937, 37575, 37414, 3, 0, 0, 0, 3, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37582, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 691, 37586, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 691, 37840, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37592, 37602, 2438, 36970, 8, 3, 10, 3, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37611, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36951, 10586, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36951, 10586, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 10586, 36960, 37618, 36966, 36927, 36937, 2438, 36970, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 37514, 36891, 36951, 10586, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 0, 36960, 37624, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37024, 36960, 37349, 36966, 36927, 36937, 2438, 36970, 12, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 36972, 36960, 0, 36966, 36927, 36937, 2438, 36970, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37024, 36960, 37349, 36966, 36927, 36937, 2438, 36970, 12, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37689, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36893, 37845, 36906, 36962, 36924, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37665, 36960, 37700, 36966, 36927, 36937, 2438, 36970, 12, 2, 1, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 0, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 2, 2, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37665, 36960, 0, 36966, 36927, 36937, 2438, 36970, 12, 2, 1, 1, 1, 2, 2, {3, 2}, {3, 2}},
+       {37727, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 36993, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 2, 0, 1, 1, 1, 2, 2, {3, 0}, {3, 0}},
+       {691, 36891, 691, 36891, 37729, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 691, 37732, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 5, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 0}},
+       {691, 36891, 691, 691, 37736, 36960, 37740, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, 0}, {3, 0}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37665, 36960, 0, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36891, 37777, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 14, 2, 0, 0, 1, 2, 2, {3, -1}, {3, 2}},
+       {691, 36891, 691, 36891, 37785, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 1, {3, 0}, {3, 0}},
+       {691, 36891, 691, 36891, 37792, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, 2}},
+       {691, 36891, 691, 36893, 37805, 36906, 0, 36966, 36927, 36937, 2438, 36970, 3, 0, 4, 2, 3, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37808, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37812, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37812, 36960, 0, 36966, 36927, 36937, 2438, 36970, 9, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36951, 10586, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 2, 2, 2, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37024, 36960, 37349, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, 0}, {3, 0}},
+       {691, 36891, 691, 36891, 37812, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 36993, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 0, 1, 1, 1, 2, 2, {3, -1}, {3, 0}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 0, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36891, 37260, 36960, 0, 36966, 36927, 36937, 2438, 36970, 5, 1, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 691, 37816, 36960, 0, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37729, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36893, 37851, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37162, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 2, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36951, 36891, 37861, 37238, 36960, 36962, 36966, 37027, 37038, 2438, 36970, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37729, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37106, 37114, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36951, 36891, 37861, 37238, 36960, 36962, 36966, 37078, 37152, 2438, 36970, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37170, 37180, 2438, 36970, 12, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37024, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 36962, 36966, 37078, 37152, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 37349, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 691, 37863, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 36972, 36960, 0, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36893, 37871, 36906, 36962, 36924, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37878, 36960, 37700, 36966, 36927, 36937, 2438, 36970, 12, 2, 1, 0, 1, 2, 2, {3, 2}, {3, 2}},
+       {691, 36891, 691, 36893, 37882, 36906, 36962, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 37823, 36966, 36927, 36937, 2438, 36970, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37027, 37038, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37076, 36960, 36962, 36966, 37106, 37114, 2438, 36970, 15, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 37349, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 691, 37892, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 0, 0, 0, 3, 3, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 37027, 37038, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 7920, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36951, 36891, 37861, 37238, 36960, 36962, 36966, 37106, 37114, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37902, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 2, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36893, 37905, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37915, 36960, 37823, 36966, 36927, 36937, 2438, 36970, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 37861, 0, 36960, 36962, 36966, 37027, 37038, 2438, 36970, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37920, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 0, 0, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 691, 36972, 36960, 36962, 36966, 37106, 37114, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37902, 36960, 0, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36893, 37924, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 36972, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37934, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 14, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 36972, 36960, 36962, 36966, 37106, 37114, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37902, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 691, 37938, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 3, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 10586, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 2, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37948, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36893, 37953, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 3, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 1, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37963, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37948, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36893, 37967, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37076, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 1, 0, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37977, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36893, 37982, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37992, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37996, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36893, 38004, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 3, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37076, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 2, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 691, 38014, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37076, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 14, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 36972, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36893, 38024, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 3, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37808, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37076, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 9, 2, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36893, 38034, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37076, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 9, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36893, 38044, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 3, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 38054, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 14, 2, 0, 0, 1, 0, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36893, 38058, 36906, 36909, 36924, 36927, 36937, 2438, 36946, 3, 2, 0, 0, 3, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37665, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 1, 1, 1, 2, 2, {3, 2}, {3, 2}},
+       {36891, 691, 36891, 691, 38068, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 14, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 0, 0, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 2308, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 12, 2, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 38071, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 1, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37076, 36960, 36962, 36966, 37078, 37088, 2438, 36970, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, 0}},
+       {36891, 691, 36891, 691, 37948, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37902, 36960, 0, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 38074, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 38082, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 691, 37863, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 36993, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 2, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37024, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 37902, 36960, 0, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 691, 37840, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36893, 37871, 36906, 36962, 36924, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36891, 0, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 38087, 36960, 37823, 36966, 36927, 36937, 2438, 36970, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 38087, 36960, 37823, 36966, 36927, 36937, 2438, 36970, 0, 0, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36951, 37024, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 12, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 691, 36891, 691, 38082, 36960, 36962, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, -1}, {3, -1}},
+       {36891, 36951, 36891, 36891, 37833, 36960, 0, 36966, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 2, 2, {3, 0}, {3, 0}},
+       {36891, 36951, 36891, 36893, 37845, 36906, 36962, 36924, 36927, 36937, 2438, 36970, 8, 3, 1, 1, 1, 0, 2, {3, -1}, {3, -1}},
+       {36891, 37514, 36891, 36951, 0, 36960, 0, 36966, 37106, 37114, 2438, 36970, 8, 3, 0, 0, 1, 2, 2, {3, -1}, {3, -1}},
+       {691, 36891, 691, 36891, 37812, 36960, 0, 36966, 36927, 36937, 2438, 36970, 2, 2, 0, 0, 1, 2, 2, {3, -1}, {3, -1}}
 };
 
 
 static const CultureInfoEntry culture_entries [] = {
-       {0x0001, 0x007F, 768, -1, 38616, 38619, 38626, 38641, 38645, 38616, 0, {0, 0, 38649, 0}, 0, 0, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0002, 0x007F, 257, -1, 38677, 38680, 38690, 38709, 38713, 38677, 0, {38717, 0, 0, 0}, 1, 1, { 1251, 21025, 10007, 866, 0, ';' }},
-       {0x0003, 0x007F, 257, -1, 38759, 38762, 38770, 38778, 38782, 38759, 0, {38786, 0, 0, 0}, 2, 2, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0004, 0x0004, 257, -1, 38806, 38813, 38841, 38848, 38852, 38856, 0, {38859, 0, 0, 0}, 3, 3, { 936, 500, 10008, 936, 0, ',' }},
-       {0x0004, 0x7804, 257, -1, 38866, 38874, 38841, 38848, 38852, 38856, 0, {38859, 0, 0, 0}, 4, 4, { 936, 500, 10008, 936, 0, ',' }},
-       {0x0005, 0x007F, 257, -1, 38895, 38898, 38904, 38914, 38918, 38895, 0, {38922, 0, 0, 0}, 5, 5, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x0006, 0x007F, 257, -1, 38948, 38951, 38958, 38964, 38968, 38948, 0, {38972, 0, 0, 0}, 6, 6, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0007, 0x007F, 257, -1, 38993, 38996, 39003, 39011, 39015, 38993, 0, {39019, 0, 0, 0}, 7, 7, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0008, 0x007F, 257, -1, 39044, 39047, 39053, 39070, 39074, 39044, 0, {39078, 0, 0, 0}, 8, 8, { 1253, 20273, 10006, 737, 0, ';' }},
-       {0x0009, 0x007F, 257, -1, 39120, 39123, 39123, 39131, 39135, 39120, 0, {39139, 0, 0, 0}, 9, 9, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x000A, 0x007F, 257, -1, 39158, 39161, 39169, 39178, 39182, 39158, 0, {39186, 0, 0, 0}, 10, 10, { 1252, 20284, 10000, 850, 0, ';' }},
-       {0x000B, 0x007F, 257, -1, 39208, 39211, 39219, 39225, 39229, 39208, 0, {39233, 0, 0, 0}, 11, 11, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x000C, 0x007F, 257, -1, 39258, 39261, 39268, 39278, 39282, 39258, 0, {39286, 0, 0, 0}, 12, 12, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x000D, 0x007F, 257, -1, 39308, 39311, 39318, 39329, 39333, 39308, 0, {39337, 0, 0, 0}, 13, 13, { 1255, 500, 10005, 862, 1, ',' }},
-       {0x000E, 0x007F, 257, -1, 39370, 39373, 39383, 39390, 39394, 39370, 0, {39398, 0, 0, 0}, 14, 14, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x000F, 0x007F, 257, -1, 39414, 39417, 39427, 39437, 39441, 39414, 0, {39445, 0, 0, 0}, 15, 15, { 1252, 20871, 10079, 850, 0, ';' }},
-       {0x0010, 0x007F, 257, -1, 39465, 39468, 39476, 39485, 39489, 39465, 0, {39493, 0, 0, 0}, 16, 16, { 1252, 20280, 10000, 850, 0, ';' }},
-       {0x0011, 0x007F, 257, -1, 39515, 39518, 39527, 39537, 39541, 39515, 0, {39545, 0, 0, 0}, 17, 17, { 932, 20290, 10001, 932, 0, ',' }},
-       {0x0012, 0x007F, 257, -1, 39572, 39575, 39582, 39592, 39596, 39572, 0, {39600, 0, 0, 0}, 18, 18, { 949, 20833, 10003, 949, 0, ',' }},
-       {0x0013, 0x007F, 257, -1, 39610, 39613, 39619, 39630, 39634, 39610, 0, {39638, 0, 0, 0}, 19, 19, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0014, 0x007F, 257, -1, 39660, 39663, 39673, 39679, 39683, 39687, 0, {38972, 0, 0, 0}, 20, 20, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0015, 0x007F, 257, -1, 39690, 39693, 39700, 39707, 39711, 39690, 0, {39715, 0, 0, 0}, 21, 21, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0016, 0x007F, 257, -1, 39739, 39742, 39753, 39764, 39768, 39739, 0, {39772, 0, 0, 0}, 22, 22, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0017, 0x007F, 257, -1, 39795, 39798, 39806, 39816, 39820, 39795, 0, {39824, 0, 0, 0}, 23, 23, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0018, 0x007F, 257, -1, 39844, 39847, 39856, 39865, 39869, 39844, 0, {39873, 0, 0, 0}, 24, 24, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0019, 0x007F, 257, -1, 39892, 39895, 39903, 39918, 39922, 39892, 0, {39926, 0, 0, 0}, 25, 25, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x001A, 0x007F, 257, -1, 39972, 39975, 39984, 39993, 39997, 39972, 0, {40001, 0, 0, 0}, 26, 26, { 1250, 500, 10082, 852, 0, ';' }},
-       {0x001B, 0x007F, 257, -1, 12799, 40024, 40031, 40043, 40047, 12799, 0, {40051, 0, 0, 0}, 27, 27, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x001C, 0x007F, 257, -1, 40075, 40078, 40087, 40093, 40097, 40075, 0, {40101, 0, 0, 0}, 28, 28, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x001D, 0x007F, 257, -1, 40121, 40124, 40132, 40140, 40144, 40121, 0, {38972, 0, 0, 0}, 29, 29, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x001E, 0x007F, 512, -1, 40148, 40151, 40156, 40166, 40170, 40148, 0, {0, 40174, 0, 0}, 30, 30, { 874, 20838, 10021, 874, 0, ',' }},
-       {0x001F, 0x007F, 257, -1, 12808, 40205, 40213, 40222, 40226, 12808, 0, {40230, 0, 0, 0}, 31, 31, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x0020, 0x007F, 257, -1, 40244, 40247, 40252, 40261, 40265, 40244, 0, {40269, 0, 0, 0}, 32, 32, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0021, 0x007F, 257, -1, 40299, 40302, 40313, 40330, 40334, 40299, 0, {40338, 0, 0, 0}, 33, 33, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0022, 0x007F, 257, -1, 40357, 40360, 40370, 40391, 40395, 40357, 0, {40399, 0, 0, 0}, 34, 34, { 1251, 500, 10017, 866, 0, ';' }},
-       {0x0023, 0x007F, 257, -1, 40445, 40448, 40459, 40480, 40484, 40445, 0, {40488, 0, 0, 0}, 35, 35, { 1251, 500, 10007, 866, 0, ';' }},
-       {0x0024, 0x007F, 257, -1, 40530, 40533, 40543, 40557, 40561, 40530, 0, {40565, 0, 0, 0}, 36, 36, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0025, 0x007F, 257, -1, 40587, 40590, 40599, 40605, 40609, 40587, 0, {40613, 0, 0, 0}, 37, 37, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0026, 0x007F, 257, -1, 40633, 40636, 40644, 40654, 40658, 40633, 0, {40662, 0, 0, 0}, 38, 38, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0027, 0x007F, 257, -1, 40681, 40684, 40695, 40705, 40709, 40681, 0, {40713, 0, 0, 0}, 39, 39, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0028, 0x007F, 257, -1, 40736, 40739, 40745, 40758, 40762, 40736, 0, {0, 0, 0, 0}, 40, 40, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0029, 0x007F, 257, -1, 40766, 40769, 40777, 40788, 40792, 40766, 0, {40796, 0, 0, 0}, 41, 41, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x002A, 0x007F, 257, -1, 40820, 40823, 40834, 40849, 35702, 40820, 0, {40853, 0, 0, 0}, 42, 42, { 1258, 500, 10000, 1258, 0, ',' }},
-       {0x002B, 0x007F, 257, -1, 40868, 40871, 40880, 40895, 40899, 40868, 0, {40903, 0, 0, 0}, 43, 43, { 0, 500, 2, 1, 0, ',' }},
-       {0x002C, 0x007F, 257, -1, 40933, 40936, 40948, 40960, 40964, 40933, 0, {40968, 0, 0, 0}, 44, 44, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x002D, 0x007F, 257, -1, 40987, 40990, 40997, 41005, 41009, 40987, 0, {41013, 0, 0, 0}, 45, 45, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x002F, 0x007F, 257, -1, 41033, 41036, 41047, 41068, 41072, 41033, 0, {41076, 0, 0, 0}, 46, 46, { 1251, 500, 10007, 866, 0, ';' }},
-       {0x0032, 0x007F, 257, -1, 41120, 41123, 41130, 41139, 41143, 41120, 0, {0, 0, 0, 0}, 47, 47, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0034, 0x007F, 257, -1, 41147, 41150, 41156, 41165, 41169, 41147, 0, {0, 0, 0, 0}, 48, 48, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0035, 0x007F, 257, -1, 41173, 41176, 41181, 41189, 41193, 41173, 0, {41197, 0, 0, 0}, 49, 49, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0036, 0x007F, 257, -1, 41218, 41221, 41221, 41231, 41235, 41218, 0, {41239, 0, 0, 0}, 50, 50, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0037, 0x007F, 257, -1, 41259, 41262, 41271, 41293, 41297, 41259, 0, {41301, 0, 0, 0}, 51, 51, { 0, 500, 2, 1, 0, ';' }},
-       {0x0038, 0x007F, 257, -1, 41366, 41369, 41377, 41387, 41391, 41366, 0, {0, 0, 0, 0}, 52, 52, { 1252, 20277, 10079, 850, 0, ';' }},
-       {0x0039, 0x007F, 257, -1, 41395, 41398, 41404, 41420, 41424, 41395, 0, {41428, 0, 0, 0}, 53, 53, { 0, 500, 2, 1, 0, ',' }},
-       {0x003A, 0x007F, 257, -1, 41481, 41484, 41492, 41498, 41502, 41481, 0, {41506, 0, 0, 0}, 54, 54, { 0, 500, 2, 1, 0, ',' }},
-       {0x003B, 0x007F, 257, -1, 41527, 41530, 41544, 41561, 41565, 41527, 0, {41569, 0, 0, 0}, 55, 55, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x003C, 0x007F, 257, -1, 41588, 41591, 41597, 41605, 41609, 41588, 0, {41613, 0, 0, 0}, 56, 56, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x003E, 0x007F, 257, -1, 41634, 41637, 41643, 41657, 41661, 41634, 0, {41665, 0, 0, 0}, 57, 57, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x003F, 0x007F, 257, -1, 41682, 41685, 41692, 41712, 41716, 41682, 0, {41720, 0, 0, 0}, 58, 58, { 0, 500, 2, 1, 0, ';' }},
-       {0x0040, 0x007F, 257, -1, 41762, 41765, 41772, 41789, 41793, 41762, 0, {41797, 0, 0, 0}, 59, 59, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0041, 0x007F, 257, -1, 41835, 41838, 41846, 41856, 41860, 41835, 0, {41864, 0, 0, 0}, 60, 60, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x0043, 0x007F, 257, -1, 41885, 41888, 41894, 41905, 41909, 41885, 0, {41913, 0, 0, 0}, 61, 61, { 1254, 500, 10029, 857, 0, ';' }},
-       {0x0045, 0x007F, 257, -1, 41933, 41936, 41944, 41960, 41964, 41933, 0, {41968, 0, 0, 0}, 62, 62, { 0, 500, 2, 1, 0, ',' }},
-       {0x0046, 0x007F, 257, -1, 42033, 42036, 42044, 42063, 42067, 42033, 0, {42071, 0, 0, 0}, 63, 63, { 0, 500, 2, 1, 0, ',' }},
-       {0x0047, 0x007F, 257, -1, 42118, 42121, 42130, 42152, 42156, 42118, 0, {42160, 0, 0, 0}, 64, 64, { 0, 500, 2, 1, 0, ',' }},
-       {0x0048, 0x007F, 257, -1, 42216, 42219, 42225, 42241, 42245, 42216, 0, {0, 0, 0, 0}, 65, 65, { 0, 500, 2, 1, 0, ',' }},
-       {0x0049, 0x007F, 257, -1, 42249, 42252, 42258, 42274, 42278, 42249, 0, {42282, 0, 0, 0}, 66, 66, { 0, 500, 2, 1, 0, ',' }},
-       {0x004A, 0x007F, 257, -1, 42347, 42350, 42357, 42376, 42380, 42347, 0, {42384, 0, 0, 0}, 67, 67, { 0, 500, 2, 1, 0, ',' }},
-       {0x004B, 0x007F, 257, -1, 37865, 42449, 42457, 42473, 42477, 37865, 0, {42481, 0, 0, 0}, 68, 68, { 0, 500, 2, 1, 0, ',' }},
-       {0x004C, 0x007F, 257, -1, 42546, 42549, 42559, 42578, 42582, 42546, 0, {42586, 0, 0, 0}, 69, 69, { 0, 500, 2, 1, 0, ',' }},
-       {0x004D, 0x007F, 257, -1, 42630, 42633, 42642, 42664, 42668, 42630, 0, {42672, 0, 0, 0}, 70, 70, { 0, 500, 2, 1, 0, ',' }},
-       {0x004E, 0x007F, 257, -1, 42725, 42728, 42736, 42752, 2530, 42725, 0, {42756, 0, 0, 0}, 71, 71, { 0, 500, 2, 1, 0, ',' }},
-       {0x0050, 0x007F, 257, -1, 42818, 42821, 42831, 42844, 42848, 42818, 0, {42852, 0, 0, 0}, 72, 72, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0051, 0x007F, 257, -1, 42884, 42887, 42895, 42920, 42924, 42884, 0, {0, 0, 0, 0}, 73, 73, { 0, 500, 2, 1, 0, ',' }},
-       {0x0052, 0x007F, 257, -1, 42928, 42931, 42937, 42945, 42949, 42928, 0, {42953, 0, 0, 0}, 74, 74, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x0053, 0x007F, 257, -1, 42969, 42972, 42978, 42994, 42998, 42969, 0, {43002, 0, 0, 0}, 75, 75, { 0, 500, 2, 1, 0, ',' }},
-       {0x0054, 0x007F, 257, -1, 43057, 43060, 43064, 43074, 43078, 43057, 0, {43082, 0, 0, 0}, 76, 76, { 0, 500, 2, 1, 0, ',' }},
-       {0x0056, 0x007F, 257, -1, 43128, 43131, 43140, 43147, 43151, 43128, 0, {39493, 0, 0, 0}, 77, 77, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0057, 0x007F, 257, -1, 43155, 43159, 43167, 43186, 43155, 43155, 0, {0, 0, 0, 0}, 78, 78, { 0, 500, 2, 1, 0, ',' }},
-       {0x005B, 0x007F, 257, -1, 43190, 43193, 43201, 43217, 43221, 43190, 0, {43225, 0, 0, 0}, 79, 79, { 0, 500, 2, 1, 0, ',' }},
-       {0x005E, 0x007F, 257, -1, 8151, 43284, 43292, 43305, 43309, 8151, 0, {43313, 0, 0, 0}, 80, 80, { 0, 500, 2, 1, 0, ';' }},
-       {0x005F, 0x007F, 257, -1, 43358, 43362, 43386, 43396, 43358, 43358, 0, {0, 0, 0, 0}, 81, 81, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0061, 0x007F, 257, -1, 1992, 43400, 43407, 43426, 43430, 1992, 0, {43434, 0, 0, 0}, 82, 82, { 0, 500, 2, 1, 0, ',' }},
-       {0x0063, 0x007F, 1024, -1, 43484, 43487, 43494, 43503, 43507, 43484, 0, {0, 0, 0, 0}, 83, 83, { 0, 500, 2, 1, 1, ';' }},
-       {0x0064, 0x007F, 257, -1, 43511, 43515, 43515, 43524, 43511, 43511, 0, {43528, 0, 0, 0}, 84, 84, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x0068, 0x007F, 257, -1, 43551, 43554, 43554, 43560, 43564, 43551, 0, {0, 0, 0, 0}, 85, 85, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x006A, 0x007F, 257, -1, 43568, 43571, 43578, 43593, 43597, 43568, 0, {0, 0, 0, 0}, 86, 86, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x006C, 0x007F, 257, -1, 43601, 43605, 43620, 43637, 43601, 43601, 0, {0, 0, 0, 0}, 87, 87, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x006F, 0x007F, 257, -1, 43641, 43644, 43656, 43668, 43672, 43641, 0, {43676, 0, 0, 0}, 88, 88, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0070, 0x007F, 257, -1, 43703, 43706, 43706, 43711, 43715, 43703, 0, {0, 0, 0, 0}, 89, 89, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x0078, 0x007F, 257, -1, 43719, 43722, 43733, 43743, 43747, 43719, 0, {43751, 0, 0, 0}, 90, 90, { 0, 500, 2, 1, 0, ',' }},
-       {0x007E, 0x007F, 257, -1, 43764, 43767, 43774, 43784, 43788, 43764, 0, {43792, 0, 0, 0}, 91, 91, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0084, 0x007F, 257, -1, 43812, 43816, 43829, 43848, 43812, 43812, 0, {43852, 0, 0, 0}, 92, 92, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0085, 0x007F, 257, -1, 43877, 43881, 43887, 43905, 43877, 43877, 0, {0, 0, 0, 0}, 93, 93, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0087, 0x007F, 257, -1, 43909, 43912, 43912, 43924, 43928, 43909, 0, {0, 0, 0, 0}, 94, 94, { 1252, 37, 10000, 437, 0, ';' }},
-       {0x0091, 0x007F, 257, -1, 43932, 43935, 43951, 43961, 43965, 43932, 0, {43969, 0, 0, 0}, 95, 95, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x0401, 0x0001, 768, 95, 43994, 44000, 44022, 38641, 38645, 38616, 13750, {0, 0, 38649, 0}, 96, 96, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0402, 0x0002, 257, 11, 44086, 44092, 44113, 38709, 38713, 38677, 44151, {38717, 0, 0, 0}, 97, 97, { 1251, 21025, 10007, 866, 0, ';' }},
-       {0x0403, 0x0003, 257, 31, 44154, 44160, 44176, 38778, 38782, 38759, 44194, {38786, 0, 0, 0}, 98, 98, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0404, 0x7C04, 257, 107, 44197, 44203, 44225, 44241, 38852, 38856, 44245, {44248, 0, 0, 0}, 99, 99, { 950, 500, 10002, 950, 0, ',' }},
-       {0x0405, 0x0005, 257, 23, 44255, 44261, 44284, 38914, 38918, 38895, 44314, {38922, 0, 0, 0}, 100, 100, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x0406, 0x0006, 257, 25, 44317, 44323, 44340, 38964, 38968, 38948, 44356, {38972, 0, 0, 0}, 101, 101, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0407, 0x0007, 257, 24, 44359, 44365, 44382, 39011, 39015, 38993, 44404, {39019, 0, 0, 0}, 102, 102, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0408, 0x0008, 257, 39, 44407, 44413, 44428, 39070, 39074, 39044, 44460, {39078, 0, 0, 0}, 103, 103, { 1253, 20273, 10006, 737, 0, ';' }},
-       {0x0409, 0x0009, 257, 109, 44463, 44469, 44469, 39131, 39135, 39120, 44493, {39139, 0, 0, 0}, 104, 104, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x040B, 0x000B, 257, 33, 44496, 44502, 44520, 39225, 39229, 39208, 44534, {39233, 0, 0, 0}, 105, 105, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x040C, 0x000C, 257, 35, 44537, 44543, 44559, 39278, 39282, 39258, 44578, {39286, 0, 0, 0}, 106, 106, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x040D, 0x000D, 257, 47, 44581, 44587, 44603, 39329, 39333, 39308, 44627, {39337, 0, 0, 0}, 107, 107, { 1255, 500, 10005, 862, 1, ',' }},
-       {0x040E, 0x000E, 257, 44, 44630, 44636, 44656, 39390, 39394, 39370, 44679, {39398, 0, 0, 0}, 108, 108, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x040F, 0x000F, 257, 51, 44682, 44688, 44708, 39437, 39441, 39414, 44728, {39445, 0, 0, 0}, 109, 109, { 1252, 20871, 10079, 850, 0, ';' }},
-       {0x0410, 0x0010, 257, 52, 44731, 44737, 44753, 39485, 39489, 39465, 44771, {39493, 0, 0, 0}, 110, 110, { 1252, 20280, 10000, 850, 0, ';' }},
-       {0x0411, 0x0011, 257, 55, 44774, 44780, 44797, 39537, 39541, 39515, 44816, {39545, 0, 0, 0}, 111, 111, { 932, 20290, 10001, 932, 0, ',' }},
-       {0x0412, 0x0012, 257, 58, 44819, 44825, 44846, 39592, 39596, 39572, 44871, {39600, 0, 0, 0}, 112, 112, { 949, 20833, 10003, 949, 0, ',' }},
-       {0x0413, 0x0013, 257, 77, 44874, 44880, 44900, 39630, 39634, 39610, 44923, {39638, 0, 0, 0}, 113, 113, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0414, 0x7C14, 257, 78, 44926, 44932, 44959, 39679, 39683, 39687, 44981, {38972, 0, 0, 0}, 114, 114, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0415, 0x0015, 257, 86, 44984, 44990, 45006, 39707, 39711, 39690, 45022, {39715, 0, 0, 0}, 115, 115, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0416, 0x0016, 257, 14, 45025, 45031, 45051, 39764, 39768, 39739, 45071, {39772, 0, 0, 0}, 116, 116, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0417, 0x0017, 257, 18, 45074, 45080, 45102, 39816, 39820, 39795, 13753, {39824, 0, 0, 0}, 117, 117, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0418, 0x0018, 257, 91, 45121, 45127, 45146, 39865, 39869, 39844, 45166, {39873, 0, 0, 0}, 118, 118, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0419, 0x0019, 257, 93, 45169, 45175, 45192, 39918, 39922, 39892, 45222, {39926, 0, 0, 0}, 119, 119, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x041A, 0x001A, 257, 43, 45225, 45231, 45250, 39993, 39997, 39972, 45270, {40001, 0, 0, 0}, 120, 120, { 1250, 500, 10082, 852, 0, ';' }},
-       {0x041B, 0x001B, 257, 99, 45273, 45279, 45297, 40043, 40047, 12799, 45321, {40051, 0, 0, 0}, 121, 121, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x041C, 0x001C, 257, 2, 45324, 45330, 45349, 40093, 40097, 40075, 45367, {40101, 0, 0, 0}, 122, 122, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x041D, 0x001D, 257, 96, 45370, 45376, 45393, 40140, 40144, 40121, 45411, {38972, 0, 0, 0}, 123, 123, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x041E, 0x001E, 512, 102, 45414, 45420, 45436, 40166, 40170, 40148, 45458, {0, 40174, 0, 0}, 124, 124, { 874, 20838, 10021, 874, 0, ',' }},
-       {0x041F, 0x001F, 257, 105, 45461, 45467, 45484, 40222, 40226, 12808, 45504, {40230, 0, 0, 0}, 125, 125, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x0420, 0x0020, 257, 85, 45507, 45513, 45529, 40261, 40265, 40244, 45555, {40269, 0, 0, 0}, 126, 126, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0421, 0x0021, 257, 45, 45558, 45564, 45587, 40330, 40334, 40299, 45616, {40338, 0, 0, 0}, 127, 127, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0422, 0x0022, 257, 108, 45619, 45625, 45645, 40391, 40395, 40357, 45683, {40399, 0, 0, 0}, 128, 128, { 1251, 500, 10017, 866, 0, ';' }},
-       {0x0423, 0x0023, 257, 15, 45686, 45692, 45713, 40480, 40484, 40445, 45753, {40488, 0, 0, 0}, 129, 129, { 1251, 500, 10007, 866, 0, ';' }},
-       {0x0424, 0x0024, 257, 98, 45756, 45762, 45783, 40557, 40561, 40530, 45809, {40565, 0, 0, 0}, 130, 130, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0425, 0x0025, 257, 29, 45812, 45818, 45837, 40605, 40609, 40587, 45851, {40613, 0, 0, 0}, 131, 131, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0426, 0x0026, 257, 66, 45854, 45860, 45877, 40654, 40658, 40633, 45897, {40662, 0, 0, 0}, 132, 132, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0427, 0x0027, 257, 64, 45900, 45906, 45929, 40705, 40709, 40681, 45949, {40713, 0, 0, 0}, 133, 133, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0428, 0x7C28, 257, 103, 45952, 45963, 45992, 40758, 40762, 40736, 46028, {0, 0, 0, 0}, 134, 134, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0429, 0x0029, 257, 50, 46031, 46037, 46052, 40788, 40792, 40766, 46076, {40796, 0, 0, 0}, 135, 135, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x042A, 0x002A, 257, 113, 46079, 46085, 46106, 40849, 35702, 40820, 46134, {40853, 0, 0, 0}, 136, 136, { 1258, 500, 10000, 1258, 0, ',' }},
-       {0x042B, 0x002B, 257, 3, 46137, 46143, 46162, 40895, 40899, 40868, 1929, {40903, 0, 0, 0}, 137, 137, { 0, 500, 2, 1, 0, ',' }},
-       {0x042C, 0x782C, 257, 7, 46196, 46207, 46239, 40960, 40964, 40933, 46265, {40968, 0, 0, 0}, 138, 138, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x042D, 0x002D, 257, 31, 46268, 46274, 46289, 41005, 41009, 40987, 44194, {41013, 0, 0, 0}, 139, 139, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x042F, 0x002F, 257, 71, 46308, 46314, 46337, 41068, 41072, 41033, 46381, {41076, 0, 0, 0}, 140, 140, { 1251, 500, 10007, 866, 0, ';' }},
-       {0x0432, 0x0032, 257, 115, 46384, 46390, 41130, 41139, 41143, 41120, 46412, {0, 0, 0, 0}, 141, 141, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0434, 0x0034, 257, 115, 46415, 46421, 41156, 41165, 41169, 41147, 46412, {0, 0, 0, 0}, 142, 142, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0435, 0x0035, 257, 115, 46442, 46448, 46468, 41189, 41193, 41173, 46412, {41197, 0, 0, 0}, 143, 143, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0436, 0x0036, 257, 115, 46493, 46499, 46524, 41231, 41235, 41218, 46412, {41239, 0, 0, 0}, 144, 144, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0437, 0x0037, 257, 37, 46548, 46554, 46573, 41293, 41297, 41259, 46628, {41301, 0, 0, 0}, 145, 145, { 0, 500, 2, 1, 0, ';' }},
-       {0x0438, 0x0038, 257, 34, 46631, 46637, 46661, 41387, 41391, 41366, 46682, {0, 0, 0, 0}, 146, 146, { 1252, 20277, 10079, 850, 0, ';' }},
-       {0x0439, 0x0039, 257, 48, 46685, 46691, 46705, 41420, 41424, 41395, 46736, {41428, 0, 0, 0}, 147, 147, { 0, 500, 2, 1, 0, ',' }},
-       {0x043A, 0x003A, 257, 73, 46739, 46745, 46761, 41498, 41502, 41481, 46775, {41506, 0, 0, 0}, 148, 148, { 0, 500, 2, 1, 0, ',' }},
-       {0x043B, 0x003B, 257, 78, 46778, 46784, 46807, 41561, 41565, 41527, 44981, {41569, 0, 0, 0}, 149, 149, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0441, 0x0041, 257, 56, 46832, 46838, 46854, 41856, 41860, 41835, 46872, {41864, 0, 0, 0}, 150, 150, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x0443, 0x7C43, 257, 111, 46875, 46886, 46912, 41905, 41909, 41885, 46938, {41913, 0, 0, 0}, 151, 151, { 1254, 500, 10029, 857, 0, ';' }},
-       {0x0445, 0x0045, 257, 48, 46941, 46947, 46963, 41960, 41964, 41933, 46736, {41968, 0, 0, 0}, 152, 152, { 0, 500, 2, 1, 0, ',' }},
-       {0x0447, 0x0047, 257, 48, 46994, 47000, 47017, 42152, 42156, 42118, 46736, {42160, 0, 0, 0}, 153, 153, { 0, 500, 2, 1, 0, ',' }},
-       {0x0448, 0x0048, 257, 48, 47054, 47060, 47074, 42241, 42245, 42216, 46736, {0, 0, 0, 0}, 154, 154, { 0, 500, 2, 1, 0, ',' }},
-       {0x0449, 0x0049, 257, 48, 47105, 47111, 47125, 42274, 42278, 42249, 46736, {42282, 0, 0, 0}, 155, 155, { 0, 500, 2, 1, 0, ',' }},
-       {0x044A, 0x004A, 257, 48, 47165, 47171, 47186, 42376, 42380, 42347, 46736, {42384, 0, 0, 0}, 156, 156, { 0, 500, 2, 1, 0, ',' }},
-       {0x044B, 0x004B, 257, 48, 47233, 47239, 47255, 42473, 42477, 37865, 46736, {42481, 0, 0, 0}, 157, 157, { 0, 500, 2, 1, 0, ',' }},
-       {0x044C, 0x004C, 257, 48, 47286, 47292, 47310, 42578, 42582, 42546, 46736, {42586, 0, 0, 0}, 158, 158, { 0, 500, 2, 1, 0, ',' }},
-       {0x044D, 0x004D, 257, 48, 47350, 47356, 47373, 42664, 42668, 42630, 46736, {42672, 0, 0, 0}, 159, 159, { 0, 500, 2, 1, 0, ',' }},
-       {0x044E, 0x004E, 257, 48, 47410, 47416, 47432, 42752, 2530, 42725, 46736, {42756, 0, 0, 0}, 160, 160, { 0, 500, 2, 1, 0, ',' }},
-       {0x0451, 0x0051, 257, 20, 47463, 47469, 47485, 42920, 42924, 42884, 13832, {0, 0, 0, 0}, 161, 161, { 0, 500, 2, 1, 0, ',' }},
-       {0x0452, 0x0052, 257, 36, 47531, 47537, 47560, 42945, 42949, 42928, 47587, {42953, 0, 0, 0}, 162, 162, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x0453, 0x0053, 257, 57, 47590, 47596, 47613, 42994, 42998, 42969, 47653, {43002, 0, 0, 0}, 163, 163, { 0, 500, 2, 1, 0, ',' }},
-       {0x0454, 0x0054, 257, 60, 47656, 47662, 47673, 43074, 43078, 43057, 47695, {43082, 0, 0, 0}, 164, 164, { 0, 500, 2, 1, 0, ',' }},
-       {0x0456, 0x0056, 257, 31, 47698, 47704, 47721, 43147, 43151, 43128, 44194, {39493, 0, 0, 0}, 165, 165, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0457, 0x0057, 257, 48, 47738, 47745, 47761, 43186, 43155, 43155, 46736, {0, 0, 0, 0}, 166, 166, { 0, 500, 2, 1, 0, ',' }},
-       {0x045B, 0x005B, 257, 63, 47795, 47801, 47821, 43217, 43221, 43190, 47871, {43225, 0, 0, 0}, 167, 167, { 0, 500, 2, 1, 0, ',' }},
-       {0x045E, 0x005E, 257, 32, 47874, 47880, 47899, 43305, 43309, 8151, 47930, {43313, 0, 0, 0}, 168, 168, { 0, 500, 2, 1, 0, ';' }},
-       {0x0461, 0x0061, 257, 79, 47933, 47939, 47954, 43426, 43430, 1992, 47991, {43434, 0, 0, 0}, 169, 169, { 0, 500, 2, 1, 0, ',' }},
-       {0x0463, 0x0063, 1024, 1, 47994, 48000, 48021, 43503, 43507, 43484, 48051, {0, 0, 0, 0}, 170, 170, { 0, 500, 2, 1, 1, ';' }},
-       {0x0464, 0x0064, 257, 84, 48054, 48061, 48084, 43524, 43511, 43511, 48105, {43528, 0, 0, 0}, 171, 171, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x0468, 0x7C68, 257, 75, 48108, 48119, 48142, 43560, 43564, 43551, 48159, {0, 0, 0, 0}, 172, 172, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x046A, 0x006A, 257, 75, 48162, 48168, 48185, 43593, 43597, 43568, 48159, {0, 0, 0, 0}, 173, 173, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x046C, 0x006C, 257, 115, 48231, 48238, 43620, 43637, 43601, 43601, 46412, {0, 0, 0, 0}, 174, 174, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x046F, 0x006F, 257, 38, 48268, 48274, 48298, 43668, 43672, 43641, 48329, {43676, 0, 0, 0}, 175, 175, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0470, 0x0070, 257, 75, 48332, 48338, 48338, 43711, 43715, 43703, 48159, {0, 0, 0, 0}, 176, 176, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x0478, 0x0078, 257, 20, 48353, 48359, 48378, 43743, 43747, 43719, 13832, {43751, 0, 0, 0}, 177, 177, { 0, 500, 2, 1, 0, ',' }},
-       {0x047E, 0x007E, 257, 35, 48397, 48403, 48419, 43784, 43788, 43764, 44578, {43792, 0, 0, 0}, 178, 178, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0485, 0x0085, 257, 93, 48438, 48445, 43887, 43905, 43877, 43877, 45222, {0, 0, 0, 0}, 179, 179, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0487, 0x0087, 257, 94, 48460, 48466, 48466, 43924, 43928, 43909, 48487, {0, 0, 0, 0}, 180, 180, { 1252, 37, 10000, 437, 0, ';' }},
-       {0x0491, 0x0091, 257, 36, 48490, 48496, 48529, 43961, 43965, 43932, 47587, {43969, 0, 0, 0}, 181, 181, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x0801, 0x0001, 257, 49, 48565, 48571, 48585, 48615, 38645, 38616, 48619, {48622, 0, 0, 0}, 182, 182, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0804, 0x0004, 257, 20, 48654, 38874, 48660, 38848, 38852, 38856, 13832, {38859, 0, 0, 0}, 183, 183, { 936, 500, 10008, 936, 0, ',' }},
-       {0x0807, 0x0007, 257, 18, 48676, 48682, 48703, 48721, 39015, 38993, 13753, {39019, 0, 0, 0}, 184, 184, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0809, 0x0009, 257, 36, 48725, 48731, 48731, 48756, 39135, 39120, 47587, {39139, 0, 0, 0}, 185, 185, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x080A, 0x000A, 257, 74, 48760, 48766, 48783, 48802, 39182, 39158, 48806, {39493, 0, 0, 0}, 186, 186, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x080C, 0x000C, 257, 10, 48809, 48815, 48832, 48853, 39282, 39258, 48857, {39286, 0, 0, 0}, 187, 187, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0810, 0x0010, 257, 18, 48860, 48866, 48888, 48908, 39489, 39465, 13753, {39493, 0, 0, 0}, 188, 188, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0813, 0x0013, 257, 10, 48912, 48918, 48934, 48955, 39634, 39610, 48857, {39638, 0, 0, 0}, 189, 189, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0814, 0x7814, 257, 78, 48959, 48965, 48992, 49008, 49012, 49016, 44981, {38972, 0, 0, 0}, 190, 190, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0816, 0x0016, 257, 88, 49019, 49025, 49047, 49069, 39768, 39739, 49073, {39772, 0, 0, 0}, 191, 191, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x081D, 0x001D, 257, 33, 49076, 49082, 49100, 49118, 40144, 40121, 44534, {38972, 0, 0, 0}, 192, 192, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x082C, 0x742C, 257, 7, 49122, 49133, 46239, 49168, 40964, 40933, 46265, {40968, 0, 0, 0}, 193, 193, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x083C, 0x003C, 257, 46, 49172, 49178, 49194, 41605, 41609, 41588, 49210, {41613, 0, 0, 0}, 194, 194, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0843, 0x7843, 257, 111, 49213, 49224, 46912, 41905, 41909, 41885, 46938, {49253, 0, 0, 0}, 195, 195, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0845, 0x0045, 257, 9, 49291, 49297, 49318, 49361, 41964, 41933, 49365, {41968, 0, 0, 0}, 196, 196, { 0, 500, 2, 1, 0, ',' }},
-       {0x0C01, 0x0001, 257, 30, 49368, 49374, 49389, 49413, 38645, 38616, 49417, {48622, 0, 0, 0}, 197, 197, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0C04, 0x7C04, 257, 41, 49420, 49426, 49469, 49506, 38852, 38856, 49510, {44248, 0, 0, 0}, 198, 198, { 950, 500, 10002, 950, 0, ',' }},
-       {0x0C07, 0x0007, 257, 5, 49513, 49519, 49536, 49558, 39015, 38993, 49562, {39019, 0, 0, 0}, 199, 199, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0C09, 0x0009, 257, 6, 49565, 49571, 49571, 49591, 39135, 39120, 49595, {39139, 0, 0, 0}, 200, 200, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0C0A, 0x000A, 257, 31, 49598, 49604, 49620, 49639, 39182, 39158, 44194, {39186, 0, 0, 0}, 201, 201, { 1252, 20284, 10000, 850, 0, ';' }},
-       {0x0C0C, 0x000C, 257, 17, 49643, 49649, 49665, 49684, 39282, 39258, 49688, {49691, 0, 0, 0}, 202, 202, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0C3B, 0x003B, 257, 33, 49713, 49719, 49743, 49769, 49773, 41527, 44534, {41569, 0, 0, 0}, 203, 203, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x1001, 0x0001, 257, 67, 49777, 49783, 49798, 49826, 38645, 38616, 49830, {48622, 0, 0, 0}, 204, 204, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x1004, 0x0004, 257, 97, 49833, 49839, 49871, 49890, 38852, 38856, 49894, {38859, 0, 0, 0}, 205, 205, { 936, 500, 10008, 936, 0, ',' }},
-       {0x1007, 0x0007, 257, 65, 49897, 49903, 49923, 49943, 39015, 38993, 49947, {39019, 0, 0, 0}, 206, 206, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x1009, 0x0009, 257, 17, 49950, 49956, 49956, 49973, 39135, 39120, 49688, {39139, 0, 0, 0}, 207, 207, { 1252, 37, 10000, 850, 0, ',' }},
-       {0x100A, 0x000A, 257, 40, 49977, 49983, 50003, 50024, 39182, 39158, 50028, {39186, 0, 0, 0}, 208, 208, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x100C, 0x000C, 257, 18, 50031, 50037, 50058, 50077, 39282, 39258, 13753, {39286, 0, 0, 0}, 209, 209, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x101A, 0x001A, 257, 8, 50081, 50087, 50121, 50152, 50156, 39972, 50160, {40001, 0, 0, 0}, 210, 210, { 1250, 870, 10082, 852, 0, ';' }},
-       {0x1401, 0x0001, 257, 27, 50163, 50169, 50186, 50218, 38645, 38616, 50222, {48622, 0, 0, 0}, 211, 211, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x1404, 0x7C04, 257, 72, 50225, 50231, 50270, 50307, 38852, 38856, 50311, {44248, 0, 0, 0}, 212, 212, { 950, 500, 10002, 950, 0, ',' }},
-       {0x1407, 0x0007, 257, 62, 50314, 50320, 50343, 50367, 39015, 38993, 50371, {39019, 0, 0, 0}, 213, 213, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x1409, 0x0009, 257, 80, 50374, 50380, 50380, 50402, 39135, 39120, 50406, {39139, 0, 0, 0}, 214, 214, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x140A, 0x000A, 257, 22, 50409, 50415, 50436, 50458, 39182, 39158, 50462, {39186, 0, 0, 0}, 215, 215, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x140C, 0x000C, 257, 65, 50465, 50471, 50491, 50514, 39282, 39258, 49947, {39286, 0, 0, 0}, 216, 216, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x141A, 0x681A, 257, 8, 50518, 50529, 50569, 50600, 50604, 50608, 50160, {50611, 0, 0, 0}, 217, 217, { 1250, 870, 10082, 852, 0, ';' }},
-       {0x1801, 0x0001, 257, 68, 50634, 50640, 50657, 50687, 38645, 38616, 50691, {48622, 0, 0, 0}, 218, 218, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x1809, 0x0009, 257, 46, 50694, 50700, 50700, 50718, 39135, 39120, 49210, {39139, 0, 0, 0}, 219, 219, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x180A, 0x000A, 257, 82, 50722, 50728, 50745, 50764, 39182, 39158, 50768, {39186, 0, 0, 0}, 220, 220, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x180C, 0x000C, 257, 69, 50771, 50777, 50793, 50812, 39282, 39258, 50816, {39286, 0, 0, 0}, 221, 221, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x181A, 0x701A, 257, 8, 50819, 50830, 50870, 50922, 50926, 50930, 50160, {50611, 0, 0, 0}, 222, 222, { 1250, 870, 10082, 852, 0, ';' }},
-       {0x1C01, 0x0001, 257, 104, 50933, 50939, 50956, 50982, 38645, 38616, 50986, {48622, 0, 0, 0}, 223, 223, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x1C09, 0x0009, 257, 115, 50989, 50995, 50995, 51018, 39135, 39120, 46412, {39139, 0, 0, 0}, 224, 224, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x1C0A, 0x000A, 257, 26, 51022, 51028, 51057, 51090, 39182, 39158, 51094, {39186, 0, 0, 0}, 225, 225, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x1C1A, 0x6C1A, 257, 8, 51097, 51108, 50870, 51151, 51155, 50930, 50160, {41076, 0, 0, 0}, 226, 226, { 1251, 21025, 10007, 855, 0, ';' }},
-       {0x2001, 0x0001, 257, 81, 51159, 51165, 51179, 51207, 38645, 38616, 51211, {48622, 0, 0, 0}, 227, 227, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x2009, 0x0009, 257, 53, 51214, 51220, 51220, 51238, 39135, 39120, 51242, {39139, 0, 0, 0}, 228, 228, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x200A, 0x000A, 257, 112, 51245, 51251, 51271, 51292, 39182, 39158, 51296, {39186, 0, 0, 0}, 229, 229, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x201A, 0x641A, 257, 8, 51299, 51310, 50569, 51353, 51357, 50608, 50160, {41076, 0, 0, 0}, 230, 230, { 1251, 870, 10082, 855, 0, ';' }},
-       {0x2401, 0x0001, 257, 114, 51361, 51367, 51382, 51410, 38645, 38616, 51414, {48622, 0, 0, 0}, 231, 231, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x240A, 0x000A, 257, 21, 51417, 51423, 51442, 51462, 39182, 39158, 51466, {39186, 0, 0, 0}, 232, 232, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x241A, 0x701A, 257, 92, 51469, 51480, 51504, 51532, 2239, 50930, 51536, {50611, 0, 0, 0}, 233, 233, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x2801, 0x0001, 257, 101, 51539, 51545, 51560, 51588, 38645, 38616, 51592, {48622, 0, 0, 0}, 234, 234, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x2809, 0x0009, 257, 16, 51595, 51601, 51601, 51618, 39135, 39120, 51622, {39139, 0, 0, 0}, 235, 235, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x280A, 0x000A, 257, 83, 51625, 51631, 51646, 51663, 39182, 39158, 51667, {39186, 0, 0, 0}, 236, 236, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x281A, 0x6C1A, 257, 92, 51670, 51681, 51504, 51708, 2239, 50930, 51536, {41076, 0, 0, 0}, 237, 237, { 1251, 21025, 10007, 855, 0, ';' }},
-       {0x2C01, 0x0001, 257, 54, 51712, 51718, 51734, 51764, 38645, 38616, 51768, {48622, 0, 0, 0}, 238, 238, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x2C09, 0x0009, 257, 106, 51771, 51777, 51777, 51807, 39135, 39120, 51811, {39139, 0, 0, 0}, 239, 239, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x2C0A, 0x000A, 257, 4, 51814, 51820, 51840, 51861, 39182, 39158, 51865, {39186, 0, 0, 0}, 240, 240, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x2C1A, 0x701A, 257, 70, 51868, 51879, 51907, 51940, 2239, 50930, 51944, {50611, 0, 0, 0}, 241, 241, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x3001, 0x0001, 257, 61, 51947, 51953, 51970, 51998, 38645, 38616, 52002, {48622, 0, 0, 0}, 242, 242, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x3009, 0x0009, 257, 116, 52005, 52011, 52011, 52030, 39135, 39120, 52034, {39139, 0, 0, 0}, 243, 243, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x300A, 0x000A, 257, 28, 52037, 52043, 52061, 52080, 39182, 39158, 52084, {39186, 0, 0, 0}, 244, 244, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x301A, 0x6C1A, 257, 70, 52087, 52098, 51907, 52129, 2239, 50930, 51944, {41076, 0, 0, 0}, 245, 245, { 1251, 21025, 10007, 855, 0, ';' }},
-       {0x3401, 0x0001, 257, 59, 52133, 52139, 52155, 52185, 38645, 38616, 52189, {48622, 0, 0, 0}, 246, 246, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x3409, 0x0009, 257, 84, 52192, 52198, 52198, 52220, 39135, 39120, 48105, {39139, 0, 0, 0}, 247, 247, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x340A, 0x000A, 257, 19, 52224, 52230, 52246, 52263, 39182, 39158, 52267, {39186, 0, 0, 0}, 248, 248, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x3801, 0x0001, 257, 0, 52270, 52276, 52306, 52370, 38645, 38616, 52374, {48622, 0, 0, 0}, 249, 249, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x380A, 0x000A, 257, 110, 52377, 52383, 52401, 52420, 39182, 39158, 52424, {39186, 0, 0, 0}, 250, 250, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x3C01, 0x0001, 257, 12, 52427, 52433, 52450, 52482, 38645, 38616, 52486, {48622, 0, 0, 0}, 251, 251, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x3C0A, 0x000A, 257, 89, 52489, 52495, 52514, 52534, 39182, 39158, 52538, {39186, 0, 0, 0}, 252, 252, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x4001, 0x0001, 257, 90, 52541, 52547, 52562, 52586, 38645, 38616, 52590, {48622, 0, 0, 0}, 253, 253, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x4009, 0x0009, 257, 48, 52593, 52599, 52599, 52615, 39135, 39120, 46736, {39139, 0, 0, 0}, 254, 254, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x400A, 0x000A, 257, 13, 52619, 52625, 52643, 52662, 39182, 39158, 52666, {39186, 0, 0, 0}, 255, 255, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x440A, 0x000A, 257, 100, 52669, 52675, 52697, 52720, 39182, 39158, 52724, {39186, 0, 0, 0}, 256, 256, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x4809, 0x0009, 257, 97, 52727, 52733, 52733, 52753, 39135, 39120, 49894, {39139, 0, 0, 0}, 257, 257, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x480A, 0x000A, 257, 42, 52757, 52763, 52782, 52802, 39182, 39158, 52806, {39186, 0, 0, 0}, 258, 258, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x4C0A, 0x000A, 257, 76, 52809, 52815, 52835, 52856, 39182, 39158, 52860, {39186, 0, 0, 0}, 259, 259, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x500A, 0x000A, 257, 87, 52863, 52869, 52891, 52914, 39182, 39158, 52918, {39186, 0, 0, 0}, 260, 260, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x540A, 0x000A, 257, 109, 52921, 52927, 52951, 52977, 39182, 39158, 44493, {39186, 0, 0, 0}, 261, 261, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x641A, 0x781A, 257, -1, 52981, 52989, 53008, 51353, 51357, 50608, 0, {41076, 0, 0, 0}, 262, 262, { 1251, 870, 10082, 855, 0, ';' }},
-       {0x681A, 0x781A, 257, -1, 53017, 53025, 53008, 50600, 50604, 50608, 0, {50611, 0, 0, 0}, 263, 263, { 1250, 870, 10082, 852, 0, ';' }},
-       {0x6C1A, 0x7C1A, 257, -1, 53041, 53049, 53068, 51708, 2239, 50930, 0, {41076, 0, 0, 0}, 264, 264, { 1251, 21025, 10007, 855, 0, ';' }},
-       {0x701A, 0x7C1A, 257, -1, 53081, 53089, 53068, 51532, 2239, 50930, 0, {50611, 0, 0, 0}, 265, 265, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x742C, 0x002C, 257, -1, 53105, 53113, 40948, 49168, 40964, 40933, 0, {40968, 0, 0, 0}, 266, 266, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x7804, 0x007F, 257, -1, 38856, 38874, 38841, 38848, 38852, 38856, 0, {38859, 0, 0, 0}, 267, 267, { 936, 500, 10008, 936, 0, ',' }},
-       {0x7814, 0x0014, 257, -1, 49016, 53136, 53154, 49008, 49012, 49016, 0, {38972, 0, 0, 0}, 268, 268, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x781A, 0x007F, 257, -1, 50608, 53162, 53008, 50600, 50604, 50608, 0, {50611, 0, 0, 0}, 269, 269, { 1250, 870, 10082, 852, 0, ';' }},
-       {0x782C, 0x002C, 257, -1, 53170, 53178, 40948, 40960, 40964, 40933, 0, {40968, 0, 0, 0}, 270, 270, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x7843, 0x0043, 257, -1, 53198, 53206, 41894, 41905, 41909, 41885, 0, {49253, 0, 0, 0}, 271, 271, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x7850, 0x0050, 257, -1, 53223, 53231, 42831, 53252, 42848, 42818, 0, {42852, 0, 0, 0}, 272, 272, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x7C04, 0x7804, 257, -1, 53256, 44203, 38841, 44241, 38852, 38856, 0, {44248, 0, 0, 0}, 273, 273, { 950, 500, 10002, 950, 0, ',' }},
-       {0x7C04, 0x7C04, 257, -1, 53264, 53271, 38841, 44241, 38852, 38856, 0, {44248, 0, 0, 0}, 274, 274, { 950, 500, 10002, 950, 0, ',' }},
-       {0x7C14, 0x0014, 257, -1, 39687, 53300, 53318, 39679, 39683, 39687, 0, {38972, 0, 0, 0}, 275, 275, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x7C1A, 0x007F, 257, -1, 50930, 53332, 53068, 53340, 2239, 50930, 0, {41076, 0, 0, 0}, 276, 276, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x7C28, 0x0028, 257, -1, 53344, 53352, 40745, 40758, 40762, 40736, 0, {0, 0, 0, 0}, 277, 277, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x7C43, 0x0043, 257, -1, 53369, 53377, 41894, 41905, 41909, 41885, 0, {41913, 0, 0, 0}, 278, 278, { 1254, 500, 10029, 857, 0, ';' }},
-       {0x7C5F, 0x005F, 257, -1, 53391, 53400, 43386, 43396, 43358, 43358, 0, {0, 0, 0, 0}, 279, 279, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x7C68, 0x0068, 257, -1, 53432, 53440, 43554, 43560, 43564, 43551, 0, {0, 0, 0, 0}, 280, 280, { 1252, 37, 10000, 437, 0, ',' }}
+       {0x0001, 0x007F, 768, -1, 38091, 38094, 38101, 38116, 38120, 38091, 0, {0, 0, 38124, 0}, 0, 0, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0002, 0x007F, 257, -1, 38152, 38155, 38165, 38184, 38188, 38152, 0, {38192, 0, 0, 0}, 1, 1, { 1251, 21025, 10007, 866, 0, ';' }},
+       {0x0003, 0x007F, 257, -1, 38234, 38237, 38245, 38253, 38257, 38234, 0, {38261, 0, 0, 0}, 2, 2, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0004, 0x0004, 257, -1, 38281, 38288, 38316, 38323, 38327, 38331, 0, {38334, 0, 0, 0}, 3, 3, { 936, 500, 10008, 936, 0, ',' }},
+       {0x0004, 0x7804, 257, -1, 38341, 38349, 38316, 38323, 38327, 38331, 0, {38334, 0, 0, 0}, 4, 4, { 936, 500, 10008, 936, 0, ',' }},
+       {0x0005, 0x007F, 257, -1, 38370, 38373, 38379, 38389, 38393, 38370, 0, {38397, 0, 0, 0}, 5, 5, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x0006, 0x007F, 257, -1, 38423, 38426, 38433, 38439, 38443, 38423, 0, {38447, 0, 0, 0}, 6, 6, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0007, 0x007F, 257, -1, 38468, 38471, 38478, 38486, 38490, 38468, 0, {38494, 0, 0, 0}, 7, 7, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0008, 0x007F, 257, -1, 38519, 38522, 38528, 38545, 38549, 38519, 0, {38553, 0, 0, 0}, 8, 8, { 1253, 20273, 10006, 737, 0, ';' }},
+       {0x0009, 0x007F, 257, -1, 38595, 38598, 38598, 38606, 38610, 38595, 0, {38614, 0, 0, 0}, 9, 9, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x000A, 0x007F, 257, -1, 38633, 38636, 38644, 38653, 38657, 38633, 0, {38661, 0, 0, 0}, 10, 10, { 1252, 20284, 10000, 850, 0, ';' }},
+       {0x000B, 0x007F, 257, -1, 38683, 38686, 38694, 38700, 38704, 38683, 0, {38708, 0, 0, 0}, 11, 11, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x000C, 0x007F, 257, -1, 38733, 38736, 38743, 38753, 38757, 38733, 0, {38761, 0, 0, 0}, 12, 12, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x000D, 0x007F, 257, -1, 38783, 38786, 38793, 38804, 38808, 38783, 0, {38812, 0, 0, 0}, 13, 13, { 1255, 500, 10005, 862, 1, ',' }},
+       {0x000E, 0x007F, 257, -1, 38845, 38848, 38858, 38865, 38869, 38845, 0, {38873, 0, 0, 0}, 14, 14, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x000F, 0x007F, 257, -1, 38889, 38892, 38902, 38912, 38916, 38889, 0, {38920, 0, 0, 0}, 15, 15, { 1252, 20871, 10079, 850, 0, ';' }},
+       {0x0010, 0x007F, 257, -1, 38940, 38943, 38951, 38960, 38964, 38940, 0, {38968, 0, 0, 0}, 16, 16, { 1252, 20280, 10000, 850, 0, ';' }},
+       {0x0011, 0x007F, 257, -1, 38990, 38993, 39002, 39012, 39016, 38990, 0, {39020, 0, 0, 0}, 17, 17, { 932, 20290, 10001, 932, 0, ',' }},
+       {0x0012, 0x007F, 257, -1, 39047, 39050, 39057, 39067, 39071, 39047, 0, {39075, 0, 0, 0}, 18, 18, { 949, 20833, 10003, 949, 0, ',' }},
+       {0x0013, 0x007F, 257, -1, 39085, 39088, 39094, 39105, 39109, 39085, 0, {39113, 0, 0, 0}, 19, 19, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0014, 0x007F, 257, -1, 39135, 39138, 39148, 39154, 39158, 39162, 0, {38447, 0, 0, 0}, 20, 20, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0015, 0x007F, 257, -1, 39165, 39168, 39175, 39182, 39186, 39165, 0, {39190, 0, 0, 0}, 21, 21, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0016, 0x007F, 257, -1, 39214, 39217, 39228, 39239, 39243, 39214, 0, {39247, 0, 0, 0}, 22, 22, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0017, 0x007F, 257, -1, 39270, 39273, 39281, 39291, 39295, 39270, 0, {39299, 0, 0, 0}, 23, 23, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0018, 0x007F, 257, -1, 39319, 39322, 39331, 39340, 39344, 39319, 0, {39348, 0, 0, 0}, 24, 24, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0019, 0x007F, 257, -1, 39367, 39370, 39378, 39393, 39397, 39367, 0, {39401, 0, 0, 0}, 25, 25, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x001A, 0x007F, 257, -1, 39447, 39450, 39459, 39468, 39472, 39447, 0, {39476, 0, 0, 0}, 26, 26, { 1250, 500, 10082, 852, 0, ';' }},
+       {0x001B, 0x007F, 257, -1, 12674, 39499, 39506, 39518, 39522, 12674, 0, {39526, 0, 0, 0}, 27, 27, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x001C, 0x007F, 257, -1, 39550, 39553, 39562, 39568, 39572, 39550, 0, {39576, 0, 0, 0}, 28, 28, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x001D, 0x007F, 257, -1, 39596, 39599, 39607, 39615, 39619, 39596, 0, {38447, 0, 0, 0}, 29, 29, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x001E, 0x007F, 512, -1, 39623, 39626, 39631, 39641, 39645, 39623, 0, {0, 39649, 0, 0}, 30, 30, { 874, 20838, 10021, 874, 0, ',' }},
+       {0x001F, 0x007F, 257, -1, 12683, 39680, 39688, 39697, 39701, 12683, 0, {39705, 0, 0, 0}, 31, 31, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x0020, 0x007F, 257, -1, 39719, 39722, 39727, 39736, 39740, 39719, 0, {39744, 0, 0, 0}, 32, 32, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0021, 0x007F, 257, -1, 39774, 39777, 39788, 39805, 39809, 39774, 0, {39813, 0, 0, 0}, 33, 33, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0022, 0x007F, 257, -1, 39832, 39835, 39845, 39866, 39870, 39832, 0, {39874, 0, 0, 0}, 34, 34, { 1251, 500, 10017, 866, 0, ';' }},
+       {0x0023, 0x007F, 257, -1, 39920, 39923, 39934, 39955, 39959, 39920, 0, {39963, 0, 0, 0}, 35, 35, { 1251, 500, 10007, 866, 0, ';' }},
+       {0x0024, 0x007F, 257, -1, 40005, 40008, 40018, 40032, 40036, 40005, 0, {40040, 0, 0, 0}, 36, 36, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0025, 0x007F, 257, -1, 40062, 40065, 40074, 40080, 40084, 40062, 0, {40088, 0, 0, 0}, 37, 37, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0026, 0x007F, 257, -1, 40108, 40111, 40119, 40129, 40133, 40108, 0, {40137, 0, 0, 0}, 38, 38, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0027, 0x007F, 257, -1, 40156, 40159, 40170, 40180, 40184, 40156, 0, {40188, 0, 0, 0}, 39, 39, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0028, 0x007F, 257, -1, 40211, 40214, 40220, 40233, 40237, 40211, 0, {0, 0, 0, 0}, 40, 40, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0029, 0x007F, 257, -1, 40241, 40244, 40252, 40263, 40267, 40241, 0, {40271, 0, 0, 0}, 41, 41, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x002A, 0x007F, 257, -1, 40295, 40298, 40309, 40324, 35137, 40295, 0, {40328, 0, 0, 0}, 42, 42, { 1258, 500, 10000, 1258, 0, ',' }},
+       {0x002B, 0x007F, 257, -1, 40343, 40346, 40355, 40370, 40374, 40343, 0, {40378, 0, 0, 0}, 43, 43, { 0, 500, 2, 1, 0, ',' }},
+       {0x002C, 0x007F, 257, -1, 40408, 40411, 40423, 40435, 40439, 40408, 0, {40443, 0, 0, 0}, 44, 44, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x002D, 0x007F, 257, -1, 40462, 40465, 40472, 40480, 40484, 40462, 0, {40488, 0, 0, 0}, 45, 45, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x002F, 0x007F, 257, -1, 40508, 40511, 40522, 40543, 40547, 40508, 0, {40551, 0, 0, 0}, 46, 46, { 1251, 500, 10007, 866, 0, ';' }},
+       {0x0032, 0x007F, 257, -1, 40595, 40598, 40605, 40614, 40618, 40595, 0, {0, 0, 0, 0}, 47, 47, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0034, 0x007F, 257, -1, 40622, 40625, 40631, 40640, 40644, 40622, 0, {0, 0, 0, 0}, 48, 48, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0035, 0x007F, 257, -1, 40648, 40651, 40656, 40664, 40668, 40648, 0, {40672, 0, 0, 0}, 49, 49, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0036, 0x007F, 257, -1, 40693, 40696, 40696, 40706, 40710, 40693, 0, {40714, 0, 0, 0}, 50, 50, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0037, 0x007F, 257, -1, 40734, 40737, 40746, 40768, 40772, 40734, 0, {40776, 0, 0, 0}, 51, 51, { 0, 500, 2, 1, 0, ';' }},
+       {0x0038, 0x007F, 257, -1, 40841, 40844, 40852, 40862, 40866, 40841, 0, {0, 0, 0, 0}, 52, 52, { 1252, 20277, 10079, 850, 0, ';' }},
+       {0x0039, 0x007F, 257, -1, 40870, 40873, 40879, 40895, 40899, 40870, 0, {40903, 0, 0, 0}, 53, 53, { 0, 500, 2, 1, 0, ',' }},
+       {0x003A, 0x007F, 257, -1, 40956, 40959, 40967, 40973, 40977, 40956, 0, {40981, 0, 0, 0}, 54, 54, { 0, 500, 2, 1, 0, ',' }},
+       {0x003B, 0x007F, 257, -1, 41002, 41005, 41019, 41036, 41040, 41002, 0, {41044, 0, 0, 0}, 55, 55, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x003C, 0x007F, 257, -1, 41063, 41066, 41072, 41080, 41084, 41063, 0, {41088, 0, 0, 0}, 56, 56, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x003E, 0x007F, 257, -1, 41109, 41112, 41118, 41132, 41136, 41109, 0, {41140, 0, 0, 0}, 57, 57, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x003F, 0x007F, 257, -1, 41157, 41160, 41167, 41187, 41191, 41157, 0, {41195, 0, 0, 0}, 58, 58, { 0, 500, 2, 1, 0, ';' }},
+       {0x0040, 0x007F, 257, -1, 41237, 41240, 41247, 41264, 41268, 41237, 0, {41272, 0, 0, 0}, 59, 59, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0041, 0x007F, 257, -1, 41310, 41313, 41321, 41331, 41335, 41310, 0, {41339, 0, 0, 0}, 60, 60, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x0043, 0x007F, 257, -1, 41360, 41363, 41369, 41380, 41384, 41360, 0, {41388, 0, 0, 0}, 61, 61, { 1254, 500, 10029, 857, 0, ';' }},
+       {0x0045, 0x007F, 257, -1, 41408, 41411, 41419, 41435, 41439, 41408, 0, {41443, 0, 0, 0}, 62, 62, { 0, 500, 2, 1, 0, ',' }},
+       {0x0046, 0x007F, 257, -1, 41508, 41511, 41519, 41538, 41542, 41508, 0, {41546, 0, 0, 0}, 63, 63, { 0, 500, 2, 1, 0, ',' }},
+       {0x0047, 0x007F, 257, -1, 41593, 41596, 41605, 41627, 41631, 41593, 0, {41635, 0, 0, 0}, 64, 64, { 0, 500, 2, 1, 0, ',' }},
+       {0x0048, 0x007F, 257, -1, 41691, 41694, 41700, 41716, 41720, 41691, 0, {0, 0, 0, 0}, 65, 65, { 0, 500, 2, 1, 0, ',' }},
+       {0x0049, 0x007F, 257, -1, 41724, 41727, 41733, 41749, 41753, 41724, 0, {41757, 0, 0, 0}, 66, 66, { 0, 500, 2, 1, 0, ',' }},
+       {0x004A, 0x007F, 257, -1, 41822, 41825, 41832, 41851, 41855, 41822, 0, {41859, 0, 0, 0}, 67, 67, { 0, 500, 2, 1, 0, ',' }},
+       {0x004B, 0x007F, 257, -1, 37340, 41924, 41932, 41948, 41952, 37340, 0, {41956, 0, 0, 0}, 68, 68, { 0, 500, 2, 1, 0, ',' }},
+       {0x004C, 0x007F, 257, -1, 42021, 42024, 42034, 42053, 42057, 42021, 0, {42061, 0, 0, 0}, 69, 69, { 0, 500, 2, 1, 0, ',' }},
+       {0x004D, 0x007F, 257, -1, 42105, 42108, 42117, 42139, 42143, 42105, 0, {42147, 0, 0, 0}, 70, 70, { 0, 500, 2, 1, 0, ',' }},
+       {0x004E, 0x007F, 257, -1, 42200, 42203, 42211, 42227, 2402, 42200, 0, {42231, 0, 0, 0}, 71, 71, { 0, 500, 2, 1, 0, ',' }},
+       {0x0050, 0x007F, 257, -1, 42293, 42296, 42306, 42319, 42323, 42293, 0, {42327, 0, 0, 0}, 72, 72, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0051, 0x007F, 257, -1, 42359, 42362, 42370, 42395, 42399, 42359, 0, {0, 0, 0, 0}, 73, 73, { 0, 500, 2, 1, 0, ',' }},
+       {0x0052, 0x007F, 257, -1, 42403, 42406, 42412, 42420, 42424, 42403, 0, {42428, 0, 0, 0}, 74, 74, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x0053, 0x007F, 257, -1, 42444, 42447, 42453, 42469, 42473, 42444, 0, {42477, 0, 0, 0}, 75, 75, { 0, 500, 2, 1, 0, ',' }},
+       {0x0054, 0x007F, 257, -1, 42532, 42535, 42539, 42549, 42553, 42532, 0, {42557, 0, 0, 0}, 76, 76, { 0, 500, 2, 1, 0, ',' }},
+       {0x0056, 0x007F, 257, -1, 42603, 42606, 42615, 42622, 42626, 42603, 0, {38968, 0, 0, 0}, 77, 77, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0057, 0x007F, 257, -1, 42630, 42634, 42642, 42661, 42630, 42630, 0, {0, 0, 0, 0}, 78, 78, { 0, 500, 2, 1, 0, ',' }},
+       {0x005B, 0x007F, 257, -1, 42665, 42668, 42676, 42692, 42696, 42665, 0, {42700, 0, 0, 0}, 79, 79, { 0, 500, 2, 1, 0, ',' }},
+       {0x005E, 0x007F, 257, -1, 8022, 42759, 42767, 42780, 42784, 8022, 0, {42788, 0, 0, 0}, 80, 80, { 0, 500, 2, 1, 0, ';' }},
+       {0x005F, 0x007F, 257, -1, 42833, 42837, 42861, 42871, 42833, 42833, 0, {0, 0, 0, 0}, 81, 81, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0061, 0x007F, 257, -1, 1883, 42875, 42882, 42901, 42905, 1883, 0, {42909, 0, 0, 0}, 82, 82, { 0, 500, 2, 1, 0, ',' }},
+       {0x0063, 0x007F, 1024, -1, 42959, 42962, 42969, 42978, 42982, 42959, 0, {0, 0, 0, 0}, 83, 83, { 0, 500, 2, 1, 1, ';' }},
+       {0x0064, 0x007F, 257, -1, 42986, 42990, 42990, 42999, 42986, 42986, 0, {43003, 0, 0, 0}, 84, 84, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x0068, 0x007F, 257, -1, 43026, 43029, 43029, 43035, 43039, 43026, 0, {0, 0, 0, 0}, 85, 85, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x006A, 0x007F, 257, -1, 43043, 43046, 43053, 43068, 43072, 43043, 0, {0, 0, 0, 0}, 86, 86, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x006C, 0x007F, 257, -1, 43076, 43080, 43095, 43112, 43076, 43076, 0, {0, 0, 0, 0}, 87, 87, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x006F, 0x007F, 257, -1, 43116, 43119, 43131, 43143, 43147, 43116, 0, {43151, 0, 0, 0}, 88, 88, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0070, 0x007F, 257, -1, 43178, 43181, 43181, 43186, 43190, 43178, 0, {0, 0, 0, 0}, 89, 89, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x0078, 0x007F, 257, -1, 43194, 43197, 43208, 43218, 43222, 43194, 0, {43226, 0, 0, 0}, 90, 90, { 0, 500, 2, 1, 0, ',' }},
+       {0x007E, 0x007F, 257, -1, 43239, 43242, 43249, 43259, 43263, 43239, 0, {43267, 0, 0, 0}, 91, 91, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0084, 0x007F, 257, -1, 43287, 43291, 43304, 43323, 43287, 43287, 0, {43327, 0, 0, 0}, 92, 92, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0085, 0x007F, 257, -1, 43352, 43356, 43362, 43380, 43352, 43352, 0, {0, 0, 0, 0}, 93, 93, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0087, 0x007F, 257, -1, 43384, 43387, 43387, 43399, 43403, 43384, 0, {0, 0, 0, 0}, 94, 94, { 1252, 37, 10000, 437, 0, ';' }},
+       {0x0091, 0x007F, 257, -1, 43407, 43410, 43426, 43436, 43440, 43407, 0, {43444, 0, 0, 0}, 95, 95, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x0401, 0x0001, 768, 95, 43469, 43475, 43497, 38116, 38120, 38091, 13629, {0, 0, 38124, 0}, 96, 96, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0402, 0x0002, 257, 11, 43561, 43567, 43588, 38184, 38188, 38152, 43626, {38192, 0, 0, 0}, 97, 97, { 1251, 21025, 10007, 866, 0, ';' }},
+       {0x0403, 0x0003, 257, 31, 43629, 43635, 43651, 38253, 38257, 38234, 43669, {38261, 0, 0, 0}, 98, 98, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0404, 0x7C04, 257, 107, 43672, 43678, 43700, 43716, 38327, 38331, 43720, {43723, 0, 0, 0}, 99, 99, { 950, 500, 10002, 950, 0, ',' }},
+       {0x0405, 0x0005, 257, 23, 43730, 43736, 43759, 38389, 38393, 38370, 43789, {38397, 0, 0, 0}, 100, 100, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x0406, 0x0006, 257, 25, 43792, 43798, 43815, 38439, 38443, 38423, 43831, {38447, 0, 0, 0}, 101, 101, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0407, 0x0007, 257, 24, 43834, 43840, 43857, 38486, 38490, 38468, 43879, {38494, 0, 0, 0}, 102, 102, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0408, 0x0008, 257, 39, 43882, 43888, 43903, 38545, 38549, 38519, 43935, {38553, 0, 0, 0}, 103, 103, { 1253, 20273, 10006, 737, 0, ';' }},
+       {0x0409, 0x0009, 257, 109, 43938, 43944, 43944, 38606, 38610, 38595, 43968, {38614, 0, 0, 0}, 104, 104, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x040B, 0x000B, 257, 33, 43971, 43977, 43995, 38700, 38704, 38683, 44009, {38708, 0, 0, 0}, 105, 105, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x040C, 0x000C, 257, 35, 44012, 44018, 44034, 38753, 38757, 38733, 44053, {38761, 0, 0, 0}, 106, 106, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x040D, 0x000D, 257, 47, 44056, 44062, 44078, 38804, 38808, 38783, 44102, {38812, 0, 0, 0}, 107, 107, { 1255, 500, 10005, 862, 1, ',' }},
+       {0x040E, 0x000E, 257, 44, 44105, 44111, 44131, 38865, 38869, 38845, 44154, {38873, 0, 0, 0}, 108, 108, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x040F, 0x000F, 257, 51, 44157, 44163, 44183, 38912, 38916, 38889, 44203, {38920, 0, 0, 0}, 109, 109, { 1252, 20871, 10079, 850, 0, ';' }},
+       {0x0410, 0x0010, 257, 52, 44206, 44212, 44228, 38960, 38964, 38940, 44246, {38968, 0, 0, 0}, 110, 110, { 1252, 20280, 10000, 850, 0, ';' }},
+       {0x0411, 0x0011, 257, 55, 44249, 44255, 44272, 39012, 39016, 38990, 44291, {39020, 0, 0, 0}, 111, 111, { 932, 20290, 10001, 932, 0, ',' }},
+       {0x0412, 0x0012, 257, 58, 44294, 44300, 44321, 39067, 39071, 39047, 44346, {39075, 0, 0, 0}, 112, 112, { 949, 20833, 10003, 949, 0, ',' }},
+       {0x0413, 0x0013, 257, 77, 44349, 44355, 44375, 39105, 39109, 39085, 44398, {39113, 0, 0, 0}, 113, 113, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0414, 0x7C14, 257, 78, 44401, 44407, 44434, 39154, 39158, 39162, 44456, {38447, 0, 0, 0}, 114, 114, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0415, 0x0015, 257, 86, 44459, 44465, 44481, 39182, 39186, 39165, 44497, {39190, 0, 0, 0}, 115, 115, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0416, 0x0016, 257, 14, 44500, 44506, 44526, 39239, 39243, 39214, 44546, {39247, 0, 0, 0}, 116, 116, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0417, 0x0017, 257, 18, 44549, 44555, 44577, 39291, 39295, 39270, 13632, {39299, 0, 0, 0}, 117, 117, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0418, 0x0018, 257, 91, 44596, 44602, 44621, 39340, 39344, 39319, 44641, {39348, 0, 0, 0}, 118, 118, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0419, 0x0019, 257, 93, 44644, 44650, 44667, 39393, 39397, 39367, 44697, {39401, 0, 0, 0}, 119, 119, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x041A, 0x001A, 257, 43, 44700, 44706, 44725, 39468, 39472, 39447, 44745, {39476, 0, 0, 0}, 120, 120, { 1250, 500, 10082, 852, 0, ';' }},
+       {0x041B, 0x001B, 257, 99, 44748, 44754, 44772, 39518, 39522, 12674, 44796, {39526, 0, 0, 0}, 121, 121, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x041C, 0x001C, 257, 2, 44799, 44805, 44824, 39568, 39572, 39550, 44842, {39576, 0, 0, 0}, 122, 122, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x041D, 0x001D, 257, 96, 44845, 44851, 44868, 39615, 39619, 39596, 44886, {38447, 0, 0, 0}, 123, 123, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x041E, 0x001E, 512, 102, 44889, 44895, 44911, 39641, 39645, 39623, 44933, {0, 39649, 0, 0}, 124, 124, { 874, 20838, 10021, 874, 0, ',' }},
+       {0x041F, 0x001F, 257, 105, 44936, 44942, 44959, 39697, 39701, 12683, 44979, {39705, 0, 0, 0}, 125, 125, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x0420, 0x0020, 257, 85, 44982, 44988, 45004, 39736, 39740, 39719, 45030, {39744, 0, 0, 0}, 126, 126, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0421, 0x0021, 257, 45, 45033, 45039, 45062, 39805, 39809, 39774, 45091, {39813, 0, 0, 0}, 127, 127, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0422, 0x0022, 257, 108, 45094, 45100, 45120, 39866, 39870, 39832, 45158, {39874, 0, 0, 0}, 128, 128, { 1251, 500, 10017, 866, 0, ';' }},
+       {0x0423, 0x0023, 257, 15, 45161, 45167, 45188, 39955, 39959, 39920, 45228, {39963, 0, 0, 0}, 129, 129, { 1251, 500, 10007, 866, 0, ';' }},
+       {0x0424, 0x0024, 257, 98, 45231, 45237, 45258, 40032, 40036, 40005, 45284, {40040, 0, 0, 0}, 130, 130, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0425, 0x0025, 257, 29, 45287, 45293, 45312, 40080, 40084, 40062, 45326, {40088, 0, 0, 0}, 131, 131, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0426, 0x0026, 257, 66, 45329, 45335, 45352, 40129, 40133, 40108, 45372, {40137, 0, 0, 0}, 132, 132, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0427, 0x0027, 257, 64, 45375, 45381, 45404, 40180, 40184, 40156, 45424, {40188, 0, 0, 0}, 133, 133, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0428, 0x7C28, 257, 103, 45427, 45438, 45467, 40233, 40237, 40211, 45503, {0, 0, 0, 0}, 134, 134, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0429, 0x0029, 257, 50, 45506, 45512, 45527, 40263, 40267, 40241, 45551, {40271, 0, 0, 0}, 135, 135, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x042A, 0x002A, 257, 113, 45554, 45560, 45581, 40324, 35137, 40295, 45609, {40328, 0, 0, 0}, 136, 136, { 1258, 500, 10000, 1258, 0, ',' }},
+       {0x042B, 0x002B, 257, 3, 45612, 45618, 45637, 40370, 40374, 40343, 1820, {40378, 0, 0, 0}, 137, 137, { 0, 500, 2, 1, 0, ',' }},
+       {0x042C, 0x782C, 257, 7, 45671, 45682, 45714, 40435, 40439, 40408, 45740, {40443, 0, 0, 0}, 138, 138, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x042D, 0x002D, 257, 31, 45743, 45749, 45764, 40480, 40484, 40462, 43669, {40488, 0, 0, 0}, 139, 139, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x042F, 0x002F, 257, 71, 45783, 45789, 45812, 40543, 40547, 40508, 45856, {40551, 0, 0, 0}, 140, 140, { 1251, 500, 10007, 866, 0, ';' }},
+       {0x0432, 0x0032, 257, 115, 45859, 45865, 40605, 40614, 40618, 40595, 45887, {0, 0, 0, 0}, 141, 141, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0434, 0x0034, 257, 115, 45890, 45896, 40631, 40640, 40644, 40622, 45887, {0, 0, 0, 0}, 142, 142, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0435, 0x0035, 257, 115, 45917, 45923, 45943, 40664, 40668, 40648, 45887, {40672, 0, 0, 0}, 143, 143, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0436, 0x0036, 257, 115, 45968, 45974, 45999, 40706, 40710, 40693, 45887, {40714, 0, 0, 0}, 144, 144, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0437, 0x0037, 257, 37, 46023, 46029, 46048, 40768, 40772, 40734, 46103, {40776, 0, 0, 0}, 145, 145, { 0, 500, 2, 1, 0, ';' }},
+       {0x0438, 0x0038, 257, 34, 46106, 46112, 46136, 40862, 40866, 40841, 46157, {0, 0, 0, 0}, 146, 146, { 1252, 20277, 10079, 850, 0, ';' }},
+       {0x0439, 0x0039, 257, 48, 46160, 46166, 46180, 40895, 40899, 40870, 46211, {40903, 0, 0, 0}, 147, 147, { 0, 500, 2, 1, 0, ',' }},
+       {0x043A, 0x003A, 257, 73, 46214, 46220, 46236, 40973, 40977, 40956, 46250, {40981, 0, 0, 0}, 148, 148, { 0, 500, 2, 1, 0, ',' }},
+       {0x043B, 0x003B, 257, 78, 46253, 46259, 46282, 41036, 41040, 41002, 44456, {41044, 0, 0, 0}, 149, 149, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0441, 0x0041, 257, 56, 46307, 46313, 46329, 41331, 41335, 41310, 46347, {41339, 0, 0, 0}, 150, 150, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x0443, 0x7C43, 257, 111, 46350, 46361, 46387, 41380, 41384, 41360, 46413, {41388, 0, 0, 0}, 151, 151, { 1254, 500, 10029, 857, 0, ';' }},
+       {0x0445, 0x0045, 257, 48, 46416, 46422, 46438, 41435, 41439, 41408, 46211, {41443, 0, 0, 0}, 152, 152, { 0, 500, 2, 1, 0, ',' }},
+       {0x0447, 0x0047, 257, 48, 46469, 46475, 46492, 41627, 41631, 41593, 46211, {41635, 0, 0, 0}, 153, 153, { 0, 500, 2, 1, 0, ',' }},
+       {0x0448, 0x0048, 257, 48, 46529, 46535, 46549, 41716, 41720, 41691, 46211, {0, 0, 0, 0}, 154, 154, { 0, 500, 2, 1, 0, ',' }},
+       {0x0449, 0x0049, 257, 48, 46580, 46586, 46600, 41749, 41753, 41724, 46211, {41757, 0, 0, 0}, 155, 155, { 0, 500, 2, 1, 0, ',' }},
+       {0x044A, 0x004A, 257, 48, 46640, 46646, 46661, 41851, 41855, 41822, 46211, {41859, 0, 0, 0}, 156, 156, { 0, 500, 2, 1, 0, ',' }},
+       {0x044B, 0x004B, 257, 48, 46708, 46714, 46730, 41948, 41952, 37340, 46211, {41956, 0, 0, 0}, 157, 157, { 0, 500, 2, 1, 0, ',' }},
+       {0x044C, 0x004C, 257, 48, 46761, 46767, 46785, 42053, 42057, 42021, 46211, {42061, 0, 0, 0}, 158, 158, { 0, 500, 2, 1, 0, ',' }},
+       {0x044D, 0x004D, 257, 48, 46825, 46831, 46848, 42139, 42143, 42105, 46211, {42147, 0, 0, 0}, 159, 159, { 0, 500, 2, 1, 0, ',' }},
+       {0x044E, 0x004E, 257, 48, 46885, 46891, 46907, 42227, 2402, 42200, 46211, {42231, 0, 0, 0}, 160, 160, { 0, 500, 2, 1, 0, ',' }},
+       {0x0451, 0x0051, 257, 20, 46938, 46944, 46960, 42395, 42399, 42359, 13711, {0, 0, 0, 0}, 161, 161, { 0, 500, 2, 1, 0, ',' }},
+       {0x0452, 0x0052, 257, 36, 47006, 47012, 47035, 42420, 42424, 42403, 47062, {42428, 0, 0, 0}, 162, 162, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x0453, 0x0053, 257, 57, 47065, 47071, 47088, 42469, 42473, 42444, 47128, {42477, 0, 0, 0}, 163, 163, { 0, 500, 2, 1, 0, ',' }},
+       {0x0454, 0x0054, 257, 60, 47131, 47137, 47148, 42549, 42553, 42532, 47170, {42557, 0, 0, 0}, 164, 164, { 0, 500, 2, 1, 0, ',' }},
+       {0x0456, 0x0056, 257, 31, 47173, 47179, 47196, 42622, 42626, 42603, 43669, {38968, 0, 0, 0}, 165, 165, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0457, 0x0057, 257, 48, 47213, 47220, 47236, 42661, 42630, 42630, 46211, {0, 0, 0, 0}, 166, 166, { 0, 500, 2, 1, 0, ',' }},
+       {0x045B, 0x005B, 257, 63, 47270, 47276, 47296, 42692, 42696, 42665, 47346, {42700, 0, 0, 0}, 167, 167, { 0, 500, 2, 1, 0, ',' }},
+       {0x045E, 0x005E, 257, 32, 47349, 47355, 47374, 42780, 42784, 8022, 47405, {42788, 0, 0, 0}, 168, 168, { 0, 500, 2, 1, 0, ';' }},
+       {0x0461, 0x0061, 257, 79, 47408, 47414, 47429, 42901, 42905, 1883, 47466, {42909, 0, 0, 0}, 169, 169, { 0, 500, 2, 1, 0, ',' }},
+       {0x0463, 0x0063, 1024, 1, 47469, 47475, 47496, 42978, 42982, 42959, 47526, {0, 0, 0, 0}, 170, 170, { 0, 500, 2, 1, 1, ';' }},
+       {0x0464, 0x0064, 257, 84, 47529, 47536, 47559, 42999, 42986, 42986, 47580, {43003, 0, 0, 0}, 171, 171, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x0468, 0x7C68, 257, 75, 47583, 47594, 47617, 43035, 43039, 43026, 47634, {0, 0, 0, 0}, 172, 172, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x046A, 0x006A, 257, 75, 47637, 47643, 47660, 43068, 43072, 43043, 47634, {0, 0, 0, 0}, 173, 173, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x046C, 0x006C, 257, 115, 47706, 47713, 43095, 43112, 43076, 43076, 45887, {0, 0, 0, 0}, 174, 174, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x046F, 0x006F, 257, 38, 47743, 47749, 47773, 43143, 43147, 43116, 47804, {43151, 0, 0, 0}, 175, 175, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0470, 0x0070, 257, 75, 47807, 47813, 47813, 43186, 43190, 43178, 47634, {0, 0, 0, 0}, 176, 176, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x0478, 0x0078, 257, 20, 47828, 47834, 47853, 43218, 43222, 43194, 13711, {43226, 0, 0, 0}, 177, 177, { 0, 500, 2, 1, 0, ',' }},
+       {0x047E, 0x007E, 257, 35, 47872, 47878, 47894, 43259, 43263, 43239, 44053, {43267, 0, 0, 0}, 178, 178, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0485, 0x0085, 257, 93, 47913, 47920, 43362, 43380, 43352, 43352, 44697, {0, 0, 0, 0}, 179, 179, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0487, 0x0087, 257, 94, 47935, 47941, 47941, 43399, 43403, 43384, 47962, {0, 0, 0, 0}, 180, 180, { 1252, 37, 10000, 437, 0, ';' }},
+       {0x0491, 0x0091, 257, 36, 47965, 47971, 48004, 43436, 43440, 43407, 47062, {43444, 0, 0, 0}, 181, 181, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x0801, 0x0001, 257, 49, 48040, 48046, 48060, 48090, 38120, 38091, 48094, {48097, 0, 0, 0}, 182, 182, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0804, 0x0004, 257, 20, 48129, 38349, 48135, 38323, 38327, 38331, 13711, {38334, 0, 0, 0}, 183, 183, { 936, 500, 10008, 936, 0, ',' }},
+       {0x0807, 0x0007, 257, 18, 48151, 48157, 48178, 48196, 38490, 38468, 13632, {38494, 0, 0, 0}, 184, 184, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0809, 0x0009, 257, 36, 48200, 48206, 48206, 48231, 38610, 38595, 47062, {38614, 0, 0, 0}, 185, 185, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x080A, 0x000A, 257, 74, 48235, 48241, 48258, 48277, 38657, 38633, 48281, {38968, 0, 0, 0}, 186, 186, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x080C, 0x000C, 257, 10, 48284, 48290, 48307, 48328, 38757, 38733, 48332, {38761, 0, 0, 0}, 187, 187, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0810, 0x0010, 257, 18, 48335, 48341, 48363, 48383, 38964, 38940, 13632, {38968, 0, 0, 0}, 188, 188, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0813, 0x0013, 257, 10, 48387, 48393, 48409, 48430, 39109, 39085, 48332, {39113, 0, 0, 0}, 189, 189, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0814, 0x7814, 257, 78, 48434, 48440, 48467, 48483, 48487, 48491, 44456, {38447, 0, 0, 0}, 190, 190, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0816, 0x0016, 257, 88, 48494, 48500, 48522, 48544, 39243, 39214, 48548, {39247, 0, 0, 0}, 191, 191, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x081D, 0x001D, 257, 33, 48551, 48557, 48575, 48593, 39619, 39596, 44009, {38447, 0, 0, 0}, 192, 192, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x082C, 0x742C, 257, 7, 48597, 48608, 45714, 48643, 40439, 40408, 45740, {40443, 0, 0, 0}, 193, 193, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x083C, 0x003C, 257, 46, 48647, 48653, 48669, 41080, 41084, 41063, 48685, {41088, 0, 0, 0}, 194, 194, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0843, 0x7843, 257, 111, 48688, 48699, 46387, 41380, 41384, 41360, 46413, {48728, 0, 0, 0}, 195, 195, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0845, 0x0045, 257, 9, 48766, 48772, 48793, 48836, 41439, 41408, 48840, {41443, 0, 0, 0}, 196, 196, { 0, 500, 2, 1, 0, ',' }},
+       {0x0C01, 0x0001, 257, 30, 48843, 48849, 48864, 48888, 38120, 38091, 48892, {48097, 0, 0, 0}, 197, 197, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0C04, 0x7C04, 257, 41, 48895, 48901, 48944, 48981, 38327, 38331, 48985, {43723, 0, 0, 0}, 198, 198, { 950, 500, 10002, 950, 0, ',' }},
+       {0x0C07, 0x0007, 257, 5, 48988, 48994, 49011, 49033, 38490, 38468, 49037, {38494, 0, 0, 0}, 199, 199, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0C09, 0x0009, 257, 6, 49040, 49046, 49046, 49066, 38610, 38595, 49070, {38614, 0, 0, 0}, 200, 200, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0C0A, 0x000A, 257, 31, 49073, 49079, 49095, 49114, 38657, 38633, 43669, {38661, 0, 0, 0}, 201, 201, { 1252, 20284, 10000, 850, 0, ';' }},
+       {0x0C0C, 0x000C, 257, 17, 49118, 49124, 49140, 49159, 38757, 38733, 49163, {49166, 0, 0, 0}, 202, 202, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0C3B, 0x003B, 257, 33, 49188, 49194, 49218, 49244, 49248, 41002, 44009, {41044, 0, 0, 0}, 203, 203, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x1001, 0x0001, 257, 67, 49252, 49258, 49273, 49301, 38120, 38091, 49305, {48097, 0, 0, 0}, 204, 204, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x1004, 0x0004, 257, 97, 49308, 49314, 49346, 49365, 38327, 38331, 49369, {38334, 0, 0, 0}, 205, 205, { 936, 500, 10008, 936, 0, ',' }},
+       {0x1007, 0x0007, 257, 65, 49372, 49378, 49398, 49418, 38490, 38468, 49422, {38494, 0, 0, 0}, 206, 206, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x1009, 0x0009, 257, 17, 49425, 49431, 49431, 49448, 38610, 38595, 49163, {38614, 0, 0, 0}, 207, 207, { 1252, 37, 10000, 850, 0, ',' }},
+       {0x100A, 0x000A, 257, 40, 49452, 49458, 49478, 49499, 38657, 38633, 49503, {38661, 0, 0, 0}, 208, 208, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x100C, 0x000C, 257, 18, 49506, 49512, 49533, 49552, 38757, 38733, 13632, {38761, 0, 0, 0}, 209, 209, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x101A, 0x001A, 257, 8, 49556, 49562, 49596, 49627, 49631, 39447, 49635, {39476, 0, 0, 0}, 210, 210, { 1250, 870, 10082, 852, 0, ';' }},
+       {0x1401, 0x0001, 257, 27, 49638, 49644, 49661, 49693, 38120, 38091, 49697, {48097, 0, 0, 0}, 211, 211, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x1404, 0x7C04, 257, 72, 49700, 49706, 49745, 49782, 38327, 38331, 49786, {43723, 0, 0, 0}, 212, 212, { 950, 500, 10002, 950, 0, ',' }},
+       {0x1407, 0x0007, 257, 62, 49789, 49795, 49818, 49842, 38490, 38468, 49846, {38494, 0, 0, 0}, 213, 213, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x1409, 0x0009, 257, 80, 49849, 49855, 49855, 49877, 38610, 38595, 49881, {38614, 0, 0, 0}, 214, 214, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x140A, 0x000A, 257, 22, 49884, 49890, 49911, 49933, 38657, 38633, 49937, {38661, 0, 0, 0}, 215, 215, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x140C, 0x000C, 257, 65, 49940, 49946, 49966, 49989, 38757, 38733, 49422, {38761, 0, 0, 0}, 216, 216, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x141A, 0x681A, 257, 8, 49993, 50004, 50044, 50075, 50079, 50083, 49635, {50086, 0, 0, 0}, 217, 217, { 1250, 870, 10082, 852, 0, ';' }},
+       {0x1801, 0x0001, 257, 68, 50109, 50115, 50132, 50162, 38120, 38091, 50166, {48097, 0, 0, 0}, 218, 218, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x1809, 0x0009, 257, 46, 50169, 50175, 50175, 50193, 38610, 38595, 48685, {38614, 0, 0, 0}, 219, 219, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x180A, 0x000A, 257, 82, 50197, 50203, 50220, 50239, 38657, 38633, 50243, {38661, 0, 0, 0}, 220, 220, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x180C, 0x000C, 257, 69, 50246, 50252, 50268, 50287, 38757, 38733, 50291, {38761, 0, 0, 0}, 221, 221, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x181A, 0x701A, 257, 8, 50294, 50305, 50345, 50397, 50401, 50405, 49635, {50086, 0, 0, 0}, 222, 222, { 1250, 870, 10082, 852, 0, ';' }},
+       {0x1C01, 0x0001, 257, 104, 50408, 50414, 50431, 50457, 38120, 38091, 50461, {48097, 0, 0, 0}, 223, 223, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x1C09, 0x0009, 257, 115, 50464, 50470, 50470, 50493, 38610, 38595, 45887, {38614, 0, 0, 0}, 224, 224, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x1C0A, 0x000A, 257, 26, 50497, 50503, 50532, 50565, 38657, 38633, 50569, {38661, 0, 0, 0}, 225, 225, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x1C1A, 0x6C1A, 257, 8, 50572, 50583, 50345, 50626, 50630, 50405, 49635, {40551, 0, 0, 0}, 226, 226, { 1251, 21025, 10007, 855, 0, ';' }},
+       {0x2001, 0x0001, 257, 81, 50634, 50640, 50654, 50682, 38120, 38091, 50686, {48097, 0, 0, 0}, 227, 227, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x2009, 0x0009, 257, 53, 50689, 50695, 50695, 50713, 38610, 38595, 50717, {38614, 0, 0, 0}, 228, 228, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x200A, 0x000A, 257, 112, 50720, 50726, 50746, 50767, 38657, 38633, 50771, {38661, 0, 0, 0}, 229, 229, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x201A, 0x641A, 257, 8, 50774, 50785, 50044, 50828, 50832, 50083, 49635, {40551, 0, 0, 0}, 230, 230, { 1251, 870, 10082, 855, 0, ';' }},
+       {0x2401, 0x0001, 257, 114, 50836, 50842, 50857, 50885, 38120, 38091, 50889, {48097, 0, 0, 0}, 231, 231, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x240A, 0x000A, 257, 21, 50892, 50898, 50917, 50937, 38657, 38633, 50941, {38661, 0, 0, 0}, 232, 232, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x241A, 0x701A, 257, 92, 50944, 50955, 50979, 51007, 2130, 50405, 51011, {50086, 0, 0, 0}, 233, 233, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x2801, 0x0001, 257, 101, 51014, 51020, 51035, 51063, 38120, 38091, 51067, {48097, 0, 0, 0}, 234, 234, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x2809, 0x0009, 257, 16, 51070, 51076, 51076, 51093, 38610, 38595, 51097, {38614, 0, 0, 0}, 235, 235, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x280A, 0x000A, 257, 83, 51100, 51106, 51121, 51138, 38657, 38633, 51142, {38661, 0, 0, 0}, 236, 236, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x281A, 0x6C1A, 257, 92, 51145, 51156, 50979, 51183, 2130, 50405, 51011, {40551, 0, 0, 0}, 237, 237, { 1251, 21025, 10007, 855, 0, ';' }},
+       {0x2C01, 0x0001, 257, 54, 51187, 51193, 51209, 51239, 38120, 38091, 51243, {48097, 0, 0, 0}, 238, 238, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x2C09, 0x0009, 257, 106, 51246, 51252, 51252, 51282, 38610, 38595, 51286, {38614, 0, 0, 0}, 239, 239, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x2C0A, 0x000A, 257, 4, 51289, 51295, 51315, 51336, 38657, 38633, 51340, {38661, 0, 0, 0}, 240, 240, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x2C1A, 0x701A, 257, 70, 51343, 51354, 51382, 51415, 2130, 50405, 51419, {50086, 0, 0, 0}, 241, 241, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x3001, 0x0001, 257, 61, 51422, 51428, 51445, 51473, 38120, 38091, 51477, {48097, 0, 0, 0}, 242, 242, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x3009, 0x0009, 257, 116, 51480, 51486, 51486, 51505, 38610, 38595, 51509, {38614, 0, 0, 0}, 243, 243, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x300A, 0x000A, 257, 28, 51512, 51518, 51536, 51555, 38657, 38633, 51559, {38661, 0, 0, 0}, 244, 244, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x301A, 0x6C1A, 257, 70, 51562, 51573, 51382, 51604, 2130, 50405, 51419, {40551, 0, 0, 0}, 245, 245, { 1251, 21025, 10007, 855, 0, ';' }},
+       {0x3401, 0x0001, 257, 59, 51608, 51614, 51630, 51660, 38120, 38091, 51664, {48097, 0, 0, 0}, 246, 246, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x3409, 0x0009, 257, 84, 51667, 51673, 51673, 51695, 38610, 38595, 47580, {38614, 0, 0, 0}, 247, 247, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x340A, 0x000A, 257, 19, 51699, 51705, 51721, 51738, 38657, 38633, 51742, {38661, 0, 0, 0}, 248, 248, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x3801, 0x0001, 257, 0, 51745, 51751, 51781, 51845, 38120, 38091, 51849, {48097, 0, 0, 0}, 249, 249, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x380A, 0x000A, 257, 110, 51852, 51858, 51876, 51895, 38657, 38633, 51899, {38661, 0, 0, 0}, 250, 250, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x3C01, 0x0001, 257, 12, 51902, 51908, 51925, 51957, 38120, 38091, 51961, {48097, 0, 0, 0}, 251, 251, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x3C0A, 0x000A, 257, 89, 51964, 51970, 51989, 52009, 38657, 38633, 52013, {38661, 0, 0, 0}, 252, 252, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x4001, 0x0001, 257, 90, 52016, 52022, 52037, 52061, 38120, 38091, 52065, {48097, 0, 0, 0}, 253, 253, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x4009, 0x0009, 257, 48, 52068, 52074, 52074, 52090, 38610, 38595, 46211, {38614, 0, 0, 0}, 254, 254, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x400A, 0x000A, 257, 13, 52094, 52100, 52118, 52137, 38657, 38633, 52141, {38661, 0, 0, 0}, 255, 255, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x440A, 0x000A, 257, 100, 52144, 52150, 52172, 52195, 38657, 38633, 52199, {38661, 0, 0, 0}, 256, 256, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x4809, 0x0009, 257, 97, 52202, 52208, 52208, 52228, 38610, 38595, 49369, {38614, 0, 0, 0}, 257, 257, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x480A, 0x000A, 257, 42, 52232, 52238, 52257, 52277, 38657, 38633, 52281, {38661, 0, 0, 0}, 258, 258, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x4C0A, 0x000A, 257, 76, 52284, 52290, 52310, 52331, 38657, 38633, 52335, {38661, 0, 0, 0}, 259, 259, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x500A, 0x000A, 257, 87, 52338, 52344, 52366, 52389, 38657, 38633, 52393, {38661, 0, 0, 0}, 260, 260, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x540A, 0x000A, 257, 109, 52396, 52402, 52426, 52452, 38657, 38633, 43968, {38661, 0, 0, 0}, 261, 261, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x641A, 0x781A, 257, -1, 52456, 52464, 52483, 50828, 50832, 50083, 0, {40551, 0, 0, 0}, 262, 262, { 1251, 870, 10082, 855, 0, ';' }},
+       {0x681A, 0x781A, 257, -1, 52492, 52500, 52483, 50075, 50079, 50083, 0, {50086, 0, 0, 0}, 263, 263, { 1250, 870, 10082, 852, 0, ';' }},
+       {0x6C1A, 0x7C1A, 257, -1, 52516, 52524, 52543, 51183, 2130, 50405, 0, {40551, 0, 0, 0}, 264, 264, { 1251, 21025, 10007, 855, 0, ';' }},
+       {0x701A, 0x7C1A, 257, -1, 52556, 52564, 52543, 51007, 2130, 50405, 0, {50086, 0, 0, 0}, 265, 265, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x742C, 0x002C, 257, -1, 52580, 52588, 40423, 48643, 40439, 40408, 0, {40443, 0, 0, 0}, 266, 266, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x7804, 0x007F, 257, -1, 38331, 38349, 38316, 38323, 38327, 38331, 0, {38334, 0, 0, 0}, 267, 267, { 936, 500, 10008, 936, 0, ',' }},
+       {0x7814, 0x0014, 257, -1, 48491, 52611, 52629, 48483, 48487, 48491, 0, {38447, 0, 0, 0}, 268, 268, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x781A, 0x007F, 257, -1, 50083, 52637, 52483, 50075, 50079, 50083, 0, {50086, 0, 0, 0}, 269, 269, { 1250, 870, 10082, 852, 0, ';' }},
+       {0x782C, 0x002C, 257, -1, 52645, 52653, 40423, 40435, 40439, 40408, 0, {40443, 0, 0, 0}, 270, 270, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x7843, 0x0043, 257, -1, 52673, 52681, 41369, 41380, 41384, 41360, 0, {48728, 0, 0, 0}, 271, 271, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x7850, 0x0050, 257, -1, 52698, 52706, 42306, 52727, 42323, 42293, 0, {42327, 0, 0, 0}, 272, 272, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x7C04, 0x7804, 257, -1, 52731, 43678, 38316, 43716, 38327, 38331, 0, {43723, 0, 0, 0}, 273, 273, { 950, 500, 10002, 950, 0, ',' }},
+       {0x7C04, 0x7C04, 257, -1, 52739, 52746, 38316, 43716, 38327, 38331, 0, {43723, 0, 0, 0}, 274, 274, { 950, 500, 10002, 950, 0, ',' }},
+       {0x7C14, 0x0014, 257, -1, 39162, 52775, 52793, 39154, 39158, 39162, 0, {38447, 0, 0, 0}, 275, 275, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x7C1A, 0x007F, 257, -1, 50405, 52807, 52543, 52815, 2130, 50405, 0, {40551, 0, 0, 0}, 276, 276, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x7C28, 0x0028, 257, -1, 52819, 52827, 40220, 40233, 40237, 40211, 0, {0, 0, 0, 0}, 277, 277, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x7C43, 0x0043, 257, -1, 52844, 52852, 41369, 41380, 41384, 41360, 0, {41388, 0, 0, 0}, 278, 278, { 1254, 500, 10029, 857, 0, ';' }},
+       {0x7C5F, 0x005F, 257, -1, 52866, 52875, 42861, 42871, 42833, 42833, 0, {0, 0, 0, 0}, 279, 279, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x7C68, 0x0068, 257, -1, 52907, 52915, 43029, 43035, 43039, 43026, 0, {0, 0, 0, 0}, 280, 280, { 1252, 37, 10000, 437, 0, ',' }}
 };
 
 
 static const CultureInfoNameEntry culture_name_entries [] = {
-       {41218, 50},     /* af */
-       {53454, 144},    /* af-za */
-       {8151, 80},      /* am */
-       {53460, 168},    /* am-et */
-       {38616, 0},      /* ar */
-       {53466, 249},    /* ar-ae */
-       {53472, 251},    /* ar-bh */
-       {53478, 211},    /* ar-dz */
-       {53484, 197},    /* ar-eg */
-       {53490, 182},    /* ar-iq */
-       {53496, 238},    /* ar-jo */
-       {53502, 246},    /* ar-kw */
-       {53508, 242},    /* ar-lb */
-       {53514, 204},    /* ar-ly */
-       {53520, 218},    /* ar-ma */
-       {53526, 227},    /* ar-om */
-       {53532, 253},    /* ar-qa */
-       {53538, 96},     /* ar-sa */
-       {53544, 234},    /* ar-sy */
-       {53550, 223},    /* ar-tn */
-       {53556, 231},    /* ar-ye */
-       {42630, 70},     /* as */
-       {53562, 159},    /* as-in */
-       {40933, 44},     /* az */
-       {53568, 266},    /* az-cyrl */
-       {53576, 193},    /* az-cyrl-az */
-       {53587, 270},    /* az-latn */
-       {53595, 138},    /* az-latn-az */
-       {40445, 35},     /* be */
-       {53606, 129},    /* be-by */
-       {38677, 1},      /* bg */
-       {53612, 97},     /* bg-bg */
-       {41933, 62},     /* bn */
-       {53618, 196},    /* bn-bd */
-       {53624, 152},    /* bn-in */
-       {42884, 73},     /* bo */
-       {53630, 161},    /* bo-cn */
-       {43764, 91},     /* br */
-       {53636, 178},    /* br-fr */
-       {50608, 269},    /* bs */
-       {53642, 262},    /* bs-cyrl */
-       {53650, 230},    /* bs-cyrl-ba */
-       {53661, 263},    /* bs-latn */
-       {53669, 217},    /* bs-latn-ba */
-       {38759, 2},      /* ca */
-       {53680, 98},     /* ca-es */
-       {38895, 5},      /* cs */
-       {53686, 100},    /* cs-cz */
-       {42928, 74},     /* cy */
-       {53692, 162},    /* cy-gb */
-       {38948, 6},      /* da */
-       {53698, 101},    /* da-dk */
-       {38993, 7},      /* de */
-       {53704, 199},    /* de-at */
-       {53710, 184},    /* de-ch */
-       {53716, 102},    /* de-de */
-       {53722, 213},    /* de-li */
-       {53728, 206},    /* de-lu */
-       {39044, 8},      /* el */
-       {53734, 103},    /* el-gr */
-       {39120, 9},      /* en */
-       {53740, 200},    /* en-au */
-       {53746, 235},    /* en-bz */
-       {53752, 207},    /* en-ca */
-       {53758, 185},    /* en-gb */
-       {53764, 219},    /* en-ie */
-       {53770, 254},    /* en-in */
-       {53776, 228},    /* en-jm */
-       {53782, 214},    /* en-nz */
-       {53788, 247},    /* en-ph */
-       {53794, 257},    /* en-sg */
-       {53800, 239},    /* en-tt */
-       {53806, 104},    /* en-us */
-       {53812, 224},    /* en-za */
-       {53818, 243},    /* en-zw */
-       {39158, 10},     /* es */
-       {53824, 240},    /* es-ar */
-       {53830, 255},    /* es-bo */
-       {53836, 248},    /* es-cl */
-       {53842, 232},    /* es-co */
-       {53848, 215},    /* es-cr */
-       {53854, 225},    /* es-do */
-       {53860, 244},    /* es-ec */
-       {53866, 201},    /* es-es */
-       {53872, 208},    /* es-gt */
-       {53878, 258},    /* es-hn */
-       {53884, 186},    /* es-mx */
-       {53890, 259},    /* es-ni */
-       {53896, 220},    /* es-pa */
-       {53902, 236},    /* es-pe */
-       {53908, 260},    /* es-pr */
-       {53914, 252},    /* es-py */
-       {53920, 256},    /* es-sv */
-       {53926, 261},    /* es-us */
-       {53932, 250},    /* es-uy */
-       {53938, 229},    /* es-ve */
-       {40587, 37},     /* et */
-       {53944, 131},    /* et-ee */
-       {40987, 45},     /* eu */
-       {53950, 139},    /* eu-es */
-       {40766, 41},     /* fa */
-       {53956, 135},    /* fa-ir */
-       {39208, 11},     /* fi */
-       {53962, 105},    /* fi-fi */
-       {43511, 84},     /* fil */
-       {53968, 171},    /* fil-ph */
-       {41366, 52},     /* fo */
-       {53975, 146},    /* fo-fo */
-       {39258, 12},     /* fr */
-       {53981, 187},    /* fr-be */
-       {53987, 202},    /* fr-ca */
-       {53993, 209},    /* fr-ch */
-       {53999, 106},    /* fr-fr */
-       {54005, 216},    /* fr-lu */
-       {54011, 221},    /* fr-mc */
-       {41588, 56},     /* ga */
-       {54017, 194},    /* ga-ie */
-       {43932, 95},     /* gd */
-       {54023, 181},    /* gd-gb */
-       {43128, 77},     /* gl */
-       {54029, 165},    /* gl-es */
-       {43812, 92},     /* gsw */
-       {42118, 64},     /* gu */
-       {54035, 153},    /* gu-in */
-       {43551, 85},     /* ha */
-       {54041, 280},    /* ha-latn */
-       {54049, 172},    /* ha-latn-ng */
-       {39308, 13},     /* he */
-       {54060, 107},    /* he-il */
-       {41395, 53},     /* hi */
-       {54066, 147},    /* hi-in */
-       {39972, 26},     /* hr */
-       {54072, 210},    /* hr-ba */
-       {54078, 120},    /* hr-hr */
-       {39370, 14},     /* hu */
-       {54084, 108},    /* hu-hu */
-       {40868, 43},     /* hy */
-       {54090, 137},    /* hy-am */
-       {40299, 33},     /* id */
-       {54096, 127},    /* id-id */
-       {43703, 89},     /* ig */
-       {54102, 176},    /* ig-ng */
-       {43719, 90},     /* ii */
-       {54108, 177},    /* ii-cn */
-       {39414, 15},     /* is */
-       {54114, 109},    /* is-is */
-       {39465, 16},     /* it */
-       {54120, 188},    /* it-ch */
-       {54126, 110},    /* it-it */
-       {39515, 17},     /* ja */
-       {54132, 111},    /* ja-jp */
-       {41259, 51},     /* ka */
-       {54138, 145},    /* ka-ge */
-       {41682, 58},     /* kk */
-       {43641, 88},     /* kl */
-       {54144, 175},    /* kl-gl */
-       {42969, 75},     /* km */
-       {54150, 163},    /* km-kh */
-       {37865, 68},     /* kn */
-       {54156, 157},    /* kn-in */
-       {39572, 18},     /* ko */
-       {54162, 112},    /* ko-kr */
-       {43155, 78},     /* kok */
-       {54168, 166},    /* kok-in */
-       {41762, 59},     /* ky */
-       {43057, 76},     /* lo */
-       {54175, 164},    /* lo-la */
-       {40681, 39},     /* lt */
-       {54181, 133},    /* lt-lt */
-       {40633, 38},     /* lv */
-       {54187, 132},    /* lv-lv */
-       {41033, 46},     /* mk */
-       {54193, 140},    /* mk-mk */
-       {42546, 69},     /* ml */
-       {54199, 158},    /* ml-in */
-       {42818, 72},     /* mn */
-       {54205, 272},    /* mn-cyrl */
-       {42725, 71},     /* mr */
-       {54213, 160},    /* mr-in */
-       {41634, 57},     /* ms */
-       {41481, 54},     /* mt */
-       {54219, 148},    /* mt-mt */
-       {39687, 275},    /* nb */
-       {54225, 114},    /* nb-no */
-       {1992, 82},      /* ne */
-       {54231, 169},    /* ne-np */
-       {39610, 19},     /* nl */
-       {54237, 189},    /* nl-be */
-       {54243, 113},    /* nl-nl */
-       {49016, 268},    /* nn */
-       {54249, 190},    /* nn-no */
-       {39660, 20},     /* no */
-       {43601, 87},     /* nso */
-       {54255, 174},    /* nso-za */
-       {42216, 65},     /* or */
-       {54262, 154},    /* or-in */
-       {42033, 63},     /* pa */
-       {39690, 21},     /* pl */
-       {54268, 115},    /* pl-pl */
-       {43484, 83},     /* ps */
-       {54274, 170},    /* ps-af */
-       {39739, 22},     /* pt */
-       {54280, 116},    /* pt-br */
-       {54286, 191},    /* pt-pt */
-       {39795, 23},     /* rm */
-       {54292, 117},    /* rm-ch */
-       {39844, 24},     /* ro */
-       {54298, 118},    /* ro-ro */
-       {39892, 25},     /* ru */
-       {54304, 119},    /* ru-ru */
-       {43909, 94},     /* rw */
-       {54310, 180},    /* rw-rw */
-       {43877, 93},     /* sah */
-       {54316, 179},    /* sah-ru */
-       {41527, 55},     /* se */
-       {54323, 203},    /* se-fi */
-       {54329, 149},    /* se-no */
-       {43190, 79},     /* si */
-       {54335, 167},    /* si-lk */
-       {12799, 27},     /* sk */
-       {54341, 121},    /* sk-sk */
-       {40530, 36},     /* sl */
-       {54347, 130},    /* sl-si */
-       {40075, 28},     /* sq */
-       {54353, 122},    /* sq-al */
-       {50930, 276},    /* sr */
-       {54359, 264},    /* sr-cyrl */
-       {54367, 226},    /* sr-cyrl-ba */
-       {54378, 245},    /* sr-cyrl-me */
-       {54389, 237},    /* sr-cyrl-rs */
-       {54400, 265},    /* sr-latn */
-       {54408, 222},    /* sr-latn-ba */
-       {54419, 241},    /* sr-latn-me */
-       {54430, 233},    /* sr-latn-rs */
-       {40121, 29},     /* sv */
-       {54441, 192},    /* sv-fi */
-       {54447, 123},    /* sv-se */
-       {41835, 60},     /* sw */
-       {54453, 150},    /* sw-ke */
-       {42249, 66},     /* ta */
-       {54459, 155},    /* ta-in */
-       {42347, 67},     /* te */
-       {54465, 156},    /* te-in */
-       {40736, 40},     /* tg */
-       {54471, 277},    /* tg-cyrl */
-       {54479, 134},    /* tg-cyrl-tj */
-       {40148, 30},     /* th */
-       {54490, 124},    /* th-th */
-       {41120, 47},     /* tn */
-       {54496, 141},    /* tn-za */
-       {12808, 31},     /* tr */
-       {54502, 125},    /* tr-tr */
-       {43358, 81},     /* tzm */
-       {54508, 279},    /* tzm-latn */
-       {40357, 34},     /* uk */
-       {54517, 128},    /* uk-ua */
-       {40244, 32},     /* ur */
-       {54523, 126},    /* ur-pk */
-       {41885, 61},     /* uz */
-       {54529, 271},    /* uz-cyrl */
-       {54537, 195},    /* uz-cyrl-uz */
-       {54548, 278},    /* uz-latn */
-       {54556, 151},    /* uz-latn-uz */
-       {40820, 42},     /* vi */
-       {54567, 136},    /* vi-vn */
-       {41147, 48},     /* xh */
-       {54573, 142},    /* xh-za */
-       {43568, 86},     /* yo */
-       {54579, 173},    /* yo-ng */
-       {38856, 267},    /* zh */
-       {54585, 3},      /* zh-chs */
-       {54592, 274},    /* zh-cht */
-       {54599, 183},    /* zh-cn */
-       {54605, 4},      /* zh-hans */
-       {54613, 273},    /* zh-hant */
-       {54621, 198},    /* zh-hk */
-       {54627, 212},    /* zh-mo */
-       {54633, 205},    /* zh-sg */
-       {54639, 99},     /* zh-tw */
-       {41173, 49},     /* zu */
-       {54645, 143}     /* zu-za */
+       {40693, 50},     /* af */
+       {52929, 144},    /* af-za */
+       {8022, 80},      /* am */
+       {52935, 168},    /* am-et */
+       {38091, 0},      /* ar */
+       {52941, 249},    /* ar-ae */
+       {52947, 251},    /* ar-bh */
+       {52953, 211},    /* ar-dz */
+       {52959, 197},    /* ar-eg */
+       {52965, 182},    /* ar-iq */
+       {52971, 238},    /* ar-jo */
+       {52977, 246},    /* ar-kw */
+       {52983, 242},    /* ar-lb */
+       {52989, 204},    /* ar-ly */
+       {52995, 218},    /* ar-ma */
+       {53001, 227},    /* ar-om */
+       {53007, 253},    /* ar-qa */
+       {53013, 96},     /* ar-sa */
+       {53019, 234},    /* ar-sy */
+       {53025, 223},    /* ar-tn */
+       {53031, 231},    /* ar-ye */
+       {42105, 70},     /* as */
+       {53037, 159},    /* as-in */
+       {40408, 44},     /* az */
+       {53043, 266},    /* az-cyrl */
+       {53051, 193},    /* az-cyrl-az */
+       {53062, 270},    /* az-latn */
+       {53070, 138},    /* az-latn-az */
+       {39920, 35},     /* be */
+       {53081, 129},    /* be-by */
+       {38152, 1},      /* bg */
+       {53087, 97},     /* bg-bg */
+       {41408, 62},     /* bn */
+       {53093, 196},    /* bn-bd */
+       {53099, 152},    /* bn-in */
+       {42359, 73},     /* bo */
+       {53105, 161},    /* bo-cn */
+       {43239, 91},     /* br */
+       {53111, 178},    /* br-fr */
+       {50083, 269},    /* bs */
+       {53117, 262},    /* bs-cyrl */
+       {53125, 230},    /* bs-cyrl-ba */
+       {53136, 263},    /* bs-latn */
+       {53144, 217},    /* bs-latn-ba */
+       {38234, 2},      /* ca */
+       {53155, 98},     /* ca-es */
+       {38370, 5},      /* cs */
+       {53161, 100},    /* cs-cz */
+       {42403, 74},     /* cy */
+       {53167, 162},    /* cy-gb */
+       {38423, 6},      /* da */
+       {53173, 101},    /* da-dk */
+       {38468, 7},      /* de */
+       {53179, 199},    /* de-at */
+       {53185, 184},    /* de-ch */
+       {53191, 102},    /* de-de */
+       {53197, 213},    /* de-li */
+       {53203, 206},    /* de-lu */
+       {38519, 8},      /* el */
+       {53209, 103},    /* el-gr */
+       {38595, 9},      /* en */
+       {53215, 200},    /* en-au */
+       {53221, 235},    /* en-bz */
+       {53227, 207},    /* en-ca */
+       {53233, 185},    /* en-gb */
+       {53239, 219},    /* en-ie */
+       {53245, 254},    /* en-in */
+       {53251, 228},    /* en-jm */
+       {53257, 214},    /* en-nz */
+       {53263, 247},    /* en-ph */
+       {53269, 257},    /* en-sg */
+       {53275, 239},    /* en-tt */
+       {53281, 104},    /* en-us */
+       {53287, 224},    /* en-za */
+       {53293, 243},    /* en-zw */
+       {38633, 10},     /* es */
+       {53299, 240},    /* es-ar */
+       {53305, 255},    /* es-bo */
+       {53311, 248},    /* es-cl */
+       {53317, 232},    /* es-co */
+       {53323, 215},    /* es-cr */
+       {53329, 225},    /* es-do */
+       {53335, 244},    /* es-ec */
+       {53341, 201},    /* es-es */
+       {53347, 208},    /* es-gt */
+       {53353, 258},    /* es-hn */
+       {53359, 186},    /* es-mx */
+       {53365, 259},    /* es-ni */
+       {53371, 220},    /* es-pa */
+       {53377, 236},    /* es-pe */
+       {53383, 260},    /* es-pr */
+       {53389, 252},    /* es-py */
+       {53395, 256},    /* es-sv */
+       {53401, 261},    /* es-us */
+       {53407, 250},    /* es-uy */
+       {53413, 229},    /* es-ve */
+       {40062, 37},     /* et */
+       {53419, 131},    /* et-ee */
+       {40462, 45},     /* eu */
+       {53425, 139},    /* eu-es */
+       {40241, 41},     /* fa */
+       {53431, 135},    /* fa-ir */
+       {38683, 11},     /* fi */
+       {53437, 105},    /* fi-fi */
+       {42986, 84},     /* fil */
+       {53443, 171},    /* fil-ph */
+       {40841, 52},     /* fo */
+       {53450, 146},    /* fo-fo */
+       {38733, 12},     /* fr */
+       {53456, 187},    /* fr-be */
+       {53462, 202},    /* fr-ca */
+       {53468, 209},    /* fr-ch */
+       {53474, 106},    /* fr-fr */
+       {53480, 216},    /* fr-lu */
+       {53486, 221},    /* fr-mc */
+       {41063, 56},     /* ga */
+       {53492, 194},    /* ga-ie */
+       {43407, 95},     /* gd */
+       {53498, 181},    /* gd-gb */
+       {42603, 77},     /* gl */
+       {53504, 165},    /* gl-es */
+       {43287, 92},     /* gsw */
+       {41593, 64},     /* gu */
+       {53510, 153},    /* gu-in */
+       {43026, 85},     /* ha */
+       {53516, 280},    /* ha-latn */
+       {53524, 172},    /* ha-latn-ng */
+       {38783, 13},     /* he */
+       {53535, 107},    /* he-il */
+       {40870, 53},     /* hi */
+       {53541, 147},    /* hi-in */
+       {39447, 26},     /* hr */
+       {53547, 210},    /* hr-ba */
+       {53553, 120},    /* hr-hr */
+       {38845, 14},     /* hu */
+       {53559, 108},    /* hu-hu */
+       {40343, 43},     /* hy */
+       {53565, 137},    /* hy-am */
+       {39774, 33},     /* id */
+       {53571, 127},    /* id-id */
+       {43178, 89},     /* ig */
+       {53577, 176},    /* ig-ng */
+       {43194, 90},     /* ii */
+       {53583, 177},    /* ii-cn */
+       {38889, 15},     /* is */
+       {53589, 109},    /* is-is */
+       {38940, 16},     /* it */
+       {53595, 188},    /* it-ch */
+       {53601, 110},    /* it-it */
+       {38990, 17},     /* ja */
+       {53607, 111},    /* ja-jp */
+       {40734, 51},     /* ka */
+       {53613, 145},    /* ka-ge */
+       {41157, 58},     /* kk */
+       {43116, 88},     /* kl */
+       {53619, 175},    /* kl-gl */
+       {42444, 75},     /* km */
+       {53625, 163},    /* km-kh */
+       {37340, 68},     /* kn */
+       {53631, 157},    /* kn-in */
+       {39047, 18},     /* ko */
+       {53637, 112},    /* ko-kr */
+       {42630, 78},     /* kok */
+       {53643, 166},    /* kok-in */
+       {41237, 59},     /* ky */
+       {42532, 76},     /* lo */
+       {53650, 164},    /* lo-la */
+       {40156, 39},     /* lt */
+       {53656, 133},    /* lt-lt */
+       {40108, 38},     /* lv */
+       {53662, 132},    /* lv-lv */
+       {40508, 46},     /* mk */
+       {53668, 140},    /* mk-mk */
+       {42021, 69},     /* ml */
+       {53674, 158},    /* ml-in */
+       {42293, 72},     /* mn */
+       {53680, 272},    /* mn-cyrl */
+       {42200, 71},     /* mr */
+       {53688, 160},    /* mr-in */
+       {41109, 57},     /* ms */
+       {40956, 54},     /* mt */
+       {53694, 148},    /* mt-mt */
+       {39162, 275},    /* nb */
+       {53700, 114},    /* nb-no */
+       {1883, 82},      /* ne */
+       {53706, 169},    /* ne-np */
+       {39085, 19},     /* nl */
+       {53712, 189},    /* nl-be */
+       {53718, 113},    /* nl-nl */
+       {48491, 268},    /* nn */
+       {53724, 190},    /* nn-no */
+       {39135, 20},     /* no */
+       {43076, 87},     /* nso */
+       {53730, 174},    /* nso-za */
+       {41691, 65},     /* or */
+       {53737, 154},    /* or-in */
+       {41508, 63},     /* pa */
+       {39165, 21},     /* pl */
+       {53743, 115},    /* pl-pl */
+       {42959, 83},     /* ps */
+       {53749, 170},    /* ps-af */
+       {39214, 22},     /* pt */
+       {53755, 116},    /* pt-br */
+       {53761, 191},    /* pt-pt */
+       {39270, 23},     /* rm */
+       {53767, 117},    /* rm-ch */
+       {39319, 24},     /* ro */
+       {53773, 118},    /* ro-ro */
+       {39367, 25},     /* ru */
+       {53779, 119},    /* ru-ru */
+       {43384, 94},     /* rw */
+       {53785, 180},    /* rw-rw */
+       {43352, 93},     /* sah */
+       {53791, 179},    /* sah-ru */
+       {41002, 55},     /* se */
+       {53798, 203},    /* se-fi */
+       {53804, 149},    /* se-no */
+       {42665, 79},     /* si */
+       {53810, 167},    /* si-lk */
+       {12674, 27},     /* sk */
+       {53816, 121},    /* sk-sk */
+       {40005, 36},     /* sl */
+       {53822, 130},    /* sl-si */
+       {39550, 28},     /* sq */
+       {53828, 122},    /* sq-al */
+       {50405, 276},    /* sr */
+       {53834, 264},    /* sr-cyrl */
+       {53842, 226},    /* sr-cyrl-ba */
+       {53853, 245},    /* sr-cyrl-me */
+       {53864, 237},    /* sr-cyrl-rs */
+       {53875, 265},    /* sr-latn */
+       {53883, 222},    /* sr-latn-ba */
+       {53894, 241},    /* sr-latn-me */
+       {53905, 233},    /* sr-latn-rs */
+       {39596, 29},     /* sv */
+       {53916, 192},    /* sv-fi */
+       {53922, 123},    /* sv-se */
+       {41310, 60},     /* sw */
+       {53928, 150},    /* sw-ke */
+       {41724, 66},     /* ta */
+       {53934, 155},    /* ta-in */
+       {41822, 67},     /* te */
+       {53940, 156},    /* te-in */
+       {40211, 40},     /* tg */
+       {53946, 277},    /* tg-cyrl */
+       {53954, 134},    /* tg-cyrl-tj */
+       {39623, 30},     /* th */
+       {53965, 124},    /* th-th */
+       {40595, 47},     /* tn */
+       {53971, 141},    /* tn-za */
+       {12683, 31},     /* tr */
+       {53977, 125},    /* tr-tr */
+       {42833, 81},     /* tzm */
+       {53983, 279},    /* tzm-latn */
+       {39832, 34},     /* uk */
+       {53992, 128},    /* uk-ua */
+       {39719, 32},     /* ur */
+       {53998, 126},    /* ur-pk */
+       {41360, 61},     /* uz */
+       {54004, 271},    /* uz-cyrl */
+       {54012, 195},    /* uz-cyrl-uz */
+       {54023, 278},    /* uz-latn */
+       {54031, 151},    /* uz-latn-uz */
+       {40295, 42},     /* vi */
+       {54042, 136},    /* vi-vn */
+       {40622, 48},     /* xh */
+       {54048, 142},    /* xh-za */
+       {43043, 86},     /* yo */
+       {54054, 173},    /* yo-ng */
+       {38331, 267},    /* zh */
+       {54060, 3},      /* zh-chs */
+       {54067, 274},    /* zh-cht */
+       {54074, 183},    /* zh-cn */
+       {54080, 4},      /* zh-hans */
+       {54088, 273},    /* zh-hant */
+       {54096, 198},    /* zh-hk */
+       {54102, 212},    /* zh-mo */
+       {54108, 205},    /* zh-sg */
+       {54114, 99},     /* zh-tw */
+       {40648, 49},     /* zu */
+       {54120, 143}     /* zu-za */
 };
 
 
 static const RegionInfoEntry region_entries [] = {
-       { 224,52374,49413,49413,54651,54672,38559,54719,54723,54751},
-       { 3,48051,54775,54775,54779,54791,38330,54810,54814,54829},
-       { 6,45367,54842,54842,54846,54854,37868,54864,54868,54881},
-       { 7,1929,50687,50687,54895,54903,38111,54920,54924,54938},
-       { 11,51865,50218,50218,54964,54964,37601,51588,54974,54989},
-       { 14,49562,55004,55004,55008,55016,37497,55028,55032,55032},
-       { 12,49595,55037,55037,55041,55041,37601,55051,55055,55055},
-       { 5,46265,40960,40960,55073,55084,38365,55096,55100,55118},
-       { 25,50160,55138,55138,55142,55165,38427,55185,55189,55225},
-       { 23,49365,55245,55245,55249,55260,38403,55285,55289,55306},
-       { 21,48857,40480,40480,55347,55355,37497,55028,55032,55364},
-       { 35,44151,38709,38709,55369,55378,37479,55395,55399,55413},
-       { 17,52486,55439,55439,55443,55451,38569,55466,55470,55485},
-       { 26,52666,55509,55509,55513,55513,38593,42920,55521,55540},
-       { 32,45071,55550,55550,55554,55561,37756,55568,55572,55587},
-       { 29,45753,55603,55603,55607,55615,37971,55632,55636,55653},
-       { 24,51622,55685,55685,55689,55689,37601,55696,55700,55700},
-       { 39,49688,55714,55714,55718,55718,37601,55725,55729,55745},
-       { 223,13753,55761,55761,55765,55777,37763,37763,55784,55796},
-       { 46,52267,55810,55810,55814,55814,37601,55820,55824,55837},
-       { 45,13832,55850,55850,55854,55860,37518,55879,55883,55896},
-       { 51,51466,55915,55915,55919,55919,37601,55928,55932,55947},
-       { 54,50462,55963,55963,55967,55967,38445,55978,55982,56001},
-       { 75,44314,56022,56022,56026,56041,37521,56059,56063,56085},
-       { 94,44404,39011,39011,56100,56108,37497,55028,55032,55032},
-       { 61,44356,56120,56120,56124,56132,37549,56140,56144,56157},
-       { 65,51094,56169,56169,56173,56192,37601,56214,56218,56233},
-       { 4,50222,56249,56249,56253,56261,38430,56276,56280,56295},
-       { 66,52084,56319,56319,56323,56323,37601,56331,56335,56345},
-       { 70,45851,52977,52977,56367,56375,37497,55028,55032,55364},
-       { 67,49417,56381,56381,56385,56391,38407,56398,56402,56417},
-       { 217,44194,39178,39178,56435,56441,37497,55028,55032,55364},
-       { 73,47930,56449,56449,56453,56462,38310,56478,56482,56497},
-       { 77,44534,39225,39225,56523,56531,37497,55028,55032,55364},
-       { 81,46682,56537,56537,56541,56555,37549,56140,56144,56564},
-       { 84,44578,39278,39278,56577,56577,37497,55028,55032,55364},
-       { 242,47587,56584,56584,56588,56603,38254,56620,56624,56647},
-       { 88,46628,56669,56669,56673,56681,0,56712,56716,56730},
-       { 93,48329,56765,56765,56769,56779,37549,56140,56144,56796},
-       { 98,44460,56816,56816,56820,56827,37497,55028,55032,56840},
-       { 99,50028,56849,56849,56853,56853,8056,56863,56867,56886},
-       { 104,49510,56907,56907,56911,56931,37601,56959,56963,56980},
-       { 106,52806,56987,56987,56991,56991,2436,57000,57004,57021},
-       { 108,45270,39993,39993,57040,57048,37865,57057,57061,57075},
-       { 109,44679,39390,39390,57089,57097,37674,57111,57115,57132},
-       { 111,45616,57146,57146,57150,57150,37947,57160,57164,57182},
-       { 68,49210,57199,57199,57203,57211,37497,55028,55032,55032},
-       { 117,44627,57217,57217,57221,57228,37647,57239,57243,57262},
-       { 113,46736,40330,40330,57269,57275,38190,57288,57292,57305},
-       { 121,48619,57340,57340,57344,57349,38376,57362,57366,57378},
-       { 116,46076,57400,57400,57404,57409,38065,57420,57424,57437},
-       { 110,44728,39437,39437,57457,57465,37549,57473,57477,57494},
-       { 118,44771,39485,39485,57510,57516,37497,55028,55032,55032},
-       { 124,51242,57523,57523,57527,57527,37601,57535,57539,57539},
-       { 126,51768,57555,57555,57559,57566,38529,57579,57583,57599},
-       { 122,44816,39537,39537,57621,57627,37687,57634,57638,57651},
-       { 129,46872,57661,57661,57665,57665,38214,57671,57675,57691},
-       { 40,47653,42994,42994,57709,57718,38257,57740,57744,57759},
-       { 134,44871,39592,39592,57791,57803,37691,57816,57820,57837},
-       { 136,52189,57854,57854,57858,57865,38549,57878,57882,57896},
-       { 138,47695,43074,43074,57918,43064,38261,57923,57927,57939},
-       { 139,52002,57959,57959,57963,57971,38539,57982,57986,58001},
-       { 145,50371,58023,58023,58027,58027,0,37763,55784,58041},
-       { 42,47871,58059,58059,58063,58073,38302,58105,58109,58126},
-       { 141,45949,58174,58174,58178,58188,38041,58196,58200,58217},
-       { 147,49947,58232,58232,58236,58247,37497,55028,55032,55032},
-       { 140,45897,58257,58257,58261,58268,37497,55028,55032,58276},
-       { 148,49830,58281,58281,58285,58291,38417,58302,58306,58319},
-       { 159,50691,42752,42752,58339,58347,38449,58360,58364,58380},
-       { 158,50816,58400,58400,58404,58404,37497,55028,55032,55364},
-       { 270,51944,58411,58411,58415,58426,37497,55028,55032,58444},
-       { 19618,46381,58449,58449,58453,58463,38136,58449,58484,58501},
-       { 151,50311,58533,58533,58537,58553,38440,58581,58585,58601},
-       { 163,46775,41498,41498,58611,58611,37497,55028,55032,58617},
-       { 166,48806,58622,58622,58626,58633,37601,58641,58645,58658},
-       { 175,48159,58672,58672,58676,58684,38337,58693,58697,58712},
-       { 182,52860,58718,58718,58722,58722,38596,58732,58736,58756},
-       { 176,44923,39630,39630,58779,58791,37497,55028,55032,55032},
-       { 177,44981,39679,39679,58801,58808,37549,58814,58818,58834},
-       { 178,47991,58848,58848,58852,58858,38317,58874,58878,58893},
-       { 183,50406,58934,58934,58938,58938,37601,58950,58954,58954},
-       { 164,51211,58973,58973,58977,58982,38478,58993,58997,59008},
-       { 192,50768,42063,42063,59028,59035,38459,59043,59047,59065},
-       { 187,51667,59082,59082,59086,59091,38517,59097,59101,59120},
-       { 201,48105,59138,59138,59142,59154,38333,59164,59168,59168},
-       { 190,45555,59184,59184,59188,59197,37889,59212,59216,59232},
-       { 191,45022,59260,59260,59264,59271,37714,59278,59282,59295},
-       { 202,52918,59309,59309,59313,59313,37601,56331,56335,56345},
-       { 193,49073,59325,59325,59329,59329,37497,55028,55032,55032},
-       { 185,52538,59338,59338,59342,59342,38579,59351,59355,59374},
-       { 197,52590,59393,59393,59397,59403,38583,59410,59414,59426},
-       { 200,45166,59444,59444,59448,59456,0,59465,59469,59482},
-       { 271,51536,53340,53340,59496,59503,38502,59516,59520,59534},
-       { 203,45222,39918,39918,59547,59554,37785,59567,59571,59585},
-       { 204,48487,59617,59617,59621,59621,38341,59628,59632,0},
-       { 205,13750,59646,59646,59650,59663,37421,59710,59714,59726},
-       { 221,45411,59746,59746,59750,59757,37549,59765,59769,59783},
-       { 215,49894,59796,59796,59800,59810,37601,59820,59824,59841},
-       { 212,45809,59854,59854,59858,59867,37497,55028,55032,59877},
-       { 143,45321,59882,59882,59886,59895,37497,55028,55032,55032},
-       { 72,52724,40557,40557,59905,59905,37601,56331,56335,56345},
-       { 222,51592,59917,59917,59921,59927,38507,59938,59942,59955},
-       { 227,45458,40166,40166,59975,40156,37881,59984,59988,59998},
-       { 228,46028,60017,60017,60021,60032,38358,60053,60057,60076},
-       { 234,50986,60089,60089,60093,60101,38463,60110,60114,60129},
-       { 235,45504,60150,60150,60154,60161,37885,60170,60174,60187},
-       { 225,51811,60201,60201,60205,60205,37601,60225,60229,60229},
-       { 237,44245,60256,60256,60260,60267,38344,60274,60278,60296},
-       { 241,45683,40391,40391,60306,60314,37950,60329,60333,60351},
-       { 244,44493,60385,60385,60389,60389,37601,56331,56335,56335},
-       { 246,52424,60403,60403,60407,60407,37601,60415,60419,60434},
-       { 247,46938,41905,41905,60448,60459,38370,60472,60476,60491},
-       { 249,51296,60510,60510,60514,60514,38488,60524,60528,60548},
-       { 251,46134,60568,60568,60572,60580,38107,60591,60595,60611},
-       { 261,51414,60630,60630,60634,60640,38492,60651,60655,60667},
-       { 209,46412,60685,60685,60689,0,10794,60702,60706,0},
-       { 264,52034,60725,60725,60729,60729,37601,56331,56335,56335}
+       { 224,51849,48888,48888,54126,54147,38034,54194,54198,54226},
+       { 3,47526,54250,54250,54254,54266,37805,54285,54289,54304},
+       { 6,44842,54317,54317,54321,54329,37343,54339,54343,54356},
+       { 7,1820,50162,50162,54370,54378,37586,54395,54399,54413},
+       { 11,51340,49693,49693,54439,54439,37076,51063,54449,54464},
+       { 14,49037,54479,54479,54483,54491,36972,54503,54507,54507},
+       { 12,49070,54512,54512,54516,54516,37076,54526,54530,54530},
+       { 5,45740,40435,40435,54548,54559,37840,54571,54575,54593},
+       { 25,49635,54613,54613,54617,54640,37902,54660,54664,54700},
+       { 23,48840,54720,54720,54724,54735,37878,54760,54764,54781},
+       { 21,48332,39955,39955,54822,54830,36972,54503,54507,54839},
+       { 35,43626,38184,38184,54844,54853,36954,54870,54874,54888},
+       { 17,51961,54914,54914,54918,54926,38044,54941,54945,54960},
+       { 26,52141,54984,54984,54988,54988,38068,42395,54996,55015},
+       { 32,44546,55025,55025,55029,55036,37231,55043,55047,55062},
+       { 29,45228,55078,55078,55082,55090,37446,55107,55111,55128},
+       { 24,51097,55160,55160,55164,55164,37076,55171,55175,55175},
+       { 39,49163,55189,55189,55193,55193,37076,55200,55204,55220},
+       { 223,13632,55236,55236,55240,55252,37238,37238,55259,55271},
+       { 46,51742,55285,55285,55289,55289,37076,55295,55299,55312},
+       { 45,13711,55325,55325,55329,55335,36993,55354,55358,55371},
+       { 51,50941,55390,55390,55394,55394,37076,55403,55407,55422},
+       { 54,49937,55438,55438,55442,55442,37920,55453,55457,55476},
+       { 75,43789,55497,55497,55501,55516,36996,55534,55538,55560},
+       { 94,43879,38486,38486,55575,55583,36972,54503,54507,54507},
+       { 61,43831,55595,55595,55599,55607,37024,55615,55619,55632},
+       { 65,50569,55644,55644,55648,55667,37076,55689,55693,55708},
+       { 4,49697,55724,55724,55728,55736,37905,55751,55755,55770},
+       { 66,51559,55794,55794,55798,55798,37076,55806,55810,55820},
+       { 70,45326,52452,52452,55842,55850,36972,54503,54507,54839},
+       { 67,48892,55856,55856,55860,55866,37882,55873,55877,55892},
+       { 217,43669,38653,38653,55910,55916,36972,54503,54507,54839},
+       { 73,47405,55924,55924,55928,55937,37785,55953,55957,55972},
+       { 77,44009,38700,38700,55998,56006,36972,54503,54507,54839},
+       { 81,46157,56012,56012,56016,56030,37024,55615,55619,56039},
+       { 84,44053,38753,38753,56052,56052,36972,54503,54507,54839},
+       { 242,47062,56059,56059,56063,56078,37729,56095,56099,56122},
+       { 88,46103,56144,56144,56148,56156,0,56187,56191,56205},
+       { 93,47804,56240,56240,56244,56254,37024,55615,55619,56271},
+       { 98,43935,56291,56291,56295,56302,36972,54503,54507,56315},
+       { 99,49503,56324,56324,56328,56328,7920,56338,56342,56361},
+       { 104,48985,56382,56382,56386,56406,37076,56434,56438,56455},
+       { 106,52281,56462,56462,56466,56466,2308,56475,56479,56496},
+       { 108,44745,39468,39468,56515,56523,37340,56532,56536,56550},
+       { 109,44154,38865,38865,56564,56572,37149,56586,56590,56607},
+       { 111,45091,56621,56621,56625,56625,37422,56635,56639,56657},
+       { 68,48685,56674,56674,56678,56686,36972,54503,54507,54507},
+       { 117,44102,56692,56692,56696,56703,37122,56714,56718,56737},
+       { 113,46211,39805,39805,56744,56750,37665,56763,56767,56780},
+       { 121,48094,56815,56815,56819,56824,37851,56837,56841,56853},
+       { 116,45551,56875,56875,56879,56884,37540,56895,56899,56912},
+       { 110,44203,38912,38912,56932,56940,37024,56948,56952,56969},
+       { 118,44246,38960,38960,56985,56991,36972,54503,54507,54507},
+       { 124,50717,56998,56998,57002,57002,37076,57010,57014,57014},
+       { 126,51243,57030,57030,57034,57041,38004,57054,57058,57074},
+       { 122,44291,39012,39012,57096,57102,37162,57109,57113,57126},
+       { 129,46347,57136,57136,57140,57140,37689,57146,57150,57166},
+       { 40,47128,42469,42469,57184,57193,37732,57215,57219,57234},
+       { 134,44346,39067,39067,57266,57278,37166,57291,57295,57312},
+       { 136,51664,57329,57329,57333,57340,38024,57353,57357,57371},
+       { 138,47170,42549,42549,57393,42539,37736,57398,57402,57414},
+       { 139,51477,57434,57434,57438,57446,38014,57457,57461,57476},
+       { 145,49846,57498,57498,57502,57502,0,37238,55259,57516},
+       { 42,47346,57534,57534,57538,57548,37777,57580,57584,57601},
+       { 141,45424,57649,57649,57653,57663,37516,57671,57675,57692},
+       { 147,49422,57707,57707,57711,57722,36972,54503,54507,54507},
+       { 140,45372,57732,57732,57736,57743,36972,54503,54507,57751},
+       { 148,49305,57756,57756,57760,57766,37892,57777,57781,57794},
+       { 159,50166,42227,42227,57814,57822,37924,57835,57839,57855},
+       { 158,50291,57875,57875,57879,57879,36972,54503,54507,54839},
+       { 270,51419,57886,57886,57890,57901,36972,54503,54507,57919},
+       { 19618,45856,57924,57924,57928,57938,37611,57924,57959,57976},
+       { 151,49786,58008,58008,58012,58028,37915,58056,58060,58076},
+       { 163,46250,40973,40973,58086,58086,36972,54503,54507,58092},
+       { 166,48281,58097,58097,58101,58108,37076,58116,58120,58133},
+       { 175,47634,58147,58147,58151,58159,37812,58168,58172,58187},
+       { 182,52335,58193,58193,58197,58197,38071,58207,58211,58231},
+       { 176,44398,39105,39105,58254,58266,36972,54503,54507,54507},
+       { 177,44456,39154,39154,58276,58283,37024,58289,58293,58309},
+       { 178,47466,58323,58323,58327,58333,37792,58349,58353,58368},
+       { 183,49881,58409,58409,58413,58413,37076,58425,58429,58429},
+       { 164,50686,58448,58448,58452,58457,37953,58468,58472,58483},
+       { 192,50243,41538,41538,58503,58510,37934,58518,58522,58540},
+       { 187,51142,58557,58557,58561,58566,37992,58572,58576,58595},
+       { 201,47580,58613,58613,58617,58629,37808,58639,58643,58643},
+       { 190,45030,58659,58659,58663,58672,37364,58687,58691,58707},
+       { 191,44497,58735,58735,58739,58746,37189,58753,58757,58770},
+       { 202,52393,58784,58784,58788,58788,37076,55806,55810,55820},
+       { 193,48548,58800,58800,58804,58804,36972,54503,54507,54507},
+       { 185,52013,58813,58813,58817,58817,38054,58826,58830,58849},
+       { 197,52065,58868,58868,58872,58878,38058,58885,58889,58901},
+       { 200,44641,58919,58919,58923,58931,0,58940,58944,58957},
+       { 271,51011,52815,52815,58971,58978,37977,58991,58995,59009},
+       { 203,44697,39393,39393,59022,59029,37260,59042,59046,59060},
+       { 204,47962,59092,59092,59096,59096,37816,59103,59107,0},
+       { 205,13629,59121,59121,59125,59138,36896,59185,59189,59201},
+       { 221,44886,59221,59221,59225,59232,37024,59240,59244,59258},
+       { 215,49369,59271,59271,59275,59285,37076,59295,59299,59316},
+       { 212,45284,59329,59329,59333,59342,36972,54503,54507,59352},
+       { 143,44796,59357,59357,59361,59370,36972,54503,54507,54507},
+       { 72,52199,40032,40032,59380,59380,37076,55806,55810,55820},
+       { 222,51067,59392,59392,59396,59402,37982,59413,59417,59430},
+       { 227,44933,39641,39641,59450,39631,37356,59459,59463,59473},
+       { 228,45503,59492,59492,59496,59507,37833,59528,59532,59551},
+       { 234,50461,59564,59564,59568,59576,37938,59585,59589,59604},
+       { 235,44979,59625,59625,59629,59636,37360,59645,59649,59662},
+       { 225,51286,59676,59676,59680,59680,37076,59700,59704,59704},
+       { 237,43720,59731,59731,59735,59742,37819,59749,59753,59771},
+       { 241,45158,39866,39866,59781,59789,37425,59804,59808,59826},
+       { 244,43968,59860,59860,59864,59864,37076,55806,55810,55810},
+       { 246,51899,59878,59878,59882,59882,37076,59890,59894,59909},
+       { 247,46413,41380,41380,59923,59934,37845,59947,59951,59966},
+       { 249,50771,59985,59985,59989,59989,37963,59999,60003,60023},
+       { 251,45609,60043,60043,60047,60055,37582,60066,60070,60086},
+       { 261,50889,60105,60105,60109,60115,37967,60126,60130,60142},
+       { 209,45887,60160,60160,60164,0,10586,60177,60181,0},
+       { 264,51509,60200,60200,60204,60204,37076,55806,55810,55810}
 };
 
 
 static const RegionInfoNameEntry region_name_entries [] = {
-       {52374, 0},      /* AE */
-       {48051, 1},      /* AF */
-       {45367, 2},      /* AL */
-       {1929, 3},       /* AM */
-       {51865, 4},      /* AR */
-       {49562, 5},      /* AT */
-       {49595, 6},      /* AU */
-       {46265, 7},      /* AZ */
-       {50160, 8},      /* BA */
-       {49365, 9},      /* BD */
-       {48857, 10},     /* BE */
-       {44151, 11},     /* BG */
-       {52486, 12},     /* BH */
-       {52666, 13},     /* BO */
-       {45071, 14},     /* BR */
-       {45753, 15},     /* BY */
-       {51622, 16},     /* BZ */
-       {49688, 17},     /* CA */
-       {13753, 18},     /* CH */
-       {52267, 19},     /* CL */
-       {13832, 20},     /* CN */
-       {51466, 21},     /* CO */
-       {50462, 22},     /* CR */
-       {44314, 23},     /* CZ */
-       {44404, 24},     /* DE */
-       {44356, 25},     /* DK */
-       {51094, 26},     /* DO */
-       {50222, 27},     /* DZ */
-       {52084, 28},     /* EC */
-       {45851, 29},     /* EE */
-       {49417, 30},     /* EG */
-       {44194, 31},     /* ES */
-       {47930, 32},     /* ET */
-       {44534, 33},     /* FI */
-       {46682, 34},     /* FO */
-       {44578, 35},     /* FR */
-       {47587, 36},     /* GB */
-       {46628, 37},     /* GE */
-       {48329, 38},     /* GL */
-       {44460, 39},     /* GR */
-       {50028, 40},     /* GT */
-       {49510, 41},     /* HK */
-       {52806, 42},     /* HN */
-       {45270, 43},     /* HR */
-       {44679, 44},     /* HU */
-       {45616, 45},     /* ID */
-       {49210, 46},     /* IE */
-       {44627, 47},     /* IL */
-       {46736, 48},     /* IN */
-       {48619, 49},     /* IQ */
-       {46076, 50},     /* IR */
-       {44728, 51},     /* IS */
-       {44771, 52},     /* IT */
-       {51242, 53},     /* JM */
-       {51768, 54},     /* JO */
-       {44816, 55},     /* JP */
-       {46872, 56},     /* KE */
-       {47653, 57},     /* KH */
-       {44871, 58},     /* KR */
-       {52189, 59},     /* KW */
-       {47695, 60},     /* LA */
-       {52002, 61},     /* LB */
-       {50371, 62},     /* LI */
-       {47871, 63},     /* LK */
-       {45949, 64},     /* LT */
-       {49947, 65},     /* LU */
-       {45897, 66},     /* LV */
-       {49830, 67},     /* LY */
-       {50691, 68},     /* MA */
-       {50816, 69},     /* MC */
-       {51944, 70},     /* ME */
-       {46381, 71},     /* MK */
-       {50311, 72},     /* MO */
-       {46775, 73},     /* MT */
-       {48806, 74},     /* MX */
-       {48159, 75},     /* NG */
-       {52860, 76},     /* NI */
-       {44923, 77},     /* NL */
-       {44981, 78},     /* NO */
-       {47991, 79},     /* NP */
-       {50406, 80},     /* NZ */
-       {51211, 81},     /* OM */
-       {50768, 82},     /* PA */
-       {51667, 83},     /* PE */
-       {48105, 84},     /* PH */
-       {45555, 85},     /* PK */
-       {45022, 86},     /* PL */
-       {52918, 87},     /* PR */
-       {49073, 88},     /* PT */
-       {52538, 89},     /* PY */
-       {52590, 90},     /* QA */
-       {45166, 91},     /* RO */
-       {51536, 92},     /* RS */
-       {45222, 93},     /* RU */
-       {48487, 94},     /* RW */
-       {13750, 95},     /* SA */
-       {45411, 96},     /* SE */
-       {49894, 97},     /* SG */
-       {45809, 98},     /* SI */
-       {45321, 99},     /* SK */
-       {52724, 100},    /* SV */
-       {51592, 101},    /* SY */
-       {45458, 102},    /* TH */
-       {46028, 103},    /* TJ */
-       {50986, 104},    /* TN */
-       {45504, 105},    /* TR */
-       {51811, 106},    /* TT */
-       {44245, 107},    /* TW */
-       {45683, 108},    /* UA */
-       {44493, 109},    /* US */
-       {52424, 110},    /* UY */
-       {46938, 111},    /* UZ */
-       {51296, 112},    /* VE */
-       {46134, 113},    /* VN */
-       {51414, 114},    /* YE */
-       {46412, 115},    /* ZA */
-       {52034, 116}     /* ZW */
+       {51849, 0},      /* AE */
+       {47526, 1},      /* AF */
+       {44842, 2},      /* AL */
+       {1820, 3},       /* AM */
+       {51340, 4},      /* AR */
+       {49037, 5},      /* AT */
+       {49070, 6},      /* AU */
+       {45740, 7},      /* AZ */
+       {49635, 8},      /* BA */
+       {48840, 9},      /* BD */
+       {48332, 10},     /* BE */
+       {43626, 11},     /* BG */
+       {51961, 12},     /* BH */
+       {52141, 13},     /* BO */
+       {44546, 14},     /* BR */
+       {45228, 15},     /* BY */
+       {51097, 16},     /* BZ */
+       {49163, 17},     /* CA */
+       {13632, 18},     /* CH */
+       {51742, 19},     /* CL */
+       {13711, 20},     /* CN */
+       {50941, 21},     /* CO */
+       {49937, 22},     /* CR */
+       {43789, 23},     /* CZ */
+       {43879, 24},     /* DE */
+       {43831, 25},     /* DK */
+       {50569, 26},     /* DO */
+       {49697, 27},     /* DZ */
+       {51559, 28},     /* EC */
+       {45326, 29},     /* EE */
+       {48892, 30},     /* EG */
+       {43669, 31},     /* ES */
+       {47405, 32},     /* ET */
+       {44009, 33},     /* FI */
+       {46157, 34},     /* FO */
+       {44053, 35},     /* FR */
+       {47062, 36},     /* GB */
+       {46103, 37},     /* GE */
+       {47804, 38},     /* GL */
+       {43935, 39},     /* GR */
+       {49503, 40},     /* GT */
+       {48985, 41},     /* HK */
+       {52281, 42},     /* HN */
+       {44745, 43},     /* HR */
+       {44154, 44},     /* HU */
+       {45091, 45},     /* ID */
+       {48685, 46},     /* IE */
+       {44102, 47},     /* IL */
+       {46211, 48},     /* IN */
+       {48094, 49},     /* IQ */
+       {45551, 50},     /* IR */
+       {44203, 51},     /* IS */
+       {44246, 52},     /* IT */
+       {50717, 53},     /* JM */
+       {51243, 54},     /* JO */
+       {44291, 55},     /* JP */
+       {46347, 56},     /* KE */
+       {47128, 57},     /* KH */
+       {44346, 58},     /* KR */
+       {51664, 59},     /* KW */
+       {47170, 60},     /* LA */
+       {51477, 61},     /* LB */
+       {49846, 62},     /* LI */
+       {47346, 63},     /* LK */
+       {45424, 64},     /* LT */
+       {49422, 65},     /* LU */
+       {45372, 66},     /* LV */
+       {49305, 67},     /* LY */
+       {50166, 68},     /* MA */
+       {50291, 69},     /* MC */
+       {51419, 70},     /* ME */
+       {45856, 71},     /* MK */
+       {49786, 72},     /* MO */
+       {46250, 73},     /* MT */
+       {48281, 74},     /* MX */
+       {47634, 75},     /* NG */
+       {52335, 76},     /* NI */
+       {44398, 77},     /* NL */
+       {44456, 78},     /* NO */
+       {47466, 79},     /* NP */
+       {49881, 80},     /* NZ */
+       {50686, 81},     /* OM */
+       {50243, 82},     /* PA */
+       {51142, 83},     /* PE */
+       {47580, 84},     /* PH */
+       {45030, 85},     /* PK */
+       {44497, 86},     /* PL */
+       {52393, 87},     /* PR */
+       {48548, 88},     /* PT */
+       {52013, 89},     /* PY */
+       {52065, 90},     /* QA */
+       {44641, 91},     /* RO */
+       {51011, 92},     /* RS */
+       {44697, 93},     /* RU */
+       {47962, 94},     /* RW */
+       {13629, 95},     /* SA */
+       {44886, 96},     /* SE */
+       {49369, 97},     /* SG */
+       {45284, 98},     /* SI */
+       {44796, 99},     /* SK */
+       {52199, 100},    /* SV */
+       {51067, 101},    /* SY */
+       {44933, 102},    /* TH */
+       {45503, 103},    /* TJ */
+       {50461, 104},    /* TN */
+       {44979, 105},    /* TR */
+       {51286, 106},    /* TT */
+       {43720, 107},    /* TW */
+       {45158, 108},    /* UA */
+       {43968, 109},    /* US */
+       {51899, 110},    /* UY */
+       {46413, 111},    /* UZ */
+       {50771, 112},    /* VE */
+       {45609, 113},    /* VN */
+       {50889, 114},    /* YE */
+       {45887, 115},    /* ZA */
+       {51509, 116}     /* ZW */
 };
 
 
@@ -1514,24 +1514,12 @@ static const char locale_strings [] = {
        "oct.\0"
        "nov.\0"
        "des.\0"
-       "d/MM/yy\0"
-       "dd-MM-yyyy\0"
-       "dd-MM-yy\0"
-       "d-MM-yy\0"
-       "dd.MM.yyyy\0"
-       "dd.MM.yy\0"
-       "d.MM.yy\0"
-       "dddd, d MMMM' de 'yyyy\0"
-       "dddd, d MMMM yyyy\0"
-       "d MMMM' de 'yyyy\0"
-       "d MMMM yyyy\0"
-       "d'-'MMMM'-'yyyy\0"
-       "ddd, d MMM yyyy\0"
-       "MMMM' de 'yyyy\0"
-       "MMMM yyyy\0"
-       "MMM yyyy\0"
-       "MMM yy\0"
-       "M'\xe6\x9c\x88'd'\xe6\x97\xa5'\0"
+       "d/M/yyyy\0"
+       "d MMM yyyy\0"
+       "dddd, d MMMM 'de' yyyy\0"
+       "d MMMM 'de' yyyy\0"
+       "MMMM 'de' yyyy\0"
+       "M\xe6\x9c\x88\x64\xe6\x97\xa5\0"
        "\xe4\xb8\x8a\xe5\x8d\x88\0"
        "\xe4\xb8\x8b\xe5\x8d\x88\0"
        "\xe6\x98\x9f\xe6\x9c\x9f\xe6\x97\xa5\0"
@@ -1599,6 +1587,8 @@ static const char locale_strings [] = {
        "tt h:mm:ss\0"
        "tt hh:mm:ss\0"
        "yyyy'\xe5\xb9\xb4'M'\xe6\x9c\x88'\0"
+       "yyyy'\xe5\xb9\xb4'MMM\0"
+       "yyyy'\xe5\xb9\xb4'MMMM\0"
        "yyyy.M\0"
        "d. MMMM\0"
        "AM\0"
@@ -1657,16 +1647,11 @@ static const char locale_strings [] = {
        "\xc5\x99\xc3\xadj\0"
        "lis\0"
        "pro\0"
-       "\0"
+       "dd.MM.yyyy\0"
        "d. M. yyyy\0"
-       "d/M/yyyy\0"
-       "d/M/yy\0"
-       "d-M-yy\0"
+       "dddd d. MMMM yyyy\0"
        "d. MMMM yyyy\0"
-       "h.mm tt\0"
-       "H.mm\0"
-       "h.mm.ss tt\0"
-       "H.mm.ss\0"
+       "MMMM yyyy\0"
        "s\xc3\xb8ndag\0"
        "mandag\0"
        "tirsdag\0"
@@ -1710,6 +1695,8 @@ static const char locale_strings [] = {
        "nov\0"
        "dec\0"
        "-\0"
+       "dd-MM-yyyy\0"
+       "dd-MM-yy\0"
        "yyyy MM dd\0"
        "vorm.\0"
        "nachm.\0"
@@ -1751,6 +1738,7 @@ static const char locale_strings [] = {
        "Okt\0"
        "Nov\0"
        "Dez\0"
+       "dd.MM.yy\0"
        "dd. MMM. yyyy\0"
        "dddd, d. MMMM yyyy\0"
        "d. MMM. yyyy\0"
@@ -1813,7 +1801,10 @@ static const char locale_strings [] = {
        "\xce\x9f\xce\xba\xcf\x84\0"
        "\xce\x9d\xce\xbf\xce\xad\0"
        "\xce\x94\xce\xb5\xce\xba\0"
+       "d/M/yy\0"
        "dd/MMM/yyyy\0"
+       "dddd, d MMMM yyyy\0"
+       "d MMMM yyyy\0"
        "h:mm tt\0"
        "h:mm:ss tt\0"
        "MMMM d\0"
@@ -1852,7 +1843,7 @@ static const char locale_strings [] = {
        "MMMM d, yyyy\0"
        "dddd, d MMMM, yyyy\0"
        "d MMMM, yyyy\0"
-       "d' de 'MMMM\0"
+       "d 'de' MMMM\0"
        "domingo\0"
        "lunes\0"
        "martes\0"
@@ -1902,14 +1893,18 @@ static const char locale_strings [] = {
        "Oct.\0"
        "Nov.\0"
        "Dic.\0"
+       "d/MM/yy\0"
+       "d-M-yy\0"
        "dddd, d' de 'MMMM' de 'yyyy\0"
        "dddd d' de 'MMMM' de 'yyyy\0"
        "d' de 'MMMM' de 'yyyy\0"
+       "H.mm\0"
        "HH.mm\0"
        "HH'H'mm\0"
+       "H.mm.ss\0"
        "HH.mm.ss\0"
        "HH'H'mm.ss\0"
-       "d'.' MMMM\0"
+       "MMMM' de 'yyyy\0"
        "ap.\0"
        "ip.\0"
        "sunnuntaina\0"
@@ -1964,8 +1959,6 @@ static const char locale_strings [] = {
        "marras\0"
        "joulu\0"
        "d.M.yyyy\0"
-       "d.M.yy\0"
-       "dd. MMMM yyyy\0"
        "dimanche\0"
        "lundi\0"
        "mardi\0"
@@ -2089,9 +2082,10 @@ static const char locale_strings [] = {
        "szept.\0"
        "okt.\0"
        "dec.\0"
-       "yyyy.MM.dd.\0"
+       "\0"
        "yyyy. MM. dd.\0"
-       "yy-MM-dd\0"
+       "yyyy. MMM d.\0"
+       "yyyy. MMMM d., dddd\0"
        "yyyy. MMMM d.\0"
        "yyyy. MMMM\0"
        "f.h.\0"
@@ -2124,10 +2118,7 @@ static const char locale_strings [] = {
        "\xc3\xa1g\xc3\xba.\0"
        "sep.\0"
        "n\xc3\xb3v.\0"
-       "d. M. yyyy.\0"
-       "d. M. '\\''yy.\0"
-       "yy MM dd\0"
-       "dddd d. MMMM  yyyy\0"
+       "d. MMM yyyy\0"
        "domenica\0"
        "luned\xc3\xac\0"
        "marted\xc3\xac\0"
@@ -2205,7 +2196,8 @@ static const char locale_strings [] = {
        "yyyy'\xe5\xb9\xb4'MMM'\xe6\x9c\x88'd'\xe6\x97\xa5 'dddd\0"
        "yyyy'\xe5\xb9\xb4'MMMMd'\xe6\x97\xa5'\0"
        "yyyy'\xe5\xb9\xb4'MMMMd'\xe6\x97\xa5 'dddd\0"
-       "M'\xec\x9b\x94' d'\xec\x9d\xbc'\0"
+       "yyyy'\xe5\xb9\xb4'MMM'\xe6\x9c\x88'\0"
+       "M\xec\x9b\x94 d\xec\x9d\xbc\0"
        "\xec\x98\xa4\xec\xa0\x84\0"
        "\xec\x98\xa4\xed\x9b\x84\0"
        "\xec\x9d\xbc\xec\x9a\x94\xec\x9d\xbc\0"
@@ -2234,6 +2226,7 @@ static const char locale_strings [] = {
        "10\xec\x9b\x94\0"
        "11\xec\x9b\x94\0"
        "12\xec\x9b\x94\0"
+       "yy-MM-dd\0"
        "yyyy'\xeb\x85\x84' M'\xec\x9b\x94' d'\xec\x9d\xbc' dddd\0"
        "yyyy'\xeb\x85\x84' M'\xec\x9b\x94' d'\xec\x9d\xbc'\0"
        "yy'\xeb\x85\x84' M'\xec\x9b\x94' d'\xec\x9d\xbc' dddd\0"
@@ -2245,6 +2238,8 @@ static const char locale_strings [] = {
        "yyyy'\xeb\x85\x84 'MMMM d'\xec\x9d\xbc 'dddd\0"
        "yyyy'\xeb\x85\x84 'MMMM d'\xec\x9d\xbc'\0"
        "yyyy'\xeb\x85\x84' M'\xec\x9b\x94'\0"
+       "yyyy'\xeb\x85\x84' MMM'\xec\x9b\x94'\0"
+       "yyyy'\xeb\x85\x84' MMMM\0"
        "a.m.\0"
        "p.m.\0"
        "zondag\0"
@@ -2273,6 +2268,7 @@ static const char locale_strings [] = {
        "HH:mm' uur'\0"
        "HH.mm.ss' uur'\0"
        "HH:mm:ss' uur'\0"
+       "d.MMMM.\0"
        "s\xc3\xb8.\0"
        "ma.\0"
        "ti.\0"
@@ -2281,17 +2277,6 @@ static const char locale_strings [] = {
        "fr.\0"
        "l\xc3\xb8.\0"
        "des\0"
-       "d.MM.yyyy\0"
-       "'kl 'H:mm\0"
-       "'kl 'HH:mm\0"
-       "'kl 'HH.mm\0"
-       "'kl 'H.mm\0"
-       "'kl 'HH:mm:ss\0"
-       "'kl 'H:mm:ss\0"
-       "'kl 'HH.mm.ss\0"
-       "'kl 'H.mm.ss\0"
-       "MMM. yyyy\0"
-       "MM.yyyy\0"
        "niedziela\0"
        "poniedzia\xc5\x82\x65k\0"
        "wtorek\0"
@@ -2364,6 +2349,7 @@ static const char locale_strings [] = {
        "abr\0"
        "out\0"
        "dez\0"
+       "d.M.yy\0"
        "am\0"
        "sm\0"
        "dumengia\0"
@@ -2391,8 +2377,8 @@ static const char locale_strings [] = {
        "zercl.\0"
        "fan.\0"
        "sett.\0"
-       "dddd, 'ils\xe2\x80\x99' d. MMMM, yyyy\0"
-       "HH\0"
+       "dddd, 'ils' d 'da' MMMM yyyy\0"
+       "d 'da' MMMM yyyy\0"
        "duminic\xc4\x83\0"
        "luni\0"
        "mar\xc8\x9bi\0"
@@ -2419,14 +2405,6 @@ static const char locale_strings [] = {
        "ian.\0"
        "iun.\0"
        "iul.\0"
-       "dd'/'MM'/'yyyy\0"
-       "dd'/'MM'/'yy\0"
-       "yyyy'/'MM'/'dd\0"
-       "d MMM yyyy\0"
-       "MMMM yy\0"
-       "MM.yy\0"
-       "MM'/'yyyy\0"
-       "MM'/'yy\0"
        "\xd0\xb4\xd0\xbe \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x83\xd0\xb4\xd0\xbd\xd1\x8f\0"
        "\xd0\xbf\xd0\xbe\xd1\x81\xd0\xbb\xd0\xb5 \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x83\xd0\xb4\xd0\xbd\xd1\x8f\0"
        "\xd0\xb2\xd0\xbe\xd1\x81\xd0\xba\xd1\x80\xd0\xb5\xd1\x81\xd0\xb5\xd0\xbd\xd1\x8c\xd0\xb5\0"
@@ -2529,6 +2507,7 @@ static const char locale_strings [] = {
        "stu\0"
        "d.M.yyyy.\0"
        "d.M.yy.\0"
+       "d. M. yyyy.\0"
        "dd.MM.yyyy.\0"
        "d. M. yy.\0"
        "dd.MM.yy.\0"
@@ -2562,9 +2541,6 @@ static const char locale_strings [] = {
        "okt\xc3\xb3\x62ra\0"
        "novembra\0"
        "decembra\0"
-       "dd. MM. yyyy\0"
-       "d/MM/yyyy\0"
-       "dd. MM. yy\0"
        "paradite\0"
        "pasdite\0"
        "e diel\0"
@@ -2614,6 +2590,8 @@ static const char locale_strings [] = {
        "augusti\0"
        "'den 'd MMMM yyyy\0"
        "dddd' den 'd MMMM yyyy\0"
+       "'kl 'H:mm\0"
+       "'kl 'H:mm:ss\0"
        "dd MMM yyyy\0"
        "ddd d MMMM yyyy\0"
        "'\xe0\xb8\xa7\xe0\xb8\xb1\xe0\xb8\x99'dddd'\xe0\xb8\x97\xe0\xb8\xb5\xe0\xb9\x88' d MMMM gg yyyy\0"
@@ -2656,8 +2634,8 @@ static const char locale_strings [] = {
        "Eki\0"
        "Kas\0"
        "Ara\0"
+       "d.MM.yyyy\0"
        "d MMMM yyyy dddd\0"
-       "dd MMMM yyyy dddd\0"
        "\xd9\x82\xd8\xa8\xd9\x84 \xd8\xaf\xd9\x88\xd9\xbe\xdb\x81\xd8\xb1\0"
        "\xd8\xa8\xd8\xb9\xd8\xaf \xd8\xaf\xd9\x88\xd9\xbe\xdb\x81\xd8\xb1\0"
        "\xd8\xa7\xd8\xaa\xd9\x88\xd8\xa7\xd8\xb1\0"
@@ -2703,6 +2681,7 @@ static const char locale_strings [] = {
        "Desember\0"
        "Agt\0"
        "Des\0"
+       "dddd, dd MMMM yyyy\0"
        "\xd0\xb4\xd0\xbf\0"
        "\xd0\xbf\xd0\xbf\0"
        "\xd0\xbd\xd0\xb5\xd0\xb4\xd1\x96\xd0\xbb\xd1\x8f\0"
@@ -2796,6 +2775,7 @@ static const char locale_strings [] = {
        "\xd0\xba\xd0\xb0\xd1\x81\0"
        "\xd0\xbb\xd1\x96\xd1\x81\0"
        "\xd1\x81\xd0\xbd\xd0\xb5\0"
+       "MMMM yyyy \xd0\xb3.\0"
        "dop.\0"
        "pop.\0"
        "nedelja\0"
@@ -2811,8 +2791,9 @@ static const char locale_strings [] = {
        "julij\0"
        "avgust\0"
        "avg\0"
-       "d.  M. yy\0"
-       "dd. MMMM\0"
+       "d. MM. yyyy\0"
+       "dddd, dd. MMMM yyyy\0"
+       "dd. MMMM yyyy\0"
        "e.k.\0"
        "p.k.\0"
        "p\xc3\xbchap\xc3\xa4\x65v\0"
@@ -2834,6 +2815,7 @@ static const char locale_strings [] = {
        "veebr\0"
        "sept\0"
        "dets\0"
+       "H:mm.ss\0"
        "priek\xc5\xa1pusdien\xc4\x81\0"
        "p\xc4\x93\x63pusdien\xc4\x81\0"
        "sv\xc4\x93tdiena\0"
@@ -2881,10 +2863,10 @@ static const char locale_strings [] = {
        "Aug.\0"
        "Okt.\0"
        "Dec.\0"
-       "dd-MM-yyyy.\0"
-       "dddd, yyyy'. gada 'd. MMMM\0"
-       "yyyy'. gada 'MMMM\0"
-       "MMMM d 'd.'\0"
+       "yyyy. 'gada' d. MMM\0"
+       "dddd, yyyy. 'gada' d. MMMM\0"
+       "yyyy. 'gada' d. MMMM\0"
+       "yyyy. 'g'. MMMM\0"
        "pr.p.\0"
        "sekmadienis\0"
        "pirmadienis\0"
@@ -2924,8 +2906,9 @@ static const char locale_strings [] = {
        "spal.\0"
        "lapkr.\0"
        "gruod.\0"
-       "yyyy 'm.' MMMM d 'd.'\0"
-       "yyyy 'm.' MMMM\0"
+       "yyyy 'm'. MMMM d 'd'., dddd\0"
+       "yyyy 'm'. MMMM d 'd'.\0"
+       "yyyy MMMM\0"
        "\xd0\xbf\xd0\xb5. \xd1\x87\xd0\xbe.\0"
        "\xd0\xbf\xd0\xb0. \xd1\x87\xd0\xbe.\0"
        "\xd0\xaf\xd0\xba\xd1\x88\xd0\xb0\xd0\xbd\xd0\xb1\xd0\xb5\0"
@@ -2994,7 +2977,6 @@ static const char locale_strings [] = {
        "\xd9\x81\xd9\x88\xd8\xb1\xdb\x8c\xd9\x87\xd9\x94\0"
        "\xd9\x85\xd9\x87\xd9\x94\0"
        "\xda\x98\xd9\x88\xd8\xa6\xdb\x8c\xd9\x87\xd9\x94\0"
-       "dddd, dd MMMM yyyy\0"
        "SA\0"
        "CH\0"
        "Ch\xe1\xbb\xa7 Nh\xe1\xba\xadt\0"
@@ -3111,6 +3093,7 @@ static const char locale_strings [] = {
        "\xd5\xb0\xd5\xaf\xd5\xbf\0"
        "\xd5\xb6\xd5\xb5\xd5\xb4\0"
        "\xd5\xa4\xd5\xaf\xd5\xbf\0"
+       "d/MM/yyyy\0"
        "d/MMM/yyyy\0"
        "d-MMM-yyyy\0"
        "dd-MMM-yyyy\0"
@@ -3158,8 +3141,7 @@ static const char locale_strings [] = {
        "sen\0"
        "noy\0"
        "dek\0"
-       "dd MMMM yyyy'-c\xc3\xbc il'\0"
-       "MMMM'ren' d'a'\0"
+       "d MMMM yyyy, dddd\0"
        "igandea\0"
        "astelehena\0"
        "asteartea\0"
@@ -3210,8 +3192,10 @@ static const char locale_strings [] = {
        "urr.\0"
        "aza.\0"
        "abe.\0"
-       "dddd, yyyy'(e)ko' MMMM'ren' d'a'\0"
-       "yyyy'(e)ko' MMMM\0"
+       "yyyy MMM d\0"
+       "yyyy('e')'ko' MMMM d, dddd\0"
+       "yyyy('e')'ko' MMMM d\0"
+       "yyyy('e')'ko' MMMM\0"
        "\xd0\xbf\xd1\x80\xd0\xb5\xd1\x82\xd0\xbf\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xbd\xd0\xb5\0"
        "\xd0\xbf\xd0\xbe\xd0\xbf\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xbd\xd0\xb5\0"
        "\xd0\xbd\xd0\xb5\xd0\xb4\xd0\xb5\xd0\xbb\xd0\xb0\0"
@@ -3234,7 +3218,8 @@ static const char locale_strings [] = {
        "\xd0\xbc\xd0\xb0\xd1\x80.\0"
        "\xd1\x98\xd1\x83\xd0\xbd.\0"
        "\xd1\x98\xd1\x83\xd0\xbb.\0"
-       "d. M. yyyy '\xd0\xb3.'\0"
+       "dd.M.yyyy\0"
+       "MMMM yyyy '\xd0\xb3'.\0"
        "Tshipi\0"
        "Mosopulogo\0"
        "Labobedi\0"
@@ -3273,6 +3258,8 @@ static const char locale_strings [] = {
        "Dip\0"
        "Ngw\0"
        "Sed\0"
+       "yyyy MMMM d, dddd\0"
+       "yyyy MMMM d\0"
        "Cawe\0"
        "Mvulo\0"
        "Lwesibini\0"
@@ -3326,6 +3313,7 @@ static const char locale_strings [] = {
        "Apreli\0"
        "Septhemba\0"
        "Mas\0"
+       "MMM d, yyyy\0"
        "vm.\0"
        "nm.\0"
        "Sondag\0"
@@ -3344,7 +3332,6 @@ static const char locale_strings [] = {
        "Junie\0"
        "Julie\0"
        "Augustus\0"
-       "yyyy/MMM/dd\0"
        "\xe1\x83\x99\xe1\x83\x95\xe1\x83\x98\xe1\x83\xa0\xe1\x83\x90\0"
        "\xe1\x83\x9d\xe1\x83\xa0\xe1\x83\xa8\xe1\x83\x90\xe1\x83\x91\xe1\x83\x90\xe1\x83\x97\xe1\x83\x98\0"
        "\xe1\x83\xa1\xe1\x83\x90\xe1\x83\x9b\xe1\x83\xa8\xe1\x83\x90\xe1\x83\x91\xe1\x83\x90\xe1\x83\x97\xe1\x83\x98\0"
@@ -3389,10 +3376,7 @@ static const char locale_strings [] = {
        "\xe1\x83\x9d\xe1\x83\xa5\xe1\x83\xa2\0"
        "\xe1\x83\x9c\xe1\x83\x9d\xe1\x83\x94\0"
        "\xe1\x83\x93\xe1\x83\x94\xe1\x83\x99\0"
-       "dddd, d MMMM, yyyy '\xe1\x83\xac\xe1\x83\x94\xe1\x83\x9a\xe1\x83\x98'\0"
-       "yyyy '\xe1\x83\xac\xe1\x83\x9a\xe1\x83\x98\xe1\x83\xa1' d MMMM, dddd\0"
-       "d MMMM, yyyy '\xe1\x83\xac\xe1\x83\x94\xe1\x83\x9a\xe1\x83\x98', dddd\0"
-       "d MMM. yyyy\0"
+       "d MMM, yyyy\0"
        "f.p.\0"
        "s.p.\0"
        "m\xc3\xa1nadagur\0"
@@ -3452,7 +3436,7 @@ static const char locale_strings [] = {
        "\xe0\xa4\x85\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\x9f\xe0\xa5\x82\0"
        "\xe0\xa4\xa8\xe0\xa4\xb5\xe0\xa4\x82\0"
        "\xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa4\x82\0"
-       "d' ta\\' 'MMMM\0"
+       "d 'ta'\xe2\x80\x99 MMMM\0"
        "QN\0"
        "WN\0"
        "Il-\xc4\xa6\x61\x64\x64\0"
@@ -3490,10 +3474,9 @@ static const char locale_strings [] = {
        "Set\0"
        "Ott\0"
        "Di\xc4\x8b\0"
-       "ddMMyyyy\0"
-       "dddd, d' ta\\' 'MMMM yyyy\0"
-       "d' ta\\' 'MMMM yyyy\0"
-       "MMMM d'. b.'\0"
+       "dddd, d 'ta'\xe2\x80\x99 MMMM yyyy\0"
+       "d 'ta'\xe2\x80\x99 MMMM yyyy\0"
+       "MMMM 'ta'\xe2\x80\x99 yyyy\0"
        "i.b.\0"
        "e.b.\0"
        "sotnabeaivi\0"
@@ -3534,8 +3517,6 @@ static const char locale_strings [] = {
        "golg\0"
        "sk\xc3\xa1\x62\0"
        "juov\0"
-       "dddd, MMMM d'. b. 'yyyy\0"
-       "MMMM d'. b. 'yyyy\0"
        "D\xc3\xa9 Domhnaigh\0"
        "D\xc3\xa9 Luain\0"
        "D\xc3\xa9 M\xc3\xa1irt\0"
@@ -3629,9 +3610,8 @@ static const char locale_strings [] = {
        "\xd2\x9b\xd0\xb0\xd0\xb7.\0"
        "\xd2\x9b\xd0\xb0\xd1\x80.\0"
        "\xd0\xb6\xd0\xb5\xd0\xbb\xd1\x82.\0"
-       "d MMMM yyyy '\xd0\xb6.'\0"
-       "dd MMMM yyyy '\xd0\xb6.'\0"
-       "d'-'MMMM\0"
+       "yyyy, dd-MMM\0"
+       "d-MMMM\0"
        "\xd1\x82\xd2\xaf\xd1\x88\xd0\xba\xd3\xa9 \xd1\x87\xd0\xb5\xd0\xb9\xd0\xb8\xd0\xbd\xd0\xba\xd0\xb8\0"
        "\xd1\x82\xd2\xaf\xd1\x88\xd1\x82\xd3\xa9\xd0\xbd \xd0\xba\xd0\xb8\xd0\xb9\xd0\xb8\xd0\xbd\xd0\xba\xd0\xb8\0"
        "\xd0\x96\xd0\xb5\xd0\xba\0"
@@ -3658,9 +3638,8 @@ static const char locale_strings [] = {
        "\xd1\x81\xd0\xb5\xd0\xbd.\0"
        "\xd0\xbd\xd0\xbe\xd1\x8f.\0"
        "d-MMM yy\0"
-       "dd'-'MMMM yyyy'-\xd0\xb6.'\0"
+       "dd-MMMM yyyy'-\xd0\xb6.'\0"
        "MMMM yyyy'-\xd0\xb6.'\0"
-       "MMMM dd\0"
        "Jumapili\0"
        "Jumatatu\0"
        "Jumanne\0"
@@ -3681,9 +3660,6 @@ static const char locale_strings [] = {
        "Oktoba\0"
        "Desemba\0"
        "Ago\0"
-       "dddd, MMMM dd, yyyy\0"
-       "MMMM dd, yyyy\0"
-       "d-MMMM\0"
        "yakshanba\0"
        "dushanba\0"
        "seshanba\0"
@@ -3706,7 +3682,7 @@ static const char locale_strings [] = {
        "Avg\0"
        "Noya\0"
        "Dek\0"
-       "yyyy 'yil' d-MMMM\0"
+       "dddd, yyyy MMMM dd\0"
        "\xe0\xa6\xaa\xe0\xa7\x82\xe0\xa6\xb0\xe0\xa7\x8d\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\xb9\xe0\xa7\x8d\xe0\xa6\xa3\0"
        "\xe0\xa6\x85\xe0\xa6\xaa\xe0\xa6\xb0\xe0\xa6\xbe\xe0\xa6\xb9\xe0\xa7\x8d\xe0\xa6\xa3\0"
        "\xe0\xa6\xb0\xe0\xa6\xac\xe0\xa6\xbf\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\xb0\0"
@@ -3742,8 +3718,6 @@ static const char locale_strings [] = {
        "\xe0\xa6\x85\xe0\xa6\x95\xe0\xa7\x8d\xe0\xa6\x9f\xe0\xa7\x8b\xe0\xa6\xac\xe0\xa6\xb0\0"
        "\xe0\xa6\xa8\xe0\xa6\xad\xe0\xa7\x87\xe0\xa6\xae\xe0\xa7\x8d\xe0\xa6\xac\xe0\xa6\xb0\0"
        "\xe0\xa6\xa1\xe0\xa6\xbf\xe0\xa6\xb8\xe0\xa7\x87\xe0\xa6\xae\xe0\xa7\x8d\xe0\xa6\xac\xe0\xa6\xb0\0"
-       "dd'-'MM'-'yy\0"
-       "dd'-'MM'-'yyyy\0"
        "tt hh.mm\0"
        "tt h.mm\0"
        "tt hh.mm.ss\0"
@@ -3781,6 +3755,7 @@ static const char locale_strings [] = {
        "\xe0\xa8\x85\xe0\xa8\x95\xe0\xa8\xa4\xe0\xa9\x82\xe0\xa8\xac\xe0\xa8\xb0\0"
        "\xe0\xa8\xa8\xe0\xa8\xb5\xe0\xa9\xb0\xe0\xa8\xac\xe0\xa8\xb0\0"
        "\xe0\xa8\xa6\xe0\xa8\xb8\xe0\xa9\xb0\xe0\xa8\xac\xe0\xa8\xb0\0"
+       "dd MMMM yyyy dddd\0"
        "\xe0\xaa\xb0\xe0\xaa\xb5\xe0\xaa\xbf\xe0\xaa\xb5\xe0\xaa\xbe\xe0\xaa\xb0\0"
        "\xe0\xaa\xb8\xe0\xab\x8b\xe0\xaa\xae\xe0\xaa\xb5\xe0\xaa\xbe\xe0\xaa\xb0\0"
        "\xe0\xaa\xae\xe0\xaa\x82\xe0\xaa\x97\xe0\xaa\xb3\xe0\xaa\xb5\xe0\xaa\xbe\xe0\xaa\xb0\0"
@@ -3978,6 +3953,7 @@ static const char locale_strings [] = {
        "\xe0\xb2\x85\xe0\xb2\x95\xe0\xb3\x8d\xe0\xb2\x9f\xe0\xb3\x8b.\0"
        "\xe0\xb2\xa8\xe0\xb2\xb5\xe0\xb3\x86\xe0\xb2\x82.\0"
        "\xe0\xb2\xa1\xe0\xb2\xbf\xe0\xb2\xb8\xe0\xb3\x86\xe0\xb2\x82.\0"
+       "MMMM dd\0"
        "\xe0\xb4\x9e\xe0\xb4\xbe\xe0\xb4\xaf\xe0\xb4\xb1\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb5\x8d\xe2\x80\x8c\xe0\xb4\x9a\0"
        "\xe0\xb4\xa4\xe0\xb4\xbf\xe0\xb4\x99\xe0\xb5\x8d\xe0\xb4\x95\xe0\xb4\xb3\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb5\x8d\xe2\x80\x8c\xe0\xb4\x9a\0"
        "\xe0\xb4\x9a\xe0\xb5\x8a\xe0\xb4\xb5\xe0\xb5\x8d\xe0\xb4\xb5\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb5\x8d\xe0\xb4\x9a\0"
@@ -4111,9 +4087,8 @@ static const char locale_strings [] = {
        "10-\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80\0"
        "11-\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80\0"
        "12-\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80\0"
-       "yyyy '\xd0\xbe\xd0\xbd\xd1\x8b' M'-\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80\xd1\x8b\xd0\xbd' d. dddd '\xd0\xb3\xd0\xb0\xd1\x80\xd0\xb8\xd0\xb3'.\0"
-       "yyyy \xd0\xbe\xd0\xbd\xd1\x8b MMM d. dddd \xd0\xb3\xd0\xb0\xd1\x80\xd0\xb8\xd0\xb3.\0"
-       "yyyy '\xd0\xbe\xd0\xbd\xd1\x8b' MMMM\0"
+       "dddd, yyyy '\xd0\xbe\xd0\xbd\xd1\x8b' MM '\xd1\x81\xd0\xb0\xd1\x80\xd1\x8b\xd0\xbd' d\0"
+       "yyyy '\xd0\xbe\xd0\xbd\xd1\x8b' MM '\xd1\x81\xd0\xb0\xd1\x80\xd1\x8b\xd0\xbd' d\0"
        "\xe0\xbd\x9f\xe0\xbe\xb3\xe0\xbc\x8bM\xe0\xbd\x9a\xe0\xbd\xba\xe0\xbd\xa6\xe0\xbc\x8b\x64\0"
        "\xe0\xbd\xa6\xe0\xbe\x94\xe0\xbc\x8b\xe0\xbd\x91\xe0\xbe\xb2\xe0\xbd\xbc\xe0\xbc\x8b\0"
        "\xe0\xbd\x95\xe0\xbe\xb1\xe0\xbd\xb2\xe0\xbc\x8b\xe0\xbd\x91\xe0\xbe\xb2\xe0\xbd\xbc\xe0\xbc\x8b\0"
@@ -4263,7 +4238,7 @@ static const char locale_strings [] = {
        "\xe0\xba\x95.\xe0\xba\xa5.\0"
        "\xe0\xba\x9e.\xe0\xba\x88.\0"
        "\xe0\xba\x97.\xe0\xba\xa7.\0"
-       "dd.M.yyyy\0"
+       "dddd \xe0\xba\x97\xe0\xba\xb5 d MMMM gg yyyy\0"
        "luns\0"
        "m\xc3\xa9rcores\0"
        "xoves\0"
@@ -4293,9 +4268,6 @@ static const char locale_strings [] = {
        "Xu\xc3\xb1\0"
        "Xul\0"
        "Out\0"
-       "dddd, dd' de 'MMMM' de 'yyyy\0"
-       "HH'H'mm'\\''\0"
-       "HH'H'mm'\\''ss'\\'\\''\0"
        "\xe0\xa4\xae.\xe0\xa4\xaa\xe0\xa5\x82.\0"
        "\xe0\xa4\xae.\xe0\xa4\xa8\xe0\xa4\x82.\0"
        "\xe0\xa4\x86\xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xb0\0"
@@ -4343,9 +4315,6 @@ static const char locale_strings [] = {
        "\xe0\xb6\x94\xe0\xb6\x9a\xe0\xb7\x8a\0"
        "\xe0\xb6\xb1\xe0\xb7\x9c\xe0\xb7\x80\xe0\xb7\x90\0"
        "\xe0\xb6\xaf\xe0\xb7\x99\xe0\xb7\x83\xe0\xb7\x90\0"
-       "yyyy MMMM' \xe0\xb6\xb8\xe0\xb7\x83 'dd' \xe0\xb7\x80\xe0\xb7\x90\xe0\xb6\xb1\xe0\xb7\x92\xe0\xb6\xaf\xe0\xb7\x8f 'dddd\0"
-       "yyyy MMMM\0"
-       "MMMM d' \xe1\x89\x80\xe1\x8a\x95'\0"
        "\xe1\x8c\xa5\xe1\x8b\x8b\xe1\x89\xb5\0"
        "\xe1\x8a\xa8\xe1\x88\xb0\xe1\x8b\x93\xe1\x89\xb5\0"
        "\xe1\x8a\xa5\xe1\x88\x91\xe1\x8b\xb5\0"
@@ -4384,7 +4353,6 @@ static const char locale_strings [] = {
        "\xe1\x8a\xa6\xe1\x8a\xad\xe1\x89\xb6\0"
        "\xe1\x8a\x96\xe1\x89\xac\xe1\x88\x9d\0"
        "\xe1\x8b\xb2\xe1\x88\xb4\xe1\x88\x9d\0"
-       "dddd '\xe1\x8d\xa3' MMMM d '\xe1\x89\x80\xe1\x8a\x95' yyyy\0"
        "Zdat azal\0"
        "\xe1\xb8\x8c\x65\x66\x66ir aza\0"
        "Asamas\0"
@@ -4446,6 +4414,8 @@ static const char locale_strings [] = {
        "\xe0\xa4\x85\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\x9f\xe0\xa5\x8b\xe0\xa4\xac\xe0\xa4\xb0\0"
        "\xe0\xa4\xa8\xe0\xa5\x8b\xe0\xa4\xad\xe0\xa5\x87\xe0\xa4\xae\xe0\xa5\x8d\xe0\xa4\xac\xe0\xa4\xb0\0"
        "\xe0\xa4\xa1\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x87\xe0\xa4\xae\xe0\xa5\x8d\xe0\xa4\xac\xe0\xa4\xb0\0"
+       "dddd, MMMM dd, yyyy\0"
+       "MMMM dd, yyyy\0"
        "\xd9\x88\xd8\xb1\xdb\x8c\0"
        "\xd8\xba\xd9\x88\xdb\x8c\xdb\x8c\0"
        "\xd8\xba\xd8\xa8\xd8\xb1\xda\xab\xd9\x88\xd9\x84\xdb\x8c\0"
@@ -4458,9 +4428,6 @@ static const char locale_strings [] = {
        "\xd9\x85\xd8\xb1\xd8\xba\xd9\x88\xd9\x85\xdb\x8c\0"
        "\xd8\xb3\xd9\x84\xd9\x88\xd8\xa7\xd8\xba\xd9\x87\0"
        "\xda\xa9\xd8\xa8\0"
-       "yyyy, dd, MMMM, dddd\0"
-       "yyyy, dd, MMMM\0"
-       "MM/dd\0"
        "Linggo\0"
        "Lunes\0"
        "Martes\0"
@@ -4622,7 +4589,7 @@ static const char locale_strings [] = {
        "Juu\0"
        "\xe1\xbb\x8cg\xe1\xbb\x8d\0"
        "\xe1\xbb\x8ckt\0"
-       "M'\xe2\x80\x99 \xea\x86\xaa\xe2\x80\x99'd'\xe2\x80\x99 \xea\x91\x8d\xe2\x80\x99'\0"
+       "M\xe2\x80\x99 \xea\x86\xaa\xe2\x80\x99\x64\xe2\x80\x99 \xea\x91\x8d\xe2\x80\x99\0"
        "\xea\x8e\xb8\xea\x84\x91\0"
        "\xea\x81\xaf\xea\x8b\x92\0"
        "\xea\x91\xad\xea\x86\x8f\xea\x91\x8d\0"
@@ -4719,7 +4686,7 @@ static const char locale_strings [] = {
        "Oktoober\0"
        "Nov\xc3\xa4mber\0"
        "Dez\xc3\xa4mber\0"
-       "MMMM d '\xd0\xba\xd2\xaf\xd0\xbd\xd1\x8d'\0"
+       "MMMM d \xd0\xba\xd2\xaf\xd0\xbd\xd1\x8d\0"
        "\xd0\xad\xd0\x98\0"
        "\xd0\xad\xd0\x9a\0"
        "\xd0\x91\xd0\xb0\xd1\x81\xd0\xba\xd1\x8b\xd2\xbb\xd1\x8b\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8c\xd0\xb0\0"
@@ -4803,7 +4770,7 @@ static const char locale_strings [] = {
        "ukw.\0"
        "ugu.\0"
        "uku.\0"
-       "d ' ' MMMM ' ' yyyy\0"
+       "d'mh' MMMM\0"
        "m\0"
        "f\0"
        "DiD\xc3\xb2mhnaich\0"
@@ -4843,6 +4810,8 @@ static const char locale_strings [] = {
        "Sult\0"
        "D\xc3\xa0mh\0"
        "D\xc3\xb9\x62h\0"
+       "dddd, d'mh' MMMM yyyy\0"
+       "d'mh' MMMM yyyy\0"
        "\xe9\x80\xb1\xe6\x97\xa5\0"
        "\xe9\x80\xb1\xe4\xb8\x80\0"
        "\xe9\x80\xb1\xe4\xba\x8c\0"
@@ -4877,18 +4846,7 @@ static const char locale_strings [] = {
        "\xd8\xaa\xd8\xb4\xd8\xb1\xd9\x8a\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa3\xd9\x88\xd9\x84\0"
        "\xd8\xaa\xd8\xb4\xd8\xb1\xd9\x8a\xd9\x86 \xd8\xa7\xd9\x84\xd8\xab\xd8\xa7\xd9\x86\xd9\x8a\0"
        "\xd9\x83\xd8\xa7\xd9\x86\xd9\x88\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa3\xd9\x88\xd9\x84\0"
-       "dd. M. yy\0"
-       "d. MMM yy\0"
-       "H.mm' h'\0"
-       "HH.mm' h'\0"
-       "H.mm' Uhr'\0"
-       "HHmm\0"
-       "H' h'\0"
-       "H' Uhr'\0"
-       "HH:mm:ss' h'\0"
-       "H:mm:ss' h'\0"
-       "H:mm:ss' Uhr'\0"
-       "HHmmss\0"
+       "dd.MMMM.\0"
        "dom.\0"
        "mi\xc3\xa9.\0"
        "jue.\0"
@@ -4898,6 +4856,8 @@ static const char locale_strings [] = {
        "mzo.\0"
        "my.\0"
        "dic.\0"
+       "dd.MMMM\0"
+       "MMMM.yyyy\0"
        "H.mm' u.'\0"
        "f.m.\0"
        "e.m.\0"
@@ -4942,8 +4902,6 @@ static const char locale_strings [] = {
        "\xd0\x9f\xd0\xb0\xd0\xb9\0"
        "\xd0\xa8\xd0\xb0\xd0\xbd\0"
        "\xd0\xaf\0"
-       "dd/MM yyyy\0"
-       "yyyy '\xd0\xb9\xd0\xb8\xd0\xbb' d-MMMM\0"
        "\xd9\x8a\xd9\x86\xd8\xa7\xd9\x8a\xd8\xb1\0"
        "\xd9\x81\xd8\xa8\xd8\xb1\xd8\xa7\xd9\x8a\xd8\xb1\0"
        "\xd8\xa3\xd8\xa8\xd8\xb1\xd9\x8a\xd9\x84\0"
@@ -4957,10 +4915,8 @@ static const char locale_strings [] = {
        "\xd8\xaf\xd9\x8a\xd8\xb3\xd9\x85\xd8\xa8\xd8\xb1\0"
        "J\xc3\xa4nner\0"
        "J\xc3\xa4n\0"
-       "dd.MMM.yy\0"
-       "dddd, dd. MMMM yyyy\0"
-       "d.MMMM yyyy\0"
-       "H:mm' Uhr'\0"
+       "yy MM dd\0"
+       "MMMM d'. b.'\0"
        "aejlege\0"
        "m\xc3\xa5\x61nta\0"
        "d\xc3\xa4jsta\0"
@@ -4981,11 +4937,14 @@ static const char locale_strings [] = {
        "sk\xc3\xa1\x62ma\0"
        "juovla\0"
        "dddd', 'MMMM d'. b. 'yyyy\0"
-       "dddd' den 'd'.' MMMM yyyy\0"
-       "d'.' MMMM yyyy\0"
-       "d'. 'MMM yyyy\0"
+       "MMMM d'. b. 'yyyy\0"
        "M/dd/yy\0"
        "MMMM-dd-yy\0"
+       "dd-MMMM\0"
+       "dddd, d 'de' MMMM 'de' yyyy\0"
+       "d 'de' MMMM 'de' yyyy\0"
+       "d. MMM yyyy.\0"
+       "MMMM yyyy.\0"
        "\xd8\xac\xd8\xa7\xd9\x86\xd9\x81\xd9\x8a\0"
        "\xd9\x81\xd9\x8a\xd9\x81\xd8\xb1\xd9\x8a\0"
        "\xd8\xa3\xd9\x81\xd8\xb1\xd9\x8a\xd9\x84\0"
@@ -4995,23 +4954,23 @@ static const char locale_strings [] = {
        "\xd8\xa3\xd9\x88\xd8\xaa\0"
        "dddd yyyy'\xe5\xb9\xb4'M'\xe6\x9c\x88'd'\xe6\x97\xa5'\0"
        "dddd yyyy MM dd\0"
-       "d. MMM yyyy\0"
-       "d/MMM/yy\0"
-       "dddd', le 'd MMMM yyyy\0"
+       "d/MMMM\0"
+       "MMMM/yyyy\0"
        "pre podne\0"
        "popodne\0"
        "septembar\0"
        "oktobar\0"
        "novembar\0"
        "decembar\0"
-       "d. M. yy\0"
+       "dd. MMM. yyyy.\0"
+       "dddd, dd. MMMM yyyy.\0"
        "\xd9\x8a\xd9\x88\xd9\x84\xd9\x8a\xd9\x88\xd8\xb2\0"
        "\xd8\xba\xd8\xb4\xd8\xaa\0"
        "\xd8\xb4\xd8\xaa\xd9\x86\xd8\xa8\xd8\xb1\0"
        "\xd9\x86\xd9\x88\xd9\x86\xd8\xa8\xd8\xb1\0"
        "\xd8\xaf\xd8\xac\xd9\x86\xd8\xa8\xd8\xb1\0"
+       "MMMM/dd\0"
        "ponedeljak\0"
-       "MMMM yyyy.\0"
        "\xd0\xbf\xd1\x80\xd0\xb5 \xd0\xbf\xd0\xbe\xd0\xb4\xd0\xbd\xd0\xb5\0"
        "\xd0\xbf\xd0\xbe\xd0\xbf\xd0\xbe\xd0\xb4\xd0\xbd\xd0\xb5\0"
        "\xd0\xbd\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x99\xd0\xb0\0"
@@ -5045,13 +5004,15 @@ static const char locale_strings [] = {
        "\xd0\xbe\xd0\xba\xd1\x82\0"
        "\xd0\xbd\xd0\xbe\xd0\xb2\0"
        "\xd0\xb4\xd0\xb5\xd1\x86\0"
+       "d. M. yy\0"
+       "dd. MM. yy\0"
        "\xd1\x81\xd1\x80\xd0\xb5\0"
-       "dd' de 'MMMM\0"
-       "MMMM/yyyy\0"
+       "MMMM-yyyy\0"
+       "dd MMM,yyyy\0"
        "yyyy-MM-dd.\0"
-       "d' de 'MMM\0"
-       "MM-dd-yyyy\0"
-       "MMMM' del 'yyyy\0"
+       "h.mm.ss tt\0"
+       "dddd dd 'de' MMMM 'de' yyyy\0"
+       "dd 'de' MMMM 'de' yyyy\0"
        ",\0"
        "\xd9\xac\0"
        "\xd8\xb1.\xd8\xb3.\xe2\x80\x8f\0"
index ef60d033af07236171f6704ca121aae2ffb54f21..35b81fc96ced36802632607b52b7730ae58a9b54 100644 (file)
@@ -72,21 +72,21 @@ wrapper_type_to_str (guint32 wrapper_type)
 #endif
 
 static void
-append_class_name (GString *res, MonoClass *class, gboolean include_namespace)
+append_class_name (GString *res, MonoClass *klass, gboolean include_namespace)
 {
-       if (!class) {
+       if (!klass) {
                g_string_append (res, "Unknown");
                return;
        }
-       if (class->nested_in) {
-               append_class_name (res, class->nested_in, include_namespace);
+       if (klass->nested_in) {
+               append_class_name (res, klass->nested_in, include_namespace);
                g_string_append_c (res, '/');
        }
-       if (include_namespace && *(class->name_space)) {
-               g_string_append (res, class->name_space);
+       if (include_namespace && *(klass->name_space)) {
+               g_string_append (res, klass->name_space);
                g_string_append_c (res, '.');
        }
-       g_string_append (res, class->name);
+       g_string_append (res, klass->name);
 }
 
 static MonoClass*
@@ -251,6 +251,31 @@ mono_signature_get_desc (MonoMethodSignature *sig, gboolean include_namespace)
        return result;
 }
 
+char*
+mono_signature_full_name (MonoMethodSignature *sig)
+{
+       int i;
+       char *result;
+       GString *res;
+
+       if (!sig)
+               return g_strdup ("<invalid signature>");
+
+       res = g_string_new ("");
+
+       mono_type_get_desc (res, sig->ret, TRUE);
+       g_string_append_c (res, '(');
+       for (i = 0; i < sig->param_count; ++i) {
+               if (i > 0)
+                       g_string_append_c (res, ',');
+               mono_type_get_desc (res, sig->params [i], TRUE);
+       }
+       g_string_append_c (res, ')');
+       result = res->str;
+       g_string_free (res, FALSE);
+       return result;
+}
+
 static void
 ginst_get_desc (GString *str, MonoGenericInst *ginst)
 {
@@ -956,23 +981,24 @@ print_field_value (const char *field_ptr, MonoClassField *field, int type_offset
 }
 
 static void
-objval_describe (MonoClass *class, const char *addr)
+objval_describe (MonoClass *klass, const char *addr)
 {
        MonoClassField *field;
        MonoClass *p;
        const char *field_ptr;
        gssize type_offset = 0;
-       if (class->valuetype)
+
+       if (klass->valuetype)
                type_offset = -sizeof (MonoObject);
 
-       for (p = class; p != NULL; p = p->parent) {
+       for (p = klass; p != NULL; p = p->parent) {
                gpointer iter = NULL;
                int printed_header = FALSE;
                while ((field = mono_class_get_fields (p, &iter))) {
                        if (field->type->attrs & (FIELD_ATTRIBUTE_STATIC | FIELD_ATTRIBUTE_HAS_FIELD_RVA))
                                continue;
 
-                       if (p != class && !printed_header) {
+                       if (p != klass && !printed_header) {
                                const char *sep;
                                g_print ("In class ");
                                sep = print_name_space (p);
@@ -995,8 +1021,8 @@ objval_describe (MonoClass *class, const char *addr)
 void
 mono_object_describe_fields (MonoObject *obj)
 {
-       MonoClass *class = mono_object_class (obj);
-       objval_describe (class, (char*)obj);
+       MonoClass *klass = mono_object_class (obj);
+       objval_describe (klass, (char*)obj);
 }
 
 /**
@@ -1030,7 +1056,7 @@ mono_class_describe_statics (MonoClass* klass)
 
        if (!vtable)
                return;
-       if (!(addr = mono_vtable_get_static_field_data (vtable)))
+       if (!(addr = (const char *)mono_vtable_get_static_field_data (vtable)))
                return;
 
        for (p = klass; p != NULL; p = p->parent) {
@@ -1040,9 +1066,6 @@ mono_class_describe_statics (MonoClass* klass)
                                continue;
                        if (!(field->type->attrs & (FIELD_ATTRIBUTE_STATIC | FIELD_ATTRIBUTE_HAS_FIELD_RVA)))
                                continue;
-                       // Special static fields don't have a domain-level static slot
-                       if (mono_class_field_is_special_static (field))
-                               continue;
 
                        field_ptr = (const char*)addr + field->offset;
 
index d8da52cfb04fb1d35165a4ec67e4a3022a332322..fcbfd9d817f06daf4acc5c25b57d23c1923237e6 100644 (file)
 #include <mono/metadata/mono-endian.h>
 #include <mono/metadata/metadata-internals.h>
 #include <mono/metadata/class-internals.h>
+#include <mono/metadata/cil-coff.h>
 
 #include "debug-mono-ppdb.h"
 
 struct _MonoPPDBFile {
        MonoImage *image;
-       GHashTable *doc_cache;
+       GHashTable *doc_hash;
+       GHashTable *method_hash;
 };
 
+/* IMAGE_DEBUG_DIRECTORY structure */
+typedef struct
+{
+       gint32 characteristics;
+       gint32 time_date_stamp;
+       gint16 major_version;
+       gint16 minor_version;
+       gint32 type;
+       gint32 size_of_data;
+       gint32 address;
+       gint32 pointer;
+}  ImageDebugDirectory;
+
+typedef struct {
+       gint32 signature;
+       guint8 guid [16];
+       gint32 age;
+} CodeviewDebugDirectory;
+
+typedef struct {
+       guint8 guid [20];
+       guint32 entry_point;
+       guint64 referenced_tables;
+} PdbStreamHeader;
+
+static gboolean
+get_pe_debug_guid (MonoImage *image, guint8 *out_guid, gint32 *out_age, gint32 *out_timestamp)
+{
+       MonoPEDirEntry *debug_dir_entry;
+       ImageDebugDirectory *debug_dir;
+
+       debug_dir_entry = &((MonoCLIImageInfo*)image->image_info)->cli_header.datadir.pe_debug;
+       if (!debug_dir_entry->size)
+               return FALSE;
+
+       int offset = mono_cli_rva_image_map (image, debug_dir_entry->rva);
+       debug_dir = (ImageDebugDirectory*)(image->raw_data + offset);
+       if (debug_dir->type == 2 && debug_dir->major_version == 0x100 && debug_dir->minor_version == 0x504d) {
+               /* This is a 'CODEVIEW' debug directory */
+               CodeviewDebugDirectory *dir = (CodeviewDebugDirectory*)(image->raw_data + debug_dir->pointer);
+
+               if (dir->signature == 0x53445352) {
+                       memcpy (out_guid, dir->guid, 16);
+                       *out_age = dir->age;
+                       *out_timestamp = debug_dir->time_date_stamp;
+                       return TRUE;
+               }
+       }
+       return FALSE;
+}
+
+static void
+doc_free (gpointer key)
+{
+       MonoDebugSourceInfo *info = (MonoDebugSourceInfo *)key;
+
+       g_free (info->source_file);
+       g_free (info);
+}
+
 MonoPPDBFile*
 mono_ppdb_load_file (MonoImage *image, const guint8 *raw_contents, int size)
 {
-       MonoImage *ppdb_image;
+       MonoImage *ppdb_image = NULL;
        const char *filename;
        char *s, *ppdb_filename;
        MonoImageOpenStatus status;
-#if 0
-       MonoTableInfo *tables;
-       guint32 cols [MONO_MODULE_SIZE];
-       const char *guid, *ppdb_guid;
-#endif
+       guint8 pe_guid [16];
+       gint32 pe_age;
+       gint32 pe_timestamp;
        MonoPPDBFile *ppdb;
 
        if (raw_contents) {
-               ppdb_image = mono_image_open_from_data_internal ((char*)raw_contents, size, TRUE, NULL, FALSE, TRUE, NULL);
+               if (size > 4 && strncmp ((char*)raw_contents, "BSJB", 4) == 0)
+                       ppdb_image = mono_image_open_from_data_internal ((char*)raw_contents, size, TRUE, &status, FALSE, TRUE, NULL);
        } else {
                /* ppdb files drop the .exe/.dll extension */
                filename = mono_image_get_filename (image);
-               if (strlen (filename) > 4 && (!strcmp (filename + strlen (filename) - 4, ".exe"))) {
+               if (strlen (filename) > 4 && (!strcmp (filename + strlen (filename) - 4, ".exe") || !strcmp (filename + strlen (filename) - 4, ".dll"))) {
                        s = g_strdup (filename);
                        s [strlen (filename) - 4] = '\0';
                        ppdb_filename = g_strdup_printf ("%s.pdb", s);
@@ -61,33 +122,35 @@ mono_ppdb_load_file (MonoImage *image, const guint8 *raw_contents, int size)
                }
 
                ppdb_image = mono_image_open_metadata_only (ppdb_filename, &status);
+               if (!ppdb_image)
+                       g_free (ppdb_filename);
        }
        if (!ppdb_image)
                return NULL;
 
-#if 0
-       /* Check that the images match */
-       // FIXME: ppdb files no longer have a MODULE table */
-       tables = image->tables;
-       g_assert (tables [MONO_TABLE_MODULE].rows);
-       mono_metadata_decode_row (&tables [MONO_TABLE_MODULE], 0, cols, MONO_MODULE_SIZE);
-       guid = mono_metadata_guid_heap (image, cols [MONO_MODULE_MVID]);
-
-       tables = ppdb_image->tables;
-       g_assert (tables [MONO_TABLE_MODULE].rows);
-       mono_metadata_decode_row (&tables [MONO_TABLE_MODULE], 0, cols, MONO_MODULE_SIZE);
-       ppdb_guid = mono_metadata_guid_heap (ppdb_image, cols [MONO_MODULE_MVID]);
-
-       if (memcmp (guid, ppdb_guid, 16) != 0) {
-               g_warning ("Symbol file %s doesn't match image %s", ppdb_image->name,
-                                  image->name);
-               mono_image_close (ppdb_image);
-               return NULL;
+       /*
+        * Check that the images match.
+        * The same id is stored in the Debug Directory of the PE file, and in the
+        * #Pdb stream in the ppdb file.
+        */
+       if (get_pe_debug_guid (image, pe_guid, &pe_age, &pe_timestamp)) {
+               PdbStreamHeader *pdb_stream = (PdbStreamHeader*)ppdb_image->heap_pdb.data;
+
+               g_assert (pdb_stream);
+
+               /* The pdb id is a concentation of the pe guid and the timestamp */
+               if (memcmp (pe_guid, pdb_stream->guid, 16) != 0 || memcmp (&pe_timestamp, pdb_stream->guid + 16, 4) != 0) {
+                       g_warning ("Symbol file %s doesn't match image %s", ppdb_image->name,
+                                          image->name);
+                       mono_image_close (ppdb_image);
+                       return NULL;
+               }
        }
-#endif
 
        ppdb = g_new0 (MonoPPDBFile, 1);
        ppdb->image = ppdb_image;
+       ppdb->doc_hash = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) doc_free);
+       ppdb->method_hash = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) g_free);
 
        return ppdb;
 }
@@ -98,8 +161,8 @@ mono_ppdb_close (MonoDebugHandle *handle)
        MonoPPDBFile *ppdb = handle->ppdb;
 
        mono_image_close (ppdb->image);
-       if (ppdb->doc_cache)
-               g_hash_table_destroy (ppdb->doc_cache);
+       g_hash_table_destroy (ppdb->doc_hash);
+       g_hash_table_destroy (ppdb->method_hash);
        g_free (ppdb);
 }
 
@@ -107,19 +170,28 @@ MonoDebugMethodInfo *
 mono_ppdb_lookup_method (MonoDebugHandle *handle, MonoMethod *method)
 {
        MonoDebugMethodInfo *minfo;
+       MonoPPDBFile *ppdb = handle->ppdb;
 
        if (handle->image != mono_class_get_image (mono_method_get_class (method)))
                return NULL;
 
-       // FIXME: Cache
+       mono_debugger_lock ();
 
-       // FIXME: Methods without tokens
+       minfo = (MonoDebugMethodInfo *)g_hash_table_lookup (ppdb->method_hash, method);
+       if (minfo) {
+               mono_debugger_unlock ();
+               return minfo;
+       }
 
        minfo = g_new0 (MonoDebugMethodInfo, 1);
        minfo->index = 0;
        minfo->method = method;
        minfo->handle = handle;
 
+       g_hash_table_insert (ppdb->method_hash, method, minfo);
+
+       mono_debugger_unlock ();
+
        return minfo;
 }
 
@@ -134,9 +206,13 @@ get_docinfo (MonoPPDBFile *ppdb, MonoImage *image, int docidx)
        int size, part_size, partidx, nparts;
        char sep;
        GString *s;
-       MonoDebugSourceInfo *res;
+       MonoDebugSourceInfo *res, *cached;
 
-       // FIXME: Cache
+       mono_debugger_lock ();
+       cached = (MonoDebugSourceInfo *)g_hash_table_lookup (ppdb->doc_hash, GUINT_TO_POINTER (docidx));
+       mono_debugger_unlock ();
+       if (cached)
+               return cached;
 
        mono_metadata_decode_row (&tables [MONO_TABLE_DOCUMENT], docidx-1, cols, MONO_DOCUMENT_SIZE);
 
@@ -170,6 +246,15 @@ get_docinfo (MonoPPDBFile *ppdb, MonoImage *image, int docidx)
        res->guid = NULL;
        res->hash = (guint8*)mono_metadata_blob_heap (image, cols [MONO_DOCUMENT_HASH]);
 
+       mono_debugger_lock ();
+       cached = (MonoDebugSourceInfo *)g_hash_table_lookup (ppdb->doc_hash, GUINT_TO_POINTER (docidx));
+       if (!cached) {
+               g_hash_table_insert (ppdb->doc_hash, GUINT_TO_POINTER (docidx), res);
+       } else {
+               doc_free (res);
+               res = cached;
+       }
+       mono_debugger_unlock ();
        return res;
 }
 
@@ -207,15 +292,17 @@ mono_ppdb_lookup_location (MonoDebugMethodInfo *minfo, uint32_t offset)
        gboolean first = TRUE, first_non_hidden = TRUE;
        MonoDebugSourceLocation *location;
 
-       g_assert (method->token);
+       if (!method->token)
+               return NULL;
 
        idx = mono_metadata_token_index (method->token);
 
        mono_metadata_decode_row (&tables [MONO_TABLE_METHODBODY], idx-1, cols, MONO_METHODBODY_SIZE);
 
-       // FIXME:
-       g_assert (cols [MONO_METHODBODY_SEQ_POINTS]);
+       docidx = cols [MONO_METHODBODY_DOCUMENT];
 
+       if (!cols [MONO_METHODBODY_SEQ_POINTS])
+               return NULL;
        ptr = mono_metadata_blob_heap (image, cols [MONO_METHODBODY_SEQ_POINTS]);
        size = mono_metadata_decode_blob_size (ptr, &ptr);
        end = ptr + size;
@@ -223,7 +310,8 @@ mono_ppdb_lookup_location (MonoDebugMethodInfo *minfo, uint32_t offset)
        /* Header */
        /* LocalSignature */
        mono_metadata_decode_value (ptr, &ptr);
-       docidx = mono_metadata_decode_value (ptr, &ptr);
+       if (docidx == 0)
+               docidx = mono_metadata_decode_value (ptr, &ptr);
        docname = get_docname (ppdb, image, docidx);
 
        iloffset = 0;
@@ -232,9 +320,10 @@ mono_ppdb_lookup_location (MonoDebugMethodInfo *minfo, uint32_t offset)
        while (ptr < end) {
                delta_il = mono_metadata_decode_value (ptr, &ptr);
                if (!first && delta_il == 0) {
-                       /* Document record */
-                       // FIXME:
-                       g_assert_not_reached ();
+                       /* document-record */
+                       docidx = mono_metadata_decode_value (ptr, &ptr);
+                       docname = get_docname (ppdb, image, docidx);
+                       continue;
                }
                if (!first && iloffset + delta_il > offset)
                        break;
@@ -247,8 +336,8 @@ mono_ppdb_lookup_location (MonoDebugMethodInfo *minfo, uint32_t offset)
                else
                        delta_cols = mono_metadata_decode_signed_value (ptr, &ptr);
                if (delta_lines == 0 && delta_cols == 0)
-                       // FIXME:
-                       g_assert_not_reached ();
+                       /* hidden-sequence-point-record */
+                       continue;
                if (first_non_hidden) {
                        start_line = mono_metadata_decode_value (ptr, &ptr);
                        start_col = mono_metadata_decode_value (ptr, &ptr);
@@ -258,7 +347,7 @@ mono_ppdb_lookup_location (MonoDebugMethodInfo *minfo, uint32_t offset)
                        start_line += adv_line;
                        start_col += adv_col;
                }
-               first_non_hidden = TRUE;
+               first_non_hidden = FALSE;
        }
 
        location = g_new0 (MonoDebugSourceLocation, 1);
@@ -310,6 +399,8 @@ mono_ppdb_get_seq_points (MonoDebugMethodInfo *minfo, char **source_file, GPtrAr
 
        mono_metadata_decode_row (&tables [MONO_TABLE_METHODBODY], method_idx-1, cols, MONO_METHODBODY_SIZE);
 
+       docidx = cols [MONO_METHODBODY_DOCUMENT];
+
        if (!cols [MONO_METHODBODY_SEQ_POINTS])
                return;
 
@@ -322,8 +413,10 @@ mono_ppdb_get_seq_points (MonoDebugMethodInfo *minfo, char **source_file, GPtrAr
        /* Header */
        /* LocalSignature */
        mono_metadata_decode_value (ptr, &ptr);
-       docidx = mono_metadata_decode_value (ptr, &ptr);
+       if (docidx == 0)
+               docidx = mono_metadata_decode_value (ptr, &ptr);
        docinfo = get_docinfo (ppdb, image, docidx);
+
        if (sfiles)
                g_ptr_array_add (sfiles, docinfo);
 
@@ -363,7 +456,7 @@ mono_ppdb_get_seq_points (MonoDebugMethodInfo *minfo, char **source_file, GPtrAr
                        start_line += adv_line;
                        start_col += adv_col;
                }
-               first_non_hidden = TRUE;
+               first_non_hidden = FALSE;
 
                memset (&sp, 0, sizeof (sp));
                sp.il_offset = iloffset;
@@ -427,18 +520,39 @@ mono_ppdb_lookup_locals (MonoDebugMethodInfo *minfo)
        scope_idx = start_scope_idx;
        mono_metadata_decode_row (&tables [MONO_TABLE_LOCALSCOPE], scope_idx-1, cols, MONO_LOCALSCOPE_SIZE);
        locals_idx = cols [MONO_LOCALSCOPE_VARIABLELIST];
-       while (TRUE) {
+
+       // https://github.com/dotnet/roslyn/blob/2ae8d5fed96ab3f1164031f9b4ac827f53289159/docs/specs/PortablePdb-Metadata.md#LocalScopeTable
+       //
+       // The variableList attribute in the pdb metadata table is a contiguous array that starts at a
+       // given offset (locals_idx) above and
+       //
+       // """
+       // continues to the smaller of:
+       //
+       // the last row of the LocalVariable table
+       // the next run of LocalVariables, found by inspecting the VariableList of the next row in this LocalScope table.
+       // """
+       // this endpoint becomes locals_end_idx below
+
+       // March to the last scope that is in this method
+       while (scope_idx <= tables [MONO_TABLE_LOCALSCOPE].rows) {
                mono_metadata_decode_row (&tables [MONO_TABLE_LOCALSCOPE], scope_idx-1, cols, MONO_LOCALSCOPE_SIZE);
                if (cols [MONO_LOCALSCOPE_METHOD] != method_idx)
                        break;
                scope_idx ++;
        }
+       // The number of scopes is the difference in the indices
+       // for the first and last scopes
        nscopes = scope_idx - start_scope_idx;
-       if (scope_idx == tables [MONO_TABLE_LOCALSCOPE].rows) {
-               // FIXME:
-               g_assert_not_reached ();
-               locals_end_idx = -1;
+
+       // Ends with "the last row of the LocalVariable table"
+       // this happens if the above loop marched one past the end
+       // of the rows
+       if (scope_idx > tables [MONO_TABLE_LOCALSCOPE].rows) {
+               locals_end_idx = tables [MONO_TABLE_LOCALVARIABLE].rows + 1;
        } else {
+               // Ends with "the next run of LocalVariables,
+               // found by inspecting the VariableList of the next row in this LocalScope table."
                locals_end_idx = cols [MONO_LOCALSCOPE_VARIABLELIST];
        }
 
@@ -455,8 +569,7 @@ mono_ppdb_lookup_locals (MonoDebugMethodInfo *minfo)
 
                locals_idx = cols [MONO_LOCALSCOPE_VARIABLELIST];
                if (scope_idx == tables [MONO_TABLE_LOCALSCOPE].rows) {
-                       // FIXME:
-                       g_assert_not_reached ();
+                       locals_end_idx = tables [MONO_TABLE_LOCALVARIABLE].rows + 1;
                } else {
                        locals_end_idx = mono_metadata_decode_row_col (&tables [MONO_TABLE_LOCALSCOPE], scope_idx-1 + 1, MONO_LOCALSCOPE_VARIABLELIST);
                }
index 39c348cd7be38615dd5a94bcbdfa7c331aa227d1..8df4c0f902606edc04b31b5b97cb1350b851482d 100644 (file)
@@ -147,7 +147,7 @@ mono_debug_open_mono_symbols (MonoDebugHandle *handle, const uint8_t *raw_conten
        if (raw_contents != NULL) {
                unsigned char *p;
                symfile->raw_contents_size = size;
-               symfile->raw_contents = p = g_malloc (size);
+               symfile->raw_contents = p = (unsigned char *)g_malloc (size);
                memcpy (p, raw_contents, size);
                symfile->filename = g_strdup_printf ("LoadedFromMemory");
                symfile->was_loaded_from_memory = TRUE;
@@ -163,7 +163,7 @@ mono_debug_open_mono_symbols (MonoDebugHandle *handle, const uint8_t *raw_conten
                                        g_warning ("stat of %s failed: %s",
                                                   symfile->filename,  g_strerror (errno));
                        } else {
-                               symfile->raw_contents = mono_file_map (symfile->raw_contents_size, MONO_MMAP_READ|MONO_MMAP_PRIVATE, mono_file_map_fd (f), 0, &symfile->raw_contents_handle);
+                               symfile->raw_contents = (const unsigned char *)mono_file_map (symfile->raw_contents_size, MONO_MMAP_READ|MONO_MMAP_PRIVATE, mono_file_map_fd (f), 0, &symfile->raw_contents_handle);
                        }
 
                        mono_file_map_close (f);
@@ -444,7 +444,7 @@ get_source_info (MonoSymbolFile *symfile, int index)
 {
        MonoDebugSourceInfo *info;
 
-       info = g_hash_table_lookup (symfile->source_hash, GUINT_TO_POINTER (index));
+       info = (MonoDebugSourceInfo *)g_hash_table_lookup (symfile->source_hash, GUINT_TO_POINTER (index));
        if (!info) {
                int offset = read32(&(symfile->offset_table->_source_table_offset)) +
                        (index - 1) * sizeof (MonoSymbolFileSourceEntry);
@@ -454,10 +454,10 @@ get_source_info (MonoSymbolFile *symfile, int index)
 
                info = g_new0 (MonoDebugSourceInfo, 1);
                info->source_file = read_string (ptr, &ptr);
-               info->guid = g_malloc0 (16);
+               info->guid = (guint8 *)g_malloc0 (16);
                memcpy (info->guid, ptr, 16);
                ptr += 16;
-               info->hash = g_malloc0 (16);
+               info->hash = (guint8 *)g_malloc0 (16);
                memcpy (info->hash, ptr, 16);
                ptr += 16;
                g_hash_table_insert (symfile->source_hash, GUINT_TO_POINTER (index), info);
@@ -478,7 +478,7 @@ method_get_lnt_flags (MonoDebugMethodInfo *minfo)
        guint32 flags;
 
        if ((symfile = minfo->handle->symfile) == NULL)
-               return FALSE;
+               return (LineNumberTableFlags)0;
 
        ptr = symfile->raw_contents + minfo->data_offset;
 
@@ -497,7 +497,7 @@ method_get_lnt_flags (MonoDebugMethodInfo *minfo)
        read_leb128 (ptr, &ptr);
 
        flags = read_leb128 (ptr, &ptr);
-       return flags;
+       return (LineNumberTableFlags)flags;
 }
 
 /*
@@ -635,7 +635,7 @@ mono_debug_symfile_get_seq_points (MonoDebugMethodInfo *minfo, char **source_fil
 
                *source_file_list = g_ptr_array_new ();
                if (source_files)
-                       *source_files = g_malloc (il_offset_array->len * sizeof (int));
+                       *source_files = (int *)g_malloc (il_offset_array->len * sizeof (int));
 
                for (i = 0; i < il_offset_array->len; ++i) {
                        file = GPOINTER_TO_UINT (g_ptr_array_index (source_file_array, i));
@@ -744,7 +744,7 @@ mono_debug_symfile_lookup_method (MonoDebugHandle *handle, MonoMethod *method)
 
        mono_debugger_lock ();
 
-       minfo = g_hash_table_lookup (symfile->method_hash, method);
+       minfo = (MonoDebugMethodInfo *)g_hash_table_lookup (symfile->method_hash, method);
        if (minfo) {
                mono_debugger_unlock ();
                return minfo;
@@ -753,7 +753,7 @@ mono_debug_symfile_lookup_method (MonoDebugHandle *handle, MonoMethod *method)
        first_ie = (MonoSymbolFileMethodEntry *)
                (symfile->raw_contents + read32(&(symfile->offset_table->_method_table_offset)));
 
-       ie = mono_binary_search (GUINT_TO_POINTER (mono_method_get_token (method)), first_ie,
+       ie = (MonoSymbolFileMethodEntry *)mono_binary_search (GUINT_TO_POINTER (mono_method_get_token (method)), first_ie,
                                   read32(&(symfile->offset_table->_method_count)),
                                   sizeof (MonoSymbolFileMethodEntry), compare_method);
 
@@ -823,7 +823,7 @@ mono_debug_symfile_lookup_locals (MonoDebugMethodInfo *minfo)
        for (i = 0; i < num_locals; ++i) {
                res->locals [i].index = read_leb128 (p, &p);
                len = read_leb128 (p, &p);
-               res->locals [i].name = g_malloc (len + 1);
+               res->locals [i].name = (char *)g_malloc (len + 1);
                memcpy (res->locals [i].name, p, len);
                res->locals [i].name [len] = '\0';
                p += len;
index effa3d851c8c17391da96006e521c05593740d8d..4cb4af6c02d1aca82dfca8f81fd08e5c0a867688 100644 (file)
@@ -9,7 +9,6 @@
 #include <mono/metadata/mempool.h>
 #include <mono/metadata/lock-tracer.h>
 #include <mono/utils/mono-codeman.h>
-#include <mono/utils/mono-mutex.h>
 #include <mono/metadata/mono-hash.h>
 #include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-internal-hash.h>
@@ -239,11 +238,17 @@ struct _MonoJitInfo {
 
 #define MONO_SIZEOF_JIT_INFO (offsetof (struct _MonoJitInfo, clauses))
 
+typedef struct {
+       gpointer *static_data; /* Used to free the static data without going through the MonoAppContext object itself. */
+       uint32_t gc_handle;
+} ContextStaticData;
+
 struct _MonoAppContext {
        MonoObject obj;
        gint32 domain_id;
        gint32 context_id;
        gpointer *static_data;
+       ContextStaticData *data;
 };
 
 /* Lock-free allocator */
@@ -285,7 +290,7 @@ struct _MonoDomain {
         * i.e. if both are taken by the same thread, the loader lock
         * must taken first.
         */
-       mono_mutex_t    lock;
+       MonoCoopMutex    lock;
        MonoMemPool        *mp;
        MonoCodeManager    *code_mp;
        /*
@@ -421,10 +426,10 @@ typedef struct  {
        const AssemblyVersionSet version_sets [4];
 } MonoRuntimeInfo;
 
-#define mono_domain_assemblies_lock(domain) mono_locks_acquire(&(domain)->assemblies_lock, DomainAssembliesLock)
-#define mono_domain_assemblies_unlock(domain) mono_locks_release(&(domain)->assemblies_lock, DomainAssembliesLock)
-#define mono_domain_jit_code_hash_lock(domain) mono_locks_acquire(&(domain)->jit_code_hash_lock, DomainJitCodeHashLock)
-#define mono_domain_jit_code_hash_unlock(domain) mono_locks_release(&(domain)->jit_code_hash_lock, DomainJitCodeHashLock)
+#define mono_domain_assemblies_lock(domain) mono_locks_os_acquire(&(domain)->assemblies_lock, DomainAssembliesLock)
+#define mono_domain_assemblies_unlock(domain) mono_locks_os_release(&(domain)->assemblies_lock, DomainAssembliesLock)
+#define mono_domain_jit_code_hash_lock(domain) mono_locks_os_acquire(&(domain)->jit_code_hash_lock, DomainJitCodeHashLock)
+#define mono_domain_jit_code_hash_unlock(domain) mono_locks_os_release(&(domain)->jit_code_hash_lock, DomainJitCodeHashLock)
 
 typedef MonoDomain* (*MonoLoadFunc) (const char *filename, const char *runtime_version);
 
index d7467f9797e884073114949d1449afc5a9970cd1..a485b71c969cd6ba252371e03a036005e53469dc 100644 (file)
 #include <string.h>
 #include <sys/stat.h>
 
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 
 #include <mono/utils/atomic.h>
 #include <mono/utils/mono-compiler.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/hazard-pointer.h>
@@ -33,7 +33,7 @@
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/exception.h>
 #include <mono/metadata/metadata-internals.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/appdomain.h>
 #include <mono/metadata/mono-debug-debugger.h>
 #include <mono/metadata/mono-config.h>
@@ -93,14 +93,9 @@ static gboolean debug_domain_unload;
 
 gboolean mono_dont_free_domains;
 
-#define mono_appdomains_lock() do {    \
-       MONO_TRY_BLOCKING;      \
-       mono_mutex_lock (&appdomains_mutex); \
-       MONO_FINISH_TRY_BLOCKING;       \
-} while (0);
-
-#define mono_appdomains_unlock() mono_mutex_unlock (&appdomains_mutex)
-static mono_mutex_t appdomains_mutex;
+#define mono_appdomains_lock() mono_coop_mutex_lock (&appdomains_mutex)
+#define mono_appdomains_unlock() mono_coop_mutex_unlock (&appdomains_mutex)
+static MonoCoopMutex appdomains_mutex;
 
 static MonoDomain *mono_root_domain = NULL;
 
@@ -125,8 +120,6 @@ static const MonoRuntimeInfo *current_runtime = NULL;
  */
 static const MonoRuntimeInfo supported_runtimes[] = {
        {"v4.0.30319","4.5", { {4,0,0,0}, {10,0,0,0}, {4,0,0,0}, {4,0,0,0} } },
-       {"v4.0.30128","4.0", { {4,0,0,0}, {10,0,0,0}, {4,0,0,0}, {4,0,0,0} } },
-       {"v4.0.20506","4.0", { {4,0,0,0}, {10,0,0,0}, {4,0,0,0}, {4,0,0,0} } },
        {"mobile",    "2.1", { {2,0,5,0}, {10,0,0,0}, {2,0,5,0}, {2,0,5,0} } },
        {"moonlight", "2.1", { {2,0,5,0}, { 9,0,0,0}, {3,5,0,0}, {3,0,0,0} } },
 };
@@ -184,7 +177,7 @@ lock_free_mempool_free (LockFreeMempool *mp)
 
        chunk = mp->chunks;
        while (chunk) {
-               next = chunk->prev;
+               next = (LockFreeMempoolChunk *)chunk->prev;
                mono_vfree (chunk, mono_pagesize ());
                chunk = next;
        }
@@ -203,9 +196,9 @@ lock_free_mempool_chunk_new (LockFreeMempool *mp, int len)
        size = mono_pagesize ();
        while (size - sizeof (LockFreeMempoolChunk) < len)
                size += mono_pagesize ();
-       chunk = mono_valloc (0, size, MONO_MMAP_READ|MONO_MMAP_WRITE);
+       chunk = (LockFreeMempoolChunk *)mono_valloc (0, size, MONO_MMAP_READ|MONO_MMAP_WRITE);
        g_assert (chunk);
-       chunk->mem = ALIGN_PTR_TO ((char*)chunk + sizeof (LockFreeMempoolChunk), 16);
+       chunk->mem = (guint8 *)ALIGN_PTR_TO ((char*)chunk + sizeof (LockFreeMempoolChunk), 16);
        chunk->size = ((char*)chunk + size) - (char*)chunk->mem;
        chunk->pos = 0;
 
@@ -348,7 +341,7 @@ domain_id_alloc (MonoDomain *domain)
        int id = -1, i;
        if (!appdomains_list) {
                appdomain_list_size = 2;
-               appdomains_list = mono_gc_alloc_fixed (appdomain_list_size * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "domains list");
+               appdomains_list = (MonoDomain **)mono_gc_alloc_fixed (appdomain_list_size * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "domains list");
        }
        for (i = appdomain_next; i < appdomain_list_size; ++i) {
                if (!appdomains_list [i]) {
@@ -370,7 +363,7 @@ domain_id_alloc (MonoDomain *domain)
                if (new_size >= (1 << 16))
                        g_assert_not_reached ();
                id = appdomain_list_size;
-               new_list = mono_gc_alloc_fixed (new_size * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "domains list");
+               new_list = (MonoDomain **)mono_gc_alloc_fixed (new_size * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "domains list");
                memcpy (new_list, appdomains_list, appdomain_list_size * sizeof (void*));
                mono_gc_free_fixed (appdomains_list);
                appdomains_list = new_list;
@@ -414,9 +407,9 @@ mono_domain_create (void)
         * running the corlib test suite.
         * To solve this, we pass a NULL descriptor, and don't register roots.
         */
-       domain = mono_gc_alloc_fixed (sizeof (MonoDomain), NULL, MONO_ROOT_SOURCE_DOMAIN, "domain object");
+       domain = (MonoDomain *)mono_gc_alloc_fixed (sizeof (MonoDomain), NULL, MONO_ROOT_SOURCE_DOMAIN, "domain object");
 #else
-       domain = mono_gc_alloc_fixed (sizeof (MonoDomain), domain_gc_desc, MONO_ROOT_SOURCE_DOMAIN, "domain object");
+       domain = (MonoDomain *)mono_gc_alloc_fixed (sizeof (MonoDomain), domain_gc_desc, MONO_ROOT_SOURCE_DOMAIN, "domain object");
        mono_gc_register_root ((char*)&(domain->MONO_DOMAIN_FIRST_GC_TRACKED), G_STRUCT_OFFSET (MonoDomain, MONO_DOMAIN_LAST_GC_TRACKED) - G_STRUCT_OFFSET (MonoDomain, MONO_DOMAIN_FIRST_GC_TRACKED), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "misc domain fields");
 #endif
        domain->shadow_serial = shadow_serial;
@@ -445,10 +438,11 @@ mono_domain_create (void)
        domain->finalizable_objects_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
        domain->ftnptrs_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
 
-       mono_mutex_init_recursive (&domain->lock);
-       mono_mutex_init_recursive (&domain->assemblies_lock);
-       mono_mutex_init_recursive (&domain->jit_code_hash_lock);
-       mono_mutex_init_recursive (&domain->finalizable_objects_hash_lock);
+       mono_coop_mutex_init_recursive (&domain->lock);
+
+       mono_os_mutex_init_recursive (&domain->assemblies_lock);
+       mono_os_mutex_init_recursive (&domain->jit_code_hash_lock);
+       mono_os_mutex_init_recursive (&domain->finalizable_objects_hash_lock);
 
        domain->method_rgctx_hash = NULL;
 
@@ -524,7 +518,7 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
        MONO_FAST_TLS_INIT (tls_appdomain);
        mono_native_tls_alloc (&appdomain_thread_id, NULL);
 
-       mono_mutex_init_recursive (&appdomains_mutex);
+       mono_coop_mutex_init_recursive (&appdomains_mutex);
 
        mono_metadata_init ();
        mono_images_init ();
@@ -946,7 +940,7 @@ mono_cleanup (void)
        mono_metadata_cleanup ();
 
        mono_native_tls_free (appdomain_thread_id);
-       mono_mutex_destroy (&appdomains_mutex);
+       mono_coop_mutex_destroy (&appdomains_mutex);
 
 #ifndef HOST_WIN32
        wapi_cleanup ();
@@ -1041,7 +1035,7 @@ mono_domain_foreach (MonoDomainFunc func, gpointer user_data)
         */
        mono_appdomains_lock ();
        size = appdomain_list_size;
-       copy = mono_gc_alloc_fixed (appdomain_list_size * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "temporary domains list");
+       copy = (MonoDomain **)mono_gc_alloc_fixed (appdomain_list_size * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_DOMAIN, "temporary domains list");
        memcpy (copy, appdomains_list, appdomain_list_size * sizeof (void*));
        mono_appdomains_unlock ();
 
@@ -1069,7 +1063,7 @@ mono_domain_assembly_open (MonoDomain *domain, const char *name)
 
        mono_domain_assemblies_lock (domain);
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               ass = tmp->data;
+               ass = (MonoAssembly *)tmp->data;
                if (strcmp (name, ass->aname.name) == 0) {
                        mono_domain_assemblies_unlock (domain);
                        return ass;
@@ -1093,7 +1087,7 @@ mono_domain_assembly_open (MonoDomain *domain, const char *name)
 static void
 unregister_vtable_reflection_type (MonoVTable *vtable)
 {
-       MonoObject *type = vtable->type;
+       MonoObject *type = (MonoObject *)vtable->type;
 
        if (type->vtable->klass != mono_defaults.monotype_class)
                MONO_GC_UNREGISTER_ROOT_IF_MOVING (vtable->type);
@@ -1148,7 +1142,7 @@ mono_domain_free (MonoDomain *domain, gboolean force)
        if (domain->class_vtable_array) {
                int i;
                for (i = 0; i < domain->class_vtable_array->len; ++i)
-                       unregister_vtable_reflection_type (g_ptr_array_index (domain->class_vtable_array, i));
+                       unregister_vtable_reflection_type ((MonoVTable *)g_ptr_array_index (domain->class_vtable_array, i));
        }
 
        if (domain->type_hash) {
@@ -1161,7 +1155,7 @@ mono_domain_free (MonoDomain *domain, gboolean force)
        }
 
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                mono_assembly_release_gc_roots (ass);
        }
 
@@ -1174,7 +1168,7 @@ mono_domain_free (MonoDomain *domain, gboolean force)
 
        /* Close dynamic assemblies first, since they have no ref count */
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                if (!ass->image || !image_is_dynamic (ass->image))
                        continue;
                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Unloading domain %s[%p], assembly %s[%p], ref_count=%d", domain->friendly_name, domain, ass->aname.name, ass, ass->ref_count);
@@ -1183,7 +1177,7 @@ mono_domain_free (MonoDomain *domain, gboolean force)
        }
 
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                if (!ass)
                        continue;
                if (!ass->image || image_is_dynamic (ass->image))
@@ -1194,7 +1188,7 @@ mono_domain_free (MonoDomain *domain, gboolean force)
        }
 
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                if (ass)
                        mono_assembly_close_finish (ass);
        }
@@ -1293,10 +1287,12 @@ mono_domain_free (MonoDomain *domain, gboolean force)
                domain->method_to_dyn_method = NULL;
        }
 
-       mono_mutex_destroy (&domain->finalizable_objects_hash_lock);
-       mono_mutex_destroy (&domain->assemblies_lock);
-       mono_mutex_destroy (&domain->jit_code_hash_lock);
-       mono_mutex_destroy (&domain->lock);
+       mono_os_mutex_destroy (&domain->finalizable_objects_hash_lock);
+       mono_os_mutex_destroy (&domain->assemblies_lock);
+       mono_os_mutex_destroy (&domain->jit_code_hash_lock);
+
+       mono_coop_mutex_destroy (&domain->lock);
+
        domain->setup = NULL;
 
        mono_gc_deregister_root ((char*)&(domain->MONO_DOMAIN_FIRST_GC_TRACKED));
@@ -1576,7 +1572,7 @@ mono_domain_add_class_static_data (MonoDomain *domain, MonoClass *klass, gpointe
                next = GPOINTER_TO_INT (domain->static_data_array [0]);
                if (next >= size) {
                        /* 'data' is allocated by alloc_fixed */
-                       gpointer *new_array = mono_gc_alloc_fixed (sizeof (gpointer) * (size * 2), MONO_GC_ROOT_DESCR_FOR_FIXED (size * 2), MONO_ROOT_SOURCE_DOMAIN, "static field list");
+                       gpointer *new_array = (gpointer *)mono_gc_alloc_fixed (sizeof (gpointer) * (size * 2), MONO_GC_ROOT_DESCR_FOR_FIXED (size * 2), MONO_ROOT_SOURCE_DOMAIN, "static field list");
                        mono_gc_memmove_aligned (new_array, domain->static_data_array, sizeof (gpointer) * size);
                        size *= 2;
                        new_array [1] = GINT_TO_POINTER (size);
@@ -1585,7 +1581,7 @@ mono_domain_add_class_static_data (MonoDomain *domain, MonoClass *klass, gpointe
                }
        } else {
                int size = 32;
-               gpointer *new_array = mono_gc_alloc_fixed (sizeof (gpointer) * size, MONO_GC_ROOT_DESCR_FOR_FIXED (size), MONO_ROOT_SOURCE_DOMAIN, "static field list");
+               gpointer *new_array = (gpointer *)mono_gc_alloc_fixed (sizeof (gpointer) * size, MONO_GC_ROOT_DESCR_FOR_FIXED (size), MONO_ROOT_SOURCE_DOMAIN, "static field list");
                next = 2;
                new_array [0] = GINT_TO_POINTER (next);
                new_array [1] = GINT_TO_POINTER (size);
@@ -1819,7 +1815,7 @@ app_config_parse (const char *exe_filename)
 
        app_config = g_new0 (AppConfigInfo, 1);
 
-       context = g_markup_parse_context_new (&mono_parser, 0, app_config, NULL);
+       context = g_markup_parse_context_new (&mono_parser, (GMarkupParseFlags)0, app_config, NULL);
        if (g_markup_parse_context_parse (context, text, len, NULL)) {
                g_markup_parse_context_end_parse (context, NULL);
        }
@@ -1969,13 +1965,11 @@ mono_get_aot_cache_config (void)
 void
 mono_domain_lock (MonoDomain *domain)
 {
-       MONO_TRY_BLOCKING;
-       mono_locks_acquire (&(domain)->lock, DomainLock);
-       MONO_FINISH_TRY_BLOCKING;
+       mono_locks_coop_acquire (&domain->lock, DomainLock);
 }
 
 void
 mono_domain_unlock (MonoDomain *domain)
 {
-       mono_locks_release (&(domain)->lock, DomainLock);
+       mono_locks_coop_release (&domain->lock, DomainLock);
 }
index 6a37cc89562f4167797c96f7cf52759508927cb0..3c70edb3ac9045051932da332d7bae79a10c65d0 100644 (file)
@@ -849,7 +849,7 @@ mono_exception_get_native_backtrace (MonoException *exc)
 
        for (i = 0; i < len; ++i) {
                gpointer ip = mono_array_get (arr, gpointer, i);
-               MonoJitInfo *ji = mono_jit_info_table_find (mono_domain_get (), ip);
+               MonoJitInfo *ji = mono_jit_info_table_find (mono_domain_get (), (char *)ip);
                if (ji) {
                        char *msg = mono_debug_print_stack_frame (mono_jit_info_get_method (ji), (char*)ip - (char*)ji->code_start, domain);
                        g_string_append_printf (text, "%s\n", msg);
index b193e0a54945d373379c6dc1c990ea4855eaf8b6..69c67eabc4f46f29980dfb95a57a85e03756d96b 100644 (file)
@@ -190,7 +190,7 @@ static void convert_win32_file_attribute_data (const WIN32_FILE_ATTRIBUTE_DATA *
 static guint32 convert_attrs(MonoFileAttributes attrs)
 {
        if(attrs & FileAttributes_Encrypted) {
-               attrs |= FILE_ATTRIBUTE_ENCRYPTED;
+               attrs = (MonoFileAttributes)(attrs | FILE_ATTRIBUTE_ENCRYPTED);
        }
        
        return(attrs);
@@ -324,7 +324,7 @@ get_filesystem_entries (const gunichar2 *path,
        gchar *utf8_path = NULL, *utf8_result, *full_name;
        gint32 attributes;
 
-       mask = convert_attrs (mask);
+       mask = convert_attrs ((MonoFileAttributes)mask);
        attributes = get_file_attributes (path);
        if (attributes != -1) {
                if ((attributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
@@ -415,7 +415,7 @@ ves_icall_System_IO_MonoIO_GetFileSystemEntries (MonoString *path,
 
        result = mono_array_new (domain, mono_defaults.string_class, names->len);
        for (i = 0; i < names->len; i++) {
-               mono_array_setref (result, i, mono_string_new (domain, g_ptr_array_index (names, i)));
+               mono_array_setref (result, i, mono_string_new (domain, (const char *)g_ptr_array_index (names, i)));
                g_free (g_ptr_array_index (names, i));
        }
        g_ptr_array_free (names, TRUE);
@@ -499,7 +499,7 @@ ves_icall_System_IO_MonoIO_FindFirst (MonoString *path,
 MonoString *
 ves_icall_System_IO_MonoIO_FindNext (gpointer handle, gint32 *result_attr, gint32 *error)
 {
-       IncrementalFind *ifh = handle;
+       IncrementalFind *ifh = (IncrementalFind *)handle;
        WIN32_FIND_DATA data;
        MonoString *result;
 
@@ -520,7 +520,7 @@ ves_icall_System_IO_MonoIO_FindNext (gpointer handle, gint32 *result_attr, gint3
 int
 ves_icall_System_IO_MonoIO_FindClose (gpointer handle)
 {
-       IncrementalFind *ifh = handle;
+       IncrementalFind *ifh = (IncrementalFind *)handle;
        gint32 error;
 
        MONO_PREPARE_BLOCKING;
@@ -705,7 +705,7 @@ ves_icall_System_IO_MonoIO_SetFileAttributes (MonoString *path, gint32 attrs,
        *error=ERROR_SUCCESS;
        
        ret=SetFileAttributes (mono_string_chars (path),
-                              convert_attrs (attrs));
+               convert_attrs ((MonoFileAttributes)attrs));
        if(ret==FALSE) {
                *error=GetLastError ();
        }
@@ -803,8 +803,8 @@ ves_icall_System_IO_MonoIO_Open (MonoString *filename, gint32 mode,
                }
        }
        
-       ret=CreateFile (chars, convert_access (access_mode),
-                       convert_share (share), NULL, convert_mode (mode),
+       ret=CreateFile (chars, convert_access ((MonoFileAccess)access_mode),
+                       convert_share ((MonoFileShare)share), NULL, convert_mode ((MonoFileMode)mode),
                        attributes, NULL);
        if(ret==INVALID_HANDLE_VALUE) {
                *error=GetLastError ();
@@ -905,7 +905,7 @@ ves_icall_System_IO_MonoIO_Seek (HANDLE handle, gint64 offset, gint32 origin,
        
        offset_hi = offset >> 32;
        offset = SetFilePointer (handle, (gint32) (offset & 0xFFFFFFFF), &offset_hi,
-                                convert_seekorigin (origin));
+                                convert_seekorigin ((MonoSeekOrigin)origin));
 
        if(offset==INVALID_SET_FILE_POINTER) {
                *error=GetLastError ();
@@ -1252,3 +1252,12 @@ mono_filesize_from_fd (int fd)
 }
 
 #endif
+
+void _wapi_handle_dump (void);
+
+void ves_icall_System_IO_MonoIO_DumpHandles (void)
+{
+#ifndef HOST_WIN32
+       _wapi_handle_dump ();
+#endif
+}
index 271bc58af7785a76521b9307e35a89ed24ecf10b..2974bd49949ecdd27de60df557c33ee102df61e4 100644 (file)
@@ -253,6 +253,9 @@ mono_filesize_from_path (MonoString *path);
 extern gint64
 mono_filesize_from_fd (int fd);
 
+void
+ves_icall_System_IO_MonoIO_DumpHandles (void);
+
 G_END_DECLS
 
 #endif /* _MONO_METADATA_FILEIO_H_ */
index 3de44d7a1db89342a2bd1282f14545a232ac12ed..aca3e7fb49c6fab2a7f25c8b89aeca79d801763e 100644 (file)
@@ -36,6 +36,8 @@
 #include <mono/utils/atomic.h>
 #include <mono/utils/mono-memory-model.h>
 #include <mono/utils/mono-mmap.h>
+#include <mono/utils/mono-coop-mutex.h>
+#include <mono/utils/mono-threads.h>
 
 typedef struct {
        int kind;
@@ -88,7 +90,7 @@ enum {
 #endif
 
 static int mmap_init_state;
-static mono_mutex_t named_regions_mutex;
+static MonoCoopMutex named_regions_mutex;
 static GHashTable *named_regions;
 
 
@@ -115,14 +117,14 @@ retry:
                if (InterlockedCompareExchange (&mmap_init_state, 1, 0) != 0)
                        goto retry;
                named_regions = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL);
-               mono_mutex_init (&named_regions_mutex);
+               mono_coop_mutex_init (&named_regions_mutex);
 
                mono_atomic_store_release (&mmap_init_state, 2);
                break;
 
        case 1:
                do {
-                       g_usleep (1000); /* Been init'd by other threads, this is very rare. */
+                       mono_thread_info_sleep (1, NULL); /* Been init'd by other threads, this is very rare. */
                } while (mmap_init_state != 2);
                break;
        case 2:
@@ -136,13 +138,13 @@ static void
 named_regions_lock (void)
 {
        file_mmap_init ();
-       mono_mutex_lock (&named_regions_mutex);
+       mono_coop_mutex_lock (&named_regions_mutex);
 }
 
 static void
 named_regions_unlock (void)
 {
-       mono_mutex_unlock (&named_regions_mutex);       
+       mono_coop_mutex_unlock (&named_regions_mutex);
 }
 
 
@@ -340,7 +342,7 @@ open_memory_map (MonoString *mapName, int mode, gint64 *capacity, int access, in
                        *error = COULD_NOT_MAP_MEMORY;
                        goto done;
                }
-               file_name = alloca (alloc_size);
+               file_name = (char *)alloca (alloc_size);
                strcpy (file_name, tmp_dir);
                strcat (file_name, MONO_ANON_FILE_TEMPLATE);
 
@@ -389,7 +391,7 @@ mono_mmap_open_file (MonoString *path, int mode, MonoString *mapName, gint64 *ca
                        *error = FILE_ALREADY_EXISTS;
                        handle = NULL;
                } else {
-                       handle = open_file_map (path, -1, mode, capacity, access, options, error);
+                       handle = (MmapHandle *)open_file_map (path, -1, mode, capacity, access, options, error);
                        if (handle) {
                                handle->name = g_strdup (c_mapName);
                                g_hash_table_insert (named_regions, handle->name, handle);
@@ -409,7 +411,7 @@ mono_mmap_open_handle (void *input_fd, MonoString *mapName, gint64 *capacity, in
 {
        MmapHandle *handle;
        if (!mapName) {
-               handle = open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, error);
+               handle = (MmapHandle *)open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, error);
        } else {
                char *c_mapName = mono_string_to_utf8 (mapName);
 
@@ -420,7 +422,7 @@ mono_mmap_open_handle (void *input_fd, MonoString *mapName, gint64 *capacity, in
                        handle = NULL;
                } else {
                        //XXX we're exploiting wapi HANDLE == FD equivalence. THIS IS FRAGILE, create a _wapi_handle_to_fd call
-                       handle = open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, error);
+                       handle = (MmapHandle *)open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, error);
                        handle->name = g_strdup (c_mapName);
                        g_hash_table_insert (named_regions, handle->name, handle);
                }
@@ -434,7 +436,7 @@ mono_mmap_open_handle (void *input_fd, MonoString *mapName, gint64 *capacity, in
 void
 mono_mmap_close (void *mmap_handle)
 {
-       MmapHandle *handle = mmap_handle;
+       MmapHandle *handle = (MmapHandle *)mmap_handle;
 
        named_regions_lock ();
        --handle->ref_count;
@@ -452,7 +454,7 @@ mono_mmap_close (void *mmap_handle)
 void
 mono_mmap_configure_inheritability (void *mmap_handle, gboolean inheritability)
 {
-       MmapHandle *h = mmap_handle;
+       MmapHandle *h = (MmapHandle *)mmap_handle;
        int fd, flags;
 
        fd = h->fd;
@@ -467,7 +469,7 @@ mono_mmap_configure_inheritability (void *mmap_handle, gboolean inheritability)
 void
 mono_mmap_flush (void *mmap_handle)
 {
-       MmapInstance *h = mmap_handle;
+       MmapInstance *h = (MmapInstance *)mmap_handle;
 
        if (h)
                msync (h->address, h->length, MS_SYNC);
@@ -477,7 +479,7 @@ int
 mono_mmap_map (void *handle, gint64 offset, gint64 *size, int access, void **mmap_handle, void **base_address)
 {
        gint64 mmap_offset = 0;
-       MmapHandle *fh = handle;
+       MmapHandle *fh = (MmapHandle *)handle;
        MmapInstance res = { 0 };
        size_t eff_size = *size;
        struct stat buf = { 0 };
@@ -516,7 +518,7 @@ gboolean
 mono_mmap_unmap (void *mmap_handle)
 {
        int res = 0;
-       MmapInstance *h = mmap_handle;
+       MmapInstance *h = (MmapInstance *)mmap_handle;
 
        res = mono_file_unmap (h->address, h->free_handle);
 
diff --git a/mono/metadata/gc-internal.h b/mono/metadata/gc-internal.h
deleted file mode 100644 (file)
index 11c94b4..0000000
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * metadata/gc-internal.h: Internal GC interface
- *
- * Author: Paolo Molaro <lupus@ximian.com>
- *
- * (C) 2002 Ximian, Inc.
- * Copyright 2012 Xamarin Inc (http://www.xamarin.com)
- */
-
-#ifndef __MONO_METADATA_GC_INTERNAL_H__
-#define __MONO_METADATA_GC_INTERNAL_H__
-
-#include <glib.h>
-#include <mono/utils/gc_wrapper.h>
-#include <mono/metadata/object-internals.h>
-#include <mono/metadata/threads-types.h>
-#include <mono/sgen/gc-internal-agnostic.h>
-#include <mono/utils/gc_wrapper.h>
-
-#define mono_domain_finalizers_lock(domain) mono_mutex_lock (&(domain)->finalizable_objects_hash_lock);
-#define mono_domain_finalizers_unlock(domain) mono_mutex_unlock (&(domain)->finalizable_objects_hash_lock);
-
-/* Register a memory area as a conservatively scanned GC root */
-#define MONO_GC_REGISTER_ROOT_PINNING(x,src,msg) mono_gc_register_root ((char*)&(x), sizeof(x), MONO_GC_DESCRIPTOR_NULL, (src), (msg))
-
-#define MONO_GC_UNREGISTER_ROOT(x) mono_gc_deregister_root ((char*)&(x))
-
-/*
- * Register a memory location as a root pointing to memory allocated using
- * mono_gc_alloc_fixed (). This includes MonoGHashTable.
- */
-/* The result of alloc_fixed () is not GC tracked memory */
-#define MONO_GC_REGISTER_ROOT_FIXED(x,src,msg) do { \
-       if (!mono_gc_is_moving ())                              \
-               MONO_GC_REGISTER_ROOT_PINNING ((x),(src),(msg)); \
-       } while (0)
-
-/*
- * Return a GC descriptor for an array containing N pointers to memory allocated
- * by mono_gc_alloc_fixed ().
- */
-/* For SGEN, the result of alloc_fixed () is not GC tracked memory */
-#define MONO_GC_ROOT_DESCR_FOR_FIXED(n) (mono_gc_is_moving () ? mono_gc_make_root_descr_all_refs (0) : MONO_GC_DESCRIPTOR_NULL)
-
-/* Register a memory location holding a single object reference as a GC root */
-#define MONO_GC_REGISTER_ROOT_SINGLE(x,src,msg) do { \
-       g_assert (sizeof (x) == sizeof (MonoObject*)); \
-       mono_gc_register_root ((char*)&(x), sizeof(MonoObject*), mono_gc_make_root_descr_all_refs (1), (src), (msg)); \
-       } while (0)
-
-/*
- * This is used for fields which point to objects which are kept alive by other references
- * when using Boehm.
- */
-#define MONO_GC_REGISTER_ROOT_IF_MOVING(x,src,msg) do { \
-       if (mono_gc_is_moving ()) \
-               MONO_GC_REGISTER_ROOT_SINGLE(x,src,msg);                \
-} while (0)
-
-#define MONO_GC_UNREGISTER_ROOT_IF_MOVING(x) do { \
-       if (mono_gc_is_moving ()) \
-               MONO_GC_UNREGISTER_ROOT (x);                    \
-} while (0)
-
-/* useful until we keep track of gc-references in corlib etc. */
-#define IS_GC_REFERENCE(class,t) (mono_gc_is_moving () ? FALSE : ((t)->type == MONO_TYPE_U && (class)->image == mono_defaults.corlib))
-
-void   mono_object_register_finalizer               (MonoObject  *obj);
-void   ves_icall_System_GC_InternalCollect          (int          generation);
-gint64 ves_icall_System_GC_GetTotalMemory           (MonoBoolean  forceCollection);
-void   ves_icall_System_GC_KeepAlive                (MonoObject  *obj);
-void   ves_icall_System_GC_ReRegisterForFinalize    (MonoObject  *obj);
-void   ves_icall_System_GC_SuppressFinalize         (MonoObject  *obj);
-void   ves_icall_System_GC_WaitForPendingFinalizers (void);
-
-MonoObject *ves_icall_System_GCHandle_GetTarget (guint32 handle);
-guint32     ves_icall_System_GCHandle_GetTargetHandle (MonoObject *obj, guint32 handle, gint32 type);
-void        ves_icall_System_GCHandle_FreeHandle (guint32 handle);
-gpointer    ves_icall_System_GCHandle_GetAddrOfPinnedObject (guint32 handle);
-void        ves_icall_System_GC_register_ephemeron_array (MonoObject *array);
-MonoObject  *ves_icall_System_GC_get_ephemeron_tombstone (void);
-
-MonoBoolean ves_icall_Mono_Runtime_SetGCAllowSynchronousMajor (MonoBoolean flag);
-
-extern void mono_gc_init (void);
-extern void mono_gc_base_init (void);
-extern void mono_gc_cleanup (void);
-extern void mono_gc_base_cleanup (void);
-
-/*
- * Return whenever the current thread is registered with the GC (i.e. started
- * by the GC pthread wrappers on unix.
- */
-extern gboolean mono_gc_is_gc_thread (void);
-
-extern gboolean mono_gc_is_finalizer_internal_thread (MonoInternalThread *thread);
-
-extern void mono_gc_set_stack_end (void *stack_end);
-
-/* only valid after the RECLAIM_START GC event and before RECLAIM_END
- * Not exported in public headers, but can be linked to (unsupported).
- */
-gboolean mono_object_is_alive (MonoObject* obj);
-gboolean mono_gc_is_finalizer_thread (MonoThread *thread);
-gpointer mono_gc_out_of_memory (size_t size);
-void     mono_gc_enable_events (void);
-void     mono_gc_enable_alloc_events (void);
-
-void mono_gchandle_set_target (guint32 gchandle, MonoObject *obj);
-
-/*Ephemeron functionality. Sgen only*/
-gboolean    mono_gc_ephemeron_array_add (MonoObject *obj);
-
-/* To disable synchronous, evacuating collections - concurrent SGen only */
-gboolean    mono_gc_set_allow_synchronous_major (gboolean flag);
-
-MonoBoolean
-mono_gc_GCHandle_CheckCurrentDomain (guint32 gchandle);
-
-/* User defined marking function */
-/* It should work like this:
- * foreach (ref in GC references in the are structure pointed to by ADDR)
- *    mark_func (ref)
- */
-typedef void (*MonoGCMarkFunc)     (MonoObject **addr, void *gc_data);
-typedef void (*MonoGCRootMarkFunc) (void *addr, MonoGCMarkFunc mark_func, void *gc_data);
-
-/* Create a descriptor with a user defined marking function */
-MonoGCDescriptor mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker);
-
-/* Return whenever user defined marking functions are supported */
-gboolean mono_gc_user_markers_supported (void);
-
-/* desc is the result from mono_gc_make_descr*. A NULL value means
- * all the words might contain GC pointers.
- * The memory is non-moving and it will be explicitly deallocated.
- * size bytes will be available from the returned address (ie, descr
- * must not be stored in the returned memory)
- * NOTE: Under Boehm, this returns memory allocated using GC_malloc, so the result should
- * be stored into a location registered using MONO_GC_REGISTER_ROOT_FIXED ().
- */
-void* mono_gc_alloc_fixed            (size_t size, MonoGCDescriptor descr, MonoGCRootSource source, const char *msg);
-void  mono_gc_free_fixed             (void* addr);
-
-/* make sure the gchandle was allocated for an object in domain */
-gboolean mono_gchandle_is_in_domain (guint32 gchandle, MonoDomain *domain);
-void     mono_gchandle_free_domain  (MonoDomain *domain);
-
-typedef void (*FinalizerThreadCallback) (gpointer user_data);
-
-/* if there are finalizers to run, run them. Returns the number of finalizers run */
-gboolean mono_gc_pending_finalizers (void);
-void     mono_gc_finalize_notify    (void);
-
-void* mono_gc_alloc_pinned_obj (MonoVTable *vtable, size_t size);
-void* mono_gc_alloc_obj (MonoVTable *vtable, size_t size);
-void* mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length);
-void* mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uintptr_t bounds_size);
-void* mono_gc_alloc_string (MonoVTable *vtable, size_t size, gint32 len);
-MonoGCDescriptor mono_gc_make_descr_for_string (gsize *bitmap, int numbits);
-
-void  mono_gc_register_for_finalization (MonoObject *obj, void *user_data);
-void  mono_gc_add_memory_pressure (gint64 value);
-MONO_API int   mono_gc_register_root (char *start, size_t size, MonoGCDescriptor descr, MonoGCRootSource source, const char *msg);
-void  mono_gc_deregister_root (char* addr);
-int   mono_gc_finalizers_for_domain (MonoDomain *domain, MonoObject **out_array, int out_size);
-void  mono_gc_run_finalize (void *obj, void *data);
-void  mono_gc_clear_domain (MonoDomain * domain);
-void* mono_gc_alloc_mature (MonoVTable *vtable);
-
-/* 
- * Register a root which can only be written using a write barrier.
- * Writes to the root must be done using a write barrier (MONO_ROOT_SETREF).
- * If the root uses an user defined mark routine, the writes are not required to be
- * to the area between START and START+SIZE.
- * The write barrier allows the GC to avoid scanning this root at each collection, so it
- * is more efficient.
- * FIXME: Add an API for clearing remset entries if a root with a user defined
- * mark routine is deleted.
- */
-int mono_gc_register_root_wbarrier (char *start, size_t size, MonoGCDescriptor descr, MonoGCRootSource source, const char *msg);
-
-void mono_gc_wbarrier_set_root (gpointer ptr, MonoObject *value);
-
-/* Set a field of a root registered using mono_gc_register_root_wbarrier () */
-#define MONO_ROOT_SETREF(s,fieldname,value) do {       \
-       mono_gc_wbarrier_set_root (&((s)->fieldname), (MonoObject*)value); \
-} while (0)
-
-void  mono_gc_finalize_threadpool_threads (void);
-
-/* fast allocation support */
-
-/* Accessible using mono_marshal_wrapper_info_from_wrapper () */
-typedef struct {
-       const char *gc_name;
-       int alloc_type;
-} AllocatorWrapperInfo;
-
-int mono_gc_get_aligned_size_for_allocator (int size);
-MonoMethod* mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box, gboolean known_instance_size);
-MonoMethod* mono_gc_get_managed_array_allocator (MonoClass *klass);
-MonoMethod *mono_gc_get_managed_allocator_by_type (int atype, gboolean slowpath);
-
-guint32 mono_gc_get_managed_allocator_types (void);
-
-/* Return a short string identifying the GC, indented to be saved in AOT images */
-const char *mono_gc_get_gc_name (void);
-
-/* Fast write barriers */
-MonoMethod* mono_gc_get_specific_write_barrier (gboolean is_concurrent);
-MonoMethod* mono_gc_get_write_barrier (void);
-
-/* Fast valuetype copy */
-void mono_gc_wbarrier_value_copy_bitmap (gpointer dest, gpointer src, int size, unsigned bitmap);
-
-/* helper for the managed alloc support */
-MonoString *mono_string_alloc (int length);
-
-/* 
- * Functions supplied by the runtime and called by the GC. Currently only used
- * by SGEN.
- */
-typedef struct {
-       /* 
-        * Function called during thread startup/attach to allocate thread-local data 
-        * needed by the other functions.
-        */
-       gpointer (*thread_attach_func) (void);
-       /* 
-        * Function called during thread deatch to free the data allocated by
-        * thread_attach_func.
-        */
-       void (*thread_detach_func) (gpointer user_data);
-       /* 
-        * Function called from every thread when suspending for GC. It can save
-        * data needed for marking from thread stacks. user_data is the data returned 
-        * by attach_func. This might called with GC locks held and the word stopped,
-        * so it shouldn't do any synchronization etc.
-        */
-       void (*thread_suspend_func) (gpointer user_data, void *sigcontext, MonoContext *ctx);
-       /* 
-        * Function called to mark from thread stacks. user_data is the data returned 
-        * by attach_func. This is called twice, with the word stopped:
-        * - in the first pass, it should mark areas of the stack using
-        *   conservative marking by calling mono_gc_conservatively_scan_area ().
-        * - in the second pass, it should mark the remaining areas of the stack
-        *   using precise marking by calling mono_gc_scan_object ().
-        */
-       void (*thread_mark_func) (gpointer user_data, guint8 *stack_start, guint8 *stack_end, gboolean precise, void *gc_data);
-       /*
-        * Function called for debugging to get the current managed method for
-        * tracking the provenances of objects.
-        */
-       gpointer (*get_provenance_func) (void);
-} MonoGCCallbacks;
-
-/* Set the callback functions callable by the GC */
-void mono_gc_set_gc_callbacks (MonoGCCallbacks *callbacks);
-MonoGCCallbacks *mono_gc_get_gc_callbacks (void);
-
-/* Functions callable from the thread mark func */
-
-/* Scan the memory area between START and END conservatively */
-void mono_gc_conservatively_scan_area (void *start, void *end);
-
-/* Scan OBJ, returning its new address */
-void *mono_gc_scan_object (void *obj, void *gc_data);
-
-/* Return the suspend signal number used by the GC to suspend threads,
-   or -1 if not applicable. */
-int mono_gc_get_suspend_signal (void);
-
-/* Return the suspend signal number used by the GC to suspend threads,
-   or -1 if not applicable. */
-int mono_gc_get_restart_signal (void);
-
-/*
- * Return a human readable description of the GC in malloc-ed memory.
- */
-char* mono_gc_get_description (void);
-
-/*
- * Configure the GC to desktop mode
- */
-void mono_gc_set_desktop_mode (void);
-
-/*
- * Return whenever this GC can move objects
- */
-gboolean mono_gc_is_moving (void);
-
-typedef void* (*MonoGCLockedCallbackFunc) (void *data);
-
-void* mono_gc_invoke_with_gc_lock (MonoGCLockedCallbackFunc func, void *data);
-
-int mono_gc_get_los_limit (void);
-
-guint8* mono_gc_get_card_table (int *shift_bits, gpointer *card_mask);
-gboolean mono_gc_card_table_nursery_check (void);
-
-void* mono_gc_get_nursery (int *shift_bits, size_t *size);
-
-void mono_gc_set_current_thread_appdomain (MonoDomain *domain);
-
-void mono_gc_set_skip_thread (gboolean skip);
-
-#ifndef HOST_WIN32
-int mono_gc_pthread_create (pthread_t *new_thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
-#endif
-
-/*
- * Return whenever GC is disabled
- */
-gboolean mono_gc_is_disabled (void);
-
-/*
- * Return whenever this is the null GC
- */
-gboolean mono_gc_is_null (void);
-
-void mono_gc_set_string_length (MonoString *str, gint32 new_length);
-
-#if defined(__MACH__)
-void mono_gc_register_mach_exception_thread (pthread_t thread);
-pthread_t mono_gc_get_mach_exception_thread (void);
-#endif
-
-gboolean mono_gc_precise_stack_mark_enabled (void);
-
-typedef struct _RefQueueEntry RefQueueEntry;
-
-struct _RefQueueEntry {
-       void *dis_link;
-       guint32 gchandle;
-       MonoDomain *domain;
-       void *user_data;
-       RefQueueEntry *next;
-};
-
-struct _MonoReferenceQueue {
-       RefQueueEntry *queue;
-       mono_reference_queue_callback callback;
-       MonoReferenceQueue *next;
-       gboolean should_be_deleted;
-};
-
-enum {
-       MONO_GC_FINALIZER_EXTENSION_VERSION = 1,
-};
-
-typedef struct {
-       int version;
-       gboolean (*is_class_finalization_aware) (MonoClass *klass);
-       void (*object_queued_for_finalization) (MonoObject *object);
-} MonoGCFinalizerCallbacks;
-
-MONO_API void mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks);
-
-
-#ifdef HOST_WIN32
-BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reserved);
-#endif
-
-guint mono_gc_get_vtable_bits (MonoClass *klass);
-
-void mono_gc_register_altstack (gpointer stack, gint32 stack_size, gpointer altstack, gint32 altstack_size);
-
-/* If set, print debugging messages around finalizers. */
-extern gboolean log_finalizers;
-
-/* If set, do not run finalizers. */
-extern gboolean do_not_finalize;
-
-#endif /* __MONO_METADATA_GC_INTERNAL_H__ */
-
diff --git a/mono/metadata/gc-internals.h b/mono/metadata/gc-internals.h
new file mode 100644 (file)
index 0000000..bc9edcb
--- /dev/null
@@ -0,0 +1,368 @@
+/*
+ * metadata/gc-internals.h: Internal GC interface
+ *
+ * Author: Paolo Molaro <lupus@ximian.com>
+ *
+ * (C) 2002 Ximian, Inc.
+ * Copyright 2012 Xamarin Inc (http://www.xamarin.com)
+ */
+
+#ifndef __MONO_METADATA_GC_INTERNAL_H__
+#define __MONO_METADATA_GC_INTERNAL_H__
+
+#include <glib.h>
+#include <mono/utils/gc_wrapper.h>
+#include <mono/metadata/object-internals.h>
+#include <mono/metadata/threads-types.h>
+#include <mono/sgen/gc-internal-agnostic.h>
+#include <mono/utils/gc_wrapper.h>
+
+#define mono_domain_finalizers_lock(domain) mono_os_mutex_lock (&(domain)->finalizable_objects_hash_lock);
+#define mono_domain_finalizers_unlock(domain) mono_os_mutex_unlock (&(domain)->finalizable_objects_hash_lock);
+
+/* Register a memory area as a conservatively scanned GC root */
+#define MONO_GC_REGISTER_ROOT_PINNING(x,src,msg) mono_gc_register_root ((char*)&(x), sizeof(x), MONO_GC_DESCRIPTOR_NULL, (src), (msg))
+
+#define MONO_GC_UNREGISTER_ROOT(x) mono_gc_deregister_root ((char*)&(x))
+
+/*
+ * Register a memory location as a root pointing to memory allocated using
+ * mono_gc_alloc_fixed (). This includes MonoGHashTable.
+ */
+/* The result of alloc_fixed () is not GC tracked memory */
+#define MONO_GC_REGISTER_ROOT_FIXED(x,src,msg) do { \
+       if (!mono_gc_is_moving ())                              \
+               MONO_GC_REGISTER_ROOT_PINNING ((x),(src),(msg)); \
+       } while (0)
+
+/*
+ * Return a GC descriptor for an array containing N pointers to memory allocated
+ * by mono_gc_alloc_fixed ().
+ */
+/* For SGEN, the result of alloc_fixed () is not GC tracked memory */
+#define MONO_GC_ROOT_DESCR_FOR_FIXED(n) (mono_gc_is_moving () ? mono_gc_make_root_descr_all_refs (0) : MONO_GC_DESCRIPTOR_NULL)
+
+/* Register a memory location holding a single object reference as a GC root */
+#define MONO_GC_REGISTER_ROOT_SINGLE(x,src,msg) do { \
+       g_assert (sizeof (x) == sizeof (MonoObject*)); \
+       mono_gc_register_root ((char*)&(x), sizeof(MonoObject*), mono_gc_make_root_descr_all_refs (1), (src), (msg)); \
+       } while (0)
+
+/*
+ * This is used for fields which point to objects which are kept alive by other references
+ * when using Boehm.
+ */
+#define MONO_GC_REGISTER_ROOT_IF_MOVING(x,src,msg) do { \
+       if (mono_gc_is_moving ()) \
+               MONO_GC_REGISTER_ROOT_SINGLE(x,src,msg);                \
+} while (0)
+
+#define MONO_GC_UNREGISTER_ROOT_IF_MOVING(x) do { \
+       if (mono_gc_is_moving ()) \
+               MONO_GC_UNREGISTER_ROOT (x);                    \
+} while (0)
+
+/* useful until we keep track of gc-references in corlib etc. */
+#define IS_GC_REFERENCE(class,t) (mono_gc_is_moving () ? FALSE : ((t)->type == MONO_TYPE_U && (class)->image == mono_defaults.corlib))
+
+void   mono_object_register_finalizer               (MonoObject  *obj);
+void   ves_icall_System_GC_InternalCollect          (int          generation);
+gint64 ves_icall_System_GC_GetTotalMemory           (MonoBoolean  forceCollection);
+void   ves_icall_System_GC_KeepAlive                (MonoObject  *obj);
+void   ves_icall_System_GC_ReRegisterForFinalize    (MonoObject  *obj);
+void   ves_icall_System_GC_SuppressFinalize         (MonoObject  *obj);
+void   ves_icall_System_GC_WaitForPendingFinalizers (void);
+
+MonoObject *ves_icall_System_GCHandle_GetTarget (guint32 handle);
+guint32     ves_icall_System_GCHandle_GetTargetHandle (MonoObject *obj, guint32 handle, gint32 type);
+void        ves_icall_System_GCHandle_FreeHandle (guint32 handle);
+gpointer    ves_icall_System_GCHandle_GetAddrOfPinnedObject (guint32 handle);
+void        ves_icall_System_GC_register_ephemeron_array (MonoObject *array);
+MonoObject  *ves_icall_System_GC_get_ephemeron_tombstone (void);
+
+
+extern void mono_gc_init (void);
+extern void mono_gc_base_init (void);
+extern void mono_gc_cleanup (void);
+extern void mono_gc_base_cleanup (void);
+
+/*
+ * Return whenever the current thread is registered with the GC (i.e. started
+ * by the GC pthread wrappers on unix.
+ */
+extern gboolean mono_gc_is_gc_thread (void);
+
+extern gboolean mono_gc_is_finalizer_internal_thread (MonoInternalThread *thread);
+
+extern void mono_gc_set_stack_end (void *stack_end);
+
+/* only valid after the RECLAIM_START GC event and before RECLAIM_END
+ * Not exported in public headers, but can be linked to (unsupported).
+ */
+gboolean mono_object_is_alive (MonoObject* obj);
+gboolean mono_gc_is_finalizer_thread (MonoThread *thread);
+gpointer mono_gc_out_of_memory (size_t size);
+void     mono_gc_enable_events (void);
+void     mono_gc_enable_alloc_events (void);
+
+void mono_gchandle_set_target (guint32 gchandle, MonoObject *obj);
+
+/*Ephemeron functionality. Sgen only*/
+gboolean    mono_gc_ephemeron_array_add (MonoObject *obj);
+
+MonoBoolean
+mono_gc_GCHandle_CheckCurrentDomain (guint32 gchandle);
+
+/* User defined marking function */
+/* It should work like this:
+ * foreach (ref in GC references in the are structure pointed to by ADDR)
+ *    mark_func (ref)
+ */
+typedef void (*MonoGCMarkFunc)     (MonoObject **addr, void *gc_data);
+typedef void (*MonoGCRootMarkFunc) (void *addr, MonoGCMarkFunc mark_func, void *gc_data);
+
+/* Create a descriptor with a user defined marking function */
+MonoGCDescriptor mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker);
+
+/* Return whenever user defined marking functions are supported */
+gboolean mono_gc_user_markers_supported (void);
+
+/* desc is the result from mono_gc_make_descr*. A NULL value means
+ * all the words might contain GC pointers.
+ * The memory is non-moving and it will be explicitly deallocated.
+ * size bytes will be available from the returned address (ie, descr
+ * must not be stored in the returned memory)
+ * NOTE: Under Boehm, this returns memory allocated using GC_malloc, so the result should
+ * be stored into a location registered using MONO_GC_REGISTER_ROOT_FIXED ().
+ */
+void* mono_gc_alloc_fixed            (size_t size, MonoGCDescriptor descr, MonoGCRootSource source, const char *msg);
+void  mono_gc_free_fixed             (void* addr);
+
+/* make sure the gchandle was allocated for an object in domain */
+gboolean mono_gchandle_is_in_domain (guint32 gchandle, MonoDomain *domain);
+void     mono_gchandle_free_domain  (MonoDomain *domain);
+
+typedef void (*FinalizerThreadCallback) (gpointer user_data);
+
+/* if there are finalizers to run, run them. Returns the number of finalizers run */
+gboolean mono_gc_pending_finalizers (void);
+void     mono_gc_finalize_notify    (void);
+
+void* mono_gc_alloc_pinned_obj (MonoVTable *vtable, size_t size);
+void* mono_gc_alloc_obj (MonoVTable *vtable, size_t size);
+void* mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length);
+void* mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uintptr_t bounds_size);
+void* mono_gc_alloc_string (MonoVTable *vtable, size_t size, gint32 len);
+MonoGCDescriptor mono_gc_make_descr_for_string (gsize *bitmap, int numbits);
+
+void  mono_gc_register_for_finalization (MonoObject *obj, void *user_data);
+void  mono_gc_add_memory_pressure (gint64 value);
+MONO_API int   mono_gc_register_root (char *start, size_t size, MonoGCDescriptor descr, MonoGCRootSource source, const char *msg);
+void  mono_gc_deregister_root (char* addr);
+int   mono_gc_finalizers_for_domain (MonoDomain *domain, MonoObject **out_array, int out_size);
+void  mono_gc_run_finalize (void *obj, void *data);
+void  mono_gc_clear_domain (MonoDomain * domain);
+void* mono_gc_alloc_mature (MonoVTable *vtable);
+
+/* 
+ * Register a root which can only be written using a write barrier.
+ * Writes to the root must be done using a write barrier (MONO_ROOT_SETREF).
+ * If the root uses an user defined mark routine, the writes are not required to be
+ * to the area between START and START+SIZE.
+ * The write barrier allows the GC to avoid scanning this root at each collection, so it
+ * is more efficient.
+ * FIXME: Add an API for clearing remset entries if a root with a user defined
+ * mark routine is deleted.
+ */
+int mono_gc_register_root_wbarrier (char *start, size_t size, MonoGCDescriptor descr, MonoGCRootSource source, const char *msg);
+
+void mono_gc_wbarrier_set_root (gpointer ptr, MonoObject *value);
+
+/* Set a field of a root registered using mono_gc_register_root_wbarrier () */
+#define MONO_ROOT_SETREF(s,fieldname,value) do {       \
+       mono_gc_wbarrier_set_root (&((s)->fieldname), (MonoObject*)value); \
+} while (0)
+
+void  mono_gc_finalize_threadpool_threads (void);
+
+/* fast allocation support */
+
+int mono_gc_get_aligned_size_for_allocator (int size);
+MonoMethod* mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box, gboolean known_instance_size);
+MonoMethod* mono_gc_get_managed_array_allocator (MonoClass *klass);
+MonoMethod *mono_gc_get_managed_allocator_by_type (int atype, gboolean slowpath);
+
+guint32 mono_gc_get_managed_allocator_types (void);
+
+/* Return a short string identifying the GC, indented to be saved in AOT images */
+const char *mono_gc_get_gc_name (void);
+
+/* Fast write barriers */
+MonoMethod* mono_gc_get_specific_write_barrier (gboolean is_concurrent);
+MonoMethod* mono_gc_get_write_barrier (void);
+
+/* Fast valuetype copy */
+void mono_gc_wbarrier_value_copy_bitmap (gpointer dest, gpointer src, int size, unsigned bitmap);
+
+/* helper for the managed alloc support */
+MonoString *mono_string_alloc (int length);
+
+/* 
+ * Functions supplied by the runtime and called by the GC. Currently only used
+ * by SGEN.
+ */
+typedef struct {
+       /* 
+        * Function called during thread startup/attach to allocate thread-local data 
+        * needed by the other functions.
+        */
+       gpointer (*thread_attach_func) (void);
+       /* 
+        * Function called during thread deatch to free the data allocated by
+        * thread_attach_func.
+        */
+       void (*thread_detach_func) (gpointer user_data);
+       /* 
+        * Function called from every thread when suspending for GC. It can save
+        * data needed for marking from thread stacks. user_data is the data returned 
+        * by attach_func. This might called with GC locks held and the word stopped,
+        * so it shouldn't do any synchronization etc.
+        */
+       void (*thread_suspend_func) (gpointer user_data, void *sigcontext, MonoContext *ctx);
+       /* 
+        * Function called to mark from thread stacks. user_data is the data returned 
+        * by attach_func. This is called twice, with the word stopped:
+        * - in the first pass, it should mark areas of the stack using
+        *   conservative marking by calling mono_gc_conservatively_scan_area ().
+        * - in the second pass, it should mark the remaining areas of the stack
+        *   using precise marking by calling mono_gc_scan_object ().
+        */
+       void (*thread_mark_func) (gpointer user_data, guint8 *stack_start, guint8 *stack_end, gboolean precise, void *gc_data);
+       /*
+        * Function called for debugging to get the current managed method for
+        * tracking the provenances of objects.
+        */
+       gpointer (*get_provenance_func) (void);
+} MonoGCCallbacks;
+
+/* Set the callback functions callable by the GC */
+void mono_gc_set_gc_callbacks (MonoGCCallbacks *callbacks);
+MonoGCCallbacks *mono_gc_get_gc_callbacks (void);
+
+/* Functions callable from the thread mark func */
+
+/* Scan the memory area between START and END conservatively */
+void mono_gc_conservatively_scan_area (void *start, void *end);
+
+/* Scan OBJ, returning its new address */
+void *mono_gc_scan_object (void *obj, void *gc_data);
+
+/* Return the suspend signal number used by the GC to suspend threads,
+   or -1 if not applicable. */
+int mono_gc_get_suspend_signal (void);
+
+/* Return the suspend signal number used by the GC to suspend threads,
+   or -1 if not applicable. */
+int mono_gc_get_restart_signal (void);
+
+/*
+ * Return a human readable description of the GC in malloc-ed memory.
+ */
+char* mono_gc_get_description (void);
+
+/*
+ * Configure the GC to desktop mode
+ */
+void mono_gc_set_desktop_mode (void);
+
+/*
+ * Return whenever this GC can move objects
+ */
+gboolean mono_gc_is_moving (void);
+
+typedef void* (*MonoGCLockedCallbackFunc) (void *data);
+
+void* mono_gc_invoke_with_gc_lock (MonoGCLockedCallbackFunc func, void *data);
+
+int mono_gc_get_los_limit (void);
+
+guint8* mono_gc_get_card_table (int *shift_bits, gpointer *card_mask);
+gboolean mono_gc_card_table_nursery_check (void);
+
+void* mono_gc_get_nursery (int *shift_bits, size_t *size);
+
+void mono_gc_set_current_thread_appdomain (MonoDomain *domain);
+
+void mono_gc_set_skip_thread (gboolean skip);
+
+#ifndef HOST_WIN32
+int mono_gc_pthread_create (pthread_t *new_thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
+#endif
+
+/*
+ * Return whenever GC is disabled
+ */
+gboolean mono_gc_is_disabled (void);
+
+/*
+ * Return whenever this is the null GC
+ */
+gboolean mono_gc_is_null (void);
+
+void mono_gc_set_string_length (MonoString *str, gint32 new_length);
+
+#if defined(__MACH__)
+void mono_gc_register_mach_exception_thread (pthread_t thread);
+pthread_t mono_gc_get_mach_exception_thread (void);
+#endif
+
+gboolean mono_gc_precise_stack_mark_enabled (void);
+
+typedef struct _RefQueueEntry RefQueueEntry;
+
+struct _RefQueueEntry {
+       void *dis_link;
+       guint32 gchandle;
+       MonoDomain *domain;
+       void *user_data;
+       RefQueueEntry *next;
+};
+
+struct _MonoReferenceQueue {
+       RefQueueEntry *queue;
+       mono_reference_queue_callback callback;
+       MonoReferenceQueue *next;
+       gboolean should_be_deleted;
+};
+
+enum {
+       MONO_GC_FINALIZER_EXTENSION_VERSION = 1,
+};
+
+typedef struct {
+       int version;
+       gboolean (*is_class_finalization_aware) (MonoClass *klass);
+       void (*object_queued_for_finalization) (MonoObject *object);
+} MonoGCFinalizerCallbacks;
+
+MONO_API void mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks);
+
+
+#ifdef HOST_WIN32
+BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reserved);
+#endif
+
+guint mono_gc_get_vtable_bits (MonoClass *klass);
+
+void mono_gc_register_altstack (gpointer stack, gint32 stack_size, gpointer altstack, gint32 altstack_size);
+
+/* If set, print debugging messages around finalizers. */
+extern gboolean log_finalizers;
+
+/* If set, do not run finalizers. */
+extern gboolean mono_do_not_finalize;
+/* List of names of classes not to finalize. */
+extern gchar **mono_do_not_finalize_class_names;
+
+#endif /* __MONO_METADATA_GC_INTERNAL_H__ */
+
index 94fd827510296d02f912064e346d15ca42e1f941..901a985a587039274d535a496d934e75c58df240 100644 (file)
@@ -12,7 +12,7 @@
 #include <glib.h>
 #include <string.h>
 
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/mono-gc.h>
 #include <mono/metadata/threads.h>
 #include <mono/metadata/tabledefs.h>
 #include <mono/metadata/threadpool-ms.h>
 #include <mono/sgen/sgen-conf.h>
 #include <mono/sgen/sgen-gc.h>
-#include <mono/utils/mono-logger-internal.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/utils/mono-logger-internals.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/marshal.h> /* for mono_delegate_free_ftnptr () */
 #include <mono/metadata/attach.h>
 #include <mono/metadata/console-io.h>
-#include <mono/utils/mono-semaphore.h>
+#include <mono/utils/mono-os-semaphore.h>
 #include <mono/utils/mono-memory-model.h>
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/mono-time.h>
 #include <mono/utils/dtrace.h>
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/atomic.h>
+#include <mono/utils/mono-coop-semaphore.h>
 
 #ifndef HOST_WIN32
 #include <pthread.h>
@@ -53,19 +54,20 @@ static gboolean gc_disabled = FALSE;
 static gboolean finalizing_root_domain = FALSE;
 
 gboolean log_finalizers = FALSE;
-gboolean do_not_finalize = FALSE;
+gboolean mono_do_not_finalize = FALSE;
+gchar **mono_do_not_finalize_class_names = NULL;
 
-#define mono_finalizer_lock() mono_mutex_lock (&finalizer_mutex)
-#define mono_finalizer_unlock() mono_mutex_unlock (&finalizer_mutex)
-static mono_mutex_t finalizer_mutex;
-static mono_mutex_t reference_queue_mutex;
+#define mono_finalizer_lock() mono_coop_mutex_lock (&finalizer_mutex)
+#define mono_finalizer_unlock() mono_coop_mutex_unlock (&finalizer_mutex)
+static MonoCoopMutex finalizer_mutex;
+static MonoCoopMutex reference_queue_mutex;
 
 static GSList *domains_to_finalize= NULL;
 static MonoMList *threads_to_finalize = NULL;
 
 static gboolean finalizer_thread_exited;
 /* Uses finalizer_mutex */
-static mono_cond_t exited_cond;
+static MonoCoopCond exited_cond;
 
 static MonoInternalThread *gc_thread;
 
@@ -106,9 +108,6 @@ static gboolean suspend_finalizers = FALSE;
 void
 mono_gc_run_finalize (void *obj, void *data)
 {
-       if (do_not_finalize)
-               return;
-
        MonoObject *exc = NULL;
        MonoObject *o;
 #ifndef HAVE_SGEN_GC
@@ -120,10 +119,27 @@ mono_gc_run_finalize (void *obj, void *data)
        RuntimeInvokeFunction runtime_invoke;
 
        // This function is called from the innards of the GC, so our best alternative for now is to do polling here
-       MONO_SUSPEND_CHECK ();
+       mono_threads_safepoint ();
 
        o = (MonoObject*)((char*)obj + GPOINTER_TO_UINT (data));
 
+       if (mono_do_not_finalize) {
+               if (!mono_do_not_finalize_class_names)
+                       return;
+
+               size_t namespace_len = strlen (o->vtable->klass->name_space);
+               for (int i = 0; mono_do_not_finalize_class_names [i]; ++i) {
+                       const char *name = mono_do_not_finalize_class_names [i];
+                       if (strncmp (name, o->vtable->klass->name_space, namespace_len))
+                               break;
+                       if (name [namespace_len] != '.')
+                               break;
+                       if (strcmp (name + namespace_len + 1, o->vtable->klass->name))
+                               break;
+                       return;
+               }
+       }
+
        if (log_finalizers)
                g_log ("mono-gc-finalizers", G_LOG_LEVEL_DEBUG, "<%s at %p> Starting finalizer checks.", o->vtable->klass->name, o);
 
@@ -135,7 +151,7 @@ mono_gc_run_finalize (void *obj, void *data)
 #ifndef HAVE_SGEN_GC
        mono_domain_finalizers_lock (domain);
 
-       o2 = g_hash_table_lookup (domain->finalizable_objects_hash, o);
+       o2 = (MonoObject *)g_hash_table_lookup (domain->finalizable_objects_hash, o);
 
        mono_domain_finalizers_unlock (domain);
 
@@ -145,7 +161,7 @@ mono_gc_run_finalize (void *obj, void *data)
 #endif
 
        /* make sure the finalizer is not called again if the object is resurrected */
-       object_register_finalizer (obj, NULL);
+       object_register_finalizer ((MonoObject *)obj, NULL);
 
        if (log_finalizers)
                g_log ("mono-gc-finalizers", G_LOG_LEVEL_MESSAGE, "<%s at %p> Registered finalizer as processed.", o->vtable->klass->name, o);
@@ -220,12 +236,12 @@ mono_gc_run_finalize (void *obj, void *data)
                g_log ("mono-gc-finalizers", G_LOG_LEVEL_MESSAGE, "<%s at %p> Compiling finalizer.", o->vtable->klass->name, o);
 
        if (!domain->finalize_runtime_invoke) {
-               MonoMethod *invoke = mono_marshal_get_runtime_invoke (mono_class_get_method_from_name_flags (mono_defaults.object_class, "Finalize", 0, 0), TRUE, FALSE);
+               MonoMethod *invoke = mono_marshal_get_runtime_invoke (mono_class_get_method_from_name_flags (mono_defaults.object_class, "Finalize", 0, 0), TRUE);
 
                domain->finalize_runtime_invoke = mono_compile_method (invoke);
        }
 
-       runtime_invoke = domain->finalize_runtime_invoke;
+       runtime_invoke = (RuntimeInvokeFunction)domain->finalize_runtime_invoke;
 
        mono_runtime_class_init (o->vtable);
 
@@ -319,11 +335,8 @@ object_register_finalizer (MonoObject *obj, void (*callback)(void *, void*))
         * end up running them while or after the domain is being cleared, so
         * the objects will not be valid anymore.
         */
-       if (!mono_domain_is_unloading (domain)) {
-               MONO_TRY_BLOCKING;
+       if (!mono_domain_is_unloading (domain))
                mono_gc_register_for_finalization (obj, callback);
-               MONO_FINISH_TRY_BLOCKING;
-       }
 #endif
 }
 
@@ -525,10 +538,6 @@ ves_icall_System_GC_get_ephemeron_tombstone (void)
        return mono_domain_get ()->ephemeron_tombstone;
 }
 
-#define mono_allocator_lock() mono_mutex_lock (&allocator_section)
-#define mono_allocator_unlock() mono_mutex_unlock (&allocator_section)
-static mono_mutex_t allocator_section;
-
 MonoObject *
 ves_icall_System_GCHandle_GetTarget (guint32 handle)
 {
@@ -592,22 +601,13 @@ ves_icall_System_GCHandle_GetAddrOfPinnedObject (guint32 handle)
        return NULL;
 }
 
-MonoBoolean
-ves_icall_Mono_Runtime_SetGCAllowSynchronousMajor (MonoBoolean flag)
-{
-       return mono_gc_set_allow_synchronous_major (flag);
-}
-
 MonoBoolean
 mono_gc_GCHandle_CheckCurrentDomain (guint32 gchandle)
 {
        return mono_gchandle_is_in_domain (gchandle, mono_domain_get ());
 }
 
-#ifdef MONO_HAS_SEMAPHORES
-static MonoSemType finalizer_sem;
-#endif
-static HANDLE finalizer_event;
+static MonoCoopSem finalizer_sem;
 static volatile gboolean finished=FALSE;
 
 void
@@ -620,11 +620,7 @@ mono_gc_finalize_notify (void)
        if (mono_gc_is_null ())
                return;
 
-#ifdef MONO_HAS_SEMAPHORES
-       MONO_SEM_POST (&finalizer_sem);
-#else
-       SetEvent (finalizer_event);
-#endif
+       mono_coop_sem_post (&finalizer_sem);
 }
 
 #ifdef HAVE_BOEHM_GC
@@ -709,18 +705,13 @@ finalizer_thread (gpointer unused)
 
                g_assert (mono_domain_get () == mono_get_root_domain ());
                mono_gc_set_skip_thread (TRUE);
-               MONO_PREPARE_BLOCKING;
 
                if (wait) {
-               /* An alertable wait is required so this thread can be suspended on windows */
-#ifdef MONO_HAS_SEMAPHORES
-                       MONO_SEM_WAIT_ALERTABLE (&finalizer_sem, TRUE);
-#else
-                       WaitForSingleObjectEx (finalizer_event, INFINITE, TRUE);
-#endif
+                       /* An alertable wait is required so this thread can be suspended on windows */
+                       mono_coop_sem_wait (&finalizer_sem, MONO_SEM_FLAGS_ALERTABLE);
                }
                wait = TRUE;
-               MONO_FINISH_BLOCKING;
+
                mono_gc_set_skip_thread (FALSE);
 
                mono_threads_perform_thread_dump ();
@@ -732,7 +723,7 @@ finalizer_thread (gpointer unused)
                if (domains_to_finalize) {
                        mono_finalizer_lock ();
                        if (domains_to_finalize) {
-                               DomainFinalizationReq *req = domains_to_finalize->data;
+                               DomainFinalizationReq *req = (DomainFinalizationReq *)domains_to_finalize->data;
                                domains_to_finalize = g_slist_remove (domains_to_finalize, req);
                                mono_finalizer_unlock ();
 
@@ -751,21 +742,18 @@ finalizer_thread (gpointer unused)
 
                reference_queue_proccess_all ();
 
-#ifdef MONO_HAS_SEMAPHORES
                /* Avoid posting the pending done event until there are pending finalizers */
-               if (MONO_SEM_TIMEDWAIT (&finalizer_sem, 0) == 0)
+               if (mono_coop_sem_timedwait (&finalizer_sem, 0, MONO_SEM_FLAGS_NONE) == 0) {
                        /* Don't wait again at the start of the loop */
                        wait = FALSE;
-               else
-                       SetEvent (pending_done_event);
-#else
+               } else {
                        SetEvent (pending_done_event);
-#endif
+               }
        }
 
        mono_finalizer_lock ();
        finalizer_thread_exited = TRUE;
-       mono_cond_signal (&exited_cond);
+       mono_coop_cond_signal (&exited_cond);
        mono_finalizer_unlock ();
 
        return 0;
@@ -784,10 +772,8 @@ mono_gc_init_finalizer_thread (void)
 void
 mono_gc_init (void)
 {
-       mono_mutex_init_recursive (&allocator_section);
-
-       mono_mutex_init_recursive (&finalizer_mutex);
-       mono_mutex_init_recursive (&reference_queue_mutex);
+       mono_coop_mutex_init_recursive (&finalizer_mutex);
+       mono_coop_mutex_init_recursive (&reference_queue_mutex);
 
        mono_counters_register ("Minor GC collections", MONO_COUNTER_GC | MONO_COUNTER_UINT, &gc_stats.minor_gc_count);
        mono_counters_register ("Major GC collections", MONO_COUNTER_GC | MONO_COUNTER_UINT, &gc_stats.major_gc_count);
@@ -801,15 +787,11 @@ mono_gc_init (void)
                gc_disabled = TRUE;
                return;
        }
-       
-       finalizer_event = CreateEvent (NULL, FALSE, FALSE, NULL);
-       g_assert (finalizer_event);
+
        pending_done_event = CreateEvent (NULL, TRUE, FALSE, NULL);
        g_assert (pending_done_event);
-       mono_cond_init (&exited_cond, 0);
-#ifdef MONO_HAS_SEMAPHORES
-       MONO_SEM_INIT (&finalizer_sem, 0);
-#endif
+       mono_coop_cond_init (&exited_cond);
+       mono_coop_sem_init (&finalizer_sem, 0);
 
 #ifndef LAZY_GC_THREAD_CREATION
        mono_gc_init_finalizer_thread ();
@@ -844,12 +826,10 @@ mono_gc_cleanup (void)
                                        break;
                                else
                                        timeout = end_ticks - current_ticks;
-                               MONO_PREPARE_BLOCKING;
                                mono_finalizer_lock ();
                                if (!finalizer_thread_exited)
-                                       mono_cond_timedwait_ms (&exited_cond, &finalizer_mutex, timeout);
+                                       mono_coop_cond_timedwait (&exited_cond, &finalizer_mutex, timeout);
                                mono_finalizer_unlock ();
-                               MONO_FINISH_BLOCKING;
                        }
 
                        if (!finalizer_thread_exited) {
@@ -884,6 +864,7 @@ mono_gc_cleanup (void)
 
                                mono_thread_join (GUINT_TO_POINTER (gc_thread->tid));
                        }
+                       g_assert (finalizer_thread_exited);
                }
                gc_thread = NULL;
                mono_gc_base_cleanup ();
@@ -891,9 +872,8 @@ mono_gc_cleanup (void)
 
        mono_reference_queue_cleanup ();
 
-       mono_mutex_destroy (&allocator_section);
-       mono_mutex_destroy (&finalizer_mutex);
-       mono_mutex_destroy (&reference_queue_mutex);
+       mono_coop_mutex_destroy (&finalizer_mutex);
+       mono_coop_mutex_destroy (&reference_queue_mutex);
 }
 
 gboolean
@@ -952,7 +932,7 @@ ref_list_remove_element (RefQueueEntry **prev, RefQueueEntry *element)
                /* Guard if head is changed concurrently. */
                while (*prev != element)
                        prev = &(*prev)->next;
-       } while (prev && InterlockedCompareExchangePointer ((void*)prev, element->next, element) != element);
+       } while (prev && InterlockedCompareExchangePointer ((volatile gpointer *)prev, element->next, element) != element);
 }
 
 static void
@@ -963,7 +943,7 @@ ref_list_push (RefQueueEntry **head, RefQueueEntry *value)
                current = *head;
                value->next = current;
                STORE_STORE_FENCE; /*Must make sure the previous store is visible before the CAS. */
-       } while (InterlockedCompareExchangePointer ((void*)head, value, current) != current);
+       } while (InterlockedCompareExchangePointer ((volatile gpointer *)head, value, current) != current);
 }
 
 static void
@@ -992,7 +972,7 @@ reference_queue_proccess_all (void)
                reference_queue_proccess (queue);
 
 restart:
-       mono_mutex_lock (&reference_queue_mutex);
+       mono_coop_mutex_lock (&reference_queue_mutex);
        for (iter = &ref_queues; *iter;) {
                queue = *iter;
                if (!queue->should_be_deleted) {
@@ -1000,14 +980,14 @@ restart:
                        continue;
                }
                if (queue->queue) {
-                       mono_mutex_unlock (&reference_queue_mutex);
+                       mono_coop_mutex_unlock (&reference_queue_mutex);
                        reference_queue_proccess (queue);
                        goto restart;
                }
                *iter = queue->next;
                g_free (queue);
        }
-       mono_mutex_unlock (&reference_queue_mutex);
+       mono_coop_mutex_unlock (&reference_queue_mutex);
 }
 
 static void
@@ -1061,10 +1041,10 @@ mono_gc_reference_queue_new (mono_reference_queue_callback callback)
        MonoReferenceQueue *res = g_new0 (MonoReferenceQueue, 1);
        res->callback = callback;
 
-       mono_mutex_lock (&reference_queue_mutex);
+       mono_coop_mutex_lock (&reference_queue_mutex);
        res->next = ref_queues;
        ref_queues = res;
-       mono_mutex_unlock (&reference_queue_mutex);
+       mono_coop_mutex_unlock (&reference_queue_mutex);
 
        return res;
 }
diff --git a/mono/metadata/handle-private.h b/mono/metadata/handle-private.h
new file mode 100644 (file)
index 0000000..de52a33
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef __MONO_HANDLE_PRIVATE_H__
+#define __MONO_HANDLE_PRIVATE_H__
+
+#include <mono/metadata/handle.h>
+
+MonoHandle
+mono_handle_arena_new (MonoHandleArena *arena, MonoObject *obj);
+
+MonoHandle
+mono_handle_arena_elevate (MonoHandleArena *arena, MonoHandle handle);
+
+void
+mono_handle_arena_stack_push (MonoHandleArena **arena_stack, MonoHandleArena *arena, gsize nb_handles);
+
+void
+mono_handle_arena_stack_pop (MonoHandleArena **arena_stack, MonoHandleArena *arena, gsize nb_handles);
+
+void
+mono_handle_arena_initialize (MonoHandleArena **arena_stack);
+
+void
+mono_handle_arena_deinitialize (MonoHandleArena **arena_stack);
+
+#endif/*__MONO_HANDLE_PRIVATE_H__*/
diff --git a/mono/metadata/handle.c b/mono/metadata/handle.c
new file mode 100644 (file)
index 0000000..10c573a
--- /dev/null
@@ -0,0 +1,227 @@
+/*
+ * handle.c: Handle to object in native code
+ *
+ * Authors:
+ *  - Ludovic Henry <ludovic@xamarin.com>
+ *
+ * Copyright 2015 Xamarin, Inc. (www.xamarin.com)
+ */
+
+#include <config.h>
+#include <glib.h>
+
+#include <mono/metadata/handle.h>
+#include <mono/metadata/handle-private.h>
+#include <mono/metadata/object-internals.h>
+#include <mono/metadata/gc-internals.h>
+#include <mono/utils/atomic.h>
+#include <mono/utils/mono-lazy-init.h>
+
+#define HANDLES_PER_CHUNK (16 - 3)
+
+typedef struct _MonoHandleArenaChunk MonoHandleArenaChunk;
+struct _MonoHandleArenaChunk {
+       MonoHandleArenaChunk *next;
+       gsize handles_capacity;
+       gsize handles_size;
+       MonoHandleStorage handles [MONO_ZERO_LEN_ARRAY];
+};
+
+struct _MonoHandleArena {
+       MonoHandleArenaChunk *chunk;
+       MonoHandleArenaChunk *chunk_last;
+       MonoHandleArena *prev;
+};
+
+static mono_lazy_init_t arena_status = MONO_LAZY_INIT_STATUS_NOT_INITIALIZED;
+
+#ifdef HAVE_SGEN_GC
+static MonoGCDescriptor arena_desc = MONO_GC_DESCRIPTOR_NULL;
+#endif
+
+static MonoHandleArenaChunk *chunk_free_list = NULL;
+
+static inline MonoHandleArenaChunk*
+chunk_alloc (void)
+{
+       MonoHandleArenaChunk *old, *new;
+
+       do {
+               old = chunk_free_list;
+               if (!old) {
+                       MonoHandleArenaChunk *chunk;
+
+                       chunk = g_malloc0 (sizeof (MonoHandleArenaChunk) + sizeof (MonoHandleStorage) * (HANDLES_PER_CHUNK - MONO_ZERO_LEN_ARRAY));
+                       chunk->handles_capacity = HANDLES_PER_CHUNK;
+
+                       return chunk;
+               }
+
+               new = old->next;
+       } while (InterlockedCompareExchangePointer ((gpointer*) &chunk_free_list, new, old) != old);
+
+       memset (old, 0, sizeof (MonoHandleArenaChunk));
+       return old;
+}
+
+static inline void
+chunk_free (MonoHandleArenaChunk *chunk)
+{
+       do {
+               chunk->next = chunk_free_list;
+       } while (InterlockedCompareExchangePointer ((gpointer*) &chunk_free_list, chunk, chunk->next) != chunk->next);
+}
+
+static MonoHandle
+handle_new (MonoHandleArena *arena, MonoObject *obj)
+{
+       MonoHandleArenaChunk *chunk;
+
+       g_assert (arena->chunk);
+       g_assert (arena->chunk_last);
+
+       chunk = arena->chunk_last;
+
+       if (chunk->handles_size < chunk->handles_capacity) {
+               chunk->handles [chunk->handles_size].obj = obj;
+               chunk->handles_size += 1;
+
+               return &chunk->handles [chunk->handles_size - 1];
+       }
+
+       chunk = chunk->next = chunk_alloc ();
+
+       chunk->handles [0].obj = obj;
+       chunk->handles_size = 1;
+
+       arena->chunk_last = chunk;
+
+       return &chunk->handles [0];
+}
+
+MonoHandle
+mono_handle_arena_new (MonoHandleArena *arena, MonoObject *obj)
+{
+       g_assert (arena);
+       return handle_new (arena, obj);
+}
+
+MonoHandle
+mono_handle_new (MonoObject *obj)
+{
+       /* TODO: finish implementation by placing an arena somewhere
+        * in the current thread */
+       g_assert_not_reached ();
+       MonoHandleArena *arena = NULL;
+       return mono_handle_arena_new (arena, obj);
+}
+
+/*
+ * Elevate the handle to the parent arena
+ */
+MonoHandle
+mono_handle_arena_elevate (MonoHandleArena *arena, MonoHandle handle)
+{
+       g_assert (handle);
+       g_assert (arena);
+       g_assert (arena->prev);
+
+       return handle_new (arena->prev, handle->obj);
+}
+
+MonoHandle
+mono_handle_elevate (MonoHandle handle)
+{
+       /* TODO: finish implementation by placing an arena somewhere
+        * in the current thread */
+       g_assert_not_reached ();
+       MonoHandleArena *arena = NULL;
+       return mono_handle_arena_elevate (arena, handle);
+}
+
+gsize
+mono_handle_arena_size (gsize nb_handles)
+{
+       g_assert (nb_handles > 0);
+       return sizeof (MonoHandleArena) + sizeof (MonoHandleArenaChunk) + sizeof (MonoHandle) * (MAX (nb_handles, HANDLES_PER_CHUNK) - MONO_ZERO_LEN_ARRAY);
+}
+
+void
+mono_handle_arena_stack_push(MonoHandleArena **arena_stack, MonoHandleArena *arena, gsize nb_handles)
+{
+       g_assert (arena_stack);
+       g_assert (arena);
+
+       arena->prev = *arena_stack;
+       arena->chunk = arena->chunk_last = (MonoHandleArenaChunk*) (((char*) arena) + sizeof (MonoHandleArena));
+
+       arena->chunk->next = NULL;
+       arena->chunk->handles_capacity = MAX (nb_handles, HANDLES_PER_CHUNK);
+       arena->chunk->handles_size = 0;
+       memset (&arena->chunk->handles [0], 0, sizeof (MonoHandle) * arena->chunk->handles_capacity);
+
+       *arena_stack = arena;
+}
+
+void
+mono_handle_arena_stack_pop(MonoHandleArena **arena_stack, MonoHandleArena *arena, gsize nb_handles)
+{
+       MonoHandleArenaChunk *chunk, *next;
+
+       g_assert (arena);
+       g_assert (arena->chunk);
+       g_assert (arena->chunk_last);
+       g_assert (arena_stack);
+
+       *arena_stack = arena->prev;
+
+       for (chunk = arena->chunk; chunk; chunk = next) {
+               next = chunk->next;
+               memset (&chunk->handles [0], 0, sizeof (MonoHandle) * chunk->handles_capacity);
+               if (chunk != arena->chunk)
+                       chunk_free (chunk);
+       }
+}
+
+static void
+arena_scan (gpointer addr, MonoGCMarkFunc mark_func, gpointer gc_data)
+{
+       MonoHandleArena *arena;
+       MonoHandleArenaChunk *chunk;
+       int i;
+
+       for (arena = *(MonoHandleArena**) addr; arena; arena = arena->prev) {
+               for (chunk = arena->chunk; chunk; chunk = chunk->next) {
+                       for (i = 0; i < chunk->handles_size; ++i) {
+                               if (chunk->handles [i].obj != NULL)
+                                       mark_func (&chunk->handles [i].obj, gc_data);
+                       }
+               }
+       }
+}
+
+static void
+initialize (void)
+{
+#ifdef HAVE_SGEN_GC
+       arena_desc = mono_gc_make_root_descr_user (arena_scan);
+#endif
+}
+
+void
+mono_handle_arena_initialize (MonoHandleArena **arena_stack)
+{
+#ifdef HAVE_SGEN_GC
+       mono_lazy_initialize (&arena_status, initialize);
+       mono_gc_register_root ((char*) arena_stack, sizeof (MonoHandleArena*), arena_desc, MONO_ROOT_SOURCE_HANDLE, "runtime threads handle arena");
+#endif
+}
+
+void
+mono_handle_arena_deinitialize (MonoHandleArena **arena_stack)
+{
+#ifdef HAVE_SGEN_GC
+       mono_gc_deregister_root ((char*) arena_stack);
+#endif
+}
+
diff --git a/mono/metadata/handle.h b/mono/metadata/handle.h
new file mode 100644 (file)
index 0000000..bf94296
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * handle.h: Handle to object in native code
+ *
+ * Authors:
+ *  - Ludovic Henry <ludovic@xamarin.com>
+ *
+ * Copyright 2015 Xamarin, Inc. (www.xamarin.com)
+ */
+
+#ifndef __MONO_HANDLE_H__
+#define __MONO_HANDLE_H__
+
+#include <config.h>
+#include <glib.h>
+
+#include "object.h"
+#include "class.h"
+#include "class-internals.h"
+#include "threads-types.h"
+
+#include "mono/utils/mono-threads-coop.h"
+
+G_BEGIN_DECLS
+
+typedef struct _MonoHandleStorage MonoHandleStorage;
+typedef MonoHandleStorage* MonoHandle;
+
+/*
+ * DO NOT ACCESS DIRECTLY
+ * USE mono_handle_obj BELOW TO ACCESS OBJ
+ *
+ * The field obj is not private as there is no way to do that
+ * in C, but using a C++ template would simplify that a lot
+ */
+struct _MonoHandleStorage {
+       MonoObject *obj;
+};
+
+#ifndef CHECKED_BUILD
+
+#define mono_handle_obj(handle) ((handle)->obj)
+
+#define mono_handle_assign(handle,rawptr) do { (handle)->obj = (rawptr); } while(0)
+
+#else
+
+static inline void
+mono_handle_check_in_critical_section ()
+{
+       MONO_REQ_GC_UNSAFE_MODE;
+}
+
+#define mono_handle_obj(handle) (mono_handle_check_in_critical_section (), (handle)->obj)
+
+#define mono_handle_assign(handle,rawptr) do { mono_handle_check_in_critical_section (); (handle)->obj = (rawptr); } while (0)
+
+#endif
+
+static inline MonoClass*
+mono_handle_class (MonoHandle handle)
+{
+       return handle->obj->vtable->klass;
+}
+
+static inline MonoDomain*
+mono_handle_domain (MonoHandle handle)
+{
+       return handle->obj->vtable->domain;
+}
+
+#define MONO_HANDLE_TYPE_DECL(type)      typedef struct { type *obj; } type ## HandleStorage ; \
+       typedef type ## HandleStorage * type ## Handle
+#define MONO_HANDLE_TYPE(type)           type ## Handle
+#define MONO_HANDLE_NEW(type,obj)        ((type ## Handle) mono_handle_new ((MonoObject*) (obj)))
+#define MONO_HANDLE_ELEVATE(type,handle) ((type ## Handle) mono_handle_elevate ((MonoObject*) (handle)->obj))
+
+#define MONO_HANDLE_ASSIGN(handle,rawptr)      \
+       do {    \
+               mono_handle_assign ((handle), (rawptr));        \
+       } while (0)
+
+#define MONO_HANDLE_SETREF(handle,fieldname,value)                     \
+       do {                                                            \
+               MonoHandle __value = (MonoHandle) (value);              \
+               MONO_PREPARE_GC_CRITICAL_REGION;                                        \
+               MONO_OBJECT_SETREF (mono_handle_obj ((handle)), fieldname, mono_handle_obj (__value)); \
+               MONO_FINISH_GC_CRITICAL_REGION;                                 \
+       } while (0)
+
+#define MONO_HANDLE_SET(handle,fieldname,value)        \
+       do {    \
+               MONO_PREPARE_GC_CRITICAL_REGION;        \
+               mono_handle_obj ((handle))->fieldname = (value);        \
+               MONO_FINISH_GC_CRITICAL_REGION; \
+       } while (0)
+
+#define MONO_HANDLE_ARRAY_SETREF(handle,index,value)                   \
+       do {                                                            \
+               MonoHandle __value = (MonoHandle) (value);              \
+               MONO_PREPARE_GC_CRITICAL_REGION;                                        \
+               mono_array_setref (mono_handle_obj ((handle)), (index), mono_handle_obj (__value)); \
+               MONO_FINISH_GC_CRITICAL_REGION;                                 \
+       } while (0)
+
+#define MONO_HANDLE_ARRAY_SET(handle,type,index,value) \
+       do {    \
+               MONO_PREPARE_GC_CRITICAL_REGION;        \
+               mono_array_set (mono_handle_obj ((handle)), (type), (index), (value));  \
+               MONO_FINISH_GC_CRITICAL_REGION; \
+       } while (0)
+
+/* handle arena specific functions */
+
+typedef struct _MonoHandleArena MonoHandleArena;
+
+gsize
+mono_handle_arena_size (gsize nb_handles);
+
+MonoHandle
+mono_handle_new (MonoObject *rawptr);
+
+MonoHandle
+mono_handle_elevate (MonoHandle handle);
+
+/* Some common handle types */
+
+MONO_HANDLE_TYPE_DECL (MonoArray);
+MONO_HANDLE_TYPE_DECL (MonoString);
+
+G_END_DECLS
+
+#endif /* __MONO_HANDLE_H__ */
index 890f15b877ab524bf88d09416067cea8070e8a65..24e91c83ceacc0e36f14890b3657ebf4bae65495 100644 (file)
@@ -46,7 +46,6 @@ ICALL(COMPROX_2, "FindProxy", ves_icall_Mono_Interop_ComInteropProxy_FindProxy)
 ICALL_TYPE(RUNTIME, "Mono.Runtime", RUNTIME_1)
 ICALL(RUNTIME_1, "GetDisplayName", ves_icall_Mono_Runtime_GetDisplayName)
 ICALL(RUNTIME_12, "GetNativeStackTrace", ves_icall_Mono_Runtime_GetNativeStackTrace)
-ICALL(RUNTIME_13, "SetGCAllowSynchronousMajor", ves_icall_Mono_Runtime_SetGCAllowSynchronousMajor)
 
 #ifndef PLATFORM_RO_FS
 ICALL_TYPE(KPAIR, "Mono.Security.Cryptography.KeyPairPersistence", KPAIR_1)
@@ -229,6 +228,7 @@ ICALL_TYPE(ENV, "System.Environment", ENV_1)
 ICALL(ENV_1, "Exit", ves_icall_System_Environment_Exit)
 ICALL(ENV_2, "GetCommandLineArgs", mono_runtime_get_main_args)
 ICALL(ENV_3, "GetEnvironmentVariableNames", ves_icall_System_Environment_GetEnvironmentVariableNames)
+ICALL(ENV_31, "GetIs64BitOperatingSystem", ves_icall_System_Environment_GetIs64BitOperatingSystem)
 ICALL(ENV_4, "GetLogicalDrivesInternal", ves_icall_System_Environment_GetLogicalDrives )
 ICALL(ENV_5, "GetMachineConfigPath", ves_icall_System_Configuration_DefaultConfig_get_machine_config_path)
 ICALL(ENV_51, "GetNewLine", ves_icall_System_Environment_get_NewLine)
@@ -325,6 +325,7 @@ ICALL(MONOIO_3, "CreateDirectory(string,System.IO.MonoIOError&)", ves_icall_Syst
 ICALL(MONOIO_4, "CreatePipe", ves_icall_System_IO_MonoIO_CreatePipe)
 ICALL(MONOIO_5, "DeleteFile(string,System.IO.MonoIOError&)", ves_icall_System_IO_MonoIO_DeleteFile)
 #endif /* !PLATFORM_RO_FS */
+ICALL(MONOIO_38, "DumpHandles", ves_icall_System_IO_MonoIO_DumpHandles)
 ICALL(MONOIO_34, "DuplicateHandle", ves_icall_System_IO_MonoIO_DuplicateHandle)
 ICALL(MONOIO_37, "FindClose", ves_icall_System_IO_MonoIO_FindClose)
 ICALL(MONOIO_35, "FindFirst", ves_icall_System_IO_MonoIO_FindFirst)
@@ -441,6 +442,7 @@ ICALL(SOCK_17, "Send_internal(intptr,byte[],int,int,System.Net.Sockets.SocketFla
 ICALL(SOCK_18, "SetSocketOption_internal(intptr,System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName,object,byte[],int,int&)", ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal)
 ICALL(SOCK_19, "Shutdown_internal(intptr,System.Net.Sockets.SocketShutdown,int&)", ves_icall_System_Net_Sockets_Socket_Shutdown_internal)
 ICALL(SOCK_20, "Socket_internal(System.Net.Sockets.AddressFamily,System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,int&)", ves_icall_System_Net_Sockets_Socket_Socket_internal)
+ICALL(SOCK_20a, "SupportsPortReuse", ves_icall_System_Net_Sockets_Socket_SupportPortReuse)
 ICALL(SOCK_21a, "cancel_blocking_socket_operation", icall_cancel_blocking_socket_operation)
 
 ICALL_TYPE(SOCKEX, "System.Net.Sockets.SocketException", SOCKEX_1)
@@ -589,17 +591,10 @@ ICALL(MFIELD_6, "ResolveType", ves_icall_MonoField_ResolveType)
 ICALL(MFIELD_4, "SetValueInternal", ves_icall_MonoField_SetValueInternal)
 ICALL(MFIELD_7, "get_core_clr_security_level", ves_icall_MonoField_get_core_clr_security_level)
 
-ICALL_TYPE(MGENCM, "System.Reflection.MonoGenericCMethod", MGENCM_1)
-ICALL(MGENCM_1, "get_ReflectedType", ves_icall_MonoGenericMethod_get_ReflectedType)
-
 ICALL_TYPE(MGENCL, "System.Reflection.MonoGenericClass", MGENCL_5)
 ICALL(MGENCL_5, "initialize", mono_reflection_generic_class_initialize)
 ICALL(MGENCL_6, "register_with_runtime", mono_reflection_register_with_runtime)
 
-/* note this is the same as above: unify */
-ICALL_TYPE(MGENM, "System.Reflection.MonoGenericMethod", MGENM_1)
-ICALL(MGENM_1, "get_ReflectedType", ves_icall_MonoGenericMethod_get_ReflectedType)
-
 ICALL_TYPE(MMETH, "System.Reflection.MonoMethod", MMETH_2)
 ICALL(MMETH_2, "GetGenericArguments", ves_icall_MonoMethod_GetGenericArguments)
 ICALL(MMETH_3, "GetGenericMethodDefinition_impl", ves_icall_MonoMethod_GetGenericMethodDefinition)
@@ -911,6 +906,7 @@ ICALL(THREAD_55, "GetAbortExceptionState", ves_icall_System_Threading_Thread_Get
 ICALL(THREAD_7, "GetDomainID", ves_icall_System_Threading_Thread_GetDomainID)
 ICALL(THREAD_8, "GetName_internal(System.Threading.InternalThread)", ves_icall_System_Threading_Thread_GetName_internal)
 ICALL(THREAD_57, "GetPriorityNative", ves_icall_System_Threading_Thread_GetPriority)
+ICALL(THREAD_59, "GetStackTraces", ves_icall_System_Threading_Thread_GetStackTraces)
 ICALL(THREAD_11, "GetState(System.Threading.InternalThread)", ves_icall_System_Threading_Thread_GetState)
 ICALL(THREAD_53, "InterruptInternal", ves_icall_System_Threading_Thread_Interrupt_internal)
 ICALL(THREAD_12, "JoinInternal", ves_icall_System_Threading_Thread_Join_internal)
index e937e437c0400e44f43100b761692d19705b37fa..cc0d7c957fe09e9e73df56fe94edbd18a5d4ab67 100644 (file)
@@ -6,10 +6,11 @@
  *   Paolo Molaro (lupus@ximian.com)
  *      Patrik Torstensson (patrik.torstensson@labs2.com)
  *   Marek Safar (marek.safar@gmail.com)
+ *   Aleksey Kliger (aleksey@xamarin.com)
  *
  * Copyright 2001-2003 Ximian, Inc (http://www.ximian.com)
  * Copyright 2004-2009 Novell, Inc (http://www.novell.com)
- * Copyright 2011-2014 Xamarin Inc (http://www.xamarin.com).
+ * Copyright 2011-2015 Xamarin Inc (http://www.xamarin.com).
  */
 
 #include <config.h>
@@ -53,8 +54,9 @@
 #include <mono/metadata/domain-internals.h>
 #include <mono/metadata/metadata-internals.h>
 #include <mono/metadata/class-internals.h>
+#include <mono/metadata/reflection-internals.h>
 #include <mono/metadata/marshal.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/mono-gc.h>
 #include <mono/metadata/rand.h>
 #include <mono/metadata/sysmath.h>
@@ -88,7 +90,7 @@
 #include <mono/utils/mono-io-portability.h>
 #include <mono/utils/mono-digest.h>
 #include <mono/utils/bsearch.h>
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-os-mutex.h>
 #include <mono/utils/mono-threads.h>
 
 #if defined (HOST_WIN32)
 #include "decimal-ms.h"
 #include "number-ms.h"
 
+#if !defined(HOST_WIN32) && defined(HAVE_SYS_UTSNAME_H)
+#include <sys/utsname.h>
+#endif
+
 extern MonoString* ves_icall_System_Environment_GetOSVersionString (void);
 
 ICALL_EXPORT MonoReflectionAssembly* ves_icall_System_Reflection_Assembly_GetCallingAssembly (void);
@@ -133,7 +139,7 @@ ves_icall_System_Array_GetValueImpl (MonoArray *arr, guint32 pos)
        if (ac->element_class->valuetype)
                return mono_value_box (arr->obj.vtable->domain, ac->element_class, ea);
        else
-               return *ea;
+               return (MonoObject *)*ea;
 }
 
 ICALL_EXPORT MonoObject *
@@ -543,7 +549,7 @@ ves_icall_System_Array_CreateInstanceImpl (MonoReflectionType *type, MonoArray *
 
        aklass = mono_bounded_array_class_get (klass, mono_array_length (lengths), bounded);
 
-       sizes = alloca (aklass->rank * sizeof(intptr_t) * 2);
+       sizes = (uintptr_t *)alloca (aklass->rank * sizeof(intptr_t) * 2);
        for (i = 0; i < aklass->rank; ++i) {
                sizes [i] = mono_array_get (lengths, guint32, i);
                if (bounds)
@@ -591,7 +597,7 @@ ves_icall_System_Array_CreateInstanceImpl64 (MonoReflectionType *type, MonoArray
 
        aklass = mono_bounded_array_class_get (klass, mono_array_length (lengths), bounded);
 
-       sizes = alloca (aklass->rank * sizeof(intptr_t) * 2);
+       sizes = (uintptr_t *)alloca (aklass->rank * sizeof(intptr_t) * 2);
        for (i = 0; i < aklass->rank; ++i) {
                sizes [i] = mono_array_get (lengths, guint64, i);
                if (bounds)
@@ -769,7 +775,7 @@ ves_icall_System_Array_SetGenericValueImpl (MonoArray *arr, guint32 pos, gpointe
 
        if (MONO_TYPE_IS_REFERENCE (&ec->byval_arg)) {
                g_assert (esize == sizeof (gpointer));
-               mono_gc_wbarrier_generic_store (ea, *(gpointer*)value);
+               mono_gc_wbarrier_generic_store (ea, *(MonoObject **)value);
        } else {
                g_assert (ec->inited);
                g_assert (esize == mono_class_value_size (ec, NULL));
@@ -877,6 +883,9 @@ ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor (Mo
        klass = mono_class_from_mono_type (handle);
        MONO_CHECK_ARG (handle, klass,);
 
+       if (klass->generic_container)
+               return;
+
        vtable = mono_class_vtable_full (mono_domain_get (), klass, TRUE);
 
        /* This will call the type constructor */
@@ -1157,10 +1166,10 @@ ves_icall_ModuleBuilder_RegisterToken (MonoReflectionModuleBuilder *mb, MonoObje
 ICALL_EXPORT MonoObject*
 ves_icall_ModuleBuilder_GetRegisteredToken (MonoReflectionModuleBuilder *mb, guint32 token)
 {
-       gpointer obj;
+       MonoObject *obj;
 
        mono_loader_lock ();
-       obj = mono_g_hash_table_lookup (mb->dynamic_image->tokens, GUINT_TO_POINTER (token));
+       obj = (MonoObject *)mono_g_hash_table_lookup (mb->dynamic_image->tokens, GUINT_TO_POINTER (token));
        mono_loader_unlock ();
 
        return obj;
@@ -1169,7 +1178,7 @@ ves_icall_ModuleBuilder_GetRegisteredToken (MonoReflectionModuleBuilder *mb, gui
 static gboolean
 get_caller (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer data)
 {
-       MonoMethod **dest = data;
+       MonoMethod **dest = (MonoMethod **)data;
 
        /* skip unmanaged frames */
        if (!managed)
@@ -1189,7 +1198,7 @@ get_caller (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer dat
 static gboolean
 get_executing (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer data)
 {
-       MonoMethod **dest = data;
+       MonoMethod **dest = (MonoMethod **)data;
 
        /* skip unmanaged frames */
        if (!managed)
@@ -1207,7 +1216,7 @@ get_executing (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer
 static gboolean
 get_caller_no_reflection (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer data)
 {
-       MonoMethod **dest = data;
+       MonoMethod **dest = (MonoMethod **)data;
 
        /* skip unmanaged frames */
        if (!managed)
@@ -1231,24 +1240,14 @@ get_caller_no_reflection (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed
 }
 
 static MonoReflectionType *
-type_from_name (const char *str, MonoBoolean ignoreCase)
+type_from_parsed_name (MonoTypeNameParse *info, MonoBoolean ignoreCase)
 {
        MonoMethod *m, *dest;
 
        MonoType *type = NULL;
        MonoAssembly *assembly = NULL;
-       MonoTypeNameParse info;
-       char *temp_str = g_strdup (str);
        gboolean type_resolve = FALSE;
 
-       /* mono_reflection_parse_type() mangles the string */
-       if (!mono_reflection_parse_type (temp_str, &info)) {
-               mono_reflection_free_type_info (&info);
-               g_free (temp_str);
-               return NULL;
-       }
-
-
        /*
         * We must compute the calling assembly as type loading must happen under a metadata context.
         * For example. The main assembly is a.exe and Type.GetType is called from dir/b.dll. Without
@@ -1276,26 +1275,23 @@ type_from_name (const char *str, MonoBoolean ignoreCase)
                g_warning (G_STRLOC);
        }
 
-       if (info.assembly.name)
-               assembly = mono_assembly_load (&info.assembly, assembly ? assembly->basedir : NULL, NULL);
+       if (info->assembly.name)
+               assembly = mono_assembly_load (&info->assembly, assembly ? assembly->basedir : NULL, NULL);
 
 
        if (assembly) {
                /* When loading from the current assembly, AppDomain.TypeResolve will not be called yet */
-               type = mono_reflection_get_type (assembly->image, &info, ignoreCase, &type_resolve);
+               type = mono_reflection_get_type (assembly->image, info, ignoreCase, &type_resolve);
        }
 
-       if (!info.assembly.name && !type) /* try mscorlib */
-               type = mono_reflection_get_type (NULL, &info, ignoreCase, &type_resolve);
+       if (!info->assembly.name && !type) /* try mscorlib */
+               type = mono_reflection_get_type (NULL, info, ignoreCase, &type_resolve);
 
        if (assembly && !type && type_resolve) {
                type_resolve = FALSE; /* This will invoke TypeResolve if not done in the first 'if' */
-               type = mono_reflection_get_type (assembly->image, &info, ignoreCase, &type_resolve);
+               type = mono_reflection_get_type (assembly->image, info, ignoreCase, &type_resolve);
        }
 
-       mono_reflection_free_type_info (&info);
-       g_free (temp_str);
-
        if (!type) 
                return NULL;
 
@@ -1307,9 +1303,22 @@ MonoReflectionType *
 mono_type_get (const char *str)
 {
        char *copy = g_strdup (str);
-       MonoReflectionType *type = type_from_name (copy, FALSE);
+       MonoTypeNameParse info;
+       MonoReflectionType *type;
+       gboolean parsedOk;
+
+       parsedOk = mono_reflection_parse_type(copy, &info);
+       if (!parsedOk) {
+               mono_reflection_free_type_info (&info);
+               g_free(copy);
+               return NULL;
+       }
+
+       type = type_from_parsed_name (&info, FALSE);
+
+       mono_reflection_free_type_info (&info);
+       g_free(copy);
 
-       g_free (copy);
        return type;
 }
 #endif
@@ -1320,10 +1329,27 @@ ves_icall_type_from_name (MonoString *name,
                          MonoBoolean ignoreCase)
 {
        char *str = mono_string_to_utf8 (name);
+       MonoTypeNameParse info;
        MonoReflectionType *type;
+       gboolean parsedOk;
 
-       type = type_from_name (str, ignoreCase);
+       parsedOk = mono_reflection_parse_type (str, &info);
+
+       /* mono_reflection_parse_type() mangles the string */
+       if (!parsedOk) {
+               mono_reflection_free_type_info (&info);
+               g_free (str);
+               if (throwOnError) {
+                       mono_set_pending_exception(mono_get_exception_argument("typeName", "failed parse"));
+               }
+               return NULL;
+       }
+
+       type = type_from_parsed_name (&info, ignoreCase);
+
+       mono_reflection_free_type_info (&info);
        g_free (str);
+
        if (type == NULL){
                MonoException *e = NULL;
                
@@ -1762,9 +1788,9 @@ ves_icall_MonoField_SetValueInternal (MonoReflectionField *field, MonoObject *ob
                                 */
                                nullable = mono_object_new (mono_domain_get (), nklass);
 
-                               mono_nullable_init (mono_object_unbox (nullable), value, nklass);
+                               mono_nullable_init ((guint8 *)mono_object_unbox (nullable), value, nklass);
 
-                               v = mono_object_unbox (nullable);
+                               v = (gchar *)mono_object_unbox (nullable);
                        }
                        else 
                                if (gclass->container_class->valuetype && (v != NULL))
@@ -1905,14 +1931,6 @@ ves_icall_MonoField_ResolveType (MonoReflectionField *ref_field)
        return mono_type_get_object (mono_object_domain (ref_field), type);
 }
 
-ICALL_EXPORT MonoReflectionType*
-ves_icall_MonoGenericMethod_get_ReflectedType (MonoReflectionGenericMethod *rmethod)
-{
-       MonoMethod *method = rmethod->method.method;
-
-       return mono_type_get_object (mono_object_domain (rmethod), &method->klass->byval_arg);
-}
-
 /* From MonoProperty.cs */
 typedef enum {
        PInfo_Attributes = 1,
@@ -2012,8 +2030,8 @@ typedef struct {
 static void
 fill_iface_array (gpointer key, gpointer value, gpointer user_data)
 {
-       FillIfaceArrayData *data = user_data;
-       MonoClass *ic = key;
+       FillIfaceArrayData *data = (FillIfaceArrayData *)user_data;
+       MonoClass *ic = (MonoClass *)key;
        MonoType *ret = &ic->byval_arg, *inflated = NULL;
 
        if (!mono_error_ok (data->error))
@@ -2043,19 +2061,19 @@ ICALL_EXPORT MonoArray*
 ves_icall_Type_GetInterfaces (MonoReflectionType* type)
 {
        MonoError error;
-       MonoClass *class = mono_class_from_mono_type (type->type);
+       MonoClass *klass = mono_class_from_mono_type (type->type);
        MonoClass *parent;
        FillIfaceArrayData data = { 0 };
        int len;
 
        GHashTable *iface_hash = g_hash_table_new (get_interfaces_hash, NULL);
 
-       if (class->generic_class && class->generic_class->context.class_inst->is_open) {
-               data.context = mono_class_get_context (class);
-               class = class->generic_class->container_class;
+       if (klass->generic_class && klass->generic_class->context.class_inst->is_open) {
+               data.context = mono_class_get_context (klass);
+               klass = klass->generic_class->container_class;
        }
 
-       for (parent = class; parent; parent = parent->parent) {
+       for (parent = klass; parent; parent = parent->parent) {
                mono_class_setup_interfaces (parent, &error);
                if (!mono_error_ok (&error))
                        goto fail;
@@ -2093,7 +2111,7 @@ ICALL_EXPORT void
 ves_icall_Type_GetInterfaceMapData (MonoReflectionType *type, MonoReflectionType *iface, MonoArray **targets, MonoArray **methods)
 {
        gboolean variance_used;
-       MonoClass *class = mono_class_from_mono_type (type->type);
+       MonoClass *klass = mono_class_from_mono_type (type->type);
        MonoClass *iclass = mono_class_from_mono_type (iface->type);
        MonoReflectionMethod *member;
        MonoMethod* method;
@@ -2101,12 +2119,12 @@ ves_icall_Type_GetInterfaceMapData (MonoReflectionType *type, MonoReflectionType
        int i = 0, len, ioffset;
        MonoDomain *domain;
 
-       mono_class_init_or_throw (class);
+       mono_class_init_or_throw (klass);
        mono_class_init_or_throw (iclass);
 
-       mono_class_setup_vtable (class);
+       mono_class_setup_vtable (klass);
 
-       ioffset = mono_class_interface_offset_with_variance (class, iclass, &variance_used);
+       ioffset = mono_class_interface_offset_with_variance (klass, iclass, &variance_used);
        if (ioffset == -1)
                return;
 
@@ -2118,7 +2136,7 @@ ves_icall_Type_GetInterfaceMapData (MonoReflectionType *type, MonoReflectionType
        while ((method = mono_class_get_methods (iclass, &iter))) {
                member = mono_method_get_object (domain, method, iclass);
                mono_array_setref (*methods, i, member);
-               member = mono_method_get_object (domain, class->vtable [i + ioffset], class);
+               member = mono_method_get_object (domain, klass->vtable [i + ioffset], klass);
                mono_array_setref (*targets, i, member);
                
                i ++;
@@ -2143,22 +2161,22 @@ ves_icall_Type_GetPacking (MonoReflectionType *type, guint32 *packing, guint32 *
 ICALL_EXPORT MonoReflectionType*
 ves_icall_MonoType_GetElementType (MonoReflectionType *type)
 {
-       MonoClass *class;
+       MonoClass *klass;
 
        if (!type->type->byref && type->type->type == MONO_TYPE_SZARRAY)
                return mono_type_get_object (mono_object_domain (type), &type->type->data.klass->byval_arg);
 
-       class = mono_class_from_mono_type (type->type);
-       mono_class_init_or_throw (class);
+       klass = mono_class_from_mono_type (type->type);
+       mono_class_init_or_throw (klass);
 
        // GetElementType should only return a type for:
        // Array Pointer PassedByRef
        if (type->type->byref)
-               return mono_type_get_object (mono_object_domain (type), &class->byval_arg);
-       else if (class->element_class && MONO_CLASS_IS_ARRAY (class))
-               return mono_type_get_object (mono_object_domain (type), &class->element_class->byval_arg);
-       else if (class->element_class && type->type->type == MONO_TYPE_PTR)
-               return mono_type_get_object (mono_object_domain (type), &class->element_class->byval_arg);
+               return mono_type_get_object (mono_object_domain (type), &klass->byval_arg);
+       else if (klass->element_class && MONO_CLASS_IS_ARRAY (klass))
+               return mono_type_get_object (mono_object_domain (type), &klass->element_class->byval_arg);
+       else if (klass->element_class && type->type->type == MONO_TYPE_PTR)
+               return mono_type_get_object (mono_object_domain (type), &klass->element_class->byval_arg);
        else
                return NULL;
 }
@@ -2169,8 +2187,8 @@ ves_icall_get_type_parent (MonoReflectionType *type)
        if (type->type->byref)
                return NULL;
 
-       MonoClass *class = mono_class_from_mono_type (type->type);
-       return class->parent ? mono_type_get_object (mono_object_domain (type), &class->parent->byval_arg): NULL;
+       MonoClass *klass = mono_class_from_mono_type (type->type);
+       return klass->parent ? mono_type_get_object (mono_object_domain (type), &klass->parent->byval_arg): NULL;
 }
 
 ICALL_EXPORT MonoBoolean
@@ -2203,54 +2221,54 @@ ves_icall_type_iscomobject (MonoReflectionType *type)
 ICALL_EXPORT MonoReflectionModule*
 ves_icall_MonoType_get_Module (MonoReflectionType *type)
 {
-       MonoClass *class = mono_class_from_mono_type (type->type);
-       return mono_module_get_object (mono_object_domain (type), class->image);
+       MonoClass *klass = mono_class_from_mono_type (type->type);
+       return mono_module_get_object (mono_object_domain (type), klass->image);
 }
 
 ICALL_EXPORT MonoReflectionAssembly*
 ves_icall_MonoType_get_Assembly (MonoReflectionType *type)
 {
        MonoDomain *domain = mono_domain_get (); 
-       MonoClass *class = mono_class_from_mono_type (type->type);
-       return mono_assembly_get_object (domain, class->image->assembly);
+       MonoClass *klass = mono_class_from_mono_type (type->type);
+       return mono_assembly_get_object (domain, klass->image->assembly);
 }
 
 ICALL_EXPORT MonoReflectionType*
 ves_icall_MonoType_get_DeclaringType (MonoReflectionType *type)
 {
        MonoDomain *domain = mono_domain_get ();
-       MonoClass *class;
+       MonoClass *klass;
 
        if (type->type->byref)
                return NULL;
        if (type->type->type == MONO_TYPE_VAR) {
                MonoGenericContainer *param = mono_type_get_generic_param_owner (type->type);
-               class = param ? param->owner.klass : NULL;
+               klass = param ? param->owner.klass : NULL;
        } else if (type->type->type == MONO_TYPE_MVAR) {
                MonoGenericContainer *param = mono_type_get_generic_param_owner (type->type);
-               class = param ? param->owner.method->klass : NULL;
+               klass = param ? param->owner.method->klass : NULL;
        } else {
-               class = mono_class_from_mono_type (type->type)->nested_in;
+               klass = mono_class_from_mono_type (type->type)->nested_in;
        }
 
-       return class ? mono_type_get_object (domain, &class->byval_arg) : NULL;
+       return klass ? mono_type_get_object (domain, &klass->byval_arg) : NULL;
 }
 
 ICALL_EXPORT MonoString*
 ves_icall_MonoType_get_Name (MonoReflectionType *type)
 {
        MonoDomain *domain = mono_domain_get (); 
-       MonoClass *class = mono_class_from_mono_type (type->type);
+       MonoClass *klass = mono_class_from_mono_type (type->type);
 
        if (type->type->byref) {
-               char *n = g_strdup_printf ("%s&", class->name);
+               char *n = g_strdup_printf ("%s&", klass->name);
                MonoString *res = mono_string_new (domain, n);
 
                g_free (n);
 
                return res;
        } else {
-               return mono_string_new (domain, class->name);
+               return mono_string_new (domain, klass->name);
        }
 }
 
@@ -2258,30 +2276,30 @@ ICALL_EXPORT MonoString*
 ves_icall_MonoType_get_Namespace (MonoReflectionType *type)
 {
        MonoDomain *domain = mono_domain_get (); 
-       MonoClass *class = mono_class_from_mono_type (type->type);
+       MonoClass *klass = mono_class_from_mono_type (type->type);
 
-       while (class->nested_in)
-               class = class->nested_in;
+       while (klass->nested_in)
+               klass = klass->nested_in;
 
-       if (class->name_space [0] == '\0')
+       if (klass->name_space [0] == '\0')
                return NULL;
        else
-               return mono_string_new (domain, class->name_space);
+               return mono_string_new (domain, klass->name_space);
 }
 
 ICALL_EXPORT gint32
 ves_icall_MonoType_GetArrayRank (MonoReflectionType *type)
 {
-       MonoClass *class;
+       MonoClass *klass;
 
        if (type->type->type != MONO_TYPE_ARRAY && type->type->type != MONO_TYPE_SZARRAY) {
                mono_set_pending_exception (mono_get_exception_argument ("type", "Type must be an array type"));
                return 0;
        }
 
-       class = mono_class_from_mono_type (type->type);
+       klass = mono_class_from_mono_type (type->type);
 
-       return class->rank;
+       return klass->rank;
 }
 
 static MonoArray*
@@ -2306,7 +2324,7 @@ ves_icall_MonoType_GetGenericArguments (MonoReflectionType *type, MonoBoolean ru
                MonoGenericContainer *container = klass->generic_container;
                res = create_type_array (domain, runtimeTypeArray, container->type_argc);
                for (i = 0; i < container->type_argc; ++i) {
-                       pklass = mono_class_from_generic_parameter (mono_generic_container_get_param (container, i), klass->image, FALSE);
+                       pklass = mono_class_from_generic_parameter_internal (mono_generic_container_get_param (container, i));
                        mono_array_setref (res, i, mono_type_get_object (domain, &pklass->byval_arg));
                }
        } else if (klass->generic_class) {
@@ -2355,7 +2373,7 @@ ves_icall_Type_GetGenericTypeDefinition_impl (MonoReflectionType *type)
                tb = mono_class_get_ref_info (generic_class);
 
                if (generic_class->wastypebuilder && tb)
-                       return tb;
+                       return (MonoReflectionType *)tb;
                else
                        return mono_type_get_object (mono_object_domain (type), &generic_class->byval_arg);
        }
@@ -2365,7 +2383,7 @@ ves_icall_Type_GetGenericTypeDefinition_impl (MonoReflectionType *type)
 ICALL_EXPORT MonoReflectionType*
 ves_icall_Type_MakeGenericType (MonoReflectionType *type, MonoArray *type_array)
 {
-       MonoClass *class;
+       MonoClass *klass;
        MonoType *geninst, **types;
        int i, count;
 
@@ -2376,7 +2394,7 @@ ves_icall_Type_MakeGenericType (MonoReflectionType *type, MonoArray *type_array)
        types = g_new0 (MonoType *, count);
 
        for (i = 0; i < count; i++) {
-               MonoReflectionType *t = mono_array_get (type_array, gpointer, i);
+               MonoReflectionType *t = (MonoReflectionType *)mono_array_get (type_array, gpointer, i);
                types [i] = t->type;
        }
 
@@ -2385,10 +2403,10 @@ ves_icall_Type_MakeGenericType (MonoReflectionType *type, MonoArray *type_array)
        if (!geninst)
                return NULL;
 
-       class = mono_class_from_mono_type (geninst);
+       klass = mono_class_from_mono_type (geninst);
 
        /*we might inflate to the GTD*/
-       if (class->generic_class && !mono_verifier_class_is_valid_generic_instantiation (class)) {
+       if (klass->generic_class && !mono_verifier_class_is_valid_generic_instantiation (klass)) {
                mono_set_pending_exception (mono_get_exception_argument ("typeArguments", "Invalid generic arguments"));
                return NULL;
        }
@@ -2427,7 +2445,7 @@ ves_icall_Type_GetGenericParameterAttributes (MonoReflectionType *type)
 {
        g_assert (IS_MONOTYPE (type));
        g_assert (is_generic_parameter (type->type));
-       return mono_generic_param_info (type->type->data.generic_param)->flags;
+       return (GenericParameterAttributes)mono_generic_param_info (type->type->data.generic_param)->flags;
 }
 
 ICALL_EXPORT MonoArray *
@@ -2544,7 +2562,7 @@ ves_icall_MonoMethod_GetPInvoke (MonoReflectionMethod *method, int* flags, MonoS
 
        if (image_is_dynamic (image)) {
                MonoReflectionMethodAux *method_aux = 
-                       g_hash_table_lookup (((MonoDynamicImage*)image)->method_aux_hash, method->method);
+                       (MonoReflectionMethodAux *)g_hash_table_lookup (((MonoDynamicImage*)image)->method_aux_hash, method->method);
                if (method_aux) {
                        import = method_aux->dllentry;
                        scope = method_aux->dll;
@@ -2599,7 +2617,7 @@ ves_icall_MonoMethod_GetGenericMethodDefinition (MonoReflectionMethod *method)
                 * the dynamic case as well ?
                 */
                mono_image_lock ((MonoImage*)image);
-               res = mono_g_hash_table_lookup (image->generic_def_objects, imethod);
+               res = (MonoReflectionMethod *)mono_g_hash_table_lookup (image->generic_def_objects, imethod);
                mono_image_unlock ((MonoImage*)image);
 
                if (res)
@@ -2660,8 +2678,7 @@ ves_icall_MonoMethod_GetGenericArguments (MonoReflectionMethod *method)
        for (i = 0; i < count; i++) {
                MonoGenericContainer *container = mono_method_get_generic_container (method->method);
                MonoGenericParam *param = mono_generic_container_get_param (container, i);
-               MonoClass *pklass = mono_class_from_generic_parameter (
-                       param, method->method->klass->image, TRUE);
+               MonoClass *pklass = mono_class_from_generic_parameter_internal (param);
                mono_array_setref (res, i,
                                mono_type_get_object (domain, &pklass->byval_arg));
        }
@@ -2747,7 +2764,7 @@ ves_icall_InternalInvoke (MonoReflectionMethod *method, MonoObject *this_arg, Mo
                uintptr_t *lengths;
                intptr_t *lower_bounds;
                pcount = mono_array_length (params);
-               lengths = alloca (sizeof (uintptr_t) * pcount);
+               lengths = (uintptr_t *)alloca (sizeof (uintptr_t) * pcount);
                /* Note: the synthetized array .ctors have int32 as argument type */
                for (i = 0; i < pcount; ++i)
                        lengths [i] = *(int32_t*) ((char*)mono_array_get (params, gpointer, i) + sizeof (MonoObject));
@@ -2770,7 +2787,7 @@ ves_icall_InternalInvoke (MonoReflectionMethod *method, MonoObject *this_arg, Mo
                } else {
                        g_assert (pcount == (m->klass->rank * 2));
                        /* The arguments are lower-bound-length pairs */
-                       lower_bounds = g_alloca (sizeof (intptr_t) * pcount);
+                       lower_bounds = (intptr_t *)g_alloca (sizeof (intptr_t) * pcount);
 
                        for (i = 0; i < pcount / 2; ++i) {
                                lower_bounds [i] = *(int32_t*) ((char*)mono_array_get (params, gpointer, (i * 2)) + sizeof (MonoObject));
@@ -2818,7 +2835,7 @@ ves_icall_InternalExecute (MonoReflectionMethod *method, MonoObject *this_arg, M
                                        if (field_klass->valuetype)
                                                result = mono_value_box (domain, field_klass, (char *)this_arg + field->offset);
                                        else 
-                                               result = *((gpointer *)((char *)this_arg + field->offset));
+                                               result = (MonoObject *)*((gpointer *)((char *)this_arg + field->offset));
                                
                                        out_args = mono_array_new (domain, mono_defaults.object_class, 1);
                                        mono_gc_wbarrier_generic_store (outArgs, (MonoObject*) out_args);
@@ -2854,7 +2871,7 @@ ves_icall_InternalExecute (MonoReflectionMethod *method, MonoObject *this_arg, M
                                MonoClassField* field = mono_class_get_field_from_name (k, str);
                                if (field) {
                                        MonoClass *field_klass =  mono_class_from_mono_type (field->type);
-                                       MonoObject *val = mono_array_get (params, gpointer, 2);
+                                       MonoObject *val = (MonoObject *)mono_array_get (params, gpointer, 2);
 
                                        if (field_klass->valuetype) {
                                                size = mono_type_size (field->type, &align);
@@ -2949,19 +2966,19 @@ write_enum_value (char *mem, int type, guint64 value)
        }
        case MONO_TYPE_U2:
        case MONO_TYPE_I2: {
-               guint16 *p = (void*)mem;
+               guint16 *p = (guint16 *)mem;
                *p = value;
                break;
        }
        case MONO_TYPE_U4:
        case MONO_TYPE_I4: {
-               guint32 *p = (void*)mem;
+               guint32 *p = (guint32 *)mem;
                *p = value;
                break;
        }
        case MONO_TYPE_U8:
        case MONO_TYPE_I8: {
-               guint64 *p = (void*)mem;
+               guint64 *p = (guint64 *)mem;
                *p = value;
                break;
        }
@@ -3103,16 +3120,20 @@ ves_icall_System_Enum_get_hashcode (MonoObject *eobj)
        g_assert (basetype);
 
        switch (basetype->type) {
-               case MONO_TYPE_I1:      
-                       return *((gint8*)data);
+               case MONO_TYPE_I1:       {
+                       gint8 value = *((gint8*)data);
+                       return ((int)value ^ (int)value << 8);
+               }
                case MONO_TYPE_U1:
                        return *((guint8*)data);
                case MONO_TYPE_CHAR:
                case MONO_TYPE_U2:
                        return *((guint16*)data);
                
-               case MONO_TYPE_I2:
-                       return *((gint16*)data);
+               case MONO_TYPE_I2: {
+                       gint16 value = *((gint16*)data);
+                       return ((int)(guint16)value | (((int)value) << 16));
+               }
                case MONO_TYPE_U4:
                        return *((guint32*)data);
                case MONO_TYPE_I4:
@@ -3457,7 +3478,7 @@ ves_icall_Type_GetMethodsByName (MonoReflectionType *type, MonoString *name, gui
        res = mono_array_new_specific (array_vtable, method_array->len);
 
        for (i = 0; i < method_array->len; ++i) {
-               MonoMethod *method = g_ptr_array_index (method_array, i);
+               MonoMethod *method = (MonoMethod *)g_ptr_array_index (method_array, i);
                mono_array_setref (res, i, mono_method_get_object (domain, method, refklass));
        }
 
@@ -3545,6 +3566,17 @@ property_hash (gconstpointer data)
        return g_str_hash (prop->name);
 }
 
+static gboolean
+method_declaring_signatures_equal (MonoMethod *method1, MonoMethod *method2)
+{
+       if (method1->is_inflated)
+               method1 = ((MonoMethodInflated*) method1)->declaring;
+       if (method2->is_inflated)
+               method2 = ((MonoMethodInflated*) method2)->declaring;
+
+       return mono_metadata_signature_equal (mono_method_signature (method1), mono_method_signature (method2));
+}
+
 static gboolean
 property_equal (MonoProperty *prop1, MonoProperty *prop2)
 {
@@ -3552,10 +3584,26 @@ property_equal (MonoProperty *prop1, MonoProperty *prop2)
        if (!g_str_equal (prop1->name, prop2->name))
                return FALSE;
 
-       if (prop1->get && prop2->get && !mono_metadata_signature_equal (mono_method_signature (prop1->get), mono_method_signature (prop2->get)))
+       /* If we see a property in a generic method, we want to
+          compare the generic signatures, not the inflated signatures
+          because we might conflate two properties that were
+          distinct:
+
+          class Foo<T,U> {
+            public T this[T t] { getter { return t; } } // method 1
+            public U this[U u] { getter { return u; } } // method 2
+          }
+
+          If we see int Foo<int,int>::Item[int] we need to know if
+          the indexer came from method 1 or from method 2, and we
+          shouldn't conflate them.   (Bugzilla 36283)
+       */
+       if (prop1->get && prop2->get && !method_declaring_signatures_equal (prop1->get, prop2->get))
                return FALSE;
-       if (prop1->set && prop2->set && !mono_metadata_signature_equal (mono_method_signature (prop1->set), mono_method_signature (prop2->set)))
+
+       if (prop1->set && prop2->set && !method_declaring_signatures_equal (prop1->set, prop2->set))
                return FALSE;
+
        return TRUE;
 }
 
@@ -3868,8 +3916,10 @@ ves_icall_Type_GetNestedTypes (MonoReflectionType *type, MonoString *name, guint
                        continue;
 
                if (name != NULL) {
-                       if (str == NULL)
+                       if (str == NULL) {
                                str = mono_string_to_utf8 (name);
+                               mono_identifier_unescape_type_name_chars (str);
+                       }
 
                        if (strcmp (nested->name, str))
                                continue;
@@ -3908,8 +3958,7 @@ ves_icall_System_Reflection_Assembly_InternalGetType (MonoReflectionAssembly *as
                g_free (str);
                mono_reflection_free_type_info (&info);
                if (throwOnError) {
-                       /* uhm: this is a parse error, though... */
-                       mono_set_pending_exception (mono_get_exception_type_load (name, NULL));
+                       mono_set_pending_exception (mono_get_exception_argument("name", "failed parse"));
                        return NULL;
                }
                /*g_print ("failed parse\n");*/
@@ -4611,7 +4660,7 @@ ves_icall_System_Reflection_Assembly_GetCallingAssembly (void)
        dest = NULL;
        mono_stack_walk_no_il (get_executing, &dest);
        m = dest;
-       mono_stack_walk_no_il (get_caller, &dest);
+       mono_stack_walk_no_il (get_caller_no_reflection, &dest);
        if (!dest)
                dest = m;
        return mono_assembly_get_object (mono_domain_get (), dest->klass->image->assembly);
@@ -4988,7 +5037,7 @@ ves_icall_System_Reflection_Assembly_GetTypes (MonoReflectionAssembly *assembly,
 
        ex_count = 0;
        for (i = 0; i < len; i++) {
-               MonoReflectionType *t = mono_array_get (res, gpointer, i);
+               MonoReflectionType *t = (MonoReflectionType *)mono_array_get (res, gpointer, i);
                MonoClass *klass;
 
                if (t) {
@@ -5015,7 +5064,7 @@ ves_icall_System_Reflection_Assembly_GetTypes (MonoReflectionAssembly *assembly,
                exl = mono_array_new (domain, mono_defaults.exception_class, length);
                /* Types for which mono_class_get_checked () succeeded */
                for (i = 0, tmp = list; tmp; i++, tmp = tmp->next) {
-                       MonoException *exc = mono_class_get_exception_for_failure (tmp->data);
+                       MonoException *exc = mono_class_get_exception_for_failure ((MonoClass *)tmp->data);
                        mono_array_setref (exl, i, exc);
                }
                /* Types for which it don't */
@@ -5207,12 +5256,12 @@ ves_icall_System_Reflection_Module_ResolveTypeToken (MonoImage *image, guint32 t
 
        if (image_is_dynamic (image)) {
                if ((table == MONO_TABLE_TYPEDEF) || (table == MONO_TABLE_TYPEREF)) {
-                       klass = mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+                       klass = (MonoClass *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
                        return klass ? &klass->byval_arg : NULL;
                }
 
                init_generic_context_from_args (&context, type_args, method_args);
-               klass = mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
+               klass = (MonoClass *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
                return klass ? &klass->byval_arg : NULL;
        }
 
@@ -5253,7 +5302,7 @@ ves_icall_System_Reflection_Module_ResolveMethodToken (MonoImage *image, guint32
 
        if (image_is_dynamic (image)) {
                if (table == MONO_TABLE_METHOD)
-                       return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+                       return (MonoMethod *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
 
                if ((table == MONO_TABLE_MEMBERREF) && !(mono_memberref_is_method (image, token))) {
                        *resolve_error = ResolveTokenError_BadTable;
@@ -5261,7 +5310,7 @@ ves_icall_System_Reflection_Module_ResolveMethodToken (MonoImage *image, guint32
                }
 
                init_generic_context_from_args (&context, type_args, method_args);
-               return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
+               return (MonoMethod *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
        }
 
        if ((index <= 0) || (index > image->tables [table].rows)) {
@@ -5294,7 +5343,7 @@ ves_icall_System_Reflection_Module_ResolveStringToken (MonoImage *image, guint32
        }
 
        if (image_is_dynamic (image))
-               return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+               return (MonoString *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
 
        if ((index <= 0) || (index >= image->heap_us.size)) {
                *error = ResolveTokenError_OutOfRange;
@@ -5326,7 +5375,7 @@ ves_icall_System_Reflection_Module_ResolveFieldToken (MonoImage *image, guint32
 
        if (image_is_dynamic (image)) {
                if (table == MONO_TABLE_FIELD)
-                       return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+                       return (MonoClassField *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
 
                if (mono_memberref_is_method (image, token)) {
                        *resolve_error = ResolveTokenError_BadTable;
@@ -5334,7 +5383,7 @@ ves_icall_System_Reflection_Module_ResolveFieldToken (MonoImage *image, guint32
                }
 
                init_generic_context_from_args (&context, type_args, method_args);
-               return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
+               return (MonoClassField *)mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
        }
 
        if ((index <= 0) || (index > image->tables [table].rows)) {
@@ -5733,10 +5782,15 @@ ves_icall_Remoting_RealProxy_GetTransparentProxy (MonoObject *this_obj, MonoStri
        type = ((MonoReflectionType *)rp->class_to_proxy)->type;
        klass = mono_class_from_mono_type (type);
 
+       // mono_remote_class_vtable cannot handle errors well, so force any loading error to occur early
+       mono_class_setup_vtable (klass);
+       if (klass->exception_type)
+               mono_raise_exception (mono_class_get_exception_for_failure (klass));
+
        tp->custom_type_info = (mono_object_isinst (this_obj, mono_defaults.iremotingtypeinfo_class) != NULL);
        tp->remote_class = mono_remote_class (domain, class_name, klass);
 
-       res->vtable = mono_remote_class_vtable (domain, tp->remote_class, rp);
+       res->vtable = (MonoVTable *)mono_remote_class_vtable (domain, tp->remote_class, rp);
        return res;
 }
 
@@ -5775,13 +5829,22 @@ ves_icall_System_Environment_get_MachineName (void)
        g_free (buf);
        return result;
 #elif !defined(DISABLE_SOCKETS)
-       gchar buf [256];
        MonoString *result;
-
-       if (gethostname (buf, sizeof (buf)) == 0)
+       char *buf;
+       int n;
+#if defined _SC_HOST_NAME_MAX
+       n = sysconf (_SC_HOST_NAME_MAX);
+       if (n == -1)
+#endif
+       n = 512;
+       buf = g_malloc (n+1);
+       
+       if (gethostname (buf, n) == 0){
+               buf [n] = 0;
                result = mono_string_new (mono_domain_get (), buf);
-       else
+       else
                result = NULL;
+       g_free (buf);
        
        return result;
 #else
@@ -5821,6 +5884,28 @@ ves_icall_System_Environment_get_NewLine (void)
 #endif
 }
 
+ICALL_EXPORT MonoBoolean
+ves_icall_System_Environment_GetIs64BitOperatingSystem (void)
+{
+#if SIZEOF_VOID_P == 8
+       return TRUE;
+#else
+#ifdef HOST_WIN32
+       gboolean isWow64Process = FALSE;
+       if (IsWow64Process (GetCurrentProcess (), &isWow64Process)) {
+               return (MonoBoolean)isWow64Process;
+       }
+#elif defined(HAVE_SYS_UTSNAME_H)
+       struct utsname name;
+
+       if (uname (&name) >= 0) {
+               return strcmp (name.machine, "x86_64") == 0 || strncmp (name.machine, "aarch64", 7) == 0 || strncmp (name.machine, "ppc64", 5) == 0;
+       }
+#endif
+       return FALSE;
+#endif
+}
+
 ICALL_EXPORT MonoString *
 ves_icall_System_Environment_GetEnvironmentVariable (MonoString *name)
 {
@@ -6071,7 +6156,7 @@ ves_icall_System_Environment_GetLogicalDrives (void)
                if (size > initial_size) {
                        if (ptr != buf)
                                g_free (ptr);
-                       ptr = g_malloc0 ((size + 1) * sizeof (gunichar2));
+                       ptr = (gunichar2 *)g_malloc0 ((size + 1) * sizeof (gunichar2));
                        initial_size = size;
                        size++;
                }
@@ -6438,7 +6523,7 @@ get_bundled_app_config (void)
                return NULL;
 
        len = config_file_path_length - config_ext_length;
-       module = g_malloc0 (len + 1);
+       module = (gchar *)g_malloc0 (len + 1);
        memcpy (module, config_file_path, len);
        // Get the config file from the module name
        app_config = mono_config_string_for_assembly_file (module);
@@ -6502,7 +6587,7 @@ ves_icall_get_resources_ptr (MonoReflectionAssembly *assembly, gpointer *result,
        *result = NULL;
        *size = 0;
        image = assembly->assembly->image;
-       entry = mono_image_lookup_resource (image, MONO_PE_RESOURCE_ID_ASPNET_STRING, 0, NULL);
+       entry = (MonoPEResourceDataEntry *)mono_image_lookup_resource (image, MONO_PE_RESOURCE_ID_ASPNET_STRING, 0, NULL);
        if (!entry)
                return FALSE;
 
@@ -6570,6 +6655,7 @@ ICALL_EXPORT MonoReflectionMethod *
 ves_icall_MonoMethod_get_base_method (MonoReflectionMethod *m, gboolean definition)
 {
        MonoClass *klass, *parent;
+       MonoGenericContext *generic_inst = NULL;
        MonoMethod *method = m->method;
        MonoMethod *result = NULL;
        int slot;
@@ -6587,21 +6673,75 @@ ves_icall_MonoMethod_get_base_method (MonoReflectionMethod *m, gboolean definiti
                return m;
 
        klass = method->klass;
-       if (klass->generic_class)
+       if (klass->generic_class) {
+               generic_inst = mono_class_get_context (klass);
                klass = klass->generic_class->container_class;
+       }
 
        if (definition) {
                /* At the end of the loop, klass points to the eldest class that has this virtual function slot. */
                for (parent = klass->parent; parent != NULL; parent = parent->parent) {
+                       /* on entry, klass is either a plain old non-generic class and generic_inst == NULL
+                          or klass is the generic container class and generic_inst is the instantiation.
+
+                          when we go to the parent, if the parent is an open constructed type, we need to
+                          replace the type parameters by the definitions from the generic_inst, and then take it
+                          apart again into the klass and the generic_inst.
+
+                          For cases like this:
+                          class C<T> : B<T, int> {
+                              public override void Foo () { ... }
+                          }
+                          class B<U,V> : A<HashMap<U,V>> {
+                              public override void Foo () { ... }
+                          }
+                          class A<X> {
+                              public virtual void Foo () { ... }
+                          }
+
+                          if at each iteration the parent isn't open, we can skip inflating it.  if at some
+                          iteration the parent isn't generic (after possible inflation), we set generic_inst to
+                          NULL;
+                       */
+                       MonoGenericContext *parent_inst = NULL;
+                       if (mono_class_is_open_constructed_type (mono_class_get_type (parent))) {
+                               MonoError error;
+                               parent = mono_class_inflate_generic_class_checked (parent, generic_inst, &error);
+                               mono_error_raise_exception(&error);
+                       }
+                       if (parent->generic_class) {
+                               parent_inst = mono_class_get_context (parent);
+                               parent = parent->generic_class->container_class;
+                       }
+
                        mono_class_setup_vtable (parent);
                        if (parent->vtable_size <= slot)
                                break;
                        klass = parent;
+                       generic_inst = parent_inst;
                }
        } else {
                klass = klass->parent;
                if (!klass)
                        return m;
+               if (mono_class_is_open_constructed_type (mono_class_get_type (klass))) {
+                       MonoError error;
+                       klass = mono_class_inflate_generic_class_checked (klass, generic_inst, &error);
+                       mono_error_raise_exception(&error);
+
+                       generic_inst = NULL;
+               }
+               if (klass->generic_class) {
+                       generic_inst = mono_class_get_context (klass);
+                       klass = klass->generic_class->container_class;
+               }
+
+       }
+
+       if (generic_inst) {
+               MonoError error;
+               klass = mono_class_inflate_generic_class_checked (klass, generic_inst, &error);
+               mono_error_raise_exception(&error);
        }
 
        if (klass == method->klass)
@@ -6749,7 +6889,7 @@ ICALL_EXPORT MonoObject*
 mono_TypedReference_ToObject (MonoTypedRef* tref)
 {
        if (MONO_TYPE_IS_REFERENCE (tref->type)) {
-               MonoObject** objp = tref->value;
+               MonoObject** objp = (MonoObject **)tref->value;
                return *objp;
        }
 
@@ -7243,19 +7383,19 @@ mono_icall_init (void)
 #endif
 
        icall_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
-       mono_mutex_init (&icall_mutex);
+       mono_os_mutex_init (&icall_mutex);
 }
 
 static void
 mono_icall_lock (void)
 {
-       mono_locks_mutex_acquire (&icall_mutex, IcallLock);
+       mono_locks_os_acquire (&icall_mutex, IcallLock);
 }
 
 static void
 mono_icall_unlock (void)
 {
-       mono_locks_mutex_release (&icall_mutex, IcallLock);
+       mono_locks_os_release (&icall_mutex, IcallLock);
 }
 
 void
@@ -7264,7 +7404,7 @@ mono_icall_cleanup (void)
        g_hash_table_destroy (icall_hash);
        g_hash_table_destroy (jit_icall_hash_name);
        g_hash_table_destroy (jit_icall_hash_addr);
-       mono_mutex_destroy (&icall_mutex);
+       mono_os_mutex_destroy (&icall_mutex);
 }
 
 void
@@ -7290,7 +7430,7 @@ compare_method_imap (const void *key, const void *elem)
 static gpointer
 find_method_icall (const IcallTypeDesc *imap, const char *name)
 {
-       const guint16 *nameslot = mono_binary_search (name, icall_names_idx + imap->first_icall, icall_desc_num_icalls (imap), sizeof (icall_names_idx [0]), compare_method_imap);
+       const guint16 *nameslot = (const guint16 *)mono_binary_search (name, icall_names_idx + imap->first_icall, icall_desc_num_icalls (imap), sizeof (icall_names_idx [0]), compare_method_imap);
        if (!nameslot)
                return NULL;
        return (gpointer)icall_functions [(nameslot - &icall_names_idx [0])];
@@ -7306,7 +7446,7 @@ compare_class_imap (const void *key, const void *elem)
 static const IcallTypeDesc*
 find_class_icalls (const char *name)
 {
-       const guint16 *nameslot = mono_binary_search (name, icall_type_names_idx, Icall_type_num, sizeof (icall_type_names_idx [0]), compare_class_imap);
+       const guint16 *nameslot = (const guint16 *)mono_binary_search (name, icall_type_names_idx, Icall_type_num, sizeof (icall_type_names_idx [0]), compare_class_imap);
        if (!nameslot)
                return NULL;
        return &icall_type_descs [nameslot - &icall_type_names_idx [0]];
@@ -7565,48 +7705,48 @@ mono_lookup_icall_symbol (MonoMethod *m)
 }
 
 static MonoType*
-type_from_typename (char *typename)
+type_from_typename (char *type_name)
 {
        MonoClass *klass = NULL;        /* assignment to shut GCC warning up */
 
-       if (!strcmp (typename, "int"))
+       if (!strcmp (type_name, "int"))
                klass = mono_defaults.int_class;
-       else if (!strcmp (typename, "ptr"))
+       else if (!strcmp (type_name, "ptr"))
                klass = mono_defaults.int_class;
-       else if (!strcmp (typename, "void"))
+       else if (!strcmp (type_name, "void"))
                klass = mono_defaults.void_class;
-       else if (!strcmp (typename, "int32"))
+       else if (!strcmp (type_name, "int32"))
                klass = mono_defaults.int32_class;
-       else if (!strcmp (typename, "uint32"))
+       else if (!strcmp (type_name, "uint32"))
                klass = mono_defaults.uint32_class;
-       else if (!strcmp (typename, "int8"))
+       else if (!strcmp (type_name, "int8"))
                klass = mono_defaults.sbyte_class;
-       else if (!strcmp (typename, "uint8"))
+       else if (!strcmp (type_name, "uint8"))
                klass = mono_defaults.byte_class;
-       else if (!strcmp (typename, "int16"))
+       else if (!strcmp (type_name, "int16"))
                klass = mono_defaults.int16_class;
-       else if (!strcmp (typename, "uint16"))
+       else if (!strcmp (type_name, "uint16"))
                klass = mono_defaults.uint16_class;
-       else if (!strcmp (typename, "long"))
+       else if (!strcmp (type_name, "long"))
                klass = mono_defaults.int64_class;
-       else if (!strcmp (typename, "ulong"))
+       else if (!strcmp (type_name, "ulong"))
                klass = mono_defaults.uint64_class;
-       else if (!strcmp (typename, "float"))
+       else if (!strcmp (type_name, "float"))
                klass = mono_defaults.single_class;
-       else if (!strcmp (typename, "double"))
+       else if (!strcmp (type_name, "double"))
                klass = mono_defaults.double_class;
-       else if (!strcmp (typename, "object"))
+       else if (!strcmp (type_name, "object"))
                klass = mono_defaults.object_class;
-       else if (!strcmp (typename, "obj"))
+       else if (!strcmp (type_name, "obj"))
                klass = mono_defaults.object_class;
-       else if (!strcmp (typename, "string"))
+       else if (!strcmp (type_name, "string"))
                klass = mono_defaults.string_class;
-       else if (!strcmp (typename, "bool"))
+       else if (!strcmp (type_name, "bool"))
                klass = mono_defaults.boolean_class;
-       else if (!strcmp (typename, "boolean"))
+       else if (!strcmp (type_name, "boolean"))
                klass = mono_defaults.boolean_class;
        else {
-               g_error ("%s", typename);
+               g_error ("%s", type_name);
                g_assert_not_reached ();
        }
        return &klass->byval_arg;
@@ -7625,7 +7765,7 @@ mono_create_icall_signature (const char *sigstr)
        MonoImage *corlib = mono_defaults.corlib;
 
        mono_image_lock (corlib);
-       res = g_hash_table_lookup (corlib->helper_signatures, sigstr);
+       res = (MonoMethodSignature *)g_hash_table_lookup (corlib->helper_signatures, sigstr);
        mono_image_unlock (corlib);
 
        if (res)
@@ -7659,7 +7799,7 @@ mono_create_icall_signature (const char *sigstr)
        g_strfreev (parts);
 
        mono_image_lock (corlib);
-       res2 = g_hash_table_lookup (corlib->helper_signatures, sigstr);
+       res2 = (MonoMethodSignature *)g_hash_table_lookup (corlib->helper_signatures, sigstr);
        if (res2)
                res = res2; /*Value is allocated in the image pool*/
        else
@@ -7676,7 +7816,7 @@ mono_find_jit_icall_by_name (const char *name)
        g_assert (jit_icall_hash_name);
 
        mono_icall_lock ();
-       info = g_hash_table_lookup (jit_icall_hash_name, name);
+       info = (MonoJitICallInfo *)g_hash_table_lookup (jit_icall_hash_name, name);
        mono_icall_unlock ();
        return info;
 }
@@ -7688,7 +7828,7 @@ mono_find_jit_icall_by_addr (gconstpointer addr)
        g_assert (jit_icall_hash_addr);
 
        mono_icall_lock ();
-       info = g_hash_table_lookup (jit_icall_hash_addr, (gpointer)addr);
+       info = (MonoJitICallInfo *)g_hash_table_lookup (jit_icall_hash_addr, (gpointer)addr);
        mono_icall_unlock ();
 
        return info;
@@ -7718,7 +7858,7 @@ mono_lookup_jit_icall_symbol (const char *name)
        const char *res = NULL;
 
        mono_icall_lock ();
-       info = g_hash_table_lookup (jit_icall_hash_name, name);
+       info = (MonoJitICallInfo *)g_hash_table_lookup (jit_icall_hash_name, name);
        if (info)
                res = info->c_symbol;
        mono_icall_unlock ();
diff --git a/mono/metadata/image-internals.h b/mono/metadata/image-internals.h
new file mode 100644 (file)
index 0000000..e521117
--- /dev/null
@@ -0,0 +1,12 @@
+/* 
+ * Copyright 2015 Xamarin Inc
+ */
+#ifndef __MONO_METADATA_IMAGE_INTERNALS_H__
+#define __MONO_METADATA_IMAGE_INTERNALS_H__
+
+#include <mono/metadata/image.h>
+
+MonoImage *
+mono_find_image_owner (void *ptr);
+
+#endif /* __MONO_METADATA_IMAGE_INTERNALS_H__ */
index 56403f3463a61b24e0fc601a4b9fbb761ec78eae..fbbf58f6b3ea541d87a28fd78b583fa492585bbb 100644 (file)
@@ -27,7 +27,7 @@
 #include "marshal.h"
 #include "coree.h"
 #include <mono/io-layer/io-layer.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-path.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-io-portability.h>
@@ -38,6 +38,7 @@
 #include <mono/metadata/security-core-clr.h>
 #include <mono/metadata/verify-internals.h>
 #include <mono/metadata/verify.h>
+#include <mono/metadata/image-internals.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #ifdef HAVE_UNISTD_H
 
 #define INVALID_ADDRESS 0xffffffff
 
+// Amount initially reserved in each image's mempool.
+// FIXME: This number is arbitrary, a more practical number should be found
+#define INITIAL_IMAGE_SIZE    512
+
 /*
- * Keeps track of the various assemblies loaded
+ * The "loaded images" hashes keep track of the various assemblies and netmodules loaded
+ * There are four, for all combinations of [look up by path or assembly name?]
+ * and [normal or reflection-only load?, as in Assembly.ReflectionOnlyLoad]
  */
-static GHashTable *loaded_images_hash;
-static GHashTable *loaded_images_refonly_hash;
+enum {
+       IMAGES_HASH_PATH = 0,
+       IMAGES_HASH_PATH_REFONLY = 1,
+       IMAGES_HASH_NAME = 2,
+       IMAGES_HASH_NAME_REFONLY = 3,
+       IMAGES_HASH_COUNT = 4
+};
+static GHashTable *loaded_images_hashes [4] = {NULL, NULL, NULL, NULL};
+
+static GHashTable *get_loaded_images_hash (gboolean refonly)
+{
+       int idx = refonly ? IMAGES_HASH_PATH_REFONLY : IMAGES_HASH_PATH;
+       return loaded_images_hashes [idx];
+}
+
+static GHashTable *get_loaded_images_by_name_hash (gboolean refonly)
+{
+       int idx = refonly ? IMAGES_HASH_NAME_REFONLY : IMAGES_HASH_NAME;
+       return loaded_images_hashes [idx];
+}
 
 static gboolean debug_assembly_unload = FALSE;
 
-#define mono_images_lock() if (mutex_inited) mono_mutex_lock (&images_mutex)
-#define mono_images_unlock() if (mutex_inited) mono_mutex_unlock (&images_mutex)
+#define mono_images_lock() if (mutex_inited) mono_os_mutex_lock (&images_mutex)
+#define mono_images_unlock() if (mutex_inited) mono_os_mutex_unlock (&images_mutex)
 static gboolean mutex_inited;
 static mono_mutex_t images_mutex;
 
+static void install_pe_loader (void);
+
 typedef struct ImageUnloadHook ImageUnloadHook;
 struct ImageUnloadHook {
        MonoImageUnloadFunc func;
@@ -87,7 +114,7 @@ mono_remove_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data)
        ImageUnloadHook *hook;
 
        for (l = image_unload_hooks; l; l = l->next) {
-               hook = l->data;
+               hook = (ImageUnloadHook *)l->data;
 
                if (hook->func == func && hook->user_data == user_data) {
                        g_free (hook);
@@ -104,17 +131,25 @@ mono_image_invoke_unload_hook (MonoImage *image)
        ImageUnloadHook *hook;
 
        for (l = image_unload_hooks; l; l = l->next) {
-               hook = l->data;
+               hook = (ImageUnloadHook *)l->data;
 
                hook->func (image, hook->user_data);
        }
 }
 
+static GSList *image_loaders;
+
+void
+mono_install_image_loader (const MonoImageLoader *loader)
+{
+       image_loaders = g_slist_prepend (image_loaders, (MonoImageLoader*)loader);
+}
+
 /* returns offset relative to image->raw_data */
 guint32
 mono_cli_rva_image_map (MonoImage *image, guint32 addr)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        const int top = iinfo->cli_section_count;
        MonoSectionTable *tables = iinfo->cli_section_tables;
        int i;
@@ -150,7 +185,7 @@ mono_cli_rva_image_map (MonoImage *image, guint32 addr)
 char *
 mono_image_rva_map (MonoImage *image, guint32 addr)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        const int top = iinfo->cli_section_count;
        MonoSectionTable *tables = iinfo->cli_section_tables;
        int i;
@@ -187,13 +222,16 @@ mono_image_rva_map (MonoImage *image, guint32 addr)
 void
 mono_images_init (void)
 {
-       mono_mutex_init_recursive (&images_mutex);
+       mono_os_mutex_init_recursive (&images_mutex);
 
-       loaded_images_hash = g_hash_table_new (g_str_hash, g_str_equal);
-       loaded_images_refonly_hash = g_hash_table_new (g_str_hash, g_str_equal);
+       int hash_idx;
+       for(hash_idx = 0; hash_idx < IMAGES_HASH_COUNT; hash_idx++)
+               loaded_images_hashes [hash_idx] = g_hash_table_new (g_str_hash, g_str_equal);
 
        debug_assembly_unload = g_getenv ("MONO_DEBUG_ASSEMBLY_UNLOAD") != NULL;
 
+       install_pe_loader ();
+
        mutex_inited = TRUE;
 }
 
@@ -208,14 +246,17 @@ mono_images_cleanup (void)
        GHashTableIter iter;
        MonoImage *image;
 
-       mono_mutex_destroy (&images_mutex);
+       mono_os_mutex_destroy (&images_mutex);
 
-       g_hash_table_iter_init (&iter, loaded_images_hash);
+       // If an assembly image is still loaded at shutdown, this could indicate managed code is still running.
+       // Reflection-only images being still loaded doesn't indicate anything as harmful, so we don't check for it.
+       g_hash_table_iter_init (&iter, get_loaded_images_hash (FALSE));
        while (g_hash_table_iter_next (&iter, NULL, (void**)&image))
                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Assembly image '%s' still loaded at shutdown.", image->name);
 
-       g_hash_table_destroy (loaded_images_hash);
-       g_hash_table_destroy (loaded_images_refonly_hash);
+       int hash_idx;
+       for(hash_idx = 0; hash_idx < IMAGES_HASH_COUNT; hash_idx++)
+               g_hash_table_destroy (loaded_images_hashes [hash_idx]);
 
        mutex_inited = FALSE;
 }
@@ -233,7 +274,7 @@ mono_images_cleanup (void)
 int
 mono_image_ensure_section_idx (MonoImage *image, int section)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        MonoSectionTable *sect;
        
        g_return_val_if_fail (section < iinfo->cli_section_count, FALSE);
@@ -268,7 +309,7 @@ mono_image_ensure_section_idx (MonoImage *image, int section)
 int
 mono_image_ensure_section (MonoImage *image, const char *section)
 {
-       MonoCLIImageInfo *ii = image->image_info;
+       MonoCLIImageInfo *ii = (MonoCLIImageInfo *)image->image_info;
        int i;
        
        for (i = 0; i < ii->cli_section_count; i++){
@@ -315,8 +356,8 @@ load_section_tables (MonoImage *image, MonoCLIImageInfo *iinfo, guint32 offset)
        return TRUE;
 }
 
-static gboolean
-load_cli_header (MonoImage *image, MonoCLIImageInfo *iinfo)
+gboolean
+mono_image_load_cli_header (MonoImage *image, MonoCLIImageInfo *iinfo)
 {
        guint32 offset;
        
@@ -466,12 +507,13 @@ load_metadata_ptrs (MonoImage *image, MonoCLIImageInfo *iinfo)
                        ptr += 4 - (pad % 4);
        }
 
+       i = ((MonoImageLoader*)image->loader)->load_tables (image);
        g_assert (image->heap_guid.data);
        g_assert (image->heap_guid.size >= 16);
 
        image->guid = mono_guid_to_string ((guint8*)image->heap_guid.data);
 
-       return TRUE;
+       return i;
 }
 
 /*
@@ -519,8 +561,8 @@ load_tables (MonoImage *image)
        return TRUE;
 }
 
-static gboolean
-load_metadata (MonoImage *image, MonoCLIImageInfo *iinfo)
+gboolean
+mono_image_load_metadata (MonoImage *image, MonoCLIImageInfo *iinfo)
 {
        if (!load_metadata_ptrs (image, iinfo))
                return FALSE;
@@ -655,26 +697,26 @@ mono_image_load_module (MonoImage *image, int idx)
 static gpointer
 class_key_extract (gpointer value)
 {
-       MonoClass *class = value;
+       MonoClass *klass = (MonoClass *)value;
 
-       return GUINT_TO_POINTER (class->type_token);
+       return GUINT_TO_POINTER (klass->type_token);
 }
 
 static gpointer*
 class_next_value (gpointer value)
 {
-       MonoClass *class = value;
+       MonoClass *klass = (MonoClass *)value;
 
-       return (gpointer*)&class->next_class_cache;
+       return (gpointer*)&klass->next_class_cache;
 }
 
 void
 mono_image_init (MonoImage *image)
 {
-       mono_mutex_init_recursive (&image->lock);
-       mono_mutex_init_recursive (&image->szarray_cache_lock);
+       mono_os_mutex_init_recursive (&image->lock);
+       mono_os_mutex_init_recursive (&image->szarray_cache_lock);
 
-       image->mempool = mono_mempool_new_size (512);
+       image->mempool = mono_mempool_new_size (INITIAL_IMAGE_SIZE);
        mono_internal_hash_table_init (&image->class_cache,
                                       g_direct_hash,
                                       class_key_extract,
@@ -840,13 +882,19 @@ do_load_header (MonoImage *image, MonoDotNetHeader *header, int offset)
 
 gboolean
 mono_image_load_pe_data (MonoImage *image)
+{
+       return ((MonoImageLoader*)image->loader)->load_pe_data (image);
+}
+
+static gboolean
+pe_image_load_pe_data (MonoImage *image)
 {
        MonoCLIImageInfo *iinfo;
        MonoDotNetHeader *header;
        MonoMSDOSHeader msdos;
        gint32 offset = 0;
 
-       iinfo = image->image_info;
+       iinfo = (MonoCLIImageInfo *)image->image_info;
        header = &iinfo->cli_header;
 
 #ifdef HOST_WIN32
@@ -905,16 +953,24 @@ invalid_image:
 
 gboolean
 mono_image_load_cli_data (MonoImage *image)
+{
+       return ((MonoImageLoader*)image->loader)->load_cli_data (image);
+}
+
+static gboolean
+pe_image_load_cli_data (MonoImage *image)
 {
        MonoCLIImageInfo *iinfo;
+       MonoDotNetHeader *header;
 
-       iinfo = image->image_info;
+       iinfo = (MonoCLIImageInfo *)image->image_info;
+       header = &iinfo->cli_header;
 
        /* Load the CLI header */
-       if (!load_cli_header (image, iinfo))
+       if (!mono_image_load_cli_header (image, iinfo))
                return FALSE;
 
-       if (!load_metadata (image, iinfo))
+       if (!mono_image_load_metadata (image, iinfo))
                return FALSE;
 
        return TRUE;
@@ -938,6 +994,33 @@ mono_image_load_names (MonoImage *image)
        }
 }
 
+static gboolean
+pe_image_load_tables (MonoImage *image)
+{
+       return TRUE;
+}
+
+static gboolean
+pe_image_match (MonoImage *image)
+{
+       if (image->raw_data [0] == 'M' && image->raw_data [1] == 'Z')
+               return TRUE;
+       return FALSE;
+}
+
+static const MonoImageLoader pe_loader = {
+       pe_image_match,
+       pe_image_load_pe_data,
+       pe_image_load_cli_data,
+       pe_image_load_tables,
+};
+
+static void
+install_pe_loader (void)
+{
+       mono_install_image_loader (&pe_loader);
+}
+
 static MonoImage *
 do_mono_image_load (MonoImage *image, MonoImageOpenStatus *status,
                    gboolean care_about_cli, gboolean care_about_pecoff)
@@ -945,39 +1028,54 @@ do_mono_image_load (MonoImage *image, MonoImageOpenStatus *status,
        MonoCLIImageInfo *iinfo;
        MonoDotNetHeader *header;
        GSList *errors = NULL;
+       GSList *l;
 
        mono_profiler_module_event (image, MONO_PROFILE_START_LOAD);
 
        mono_image_init (image);
 
-       iinfo = image->image_info;
+       iinfo = (MonoCLIImageInfo *)image->image_info;
        header = &iinfo->cli_header;
-               
-       if (status)
-               *status = MONO_IMAGE_IMAGE_INVALID;
-
-       if (care_about_pecoff == FALSE)
-               goto done;
 
        if (!image->metadata_only) {
-               if (!mono_verifier_verify_pe_data (image, &errors))
+               for (l = image_loaders; l; l = l->next) {
+                       MonoImageLoader *loader = (MonoImageLoader *)l->data;
+                       if (loader->match (image)) {
+                               image->loader = loader;
+                               break;
+                       }
+               }
+               if (!image->loader) {
+                       *status = MONO_IMAGE_IMAGE_INVALID;
+                       goto invalid_image;
+               }
+
+               if (status)
+                       *status = MONO_IMAGE_IMAGE_INVALID;
+
+               if (care_about_pecoff == FALSE)
+                       goto done;
+
+               if (image->loader == &pe_loader && !mono_verifier_verify_pe_data (image, &errors))
                        goto invalid_image;
 
                if (!mono_image_load_pe_data (image))
                        goto invalid_image;
+       } else {
+               image->loader = (MonoImageLoader*)&pe_loader;
        }
 
        if (care_about_cli == FALSE) {
                goto done;
        }
 
-       if (!mono_verifier_verify_cli_data (image, &errors))
+       if (image->loader == &pe_loader && !mono_verifier_verify_cli_data (image, &errors))
                goto invalid_image;
 
        if (!mono_image_load_cli_data (image))
                goto invalid_image;
 
-       if (!mono_verifier_verify_table_data (image, &errors))
+       if (image->loader == &pe_loader && !mono_verifier_verify_table_data (image, &errors))
                goto invalid_image;
 
        mono_image_load_names (image);
@@ -993,7 +1091,7 @@ done:
 
 invalid_image:
        if (errors) {
-               MonoVerifyInfo *info = errors->data;
+               MonoVerifyInfo *info = (MonoVerifyInfo *)errors->data;
                g_warning ("Could not load image %s due to %s", image->name, info->message);
                mono_free_verify_list (errors);
        }
@@ -1029,11 +1127,11 @@ do_mono_image_open (const char *fname, MonoImageOpenStatus *status,
        image = g_new0 (MonoImage, 1);
        image->raw_buffer_used = TRUE;
        image->raw_data_len = mono_file_map_size (filed);
-       image->raw_data = mono_file_map (image->raw_data_len, MONO_MMAP_READ|MONO_MMAP_PRIVATE, mono_file_map_fd (filed), 0, &image->raw_data_handle);
+       image->raw_data = (char *)mono_file_map (image->raw_data_len, MONO_MMAP_READ|MONO_MMAP_PRIVATE, mono_file_map_fd (filed), 0, &image->raw_data_handle);
 #if defined(HAVE_MMAP) && !defined (HOST_WIN32)
        if (!image->raw_data) {
                image->fileio_used = TRUE;
-               image->raw_data = mono_file_map_fileio (image->raw_data_len, MONO_MMAP_READ|MONO_MMAP_PRIVATE, mono_file_map_fd (filed), 0, &image->raw_data_handle);
+               image->raw_data = (char *)mono_file_map_fileio (image->raw_data_len, MONO_MMAP_READ|MONO_MMAP_PRIVATE, mono_file_map_fd (filed), 0, &image->raw_data_handle);
        }
 #endif
        if (!image->raw_data) {
@@ -1056,23 +1154,35 @@ do_mono_image_open (const char *fname, MonoImageOpenStatus *status,
        return do_mono_image_load (image, status, care_about_cli, care_about_pecoff);
 }
 
+/**
+ * mono_image_loaded:
+ * @name: path or assembly name of the image to load
+ * @refonly: Check with respect to reflection-only loads?
+ *
+ * This routine verifies that the given image is loaded.
+ * It checks either reflection-only loads only, or normal loads only, as specified by parameter.
+ *
+ * Returns: the loaded MonoImage, or NULL on failure.
+ */
 MonoImage *
 mono_image_loaded_full (const char *name, gboolean refonly)
 {
        MonoImage *res;
-       GHashTable *loaded_images = refonly ? loaded_images_refonly_hash : loaded_images_hash;
-        
+
        mono_images_lock ();
-       res = g_hash_table_lookup (loaded_images, name);
+       res = (MonoImage *)g_hash_table_lookup (get_loaded_images_hash (refonly), name);
+       if (!res)
+               res = (MonoImage *)g_hash_table_lookup (get_loaded_images_by_name_hash (refonly), name);
        mono_images_unlock ();
+
        return res;
 }
 
 /**
  * mono_image_loaded:
- * @name: name of the image to load
+ * @name: path or assembly name of the image to load
  *
- * This routine ensures that the given image is loaded.
+ * This routine verifies that the given image is loaded. Reflection-only loads do not count.
  *
  * Returns: the loaded MonoImage, or NULL on failure.
  */
@@ -1090,12 +1200,12 @@ typedef struct {
 static void
 find_by_guid (gpointer key, gpointer val, gpointer user_data)
 {
-       GuidData *data = user_data;
+       GuidData *data = (GuidData *)user_data;
        MonoImage *image;
 
        if (data->res)
                return;
-       image = val;
+       image = (MonoImage *)val;
        if (strcmp (data->guid, mono_image_get_guid (image)) == 0)
                data->res = image;
 }
@@ -1104,7 +1214,7 @@ MonoImage *
 mono_image_loaded_by_guid_full (const char *guid, gboolean refonly)
 {
        GuidData data;
-       GHashTable *loaded_images = refonly ? loaded_images_refonly_hash : loaded_images_hash;
+       GHashTable *loaded_images = get_loaded_images_hash (refonly);
        data.res = NULL;
        data.guid = guid;
 
@@ -1124,10 +1234,10 @@ static MonoImage *
 register_image (MonoImage *image)
 {
        MonoImage *image2;
-       GHashTable *loaded_images = image->ref_only ? loaded_images_refonly_hash : loaded_images_hash;
+       GHashTable *loaded_images = get_loaded_images_hash (image->ref_only);
 
        mono_images_lock ();
-       image2 = g_hash_table_lookup (loaded_images, image->name);
+       image2 = (MonoImage *)g_hash_table_lookup (loaded_images, image->name);
 
        if (image2) {
                /* Somebody else beat us to it */
@@ -1136,9 +1246,11 @@ register_image (MonoImage *image)
                mono_image_close (image);
                return image2;
        }
+
+       GHashTable *loaded_images_by_name = get_loaded_images_by_name_hash (image->ref_only);
        g_hash_table_insert (loaded_images, image->name, image);
-       if (image->assembly_name && (g_hash_table_lookup (loaded_images, image->assembly_name) == NULL))
-               g_hash_table_insert (loaded_images, (char *) image->assembly_name, image);      
+       if (image->assembly_name && (g_hash_table_lookup (loaded_images_by_name, image->assembly_name) == NULL))
+               g_hash_table_insert (loaded_images_by_name, (char *) image->assembly_name, image);
        mono_images_unlock ();
 
        return image;
@@ -1158,7 +1270,7 @@ mono_image_open_from_data_internal (char *data, guint32 data_len, gboolean need_
        }
        datac = data;
        if (need_copy) {
-               datac = g_try_malloc (data_len);
+               datac = (char *)g_try_malloc (data_len);
                if (!datac) {
                        if (status)
                                *status = MONO_IMAGE_ERROR_ERRNO;
@@ -1231,13 +1343,14 @@ MonoImage *
 mono_image_open_full (const char *fname, MonoImageOpenStatus *status, gboolean refonly)
 {
        MonoImage *image;
-       GHashTable *loaded_images;
+       GHashTable *loaded_images = get_loaded_images_hash (refonly);
        char *absfname;
        
        g_return_val_if_fail (fname != NULL, NULL);
        
 #ifdef HOST_WIN32
-       /* Load modules using LoadLibrary. */
+       // Win32 path: If we are running with mixed-mode assemblies enabled (ie have loaded mscoree.dll),
+       // then assemblies need to be loaded with LoadLibrary:
        if (!refonly && coree_module_handle) {
                HMODULE module_handle;
                guint16 *fname_utf16;
@@ -1248,8 +1361,8 @@ mono_image_open_full (const char *fname, MonoImageOpenStatus *status, gboolean r
 
                /* There is little overhead because the OS loader lock is held by LoadLibrary. */
                mono_images_lock ();
-               image = g_hash_table_lookup (loaded_images_hash, absfname);
-               if (image) {
+               image = g_hash_table_lookup (loaded_images, absfname);
+               if (image) { // Image already loaded
                        g_assert (image->is_module_handle);
                        if (image->has_entry_point && image->ref_count == 0) {
                                /* Increment reference count on images loaded outside of the runtime. */
@@ -1266,13 +1379,14 @@ mono_image_open_full (const char *fname, MonoImageOpenStatus *status, gboolean r
                        return image;
                }
 
+               // Image not loaded, load it now
                fname_utf16 = g_utf8_to_utf16 (absfname, -1, NULL, NULL, NULL);
                module_handle = MonoLoadImage (fname_utf16);
                if (status && module_handle == NULL)
                        last_error = GetLastError ();
 
                /* mono_image_open_from_module_handle is called by _CorDllMain. */
-               image = g_hash_table_lookup (loaded_images_hash, absfname);
+               image = g_hash_table_lookup (loaded_images, absfname);
                if (image)
                        mono_image_addref (image);
                mono_images_unlock ();
@@ -1315,17 +1429,17 @@ mono_image_open_full (const char *fname, MonoImageOpenStatus *status, gboolean r
         * the same image, we discard all but the first copy.
         */
        mono_images_lock ();
-       loaded_images = refonly ? loaded_images_refonly_hash : loaded_images_hash;
-       image = g_hash_table_lookup (loaded_images, absfname);
+       image = (MonoImage *)g_hash_table_lookup (loaded_images, absfname);
        g_free (absfname);
-       
-       if (image){
+
+       if (image) { // Image already loaded
                mono_image_addref (image);
                mono_images_unlock ();
                return image;
        }
        mono_images_unlock ();
 
+       // Image not loaded, load it now
        image = do_mono_image_open (fname, status, TRUE, TRUE, refonly, FALSE);
        if (image == NULL)
                return NULL;
@@ -1537,12 +1651,12 @@ gboolean
 mono_image_close_except_pools (MonoImage *image)
 {
        MonoImage *image2;
-       GHashTable *loaded_images;
+       GHashTable *loaded_images, *loaded_images_by_name;
        int i;
 
        g_return_val_if_fail (image != NULL, FALSE);
 
-       /* 
+       /*
         * Atomically decrement the refcount and remove ourselves from the hash tables, so
         * register_image () can't grab an image which is being closed.
         */
@@ -1553,14 +1667,15 @@ mono_image_close_except_pools (MonoImage *image)
                return FALSE;
        }
 
-       loaded_images = image->ref_only ? loaded_images_refonly_hash : loaded_images_hash;
-       image2 = g_hash_table_lookup (loaded_images, image->name);
+       loaded_images         = get_loaded_images_hash (image->ref_only);
+       loaded_images_by_name = get_loaded_images_by_name_hash (image->ref_only);
+       image2 = (MonoImage *)g_hash_table_lookup (loaded_images, image->name);
        if (image == image2) {
                /* This is not true if we are called from mono_image_open () */
                g_hash_table_remove (loaded_images, image->name);
        }
-       if (image->assembly_name && (g_hash_table_lookup (loaded_images, image->assembly_name) == image))
-               g_hash_table_remove (loaded_images, (char *) image->assembly_name);     
+       if (image->assembly_name && (g_hash_table_lookup (loaded_images_by_name, image->assembly_name) == image))
+               g_hash_table_remove (loaded_images_by_name, (char *) image->assembly_name);     
 
        mono_images_unlock ();
 
@@ -1625,7 +1740,7 @@ mono_image_close_except_pools (MonoImage *image)
        if (image->raw_data_allocated) {
                /* FIXME: do we need this? (image is disposed anyway) */
                /* image->raw_metadata and cli_sections might lie inside image->raw_data */
-               MonoCLIImageInfo *ii = image->image_info;
+               MonoCLIImageInfo *ii = (MonoCLIImageInfo *)image->image_info;
 
                if ((image->raw_metadata > image->raw_data) &&
                        (image->raw_metadata <= (image->raw_data + image->raw_data_len)))
@@ -1714,7 +1829,7 @@ mono_image_close_except_pools (MonoImage *image)
                mono_bitset_free (image->interface_bitset);
        }
        if (image->image_info){
-               MonoCLIImageInfo *ii = image->image_info;
+               MonoCLIImageInfo *ii = (MonoCLIImageInfo *)image->image_info;
 
                if (ii->cli_section_tables)
                        g_free (ii->cli_section_tables);
@@ -1732,8 +1847,8 @@ mono_image_close_except_pools (MonoImage *image)
        if (image->modules_loaded)
                g_free (image->modules_loaded);
 
-       mono_mutex_destroy (&image->szarray_cache_lock);
-       mono_mutex_destroy (&image->lock);
+       mono_os_mutex_destroy (&image->szarray_cache_lock);
+       mono_os_mutex_destroy (&image->lock);
 
        /*g_print ("destroy image %p (dynamic: %d)\n", image, image->dynamic);*/
        if (image_is_dynamic (image)) {
@@ -1934,7 +2049,7 @@ mono_image_lookup_resource (MonoImage *image, guint32 res_id, guint32 lang_id, g
 
        mono_image_ensure_section_idx (image, MONO_SECTION_RSRC);
 
-       info=image->image_info;
+       info = (MonoCLIImageInfo *)image->image_info;
        if(info==NULL) {
                return(NULL);
        }
@@ -2007,7 +2122,7 @@ mono_image_get_entry_point (MonoImage *image)
 const char*
 mono_image_get_resource (MonoImage *image, guint32 offset, guint32 *size)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        MonoCLIHeader *ch = &iinfo->cli_cli_header;
        const char* data;
 
@@ -2097,7 +2212,7 @@ done:
 const char*
 mono_image_get_strong_name (MonoImage *image, guint32 *size)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        MonoPEDirEntry *de = &iinfo->cli_cli_header.ch_strong_name;
        const char* data;
 
@@ -2125,7 +2240,7 @@ mono_image_get_strong_name (MonoImage *image, guint32 *size)
 guint32
 mono_image_strong_name_position (MonoImage *image, guint32 *size)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        MonoPEDirEntry *de = &iinfo->cli_cli_header.ch_strong_name;
        guint32 pos;
 
@@ -2269,7 +2384,7 @@ mono_image_is_dynamic (MonoImage *image)
 gboolean
 mono_image_has_authenticode_entry (MonoImage *image)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
        MonoDotNetHeader *header = &iinfo->cli_header;
        MonoPEDirEntry *de = &header->datadir.pe_certificate_table;
        // the Authenticode "pre" (non ASN.1) header is 8 bytes long
@@ -2326,7 +2441,7 @@ g_list_prepend_image (MonoImage *image, GList *list, gpointer data)
 {
        GList *new_list;
        
-       new_list = mono_image_alloc (image, sizeof (GList));
+       new_list = (GList *)mono_image_alloc (image, sizeof (GList));
        new_list->data = data;
        new_list->prev = list ? list->prev : NULL;
     new_list->next = list;
@@ -2344,7 +2459,7 @@ g_slist_append_image (MonoImage *image, GSList *list, gpointer data)
 {
        GSList *new_list;
 
-       new_list = mono_image_alloc (image, sizeof (GSList));
+       new_list = (GSList *)mono_image_alloc (image, sizeof (GSList));
        new_list->data = data;
        new_list->next = NULL;
 
@@ -2354,13 +2469,13 @@ g_slist_append_image (MonoImage *image, GSList *list, gpointer data)
 void
 mono_image_lock (MonoImage *image)
 {
-       mono_locks_acquire (&image->lock, ImageDataLock);
+       mono_locks_os_acquire (&image->lock, ImageDataLock);
 }
 
 void
 mono_image_unlock (MonoImage *image)
 {
-       mono_locks_release (&image->lock, ImageDataLock);
+       mono_locks_os_release (&image->lock, ImageDataLock);
 }
 
 
@@ -2414,11 +2529,50 @@ mono_image_property_remove (MonoImage *image, gpointer subject)
 }
 
 void
-mono_image_append_class_to_reflection_info_set (MonoClass *class)
+mono_image_append_class_to_reflection_info_set (MonoClass *klass)
 {
-       MonoImage *image = class->image;
+       MonoImage *image = klass->image;
        g_assert (image_is_dynamic (image));
        mono_image_lock (image);
-       image->reflection_info_unregister_classes = g_slist_prepend_mempool (image->mempool, image->reflection_info_unregister_classes, class);
+       image->reflection_info_unregister_classes = g_slist_prepend_mempool (image->mempool, image->reflection_info_unregister_classes, klass);
        mono_image_unlock (image);
 }
+
+// This is support for the mempool reference tracking feature in checked-build, but lives in image.c due to use of static variables of this file.
+
+/**
+ * mono_find_image_owner:
+ *
+ * Find the image, if any, which a given pointer is located in the memory of.
+ */
+MonoImage *
+mono_find_image_owner (void *ptr)
+{
+       mono_images_lock ();
+
+       MonoImage *owner = NULL;
+
+       // Iterate over both by-path image hashes
+       const int hash_candidates[] = {IMAGES_HASH_PATH, IMAGES_HASH_PATH_REFONLY};
+       int hash_idx;
+       for (hash_idx = 0; !owner && hash_idx < G_N_ELEMENTS (hash_candidates); hash_idx++)
+       {
+               GHashTable *target = loaded_images_hashes [hash_candidates [hash_idx]];
+               GHashTableIter iter;
+               MonoImage *image;
+
+               // Iterate over images within a hash
+               g_hash_table_iter_init (&iter, target);
+               while (!owner && g_hash_table_iter_next(&iter, NULL, (gpointer *)&image))
+               {
+                       mono_image_lock (image);
+                       if (mono_mempool_contains_addr (image->mempool, ptr))
+                               owner = image;
+                       mono_image_unlock (image);
+               }
+       }
+
+       mono_images_unlock ();
+
+       return owner;
+}
index be78f82c43c73bd26763c78fbe3c0a4725357fc9..33dd5471c5fc713016ed172149a0b0642720d9bb 100644 (file)
 #include <string.h>
 #include <sys/stat.h>
 
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 
 #include <mono/utils/atomic.h>
 #include <mono/utils/mono-compiler.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/hazard-pointer.h>
@@ -33,7 +33,7 @@
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/exception.h>
 #include <mono/metadata/metadata-internals.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/appdomain.h>
 #include <mono/metadata/mono-debug-debugger.h>
 #include <mono/metadata/mono-config.h>
@@ -90,7 +90,7 @@ jit_info_table_new_chunk (void)
 MonoJitInfoTable *
 mono_jit_info_table_new (MonoDomain *domain)
 {
-       MonoJitInfoTable *table = g_malloc0 (MONO_SIZEOF_JIT_INFO_TABLE + sizeof (MonoJitInfoTableChunk*));
+       MonoJitInfoTable *table = (MonoJitInfoTable *)g_malloc0 (MONO_SIZEOF_JIT_INFO_TABLE + sizeof (MonoJitInfoTableChunk*));
 
        table->domain = domain;
        table->num_chunks = 1;
@@ -197,7 +197,7 @@ jit_info_table_chunk_index (MonoJitInfoTableChunk *chunk, MonoThreadHazardPointe
 
        while (left < right) {
                int pos = (left + right) / 2;
-               MonoJitInfo *ji = get_hazardous_pointer((gpointer volatile*)&chunk->data [pos], hp, JIT_INFO_HAZARD_INDEX);
+               MonoJitInfo *ji = (MonoJitInfo *)get_hazardous_pointer((gpointer volatile*)&chunk->data [pos], hp, JIT_INFO_HAZARD_INDEX);
                gint8 *code_end = (gint8*)ji->code_start + ji->code_size;
 
                if (addr < code_end)
@@ -230,7 +230,7 @@ jit_info_table_find (MonoJitInfoTable *table, MonoThreadHazardPointers *hp, gint
                MonoJitInfoTableChunk *chunk = table->chunks [chunk_pos];
 
                while (pos < chunk->num_elements) {
-                       ji = get_hazardous_pointer ((gpointer volatile*)&chunk->data [pos], hp, JIT_INFO_HAZARD_INDEX);
+                       ji = (MonoJitInfo *)get_hazardous_pointer ((gpointer volatile*)&chunk->data [pos], hp, JIT_INFO_HAZARD_INDEX);
 
                        ++pos;
 
@@ -288,7 +288,7 @@ mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_
           table by a hazard pointer and make sure that the pointer is
           still there after we've made it hazardous, we don't have to
           worry about the writer freeing the table. */
-       table = get_hazardous_pointer ((gpointer volatile*)&domain->jit_info_table, hp, JIT_INFO_TABLE_HAZARD_INDEX);
+       table = (MonoJitInfoTable *)get_hazardous_pointer ((gpointer volatile*)&domain->jit_info_table, hp, JIT_INFO_TABLE_HAZARD_INDEX);
 
        ji = jit_info_table_find (table, hp, (gint8*)addr);
        if (hp)
@@ -300,7 +300,7 @@ mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_
 
        /* Maybe its an AOT module */
        if (try_aot && mono_get_root_domain () && mono_get_root_domain ()->aot_modules) {
-               table = get_hazardous_pointer ((gpointer volatile*)&mono_get_root_domain ()->aot_modules, hp, JIT_INFO_TABLE_HAZARD_INDEX);
+               table = (MonoJitInfoTable *)get_hazardous_pointer ((gpointer volatile*)&mono_get_root_domain ()->aot_modules, hp, JIT_INFO_TABLE_HAZARD_INDEX);
                module_ji = jit_info_table_find (table, hp, (gint8*)addr);
                if (module_ji)
                        ji = jit_info_find_in_aot_func (domain, module_ji->d.image, addr);
@@ -335,10 +335,10 @@ jit_info_table_check (MonoJitInfoTable *table)
                g_assert (chunk->num_elements <= MONO_JIT_INFO_TABLE_CHUNK_SIZE);
 
                for (j = 0; j < chunk->num_elements; ++j) {
-                       MonoJitInfo *this = chunk->data [j];
+                       MonoJitInfo *this_ji = chunk->data [j];
                        MonoJitInfo *next;
 
-                       g_assert ((gint8*)this->code_start + this->code_size <= chunk->last_code_end);
+                       g_assert ((gint8*)this_ji->code_start + this_ji->code_size <= chunk->last_code_end);
 
                        if (j < chunk->num_elements - 1)
                                next = chunk->data [j + 1];
@@ -357,7 +357,7 @@ jit_info_table_check (MonoJitInfoTable *table)
                        } else
                                return;
 
-                       g_assert ((gint8*)this->code_start + this->code_size <= (gint8*)next->code_start + next->code_size);
+                       g_assert ((gint8*)this_ji->code_start + this_ji->code_size <= (gint8*)next->code_start + next->code_size);
                }
        }
 }
@@ -370,7 +370,7 @@ jit_info_table_realloc (MonoJitInfoTable *old)
        int required_size;
        int num_chunks;
        int new_chunk, new_element;
-       MonoJitInfoTable *new;
+       MonoJitInfoTable *result;
 
        /* number of needed places for elements needed */
        required_size = (int)((long)num_elements * JIT_INFO_TABLE_FILL_RATIO_DENOM / JIT_INFO_TABLE_FILL_RATIO_NOM);
@@ -381,12 +381,12 @@ jit_info_table_realloc (MonoJitInfoTable *old)
        }
        g_assert (num_chunks > 0);
 
-       new = g_malloc (MONO_SIZEOF_JIT_INFO_TABLE + sizeof (MonoJitInfoTableChunk*) * num_chunks);
-       new->domain = old->domain;
-       new->num_chunks = num_chunks;
+       result = (MonoJitInfoTable *)g_malloc (MONO_SIZEOF_JIT_INFO_TABLE + sizeof (MonoJitInfoTableChunk*) * num_chunks);
+       result->domain = old->domain;
+       result->num_chunks = num_chunks;
 
        for (i = 0; i < num_chunks; ++i)
-               new->chunks [i] = jit_info_table_new_chunk ();
+               result->chunks [i] = jit_info_table_new_chunk ();
 
        new_chunk = 0;
        new_element = 0;
@@ -398,9 +398,9 @@ jit_info_table_realloc (MonoJitInfoTable *old)
                for (j = 0; j < chunk_num_elements; ++j) {
                        if (!IS_JIT_INFO_TOMBSTONE (chunk->data [j])) {
                                g_assert (new_chunk < num_chunks);
-                               new->chunks [new_chunk]->data [new_element] = chunk->data [j];
+                               result->chunks [new_chunk]->data [new_element] = chunk->data [j];
                                if (++new_element >= JIT_INFO_TABLE_FILLED_NUM_ELEMENTS) {
-                                       new->chunks [new_chunk]->num_elements = new_element;
+                                       result->chunks [new_chunk]->num_elements = new_element;
                                        ++new_chunk;
                                        new_element = 0;
                                }
@@ -410,18 +410,18 @@ jit_info_table_realloc (MonoJitInfoTable *old)
 
        if (new_chunk < num_chunks) {
                g_assert (new_chunk == num_chunks - 1);
-               new->chunks [new_chunk]->num_elements = new_element;
-               g_assert (new->chunks [new_chunk]->num_elements > 0);
+               result->chunks [new_chunk]->num_elements = new_element;
+               g_assert (result->chunks [new_chunk]->num_elements > 0);
        }
 
        for (i = 0; i < num_chunks; ++i) {
-               MonoJitInfoTableChunk *chunk = new->chunks [i];
+               MonoJitInfoTableChunk *chunk = result->chunks [i];
                MonoJitInfo *ji = chunk->data [chunk->num_elements - 1];
 
-               new->chunks [i]->last_code_end = (gint8*)ji->code_start + ji->code_size;
+               result->chunks [i]->last_code_end = (gint8*)ji->code_start + ji->code_size;
        }
 
-       return new;
+       return result;
 }
 
 static void
@@ -450,7 +450,7 @@ jit_info_table_split_chunk (MonoJitInfoTableChunk *chunk, MonoJitInfoTableChunk
 static MonoJitInfoTable*
 jit_info_table_copy_and_split_chunk (MonoJitInfoTable *table, MonoJitInfoTableChunk *chunk)
 {
-       MonoJitInfoTable *new_table = g_malloc (MONO_SIZEOF_JIT_INFO_TABLE
+       MonoJitInfoTable *new_table = (MonoJitInfoTable *)g_malloc (MONO_SIZEOF_JIT_INFO_TABLE
                + sizeof (MonoJitInfoTableChunk*) * (table->num_chunks + 1));
        int i, j;
 
@@ -477,28 +477,28 @@ jit_info_table_copy_and_split_chunk (MonoJitInfoTable *table, MonoJitInfoTableCh
 static MonoJitInfoTableChunk*
 jit_info_table_purify_chunk (MonoJitInfoTableChunk *old)
 {
-       MonoJitInfoTableChunk *new = jit_info_table_new_chunk ();
+       MonoJitInfoTableChunk *result = jit_info_table_new_chunk ();
        int i, j;
 
        j = 0;
        for (i = 0; i < old->num_elements; ++i) {
                if (!IS_JIT_INFO_TOMBSTONE (old->data [i]))
-                       new->data [j++] = old->data [i];
+                       result->data [j++] = old->data [i];
        }
 
-       new->num_elements = j;
-       if (new->num_elements > 0)
-               new->last_code_end = (gint8*)new->data [j - 1]->code_start + new->data [j - 1]->code_size;
+       result->num_elements = j;
+       if (result->num_elements > 0)
+               result->last_code_end = (gint8*)result->data [j - 1]->code_start + result->data [j - 1]->code_size;
        else
-               new->last_code_end = old->last_code_end;
+               result->last_code_end = old->last_code_end;
 
-       return new;
+       return result;
 }
 
 static MonoJitInfoTable*
 jit_info_table_copy_and_purify_chunk (MonoJitInfoTable *table, MonoJitInfoTableChunk *chunk)
 {
-       MonoJitInfoTable *new_table = g_malloc (MONO_SIZEOF_JIT_INFO_TABLE
+       MonoJitInfoTable *new_table = (MonoJitInfoTable *)g_malloc (MONO_SIZEOF_JIT_INFO_TABLE
                + sizeof (MonoJitInfoTableChunk*) * table->num_chunks);
        int i, j;
 
@@ -690,10 +690,10 @@ jit_info_table_remove (MonoJitInfoTable *table, MonoJitInfo *ji)
        gpointer start = ji->code_start;
        int chunk_pos, pos;
 
-       chunk_pos = jit_info_table_index (table, start);
+       chunk_pos = jit_info_table_index (table, (gint8 *)start);
        g_assert (chunk_pos < table->num_chunks);
 
-       pos = jit_info_table_chunk_index (table->chunks [chunk_pos], NULL, start);
+       pos = jit_info_table_chunk_index (table->chunks [chunk_pos], NULL, (gint8 *)start);
 
        do {
                chunk = table->chunks [chunk_pos];
index a670e0fec5827cdd38e5faff90c2cd0bb82ebf60..0566fe2d1028268ae0b92dd1531422364d750289 100644 (file)
@@ -39,7 +39,7 @@
 #include <mono/metadata/marshal.h>
 #include <mono/metadata/lock-tracer.h>
 #include <mono/metadata/verify-internals.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-dl.h>
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/mono-counters.h>
@@ -56,7 +56,8 @@ MonoDefaults mono_defaults;
  * See domain-internals.h for locking policy in combination with the
  * domain lock.
  */
-static mono_mutex_t loader_mutex, global_loader_data_mutex;
+static MonoCoopMutex loader_mutex;
+static mono_mutex_t global_loader_data_mutex;
 static gboolean loader_lock_inited;
 
 /* Statistics */
@@ -82,13 +83,13 @@ static void dllmap_cleanup (void);
 static void
 global_loader_data_lock (void)
 {
-       mono_locks_acquire (&global_loader_data_mutex, LoaderGlobalDataLock);
+       mono_locks_os_acquire (&global_loader_data_mutex, LoaderGlobalDataLock);
 }
 
 static void
 global_loader_data_unlock (void)
 {
-       mono_locks_release (&global_loader_data_mutex, LoaderGlobalDataLock);
+       mono_locks_os_release (&global_loader_data_mutex, LoaderGlobalDataLock);
 }
 
 void
@@ -97,8 +98,8 @@ mono_loader_init ()
        static gboolean inited;
 
        if (!inited) {
-               mono_mutex_init_recursive (&loader_mutex);
-               mono_mutex_init_recursive (&global_loader_data_mutex);
+               mono_coop_mutex_init_recursive (&loader_mutex);
+               mono_os_mutex_init_recursive (&global_loader_data_mutex);
                loader_lock_inited = TRUE;
 
                mono_native_tls_alloc (&loader_error_thread_id, NULL);
@@ -126,8 +127,8 @@ mono_loader_cleanup (void)
        mono_native_tls_free (loader_error_thread_id);
        mono_native_tls_free (loader_lock_nest_id);
 
-       mono_mutex_destroy (&loader_mutex);
-       mono_mutex_destroy (&global_loader_data_mutex);
+       mono_coop_mutex_destroy (&loader_mutex);
+       mono_os_mutex_destroy (&global_loader_data_mutex);
        loader_lock_inited = FALSE;     
 }
 
@@ -460,7 +461,7 @@ field_from_memberref (MonoImage *image, guint32 token, MonoClass **retklass,
        MonoTableInfo *tables = image->tables;
        MonoType *sig_type;
        guint32 cols[6];
-       guint32 nindex, class;
+       guint32 nindex, class_index;
        const char *fname;
        const char *ptr;
        guint32 idx = mono_metadata_token_index (token);
@@ -469,16 +470,16 @@ field_from_memberref (MonoImage *image, guint32 token, MonoClass **retklass,
 
        mono_metadata_decode_row (&tables [MONO_TABLE_MEMBERREF], idx-1, cols, MONO_MEMBERREF_SIZE);
        nindex = cols [MONO_MEMBERREF_CLASS] >> MONO_MEMBERREF_PARENT_BITS;
-       class = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
+       class_index = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
 
        fname = mono_metadata_string_heap (image, cols [MONO_MEMBERREF_NAME]);
 
        if (!mono_verifier_verify_memberref_field_signature (image, cols [MONO_MEMBERREF_SIGNATURE], NULL)) {
-               mono_error_set_bad_image (error, image, "Bad field '%s' signature 0x%08x", class, token);
+               mono_error_set_bad_image (error, image, "Bad field '%s' signature 0x%08x", class_index, token);
                return NULL;
        }
 
-       switch (class) {
+       switch (class_index) {
        case MONO_MEMBERREF_PARENT_TYPEDEF:
                klass = mono_class_get_checked (image, MONO_TOKEN_TYPE_DEF | nindex, error);
                break;
@@ -489,7 +490,7 @@ field_from_memberref (MonoImage *image, guint32 token, MonoClass **retklass,
                klass = mono_class_get_and_inflate_typespec_checked (image, MONO_TOKEN_TYPE_SPEC | nindex, context, error);
                break;
        default:
-               mono_error_set_bad_image (error, image, "Bad field field '%s' signature 0x%08x", class, token);
+               mono_error_set_bad_image (error, image, "Bad field field '%s' signature 0x%08x", class_index, token);
        }
 
        if (!klass)
@@ -500,21 +501,21 @@ field_from_memberref (MonoImage *image, guint32 token, MonoClass **retklass,
        /* we may want to check the signature here... */
 
        if (*ptr++ != 0x6) {
-               mono_error_set_field_load (error, klass, fname, "Bad field signature class token %08x field name %s token %08x", class, fname, token);
+               mono_error_set_field_load (error, klass, fname, "Bad field signature class token %08x field name %s token %08x", class_index, fname, token);
                return NULL;
        }
 
        /* FIXME: This needs a cache, especially for generic instances, since
         * mono_metadata_parse_type () allocates everything from a mempool.
         */
-       sig_type = find_cached_memberref_sig (image, cols [MONO_MEMBERREF_SIGNATURE]);
+       sig_type = (MonoType *)find_cached_memberref_sig (image, cols [MONO_MEMBERREF_SIGNATURE]);
        if (!sig_type) {
                sig_type = mono_metadata_parse_type (image, MONO_PARSE_TYPE, 0, ptr, &ptr);
                if (sig_type == NULL) {
                        mono_error_set_field_load (error, klass, fname, "Could not parse field '%s' signature %08x", fname, token);
                        return NULL;
                }
-               sig_type = cache_memberref_sig (image, cols [MONO_MEMBERREF_SIGNATURE], sig_type);
+               sig_type = (MonoType *)cache_memberref_sig (image, cols [MONO_MEMBERREF_SIGNATURE], sig_type);
        }
 
        mono_class_init (klass); /*FIXME is this really necessary?*/
@@ -561,7 +562,7 @@ mono_field_from_token_checked (MonoImage *image, guint32 token, MonoClass **retk
                MonoClass *handle_class;
 
                *retklass = NULL;
-               result = mono_lookup_dynamic_token_class (image, token, TRUE, &handle_class, context);
+               result = (MonoClassField *)mono_lookup_dynamic_token_class (image, token, TRUE, &handle_class, context);
                // This checks the memberref type as well
                if (!result || handle_class != mono_defaults.fieldhandle_class) {
                        mono_error_set_bad_image (error, image, "Bad field token 0x%08x", token);
@@ -571,7 +572,7 @@ mono_field_from_token_checked (MonoImage *image, guint32 token, MonoClass **retk
                return result;
        }
 
-       if ((field = mono_conc_hashtable_lookup (image->field_cache, GUINT_TO_POINTER (token)))) {
+       if ((field = (MonoClassField *)mono_conc_hashtable_lookup (image->field_cache, GUINT_TO_POINTER (token)))) {
                *retklass = field->parent;
                return field;
        }
@@ -814,7 +815,7 @@ inflate_generic_signature_checked (MonoImage *image, MonoMethodSignature *sig, M
        if (!context)
                return sig;
 
-       res = g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + ((gint32)sig->param_count) * sizeof (MonoType*));
+       res = (MonoMethodSignature *)g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + ((gint32)sig->param_count) * sizeof (MonoType*));
        res->param_count = sig->param_count;
        res->sentinelpos = -1;
        res->ret = mono_class_inflate_generic_type_checked (sig->ret, context, error);
@@ -874,7 +875,7 @@ inflate_generic_header (MonoMethodHeader *header, MonoGenericContext *context)
 {
        MonoMethodHeader *res;
        int i;
-       res = g_malloc0 (MONO_SIZEOF_METHOD_HEADER + sizeof (gpointer) * header->num_locals);
+       res = (MonoMethodHeader *)g_malloc0 (MONO_SIZEOF_METHOD_HEADER + sizeof (gpointer) * header->num_locals);
        res->code = header->code;
        res->code_size = header->code_size;
        res->max_stack = header->max_stack;
@@ -885,7 +886,7 @@ inflate_generic_header (MonoMethodHeader *header, MonoGenericContext *context)
        for (i = 0; i < header->num_locals; ++i)
                res->locals [i] = mono_class_inflate_generic_type (header->locals [i], context);
        if (res->num_clauses) {
-               res->clauses = g_memdup (header->clauses, sizeof (MonoExceptionClause) * res->num_clauses);
+               res->clauses = (MonoExceptionClause *)g_memdup (header->clauses, sizeof (MonoExceptionClause) * res->num_clauses);
                for (i = 0; i < header->num_clauses; ++i) {
                        MonoExceptionClause *clause = &res->clauses [i];
                        if (clause->flags != MONO_EXCEPTION_CLAUSE_NONE)
@@ -950,14 +951,14 @@ mono_method_get_signature_checked (MonoMethod *method, MonoImage *image, guint32
                mono_metadata_decode_row (&image->tables [MONO_TABLE_MEMBERREF], idx-1, cols, MONO_MEMBERREF_SIZE);
                sig_idx = cols [MONO_MEMBERREF_SIGNATURE];
 
-               sig = find_cached_memberref_sig (image, sig_idx);
+               sig = (MonoMethodSignature *)find_cached_memberref_sig (image, sig_idx);
                if (!sig) {
                        if (!mono_verifier_verify_memberref_method_signature (image, sig_idx, NULL)) {
-                               guint32 class = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
+                               guint32 klass = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
                                const char *fname = mono_metadata_string_heap (image, cols [MONO_MEMBERREF_NAME]);
 
                                //FIXME include the verification error
-                               mono_error_set_bad_image (error, image, "Bad method signature class token 0x%08x field name %s token 0x%08x", class, fname, token);
+                               mono_error_set_bad_image (error, image, "Bad method signature class token 0x%08x field name %s token 0x%08x", klass, fname, token);
                                return NULL;
                        }
 
@@ -968,14 +969,14 @@ mono_method_get_signature_checked (MonoMethod *method, MonoImage *image, guint32
                        if (!sig)
                                return NULL;
 
-                       sig = cache_memberref_sig (image, sig_idx, sig);
+                       sig = (MonoMethodSignature *)cache_memberref_sig (image, sig_idx, sig);
                }
                /* FIXME: we probably should verify signature compat in the dynamic case too*/
                if (!mono_verifier_is_sig_compatible (image, method, sig)) {
-                       guint32 class = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
+                       guint32 klass = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
                        const char *fname = mono_metadata_string_heap (image, cols [MONO_MEMBERREF_NAME]);
 
-                       mono_error_set_bad_image (error, image, "Incompatible method signature class token 0x%08x field name %s token 0x%08x", class, fname, token);
+                       mono_error_set_bad_image (error, image, "Incompatible method signature class token 0x%08x field name %s token 0x%08x", klass, fname, token);
                        return NULL;
                }
        }
@@ -1040,7 +1041,7 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
        MonoMethod *method = NULL;
        MonoTableInfo *tables = image->tables;
        guint32 cols[6];
-       guint32 nindex, class, sig_idx;
+       guint32 nindex, class_index, sig_idx;
        const char *mname;
        MonoMethodSignature *sig;
        const char *ptr;
@@ -1049,7 +1050,7 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
 
        mono_metadata_decode_row (&tables [MONO_TABLE_MEMBERREF], idx-1, cols, 3);
        nindex = cols [MONO_MEMBERREF_CLASS] >> MONO_MEMBERREF_PARENT_BITS;
-       class = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
+       class_index = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
        /*g_print ("methodref: 0x%x 0x%x %s\n", class, nindex,
                mono_metadata_string_heap (m, cols [MONO_MEMBERREF_NAME]));*/
 
@@ -1061,9 +1062,9 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
         * method into a cache.
         */
        if (used_context)
-               *used_context = class == MONO_MEMBERREF_PARENT_TYPESPEC;
+               *used_context = class_index == MONO_MEMBERREF_PARENT_TYPESPEC;
 
-       switch (class) {
+       switch (class_index) {
        case MONO_MEMBERREF_PARENT_TYPEREF:
                klass = mono_class_from_typeref_checked (image, MONO_TOKEN_TYPE_REF | nindex, error);
                if (!klass)
@@ -1089,7 +1090,7 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
                return method;
        }
        default:
-               mono_error_set_bad_image (error, image, "Memberref parent unknown: class: %d, index %d", class, nindex);
+               mono_error_set_bad_image (error, image, "Memberref parent unknown: class: %d, index %d", class_index, nindex);
                goto fail;
        }
 
@@ -1106,16 +1107,16 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
        ptr = mono_metadata_blob_heap (image, sig_idx);
        mono_metadata_decode_blob_size (ptr, &ptr);
 
-       sig = find_cached_memberref_sig (image, sig_idx);
+       sig = (MonoMethodSignature *)find_cached_memberref_sig (image, sig_idx);
        if (!sig) {
                sig = mono_metadata_parse_method_signature_full (image, NULL, 0, ptr, NULL, error);
                if (sig == NULL)
                        goto fail;
 
-               sig = cache_memberref_sig (image, sig_idx, sig);
+               sig = (MonoMethodSignature *)cache_memberref_sig (image, sig_idx, sig);
        }
 
-       switch (class) {
+       switch (class_index) {
        case MONO_MEMBERREF_PARENT_TYPEREF:
        case MONO_MEMBERREF_PARENT_TYPEDEF:
                method = find_method (klass, NULL, mname, sig, klass, error);
@@ -1137,7 +1138,7 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
                break;
        }
        default:
-               mono_error_set_bad_image (error, image,"Memberref parent unknown: class: %d, index %d", class, nindex);
+               mono_error_set_bad_image (error, image,"Memberref parent unknown: class: %d, index %d", class_index, nindex);
                goto fail;
        }
 
@@ -1196,12 +1197,9 @@ method_from_methodspec (MonoImage *image, MonoGenericContext *context, guint32 i
        ptr++;
        param_count = mono_metadata_decode_value (ptr, &ptr);
 
-       inst = mono_metadata_parse_generic_inst (image, NULL, param_count, ptr, &ptr);
-       if (!inst) {
-               mono_loader_assert_no_error ();
-               mono_error_set_bad_image (error, image, "Cannot parse generic instance for methodspec 0x%08x", idx);
+       inst = mono_metadata_parse_generic_inst (image, NULL, param_count, ptr, &ptr, error);
+       if (!inst)
                return NULL;
-       }
 
        if (context && inst->is_open) {
                inst = mono_metadata_inflate_generic_inst (inst, context, error);
@@ -1334,7 +1332,7 @@ mono_dllmap_insert (MonoImage *assembly, const char *dll, const char *func, cons
        mono_loader_init ();
 
        if (!assembly) {
-               entry = g_malloc0 (sizeof (MonoDllMap));
+               entry = (MonoDllMap *)g_malloc0 (sizeof (MonoDllMap));
                entry->dll = dll? g_strdup (dll): NULL;
                entry->target = tdll? g_strdup (tdll): NULL;
                entry->func = func? g_strdup (func): NULL;
@@ -1345,7 +1343,7 @@ mono_dllmap_insert (MonoImage *assembly, const char *dll, const char *func, cons
                global_dll_map = entry;
                global_loader_data_unlock ();
        } else {
-               entry = mono_image_alloc0 (assembly, sizeof (MonoDllMap));
+               entry = (MonoDllMap *)mono_image_alloc0 (assembly, sizeof (MonoDllMap));
                entry->dll = dll? mono_image_strdup (assembly, dll): NULL;
                entry->target = tdll? mono_image_strdup (assembly, tdll): NULL;
                entry->func = func? mono_image_strdup (assembly, func): NULL;
@@ -1392,7 +1390,7 @@ cached_module_load (const char *name, int flags, char **err)
        global_loader_data_lock ();
        if (!global_module_map)
                global_module_map = g_hash_table_new (g_str_hash, g_str_equal);
-       res = g_hash_table_lookup (global_module_map, name);
+       res = (MonoDl *)g_hash_table_lookup (global_module_map, name);
        if (res) {
                global_loader_data_unlock ();
                return res;
@@ -1448,7 +1446,7 @@ mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char
 
        if (image_is_dynamic (method->klass->image)) {
                MonoReflectionMethodAux *method_aux = 
-                       g_hash_table_lookup (
+                       (MonoReflectionMethodAux *)g_hash_table_lookup (
                                ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
                if (!method_aux)
                        return NULL;
@@ -1479,8 +1477,8 @@ mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char
                        image->pinvoke_scopes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
                        image->pinvoke_scope_filenames = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
                }
-               module = g_hash_table_lookup (image->pinvoke_scopes, new_scope);
-               found_name = g_hash_table_lookup (image->pinvoke_scope_filenames, new_scope);
+               module = (MonoDl *)g_hash_table_lookup (image->pinvoke_scopes, new_scope);
+               found_name = (char *)g_hash_table_lookup (image->pinvoke_scope_filenames, new_scope);
                mono_image_unlock (image);
                if (module)
                        cached = TRUE;
@@ -1868,7 +1866,7 @@ mono_get_method_from_token (MonoImage *image, guint32 token, MonoClass *klass,
        if (image_is_dynamic (image)) {
                MonoClass *handle_class;
 
-               result = mono_lookup_dynamic_token_class (image, token, TRUE, &handle_class, context);
+               result = (MonoMethod *)mono_lookup_dynamic_token_class (image, token, TRUE, &handle_class, context);
                mono_loader_assert_no_error ();
 
                // This checks the memberref type as well
@@ -1945,6 +1943,7 @@ mono_get_method_from_token (MonoImage *image, guint32 token, MonoClass *klass,
        if (generic_container) {
                result->is_generic = TRUE;
                generic_container->owner.method = result;
+               generic_container->is_anonymous = FALSE; // Method is now known, container is no longer anonymous
                /*FIXME put this before the image alloc*/
                if (!mono_metadata_load_generic_param_constraints_checked (image, token, generic_container, error))
                        return NULL;
@@ -2013,11 +2012,11 @@ mono_get_method_checked (MonoImage *image, guint32 token, MonoClass *klass, Mono
        if (mono_metadata_token_table (token) == MONO_TABLE_METHOD) {
                if (!image->method_cache)
                        image->method_cache = g_hash_table_new (NULL, NULL);
-               result = g_hash_table_lookup (image->method_cache, GINT_TO_POINTER (mono_metadata_token_index (token)));
+               result = (MonoMethod *)g_hash_table_lookup (image->method_cache, GINT_TO_POINTER (mono_metadata_token_index (token)));
        } else if (!image_is_dynamic (image)) {
                if (!image->methodref_cache)
                        image->methodref_cache = g_hash_table_new (NULL, NULL);
-               result = g_hash_table_lookup (image->methodref_cache, GINT_TO_POINTER (token));
+               result = (MonoMethod *)g_hash_table_lookup (image->methodref_cache, GINT_TO_POINTER (token));
        }
        mono_image_unlock (image);
 
@@ -2034,9 +2033,9 @@ mono_get_method_checked (MonoImage *image, guint32 token, MonoClass *klass, Mono
                MonoMethod *result2 = NULL;
 
                if (mono_metadata_token_table (token) == MONO_TABLE_METHOD)
-                       result2 = g_hash_table_lookup (image->method_cache, GINT_TO_POINTER (mono_metadata_token_index (token)));
+                       result2 = (MonoMethod *)g_hash_table_lookup (image->method_cache, GINT_TO_POINTER (mono_metadata_token_index (token)));
                else if (!image_is_dynamic (image))
-                       result2 = g_hash_table_lookup (image->methodref_cache, GINT_TO_POINTER (token));
+                       result2 = (MonoMethod *)g_hash_table_lookup (image->methodref_cache, GINT_TO_POINTER (token));
 
                if (result2) {
                        mono_image_unlock (image);
@@ -2232,7 +2231,7 @@ mono_method_get_param_names (MonoMethod *method, const char **names)
 
        if (image_is_dynamic (klass->image)) {
                MonoReflectionMethodAux *method_aux = 
-                       g_hash_table_lookup (
+                       (MonoReflectionMethodAux *)g_hash_table_lookup (
                                ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
                if (method_aux && method_aux->param_names) {
                        for (i = 0; i < mono_method_signature (method)->param_count; ++i)
@@ -2247,7 +2246,7 @@ mono_method_get_param_names (MonoMethod *method, const char **names)
 
                mono_image_lock (klass->image);
                if (klass->image->wrapper_param_names)
-                       pnames = g_hash_table_lookup (klass->image->wrapper_param_names, method);
+                       pnames = (char **)g_hash_table_lookup (klass->image->wrapper_param_names, method);
                mono_image_unlock (klass->image);
 
                if (pnames) {
@@ -2323,7 +2322,7 @@ mono_method_get_marshal_info (MonoMethod *method, MonoMarshalSpec **mspecs)
 
        if (image_is_dynamic (method->klass->image)) {
                MonoReflectionMethodAux *method_aux = 
-                       g_hash_table_lookup (
+                       (MonoReflectionMethodAux *)g_hash_table_lookup (
                                ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
                if (method_aux && method_aux->param_marshall) {
                        MonoMarshalSpec **dyn_specs = method_aux->param_marshall;
@@ -2378,7 +2377,7 @@ mono_method_has_marshal_info (MonoMethod *method)
 
        if (image_is_dynamic (method->klass->image)) {
                MonoReflectionMethodAux *method_aux = 
-                       g_hash_table_lookup (
+                       (MonoReflectionMethodAux *)g_hash_table_lookup (
                                ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
                MonoMarshalSpec **dyn_specs = method_aux->param_marshall;
                if (dyn_specs) {
@@ -2423,7 +2422,7 @@ mono_method_get_wrapper_data (MonoMethod *method, guint32 id)
 
        if (method->is_inflated)
                method = ((MonoMethodInflated *) method)->declaring;
-       data = ((MonoMethodWrapper *)method)->method_data;
+       data = (void **)((MonoMethodWrapper *)method)->method_data;
        g_assert (data != NULL);
        g_assert (id <= GPOINTER_TO_UINT (*data));
        return data [id];
@@ -2437,7 +2436,7 @@ typedef struct {
 static gboolean
 stack_walk_adapter (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
-       StackWalkUserData *d = data;
+       StackWalkUserData *d = (StackWalkUserData *)data;
 
        switch (frame->type) {
        case FRAME_TYPE_DEBUGGER_INVOKE:
@@ -2477,7 +2476,7 @@ typedef struct {
 static gboolean
 async_stack_walk_adapter (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
-       AsyncStackWalkUserData *d = data;
+       AsyncStackWalkUserData *d = (AsyncStackWalkUserData *)data;
 
        switch (frame->type) {
        case FRAME_TYPE_DEBUGGER_INVOKE:
@@ -2518,7 +2517,7 @@ mono_stack_walk_async_safe (MonoStackWalkAsyncSafe func, void *initial_sig_conte
 static gboolean
 last_managed (MonoMethod *m, gint no, gint ilo, gboolean managed, gpointer data)
 {
-       MonoMethod **dest = data;
+       MonoMethod **dest = (MonoMethod **)data;
        *dest = m;
        /*g_print ("In %s::%s [%d] [%d]\n", m->klass->name, m->name, no, ilo);*/
 
@@ -2543,10 +2542,7 @@ static gboolean loader_lock_track_ownership = FALSE;
 void
 mono_loader_lock (void)
 {
-       MONO_TRY_BLOCKING;
-       mono_locks_acquire (&loader_mutex, LoaderLock);
-       MONO_FINISH_TRY_BLOCKING;
-               
+       mono_locks_coop_acquire (&loader_mutex, LoaderLock);
        if (G_UNLIKELY (loader_lock_track_ownership)) {
                mono_native_tls_set_value (loader_lock_nest_id, GUINT_TO_POINTER (GPOINTER_TO_UINT (mono_native_tls_get_value (loader_lock_nest_id)) + 1));
        }
@@ -2555,7 +2551,7 @@ mono_loader_lock (void)
 void
 mono_loader_unlock (void)
 {
-       mono_locks_release (&loader_mutex, LoaderLock);
+       mono_locks_coop_release (&loader_mutex, LoaderLock);
        if (G_UNLIKELY (loader_lock_track_ownership)) {
                mono_native_tls_set_value (loader_lock_nest_id, GUINT_TO_POINTER (GPOINTER_TO_UINT (mono_native_tls_get_value (loader_lock_nest_id)) - 1));
        }
@@ -2674,7 +2670,7 @@ mono_method_signature_checked (MonoMethod *m, MonoError *error)
 
        if (can_cache_signature) {
                mono_image_lock (img);
-               signature = g_hash_table_lookup (img->method_signatures, sig);
+               signature = (MonoMethodSignature *)g_hash_table_lookup (img->method_signatures, sig);
                mono_image_unlock (img);
        }
 
@@ -2692,7 +2688,7 @@ mono_method_signature_checked (MonoMethod *m, MonoError *error)
 
                if (can_cache_signature) {
                        mono_image_lock (img);
-                       sig2 = g_hash_table_lookup (img->method_signatures, sig);
+                       sig2 = (MonoMethodSignature *)g_hash_table_lookup (img->method_signatures, sig);
                        if (!sig2)
                                g_hash_table_insert (img->method_signatures, (gpointer)sig, signature);
                        mono_image_unlock (img);
@@ -2718,7 +2714,7 @@ mono_method_signature_checked (MonoMethod *m, MonoError *error)
        if (m->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL)
                signature->pinvoke = 1;
        else if (m->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL) {
-               MonoCallConvention conv = 0;
+               MonoCallConvention conv = (MonoCallConvention)0;
                MonoMethodPInvoke *piinfo = (MonoMethodPInvoke *)m;
                signature->pinvoke = 1;
 
@@ -2869,7 +2865,7 @@ mono_method_get_header (MonoMethod *method)
        container = mono_method_get_generic_container (method);
        if (!container)
                container = method->klass->generic_container;
-       header = mono_metadata_parse_mh_full (img, container, loc);
+       header = mono_metadata_parse_mh_full (img, container, (const char *)loc);
 
        return header;
 }
index 1f925bd8ed23757ec15af306a6baf5cdeafe5907..52e97eaca1efa3320afd009ecebb680026719eed 100644 (file)
@@ -60,8 +60,8 @@ static const RegionInfoEntry* region_info_entry_from_lcid (int lcid);
 static int
 culture_lcid_locator (const void *a, const void *b)
 {
-       const int *lcid = a;
-       const CultureInfoEntry *bb = b;
+       const int *lcid = (const int *)a;
+       const CultureInfoEntry *bb = (const CultureInfoEntry *)b;
 
        return *lcid - bb->lcid;
 }
@@ -69,8 +69,8 @@ culture_lcid_locator (const void *a, const void *b)
 static int
 culture_name_locator (const void *a, const void *b)
 {
-       const char *aa = a;
-       const CultureInfoNameEntry *bb = b;
+       const char *aa = (const char *)a;
+       const CultureInfoNameEntry *bb = (const CultureInfoNameEntry *)b;
        int ret;
        
        ret = strcmp (aa, idx2string (bb->name));
@@ -81,8 +81,8 @@ culture_name_locator (const void *a, const void *b)
 static int
 region_name_locator (const void *a, const void *b)
 {
-       const char *aa = a;
-       const RegionInfoNameEntry *bb = b;
+       const char *aa = (const char *)a;
+       const RegionInfoNameEntry *bb = (const RegionInfoNameEntry *)b;
        int ret;
        
        ret = strcmp (aa, idx2string (bb->name));
@@ -167,7 +167,7 @@ ves_icall_System_Globalization_CalendarData_fill_calendar_data (MonoCalendarData
        char *n;
 
        n = mono_string_to_utf8 (name);
-       ne = mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
+       ne = (const CultureInfoNameEntry *)mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
                        sizeof (CultureInfoNameEntry), culture_name_locator);
        g_free (n);
        if (ne == NULL) {
@@ -231,7 +231,7 @@ ves_icall_System_Globalization_CultureData_fill_number_data (MonoNumberFormatInf
        MonoDomain *domain;
        const NumberFormatEntry *nfe;
 
-       g_assert (number_index != 0);
+       g_assert (number_index >= 0);
 
        nfe = &number_format_entries [number_index];
 
@@ -317,7 +317,7 @@ culture_info_entry_from_lcid (int lcid)
 {
        const CultureInfoEntry *ci;
 
-       ci = mono_binary_search (&lcid, culture_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoEntry), culture_lcid_locator);
+       ci = (const CultureInfoEntry *)mono_binary_search (&lcid, culture_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoEntry), culture_lcid_locator);
 
        return ci;
 }
@@ -328,7 +328,7 @@ region_info_entry_from_lcid (int lcid)
        const RegionInfoEntry *entry;
        const CultureInfoEntry *ne;
 
-       ne = mono_binary_search (&lcid, culture_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoEntry), culture_lcid_locator);
+       ne = (const CultureInfoEntry *)mono_binary_search (&lcid, culture_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoEntry), culture_lcid_locator);
 
        if (ne == NULL)
                return FALSE;
@@ -509,7 +509,7 @@ ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_name (
        char *n;
        
        n = mono_string_to_utf8 (name);
-       ne = mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
+       ne = (const CultureInfoNameEntry *)mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
                        sizeof (CultureInfoNameEntry), culture_name_locator);
 
        if (ne == NULL) {
@@ -557,7 +557,7 @@ ves_icall_System_Globalization_RegionInfo_construct_internal_region_from_name (M
        char *n;
        
        n = mono_string_to_utf8 (name);
-       ne = mono_binary_search (n, region_name_entries, NUM_REGION_ENTRIES,
+       ne = (const RegionInfoNameEntry *)mono_binary_search (n, region_name_entries, NUM_REGION_ENTRIES,
                sizeof (RegionInfoNameEntry), region_name_locator);
 
        if (ne == NULL) {
@@ -575,7 +575,7 @@ ves_icall_System_Globalization_CultureInfo_internal_get_cultures (MonoBoolean ne
                MonoBoolean specific, MonoBoolean installed)
 {
        MonoArray *ret;
-       MonoClass *class;
+       MonoClass *klass;
        MonoCultureInfo *culture;
        MonoDomain *domain;
        const CultureInfoEntry *ci;
@@ -592,7 +592,7 @@ ves_icall_System_Globalization_CultureInfo_internal_get_cultures (MonoBoolean ne
                        len++;
        }
 
-       class = mono_class_from_name (mono_get_corlib (),
+       klass = mono_class_from_name (mono_get_corlib (),
                        "System.Globalization", "CultureInfo");
 
        /* The InvariantCulture is not in culture_entries */
@@ -600,7 +600,7 @@ ves_icall_System_Globalization_CultureInfo_internal_get_cultures (MonoBoolean ne
        if (neutral)
                len++;
 
-       ret = mono_array_new (domain, class, len);
+       ret = mono_array_new (domain, klass, len);
 
        if (len == 0)
                return ret;
@@ -613,7 +613,7 @@ ves_icall_System_Globalization_CultureInfo_internal_get_cultures (MonoBoolean ne
                ci = &culture_entries [i];
                is_neutral = ci->territory == 0;
                if ((neutral && is_neutral) || (specific && !is_neutral)) {
-                       culture = (MonoCultureInfo *) mono_object_new (domain, class);
+                       culture = (MonoCultureInfo *) mono_object_new (domain, klass);
                        mono_runtime_object_init ((MonoObject *) culture);
                        construct_culture (culture, ci);
                        culture->use_user_override = TRUE;
@@ -666,12 +666,12 @@ int ves_icall_System_Threading_Thread_current_lcid (void)
        return(0x007F);
 }
 
-MonoString *ves_icall_System_String_InternalReplace_Str_Comp (MonoString *this_obj, MonoString *old, MonoString *new, MonoCompareInfo *comp)
+MonoString *ves_icall_System_String_InternalReplace_Str_Comp (MonoString *this_obj, MonoString *old, MonoString *new_, MonoCompareInfo *comp)
 {
        /* Do a normal ascii string compare and replace, as we only
         * know the invariant locale if we dont have ICU
         */
-       return(string_invariant_replace (this_obj, old, new));
+       return(string_invariant_replace (this_obj, old, new_));
 }
 
 static gint32 string_invariant_compare_char (gunichar2 c1, gunichar2 c2,
index e0e6ac96a61053d69735feb81d1cbb5e378e5041..f0d2bca6ed49d12a513f5356d770a9790b2e53f3 100644 (file)
  * 
  * To log more kind of locks just do the following:
  *     - add an entry into the RuntimeLocks enum
- *  - change mono_mutex_lock(mutex) to mono_locks_acquire (mutex, LockName)
- *  - change mono_mutex_unlock to mono_locks_release (mutex, LockName)
+ *  - change mono_os_mutex_lock(mutex) to mono_locks_os_acquire (mutex, LockName)
+ *  - change mono_os_mutex_unlock(mutex) to mono_locks_os_release (mutex, LockName)
+ *  - change mono_coop_mutex_lock(mutex) to mono_locks_coop_acquire (mutex, LockName)
+ *  - change mono_coop_mutex_unlock(mutex) to mono_locks_coop_release (mutex, LockName)
  *  - change the decoder to understand the new lock kind.
  *
  * TODO:
@@ -71,7 +73,7 @@ mono_locks_tracer_init (void)
        Dl_info info;
        int res;
        char *name;
-       mono_mutex_init_recursive (&tracer_lock);
+       mono_os_mutex_init_recursive (&tracer_lock);
        if (!g_getenv ("MONO_ENABLE_LOCK_TRACER"))
                return;
        name = g_strdup_printf ("locks.%d", getpid ());
@@ -122,7 +124,7 @@ add_record (RecordType record_kind, RuntimeLocks kind, gpointer lock)
                frames [i] = (gpointer)((size_t)frames[i] - base_address);
 
        /*We only dump 5 frames, which should be more than enough to most analysis.*/
-       msg = g_strdup_printf ("%x,%d,%d,%p,%p,%p,%p,%p,%p\n", (guint32)GetCurrentThreadId (), record_kind, kind, lock, frames [1], frames [2], frames [3], frames [4], frames [5]);
+       msg = g_strdup_printf ("%x,%d,%d,%p,%p,%p,%p,%p,%p\n", (guint32)mono_native_thread_id_get (), record_kind, kind, lock, frames [1], frames [2], frames [3], frames [4], frames [5]);
        fwrite (msg, strlen (msg), 1, trace_file);
        fflush (trace_file);
        g_free (msg);
index 7c49bf4f59706b42bf1dfedccf81f32775626d32..ee4ab3419504a593ece5443c857a74792ae186af 100644 (file)
@@ -4,7 +4,8 @@
 /*This is a private header*/
 #include <glib.h>
 
-#include "mono/utils/mono-compiler.h"
+#include "mono/utils/mono-os-mutex.h"
+#include "mono/utils/mono-coop-mutex.h"
 
 G_BEGIN_DECLS
 
@@ -39,25 +40,30 @@ void mono_locks_lock_released (RuntimeLocks kind, gpointer lock);
 
 #endif
 
-#define mono_locks_acquire(LOCK, NAME) do { \
-       mono_mutex_lock (LOCK); \
-       mono_locks_lock_acquired (NAME, LOCK); \
-} while (0)
-
-#define mono_locks_release(LOCK, NAME) do { \
-       mono_locks_lock_released (NAME, LOCK); \
-       mono_mutex_unlock (LOCK); \
-} while (0)
-
-#define mono_locks_mutex_acquire(LOCK, NAME) do { \
-       mono_mutex_lock (LOCK); \
-       mono_locks_lock_acquired (NAME, LOCK); \
-} while (0)
-
-#define mono_locks_mutex_release(LOCK, NAME) do { \
-       mono_locks_lock_released (NAME, LOCK); \
-       mono_mutex_unlock (LOCK); \
-} while (0)
+#define mono_locks_os_acquire(LOCK,NAME)       \
+       do {    \
+               mono_os_mutex_lock (LOCK);      \
+               mono_locks_lock_acquired (NAME, LOCK);  \
+       } while (0)
+
+#define mono_locks_os_release(LOCK,NAME)       \
+       do {    \
+               mono_locks_lock_released (NAME, LOCK);  \
+               mono_os_mutex_unlock (LOCK);    \
+       } while (0)
+
+#define mono_locks_coop_acquire(LOCK,NAME)     \
+       do {    \
+               mono_coop_mutex_lock (LOCK);    \
+               mono_locks_lock_acquired (NAME, LOCK);  \
+       } while (0)
+
+#define mono_locks_coop_release(LOCK,NAME)     \
+       do {    \
+               mono_locks_lock_released (NAME, LOCK);  \
+               mono_coop_mutex_unlock (LOCK);  \
+       } while (0)
+
 G_END_DECLS
 
 #endif /* __MONO_METADATA_LOCK_TRACER_H__ */
index 54909ea97bc8d69a82d92cf2185fb94f25889ac6..70e471dba2d0bbb5754503439c40be7ea5104453 100644 (file)
 #include "mono/metadata/class-internals.h"
 #include "mono/metadata/metadata-internals.h"
 #include "mono/metadata/domain-internals.h"
-#include "mono/metadata/gc-internal.h"
+#include "mono/metadata/gc-internals.h"
 #include "mono/metadata/threads-types.h"
 #include "mono/metadata/string-icalls.h"
 #include "mono/metadata/attrdefs.h"
-#include "mono/metadata/gc-internal.h"
+#include "mono/metadata/gc-internals.h"
 #include "mono/metadata/cominterop.h"
 #include "mono/metadata/remoting.h"
 #include "mono/metadata/reflection-internals.h"
@@ -66,8 +66,8 @@ enum {
  * The marshal lock is a non-recursive complex lock that sits below the domain lock in the
  * runtime locking latice. Which means it can take simple locks suck as the image lock.
  */
-#define mono_marshal_lock() mono_locks_acquire (&marshal_mutex, MarshalLock)
-#define mono_marshal_unlock() mono_locks_release (&marshal_mutex, MarshalLock)
+#define mono_marshal_lock() mono_locks_os_acquire (&marshal_mutex, MarshalLock)
+#define mono_marshal_unlock() mono_locks_os_release (&marshal_mutex, MarshalLock)
 static mono_mutex_t marshal_mutex;
 static gboolean marshal_mutex_initialized;
 
@@ -187,7 +187,7 @@ mono_marshal_init (void)
 
        if (!module_initialized) {
                module_initialized = TRUE;
-               mono_mutex_init_recursive (&marshal_mutex);
+               mono_os_mutex_init_recursive (&marshal_mutex);
                marshal_mutex_initialized = TRUE;
 
                register_icall (ves_icall_System_Threading_Thread_ResetAbort, "ves_icall_System_Threading_Thread_ResetAbort", "void", TRUE);
@@ -241,12 +241,12 @@ mono_marshal_init (void)
                mono_cominterop_init ();
                mono_remoting_init ();
 
-#ifdef USE_COOP_GC
-               register_icall (mono_threads_prepare_blocking, "mono_threads_prepare_blocking", "int", FALSE);
-               register_icall (mono_threads_finish_blocking, "mono_threads_finish_blocking", "void int", FALSE);
-               register_icall (mono_threads_reset_blocking_start, "mono_threads_reset_blocking_start","int", TRUE);
-               register_icall (mono_threads_reset_blocking_end, "mono_threads_reset_blocking_end","void int", TRUE);
-#endif
+               if (mono_threads_is_coop_enabled ()) {
+                       register_icall (mono_threads_prepare_blocking, "mono_threads_prepare_blocking", "ptr ptr", FALSE);
+                       register_icall (mono_threads_finish_blocking, "mono_threads_finish_blocking", "void ptr ptr", FALSE);
+                       register_icall (mono_threads_reset_blocking_start, "mono_threads_reset_blocking_start","ptr ptr", TRUE);
+                       register_icall (mono_threads_reset_blocking_end, "mono_threads_reset_blocking_end","void ptr ptr", TRUE);
+               }
        }
 }
 
@@ -257,7 +257,7 @@ mono_marshal_cleanup (void)
 
        mono_native_tls_free (load_type_info_tls_id);
        mono_native_tls_free (last_error_tls_id);
-       mono_mutex_destroy (&marshal_mutex);
+       mono_os_mutex_destroy (&marshal_mutex);
        marshal_mutex_initialized = FALSE;
 }
 
@@ -436,7 +436,7 @@ mono_ftnptr_to_delegate (MonoClass *klass, gpointer ftn)
                else
                        d = NULL;
        } else {
-               d = g_hash_table_lookup (delegate_hash_table, ftn);
+               d = (MonoDelegate *)g_hash_table_lookup (delegate_hash_table, ftn);
                mono_marshal_unlock ();
        }
        if (d == NULL) {
@@ -502,11 +502,11 @@ mono_delegate_free_ftnptr (MonoDelegate *delegate)
                void **method_data;
                MonoMethod *method;
 
-               ji = mono_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (ptr));
+               ji = mono_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (ptr));
                g_assert (ji);
 
                method = mono_jit_info_get_method (ji);
-               method_data = ((MonoMethodWrapper*)method)->method_data;
+               method_data = (void **)((MonoMethodWrapper*)method)->method_data;
 
                /*the target gchandle is the first entry after size and the wrapper itself.*/
                gchandle = GPOINTER_TO_UINT (method_data [2]);
@@ -580,9 +580,9 @@ mono_array_to_lparray (MonoArray *array)
                break;
        case MONO_TYPE_CLASS:
                nativeArraySize = array->max_length;
-               nativeArray = malloc(sizeof(gpointer) * nativeArraySize);
+               nativeArray = (void **)malloc(sizeof(gpointer) * nativeArraySize);
                for(i = 0; i < nativeArraySize; ++i)    
-                       nativeArray[i] = ves_icall_System_Runtime_InteropServices_Marshal_GetIUnknownForObjectInternal(((gpointer*)array->vector)[i]);
+                       nativeArray[i] = ves_icall_System_Runtime_InteropServices_Marshal_GetIUnknownForObjectInternal(((MonoObject **)array->vector)[i]);
                return nativeArray;
        case MONO_TYPE_U1:
        case MONO_TYPE_BOOLEAN:
@@ -647,7 +647,7 @@ mono_byvalarray_to_array (MonoArray *arr, gpointer native_arr, MonoClass *elclas
                guint16 *ut;
                glong items_written;
 
-               ut = g_utf8_to_utf16 (native_arr, elnum, NULL, &items_written, &error);
+               ut = g_utf8_to_utf16 ((const gchar *)native_arr, elnum, NULL, &items_written, &error);
 
                if (!error) {
                        memcpy (mono_array_addr (arr, guint16, 0), ut, items_written * sizeof (guint16));
@@ -847,7 +847,7 @@ mono_string_builder_to_utf8 (MonoStringBuilder *sb)
                return NULL;
        } else {
                guint len = mono_string_builder_capacity (sb) + 1;
-               gchar *res = mono_marshal_alloc (len * sizeof (gchar));
+               gchar *res = (gchar *)mono_marshal_alloc (len * sizeof (gchar));
                g_assert (str_len < len);
                memcpy (res, tmp, str_len * sizeof (gchar));
                res[str_len] = '\0';
@@ -882,7 +882,7 @@ mono_string_builder_to_utf16 (MonoStringBuilder *sb)
        if (len == 0)
                len = 1;
 
-       gunichar2 *str = mono_marshal_alloc ((len + 1) * sizeof (gunichar2));
+       gunichar2 *str = (gunichar2 *)mono_marshal_alloc ((len + 1) * sizeof (gunichar2));
        str[len] = '\0';
 
        if (len == 0)
@@ -1798,7 +1798,7 @@ emit_struct_conv_full (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_obje
                if (ftype->attrs & FIELD_ATTRIBUTE_STATIC)
                        continue;
 
-               ntype = mono_type_to_unmanaged (ftype, info->fields [i].mspec, TRUE, klass->unicode, &conv);
+               ntype = (MonoMarshalNative)mono_type_to_unmanaged (ftype, info->fields [i].mspec, TRUE, klass->unicode, &conv);
 
                if (last_field) {
                        msize = klass->instance_size - info->fields [i].field->offset;
@@ -1977,7 +1977,7 @@ emit_struct_conv_full (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_obje
 static void
 emit_struct_conv (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_object)
 {
-       emit_struct_conv_full (mb, klass, to_object, -1);
+       emit_struct_conv_full (mb, klass, to_object, (MonoMarshalNative)-1);
 }
 
 static void
@@ -2225,7 +2225,7 @@ mono_marshal_get_string_to_ptr_conv (MonoMethodPInvoke *piinfo, MonoMarshalSpec
        case MONO_NATIVE_BSTR:
                return MONO_MARSHAL_CONV_STR_BSTR;
        default:
-               return -1;
+               return (MonoMarshalConv)-1;
        }
 }
 
@@ -2245,7 +2245,7 @@ mono_marshal_get_stringbuilder_to_ptr_conv (MonoMethodPInvoke *piinfo, MonoMarsh
                return MONO_MARSHAL_CONV_SB_LPTSTR;
                break;
        default:
-               return -1;
+               return (MonoMarshalConv)-1;
        }
 }
 
@@ -2268,7 +2268,7 @@ mono_marshal_get_ptr_to_string_conv (MonoMethodPInvoke *piinfo, MonoMarshalSpec
        case MONO_NATIVE_BSTR:
                return MONO_MARSHAL_CONV_BSTR_STR;
        default:
-               return -1;
+               return (MonoMarshalConv)-1;
        }
 }
 
@@ -2294,7 +2294,7 @@ mono_marshal_get_ptr_to_stringbuilder_conv (MonoMethodPInvoke *piinfo, MonoMarsh
                return MONO_MARSHAL_CONV_LPTSTR_SB;
                break;
        default:
-               return -1;
+               return (MonoMarshalConv)-1;
        }
 }
 
@@ -2358,7 +2358,7 @@ mono_marshal_find_in_cache (GHashTable *cache, gpointer key)
        MonoMethod *res;
 
        mono_marshal_lock ();
-       res = g_hash_table_lookup (cache, key);
+       res = (MonoMethod *)g_hash_table_lookup (cache, key);
        mono_marshal_unlock ();
        return res;
 }
@@ -2392,20 +2392,17 @@ mono_mb_create_and_cache_full (GHashTable *cache, gpointer key,
                *out_found = FALSE;
 
        mono_marshal_lock ();
-       res = g_hash_table_lookup (cache, key);
+       res = (MonoMethod *)g_hash_table_lookup (cache, key);
        mono_marshal_unlock ();
        if (!res) {
                MonoMethod *newm;
                newm = mono_mb_create_method (mb, sig, max_stack);
                mono_marshal_lock ();
-               res = g_hash_table_lookup (cache, key);
+               res = (MonoMethod *)g_hash_table_lookup (cache, key);
                if (!res) {
                        res = newm;
                        g_hash_table_insert (cache, key, res);
-                       if (info)
-                               mono_marshal_set_wrapper_info (res, info);
-                       else
-                               mono_marshal_set_wrapper_info (res, key);
+                       mono_marshal_set_wrapper_info (res, info);
                        mono_marshal_unlock ();
                } else {
                        if (out_found)
@@ -2429,22 +2426,20 @@ mono_mb_create_and_cache (GHashTable *cache, gpointer key,
 MonoMethod *
 mono_marshal_method_from_wrapper (MonoMethod *wrapper)
 {
-       gpointer res;
+       MonoMethod *m;
        int wrapper_type = wrapper->wrapper_type;
        WrapperInfo *info;
 
        if (wrapper_type == MONO_WRAPPER_NONE || wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD)
                return wrapper;
 
+       info = mono_marshal_get_wrapper_info (wrapper);
+
        switch (wrapper_type) {
        case MONO_WRAPPER_REMOTING_INVOKE:
        case MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK:
        case MONO_WRAPPER_XDOMAIN_INVOKE:
-       case MONO_WRAPPER_SYNCHRONIZED:
-       case MONO_WRAPPER_UNBOX:
-               res = mono_marshal_get_wrapper_info (wrapper);
-               if (res == NULL)
-                       return wrapper;
+               m = info->d.remoting.method;
                if (wrapper->is_inflated) {
                        MonoError error;
                        MonoMethod *result;
@@ -2452,19 +2447,29 @@ mono_marshal_method_from_wrapper (MonoMethod *wrapper)
                         * A method cannot be inflated and a wrapper at the same time, so the wrapper info
                         * contains an uninflated method.
                         */
-                       result = mono_class_inflate_generic_method_checked (res, mono_method_get_context (wrapper), &error);
+                       result = mono_class_inflate_generic_method_checked (m, mono_method_get_context (wrapper), &error);
                        g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
                        return result;
                }
-               return res;
+               return m;
+       case MONO_WRAPPER_SYNCHRONIZED:
+               m = info->d.synchronized.method;
+               if (wrapper->is_inflated) {
+                       MonoError error;
+                       MonoMethod *result;
+                       result = mono_class_inflate_generic_method_checked (m, mono_method_get_context (wrapper), &error);
+                       g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
+                       return result;
+               }
+               return m;
+       case MONO_WRAPPER_UNBOX:
+               return info->d.unbox.method;
        case MONO_WRAPPER_MANAGED_TO_NATIVE:
-               info = mono_marshal_get_wrapper_info (wrapper);
                if (info && (info->subtype == WRAPPER_SUBTYPE_NONE || info->subtype == WRAPPER_SUBTYPE_NATIVE_FUNC_AOT || info->subtype == WRAPPER_SUBTYPE_PINVOKE))
                        return info->d.managed_to_native.method;
                else
                        return NULL;
        case MONO_WRAPPER_RUNTIME_INVOKE:
-               info = mono_marshal_get_wrapper_info (wrapper);
                if (info && (info->subtype == WRAPPER_SUBTYPE_RUNTIME_INVOKE_DIRECT || info->subtype == WRAPPER_SUBTYPE_RUNTIME_INVOKE_VIRTUAL))
                        return info->d.runtime_invoke.method;
                else
@@ -2477,35 +2482,32 @@ mono_marshal_method_from_wrapper (MonoMethod *wrapper)
 /*
  * mono_marshal_get_wrapper_info:
  *
- *   Retrieve the pointer stored by mono_marshal_set_wrapper_info. The type of data
- * returned depends on the wrapper type. It is usually a method, a class, or a
- * WrapperInfo structure.
+ *   Retrieve the WrapperInfo structure associated with WRAPPER.
  */
-gpointer
+WrapperInfo*
 mono_marshal_get_wrapper_info (MonoMethod *wrapper)
 {
        g_assert (wrapper->wrapper_type);
 
-       return mono_method_get_wrapper_data (wrapper, 1);
+       return (WrapperInfo *)mono_method_get_wrapper_data (wrapper, 1);
 }
 
 /*
  * mono_marshal_set_wrapper_info:
  *
- *   Store an arbitrary pointer inside the wrapper which is retrievable by 
- * mono_marshal_get_wrapper_info. The format of the data depends on the type of the
- * wrapper (method->wrapper_type).
+ *   Set the WrapperInfo structure associated with the wrapper
+ * method METHOD to INFO.
  */
 void
-mono_marshal_set_wrapper_info (MonoMethod *method, gpointer data)
+mono_marshal_set_wrapper_info (MonoMethod *method, WrapperInfo *info)
 {
        void **datav;
        /* assert */
        if (method->wrapper_type == MONO_WRAPPER_NONE || method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD)
                return;
 
-       datav = ((MonoMethodWrapper *)method)->method_data;
-       datav [1] = data;
+       datav = (void **)((MonoMethodWrapper *)method)->method_data;
+       datav [1] = info;
 }
 
 WrapperInfo*
@@ -2513,7 +2515,7 @@ mono_wrapper_info_create (MonoMethodBuilder *mb, WrapperSubtype subtype)
 {
        WrapperInfo *info;
 
-       info = mono_image_alloc0 (mb->method->klass->image, sizeof (WrapperInfo));
+       info = (WrapperInfo *)mono_image_alloc0 (mb->method->klass->image, sizeof (WrapperInfo));
        info->subtype = subtype;
        return info;
 }
@@ -2593,7 +2595,7 @@ check_generic_wrapper_cache (GHashTable *cache, MonoMethod *orig_method, gpointe
                /* Cache it */
                mono_memory_barrier ();
                mono_marshal_lock ();
-               res = g_hash_table_lookup (cache, key);
+               res = (MonoMethod *)g_hash_table_lookup (cache, key);
                if (!res) {
                        g_hash_table_insert (cache, key, inst);
                        res = inst;
@@ -2617,7 +2619,7 @@ cache_generic_wrapper (GHashTable *cache, MonoMethod *orig_method, MonoMethod *d
        g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
        mono_memory_barrier ();
        mono_marshal_lock ();
-       res = g_hash_table_lookup (cache, key);
+       res = (MonoMethod *)g_hash_table_lookup (cache, key);
        if (!res) {
                g_hash_table_insert (cache, key, inst);
                res = inst;
@@ -2651,7 +2653,7 @@ check_generic_delegate_wrapper_cache (GHashTable *cache, MonoMethod *orig_method
                /* Cache it */
                mono_memory_barrier ();
                mono_marshal_lock ();
-               res = g_hash_table_lookup (cache, orig_method->klass);
+               res = (MonoMethod *)g_hash_table_lookup (cache, orig_method->klass);
                if (!res) {
                        g_hash_table_insert (cache, orig_method->klass, inst);
                        res = inst;
@@ -2676,7 +2678,7 @@ cache_generic_delegate_wrapper (GHashTable *cache, MonoMethod *orig_method, Mono
 
        mono_memory_barrier ();
        mono_marshal_lock ();
-       res = g_hash_table_lookup (cache, orig_method->klass);
+       res = (MonoMethod *)g_hash_table_lookup (cache, orig_method->klass);
        if (!res) {
                g_hash_table_insert (cache, orig_method->klass, inst);
                res = inst;
@@ -2788,7 +2790,7 @@ mono_delegate_end_invoke (MonoDelegate *delegate, gpointer *params)
 
        msg = mono_method_call_message_new (method, params, NULL, NULL, NULL);
 
-       ares = mono_array_get (msg->args, gpointer, sig->param_count - 1);
+       ares = (MonoAsyncResult *)mono_array_get (msg->args, gpointer, sig->param_count - 1);
        if (ares == NULL) {
                mono_raise_exception (mono_exception_from_name_msg (mono_defaults.corlib, "System.Runtime.Remoting", "RemotingException", "The async result object is null or of an unexpected type."));
                return NULL;
@@ -3008,22 +3010,6 @@ free_signature_pointer_pair (SignaturePointerPair *pair)
        g_free (pair);
 }
 
-static MonoMethodSignature*
-sig_to_rgctx_sig (MonoMethodSignature *sig)
-{
-       // FIXME: memory allocation
-       MonoMethodSignature *res;
-       int i;
-
-       res = g_malloc (MONO_SIZEOF_METHOD_SIGNATURE + (sig->param_count + 1) * sizeof (MonoType*));
-       memcpy (res, sig, MONO_SIZEOF_METHOD_SIGNATURE);
-       res->param_count = sig->param_count + 1;
-       for (i = 0; i < sig->param_count; ++i)
-               res->params [i] = sig->params [i];
-       res->params [sig->param_count] = &mono_defaults.int_class->byval_arg;
-       return res;
-}
-
 MonoMethod *
 mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt, gboolean static_method_with_first_arg_bound, MonoMethod *target_method)
 {
@@ -3036,7 +3022,7 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
        SignaturePointerPair key;
        SignaturePointerPair *new_key;
        int local_i, local_len, local_delegates, local_d, local_target, local_res;
-       int pos0, pos1, pos2, pos3, pos4;
+       int pos0, pos1, pos2;
        char *name;
        MonoClass *target_class = NULL;
        gboolean closed_over_null = FALSE;
@@ -3128,7 +3114,7 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
                cache = *cache_ptr;
                key.sig = invoke_sig;
                key.pointer = target_method;
-               res = g_hash_table_lookup (cache, &key);
+               res = (MonoMethod *)g_hash_table_lookup (cache, &key);
                mono_marshal_unlock ();
                if (res)
                        return res;
@@ -3224,17 +3210,6 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
                        // FIXME:
                        mono_mb_emit_exception_full (mb, "System", "NotImplementedException", "");
                } else {
-                       MonoMethodSignature *rgctx_sig;
-
-                       // FIXME: Support this for the other cases as well
-                       mono_mb_emit_ldarg (mb, 0);
-                       mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoDelegate, rgctx));
-                       mono_mb_emit_byte (mb, CEE_LDIND_I);
-                       pos3 = mono_mb_emit_branch (mb, CEE_BRFALSE);
-
-                       /* Rgctx case */
-                       rgctx_sig = sig_to_rgctx_sig (sig);
-
                        mono_mb_emit_ldloc (mb, local_target);
                        for (i = 0; i < sig->param_count; ++i)
                                mono_mb_emit_ldarg (mb, i + 1);
@@ -3244,21 +3219,8 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
                        mono_mb_emit_ldarg (mb, 0);
                        mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoDelegate, method_ptr));
                        mono_mb_emit_byte (mb, CEE_LDIND_I);
-                       mono_mb_emit_op (mb, CEE_CALLI, rgctx_sig);
-                       pos4 = mono_mb_emit_branch (mb, CEE_BR);
-
-                       /* Non-rgctx case */
-                       mono_mb_patch_branch (mb, pos3);
-                       mono_mb_emit_ldloc (mb, local_target);
-                       for (i = 0; i < sig->param_count; ++i)
-                               mono_mb_emit_ldarg (mb, i + 1);
-                       mono_mb_emit_ldarg (mb, 0);
-                       mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoDelegate, method_ptr));
-                       mono_mb_emit_byte (mb, CEE_LDIND_I );
-                       mono_mb_emit_op (mb, CEE_CALLI, sig);
-
-                       mono_mb_patch_branch (mb, pos4);
-
+                       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+                       mono_mb_emit_op (mb, CEE_MONO_CALLI_EXTRA_ARG, sig);
                        mono_mb_emit_byte (mb, CEE_RET);
                }
        
@@ -3287,16 +3249,6 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
                        mono_mb_emit_op (mb, CEE_CALL, target_method);
                }
        } else {
-               MonoMethodSignature *rgctx_sig;
-
-               mono_mb_emit_ldarg (mb, 0);
-               mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoDelegate, rgctx));
-               mono_mb_emit_byte (mb, CEE_LDIND_I);
-               pos3 = mono_mb_emit_branch (mb, CEE_BRFALSE);
-
-               /* Rgctx case */
-               rgctx_sig = sig_to_rgctx_sig (invoke_sig);
-
                if (static_method_with_first_arg_bound) {
                        mono_mb_emit_ldloc (mb, local_target);
                        if (!MONO_TYPE_IS_REFERENCE (invoke_sig->params[0]))
@@ -3310,24 +3262,8 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
                mono_mb_emit_ldarg (mb, 0);
                mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoDelegate, method_ptr));
                mono_mb_emit_byte (mb, CEE_LDIND_I);
-               mono_mb_emit_op (mb, CEE_CALLI, rgctx_sig);
-               pos4 = mono_mb_emit_branch (mb, CEE_BR);
-
-               /* Non-rgctx case */
-               mono_mb_patch_branch (mb, pos3);
-               if (static_method_with_first_arg_bound) {
-                       mono_mb_emit_ldloc (mb, local_target);
-                       if (!MONO_TYPE_IS_REFERENCE (invoke_sig->params[0]))
-                               mono_mb_emit_op (mb, CEE_UNBOX_ANY, mono_class_from_mono_type (invoke_sig->params[0]));
-               }
-               for (i = 0; i < sig->param_count; ++i)
-                       mono_mb_emit_ldarg (mb, i + 1);
-               mono_mb_emit_ldarg (mb, 0);
-               mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoDelegate, method_ptr));
-               mono_mb_emit_byte (mb, CEE_LDIND_I);
-               mono_mb_emit_op (mb, CEE_CALLI, invoke_sig);
-
-               mono_mb_patch_branch (mb, pos4);
+               mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+               mono_mb_emit_op (mb, CEE_MONO_CALLI_EXTRA_ARG, invoke_sig);
        }
 
        mono_mb_emit_byte (mb, CEE_RET);
@@ -3383,23 +3319,21 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
        mb->skip_visibility = 1;
 #endif /* DISABLE_JIT */
 
+       info = mono_wrapper_info_create (mb, subtype);
+
        if (ctx) {
                MonoMethod *def;
 
-               def = mono_mb_create_and_cache (cache, cache_key, mb, sig, sig->param_count + 16);
+               def = mono_mb_create_and_cache_full (cache, cache_key, mb, sig, sig->param_count + 16, info, NULL);
                res = cache_generic_delegate_wrapper (cache, orig_method, def, ctx);
        } else if (callvirt) {
                new_key = g_new0 (SignaturePointerPair, 1);
                *new_key = key;
 
-               info = mono_wrapper_info_create (mb, subtype);
-
                res = mono_mb_create_and_cache_full (cache, new_key, mb, sig, sig->param_count + 16, info, &found);
                if (found)
                        g_free (new_key);
        } else {
-               info = mono_wrapper_info_create (mb, subtype);
-
                res = mono_mb_create_and_cache_full (cache, cache_key, mb, sig, sig->param_count + 16, info, NULL);
        }
        mono_mb_free (mb);
@@ -3453,7 +3387,7 @@ lookup_string_ctor_signature (MonoMethodSignature *sig)
        mono_marshal_lock ();
        callsig = NULL;
        for (item = strsig_list; item; item = item->next) {
-               cs = item->data;
+               cs = (CtorSigPair *)item->data;
                /* mono_metadata_signature_equal () is safe to call with the marshal lock
                 * because it is lock-free.
                 */
@@ -3588,12 +3522,13 @@ static void
 emit_invoke_call (MonoMethodBuilder *mb, MonoMethod *method,
                                  MonoMethodSignature *sig, MonoMethodSignature *callsig,
                                  int loc_res,
-                                 gboolean virtual, gboolean need_direct_wrapper)
+                                 gboolean virtual_, gboolean need_direct_wrapper)
 {
        static MonoString *string_dummy = NULL;
        int i;
        int *tmp_nullable_locals;
        gboolean void_ret = FALSE;
+       gboolean string_ctor = method && method->string_ctor;
 
        /* to make it work with our special string constructors */
        if (!string_dummy) {
@@ -3601,13 +3536,13 @@ emit_invoke_call (MonoMethodBuilder *mb, MonoMethod *method,
                string_dummy = mono_string_new_wrapper ("dummy");
        }
 
-       if (virtual) {
+       if (virtual_) {
                g_assert (sig->hasthis);
                g_assert (method->flags & METHOD_ATTRIBUTE_VIRTUAL);
        }
 
        if (sig->hasthis) {
-               if (method->string_ctor) {
+               if (string_ctor) {
                        if (mono_gc_is_moving ()) {
                                mono_mb_emit_ptr (mb, &string_dummy);
                                mono_mb_emit_byte (mb, CEE_LDIND_REF);
@@ -3701,7 +3636,7 @@ handle_enum:
                }
        }
        
-       if (virtual) {
+       if (virtual_) {
                mono_mb_emit_op (mb, CEE_CALLVIRT, method);
        } else if (need_direct_wrapper) {
                mono_mb_emit_op (mb, CEE_CALL, method);
@@ -3717,7 +3652,7 @@ handle_enum:
 
        switch (sig->ret->type) {
        case MONO_TYPE_VOID:
-               if (!method->string_ctor)
+               if (!string_ctor)
                        void_ret = TRUE;
                break;
        case MONO_TYPE_BOOLEAN:
@@ -3782,9 +3717,9 @@ handle_enum:
 }
 
 static void
-emit_runtime_invoke_body (MonoMethodBuilder *mb, MonoClass *target_klass, MonoMethod *method,
+emit_runtime_invoke_body (MonoMethodBuilder *mb, MonoImage *image, MonoMethod *method,
                                                  MonoMethodSignature *sig, MonoMethodSignature *callsig,
-                                                 gboolean virtual, gboolean need_direct_wrapper)
+                                                 gboolean virtual_, gboolean need_direct_wrapper)
 {
        gint32 labels [16];
        MonoExceptionClause *clause;
@@ -3819,12 +3754,12 @@ emit_runtime_invoke_body (MonoMethodBuilder *mb, MonoClass *target_klass, MonoMe
         */
        labels [1] = mono_mb_get_label (mb);
        emit_thread_force_interrupt_checkpoint (mb);
-       emit_invoke_call (mb, method, sig, callsig, loc_res, virtual, need_direct_wrapper);
+       emit_invoke_call (mb, method, sig, callsig, loc_res, virtual_, need_direct_wrapper);
 
        labels [2] = mono_mb_emit_branch (mb, CEE_LEAVE);
 
        /* Add a try clause around the call */
-       clause = mono_image_alloc0 (target_klass->image, sizeof (MonoExceptionClause));
+       clause = (MonoExceptionClause *)mono_image_alloc0 (image, sizeof (MonoExceptionClause));
        clause->flags = MONO_EXCEPTION_CLAUSE_NONE;
        clause->data.catch_class = mono_defaults.exception_class;
        clause->try_offset = labels [1];
@@ -3853,7 +3788,7 @@ emit_runtime_invoke_body (MonoMethodBuilder *mb, MonoClass *target_klass, MonoMe
         */
        mono_mb_patch_branch (mb, labels [0]);
        emit_thread_force_interrupt_checkpoint (mb);
-       emit_invoke_call (mb, method, sig, callsig, loc_res, virtual, need_direct_wrapper);
+       emit_invoke_call (mb, method, sig, callsig, loc_res, virtual_, need_direct_wrapper);
 
        mono_mb_emit_ldloc (mb, 0);
        mono_mb_emit_byte (mb, CEE_RET);
@@ -3862,18 +3797,16 @@ emit_runtime_invoke_body (MonoMethodBuilder *mb, MonoClass *target_klass, MonoMe
 
 /*
  * generates IL code for the runtime invoke function 
- * MonoObject *runtime_invoke (MonoObject *this, void **params, MonoObject **exc, void* method)
+ * MonoObject *runtime_invoke (MonoObject *this_obj, void **params, MonoObject **exc, void* method)
  *
  * we also catch exceptions if exc != null
  * If VIRTUAL is TRUE, then METHOD is invoked virtually on THIS. This is useful since
  * it means that the compiled code for METHOD does not have to be looked up 
  * before calling the runtime invoke wrapper. In this case, the wrapper ignores
  * its METHOD argument.
- * If PASS_RGCTX is TRUE, the signature of the called method is changed to include a 'gpointer rgctx' as the
- * first argument (after 'this').
  */
 MonoMethod *
-mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean pass_rgctx)
+mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual_)
 {
        MonoMethodSignature *sig, *csig, *callsig;
        MonoMethodBuilder *mb;
@@ -3899,14 +3832,14 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean
                finalize_signature->hasthis = 1;
        }
 
-       if (virtual)
+       if (virtual_)
                need_direct_wrapper = TRUE;
 
        /* 
         * Use a separate cache indexed by methods to speed things up and to avoid the
         * boundless mempool growth caused by the signature_dup stuff below.
         */
-       if (virtual)
+       if (virtual_)
                cache = get_cache (&method->klass->image->runtime_invoke_vcall_cache, mono_aligned_addr_hash, NULL);
        else
                cache = get_cache (&mono_method_get_wrapper_cache (method)->runtime_invoke_direct_cache, mono_aligned_addr_hash, NULL);
@@ -3939,11 +3872,6 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean
 
        sig = mono_method_signature (method);
 
-       if (pass_rgctx) {
-               sig = sig_to_rgctx_sig (sig);
-               callsig = sig_to_rgctx_sig (callsig);
-       }
-
        target_klass = get_wrapper_target_class (method->klass->image);
 
        /* Try to share wrappers for non-corlib methods with simple signatures */
@@ -3973,7 +3901,7 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean
 
                /* from mono_marshal_find_in_cache */
                mono_marshal_lock ();
-               res = g_hash_table_lookup (cache, callsig);
+               res = (MonoMethod *)g_hash_table_lookup (cache, callsig);
                mono_marshal_unlock ();
 
                if (res) {
@@ -4003,7 +3931,7 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean
        csig->call_convention = MONO_CALL_C;
 #endif
 
-       name = mono_signature_to_name (callsig, pass_rgctx ? (virtual ? "runtime_invoke_virtual_rgctx" : "runtime_invoke_rgctx") : (virtual ? "runtime_invoke_virtual" : "runtime_invoke"));
+       name = mono_signature_to_name (callsig, virtual_ ? "runtime_invoke_virtual" : "runtime_invoke");
        mb = mono_mb_new (target_klass, name,  MONO_WRAPPER_RUNTIME_INVOKE);
        g_free (name);
 
@@ -4014,25 +3942,24 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean
        param_names [3] = "method";
        mono_mb_set_param_names (mb, param_names);
 
-       emit_runtime_invoke_body (mb, target_klass, method, sig, callsig, virtual, need_direct_wrapper);
+       emit_runtime_invoke_body (mb, target_klass->image, method, sig, callsig, virtual_, need_direct_wrapper);
 #endif
 
        if (need_direct_wrapper) {
 #ifndef DISABLE_JIT
                mb->skip_visibility = 1;
 #endif
-               info = mono_wrapper_info_create (mb, virtual ? WRAPPER_SUBTYPE_RUNTIME_INVOKE_VIRTUAL : WRAPPER_SUBTYPE_RUNTIME_INVOKE_DIRECT);
+               info = mono_wrapper_info_create (mb, virtual_ ? WRAPPER_SUBTYPE_RUNTIME_INVOKE_VIRTUAL : WRAPPER_SUBTYPE_RUNTIME_INVOKE_DIRECT);
                info->d.runtime_invoke.method = method;
                res = mono_mb_create_and_cache_full (cache, method, mb, csig, sig->param_count + 16, info, NULL);
        } else {
                /* taken from mono_mb_create_and_cache */
                mono_marshal_lock ();
-               res = g_hash_table_lookup (cache, callsig);
+               res = (MonoMethod *)g_hash_table_lookup (cache, callsig);
                mono_marshal_unlock ();
 
                info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_RUNTIME_INVOKE_NORMAL);
                info->d.runtime_invoke.sig = callsig;
-               info->d.runtime_invoke.pass_rgctx = pass_rgctx;
 
                /* Somebody may have created it before us */
                if (!res) {
@@ -4040,7 +3967,7 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual, gboolean
                        newm = mono_mb_create (mb, csig, sig->param_count + 16, info);
 
                        mono_marshal_lock ();
-                       res = g_hash_table_lookup (cache, callsig);
+                       res = (MonoMethod *)g_hash_table_lookup (cache, callsig);
                        if (!res) {
                                GHashTable *direct_cache;
                                res = newm;
@@ -4127,7 +4054,7 @@ mono_marshal_get_runtime_invoke_dynamic (void)
 
        pos = mono_mb_emit_branch (mb, CEE_LEAVE);
 
-       clause = mono_image_alloc0 (mono_defaults.corlib, sizeof (MonoExceptionClause));
+       clause = (MonoExceptionClause *)mono_image_alloc0 (mono_defaults.corlib, sizeof (MonoExceptionClause));
        clause->flags = MONO_EXCEPTION_CLAUSE_FILTER;
        clause->try_len = mono_mb_get_label (mb);
 
@@ -4190,6 +4117,105 @@ mono_marshal_get_runtime_invoke_dynamic (void)
        return method;
 }
 
+/*
+ * mono_marshal_get_runtime_invoke_for_sig:
+ *
+ *   Return a runtime invoke wrapper for a given signature.
+ */
+MonoMethod *
+mono_marshal_get_runtime_invoke_for_sig (MonoMethodSignature *sig)
+{
+       MonoMethodSignature *csig, *callsig;
+       MonoMethodBuilder *mb;
+       MonoImage *image;
+       GHashTable *cache = NULL;
+       GHashTable **cache_table = NULL;
+       MonoMethod *res = NULL;
+       char *name;
+       const char *param_names [16];
+       WrapperInfo *info;
+
+       /* A simplified version of mono_marshal_get_runtime_invoke */
+
+       image = mono_defaults.corlib;
+
+       callsig = mono_marshal_get_runtime_invoke_sig (sig);
+
+       cache_table = &image->wrapper_caches.runtime_invoke_sig_cache;
+
+       cache = get_cache (cache_table, (GHashFunc)mono_signature_hash,
+                                          (GCompareFunc)runtime_invoke_signature_equal);
+
+       /* from mono_marshal_find_in_cache */
+       mono_marshal_lock ();
+       res = (MonoMethod *)g_hash_table_lookup (cache, callsig);
+       mono_marshal_unlock ();
+
+       if (res) {
+               g_free (callsig);
+               return res;
+       }
+
+       /* Make a copy of the signature from the image mempool */
+       callsig = mono_metadata_signature_dup_full (image, callsig);
+
+       csig = mono_metadata_signature_alloc (image, 4);
+       csig->ret = &mono_defaults.object_class->byval_arg;
+       csig->params [0] = &mono_defaults.object_class->byval_arg;
+       csig->params [1] = &mono_defaults.int_class->byval_arg;
+       csig->params [2] = &mono_defaults.int_class->byval_arg;
+       csig->params [3] = &mono_defaults.int_class->byval_arg;
+       csig->pinvoke = 1;
+#if TARGET_WIN32
+       /* This is called from runtime code so it has to be cdecl */
+       csig->call_convention = MONO_CALL_C;
+#endif
+
+       name = mono_signature_to_name (callsig, "runtime_invoke_sig");
+       mb = mono_mb_new (mono_defaults.object_class, name,  MONO_WRAPPER_RUNTIME_INVOKE);
+       g_free (name);
+
+#ifndef DISABLE_JIT
+       param_names [0] = "this";
+       param_names [1] = "params";
+       param_names [2] = "exc";
+       param_names [3] = "method";
+       mono_mb_set_param_names (mb, param_names);
+
+       emit_runtime_invoke_body (mb, image, NULL, sig, callsig, FALSE, FALSE);
+#endif
+
+       /* taken from mono_mb_create_and_cache */
+       mono_marshal_lock ();
+       res = (MonoMethod *)g_hash_table_lookup (cache, callsig);
+       mono_marshal_unlock ();
+
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_RUNTIME_INVOKE_NORMAL);
+       info->d.runtime_invoke.sig = callsig;
+
+       /* Somebody may have created it before us */
+       if (!res) {
+               MonoMethod *newm;
+               newm = mono_mb_create (mb, csig, sig->param_count + 16, info);
+
+               mono_marshal_lock ();
+               res = (MonoMethod *)g_hash_table_lookup (cache, callsig);
+               if (!res) {
+                       res = newm;
+                       g_hash_table_insert (cache, callsig, res);
+               } else {
+                       mono_free_method (newm);
+               }
+               mono_marshal_unlock ();
+       }
+
+       /* end mono_mb_create_and_cache */
+
+       mono_mb_free (mb);
+
+       return res;
+}
+
 #ifndef DISABLE_JIT
 static void
 mono_mb_emit_auto_layout_exception (MonoMethodBuilder *mb, MonoClass *klass)
@@ -5625,10 +5651,11 @@ emit_marshal_object (EmitMarshalContext *m, int argnum, MonoType *t,
                conv_arg = mono_mb_add_local (mb, &klass->byval_arg);
 
                if (klass->delegate) {
-                       g_assert (!t->byref);
                        mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
                        mono_mb_emit_op (mb, CEE_MONO_CLASSCONST, klass);
                        mono_mb_emit_ldarg (mb, argnum);
+                       if (t->byref)
+                               mono_mb_emit_byte (mb, CEE_LDIND_I);
                        mono_mb_emit_icall (mb, conv_to_icall (MONO_MARSHAL_CONV_FTN_DEL));
                        mono_mb_emit_stloc (mb, conv_arg);
                        break;
@@ -5701,6 +5728,16 @@ emit_marshal_object (EmitMarshalContext *m, int argnum, MonoType *t,
                break;
 
        case MARSHAL_ACTION_MANAGED_CONV_OUT:
+               if (klass->delegate) {
+                       if (t->byref) {
+                               mono_mb_emit_ldarg (mb, argnum);
+                               mono_mb_emit_ldloc (mb, conv_arg);
+                               mono_mb_emit_icall (mb, conv_to_icall (MONO_MARSHAL_CONV_DEL_FTN));
+                               mono_mb_emit_byte (mb, CEE_STIND_I);
+                               break;
+                       }
+               }
+
                if (t->byref) {
                        /* Check for null */
                        mono_mb_emit_ldloc (mb, conv_arg);
@@ -5994,7 +6031,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                                conv = mono_marshal_get_stringbuilder_to_ptr_conv (m->piinfo, spec);
                        }
                        else
-                               conv = -1;
+                               conv = (MonoMarshalConv)-1;
 
                        if (is_string && conv == -1) {
                                char *msg = g_strdup_printf ("string/stringbuilder marshalling conversion %d not implemented", encoding);
@@ -6070,7 +6107,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                                mono_mb_emit_stloc (mb, 1);
 
                                /* emit valuetype conversion code */
-                               emit_struct_conv_full (mb, eklass, FALSE, eklass == mono_defaults.char_class ? encoding : -1);
+                               emit_struct_conv_full (mb, eklass, FALSE, eklass == mono_defaults.char_class ? encoding : (MonoMarshalNative)-1);
                        }
 
                        mono_mb_emit_add_to_local (mb, index_var, 1);
@@ -6110,17 +6147,19 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                                break;
                        }
 
-                       mono_mb_emit_ldarg (mb, argnum);
+                       if (t->byref ) {
+                               mono_mb_emit_ldarg (mb, argnum);
 
-                       /* Create the managed array */
-                       mono_mb_emit_ldarg (mb, param_num);
-                       if (m->sig->params [param_num]->byref)
-                               // FIXME: Support other types
-                               mono_mb_emit_byte (mb, CEE_LDIND_I4);
-                       mono_mb_emit_byte (mb, CEE_CONV_OVF_I);
-                       mono_mb_emit_op (mb, CEE_NEWARR, klass->element_class);
-                       /* Store into argument */
-                       mono_mb_emit_byte (mb, CEE_STIND_I);
+                               /* Create the managed array */
+                               mono_mb_emit_ldarg (mb, param_num);
+                               if (m->sig->params [param_num]->byref)
+                                       // FIXME: Support other types
+                                       mono_mb_emit_byte (mb, CEE_LDIND_I4);
+                               mono_mb_emit_byte (mb, CEE_CONV_OVF_I);
+                               mono_mb_emit_op (mb, CEE_NEWARR, klass->element_class);
+                               /* Store into argument */
+                               mono_mb_emit_byte (mb, CEE_STIND_I);
+                       }
                }
 
                if (need_convert || need_free) {
@@ -6213,7 +6252,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                                        mono_mb_emit_stloc (mb, 1);
 
                                        /* emit valuetype conversion code */
-                                       emit_struct_conv_full (mb, eklass, TRUE, eklass == mono_defaults.char_class ? encoding : -1);
+                                       emit_struct_conv_full (mb, eklass, TRUE, eklass == mono_defaults.char_class ? encoding : (MonoMarshalNative)-1);
                                }
 
                                if (need_free) {
@@ -6313,7 +6352,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                        conv = mono_marshal_get_ptr_to_stringbuilder_conv (m->piinfo, spec, &need_free);
                }
                else
-                       conv = -1;
+                       conv = (MonoMarshalConv)-1;
 
                mono_marshal_load_type_info (eklass);
 
@@ -6476,7 +6515,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                        conv = mono_marshal_get_stringbuilder_to_ptr_conv (m->piinfo, spec);
                }
                else
-                       conv = -1;
+                       conv = (MonoMarshalConv)-1;
 
                mono_marshal_load_type_info (eklass);
 
@@ -6558,7 +6597,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
                MonoClass *eklass;
                guint32 label1, label2, label3;
                int index_var, src, dest, esize;
-               MonoMarshalConv conv = -1;
+               MonoMarshalConv conv = (MonoMarshalConv)-1;
                gboolean is_string = FALSE;
                
                g_assert (!t->byref);
@@ -7060,9 +7099,7 @@ mono_marshal_emit_native_wrapper (MonoImage *image, MonoMethodBuilder *mb, MonoM
        int i, argnum, *tmp_locals;
        int type, param_shift = 0;
        static MonoMethodSignature *get_last_error_sig = NULL;
-#ifdef USE_COOP_GC
-       int coop_gc_var;
-#endif
+       int coop_gc_stack_dummy, coop_gc_var;
 
        memset (&m, 0, sizeof (m));
        m.mb = mb;
@@ -7100,10 +7137,12 @@ mono_marshal_emit_native_wrapper (MonoImage *image, MonoMethodBuilder *mb, MonoM
                mono_mb_add_local (mb, sig->ret);
        }
 
-#ifdef USE_COOP_GC
-       /* local 4, the local to be used when calling the suspend funcs */
-       coop_gc_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
-#endif
+       if (mono_threads_is_coop_enabled ()) {
+               /* local 4, dummy local used to get a stack address for suspend funcs */
+               coop_gc_stack_dummy = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+               /* local 5, the local to be used when calling the suspend funcs */
+               coop_gc_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+       }
 
        if (mspecs [0] && mspecs [0]->native == MONO_NATIVE_CUSTOM) {
                /* Return type custom marshaling */
@@ -7116,8 +7155,8 @@ mono_marshal_emit_native_wrapper (MonoImage *image, MonoMethodBuilder *mb, MonoM
        }
 
        /* we first do all conversions */
-       tmp_locals = alloca (sizeof (int) * sig->param_count);
-       m.orig_conv_args = alloca (sizeof (int) * (sig->param_count + 1));
+       tmp_locals = (int *)alloca (sizeof (int) * sig->param_count);
+       m.orig_conv_args = (int *)alloca (sizeof (int) * (sig->param_count + 1));
 
        for (i = 0; i < sig->param_count; i ++) {
                tmp_locals [i] = emit_marshal (&m, i + param_shift, sig->params [i], mspecs [i + 1], 0, &csig->params [i], MARSHAL_ACTION_CONV_IN);
@@ -7132,10 +7171,11 @@ mono_marshal_emit_native_wrapper (MonoImage *image, MonoMethodBuilder *mb, MonoM
                emit_marshal (&m, i + param_shift, sig->params [i], mspecs [i + 1], tmp_locals [i], NULL, MARSHAL_ACTION_PUSH);
        }                       
 
-#ifdef USE_COOP_GC
-       mono_mb_emit_icall (mb, mono_threads_prepare_blocking);
-       mono_mb_emit_stloc (mb, coop_gc_var);
-#endif
+       if (mono_threads_is_coop_enabled ()) {
+               mono_mb_emit_ldloc_addr (mb, coop_gc_stack_dummy);
+               mono_mb_emit_icall (mb, mono_threads_prepare_blocking);
+               mono_mb_emit_stloc (mb, coop_gc_var);
+       }
 
        /* call the native method */
        if (func_param) {
@@ -7181,10 +7221,11 @@ mono_marshal_emit_native_wrapper (MonoImage *image, MonoMethodBuilder *mb, MonoM
 #endif
        }               
 
-#ifdef USE_COOP_GC
-       mono_mb_emit_ldloc (mb, coop_gc_var);
-       mono_mb_emit_icall (mb, mono_threads_finish_blocking);
-#endif
+       if (mono_threads_is_coop_enabled ()) {
+               mono_mb_emit_ldloc (mb, coop_gc_var);
+               mono_mb_emit_ldloc_addr (mb, coop_gc_stack_dummy);
+               mono_mb_emit_icall (mb, mono_threads_finish_blocking);
+       }
 
        /* convert the result */
        if (!sig->ret->byref) {
@@ -7685,9 +7726,7 @@ mono_marshal_emit_managed_wrapper (MonoMethodBuilder *mb, MonoMethodSignature *i
        MonoMethodSignature *sig, *csig;
        int i, *tmp_locals;
        gboolean closed = FALSE;
-#ifdef USE_COOP_GC
-       int coop_gc_var;
-#endif
+       int coop_gc_var, coop_gc_dummy_local;
 
        sig = m->sig;
        csig = m->csig;
@@ -7713,11 +7752,14 @@ mono_marshal_emit_managed_wrapper (MonoMethodBuilder *mb, MonoMethodSignature *i
                /* allocate local 3 to store the return value */
                mono_mb_add_local (mb, sig->ret);
        }
-#ifdef USE_COOP_GC
-       /* local 4, the local to be used when calling the reset_blocking funcs */
-       /* tons of code hardcode 3 to be the return var */
-       coop_gc_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
-#endif
+
+       if (mono_threads_is_coop_enabled ()) {
+               /* local 4, the local to be used when calling the reset_blocking funcs */
+               /* tons of code hardcode 3 to be the return var */
+               coop_gc_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+               /* local 5, the local used to get a stack address for suspend funcs */
+               coop_gc_dummy_local = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+       }
 
        mono_mb_emit_icon (mb, 0);
        mono_mb_emit_stloc (mb, 2);
@@ -7729,14 +7771,15 @@ mono_marshal_emit_managed_wrapper (MonoMethodBuilder *mb, MonoMethodSignature *i
        mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
        mono_mb_emit_byte (mb, CEE_MONO_JIT_ATTACH);
 
-#ifdef USE_COOP_GC
-       /* XXX can we merge reset_blocking_start with JIT_ATTACH above and save one call? */
-       mono_mb_emit_icall (mb, mono_threads_reset_blocking_start);
-       mono_mb_emit_stloc (mb, coop_gc_var);
-#endif
+       if (mono_threads_is_coop_enabled ()) {
+               /* XXX can we merge reset_blocking_start with JIT_ATTACH above and save one call? */
+               mono_mb_emit_ldloc_addr (mb, coop_gc_dummy_local);
+               mono_mb_emit_icall (mb, mono_threads_reset_blocking_start);
+               mono_mb_emit_stloc (mb, coop_gc_var);
+       }
 
        /* we first do all conversions */
-       tmp_locals = alloca (sizeof (int) * sig->param_count);
+       tmp_locals = (int *)alloca (sizeof (int) * sig->param_count);
        for (i = 0; i < sig->param_count; i ++) {
                MonoType *t = sig->params [i];
 
@@ -7863,11 +7906,12 @@ mono_marshal_emit_managed_wrapper (MonoMethodBuilder *mb, MonoMethodSignature *i
                }
        }
 
-#ifdef USE_COOP_GC
-       /* XXX merge reset_blocking_end with detach */
-       mono_mb_emit_ldloc (mb, coop_gc_var);
-       mono_mb_emit_icall (mb, mono_threads_reset_blocking_end);
-#endif
+       if (mono_threads_is_coop_enabled ()) {
+               /* XXX merge reset_blocking_end with detach */
+               mono_mb_emit_ldloc (mb, coop_gc_var);
+               mono_mb_emit_ldloc_addr (mb, coop_gc_dummy_local);
+               mono_mb_emit_icall (mb, mono_threads_reset_blocking_end);
+       }
 
        mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
        mono_mb_emit_byte (mb, CEE_MONO_JIT_DETACH);
@@ -8778,6 +8822,7 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
        MonoMethodBuilder *mb;
        MonoMethod *res;
        GHashTable *cache;
+       WrapperInfo *info;
        int i, pos, pos2, this_local, taken_local, ret_local = 0;
        MonoGenericContext *ctx = NULL;
        MonoMethod *orig_method = NULL;
@@ -8818,6 +8863,9 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
 
        mb = mono_mb_new (method->klass, method->name, MONO_WRAPPER_SYNCHRONIZED);
 
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_NONE);
+       info->d.synchronized.method = method;
+
 #ifndef DISABLE_JIT
        mb->skip_visibility = 1;
        /* result */
@@ -8838,8 +8886,8 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
                mono_mb_emit_byte (mb, CEE_RET);
 #endif
 
-               res = mono_mb_create_and_cache (cache, method,
-                                                                               mb, sig, sig->param_count + 16);
+               res = mono_mb_create_and_cache_full (cache, method,
+                                                                                        mb, sig, sig->param_count + 16, info, NULL);
                mono_mb_free (mb);
 
                return res;
@@ -8850,7 +8898,7 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
        this_local = mono_mb_add_local (mb, &mono_defaults.object_class->byval_arg);
        taken_local = mono_mb_add_local (mb, &mono_defaults.boolean_class->byval_arg);
 
-       clause = mono_image_alloc0 (method->klass->image, sizeof (MonoExceptionClause));
+       clause = (MonoExceptionClause *)mono_image_alloc0 (method->klass->image, sizeof (MonoExceptionClause));
        clause->flags = MONO_EXCEPTION_CLAUSE_FINALLY;
 #endif
 
@@ -8941,11 +8989,11 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
 
        if (ctx) {
                MonoMethod *def;
-               def = mono_mb_create_and_cache (cache, method, mb, sig, sig->param_count + 16);
+               def = mono_mb_create_and_cache_full (cache, method, mb, sig, sig->param_count + 16, info, NULL);
                res = cache_generic_wrapper (cache, orig_method, def, ctx, orig_method);
        } else {
-               res = mono_mb_create_and_cache (cache, method,
-                                                                               mb, sig, sig->param_count + 16);
+               res = mono_mb_create_and_cache_full (cache, method,
+                                                                                        mb, sig, sig->param_count + 16, info, NULL);
        }
        mono_mb_free (mb);
 
@@ -8964,6 +9012,7 @@ mono_marshal_get_unbox_wrapper (MonoMethod *method)
        MonoMethodBuilder *mb;
        MonoMethod *res;
        GHashTable *cache;
+       WrapperInfo *info;
 
        cache = get_cache (&mono_method_get_wrapper_cache (method)->unbox_wrapper_cache, mono_aligned_addr_hash, NULL);
 
@@ -8984,8 +9033,11 @@ mono_marshal_get_unbox_wrapper (MonoMethod *method)
        mono_mb_emit_byte (mb, CEE_RET);
 #endif
 
-       res = mono_mb_create_and_cache (cache, method,
-                                                                                mb, sig, sig->param_count + 16);
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_NONE);
+       info->d.unbox.method = method;
+
+       res = mono_mb_create_and_cache_full (cache, method,
+                                                                                mb, sig, sig->param_count + 16, info, NULL);
        mono_mb_free (mb);
 
        /* mono_method_print_code (res); */
@@ -9489,7 +9541,7 @@ mono_marshal_get_virtual_stelemref_wrappers (int *nwrappers)
        int i;
 
        *nwrappers = STELEMREF_KIND_COUNT;
-       res = g_malloc0 (STELEMREF_KIND_COUNT * sizeof (MonoMethod*));
+       res = (MonoMethod **)g_malloc0 (STELEMREF_KIND_COUNT * sizeof (MonoMethod*));
        for (i = 0; i < STELEMREF_KIND_COUNT; ++i)
                res [i] = get_virtual_stelemref_wrapper (i);
        return res;
@@ -9967,14 +10019,14 @@ mono_marshal_get_array_accessor_wrapper (MonoMethod *method)
        mono_mb_emit_byte (mb, CEE_RET);
 #endif
 
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_ARRAY_ACCESSOR);
+       info->d.array_accessor.method = method;
+
        if (ctx) {
                MonoMethod *def;
-               def = mono_mb_create_and_cache (cache, method, mb, sig, sig->param_count + 16);
+               def = mono_mb_create_and_cache_full (cache, method, mb, sig, sig->param_count + 16, info, NULL);
                res = cache_generic_wrapper (cache, orig_method, def, ctx, orig_method);
        } else {
-               info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_ARRAY_ACCESSOR);
-               info->d.array_accessor.method = method;
-
                res = mono_mb_create_and_cache_full (cache, method,
                                                                                         mb, sig, sig->param_count + 16,
                                                                                         info, NULL);
@@ -10034,7 +10086,7 @@ mono_marshal_string_to_utf16_copy (MonoString *s)
        if (s == NULL) {
                return NULL;
        } else {
-               gunichar2 *res = mono_marshal_alloc ((mono_string_length (s) * 2) + 2);
+               gunichar2 *res = (gunichar2 *)mono_marshal_alloc ((mono_string_length (s) * 2) + 2);
                memcpy (res, mono_string_chars (s), mono_string_length (s) * 2);
                res [mono_string_length (s)] = 0;
                return res;
@@ -10392,7 +10444,7 @@ ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni (MonoString
                gunichar2 *res = ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal 
                        ((mono_string_length (string) + 1) * 2);
 #else
-               gunichar2 *res = g_malloc ((mono_string_length (string) + 1) * 2);              
+               gunichar2 *res = (gunichar2 *)g_malloc ((mono_string_length (string) + 1) * 2);
 #endif
                memcpy (res, mono_string_chars (string), mono_string_length (string) * 2);
                res [mono_string_length (string)] = 0;
@@ -10591,7 +10643,7 @@ ves_icall_System_Runtime_InteropServices_Marshal_GetDelegateForFunctionPointerIn
 static gboolean
 mono_marshal_is_loading_type_info (MonoClass *klass)
 {
-       GSList *loads_list = mono_native_tls_get_value (load_type_info_tls_id);
+       GSList *loads_list = (GSList *)mono_native_tls_get_value (load_type_info_tls_id);
 
        return g_slist_find (loads_list, klass) != NULL;
 }
@@ -10632,7 +10684,7 @@ mono_marshal_load_type_info (MonoClass* klass)
         * under initialization in a TLS list.
         */
        g_assert (!mono_marshal_is_loading_type_info (klass));
-       loads_list = mono_native_tls_get_value (load_type_info_tls_id);
+       loads_list = (GSList *)mono_native_tls_get_value (load_type_info_tls_id);
        loads_list = g_slist_prepend (loads_list, klass);
        mono_native_tls_set_value (load_type_info_tls_id, loads_list);
        
@@ -10648,7 +10700,7 @@ mono_marshal_load_type_info (MonoClass* klass)
        layout = klass->flags & TYPE_ATTRIBUTE_LAYOUT_MASK;
 
        /* The mempool is protected by the loader lock */
-       info = mono_image_alloc0 (klass->image, MONO_SIZEOF_MARSHAL_TYPE + sizeof (MonoMarshalField) * count);
+       info = (MonoMarshalType *)mono_image_alloc0 (klass->image, MONO_SIZEOF_MARSHAL_TYPE + sizeof (MonoMarshalField) * count);
        info->num_fields = count;
        
        /* Try to find a size for this type in metadata */
@@ -10739,7 +10791,7 @@ mono_marshal_load_type_info (MonoClass* klass)
                mono_marshal_load_type_info (klass->element_class);
        }
 
-       loads_list = mono_native_tls_get_value (load_type_info_tls_id);
+       loads_list = (GSList *)mono_native_tls_get_value (load_type_info_tls_id);
        loads_list = g_slist_remove (loads_list, klass);
        mono_native_tls_set_value (load_type_info_tls_id, loads_list);
 
@@ -11075,7 +11127,7 @@ mono_marshal_free_asany (MonoObject *o, gpointer ptr, MonoMarshalNative string_e
                }
 
                if (!((param_attrs & PARAM_ATTRIBUTE_OUT) && !(param_attrs & PARAM_ATTRIBUTE_IN))) {
-                       mono_struct_delete_old (klass, ptr);
+                       mono_struct_delete_old (klass, (char *)ptr);
                }
 
                mono_marshal_free (ptr);
@@ -11087,7 +11139,7 @@ mono_marshal_free_asany (MonoObject *o, gpointer ptr, MonoMarshalNative string_e
 }
 
 MonoMethod *
-mono_marshal_get_generic_array_helper (MonoClass *class, MonoClass *iface, gchar *name, MonoMethod *method)
+mono_marshal_get_generic_array_helper (MonoClass *klass, MonoClass *iface, gchar *name, MonoMethod *method)
 {
        MonoMethodSignature *sig, *csig;
        MonoMethodBuilder *mb;
@@ -11095,7 +11147,7 @@ mono_marshal_get_generic_array_helper (MonoClass *class, MonoClass *iface, gchar
        WrapperInfo *info;
        int i;
 
-       mb = mono_mb_new_no_dup_name (class, name, MONO_WRAPPER_MANAGED_TO_MANAGED);
+       mb = mono_mb_new_no_dup_name (klass, name, MONO_WRAPPER_MANAGED_TO_MANAGED);
        mb->method->slot = -1;
 
        mb->method->flags = METHOD_ATTRIBUTE_PRIVATE | METHOD_ATTRIBUTE_VIRTUAL |
@@ -11195,9 +11247,7 @@ mono_marshal_get_thunk_invoke_wrapper (MonoMethod *method)
        GHashTable *cache;
        MonoMethod *res;
        int i, param_count, sig_size, pos_leave;
-#ifdef USE_COOP_GC
-       int coop_gc_var;
-#endif
+       int coop_gc_var, coop_gc_dummy_local;
 
        g_assert (method);
 
@@ -11206,7 +11256,6 @@ mono_marshal_get_thunk_invoke_wrapper (MonoMethod *method)
 
        cache = get_cache (&mono_method_get_wrapper_cache (method)->thunk_invoke_cache, mono_aligned_addr_hash, NULL);
 
-
        if ((res = mono_marshal_find_in_cache (cache, method)))
                return res;
 
@@ -11251,25 +11300,28 @@ mono_marshal_get_thunk_invoke_wrapper (MonoMethod *method)
        if (!MONO_TYPE_IS_VOID (sig->ret))
                mono_mb_add_local (mb, sig->ret);
 
-#ifdef USE_COOP_GC
-       /* local 4, the local to be used when calling the reset_blocking funcs */
-       /* tons of code hardcode 3 to be the return var */
-       coop_gc_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
-#endif
+       if (mono_threads_is_coop_enabled ()) {
+               /* local 4, the local to be used when calling the reset_blocking funcs */
+               /* tons of code hardcode 3 to be the return var */
+               coop_gc_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+               /* local 5, the local used to get a stack address for suspend funcs */
+               coop_gc_dummy_local = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+       }
 
        /* clear exception arg */
        mono_mb_emit_ldarg (mb, param_count - 1);
        mono_mb_emit_byte (mb, CEE_LDNULL);
        mono_mb_emit_byte (mb, CEE_STIND_REF);
 
-#ifdef USE_COOP_GC
-       /* FIXME this is technically wrong as the callback itself must be executed in gc unsafe context. */
-       mono_mb_emit_icall (mb, mono_threads_reset_blocking_start);
-       mono_mb_emit_stloc (mb, coop_gc_var);
-#endif
+       if (mono_threads_is_coop_enabled ()) {
+               /* FIXME this is technically wrong as the callback itself must be executed in gc unsafe context. */
+               mono_mb_emit_ldloc_addr (mb, coop_gc_dummy_local);
+               mono_mb_emit_icall (mb, mono_threads_reset_blocking_start);
+               mono_mb_emit_stloc (mb, coop_gc_var);
+       }
 
        /* try */
-       clause = mono_image_alloc0 (image, sizeof (MonoExceptionClause));
+       clause = (MonoExceptionClause *)mono_image_alloc0 (image, sizeof (MonoExceptionClause));
        clause->try_offset = mono_mb_get_label (mb);
 
        /* push method's args */
@@ -11337,11 +11389,12 @@ mono_marshal_get_thunk_invoke_wrapper (MonoMethod *method)
                        mono_mb_emit_op (mb, CEE_BOX, mono_class_from_mono_type (sig->ret));
        }
 
-#ifdef USE_COOP_GC
-       /* XXX merge reset_blocking_end with detach */
-       mono_mb_emit_ldloc (mb, coop_gc_var);
-       mono_mb_emit_icall (mb, mono_threads_reset_blocking_end);
-#endif
+       if (mono_threads_is_coop_enabled ()) {
+               /* XXX merge reset_blocking_end with detach */
+               mono_mb_emit_ldloc (mb, coop_gc_var);
+               mono_mb_emit_ldloc_addr (mb, coop_gc_dummy_local);
+               mono_mb_emit_icall (mb, mono_threads_reset_blocking_end);
+       }
 
        mono_mb_emit_byte (mb, CEE_RET);
 #endif
index 49e555798c42c6e6fe23e6de201637a368048575..494ff3d435ef5dbdbc99385fa2f90eea8ee6f162 100644 (file)
@@ -115,7 +115,10 @@ typedef enum {
        WRAPPER_SUBTYPE_GENERIC_ARRAY_HELPER,
        /* Subtypes of MONO_WRAPPER_DELEGATE_INVOKE */
        WRAPPER_SUBTYPE_DELEGATE_INVOKE_VIRTUAL,
-       WRAPPER_SUBTYPE_DELEGATE_INVOKE_BOUND
+       WRAPPER_SUBTYPE_DELEGATE_INVOKE_BOUND,
+       /* Subtypes of MONO_WRAPPER_UNKNOWN */
+       WRAPPER_SUBTYPE_GSHAREDVT_IN_SIG,
+       WRAPPER_SUBTYPE_GSHAREDVT_OUT_SIG,
 } WrapperSubtype;
 
 typedef struct {
@@ -139,13 +142,16 @@ typedef struct {
        MonoMethod *method;
        /* For WRAPPER_SUBTYPE_RUNTIME_INVOKE_NORMAL */
        MonoMethodSignature *sig;
-       gboolean pass_rgctx;
 } RuntimeInvokeWrapperInfo;
 
 typedef struct {
        MonoMethod *method;
 } ManagedToNativeWrapperInfo;
 
+typedef struct {
+       MonoMethod *method;
+} SynchronizedWrapperInfo;
+
 typedef struct {
        MonoMethod *method;
 } SynchronizedInnerWrapperInfo;
@@ -166,6 +172,23 @@ typedef struct {
        MonoClass *klass;
 } ProxyWrapperInfo;
 
+typedef struct {
+       const char *gc_name;
+       int alloc_type;
+} AllocatorWrapperInfo;
+
+typedef struct {
+       MonoMethod *method;
+} UnboxWrapperInfo;
+
+typedef struct {
+       MonoMethod *method;
+} RemotingWrapperInfo;
+
+typedef struct {
+       MonoMethodSignature *sig;
+} GsharedvtWrapperInfo;
+
 /*
  * This structure contains additional information to uniquely identify a given wrapper
  * method. It can be retrieved by mono_marshal_get_wrapper_info () for certain types
@@ -186,6 +209,8 @@ typedef struct {
                NativeToManagedWrapperInfo native_to_managed;
                /* MONO_WRAPPER_MANAGED_TO_NATIVE */
                ManagedToNativeWrapperInfo managed_to_native;
+               /* SYNCHRONIZED */
+               SynchronizedWrapperInfo synchronized;
                /* SYNCHRONIZED_INNER */
                SynchronizedInnerWrapperInfo synchronized_inner;
                /* GENERIC_ARRAY_HELPER */
@@ -196,6 +221,14 @@ typedef struct {
                ArrayAccessorWrapperInfo array_accessor;
                /* PROXY_ISINST etc. */
                ProxyWrapperInfo proxy;
+               /* ALLOC */
+               AllocatorWrapperInfo alloc;
+               /* UNBOX */
+               UnboxWrapperInfo unbox;
+               /* MONO_WRAPPER_REMOTING_INVOKE/MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK/MONO_WRAPPER_XDOMAIN_INVOKE */
+               RemotingWrapperInfo remoting;
+               /* GSHAREDVT_IN_SIG/GSHAREDVT_OUT_SIG */
+               GsharedvtWrapperInfo gsharedvt;
        } d;
 } WrapperInfo;
 
@@ -295,9 +328,9 @@ WrapperInfo*
 mono_wrapper_info_create (MonoMethodBuilder *mb, WrapperSubtype subtype);
 
 void
-mono_marshal_set_wrapper_info (MonoMethod *method, gpointer data);
+mono_marshal_set_wrapper_info (MonoMethod *method, WrapperInfo *info);
 
-gpointer
+WrapperInfo*
 mono_marshal_get_wrapper_info (MonoMethod *wrapper);
 
 MonoMethod *
@@ -313,11 +346,14 @@ MonoMethod *
 mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt, gboolean static_method_with_first_arg_bound, MonoMethod *target_method);
 
 MonoMethod *
-mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean is_virtual, gboolean pass_rgctx);
+mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean is_virtual);
 
 MonoMethod*
 mono_marshal_get_runtime_invoke_dynamic (void);
 
+MonoMethod *
+mono_marshal_get_runtime_invoke_for_sig (MonoMethodSignature *sig);
+
 MonoMethodSignature*
 mono_marshal_get_string_ctor_signature (MonoMethod *method);
 
index f02703a31fa2b41e83600a8099d668f944931f13..abbdbdbace3b167545217577638bccda303b010a 100644 (file)
 #include "mempool.h"
 #include "mempool-internals.h"
 
-#if USE_MALLOC_FOR_MEMPOOLS
-#define MALLOC_ALLOCATION
-#endif
-
 /*
  * MonoMemPool is for fast allocation of memory. We free
  * all memory when the pool is destroyed.
@@ -30,6 +26,8 @@
 
 #define MEM_ALIGN 8
 #define ALIGN_SIZE(s)  (((s) + MEM_ALIGN - 1) & ~(MEM_ALIGN - 1))
+
+// Size of memory at start of mempool reserved for header
 #define SIZEOF_MEM_POOL        (ALIGN_SIZE (sizeof (MonoMemPool)))
 
 #if MONO_SMALL_CONFIG
 #define MONO_MEMPOOL_MINSIZE 512
 #endif
 
+// The --with-malloc-mempools debug-build flag causes mempools to be allocated in single-element blocks, so tools like Valgrind can run better.
+#if USE_MALLOC_FOR_MEMPOOLS
+#define INDIVIDUAL_ALLOCATIONS
+#define MONO_MEMPOOL_PREFER_INDIVIDUAL_ALLOCATION_SIZE 0
+#else
+#define MONO_MEMPOOL_PREFER_INDIVIDUAL_ALLOCATION_SIZE MONO_MEMPOOL_PAGESIZE
+#endif
+
 #ifndef G_LIKELY
 #define G_LIKELY(a) (a)
 #define G_UNLIKELY(a) (a)
 #endif
 
-#ifdef MALLOC_ALLOCATION
-typedef struct _Chunk {
-       struct _Chunk *next;
-       guint32 size;
-} Chunk;
-
-struct _MonoMemPool {
-       Chunk *chunks;
-       guint32 allocated;
-};
-#else
+// A mempool is a linked list of memory blocks, each of which begins with this header structure.
+// The initial block in the linked list is special, and tracks additional information.
 struct _MonoMemPool {
+       // Next block after this one in linked list
        MonoMemPool *next;
-       gint rest;
-       guint8 *pos, *end;
+
+       // Size of this memory block only
        guint32 size;
+
+       // Used in "initial block" only: Beginning of current free space in mempool (may be in some block other than the first one)
+       guint8 *pos;
+
+       // Used in "initial block" only: End of current free space in mempool (ie, the first byte following the end of usable space)
+       guint8 *end;
+
        union {
-               double pad; /* to assure proper alignment */
+               // Unused: Imposing floating point memory rules on _MonoMemPool's final field ensures proper alignment of whole header struct
+               double pad;
+
+               // Used in "initial block" only: Number of bytes so far allocated (whether used or not) in the whole mempool
                guint32 allocated;
        } d;
 };
-#endif
 
 static long total_bytes_allocated = 0;
 
@@ -81,24 +88,33 @@ mono_mempool_new (void)
        return mono_mempool_new_size (MONO_MEMPOOL_PAGESIZE);
 }
 
+/**
+ * mono_mempool_new_size:
+ * @initial_size: the amount of memory to initially reserve for the memory pool.
+ *
+ * Returns: a new memory pool with a specific initial memory reservation.
+ */
 MonoMemPool *
 mono_mempool_new_size (int initial_size)
 {
-#ifdef MALLOC_ALLOCATION
-       return g_new0 (MonoMemPool, 1);
-#else
        MonoMemPool *pool;
+
+#ifdef INDIVIDUAL_ALLOCATIONS
+       // In individual allocation mode, create initial block with zero storage space.
+       initial_size = SIZEOF_MEM_POOL;
+#else
        if (initial_size < MONO_MEMPOOL_MINSIZE)
                initial_size = MONO_MEMPOOL_MINSIZE;
-       pool = g_malloc (initial_size);
+#endif
+
+       pool = (MonoMemPool *)g_malloc (initial_size);
 
        pool->next = NULL;
-       pool->pos = (guint8*)pool + SIZEOF_MEM_POOL;
-       pool->end = pool->pos + initial_size - SIZEOF_MEM_POOL;
+       pool->pos = (guint8*)pool + SIZEOF_MEM_POOL; // Start after header
+       pool->end = (guint8*)pool + initial_size;    // End at end of allocated space 
        pool->d.allocated = pool->size = initial_size;
        total_bytes_allocated += initial_size;
        return pool;
-#endif
 }
 
 /**
@@ -110,11 +126,6 @@ mono_mempool_new_size (int initial_size)
 void
 mono_mempool_destroy (MonoMemPool *pool)
 {
-#ifdef MALLOC_ALLOCATION
-       mono_mempool_empty (pool);
-
-       g_free (pool);
-#else
        MonoMemPool *p, *n;
 
        total_bytes_allocated -= pool->d.allocated;
@@ -125,7 +136,6 @@ mono_mempool_destroy (MonoMemPool *pool)
                g_free (p);
                p = n;
        }
-#endif
 }
 
 /**
@@ -137,9 +147,6 @@ mono_mempool_destroy (MonoMemPool *pool)
 void
 mono_mempool_invalidate (MonoMemPool *pool)
 {
-#ifdef MALLOC_ALLOCATION
-       g_assert_not_reached ();
-#else
        MonoMemPool *p, *n;
 
        p = pool;
@@ -148,49 +155,26 @@ mono_mempool_invalidate (MonoMemPool *pool)
                memset (p, 42, p->size);
                p = n;
        }
-#endif
-}
-
-void
-mono_mempool_empty (MonoMemPool *pool)
-{
-#ifdef MALLOC_ALLOCATION
-       Chunk *p, *n;
-
-       p = pool->chunks;
-       pool->chunks = NULL;
-       while (p) {
-               n = p->next;
-               g_free (p);
-               p = n;
-       }
-
-       pool->allocated = 0;
-#else
-       pool->pos = (guint8*)pool + SIZEOF_MEM_POOL;
-       pool->end = pool->pos + pool->size - SIZEOF_MEM_POOL;
-#endif
 }
 
 /**
  * mono_mempool_stats:
  * @pool: the momory pool we need stats for
  *
- * Print a few stats about the mempool
+ * Print a few stats about the mempool:
+ * - Total memory allocated (malloced) by mem pool
+ * - Number of chunks/blocks memory is allocated in
+ * - How much memory is available to dispense before a new malloc must occur?
  */
 void
 mono_mempool_stats (MonoMemPool *pool)
 {
-#ifdef MALLOC_ALLOCATION
-       g_assert_not_reached ();
-#else
        MonoMemPool *p;
        int count = 0;
-       guint32 still_free = 0;
+       guint32 still_free = pool->end - pool->pos;
 
        p = pool;
        while (p) {
-               still_free += p->end - p->pos;
                p = p->next;
                count++;
        }
@@ -200,10 +184,8 @@ mono_mempool_stats (MonoMemPool *pool)
                g_print ("Num chunks: %d\n", count);
                g_print ("Free memory: %d\n", still_free);
        }
-#endif
 }
 
-#ifndef MALLOC_ALLOCATION
 #ifdef TRACE_ALLOCATIONS
 #include <execinfo.h>
 #include "metadata/appdomain.h"
@@ -220,11 +202,11 @@ mono_backtrace (int size)
         static gboolean inited;
 
         if (!inited) {
-            mono_mutex_init_recursive (&mempool_tracing_lock);
+            mono_os_mutex_init_recursive (&mempool_tracing_lock);
             inited = TRUE;
         }
 
-        mono_mutex_lock (&mempool_tracing_lock);
+        mono_os_mutex_lock (&mempool_tracing_lock);
         g_print ("Allocating %d bytes\n", size);
         symbols = backtrace (array, BACKTRACE_DEPTH);
         names = backtrace_symbols (array, symbols);
@@ -232,12 +214,23 @@ mono_backtrace (int size)
                 g_print ("\t%s\n", names [i]);
         }
         free (names);
-        mono_mutex_unlock (&mempool_tracing_lock);
+        mono_os_mutex_unlock (&mempool_tracing_lock);
 }
 
 #endif
 
-static int
+/**
+ * mono_mempool_alloc:
+ * @pool: the memory pool to use
+ * @size: size of the memory entity we are trying to allocate
+ *
+ * A mempool is growing; give a recommended size for the next block.
+ * Each block in a mempool should be about 150% bigger than the previous one,
+ * or bigger if it is necessary to include the new entity.
+ *
+ * Returns: the recommended size.
+ */
+static guint
 get_next_size (MonoMemPool *pool, int size)
 {
        int target = pool->next? pool->next->size: pool->size;
@@ -251,12 +244,11 @@ get_next_size (MonoMemPool *pool, int size)
                target = MONO_MEMPOOL_PAGESIZE;
        return target;
 }
-#endif
 
 /**
  * mono_mempool_alloc:
- * @pool: the momory pool to use
- * @size: size of the momory block
+ * @pool: the memory pool to use
+ * @size: size of the memory block
  *
  * Allocates a new block of memory in @pool.
  *
@@ -265,24 +257,10 @@ get_next_size (MonoMemPool *pool, int size)
 gpointer
 mono_mempool_alloc (MonoMemPool *pool, guint size)
 {
-       gpointer rval;
+       gpointer rval = pool->pos; // Return value
 
+       // Normal case: Just bump up pos pointer and we are done
        size = ALIGN_SIZE (size);
-
-#ifdef MALLOC_ALLOCATION
-       {
-               Chunk *c = g_malloc (size + sizeof (Chunk));
-
-               c->next = pool->chunks;
-               pool->chunks = c;
-               c->size = size - sizeof(Chunk);
-
-               pool->allocated += size;
-
-               rval = ((guint8*)c) + sizeof (Chunk);
-       }
-#else
-       rval = pool->pos;
        pool->pos = (guint8*)rval + size;
 
 #ifdef TRACE_ALLOCATIONS
@@ -290,28 +268,34 @@ mono_mempool_alloc (MonoMemPool *pool, guint size)
                mono_backtrace (size);
        }
 #endif
+
+       // If we have just overflowed the current block, we need to back up and try again.
        if (G_UNLIKELY (pool->pos >= pool->end)) {
-               pool->pos -= size;
-               if (size >= 4096) {
-                       MonoMemPool *np = g_malloc (SIZEOF_MEM_POOL + size);
+               pool->pos -= size;  // Back out
+
+               // For large objects, allocate the object into its own block.
+               // (In individual allocation mode, the constant will be 0 and this path will always be taken)
+               if (size >= MONO_MEMPOOL_PREFER_INDIVIDUAL_ALLOCATION_SIZE) {
+                       guint new_size = SIZEOF_MEM_POOL + size;
+                       MonoMemPool *np = (MonoMemPool *)g_malloc (new_size);
+
                        np->next = pool->next;
+                       np->size = new_size;
                        pool->next = np;
-                       np->pos = (guint8*)np + SIZEOF_MEM_POOL;
-                       np->size = SIZEOF_MEM_POOL + size;
-                       np->end = np->pos + np->size - SIZEOF_MEM_POOL;
-                       pool->d.allocated += SIZEOF_MEM_POOL + size;
-                       total_bytes_allocated += SIZEOF_MEM_POOL + size;
-                       return (guint8*)np + SIZEOF_MEM_POOL;
+                       pool->d.allocated += new_size;
+                       total_bytes_allocated += new_size;
+
+                       rval = (guint8*)np + SIZEOF_MEM_POOL;
                } else {
-                       int new_size = get_next_size (pool, size);
-                       MonoMemPool *np = g_malloc (new_size);
+                       // Notice: any unused memory at the end of the old head becomes simply abandoned in this case until the mempool is freed (see Bugzilla #35136)
+                       guint new_size = get_next_size (pool, size);
+                       MonoMemPool *np = (MonoMemPool *)g_malloc (new_size);
+
                        np->next = pool->next;
+                       np->size = new_size;
                        pool->next = np;
                        pool->pos = (guint8*)np + SIZEOF_MEM_POOL;
-                       np->pos = (guint8*)np + SIZEOF_MEM_POOL;
-                       np->size = new_size;
-                       np->end = np->pos;
-                       pool->end = pool->pos + new_size - SIZEOF_MEM_POOL;
+                       pool->end = (guint8*)np + new_size;
                        pool->d.allocated += new_size;
                        total_bytes_allocated += new_size;
 
@@ -319,7 +303,6 @@ mono_mempool_alloc (MonoMemPool *pool, guint size)
                        pool->pos += size;
                }
        }
-#endif
 
        return rval;
 }
@@ -334,14 +317,12 @@ mono_mempool_alloc0 (MonoMemPool *pool, guint size)
 {
        gpointer rval;
 
-#ifdef MALLOC_ALLOCATION
-       rval = mono_mempool_alloc (pool, size);
-#else
+       // For the fast path, repeat the first few lines of mono_mempool_alloc
        size = ALIGN_SIZE (size);
-
        rval = pool->pos;
        pool->pos = (guint8*)rval + size;
 
+       // If that doesn't work fall back on mono_mempool_alloc to handle new chunk allocation
        if (G_UNLIKELY (pool->pos >= pool->end)) {
                rval = mono_mempool_alloc (pool, size);
        }
@@ -349,7 +330,6 @@ mono_mempool_alloc0 (MonoMemPool *pool, guint size)
        else if (pool == mono_get_corlib ()->mempool) {
                mono_backtrace (size);
        }
-#endif
 #endif
 
        memset (rval, 0, size);
@@ -365,28 +345,13 @@ gboolean
 mono_mempool_contains_addr (MonoMemPool *pool,
                                                        gpointer addr)
 {
-#ifdef MALLOC_ALLOCATION
-       Chunk *c;
-
-       c = pool->chunks;
-       while (c) {
-               guint8 *p = ((guint8*)c) + sizeof (Chunk);
+       MonoMemPool *p = pool;
 
-               if (addr >= (gpointer)p && addr < (gpointer)(p + c->size))
-                       return TRUE;
-
-               c = c->next;
-       }
-#else
-       MonoMemPool *p;
-
-       p = pool;
        while (p) {
-               if (addr > (gpointer)p && addr <= (gpointer)((guint8*)p + p->size))
+               if (addr >= (gpointer)p && addr < (gpointer)((guint8*)p + p->size))
                        return TRUE;
                p = p->next;
        }
-#endif
 
        return FALSE;
 }
@@ -408,7 +373,7 @@ mono_mempool_strdup (MonoMemPool *pool,
                return NULL;
 
        l = strlen (s);
-       res = mono_mempool_alloc (pool, l + 1);
+       res = (char *)mono_mempool_alloc (pool, l + 1);
        memcpy (res, s, l + 1);
 
        return res;
@@ -422,11 +387,7 @@ mono_mempool_strdup (MonoMemPool *pool,
 guint32
 mono_mempool_get_allocated (MonoMemPool *pool)
 {
-#ifdef MALLOC_ALLOCATION
-       return pool->allocated;
-#else
        return pool->d.allocated;
-#endif
 }
 
 /**
index b096be6e4fd4e52bd6d50aa91e8ca7731d0d4891..d006493a5dc4cf9af082b53e22a8dce5d43c5c48 100644 (file)
@@ -19,9 +19,6 @@ mono_mempool_destroy       (MonoMemPool *pool);
 MONO_API void
 mono_mempool_invalidate    (MonoMemPool *pool);
 
-MONO_API void
-mono_mempool_empty         (MonoMemPool *pool);
-
 MONO_API void
 mono_mempool_stats         (MonoMemPool *pool);
 
index 97723beeb97505f1cd41c256748bcb408ec5b46e..a4f566349882bf1bdfab8f2ccbe62d07cb81796f 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "mono/metadata/image.h"
 #include "mono/metadata/blob.h"
+#include "mono/metadata/cil-coff.h"
 #include "mono/metadata/mempool.h"
 #include "mono/metadata/domain-internals.h"
 #include "mono/metadata/mono-hash.h"
@@ -73,7 +74,7 @@ struct _MonoAssembly {
        /* 
         * The number of appdomains which have this assembly loaded plus the number of 
         * assemblies referencing this assembly through an entry in their image->references
-        * arrays. The later is needed because entries in the image->references array
+        * arrays. The latter is needed because entries in the image->references array
         * might point to assemblies which are only loaded in some appdomains, and without
         * the additional reference, they can be freed at any time.
         * The ref_count is initially 0.
@@ -110,6 +111,7 @@ typedef struct {
        GHashTable *delegate_end_invoke_cache;
        GHashTable *runtime_invoke_cache;
        GHashTable *runtime_invoke_vtype_cache;
+       GHashTable *runtime_invoke_sig_cache;
 
        /*
         * indexed by SignaturePointerPair
@@ -164,6 +166,13 @@ struct _MonoTableInfo {
 
 typedef struct _MonoDllMap MonoDllMap;
 
+typedef struct {
+       gboolean (*match) (MonoImage*);
+       gboolean (*load_pe_data) (MonoImage*);
+       gboolean (*load_cli_data) (MonoImage*);
+       gboolean (*load_tables) (MonoImage*);
+} MonoImageLoader;
+
 struct _MonoImage {
        /*
         * The number of assemblies which reference this MonoImage though their 'image'
@@ -172,6 +181,8 @@ struct _MonoImage {
         * this image between calls of mono_image_open () and mono_image_close ().
         */
        int   ref_count;
+
+       /* If the raw data was allocated from a source such as mmap, the allocator may store resource tracking information here. */
        void *raw_data_handle;
        char *raw_data;
        guint32 raw_data_len;
@@ -208,10 +219,16 @@ struct _MonoImage {
 
        /* Whenever this image is considered as platform code for the CoreCLR security model */
        guint8 core_clr_platform_code : 1;
-                           
+
+       /* The path to the file for this image. */
        char *name;
+
+       /* The assembly name reported in the file for this image (expected to be NULL for a netmodule) */
        const char *assembly_name;
+
+       /* The module name reported in the file for this image (could be NULL for a malformed file) */
        const char *module_name;
+
        char *version;
        gint16 md_version_major, md_version_minor;
        char *guid;
@@ -241,11 +258,16 @@ struct _MonoImage {
        MonoAssembly **references;
        int nreferences;
 
+       /* Code files in the assembly. */
        MonoImage **modules;
        guint32 module_count;
        gboolean *modules_loaded;
 
-       MonoImage **files; /*protected by the image lock*/
+       /*
+        * Files in the assembly. Items are either NULL or alias items in modules, so this does not impact ref_count.
+        * Protected by the image lock.
+        */
+       MonoImage **files;
 
        gpointer aot_module;
 
@@ -365,6 +387,14 @@ struct _MonoImage {
        /* The length of the above array */
        int gshared_types_len;
 
+       /* The loader used to load this image */
+       MonoImageLoader *loader;
+
+       // Containers for MonoGenericParams associated with this image but not with any specific class or method. Created on demand.
+       // This could happen, for example, for MonoTypes associated with TypeSpec table entries.
+       MonoGenericContainer *anonymous_generic_class_container;
+       MonoGenericContainer *anonymous_generic_method_container;
+
        /*
         * No other runtime locks must be taken while holding this lock.
         * It's meant to be used only to mutate and query structures part of this image.
@@ -421,6 +451,7 @@ typedef struct {
        guint32 *values; /* rows * columns */
 } MonoDynamicTable;
 
+/* "Dynamic" assemblies and images arise from System.Reflection.Emit */
 struct _MonoDynamicAssembly {
        MonoAssembly assembly;
        char *strong_name;
@@ -637,6 +668,9 @@ mono_install_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data);
 void
 mono_remove_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data);
 
+void
+mono_install_image_loader (const MonoImageLoader *loader);
+
 void
 mono_image_append_class_to_reflection_info_set (MonoClass *klass);
 
@@ -657,6 +691,12 @@ mono_image_set_strdup (MonoImageSet *set, const char *s);
 
 #define mono_image_set_new0(image,type,size) ((type *) mono_image_set_alloc0 (image, sizeof (type)* (size)))
 
+gboolean
+mono_image_load_cli_header (MonoImage *image, MonoCLIImageInfo *iinfo);
+
+gboolean
+mono_image_load_metadata (MonoImage *image, MonoCLIImageInfo *iinfo);
+
 MonoType*
 mono_metadata_get_shared_type (MonoType *type);
 
@@ -690,7 +730,6 @@ mono_metadata_parse_array_full              (MonoImage             *image,
 MONO_API MonoType *
 mono_metadata_parse_type_full               (MonoImage             *image,
                                             MonoGenericContainer  *container,
-                                            MonoParseTypeMode      mode,
                                             short                  opt_attrs,
                                             const char            *ptr,
                                             const char           **rptr);
@@ -726,7 +765,8 @@ mono_metadata_parse_generic_inst            (MonoImage             *image,
                                             MonoGenericContainer  *container,
                                             int                    count,
                                             const char            *ptr,
-                                            const char           **rptr);
+                                            const char           **rptr,
+                                                MonoError *error);
 
 MonoGenericInst *
 mono_metadata_get_generic_inst              (int                   type_argc,
@@ -862,5 +902,17 @@ mono_method_get_wrapper_cache (MonoMethod *method);
 MonoWrapperCaches*
 mono_method_get_wrapper_cache (MonoMethod *method);
 
+MonoType*
+mono_metadata_parse_type_checked (MonoImage *m, MonoGenericContainer *container, short opt_attrs, gboolean transient, const char *ptr, const char **rptr, MonoError *error);
+
+MonoGenericContainer *
+get_anonymous_container_for_image (MonoImage *image, gboolean is_mvar);
+
+char *
+mono_image_set_description (MonoImageSet *);
+
+MonoImageSet *
+mono_find_image_set_owner (void *ptr);
+
 #endif /* __MONO_METADATA_INTERNALS_H__ */
 
index 1a1597f6ca73e6d1ada66adc0c16f1594f772eb6..65f3bba5686998a1b5b7ea59f79fd20ffbd4cf70 100644 (file)
@@ -332,7 +332,7 @@ bounds_check_virtual_address (VerifyContext *ctx, guint32 rva, guint32 size)
                return FALSE;
 
        if (ctx->stage > STAGE_PE) {
-               MonoCLIImageInfo *iinfo = ctx->image->image_info;
+               MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)ctx->image->image_info;
                const int top = iinfo->cli_section_count;
                MonoSectionTable *tables = iinfo->cli_section_tables;
                int i;
@@ -689,7 +689,7 @@ verify_resources_table (VerifyContext *ctx)
 static DataDirectory
 get_data_dir (VerifyContext *ctx, int idx)
 {
-       MonoCLIImageInfo *iinfo = ctx->image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)ctx->image->image_info;
        MonoPEDirEntry *entry= &iinfo->cli_header.datadir.pe_export_table;
        DataDirectory res;
 
@@ -1069,7 +1069,7 @@ search_sorted_table (VerifyContext *ctx, int table, int column, guint32 coded_to
        base = tinfo->base;
 
        VERIFIER_DEBUG ( printf ("looking token %x table %d col %d rsize %d roff %d\n", coded_token, table, column, locator.col_size, locator.col_offset) );
-       res = mono_binary_search (&locator, base, tinfo->rows, tinfo->row_size, token_locator);
+       res = (const char *)mono_binary_search (&locator, base, tinfo->rows, tinfo->row_size, token_locator);
        if (!res)
                return -1;
 
@@ -1787,7 +1787,7 @@ get_enum_by_encoded_name (VerifyContext *ctx, const char **_ptr, const char *end
                return NULL;
        }
 
-       enum_name = g_memdup (str_start, str_len + 1);
+       enum_name = (char *)g_memdup (str_start, str_len + 1);
        enum_name [str_len] = 0;
        type = mono_reflection_type_from_name (enum_name, ctx->image);
        if (!type) {
@@ -1881,7 +1881,7 @@ handle_enum:
                        } else if (etype == 0x50 || etype == MONO_TYPE_CLASS) {
                                klass = mono_defaults.systemtype_class;
                        } else if ((etype >= MONO_TYPE_BOOLEAN && etype <= MONO_TYPE_STRING) || etype == 0x51) {
-                               simple_type.type = etype == 0x51 ? MONO_TYPE_OBJECT : etype;
+                               simple_type.type = etype == 0x51 ? MONO_TYPE_OBJECT : (MonoTypeEnum)etype;
                                klass = mono_class_from_mono_type (&simple_type);
                        } else
                                FAIL (ctx, g_strdup_printf ("CustomAttribute: Invalid array element type %x", etype));
@@ -1986,7 +1986,7 @@ is_valid_cattr_content (VerifyContext *ctx, MonoMethod *ctor, const char *ptr, g
                        FAIL (ctx, g_strdup_printf ("CustomAttribute: Not enough space for named parameter %d type", i));
 
                if (kind >= MONO_TYPE_BOOLEAN && kind <= MONO_TYPE_STRING) {
-                       simple_type.type = kind;
+                       simple_type.type = (MonoTypeEnum)kind;
                        type = &simple_type;
                } else if (kind == MONO_TYPE_ENUM) {
                        MonoClass *klass = get_enum_by_encoded_name (ctx, &ptr, end);
@@ -2010,7 +2010,7 @@ is_valid_cattr_content (VerifyContext *ctx, MonoMethod *ctor, const char *ptr, g
                        } else if (etype == 0x50 || etype == MONO_TYPE_CLASS) {
                                klass = mono_defaults.systemtype_class;
                        } else if ((etype >= MONO_TYPE_BOOLEAN && etype <= MONO_TYPE_STRING) || etype == 0x51) {
-                               simple_type.type = etype == 0x51 ? MONO_TYPE_OBJECT : etype;
+                               simple_type.type = etype == 0x51 ? MONO_TYPE_OBJECT : (MonoTypeEnum)etype;
                                klass = mono_class_from_mono_type (&simple_type);
                        } else
                                FAIL (ctx, g_strdup_printf ("CustomAttribute: Invalid array element type %x", etype));
@@ -3487,7 +3487,7 @@ verify_exportedtype_table (VerifyContext *ctx)
 static void
 verify_manifest_resource_table (VerifyContext *ctx)
 {
-       MonoCLIImageInfo *iinfo = ctx->image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)ctx->image->image_info;
        MonoCLIHeader *ch = &iinfo->cli_cli_header;
        MonoTableInfo *table = &ctx->image->tables [MONO_TABLE_MANIFESTRESOURCE];
        guint32 data [MONO_MANIFEST_SIZE], impl_table, token, resources_size;
@@ -3662,15 +3662,15 @@ typedef struct {
 static guint
 typedef_hash (gconstpointer _key)
 {
-       const TypeDefUniqueId *key = _key;
+       const TypeDefUniqueId *key = (const TypeDefUniqueId *)_key;
        return g_str_hash (key->name) ^ g_str_hash (key->name_space) ^ key->resolution_scope; /*XXX better salt the int key*/
 }
 
 static gboolean
 typedef_equals (gconstpointer _a, gconstpointer _b)
 {
-       const TypeDefUniqueId *a = _a;
-       const TypeDefUniqueId *b = _b;
+       const TypeDefUniqueId *a = (const TypeDefUniqueId *)_a;
+       const TypeDefUniqueId *b = (const TypeDefUniqueId *)_b;
        return !strcmp (a->name, b->name) && !strcmp (a->name_space, b->name_space) && a->resolution_scope == b->resolution_scope;
 }
 
@@ -3878,7 +3878,7 @@ cleanup_context_checked (VerifyContext *ctx, MonoError *error)
 {
        g_free (ctx->sections);
        if (ctx->errors) {
-               MonoVerifyInfo *info = ctx->errors->data;
+               MonoVerifyInfo *info = (MonoVerifyInfo *)ctx->errors->data;
                mono_error_set_bad_image (error, ctx->image, "%s", info->message);
                mono_free_verify_list (ctx->errors);
        }
index f08f7fa0b8998b8dd4cbd9d0f992e98353bef5e2..e50ad0288c968135460f054b7e73e34f5406f363 100644 (file)
@@ -28,6 +28,7 @@
 #include "abi-details.h"
 #include <mono/utils/mono-error-internals.h>
 #include <mono/utils/bsearch.h>
+#include <mono/utils/atomic.h>
 
 /* Auxiliary structure used for caching inflated signatures */
 typedef struct {
@@ -36,7 +37,7 @@ typedef struct {
 } MonoInflatedMethodSignature;
 
 static gboolean do_mono_metadata_parse_type (MonoType *type, MonoImage *m, MonoGenericContainer *container, gboolean transient,
-                                        const char *ptr, const char **rptr);
+                                        const char *ptr, const char **rptr, MonoError *error);
 
 static gboolean do_mono_metadata_type_equal (MonoType *t1, MonoType *t2, gboolean signature_only);
 static gboolean mono_metadata_class_equal (MonoClass *c1, MonoClass *c2, gboolean signature_only);
@@ -376,10 +377,11 @@ const static unsigned char TableSchemas [] = {
        MONO_MT_END,
 
 #define METHODBODY_SCHEMA_OFFSET DOCUMENT_SCHEMA_OFFSET + 5
+       MONO_MT_TABLE_IDX,   /* Document */
        MONO_MT_BLOB_IDX,   /* SequencePoints */
        MONO_MT_END,
 
-#define LOCALSCOPE_SCHEMA_OFFSET METHODBODY_SCHEMA_OFFSET + 2
+#define LOCALSCOPE_SCHEMA_OFFSET METHODBODY_SCHEMA_OFFSET + 3
        MONO_MT_TABLE_IDX,   /* Method */
        MONO_MT_TABLE_IDX,   /* ImportScope */
        MONO_MT_TABLE_IDX,   /* VariableList */
@@ -483,6 +485,10 @@ mono_tables_names [] = {
 
 #endif
 
+// Amount initially reserved in each imageset's mempool.
+// FIXME: This number is arbitrary, a more practical number should be found
+#define INITIAL_IMAGE_SET_SIZE    1024
+
 /**
  * mono_meta_table_name:
  * @table: table index
@@ -664,6 +670,10 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                                        break;
                                }
                                break;
+                       case MONO_TABLE_METHODBODY:
+                               g_assert (i == 0);
+                               field_size = idx_size (meta, MONO_TABLE_DOCUMENT);
+                               break;
                        default:
                                g_error ("Can't handle MONO_MT_TABLE_IDX for table %d element %d", tableindex, i);
                        }
@@ -1313,28 +1323,29 @@ mono_metadata_parse_custom_mod (MonoImage *m, MonoCustomMod *dest, const char *p
  */
 static MonoArrayType *
 mono_metadata_parse_array_internal (MonoImage *m, MonoGenericContainer *container,
-                                                                       gboolean transient, const char *ptr, const char **rptr)
+                                                                       gboolean transient, const char *ptr, const char **rptr, MonoError *error)
 {
        int i;
        MonoArrayType *array;
        MonoType *etype;
        
-       array = transient ? g_malloc0 (sizeof (MonoArrayType)) : mono_image_alloc0 (m, sizeof (MonoArrayType));
-       etype = mono_metadata_parse_type_full (m, container, MONO_PARSE_TYPE, 0, ptr, &ptr);
+       etype = mono_metadata_parse_type_checked (m, container, 0, FALSE, ptr, &ptr, error); //FIXME this doesn't respect @transient
        if (!etype)
                return NULL;
+
+       array = transient ? (MonoArrayType *)g_malloc0 (sizeof (MonoArrayType)) : (MonoArrayType *)mono_image_alloc0 (m, sizeof (MonoArrayType));
        array->eklass = mono_class_from_mono_type (etype);
        array->rank = mono_metadata_decode_value (ptr, &ptr);
 
        array->numsizes = mono_metadata_decode_value (ptr, &ptr);
        if (array->numsizes)
-               array->sizes = transient ? g_malloc0 (sizeof (int) * array->numsizes) : mono_image_alloc0 (m, sizeof (int) * array->numsizes);
+               array->sizes = transient ? (int *)g_malloc0 (sizeof (int) * array->numsizes) : (int *)mono_image_alloc0 (m, sizeof (int) * array->numsizes);
        for (i = 0; i < array->numsizes; ++i)
                array->sizes [i] = mono_metadata_decode_value (ptr, &ptr);
 
        array->numlobounds = mono_metadata_decode_value (ptr, &ptr);
        if (array->numlobounds)
-               array->lobounds = transient ? g_malloc0 (sizeof (int) * array->numlobounds) : mono_image_alloc0 (m, sizeof (int) * array->numlobounds);
+               array->lobounds = transient ? (int *)g_malloc0 (sizeof (int) * array->numlobounds) : (int *)mono_image_alloc0 (m, sizeof (int) * array->numlobounds);
        for (i = 0; i < array->numlobounds; ++i)
                array->lobounds [i] = mono_metadata_decode_signed_value (ptr, &ptr);
 
@@ -1347,7 +1358,13 @@ MonoArrayType *
 mono_metadata_parse_array_full (MonoImage *m, MonoGenericContainer *container,
                                                                const char *ptr, const char **rptr)
 {
-       return mono_metadata_parse_array_internal (m, container, FALSE, ptr, rptr);
+       MonoError error;
+       MonoArrayType *ret = mono_metadata_parse_array_internal (m, container, FALSE, ptr, rptr, &error);
+       if (!ret) {
+               mono_loader_set_error_from_mono_error (&error);
+               mono_error_cleanup (&error); /*FIXME don't swallow the error message*/
+       }
+       return ret;
 }
 
 MonoArrayType *
@@ -1476,10 +1493,14 @@ mono_generic_inst_equal_full (const MonoGenericInst *a, const MonoGenericInst *b
 {
        int i;
 
-#ifndef MONO_SMALL_CONFIG
-       if (a->id && b->id) {
+       // An optimization: if the ids of two insts are the same, we know they are the same inst and don't check contents.
+       // Furthermore, because we perform early de-duping, if the ids differ, we know the contents differ.
+#ifndef MONO_SMALL_CONFIG // Optimization does not work in MONO_SMALL_CONFIG: There are no IDs
+       if (a->id && b->id) { // "id 0" means "object has no id"-- de-duping hasn't been performed yet, must check contents.
                if (a->id == b->id)
                        return TRUE;
+               // In signature-comparison mode id equality implies object equality, but this is not true for inequality.
+               // Two separate objects could have signature-equavalent contents.
                if (!signature_only)
                        return FALSE;
        }
@@ -1541,7 +1562,7 @@ mono_metadata_init (void)
        for (i = 0; i < NBUILTIN_TYPES (); ++i)
                g_hash_table_insert (type_cache, (gpointer) &builtin_types [i], (gpointer) &builtin_types [i]);
 
-       mono_mutex_init_recursive (&image_sets_mutex);
+       mono_os_mutex_init_recursive (&image_sets_mutex);
 }
 
 /**
@@ -1557,7 +1578,7 @@ mono_metadata_cleanup (void)
        type_cache = NULL;
        g_ptr_array_free (image_sets, TRUE);
        image_sets = NULL;
-       mono_mutex_destroy (&image_sets_mutex);
+       mono_os_mutex_destroy (&image_sets_mutex);
 }
 
 /**
@@ -1586,15 +1607,16 @@ mono_metadata_cleanup (void)
  * Returns: a #MonoType structure representing the decoded type.
  */
 static MonoType*
-mono_metadata_parse_type_internal (MonoImage *m, MonoGenericContainer *container, MonoParseTypeMode mode,
+mono_metadata_parse_type_internal (MonoImage *m, MonoGenericContainer *container,
                                                                   short opt_attrs, gboolean transient, const char *ptr, const char **rptr)
 {
+       MonoError error;
        MonoType *type, *cached;
        MonoType stype;
        gboolean byref = FALSE;
        gboolean pinned = FALSE;
        const char *tmp_ptr;
-       int count = 0;
+       int count = 0; // Number of mod arguments
        gboolean found;
 
        /*
@@ -1628,20 +1650,20 @@ mono_metadata_parse_type_internal (MonoImage *m, MonoGenericContainer *container
                }
        }
 
-       if (count) {
+       if (count) { // There are mods, so the MonoType will be of nonstandard size.
                int size;
 
                size = MONO_SIZEOF_TYPE + ((gint32)count) * sizeof (MonoCustomMod);
-               type = transient ? g_malloc0 (size) : mono_image_alloc0 (m, size);
+               type = transient ? (MonoType *)g_malloc0 (size) : (MonoType *)mono_image_alloc0 (m, size);
                type->num_mods = count;
                if (count > 64)
                        g_warning ("got more than 64 modifiers in type");
-       } else {
+       } else {     // The type is of standard size, so we can allocate it on the stack.
                type = &stype;
                memset (type, 0, MONO_SIZEOF_TYPE);
        }
 
-       /* Parse pinned, byref and custom modifiers */
+       /* Iterate again, but now parse pinned, byref and custom modifiers */
        found = TRUE;
        count = 0;
        while (found) {
@@ -1668,13 +1690,16 @@ mono_metadata_parse_type_internal (MonoImage *m, MonoGenericContainer *container
        type->byref = byref;
        type->pinned = pinned ? 1 : 0;
 
-       if (!do_mono_metadata_parse_type (type, m, container, transient, ptr, &ptr)) {
+       if (!do_mono_metadata_parse_type (type, m, container, transient, ptr, &ptr, &error)) {
+               mono_loader_set_error_from_mono_error (&error);
+               mono_error_cleanup (&error); /*FIXME don't swallow the error message*/
                return NULL;
        }
 
        if (rptr)
                *rptr = ptr;
 
+       // Possibly we can return an already-allocated type instead of the one we decoded
        if (!type->num_mods && !transient) {
                /* no need to free type here, because it is on the stack */
                if ((type->type == MONO_TYPE_CLASS || type->type == MONO_TYPE_VALUETYPE) && !type->pinned && !type->attrs) {
@@ -1703,25 +1728,47 @@ mono_metadata_parse_type_internal (MonoImage *m, MonoGenericContainer *container
                        }
                }
                /* No need to use locking since nobody is modifying the hash table */
-               if ((cached = g_hash_table_lookup (type_cache, type))) {
+               if ((cached = (MonoType *)g_hash_table_lookup (type_cache, type))) {
                        return cached;
                }
        }
        
        /* printf ("%x %x %c %s\n", type->attrs, type->num_mods, type->pinned ? 'p' : ' ', mono_type_full_name (type)); */
        
-       if (type == &stype) {
-               type = transient ? g_malloc (MONO_SIZEOF_TYPE) : mono_image_alloc (m, MONO_SIZEOF_TYPE);
+       if (type == &stype) { // Type was allocated on the stack, so we need to copy it to safety
+               type = transient ? (MonoType *)g_malloc (MONO_SIZEOF_TYPE) : (MonoType *)mono_image_alloc (m, MONO_SIZEOF_TYPE);
                memcpy (type, &stype, MONO_SIZEOF_TYPE);
        }
        return type;
 }
 
+
 MonoType*
-mono_metadata_parse_type_full (MonoImage *m, MonoGenericContainer *container, MonoParseTypeMode mode,
+mono_metadata_parse_type_checked (MonoImage *m, MonoGenericContainer *container,
+                                                          short opt_attrs, gboolean transient, const char *ptr, const char **rptr, MonoError *error)
+{
+       MonoType *ret;
+
+       mono_error_init (error);
+
+       ret = mono_metadata_parse_type_internal (m, container, opt_attrs, transient, ptr, rptr);
+
+       if (!ret) {
+               if (mono_loader_get_last_error ())
+                       mono_error_set_from_loader_error (error);
+               else
+                       mono_error_set_bad_image (error, m, "Could not parse type at %p due to unknown reasons", ptr);
+       }
+
+       return ret;
+}
+
+
+MonoType*
+mono_metadata_parse_type_full (MonoImage *m, MonoGenericContainer *container,
                                                           short opt_attrs, const char *ptr, const char **rptr)
 {
-       return mono_metadata_parse_type_internal (m, container, mode, opt_attrs, FALSE, ptr, rptr);
+       return mono_metadata_parse_type_internal (m, container, opt_attrs, FALSE, ptr, rptr);
 }
 
 /*
@@ -1731,7 +1778,7 @@ MonoType*
 mono_metadata_parse_type (MonoImage *m, MonoParseTypeMode mode, short opt_attrs,
                          const char *ptr, const char **rptr)
 {
-       return mono_metadata_parse_type_full (m, NULL, mode, opt_attrs, ptr, rptr);
+       return mono_metadata_parse_type_full (m, NULL, opt_attrs, ptr, rptr);
 }
 
 gboolean
@@ -1818,7 +1865,7 @@ mono_metadata_parse_signature (MonoImage *image, guint32 token)
        const char *ptr;
 
        if (image_is_dynamic (image))
-               return mono_lookup_dynamic_token (image, token, NULL);
+               return (MonoMethodSignature *)mono_lookup_dynamic_token (image, token, NULL);
 
        g_assert (mono_metadata_token_table(token) == MONO_TABLE_STANDALONESIG);
                
@@ -1850,7 +1897,7 @@ mono_metadata_signature_alloc (MonoImage *m, guint32 nparams)
 {
        MonoMethodSignature *sig;
 
-       sig = mono_image_alloc0 (m, MONO_SIZEOF_METHOD_SIGNATURE + ((gint32)nparams) * sizeof (MonoType*));
+       sig = (MonoMethodSignature *)mono_image_alloc0 (m, MONO_SIZEOF_METHOD_SIGNATURE + ((gint32)nparams) * sizeof (MonoType*));
        sig->param_count = nparams;
        sig->sentinelpos = -1;
 
@@ -1867,11 +1914,11 @@ mono_metadata_signature_dup_internal_with_padding (MonoImage *image, MonoMemPool
                sigsize += MONO_SIZEOF_TYPE;
 
        if (image) {
-               ret = mono_image_alloc (image, sigsize);
+               ret = (MonoMethodSignature *)mono_image_alloc (image, sigsize);
        } else if (mp) {
-               ret = mono_mempool_alloc (mp, sigsize);
+               ret = (MonoMethodSignature *)mono_mempool_alloc (mp, sigsize);
        } else {
-               ret = g_malloc (sigsize);
+               ret = (MonoMethodSignature *)g_malloc (sigsize);
        }
 
        memcpy (ret, sig, sig_header_size - padding);
@@ -2013,14 +2060,10 @@ mono_metadata_parse_method_signature_full (MonoImage *m, MonoGenericContainer *c
        method->generic_param_count = gen_param_count;
 
        if (call_convention != 0xa) {
-               method->ret = mono_metadata_parse_type_full (m, container, MONO_PARSE_RET, pattrs ? pattrs [0] : 0, ptr, &ptr);
+               method->ret = mono_metadata_parse_type_checked (m, container, pattrs ? pattrs [0] : 0, FALSE, ptr, &ptr, error);
                if (!method->ret) {
                        mono_metadata_free_method_signature (method);
                        g_free (pattrs);
-                       if (mono_loader_get_last_error ())
-                               mono_error_set_from_loader_error (error);
-                       else
-                               mono_error_set_bad_image (error, m, "Could not parse return type signature");
                        return NULL;
                }
                is_open = mono_class_is_open_constructed_type (method->ret);
@@ -2043,12 +2086,8 @@ mono_metadata_parse_method_signature_full (MonoImage *m, MonoGenericContainer *c
                        method->sentinelpos = i;
                        ptr++;
                }
-               method->params [i] = mono_metadata_parse_type_full (m, container, MONO_PARSE_PARAM, pattrs ? pattrs [i+1] : 0, ptr, &ptr);
+               method->params [i] = mono_metadata_parse_type_checked (m, container, pattrs ? pattrs [i+1] : 0, FALSE, ptr, &ptr, error);
                if (!method->params [i]) {
-                       if (mono_loader_get_last_error ())
-                               mono_error_set_from_loader_error (error);
-                       else
-                               mono_error_set_bad_image (error, m, "Could not parse type argument %d on method signature", i);
                        mono_metadata_free_method_signature (method);
                        g_free (pattrs);
                        return NULL;
@@ -2095,13 +2134,16 @@ mono_metadata_parse_method_signature_full (MonoImage *m, MonoGenericContainer *c
 MonoMethodSignature *
 mono_metadata_parse_method_signature (MonoImage *m, int def, const char *ptr, const char **rptr)
 {
+       /*
+        * This function MUST NOT be called by runtime code as it does error handling incorrectly.
+        * Use mono_metadata_parse_method_signature_full instead.
+        * It's ok to asser on failure as we no longer use it.
+        */
        MonoError error;
        MonoMethodSignature *ret;
        ret = mono_metadata_parse_method_signature_full (m, NULL, def, ptr, rptr, &error);
-       if (!ret) {
-               mono_loader_set_error_from_mono_error (&error);
-               mono_error_cleanup (&error); /*FIXME don't swallow the error message*/
-       }
+       g_assert (mono_error_ok (&error));
+
        return ret;
 }
 
@@ -2146,8 +2188,8 @@ mono_metadata_free_inflated_signature (MonoMethodSignature *sig)
 static gboolean
 inflated_method_equal (gconstpointer a, gconstpointer b)
 {
-       const MonoMethodInflated *ma = a;
-       const MonoMethodInflated *mb = b;
+       const MonoMethodInflated *ma = (const MonoMethodInflated *)a;
+       const MonoMethodInflated *mb = (const MonoMethodInflated *)b;
        if (ma->declaring != mb->declaring)
                return FALSE;
        return mono_metadata_generic_context_equal (&ma->context, &mb->context);
@@ -2156,15 +2198,15 @@ inflated_method_equal (gconstpointer a, gconstpointer b)
 static guint
 inflated_method_hash (gconstpointer a)
 {
-       const MonoMethodInflated *ma = a;
+       const MonoMethodInflated *ma = (const MonoMethodInflated *)a;
        return (mono_metadata_generic_context_hash (&ma->context) ^ mono_aligned_addr_hash (ma->declaring));
 }
 
 static gboolean
 inflated_signature_equal (gconstpointer a, gconstpointer b)
 {
-       const MonoInflatedMethodSignature *sig1 = a;
-       const MonoInflatedMethodSignature *sig2 = b;
+       const MonoInflatedMethodSignature *sig1 = (const MonoInflatedMethodSignature *)a;
+       const MonoInflatedMethodSignature *sig2 = (const MonoInflatedMethodSignature *)b;
 
        /* sig->sig is assumed to be canonized */
        if (sig1->sig != sig2->sig)
@@ -2176,7 +2218,7 @@ inflated_signature_equal (gconstpointer a, gconstpointer b)
 static guint
 inflated_signature_hash (gconstpointer a)
 {
-       const MonoInflatedMethodSignature *sig = a;
+       const MonoInflatedMethodSignature *sig = (const MonoInflatedMethodSignature *)a;
 
        /* sig->sig is assumed to be canonized */
        return mono_metadata_generic_context_hash (&sig->context) ^ mono_aligned_addr_hash (sig->sig);
@@ -2252,43 +2294,9 @@ retry:
                goto retry;
        case MONO_TYPE_FNPTR:
                return signature_in_image (type->data.method, image);
-       case MONO_TYPE_VAR: {
-               MonoGenericContainer *container = mono_type_get_generic_param_owner (type);
-               if (container) {
-                       g_assert (!container->is_method);
-                       /*
-                        * FIXME: The following check is here solely
-                        * for monodis, which uses the internal
-                        * function
-                        * mono_metadata_load_generic_params().  The
-                        * caller of that function needs to fill in
-                        * owner->klass or owner->method of the
-                        * returned struct, but monodis doesn't do
-                        * that.  The image unloading depends on that,
-                        * however, so a crash results without this
-                        * check.
-                        */
-                       if (!container->owner.klass)
-                               return container->image == image;
-                       return container->owner.klass->image == image;
-               } else {
-                       return type->data.generic_param->image == image;
-               }
-       }
-       case MONO_TYPE_MVAR: {
-               MonoGenericContainer *container = mono_type_get_generic_param_owner (type);
-               if (type->data.generic_param->image == image)
-                       return TRUE;
-               if (container) {
-                       g_assert (container->is_method);
-                       if (!container->owner.method)
-                               /* RefEmit created generic param whose method is not finished */
-                               return container->image == image;
-                       return container->owner.method->klass->image == image;
-               } else {
-                       return type->data.generic_param->image == image;
-               }
-       }
+       case MONO_TYPE_VAR:
+       case MONO_TYPE_MVAR:
+               return image == get_image_for_generic_param (type->data.generic_param);
        default:
                /* At this point, we should've avoided all potential allocations in mono_class_from_mono_type () */
                return image == mono_class_from_mono_type (type)->image;
@@ -2298,13 +2306,13 @@ retry:
 static inline void
 image_sets_lock (void)
 {
-       mono_mutex_lock (&image_sets_mutex);
+       mono_os_mutex_lock (&image_sets_mutex);
 }
 
 static inline void
 image_sets_unlock (void)
 {
-       mono_mutex_unlock (&image_sets_mutex);
+       mono_os_mutex_unlock (&image_sets_mutex);
 }
 
 /*
@@ -2319,11 +2327,12 @@ get_image_set (MonoImage **images, int nimages)
        MonoImageSet *set;
        GSList *l;
 
-       /* Common case */
+       /* Common case: Image set contains corlib only. If we've seen that case before, we cached the set. */
        if (nimages == 1 && images [0] == mono_defaults.corlib && mscorlib_image_set)
                return mscorlib_image_set;
 
        /* Happens with empty generic instances */
+       // FIXME: Is corlib the correct thing to return here? If so, why? This may be an artifact of generic instances previously defaulting to allocating from corlib.
        if (nimages == 0)
                return mscorlib_image_set;
 
@@ -2332,43 +2341,51 @@ get_image_set (MonoImage **images, int nimages)
        if (!image_sets)
                image_sets = g_ptr_array_new ();
 
+       // Before we go on, we should check to see whether a MonoImageSet with these images already exists.
+       // We can search the referred-by imagesets of any one of our images to do this. Arbitrarily pick one here:
        if (images [0] == mono_defaults.corlib && nimages > 1)
-               l = images [1]->image_sets;
+               l = images [1]->image_sets; // Prefer not to search the imagesets of corlib-- that will be a long list.
        else
                l = images [0]->image_sets;
 
        set = NULL;
-       for (; l; l = l->next) {
-               set = l->data;
+       while (l) // Iterate over selected list, looking for an imageset with members equal to our target one
+       {
+               set = (MonoImageSet *)l->data;
 
-               if (set->nimages == nimages) {
+               if (set->nimages == nimages) { // Member count differs, this can't be it
+                       // Compare all members to all members-- order might be different
                        for (j = 0; j < nimages; ++j) {
                                for (k = 0; k < nimages; ++k)
                                        if (set->images [k] == images [j])
-                                               break;
+                                               break; // Break on match
+
+                               // If we iterated all the way through set->images, images[j] was *not* found.
                                if (k == nimages)
-                                       /* Not found */
-                                       break;
+                                       break; // Break on "image not found"
                        }
+
+                       // If we iterated all the way through images without breaking, all items in images were found in set->images
                        if (j == nimages)
-                               /* Found */
-                               break;
+                               break; // Break on "found a set with equal members"
                }
+
+               l = l->next;
        }
 
+       // If we iterated all the way through l without breaking, the imageset does not already exist and we shuold create it
        if (!l) {
-               /* Not found */
                set = g_new0 (MonoImageSet, 1);
                set->nimages = nimages;
                set->images = g_new0 (MonoImage*, nimages);
-               mono_mutex_init_recursive (&set->lock);
+               mono_os_mutex_init_recursive (&set->lock);
                for (i = 0; i < nimages; ++i)
                        set->images [i] = images [i];
                set->gclass_cache = g_hash_table_new_full (mono_generic_class_hash, mono_generic_class_equal, NULL, (GDestroyNotify)free_generic_class);
                set->ginst_cache = g_hash_table_new_full (mono_metadata_generic_inst_hash, mono_metadata_generic_inst_equal, NULL, (GDestroyNotify)free_generic_inst);
                set->gmethod_cache = g_hash_table_new_full (inflated_method_hash, inflated_method_equal, NULL, (GDestroyNotify)free_inflated_method);
                set->gsignature_cache = g_hash_table_new_full (inflated_signature_hash, inflated_signature_equal, NULL, (GDestroyNotify)free_inflated_signature);
-       
+
                for (i = 0; i < nimages; ++i)
                        set->images [i]->image_sets = g_slist_prepend (set->images [i]->image_sets, set);
 
@@ -2409,20 +2426,20 @@ delete_image_set (MonoImageSet *set)
        if (set->mempool)
                mono_mempool_destroy (set->mempool);
        g_free (set->images);
-       mono_mutex_destroy (&set->lock);
+       mono_os_mutex_destroy (&set->lock);
        g_free (set);
 }
 
 void
 mono_image_set_lock (MonoImageSet *set)
 {
-       mono_mutex_lock (&set->lock);
+       mono_os_mutex_lock (&set->lock);
 }
 
 void
 mono_image_set_unlock (MonoImageSet *set)
 {
-       mono_mutex_unlock (&set->lock);
+       mono_os_mutex_unlock (&set->lock);
 }
 
 gpointer
@@ -2432,7 +2449,7 @@ mono_image_set_alloc (MonoImageSet *set, guint size)
 
        mono_image_set_lock (set);
        if (!set->mempool)
-               set->mempool = mono_mempool_new_size (1024);
+               set->mempool = mono_mempool_new_size (INITIAL_IMAGE_SET_SIZE);
        res = mono_mempool_alloc (set->mempool, size);
        mono_image_set_unlock (set);
 
@@ -2446,7 +2463,7 @@ mono_image_set_alloc0 (MonoImageSet *set, guint size)
 
        mono_image_set_lock (set);
        if (!set->mempool)
-               set->mempool = mono_mempool_new_size (1024);
+               set->mempool = mono_mempool_new_size (INITIAL_IMAGE_SET_SIZE);
        res = mono_mempool_alloc0 (set->mempool, size);
        mono_image_set_unlock (set);
 
@@ -2460,13 +2477,31 @@ mono_image_set_strdup (MonoImageSet *set, const char *s)
 
        mono_image_set_lock (set);
        if (!set->mempool)
-               set->mempool = mono_mempool_new_size (1024);
+               set->mempool = mono_mempool_new_size (INITIAL_IMAGE_SET_SIZE);
        res = mono_mempool_strdup (set->mempool, s);
        mono_image_set_unlock (set);
 
        return res;
 }
 
+// Get a descriptive string for a MonoImageSet
+// Callers are obligated to free buffer with g_free after use
+char *
+mono_image_set_description (MonoImageSet *set)
+{
+       GString *result = g_string_new (NULL);
+       int img;
+       g_string_append (result, "[");
+       for (img = 0; img < set->nimages; img++)
+       {
+               if (img > 0)
+                       g_string_append (result, ", ");
+               g_string_append (result, set->images[img]->name);
+       }
+       g_string_append (result, "]");
+       return g_string_free (result, FALSE);
+}
+
 /* 
  * Structure used by the collect_..._images functions to store the image list.
  */
@@ -2601,48 +2636,13 @@ retry:
        case MONO_TYPE_FNPTR:
                //return signature_in_image (type->data.method, image);
                g_assert_not_reached ();
-       case MONO_TYPE_VAR: {
-               MonoGenericContainer *container = mono_type_get_generic_param_owner (type);
-               if (container) {
-                       g_assert (!container->is_method);
-                       /*
-                        * FIXME: The following check is here solely
-                        * for monodis, which uses the internal
-                        * function
-                        * mono_metadata_load_generic_params().  The
-                        * caller of that function needs to fill in
-                        * owner->klass or owner->method of the
-                        * returned struct, but monodis doesn't do
-                        * that.  The image unloading depends on that,
-                        * however, so a crash results without this
-                        * check.
-                        */
-                       if (!container->owner.klass)
-                               add_image (container->image, data);
-                       else
-                               add_image (container->owner.klass->image, data);
-               } else {
-                       add_image (type->data.generic_param->image, data);
-               }
-       }
+       case MONO_TYPE_VAR:
+       case MONO_TYPE_MVAR:
+       {
+               MonoImage *image = get_image_for_generic_param (type->data.generic_param);
+               add_image (image, data);
                break;
-       case MONO_TYPE_MVAR: {
-               MonoGenericContainer *container = mono_type_get_generic_param_owner (type);
-               if (type->data.generic_param->image)
-                       add_image (type->data.generic_param->image, data);
-               if (container) {
-                       if (!container->owner.method) {
-                               /* RefEmit created generic param whose method is not finished */
-                               add_image (container->image, data);
-                       } else {
-                               g_assert (container->is_method);
-                               add_image (container->owner.method->klass->image, data);
-                       }
-               } else {
-                       add_image (type->data.generic_param->image, data);
-               }
        }
-               break;
        case MONO_TYPE_CLASS:
        case MONO_TYPE_VALUETYPE:
                add_image (mono_class_from_mono_type (type)->image, data);
@@ -2660,8 +2660,8 @@ typedef struct {
 static gboolean
 steal_gclass_in_image (gpointer key, gpointer value, gpointer data)
 {
-       MonoGenericClass *gclass = key;
-       CleanForImageUserData *user_data = data;
+       MonoGenericClass *gclass = (MonoGenericClass *)key;
+       CleanForImageUserData *user_data = (CleanForImageUserData *)data;
 
        g_assert (gclass_in_image (gclass, user_data->image));
 
@@ -2672,8 +2672,8 @@ steal_gclass_in_image (gpointer key, gpointer value, gpointer data)
 static gboolean
 steal_ginst_in_image (gpointer key, gpointer value, gpointer data)
 {
-       MonoGenericInst *ginst = key;
-       CleanForImageUserData *user_data = data;
+       MonoGenericInst *ginst = (MonoGenericInst *)key;
+       CleanForImageUserData *user_data = (CleanForImageUserData *)data;
 
        // This doesn't work during corlib compilation
        //g_assert (ginst_in_image (ginst, user_data->image));
@@ -2685,8 +2685,8 @@ steal_ginst_in_image (gpointer key, gpointer value, gpointer data)
 static gboolean
 inflated_method_in_image (gpointer key, gpointer value, gpointer data)
 {
-       MonoImage *image = data;
-       MonoMethodInflated *method = key;
+       MonoImage *image = (MonoImage *)data;
+       MonoMethodInflated *method = (MonoMethodInflated *)key;
 
        // FIXME:
        // https://bugzilla.novell.com/show_bug.cgi?id=458168
@@ -2700,8 +2700,8 @@ inflated_method_in_image (gpointer key, gpointer value, gpointer data)
 static gboolean
 inflated_signature_in_image (gpointer key, gpointer value, gpointer data)
 {
-       MonoImage *image = data;
-       MonoInflatedMethodSignature *sig = key;
+       MonoImage *image = (MonoImage *)data;
+       MonoInflatedMethodSignature *sig = (MonoInflatedMethodSignature *)key;
 
        return signature_in_image (sig->sig, image) ||
                (sig->context.class_inst && ginst_in_image (sig->context.class_inst, image)) ||
@@ -2711,8 +2711,8 @@ inflated_signature_in_image (gpointer key, gpointer value, gpointer data)
 static void
 check_gmethod (gpointer key, gpointer value, gpointer data)
 {
-       MonoMethodInflated *method = key;
-       MonoImage *image = data;
+       MonoMethodInflated *method = (MonoMethodInflated *)key;
+       MonoImage *image = (MonoImage *)data;
 
        if (method->context.class_inst)
                g_assert (!ginst_in_image (method->context.class_inst, image));
@@ -2737,7 +2737,7 @@ check_image_sets (MonoImage *image)
                return;
 
        for (i = 0; i < image_sets->len; ++i) {
-               MonoImageSet *set = g_ptr_array_index (image_sets, i);
+               MonoImageSet *set = (MonoImageSet *)g_ptr_array_index (image_sets, i);
 
                if (!g_slist_find (l, set)) {
                        g_hash_table_foreach (set->gmethod_cache, check_gmethod, image);
@@ -2763,7 +2763,7 @@ mono_metadata_clean_for_image (MonoImage *image)
        /* Collect the items to delete */
        /* delete_image_set () modifies the lists so make a copy */
        for (l = image->image_sets; l; l = l->next) {
-               MonoImageSet *set = l->data;
+               MonoImageSet *set = (MonoImageSet *)l->data;
 
                mono_image_set_lock (set);
                g_hash_table_foreach_steal (set->gclass_cache, steal_gclass_in_image, &gclass_data);
@@ -2775,15 +2775,15 @@ mono_metadata_clean_for_image (MonoImage *image)
 
        /* Delete the removed items */
        for (l = ginst_data.list; l; l = l->next)
-               free_generic_inst (l->data);
+               free_generic_inst ((MonoGenericInst *)l->data);
        for (l = gclass_data.list; l; l = l->next)
-               free_generic_class (l->data);
+               free_generic_class ((MonoGenericClass *)l->data);
        g_slist_free (ginst_data.list);
        g_slist_free (gclass_data.list);
        /* delete_image_set () modifies the lists so make a copy */
        set_list = g_slist_copy (image->image_sets);
        for (l = set_list; l; l = l->next) {
-               MonoImageSet *set = l->data;
+               MonoImageSet *set = (MonoImageSet *)l->data;
 
                delete_image_set (set);
        }
@@ -2869,7 +2869,7 @@ mono_metadata_get_inflated_signature (MonoMethodSignature *sig, MonoGenericConte
 
        mono_image_set_lock (set);
 
-       res = g_hash_table_lookup (set->gsignature_cache, &helper);
+       res = (MonoInflatedMethodSignature *)g_hash_table_lookup (set->gsignature_cache, &helper);
        if (!res) {
                res = g_new0 (MonoInflatedMethodSignature, 1);
                res->sig = sig;
@@ -2920,7 +2920,7 @@ mono_metadata_get_generic_inst (int type_argc, MonoType **type_argv)
                        break;
        is_open = (i < type_argc);
 
-       ginst = g_alloca (size);
+       ginst = (MonoGenericInst *)g_alloca (size);
        memset (ginst, 0, sizeof (MonoGenericInst));
        ginst->is_open = is_open;
        ginst->type_argc = type_argc;
@@ -2936,9 +2936,9 @@ mono_metadata_get_generic_inst (int type_argc, MonoType **type_argv)
 
        mono_image_set_lock (set);
 
-       ginst = g_hash_table_lookup (set->ginst_cache, ginst);
+       ginst = (MonoGenericInst *)g_hash_table_lookup (set->ginst_cache, ginst);
        if (!ginst) {
-               ginst = mono_image_set_alloc0 (set, size);
+               ginst = (MonoGenericInst *)mono_image_set_alloc0 (set, size);
 #ifndef MONO_SMALL_CONFIG
                ginst->id = ++next_generic_inst_id;
 #endif
@@ -2980,12 +2980,11 @@ mono_metadata_lookup_generic_class (MonoClass *container_class, MonoGenericInst
        MonoImageSet *set;
        CollectData data;
 
+       memset (&helper, 0, sizeof(helper)); // act like g_new0
        helper.container_class = container_class;
        helper.context.class_inst = inst;
-       helper.context.method_inst = NULL;
        helper.is_dynamic = is_dynamic; /* We use this in a hash lookup, which does not attempt to downcast the pointer */
        helper.is_tb_open = is_tb_open;
-       helper.cached_class = NULL;
 
        collect_data_init (&data);
 
@@ -2997,7 +2996,7 @@ mono_metadata_lookup_generic_class (MonoClass *container_class, MonoGenericInst
 
        mono_image_set_lock (set);
 
-       gclass = g_hash_table_lookup (set->gclass_cache, &helper);
+       gclass = (MonoGenericClass *)g_hash_table_lookup (set->gclass_cache, &helper);
 
        /* A tripwire just to keep us honest */
        g_assert (!helper.cached_class);
@@ -3070,16 +3069,17 @@ cleanup:
 
 MonoGenericInst *
 mono_metadata_parse_generic_inst (MonoImage *m, MonoGenericContainer *container,
-                                 int count, const char *ptr, const char **rptr)
+                                 int count, const char *ptr, const char **rptr, MonoError *error)
 {
        MonoType **type_argv;
        MonoGenericInst *ginst;
        int i;
 
+       mono_error_init (error);
        type_argv = g_new0 (MonoType*, count);
 
        for (i = 0; i < count; i++) {
-               MonoType *t = mono_metadata_parse_type_full (m, container, MONO_PARSE_TYPE, 0, ptr, &ptr);
+               MonoType *t = mono_metadata_parse_type_checked (m, container, 0, FALSE, ptr, &ptr, error);
                if (!t) {
                        g_free (type_argv);
                        return NULL;
@@ -3099,23 +3099,28 @@ mono_metadata_parse_generic_inst (MonoImage *m, MonoGenericContainer *container,
 
 static gboolean
 do_mono_metadata_parse_generic_class (MonoType *type, MonoImage *m, MonoGenericContainer *container,
-                                     const char *ptr, const char **rptr)
+                                     const char *ptr, const char **rptr, MonoError *error)
 {
        MonoGenericInst *inst;
        MonoClass *gklass;
        MonoType *gtype;
        int count;
 
-       gtype = mono_metadata_parse_type (m, MONO_PARSE_TYPE, 0, ptr, &ptr);
+       mono_error_init (error);
+
+       // XXX how about transient?
+       gtype = mono_metadata_parse_type_checked (m, NULL, 0, FALSE, ptr, &ptr, error);
        if (gtype == NULL)
                return FALSE;
 
        gklass = mono_class_from_mono_type (gtype);
-       if (!gklass->generic_container)
+       if (!gklass->generic_container) {
+               mono_error_set_bad_image (error, m, "Generic instance with non-generic definition");
                return FALSE;
+       }
 
        count = mono_metadata_decode_value (ptr, &ptr);
-       inst = mono_metadata_parse_generic_inst (m, container, count, ptr, &ptr);
+       inst = mono_metadata_parse_generic_inst (m, container, count, ptr, &ptr, error);
        if (inst == NULL)
                return FALSE;
 
@@ -3153,7 +3158,36 @@ select_container (MonoGenericContainer *gc, MonoTypeEnum type)
        return gc;
 }
 
-/* 
+MonoGenericContainer *
+get_anonymous_container_for_image (MonoImage *image, gboolean is_mvar)
+{
+       MonoGenericContainer **container_pointer;
+       if (is_mvar)
+               container_pointer = &image->anonymous_generic_method_container;
+       else
+               container_pointer = &image->anonymous_generic_class_container;
+       MonoGenericContainer *result = *container_pointer;
+
+       // This container has never been created; make it now.
+       if (!result)
+       {
+               // Note this is never deallocated anywhere-- it exists for the lifetime of the image it's allocated from
+               result = (MonoGenericContainer *)mono_image_alloc0 (image, sizeof (MonoGenericContainer));
+               result->owner.image = image;
+               result->is_anonymous = TRUE;
+               result->is_small_param = TRUE;
+               result->is_method = is_mvar;
+
+               // If another thread already made a container, use that and leak this new one.
+               // (Technically it would currently be safe to just assign instead of CASing.)
+               MonoGenericContainer *exchange = (MonoGenericContainer *)InterlockedCompareExchangePointer ((volatile gpointer *)container_pointer, result, NULL);
+               if (exchange)
+                       result = exchange;
+       }
+       return result;
+}
+
+/*
  * mono_metadata_parse_generic_param:
  * @generic_container: Our MonoClass's or MonoMethod's MonoGenericContainer;
  *                     see mono_metadata_parse_type_full() for details.
@@ -3162,27 +3196,46 @@ select_container (MonoGenericContainer *gc, MonoTypeEnum type)
  */
 static MonoGenericParam *
 mono_metadata_parse_generic_param (MonoImage *m, MonoGenericContainer *generic_container,
-                                  MonoTypeEnum type, const char *ptr, const char **rptr)
+                                  MonoTypeEnum type, const char *ptr, const char **rptr, MonoError *error)
 {
        int index = mono_metadata_decode_value (ptr, &ptr);
        if (rptr)
                *rptr = ptr;
 
+       mono_error_init (error);
+
        generic_container = select_container (generic_container, type);
        if (!generic_container) {
+               gboolean is_mvar = FALSE;
+               switch (type)
+               {
+                       case MONO_TYPE_VAR:
+                               break;
+                       case MONO_TYPE_MVAR:
+                               is_mvar = TRUE;
+                               break;
+                       default:
+                               g_error ("Cerating generic param object with invalid MonoType"); // This is not a generic param
+               }
+
                /* Create dummy MonoGenericParam */
                MonoGenericParam *param;
 
-               param = mono_image_alloc0 (m, sizeof (MonoGenericParam));
+               param = (MonoGenericParam *)mono_image_alloc0 (m, sizeof (MonoGenericParam));
                param->num = index;
-               param->image = m;
+               param->owner = get_anonymous_container_for_image (m, is_mvar);
 
                return param;
        }
 
-       if (index >= generic_container->type_argc)
+       if (index >= generic_container->type_argc) {
+               mono_error_set_bad_image (error, m, "Invalid generic %s parameter index %d, max index is %d",
+                       generic_container->is_method ? "method" : "type",
+                       index, generic_container->type_argc);
                return NULL;
+       }
 
+       //This can't return NULL
        return mono_generic_container_get_param (generic_container, index);
 }
 
@@ -3202,7 +3255,7 @@ mono_metadata_get_shared_type (MonoType *type)
        MonoType *cached;
 
        /* No need to use locking since nobody is modifying the hash table */
-       if ((cached = g_hash_table_lookup (type_cache, type)))
+       if ((cached = (MonoType *)g_hash_table_lookup (type_cache, type)))
                return cached;
 
        switch (type->type){
@@ -3221,8 +3274,10 @@ mono_metadata_get_shared_type (MonoType *type)
 }
 
 static gboolean
-compare_type_literals (int class_type, int type_type)
+compare_type_literals (MonoImage *image, int class_type, int type_type, MonoError *error)
 {
+       mono_error_init (error);
+
        /* byval_arg.type can be zero if we're decoding a type that references a class been loading.
         * See mcs/test/gtest-440. and #650936.
         * FIXME This better be moved to the metadata verifier as it can catch more cases.
@@ -3235,8 +3290,13 @@ compare_type_literals (int class_type, int type_type)
        if (class_type == type_type)
                return TRUE;
 
-       if (type_type == MONO_TYPE_CLASS)
-               return class_type == MONO_TYPE_STRING || class_type == MONO_TYPE_OBJECT;
+       if (type_type == MONO_TYPE_CLASS) {
+               if (class_type == MONO_TYPE_STRING || class_type == MONO_TYPE_OBJECT)
+                       return TRUE;
+               //XXX stringify this argument
+               mono_error_set_bad_image (error, image, "Expected reference type but got type kind %d", class_type);
+               return FALSE;
+       }
 
        g_assert (type_type == MONO_TYPE_VALUETYPE);
        switch (class_type) {
@@ -3257,10 +3317,31 @@ compare_type_literals (int class_type, int type_type)
        case MONO_TYPE_CLASS:
                return TRUE;
        default:
+               //XXX stringify this argument
+               mono_error_set_bad_image (error, image, "Expected value type but got type kind %d", class_type);
                return FALSE;
        }
 }
 
+static gboolean
+verify_var_type_and_container (MonoImage *image, int var_type, MonoGenericContainer *container, MonoError *error)
+{
+       mono_error_init (error);
+       if (var_type == MONO_TYPE_MVAR) {
+               if (!container->is_method) { //MVAR and a method container
+                       mono_error_set_bad_image (error, image, "MVAR parsed in a context without a method container");
+                       return FALSE;
+               }
+       } else {
+               if (!(!container->is_method || //VAR and class container
+                       (container->is_method && container->parent))) { //VAR and method container with parent
+                       mono_error_set_bad_image (error, image, "VAR parsed in a context without a class container");
+                       return FALSE;
+               }
+       }
+       return TRUE;
+}
+
 /* 
  * do_mono_metadata_parse_type:
  * @type: MonoType to be filled in with the return value
@@ -3284,10 +3365,11 @@ compare_type_literals (int class_type, int type_type)
  */
 static gboolean
 do_mono_metadata_parse_type (MonoType *type, MonoImage *m, MonoGenericContainer *container,
-                                                        gboolean transient, const char *ptr, const char **rptr)
+                                                        gboolean transient, const char *ptr, const char **rptr, MonoError *error)
 {
-       gboolean ok = TRUE;
-       type->type = mono_metadata_decode_value (ptr, &ptr);
+       mono_error_init (error);
+
+       type->type = (MonoTypeEnum)mono_metadata_decode_value (ptr, &ptr);
        
        switch (type->type){
        case MONO_TYPE_VOID:
@@ -3312,68 +3394,69 @@ do_mono_metadata_parse_type (MonoType *type, MonoImage *m, MonoGenericContainer
        case MONO_TYPE_VALUETYPE:
        case MONO_TYPE_CLASS: {
                guint32 token;
-               MonoClass *class;
-               MonoError error;
+               MonoClass *klass;
                token = mono_metadata_parse_typedef_or_ref (m, ptr, &ptr);
-               class = mono_class_get_checked (m, token, &error);
-               type->data.klass = class;
-               if (!class) {
-                       mono_loader_set_error_from_mono_error (&error);
-                       mono_error_cleanup (&error); /*FIXME don't swallow the error message*/
+               klass = mono_class_get_checked (m, token, error);
+               type->data.klass = klass;
+               if (!klass)
                        return FALSE;
-               }
-               if (!compare_type_literals (class->byval_arg.type, type->type))
+
+               if (!compare_type_literals (m, klass->byval_arg.type, type->type, error))
                        return FALSE;
+
                break;
        }
        case MONO_TYPE_SZARRAY: {
-               MonoType *etype = mono_metadata_parse_type_full (m, container, MONO_PARSE_MOD_TYPE, 0, ptr, &ptr);
+               MonoType *etype = mono_metadata_parse_type_checked (m, container, 0, transient, ptr, &ptr, error);
                if (!etype)
                        return FALSE;
+
                type->data.klass = mono_class_from_mono_type (etype);
-               if (!type->data.klass)
-                       return FALSE;
+               g_assert (type->data.klass); //This was previously a check for NULL, but mcfmt should never fail. It can return a borken MonoClass, but should return at least something.
                break;
        }
-       case MONO_TYPE_PTR:
-               type->data.type = mono_metadata_parse_type_internal (m, container, MONO_PARSE_MOD_TYPE, 0, transient, ptr, &ptr);
+       case MONO_TYPE_PTR: {
+               type->data.type = mono_metadata_parse_type_checked (m, container, 0, transient, ptr, &ptr, error);
                if (!type->data.type)
                        return FALSE;
                break;
+       }
        case MONO_TYPE_FNPTR: {
-               MonoError error;
-               type->data.method = mono_metadata_parse_method_signature_full (m, container, 0, ptr, &ptr, &error);
-               if (!type->data.method) {
-                       mono_loader_set_error_from_mono_error (&error);
-                       mono_error_cleanup (&error); /*FIXME don't swallow the error message*/
+               type->data.method = mono_metadata_parse_method_signature_full (m, container, 0, ptr, &ptr, error);
+               if (!type->data.method)
                        return FALSE;
-               }
                break;
        }
-       case MONO_TYPE_ARRAY:
-               type->data.array = mono_metadata_parse_array_internal (m, container, transient, ptr, &ptr);
+       case MONO_TYPE_ARRAY: {
+               type->data.array = mono_metadata_parse_array_internal (m, container, transient, ptr, &ptr, error);
                if (!type->data.array)
                        return FALSE;
                break;
+       }
        case MONO_TYPE_MVAR:
-               if (container && !container->is_method)
+       case MONO_TYPE_VAR: {
+               if (container && !verify_var_type_and_container (m, type->type, container, error))
                        return FALSE;
-       case MONO_TYPE_VAR:
-               type->data.generic_param = mono_metadata_parse_generic_param (m, container, type->type, ptr, &ptr);
+
+               type->data.generic_param = mono_metadata_parse_generic_param (m, container, type->type, ptr, &ptr, error);
                if (!type->data.generic_param)
                        return FALSE;
+
                break;
-       case MONO_TYPE_GENERICINST:
-               ok = do_mono_metadata_parse_generic_class (type, m, container, ptr, &ptr);
+       }
+       case MONO_TYPE_GENERICINST: {
+               if (!do_mono_metadata_parse_generic_class (type, m, container, ptr, &ptr, error))
+                       return FALSE;
                break;
+       }
        default:
-               g_warning ("type 0x%02x not handled in do_mono_metadata_parse_type on image %s", type->type, m->name);
+               mono_error_set_bad_image (error, m, "type 0x%02x not handled in do_mono_metadata_parse_type on image %s", type->type, m->name);
                return FALSE;
        }
        
        if (rptr)
                *rptr = ptr;
-       return ok;
+       return TRUE;
 }
 
 /*
@@ -3469,7 +3552,7 @@ parse_section_data (MonoImage *m, int *num_clauses, const unsigned char *ptr)
                        int i;
                        *num_clauses = is_fat ? sect_data_len / 24: sect_data_len / 12;
                        /* we could just store a pointer if we don't need to byteswap */
-                       clauses = g_malloc0 (sizeof (MonoExceptionClause) * (*num_clauses));
+                       clauses = (MonoExceptionClause *)g_malloc0 (sizeof (MonoExceptionClause) * (*num_clauses));
                        for (i = 0; i < *num_clauses; ++i) {
                                MonoExceptionClause *ec = &clauses [i];
                                guint32 tof_value;
@@ -3620,7 +3703,7 @@ mono_metadata_parse_mh_full (MonoImage *m, MonoGenericContainer *container, cons
 
        switch (format) {
        case METHOD_HEADER_TINY_FORMAT:
-               mh = g_malloc0 (MONO_SIZEOF_METHOD_HEADER);
+               mh = (MonoMethodHeader *)g_malloc0 (MONO_SIZEOF_METHOD_HEADER);
                ptr++;
                mh->max_stack = 8;
                mh->is_transient = TRUE;
@@ -3678,16 +3761,16 @@ mono_metadata_parse_mh_full (MonoImage *m, MonoGenericContainer *container, cons
                        g_warning ("wrong signature for locals blob");
                locals_ptr++;
                len = mono_metadata_decode_value (locals_ptr, &locals_ptr);
-               mh = g_malloc0 (MONO_SIZEOF_METHOD_HEADER + len * sizeof (MonoType*) + num_clauses * sizeof (MonoExceptionClause));
+               mh = (MonoMethodHeader *)g_malloc0 (MONO_SIZEOF_METHOD_HEADER + len * sizeof (MonoType*) + num_clauses * sizeof (MonoExceptionClause));
                mh->num_locals = len;
                for (i = 0; i < len; ++i) {
                        mh->locals [i] = mono_metadata_parse_type_internal (m, container,
-                                                                                                                               MONO_PARSE_LOCAL, 0, TRUE, locals_ptr, &locals_ptr);
+                                                                                                                               0, TRUE, locals_ptr, &locals_ptr);
                        if (!mh->locals [i])
                                goto fail;
                }
        } else {
-               mh = g_malloc0 (MONO_SIZEOF_METHOD_HEADER + num_clauses * sizeof (MonoExceptionClause));
+               mh = (MonoMethodHeader *)g_malloc0 (MONO_SIZEOF_METHOD_HEADER + num_clauses * sizeof (MonoExceptionClause));
        }
        mh->code = code;
        mh->code_size = code_size;
@@ -3834,7 +3917,7 @@ mono_method_header_get_clauses (MonoMethodHeader *header, MonoMethod *method, gp
                *clause = *sc;
                return TRUE;
        }
-       sc = *iter;
+       sc = (MonoExceptionClause *)*iter;
        sc++;
        if (sc < header->clauses + header->num_clauses) {
                *iter = sc;
@@ -4166,7 +4249,7 @@ mono_metadata_interfaces_from_typedef_full (MonoImage *meta, guint32 index, Mono
        if (heap_alloc_result)
                result = g_new0 (MonoClass*, pos - start);
        else
-               result = mono_image_alloc0 (meta, sizeof (MonoClass*) * (pos - start));
+               result = (MonoClass **)mono_image_alloc0 (meta, sizeof (MonoClass*) * (pos - start));
 
        pos = start;
        while (pos < tdef->rows) {
@@ -4471,7 +4554,7 @@ mono_type_size (MonoType *t, int *align)
        }
        if (t->byref) {
                *align = MONO_ABI_ALIGNOF (gpointer);
-               return sizeof (gpointer);
+               return MONO_ABI_SIZEOF (gpointer);
        }
 
        simple_type = t->type;
@@ -4509,26 +4592,22 @@ mono_type_size (MonoType *t, int *align)
        case MONO_TYPE_I:
        case MONO_TYPE_U:
                *align = MONO_ABI_ALIGNOF (gpointer);
-               return sizeof (gpointer);
-       case MONO_TYPE_STRING:
-               *align = MONO_ABI_ALIGNOF (gpointer);
-               return sizeof (gpointer);
-       case MONO_TYPE_OBJECT:
-               *align = MONO_ABI_ALIGNOF (gpointer);
-               return sizeof (gpointer);
+               return MONO_ABI_SIZEOF (gpointer);
        case MONO_TYPE_VALUETYPE: {
                if (t->data.klass->enumtype)
                        return mono_type_size (mono_class_enum_basetype (t->data.klass), align);
                else
                        return mono_class_value_size (t->data.klass, (guint32*)align);
        }
+       case MONO_TYPE_STRING:
+       case MONO_TYPE_OBJECT:
        case MONO_TYPE_CLASS:
        case MONO_TYPE_SZARRAY:
        case MONO_TYPE_PTR:
        case MONO_TYPE_FNPTR:
        case MONO_TYPE_ARRAY:
                *align = MONO_ABI_ALIGNOF (gpointer);
-               return sizeof (gpointer);
+               return MONO_ABI_SIZEOF (gpointer);
        case MONO_TYPE_TYPEDBYREF:
                return mono_class_value_size (mono_defaults.typed_reference_class, (guint32*)align);
        case MONO_TYPE_GENERICINST: {
@@ -4544,14 +4623,14 @@ mono_type_size (MonoType *t, int *align)
                                return mono_class_value_size (mono_class_from_mono_type (t), (guint32*)align);
                } else {
                        *align = MONO_ABI_ALIGNOF (gpointer);
-                       return sizeof (gpointer);
+                       return MONO_ABI_SIZEOF (gpointer);
                }
        }
        case MONO_TYPE_VAR:
        case MONO_TYPE_MVAR:
                if (!t->data.generic_param->gshared_constraint || t->data.generic_param->gshared_constraint->type == MONO_TYPE_VALUETYPE) {
                        *align = MONO_ABI_ALIGNOF (gpointer);
-                       return sizeof (gpointer);
+                       return MONO_ABI_SIZEOF (gpointer);
                } else {
                        /* The gparam can only match types given by gshared_constraint */
                        return mono_type_size (t->data.generic_param->gshared_constraint, align);
@@ -4582,7 +4661,7 @@ mono_type_stack_size_internal (MonoType *t, int *align, gboolean allow_open)
        int tmp;
        MonoTypeEnum simple_type;
 #if SIZEOF_VOID_P == SIZEOF_REGISTER
-       int stack_slot_size = sizeof (gpointer);
+       int stack_slot_size = MONO_ABI_SIZEOF (gpointer);
        int stack_slot_align = MONO_ABI_ALIGNOF (gpointer);
 #elif SIZEOF_VOID_P < SIZEOF_REGISTER
        int stack_slot_size = SIZEOF_REGISTER;
@@ -4790,7 +4869,7 @@ mono_metadata_type_hash (MonoType *t1)
        case MONO_TYPE_VALUETYPE:
        case MONO_TYPE_CLASS:
        case MONO_TYPE_SZARRAY: {
-               MonoClass *class = t1->data.klass;
+               MonoClass *klass = t1->data.klass;
                /*
                 * Dynamic classes must not be hashed on their type since it can change
                 * during runtime. For example, if we hash a reference type that is
@@ -4799,9 +4878,9 @@ mono_metadata_type_hash (MonoType *t1)
                 * This is specially problematic with generic instances since they are
                 * inserted in a bunch of hash tables before been finished.
                 */
-               if (image_is_dynamic (class->image))
-                       return (t1->byref << 6) | mono_metadata_str_hash (class->name);
-               return ((hash << 5) - hash) ^ mono_metadata_str_hash (class->name);
+               if (image_is_dynamic (klass->image))
+                       return (t1->byref << 6) | mono_metadata_str_hash (klass->name);
+               return ((hash << 5) - hash) ^ mono_metadata_str_hash (klass->name);
        }
        case MONO_TYPE_PTR:
                return ((hash << 5) - hash) ^ mono_metadata_type_hash (t1->data.type);
@@ -4856,12 +4935,8 @@ mono_metadata_generic_param_equal_internal (MonoGenericParam *p1, MonoGenericPar
         * image B gets that generic inst from the cache, image A is
         * unloaded, so the inst is deleted, but image B still retains
         * a pointer to it.
-        *
-        * The AOT runtime doesn't set the image when it's decoding
-        * types, so we only compare it when the owner is NULL.
         */
-       if (mono_generic_param_owner (p1) == mono_generic_param_owner (p2) &&
-           (mono_generic_param_owner (p1) || p1->image == p2->image))
+       if (mono_generic_param_owner (p1) == mono_generic_param_owner (p2))
                return TRUE;
 
        /*
@@ -4939,6 +5014,7 @@ mono_metadata_fnptr_equal (MonoMethodSignature *s1, MonoMethodSignature *s2, gbo
  * mono_metadata_type_equal:
  * @t1: a type
  * @t2: another type
+ * @signature_only: If true, treat ginsts as equal which are instantiated separately but have equal positional value
  *
  * Determine if @t1 and @t2 represent the same type.
  * Returns: #TRUE if @t1 and @t2 are equal.
@@ -5081,7 +5157,7 @@ mono_metadata_type_dup (MonoImage *image, const MonoType *o)
        if (o->num_mods)
                sizeof_o += o->num_mods  * sizeof (MonoCustomMod);
 
-       r = image ? mono_image_alloc0 (image, sizeof_o) : g_malloc (sizeof_o);
+       r = image ? (MonoType *)mono_image_alloc0 (image, sizeof_o) : (MonoType *)g_malloc (sizeof_o);
 
        memcpy (r, o, sizeof_o);
 
@@ -5499,7 +5575,7 @@ mono_type_create_from_typespec_checked (MonoImage *image, guint32 type_spec, Mon
        mono_error_init (error);
 
        mono_image_lock (image);
-       type = g_hash_table_lookup (image->typespec_cache, GUINT_TO_POINTER (type_spec));
+       type = (MonoType *)g_hash_table_lookup (image->typespec_cache, GUINT_TO_POINTER (type_spec));
        mono_image_unlock (image);
        if (type)
                return type;
@@ -5516,20 +5592,15 @@ mono_type_create_from_typespec_checked (MonoImage *image, guint32 type_spec, Mon
 
        mono_metadata_decode_value (ptr, &ptr);
 
-       type = mono_metadata_parse_type_internal (image, NULL, MONO_PARSE_TYPE, 0, TRUE, ptr, &ptr);
-       if (!type) {
-               if (mono_loader_get_last_error ())
-                       mono_error_set_from_loader_error (error);
-               else
-                       mono_error_set_bad_image (error, image, "Could not parse type spec %08x.", type_spec);
+       type = mono_metadata_parse_type_checked (image, NULL, 0, TRUE, ptr, &ptr, error);
+       if (!type)
                return NULL;
-       }
 
        type2 = mono_metadata_type_dup (image, type);
        mono_metadata_free_type (type);
 
        mono_image_lock (image);
-       type = g_hash_table_lookup (image->typespec_cache, GUINT_TO_POINTER (type_spec));
+       type = (MonoType *)g_hash_table_lookup (image->typespec_cache, GUINT_TO_POINTER (type_spec));
        /* We might leak some data in the image mempool if found */
        if (!type) {
                g_hash_table_insert (image->typespec_cache, GUINT_TO_POINTER (type_spec), type2);
@@ -5547,7 +5618,7 @@ mono_image_strndup (MonoImage *image, const char *data, guint len)
        char *res;
        if (!image)
                return g_strndup (data, len);
-       res = mono_image_alloc (image, len + 1);
+       res = (char *)mono_image_alloc (image, len + 1);
        memcpy (res, data, len);
        res [len] = 0;
        return res;
@@ -5573,12 +5644,12 @@ mono_metadata_parse_marshal_spec_full (MonoImage *image, MonoImage *parent_image
        /* fixme: this is incomplete, but I cant find more infos in the specs */
 
        if (image)
-               res = mono_image_alloc0 (image, sizeof (MonoMarshalSpec));
+               res = (MonoMarshalSpec *)mono_image_alloc0 (image, sizeof (MonoMarshalSpec));
        else
                res = g_new0 (MonoMarshalSpec, 1);
        
        len = mono_metadata_decode_value (ptr, &ptr);
-       res->native = *ptr++;
+       res->native = (MonoMarshalNative)*ptr++;
 
        if (res->native == MONO_NATIVE_LPARRAY) {
                res->data.array_data.param_num = -1;
@@ -5586,7 +5657,7 @@ mono_metadata_parse_marshal_spec_full (MonoImage *image, MonoImage *parent_image
                res->data.array_data.elem_mult = -1;
 
                if (ptr - start <= len)
-                       res->data.array_data.elem_type = *ptr++;
+                       res->data.array_data.elem_type = (MonoMarshalNative)*ptr++;
                if (ptr - start <= len)
                        res->data.array_data.param_num = mono_metadata_decode_value (ptr, &ptr);
                if (ptr - start <= len)
@@ -5633,10 +5704,10 @@ mono_metadata_parse_marshal_spec_full (MonoImage *image, MonoImage *parent_image
        }
 
        if (res->native == MONO_NATIVE_SAFEARRAY) {
-               res->data.safearray_data.elem_type = 0;
+               res->data.safearray_data.elem_type = (MonoMarshalVariant)0;
                res->data.safearray_data.num_elem = 0;
                if (ptr - start <= len)
-                       res->data.safearray_data.elem_type = *ptr++;
+                       res->data.safearray_data.elem_type = (MonoMarshalVariant)*ptr++;
                if (ptr - start <= len)
                        res->data.safearray_data.num_elem = *ptr++;
        }
@@ -6027,9 +6098,9 @@ get_constraints (MonoImage *image, int owner, MonoClass ***constraints, MonoGene
        }
        if (!found)
                return TRUE;
-       res = mono_image_alloc0 (image, sizeof (MonoClass*) * (found + 1));
+       res = (MonoClass **)mono_image_alloc0 (image, sizeof (MonoClass*) * (found + 1));
        for (i = 0, tmp = cons; i < found; ++i, tmp = tmp->next) {
-               res [i] = tmp->data;
+               res [i] = (MonoClass *)tmp->data;
        }
        g_slist_free (cons);
        *constraints = res;
@@ -6141,11 +6212,12 @@ mono_metadata_load_generic_params (MonoImage *image, guint32 token, MonoGenericC
        mono_metadata_decode_row (tdef, i - 1, cols, MONO_GENERICPARAM_SIZE);
        params = NULL;
        n = 0;
-       container = mono_image_alloc0 (image, sizeof (MonoGenericContainer));
-       container->image = image;
+       container = (MonoGenericContainer *)mono_image_alloc0 (image, sizeof (MonoGenericContainer));
+       container->owner.image = image; // Temporarily mark as anonymous, but this will be overriden by caller
+       container->is_anonymous = TRUE;
        do {
                n++;
-               params = g_realloc (params, sizeof (MonoGenericParamFull) * n);
+               params = (MonoGenericParamFull *)g_realloc (params, sizeof (MonoGenericParamFull) * n);
                memset (&params [n - 1], 0, sizeof (MonoGenericParamFull));
                params [n - 1].param.owner = container;
                params [n - 1].param.num = cols [MONO_GENERICPARAM_NUMBER];
@@ -6160,7 +6232,7 @@ mono_metadata_load_generic_params (MonoImage *image, guint32 token, MonoGenericC
        } while (cols [MONO_GENERICPARAM_OWNER] == owner);
 
        container->type_argc = n;
-       container->type_params = mono_image_alloc0 (image, sizeof (MonoGenericParamFull) * n);
+       container->type_params = (MonoGenericParamFull *)mono_image_alloc0 (image, sizeof (MonoGenericParamFull) * n);
        memcpy (container->type_params, params, sizeof (MonoGenericParamFull) * n);
        g_free (params);
        container->parent = parent_container;
@@ -6410,7 +6482,7 @@ mono_signature_get_params (MonoMethodSignature *sig, gpointer *iter)
                        return NULL;
                }
        }
-       type = *iter;
+       type = (MonoType **)*iter;
        type++;
        if (type < &sig->params [sig->param_count]) {
                *iter = type;
@@ -6568,3 +6640,32 @@ mono_method_get_wrapper_cache (MonoMethod *method)
                return &method->klass->image->wrapper_caches;
        }
 }
+
+// This is support for the mempool reference tracking feature in checked-build, but lives in metadata.c due to use of static variables of this file.
+
+/**
+ * mono_find_image_set_owner:
+ *
+ * Find the imageset, if any, which a given pointer is located in the memory of.
+ */
+MonoImageSet *
+mono_find_image_set_owner (void *ptr)
+{
+       MonoImageSet *owner = NULL;
+       int i;
+
+       image_sets_lock ();
+
+       if (image_sets)
+       {
+               for (i = 0; !owner && i < image_sets->len; ++i) {
+                       MonoImageSet *set = (MonoImageSet *)g_ptr_array_index (image_sets, i);
+                       if (mono_mempool_contains_addr (set->mempool, ptr))
+                               owner = set;
+               }
+       }
+
+       image_sets_unlock ();
+
+       return owner;
+}
index 234598d496250d8026180410ecc8664aef17af11..23f8d5990952d0a176d19cbb1e26e1a0f305114a 100644 (file)
@@ -67,7 +67,7 @@ mono_mb_new_base (MonoClass *klass, MonoWrapperType type)
 
 #ifndef DISABLE_JIT
        mb->code_size = 40;
-       mb->code = g_malloc (mb->code_size);
+       mb->code = (unsigned char *)g_malloc (mb->code_size);
 #endif
        /* placeholder for the wrapper always at index 1 */
        mono_mb_add_data (mb, NULL);
@@ -155,7 +155,7 @@ mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, in
        {
                /* Realloc the method info into a mempool */
 
-               method = mono_image_alloc0 (image, sizeof (MonoMethodWrapper));
+               method = (MonoMethod *)mono_image_alloc0 (image, sizeof (MonoMethodWrapper));
                memcpy (method, mb->method, sizeof (MonoMethodWrapper));
                mw = (MonoMethodWrapper*) method;
 
@@ -168,7 +168,7 @@ mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, in
                mw->header = header = (MonoMethodHeader *) 
                        mono_image_alloc0 (image, MONO_SIZEOF_METHOD_HEADER + mb->locals * sizeof (MonoType *));
 
-               header->code = mono_image_alloc (image, mb->pos);
+               header->code = (const unsigned char *)mono_image_alloc (image, mb->pos);
                memcpy ((char*)header->code, mb->code, mb->pos);
 
                for (i = 0, l = mb->locals_list; l; l = l->next, i++) {
@@ -197,15 +197,15 @@ mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, in
        method->skip_visibility = mb->skip_visibility;
 #endif
 
-       i = g_list_length (mw->method_data);
+       i = g_list_length ((GList *)mw->method_data);
        if (i) {
                GList *tmp;
                void **data;
-               l = g_list_reverse (mw->method_data);
+               l = g_list_reverse ((GList *)mw->method_data);
                if (method_is_dynamic (method))
-                       data = g_malloc (sizeof (gpointer) * (i + 1));
+                       data = (void **)g_malloc (sizeof (gpointer) * (i + 1));
                else
-                       data = mono_image_alloc (image, sizeof (gpointer) * (i + 1));
+                       data = (void **)mono_image_alloc (image, sizeof (gpointer) * (i + 1));
                /* store the size in the first element */
                data [0] = GUINT_TO_POINTER (i);
                i = 1;
@@ -232,7 +232,7 @@ mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, in
 #endif
 
        if (mb->param_names) {
-               char **param_names = mono_image_alloc0 (image, signature->param_count * sizeof (gpointer));
+               char **param_names = (char **)mono_image_alloc0 (image, signature->param_count * sizeof (gpointer));
                for (i = 0; i < signature->param_count; ++i)
                        param_names [i] = mono_image_strdup (image, mb->param_names [i]);
 
@@ -257,9 +257,9 @@ mono_mb_add_data (MonoMethodBuilder *mb, gpointer data)
        mw = (MonoMethodWrapper *)mb->method;
 
        /* one O(n) is enough */
-       mw->method_data = g_list_prepend (mw->method_data, data);
+       mw->method_data = g_list_prepend ((GList *)mw->method_data, data);
 
-       return g_list_length (mw->method_data);
+       return g_list_length ((GList *)mw->method_data);
 }
 
 #ifndef DISABLE_JIT
@@ -299,7 +299,7 @@ mono_mb_emit_byte (MonoMethodBuilder *mb, guint8 op)
 {
        if (mb->pos >= mb->code_size) {
                mb->code_size += mb->code_size >> 1;
-               mb->code = g_realloc (mb->code, mb->code_size);
+               mb->code = (unsigned char *)g_realloc (mb->code, mb->code_size);
        }
 
        mb->code [mb->pos++] = op;
@@ -322,7 +322,7 @@ mono_mb_emit_i4 (MonoMethodBuilder *mb, gint32 data)
 {
        if ((mb->pos + 4) >= mb->code_size) {
                mb->code_size += mb->code_size >> 1;
-               mb->code = g_realloc (mb->code, mb->code_size);
+               mb->code = (unsigned char *)g_realloc (mb->code, mb->code_size);
        }
 
        mono_mb_patch_addr (mb, mb->pos, data);
@@ -334,7 +334,7 @@ mono_mb_emit_i8 (MonoMethodBuilder *mb, gint64 data)
 {
        if ((mb->pos + 8) >= mb->code_size) {
                mb->code_size += mb->code_size >> 1;
-               mb->code = g_realloc (mb->code, mb->code_size);
+               mb->code = (unsigned char *)g_realloc (mb->code, mb->code_size);
        }
 
        mono_mb_patch_addr (mb, mb->pos, data);
@@ -347,7 +347,7 @@ mono_mb_emit_i2 (MonoMethodBuilder *mb, gint16 data)
 {
        if ((mb->pos + 2) >= mb->code_size) {
                mb->code_size += mb->code_size >> 1;
-               mb->code = g_realloc (mb->code, mb->code_size);
+               mb->code = (unsigned char *)g_realloc (mb->code, mb->code_size);
        }
 
        mb->code [mb->pos] = data & 0xff;
index 151c1d382c91033269361ce8ff1fcdbb2da617f2..0c1d28130aff76741a2bc76e03d5cd84ea9dfdd8 100644 (file)
@@ -20,7 +20,7 @@
 #include <mono/io-layer/io-layer.h>
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/class-internals.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/method-builder.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/tabledefs.h>
@@ -76,8 +76,8 @@ struct _MonitorArray {
        MonoThreadsSync monitors [MONO_ZERO_LEN_ARRAY];
 };
 
-#define mono_monitor_allocator_lock() mono_mutex_lock (&monitor_mutex)
-#define mono_monitor_allocator_unlock() mono_mutex_unlock (&monitor_mutex)
+#define mono_monitor_allocator_lock() mono_os_mutex_lock (&monitor_mutex)
+#define mono_monitor_allocator_unlock() mono_os_mutex_unlock (&monitor_mutex)
 static mono_mutex_t monitor_mutex;
 static MonoThreadsSync *monitor_freelist;
 static MonitorArray *monitor_allocated;
@@ -248,7 +248,7 @@ lock_word_new_flat (gint32 owner)
 void
 mono_monitor_init (void)
 {
-       mono_mutex_init_recursive (&monitor_mutex);
+       mono_os_mutex_init_recursive (&monitor_mutex);
 }
  
 void
@@ -257,11 +257,11 @@ mono_monitor_cleanup (void)
        MonoThreadsSync *mon;
        /* MonitorArray *marray, *next = NULL; */
 
-       /*mono_mutex_destroy (&monitor_mutex);*/
+       /*mono_os_mutex_destroy (&monitor_mutex);*/
 
        /* The monitors on the freelist don't have weak links - mark them */
-       for (mon = monitor_freelist; mon; mon = mon->data)
-               mon->wait_list = (gpointer)-1;
+       for (mon = monitor_freelist; mon; mon = (MonoThreadsSync *)mon->data)
+               mon->wait_list = (GSList *)-1;
 
        /*
         * FIXME: This still crashes with sgen (async_read.exe)
@@ -319,7 +319,7 @@ mono_locks_dump (gboolean include_untaken)
        int used = 0, on_freelist = 0, to_recycle = 0, total = 0, num_arrays = 0;
        MonoThreadsSync *mon;
        MonitorArray *marray;
-       for (mon = monitor_freelist; mon; mon = mon->data)
+       for (mon = monitor_freelist; mon; mon = (MonoThreadsSync *)mon->data)
                on_freelist++;
        for (marray = monitor_allocated; marray; marray = marray->next) {
                total += marray->num_monitors;
@@ -330,7 +330,7 @@ mono_locks_dump (gboolean include_untaken)
                                if (i < marray->num_monitors - 1)
                                        to_recycle++;
                        } else {
-                               if (!monitor_is_on_freelist (mon->data)) {
+                               if (!monitor_is_on_freelist ((MonoThreadsSync *)mon->data)) {
                                        MonoObject *holder = (MonoObject *)mono_gchandle_get_target ((guint32)mon->data);
                                        if (mon_status_get_owner (mon->status)) {
                                                g_print ("Lock %p in object %p held by thread %d, nest level: %d\n",
@@ -378,39 +378,39 @@ mon_finalize (MonoThreadsSync *mon)
 static MonoThreadsSync *
 mon_new (gsize id)
 {
-       MonoThreadsSync *new;
+       MonoThreadsSync *new_;
 
        if (!monitor_freelist) {
                MonitorArray *marray;
                int i;
                /* see if any sync block has been collected */
-               new = NULL;
+               new_ = NULL;
                for (marray = monitor_allocated; marray; marray = marray->next) {
                        for (i = 0; i < marray->num_monitors; ++i) {
                                if (mono_gchandle_get_target ((guint32)marray->monitors [i].data) == NULL) {
-                                       new = &marray->monitors [i];
-                                       if (new->wait_list) {
+                                       new_ = &marray->monitors [i];
+                                       if (new_->wait_list) {
                                                /* Orphaned events left by aborted threads */
-                                               while (new->wait_list) {
+                                               while (new_->wait_list) {
                                                        LOCK_DEBUG (g_message (G_GNUC_PRETTY_FUNCTION ": (%d): Closing orphaned event %d", mono_thread_info_get_small_id (), new->wait_list->data));
-                                                       CloseHandle (new->wait_list->data);
-                                                       new->wait_list = g_slist_remove (new->wait_list, new->wait_list->data);
+                                                       CloseHandle (new_->wait_list->data);
+                                                       new_->wait_list = g_slist_remove (new_->wait_list, new_->wait_list->data);
                                                }
                                        }
-                                       mono_gchandle_free ((guint32)new->data);
-                                       new->data = monitor_freelist;
-                                       monitor_freelist = new;
+                                       mono_gchandle_free ((guint32)new_->data);
+                                       new_->data = monitor_freelist;
+                                       monitor_freelist = new_;
                                }
                        }
                        /* small perf tweak to avoid scanning all the blocks */
-                       if (new)
+                       if (new_)
                                break;
                }
                /* need to allocate a new array of monitors */
                if (!monitor_freelist) {
                        MonitorArray *last;
                        LOCK_DEBUG (g_message ("%s: allocating more monitors: %d", __func__, array_size));
-                       marray = g_malloc0 (sizeof (MonoArray) + array_size * sizeof (MonoThreadsSync));
+                       marray = (MonitorArray *)g_malloc0 (MONO_SIZEOF_MONO_ARRAY + array_size * sizeof (MonoThreadsSync));
                        marray->num_monitors = array_size;
                        array_size *= 2;
                        /* link into the freelist */
@@ -433,18 +433,18 @@ mon_new (gsize id)
                }
        }
 
-       new = monitor_freelist;
-       monitor_freelist = new->data;
+       new_ = monitor_freelist;
+       monitor_freelist = (MonoThreadsSync *)new_->data;
 
-       new->status = mon_status_set_owner (0, id);
-       new->status = mon_status_init_entry_count (new->status);
-       new->nest = 1;
-       new->data = NULL;
+       new_->status = mon_status_set_owner (0, id);
+       new_->status = mon_status_init_entry_count (new_->status);
+       new_->nest = 1;
+       new_->data = NULL;
        
 #ifndef DISABLE_PERFCOUNTERS
        mono_perfcounters->gc_sync_blocks++;
 #endif
-       return new;
+       return new_;
 }
 
 static MonoThreadsSync*
@@ -493,7 +493,7 @@ mono_monitor_inflate_owned (MonoObject *obj, int id)
        nlw = lock_word_new_inflated (mon);
 
        mono_memory_write_barrier ();
-       tmp_lw.sync = InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, nlw.sync, old_lw.sync);
+       tmp_lw.sync = (MonoThreadsSync *)InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, nlw.sync, old_lw.sync);
        if (tmp_lw.sync != old_lw.sync) {
                /* Someone else inflated the lock in the meantime */
                discard_mon (mon);
@@ -536,7 +536,7 @@ mono_monitor_inflate (MonoObject *obj)
                        mon->nest = lock_word_get_nest (old_lw);
                }
                mono_memory_write_barrier ();
-               tmp_lw.sync = InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, nlw.sync, old_lw.sync);
+               tmp_lw.sync = (MonoThreadsSync *)InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, nlw.sync, old_lw.sync);
                if (tmp_lw.sync == old_lw.sync) {
                        /* Successfully inflated the lock */
                        return;
@@ -592,7 +592,7 @@ mono_object_hash (MonoObject* obj)
                LockWord old_lw;
                lw = lock_word_new_thin_hash (hash);
 
-               old_lw.sync = InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, lw.sync, NULL);
+               old_lw.sync = (MonoThreadsSync *)InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, lw.sync, NULL);
                if (old_lw.sync == NULL) {
                        return hash;
                }
@@ -707,7 +707,7 @@ mono_monitor_exit_flat (MonoObject *obj, LockWord old_lw)
        else
                new_lw.lock_word = 0;
 
-       tmp_lw.sync = InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, new_lw.sync, old_lw.sync);
+       tmp_lw.sync = (MonoThreadsSync *)InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, new_lw.sync, old_lw.sync);
        if (old_lw.sync != tmp_lw.sync) {
                /* Someone inflated the lock in the meantime */
                mono_monitor_exit_inflated (obj);
@@ -896,7 +896,7 @@ retry_contended:
                 * We have to obey a stop/suspend request even if 
                 * allow_interruption is FALSE to avoid hangs at shutdown.
                 */
-               if (!mono_thread_test_state (mono_thread_internal_current (), (ThreadState_StopRequested|ThreadState_SuspendRequested))) {
+               if (!mono_thread_test_state (mono_thread_internal_current (), (MonoThreadState)(ThreadState_StopRequested | ThreadState_SuspendRequested))) {
                        if (ms != INFINITE) {
                                now = mono_msec_ticks ();
                                if (now < then) {
@@ -981,7 +981,7 @@ mono_monitor_try_enter_internal (MonoObject *obj, guint32 ms, gboolean allow_int
                        } else {
                                LockWord nlw, old_lw;
                                nlw = lock_word_increment_nest (lw);
-                               old_lw.sync = InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, nlw.sync, lw.sync);
+                               old_lw.sync = (MonoThreadsSync *)InterlockedCompareExchangePointer ((gpointer*)&obj->synchronisation, nlw.sync, lw.sync);
                                if (old_lw.sync != lw.sync) {
                                        /* Someone else inflated it in the meantime */
                                        g_assert (lock_word_is_inflated (old_lw));
index a62c39868d18bf86f36539b771e5a2d676ec4110..53c74e8cf5bf442774e648c6a6a1d09680d807af 100644 (file)
@@ -295,11 +295,11 @@ bb_liveness (MonoSimpleBasicBlock *bb)
        }
 
        while (mark_stack->len > 0) {
-               MonoSimpleBasicBlock *block = g_ptr_array_remove_index_fast (mark_stack, mark_stack->len - 1);
+               MonoSimpleBasicBlock *block = (MonoSimpleBasicBlock *)g_ptr_array_remove_index_fast (mark_stack, mark_stack->len - 1);
                block->dead = FALSE;
 
                for (tmp = block->out_bb; tmp; tmp = tmp->next) {
-                       MonoSimpleBasicBlock *to = tmp->data;
+                       MonoSimpleBasicBlock *to = (MonoSimpleBasicBlock *)tmp->data;
                        if (to->dead)
                                g_ptr_array_add (mark_stack, to);
                }
index 440bc5f5da19018d0e031ece20fd6603e1733f8b..e9aab32a48d4484e8de91a09909d2772561e6fc2 100644 (file)
@@ -17,7 +17,7 @@
 #include "mono/metadata/mono-config.h"
 #include "mono/metadata/metadata-internals.h"
 #include "mono/metadata/object-internals.h"
-#include "mono/utils/mono-logger-internal.h"
+#include "mono/utils/mono-logger-internals.h"
 
 #if defined(TARGET_PS3)
 #define CONFIG_OS "CellOS"
@@ -166,9 +166,9 @@ static void start_element (GMarkupParseContext *context,
                           gpointer             user_data,
                           GError             **error)
 {
-       ParseState *state = user_data;
+       ParseState *state = (ParseState *)user_data;
        if (!state->current) {
-               state->current = g_hash_table_lookup (config_handlers, element_name);
+               state->current = (MonoParseHandler *)g_hash_table_lookup (config_handlers, element_name);
                if (state->current && state->current->init)
                        state->user_data = state->current->init (state->assembly);
        }
@@ -181,7 +181,7 @@ static void end_element   (GMarkupParseContext *context,
                           gpointer             user_data,
                           GError             **error)
 {
-       ParseState *state = user_data;
+       ParseState *state = (ParseState *)user_data;
        if (state->current) {
                if (state->current->end)
                        state->current->end (state->user_data, element_name);
@@ -200,7 +200,7 @@ static void parse_text    (GMarkupParseContext *context,
                           gpointer             user_data,
                           GError             **error)
 {
-       ParseState *state = user_data;
+       ParseState *state = (ParseState *)user_data;
        if (state->current && state->current->text)
                state->current->text (state->user_data, text, text_len);
 }
@@ -218,7 +218,7 @@ static void parse_error   (GMarkupParseContext *context,
                            GError              *error,
                           gpointer             user_data)
 {
-       ParseState *state = user_data;
+       ParseState *state = (ParseState *)user_data;
        const gchar *msg;
        const gchar *filename;
 
@@ -267,7 +267,7 @@ dllmap_start (gpointer user_data,
               const gchar        **attribute_values)
 {
        int i;
-       DllInfo *info = user_data;
+       DllInfo *info = (DllInfo *)user_data;
        
        if (strcmp (element_name, "dllmap") == 0) {
                g_free (info->dll);
@@ -284,7 +284,7 @@ dllmap_start (gpointer user_data,
                                        size_t libdir_len = strlen (libdir);
                                        char *result;
                                        
-                                       result = g_malloc (libdir_len-strlen("$mono_libdir")+strlen(attribute_values[i])+1);
+                                       result = (char *)g_malloc (libdir_len-strlen("$mono_libdir")+strlen(attribute_values[i])+1);
                                        strncpy (result, attribute_names[i], p-attribute_values[i]);
                                        strcat (result, libdir);
                                        strcat (result, p+strlen("$mono_libdir"));
@@ -327,7 +327,7 @@ dllmap_start (gpointer user_data,
 static void
 dllmap_finish (gpointer user_data)
 {
-       DllInfo *info = user_data;
+       DllInfo *info = (DllInfo *)user_data;
 
        g_free (info->dll);
        g_free (info->target);
@@ -448,7 +448,7 @@ mono_config_parse_xml_with_context (ParseState *state, const char *text, gsize l
        if (!inited)
                mono_config_init ();
 
-       context = g_markup_parse_context_new (&mono_parser, 0, state, NULL);
+       context = g_markup_parse_context_new (&mono_parser, (GMarkupParseFlags)0, state, NULL);
        if (g_markup_parse_context_parse (context, text, len, NULL)) {
                g_markup_parse_context_end_parse (context, NULL);
        }
@@ -668,7 +668,7 @@ mono_get_machine_config (void)
 static void
 assembly_binding_end (gpointer user_data, const char *element_name)
 {
-       ParserUserData *pud = user_data;
+       ParserUserData *pud = (ParserUserData *)user_data;
 
        if (!strcmp (element_name, "dependentAssembly")) {
                if (pud->info_parsed && pud->info) {
@@ -689,7 +689,7 @@ publisher_policy_start (gpointer user_data,
        MonoAssemblyBindingInfo *info;
        int n;
 
-       pud = user_data;
+       pud = (ParserUserData *)user_data;
        info = pud->info;
        if (!strcmp (element_name, "dependentAssembly")) {
                info->name = NULL;
index 42c980214eb53a73ef54cd57c7e3af979dd362d0..09c55b3bcc8486be2385d9e3ea800cd4f954af0c 100644 (file)
@@ -18,7 +18,7 @@
 #include <mono/metadata/mono-debug.h>
 #include <mono/metadata/mono-debug-debugger.h>
 #include <mono/metadata/mono-endian.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/mempool.h>
 #include <mono/metadata/debug-mono-ppdb.h>
 #include <string.h>
@@ -100,7 +100,7 @@ lookup_data_table (MonoDomain *domain)
 {
        MonoDebugDataTable *table;
 
-       table = g_hash_table_lookup (data_table_hash, domain);
+       table = (MonoDebugDataTable *)g_hash_table_lookup (data_table_hash, domain);
        if (!table) {
                g_error ("lookup_data_table () failed for %p\n", domain);
                g_assert (table);
@@ -137,7 +137,7 @@ mono_debug_init (MonoDebugFormat format)
        mono_debug_initialized = TRUE;
        mono_debug_format = format;
 
-       mono_mutex_init_recursive (&debugger_lock_mutex);
+       mono_os_mutex_init_recursive (&debugger_lock_mutex);
 
        mono_debugger_lock ();
 
@@ -197,7 +197,7 @@ mono_debug_domain_unload (MonoDomain *domain)
 
        mono_debugger_lock ();
 
-       table = g_hash_table_lookup (data_table_hash, domain);
+       table = (MonoDebugDataTable *)g_hash_table_lookup (data_table_hash, domain);
        if (!table) {
                g_warning (G_STRLOC ": unloading unknown domain %p / %d",
                           domain, mono_domain_get_id (domain));
@@ -216,7 +216,7 @@ mono_debug_domain_unload (MonoDomain *domain)
 static MonoDebugHandle *
 mono_debug_get_image (MonoImage *image)
 {
-       return g_hash_table_lookup (mono_debug_handles, image);
+       return (MonoDebugHandle *)g_hash_table_lookup (mono_debug_handles, image);
 }
 
 void
@@ -444,7 +444,7 @@ mono_debug_add_method (MonoMethod *method, MonoDebugMethodJitInfo *jit, MonoDoma
                (25 + sizeof (gpointer)) * (1 + jit->num_params + jit->num_locals);
 
        if (max_size > BUFSIZ)
-               ptr = oldptr = g_malloc (max_size);
+               ptr = oldptr = (guint8 *)g_malloc (max_size);
        else
                ptr = oldptr = buffer;
 
@@ -482,9 +482,9 @@ mono_debug_add_method (MonoMethod *method, MonoDebugMethodJitInfo *jit, MonoDoma
        total_size = size + sizeof (MonoDebugMethodAddress);
 
        if (method_is_dynamic (method)) {
-               address = g_malloc0 (total_size);
+               address = (MonoDebugMethodAddress *)g_malloc0 (total_size);
        } else {
-               address = mono_mempool_alloc (table->mp, total_size);
+               address = (MonoDebugMethodAddress *)mono_mempool_alloc (table->mp, total_size);
        }
 
        address->code_start = jit->code_start;
@@ -515,7 +515,7 @@ mono_debug_remove_method (MonoMethod *method, MonoDomain *domain)
 
        table = lookup_data_table (domain);
 
-       address = g_hash_table_lookup (table->method_address_hash, method);
+       address = (MonoDebugMethodAddress *)g_hash_table_lookup (table->method_address_hash, method);
        if (address)
                g_free (address);
 
@@ -579,7 +579,7 @@ read_variable (MonoDebugVarInfo *var, guint8 *ptr, guint8 **rptr)
        var->size = read_leb128 (ptr, &ptr);
        var->begin_scope = read_leb128 (ptr, &ptr);
        var->end_scope = read_leb128 (ptr, &ptr);
-       READ_UNALIGNED (gpointer, ptr, var->type);
+       READ_UNALIGNED (MonoType *, ptr, var->type);
        ptr += sizeof (gpointer);
        *rptr = ptr;
 }
@@ -655,7 +655,7 @@ find_method (MonoMethod *method, MonoDomain *domain)
        MonoDebugMethodAddress *address;
 
        table = lookup_data_table (domain);
-       address = g_hash_table_lookup (table->method_address_hash, method);
+       address = (MonoDebugMethodAddress *)g_hash_table_lookup (table->method_address_hash, method);
 
        if (!address)
                return NULL;
@@ -775,6 +775,20 @@ mono_debug_lookup_source_location (MonoMethod *method, guint32 address, MonoDoma
        return location;
 }
 
+MonoDebugSourceLocation *
+mono_debug_method_lookup_location (MonoDebugMethodInfo *minfo, int il_offset)
+{
+       MonoDebugSourceLocation *location;
+
+       mono_debugger_lock ();
+       if (minfo->handle->ppdb)
+               location = mono_ppdb_lookup_location (minfo, il_offset);
+       else
+               location = mono_debug_symfile_lookup_location (minfo, il_offset);
+       mono_debugger_unlock ();
+       return location;
+}
+
 /*
  * mono_debug_lookup_locals:
  *
@@ -947,14 +961,14 @@ void
 mono_debugger_lock (void)
 {
        g_assert (mono_debug_initialized);
-       mono_mutex_lock (&debugger_lock_mutex);
+       mono_os_mutex_lock (&debugger_lock_mutex);
 }
 
 void
 mono_debugger_unlock (void)
 {
        g_assert (mono_debug_initialized);
-       mono_mutex_unlock (&debugger_lock_mutex);
+       mono_os_mutex_unlock (&debugger_lock_mutex);
 }
 
 /**
index c2134bb2e03770a6238a2fb3ddd3b112fccb079d..8885e521bad3c652038b49d6492af7fa42f8f9f4 100644 (file)
@@ -185,6 +185,9 @@ mono_debug_add_delegate_trampoline (void* code, int size);
 MONO_API MonoDebugLocalsInfo*
 mono_debug_lookup_locals (MonoMethod *method);
 
+MonoDebugSourceLocation *
+mono_debug_method_lookup_location (MonoDebugMethodInfo *minfo, int il_offset);
+
 /*
  * Line number support.
  */
index 24ffda7730a2ecb67c1a158f542a768e6eead89d..e1455148696b130e5e21dffd5c0d4eaa56ad9815 100644 (file)
@@ -40,6 +40,8 @@ typedef enum {
        MONO_ROOT_SOURCE_THREAD_POOL = 12,
        // Roots in the debugger agent.
        MONO_ROOT_SOURCE_DEBUGGER = 13,
+       // Handle structures, used for object passed to internal functions
+       MONO_ROOT_SOURCE_HANDLE = 14,
 } MonoGCRootSource;
 
 MONO_API void   mono_gc_collect         (int generation);
index 63a6b680c0bb0056c6e70639847ce34886a43aa5..aaff73db581ffa249deeab394dfb93737e5b34e8 100644 (file)
@@ -30,7 +30,7 @@
 #include <math.h>
 #include <glib.h>
 #include "mono-hash.h"
-#include "metadata/gc-internal.h"
+#include "metadata/gc-internals.h"
 #include <mono/utils/checked-build.h>
 
 #ifdef HAVE_BOEHM_GC
@@ -173,7 +173,7 @@ typedef struct {
 static void*
 do_rehash (void *_data)
 {
-       RehashData *data = _data;
+       RehashData *data = (RehashData *)_data;
        MonoGHashTable *hash = data->hash;
        int current_size, i;
        Slot **table;
@@ -219,12 +219,13 @@ rehash (MonoGHashTable *hash)
        data.new_size = g_spaced_primes_closest (hash->in_use);
        data.table = mg_new0 (Slot *, data.new_size);
 
-#ifdef USE_COOP_GC
-       /* We cannot be preempted */
-       old_table = do_rehash (&data);
-#else
-       old_table = mono_gc_invoke_with_gc_lock (do_rehash, &data);
-#endif
+       if (!mono_threads_is_coop_enabled ()) {
+               old_table = mono_gc_invoke_with_gc_lock (do_rehash, &data);
+       } else {
+               /* We cannot be preempted */
+               old_table = do_rehash (&data);
+       }
+
        mg_free (old_table);
 }
 
@@ -424,17 +425,17 @@ mono_g_hash_table_insert_replace (MonoGHashTable *hash, gpointer key, gpointer v
                        if (replace){
                                if (hash->key_destroy_func != NULL)
                                        (*hash->key_destroy_func)(s->key);
-                               s->key = key;
+                               s->key = (MonoObject *)key;
                        }
                        if (hash->value_destroy_func != NULL)
                                (*hash->value_destroy_func) (s->value);
-                       s->value = value;
+                       s->value = (MonoObject *)value;
                        return;
                }
        }
        s = new_slot (hash);
-       s->key = key;
-       s->value = value;
+       s->key = (MonoObject *)key;
+       s->value = (MonoObject *)value;
        s->next = hash->table [hashcode];
        hash->table [hashcode] = s;
        hash->in_use++;
index 4626ed48ca03b0d37d73a04b3a47bc44b952e83a..e07f8fadb838dcd599922996f8b077333134d56d 100644 (file)
 #include <mono/metadata/mono-gc.h>
 
 MONO_BEGIN_DECLS
-
+/* do not change the values of this enum */
 typedef enum {
-       MONO_HASH_KEY_GC,
-       MONO_HASH_VALUE_GC,
-       MONO_HASH_KEY_VALUE_GC
+       MONO_HASH_KEY_GC = 1,
+       MONO_HASH_VALUE_GC = 2,
+       MONO_HASH_KEY_VALUE_GC = MONO_HASH_KEY_GC | MONO_HASH_VALUE_GC,
 } MonoGHashGCType;
 
 typedef struct _MonoGHashTable MonoGHashTable;
index 2cc6a65a254ec3277b6520ace1d89af221a491a8..e622308066a44d2e8d632909c69007b00796381b 100644 (file)
@@ -153,8 +153,8 @@ enum {
 };
 
 static mono_mutex_t perfctr_mutex;
-#define perfctr_lock() mono_mutex_lock (&perfctr_mutex)
-#define perfctr_unlock() mono_mutex_unlock (&perfctr_mutex)
+#define perfctr_lock() mono_os_mutex_lock (&perfctr_mutex)
+#define perfctr_unlock() mono_os_mutex_unlock (&perfctr_mutex)
 
 typedef struct {
        char reserved [16];
@@ -359,9 +359,9 @@ load_sarea_for_pid (int pid)
        perfctr_lock ();
        if (pid_to_shared_area == NULL)
                pid_to_shared_area = g_hash_table_new (NULL, NULL);
-       data = g_hash_table_lookup (pid_to_shared_area, GINT_TO_POINTER (pid));
+       data = (ExternalSArea *)g_hash_table_lookup (pid_to_shared_area, GINT_TO_POINTER (pid));
        if (!data) {
-               area = mono_shared_area_for_pid (GINT_TO_POINTER (pid));
+               area = (MonoSharedArea *)mono_shared_area_for_pid (GINT_TO_POINTER (pid));
                if (area) {
                        data = g_new (ExternalSArea, 1);
                        data->sarea = area;
@@ -369,7 +369,7 @@ load_sarea_for_pid (int pid)
                        g_hash_table_insert (pid_to_shared_area, GINT_TO_POINTER (pid), data);
                }
        } else {
-               area = data->sarea;
+               area = (MonoSharedArea *)data->sarea;
                data->refcount ++;
        }
        perfctr_unlock ();
@@ -380,7 +380,7 @@ static void
 unref_pid_unlocked (int pid)
 {
        ExternalSArea *data;
-       data = g_hash_table_lookup (pid_to_shared_area, GINT_TO_POINTER (pid));
+       data = (ExternalSArea *)g_hash_table_lookup (pid_to_shared_area, GINT_TO_POINTER (pid));
        if (data) {
                data->refcount--;
                if (!data->refcount) {
@@ -537,9 +537,9 @@ mono_perfcounters_init (void)
        d_offset += 7;
        d_offset &= ~7;
 
-       mono_mutex_init_recursive (&perfctr_mutex);
+       mono_os_mutex_init_recursive (&perfctr_mutex);
 
-       shared_area = mono_shared_area ();
+       shared_area = (MonoSharedArea *)mono_shared_area ();
        shared_area->counters_start = G_STRUCT_OFFSET (MonoSharedArea, counters);
        shared_area->counters_size = sizeof (MonoPerfCounters);
        shared_area->data_start = d_offset;
@@ -645,7 +645,7 @@ typedef struct {
 static gboolean
 category_search (SharedHeader *header, void *data)
 {
-       CatSearch *search = data;
+       CatSearch *search = (CatSearch *)data;
        if (header->ftype == FTYPE_CATEGORY) {
                SharedCategory *cat = (SharedCategory*)header;
                if (mono_string_compare_ascii (search->name, cat->name) == 0) {
@@ -669,7 +669,7 @@ find_custom_category (MonoString *name)
 static gboolean
 category_collect (SharedHeader *header, void *data)
 {
-       GSList **list = data;
+       GSList **list = (GSList **)data;
        if (header->ftype == FTYPE_CATEGORY) {
                *list = g_slist_prepend (*list, header);
        }
@@ -718,7 +718,7 @@ typedef struct {
 static gboolean
 instance_search (SharedHeader *header, void *data)
 {
-       InstanceSearch *search = data;
+       InstanceSearch *search = (InstanceSearch *)data;
        if (header->ftype == FTYPE_INSTANCE) {
                SharedInstance *ins = (SharedInstance*)header;
                if (search->cat_offset == ins->category_offset) {
@@ -890,7 +890,7 @@ network_cleanup (ImplVtable *vtable)
        if (vtable == NULL)
                return;
 
-       narg = vtable->arg;
+       narg = (NetworkVtableArg *)vtable->arg;
        if (narg == NULL)
                return;
 
@@ -1219,7 +1219,7 @@ static gint64
 custom_writable_update (ImplVtable *vtable, MonoBoolean do_incr, gint64 value)
 {
        /* FIXME: check writability */
-       guint64 *ptr = vtable->arg;
+       guint64 *ptr = (guint64 *)vtable->arg;
        if (ptr) {
                if (do_incr) {
                        /* FIXME: we need to do this atomically */
@@ -1304,7 +1304,7 @@ custom_get_impl (SharedCategory *cat, MonoString* counter, MonoString* instance,
        g_free (name);
        if (!inst)
                return NULL;
-       return custom_vtable (scounter, inst, custom_get_value_address (scounter, inst));
+       return custom_vtable (scounter, inst, (char *)custom_get_value_address (scounter, inst));
 }
 
 static const CategoryDesc*
@@ -1361,7 +1361,7 @@ mono_perfcounter_get_impl (MonoString* category, MonoString* counter, MonoString
 MonoBoolean
 mono_perfcounter_get_sample (void *impl, MonoBoolean only_value, MonoCounterSample *sample)
 {
-       ImplVtable *vtable = impl;
+       ImplVtable *vtable = (ImplVtable *)impl;
        if (vtable && vtable->sample)
                return vtable->sample (vtable, only_value, sample);
        return FALSE;
@@ -1370,7 +1370,7 @@ mono_perfcounter_get_sample (void *impl, MonoBoolean only_value, MonoCounterSamp
 gint64
 mono_perfcounter_update_value (void *impl, MonoBoolean do_incr, gint64 value)
 {
-       ImplVtable *vtable = impl;
+       ImplVtable *vtable = (ImplVtable *)impl;
        if (vtable && vtable->update)
                return vtable->update (vtable, do_incr, value);
        return 0;
@@ -1379,7 +1379,7 @@ mono_perfcounter_update_value (void *impl, MonoBoolean do_incr, gint64 value)
 void
 mono_perfcounter_free_data (void *impl)
 {
-       ImplVtable *vtable = impl;
+       ImplVtable *vtable = (ImplVtable *)impl;
        if (vtable && vtable->cleanup)
                vtable->cleanup (vtable);
        g_free (impl);
@@ -1596,7 +1596,7 @@ mono_perfcounter_category_names (MonoString *machine)
                mono_array_setref (res, i, mono_string_new (domain, cdesc->name));
        }
        for (tmp = custom_categories; tmp; tmp = tmp->next) {
-               SharedCategory *scat = tmp->data;
+               SharedCategory *scat = (SharedCategory *)tmp->data;
                mono_array_setref (res, i, mono_string_new (domain, scat->name));
                i++;
        }
@@ -1674,7 +1674,7 @@ get_string_array_of_strings (void **array, int count)
        MonoDomain *domain = mono_domain_get ();
        MonoArray * res = mono_array_new (mono_domain_get (), mono_get_string_class (), count);
        for (i = 0; i < count; ++i) {
-               char* p = array[i];
+               char* p = (char *)array[i];
                mono_array_setref (res, i, mono_string_new (domain, p));
        }
 
@@ -1753,7 +1753,7 @@ get_custom_instances (MonoString *category)
                int i = 0;
                MonoArray *array = mono_array_new (mono_domain_get (), mono_get_string_class (), g_slist_length (list));
                for (tmp = list; tmp; tmp = tmp->next) {
-                       SharedInstance *inst = tmp->data;
+                       SharedInstance *inst = (SharedInstance *)tmp->data;
                        mono_array_setref (array, i, mono_string_new (mono_domain_get (), inst->instance_name));
                        i++;
                }
@@ -1802,7 +1802,7 @@ mono_perfcounter_foreach_shared_item (SharedHeader *header, gpointer data)
        SharedCategory *cat;
        SharedCounter *counter;
        SharedInstance *inst;
-       PerfCounterForeachData *foreach_data = data;
+       PerfCounterForeachData *foreach_data = (PerfCounterForeachData *)data;
 
        if (header->ftype == FTYPE_CATEGORY) {
                cat = (SharedCategory*)header;
index e8be3a526b0d2681025fbe45e4c9e1a94201b935..00b3b09c39288a69ad3b804845071c28c597a007 100644 (file)
@@ -13,7 +13,7 @@
 
 #include <glib.h>
 
-#include "mono/metadata/gc-internal.h"
+#include "mono/metadata/gc-internals.h"
 
 /* This is an implementation of a growable pointer array that avoids doing memory allocations for small sizes.
  * It works by allocating an initial small array on stack and only going to gc tracked memory if needed.
@@ -34,7 +34,9 @@ typedef struct {
        (ARRAY).capacity = MAX (INITIAL_SIZE, MONO_PTR_ARRAY_MAX_ON_STACK); \
        (ARRAY).source = SOURCE; \
        (ARRAY).msg = MSG; \
-       (ARRAY).data = INITIAL_SIZE > MONO_PTR_ARRAY_MAX_ON_STACK ? mono_gc_alloc_fixed (sizeof (void*) * INITIAL_SIZE, mono_gc_make_root_descr_all_refs (INITIAL_SIZE), SOURCE, MSG) : g_newa (void*, MONO_PTR_ARRAY_MAX_ON_STACK); \
+       (ARRAY).data = INITIAL_SIZE > MONO_PTR_ARRAY_MAX_ON_STACK \
+               ? (void **)mono_gc_alloc_fixed (sizeof (void*) * INITIAL_SIZE, mono_gc_make_root_descr_all_refs (INITIAL_SIZE), SOURCE, MSG) \
+               : g_newa (void*, MONO_PTR_ARRAY_MAX_ON_STACK); \
 } while (0)
 
 #define mono_ptr_array_destroy(ARRAY) do {\
@@ -44,8 +46,8 @@ typedef struct {
 
 #define mono_ptr_array_append(ARRAY, VALUE) do { \
        if ((ARRAY).size >= (ARRAY).capacity) {\
-       void *__tmp = mono_gc_alloc_fixed (sizeof (void*) * (ARRAY).capacity * 2, mono_gc_make_root_descr_all_refs ((ARRAY).capacity * 2), (ARRAY).source, (ARRAY).msg); \
-               mono_gc_memmove_aligned (__tmp, (ARRAY).data, (ARRAY).capacity * sizeof (void*)); \
+       void **__tmp = (void **)mono_gc_alloc_fixed (sizeof (void*) * (ARRAY).capacity * 2, mono_gc_make_root_descr_all_refs ((ARRAY).capacity * 2), (ARRAY).source, (ARRAY).msg); \
+               mono_gc_memmove_aligned ((void *)__tmp, (ARRAY).data, (ARRAY).capacity * sizeof (void*)); \
                if ((ARRAY).capacity > MONO_PTR_ARRAY_MAX_ON_STACK)     \
                        mono_gc_free_fixed ((ARRAY).data);      \
                (ARRAY).data = __tmp;   \
index c5024b86a73b03ae7550c9d004c13cc5af7121b0..6dfa3d846ce7a0184249757f5f1e740859233f1e 100644 (file)
@@ -153,7 +153,7 @@ GetTokenName (uid_t uid)
 #else
        fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
 #endif
-       fbuf = g_malloc0 (fbufsize);
+       fbuf = (gchar *)g_malloc0 (fbufsize);
        retval = getpwuid_r (uid, &pwd, fbuf, fbufsize, &p);
        result = ((retval == 0) && (p == &pwd));
 #else
@@ -220,7 +220,7 @@ IsDefaultGroup (uid_t user, gid_t group)
        fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
 #endif
 
-       fbuf = g_malloc0 (fbufsize);
+       fbuf = (gchar *)g_malloc0 (fbufsize);
        retval = getpwuid_r (user, &pwd, fbuf, fbufsize, &p);
        result = ((retval == 0) && (p == &pwd));
 #else
@@ -359,7 +359,7 @@ ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken (MonoString *us
        fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
 #endif
 
-       fbuf = g_malloc0 (fbufsize);
+       fbuf = (gchar *)g_malloc0 (fbufsize);
        retval = getpwnam_r (utf8_name, &pwd, fbuf, fbufsize, &p);
        result = ((retval == 0) && (p == &pwd));
 #else
@@ -500,7 +500,7 @@ ves_icall_System_Security_Principal_WindowsPrincipal_IsMemberOfGroupId (gpointer
 #else
        fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
 #endif
-       fbuf = g_malloc0 (fbufsize);
+       fbuf = (gchar *)g_malloc0 (fbufsize);
        retval = getgrgid_r ((gid_t) GPOINTER_TO_INT (group), &grp, fbuf, fbufsize, &g);
        result = ((retval == 0) && (g == &grp));
 #else
@@ -547,7 +547,7 @@ ves_icall_System_Security_Principal_WindowsPrincipal_IsMemberOfGroupName (gpoint
 #else
                size_t fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
 #endif
-               fbuf = g_malloc0 (fbufsize);
+               fbuf = (gchar *)g_malloc0 (fbufsize);
                retval = getgrnam_r (utf8_groupname, &grp, fbuf, fbufsize, &g);
                result = ((retval == 0) && (g == &grp));
 #else
index 1d0b0217a5146e77ca4e66cf5cc5058d76fb60a7..e5c16e1e9a46b2eab51c6249b54115f6ed82bad6 100644 (file)
@@ -9,7 +9,7 @@
 #include "config.h"
 #include <glib.h>
 #include <mono/metadata/mono-gc.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/runtime.h>
 #include <mono/utils/atomic.h>
 #include <mono/utils/mono-threads.h>
@@ -518,7 +518,7 @@ BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reser
 #endif
 
 guint
-mono_gc_get_vtable_bits (MonoClass *class)
+mono_gc_get_vtable_bits (MonoClass *klass)
 {
        return 0;
 }
@@ -528,12 +528,6 @@ mono_gc_register_altstack (gpointer stack, gint32 stack_size, gpointer altstack,
 {
 }
 
-gboolean
-mono_gc_set_allow_synchronous_major (gboolean flag)
-{
-       return TRUE;
-}
-
 gboolean
 mono_gc_is_null (void)
 {
index 629d48af4d4403f2c6efea4a04fd784197574fef..b296ca2e37d7f86340bebed513b1dbb548a3552a 100644 (file)
@@ -195,8 +195,6 @@ number_to_double (MonoNumber *number, gdouble *value)
        guint16 *src;
        gint exp, remaining, total, count, scale, absscale, index;
 
-       g_assert (number->digits);
-
        total = 0;
        src = number->digits;
        while (*src++) total ++;
index eb9e1c61a8c9d0e58ae4a84e29eaa806ce741306..60cfaac692c5b764310a4f21bdad53f1f3a3080e 100644 (file)
@@ -7,11 +7,13 @@
 #include <mono/metadata/mempool.h>
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/threads-types.h>
+#include <mono/metadata/handle.h>
 #include <mono/io-layer/io-layer.h>
 #include "mono/utils/mono-compiler.h"
 #include "mono/utils/mono-error.h"
 #include "mono/utils/mono-stack-unwinding.h"
 #include "mono/utils/mono-tls.h"
+#include "mono/utils/mono-coop-mutex.h"
 
 #if 1
 #ifdef __GNUC__
@@ -163,6 +165,8 @@ struct _MonoArray {
        double vector [MONO_ZERO_LEN_ARRAY];
 };
 
+#define MONO_SIZEOF_MONO_ARRAY (sizeof (MonoArray) - MONO_ZERO_LEN_ARRAY * sizeof (double))
+
 struct _MonoString {
        MonoObject object;
        int32_t length;
@@ -406,7 +410,7 @@ struct _MonoInternalThread {
        gpointer appdomain_refs;
        /* This is modified using atomic ops, so keep it a gint32 */
        gint32 interruption_requested;
-       mono_mutex_t *synch_cs;
+       MonoCoopMutex *synch_cs;
        MonoBoolean threadpool_thread;
        MonoBoolean thread_interrupt_requested;
        int stack_size;
@@ -600,8 +604,9 @@ typedef struct {
        gpointer (*create_ftnptr) (MonoDomain *domain, gpointer addr);
        gpointer (*get_addr_from_ftnptr) (gpointer descr);
        char*    (*get_runtime_build_info) (void);
-       gpointer (*get_vtable_trampoline) (int slot_index);
-       gpointer (*get_imt_trampoline) (int imt_slot_index);
+       gpointer (*get_vtable_trampoline) (MonoVTable *vtable, int slot_index);
+       gpointer (*get_imt_trampoline) (MonoVTable *vtable, int imt_slot_index);
+       gboolean (*imt_entry_inited) (MonoVTable *vtable, int imt_slot_index);
        void     (*set_cast_details) (MonoClass *from, MonoClass *to);
        void     (*debug_log) (int level, MonoString *category, MonoString *message);
        gboolean (*debug_log_is_enabled) (void);
@@ -1543,6 +1548,9 @@ typedef gpointer (*MonoImtThunkBuilder) (MonoVTable *vtable, MonoDomain *domain,
 void
 mono_install_imt_thunk_builder (MonoImtThunkBuilder func);
 
+void
+mono_set_always_build_imt_thunks (gboolean value);
+
 void
 mono_vtable_build_imt_slot (MonoVTable* vtable, int imt_slot);
 
index 267b9655b346d7ec3a4d0944d43ce961d5400bc6..c7da309161fd6833d1ce2a977d25d634c5d1b26c 100644 (file)
@@ -38,6 +38,14 @@ DECL_ALIGN(float)
 DECL_ALIGN(double)
 DECL_ALIGN(gpointer)
 
+DECL_SIZE(gint8)
+DECL_SIZE(gint16)
+DECL_SIZE(gint32)
+DECL_SIZE(gint64)
+DECL_SIZE(float)
+DECL_SIZE(double)
+DECL_SIZE(gpointer)
+
 #ifndef DISABLE_METADATA_OFFSETS
 //object offsets
 DECL_OFFSET(MonoObject, vtable)
@@ -72,6 +80,7 @@ DECL_OFFSET(MonoDelegate, invoke_impl)
 DECL_OFFSET(MonoDelegate, method)
 DECL_OFFSET(MonoDelegate, method_code)
 DECL_OFFSET(MonoDelegate, method_is_virtual)
+DECL_OFFSET(MonoDelegate, rgctx)
 
 DECL_OFFSET(MonoInternalThread, tid)
 DECL_OFFSET(MonoInternalThread, small_id)
@@ -234,4 +243,6 @@ DECL_OFFSET(SeqPointInfo, bp_addrs)
 #undef DECL_OFFSET2
 #undef DECL_ALIGN
 #undef DECL_ALIGN2
+#undef DECL_SIZE
+#undef DECL_SIZE2
 #undef USE_CROSS_COMPILE_OFFSETS
index a7ea74345f8c443f56285be37201dd900516a868..8ba5568aa9d40e02e914880e843f12cbf7c00ef6 100644 (file)
@@ -21,7 +21,7 @@
 #include <mono/metadata/tokentype.h>
 #include <mono/metadata/loader.h>
 #include <mono/metadata/object.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/exception.h>
 #include <mono/metadata/domain-internals.h>
 #include "mono/metadata/metadata-internals.h"
 #include "mono/metadata/profiler-private.h"
 #include "mono/metadata/security-manager.h"
 #include "mono/metadata/mono-debug-debugger.h"
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/verify-internals.h>
 #include <mono/utils/strenc.h>
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/mono-error-internals.h>
 #include <mono/utils/mono-memory-model.h>
 #include <mono/utils/checked-build.h>
+#include <mono/utils/mono-threads.h>
 #include "cominterop.h"
 
 static void
@@ -58,25 +59,25 @@ static char *
 mono_string_to_utf8_internal (MonoMemPool *mp, MonoImage *image, MonoString *s, gboolean ignore_error, MonoError *error);
 
 
-#define ldstr_lock() mono_mutex_lock (&ldstr_section)
-#define ldstr_unlock() mono_mutex_unlock (&ldstr_section)
+#define ldstr_lock() mono_os_mutex_lock (&ldstr_section)
+#define ldstr_unlock() mono_os_mutex_unlock (&ldstr_section)
 static mono_mutex_t ldstr_section;
 
 void
-mono_runtime_object_init (MonoObject *this)
+mono_runtime_object_init (MonoObject *this_obj)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
        MonoMethod *method = NULL;
-       MonoClass *klass = this->vtable->klass;
+       MonoClass *klass = this_obj->vtable->klass;
 
        method = mono_class_get_method_from_name (klass, ".ctor", 0);
        if (!method)
                g_error ("Could not lookup zero argument constructor for class %s", mono_type_get_full_name (klass));
 
        if (method->klass->valuetype)
-               this = mono_object_unbox (this);
-       mono_runtime_invoke (method, this, NULL, NULL);
+               this_obj = (MonoObject *)mono_object_unbox (this_obj);
+       mono_runtime_invoke (method, this_obj, NULL, NULL);
 }
 
 /* The pseudo algorithm for type initialization from the spec
@@ -104,28 +105,26 @@ Note it doesn't say anything about domains - only threads.
 
 typedef struct
 {
-       guint32 initializing_tid;
+       MonoNativeThreadId initializing_tid;
        guint32 waiting_count;
        gboolean done;
-       mono_mutex_t initialization_section;
+       MonoCoopMutex initialization_section;
 } TypeInitializationLock;
 
 /* for locking access to type_initialization_hash and blocked_thread_hash */
-static mono_mutex_t type_initialization_section;
+static MonoCoopMutex type_initialization_section;
 
 static inline void
 mono_type_initialization_lock (void)
 {
        /* The critical sections protected by this lock in mono_runtime_class_init_full () can block */
-       MONO_PREPARE_BLOCKING;
-       mono_mutex_lock (&type_initialization_section);
-       MONO_FINISH_BLOCKING;
+       mono_coop_mutex_lock (&type_initialization_section);
 }
 
 static inline void
 mono_type_initialization_unlock (void)
 {
-       mono_mutex_unlock (&type_initialization_section);
+       mono_coop_mutex_unlock (&type_initialization_section);
 }
 
 static void
@@ -133,15 +132,13 @@ mono_type_init_lock (TypeInitializationLock *lock)
 {
        MONO_REQ_GC_NEUTRAL_MODE;
 
-       MONO_TRY_BLOCKING;
-       mono_mutex_lock (&lock->initialization_section);
-       MONO_FINISH_TRY_BLOCKING;
+       mono_coop_mutex_lock (&lock->initialization_section);
 }
 
 static void
 mono_type_init_unlock (TypeInitializationLock *lock)
 {
-       mono_mutex_unlock (&lock->initialization_section);
+       mono_coop_mutex_unlock (&lock->initialization_section);
 }
 
 /* from vtable to lock */
@@ -191,10 +188,10 @@ mono_thread_get_main (void)
 void
 mono_type_initialization_init (void)
 {
-       mono_mutex_init_recursive (&type_initialization_section);
+       mono_coop_mutex_init_recursive (&type_initialization_section);
        type_initialization_hash = g_hash_table_new (NULL, NULL);
        blocked_thread_hash = g_hash_table_new (NULL, NULL);
-       mono_mutex_init_recursive (&ldstr_section);
+       mono_os_mutex_init_recursive (&ldstr_section);
 }
 
 void
@@ -204,11 +201,11 @@ mono_type_initialization_cleanup (void)
        /* This is causing race conditions with
         * mono_release_type_locks
         */
-       mono_mutex_destroy (&type_initialization_section);
+       mono_coop_mutex_destroy (&type_initialization_section);
        g_hash_table_destroy (type_initialization_hash);
        type_initialization_hash = NULL;
 #endif
-       mono_mutex_destroy (&ldstr_section);
+       mono_os_mutex_destroy (&ldstr_section);
        g_hash_table_destroy (blocked_thread_hash);
        blocked_thread_hash = NULL;
 
@@ -240,7 +237,7 @@ get_type_init_exception_for_vtable (MonoVTable *vtable)
        ex = NULL;
        mono_domain_lock (domain);
        if (domain->type_init_exception_hash)
-               ex = mono_g_hash_table_lookup (domain->type_init_exception_hash, klass);
+               ex = (MonoException *)mono_g_hash_table_lookup (domain->type_init_exception_hash, klass);
        mono_domain_unlock (domain);
 
        if (!ex) {
@@ -286,7 +283,7 @@ mono_runtime_class_init_full (MonoVTable *vtable, gboolean raise_exception)
        gchar *full_name;
        MonoDomain *domain = vtable->domain;
        TypeInitializationLock *lock;
-       guint32 tid;
+       MonoNativeThreadId tid;
        int do_initialization = 0;
        MonoDomain *last_domain = NULL;
 
@@ -325,7 +322,7 @@ mono_runtime_class_init_full (MonoVTable *vtable, gboolean raise_exception)
                return NULL;
        }
 
-       tid = GetCurrentThreadId ();
+       tid = mono_native_thread_id_get ();
 
        mono_type_initialization_lock ();
        /* double check... */
@@ -341,7 +338,7 @@ mono_runtime_class_init_full (MonoVTable *vtable, gboolean raise_exception)
                        mono_raise_exception (get_type_init_exception_for_vtable (vtable));
                return get_type_init_exception_for_vtable (vtable);
        }
-       lock = g_hash_table_lookup (type_initialization_hash, vtable);
+       lock = (TypeInitializationLock *)g_hash_table_lookup (type_initialization_hash, vtable);
        if (lock == NULL) {
                /* This thread will get to do the initialization */
                if (mono_domain_get () != domain) {
@@ -355,8 +352,8 @@ mono_runtime_class_init_full (MonoVTable *vtable, gboolean raise_exception)
                                return mono_get_exception_appdomain_unloaded ();
                        }
                }
-               lock = g_malloc (sizeof(TypeInitializationLock));
-               mono_mutex_init_recursive (&lock->initialization_section);
+               lock = (TypeInitializationLock *)g_malloc (sizeof (TypeInitializationLock));
+               mono_coop_mutex_init_recursive (&lock->initialization_section);
                lock->initializing_tid = tid;
                lock->waiting_count = 1;
                lock->done = FALSE;
@@ -369,14 +366,14 @@ mono_runtime_class_init_full (MonoVTable *vtable, gboolean raise_exception)
                gpointer blocked;
                TypeInitializationLock *pending_lock;
 
-               if (lock->initializing_tid == tid || lock->done) {
+               if (mono_native_thread_id_equals (lock->initializing_tid, tid) || lock->done) {
                        mono_type_initialization_unlock ();
                        return NULL;
                }
                /* see if the thread doing the initialization is already blocked on this thread */
-               blocked = GUINT_TO_POINTER (lock->initializing_tid);
+               blocked = GUINT_TO_POINTER (MONO_NATIVE_THREAD_ID_TO_UINT (lock->initializing_tid));
                while ((pending_lock = (TypeInitializationLock*) g_hash_table_lookup (blocked_thread_hash, blocked))) {
-                       if (pending_lock->initializing_tid == tid) {
+                       if (mono_native_thread_id_equals (pending_lock->initializing_tid, tid)) {
                                if (!pending_lock->done) {
                                        mono_type_initialization_unlock ();
                                        return NULL;
@@ -387,7 +384,7 @@ mono_runtime_class_init_full (MonoVTable *vtable, gboolean raise_exception)
                                        break;
                                }
                        }
-                       blocked = GUINT_TO_POINTER (pending_lock->initializing_tid);
+                       blocked = GUINT_TO_POINTER (MONO_NATIVE_THREAD_ID_TO_UINT (pending_lock->initializing_tid));
                }
                ++lock->waiting_count;
                /* record the fact that we are waiting on the initializing thread */
@@ -435,11 +432,11 @@ mono_runtime_class_init_full (MonoVTable *vtable, gboolean raise_exception)
        }
 
        mono_type_initialization_lock ();
-       if (lock->initializing_tid != tid)
+       if (!mono_native_thread_id_equals (lock->initializing_tid, tid))
                g_hash_table_remove (blocked_thread_hash, GUINT_TO_POINTER (tid));
        --lock->waiting_count;
        if (lock->waiting_count == 0) {
-               mono_mutex_destroy (&lock->initialization_section);
+               mono_coop_mutex_destroy (&lock->initialization_section);
                g_hash_table_remove (type_initialization_hash, vtable);
                g_free (lock);
        }
@@ -465,7 +462,7 @@ gboolean release_type_locks (gpointer key, gpointer value, gpointer user)
        MonoVTable *vtable = (MonoVTable*)key;
 
        TypeInitializationLock *lock = (TypeInitializationLock*) value;
-       if (lock->initializing_tid == GPOINTER_TO_UINT (user) && !lock->done) {
+       if (mono_native_thread_id_equals (lock->initializing_tid, MONO_UINT_TO_NATIVE_THREAD_ID (GPOINTER_TO_UINT (user))) && !lock->done) {
                lock->done = TRUE;
                /* 
                 * Have to set this since it cannot be set by the normal code in 
@@ -476,7 +473,7 @@ gboolean release_type_locks (gpointer key, gpointer value, gpointer user)
                mono_type_init_unlock (lock);
                --lock->waiting_count;
                if (lock->waiting_count == 0) {
-                       mono_mutex_destroy (&lock->initialization_section);
+                       mono_coop_mutex_destroy (&lock->initialization_section);
                        g_free (lock);
                        return TRUE;
                }
@@ -490,7 +487,7 @@ mono_release_type_locks (MonoInternalThread *thread)
        MONO_REQ_GC_UNSAFE_MODE;
 
        mono_type_initialization_lock ();
-       g_hash_table_foreach_remove (type_initialization_hash, release_type_locks, (gpointer)(gsize)(thread->tid));
+       g_hash_table_foreach_remove (type_initialization_hash, release_type_locks, GUINT_TO_POINTER (thread->tid));
        mono_type_initialization_unlock ();
 }
 
@@ -531,6 +528,8 @@ static MonoTrampoline arch_create_jit_trampoline = default_trampoline;
 static MonoJumpTrampoline arch_create_jump_trampoline = default_jump_trampoline;
 static MonoDelegateTrampoline arch_create_delegate_trampoline = default_delegate_trampoline;
 static MonoImtThunkBuilder imt_thunk_builder;
+static gboolean always_build_imt_thunks;
+
 #if (MONO_IMT_SIZE > 32)
 #error "MONO_IMT_SIZE cannot be larger than 32"
 #endif
@@ -578,6 +577,12 @@ mono_install_imt_thunk_builder (MonoImtThunkBuilder func) {
        imt_thunk_builder = func;
 }
 
+void
+mono_set_always_build_imt_thunks (gboolean value)
+{
+       always_build_imt_thunks = value;
+}
+
 static MonoCompileFunc default_mono_compile_method = NULL;
 
 /**
@@ -679,7 +684,7 @@ mono_runtime_free_method (MonoDomain *domain, MonoMethod *method)
 #define BITMAP_EL_SIZE (sizeof (gsize) * 8)
 
 static gsize*
-compute_class_bitmap (MonoClass *class, gsize *bitmap, int size, int offset, int *max_set, gboolean static_fields)
+compute_class_bitmap (MonoClass *klass, gsize *bitmap, int size, int offset, int *max_set, gboolean static_fields)
 {
        MONO_REQ_GC_NEUTRAL_MODE;
 
@@ -689,25 +694,25 @@ compute_class_bitmap (MonoClass *class, gsize *bitmap, int size, int offset, int
        int max_size;
 
        if (static_fields)
-               max_size = mono_class_data_size (class) / sizeof (gpointer);
+               max_size = mono_class_data_size (klass) / sizeof (gpointer);
        else
-               max_size = class->instance_size / sizeof (gpointer);
+               max_size = klass->instance_size / sizeof (gpointer);
        if (max_size > size) {
                g_assert (offset <= 0);
-               bitmap = g_malloc0 ((max_size + BITMAP_EL_SIZE - 1) / BITMAP_EL_SIZE * sizeof (gsize));
+               bitmap = (gsize *)g_malloc0 ((max_size + BITMAP_EL_SIZE - 1) / BITMAP_EL_SIZE * sizeof (gsize));
                size = max_size;
        }
 
 #ifdef HAVE_SGEN_GC
        /*An Ephemeron cannot be marked by sgen*/
-       if (!static_fields && class->image == mono_defaults.corlib && !strcmp ("Ephemeron", class->name)) {
+       if (!static_fields && klass->image == mono_defaults.corlib && !strcmp ("Ephemeron", klass->name)) {
                *max_set = 0;
                memset (bitmap, 0, size / 8);
                return bitmap;
        }
 #endif
 
-       for (p = class; p != NULL; p = p->parent) {
+       for (p = klass; p != NULL; p = p->parent) {
                gpointer iter = NULL;
                while ((field = mono_class_get_fields (p, &iter))) {
                        MonoType *type;
@@ -725,8 +730,8 @@ compute_class_bitmap (MonoClass *class, gsize *bitmap, int size, int offset, int
                        if (field->type->byref)
                                break;
 
-                       // Special static fields do not have a domain-level static slot
-                       if (static_fields && mono_class_field_is_special_static (field))
+                       if (static_fields && field->offset == -1)
+                               /* special static */
                                continue;
 
                        pos = field->offset / sizeof (gpointer);
@@ -743,7 +748,7 @@ compute_class_bitmap (MonoClass *class, gsize *bitmap, int size, int offset, int
 #ifdef HAVE_SGEN_GC
                                break;
 #else
-                               if (class->image != mono_defaults.corlib)
+                               if (klass->image != mono_defaults.corlib)
                                        break;
 #endif
                        case MONO_TYPE_STRING:
@@ -805,11 +810,11 @@ compute_class_bitmap (MonoClass *class, gsize *bitmap, int size, int offset, int
  * Mono internal function to compute a bitmap of reference fields in a class.
  */
 gsize*
-mono_class_compute_bitmap (MonoClass *class, gsize *bitmap, int size, int offset, int *max_set, gboolean static_fields)
+mono_class_compute_bitmap (MonoClass *klass, gsize *bitmap, int size, int offset, int *max_set, gboolean static_fields)
 {
        MONO_REQ_GC_NEUTRAL_MODE;
 
-       return compute_class_bitmap (class, bitmap, size, offset, max_set, static_fields);
+       return compute_class_bitmap (klass, bitmap, size, offset, max_set, static_fields);
 }
 
 #if 0
@@ -818,7 +823,7 @@ mono_class_compute_bitmap (MonoClass *class, gsize *bitmap, int size, int offset
  * and ignores static fields
  */
 static gsize*
-compute_class_non_ref_bitmap (MonoClass *class, gsize *bitmap, int size, int offset)
+compute_class_non_ref_bitmap (MonoClass *klass, gsize *bitmap, int size, int offset)
 {
        MonoClassField *field;
        MonoClass *p;
@@ -962,7 +967,7 @@ mono_string_alloc (int length)
 }
 
 void
-mono_class_compute_gc_descriptor (MonoClass *class)
+mono_class_compute_gc_descriptor (MonoClass *klass)
 {
        MONO_REQ_GC_NEUTRAL_MODE;
 
@@ -981,29 +986,29 @@ mono_class_compute_gc_descriptor (MonoClass *class)
                mono_loader_unlock ();
        }
 
-       if (!class->inited)
-               mono_class_init (class);
+       if (!klass->inited)
+               mono_class_init (klass);
 
-       if (class->gc_descr_inited)
+       if (klass->gc_descr_inited)
                return;
 
-       class->gc_descr_inited = TRUE;
-       class->gc_descr = MONO_GC_DESCRIPTOR_NULL;
+       klass->gc_descr_inited = TRUE;
+       klass->gc_descr = MONO_GC_DESCRIPTOR_NULL;
 
        bitmap = default_bitmap;
-       if (class == mono_defaults.string_class) {
-               class->gc_descr = mono_gc_make_descr_for_string (bitmap, 2);
-       } else if (class->rank) {
-               mono_class_compute_gc_descriptor (class->element_class);
-               if (MONO_TYPE_IS_REFERENCE (&class->element_class->byval_arg)) {
+       if (klass == mono_defaults.string_class) {
+               klass->gc_descr = mono_gc_make_descr_for_string (bitmap, 2);
+       } else if (klass->rank) {
+               mono_class_compute_gc_descriptor (klass->element_class);
+               if (MONO_TYPE_IS_REFERENCE (&klass->element_class->byval_arg)) {
                        gsize abm = 1;
-                       class->gc_descr = mono_gc_make_descr_for_array (class->byval_arg.type == MONO_TYPE_SZARRAY, &abm, 1, sizeof (gpointer));
+                       klass->gc_descr = mono_gc_make_descr_for_array (klass->byval_arg.type == MONO_TYPE_SZARRAY, &abm, 1, sizeof (gpointer));
                        /*printf ("new array descriptor: 0x%x for %s.%s\n", class->gc_descr,
                                class->name_space, class->name);*/
                } else {
                        /* remove the object header */
-                       bitmap = compute_class_bitmap (class->element_class, default_bitmap, sizeof (default_bitmap) * 8, - (int)(sizeof (MonoObject) / sizeof (gpointer)), &max_set, FALSE);
-                       class->gc_descr = mono_gc_make_descr_for_array (class->byval_arg.type == MONO_TYPE_SZARRAY, bitmap, mono_array_element_size (class) / sizeof (gpointer), mono_array_element_size (class));
+                       bitmap = compute_class_bitmap (klass->element_class, default_bitmap, sizeof (default_bitmap) * 8, - (int)(sizeof (MonoObject) / sizeof (gpointer)), &max_set, FALSE);
+                       klass->gc_descr = mono_gc_make_descr_for_array (klass->byval_arg.type == MONO_TYPE_SZARRAY, bitmap, mono_array_element_size (klass) / sizeof (gpointer), mono_array_element_size (klass));
                        /*printf ("new vt array descriptor: 0x%x for %s.%s\n", class->gc_descr,
                                class->name_space, class->name);*/
                        if (bitmap != default_bitmap)
@@ -1013,8 +1018,8 @@ mono_class_compute_gc_descriptor (MonoClass *class)
                /*static int count = 0;
                if (count++ > 58)
                        return;*/
-               bitmap = compute_class_bitmap (class, default_bitmap, sizeof (default_bitmap) * 8, 0, &max_set, FALSE);
-               class->gc_descr = mono_gc_make_descr_for_object (bitmap, max_set + 1, class->instance_size);
+               bitmap = compute_class_bitmap (klass, default_bitmap, sizeof (default_bitmap) * 8, 0, &max_set, FALSE);
+               klass->gc_descr = mono_gc_make_descr_for_object (bitmap, max_set + 1, klass->instance_size);
                /*
                if (class->gc_descr == MONO_GC_DESCRIPTOR_NULL)
                        g_print ("disabling typed alloc (%d) for %s.%s\n", max_set, class->name_space, class->name);
@@ -1112,7 +1117,7 @@ mono_method_get_imt_slot (MonoMethod *method)
 
        sig = mono_method_signature (method);
        hashes_count = sig->param_count + 4;
-       hashes_start = malloc (hashes_count * sizeof (guint32));
+       hashes_start = (guint32 *)malloc (hashes_count * sizeof (guint32));
        hashes = hashes_start;
 
        if (! MONO_CLASS_IS_INTERFACE (method->klass)) {
@@ -1174,7 +1179,7 @@ add_imt_builder_entry (MonoImtBuilderEntry **imt_builder, MonoMethod *method, gu
                return;
        }
 
-       entry = g_malloc0 (sizeof (MonoImtBuilderEntry));
+       entry = (MonoImtBuilderEntry *)g_malloc0 (sizeof (MonoImtBuilderEntry));
        entry->key = method;
        entry->value.vtable_slot = vtable_slot;
        entry->next = imt_builder [imt_slot];
@@ -1264,7 +1269,7 @@ imt_sort_slot_entries (MonoImtBuilderEntry *entries) {
        MONO_REQ_GC_NEUTRAL_MODE;
 
        int number_of_entries = entries->children + 1;
-       MonoImtBuilderEntry **sorted_array = malloc (sizeof (MonoImtBuilderEntry*) * number_of_entries);
+       MonoImtBuilderEntry **sorted_array = (MonoImtBuilderEntry **)malloc (sizeof (MonoImtBuilderEntry*) * number_of_entries);
        GPtrArray *result = g_ptr_array_new ();
        MonoImtBuilderEntry *current_entry;
        int i;
@@ -1290,7 +1295,7 @@ initialize_imt_slot (MonoVTable *vtable, MonoDomain *domain, MonoImtBuilderEntry
        MONO_REQ_GC_NEUTRAL_MODE;
 
        if (imt_builder_entry != NULL) {
-               if (imt_builder_entry->children == 0 && !fail_tramp) {
+               if (imt_builder_entry->children == 0 && !fail_tramp && !always_build_imt_thunks) {
                        /* No collision, return the vtable slot contents */
                        return vtable->vtable [imt_builder_entry->value.vtable_slot];
                } else {
@@ -1329,7 +1334,7 @@ build_imt_slots (MonoClass *klass, MonoVTable *vt, MonoDomain *domain, gpointer*
        int i;
        GSList *list_item;
        guint32 imt_collisions_bitmap = 0;
-       MonoImtBuilderEntry **imt_builder = calloc (MONO_IMT_SIZE, sizeof (MonoImtBuilderEntry*));
+       MonoImtBuilderEntry **imt_builder = (MonoImtBuilderEntry **)calloc (MONO_IMT_SIZE, sizeof (MonoImtBuilderEntry*));
        int method_count = 0;
        gboolean record_method_count_for_max_collisions = FALSE;
        gboolean has_generic_virtual = FALSE, has_variant_iface = FALSE;
@@ -1380,7 +1385,7 @@ build_imt_slots (MonoClass *klass, MonoVTable *vt, MonoDomain *domain, gpointer*
                int interface_offset = klass->vtable_size;
 
                for (list_item = extra_interfaces; list_item != NULL; list_item=list_item->next) {
-                       MonoClass* iface = list_item->data;
+                       MonoClass* iface = (MonoClass *)list_item->data;
                        int method_slot_in_interface;
                        for (method_slot_in_interface = 0; method_slot_in_interface < iface->method.count; method_slot_in_interface++) {
                                MonoMethod *method = mono_class_get_method_by_index (iface, method_slot_in_interface);
@@ -1428,7 +1433,7 @@ build_imt_slots (MonoClass *klass, MonoVTable *vt, MonoDomain *domain, gpointer*
                                 * The IMT thunk might be called with an instance of one of the 
                                 * generic virtual methods, so has to fallback to the IMT trampoline.
                                 */
-                               imt [i] = initialize_imt_slot (vt, domain, imt_builder [i], callbacks.get_imt_trampoline (i));
+                               imt [i] = initialize_imt_slot (vt, domain, imt_builder [i], callbacks.get_imt_trampoline (vt, i));
                        } else {
                                imt [i] = initialize_imt_slot (vt, domain, imt_builder [i], NULL);
                        }
@@ -1500,7 +1505,7 @@ mono_vtable_build_imt_slot (MonoVTable* vtable, int imt_slot)
        mono_loader_lock (); /*FIXME build_imt_slots requires the loader lock.*/
        mono_domain_lock (vtable->domain);
        /* we change the slot only if it wasn't changed from the generic imt trampoline already */
-       if (imt [imt_slot] == callbacks.get_imt_trampoline (imt_slot))
+       if (!callbacks.imt_entry_inited (vtable, imt_slot))
                build_imt_slots (vtable->klass, vtable, vtable->domain, imt, NULL, imt_slot);
        mono_domain_unlock (vtable->domain);
        mono_loader_unlock ();
@@ -1532,7 +1537,7 @@ init_thunk_free_lists (MonoDomain *domain)
 
        if (domain->thunk_free_lists)
                return;
-       domain->thunk_free_lists = mono_domain_alloc0 (domain, sizeof (gpointer) * NUM_FREE_LISTS);
+       domain->thunk_free_lists = (MonoThunkFreeList **)mono_domain_alloc0 (domain, sizeof (gpointer) * NUM_FREE_LISTS);
 }
 
 static int
@@ -1605,7 +1610,7 @@ mono_method_alloc_generic_virtual_thunk (MonoDomain *domain, int size)
        }
        generic_virtual_thunks_size += size;
 
-       p = mono_domain_code_reserve (domain, size);
+       p = (guint32 *)mono_domain_code_reserve (domain, size);
        *p = size;
 
        mono_domain_lock (domain);
@@ -1625,7 +1630,7 @@ invalidate_generic_virtual_thunk (MonoDomain *domain, gpointer code)
 {
        MONO_REQ_GC_NEUTRAL_MODE;
 
-       guint32 *p = code;
+       guint32 *p = (guint32 *)code;
        MonoThunkFreeList *l = (MonoThunkFreeList*)(p - 1);
        gboolean found = FALSE;
 
@@ -1695,7 +1700,7 @@ get_generic_virtual_entries (MonoDomain *domain, gpointer *vtable_slot)
        if (!domain->generic_virtual_cases)
                domain->generic_virtual_cases = g_hash_table_new (mono_aligned_addr_hash, NULL);
  
-       list = g_hash_table_lookup (domain->generic_virtual_cases, vtable_slot);
+       list = (GenericVirtualCase *)g_hash_table_lookup (domain->generic_virtual_cases, vtable_slot);
  
        entries = NULL;
        for (; list; list = list->next) {
@@ -1752,7 +1757,7 @@ mono_method_add_generic_virtual_invocation (MonoDomain *domain, MonoVTable *vtab
                domain->generic_virtual_cases = g_hash_table_new (mono_aligned_addr_hash, NULL);
 
        /* Check whether the case was already added */
-       list = g_hash_table_lookup (domain->generic_virtual_cases, vtable_slot);
+       list = (GenericVirtualCase *)g_hash_table_lookup (domain->generic_virtual_cases, vtable_slot);
        gvc = list;
        while (gvc) {
                if (gvc->method == method)
@@ -1762,11 +1767,11 @@ mono_method_add_generic_virtual_invocation (MonoDomain *domain, MonoVTable *vtab
 
        /* If not found, make a new one */
        if (!gvc) {
-               gvc = mono_domain_alloc (domain, sizeof (GenericVirtualCase));
+               gvc = (GenericVirtualCase *)mono_domain_alloc (domain, sizeof (GenericVirtualCase));
                gvc->method = method;
                gvc->code = code;
                gvc->count = 0;
-               gvc->next = g_hash_table_lookup (domain->generic_virtual_cases, vtable_slot);
+               gvc->next = (GenericVirtualCase *)g_hash_table_lookup (domain->generic_virtual_cases, vtable_slot);
 
                g_hash_table_insert (domain->generic_virtual_cases, vtable_slot, gvc);
 
@@ -1778,7 +1783,7 @@ mono_method_add_generic_virtual_invocation (MonoDomain *domain, MonoVTable *vtab
        }
 
        if (++gvc->count == THUNK_THRESHOLD) {
-               gpointer *old_thunk = *vtable_slot;
+               gpointer *old_thunk = (void **)*vtable_slot;
                gpointer vtable_trampoline = NULL;
                gpointer imt_trampoline = NULL;
 
@@ -1787,10 +1792,10 @@ mono_method_add_generic_virtual_invocation (MonoDomain *domain, MonoVTable *vtab
                        int imt_slot = MONO_IMT_SIZE + displacement;
 
                        /* Force the rebuild of the thunk at the next call */
-                       imt_trampoline = callbacks.get_imt_trampoline (imt_slot);
+                       imt_trampoline = callbacks.get_imt_trampoline (vtable, imt_slot);
                        *vtable_slot = imt_trampoline;
                } else {
-                       vtable_trampoline = callbacks.get_vtable_trampoline ? callbacks.get_vtable_trampoline ((gpointer*)vtable_slot - (gpointer*)vtable->vtable) : NULL;
+                       vtable_trampoline = callbacks.get_vtable_trampoline ? callbacks.get_vtable_trampoline (vtable, (gpointer*)vtable_slot - (gpointer*)vtable->vtable) : NULL;
 
                        entries = get_generic_virtual_entries (domain, vtable_slot);
 
@@ -1821,7 +1826,7 @@ mono_method_add_generic_virtual_invocation (MonoDomain *domain, MonoVTable *vtab
        mono_domain_unlock (domain);
 }
 
-static MonoVTable *mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean raise_on_error);
+static MonoVTable *mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *klass, gboolean raise_on_error);
 
 /**
  * mono_class_vtable:
@@ -1833,9 +1838,9 @@ static MonoVTable *mono_class_create_runtime_vtable (MonoDomain *domain, MonoCla
  * On failure, NULL is returned, and class->exception_type is set.
  */
 MonoVTable *
-mono_class_vtable (MonoDomain *domain, MonoClass *class)
+mono_class_vtable (MonoDomain *domain, MonoClass *klass)
 {
-       return mono_class_vtable_full (domain, class, FALSE);
+       return mono_class_vtable_full (domain, klass, FALSE);
 }
 
 /**
@@ -1848,25 +1853,25 @@ mono_class_vtable (MonoDomain *domain, MonoClass *class)
  * they contain the domain specific static class data.
  */
 MonoVTable *
-mono_class_vtable_full (MonoDomain *domain, MonoClass *class, gboolean raise_on_error)
+mono_class_vtable_full (MonoDomain *domain, MonoClass *klass, gboolean raise_on_error)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
        MonoClassRuntimeInfo *runtime_info;
 
-       g_assert (class);
+       g_assert (klass);
 
-       if (class->exception_type) {
+       if (klass->exception_type) {
                if (raise_on_error)
-                       mono_raise_exception (mono_class_get_exception_for_failure (class));
+                       mono_raise_exception (mono_class_get_exception_for_failure (klass));
                return NULL;
        }
 
        /* this check can be inlined in jitted code, too */
-       runtime_info = class->runtime_info;
+       runtime_info = klass->runtime_info;
        if (runtime_info && runtime_info->max_domain >= domain->domain_id && runtime_info->domain_vtables [domain->domain_id])
                return runtime_info->domain_vtables [domain->domain_id];
-       return mono_class_create_runtime_vtable (domain, class, raise_on_error);
+       return mono_class_create_runtime_vtable (domain, klass, raise_on_error);
 }
 
 /**
@@ -1878,15 +1883,15 @@ mono_class_vtable_full (MonoDomain *domain, MonoClass *class, gboolean raise_on_
  * it was already created.
  */
 MonoVTable *
-mono_class_try_get_vtable (MonoDomain *domain, MonoClass *class)
+mono_class_try_get_vtable (MonoDomain *domain, MonoClass *klass)
 {
        MONO_REQ_GC_NEUTRAL_MODE;
 
        MonoClassRuntimeInfo *runtime_info;
 
-       g_assert (class);
+       g_assert (klass);
 
-       runtime_info = class->runtime_info;
+       runtime_info = klass->runtime_info;
        if (runtime_info && runtime_info->max_domain >= domain->domain_id && runtime_info->domain_vtables [domain->domain_id])
                return runtime_info->domain_vtables [domain->domain_id];
        return NULL;
@@ -1916,7 +1921,7 @@ alloc_vtable (MonoDomain *domain, size_t vtable_size, size_t imt_table_bytes)
 }
 
 static MonoVTable *
-mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean raise_on_error)
+mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *klass, gboolean raise_on_error)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
@@ -1933,25 +1938,25 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
 
        mono_loader_lock (); /*FIXME mono_class_init acquires it*/
        mono_domain_lock (domain);
-       runtime_info = class->runtime_info;
+       runtime_info = klass->runtime_info;
        if (runtime_info && runtime_info->max_domain >= domain->domain_id && runtime_info->domain_vtables [domain->domain_id]) {
                mono_domain_unlock (domain);
                mono_loader_unlock ();
                return runtime_info->domain_vtables [domain->domain_id];
        }
-       if (!class->inited || class->exception_type) {
-               if (!mono_class_init (class) || class->exception_type) {
+       if (!klass->inited || klass->exception_type) {
+               if (!mono_class_init (klass) || klass->exception_type) {
                        mono_domain_unlock (domain);
                        mono_loader_unlock ();
                        if (raise_on_error)
-                               mono_raise_exception (mono_class_get_exception_for_failure (class));
+                               mono_raise_exception (mono_class_get_exception_for_failure (klass));
                        return NULL;
                }
        }
 
        /* Array types require that their element type be valid*/
-       if (class->byval_arg.type == MONO_TYPE_ARRAY || class->byval_arg.type == MONO_TYPE_SZARRAY) {
-               MonoClass *element_class = class->element_class;
+       if (klass->byval_arg.type == MONO_TYPE_ARRAY || klass->byval_arg.type == MONO_TYPE_SZARRAY) {
+               MonoClass *element_class = klass->element_class;
                if (!element_class->inited)
                        mono_class_init (element_class);
 
@@ -1961,44 +1966,44 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
                
                if (element_class->exception_type != MONO_EXCEPTION_NONE) {
                        /*Can happen if element_class only got bad after mono_class_setup_vtable*/
-                       if (class->exception_type == MONO_EXCEPTION_NONE)
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       if (klass->exception_type == MONO_EXCEPTION_NONE)
+                               mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
                        mono_domain_unlock (domain);
                        mono_loader_unlock ();
                        if (raise_on_error)
-                               mono_raise_exception (mono_class_get_exception_for_failure (class));
+                               mono_raise_exception (mono_class_get_exception_for_failure (klass));
                        return NULL;
                }
        }
 
        /* 
-        * For some classes, mono_class_init () already computed class->vtable_size, and 
+        * For some classes, mono_class_init () already computed klass->vtable_size, and 
         * that is all that is needed because of the vtable trampolines.
         */
-       if (!class->vtable_size)
-               mono_class_setup_vtable (class);
+       if (!klass->vtable_size)
+               mono_class_setup_vtable (klass);
 
-       if (class->generic_class && !class->vtable)
-               mono_class_check_vtable_constraints (class, NULL);
+       if (klass->generic_class && !klass->vtable)
+               mono_class_check_vtable_constraints (klass, NULL);
 
        /* Initialize klass->has_finalize */
-       mono_class_has_finalizer (class);
+       mono_class_has_finalizer (klass);
 
-       if (class->exception_type) {
+       if (klass->exception_type) {
                mono_domain_unlock (domain);
                mono_loader_unlock ();
                if (raise_on_error)
-                       mono_raise_exception (mono_class_get_exception_for_failure (class));
+                       mono_raise_exception (mono_class_get_exception_for_failure (klass));
                return NULL;
        }
 
-       vtable_slots = class->vtable_size;
+       vtable_slots = klass->vtable_size;
        /* we add an additional vtable slot to store the pointer to static field data only when needed */
-       class_size = mono_class_data_size (class);
+       class_size = mono_class_data_size (klass);
        if (class_size)
                vtable_slots++;
 
-       if (class->interface_offsets_count) {
+       if (klass->interface_offsets_count) {
                imt_table_bytes = sizeof (gpointer) * (MONO_IMT_SIZE);
                mono_stats.imt_number_of_tables++;
                mono_stats.imt_tables_size += imt_table_bytes;
@@ -2015,11 +2020,11 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
        vt = (MonoVTable*) ((char*)interface_offsets + imt_table_bytes);
        g_assert (!((gsize)vt & 7));
 
-       vt->klass = class;
-       vt->rank = class->rank;
+       vt->klass = klass;
+       vt->rank = klass->rank;
        vt->domain = domain;
 
-       mono_class_compute_gc_descriptor (class);
+       mono_class_compute_gc_descriptor (klass);
                /*
                 * We can't use typed allocation in the non-root domains, since the
                 * collector needs the GC descriptor stored in the vtable even after
@@ -2037,43 +2042,43 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
                vt->gc_descr = MONO_GC_DESCRIPTOR_NULL;
        else
 #endif
-               vt->gc_descr = class->gc_descr;
+               vt->gc_descr = klass->gc_descr;
 
-       gc_bits = mono_gc_get_vtable_bits (class);
+       gc_bits = mono_gc_get_vtable_bits (klass);
        g_assert (!(gc_bits & ~((1 << MONO_VTABLE_AVAILABLE_GC_BITS) - 1)));
 
        vt->gc_bits = gc_bits;
 
        if (class_size) {
                /* we store the static field pointer at the end of the vtable: vt->vtable [class->vtable_size] */
-               if (class->has_static_refs) {
+               if (klass->has_static_refs) {
                        MonoGCDescriptor statics_gc_descr;
                        int max_set = 0;
                        gsize default_bitmap [4] = {0};
                        gsize *bitmap;
 
-                       bitmap = compute_class_bitmap (class, default_bitmap, sizeof (default_bitmap) * 8, 0, &max_set, TRUE);
-                       /*g_print ("bitmap 0x%x for %s.%s (size: %d)\n", bitmap [0], class->name_space, class->name, class_size);*/
+                       bitmap = compute_class_bitmap (klass, default_bitmap, sizeof (default_bitmap) * 8, 0, &max_set, TRUE);
+                       /*g_print ("bitmap 0x%x for %s.%s (size: %d)\n", bitmap [0], klass->name_space, klass->name, class_size);*/
                        statics_gc_descr = mono_gc_make_descr_from_bitmap (bitmap, max_set + 1);
-                       vt->vtable [class->vtable_size] = mono_gc_alloc_fixed (class_size, statics_gc_descr, MONO_ROOT_SOURCE_STATIC, "managed static variables");
-                       mono_domain_add_class_static_data (domain, class, vt->vtable [class->vtable_size], NULL);
+                       vt->vtable [klass->vtable_size] = mono_gc_alloc_fixed (class_size, statics_gc_descr, MONO_ROOT_SOURCE_STATIC, "managed static variables");
+                       mono_domain_add_class_static_data (domain, klass, vt->vtable [klass->vtable_size], NULL);
                        if (bitmap != default_bitmap)
                                g_free (bitmap);
                } else {
-                       vt->vtable [class->vtable_size] = mono_domain_alloc0 (domain, class_size);
+                       vt->vtable [klass->vtable_size] = mono_domain_alloc0 (domain, class_size);
                }
                vt->has_static_fields = TRUE;
                mono_stats.class_static_data_size += class_size;
        }
 
        iter = NULL;
-       while ((field = mono_class_get_fields (class, &iter))) {
+       while ((field = mono_class_get_fields (klass, &iter))) {
                if (!(field->type->attrs & FIELD_ATTRIBUTE_STATIC))
                        continue;
                if (mono_field_is_deleted (field))
                        continue;
                if (!(field->type->attrs & FIELD_ATTRIBUTE_LITERAL)) {
-                       gint32 special_static = class->no_special_static_fields ? SPECIAL_STATIC_NONE : field_is_special_static (class, field);
+                       gint32 special_static = klass->no_special_static_fields ? SPECIAL_STATIC_NONE : field_is_special_static (klass, field);
                        if (special_static != SPECIAL_STATIC_NONE) {
                                guint32 size, offset;
                                gint32 align;
@@ -2130,25 +2135,25 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
                }               
        }
 
-       vt->max_interface_id = class->max_interface_id;
-       vt->interface_bitmap = class->interface_bitmap;
+       vt->max_interface_id = klass->max_interface_id;
+       vt->interface_bitmap = klass->interface_bitmap;
        
        //printf ("Initializing VT for class %s (interface_offsets_count = %d)\n",
-       //              class->name, class->interface_offsets_count);
+       //              class->name, klass->interface_offsets_count);
 
        /* Initialize vtable */
        if (callbacks.get_vtable_trampoline) {
                // This also covers the AOT case
-               for (i = 0; i < class->vtable_size; ++i) {
-                       vt->vtable [i] = callbacks.get_vtable_trampoline (i);
+               for (i = 0; i < klass->vtable_size; ++i) {
+                       vt->vtable [i] = callbacks.get_vtable_trampoline (vt, i);
                }
        } else {
-               mono_class_setup_vtable (class);
+               mono_class_setup_vtable (klass);
 
-               for (i = 0; i < class->vtable_size; ++i) {
+               for (i = 0; i < klass->vtable_size; ++i) {
                        MonoMethod *cm;
 
-                       if ((cm = class->vtable [i]))
+                       if ((cm = klass->vtable [i]))
                                vt->vtable [i] = arch_create_jit_trampoline (cm);
                }
        }
@@ -2156,7 +2161,7 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
        if (imt_table_bytes) {
                /* Now that the vtable is full, we can actually fill up the IMT */
                        for (i = 0; i < MONO_IMT_SIZE; ++i)
-                               interface_offsets [i] = callbacks.get_imt_trampoline (i);
+                               interface_offsets [i] = callbacks.get_imt_trampoline (vt, i);
        }
 
        /*
@@ -2164,32 +2169,32 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
         * re-acquire them and check if another thread has created the vtable in the meantime.
         */
        /* Special case System.MonoType to avoid infinite recursion */
-       if (class != mono_defaults.monotype_class) {
+       if (klass != mono_defaults.monotype_class) {
                /*FIXME check for OOM*/
-               vt->type = mono_type_get_object (domain, &class->byval_arg);
-               if (mono_object_get_class (vt->type) != mono_defaults.monotype_class)
+               vt->type = mono_type_get_object (domain, &klass->byval_arg);
+               if (mono_object_get_class ((MonoObject *)vt->type) != mono_defaults.monotype_class)
                        /* This is unregistered in
                           unregister_vtable_reflection_type() in
                           domain.c. */
                        MONO_GC_REGISTER_ROOT_IF_MOVING(vt->type, MONO_ROOT_SOURCE_REFLECTION, "vtable reflection type");
        }
 
-       mono_vtable_set_is_remote (vt, mono_class_is_contextbound (class));
+       mono_vtable_set_is_remote (vt, mono_class_is_contextbound (klass));
 
        /*  class_vtable_array keeps an array of created vtables
         */
        g_ptr_array_add (domain->class_vtable_array, vt);
-       /* class->runtime_info is protected by the loader lock, both when
+       /* klass->runtime_info is protected by the loader lock, both when
         * it it enlarged and when it is stored info.
         */
 
        /*
-        * Store the vtable in class->runtime_info.
-        * class->runtime_info is accessed without locking, so this do this last after the vtable has been constructed.
+        * Store the vtable in klass->runtime_info.
+        * klass->runtime_info is accessed without locking, so this do this last after the vtable has been constructed.
         */
        mono_memory_barrier ();
 
-       old_info = class->runtime_info;
+       old_info = klass->runtime_info;
        if (old_info && old_info->max_domain >= domain->domain_id) {
                /* someone already created a large enough runtime info */
                old_info->domain_vtables [domain->domain_id] = vt;
@@ -2206,7 +2211,7 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
                /* this is a bounded memory retention issue: may want to 
                 * handle it differently when we'll have a rcu-like system.
                 */
-               runtime_info = mono_image_alloc0 (class->image, MONO_SIZEOF_CLASS_RUNTIME_INFO + new_size * sizeof (gpointer));
+               runtime_info = (MonoClassRuntimeInfo *)mono_image_alloc0 (klass->image, MONO_SIZEOF_CLASS_RUNTIME_INFO + new_size * sizeof (gpointer));
                runtime_info->max_domain = new_size - 1;
                /* copy the stuff from the older info */
                if (old_info) {
@@ -2215,13 +2220,13 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
                runtime_info->domain_vtables [domain->domain_id] = vt;
                /* keep this last*/
                mono_memory_barrier ();
-               class->runtime_info = runtime_info;
+               klass->runtime_info = runtime_info;
        }
 
-       if (class == mono_defaults.monotype_class) {
+       if (klass == mono_defaults.monotype_class) {
                /*FIXME check for OOM*/
-               vt->type = mono_type_get_object (domain, &class->byval_arg);
-               if (mono_object_get_class (vt->type) != mono_defaults.monotype_class)
+               vt->type = mono_type_get_object (domain, &klass->byval_arg);
+               if (mono_object_get_class ((MonoObject *)vt->type) != mono_defaults.monotype_class)
                        /* This is unregistered in
                           unregister_vtable_reflection_type() in
                           domain.c. */
@@ -2233,8 +2238,8 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
 
        /* make sure the parent is initialized */
        /*FIXME shouldn't this fail the current type?*/
-       if (class->parent)
-               mono_class_vtable_full (domain, class->parent, raise_on_error);
+       if (klass->parent)
+               mono_class_vtable_full (domain, klass->parent, raise_on_error);
 
        return vt;
 }
@@ -2260,7 +2265,7 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
        int i, j, vtsize, max_interface_id, extra_interface_vtsize = 0;
        MonoClass *k;
        GSList *extra_interfaces = NULL;
-       MonoClass *class = remote_class->proxy_class;
+       MonoClass *klass = remote_class->proxy_class;
        gpointer *interface_offsets;
        uint8_t *bitmap;
        int bsize;
@@ -2270,7 +2275,7 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
        int bcsize;
 #endif
 
-       vt = mono_class_vtable (domain, class);
+       vt = mono_class_vtable (domain, klass);
        g_assert (vt); /*FIXME property handle failure*/
        max_interface_id = vt->max_interface_id;
        
@@ -2281,7 +2286,7 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
                int method_count;
 
                /*FIXME test for interfaces with variant generic arguments*/
-               if (MONO_CLASS_IMPLEMENTS_INTERFACE (class, iclass->interface_id))
+               if (MONO_CLASS_IMPLEMENTS_INTERFACE (klass, iclass->interface_id))
                        continue;       /* interface implemented by the class */
                if (g_slist_find (extra_interfaces, iclass))
                        continue;
@@ -2294,9 +2299,9 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
                g_assert (mono_error_ok (&error)); /*FIXME do proper error handling*/
                if (ifaces) {
                        for (i = 0; i < ifaces->len; ++i) {
-                               MonoClass *ic = g_ptr_array_index (ifaces, i);
+                               MonoClass *ic = (MonoClass *)g_ptr_array_index (ifaces, i);
                                /*FIXME test for interfaces with variant generic arguments*/
-                               if (MONO_CLASS_IMPLEMENTS_INTERFACE (class, ic->interface_id))
+                               if (MONO_CLASS_IMPLEMENTS_INTERFACE (klass, ic->interface_id))
                                        continue;       /* interface implemented by the class */
                                if (g_slist_find (extra_interfaces, ic))
                                        continue;
@@ -2314,7 +2319,7 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
        mono_stats.imt_number_of_tables++;
        mono_stats.imt_tables_size += imt_table_bytes;
 
-       vtsize = imt_table_bytes + MONO_SIZEOF_VTABLE + class->vtable_size * sizeof (gpointer);
+       vtsize = imt_table_bytes + MONO_SIZEOF_VTABLE + klass->vtable_size * sizeof (gpointer);
 
        mono_stats.class_vtable_size += vtsize + extra_interface_vtsize;
 
@@ -2322,26 +2327,26 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
        pvt = (MonoVTable*) ((char*)interface_offsets + imt_table_bytes);
        g_assert (!((gsize)pvt & 7));
 
-       memcpy (pvt, vt, MONO_SIZEOF_VTABLE + class->vtable_size * sizeof (gpointer));
+       memcpy (pvt, vt, MONO_SIZEOF_VTABLE + klass->vtable_size * sizeof (gpointer));
 
        pvt->klass = mono_defaults.transparent_proxy_class;
        /* we need to keep the GC descriptor for a transparent proxy or we confuse the precise GC */
        pvt->gc_descr = mono_defaults.transparent_proxy_class->gc_descr;
 
        /* initialize vtable */
-       mono_class_setup_vtable (class);
-       for (i = 0; i < class->vtable_size; ++i) {
+       mono_class_setup_vtable (klass);
+       for (i = 0; i < klass->vtable_size; ++i) {
                MonoMethod *cm;
                    
-               if ((cm = class->vtable [i]))
+               if ((cm = klass->vtable [i]))
                        pvt->vtable [i] = arch_create_remoting_trampoline (domain, cm, target_type);
                else
                        pvt->vtable [i] = NULL;
        }
 
-       if (class->flags & TYPE_ATTRIBUTE_ABSTRACT) {
+       if (klass->flags & TYPE_ATTRIBUTE_ABSTRACT) {
                /* create trampolines for abstract methods */
-               for (k = class; k; k = k->parent) {
+               for (k = klass; k; k = k->parent) {
                        MonoMethod* m;
                        gpointer iter = NULL;
                        while ((m = mono_class_get_methods (k, &iter)))
@@ -2353,18 +2358,18 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
        pvt->max_interface_id = max_interface_id;
        bsize = sizeof (guint8) * (max_interface_id/8 + 1 );
 #ifdef COMPRESSED_INTERFACE_BITMAP
-       bitmap = g_malloc0 (bsize);
+       bitmap = (uint8_t *)g_malloc0 (bsize);
 #else
-       bitmap = mono_domain_alloc0 (domain, bsize);
+       bitmap = (uint8_t *)mono_domain_alloc0 (domain, bsize);
 #endif
 
-       for (i = 0; i < class->interface_offsets_count; ++i) {
-               int interface_id = class->interfaces_packed [i]->interface_id;
+       for (i = 0; i < klass->interface_offsets_count; ++i) {
+               int interface_id = klass->interfaces_packed [i]->interface_id;
                bitmap [interface_id >> 3] |= (1 << (interface_id & 7));
        }
 
        if (extra_interfaces) {
-               int slot = class->vtable_size;
+               int slot = klass->vtable_size;
                MonoClass* interf;
                gpointer iter;
                MonoMethod* cm;
@@ -2372,7 +2377,7 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
 
                /* Create trampolines for the methods of the interfaces */
                for (list_item = extra_interfaces; list_item != NULL; list_item=list_item->next) {
-                       interf = list_item->data;
+                       interf = (MonoClass *)list_item->data;
                        
                        bitmap [interf->interface_id >> 3] |= (1 << (interf->interface_id & 7));
 
@@ -2386,7 +2391,7 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
        }
 
        /* Now that the vtable is full, we can actually fill up the IMT */
-       build_imt (class, pvt, domain, interface_offsets, extra_interfaces);
+       build_imt (klass, pvt, domain, interface_offsets, extra_interfaces);
        if (extra_interfaces) {
                g_slist_free (extra_interfaces);
        }
@@ -2419,8 +2424,6 @@ mono_class_field_is_special_static (MonoClassField *field)
        if (mono_field_is_deleted (field))
                return FALSE;
        if (!(field->type->attrs & FIELD_ATTRIBUTE_LITERAL)) {
-               if (field->offset == -1)
-                       return TRUE;
                if (field_is_special_static (field->parent, field) != SPECIAL_STATIC_NONE)
                        return TRUE;
        }
@@ -2487,18 +2490,18 @@ create_remote_class_key (MonoRemoteClass *remote_class, MonoClass *extra_class)
        
        if (remote_class == NULL) {
                if (extra_class->flags & TYPE_ATTRIBUTE_INTERFACE) {
-                       key = g_malloc (sizeof(gpointer) * 3);
+                       key = (void **)g_malloc (sizeof(gpointer) * 3);
                        key [0] = GINT_TO_POINTER (2);
                        key [1] = mono_defaults.marshalbyrefobject_class;
                        key [2] = extra_class;
                } else {
-                       key = g_malloc (sizeof(gpointer) * 2);
+                       key = (void **)g_malloc (sizeof(gpointer) * 2);
                        key [0] = GINT_TO_POINTER (1);
                        key [1] = extra_class;
                }
        } else {
                if (extra_class != NULL && (extra_class->flags & TYPE_ATTRIBUTE_INTERFACE)) {
-                       key = g_malloc (sizeof(gpointer) * (remote_class->interface_count + 3));
+                       key = (void **)g_malloc (sizeof(gpointer) * (remote_class->interface_count + 3));
                        key [0] = GINT_TO_POINTER (remote_class->interface_count + 2);
                        key [1] = remote_class->proxy_class;
 
@@ -2514,7 +2517,7 @@ create_remote_class_key (MonoRemoteClass *remote_class, MonoClass *extra_class)
                                key [j] = extra_class;
                } else {
                        // Replace the old class. The interface list is the same
-                       key = g_malloc (sizeof(gpointer) * (remote_class->interface_count + 2));
+                       key = (void **)g_malloc (sizeof(gpointer) * (remote_class->interface_count + 2));
                        key [0] = GINT_TO_POINTER (remote_class->interface_count + 1);
                        key [1] = extra_class != NULL ? extra_class : remote_class->proxy_class;
                        for (i = 0; i < remote_class->interface_count; i++)
@@ -2536,7 +2539,7 @@ copy_remote_class_key (MonoDomain *domain, gpointer *key)
        MONO_REQ_GC_NEUTRAL_MODE
 
        int key_size = (GPOINTER_TO_UINT (key [0]) + 1) * sizeof (gpointer);
-       gpointer *mp_key = mono_domain_alloc (domain, key_size);
+       gpointer *mp_key = (gpointer *)mono_domain_alloc (domain, key_size);
 
        memcpy (mp_key, key, key_size);
 
@@ -2565,7 +2568,7 @@ mono_remote_class (MonoDomain *domain, MonoString *class_name, MonoClass *proxy_
        key = create_remote_class_key (NULL, proxy_class);
        
        mono_domain_lock (domain);
-       rc = g_hash_table_lookup (domain->proxy_vtable_hash, key);
+       rc = (MonoRemoteClass *)g_hash_table_lookup (domain->proxy_vtable_hash, key);
 
        if (rc) {
                g_free (key);
@@ -2585,12 +2588,12 @@ mono_remote_class (MonoDomain *domain, MonoString *class_name, MonoClass *proxy_
        key = mp_key;
 
        if (proxy_class->flags & TYPE_ATTRIBUTE_INTERFACE) {
-               rc = mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS + sizeof(MonoClass*));
+               rc = (MonoRemoteClass *)mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS + sizeof(MonoClass*));
                rc->interface_count = 1;
                rc->interfaces [0] = proxy_class;
                rc->proxy_class = mono_defaults.marshalbyrefobject_class;
        } else {
-               rc = mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS);
+               rc = (MonoRemoteClass *)mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS);
                rc->interface_count = 0;
                rc->proxy_class = proxy_class;
        }
@@ -2621,7 +2624,7 @@ clone_remote_class (MonoDomain *domain, MonoRemoteClass* remote_class, MonoClass
        gpointer* key, *mp_key;
        
        key = create_remote_class_key (remote_class, extra_class);
-       rc = g_hash_table_lookup (domain->proxy_vtable_hash, key);
+       rc = (MonoRemoteClass *)g_hash_table_lookup (domain->proxy_vtable_hash, key);
        if (rc != NULL) {
                g_free (key);
                return rc;
@@ -2633,7 +2636,7 @@ clone_remote_class (MonoDomain *domain, MonoRemoteClass* remote_class, MonoClass
 
        if (extra_class->flags & TYPE_ATTRIBUTE_INTERFACE) {
                int i,j;
-               rc = mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS + sizeof(MonoClass*) * (remote_class->interface_count + 1));
+               rc = (MonoRemoteClass *)mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS + sizeof(MonoClass*) * (remote_class->interface_count + 1));
                rc->proxy_class = remote_class->proxy_class;
                rc->interface_count = remote_class->interface_count + 1;
                
@@ -2648,7 +2651,7 @@ clone_remote_class (MonoDomain *domain, MonoRemoteClass* remote_class, MonoClass
                        rc->interfaces [j] = extra_class;
        } else {
                // Replace the old class. The interface array is the same
-               rc = mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS + sizeof(MonoClass*) * remote_class->interface_count);
+               rc = (MonoRemoteClass *)mono_domain_alloc (domain, MONO_SIZEOF_REMOTE_CLASS + sizeof(MonoClass*) * remote_class->interface_count);
                rc->proxy_class = extra_class;
                rc->interface_count = remote_class->interface_count;
                if (rc->interface_count > 0)
@@ -2734,7 +2737,7 @@ mono_upgrade_remote_class (MonoDomain *domain, MonoObject *proxy_object, MonoCla
 
        if (redo_vtable) {
                tproxy->remote_class = clone_remote_class (domain, remote_class, klass);
-               proxy_object->vtable = mono_remote_class_vtable (domain, tproxy->remote_class, tproxy->rp);
+               proxy_object->vtable = (MonoVTable *)mono_remote_class_vtable (domain, tproxy->remote_class, tproxy->rp);
        }
        
        mono_domain_unlock (domain);
@@ -2955,10 +2958,10 @@ mono_method_get_unmanaged_thunk (MonoMethod *method)
 
        gpointer res;
 
-       MONO_PREPARE_RESET_BLOCKING
+       MONO_PREPARE_RESET_BLOCKING;
        method = mono_marshal_get_thunk_invoke_wrapper (method);
        res = mono_compile_method (method);
-       MONO_FINISH_RESET_BLOCKING
+       MONO_FINISH_RESET_BLOCKING;
 
        return res;
 }
@@ -3028,7 +3031,7 @@ handle_enum:
        case MONO_TYPE_CLASS:
        case MONO_TYPE_OBJECT:
        case MONO_TYPE_ARRAY:
-               mono_gc_wbarrier_generic_store (dest, deref_pointer? *(gpointer*)value: value);
+               mono_gc_wbarrier_generic_store (dest, deref_pointer ? *(MonoObject **)value : (MonoObject *)value);
                return;
        case MONO_TYPE_FNPTR:
        case MONO_TYPE_PTR: {
@@ -3042,12 +3045,12 @@ handle_enum:
                        t = mono_class_enum_basetype (type->data.klass)->type;
                        goto handle_enum;
                } else {
-                       MonoClass *class = mono_class_from_mono_type (type);
-                       int size = mono_class_value_size (class, NULL);
+                       MonoClass *klass = mono_class_from_mono_type (type);
+                       int size = mono_class_value_size (klass, NULL);
                        if (value == NULL)
                                mono_gc_bzero_atomic (dest, size);
                        else
-                               mono_gc_wbarrier_value_copy (dest, value, 1, class);
+                               mono_gc_wbarrier_value_copy (dest, value, 1, klass);
                }
                return;
        case MONO_TYPE_GENERICINST:
@@ -3150,7 +3153,7 @@ mono_field_get_addr (MonoObject *obj, MonoVTable *vt, MonoClassField *field)
                        mono_domain_lock (vt->domain);
                        addr = g_hash_table_lookup (vt->domain->special_static_fields, field);
                        mono_domain_unlock (vt->domain);
-                       src = mono_get_special_static_data (GPOINTER_TO_UINT (addr));
+                       src = (guint8 *)mono_get_special_static_data (GPOINTER_TO_UINT (addr));
                } else {
                        src = (guint8*)mono_vtable_get_static_field_data (vt) + field->offset;
                }
@@ -4301,7 +4304,7 @@ mono_runtime_invoke_array (MonoMethod *method, void *obj, MonoArray *params,
        gboolean has_byref_nullables = FALSE;
 
        if (NULL != params) {
-               pa = alloca (sizeof (gpointer) * mono_array_length (params));
+               pa = (void **)alloca (sizeof (gpointer) * mono_array_length (params));
                for (i = 0; i < mono_array_length (params); i++) {
                        MonoType *t = sig->params [i];
 
@@ -4406,7 +4409,7 @@ mono_runtime_invoke_array (MonoMethod *method, void *obj, MonoArray *params,
                        }
 #endif
                        if (method->klass->valuetype)
-                               o = mono_object_unbox (obj);
+                               o = (MonoObject *)mono_object_unbox ((MonoObject *)obj);
                        else
                                o = obj;
                } else if (method->klass->valuetype) {
@@ -4414,7 +4417,7 @@ mono_runtime_invoke_array (MonoMethod *method, void *obj, MonoArray *params,
                }
 
                mono_runtime_invoke (method, o, pa, exc);
-               return obj;
+               return (MonoObject *)obj;
        } else {
                if (mono_class_is_nullable (method->klass)) {
                        MonoObject *nullable;
@@ -4422,7 +4425,7 @@ mono_runtime_invoke_array (MonoMethod *method, void *obj, MonoArray *params,
                        /* Convert the unboxed vtype into a Nullable structure */
                        nullable = mono_object_new (mono_domain_get (), method->klass);
 
-                       mono_nullable_init (mono_object_unbox (nullable), mono_value_box (mono_domain_get (), method->klass->cast_class, obj), method->klass);
+                       mono_nullable_init ((guint8 *)mono_object_unbox (nullable), mono_value_box (mono_domain_get (), method->klass->cast_class, obj), method->klass);
                        obj = mono_object_unbox (nullable);
                }
 
@@ -4518,7 +4521,7 @@ mono_object_new_pinned (MonoDomain *domain, MonoClass *klass)
                return NULL;
 
 #ifdef HAVE_SGEN_GC
-       return mono_gc_alloc_pinned_obj (vtable, mono_class_instance_size (klass));
+       return (MonoObject *)mono_gc_alloc_pinned_obj (vtable, mono_class_instance_size (klass));
 #else
        return mono_object_new_specific (vtable);
 #endif
@@ -4570,7 +4573,7 @@ mono_object_new_alloc_specific (MonoVTable *vtable)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
-       MonoObject *o = mono_gc_alloc_obj (vtable, vtable->klass->instance_size);
+       MonoObject *o = (MonoObject *)mono_gc_alloc_obj (vtable, vtable->klass->instance_size);
 
        if (G_UNLIKELY (vtable->klass->has_finalize))
                mono_object_register_finalizer (o);
@@ -4583,7 +4586,7 @@ mono_object_new_fast (MonoVTable *vtable)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
-       return mono_gc_alloc_obj (vtable, vtable->klass->instance_size);
+       return (MonoObject *)mono_gc_alloc_obj (vtable, vtable->klass->instance_size);
 }
 
 /**
@@ -4640,12 +4643,12 @@ mono_object_new_from_token  (MonoDomain *domain, MonoImage *image, guint32 token
        MONO_REQ_GC_UNSAFE_MODE;
 
        MonoError error;
-       MonoClass *class;
+       MonoClass *klass;
 
-       class = mono_class_get_checked (image, token, &error);
+       klass = mono_class_get_checked (image, token, &error);
        g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
 
-       return mono_object_new (domain, class);
+       return mono_object_new (domain, klass);
 }
 
 
@@ -4666,7 +4669,7 @@ mono_object_clone (MonoObject *obj)
        if (obj->vtable->klass->rank)
                return (MonoObject*)mono_array_clone ((MonoArray*)obj);
 
-       o = mono_gc_alloc_obj (obj->vtable, size);
+       o = (MonoObject *)mono_gc_alloc_obj (obj->vtable, size);
 
        /* If the object doesn't contain references this will do a simple memmove. */
        mono_gc_wbarrier_object_copy (o, obj);
@@ -4748,7 +4751,7 @@ mono_array_clone_in_domain (MonoDomain *domain, MonoArray *array)
                return o;
        }
        
-       sizes = alloca (klass->rank * sizeof(intptr_t) * 2);
+       sizes = (uintptr_t *)alloca (klass->rank * sizeof(intptr_t) * 2);
        size = mono_array_element_size (klass);
        for (i = 0; i < klass->rank; ++i) {
                sizes [i] = array->bounds [i].length;
@@ -4806,19 +4809,19 @@ mono_array_clone (MonoArray *array)
 #endif
 
 gboolean
-mono_array_calc_byte_len (MonoClass *class, uintptr_t len, uintptr_t *res)
+mono_array_calc_byte_len (MonoClass *klass, uintptr_t len, uintptr_t *res)
 {
        MONO_REQ_GC_NEUTRAL_MODE;
 
        uintptr_t byte_len;
 
-       byte_len = mono_array_element_size (class);
+       byte_len = mono_array_element_size (klass);
        if (CHECK_MUL_OVERFLOW_UN (byte_len, len))
                return FALSE;
        byte_len *= len;
-       if (CHECK_ADD_OVERFLOW_UN (byte_len, sizeof (MonoArray)))
+       if (CHECK_ADD_OVERFLOW_UN (byte_len, MONO_SIZEOF_MONO_ARRAY))
                return FALSE;
-       byte_len += sizeof (MonoArray);
+       byte_len += MONO_SIZEOF_MONO_ARRAY;
 
        *res = byte_len;
 
@@ -4888,9 +4891,9 @@ mono_array_new_full (MonoDomain *domain, MonoClass *array_class, uintptr_t *leng
         */
        vtable = mono_class_vtable_full (domain, array_class, TRUE);
        if (bounds_size)
-               o = mono_gc_alloc_array (vtable, byte_len, len, bounds_size);
+               o = (MonoObject *)mono_gc_alloc_array (vtable, byte_len, len, bounds_size);
        else
-               o = mono_gc_alloc_vector (vtable, byte_len, len);
+               o = (MonoObject *)mono_gc_alloc_vector (vtable, byte_len, len);
        array = (MonoArray*)o;
 
        bounds = array->bounds;
@@ -4953,7 +4956,7 @@ mono_array_new_specific (MonoVTable *vtable, uintptr_t n)
                mono_gc_out_of_memory (MONO_ARRAY_MAX_SIZE);
                return NULL;
        }
-       o = mono_gc_alloc_vector (vtable, byte_len, n);
+       o = (MonoObject *)mono_gc_alloc_vector (vtable, byte_len, n);
        ao = (MonoArray*)o;
 
        return ao;
@@ -5042,7 +5045,7 @@ mono_string_new_size (MonoDomain *domain, gint32 len)
        vtable = mono_class_vtable (domain, mono_defaults.string_class);
        g_assert (vtable);
 
-       s = mono_gc_alloc_string (vtable, size, len);
+       s = (MonoString *)mono_gc_alloc_string (vtable, size, len);
 
        return s;
 }
@@ -5152,7 +5155,7 @@ mono_string_new_wrapper (const char *text)
  * Returns: A newly created object which contains @value.
  */
 MonoObject *
-mono_value_box (MonoDomain *domain, MonoClass *class, gpointer value)
+mono_value_box (MonoDomain *domain, MonoClass *klass, gpointer value)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
@@ -5160,21 +5163,21 @@ mono_value_box (MonoDomain *domain, MonoClass *class, gpointer value)
        int size;
        MonoVTable *vtable;
 
-       g_assert (class->valuetype);
-       if (mono_class_is_nullable (class))
-               return mono_nullable_box (value, class);
+       g_assert (klass->valuetype);
+       if (mono_class_is_nullable (klass))
+               return mono_nullable_box ((guint8 *)value, klass);
 
-       vtable = mono_class_vtable (domain, class);
+       vtable = mono_class_vtable (domain, klass);
        if (!vtable)
                return NULL;
-       size = mono_class_instance_size (class);
+       size = mono_class_instance_size (klass);
        res = mono_object_new_alloc_specific (vtable);
 
        size = size - sizeof (MonoObject);
 
 #ifdef HAVE_SGEN_GC
-       g_assert (size == mono_class_value_size (class, NULL));
-       mono_gc_wbarrier_value_copy ((char *)res + sizeof (MonoObject), value, 1, class);
+       g_assert (size == mono_class_value_size (klass, NULL));
+       mono_gc_wbarrier_value_copy ((char *)res + sizeof (MonoObject), value, 1, klass);
 #else
 #if NO_UNALIGNED_ACCESS
        mono_gc_memmove_atomic ((char *)res + sizeof (MonoObject), value, size);
@@ -5197,7 +5200,7 @@ mono_value_box (MonoDomain *domain, MonoClass *class, gpointer value)
        }
 #endif
 #endif
-       if (class->has_finalize)
+       if (klass->has_finalize)
                mono_object_register_finalizer (res);
        return res;
 }
@@ -5284,7 +5287,7 @@ mono_object_get_size (MonoObject* o)
                return sizeof (MonoString) + 2 * mono_string_length ((MonoString*) o) + 2;
        } else if (o->vtable->rank) {
                MonoArray *array = (MonoArray*)o;
-               size_t size = sizeof (MonoArray) + mono_array_element_size (klass) * mono_array_length (array);
+               size_t size = MONO_SIZEOF_MONO_ARRAY + mono_array_element_size (klass) * mono_array_length (array);
                if (array->bounds) {
                        size += 3;
                        size &= ~3;
@@ -5431,10 +5434,10 @@ str_lookup (MonoDomain *domain, gpointer user_data)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
-       LDStrInfo *info = user_data;
+       LDStrInfo *info = (LDStrInfo *)user_data;
        if (info->res || domain == info->orig_domain)
                return;
-       info->res = mono_g_hash_table_lookup (domain->ldstr_table, info->ins);
+       info->res = (MonoString *)mono_g_hash_table_lookup (domain->ldstr_table, info->ins);
 }
 
 #ifdef HAVE_SGEN_GC
@@ -5447,7 +5450,7 @@ mono_string_get_pinned (MonoString *str)
        int size;
        MonoString *news;
        size = sizeof (MonoString) + 2 * (mono_string_length (str) + 1);
-       news = mono_gc_alloc_pinned_obj (((MonoObject*)str)->vtable, size);
+       news = (MonoString *)mono_gc_alloc_pinned_obj (((MonoObject*)str)->vtable, size);
        if (news) {
                memcpy (mono_string_chars (news), mono_string_chars (str), mono_string_length (str) * 2);
                news->length = mono_string_length (str);
@@ -5471,7 +5474,7 @@ mono_string_is_interned_lookup (MonoString *str, int insert)
        domain = ((MonoObject *)str)->vtable->domain;
        ldstr_table = domain->ldstr_table;
        ldstr_lock ();
-       res = mono_g_hash_table_lookup (ldstr_table, str);
+       res = (MonoString *)mono_g_hash_table_lookup (ldstr_table, str);
        if (res) {
                ldstr_unlock ();
                return res;
@@ -5482,7 +5485,7 @@ mono_string_is_interned_lookup (MonoString *str, int insert)
                s = mono_string_get_pinned (str);
                if (s) {
                        ldstr_lock ();
-                       res = mono_g_hash_table_lookup (ldstr_table, str);
+                       res = (MonoString *)mono_g_hash_table_lookup (ldstr_table, str);
                        if (res) {
                                ldstr_unlock ();
                                return res;
@@ -5556,7 +5559,7 @@ mono_ldstr (MonoDomain *domain, MonoImage *image, guint32 idx)
        MONO_REQ_GC_UNSAFE_MODE;
 
        if (image->dynamic) {
-               MonoString *str = mono_lookup_dynamic_token (image, MONO_TOKEN_STRING | idx, NULL);
+               MonoString *str = (MonoString *)mono_lookup_dynamic_token (image, MONO_TOKEN_STRING | idx, NULL);
                return str;
        } else {
                if (!mono_verifier_verify_string_signature (image, idx, NULL))
@@ -5596,7 +5599,7 @@ mono_ldstr_metadata_sig (MonoDomain *domain, const char* sig)
        }
 #endif
        ldstr_lock ();
-       interned = mono_g_hash_table_lookup (domain->ldstr_table, o);
+       interned = (MonoString *)mono_g_hash_table_lookup (domain->ldstr_table, o);
        ldstr_unlock ();
        if (interned)
                return interned; /* o will get garbage collected */
@@ -5604,7 +5607,7 @@ mono_ldstr_metadata_sig (MonoDomain *domain, const char* sig)
        o = mono_string_get_pinned (o);
        if (o) {
                ldstr_lock ();
-               interned = mono_g_hash_table_lookup (domain->ldstr_table, o);
+               interned = (MonoString *)mono_g_hash_table_lookup (domain->ldstr_table, o);
                if (!interned) {
                        mono_g_hash_table_insert (domain->ldstr_table, o, o);
                        interned = o;
@@ -5672,7 +5675,7 @@ mono_string_to_utf8_checked (MonoString *s, MonoError *error)
        /* g_utf16_to_utf8  may not be able to complete the convertion (e.g. NULL values were found, #335488) */
        if (s->length > written) {
                /* allocate the total length and copy the part of the string that has been converted */
-               char *as2 = g_malloc0 (s->length);
+               char *as2 = (char *)g_malloc0 (s->length);
                memcpy (as2, as, written);
                g_free (as);
                as = as2;
@@ -5709,7 +5712,7 @@ mono_string_to_utf8_ignore (MonoString *s)
        /* g_utf16_to_utf8  may not be able to complete the convertion (e.g. NULL values were found, #335488) */
        if (s->length > written) {
                /* allocate the total length and copy the part of the string that has been converted */
-               char *as2 = g_malloc0 (s->length);
+               char *as2 = (char *)g_malloc0 (s->length);
                memcpy (as2, as, written);
                g_free (as);
                as = as2;
@@ -5766,7 +5769,7 @@ mono_string_to_utf16 (MonoString *s)
        if (s == NULL)
                return NULL;
 
-       as = g_malloc ((s->length * 2) + 2);
+       as = (char *)g_malloc ((s->length * 2) + 2);
        as [(s->length * 2)] = '\0';
        as [(s->length * 2) + 1] = '\0';
 
@@ -5885,9 +5888,9 @@ mono_string_to_utf8_internal (MonoMemPool *mp, MonoImage *image, MonoString *s,
 
        len = strlen (r) + 1;
        if (mp)
-               mp_s = mono_mempool_alloc (mp, len);
+               mp_s = (char *)mono_mempool_alloc (mp, len);
        else
-               mp_s = mono_image_alloc (image, len);
+               mp_s = (char *)mono_image_alloc (image, len);
 
        memcpy (mp_s, r, len);
 
@@ -6032,12 +6035,12 @@ mono_runtime_capture_context (MonoDomain *domain)
                MonoMethod *wrapper;
                if (!method)
                        return NULL;
-               wrapper = mono_marshal_get_runtime_invoke (method, FALSE, FALSE);
+               wrapper = mono_marshal_get_runtime_invoke (method, FALSE);
                domain->capture_context_runtime_invoke = mono_compile_method (wrapper);
                domain->capture_context_method = mono_compile_method (method);
        }
 
-       runtime_invoke = domain->capture_context_runtime_invoke;
+       runtime_invoke = (RuntimeInvokeFunction)domain->capture_context_runtime_invoke;
 
        return runtime_invoke (NULL, NULL, NULL, domain->capture_context_method);
 }
@@ -6065,7 +6068,7 @@ mono_async_result_new (MonoDomain *domain, HANDLE handle, MonoObject *state, gpo
                /* note: result may be null if the flow is suppressed */
        }
 
-       res->data = data;
+       res->data = (void **)data;
        MONO_OBJECT_SETREF (res, object_data, object_data);
        MONO_OBJECT_SETREF (res, async_state, state);
        if (handle != NULL)
@@ -6173,7 +6176,7 @@ mono_message_init (MonoDomain *domain,
        for (i = 0, j = 0; i < sig->param_count; i++) {
                if (sig->params [i]->byref) {
                        if (out_args) {
-                               MonoObject* arg = mono_array_get (out_args, gpointer, j);
+                               MonoObject* arg = (MonoObject *)mono_array_get (out_args, gpointer, j);
                                mono_array_setref (this_obj->args, i, arg);
                                j++;
                        }
@@ -6282,7 +6285,7 @@ mono_message_invoke (MonoObject *target, MonoMethodMessage *msg,
        for (i = 0, j = 0; i < sig->param_count; i++) {
                if (sig->params [i]->byref) {
                        MonoObject* arg;
-                       arg = mono_array_get (msg->args, gpointer, i);
+                       arg = (MonoObject *)mono_array_get (msg->args, gpointer, i);
                        mono_array_setref (*out_args, j, arg);
                        j++;
                }
@@ -6448,10 +6451,10 @@ mono_delegate_ctor (MonoObject *this_obj, MonoObject *target, gpointer addr)
 
        g_assert (addr);
 
-       ji = mono_jit_info_table_find (domain, mono_get_addr_from_ftnptr (addr));
+       ji = mono_jit_info_table_find (domain, (char *)mono_get_addr_from_ftnptr (addr));
        /* Shared code */
        if (!ji && domain != mono_get_root_domain ())
-               ji = mono_jit_info_table_find (mono_get_root_domain (), mono_get_addr_from_ftnptr (addr));
+               ji = mono_jit_info_table_find (mono_get_root_domain (), (char *)mono_get_addr_from_ftnptr (addr));
        if (ji) {
                method = mono_jit_info_get_method (ji);
                g_assert (!method->klass->generic_container);
@@ -6493,7 +6496,7 @@ mono_method_call_message_new (MonoMethod *method, gpointer *params, MonoMethod *
 
        for (i = 0; i < count; i++) {
                gpointer vpos;
-               MonoClass *class;
+               MonoClass *klass;
                MonoObject *arg;
 
                if (sig->params [i]->byref)
@@ -6501,10 +6504,10 @@ mono_method_call_message_new (MonoMethod *method, gpointer *params, MonoMethod *
                else 
                        vpos = params [i];
 
-               class = mono_class_from_mono_type (sig->params [i]);
+               klass = mono_class_from_mono_type (sig->params [i]);
 
-               if (class->valuetype)
-                       arg = mono_value_box (domain, class, vpos);
+               if (klass->valuetype)
+                       arg = mono_value_box (domain, klass, vpos);
                else 
                        arg = *((MonoObject **)vpos);
                      
@@ -6547,7 +6550,7 @@ mono_method_return_message_restore (MonoMethod *method, gpointer *params, MonoAr
                        if (j >= out_len)
                                mono_raise_exception (mono_get_exception_execution_engine ("The proxy call returned an incorrect number of output arguments"));
 
-                       arg = mono_array_get (out_args, gpointer, j);
+                       arg = (char *)mono_array_get (out_args, gpointer, j);
                        type = pt->type;
 
                        g_assert (type != MONO_TYPE_VOID);
@@ -6556,10 +6559,10 @@ mono_method_return_message_restore (MonoMethod *method, gpointer *params, MonoAr
                                mono_gc_wbarrier_generic_store (*((MonoObject ***)params [i]), (MonoObject *)arg);
                        } else {
                                if (arg) {
-                                       MonoClass *class = ((MonoObject*)arg)->vtable->klass;
-                                       size = mono_class_value_size (class, NULL);
-                                       if (class->has_references)
-                                               mono_gc_wbarrier_value_copy (*((gpointer *)params [i]), arg + sizeof (MonoObject), 1, class);
+                                       MonoClass *klass = ((MonoObject*)arg)->vtable->klass;
+                                       size = mono_class_value_size (klass, NULL);
+                                       if (klass->has_references)
+                                               mono_gc_wbarrier_value_copy (*((gpointer *)params [i]), arg + sizeof (MonoObject), 1, klass);
                                        else
                                                mono_gc_memmove_atomic (*((gpointer *)params [i]), arg + sizeof (MonoObject), size);
                                } else {
index e534d33b42239c659f083813f3a06176d3682af8..6cfbe5cbcce2fe85df1a6912fbcb024ad8401d8e 100644 (file)
@@ -72,19 +72,19 @@ mono_opcode_value (const mono_byte **ip, const mono_byte *end)
        const mono_byte *p = *ip;
 
        if (p >= end)
-               return -1;
+               return (MonoOpcodeEnum)-1;
        if (*p == 0xfe) {
                ++p;
                if (p >= end)
-                       return -1;
-               res = *p + MONO_PREFIX1_OFFSET;
+                       return (MonoOpcodeEnum)-1;
+               res = (MonoOpcodeEnum)(*p + MONO_PREFIX1_OFFSET);
        } else if (*p == MONO_CUSTOM_PREFIX) {
                ++p;
                if (p >= end)
-                       return -1;
-               res = *p + MONO_CUSTOM_PREFIX_OFFSET;
+                       return (MonoOpcodeEnum)-1;
+               res = (MonoOpcodeEnum)(*p + MONO_CUSTOM_PREFIX_OFFSET);
        } else {
-               res = *p;
+               res = (MonoOpcodeEnum)*p;
        }
        *ip = p;
        return res;
index 2615373e1223cdeb1f892e92aaae3507ad4ea57a..eacaa657785eacec163dbf70a251599b45f62454 100644 (file)
@@ -333,7 +333,7 @@ dump_methoddef (MonoImage *metadata, guint32 token)
 static void
 dump_dotnet_iinfo (MonoImage *image)
 {
-       MonoCLIImageInfo *iinfo = image->image_info;
+       MonoCLIImageInfo *iinfo = (MonoCLIImageInfo *)image->image_info;
 
        dump_dotnet_header (&iinfo->cli_header);
        dump_sections (iinfo);
@@ -385,7 +385,7 @@ dump_verify_info (MonoImage *image, int flags)
                        }
 
                        for (tmp = errors; tmp; tmp = tmp->next) {
-                               MonoVerifyInfo *info = tmp->data;
+                               MonoVerifyInfo *info = (MonoVerifyInfo *)tmp->data;
                                g_print ("%s: %s\n", desc [info->status], info->message);
                                if (info->status == MONO_VERIFY_ERROR) {
                                        count++;
@@ -478,22 +478,22 @@ verify_image_file (const char *fname)
        for (i = 1; i <= table->rows; ++i) {
                MonoError error;
                guint32 token = i | MONO_TOKEN_TYPE_DEF;
-               MonoClass *class = mono_class_get_checked (image, token, &error);
-               if (!class) {
+               MonoClass *klass = mono_class_get_checked (image, token, &error);
+               if (!klass) {
                        printf ("Could not load class with token %x due to %s\n", token, mono_error_get_message (&error));
                        mono_error_cleanup (&error);
                        continue;
                }
-               mono_class_init (class);
-               if (class->exception_type != MONO_EXCEPTION_NONE || mono_loader_get_last_error ()) {
-                       printf ("Error verifying class(0x%08x) %s.%s a type load error happened\n", token, class->name_space, class->name);
+               mono_class_init (klass);
+               if (klass->exception_type != MONO_EXCEPTION_NONE || mono_loader_get_last_error ()) {
+                       printf ("Error verifying class(0x%08x) %s.%s a type load error happened\n", token, klass->name_space, klass->name);
                        mono_loader_clear_error ();
                        ++count;
                }
 
-               mono_class_setup_vtable (class);
-               if (class->exception_type != MONO_EXCEPTION_NONE || mono_loader_get_last_error ()) {
-                       printf ("Error verifying class(0x%08x) %s.%s a type load error happened\n", token, class->name_space, class->name);
+               mono_class_setup_vtable (klass);
+               if (klass->exception_type != MONO_EXCEPTION_NONE || mono_loader_get_last_error ()) {
+                       printf ("Error verifying class(0x%08x) %s.%s a type load error happened\n", token, klass->name_space, klass->name);
                        mono_loader_clear_error ();
                        ++count;
                }
@@ -504,7 +504,7 @@ verify_image_file (const char *fname)
 
 invalid_image:
        for (tmp = errors; tmp; tmp = tmp->next) {
-               MonoVerifyInfo *info = tmp->data;
+               MonoVerifyInfo *info = (MonoVerifyInfo *)tmp->data;
                g_print ("%s: %s\n", desc [info->status], info->message);
                if (info->status == MONO_VERIFY_ERROR)
                        count++;
@@ -610,7 +610,7 @@ pedump_assembly_search_hook (MonoAssemblyName *aname, gpointer user_data)
         GList *tmp;
 
        for (tmp = loaded_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                if (mono_assembly_names_equal (aname, &ass->aname))
                       return ass;
        }
index b58e72def9fbc3476d29e1e5799753445c44cf90..24d33ee89c86a283f21b4270967fd9083ec50af7 100644 (file)
@@ -380,10 +380,10 @@ static MonoObject* get_process_module (MonoAssembly *assembly, MonoClass *proc_c
        static MonoClass *filever_class = NULL;
        MonoObject *item, *filever;
        MonoDomain *domain = mono_domain_get ();
-       char filename [80] = "[In Memory] ";
+       char *filename;
        const char *modulename = assembly->aname.name;
 
-       strncat (filename, modulename, 80);
+       filename = g_strdup_printf ("[In Memory] %s", modulename);
 
        /* Build a System.Diagnostics.ProcessModule with the data.
         */
@@ -405,6 +405,8 @@ static MonoObject* get_process_module (MonoAssembly *assembly, MonoClass *proc_c
        process_set_field_string_char (item, "filename", filename);
        process_set_field_string_char (item, "modulename", modulename);
 
+       g_free (filename);
+
        return item;
 }
 
@@ -462,7 +464,7 @@ static GPtrArray* get_domain_assemblies (MonoDomain *domain)
        assemblies = g_ptr_array_new ();
        mono_domain_assemblies_lock (domain);
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               MonoAssembly *ass = tmp->data;
+               MonoAssembly *ass = (MonoAssembly *)tmp->data;
                if (ass->image->fileio_used)
                        continue;
                g_ptr_array_add (assemblies, ass);
@@ -520,7 +522,7 @@ MonoArray *ves_icall_System_Diagnostics_Process_GetModules_internal (MonoObject
 
        if (assemblies) {
                for (i = 0; i < assembly_count; i++) {
-                       MonoAssembly *ass = g_ptr_array_index (assemblies, i);
+                       MonoAssembly *ass = (MonoAssembly *)g_ptr_array_index (assemblies, i);
                        MonoObject *module = get_process_module (ass, proc_class);
                        mono_array_setref (temp_arr, num_added++, module);
                }
@@ -621,9 +623,9 @@ MonoBoolean ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal (MonoPr
        gboolean ret;
 
        shellex.cbSize = sizeof(SHELLEXECUTEINFO);
-       shellex.fMask = SEE_MASK_FLAG_DDEWAIT | SEE_MASK_NOCLOSEPROCESS | SEE_MASK_UNICODE;
-       shellex.nShow = proc_start_info->window_style;
-       shellex.nShow = (shellex.nShow == 0) ? 1 : (shellex.nShow == 1 ? 0 : shellex.nShow);
+       shellex.fMask = (gulong)(SEE_MASK_FLAG_DDEWAIT | SEE_MASK_NOCLOSEPROCESS | SEE_MASK_UNICODE);
+       shellex.nShow = (gulong)proc_start_info->window_style;
+       shellex.nShow = (gulong)((shellex.nShow == 0) ? 1 : (shellex.nShow == 1 ? 0 : shellex.nShow));
        
        
        if (proc_start_info->filename != NULL) {
@@ -647,7 +649,7 @@ MonoBoolean ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal (MonoPr
        if (proc_start_info->error_dialog) {    
                shellex.hwnd = proc_start_info->error_dialog_parent_handle;
        } else {
-               shellex.fMask |= SEE_MASK_FLAG_NO_UI;
+               shellex.fMask = (gulong)(shellex.fMask | SEE_MASK_FLAG_NO_UI);
        }
 
        ret = ShellExecuteEx (&shellex);
@@ -769,7 +771,12 @@ MonoBoolean ves_icall_System_Diagnostics_Process_CreateProcess_internal (MonoPro
 
        if (process_info->username) {
                logon_flags = process_info->load_user_profile ? LOGON_WITH_PROFILE : 0;
-               ret=CreateProcessWithLogonW (mono_string_chars (process_info->username), process_info->domain ? mono_string_chars (process_info->domain) : NULL, process_info->password, logon_flags, shell_path, cmd? mono_string_chars (cmd): NULL, creation_flags, env_vars, dir, &startinfo, &procinfo);
+               ret = CreateProcessWithLogonW (
+                       mono_string_chars (process_info->username),
+                       process_info->domain ? mono_string_chars (process_info->domain) : NULL,
+                       (const gunichar2 *)process_info->password, logon_flags, shell_path,
+                       cmd ? mono_string_chars (cmd) : NULL,
+                       creation_flags, env_vars, dir, &startinfo, &procinfo);
        } else {
                ret=CreateProcess (shell_path, cmd? mono_string_chars (cmd): NULL, NULL, NULL, TRUE, creation_flags, env_vars, dir, &startinfo, &procinfo);
        }
@@ -1061,7 +1068,7 @@ ves_icall_System_Diagnostics_Process_GetProcessData (int pid, gint32 data_type,
        MonoProcessError perror;
        guint64 res;
 
-       res = mono_process_get_data_with_error (GINT_TO_POINTER (pid), data_type, &perror);
+       res = mono_process_get_data_with_error (GINT_TO_POINTER (pid), (MonoProcessData)data_type, &perror);
        if (error)
                *error = perror;
        return res;
index a9d0e68f6dee9c9a678c548c321b55d3304898ca..af9ac55ec7ce7a4c7ca46cb63544bb12818632d4 100644 (file)
@@ -19,7 +19,7 @@
 #include "mono/metadata/metadata-internals.h"
 #include "mono/metadata/class-internals.h"
 #include "mono/metadata/domain-internals.h"
-#include "mono/metadata/gc-internal.h"
+#include "mono/metadata/gc-internals.h"
 #include "mono/metadata/mono-config-dirs.h"
 #include "mono/io-layer/io-layer.h"
 #include "mono/utils/mono-dl.h"
@@ -109,8 +109,8 @@ struct _ProfilerDesc {
 
 static ProfilerDesc *prof_list = NULL;
 
-#define mono_profiler_coverage_lock() mono_mutex_lock (&profiler_coverage_mutex)
-#define mono_profiler_coverage_unlock() mono_mutex_unlock (&profiler_coverage_mutex)
+#define mono_profiler_coverage_lock() mono_os_mutex_lock (&profiler_coverage_mutex)
+#define mono_profiler_coverage_unlock() mono_os_mutex_unlock (&profiler_coverage_mutex)
 static mono_mutex_t profiler_coverage_mutex;
 
 /* this is directly accessible to other mono libs.
@@ -134,7 +134,7 @@ mono_profiler_install (MonoProfiler *prof, MonoProfileFunc callback)
 {
        ProfilerDesc *desc = g_new0 (ProfilerDesc, 1);
        if (!prof_list)
-               mono_mutex_init_recursive (&profiler_coverage_mutex);
+               mono_os_mutex_init_recursive (&profiler_coverage_mutex);
        desc->profiler = prof;
        desc->shutdown_callback = callback;
        desc->next = prof_list;
@@ -159,11 +159,11 @@ void
 mono_profiler_set_events (MonoProfileFlags events)
 {
        ProfilerDesc *prof;
-       MonoProfileFlags value = 0;
+       MonoProfileFlags value = (MonoProfileFlags)0;
        if (prof_list)
                prof_list->events = events;
        for (prof = prof_list; prof; prof = prof->next)
-               value |= prof->events;
+               value = (MonoProfileFlags)(value | prof->events);
        mono_profiler_events = value;
 }
 
@@ -813,7 +813,7 @@ mono_profiler_shutdown (void)
                        prof->shutdown_callback (prof->profiler);
        }
 
-       mono_profiler_set_events (0);
+       mono_profiler_set_events ((MonoProfileFlags)0);
 }
 
 void
@@ -1018,7 +1018,7 @@ mono_profiler_coverage_alloc (MonoMethod *method, int entries)
        if (!coverage_hash)
                coverage_hash = g_hash_table_new (NULL, NULL);
 
-       res = g_malloc0 (sizeof (MonoProfileCoverageInfo) + sizeof (void*) * 2 * entries);
+       res = (MonoProfileCoverageInfo *)g_malloc0 (sizeof (MonoProfileCoverageInfo) + sizeof (void*) * 2 * entries);
 
        res->entries = entries;
 
@@ -1040,7 +1040,7 @@ mono_profiler_coverage_free (MonoMethod *method)
                return;
        }
 
-       info = g_hash_table_lookup (coverage_hash, method);
+       info = (MonoProfileCoverageInfo *)g_hash_table_lookup (coverage_hash, method);
        if (info) {
                g_free (info);
                g_hash_table_remove (coverage_hash, method);
@@ -1073,7 +1073,7 @@ mono_profiler_coverage_get (MonoProfiler *prof, MonoMethod *method, MonoProfileC
 
        mono_profiler_coverage_lock ();
        if (coverage_hash)
-               info = g_hash_table_lookup (coverage_hash, method);
+               info = (MonoProfileCoverageInfo *)g_hash_table_lookup (coverage_hash, method);
        mono_profiler_coverage_unlock ();
 
        if (!info)
@@ -1240,7 +1240,7 @@ mono_profiler_load (const char *desc)
                gboolean res = FALSE;
 
                if (col != NULL) {
-                       mname = g_memdup (desc, col - desc + 1);
+                       mname = (char *)g_memdup (desc, col - desc + 1);
                        mname [col - desc] = 0;
                } else {
                        mname = g_strdup (desc);
index 207241f49bc66cc64a5718307281dfb0f081f53f..54eee9f0c73230f7b600c64c6f46a7238abfad7d 100644 (file)
@@ -1,8 +1,8 @@
 /* 
  * Copyright 2014 Xamarin Inc
  */
-#ifndef __MONO_METADATA_REFLECTION_INTERBALS_H__
-#define __MONO_METADATA_REFLECTION_INTERBALS_H__
+#ifndef __MONO_METADATA_REFLECTION_INTERNALS_H__
+#define __MONO_METADATA_REFLECTION_INTERNALS_H__
 
 #include <mono/metadata/reflection.h>
 #include <mono/utils/mono-compiler.h>
 MonoObject*
 mono_custom_attrs_get_attr_checked (MonoCustomAttrInfo *ainfo, MonoClass *attr_klass, MonoError *error);
 
-#endif
+char*
+mono_identifier_unescape_type_name_chars (char* identifier);
+
+MonoImage *
+mono_find_dynamic_image_owner (void *ptr);
+
+#endif /* __MONO_METADATA_REFLECTION_INTERNALS_H__ */
index 73dffddad6b08c62d04f7bfd08c49289a90124a3..c547c696eea1a0ebe7ee4e819ba002297a74f61f 100644 (file)
@@ -17,7 +17,7 @@
 #include "mono/metadata/metadata-internals.h"
 #include <mono/metadata/profiler-private.h>
 #include "mono/metadata/class-internals.h"
-#include "mono/metadata/gc-internal.h"
+#include "mono/metadata/gc-internals.h"
 #include "mono/metadata/tokentype.h"
 #include "mono/metadata/domain-internals.h"
 #include "mono/metadata/opcodes.h"
@@ -35,7 +35,7 @@
 #include "image.h"
 #include "cil-coff.h"
 #include "mono-endian.h"
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/mempool-internals.h>
 #include <mono/metadata/security-core-clr.h>
 #include <mono/metadata/debug-helpers.h>
@@ -171,21 +171,21 @@ static void get_default_param_value_blobs (MonoMethod *method, char **blobs, gui
 static MonoReflectionType *mono_reflection_type_get_underlying_system_type (MonoReflectionType* t);
 static MonoType* mono_reflection_get_type_with_rootimage (MonoImage *rootimage, MonoImage* image, MonoTypeNameParse *info, gboolean ignorecase, gboolean *type_resolve);
 static MonoReflectionType* mono_reflection_type_resolve_user_types (MonoReflectionType *type);
-static gboolean is_sre_array (MonoClass *class);
-static gboolean is_sre_byref (MonoClass *class);
-static gboolean is_sre_pointer (MonoClass *class);
-static gboolean is_sre_type_builder (MonoClass *class);
-static gboolean is_sre_method_builder (MonoClass *class);
-static gboolean is_sre_ctor_builder (MonoClass *class);
-static gboolean is_sre_field_builder (MonoClass *class);
-static gboolean is_sr_mono_method (MonoClass *class);
-static gboolean is_sr_mono_cmethod (MonoClass *class);
-static gboolean is_sr_mono_generic_method (MonoClass *class);
-static gboolean is_sr_mono_generic_cmethod (MonoClass *class);
-static gboolean is_sr_mono_field (MonoClass *class);
-static gboolean is_sr_mono_property (MonoClass *class);
-static gboolean is_sre_method_on_tb_inst (MonoClass *class);
-static gboolean is_sre_ctor_on_tb_inst (MonoClass *class);
+static gboolean is_sre_array (MonoClass *klass);
+static gboolean is_sre_byref (MonoClass *klass);
+static gboolean is_sre_pointer (MonoClass *klass);
+static gboolean is_sre_type_builder (MonoClass *klass);
+static gboolean is_sre_method_builder (MonoClass *klass);
+static gboolean is_sre_ctor_builder (MonoClass *klass);
+static gboolean is_sre_field_builder (MonoClass *klass);
+static gboolean is_sr_mono_method (MonoClass *klass);
+static gboolean is_sr_mono_cmethod (MonoClass *klass);
+static gboolean is_sr_mono_generic_method (MonoClass *klass);
+static gboolean is_sr_mono_generic_cmethod (MonoClass *klass);
+static gboolean is_sr_mono_field (MonoClass *klass);
+static gboolean is_sr_mono_property (MonoClass *klass);
+static gboolean is_sre_method_on_tb_inst (MonoClass *klass);
+static gboolean is_sre_ctor_on_tb_inst (MonoClass *klass);
 
 static guint32 mono_image_get_methodspec_token (MonoDynamicImage *assembly, MonoMethod *method);
 static guint32 mono_image_get_inflated_method_token (MonoDynamicImage *assembly, MonoMethod *m);
@@ -194,7 +194,7 @@ static MonoMethod * inflate_method (MonoReflectionType *type, MonoObject *obj);
 static guint32 create_typespec (MonoDynamicImage *assembly, MonoType *type);
 static void init_type_builder_generics (MonoObject *type);
 
-#define RESOLVE_TYPE(type) do { type = (void*)mono_reflection_type_resolve_user_types ((MonoReflectionType*)type); } while (0)
+#define RESOLVE_TYPE(type) do { type = (MonoObject *)mono_reflection_type_resolve_user_types ((MonoReflectionType*)type); } while (0)
 #define RESOLVE_ARRAY_TYPE_ELEMENT(array, index) do {  \
        MonoReflectionType *__type = mono_array_get (array, MonoReflectionType*, index);        \
        __type = mono_reflection_type_resolve_user_types (__type);      \
@@ -215,18 +215,61 @@ static void init_type_builder_generics (MonoObject *type);
 #define ADDP_IS_GREATER_OR_OVF(a, b, c) (((a) + (b) > (c)) || CHECK_ADDP_OVERFLOW_UN (a, b))
 #define ADD_IS_GREATER_OR_OVF(a, b, c) (((a) + (b) > (c)) || CHECK_ADD4_OVERFLOW_UN (a, b))
 
+// The dynamic images list is only needed to support the mempool reference tracking feature in checked-build.
+static GPtrArray *dynamic_images;
+static mono_mutex_t dynamic_images_mutex;
+
+static inline void
+dynamic_images_lock (void)
+{
+       mono_os_mutex_lock (&dynamic_images_mutex);
+}
+
+static inline void
+dynamic_images_unlock (void)
+{
+       mono_os_mutex_unlock (&dynamic_images_mutex);
+}
+
+/**
+ * mono_find_dynamic_image_owner:
+ *
+ * Find the dynamic image, if any, which a given pointer is located in the memory of.
+ */
+MonoImage *
+mono_find_dynamic_image_owner (void *ptr)
+{
+       MonoImage *owner = NULL;
+       int i;
+
+       dynamic_images_lock ();
+
+       if (dynamic_images)
+       {
+               for (i = 0; !owner && i < dynamic_images->len; ++i) {
+                       MonoImage *image = (MonoImage *)g_ptr_array_index (dynamic_images, i);
+                       if (mono_mempool_contains_addr (image->mempool, ptr))
+                               owner = image;
+               }
+       }
+
+       dynamic_images_unlock ();
+
+       return owner;
+}
 
 void
 mono_reflection_init (void)
 {
+       mono_os_mutex_init (&dynamic_images_mutex);
 }
 
 static inline void
 dynamic_image_lock (MonoDynamicImage *image)
 {
-       MONO_TRY_BLOCKING;
+       MONO_PREPARE_BLOCKING;
        mono_image_lock ((MonoImage*)image);
-       MONO_FINISH_TRY_BLOCKING;
+       MONO_FINISH_BLOCKING;
 }
 
 static inline void
@@ -253,7 +296,7 @@ lookup_dyn_token (MonoDynamicImage *assembly, guint32 token)
        MonoObject *obj;
 
        dynamic_image_lock (assembly);
-       obj = mono_g_hash_table_lookup (assembly->tokens, GUINT_TO_POINTER (token));
+       obj = (MonoObject *)mono_g_hash_table_lookup (assembly->tokens, GUINT_TO_POINTER (token));
        dynamic_image_unlock (assembly);
 
        return obj;
@@ -264,7 +307,7 @@ sigbuffer_init (SigBuffer *buf, int size)
 {
        MONO_REQ_GC_NEUTRAL_MODE;
 
-       buf->buf = g_malloc (size);
+       buf->buf = (char *)g_malloc (size);
        buf->p = buf->buf;
        buf->end = buf->buf + size;
 }
@@ -276,7 +319,7 @@ sigbuffer_make_room (SigBuffer *buf, int size)
 
        if (buf->end - buf->p < size) {
                int new_size = buf->end - buf->buf + size + 32;
-               char *p = g_realloc (buf->buf, new_size);
+               char *p = (char *)g_realloc (buf->buf, new_size);
                size = buf->p - buf->buf;
                buf->buf = p;
                buf->p = p + size;
@@ -392,7 +435,7 @@ alloc_table (MonoDynamicTable *table, guint nrows)
                                table->alloc_rows *= 2;
                }
 
-               table->values = g_renew (guint32, table->values, (table->alloc_rows) * table->columns);
+               table->values = (guint32 *)g_renew (guint32, table->values, (table->alloc_rows) * table->columns);
        }
 }
 
@@ -411,7 +454,7 @@ make_room_in_stream (MonoDynamicStream *stream, int size)
                        stream->alloc_size *= 2;
        }
        
-       stream->data = g_realloc (stream->data, stream->alloc_size);
+       stream->data = (char *)g_realloc (stream->data, stream->alloc_size);
 }
 
 static guint32
@@ -462,7 +505,7 @@ string_heap_init (MonoDynamicStream *sh)
 
        sh->index = 0;
        sh->alloc_size = 4096;
-       sh->data = g_malloc (4096);
+       sh->data = (char *)g_malloc (4096);
        sh->hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
        string_heap_insert (sh, "");
 }
@@ -556,7 +599,7 @@ add_to_blob_cached (MonoDynamicImage *assembly, char *b1, int s1, char *b2, int
        char *copy;
        gpointer oldkey, oldval;
 
-       copy = g_malloc (s1+s2);
+       copy = (char *)g_malloc (s1+s2);
        memcpy (copy, b1, s1);
        memcpy (copy + s1, b2, s2);
        if (g_hash_table_lookup_extended (assembly->blob_cache, copy, &oldkey, &oldval)) {
@@ -1287,12 +1330,12 @@ lookup_custom_attr (MonoImage *image, gpointer member)
 
        MonoCustomAttrInfo* res;
 
-       res = mono_image_property_lookup (image, member, MONO_PROP_DYNAMIC_CATTR);
+       res = (MonoCustomAttrInfo *)mono_image_property_lookup (image, member, MONO_PROP_DYNAMIC_CATTR);
 
        if (!res)
                return NULL;
 
-       res = g_memdup (res, MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * res->num_attrs);
+       res = (MonoCustomAttrInfo *)g_memdup (res, MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * res->num_attrs);
        res->cached = 0;
        return res;
 }
@@ -1338,7 +1381,7 @@ mono_custom_attrs_from_builders (MonoImage *alloc_img, MonoImage *image, MonoArr
        }
        count -= not_visible;
 
-       ainfo = image_g_malloc0 (alloc_img, MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * count);
+       ainfo = (MonoCustomAttrInfo *)image_g_malloc0 (alloc_img, MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * count);
 
        ainfo->image = image;
        ainfo->num_attrs = count;
@@ -1347,7 +1390,7 @@ mono_custom_attrs_from_builders (MonoImage *alloc_img, MonoImage *image, MonoArr
        for (i = 0; i < count; ++i) {
                cattr = (MonoReflectionCustomAttr*)mono_array_get (cattrs, gpointer, i);
                if (custom_attr_visible (image, cattr)) {
-                       unsigned char *saved = mono_image_alloc (image, mono_array_length (cattr->data));
+                       unsigned char *saved = (unsigned char *)mono_image_alloc (image, mono_array_length (cattr->data));
                        memcpy (saved, mono_array_addr (cattr->data, char, 0), mono_array_length (cattr->data));
                        ainfo->attrs [index].ctor = cattr->ctor->method;
                        ainfo->attrs [index].data = saved;
@@ -1376,7 +1419,7 @@ mono_save_custom_attrs (MonoImage *image, void *obj, MonoArray *cattrs)
        ainfo = mono_custom_attrs_from_builders (image, image, cattrs);
 
        mono_loader_lock ();
-       tmp = mono_image_property_lookup (image, obj, MONO_PROP_DYNAMIC_CATTR);
+       tmp = (MonoCustomAttrInfo *)mono_image_property_lookup (image, obj, MONO_PROP_DYNAMIC_CATTR);
        if (tmp)
                mono_custom_attrs_free (tmp);
        mono_image_property_insert (image, obj, MONO_PROP_DYNAMIC_CATTR, ainfo);
@@ -1780,7 +1823,7 @@ mono_image_get_method_info (MonoReflectionMethodBuilder *mb, MonoDynamicImage *a
                        guint32 owner = MONO_TYPEORMETHOD_METHOD | (mb->table_idx << MONO_TYPEORMETHOD_BITS);
 
                        mono_image_get_generic_param_info (
-                               mono_array_get (mb->generic_params, gpointer, i), owner, assembly);
+                               (MonoReflectionGenericParam *)mono_array_get (mb->generic_params, gpointer, i), owner, assembly);
                }
        }
 
@@ -1852,10 +1895,10 @@ fieldref_encode_signature (MonoDynamicImage *assembly, MonoImage *field_image, M
                for (i = 0; i < type->num_mods; ++i) {
                        if (field_image) {
                                MonoError error;
-                               MonoClass *class = mono_class_get_checked (field_image, type->modifiers [i].token, &error);
+                               MonoClass *klass = mono_class_get_checked (field_image, type->modifiers [i].token, &error);
                                g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
 
-                               token = mono_image_typedef_or_ref (assembly, &class->byval_arg);
+                               token = mono_image_typedef_or_ref (assembly, &klass->byval_arg);
                        } else {
                                token = type->modifiers [i].token;
                        }
@@ -1884,12 +1927,12 @@ field_encode_signature (MonoDynamicImage *assembly, MonoReflectionFieldBuilder *
        guint32 idx;
        guint32 typespec = 0;
        MonoType *type;
-       MonoClass *class;
+       MonoClass *klass;
 
        init_type_builder_generics (fb->type);
 
        type = mono_reflection_type_get_handle ((MonoReflectionType*)fb->type);
-       class = mono_class_from_mono_type (type);
+       klass = mono_class_from_mono_type (type);
 
        sigbuffer_init (&buf, 32);
        
@@ -1897,12 +1940,12 @@ field_encode_signature (MonoDynamicImage *assembly, MonoReflectionFieldBuilder *
        encode_custom_modifiers (assembly, fb->modreq, fb->modopt, &buf);
        /* encode custom attributes before the type */
 
-       if (class->generic_container)
+       if (klass->generic_container)
                typespec = create_typespec (assembly, type);
 
        if (typespec) {
                MonoGenericClass *gclass;
-               gclass = mono_metadata_lookup_generic_class (class, class->generic_container->context.class_inst, TRUE);
+               gclass = mono_metadata_lookup_generic_class (klass, klass->generic_container->context.class_inst, TRUE);
                encode_generic_class (assembly, gclass, &buf);
        } else {
                encode_type (assembly, type, &buf);
@@ -1913,7 +1956,7 @@ field_encode_signature (MonoDynamicImage *assembly, MonoReflectionFieldBuilder *
 }
 
 static guint32
-encode_constant (MonoDynamicImage *assembly, MonoObject *val, guint32 *ret_type)
+encode_constant (MonoDynamicImage *assembly, MonoObject *val, MonoTypeEnum *ret_type)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
@@ -1923,7 +1966,7 @@ encode_constant (MonoDynamicImage *assembly, MonoObject *val, guint32 *ret_type)
        char* buf;
        guint32 idx = 0, len = 0, dummy = 0;
 
-       buf = g_malloc (64);
+       buf = (char *)g_malloc (64);
        if (!val) {
                *ret_type = MONO_TYPE_CLASS;
                len = 4;
@@ -2118,7 +2161,7 @@ mono_image_get_field_info (MonoReflectionFieldBuilder *fb, MonoDynamicImage *ass
                values [MONO_FIELD_LAYOUT_OFFSET] = fb->offset;
        }
        if (fb->attrs & FIELD_ATTRIBUTE_LITERAL) {
-               guint32 field_type = 0;
+               MonoTypeEnum field_type = (MonoTypeEnum)0;
                table = &assembly->tables [MONO_TABLE_CONSTANT];
                table->rows ++;
                alloc_table (table, table->rows);
@@ -2247,7 +2290,7 @@ mono_image_get_property_info (MonoReflectionPropertyBuilder *pb, MonoDynamicImag
                values [MONO_METHOD_SEMA_ASSOCIATION] = (pb->table_idx << MONO_HAS_SEMANTICS_BITS) | MONO_HAS_SEMANTICS_PROPERTY;
        }
        if (pb->attrs & PROPERTY_ATTRIBUTE_HAS_DEFAULT) {
-               guint32 field_type = 0;
+               MonoTypeEnum field_type = (MonoTypeEnum)0;
                table = &assembly->tables [MONO_TABLE_CONSTANT];
                table->rows ++;
                alloc_table (table, table->rows);
@@ -2345,7 +2388,7 @@ encode_constraints (MonoReflectionGenericParam *gparam, guint32 owner, MonoDynam
        }
 
        for (i = 0; i < num_constraints; i++) {
-               MonoReflectionType *constraint = mono_array_get (
+               MonoReflectionType *constraint = (MonoReflectionType *)mono_array_get (
                        gparam->iface_constraints, gpointer, i);
 
                table_idx = table->next_idx ++;
@@ -2557,9 +2600,9 @@ mono_image_typedef_or_ref_full (MonoDynamicImage *assembly, MonoType *type, gboo
         */
        if ((klass->image == &assembly->image) && (type->type != MONO_TYPE_VAR) && 
                        (type->type != MONO_TYPE_MVAR)) {
-               MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (klass);
+               MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (klass);
                token = MONO_TYPEDEFORREF_TYPEDEF | (tb->table_idx << MONO_TYPEDEFORREF_BITS);
-               register_dyn_token (assembly, token, mono_class_get_ref_info (klass));
+               register_dyn_token (assembly, token, (MonoObject *)mono_class_get_ref_info (klass));
                return token;
        }
 
@@ -2582,7 +2625,7 @@ mono_image_typedef_or_ref_full (MonoDynamicImage *assembly, MonoType *type, gboo
        token = MONO_TYPEDEFORREF_TYPEREF | (table->next_idx << MONO_TYPEDEFORREF_BITS); /* typeref */
        g_hash_table_insert (assembly->typeref, type, GUINT_TO_POINTER(token));
        table->next_idx ++;
-       register_dyn_token (assembly, token, mono_class_get_ref_info (klass));
+       register_dyn_token (assembly, token, (MonoObject *)mono_class_get_ref_info (klass));
        return token;
 }
 
@@ -2895,7 +2938,7 @@ is_field_on_inst (MonoClassField *field)
 static MonoType*
 get_field_on_inst_generic_type (MonoClassField *field)
 {
-       MonoClass *class, *gtd;
+       MonoClass *klass, *gtd;
        MonoDynamicGenericClass *dgclass;
        int field_index;
 
@@ -2908,11 +2951,11 @@ get_field_on_inst_generic_type (MonoClassField *field)
                return dgclass->field_generic_types [field_index];              
        }
 
-       class = field->parent;
-       gtd = class->generic_class->container_class;
+       klass = field->parent;
+       gtd = klass->generic_class->container_class;
 
-       if (field >= class->fields && field - class->fields < class->field.count) {
-               field_index = field - class->fields;
+       if (field >= klass->fields && field - klass->fields < klass->field.count) {
+               field_index = field - klass->fields;
                return gtd->fields [field_index].type;
        }
 
@@ -3069,7 +3112,7 @@ mono_reflection_method_on_tb_inst_get_handle (MonoReflectionMethodOnTypeBuilderI
 
        type_argv = g_new0 (MonoType *, count);
        for (i = 0; i < count; i++) {
-               MonoReflectionType *garg = mono_array_get (m->method_args, gpointer, i);
+               MonoReflectionType *garg = (MonoReflectionType *)mono_array_get (m->method_args, gpointer, i);
                type_argv [i] = mono_reflection_type_get_handle (garg);
        }
        ginst = mono_metadata_get_generic_inst (count, type_argv);
@@ -3332,7 +3375,7 @@ add_custom_modifiers (MonoDynamicImage *assembly, MonoType *type, MonoArray *mod
                return mono_metadata_type_dup (NULL, type);
 
        len = MONO_SIZEOF_TYPE + ((gint32)count) * sizeof (MonoCustomMod);
-       t = g_malloc (len);
+       t = (MonoType *)g_malloc (len);
        memcpy (t, type, MONO_SIZEOF_TYPE);
 
        t->num_mods = count;
@@ -3534,7 +3577,7 @@ mono_image_get_array_token (MonoDynamicImage *assembly, MonoReflectionArrayMetho
 
        name = mono_string_to_utf8 (m->name);
        nparams = mono_array_length (m->parameters);
-       sig = g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + sizeof (MonoType*) * nparams);
+       sig = (MonoMethodSignature *)g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + sizeof (MonoType*) * nparams);
        sig->hasthis = 1;
        sig->sentinelpos = -1;
        sig->call_convention = reflection_cc_to_file (m->call_conv);
@@ -3545,7 +3588,7 @@ mono_image_get_array_token (MonoDynamicImage *assembly, MonoReflectionArrayMetho
                sig->params [i] = mono_type_array_get_and_resolve (m->parameters, i);
 
        for (tmp = assembly->array_methods; tmp; tmp = tmp->next) {
-               am = tmp->data;
+               am = (ArrayMethod *)tmp->data;
                if (strcmp (name, am->name) == 0 && 
                                mono_metadata_type_equal (am->parent, mtype) &&
                                mono_metadata_signature_equal (am->sig, sig)) {
@@ -3937,7 +3980,7 @@ mono_image_fill_export_table_from_class (MonoDomain *domain, MonoClass *klass,
                GList *tmp;
 
                for (tmp = klass->ext->nested_classes; tmp; tmp = tmp->next)
-                       mono_image_fill_export_table_from_class (domain, tmp->data, module_index, table->next_idx - 1, assembly);
+                       mono_image_fill_export_table_from_class (domain, (MonoClass *)tmp->data, module_index, table->next_idx - 1, assembly);
        }
 
        return res;
@@ -4060,16 +4103,16 @@ mono_image_fill_export_table_from_type_forwarders (MonoReflectionAssemblyBuilder
 static int
 compare_constants (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
        return a_values [MONO_CONSTANT_PARENT] - b_values [MONO_CONSTANT_PARENT];
 }
 
 static int
 compare_semantics (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
        int assoc = a_values [MONO_METHOD_SEMA_ASSOCIATION] - b_values [MONO_METHOD_SEMA_ASSOCIATION];
        if (assoc)
                return assoc;
@@ -4079,8 +4122,8 @@ compare_semantics (const void *a, const void *b)
 static int
 compare_custom_attrs (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
 
        return a_values [MONO_CUSTOM_ATTR_PARENT] - b_values [MONO_CUSTOM_ATTR_PARENT];
 }
@@ -4088,8 +4131,8 @@ compare_custom_attrs (const void *a, const void *b)
 static int
 compare_field_marshal (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
 
        return a_values [MONO_FIELD_MARSHAL_PARENT] - b_values [MONO_FIELD_MARSHAL_PARENT];
 }
@@ -4097,8 +4140,8 @@ compare_field_marshal (const void *a, const void *b)
 static int
 compare_nested (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
 
        return a_values [MONO_NESTED_CLASS_NESTED] - b_values [MONO_NESTED_CLASS_NESTED];
 }
@@ -4120,8 +4163,8 @@ compare_genericparam (const void *a, const void *b)
 static int
 compare_declsecurity_attrs (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
 
        return a_values [MONO_DECL_SECURITY_PARENT] - b_values [MONO_DECL_SECURITY_PARENT];
 }
@@ -4129,8 +4172,8 @@ compare_declsecurity_attrs (const void *a, const void *b)
 static int
 compare_interface_impl (const void *a, const void *b)
 {
-       const guint32 *a_values = a;
-       const guint32 *b_values = b;
+       const guint32 *a_values = (const guint32 *)a;
+       const guint32 *b_values = (const guint32 *)b;
 
        int klass = a_values [MONO_INTERFACEIMPL_CLASS] - b_values [MONO_INTERFACEIMPL_CLASS];
        if (klass)
@@ -4180,7 +4223,7 @@ build_compressed_metadata (MonoDynamicImage *assembly)
 
        qsort (assembly->gen_params->pdata, assembly->gen_params->len, sizeof (gpointer), compare_genericparam);
        for (i = 0; i < assembly->gen_params->len; i++){
-               GenericParamTableEntry *entry = g_ptr_array_index (assembly->gen_params, i);
+               GenericParamTableEntry *entry = (GenericParamTableEntry *)g_ptr_array_index (assembly->gen_params, i);
                write_generic_param_entry (assembly, entry);
        }
 
@@ -4242,7 +4285,7 @@ build_compressed_metadata (MonoDynamicImage *assembly)
        heapt_size += 3;
        heapt_size &= ~3;
        meta_size += heapt_size;
-       meta->raw_metadata = g_malloc0 (meta_size);
+       meta->raw_metadata = (char *)g_malloc0 (meta_size);
        p = (unsigned char*)meta->raw_metadata;
        /* the metadata signature */
        *p++ = 'B'; *p++ = 'S'; *p++ = 'J'; *p++ = 'B';
@@ -4515,7 +4558,7 @@ fixup_cattrs (MonoDynamicImage *assembly)
                if ((type & MONO_CUSTOM_ATTR_TYPE_MASK) == MONO_CUSTOM_ATTR_TYPE_METHODDEF) {
                        idx = type >> MONO_CUSTOM_ATTR_TYPE_BITS;
                        token = mono_metadata_make_token (MONO_TABLE_METHOD, idx);
-                       ctor = mono_g_hash_table_lookup (assembly->remapped_tokens, GUINT_TO_POINTER (token));
+                       ctor = (MonoObject *)mono_g_hash_table_lookup (assembly->remapped_tokens, GUINT_TO_POINTER (token));
                        g_assert (ctor);
 
                        if (!strcmp (ctor->vtable->klass->name, "MonoCMethod")) {
@@ -4654,7 +4697,7 @@ load_public_key (MonoArray *pkey, MonoDynamicImage *assembly) {
        token = mono_image_add_stream_data (&assembly->blob, blob_size, b - blob_size);
        mono_image_add_stream_data (&assembly->blob, mono_array_addr (pkey, char, 0), len);
 
-       assembly->public_key = g_malloc (len);
+       assembly->public_key = (guint8 *)g_malloc (len);
        memcpy (assembly->public_key, mono_array_addr (pkey, char, 0), len);
        assembly->public_key_len = len;
 
@@ -4670,7 +4713,7 @@ load_public_key (MonoArray *pkey, MonoDynamicImage *assembly) {
                g_warning ("Invalid public key length: %d bits (total: %d)", (int)MONO_PUBLIC_KEY_BIT_SIZE (len), (int)len);
                assembly->strong_name_size = MONO_DEFAULT_PUBLIC_KEY_LENGTH; /* to be safe */
        }
-       assembly->strong_name = g_malloc0 (assembly->strong_name_size);
+       assembly->strong_name = (char *)g_malloc0 (assembly->strong_name_size);
 
        return token;
 }
@@ -4835,7 +4878,7 @@ mono_image_build_metadata (MonoReflectionModuleBuilder *moduleb)
                        collect_types (&types, type);
                }
 
-       mono_ptr_array_sort (types, (gpointer)compare_types_by_table_idx);
+       mono_ptr_array_sort (types, (int (*)(const void *, const void *))compare_types_by_table_idx);
        table = &assembly->tables [MONO_TABLE_TYPEDEF];
        table->rows += mono_ptr_array_size (types);
        alloc_table (table, table->rows);
@@ -4845,16 +4888,16 @@ mono_image_build_metadata (MonoReflectionModuleBuilder *moduleb)
         * so load_class_names () needs to touch fewer pages.
         */
        for (i = 0; i < mono_ptr_array_size (types); ++i) {
-               MonoReflectionTypeBuilder *tb = mono_ptr_array_get (types, i);
+               MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_ptr_array_get (types, i);
                string_heap_insert_mstring (&assembly->sheap, tb->nspace);
        }
        for (i = 0; i < mono_ptr_array_size (types); ++i) {
-               MonoReflectionTypeBuilder *tb = mono_ptr_array_get (types, i);
+               MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_ptr_array_get (types, i);
                string_heap_insert_mstring (&assembly->sheap, tb->name);
        }
 
        for (i = 0; i < mono_ptr_array_size (types); ++i) {
-               MonoReflectionTypeBuilder *type = mono_ptr_array_get (types, i);
+               MonoReflectionTypeBuilder *type = (MonoReflectionTypeBuilder *)mono_ptr_array_get (types, i);
                mono_image_get_type_info (domain, type, assembly);
        }
 
@@ -4889,7 +4932,7 @@ mono_image_build_metadata (MonoReflectionModuleBuilder *moduleb)
        }
 
        for (i = 0; i < mono_ptr_array_size (types); ++i) {
-               MonoReflectionTypeBuilder *type = mono_ptr_array_get (types, i);
+               MonoReflectionTypeBuilder *type = (MonoReflectionTypeBuilder *)mono_ptr_array_get (types, i);
                if (type->methods) {
                        for (j = 0; j < type->num_methods; ++j) {
                                MonoReflectionMethodBuilder *mb = mono_array_get (
@@ -5245,7 +5288,7 @@ mono_image_register_token (MonoDynamicImage *assembly, guint32 token, MonoObject
        MonoObject *prev;
 
        dynamic_image_lock (assembly);
-       prev = mono_g_hash_table_lookup (assembly->tokens, GUINT_TO_POINTER (token));
+       prev = (MonoObject *)mono_g_hash_table_lookup (assembly->tokens, GUINT_TO_POINTER (token));
        if (prev) {
                /* There could be multiple MethodInfo objects with the same token */
                //g_assert (prev == obj);
@@ -5271,7 +5314,7 @@ create_dynamic_mono_image (MonoDynamicAssembly *assembly, char *assembly_name, c
 
 #if HAVE_BOEHM_GC
        /* The MonoGHashTable's need GC tracking */
-       image = GC_MALLOC (sizeof (MonoDynamicImage));
+       image = (MonoDynamicImage *)GC_MALLOC (sizeof (MonoDynamicImage));
 #else
        image = g_new0 (MonoDynamicImage, 1);
 #endif
@@ -5338,6 +5381,15 @@ create_dynamic_mono_image (MonoDynamicAssembly *assembly, char *assembly_name, c
        
        mono_profiler_module_loaded (&image->image, MONO_PROFILE_OK);
 
+       dynamic_images_lock ();
+
+       if (!dynamic_images)
+               dynamic_images = g_ptr_array_new ();
+
+       g_ptr_array_add (dynamic_images, image);
+
+       dynamic_images_unlock ();
+
        return image;
 }
 #endif
@@ -5368,6 +5420,7 @@ mono_dynamic_image_release_gc_roots (MonoDynamicImage *image)
        release_hashtable (&image->methodspec);
 }
 
+// Free dynamic image pass one: Free resources but not image itself
 void
 mono_dynamic_image_free (MonoDynamicImage *image)
 {
@@ -5406,7 +5459,7 @@ mono_dynamic_image_free (MonoDynamicImage *image)
        g_list_free (di->array_methods);
        if (di->gen_params) {
                for (i = 0; i < di->gen_params->len; i++) {
-                       GenericParamTableEntry *entry = g_ptr_array_index (di->gen_params, i);
+                       GenericParamTableEntry *entry = (GenericParamTableEntry *)g_ptr_array_index (di->gen_params, i);
                        mono_gc_deregister_root ((char*) &entry->gparam);
                        g_free (entry);
                }
@@ -5438,8 +5491,16 @@ mono_dynamic_image_free (MonoDynamicImage *image)
        for (i = 0; i < MONO_TABLE_NUM; ++i) {
                g_free (di->tables [i].values);
        }
-}      
 
+       dynamic_images_lock ();
+
+       if (dynamic_images)
+               g_ptr_array_remove (dynamic_images, di);
+
+       dynamic_images_unlock ();
+}
+
+// Free dynamic image pass two: Free image itself (might never get called in some debug modes)
 void
 mono_dynamic_image_free_image (MonoDynamicImage *image)
 {
@@ -5472,7 +5533,7 @@ mono_image_basic_init (MonoReflectionAssemblyBuilder *assemblyb)
 
 #if HAVE_BOEHM_GC
        /* assembly->assembly.image might be GC allocated */
-       assembly = assemblyb->dynamic_assembly = GC_MALLOC (sizeof (MonoDynamicAssembly));
+       assembly = assemblyb->dynamic_assembly = (MonoDynamicAssembly *)GC_MALLOC (sizeof (MonoDynamicAssembly));
 #else
        assembly = assemblyb->dynamic_assembly = g_new0 (MonoDynamicAssembly, 1);
 #endif
@@ -5771,13 +5832,13 @@ assembly_add_win32_resources (MonoDynamicImage *assembly, MonoReflectionAssembly
        }
        /* Directory structure */
        size += mono_array_length (assemblyb->win32_resources) * 256;
-       p = buf = g_malloc (size);
+       p = buf = (char *)g_malloc (size);
 
        resource_tree_encode (tree, p, p, &p);
 
        g_assert (p - buf <= size);
 
-       assembly->win32_res = g_malloc (p - buf);
+       assembly->win32_res = (char *)g_malloc (p - buf);
        assembly->win32_res_size = p - buf;
        memcpy (assembly->win32_res, buf, p - buf);
 
@@ -6254,15 +6315,15 @@ typedef struct {
 
 static gboolean
 reflected_equal (gconstpointer a, gconstpointer b) {
-       const ReflectedEntry *ea = a;
-       const ReflectedEntry *eb = b;
+       const ReflectedEntry *ea = (const ReflectedEntry *)a;
+       const ReflectedEntry *eb = (const ReflectedEntry *)b;
 
        return (ea->item == eb->item) && (ea->refclass == eb->refclass);
 }
 
 static guint
 reflected_hash (gconstpointer a) {
-       const ReflectedEntry *ea = a;
+       const ReflectedEntry *ea = (const ReflectedEntry *)a;
        return mono_aligned_addr_hash (ea->item);
 }
 
@@ -6275,7 +6336,7 @@ reflected_hash (gconstpointer a) {
                mono_domain_lock (domain);      \
                if (!domain->refobject_hash)    \
                        domain->refobject_hash = mono_g_hash_table_new_type (reflected_hash, reflected_equal, MONO_HASH_VALUE_GC, MONO_ROOT_SOURCE_DOMAIN, "domain reflection objects table");  \
-               if ((_obj = mono_g_hash_table_lookup (domain->refobject_hash, &e))) {   \
+               if ((_obj = (t)mono_g_hash_table_lookup (domain->refobject_hash, &e))) {        \
                        mono_domain_unlock (domain);    \
                        return _obj;    \
                }       \
@@ -6288,7 +6349,7 @@ reflected_hash (gconstpointer a) {
 #define FREE_REFENTRY(entry) g_free ((entry))
 #define REFENTRY_REQUIRES_CLEANUP
 #else
-#define ALLOC_REFENTRY mono_mempool_alloc (domain->mp, sizeof (ReflectedEntry))
+#define ALLOC_REFENTRY (ReflectedEntry *)mono_mempool_alloc (domain->mp, sizeof (ReflectedEntry))
 /* FIXME: */
 #define FREE_REFENTRY(entry)
 #endif
@@ -6302,7 +6363,7 @@ reflected_hash (gconstpointer a) {
         mono_domain_lock (domain); \
                if (!domain->refobject_hash)    \
                        domain->refobject_hash = mono_g_hash_table_new_type (reflected_hash, reflected_equal, MONO_HASH_VALUE_GC, MONO_ROOT_SOURCE_DOMAIN, "domain reflection objects table");  \
-        _obj = mono_g_hash_table_lookup (domain->refobject_hash, &pe); \
+        _obj = (t)mono_g_hash_table_lookup (domain->refobject_hash, &pe); \
         if (!_obj) { \
                    ReflectedEntry *e = ALLOC_REFENTRY;         \
                    e->item = (p);      \
@@ -6437,11 +6498,11 @@ mono_assembly_get_object (MonoDomain *domain, MonoAssembly *assembly)
        
        CHECK_OBJECT (MonoReflectionAssembly *, assembly, NULL);
        if (!assembly_type) {
-               MonoClass *class = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "MonoAssembly");
-               if (class == NULL)
-                       class = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "Assembly");
-               g_assert (class);
-               assembly_type = class;
+               MonoClass *klass = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "MonoAssembly");
+               if (klass == NULL)
+                       klass = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "Assembly");
+               g_assert (klass);
+               assembly_type = klass;
        }
        res = (MonoReflectionAssembly *)mono_object_new (domain, assembly_type);
        res->assembly = assembly;
@@ -6460,11 +6521,11 @@ mono_module_get_object   (MonoDomain *domain, MonoImage *image)
        
        CHECK_OBJECT (MonoReflectionModule *, image, NULL);
        if (!module_type) {
-               MonoClass *class = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "MonoModule");
-               if (class == NULL)
-                       class = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "Module");
-               g_assert (class);
-               module_type = class;
+               MonoClass *klass = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "MonoModule");
+               if (klass == NULL)
+                       klass = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "Module");
+               g_assert (klass);
+               module_type = klass;
        }
        res = (MonoReflectionModule *)mono_object_new (domain, module_type);
 
@@ -6507,11 +6568,11 @@ mono_module_file_get_object (MonoDomain *domain, MonoImage *image, int table_ind
        const char *val;
        
        if (!module_type) {
-               MonoClass *class = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "MonoModule");
-               if (class == NULL)
-                       class = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "Module");
-               g_assert (class);
-               module_type = class;
+               MonoClass *klass = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "MonoModule");
+               if (klass == NULL)
+                       klass = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "Module");
+               g_assert (klass);
+               module_type = klass;
        }
        res = (MonoReflectionModule *)mono_object_new (domain, module_type);
 
@@ -6649,7 +6710,7 @@ mono_type_get_object (MonoDomain *domain, MonoType *type)
        if (type == &klass->byval_arg && !image_is_dynamic (klass->image)) {
                MonoVTable *vtable = mono_class_try_get_vtable (domain, klass);
                if (vtable && vtable->type)
-                       return vtable->type;
+                       return (MonoReflectionType *)vtable->type;
        }
 
        mono_loader_lock (); /*FIXME mono_class_init and mono_class_vtable acquire it*/
@@ -6657,7 +6718,7 @@ mono_type_get_object (MonoDomain *domain, MonoType *type)
        if (!domain->type_hash)
                domain->type_hash = mono_g_hash_table_new_type ((GHashFunc)mono_metadata_type_hash, 
                                (GCompareFunc)mono_metadata_type_equal, MONO_HASH_VALUE_GC, MONO_ROOT_SOURCE_DOMAIN, "domain reflection types table");
-       if ((res = mono_g_hash_table_lookup (domain->type_hash, type))) {
+       if ((res = (MonoReflectionType *)mono_g_hash_table_lookup (domain->type_hash, type))) {
                mono_domain_unlock (domain);
                mono_loader_unlock ();
                return res;
@@ -6714,7 +6775,7 @@ mono_type_get_object (MonoDomain *domain, MonoType *type)
                if (is_type_done && !type->byref) {
                        mono_domain_unlock (domain);
                        mono_loader_unlock ();
-                       return mono_class_get_ref_info (klass);
+                       return (MonoReflectionType *)mono_class_get_ref_info (klass);
                }
        }
        /* This is stored in vtables/JITted code so it has to be pinned */
@@ -6755,7 +6816,8 @@ mono_method_get_object (MonoDomain *domain, MonoMethod *method, MonoClass *refcl
        if (method->is_inflated) {
                MonoReflectionGenericMethod *gret;
 
-               refclass = method->klass;
+               if (!refclass)
+                       refclass = method->klass;
                CHECK_OBJECT (MonoReflectionMethod *, method, refclass);
                if ((*method->name == '.') && (!strcmp (method->name, ".ctor") || !strcmp (method->name, ".cctor"))) {
                        if (!System_Reflection_MonoGenericCMethod)
@@ -7034,7 +7096,7 @@ mono_param_get_objects_internal (MonoDomain *domain, MonoMethod *method, MonoCla
                        /* Build MonoType for the type from the Constant Table */
                        if (!type)
                                type = g_new0 (MonoType, 1);
-                       type->type = types [i];
+                       type->type = (MonoTypeEnum)types [i];
                        type->data.klass = NULL;
                        if (types [i] == MONO_TYPE_CLASS)
                                type->data.klass = mono_defaults.object_class;
@@ -7119,6 +7181,7 @@ mono_method_body_get_object (MonoDomain *domain, MonoMethod *method)
        if ((method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL) ||
                (method->flags & METHOD_ATTRIBUTE_ABSTRACT) ||
            (method->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) ||
+               (method->klass->image->raw_data && method->klass->image->raw_data [1] != 'Z') ||
            (method->iflags & METHOD_IMPL_ATTRIBUTE_RUNTIME))
                return NULL;
 
@@ -7239,7 +7302,7 @@ get_default_param_value_blobs (MonoMethod *method, char **blobs, guint32 *types)
                MonoReflectionMethodAux *aux;
                if (method->is_inflated)
                        method = ((MonoMethodInflated*)method)->declaring;
-               aux = g_hash_table_lookup (((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
+               aux = (MonoReflectionMethodAux *)g_hash_table_lookup (((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
                if (aux && aux->param_defaults) {
                        memcpy (blobs, &(aux->param_defaults [1]), methodsig->param_count * sizeof (char*));
                        memcpy (types, &(aux->param_default_types [1]), methodsig->param_count * sizeof (guint32));
@@ -7275,7 +7338,7 @@ get_default_param_value_blobs (MonoMethod *method, char **blobs, guint32 *types)
                }
        
                mono_metadata_decode_row (constt, crow - 1, const_cols, MONO_CONSTANT_SIZE);
-               blobs [paramseq - 1] = (gpointer) mono_metadata_blob_heap (image, const_cols [MONO_CONSTANT_VALUE]);
+               blobs [paramseq - 1] = (char *)mono_metadata_blob_heap (image, const_cols [MONO_CONSTANT_VALUE]);
                types [paramseq - 1] = const_cols [MONO_CONSTANT_TYPE];
        }
 
@@ -7424,7 +7487,7 @@ _mono_reflection_parse_type (char *name, char **endptr, gboolean is_recursed,
 {
        char *start, *p, *w, *last_point, *startn;
        int in_modifiers = 0;
-       int isbyref = 0, rank = 0;
+       int isbyref = 0, rank = 0, isptr = 0;
 
        start = p = w = name;
 
@@ -7496,20 +7559,27 @@ _mono_reflection_parse_type (char *name, char **endptr, gboolean is_recursed,
                        if (isbyref) /* only one level allowed by the spec */
                                return 0;
                        isbyref = 1;
+                       isptr = 0;
                        info->modifiers = g_list_append (info->modifiers, GUINT_TO_POINTER (0));
                        *p++ = 0;
                        break;
                case '*':
+                       if (isbyref) /* pointer to ref not okay */
+                               return 0;
                        info->modifiers = g_list_append (info->modifiers, GUINT_TO_POINTER (-1));
+                       isptr = 1;
                        *p++ = 0;
                        break;
                case '[':
+                       if (isbyref) /* array of ref and generic ref are not okay */
+                               return 0;
                        //Decide if it's an array of a generic argument list
                        *p++ = 0;
 
                        if (!*p) //XXX test
                                return 0;
                        if (*p  == ',' || *p == '*' || *p == ']') { //array
+                               isptr = 0;
                                rank = 1;
                                while (*p) {
                                        if (*p == ']')
@@ -7526,8 +7596,9 @@ _mono_reflection_parse_type (char *name, char **endptr, gboolean is_recursed,
                                        return 0;
                                info->modifiers = g_list_append (info->modifiers, GUINT_TO_POINTER (rank));
                        } else {
-                               if (rank) /* generic args after array spec*/ //XXX test
+                               if (rank || isptr) /* generic args after array spec or ptr*/ //XXX test
                                        return 0;
+                               isptr = 0;
                                info->type_arguments = g_ptr_array_new ();
                                while (*p) {
                                        MonoTypeNameParse *subinfo = g_new0 (MonoTypeNameParse, 1);
@@ -7619,10 +7690,92 @@ _mono_reflection_parse_type (char *name, char **endptr, gboolean is_recursed,
        return 1;
 }
 
+
+/**
+ * mono_identifier_unescape_type_name_chars:
+ * @identifier: the display name of a mono type
+ *
+ * Returns:
+ *  The name in internal form, that is without escaping backslashes.
+ *
+ *  The string is modified in place!
+ */
+char*
+mono_identifier_unescape_type_name_chars(char* identifier)
+{
+       char *w, *r;
+       if (!identifier)
+               return NULL;
+       for (w = r = identifier; *r != 0; r++)
+       {
+               char c = *r;
+               if (c == '\\') {
+                       r++;
+                       if (*r == 0)
+                               break;
+                       c = *r;
+               }
+               *w = c;
+               w++;
+       }
+       if (w != r)
+               *w = 0;
+       return identifier;
+}
+
+void
+mono_identifier_unescape_info (MonoTypeNameParse* info);
+
+static void
+unescape_each_type_argument(void* data, void* user_data)
+{
+       MonoTypeNameParse* info = (MonoTypeNameParse*)data;
+       mono_identifier_unescape_info (info);
+}
+
+static void
+unescape_each_nested_name (void* data, void* user_data)
+{
+       char* nested_name = (char*) data;
+       mono_identifier_unescape_type_name_chars(nested_name);
+}
+
+/**
+ * mono_identifier_unescape_info:
+ *
+ * @info: a parsed display form of an (optionally assembly qualified) full type name.
+ *
+ * Returns: nothing.
+ *
+ * Destructively updates the info by unescaping the identifiers that
+ * comprise the type namespace, name, nested types (if any) and
+ * generic type arguments (if any).
+ *
+ * The resulting info has the names in internal form.
+ *
+ */
+void
+mono_identifier_unescape_info (MonoTypeNameParse *info)
+{
+       if (!info)
+               return;
+       mono_identifier_unescape_type_name_chars(info->name_space);
+       mono_identifier_unescape_type_name_chars(info->name);
+       // but don't escape info->assembly
+       if (info->type_arguments)
+               g_ptr_array_foreach(info->type_arguments, &unescape_each_type_argument, NULL);
+       if (info->nested)
+               g_list_foreach(info->nested, &unescape_each_nested_name, NULL);
+}
+
 int
 mono_reflection_parse_type (char *name, MonoTypeNameParse *info)
 {
-       return _mono_reflection_parse_type (name, NULL, FALSE, info);
+       int ok = _mono_reflection_parse_type (name, NULL, FALSE, info);
+       if (ok) {
+               mono_identifier_unescape_info (info);
+       }
+       return ok;
 }
 
 static MonoType*
@@ -7695,19 +7848,19 @@ mono_reflection_get_type_internal (MonoImage *rootimage, MonoImage* image, MonoT
                        char *nested_name, *nested_nspace;
                        gboolean match = TRUE;
 
-                       lastp = strrchr (mod->data, '.');
+                       lastp = strrchr ((const char *)mod->data, '.');
                        if (lastp) {
                                /* Nested classes can have namespaces */
                                int nspace_len;
 
                                nested_name = g_strdup (lastp + 1);
                                nspace_len = lastp - (char*)mod->data;
-                               nested_nspace = g_malloc (nspace_len + 1);
+                               nested_nspace = (char *)g_malloc (nspace_len + 1);
                                memcpy (nested_nspace, mod->data, nspace_len);
                                nested_nspace [nspace_len] = '\0';
 
                        } else {
-                               nested_name = mod->data;
+                               nested_name = (char *)mod->data;
                                nested_nspace = NULL;
                        }
 
@@ -7750,7 +7903,7 @@ mono_reflection_get_type_internal (MonoImage *rootimage, MonoImage* image, MonoT
                int i;
 
                for (i = 0; i < info->type_arguments->len; i++) {
-                       MonoTypeNameParse *subinfo = g_ptr_array_index (info->type_arguments, i);
+                       MonoTypeNameParse *subinfo = (MonoTypeNameParse *)g_ptr_array_index (info->type_arguments, i);
 
                        type_args [i] = _mono_reflection_get_type_from_info (subinfo, rootimage, ignorecase);
                        if (!type_args [i]) {
@@ -7892,7 +8045,7 @@ mono_reflection_free_type_info (MonoTypeNameParse *info)
                int i;
 
                for (i = 0; i < info->type_arguments->len; i++) {
-                       MonoTypeNameParse *subinfo = g_ptr_array_index (info->type_arguments, i);
+                       MonoTypeNameParse *subinfo = (MonoTypeNameParse *)g_ptr_array_index (info->type_arguments, i);
 
                        mono_reflection_free_type_info (subinfo);
                        /*We free the subinfo since it is allocated by _mono_reflection_parse_type*/
@@ -8035,7 +8188,7 @@ load_cattr_enum_type (MonoImage *image, const char *p, const char **end, MonoErr
 
        mono_error_init (error);
 
-       n = g_memdup (p, slen + 1);
+       n = (char *)g_memdup (p, slen + 1);
        n [slen] = 0;
        t = mono_reflection_type_from_name (n, image);
        if (!t) {
@@ -8063,7 +8216,7 @@ handle_enum:
        case MONO_TYPE_U1:
        case MONO_TYPE_I1:
        case MONO_TYPE_BOOLEAN: {
-               MonoBoolean *bval = g_malloc (sizeof (MonoBoolean));
+               MonoBoolean *bval = (MonoBoolean *)g_malloc (sizeof (MonoBoolean));
                *bval = *p;
                *end = p + 1;
                return bval;
@@ -8071,7 +8224,7 @@ handle_enum:
        case MONO_TYPE_CHAR:
        case MONO_TYPE_U2:
        case MONO_TYPE_I2: {
-               guint16 *val = g_malloc (sizeof (guint16));
+               guint16 *val = (guint16 *)g_malloc (sizeof (guint16));
                *val = read16 (p);
                *end = p + 2;
                return val;
@@ -8083,7 +8236,7 @@ handle_enum:
        case MONO_TYPE_R4:
        case MONO_TYPE_U4:
        case MONO_TYPE_I4: {
-               guint32 *val = g_malloc (sizeof (guint32));
+               guint32 *val = (guint32 *)g_malloc (sizeof (guint32));
                *val = read32 (p);
                *end = p + 4;
                return val;
@@ -8094,13 +8247,13 @@ handle_enum:
 #endif
        case MONO_TYPE_U8:
        case MONO_TYPE_I8: {
-               guint64 *val = g_malloc (sizeof (guint64));
+               guint64 *val = (guint64 *)g_malloc (sizeof (guint64));
                *val = read64 (p);
                *end = p + 8;
                return val;
        }
        case MONO_TYPE_R8: {
-               double *val = g_malloc (sizeof (double));
+               double *val = (double *)g_malloc (sizeof (double));
                readr8 (p, val);
                *end = p + 8;
                return val;
@@ -8113,7 +8266,7 @@ handle_enum:
                        MonoClass *k =  t->data.klass;
                        
                        if (mono_is_corlib_image (k->image) && strcmp (k->name_space, "System") == 0 && strcmp (k->name, "DateTime") == 0){
-                               guint64 *val = g_malloc (sizeof (guint64));
+                               guint64 *val = (guint64 *)g_malloc (sizeof (guint64));
                                *val = read64 (p);
                                *end = p + 8;
                                return val;
@@ -8139,7 +8292,7 @@ handle_enum:
                }
 handle_type:
                slen = mono_metadata_decode_value (p, &p);
-               n = g_memdup (p, slen + 1);
+               n = (char *)g_memdup (p, slen + 1);
                n [slen] = 0;
                t = mono_reflection_type_from_name (n, image);
                if (!t) {
@@ -8179,7 +8332,7 @@ handle_type:
                                if (etype == 0x51)
                                        /* See Partition II, Appendix B3 */
                                        etype = MONO_TYPE_OBJECT;
-                               simple_type.type = etype;
+                               simple_type.type = (MonoTypeEnum)etype;
                                tklass = mono_class_from_mono_type (&simple_type);
                        }
                        goto handle_enum;
@@ -8187,7 +8340,7 @@ handle_type:
                        char *n;
                        MonoType *t;
                        slen = mono_metadata_decode_value (p, &p);
-                       n = g_memdup (p, slen + 1);
+                       n = (char *)g_memdup (p, slen + 1);
                        n [slen] = 0;
                        t = mono_reflection_type_from_name (n, image);
                        if (!t) {
@@ -8201,7 +8354,7 @@ handle_type:
                        subc = mono_class_from_mono_type (t);
                } else if (subt >= MONO_TYPE_BOOLEAN && subt <= MONO_TYPE_R8) {
                        MonoType simple_type = {{0}};
-                       simple_type.type = subt;
+                       simple_type.type = (MonoTypeEnum)subt;
                        subc = mono_class_from_mono_type (&simple_type);
                } else {
                        g_error ("Unknown type 0x%02x for object type encoding in custom attr", subt);
@@ -8279,7 +8432,7 @@ handle_type:
                        case MONO_TYPE_STRING:
                        case MONO_TYPE_SZARRAY:
                                for (i = 0; i < alen; i++) {
-                                       MonoObject *item = load_cattr_value (image, &tklass->byval_arg, p, &p, error);
+                                       MonoObject *item = (MonoObject *)load_cattr_value (image, &tklass->byval_arg, p, &p, error);
                                        if (!mono_error_ok (error))
                                                return NULL;
                                        mono_array_setref (arr, i, item);
@@ -8455,7 +8608,7 @@ create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, gu
                memset (params, 0, sizeof (void*) * sig->param_count);
        } else {
                /* Allocate using GC so it gets GC tracking */
-               params = mono_gc_alloc_fixed (sig->param_count * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_REFLECTION, "custom attribute parameters");
+               params = (void **)mono_gc_alloc_fixed (sig->param_count * sizeof (void*), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_REFLECTION, "custom attribute parameters");
        }
 
        /* skip prolog */
@@ -8485,7 +8638,7 @@ create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, gu
                        gint type_len;
                        char *type_name;
                        type_len = mono_metadata_decode_blob_size (named, &named);
-                       type_name = g_malloc (type_len + 1);
+                       type_name = (char *)g_malloc (type_len + 1);
                        memcpy (type_name, named, type_len);
                        type_name [type_len] = 0;
                        named += type_len;
@@ -8493,7 +8646,7 @@ create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, gu
                        g_free (type_name);
                }
                name_len = mono_metadata_decode_blob_size (named, &named);
-               name = g_malloc (name_len + 1);
+               name = (char *)g_malloc (name_len + 1);
                memcpy (name, named, name_len);
                name [name_len] = 0;
                named += name_len;
@@ -8625,8 +8778,8 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
                        return;
                }
 
-               obj = type_is_reference (mono_method_signature (method)->params [i]) ? 
-                       val : mono_value_box (domain, mono_class_from_mono_type (mono_method_signature (method)->params [i]), val);
+               obj = (MonoObject *)(type_is_reference (mono_method_signature (method)->params [i]) ?
+                       val : mono_value_box (domain, mono_class_from_mono_type (mono_method_signature (method)->params [i]), val));
                mono_array_setref (typedargs, i, obj);
 
                if (!type_is_reference (mono_method_signature (method)->params [i]))
@@ -8656,7 +8809,7 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
                        if (ADDP_IS_GREATER_OR_OVF ((const guchar*)named, type_len, data + len))
                                goto fail;
 
-                       type_name = g_malloc (type_len + 1);
+                       type_name = (char *)g_malloc (type_len + 1);
                        memcpy (type_name, named, type_len);
                        type_name [type_len] = 0;
                        named += type_len;
@@ -8666,7 +8819,7 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
                name_len = mono_metadata_decode_blob_size (named, &named);
                if (ADDP_IS_GREATER_OR_OVF ((const guchar*)named, name_len, data + len))
                        goto fail;
-               name = g_malloc (name_len + 1);
+               name = (char *)g_malloc (name_len + 1);
                memcpy (name, named, name_len);
                name [name_len] = 0;
                named += name_len;
@@ -8691,7 +8844,7 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
                                return;
                        }
 
-                       obj = type_is_reference (field->type) ? val : mono_value_box (domain, mono_class_from_mono_type (field->type), val);
+                       obj = (MonoObject *)(type_is_reference (field->type) ? val : mono_value_box (domain, mono_class_from_mono_type (field->type), val));
                        mono_array_setref (namedargs, j, obj);
                        if (!type_is_reference (field->type))
                                g_free (val);
@@ -8720,7 +8873,7 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
                                return;
                        }
 
-                       obj = type_is_reference (prop_type) ? val : mono_value_box (domain, mono_class_from_mono_type (prop_type), val);
+                       obj = (MonoObject *)(type_is_reference (prop_type) ? val : mono_value_box (domain, mono_class_from_mono_type (prop_type), val));
                        mono_array_setref (namedargs, j, obj);
                        if (!type_is_reference (prop_type))
                                g_free (val);
@@ -8761,7 +8914,7 @@ mono_reflection_resolve_custom_attribute_data (MonoReflectionMethod *ref_method,
        if (!mono_class_init (method->klass))
                mono_raise_exception (mono_class_get_exception_for_failure (method->klass));
 
-       mono_reflection_create_custom_attr_data_args (image, method, data, len, &typedargs, &namedargs, &arginfo, &error);
+       mono_reflection_create_custom_attr_data_args (image, method, (const guchar *)data, len, &typedargs, &namedargs, &arginfo, &error);
        if (!mono_error_ok (&error))
                mono_error_raise_exception (&error);
        if (mono_loader_get_last_error ())
@@ -8912,7 +9065,7 @@ mono_custom_attrs_from_index (MonoImage *image, guint32 idx)
        len = g_list_length (list);
        if (!len)
                return NULL;
-       ainfo = g_malloc0 (MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * len);
+       ainfo = (MonoCustomAttrInfo *)g_malloc0 (MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * len);
        ainfo->num_attrs = len;
        ainfo->image = image;
        for (i = len, tmp = list; i != 0; --i, tmp = tmp->next) {
@@ -9105,7 +9258,7 @@ mono_custom_attrs_from_param (MonoMethod *method, guint32 param)
                MonoCustomAttrInfo *res, *ainfo;
                int size;
 
-               aux = g_hash_table_lookup (((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
+               aux = (MonoReflectionMethodAux *)g_hash_table_lookup (((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
                if (!aux || !aux->param_cattr)
                        return NULL;
 
@@ -9114,7 +9267,7 @@ mono_custom_attrs_from_param (MonoMethod *method, guint32 param)
                if (!ainfo)
                        return NULL;
                size = MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * ainfo->num_attrs;
-               res = g_malloc0 (size);
+               res = (MonoCustomAttrInfo *)g_malloc0 (size);
                memcpy (res, ainfo, size);
                return res;
        }
@@ -9394,9 +9547,9 @@ mono_reflection_type_get_underlying_system_type (MonoReflectionType* t)
 
 
 static gboolean
-is_corlib_type (MonoClass *class)
+is_corlib_type (MonoClass *klass)
 {
-       return class->image == mono_defaults.corlib;
+       return klass->image == mono_defaults.corlib;
 }
 
 #define check_corlib_type_cached(_class, _namespace, _name) do { \
@@ -9413,69 +9566,69 @@ is_corlib_type (MonoClass *class)
 
 #ifndef DISABLE_REFLECTION_EMIT
 static gboolean
-is_sre_array (MonoClass *class)
+is_sre_array (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection.Emit", "ArrayType");
+       check_corlib_type_cached (klass, "System.Reflection.Emit", "ArrayType");
 }
 
 static gboolean
-is_sre_byref (MonoClass *class)
+is_sre_byref (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection.Emit", "ByRefType");
+       check_corlib_type_cached (klass, "System.Reflection.Emit", "ByRefType");
 }
 
 static gboolean
-is_sre_pointer (MonoClass *class)
+is_sre_pointer (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection.Emit", "PointerType");
+       check_corlib_type_cached (klass, "System.Reflection.Emit", "PointerType");
 }
 
 static gboolean
-is_sre_generic_instance (MonoClass *class)
+is_sre_generic_instance (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection", "MonoGenericClass");
+       check_corlib_type_cached (klass, "System.Reflection", "MonoGenericClass");
 }
 
 static gboolean
-is_sre_type_builder (MonoClass *class)
+is_sre_type_builder (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection.Emit", "TypeBuilder");
+       check_corlib_type_cached (klass, "System.Reflection.Emit", "TypeBuilder");
 }
 
 static gboolean
-is_sre_method_builder (MonoClass *class)
+is_sre_method_builder (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection.Emit", "MethodBuilder");
+       check_corlib_type_cached (klass, "System.Reflection.Emit", "MethodBuilder");
 }
 
 static gboolean
-is_sre_ctor_builder (MonoClass *class)
+is_sre_ctor_builder (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection.Emit", "ConstructorBuilder");
+       check_corlib_type_cached (klass, "System.Reflection.Emit", "ConstructorBuilder");
 }
 
 static gboolean
-is_sre_field_builder (MonoClass *class)
+is_sre_field_builder (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection.Emit", "FieldBuilder");
+       check_corlib_type_cached (klass, "System.Reflection.Emit", "FieldBuilder");
 }
 
 static gboolean
-is_sre_method_on_tb_inst (MonoClass *class)
+is_sre_method_on_tb_inst (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection.Emit", "MethodOnTypeBuilderInst");
+       check_corlib_type_cached (klass, "System.Reflection.Emit", "MethodOnTypeBuilderInst");
 }
 
 static gboolean
-is_sre_ctor_on_tb_inst (MonoClass *class)
+is_sre_ctor_on_tb_inst (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection.Emit", "ConstructorOnTypeBuilderInst");
+       check_corlib_type_cached (klass, "System.Reflection.Emit", "ConstructorOnTypeBuilderInst");
 }
 
 MonoType*
 mono_reflection_type_get_handle (MonoReflectionType* ref)
 {
-       MonoClass *class;
+       MonoClass *klass;
        if (!ref)
                return NULL;
        if (ref->type)
@@ -9489,9 +9642,9 @@ mono_reflection_type_get_handle (MonoReflectionType* ref)
                        return ref->type;
        }
 
-       class = mono_object_class (ref);
+       klass = mono_object_class (ref);
 
-       if (is_sre_array (class)) {
+       if (is_sre_array (klass)) {
                MonoType *res;
                MonoReflectionArrayType *sre_array = (MonoReflectionArrayType*)ref;
                MonoType *base = mono_reflection_type_get_handle (sre_array->element_type);
@@ -9502,7 +9655,7 @@ mono_reflection_type_get_handle (MonoReflectionType* ref)
                        res = &mono_bounded_array_class_get (mono_class_from_mono_type (base), sre_array->rank, TRUE)->byval_arg;
                sre_array->type.type = res;
                return res;
-       } else if (is_sre_byref (class)) {
+       } else if (is_sre_byref (klass)) {
                MonoType *res;
                MonoReflectionDerivedType *sre_byref = (MonoReflectionDerivedType*)ref;
                MonoType *base = mono_reflection_type_get_handle (sre_byref->element_type);
@@ -9510,7 +9663,7 @@ mono_reflection_type_get_handle (MonoReflectionType* ref)
                res = &mono_class_from_mono_type (base)->this_arg;
                sre_byref->type.type = res;
                return res;
-       } else if (is_sre_pointer (class)) {
+       } else if (is_sre_pointer (klass)) {
                MonoType *res;
                MonoReflectionDerivedType *sre_pointer = (MonoReflectionDerivedType*)ref;
                MonoType *base = mono_reflection_type_get_handle (sre_pointer->element_type);
@@ -9518,7 +9671,7 @@ mono_reflection_type_get_handle (MonoReflectionType* ref)
                res = &mono_ptr_class_get (base)->byval_arg;
                sre_pointer->type.type = res;
                return res;
-       } else if (is_sre_generic_instance (class)) {
+       } else if (is_sre_generic_instance (klass)) {
                MonoType *res, **types;
                MonoReflectionGenericClass *gclass = (MonoReflectionGenericClass*)ref;
                int i, count;
@@ -9526,7 +9679,7 @@ mono_reflection_type_get_handle (MonoReflectionType* ref)
                count = mono_array_length (gclass->type_arguments);
                types = g_new0 (MonoType*, count);
                for (i = 0; i < count; ++i) {
-                       MonoReflectionType *t = mono_array_get (gclass->type_arguments, gpointer, i);
+                       MonoReflectionType *t = (MonoReflectionType *)mono_array_get (gclass->type_arguments, gpointer, i);
                        types [i] = mono_reflection_type_get_handle (t);
                        if (!types[i]) {
                                g_free (types);
@@ -9558,18 +9711,18 @@ mono_reflection_register_with_runtime (MonoReflectionType *type)
 {
        MonoType *res = mono_reflection_type_get_handle (type);
        MonoDomain *domain = mono_object_domain ((MonoObject*)type);
-       MonoClass *class;
+       MonoClass *klass;
 
        if (!res)
                mono_raise_exception (mono_get_exception_argument (NULL, "Invalid generic instantiation, one or more arguments are not proper user types"));
 
-       class = mono_class_from_mono_type (res);
+       klass = mono_class_from_mono_type (res);
 
        mono_loader_lock (); /*same locking as mono_type_get_object*/
        mono_domain_lock (domain);
 
-       if (!image_is_dynamic (class->image)) {
-               mono_class_setup_supertypes (class);
+       if (!image_is_dynamic (klass->image)) {
+               mono_class_setup_supertypes (klass);
        } else {
                if (!domain->type_hash)
                        domain->type_hash = mono_g_hash_table_new_type ((GHashFunc)mono_metadata_type_hash, 
@@ -9590,7 +9743,7 @@ parameters_to_signature (MonoImage *image, MonoArray *parameters) {
 
        count = parameters? mono_array_length (parameters): 0;
 
-       sig = image_g_malloc0 (image, MONO_SIZEOF_METHOD_SIGNATURE + sizeof (MonoType*) * count);
+       sig = (MonoMethodSignature *)image_g_malloc0 (image, MONO_SIZEOF_METHOD_SIGNATURE + sizeof (MonoType*) * count);
        sig->param_count = count;
        sig->sentinelpos = -1; /* FIXME */
        for (i = 0; i < count; ++i)
@@ -9678,13 +9831,13 @@ mono_reflection_register_with_runtime (MonoReflectionType *type)
 }
 
 static gboolean
-is_sre_type_builder (MonoClass *class)
+is_sre_type_builder (MonoClass *klass)
 {
        return FALSE;
 }
 
 static gboolean
-is_sre_generic_instance (MonoClass *class)
+is_sre_generic_instance (MonoClass *klass)
 {
        return FALSE;
 }
@@ -9698,52 +9851,52 @@ init_type_builder_generics (MonoObject *type)
 
 
 static gboolean
-is_sr_mono_field (MonoClass *class)
+is_sr_mono_field (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection", "MonoField");
+       check_corlib_type_cached (klass, "System.Reflection", "MonoField");
 }
 
 static gboolean
-is_sr_mono_property (MonoClass *class)
+is_sr_mono_property (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection", "MonoProperty");
+       check_corlib_type_cached (klass, "System.Reflection", "MonoProperty");
 }
 
 static gboolean
-is_sr_mono_method (MonoClass *class)
+is_sr_mono_method (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection", "MonoMethod");
+       check_corlib_type_cached (klass, "System.Reflection", "MonoMethod");
 }
 
 static gboolean
-is_sr_mono_cmethod (MonoClass *class)
+is_sr_mono_cmethod (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection", "MonoCMethod");
+       check_corlib_type_cached (klass, "System.Reflection", "MonoCMethod");
 }
 
 static gboolean
-is_sr_mono_generic_method (MonoClass *class)
+is_sr_mono_generic_method (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection", "MonoGenericMethod");
+       check_corlib_type_cached (klass, "System.Reflection", "MonoGenericMethod");
 }
 
 static gboolean
-is_sr_mono_generic_cmethod (MonoClass *class)
+is_sr_mono_generic_cmethod (MonoClass *klass)
 {
-       check_corlib_type_cached (class, "System.Reflection", "MonoGenericCMethod");
+       check_corlib_type_cached (klass, "System.Reflection", "MonoGenericCMethod");
 }
 
 gboolean
-mono_class_is_reflection_method_or_constructor (MonoClass *class)
+mono_class_is_reflection_method_or_constructor (MonoClass *klass)
 {
-       return is_sr_mono_method (class) || is_sr_mono_cmethod (class) || is_sr_mono_generic_method (class) || is_sr_mono_generic_cmethod (class);
+       return is_sr_mono_method (klass) || is_sr_mono_cmethod (klass) || is_sr_mono_generic_method (klass) || is_sr_mono_generic_cmethod (klass);
 }
 
 static gboolean
 is_usertype (MonoReflectionType *ref)
 {
-       MonoClass *class = mono_object_class (ref);
-       return class->image != mono_defaults.corlib || strcmp ("TypeDelegator", class->name) == 0;
+       MonoClass *klass = mono_object_class (ref);
+       return klass->image != mono_defaults.corlib || strcmp ("TypeDelegator", klass->name) == 0;
 }
 
 static MonoReflectionType*
@@ -9780,7 +9933,7 @@ encode_cattr_value (MonoAssembly *assembly, char *buffer, char *p, char **retbuf
        if ((p-buffer) + 10 >= *buflen) {
                char *newbuf;
                *buflen *= 2;
-               newbuf = g_realloc (buffer, *buflen);
+               newbuf = (char *)g_realloc (buffer, *buflen);
                p = newbuf + (p-buffer);
                buffer = newbuf;
        }
@@ -9836,7 +9989,7 @@ handle_enum:
                        char *newbuf;
                        *buflen *= 2;
                        *buflen += slen;
-                       newbuf = g_realloc (buffer, *buflen);
+                       newbuf = (char *)g_realloc (buffer, *buflen);
                        p = newbuf + (p-buffer);
                        buffer = newbuf;
                }
@@ -9860,7 +10013,7 @@ handle_type:
                        char *newbuf;
                        *buflen *= 2;
                        *buflen += slen;
-                       newbuf = g_realloc (buffer, *buflen);
+                       newbuf = (char *)g_realloc (buffer, *buflen);
                        p = newbuf + (p-buffer);
                        buffer = newbuf;
                }
@@ -9962,7 +10115,7 @@ handle_type:
                        char *newbuf;
                        *buflen *= 2;
                        *buflen += slen;
-                       newbuf = g_realloc (buffer, *buflen);
+                       newbuf = (char *)g_realloc (buffer, *buflen);
                        p = newbuf + (p-buffer);
                        buffer = newbuf;
                }
@@ -10034,7 +10187,7 @@ encode_named_val (MonoReflectionAssembly *assembly, char *buffer, char *p, char
                char *newbuf;
                *buflen *= 2;
                *buflen += len;
-               newbuf = g_realloc (buffer, *buflen);
+               newbuf = (char *)g_realloc (buffer, *buflen);
                p = newbuf + (p-buffer);
                buffer = newbuf;
        }
@@ -10081,7 +10234,7 @@ mono_reflection_get_custom_attrs_blob (MonoReflectionAssembly *assembly, MonoObj
 
        g_assert (mono_array_length (ctorArgs) == sig->param_count);
        buflen = 256;
-       p = buffer = g_malloc (buflen);
+       p = buffer = (char *)g_malloc (buflen);
        /* write the prolog */
        *p++ = 1;
        *p++ = 0;
@@ -10102,7 +10255,7 @@ mono_reflection_get_custom_attrs_blob (MonoReflectionAssembly *assembly, MonoObj
                        MonoType *ptype;
                        char *pname;
 
-                       prop = mono_array_get (properties, gpointer, i);
+                       prop = (MonoObject *)mono_array_get (properties, gpointer, i);
                        get_prop_name_and_type (prop, &pname, &ptype);
                        *p++ = 0x54; /* PROPERTY signature */
                        encode_named_val (assembly, buffer, p, &buffer, &p, &buflen, ptype, pname, (MonoObject*)mono_array_get (propValues, gpointer, i));
@@ -10116,7 +10269,7 @@ mono_reflection_get_custom_attrs_blob (MonoReflectionAssembly *assembly, MonoObj
                        MonoType *ftype;
                        char *fname;
 
-                       field = mono_array_get (fields, gpointer, i);
+                       field = (MonoObject *)mono_array_get (fields, gpointer, i);
                        get_field_name_and_type (field, &fname, &ftype);
                        *p++ = 0x53; /* FIELD signature */
                        encode_named_val (assembly, buffer, p, &buffer, &p, &buflen, ftype, fname, (MonoObject*)mono_array_get (fieldValues, gpointer, i));
@@ -10177,7 +10330,7 @@ mono_reflection_setup_internal_class (MonoReflectionTypeBuilder *tb)
                return;
        }
 
-       klass = mono_image_alloc0 (&tb->module->dynamic_image->image, sizeof (MonoClass));
+       klass = (MonoClass *)mono_image_alloc0 (&tb->module->dynamic_image->image, sizeof (MonoClass));
 
        klass->image = &tb->module->dynamic_image->image;
 
@@ -10294,16 +10447,16 @@ mono_reflection_create_generic_class (MonoReflectionTypeBuilder *tb)
 
        g_assert (tb->generic_container && (tb->generic_container->owner.klass == klass));
 
-       klass->generic_container = mono_image_alloc0 (klass->image, sizeof (MonoGenericContainer));
+       klass->generic_container = (MonoGenericContainer *)mono_image_alloc0 (klass->image, sizeof (MonoGenericContainer));
 
        klass->generic_container->owner.klass = klass;
        klass->generic_container->type_argc = count;
-       klass->generic_container->type_params = mono_image_alloc0 (klass->image, sizeof (MonoGenericParamFull) * count);
+       klass->generic_container->type_params = (MonoGenericParamFull *)mono_image_alloc0 (klass->image, sizeof (MonoGenericParamFull) * count);
 
        klass->is_generic = 1;
 
        for (i = 0; i < count; i++) {
-               MonoReflectionGenericParam *gparam = mono_array_get (tb->generic_params, gpointer, i);
+               MonoReflectionGenericParam *gparam = (MonoReflectionGenericParam *)mono_array_get (tb->generic_params, gpointer, i);
                MonoGenericParamFull *param = (MonoGenericParamFull *) mono_reflection_type_get_handle ((MonoReflectionType*)gparam)->data.generic_param;
                klass->generic_container->type_params [i] = *param;
                /*Make sure we are a diferent type instance */
@@ -10374,11 +10527,11 @@ mono_marshal_spec_from_builder (MonoImage *image, MonoAssembly *assembly,
        MonoMarshalSpec *res;
 
        res = image_g_new0 (image, MonoMarshalSpec, 1);
-       res->native = minfo->type;
+       res->native = (MonoMarshalNative)minfo->type;
 
        switch (minfo->type) {
        case MONO_NATIVE_LPARRAY:
-               res->data.array_data.elem_type = minfo->eltype;
+               res->data.array_data.elem_type = (MonoMarshalNative)minfo->eltype;
                if (minfo->has_size) {
                        res->data.array_data.param_num = minfo->param_num;
                        res->data.array_data.num_elem = minfo->count;
@@ -10563,9 +10716,9 @@ reflection_methodbuilder_to_mono_method (MonoClass *klass,
                        }
                }
 
-               header = image_g_malloc0 (image, MONO_SIZEOF_METHOD_HEADER + num_locals * sizeof (MonoType*));
+               header = (MonoMethodHeader *)image_g_malloc0 (image, MONO_SIZEOF_METHOD_HEADER + num_locals * sizeof (MonoType*));
                header->code_size = code_size;
-               header->code = image_g_malloc (image, code_size);
+               header->code = (const unsigned char *)image_g_malloc (image, code_size);
                memcpy ((char*)header->code, code, code_size);
                header->max_stack = max_stack;
                header->init_locals = rmb->init_locals;
@@ -10597,6 +10750,7 @@ reflection_methodbuilder_to_mono_method (MonoClass *klass,
                container->type_argc = count;
                container->type_params = image_g_new0 (image, MonoGenericParamFull, count);
                container->owner.method = m;
+               container->is_anonymous = FALSE; // Method is now known, container is no longer anonymous
 
                m->is_generic = TRUE;
                mono_method_set_generic_container (m, container);
@@ -10663,7 +10817,8 @@ reflection_methodbuilder_to_mono_method (MonoClass *klass,
 
                                if (pb->attrs & PARAM_ATTRIBUTE_HAS_DEFAULT) {
                                        MonoDynamicImage *assembly;
-                                       guint32 idx, def_type, len;
+                                       guint32 idx, len;
+                                       MonoTypeEnum def_type;
                                        char *p;
                                        const char *p2;
 
@@ -10677,7 +10832,7 @@ reflection_methodbuilder_to_mono_method (MonoClass *klass,
                                        p = assembly->blob.data + idx;
                                        len = mono_metadata_decode_blob_size (p, &p2);
                                        len += p2 - p;
-                                       method_aux->param_defaults [i] = image_g_malloc (image, len);
+                                       method_aux->param_defaults [i] = (uint8_t *)image_g_malloc (image, len);
                                        method_aux->param_default_types [i] = def_type;
                                        memcpy ((gpointer)method_aux->param_defaults [i], p, len);
                                }
@@ -10908,7 +11063,7 @@ mono_reflection_bind_generic_method_parameters (MonoReflectionMethod *rmethod, M
 
        type_argv = g_new0 (MonoType *, count);
        for (i = 0; i < count; i++) {
-               MonoReflectionType *garg = mono_array_get (types, gpointer, i);
+               MonoReflectionType *garg = (MonoReflectionType *)mono_array_get (types, gpointer, i);
                type_argv [i] = mono_reflection_type_get_handle (garg);
        }
        ginst = mono_metadata_get_generic_inst (count, type_argv);
@@ -11053,7 +11208,7 @@ mono_reflection_generic_class_initialize (MonoReflectionGenericClass *type, Mono
        dgclass->field_generic_types = mono_image_set_new0 (gclass->owner, MonoType*, dgclass->count_fields);
 
        for (i = 0; i < dgclass->count_fields; i++) {
-               MonoObject *obj = mono_array_get (fields, gpointer, i);
+               MonoObject *obj = (MonoObject *)mono_array_get (fields, gpointer, i);
                MonoClassField *field, *inflated_field = NULL;
 
                if (!strcmp (obj->vtable->klass->name, "FieldBuilder"))
@@ -11136,7 +11291,7 @@ fix_partial_generic_class (MonoClass *klass)
 
        if (klass->method.count != gklass->method.count) {
                klass->method.count = gklass->method.count;
-               klass->methods = mono_image_alloc (klass->image, sizeof (MonoMethod*) * (klass->method.count + 1));
+               klass->methods = (MonoMethod **)mono_image_alloc (klass->image, sizeof (MonoMethod*) * (klass->method.count + 1));
 
                for (i = 0; i < klass->method.count; i++) {
                        MonoError error;
@@ -11148,7 +11303,7 @@ fix_partial_generic_class (MonoClass *klass)
 
        if (klass->interface_count && klass->interface_count != gklass->interface_count) {
                klass->interface_count = gklass->interface_count;
-               klass->interfaces = mono_image_alloc (klass->image, sizeof (MonoClass*) * gklass->interface_count);
+               klass->interfaces = (MonoClass **)mono_image_alloc (klass->image, sizeof (MonoClass*) * gklass->interface_count);
                klass->interfaces_packed = NULL; /*make setup_interface_offsets happy*/
 
                for (i = 0; i < gklass->interface_count; ++i) {
@@ -11191,7 +11346,7 @@ ensure_generic_class_runtime_vtable (MonoClass *klass)
 static void
 ensure_runtime_vtable (MonoClass *klass)
 {
-       MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (klass);
+       MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (klass);
        int i, num, j;
 
        if (!image_is_dynamic (klass->image) || (!tb && !klass->generic_class) || klass->wastypebuilder)
@@ -11203,7 +11358,7 @@ ensure_runtime_vtable (MonoClass *klass)
                num = tb->ctors? mono_array_length (tb->ctors): 0;
                num += tb->num_methods;
                klass->method.count = num;
-               klass->methods = mono_image_alloc (klass->image, sizeof (MonoMethod*) * num);
+               klass->methods = (MonoMethod **)mono_image_alloc (klass->image, sizeof (MonoMethod*) * num);
                num = tb->ctors? mono_array_length (tb->ctors): 0;
                for (i = 0; i < num; ++i)
                        klass->methods [i] = ctorbuilder_to_mono_method (klass, mono_array_get (tb->ctors, MonoReflectionCtorBuilder*, i));
@@ -11214,7 +11369,7 @@ ensure_runtime_vtable (MonoClass *klass)
        
                if (tb->interfaces) {
                        klass->interface_count = mono_array_length (tb->interfaces);
-                       klass->interfaces = mono_image_alloc (klass->image, sizeof (MonoClass*) * klass->interface_count);
+                       klass->interfaces = (MonoClass **)mono_image_alloc (klass->image, sizeof (MonoClass*) * klass->interface_count);
                        for (i = 0; i < klass->interface_count; ++i) {
                                MonoType *iface = mono_type_array_get_and_resolve (tb->interfaces, i);
                                klass->interfaces [i] = mono_class_from_mono_type (iface);
@@ -11254,16 +11409,16 @@ ensure_runtime_vtable (MonoClass *klass)
 static MonoMethod*
 mono_reflection_method_get_handle (MonoObject *method)
 {
-       MonoClass *class = mono_object_class (method);
-       if (is_sr_mono_method (class) || is_sr_mono_generic_method (class)) {
+       MonoClass *klass = mono_object_class (method);
+       if (is_sr_mono_method (klass) || is_sr_mono_generic_method (klass)) {
                MonoReflectionMethod *sr_method = (MonoReflectionMethod*)method;
                return sr_method->method;
        }
-       if (is_sre_method_builder (class)) {
+       if (is_sre_method_builder (klass)) {
                MonoReflectionMethodBuilder *mb = (MonoReflectionMethodBuilder*)method;
                return mb->mhandle;
        }
-       if (is_sre_method_on_tb_inst (class)) {
+       if (is_sre_method_on_tb_inst (klass)) {
                MonoReflectionMethodOnTypeBuilderInst *m = (MonoReflectionMethodOnTypeBuilderInst*)method;
                MonoMethod *result;
                /*FIXME move this to a proper method and unify with resolve_object*/
@@ -11286,7 +11441,7 @@ mono_reflection_method_get_handle (MonoObject *method)
                return result;
        }
 
-       g_error ("Can't handle methods of type %s:%s", class->name_space, class->name);
+       g_error ("Can't handle methods of type %s:%s", klass->name_space, klass->name);
        return NULL;
 }
 
@@ -11347,7 +11502,7 @@ mono_reflection_get_dynamic_overrides (MonoClass *klass, MonoMethod ***overrides
 static void
 typebuilder_setup_fields (MonoClass *klass, MonoError *error)
 {
-       MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (klass);
+       MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (klass);
        MonoReflectionFieldBuilder *fb;
        MonoClassField *field;
        MonoImage *image = klass->image;
@@ -11389,7 +11544,7 @@ typebuilder_setup_fields (MonoClass *klass, MonoError *error)
 
        for (i = 0; i < klass->field.count; ++i) {
                MonoArray *rva_data;
-               fb = mono_array_get (tb->fields, gpointer, i);
+               fb = (MonoReflectionFieldBuilder *)mono_array_get (tb->fields, gpointer, i);
                field = &klass->fields [i];
                field->name = mono_string_to_utf8_image (image, fb->name, error);
                if (!mono_error_ok (error))
@@ -11404,7 +11559,7 @@ typebuilder_setup_fields (MonoClass *klass, MonoError *error)
                if ((fb->attrs & FIELD_ATTRIBUTE_HAS_FIELD_RVA) && (rva_data = fb->rva_data)) {
                        char *base = mono_array_addr (rva_data, char, 0);
                        size_t size = mono_array_length (rva_data);
-                       char *data = mono_image_alloc (klass->image, size);
+                       char *data = (char *)mono_image_alloc (klass->image, size);
                        memcpy (data, base, size);
                        klass->ext->field_def_values [i].data = data;
                }
@@ -11425,7 +11580,7 @@ typebuilder_setup_fields (MonoClass *klass, MonoError *error)
                        p = assembly->blob.data + idx;
                        len = mono_metadata_decode_blob_size (p, &p2);
                        len += p2 - p;
-                       klass->ext->field_def_values [i].data = mono_image_alloc (image, len);
+                       klass->ext->field_def_values [i].data = (const char *)mono_image_alloc (image, len);
                        memcpy ((gpointer)klass->ext->field_def_values [i].data, p, len);
                }
        }
@@ -11437,7 +11592,7 @@ typebuilder_setup_fields (MonoClass *klass, MonoError *error)
 static void
 typebuilder_setup_properties (MonoClass *klass, MonoError *error)
 {
-       MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (klass);
+       MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (klass);
        MonoReflectionPropertyBuilder *pb;
        MonoImage *image = klass->image;
        MonoProperty *properties;
@@ -11478,7 +11633,7 @@ typebuilder_setup_properties (MonoClass *klass, MonoError *error)
                        p = assembly->blob.data + idx;
                        len = mono_metadata_decode_blob_size (p, &p2);
                        len += p2 - p;
-                       klass->ext->prop_def_values [i].data = mono_image_alloc (image, len);
+                       klass->ext->prop_def_values [i].data = (const char *)mono_image_alloc (image, len);
                        memcpy ((gpointer)klass->ext->prop_def_values [i].data, p, len);
                }
        }
@@ -11521,7 +11676,7 @@ mono_reflection_event_builder_get_event_info (MonoReflectionTypeBuilder *tb, Mon
 static void
 typebuilder_setup_events (MonoClass *klass, MonoError *error)
 {
-       MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (klass);
+       MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (klass);
        MonoReflectionEventBuilder *eb;
        MonoImage *image = klass->image;
        MonoEvent *events;
@@ -11613,7 +11768,7 @@ mono_reflection_create_runtime_class (MonoReflectionTypeBuilder *tb)
        check_array_for_usertypes (tb->interfaces);
        if (tb->fields) {
                for (i = 0; i < mono_array_length (tb->fields); ++i) {
-                       MonoReflectionFieldBuilder *fb = mono_array_get (tb->fields, gpointer, i);
+                       MonoReflectionFieldBuilder *fb = (MonoReflectionFieldBuilder *)mono_array_get (tb->fields, gpointer, i);
                        if (fb) {
                                RESOLVE_TYPE (fb->type);
                                check_array_for_usertypes (fb->modreq);
@@ -11625,7 +11780,7 @@ mono_reflection_create_runtime_class (MonoReflectionTypeBuilder *tb)
        }
        if (tb->methods) {
                for (i = 0; i < mono_array_length (tb->methods); ++i) {
-                       MonoReflectionMethodBuilder *mb = mono_array_get (tb->methods, gpointer, i);
+                       MonoReflectionMethodBuilder *mb = (MonoReflectionMethodBuilder *)mono_array_get (tb->methods, gpointer, i);
                        if (mb) {
                                RESOLVE_TYPE (mb->rtype);
                                check_array_for_usertypes (mb->return_modreq);
@@ -11642,7 +11797,7 @@ mono_reflection_create_runtime_class (MonoReflectionTypeBuilder *tb)
        }
        if (tb->ctors) {
                for (i = 0; i < mono_array_length (tb->ctors); ++i) {
-                       MonoReflectionCtorBuilder *mb = mono_array_get (tb->ctors, gpointer, i);
+                       MonoReflectionCtorBuilder *mb = (MonoReflectionCtorBuilder *)mono_array_get (tb->ctors, gpointer, i);
                        if (mb) {
                                check_array_for_usertypes (mb->parameters);
                                if (mb->param_modreq)
@@ -11791,25 +11946,26 @@ mono_reflection_initialize_generic_parameter (MonoReflectionGenericParam *gparam
                if (!gparam->mbuilder->generic_container) {
                        MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)gparam->mbuilder->type;
                        MonoClass *klass = mono_class_from_mono_type (mono_reflection_type_get_handle ((MonoReflectionType*)tb));
-                       gparam->mbuilder->generic_container = mono_image_alloc0 (klass->image, sizeof (MonoGenericContainer));
+                       gparam->mbuilder->generic_container = (MonoGenericContainer *)mono_image_alloc0 (klass->image, sizeof (MonoGenericContainer));
                        gparam->mbuilder->generic_container->is_method = TRUE;
                        /* 
                         * Cannot set owner.method, since the MonoMethod is not created yet.
                         * Set the image field instead, so type_in_image () works.
                         */
-                       gparam->mbuilder->generic_container->image = klass->image;
+                       gparam->mbuilder->generic_container->is_anonymous = TRUE;
+                       gparam->mbuilder->generic_container->owner.image = klass->image;
                }
                param->param.owner = gparam->mbuilder->generic_container;
        } else if (gparam->tbuilder) {
                if (!gparam->tbuilder->generic_container) {
                        MonoClass *klass = mono_class_from_mono_type (mono_reflection_type_get_handle ((MonoReflectionType*)gparam->tbuilder));
-                       gparam->tbuilder->generic_container = mono_image_alloc0 (klass->image, sizeof (MonoGenericContainer));
+                       gparam->tbuilder->generic_container = (MonoGenericContainer *)mono_image_alloc0 (klass->image, sizeof (MonoGenericContainer));
                        gparam->tbuilder->generic_container->owner.klass = klass;
                }
                param->param.owner = gparam->tbuilder->generic_container;
        }
 
-       pklass = mono_class_from_generic_parameter ((MonoGenericParam *) param, image, gparam->mbuilder != NULL);
+       pklass = mono_class_from_generic_parameter_internal ((MonoGenericParam *) param);
 
        gparam->type.type = &pklass->byval_arg;
 
@@ -11888,7 +12044,7 @@ static MonoReferenceQueue *dynamic_method_queue;
 static void
 free_dynamic_method (void *dynamic_method)
 {
-       DynamicMethodReleaseData *data = dynamic_method;
+       DynamicMethodReleaseData *data = (DynamicMethodReleaseData *)dynamic_method;
        MonoDomain *domain = data->domain;
        MonoMethod *method = data->handle;
        guint32 dis_link;
@@ -12043,7 +12199,7 @@ mono_reflection_lookup_signature (MonoImage *image, MonoMethod *method, guint32
 
        mono_error_init (error);
 
-       sig = g_hash_table_lookup (((MonoDynamicImage*)image)->vararg_aux_hash, GUINT_TO_POINTER (token));
+       sig = (MonoMethodSignature *)g_hash_table_lookup (((MonoDynamicImage*)image)->vararg_aux_hash, GUINT_TO_POINTER (token));
        if (sig)
                return sig;
 
@@ -12092,7 +12248,7 @@ static void
 ensure_complete_type (MonoClass *klass)
 {
        if (image_is_dynamic (klass->image) && !klass->wastypebuilder && mono_class_get_ref_info (klass)) {
-               MonoReflectionTypeBuilder *tb = mono_class_get_ref_info (klass);
+               MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_class_get_ref_info (klass);
 
                mono_domain_try_type_resolve (mono_domain_get (), NULL, (MonoObject*)tb);
 
@@ -12141,7 +12297,7 @@ resolve_object (MonoImage *image, MonoObject *obj, MonoClass **handle_class, Mon
                result = ((MonoReflectionMethod*)obj)->method;
                if (context) {
                        MonoError error;
-                       result = mono_class_inflate_generic_method_checked (result, context, &error);
+                       result = mono_class_inflate_generic_method_checked ((MonoMethod *)result, context, &error);
                        g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
                }
                *handle_class = mono_defaults.methodhandle_class;
@@ -12167,7 +12323,7 @@ resolve_object (MonoImage *image, MonoObject *obj, MonoClass **handle_class, Mon
                }
                if (context) {
                        MonoError error;
-                       result = mono_class_inflate_generic_method_checked (result, context, &error);
+                       result = mono_class_inflate_generic_method_checked ((MonoMethod *)result, context, &error);
                        g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
                }
                *handle_class = mono_defaults.methodhandle_class;
@@ -12183,7 +12339,7 @@ resolve_object (MonoImage *image, MonoObject *obj, MonoClass **handle_class, Mon
                }
                if (context) {
                        MonoError error;
-                       result = mono_class_inflate_generic_method_checked (result, context, &error);
+                       result = mono_class_inflate_generic_method_checked ((MonoMethod *)result, context, &error);
                        g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
                }
                *handle_class = mono_defaults.methodhandle_class;
@@ -12193,11 +12349,11 @@ resolve_object (MonoImage *image, MonoObject *obj, MonoClass **handle_class, Mon
                ensure_complete_type (field->parent);
                if (context) {
                        MonoType *inflated = mono_class_inflate_generic_type (&field->parent->byval_arg, context);
-                       MonoClass *class = mono_class_from_mono_type (inflated);
+                       MonoClass *klass = mono_class_from_mono_type (inflated);
                        MonoClassField *inflated_field;
                        gpointer iter = NULL;
                        mono_metadata_free_type (inflated);
-                       while ((inflated_field = mono_class_get_fields (class, &iter))) {
+                       while ((inflated_field = mono_class_get_fields (klass, &iter))) {
                                if (!strcmp (field->name, inflated_field->name))
                                        break;
                        }
@@ -12339,7 +12495,7 @@ resolve_object (MonoImage *image, MonoObject *obj, MonoClass **handle_class, Mon
                        result = mono_reflection_method_on_tb_inst_get_handle (m);
                        if (context) {
                                MonoError error;
-                               result = mono_class_inflate_generic_method_checked (result, context, &error);
+                               result = mono_class_inflate_generic_method_checked ((MonoMethod *)result, context, &error);
                                g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
                        }
                } else {
index dcc60ecc5504a93656884ca5c78eb8ad47709457..cbe8b3add942c42519b415dfbec92474e5ae30f1 100644 (file)
@@ -86,14 +86,14 @@ static inline void
 remoting_lock (void)
 {
        g_assert (remoting_mutex_inited);
-       mono_mutex_lock (&remoting_mutex);
+       mono_os_mutex_lock (&remoting_mutex);
 }
 
 static inline void
 remoting_unlock (void)
 {
        g_assert (remoting_mutex_inited);
-       mono_mutex_unlock (&remoting_mutex);
+       mono_os_mutex_unlock (&remoting_mutex);
 }
 
 /*
@@ -134,7 +134,7 @@ get_cache_full (GHashTable **var, GHashFunc hash_func, GCompareFunc equal_func,
 void
 mono_remoting_init (void)
 {
-       mono_mutex_init (&remoting_mutex);
+       mono_os_mutex_init (&remoting_mutex);
        remoting_mutex_inited = TRUE;
 }
 
@@ -266,7 +266,7 @@ mono_marshal_remoting_find_in_cache (MonoMethod *method, int wrapper_type)
 
        mono_marshal_lock_internal ();
        if (mono_method_get_wrapper_cache (method)->remoting_invoke_cache)
-               wrps = g_hash_table_lookup (mono_method_get_wrapper_cache (method)->remoting_invoke_cache, method);
+               wrps = (MonoRemotingMethods *)g_hash_table_lookup (mono_method_get_wrapper_cache (method)->remoting_invoke_cache, method);
 
        if (wrps) {
                switch (wrapper_type) {
@@ -288,7 +288,7 @@ mono_marshal_remoting_find_in_cache (MonoMethod *method, int wrapper_type)
 /* Create the method from the builder and place it in the cache */
 static inline MonoMethod*
 mono_remoting_mb_create_and_cache (MonoMethod *key, MonoMethodBuilder *mb, 
-                                                               MonoMethodSignature *sig, int max_stack)
+                                                                  MonoMethodSignature *sig, int max_stack, WrapperInfo *info)
 {
        MonoMethod **res = NULL;
        MonoRemotingMethods *wrps;
@@ -297,7 +297,7 @@ mono_remoting_mb_create_and_cache (MonoMethod *key, MonoMethodBuilder *mb,
        cache = get_cache_full (&mono_method_get_wrapper_cache (key)->remoting_invoke_cache, mono_aligned_addr_hash, NULL, NULL, g_free);
 
        mono_marshal_lock_internal ();
-       wrps = g_hash_table_lookup (cache, key);
+       wrps = (MonoRemotingMethods *)g_hash_table_lookup (cache, key);
        if (!wrps) {
                wrps = g_new0 (MonoRemotingMethods, 1);
                g_hash_table_insert (cache, key, wrps);
@@ -319,7 +319,7 @@ mono_remoting_mb_create_and_cache (MonoMethod *key, MonoMethodBuilder *mb,
                mono_marshal_lock_internal ();
                if (!*res) {
                        *res = newm;
-                       mono_marshal_set_wrapper_info (*res, key);
+                       mono_marshal_set_wrapper_info (*res, info);
                        mono_marshal_unlock_internal ();
                } else {
                        mono_marshal_unlock_internal ();
@@ -354,14 +354,14 @@ mono_remoting_wrapper (MonoMethod *method, gpointer *params)
                gpointer* mparams = (gpointer*) alloca(count*sizeof(gpointer));
 
                for (i=0; i<count; i++) {
-                       MonoClass *class = mono_class_from_mono_type (sig->params [i]);
-                       if (class->valuetype) {
+                       MonoClass *klass = mono_class_from_mono_type (sig->params [i]);
+                       if (klass->valuetype) {
                                if (sig->params [i]->byref) {
                                        mparams[i] = *((gpointer *)params [i]);
                                } else {
                                        /* runtime_invoke expects a boxed instance */
                                        if (mono_class_is_nullable (mono_class_from_mono_type (sig->params [i])))
-                                               mparams[i] = mono_nullable_box (params [i], class);
+                                               mparams[i] = mono_nullable_box ((guint8 *)params [i], klass);
                                        else
                                                mparams[i] = params [i];
                                }
@@ -392,6 +392,7 @@ mono_marshal_get_remoting_invoke (MonoMethod *method)
        MonoMethodBuilder *mb;
        MonoMethod *res;
        int params_var;
+       WrapperInfo *info;
 
        g_assert (method);
 
@@ -441,7 +442,9 @@ mono_marshal_get_remoting_invoke (MonoMethod *method)
        }
 #endif
 
-       res = mono_remoting_mb_create_and_cache (method, mb, sig, sig->param_count + 16);
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_NONE);
+       info->d.remoting.method = method;
+       res = mono_remoting_mb_create_and_cache (method, mb, sig, sig->param_count + 16, info);
        mono_mb_free (mb);
 
        return res;
@@ -466,7 +469,7 @@ mono_marshal_xdomain_copy_out_value (MonoObject *src, MonoObject *dst)
                if (mt == MONO_MARSHAL_COPY) {
                        int i, len = mono_array_length ((MonoArray *)dst);
                        for (i = 0; i < len; i++) {
-                               MonoObject *item = mono_array_get ((MonoArray *)src, gpointer, i);
+                               MonoObject *item = (MonoObject *)mono_array_get ((MonoArray *)src, gpointer, i);
                                mono_array_setref ((MonoArray *)dst, i, mono_marshal_xdomain_copy_value (item));
                        }
                } else {
@@ -561,7 +564,7 @@ mono_marshal_check_domain_image (gint32 domain_id, MonoImage *image)
        
        mono_domain_assemblies_lock (domain);
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-               ass = tmp->data;
+               ass = (MonoAssembly *)tmp->data;
                if (ass->image == image)
                        break;
        }
@@ -586,6 +589,7 @@ mono_marshal_get_xappdomain_dispatch (MonoMethod *method, int *marshal_types, in
        MonoExceptionClause *main_clause;
        int pos, pos_leave;
        gboolean copy_return;
+       WrapperInfo *info;
 
        if ((res = mono_marshal_remoting_find_in_cache (method, MONO_WRAPPER_XDOMAIN_DISPATCH)))
                return res;
@@ -625,7 +629,7 @@ mono_marshal_get_xappdomain_dispatch (MonoMethod *method, int *marshal_types, in
 
        /* try */
 
-       main_clause = mono_image_alloc0 (method->klass->image, sizeof (MonoExceptionClause));
+       main_clause = (MonoExceptionClause *)mono_image_alloc0 (method->klass->image, sizeof (MonoExceptionClause));
        main_clause->try_offset = mono_mb_get_label (mb);
 
        /* Clean the call context */
@@ -824,7 +828,9 @@ mono_marshal_get_xappdomain_dispatch (MonoMethod *method, int *marshal_types, in
        mono_mb_set_clauses (mb, 1, main_clause);
 #endif
 
-       res = mono_remoting_mb_create_and_cache (method, mb, csig, csig->param_count + 16);
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_NONE);
+       info->d.remoting.method = method;
+       res = mono_remoting_mb_create_and_cache (method, mb, csig, csig->param_count + 16, info);
        mono_mb_free (mb);
 
        return res;
@@ -848,6 +854,7 @@ mono_marshal_get_xappdomain_invoke (MonoMethod *method)
        int loc_old_domainid, loc_domainid, loc_return=0, loc_serialized_exc=0, loc_context;
        int pos, pos_dispatch, pos_noex;
        gboolean copy_return = FALSE;
+       WrapperInfo *info;
 
        g_assert (method);
        
@@ -873,7 +880,7 @@ mono_marshal_get_xappdomain_invoke (MonoMethod *method)
 
        /* Count the number of parameters that need to be serialized */
 
-       marshal_types = alloca (sizeof (int) * sig->param_count);
+       marshal_types = (int *)alloca (sizeof (int) * sig->param_count);
        complex_count = complex_out_count = 0;
        for (i = 0; i < sig->param_count; i++) {
                MonoType *ptype = sig->params[i];
@@ -1151,7 +1158,9 @@ mono_marshal_get_xappdomain_invoke (MonoMethod *method)
        mono_mb_emit_byte (mb, CEE_RET);
 #endif /* DISABLE_JIT */
 
-       res = mono_remoting_mb_create_and_cache (method, mb, sig, sig->param_count + 16);
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_NONE);
+       info->d.remoting.method = method;
+       res = mono_remoting_mb_create_and_cache (method, mb, sig, sig->param_count + 16, info);
        mono_mb_free (mb);
 
        return res;
@@ -1190,6 +1199,7 @@ mono_marshal_get_remoting_invoke_with_check (MonoMethod *method)
        MonoMethodSignature *sig;
        MonoMethodBuilder *mb;
        MonoMethod *res, *native;
+       WrapperInfo *info;
        int i, pos, pos_rem;
 
        g_assert (method);
@@ -1236,7 +1246,9 @@ mono_marshal_get_remoting_invoke_with_check (MonoMethod *method)
        mono_mb_emit_byte (mb, CEE_RET);
 #endif
 
-       res = mono_remoting_mb_create_and_cache (method, mb, sig, sig->param_count + 16);
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_NONE);
+       info->d.remoting.method = method;
+       res = mono_remoting_mb_create_and_cache (method, mb, sig, sig->param_count + 16, info);
        mono_mb_free (mb);
 
        return res;
@@ -1322,7 +1334,7 @@ mono_marshal_get_ldfld_remote_wrapper (MonoClass *klass)
  *
  * This method generates a function which can be use to load a field with type
  * @type from an object. The generated function has the following signature:
- * <@type> ldfld_wrapper (MonoObject *this, MonoClass *class, MonoClassField *field, int offset)
+ * <@type> ldfld_wrapper (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, int offset)
  */
 MonoMethod *
 mono_marshal_get_ldfld_wrapper (MonoType *type)
@@ -1479,7 +1491,7 @@ mono_marshal_get_ldfld_wrapper (MonoType *type)
  *
  * This method generates a function which can be used to load a field address
  * from an object. The generated function has the following signature:
- * gpointer ldflda_wrapper (MonoObject *this, MonoClass *class, MonoClassField *field, int offset);
+ * gpointer ldflda_wrapper (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, int offset);
  */
 MonoMethod *
 mono_marshal_get_ldflda_wrapper (MonoType *type)
@@ -1683,7 +1695,7 @@ mono_marshal_get_stfld_remote_wrapper (MonoClass *klass)
  *
  * This method generates a function which can be use to store a field with type
  * @type. The generated function has the following signature:
- * void stfld_wrapper (MonoObject *this, MonoClass *class, MonoClassField *field, int offset, <@type> val)
+ * void stfld_wrapper (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, int offset, <@type> val)
  */
 MonoMethod *
 mono_marshal_get_stfld_wrapper (MonoType *type)
@@ -1994,7 +2006,7 @@ mono_marshal_xdomain_copy_value (MonoObject *val)
                if (mt == MONO_MARSHAL_COPY) {
                        int i, len = mono_array_length (acopy);
                        for (i = 0; i < len; i++) {
-                               MonoObject *item = mono_array_get (acopy, gpointer, i);
+                               MonoObject *item = (MonoObject *)mono_array_get (acopy, gpointer, i);
                                mono_array_setref (acopy, i, mono_marshal_xdomain_copy_value (item));
                        }
                }
index ccca123d00e372dbd30f25e19839e920cd3a807e..eff71fb54ad74484a3b7dabf4fdb464ec7873a68 100644 (file)
@@ -317,6 +317,7 @@ enum {
 };
 
 enum {
+       MONO_METHODBODY_DOCUMENT,
        MONO_METHODBODY_SEQ_POINTS,
        MONO_METHODBODY_SIZE
 };
index 43e06db574b9ab524bfb06748b7db29413d6f448..de9ec6a79c993c20b6f1f3f08893461f1226d722 100644 (file)
@@ -16,7 +16,7 @@
 #include <mono/metadata/object.h>
 #include <mono/metadata/exception.h>
 #include <mono/metadata/debug-helpers.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 
 #include "security-core-clr.h"
 
@@ -125,27 +125,27 @@ mono_security_core_clr_is_platform_image (MonoImage *image)
 static MonoClass*
 security_critical_attribute (void)
 {
-       static MonoClass *class = NULL;
+       static MonoClass *klass = NULL;
 
-       if (!class) {
-               class = mono_class_from_name (mono_defaults.corlib, "System.Security", 
+       if (!klass) {
+               klass = mono_class_from_name (mono_defaults.corlib, "System.Security", 
                        "SecurityCriticalAttribute");
        }
-       g_assert (class);
-       return class;
+       g_assert (klass);
+       return klass;
 }
 
 static MonoClass*
 security_safe_critical_attribute (void)
 {
-       static MonoClass *class = NULL;
+       static MonoClass *klass = NULL;
 
-       if (!class) {
-               class = mono_class_from_name (mono_defaults.corlib, "System.Security", 
+       if (!klass) {
+               klass = mono_class_from_name (mono_defaults.corlib, "System.Security", 
                        "SecuritySafeCriticalAttribute");
        }
-       g_assert (class);
-       return class;
+       g_assert (klass);
+       return klass;
 }
 
 /* sometime we get a NULL (not found) caller (e.g. get_reflection_caller) */
@@ -164,17 +164,17 @@ get_method_full_name (MonoMethod * method)
  *     debugging purposes.
  */
 static void
-set_type_load_exception_type (const char *format, MonoClass *class)
+set_type_load_exception_type (const char *format, MonoClass *klass)
 {
-       char *type_name = mono_type_get_full_name (class);
-       char *parent_name = mono_type_get_full_name (class->parent);
+       char *type_name = mono_type_get_full_name (klass);
+       char *parent_name = mono_type_get_full_name (klass->parent);
        char *message = g_strdup_printf (format, type_name, parent_name);
 
        g_free (parent_name);
        g_free (type_name);
        
        mono_trace (G_LOG_LEVEL_WARNING, MONO_TRACE_SECURITY, message);
-       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, message);
+       mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, message);
        // note: do not free string given to mono_class_set_failure
 }
 
@@ -255,30 +255,30 @@ get_default_ctor (MonoClass *klass)
  *     Reference: fxcop CA2132 rule
  */
 void
-mono_security_core_clr_check_inheritance (MonoClass *class)
+mono_security_core_clr_check_inheritance (MonoClass *klass)
 {
        MonoSecurityCoreCLRLevel class_level, parent_level;
-       MonoClass *parent = class->parent;
+       MonoClass *parent = klass->parent;
 
        if (!parent)
                return;
 
-       class_level = mono_security_core_clr_class_level (class);
+       class_level = mono_security_core_clr_class_level (klass);
        parent_level = mono_security_core_clr_class_level (parent);
 
        if (class_level < parent_level) {
                set_type_load_exception_type (
                        "Inheritance failure for type %s. Parent class %s is more restricted.",
-                       class);
+                       klass);
        } else {
                MonoMethod *parent_ctor = get_default_ctor (parent);
                if (parent_ctor && ((parent_ctor->flags & METHOD_ATTRIBUTE_PUBLIC) != 0)) {
-                       class_level = mono_security_core_clr_method_level (get_default_ctor (class), FALSE);
+                       class_level = mono_security_core_clr_method_level (get_default_ctor (klass), FALSE);
                        parent_level = mono_security_core_clr_method_level (parent_ctor, FALSE);
                        if (class_level < parent_level) {
                                set_type_load_exception_type (
                                        "Inheritance failure for type %s. Default constructor security mismatch with %s.",
-                                       class);
+                                       klass);
                        }
                }
        }
@@ -299,7 +299,7 @@ mono_security_core_clr_check_inheritance (MonoClass *class)
  *     Reference: http://msdn.microsoft.com/en-us/magazine/cc765416.aspx#id0190030
  */
 void
-mono_security_core_clr_check_override (MonoClass *class, MonoMethod *override, MonoMethod *base)
+mono_security_core_clr_check_override (MonoClass *klass, MonoMethod *override, MonoMethod *base)
 {
        MonoSecurityCoreCLRLevel base_level = mono_security_core_clr_method_level (base, FALSE);
        MonoSecurityCoreCLRLevel override_level = mono_security_core_clr_method_level (override, FALSE);
@@ -332,7 +332,7 @@ mono_security_core_clr_check_override (MonoClass *class, MonoMethod *override, M
 static gboolean
 get_caller_no_reflection_related (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer data)
 {
-       MonoMethod **dest = data;
+       MonoMethod **dest = (MonoMethod **)data;
        const char *ns;
 
        /* skip unmanaged frames */
@@ -436,7 +436,7 @@ typedef struct {
 static gboolean
 get_caller_of_elevated_trust_code (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed, gpointer data)
 {
-       ElevatedTrustCookie *cookie = data;
+       ElevatedTrustCookie *cookie = (ElevatedTrustCookie *)data;
 
        /* skip unmanaged frames and wrappers */
        if (!managed || (m->wrapper_type != MONO_WRAPPER_NONE))
@@ -917,7 +917,7 @@ mono_security_core_clr_level_from_cinfo (MonoCustomAttrInfo *cinfo, MonoImage *i
        if (cinfo && mono_custom_attrs_has_attr (cinfo, security_critical_attribute ()))
                level = MONO_SECURITY_CORE_CLR_CRITICAL;
 
-       return level;
+       return (MonoSecurityCoreCLRLevel)level;
 }
 
 /*
@@ -930,17 +930,17 @@ mono_security_core_clr_level_from_cinfo (MonoCustomAttrInfo *cinfo, MonoImage *i
  *     - a check for the class and outer class(es) ...
  */
 static MonoSecurityCoreCLRLevel
-mono_security_core_clr_class_level_no_platform_check (MonoClass *class)
+mono_security_core_clr_class_level_no_platform_check (MonoClass *klass)
 {
        MonoSecurityCoreCLRLevel level = MONO_SECURITY_CORE_CLR_TRANSPARENT;
-       MonoCustomAttrInfo *cinfo = mono_custom_attrs_from_class (class);
+       MonoCustomAttrInfo *cinfo = mono_custom_attrs_from_class (klass);
        if (cinfo) {
-               level = mono_security_core_clr_level_from_cinfo (cinfo, class->image);
+               level = mono_security_core_clr_level_from_cinfo (cinfo, klass->image);
                mono_custom_attrs_free (cinfo);
        }
 
-       if (level == MONO_SECURITY_CORE_CLR_TRANSPARENT && class->nested_in)
-               level = mono_security_core_clr_class_level_no_platform_check (class->nested_in);
+       if (level == MONO_SECURITY_CORE_CLR_TRANSPARENT && klass->nested_in)
+               level = mono_security_core_clr_class_level_no_platform_check (klass->nested_in);
 
        return level;
 }
@@ -951,13 +951,13 @@ mono_security_core_clr_class_level_no_platform_check (MonoClass *class)
  *     Return the MonoSecurityCoreCLRLevel for the specified class.
  */
 MonoSecurityCoreCLRLevel
-mono_security_core_clr_class_level (MonoClass *class)
+mono_security_core_clr_class_level (MonoClass *klass)
 {
        /* non-platform code is always Transparent - whatever the attributes says */
-       if (!mono_security_core_clr_test && !mono_security_core_clr_is_platform_image (class->image))
+       if (!mono_security_core_clr_test && !mono_security_core_clr_is_platform_image (klass->image))
                return MONO_SECURITY_CORE_CLR_TRANSPARENT;
 
-       return mono_security_core_clr_class_level_no_platform_check (class);
+       return mono_security_core_clr_class_level_no_platform_check (klass);
 }
 
 /*
@@ -1043,12 +1043,12 @@ mono_security_enable_core_clr ()
 #else
 
 void
-mono_security_core_clr_check_inheritance (MonoClass *class)
+mono_security_core_clr_check_inheritance (MonoClass *klass)
 {
 }
 
 void
-mono_security_core_clr_check_override (MonoClass *class, MonoMethod *override, MonoMethod *base)
+mono_security_core_clr_check_override (MonoClass *klass, MonoMethod *override, MonoMethod *base)
 {
 }
 
@@ -1099,7 +1099,7 @@ mono_security_core_clr_is_call_allowed (MonoMethod *caller, MonoMethod *callee)
 }
 
 MonoSecurityCoreCLRLevel
-mono_security_core_clr_class_level (MonoClass *class)
+mono_security_core_clr_class_level (MonoClass *klass)
 {
        return MONO_SECURITY_CORE_CLR_TRANSPARENT;
 }
index b8b1bcdb6f45dc7115067857bf3362efe2c8cd13..b6b594071296138a7fed75f03e6d122a98c82767 100644 (file)
@@ -372,7 +372,7 @@ mono_seq_point_data_init (SeqPointData *data, int entry_capacity)
 {
        data->entry_count = 0;
        data->entry_capacity = entry_capacity;
-       data->entries = g_malloc (sizeof (SeqPointDataEntry) * entry_capacity);
+       data->entries = (SeqPointDataEntry *)g_malloc (sizeof (SeqPointDataEntry) * entry_capacity);
 }
 
 void
@@ -402,7 +402,7 @@ mono_seq_point_data_read (SeqPointData *data, char *path)
        fsize = ftell(f);
        fseek(f, 0, SEEK_SET);
 
-       buffer_orig = buffer = g_malloc(fsize + 1);
+       buffer_orig = buffer = (guint8 *)g_malloc (fsize + 1);
        fread(buffer_orig, fsize, 1, f);
        fclose(f);
 
@@ -438,7 +438,7 @@ mono_seq_point_data_write (SeqPointData *data, char *path)
        // Add size of entry_count and native_base_offsets
        size += 4 + data->entry_count * 4;
 
-       buffer_orig = buffer = g_malloc (size);
+       buffer_orig = buffer = (guint8 *)g_malloc (size);
 
        encode_var_int (buffer, &buffer, data->entry_count);
 
index babdea43c861f9efa0580747ec19822f0a90ff0f..3f72f3f338a59069bf0323c4d7f47e035d394e4c 100644 (file)
@@ -28,7 +28,7 @@ typedef struct {
 } SeqPoint;
 
 typedef struct MonoSeqPointInfo {
-       int dummy[0];
+       int dummy [1];
 } MonoSeqPointInfo;
 
 typedef struct {
diff --git a/mono/metadata/sgen-bridge-internal.h b/mono/metadata/sgen-bridge-internal.h
deleted file mode 100644 (file)
index 60eb578..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * sgen-bridge-internal.h: The cross-GC bridge.
- *
- * Copyright (C) 2015 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef __MONO_SGENBRIDGEINTERNAL_H__
-#define __MONO_SGENBRIDGEINTERNAL_H__
-
-#include "config.h"
-
-#ifdef HAVE_SGEN_GC
-
-#include "mono/utils/mono-compiler.h"
-
-#include "mono/sgen/sgen-gc.h"
-#include "mono/metadata/sgen-bridge.h"
-
-extern volatile gboolean bridge_processing_in_progress;
-extern MonoGCBridgeCallbacks bridge_callbacks;
-
-gboolean sgen_need_bridge_processing (void);
-void sgen_bridge_reset_data (void);
-void sgen_bridge_processing_stw_step (void);
-void sgen_bridge_processing_finish (int generation);
-gboolean sgen_is_bridge_object (GCObject *obj);
-MonoGCBridgeObjectKind sgen_bridge_class_kind (MonoClass *klass);
-void sgen_bridge_register_finalized_object (GCObject *object);
-void sgen_bridge_describe_pointer (GCObject *object);
-
-gboolean sgen_is_bridge_object (GCObject *obj);
-void sgen_mark_bridge_object (GCObject *obj);
-
-gboolean sgen_bridge_handle_gc_debug (const char *opt);
-void sgen_bridge_print_gc_debug_usage (void);
-
-typedef struct {
-       void (*reset_data) (void);
-       void (*processing_stw_step) (void);
-       void (*processing_build_callback_data) (int generation);
-       void (*processing_after_callback) (int generation);
-       MonoGCBridgeObjectKind (*class_kind) (MonoClass *class);
-       void (*register_finalized_object) (GCObject *object);
-       void (*describe_pointer) (GCObject *object);
-       void (*enable_accounting) (void);
-       void (*set_dump_prefix) (const char *prefix);
-
-       /*
-        * These are set by processing_build_callback_data().
-        */
-       int num_sccs;
-       MonoGCBridgeSCC **api_sccs;
-
-       int num_xrefs;
-       MonoGCBridgeXRef *api_xrefs;
-} SgenBridgeProcessor;
-
-void sgen_old_bridge_init (SgenBridgeProcessor *collector);
-void sgen_new_bridge_init (SgenBridgeProcessor *collector);
-void sgen_tarjan_bridge_init (SgenBridgeProcessor *collector);
-void sgen_set_bridge_implementation (const char *name);
-void sgen_bridge_set_dump_prefix (const char *prefix);
-
-#endif
-
-#endif
diff --git a/mono/metadata/sgen-bridge-internals.h b/mono/metadata/sgen-bridge-internals.h
new file mode 100644 (file)
index 0000000..ac7dfb9
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * sgen-bridge-internals.h: The cross-GC bridge.
+ *
+ * Copyright (C) 2015 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __MONO_SGENBRIDGEINTERNAL_H__
+#define __MONO_SGENBRIDGEINTERNAL_H__
+
+#include "config.h"
+
+#ifdef HAVE_SGEN_GC
+
+#include "mono/utils/mono-compiler.h"
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/metadata/sgen-bridge.h"
+
+extern volatile gboolean bridge_processing_in_progress;
+extern MonoGCBridgeCallbacks bridge_callbacks;
+
+gboolean sgen_need_bridge_processing (void);
+void sgen_bridge_reset_data (void);
+void sgen_bridge_processing_stw_step (void);
+void sgen_bridge_processing_finish (int generation);
+gboolean sgen_is_bridge_object (GCObject *obj);
+MonoGCBridgeObjectKind sgen_bridge_class_kind (MonoClass *klass);
+void sgen_bridge_register_finalized_object (GCObject *object);
+void sgen_bridge_describe_pointer (GCObject *object);
+
+gboolean sgen_is_bridge_object (GCObject *obj);
+void sgen_mark_bridge_object (GCObject *obj);
+
+gboolean sgen_bridge_handle_gc_debug (const char *opt);
+void sgen_bridge_print_gc_debug_usage (void);
+
+typedef struct {
+       void (*reset_data) (void);
+       void (*processing_stw_step) (void);
+       void (*processing_build_callback_data) (int generation);
+       void (*processing_after_callback) (int generation);
+       MonoGCBridgeObjectKind (*class_kind) (MonoClass *klass);
+       void (*register_finalized_object) (GCObject *object);
+       void (*describe_pointer) (GCObject *object);
+       void (*enable_accounting) (void);
+       void (*set_dump_prefix) (const char *prefix);
+
+       /*
+        * These are set by processing_build_callback_data().
+        */
+       int num_sccs;
+       MonoGCBridgeSCC **api_sccs;
+
+       int num_xrefs;
+       MonoGCBridgeXRef *api_xrefs;
+} SgenBridgeProcessor;
+
+void sgen_old_bridge_init (SgenBridgeProcessor *collector);
+void sgen_new_bridge_init (SgenBridgeProcessor *collector);
+void sgen_tarjan_bridge_init (SgenBridgeProcessor *collector);
+void sgen_set_bridge_implementation (const char *name);
+void sgen_bridge_set_dump_prefix (const char *prefix);
+
+#endif
+
+#endif
index 9eb5b3693034dfd541355e92dd2d375925199145..5e4fa165ab0efc72fd2d09482953ab52b8ee1289 100644 (file)
 #include <stdlib.h>
 
 #include "sgen/sgen-gc.h"
-#include "sgen-bridge-internal.h"
+#include "sgen-bridge-internals.h"
 #include "sgen/sgen-hash-table.h"
 #include "sgen/sgen-qsort.h"
-#include "utils/mono-logger-internal.h"
+#include "utils/mono-logger-internals.h"
 
 MonoGCBridgeCallbacks bridge_callbacks;
 static SgenBridgeProcessor bridge_processor;
@@ -151,8 +151,8 @@ sgen_bridge_processing_stw_step (void)
 static gboolean
 is_bridge_object_dead (GCObject *obj, void *data)
 {
-       SgenHashTable *table = data;
-       unsigned char *value = sgen_hash_table_lookup (table, obj);
+       SgenHashTable *table = (SgenHashTable *)data;
+       unsigned char *value = (unsigned char *)sgen_hash_table_lookup (table, obj);
        if (!value)
                return FALSE;
        return !*value;
@@ -216,8 +216,8 @@ free_callback_data (SgenBridgeProcessor *processor)
 static int
 compare_xrefs (const void *a_ptr, const void *b_ptr)
 {
-       const MonoGCBridgeXRef *a = a_ptr;
-       const MonoGCBridgeXRef *b = b_ptr;
+       const MonoGCBridgeXRef *a = (const MonoGCBridgeXRef *)a_ptr;
+       const MonoGCBridgeXRef *b = (const MonoGCBridgeXRef *)b_ptr;
 
        if (a->src_scc_index < b->src_scc_index)
                return -1;
@@ -309,7 +309,7 @@ sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcess
                gboolean new_entry;
 
                g_assert (scc->num_objs > 0);
-               a_scc_index_ptr = sgen_hash_table_lookup (&obj_to_a_scc, scc->objs [0]);
+               a_scc_index_ptr = (int *)sgen_hash_table_lookup (&obj_to_a_scc, scc->objs [0]);
                g_assert (a_scc_index_ptr);
                a_scc_index = *a_scc_index_ptr;
 
@@ -319,7 +319,7 @@ sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcess
                g_assert (a_scc->num_objs == scc->num_objs);
 
                for (j = 1; j < scc->num_objs; ++j) {
-                       a_scc_index_ptr = sgen_hash_table_lookup (&obj_to_a_scc, scc->objs [j]);
+                       a_scc_index_ptr = (int *)sgen_hash_table_lookup (&obj_to_a_scc, scc->objs [j]);
                        g_assert (a_scc_index_ptr);
                        g_assert (*a_scc_index_ptr == a_scc_index);
                }
@@ -339,8 +339,8 @@ sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcess
         */
 
        xrefs_alloc_size = a->num_xrefs * sizeof (MonoGCBridgeXRef);
-       a_xrefs = sgen_alloc_internal_dynamic (xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG, TRUE);
-       b_xrefs = sgen_alloc_internal_dynamic (xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG, TRUE);
+       a_xrefs = (MonoGCBridgeXRef *)sgen_alloc_internal_dynamic (xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG, TRUE);
+       b_xrefs = (MonoGCBridgeXRef *)sgen_alloc_internal_dynamic (xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG, TRUE);
 
        memcpy (a_xrefs, a->api_xrefs, xrefs_alloc_size);
        for (i = 0; i < b->num_xrefs; ++i) {
@@ -349,11 +349,11 @@ sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcess
 
                g_assert (xref->src_scc_index != xref->dst_scc_index);
 
-               scc_index_ptr = sgen_hash_table_lookup (&b_scc_to_a_scc, GINT_TO_POINTER (xref->src_scc_index));
+               scc_index_ptr = (int *)sgen_hash_table_lookup (&b_scc_to_a_scc, GINT_TO_POINTER (xref->src_scc_index));
                g_assert (scc_index_ptr);
                b_xrefs [i].src_scc_index = *scc_index_ptr;
 
-               scc_index_ptr = sgen_hash_table_lookup (&b_scc_to_a_scc, GINT_TO_POINTER (xref->dst_scc_index));
+               scc_index_ptr = (int *)sgen_hash_table_lookup (&b_scc_to_a_scc, GINT_TO_POINTER (xref->dst_scc_index));
                g_assert (scc_index_ptr);
                b_xrefs [i].dst_scc_index = *scc_index_ptr;
        }
@@ -407,9 +407,9 @@ sgen_bridge_processing_finish (int generation)
 }
 
 MonoGCBridgeObjectKind
-sgen_bridge_class_kind (MonoClass *class)
+sgen_bridge_class_kind (MonoClass *klass)
 {
-       return bridge_processor.class_kind (class);
+       return bridge_processor.class_kind (klass);
 }
 
 void
@@ -442,9 +442,9 @@ set_dump_prefix (const char *prefix)
 static const char *bridge_class;
 
 static MonoGCBridgeObjectKind
-bridge_test_bridge_class_kind (MonoClass *class)
+bridge_test_bridge_class_kind (MonoClass *klass)
 {
-       if (!strcmp (bridge_class, class->name))
+       if (!strcmp (bridge_class, klass->name))
                return GC_BRIDGE_TRANSPARENT_BRIDGE_CLASS;
        return GC_BRIDGE_TRANSPARENT_CLASS;
 }
index 2a658f7870f091b8198a00074a614cb4a11d250f..28bf2caf759969be762332c9d9cc4eea504022fd 100644 (file)
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
+/*
+ * The bridge is a mechanism for SGen to let clients override the death of some
+ * unreachable objects.  We use it in monodroid to do garbage collection across
+ * the Mono and Java heaps.
+ *
+ * The client can designate some objects as "bridged", which means that they
+ * participate in the bridge processing step once SGen considers them
+ * unreachable, i.e., dead.  Bridged objects must be registered for
+ * finalization.
+ *
+ * When SGen is done marking, it puts together a list of all dead bridged
+ * objects and then does a strongly connected component analysis over their
+ * object graph.  That graph will usually contain non-bridged objects, too.
+ *
+ * The output of the SCC analysis is passed to the `cross_references()`
+ * callback.  It is expected to set the `is_alive` flag on those strongly
+ * connected components that it wishes to be kept alive.  Only bridged objects
+ * will be reported to the callback, i.e., non-bridged objects are removed from
+ * the callback graph.
+ *
+ * In monodroid each bridged object has a corresponding Java mirror object.  In
+ * the bridge callback it reifies the Mono object graph in the Java heap so that
+ * the full, combined object graph is now instantiated on the Java side.  Then
+ * it triggers a Java GC, waits for it to finish, and checks which of the Java
+ * mirror objects are still alive.  For those it sets the `is_alive` flag and
+ * returns from the callback.
+ *
+ * The SCC analysis is done while the world is stopped, but the callback is made
+ * with the world running again.  Weak links to bridged objects and other
+ * objects reachable from them are kept until the callback returns, at which
+ * point all links to bridged objects that don't have `is_alive` set are nulled.
+ * Note that weak links to non-bridged objects reachable from bridged objects
+ * are not nulled.  This might be considered a bug.
+ */
+
 #ifndef _MONO_SGEN_BRIDGE_H_
 #define _MONO_SGEN_BRIDGE_H_
 
@@ -56,7 +91,16 @@ typedef struct {
 
 typedef struct {
        int bridge_version;
+       /*
+        * Tells the runtime which classes to even consider when looking for
+        * bridged objects.  If subclasses are to be considered as well, the
+        * subclass check must be done in the callback.
+        */
        MonoGCBridgeObjectKind (*bridge_class_kind) (MonoClass *klass);
+       /*
+        * This is only called on objects for whose classes
+        * `bridge_class_kind()` returned `XXX_BRIDGE_CLASS`.
+        */
        mono_bool (*is_bridge_object) (MonoObject *object);
        void (*cross_references) (int num_sccs, MonoGCBridgeSCC **sccs, int num_xrefs, MonoGCBridgeXRef *xrefs);
 } MonoGCBridgeCallbacks;
index e986ae0c2ed5ba451d3c3b34204e27ae687405fa..71906968539f8ebb845ab1f53f5de001d4b8b222 100644 (file)
@@ -88,10 +88,10 @@ struct _SgenClientThreadInfo {
 #include "metadata/profiler-private.h"
 #include "utils/dtrace.h"
 #include "utils/mono-counters.h"
-#include "utils/mono-logger-internal.h"
+#include "utils/mono-logger-internals.h"
 #include "utils/mono-time.h"
-#include "utils/mono-semaphore.h"
-#include "metadata/sgen-bridge-internal.h"
+#include "utils/mono-os-semaphore.h"
+#include "metadata/sgen-bridge-internals.h"
 
 extern void mono_sgen_register_moved_object (void *obj, void *destination);
 extern void mono_sgen_gc_event_moves (void);
@@ -114,7 +114,7 @@ sgen_mono_array_size (GCVTable vtable, MonoArray *array, mword *bounds_size, mwo
        else
                element_size = vtable->klass->sizes.element_size;
 
-       size_without_bounds = size = sizeof (MonoArray) + element_size * mono_array_length_fast (array);
+       size_without_bounds = size = MONO_SIZEOF_MONO_ARRAY + element_size * mono_array_length_fast (array);
 
        if (G_UNLIKELY (array->bounds)) {
                size += sizeof (mono_array_size_t) - 1;
@@ -244,14 +244,14 @@ extern gboolean sgen_mono_xdomain_checks;
 static gboolean G_GNUC_UNUSED
 sgen_client_object_has_critical_finalizer (GCObject *obj)
 {
-       MonoClass *class;
+       MonoClass *klass;
 
        if (!mono_defaults.critical_finalizer_object)
                return FALSE;
 
-       class = SGEN_LOAD_VTABLE (obj)->klass;
+       klass = SGEN_LOAD_VTABLE (obj)->klass;
 
-       return mono_class_has_parent_fast (class, mono_defaults.critical_finalizer_object);
+       return mono_class_has_parent_fast (klass, mono_defaults.critical_finalizer_object);
 }
 
 const char* sgen_client_vtable_get_namespace (GCVTable vtable);
@@ -401,7 +401,7 @@ sgen_client_binary_protocol_block_free (gpointer addr, size_t size)
 }
 
 static void G_GNUC_UNUSED
-sgen_client_binary_protocol_block_set_state (gpointer addr, size_t size, int old, int new)
+sgen_client_binary_protocol_block_set_state (gpointer addr, size_t size, int old, int new_)
 {
 }
 
@@ -560,6 +560,11 @@ sgen_client_binary_protocol_global_remset (gpointer ptr, gpointer value, gpointe
 #endif
 }
 
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_mod_union_remset (gpointer obj, gpointer ptr, gpointer value, gpointer value_vtable)
+{
+}
+
 static void G_GNUC_UNUSED
 sgen_client_binary_protocol_ptr_update (gpointer ptr, gpointer old_value, gpointer new_value, gpointer vtable, size_t size)
 {
@@ -694,9 +699,9 @@ extern MonoNativeTlsKey thread_info_key;
 
 typedef MonoSemType SgenSemaphore;
 
-#define SGEN_SEMAPHORE_INIT(sem,initial)       MONO_SEM_INIT ((sem), (initial))
-#define SGEN_SEMAPHORE_POST(sem)               MONO_SEM_POST ((sem))
-#define SGEN_SEMAPHORE_WAIT(sem)               MONO_SEM_WAIT ((sem))
+#define SGEN_SEMAPHORE_INIT(sem,initial)       mono_os_sem_init ((sem), (initial))
+#define SGEN_SEMAPHORE_POST(sem)               mono_os_sem_post ((sem))
+#define SGEN_SEMAPHORE_WAIT(sem)               mono_os_sem_wait ((sem), MONO_SEM_FLAGS_NONE)
 
 gboolean sgen_has_critical_method (void);
 gboolean sgen_is_critical_method (MonoMethod *method);
index bb06f7eec0273cf41821d64e82c7c4c77bebffb6..8d3b7c137eb4fa444980841bcfbb68b1e6cb4773 100644 (file)
 #include "metadata/abi-details.h"
 #include "metadata/mono-gc.h"
 #include "metadata/runtime.h"
-#include "metadata/sgen-bridge-internal.h"
-#include "metadata/gc-internal.h"
+#include "metadata/sgen-bridge-internals.h"
+#include "metadata/gc-internals.h"
 #include "utils/mono-memory-model.h"
-#include "utils/mono-logger-internal.h"
+#include "utils/mono-logger-internals.h"
 
 #ifdef HEAVY_STATISTICS
 static guint64 stat_wbarrier_set_arrayref = 0;
@@ -220,12 +220,14 @@ emit_nursery_check (MonoMethodBuilder *mb, int *nursery_check_return_labels, gbo
         */
        mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
        mono_mb_emit_byte (mb, CEE_MONO_LDPTR_NURSERY_START);
-       mono_mb_emit_icon (mb, DEFAULT_NURSERY_BITS);
+       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+       mono_mb_emit_byte (mb, CEE_MONO_LDPTR_NURSERY_BITS);
        mono_mb_emit_byte (mb, CEE_SHR_UN);
        mono_mb_emit_stloc (mb, shifted_nursery_start);
 
        mono_mb_emit_ldarg (mb, 0);
-       mono_mb_emit_icon (mb, DEFAULT_NURSERY_BITS);
+       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+       mono_mb_emit_byte (mb, CEE_MONO_LDPTR_NURSERY_BITS);
        mono_mb_emit_byte (mb, CEE_SHR_UN);
        mono_mb_emit_ldloc (mb, shifted_nursery_start);
        nursery_check_return_labels [0] = mono_mb_emit_branch (mb, CEE_BEQ);
@@ -234,7 +236,8 @@ emit_nursery_check (MonoMethodBuilder *mb, int *nursery_check_return_labels, gbo
                // if (!ptr_in_nursery (*ptr)) return;
                mono_mb_emit_ldarg (mb, 0);
                mono_mb_emit_byte (mb, CEE_LDIND_I);
-               mono_mb_emit_icon (mb, DEFAULT_NURSERY_BITS);
+               mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+               mono_mb_emit_byte (mb, CEE_MONO_LDPTR_NURSERY_BITS);
                mono_mb_emit_byte (mb, CEE_SHR_UN);
                mono_mb_emit_ldloc (mb, shifted_nursery_start);
                nursery_check_return_labels [1] = mono_mb_emit_branch (mb, CEE_BNE_UN);
@@ -249,6 +252,7 @@ mono_gc_get_specific_write_barrier (gboolean is_concurrent)
        MonoMethodBuilder *mb;
        MonoMethodSignature *sig;
        MonoMethod **write_barrier_method_addr;
+       WrapperInfo *info;
 #ifdef MANAGED_WBARRIER
        int i, nursery_check_labels [2];
 #endif
@@ -327,6 +331,8 @@ mono_gc_get_specific_write_barrier (gboolean is_concurrent)
 #endif
 #endif
        res = mono_mb_create_method (mb, sig, 16);
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_NONE);
+       mono_marshal_set_wrapper_info (res, info);
        mono_mb_free (mb);
 
        LOCK_GC;
@@ -370,7 +376,7 @@ get_array_fill_vtable (void)
 
                klass.element_class = mono_defaults.byte_class;
                klass.rank = 1;
-               klass.instance_size = sizeof (MonoArray);
+               klass.instance_size = MONO_SIZEOF_MONO_ARRAY;
                klass.sizes.element_size = 1;
                klass.name = "array_filler_type";
 
@@ -389,7 +395,7 @@ sgen_client_array_fill_range (char *start, size_t size)
 {
        MonoArray *o;
 
-       if (size < sizeof (MonoArray)) {
+       if (size < MONO_SIZEOF_MONO_ARRAY) {
                memset (start, 0, size);
                return FALSE;
        }
@@ -397,9 +403,9 @@ sgen_client_array_fill_range (char *start, size_t size)
        o = (MonoArray*)start;
        o->obj.vtable = (MonoVTable*)get_array_fill_vtable ();
        /* Mark this as not a real object */
-       o->obj.synchronisation = GINT_TO_POINTER (-1);
+       o->obj.synchronisation = (MonoThreadsSync *)GINT_TO_POINTER (-1);
        o->bounds = NULL;
-       o->max_length = (mono_array_size_t)(size - sizeof (MonoArray));
+       o->max_length = (mono_array_size_t)(size - MONO_SIZEOF_MONO_ARRAY);
 
        return TRUE;
 }
@@ -407,10 +413,10 @@ sgen_client_array_fill_range (char *start, size_t size)
 void
 sgen_client_zero_array_fill_header (void *p, size_t size)
 {
-       if (size >= sizeof (MonoArray)) {
-               memset (p, 0, sizeof (MonoArray));
+       if (size >= MONO_SIZEOF_MONO_ARRAY) {
+               memset (p, 0, MONO_SIZEOF_MONO_ARRAY);
        } else {
-               static guint8 zeros [sizeof (MonoArray)];
+               static guint8 zeros [MONO_SIZEOF_MONO_ARRAY];
 
                SGEN_ASSERT (0, !memcmp (p, zeros, size), "TLAB segment must be zeroed out.");
        }
@@ -423,12 +429,12 @@ sgen_client_zero_array_fill_header (void *p, size_t size)
 static MonoGCFinalizerCallbacks fin_callbacks;
 
 guint
-mono_gc_get_vtable_bits (MonoClass *class)
+mono_gc_get_vtable_bits (MonoClass *klass)
 {
        guint res = 0;
        /* FIXME move this to the bridge code */
        if (sgen_need_bridge_processing ()) {
-               switch (sgen_bridge_class_kind (class)) {
+               switch (sgen_bridge_class_kind (klass)) {
                case GC_BRIDGE_TRANSPARENT_BRIDGE_CLASS:
                case GC_BRIDGE_OPAQUE_BRIDGE_CLASS:
                        res = SGEN_GC_BIT_BRIDGE_OBJECT;
@@ -441,7 +447,7 @@ mono_gc_get_vtable_bits (MonoClass *class)
                }
        }
        if (fin_callbacks.is_class_finalization_aware) {
-               if (fin_callbacks.is_class_finalization_aware (class))
+               if (fin_callbacks.is_class_finalization_aware (klass))
                        res |= SGEN_GC_BIT_FINALIZER_AWARE;
        }
        return res;
@@ -513,7 +519,7 @@ mono_gc_register_for_finalization (MonoObject *obj, void *user_data)
 static gboolean
 object_in_domain_predicate (MonoObject *obj, void *user_data)
 {
-       MonoDomain *domain = user_data;
+       MonoDomain *domain = (MonoDomain *)user_data;
        if (mono_object_domain (obj) == domain) {
                SGEN_LOG (5, "Unregistering finalizer for object: %p (%s)", obj, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (obj)));
                return TRUE;
@@ -711,7 +717,7 @@ mono_gc_ephemeron_array_add (MonoObject *obj)
 
        LOCK_GC;
 
-       node = sgen_alloc_internal (INTERNAL_MEM_EPHEMERON_LINK);
+       node = (EphemeronLinkNode *)sgen_alloc_internal (INTERNAL_MEM_EPHEMERON_LINK);
        if (!node) {
                UNLOCK_GC;
                return FALSE;
@@ -967,7 +973,7 @@ mono_gc_alloc_fixed (size_t size, MonoGCDescriptor descr, MonoGCRootSource sourc
        void *res = calloc (1, size);
        if (!res)
                return NULL;
-       if (!mono_gc_register_root (res, size, descr, source, msg)) {
+       if (!mono_gc_register_root ((char *)res, size, descr, source, msg)) {
                free (res);
                res = NULL;
        }
@@ -977,7 +983,7 @@ mono_gc_alloc_fixed (size_t size, MonoGCDescriptor descr, MonoGCRootSource sourc
 void
 mono_gc_free_fixed (void* addr)
 {
-       mono_gc_deregister_root (addr);
+       mono_gc_deregister_root ((char *)addr);
        free (addr);
 }
 
@@ -1052,7 +1058,7 @@ create_allocator (int atype, gboolean slowpath)
        static gboolean registered = FALSE;
        int tlab_next_addr_var, new_next_var;
        const char *name = NULL;
-       AllocatorWrapperInfo *info;
+       WrapperInfo *info;
        int num_params, i;
 
        if (!registered) {
@@ -1162,7 +1168,7 @@ create_allocator (int atype, gboolean slowpath)
 
                mono_mb_patch_short_branch (mb, pos);
 
-               clause = mono_image_alloc0 (mono_defaults.corlib, sizeof (MonoExceptionClause));
+               clause = (MonoExceptionClause *)mono_image_alloc0 (mono_defaults.corlib, sizeof (MonoExceptionClause));
                clause->try_offset = mono_mb_get_label (mb);
 
                /* vtable->klass->sizes.element_size */
@@ -1179,7 +1185,7 @@ create_allocator (int atype, gboolean slowpath)
                mono_mb_emit_ldarg (mb, 1);
                mono_mb_emit_byte (mb, CEE_MUL_OVF_UN);
                /* + sizeof (MonoArray) */
-               mono_mb_emit_icon (mb, sizeof (MonoArray));
+               mono_mb_emit_icon (mb, MONO_SIZEOF_MONO_ARRAY);
                mono_mb_emit_byte (mb, CEE_ADD_OVF_UN);
                mono_mb_emit_stloc (mb, size_var);
 
@@ -1376,16 +1382,16 @@ create_allocator (int atype, gboolean slowpath)
        mono_mb_emit_byte (mb, CEE_RET);
 #endif
 
-       res = mono_mb_create_method (mb, csig, 8);
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_NONE);
+       info->d.alloc.gc_name = "sgen";
+       info->d.alloc.alloc_type = atype;
+
+       res = mono_mb_create (mb, csig, 8, info);
        mono_mb_free (mb);
 #ifndef DISABLE_JIT
        mono_method_get_header (res)->init_locals = FALSE;
 #endif
 
-       info = mono_image_alloc0 (mono_defaults.corlib, sizeof (AllocatorWrapperInfo));
-       info->gc_name = "sgen";
-       info->alloc_type = atype;
-       mono_marshal_set_wrapper_info (res, info);
 
        return res;
 }
@@ -1596,7 +1602,7 @@ sgen_client_cardtable_scan_object (GCObject *obj, mword block_obj_size, guint8 *
                MonoArray *arr = (MonoArray*)obj;
                guint8 *card_data, *card_base;
                guint8 *card_data_end;
-               char *obj_start = sgen_card_table_align_pointer (obj);
+               char *obj_start = (char *)sgen_card_table_align_pointer (obj);
                mword bounds_size;
                mword obj_size = sgen_mono_array_size (vt, arr, &bounds_size, sgen_vtable_get_descriptor (vt));
                /* We don't want to scan the bounds entries at the end of multidimensional arrays */
@@ -1669,13 +1675,14 @@ LOOP_HEAD:
 
                                HEAVY_STAT (++los_array_cards);
                                for (; elem < card_end; elem += SIZEOF_VOID_P) {
-                                       gpointer new, old = *(gpointer*)elem;
+                                       GCObject *new_;
+                                       gpointer old = *(gpointer*)elem;
                                        if ((mod_union && old) || G_UNLIKELY (sgen_ptr_in_nursery (old))) {
                                                HEAVY_STAT (++los_array_remsets);
                                                copy_func ((GCObject**)elem, ctx.queue);
-                                               new = *(gpointer*)elem;
-                                               if (G_UNLIKELY (sgen_ptr_in_nursery (new)))
-                                                       sgen_add_to_global_remset (elem, new);
+                                               new_ = *(GCObject **)elem;
+                                               if (G_UNLIKELY (sgen_ptr_in_nursery (new_)))
+                                                       sgen_add_to_global_remset (elem, new_);
                                        }
                                }
                        }
@@ -1945,7 +1952,7 @@ precisely_report_roots_from (GCRootReport *report, void** start_root, void** end
                }
                return;
        case ROOT_DESC_COMPLEX: {
-               gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
+               gsize *bitmap_data = (gsize *)sgen_get_complex_descriptor_bitmap (desc);
                gsize bwords = (*bitmap_data) - 1;
                void **start_run = start_root;
                bitmap_data++;
@@ -1983,7 +1990,7 @@ report_registered_roots_by_type (int root_type)
        void **start_root;
        RootRecord *root;
        report.count = 0;
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], void **, start_root, RootRecord *, root) {
                SGEN_LOG (6, "Precise root scan %p-%p (desc: %p)", start_root, root->end_root, (void*)root->root_desc);
                precisely_report_roots_from (&report, start_root, (void**)root->end_root, root->root_desc);
        } SGEN_HASH_TABLE_FOREACH_END;
@@ -2106,7 +2113,7 @@ collect_references (HeapWalkInfo *hwi, GCObject *obj, size_t size)
 static void
 walk_references (GCObject *start, size_t size, void *data)
 {
-       HeapWalkInfo *hwi = data;
+       HeapWalkInfo *hwi = (HeapWalkInfo *)data;
        hwi->called = 0;
        hwi->count = 0;
        collect_references (hwi, start, size);
@@ -2314,13 +2321,13 @@ static void *scan_area_arg_start, *scan_area_arg_end;
 void
 mono_gc_conservatively_scan_area (void *start, void *end)
 {
-       sgen_conservatively_pin_objects_from (start, end, scan_area_arg_start, scan_area_arg_end, PIN_TYPE_STACK);
+       sgen_conservatively_pin_objects_from ((void **)start, (void **)end, scan_area_arg_start, scan_area_arg_end, PIN_TYPE_STACK);
 }
 
 void*
 mono_gc_scan_object (void *obj, void *gc_data)
 {
-       ScanCopyContext *ctx = gc_data;
+       ScanCopyContext *ctx = (ScanCopyContext *)gc_data;
        ctx->ops->copy_or_mark_object ((GCObject**)&obj, ctx->queue);
        return obj;
 }
@@ -2359,13 +2366,13 @@ sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean p
                g_assert (info->client_info.suspend_done);
                SGEN_LOG (3, "Scanning thread %p, range: %p-%p, size: %zd, pinned=%zd", info, info->client_info.stack_start, info->client_info.stack_end, (char*)info->client_info.stack_end - (char*)info->client_info.stack_start, sgen_get_pinned_count ());
                if (mono_gc_get_gc_callbacks ()->thread_mark_func && !conservative_stack_mark) {
-                       mono_gc_get_gc_callbacks ()->thread_mark_func (info->client_info.runtime_data, aligned_stack_start, info->client_info.stack_end, precise, &ctx);
+                       mono_gc_get_gc_callbacks ()->thread_mark_func (info->client_info.runtime_data, (guint8 *)aligned_stack_start, (guint8 *)info->client_info.stack_end, precise, &ctx);
                } else if (!precise) {
                        if (!conservative_stack_mark) {
                                fprintf (stderr, "Precise stack mark not supported - disabling.\n");
                                conservative_stack_mark = TRUE;
                        }
-                       sgen_conservatively_pin_objects_from (aligned_stack_start, info->client_info.stack_end, start_nursery, end_nursery, PIN_TYPE_STACK);
+                       sgen_conservatively_pin_objects_from ((void **)aligned_stack_start, (void **)info->client_info.stack_end, start_nursery, end_nursery, PIN_TYPE_STACK);
                }
 
                if (!precise) {
@@ -2376,6 +2383,15 @@ sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean p
                        sgen_conservatively_pin_objects_from ((void**)&info->client_info.regs, (void**)&info->client_info.regs + ARCH_NUM_REGS,
                                        start_nursery, end_nursery, PIN_TYPE_STACK);
 #endif
+                       {
+                               // This is used on Coop GC for platforms where we cannot get the data for individual registers.
+                               // We force a spill of all registers into the stack and pass a chunk of data into sgen.
+                               MonoThreadUnwindState *state = &info->client_info.info.thread_saved_state [SELF_SUSPEND_STATE_INDEX];
+                               if (state && state->gc_stackdata) {
+                                       sgen_conservatively_pin_objects_from ((void **)state->gc_stackdata, (void**)((char*)state->gc_stackdata + state->gc_stackdata_size),
+                                               start_nursery, end_nursery, PIN_TYPE_STACK);
+                               }
+                       }
                }
        } END_FOREACH_THREAD
 }
@@ -2589,7 +2605,7 @@ sgen_client_metadata_for_object (GCObject *obj)
 gboolean
 mono_gchandle_is_in_domain (guint32 gchandle, MonoDomain *domain)
 {
-       MonoDomain *gchandle_domain = sgen_gchandle_get_metadata (gchandle);
+       MonoDomain *gchandle_domain = (MonoDomain *)sgen_gchandle_get_metadata (gchandle);
        return domain->domain_id == gchandle_domain->domain_id;
 }
 
@@ -2608,14 +2624,14 @@ mono_gchandle_free_domain (MonoDomain *unloading)
 static gpointer
 null_link_if_in_domain (gpointer hidden, GCHandleType handle_type, int max_generation, gpointer user)
 {
-       MonoDomain *unloading_domain = user;
+       MonoDomain *unloading_domain = (MonoDomain *)user;
        MonoDomain *obj_domain;
        gboolean is_weak = MONO_GC_HANDLE_TYPE_IS_WEAK (handle_type);
        if (MONO_GC_HANDLE_IS_OBJECT_POINTER (hidden)) {
-               MonoObject *obj = MONO_GC_REVEAL_POINTER (hidden, is_weak);
+               MonoObject *obj = (MonoObject *)MONO_GC_REVEAL_POINTER (hidden, is_weak);
                obj_domain = mono_object_domain (obj);
        } else {
-               obj_domain = MONO_GC_REVEAL_POINTER (hidden, is_weak);
+               obj_domain = (MonoDomain *)MONO_GC_REVEAL_POINTER (hidden, is_weak);
        }
        if (unloading_domain->domain_id == obj_domain->domain_id)
                return NULL;
@@ -2627,7 +2643,7 @@ sgen_null_links_for_domain (MonoDomain *domain)
 {
        guint type;
        for (type = HANDLE_TYPE_MIN; type < HANDLE_TYPE_MAX; ++type)
-               sgen_gchandle_iterate (type, GENERATION_OLD, null_link_if_in_domain, domain);
+               sgen_gchandle_iterate ((GCHandleType)type, GENERATION_OLD, null_link_if_in_domain, domain);
 }
 
 void
@@ -2672,12 +2688,6 @@ sgen_client_ensure_weak_gchandles_accessible (void)
                mono_gc_wait_for_bridge_processing ();
 }
 
-gboolean
-mono_gc_set_allow_synchronous_major (gboolean flag)
-{
-       return sgen_set_allow_synchronous_major (flag);
-}
-
 void*
 mono_gc_invoke_with_gc_lock (MonoGCLockedCallbackFunc func, void *data)
 {
@@ -2825,7 +2835,7 @@ sgen_client_init (void)
        cb.thread_detach = sgen_thread_detach;
        cb.thread_unregister = sgen_thread_unregister;
        cb.thread_attach = sgen_thread_attach;
-       cb.mono_method_is_critical = (gpointer)is_critical_method;
+       cb.mono_method_is_critical = (gboolean (*)(void *))is_critical_method;
        cb.mono_thread_in_critical_region = thread_in_critical_region;
 
        mono_threads_init (&cb, sizeof (SgenThreadInfo));
@@ -2902,7 +2912,11 @@ sgen_client_handle_gc_debug (const char *opt)
        if (!strcmp (opt, "xdomain-checks")) {
                sgen_mono_xdomain_checks = TRUE;
        } else if (!strcmp (opt, "do-not-finalize")) {
-               do_not_finalize = TRUE;
+               mono_do_not_finalize = TRUE;
+       } else if (g_str_has_prefix (opt, "do-not-finalize=")) {
+               opt = strchr (opt, '=') + 1;
+               mono_do_not_finalize = TRUE;
+               mono_do_not_finalize_class_names = g_strsplit (opt, ",", 0);
        } else if (!strcmp (opt, "log-finalizers")) {
                log_finalizers = TRUE;
        } else if (!strcmp (opt, "no-managed-allocator")) {
@@ -2966,6 +2980,12 @@ mono_gc_base_init (void)
 
        if (nursery_canaries_enabled ())
                sgen_set_use_managed_allocator (FALSE);
+
+#if defined(HAVE_KW_THREAD)
+       /* This can happen with using libmonosgen.so */
+       if (mono_tls_key_get_offset (TLS_KEY_SGEN_TLAB_NEXT_ADDR) == -1)
+               sgen_set_use_managed_allocator (FALSE);
+#endif
 }
 
 void
index c894b065bedb7fd513273d40edaf15945774d439..20fdb460adde86c416d941f2625f335516b3e1bb 100644 (file)
 #include <errno.h>
 
 #include "sgen/sgen-gc.h"
-#include "sgen-bridge-internal.h"
+#include "sgen-bridge-internals.h"
 #include "sgen/sgen-hash-table.h"
 #include "sgen/sgen-qsort.h"
 #include "sgen/sgen-client.h"
 #include "tabledefs.h"
-#include "utils/mono-logger-internal.h"
+#include "utils/mono-logger-internals.h"
 
 //#define NEW_XREFS
 #ifdef NEW_XREFS
@@ -199,7 +199,7 @@ dyn_array_ensure_capacity (DynArray *da, int capacity, int elem_size)
        while (capacity > da->capacity)
                da->capacity *= 2;
 
-       new_data = sgen_alloc_internal_dynamic (elem_size * da->capacity, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       new_data = (char *)sgen_alloc_internal_dynamic (elem_size * da->capacity, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        memcpy (new_data, da->data, elem_size * da->size);
        if (old_capacity > 0)
                sgen_free_internal_dynamic (da->data, elem_size * old_capacity, INTERNAL_MEM_BRIDGE_DATA);
@@ -276,7 +276,7 @@ dyn_array_int_empty (DynIntArray *da)
 static void
 dyn_array_int_add (DynIntArray *da, int x)
 {
-       int *p = dyn_array_add (&da->array, sizeof (int));
+       int *p = (int *)dyn_array_add (&da->array, sizeof (int));
        *p = x;
 }
 
@@ -374,13 +374,13 @@ dyn_array_ptr_add (DynPtrArray *da, void *ptr)
                void *ptr0 = da->array.data;
                void **p0;
                dyn_array_init (&da->array);
-               p0 = dyn_array_add (&da->array, sizeof (void*));
+               p0 = (void **)dyn_array_add (&da->array, sizeof (void*));
                *p0 = ptr0;
-               p = dyn_array_add (&da->array, sizeof (void*));
+               p = (void **)dyn_array_add (&da->array, sizeof (void*));
        } else
 #endif
        {
-               p = dyn_array_add (&da->array, sizeof (void*));
+               p = (void **)dyn_array_add (&da->array, sizeof (void*));
        }
        *p = ptr;
 }
@@ -431,7 +431,7 @@ dyn_array_scc_size (DynSCCArray *da)
 static SCC*
 dyn_array_scc_add (DynSCCArray *da)
 {
-       return dyn_array_add (&da->array, sizeof (SCC));
+       return (SCC *)dyn_array_add (&da->array, sizeof (SCC));
 }
 
 static SCC*
@@ -465,28 +465,28 @@ enable_accounting (void)
 }
 
 static MonoGCBridgeObjectKind
-class_kind (MonoClass *class)
+class_kind (MonoClass *klass)
 {
-       MonoGCBridgeObjectKind res = bridge_callbacks.bridge_class_kind (class);
+       MonoGCBridgeObjectKind res = bridge_callbacks.bridge_class_kind (klass);
 
        /* If it's a bridge, nothing we can do about it. */
        if (res == GC_BRIDGE_TRANSPARENT_BRIDGE_CLASS || res == GC_BRIDGE_OPAQUE_BRIDGE_CLASS)
                return res;
 
        /* Non bridge classes with no pointers will never point to a bridge, so we can savely ignore them. */
-       if (!class->has_references) {
-               SGEN_LOG (6, "class %s is opaque\n", class->name);
+       if (!klass->has_references) {
+               SGEN_LOG (6, "class %s is opaque\n", klass->name);
                return GC_BRIDGE_OPAQUE_CLASS;
        }
 
        /* Some arrays can be ignored */
-       if (class->rank == 1) {
-               MonoClass *elem_class = class->element_class;
+       if (klass->rank == 1) {
+               MonoClass *elem_class = klass->element_class;
 
                /* FIXME the bridge check can be quite expensive, cache it at the class level. */
                /* An array of a sealed type that is not a bridge will never get to a bridge */
                if ((elem_class->flags & TYPE_ATTRIBUTE_SEALED) && !elem_class->has_references && !bridge_callbacks.bridge_class_kind (elem_class)) {
-                       SGEN_LOG (6, "class %s is opaque\n", class->name);
+                       SGEN_LOG (6, "class %s is opaque\n", klass->name);
                        return GC_BRIDGE_OPAQUE_CLASS;
                }
        }
@@ -497,7 +497,7 @@ class_kind (MonoClass *class)
 static HashEntry*
 get_hash_entry (MonoObject *obj, gboolean *existing)
 {
-       HashEntry *entry = sgen_hash_table_lookup (&hash_table, obj);
+       HashEntry *entry = (HashEntry *)sgen_hash_table_lookup (&hash_table, obj);
        HashEntry new_entry;
 
        if (entry) {
@@ -515,7 +515,7 @@ get_hash_entry (MonoObject *obj, gboolean *existing)
 
        sgen_hash_table_replace (&hash_table, obj, &new_entry, NULL);
 
-       return sgen_hash_table_lookup (&hash_table, obj);
+       return (HashEntry *)sgen_hash_table_lookup (&hash_table, obj);
 }
 
 static void
@@ -532,7 +532,7 @@ free_data (void)
        int total_srcs = 0;
        int max_srcs = 0;
 
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                int entry_size = dyn_array_ptr_size (&entry->srcs);
                total_srcs += entry_size;
                if (entry_size > max_srcs)
@@ -647,10 +647,10 @@ dfs1 (HashEntry *obj_entry)
                char *start;
                ++dfs1_passes;
 
-               obj_entry = dyn_array_ptr_pop (&dfs_stack);
+               obj_entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
                if (obj_entry) {
                        /* obj_entry needs to be expanded */
-                       src = dyn_array_ptr_pop (&dfs_stack);
+                       src = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
 
                        if (src)
                                g_assert (!src->v.dfs1.forwarded_to);
@@ -686,8 +686,8 @@ dfs1 (HashEntry *obj_entry)
                                 */
 #ifdef OPTIMIZATION_FORWARD
                                if (!obj_entry->is_bridge && num_links == 1) {
-                                       HashEntry *dst_entry = dyn_array_ptr_pop (&dfs_stack);
-                                       HashEntry *obj_entry_again = dyn_array_ptr_pop (&dfs_stack);
+                                       HashEntry *dst_entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
+                                       HashEntry *obj_entry_again = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
                                        g_assert (obj_entry_again == obj_entry);
                                        g_assert (!dst_entry->v.dfs1.forwarded_to);
                                        if (obj_entry != dst_entry) {
@@ -709,7 +709,7 @@ dfs1 (HashEntry *obj_entry)
                } else {
                        /* obj_entry needs to be finished */
 
-                       obj_entry = dyn_array_ptr_pop (&dfs_stack);
+                       obj_entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
 
                        //g_print ("finish %s\n", sgen_safe_name (obj_entry->obj));
                        register_finishing_time (obj_entry, ++current_time);
@@ -838,7 +838,7 @@ dfs2 (HashEntry *entry)
        dyn_array_ptr_push (&dfs_stack, entry);
 
        do {
-               entry = dyn_array_ptr_pop (&dfs_stack);
+               entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
                ++dfs2_passes;
 
                if (entry->v.dfs2.scc_index >= 0) {
@@ -910,7 +910,7 @@ dump_graph (void)
        MonoObject *obj;
        HashEntry *entry;
        size_t prefix_len = strlen (dump_prefix);
-       char *filename = alloca(prefix_len + 64);
+       char *filename = (char *)alloca (prefix_len + 64);
        FILE *file;
        int edge_id = 0;
 
@@ -931,7 +931,7 @@ dump_graph (void)
                        "</attributes>\n");
 
        fprintf (file, "<nodes>\n");
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                MonoVTable *vt = SGEN_LOAD_VTABLE (obj);
                fprintf (file, "<node id=\"%p\"><attvalues><attvalue for=\"0\" value=\"%s.%s\"/><attvalue for=\"1\" value=\"%s\"/></attvalues></node>\n",
                                obj, vt->klass->name_space, vt->klass->name, entry->is_bridge ? "true" : "false");
@@ -939,10 +939,10 @@ dump_graph (void)
        fprintf (file, "</nodes>\n");
 
        fprintf (file, "<edges>\n");
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                int i;
                for (i = 0; i < dyn_array_ptr_size (&entry->srcs); ++i) {
-                       HashEntry *src = dyn_array_ptr_get (&entry->srcs, i);
+                       HashEntry *src = (HashEntry *)dyn_array_ptr_get (&entry->srcs, i);
                        fprintf (file, "<edge id=\"%d\" source=\"%p\" target=\"%p\"/>\n", edge_id++, sgen_hash_table_key_for_value_pointer (src), obj);
                }
        } SGEN_HASH_TABLE_FOREACH_END;
@@ -1017,13 +1017,13 @@ processing_stw_step (void)
        */
        bridge_count = dyn_array_ptr_size (&registered_bridges);
        for (i = 0; i < bridge_count ; ++i)
-               register_bridge_object (dyn_array_ptr_get (&registered_bridges, i));
+               register_bridge_object ((MonoObject *)dyn_array_ptr_get (&registered_bridges, i));
 
        for (i = 0; i < bridge_count; ++i)
-               dfs1 (get_hash_entry (dyn_array_ptr_get (&registered_bridges, i), NULL));
+               dfs1 (get_hash_entry ((MonoObject *)dyn_array_ptr_get (&registered_bridges, i), NULL));
 
        /* Remove all forwarded objects. */
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                if (entry->v.dfs1.forwarded_to) {
                        g_assert (dyn_array_ptr_size (&entry->srcs) == 0);
                        SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
@@ -1066,10 +1066,10 @@ processing_build_callback_data (int generation)
 
        /* alloc and fill array of all entries */
 
-       all_entries = sgen_alloc_internal_dynamic (sizeof (HashEntry*) * hash_table.num_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       all_entries = (HashEntry **)sgen_alloc_internal_dynamic (sizeof (HashEntry*) * hash_table.num_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
 
        j = 0;
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                g_assert (entry->v.dfs1.finishing_time > 0);
                all_entries [j++] = entry;
                fist_pass_links += dyn_array_ptr_size (&entry->srcs);
@@ -1080,7 +1080,7 @@ processing_build_callback_data (int generation)
        /* sort array according to decreasing finishing time */
        qsort_hash_entries (all_entries, hash_table.num_entries);
 
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                entry->v.dfs2.scc_index = -1;
        } SGEN_HASH_TABLE_FOREACH_END;
 
@@ -1231,7 +1231,7 @@ processing_build_callback_data (int generation)
                max_sccs_links = MAX (max_sccs_links, dyn_array_int_size (&scc->XREFS));
        }
 
-       api_sccs = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC*) * num_sccs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       api_sccs = (MonoGCBridgeSCC **)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC*) * num_sccs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        num_xrefs = 0;
        j = 0;
        for (i = 0; i < dyn_array_scc_size (&sccs); ++i) {
@@ -1239,7 +1239,7 @@ processing_build_callback_data (int generation)
                if (!scc->num_bridge_entries)
                        continue;
 
-               api_sccs [j] = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC) + sizeof (MonoObject*) * scc->num_bridge_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+               api_sccs [j] = (MonoGCBridgeSCC *)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC) + sizeof (MonoObject*) * scc->num_bridge_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
                api_sccs [j]->is_alive = FALSE;
                api_sccs [j]->num_objs = scc->num_bridge_entries;
                scc->num_bridge_entries = 0;
@@ -1248,14 +1248,14 @@ processing_build_callback_data (int generation)
                num_xrefs += dyn_array_int_size (&scc->XREFS);
        }
 
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, MonoObject *, obj, HashEntry *, entry) {
                if (entry->is_bridge) {
                        SCC *scc = dyn_array_scc_get_ptr (&sccs, entry->v.dfs2.scc_index);
                        api_sccs [scc->api_index]->objs [scc->num_bridge_entries++] = sgen_hash_table_key_for_value_pointer (entry);
                }
        } SGEN_HASH_TABLE_FOREACH_END;
 
-       api_xrefs = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeXRef) * num_xrefs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       api_xrefs = (MonoGCBridgeXRef *)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeXRef) * num_xrefs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        j = 0;
        for (i = 0; i < dyn_array_scc_size (&sccs); ++i) {
                int k;
@@ -1364,7 +1364,7 @@ describe_pointer (GCObject *obj)
                }
        }
 
-       entry = sgen_hash_table_lookup (&hash_table, obj);
+       entry = (HashEntry *)sgen_hash_table_lookup (&hash_table, obj);
        if (!entry)
                return;
 
index 581bb67d3a2adc38837c72c001293dfc75a3a321..83f991d5b867ce64bd230021fe7a96381fc09158 100644 (file)
 #include <stdlib.h>
 
 #include "sgen/sgen-gc.h"
-#include "sgen-bridge-internal.h"
+#include "sgen-bridge-internals.h"
 #include "sgen/sgen-hash-table.h"
 #include "sgen/sgen-qsort.h"
 #include "sgen/sgen-client.h"
-#include "utils/mono-logger-internal.h"
+#include "utils/mono-logger-internals.h"
 
 typedef struct {
        int size;
@@ -147,7 +147,7 @@ dyn_array_ensure_capacity (DynArray *da, int capacity, int elem_size)
        while (capacity > da->capacity)
                da->capacity *= 2;
 
-       new_data = sgen_alloc_internal_dynamic (elem_size * da->capacity, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       new_data = (char *)sgen_alloc_internal_dynamic (elem_size * da->capacity, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        memcpy (new_data, da->data, elem_size * da->size);
        sgen_free_internal_dynamic (da->data, elem_size * old_capacity, INTERNAL_MEM_BRIDGE_DATA);
        da->data = new_data;
@@ -193,7 +193,7 @@ dyn_array_int_set_size (DynIntArray *da, int size)
 static void
 dyn_array_int_add (DynIntArray *da, int x)
 {
-       int *p = dyn_array_add (&da->array, sizeof (int));
+       int *p = (int *)dyn_array_add (&da->array, sizeof (int));
        *p = x;
 }
 
@@ -258,7 +258,7 @@ dyn_array_ptr_get (DynPtrArray *da, int x)
 static void
 dyn_array_ptr_add (DynPtrArray *da, void *ptr)
 {
-       void **p = dyn_array_add (&da->array, sizeof (void*));
+       void **p = (void **)dyn_array_add (&da->array, sizeof (void*));
        *p = ptr;
 }
 
@@ -298,7 +298,7 @@ dyn_array_scc_size (DynSCCArray *da)
 static SCC*
 dyn_array_scc_add (DynSCCArray *da)
 {
-       return dyn_array_add (&da->array, sizeof (SCC));
+       return (SCC *)dyn_array_add (&da->array, sizeof (SCC));
 }
 
 static SCC*
@@ -400,15 +400,15 @@ enable_accounting (void)
 }
 
 static MonoGCBridgeObjectKind
-class_kind (MonoClass *class)
+class_kind (MonoClass *klass)
 {
-       return bridge_callbacks.bridge_class_kind (class);
+       return bridge_callbacks.bridge_class_kind (klass);
 }
 
 static HashEntry*
 get_hash_entry (GCObject *obj, gboolean *existing)
 {
-       HashEntry *entry = sgen_hash_table_lookup (&hash_table, obj);
+       HashEntry *entry = (HashEntry *)sgen_hash_table_lookup (&hash_table, obj);
        HashEntry new_entry;
 
        if (entry) {
@@ -428,7 +428,7 @@ get_hash_entry (GCObject *obj, gboolean *existing)
 
        sgen_hash_table_replace (&hash_table, obj, &new_entry, NULL);
 
-       return sgen_hash_table_lookup (&hash_table, obj);
+       return (HashEntry *)sgen_hash_table_lookup (&hash_table, obj);
 }
 
 static void
@@ -445,7 +445,7 @@ free_data (void)
        int total_srcs = 0;
        int max_srcs = 0;
 
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, GCObject *, obj, HashEntry *, entry) {
                int entry_size = dyn_array_ptr_size (&entry->srcs);
                total_srcs += entry_size;
                if (entry_size > max_srcs)
@@ -516,11 +516,11 @@ dfs1 (HashEntry *obj_entry)
                GCObject *obj;
                ++dfs1_passes;
 
-               obj_entry = dyn_array_ptr_pop (&dfs_stack);
+               obj_entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
                if (obj_entry) {
                        char *start;
                        mword desc;
-                       src = dyn_array_ptr_pop (&dfs_stack);
+                       src = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
 
                        obj = obj_entry->obj;
                        desc = sgen_obj_get_descriptor_safe (obj);
@@ -544,7 +544,7 @@ dfs1 (HashEntry *obj_entry)
                        start = (char*)obj;
 #include "sgen/sgen-scan-object.h"
                } else {
-                       obj_entry = dyn_array_ptr_pop (&dfs_stack);
+                       obj_entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
 
                        //g_print ("finish %s\n", sgen_safe_name (obj_entry->obj));
                        register_finishing_time (obj_entry, current_time++);
@@ -592,7 +592,7 @@ dfs2 (HashEntry *entry)
        dyn_array_ptr_push (&dfs_stack, entry);
 
        do {
-               entry = dyn_array_ptr_pop (&dfs_stack);
+               entry = (HashEntry *)dyn_array_ptr_pop (&dfs_stack);
                ++dfs2_passes;
 
                if (entry->scc_index >= 0) {
@@ -663,10 +663,10 @@ processing_stw_step (void)
        */
        bridge_count = dyn_array_ptr_size (&registered_bridges);
        for (i = 0; i < bridge_count ; ++i)
-               register_bridge_object (dyn_array_ptr_get (&registered_bridges, i));
+               register_bridge_object ((GCObject *)dyn_array_ptr_get (&registered_bridges, i));
 
        for (i = 0; i < bridge_count; ++i)
-               dfs1 (get_hash_entry (dyn_array_ptr_get (&registered_bridges, i), NULL));
+               dfs1 (get_hash_entry ((GCObject *)dyn_array_ptr_get (&registered_bridges, i), NULL));
 
        SGEN_TV_GETTIME (atv);
        step_2 = SGEN_TV_ELAPSED (btv, atv);
@@ -700,10 +700,10 @@ processing_build_callback_data (int generation)
 
        /* alloc and fill array of all entries */
 
-       all_entries = sgen_alloc_internal_dynamic (sizeof (HashEntry*) * hash_table.num_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       all_entries = (HashEntry **)sgen_alloc_internal_dynamic (sizeof (HashEntry*) * hash_table.num_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
 
        j = 0;
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, GCObject *, obj, HashEntry *, entry) {
                g_assert (entry->finishing_time >= 0);
                all_entries [j++] = entry;
                fist_pass_links += dyn_array_ptr_size (&entry->srcs);
@@ -795,7 +795,7 @@ processing_build_callback_data (int generation)
                max_sccs_links = MAX (max_sccs_links, dyn_array_int_size (&scc->xrefs));
        }
 
-       api_sccs = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC*) * num_sccs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       api_sccs = (MonoGCBridgeSCC **)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC*) * num_sccs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        num_xrefs = 0;
        j = 0;
        for (i = 0; i < dyn_array_scc_size (&sccs); ++i) {
@@ -803,7 +803,7 @@ processing_build_callback_data (int generation)
                if (!scc->num_bridge_entries)
                        continue;
 
-               api_sccs [j] = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC) + sizeof (MonoObject*) * scc->num_bridge_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+               api_sccs [j] = (MonoGCBridgeSCC *)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC) + sizeof (MonoObject*) * scc->num_bridge_entries, INTERNAL_MEM_BRIDGE_DATA, TRUE);
                api_sccs [j]->is_alive = FALSE;
                api_sccs [j]->num_objs = scc->num_bridge_entries;
                scc->num_bridge_entries = 0;
@@ -812,14 +812,14 @@ processing_build_callback_data (int generation)
                num_xrefs += dyn_array_int_size (&scc->xrefs);
        }
 
-       SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
+       SGEN_HASH_TABLE_FOREACH (&hash_table, GCObject *, obj, HashEntry *, entry) {
                if (entry->is_bridge) {
                        SCC *scc = dyn_array_scc_get_ptr (&sccs, entry->scc_index);
                        api_sccs [scc->api_index]->objs [scc->num_bridge_entries++] = (MonoObject*)entry->obj;
                }
        } SGEN_HASH_TABLE_FOREACH_END;
 
-       api_xrefs = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeXRef) * num_xrefs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       api_xrefs = (MonoGCBridgeXRef *)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeXRef) * num_xrefs, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        j = 0;
        for (i = 0; i < dyn_array_scc_size (&sccs); ++i) {
                int k;
@@ -923,7 +923,7 @@ describe_pointer (GCObject *obj)
                }
        }
 
-       entry = sgen_hash_table_lookup (&hash_table, obj);
+       entry = (HashEntry *)sgen_hash_table_lookup (&hash_table, obj);
        if (!entry)
                return;
 
index 165c0d4a4533f7f57bce63a182b2fa6f2fd1c145..fb6fc13bc451cb9dd60a04445ac6e0a37a75f377 100644 (file)
@@ -28,7 +28,7 @@
 #include "sgen/sgen-archdep.h"
 #include "sgen/sgen-protocol.h"
 #include "metadata/object-internals.h"
-#include "metadata/gc-internal.h"
+#include "metadata/gc-internals.h"
 
 
 #if defined(USE_COOP_GC)
index 46d30d81c4d664f3386c040356e0e60f2023ae4d..b6d90399bfade433128cd03b218dffe793b19992 100644 (file)
@@ -33,7 +33,7 @@
 #include "sgen/sgen-protocol.h"
 #include "sgen/sgen-thread-pool.h"
 #include "metadata/object-internals.h"
-#include "metadata/gc-internal.h"
+#include "metadata/gc-internals.h"
 
 #if defined(__MACH__)
 #include "utils/mach-support.h"
index a45d6be1d9c44c13c527d31cfa2f4eded804f868..2a8b7ad10f4420ca8d2a0cec1f3e1de393044337 100644 (file)
@@ -31,7 +31,7 @@
 #include <errno.h>
 #include <glib.h>
 #include "sgen/sgen-gc.h"
-#include "metadata/gc-internal.h"
+#include "metadata/gc-internals.h"
 #include "sgen/sgen-archdep.h"
 #include "metadata/object-internals.h"
 #include "utils/mono-signal-handler.h"
@@ -246,7 +246,7 @@ sgen_os_init (void)
                g_error ("failed sigaction");
        }
 
-       sinfo.sa_handler = (void*) restart_handler;
+       sinfo.sa_handler = (void (*)(int))restart_handler;
        if (sigaction (restart_signal_num, &sinfo, NULL) != 0) {
                g_error ("failed sigaction");
        }
index 3145a5e35353e235923ce95f58075a0f1b7526f5..8a2ae113da920483d3624c5995234a5fcfe8acca 100644 (file)
@@ -5,7 +5,7 @@
 #include "io-layer/io-layer.h"
 
 #include "sgen/sgen-gc.h"
-#include "metadata/gc-internal.h"
+#include "metadata/gc-internals.h"
 
 gboolean
 sgen_resume_thread (SgenThreadInfo *info)
index 17d86487cb3f54ed069f287d39fdc8436fe521ee..651dbb59de190cef0863ee60ba3ca6f95bad872b 100644 (file)
@@ -33,8 +33,8 @@
 #include "sgen/sgen-thread-pool.h"
 #include "metadata/profiler-private.h"
 #include "sgen/sgen-client.h"
-#include "metadata/sgen-bridge-internal.h"
-#include "metadata/gc-internal.h"
+#include "metadata/sgen-bridge-internals.h"
+#include "metadata/gc-internals.h"
 
 #define TV_DECLARE SGEN_TV_DECLARE
 #define TV_GETTIME SGEN_TV_GETTIME
@@ -103,7 +103,7 @@ is_ip_in_managed_allocator (MonoDomain *domain, gpointer ip)
         * missing methods (#13951). To work around this, we disable the AOT fallback. For this to work, the JIT needs
         * to register the jit info for all GC critical methods after they are JITted/loaded.
         */
-       ji = mono_jit_info_table_find_internal (domain, ip, FALSE, FALSE);
+       ji = mono_jit_info_table_find_internal (domain, (char *)ip, FALSE, FALSE);
        if (!ji)
                return FALSE;
 
@@ -367,7 +367,7 @@ update_sgen_info (SgenThreadInfo *info)
        char *stack_start;
 
        /* Once we remove the old suspend code, we should move sgen to directly access the state in MonoThread */
-       info->client_info.stopped_domain = mono_thread_info_tls_get (info, TLS_KEY_DOMAIN);
+       info->client_info.stopped_domain = (MonoDomain *)mono_thread_info_tls_get (info, TLS_KEY_DOMAIN);
        info->client_info.stopped_ip = (gpointer) MONO_CONTEXT_GET_IP (&mono_thread_info_get_suspend_state (info)->ctx);
        stack_start = (char*)MONO_CONTEXT_GET_SP (&mono_thread_info_get_suspend_state (info)->ctx) - REDZONE_SIZE;
 
@@ -421,7 +421,7 @@ sgen_unified_suspend_stop_world (void)
                        - We haven't accepted the previous suspend as good.
                        - We haven't gave up on it for this STW (it's either bad or asked not to)
                        */
-                       if (!mono_threads_core_check_suspend_result (info)) {
+                       if (!mono_thread_info_check_suspend_result (info)) {
                                THREADS_STW_DEBUG ("[GC-STW-RESTART] SKIP thread %p failed to finish to suspend\n", mono_thread_info_get_tid (info));
                                info->client_info.skip = TRUE;
                        } else if (mono_thread_info_in_critical_location (info)) {
index 9537c0710bee73f26bb018c8df30d9f349825e4d..e6bd1f17aa7082cdddc7f8a486aabed036c08946 100644 (file)
 #include <stdlib.h>
 
 #include "sgen/sgen-gc.h"
-#include "sgen-bridge-internal.h"
+#include "sgen-bridge-internals.h"
 #include "sgen/sgen-hash-table.h"
 #include "sgen/sgen-qsort.h"
 #include "tabledefs.h"
-#include "utils/mono-logger-internal.h"
+#include "utils/mono-logger-internals.h"
 
 typedef struct {
        int size;
@@ -88,7 +88,7 @@ dyn_array_ensure_capacity (DynArray *da, int capacity, int elem_size)
        while (capacity > da->capacity)
                da->capacity *= 2;
 
-       new_data = sgen_alloc_internal_dynamic (elem_size * da->capacity, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       new_data = (char *)sgen_alloc_internal_dynamic (elem_size * da->capacity, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        if (da->data) {
                memcpy (new_data, da->data, elem_size * da->size);
                sgen_free_internal_dynamic (da->data, elem_size * old_capacity, INTERNAL_MEM_BRIDGE_DATA);
@@ -137,7 +137,7 @@ dyn_array_ptr_get (DynPtrArray *da, int x)
 static void
 dyn_array_ptr_add (DynPtrArray *da, void *ptr)
 {
-       void **p = dyn_array_add (&da->array, sizeof (void*));
+       void **p = (void **)dyn_array_add (&da->array, sizeof (void*));
        *p = ptr;
 }
 
@@ -179,28 +179,28 @@ enable_accounting (void)
 }
 
 static MonoGCBridgeObjectKind
-class_kind (MonoClass *class)
+class_kind (MonoClass *klass)
 {
-       MonoGCBridgeObjectKind res = bridge_callbacks.bridge_class_kind (class);
+       MonoGCBridgeObjectKind res = bridge_callbacks.bridge_class_kind (klass);
 
        /* If it's a bridge, nothing we can do about it. */
        if (res == GC_BRIDGE_TRANSPARENT_BRIDGE_CLASS || res == GC_BRIDGE_OPAQUE_BRIDGE_CLASS)
                return res;
 
        /* Non bridge classes with no pointers will never point to a bridge, so we can savely ignore them. */
-       if (!class->has_references) {
-               SGEN_LOG (6, "class %s is opaque\n", class->name);
+       if (!klass->has_references) {
+               SGEN_LOG (6, "class %s is opaque\n", klass->name);
                return GC_BRIDGE_OPAQUE_CLASS;
        }
 
        /* Some arrays can be ignored */
-       if (class->rank == 1) {
-               MonoClass *elem_class = class->element_class;
+       if (klass->rank == 1) {
+               MonoClass *elem_class = klass->element_class;
 
                /* FIXME the bridge check can be quite expensive, cache it at the class level. */
                /* An array of a sealed type that is not a bridge will never get to a bridge */
                if ((elem_class->flags & TYPE_ATTRIBUTE_SEALED) && !elem_class->has_references && !bridge_callbacks.bridge_class_kind (elem_class)) {
-                       SGEN_LOG (6, "class %s is opaque\n", class->name);
+                       SGEN_LOG (6, "class %s is opaque\n", klass->name);
                        return GC_BRIDGE_OPAQUE_CLASS;
                }
        }
@@ -276,7 +276,7 @@ static int object_data_count;
 static ObjectBucket*
 new_object_bucket (void)
 {
-       ObjectBucket *res = sgen_alloc_internal (INTERNAL_MEM_TARJAN_OBJ_BUCKET);
+       ObjectBucket *res = (ObjectBucket *)sgen_alloc_internal (INTERNAL_MEM_TARJAN_OBJ_BUCKET);
        res->next_data = &res->data [0];
        return res;
 }
@@ -340,7 +340,7 @@ static int color_data_count;
 static ColorBucket*
 new_color_bucket (void)
 {
-       ColorBucket *res = sgen_alloc_internal (INTERNAL_MEM_TARJAN_OBJ_BUCKET);
+       ColorBucket *res = (ColorBucket *)sgen_alloc_internal (INTERNAL_MEM_TARJAN_OBJ_BUCKET);
        res->next_data = &res->data [0];
        return res;
 }
@@ -724,7 +724,7 @@ reduce_color (void)
        if (size == 0)
                color = NULL;
        else if (size == 1) {
-               color = dyn_array_ptr_get (&color_merge_array, 0);
+               color = (ColorData *)dyn_array_ptr_get (&color_merge_array, 0);
        } else
                color = new_color (FALSE);
 
@@ -740,7 +740,7 @@ create_scc (ScanData *data)
        ColorData *color_data = NULL;
 
        for (i = dyn_array_ptr_size (&loop_stack) - 1; i >= 0; --i) {
-               ScanData *other = dyn_array_ptr_get (&loop_stack, i);
+               ScanData *other = (ScanData *)dyn_array_ptr_get (&loop_stack, i);
                found_bridge |= other->is_bridge;
                if (found_bridge || other == data)
                        break;
@@ -769,7 +769,7 @@ create_scc (ScanData *data)
        }
 
        while (dyn_array_ptr_size (&loop_stack) > 0) {
-               ScanData *other = dyn_array_ptr_pop (&loop_stack);
+               ScanData *other = (ScanData *)dyn_array_ptr_pop (&loop_stack);
 
 #if DUMP_GRAPH
                printf ("\tmember %s (%p) index %d low-index %d color %p state %d\n", safe_name_bridge (other->obj), other->obj, other->index, other->low_index, other->color, other->state);
@@ -797,7 +797,7 @@ create_scc (ScanData *data)
        g_assert (found);
 
        for (i = 0; i < dyn_array_ptr_size (&color_merge_array); ++i) {
-               ColorData *cd  = dyn_array_ptr_get (&color_merge_array, i);
+               ColorData *cd  = (ColorData *)dyn_array_ptr_get (&color_merge_array, i);
                g_assert (cd->visited);
                cd->visited = FALSE;
        }
@@ -814,7 +814,7 @@ dfs (void)
        dyn_array_ptr_set_size (&color_merge_array, 0);
 
        while (dyn_array_ptr_size (&scan_stack) > 0) {
-               ScanData *data = dyn_array_ptr_pop (&scan_stack);
+               ScanData *data = (ScanData *)dyn_array_ptr_pop (&scan_stack);
 
                /**
                 * Ignore finished objects on stack, they happen due to loops. For example:
@@ -963,12 +963,12 @@ processing_stw_step (void)
 
        bridge_count = dyn_array_ptr_size (&registered_bridges);
        for (i = 0; i < bridge_count ; ++i)
-               register_bridge_object (dyn_array_ptr_get (&registered_bridges, i));
+               register_bridge_object ((GCObject *)dyn_array_ptr_get (&registered_bridges, i));
 
        setup_time = step_timer (&curtime);
 
        for (i = 0; i < bridge_count; ++i) {
-               ScanData *sd = find_data (dyn_array_ptr_get (&registered_bridges, i));
+               ScanData *sd = find_data ((GCObject *)dyn_array_ptr_get (&registered_bridges, i));
                if (sd->state == INITIAL) {
                        dyn_array_ptr_push (&scan_stack, sd);
                        dfs ();
@@ -999,7 +999,7 @@ gather_xrefs (ColorData *color)
 {
        int i;
        for (i = 0; i < dyn_array_ptr_size (&color->other_colors); ++i) {
-               ColorData *src = dyn_array_ptr_get (&color->other_colors, i);
+               ColorData *src = (ColorData *)dyn_array_ptr_get (&color->other_colors, i);
                if (src->visited)
                        continue;
                src->visited = TRUE;
@@ -1015,7 +1015,7 @@ reset_xrefs (ColorData *color)
 {
        int i;
        for (i = 0; i < dyn_array_ptr_size (&color->other_colors); ++i) {
-               ColorData *src = dyn_array_ptr_get (&color->other_colors, i);
+               ColorData *src = (ColorData *)dyn_array_ptr_get (&color->other_colors, i);
                if (!src->visited)
                        continue;
                src->visited = FALSE;
@@ -1049,7 +1049,7 @@ processing_build_callback_data (int generation)
 #endif
 
        /* This is a straightforward translation from colors to the bridge callback format. */
-       api_sccs = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC*) * num_colors_with_bridges, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       api_sccs = (MonoGCBridgeSCC **)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC*) * num_colors_with_bridges, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        api_index = xref_count = 0;
 
        for (cur = root_color_bucket; cur; cur = cur->next) {
@@ -1059,14 +1059,14 @@ processing_build_callback_data (int generation)
                        if (!bridges)
                                continue;
 
-                       api_sccs [api_index] = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC) + sizeof (MonoObject*) * bridges, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+                       api_sccs [api_index] = (MonoGCBridgeSCC *)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeSCC) + sizeof (MonoObject*) * bridges, INTERNAL_MEM_BRIDGE_DATA, TRUE);
                        api_sccs [api_index]->is_alive = FALSE;
                        api_sccs [api_index]->num_objs = bridges;
 
                        cd->api_index = api_index;
 
                        for (j = 0; j < bridges; ++j)
-                               api_sccs [api_index]->objs [j] = dyn_array_ptr_get (&cd->bridges, j);
+                               api_sccs [api_index]->objs [j] = (MonoObject *)dyn_array_ptr_get (&cd->bridges, j);
                        api_index++;
                }
        }
@@ -1095,7 +1095,7 @@ processing_build_callback_data (int generation)
        dump_color_table (" after xref pass", TRUE);
 #endif
 
-       api_xrefs = sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeXRef) * xref_count, INTERNAL_MEM_BRIDGE_DATA, TRUE);
+       api_xrefs = (MonoGCBridgeXRef *)sgen_alloc_internal_dynamic (sizeof (MonoGCBridgeXRef) * xref_count, INTERNAL_MEM_BRIDGE_DATA, TRUE);
        api_index = 0;
        for (cur = root_color_bucket; cur; cur = cur->next) {
                ColorData *src;
@@ -1105,7 +1105,7 @@ processing_build_callback_data (int generation)
                                continue;
 
                        for (j = 0; j < dyn_array_ptr_size (&src->other_colors); ++j) {
-                               ColorData *dest = dyn_array_ptr_get (&src->other_colors, j);
+                               ColorData *dest = (ColorData *)dyn_array_ptr_get (&src->other_colors, j);
                                g_assert (dyn_array_ptr_size (&dest->bridges)); /* We flattened the color graph, so this must never happen. */
 
                                api_xrefs [api_index].src_scc_index = src->api_index;
index 66c746b0da3e9fb00c81b0949dc3c91f1eb331e8..d9afbfa868dc9efe8a6a2eb0a31c151bb82215e2 100644 (file)
@@ -108,7 +108,7 @@ void sgen_client_mark_togglerefs (char *start, char *end, ScanCopyContext ctx)
                        }
                }
        }
-       sgen_drain_gray_stack (-1, ctx);
+       sgen_drain_gray_stack (ctx);
 }
 
 void sgen_client_clear_togglerefs (char *start, char *end, ScanCopyContext ctx)
@@ -134,7 +134,7 @@ void sgen_client_clear_togglerefs (char *start, char *end, ScanCopyContext ctx)
                        }
                }
        }
-       sgen_drain_gray_stack (-1, ctx);
+       sgen_drain_gray_stack (ctx);
 }
 
 static void
@@ -142,7 +142,7 @@ ensure_toggleref_capacity (int capacity)
 {
        if (!toggleref_array) {
                toggleref_array_capacity = 32;
-               toggleref_array = sgen_alloc_internal_dynamic (
+               toggleref_array = (MonoGCToggleRef *)sgen_alloc_internal_dynamic (
                        toggleref_array_capacity * sizeof (MonoGCToggleRef),
                        INTERNAL_MEM_TOGGLEREF_DATA,
                        TRUE);
@@ -153,7 +153,7 @@ ensure_toggleref_capacity (int capacity)
                while (toggleref_array_capacity < toggleref_array_size + capacity)
                        toggleref_array_capacity *= 2;
 
-               tmp = sgen_alloc_internal_dynamic (
+               tmp = (MonoGCToggleRef *)sgen_alloc_internal_dynamic (
                        toggleref_array_capacity * sizeof (MonoGCToggleRef),
                        INTERNAL_MEM_TOGGLEREF_DATA,
                        TRUE);
@@ -210,7 +210,7 @@ static MonoToggleRefStatus
 test_toggleref_callback (MonoObject *obj)
 {
        static MonoClassField *mono_toggleref_test_field;
-       int status = MONO_TOGGLE_REF_DROP;
+       MonoToggleRefStatus status = MONO_TOGGLE_REF_DROP;
 
        if (!mono_toggleref_test_field) {
                mono_toggleref_test_field = mono_class_get_field_from_name (mono_object_get_class (obj), "__test");
index f583341edbbc9de816ff53425813def4453e99ad..4fd446f89bebb81461676b568b7fd8e6c2f3acea 100644 (file)
 static void
 abort_syscall (gpointer data)
 {
-       MonoThreadInfo *info = data;
-
-       if (mono_threads_core_needs_abort_syscall ())
-               mono_threads_core_abort_syscall (info);
+       mono_thread_info_abort_socket_syscall_for_close ((MonoNativeThreadId) (gsize) data);
 }
 
 static gint32
@@ -651,19 +648,19 @@ ves_icall_System_Net_Sockets_Socket_Socket_internal (MonoObject *this_obj, gint3
        
        *error = 0;
        
-       sock_family=convert_family(family);
+       sock_family = convert_family ((MonoAddressFamily)family);
        if(sock_family==-1) {
                *error = WSAEAFNOSUPPORT;
                return(NULL);
        }
 
-       sock_proto=convert_proto(proto);
+       sock_proto = convert_proto ((MonoProtocolType)proto);
        if(sock_proto==-1) {
                *error = WSAEPROTONOSUPPORT;
                return(NULL);
        }
        
-       sock_type=convert_type(type);
+       sock_type = convert_type ((MonoSocketType)type);
        if(sock_type==-1) {
                *error = WSAESOCKTNOSUPPORT;
                return(NULL);
@@ -693,7 +690,10 @@ ves_icall_System_Net_Sockets_Socket_Close_internal (SOCKET sock, gint32 *error)
        /* Clear any pending work item from this socket if the underlying
         * polling system does not notify when the socket is closed */
        mono_threadpool_ms_io_remove_socket (GPOINTER_TO_INT (sock));
+
+       MONO_PREPARE_BLOCKING;
        closesocket(sock);
+       MONO_FINISH_BLOCKING;
 }
 
 gint32
@@ -749,7 +749,7 @@ ves_icall_System_Net_Sockets_Socket_Accept_internal (SOCKET sock, gint32 *error,
 
        *error = 0;
 
-       mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+       mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
        if (interrupted) {
                *error = WSAEINTR;
                return NULL;
@@ -967,12 +967,12 @@ ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal (SOCKET sock, gint32
        
        *error = 0;
        
-       salen = get_sockaddr_size (convert_family (af));
+       salen = get_sockaddr_size (convert_family ((MonoAddressFamily)af));
        if (salen == 0) {
                *error = WSAEAFNOSUPPORT;
                return NULL;
        }
-       sa = (salen <= 128) ? alloca (salen) : g_malloc0 (salen);
+       sa = (salen <= 128) ? (gchar *)alloca (salen) : (gchar *)g_malloc0 (salen);
 
        MONO_PREPARE_BLOCKING;
 
@@ -1005,12 +1005,12 @@ ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal (SOCKET sock, gint32
        
        *error = 0;
        
-       salen = get_sockaddr_size (convert_family (af));
+       salen = get_sockaddr_size (convert_family ((MonoAddressFamily)af));
        if (salen == 0) {
                *error = WSAEAFNOSUPPORT;
                return NULL;
        }
-       sa = (salen <= 128) ? alloca (salen) : g_malloc0 (salen);
+       sa = (salen <= 128) ? (gchar *)alloca (salen) : (gchar *)g_malloc0 (salen);
        /* Note: linux returns just 2 for AF_UNIX. Always. */
 
        MONO_PREPARE_BLOCKING;
@@ -1060,7 +1060,7 @@ create_sockaddr_from_object(MonoObject *saddr_obj, socklen_t *sa_size, gint32 *e
                mono_raise_exception (mono_exception_from_name(mono_get_corlib (), "System", "SystemException"));
        }
        
-       family = convert_family (mono_array_get (data, guint8, 0) + (mono_array_get (data, guint8, 1) << 8));
+       family = convert_family ((MonoAddressFamily)(mono_array_get (data, guint8, 0) + (mono_array_get (data, guint8, 1) << 8)));
        if (family == AF_INET) {
                struct sockaddr_in *sa;
                guint16 port;
@@ -1200,7 +1200,7 @@ ves_icall_System_Net_Sockets_Socket_Poll_internal (SOCKET sock, gint mode,
        start = time (NULL);
 
        do {
-               mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+               mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
                if (interrupted) {
                        g_free (pfds);
                        *error = WSAEINTR;
@@ -1233,7 +1233,7 @@ ves_icall_System_Net_Sockets_Socket_Poll_internal (SOCKET sock, gint mode,
                }
 
                if (ret == -1 && errno == EINTR) {
-                       if (mono_thread_test_state (thread, ThreadState_AbortRequested | ThreadState_StopRequested)) {
+                       if (mono_thread_test_state (thread, (MonoThreadState)(ThreadState_AbortRequested | ThreadState_StopRequested))) {
                                g_free (pfds);
                                return FALSE;
                        }
@@ -1275,7 +1275,7 @@ ves_icall_System_Net_Sockets_Socket_Connect_internal (SOCKET sock, MonoObject *s
 
        LOGDEBUG (g_message("%s: connecting to %s port %d", __func__, inet_ntoa(((struct sockaddr_in *)sa)->sin_addr), ntohs (((struct sockaddr_in *)sa)->sin_port)));
 
-       mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+       mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
        if (interrupted) {
                *error = WSAEINTR;
                return;
@@ -1335,8 +1335,8 @@ ves_icall_System_Net_Sockets_Socket_Disconnect_internal (SOCKET sock, MonoBoolea
         * pointers to functions in managed objects that still works
         * on 64bit platforms.
         */
-       ret = WSAIoctl (sock, SIO_GET_EXTENSION_FUNCTION_POINTER, (void *)&disco_guid, sizeof(GUID),
-                       (void *)&_wapi_disconnectex, sizeof(void *), &output_bytes, NULL, NULL);
+       ret = WSAIoctl (sock, SIO_GET_EXTENSION_FUNCTION_POINTER, (gchar *)&disco_guid, sizeof(GUID),
+                       (gchar *)&_wapi_disconnectex, sizeof(void *), &output_bytes, NULL, NULL);
 
        MONO_FINISH_BLOCKING;
 
@@ -1356,8 +1356,8 @@ ves_icall_System_Net_Sockets_Socket_Disconnect_internal (SOCKET sock, MonoBoolea
                 * For an explanation of why this is done, you can read
                 * the article at http://www.codeproject.com/internet/jbsocketserver3.asp
                 */
-               ret = WSAIoctl (sock, SIO_GET_EXTENSION_FUNCTION_POINTER, (void *)&trans_guid, sizeof(GUID),
-                               (void *)&_wapi_transmitfile, sizeof(void *), &output_bytes, NULL, NULL);
+               ret = WSAIoctl (sock, SIO_GET_EXTENSION_FUNCTION_POINTER, (gchar *)&trans_guid, sizeof(GUID),
+                               (gchar *)&_wapi_transmitfile, sizeof(void *), &output_bytes, NULL, NULL);
 
                MONO_FINISH_BLOCKING;
 
@@ -1365,7 +1365,7 @@ ves_icall_System_Net_Sockets_Socket_Disconnect_internal (SOCKET sock, MonoBoolea
                        _wapi_transmitfile = NULL;
        }
 
-       mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+       mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
        if (interrupted) {
                *error = WSAEINTR;
                return;
@@ -1415,7 +1415,7 @@ ves_icall_System_Net_Sockets_Socket_Receive_internal (SOCKET sock, MonoArray *bu
                return (0);
        }
 
-       mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+       mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
        if (interrupted)
                return 0;
 
@@ -1467,7 +1467,7 @@ ves_icall_System_Net_Sockets_Socket_Receive_array_internal (SOCKET sock, MonoArr
                return(0);
        }
 
-       mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+       mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
        if (interrupted) {
                *error = WSAEINTR;
                return 0;
@@ -1524,7 +1524,7 @@ ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal (SOCKET sock, MonoArray
                return (0);
        }
 
-       mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+       mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
        if (interrupted) {
                g_free(sa);
                *error = WSAEINTR;
@@ -1592,7 +1592,7 @@ ves_icall_System_Net_Sockets_Socket_Send_internal (SOCKET sock, MonoArray *buffe
                return (0);
        }
 
-       mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+       mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
        if (interrupted) {
                *error = WSAEINTR;
                return 0;
@@ -1638,7 +1638,7 @@ ves_icall_System_Net_Sockets_Socket_Send_array_internal(SOCKET sock, MonoArray *
                return(0);
        }
 
-       mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+       mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
        if (interrupted) {
                *error = WSAEINTR;
                return 0;
@@ -1700,7 +1700,7 @@ ves_icall_System_Net_Sockets_Socket_SendTo_internal(SOCKET sock, MonoArray *buff
                return (0);
        }
 
-       mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+       mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
        if (interrupted) {
                g_free (sa);
                *error = WSAEINTR;
@@ -1789,7 +1789,7 @@ ves_icall_System_Net_Sockets_Socket_Select_internal (MonoArray **sockets, gint32
        timeout = (timeout >= 0) ? (timeout / 1000) : -1;
        start = time (NULL);
        do {
-               mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+               mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
                if (interrupted) {
                        g_free (pfds);
                        *error = WSAEINTR;
@@ -1820,7 +1820,7 @@ ves_icall_System_Net_Sockets_Socket_Select_internal (MonoArray **sockets, gint32
                }
 
                if (ret == -1 && errno == EINTR) {
-                       if (mono_thread_test_state (thread, ThreadState_AbortRequested | ThreadState_StopRequested)) {
+                       if (mono_thread_test_state (thread, (MonoThreadState)(ThreadState_AbortRequested | ThreadState_StopRequested))) {
                                g_free (pfds);
                                *sockets = NULL;
                                return;
@@ -1924,7 +1924,7 @@ ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal (SOCKET sock, g
 #endif
        {
 
-               ret = convert_sockopt_level_and_name (level, name, &system_level, &system_name);
+               ret = convert_sockopt_level_and_name ((MonoSocketOptionLevel)level, (MonoSocketOptionName)name, &system_level, &system_name);
        }
 
        if(ret==-1) {
@@ -1979,12 +1979,12 @@ ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal (SOCKET sock, g
                obj=mono_object_new(domain, obj_class);
                
                /* Locate and set the fields "bool enabled" and "int
-                * seconds"
+                * lingerTime"
                 */
                field=mono_class_get_field_from_name(obj_class, "enabled");
                *(guint8 *)(((char *)obj)+field->offset)=linger.l_onoff;
 
-               field=mono_class_get_field_from_name(obj_class, "seconds");
+               field=mono_class_get_field_from_name(obj_class, "lingerTime");
                *(guint32 *)(((char *)obj)+field->offset)=linger.l_linger;
                
                break;
@@ -2054,7 +2054,7 @@ ves_icall_System_Net_Sockets_Socket_GetSocketOption_arr_internal (SOCKET sock, g
        
        *error = 0;
        
-       ret=convert_sockopt_level_and_name(level, name, &system_level,
+       ret=convert_sockopt_level_and_name((MonoSocketOptionLevel)level, (MonoSocketOptionName)name, &system_level,
                                           &system_name);
        if(ret==-1) {
                *error = WSAENOPROTOOPT;
@@ -2170,7 +2170,7 @@ ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal (SOCKET sock, gint3
        sol_ipv6 = mono_networking_get_ipv6_protocol ();
        sol_ip = mono_networking_get_ip_protocol ();
 
-       ret=convert_sockopt_level_and_name(level, name, &system_level,
+       ret=convert_sockopt_level_and_name((MonoSocketOptionLevel)level, (MonoSocketOptionName)name, &system_level,
                                           &system_name);
 
 #if !defined(SO_EXCLUSIVEADDRUSE) && defined(SO_REUSEADDR)
@@ -2196,12 +2196,12 @@ ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal (SOCKET sock, gint3
                
                switch(name) {
                case SocketOptionName_Linger:
-                       /* Dig out "bool enabled" and "int seconds"
+                       /* Dig out "bool enabled" and "int lingerTime"
                         * fields
                         */
                        field=mono_class_get_field_from_name(obj_val->vtable->klass, "enabled");
                        linger.l_onoff=*(guint8 *)(((char *)obj_val)+field->offset);
-                       field=mono_class_get_field_from_name(obj_val->vtable->klass, "seconds");
+                       field=mono_class_get_field_from_name(obj_val->vtable->klass, "lingerTime");
                        linger.l_linger=*(guint32 *)(((char *)obj_val)+field->offset);
                        
                        valsize=sizeof(linger);
@@ -2220,14 +2220,14 @@ ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal (SOCKET sock, gint3
                                /*
                                 *      Get group address
                                 */
-                               field = mono_class_get_field_from_name (obj_val->vtable->klass, "group");
-                               address = *(gpointer *)(((char *)obj_val) + field->offset);
+                               field = mono_class_get_field_from_name (obj_val->vtable->klass, "m_Group");
+                               address = *(MonoObject **)(((char *)obj_val) + field->offset);
                                
                                if(address) {
                                        mreq6.ipv6mr_multiaddr = ipaddress_to_struct_in6_addr (address);
                                }
 
-                               field=mono_class_get_field_from_name(obj_val->vtable->klass, "ifIndex");
+                               field=mono_class_get_field_from_name(obj_val->vtable->klass, "m_Interface");
                                mreq6.ipv6mr_interface =*(guint64 *)(((char *)obj_val)+field->offset);
                                
 #if defined(__APPLE__) || defined(__FreeBSD__)
@@ -2260,7 +2260,7 @@ ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal (SOCKET sock, gint3
                                 * those :-(
                                 */
                                field = mono_class_get_field_from_name (obj_val->vtable->klass, "group");
-                               address = *(gpointer *)(((char *)obj_val) + field->offset);
+                               address = *(MonoObject **)(((char *)obj_val) + field->offset);
 
                                /* address might not be defined and if so, set the address to ADDR_ANY.
                                 */
@@ -2268,15 +2268,15 @@ ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal (SOCKET sock, gint3
                                        mreq.imr_multiaddr = ipaddress_to_struct_in_addr (address);
                                }
 
-                               field = mono_class_get_field_from_name (obj_val->vtable->klass, "local");
-                               address = *(gpointer *)(((char *)obj_val) + field->offset);
+                               field = mono_class_get_field_from_name (obj_val->vtable->klass, "localAddress");
+                               address = *(MonoObject **)(((char *)obj_val) + field->offset);
 
 #ifdef HAVE_STRUCT_IP_MREQN
                                if(address) {
                                        mreq.imr_address = ipaddress_to_struct_in_addr (address);
                                }
 
-                               field = mono_class_get_field_from_name(obj_val->vtable->klass, "iface_index");
+                               field = mono_class_get_field_from_name(obj_val->vtable->klass, "ifIndex");
                                mreq.imr_ifindex = *(gint32 *)(((char *)obj_val)+field->offset);
 #else
                                if(address) {
@@ -2368,7 +2368,7 @@ ves_icall_System_Net_Sockets_Socket_Shutdown_internal(SOCKET sock, gint32 how, g
 
        *error = 0;
 
-       mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+       mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
        if (interrupted) {
                *error = WSAEINTR;
                return;
@@ -2695,7 +2695,7 @@ ves_icall_System_Net_Sockets_Socket_SendFile_internal (SOCKET sock, MonoString *
                buffers.TailLength = mono_array_length (post_buffer);
        }
 
-       mono_thread_info_install_interrupt (abort_syscall, mono_thread_info_current (), &interrupted);
+       mono_thread_info_install_interrupt (abort_syscall, (gpointer) (gsize) mono_native_thread_id_get (), &interrupted);
        if (interrupted) {
                CloseHandle (file);
                SetLastError (WSAEINTR);
@@ -2724,6 +2724,16 @@ ves_icall_System_Net_Sockets_Socket_SendFile_internal (SOCKET sock, MonoString *
        return ret;
 }
 
+gboolean
+ves_icall_System_Net_Sockets_Socket_SupportPortReuse (void)
+{
+#if defined (SO_REUSEPORT) || defined (HOST_WIN32)
+    return TRUE;
+#else
+    return FALSE;
+#endif
+}
+
 void
 mono_network_init(void)
 {
@@ -2740,9 +2750,12 @@ mono_network_cleanup(void)
 void
 icall_cancel_blocking_socket_operation (MonoThread *thread)
 {
-       MonoInternalThread *internal = thread->internal_thread;
-       
-       mono_thread_info_abort_socket_syscall_for_close ((MonoNativeThreadId)(gsize)internal->tid);
+       MonoInternalThread *internal;
+
+       internal = thread->internal_thread;
+       g_assert (internal);
+
+       mono_thread_info_abort_socket_syscall_for_close (MONO_UINT_TO_NATIVE_THREAD_ID (internal->tid));
 }
 
 #endif /* #ifndef DISABLE_SOCKETS */
index 5e1c7ef43a90e779c97d2d74f6730f8a353b643d..138cc674d5b0f46410add6da353ae36c79a57deb 100644 (file)
@@ -189,6 +189,7 @@ extern MonoBoolean ves_icall_System_Net_Sockets_Socket_Poll_internal (SOCKET soc
 extern void ves_icall_System_Net_Sockets_Socket_Disconnect_internal(SOCKET sock, MonoBoolean reuse, gint32 *error);
 extern gboolean ves_icall_System_Net_Sockets_Socket_SendFile_internal (SOCKET sock, MonoString *filename, MonoArray *pre_buffer, MonoArray *post_buffer, gint flags);
 void icall_cancel_blocking_socket_operation (MonoThread *thread);
+extern gboolean ves_icall_System_Net_Sockets_Socket_SupportPortReuse (void);
 
 extern void mono_network_init(void);
 extern void mono_network_cleanup(void);
index 98fbf3070459d0b244e4bc79a4603a06d25d2800..773613c669283ddb99ca1bcc946a5754d544096f 100644 (file)
@@ -23,7 +23,7 @@
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/profiler.h>
 #include <mono/metadata/profiler-private.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 
 /* This function is redirected to String.CreateString ()
    by mono_marshal_get_native_wrapper () */
index f7ae6246f2fe1b0464f342c08562fd32e3a350c7..4adae56791b40af7ffab900966b10c267a908000 100644 (file)
@@ -74,7 +74,7 @@ poll_register_fd (gint fd, gint events, gboolean is_new)
                poll_fds_capacity *= 2;
                g_assert (poll_fds_size <= poll_fds_capacity);
 
-               poll_fds = g_renew (mono_pollfd, poll_fds, poll_fds_capacity);
+               poll_fds = (mono_pollfd *)g_renew (mono_pollfd, poll_fds, poll_fds_capacity);
        }
 
        POLL_INIT_FD (&poll_fds [poll_fds_size - 1], fd, poll_event);
index 6742fddc151c9a3f3704815c1749f03a9493fb70..3c931eb7b3d1fee75441268c0ff174c930029ce9 100644 (file)
 #include <fcntl.h>
 #endif
 
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/mono-mlist.h>
 #include <mono/metadata/threadpool-ms.h>
 #include <mono/metadata/threadpool-ms-io.h>
 #include <mono/utils/atomic.h>
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/mono-lazy-init.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 
 typedef struct {
        gboolean (*init) (gint wakeup_pipe_fd);
@@ -92,8 +92,8 @@ typedef struct {
 
        ThreadPoolIOUpdate updates [UPDATES_CAPACITY];
        gint updates_size;
-       mono_mutex_t updates_lock;
-       mono_cond_t updates_cond;
+       MonoCoopMutex updates_lock;
+       MonoCoopCond updates_cond;
 
 #if !defined(HOST_WIN32)
        gint wakeup_pipes [2];
@@ -203,12 +203,12 @@ static void
 filter_jobs_for_domain (gpointer key, gpointer value, gpointer user_data)
 {
        FilterSockaresForDomainData *data;
-       MonoMList *list = value, *element;
+       MonoMList *list = (MonoMList *)value, *element;
        MonoDomain *domain;
        MonoGHashTable *states;
 
        g_assert (user_data);
-       data = user_data;
+       data = (FilterSockaresForDomainData *)user_data;
        domain = data->domain;
        states = data->states;
 
@@ -259,7 +259,7 @@ wait_callback (gint fd, gint events, gpointer user_data)
                gint operations;
 
                g_assert (user_data);
-               states = user_data;
+               states = (MonoGHashTable *)user_data;
 
                mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_THREADPOOL, "io threadpool: cal fd %3d, events = %2s | %2s | %3s",
                        fd, (events & EVENT_IN) ? "RD" : "..", (events & EVENT_OUT) ? "WR" : "..", (events & EVENT_ERR) ? "ERR" : "...");
@@ -284,8 +284,8 @@ wait_callback (gint fd, gint events, gpointer user_data)
 
                        operations = get_operations_for_jobs (list);
 
-                       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_THREADPOOL, "io threadpool: res fd %3d, events = %2s | %2s | %2s",
-                               fd, (operations & EVENT_IN) ? "RD" : "..", (operations & EVENT_OUT) ? "WR" : "..");
+                       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_THREADPOOL, "io threadpool: res fd %3d, events = %2s | %2s | %3s",
+                               fd, (operations & EVENT_IN) ? "RD" : "..", (operations & EVENT_OUT) ? "WR" : "..", (operations & EVENT_ERR) ? "ERR" : "...");
 
                        threadpool_io->backend.register_fd (fd, operations, FALSE);
                } else {
@@ -316,7 +316,7 @@ selector_thread (gpointer data)
                gint i, j;
                gint res;
 
-               mono_mutex_lock (&threadpool_io->updates_lock);
+               mono_coop_mutex_lock (&threadpool_io->updates_lock);
 
                for (i = 0; i < threadpool_io->updates_size; ++i) {
                        ThreadPoolIOUpdate *update = &threadpool_io->updates [i];
@@ -344,8 +344,8 @@ selector_thread (gpointer data)
 
                                operations = get_operations_for_jobs (list);
 
-                               mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_THREADPOOL, "io threadpool: %3s fd %3d, operations = %2s | %2s | %2s",
-                                       exists ? "mod" : "add", fd, (operations & EVENT_IN) ? "RD" : "..", (operations & EVENT_OUT) ? "WR" : "..");
+                               mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_THREADPOOL, "io threadpool: %3s fd %3d, operations = %2s | %2s | %3s",
+                                       exists ? "mod" : "add", fd, (operations & EVENT_IN) ? "RD" : "..", (operations & EVENT_OUT) ? "WR" : "..", (operations & EVENT_ERR) ? "ERR" : "...");
 
                                threadpool_io->backend.register_fd (fd, operations, !exists);
 
@@ -399,14 +399,14 @@ selector_thread (gpointer data)
                        }
                }
 
-               mono_cond_broadcast (&threadpool_io->updates_cond);
+               mono_coop_cond_broadcast (&threadpool_io->updates_cond);
 
                if (threadpool_io->updates_size > 0) {
                        threadpool_io->updates_size = 0;
                        memset (&threadpool_io->updates, 0, UPDATES_CAPACITY * sizeof (ThreadPoolIOUpdate));
                }
 
-               mono_mutex_unlock (&threadpool_io->updates_lock);
+               mono_coop_mutex_unlock (&threadpool_io->updates_lock);
 
                mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_THREADPOOL, "io threadpool: wai");
 
@@ -432,7 +432,7 @@ update_get_new (void)
                /* we wait for updates to be applied in the selector_thread and we loop
                 * as long as none are available. if it happends too much, then we need
                 * to increase UPDATES_CAPACITY */
-               mono_cond_wait (&threadpool_io->updates_cond, &threadpool_io->updates_lock);
+               mono_coop_cond_wait (&threadpool_io->updates_cond, &threadpool_io->updates_lock);
        }
 
        g_assert (threadpool_io->updates_size < UPDATES_CAPACITY);
@@ -506,9 +506,9 @@ initialize (void)
        threadpool_io = g_new0 (ThreadPoolIO, 1);
        g_assert (threadpool_io);
 
-       mono_mutex_init_recursive (&threadpool_io->updates_lock);
-       mono_cond_init (&threadpool_io->updates_cond, 0);
-       mono_gc_register_root ((void*)&threadpool_io->updates [0], sizeof (threadpool_io->updates), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_THREAD_POOL, "i/o thread pool updates list");
+       mono_coop_mutex_init (&threadpool_io->updates_lock);
+       mono_coop_cond_init (&threadpool_io->updates_cond);
+       mono_gc_register_root ((char *)&threadpool_io->updates [0], sizeof (threadpool_io->updates), MONO_GC_DESCRIPTOR_NULL, MONO_ROOT_SOURCE_THREAD_POOL, "i/o thread pool updates list");
 
        threadpool_io->updates_size = 0;
 
@@ -541,8 +541,8 @@ cleanup (void)
        while (io_selector_running)
                g_usleep (1000);
 
-       mono_mutex_destroy (&threadpool_io->updates_lock);
-       mono_cond_destroy (&threadpool_io->updates_cond);
+       mono_coop_mutex_destroy (&threadpool_io->updates_lock);
+       mono_coop_cond_destroy (&threadpool_io->updates_cond);
 
        threadpool_io->backend.cleanup ();
 
@@ -583,7 +583,7 @@ ves_icall_System_IOSelector_Add (gpointer handle, MonoIOSelectorJob *job)
 
        mono_lazy_initialize (&io_status, initialize);
 
-       mono_mutex_lock (&threadpool_io->updates_lock);
+       mono_coop_mutex_lock (&threadpool_io->updates_lock);
 
        update = update_get_new ();
        update->type = UPDATE_ADD;
@@ -593,7 +593,7 @@ ves_icall_System_IOSelector_Add (gpointer handle, MonoIOSelectorJob *job)
 
        selector_thread_wakeup ();
 
-       mono_mutex_unlock (&threadpool_io->updates_lock);
+       mono_coop_mutex_unlock (&threadpool_io->updates_lock);
 }
 
 void
@@ -610,7 +610,7 @@ mono_threadpool_ms_io_remove_socket (int fd)
        if (!mono_lazy_is_initialized (&io_status))
                return;
 
-       mono_mutex_lock (&threadpool_io->updates_lock);
+       mono_coop_mutex_lock (&threadpool_io->updates_lock);
 
        update = update_get_new ();
        update->type = UPDATE_REMOVE_SOCKET;
@@ -619,9 +619,9 @@ mono_threadpool_ms_io_remove_socket (int fd)
 
        selector_thread_wakeup ();
 
-       mono_cond_wait (&threadpool_io->updates_cond, &threadpool_io->updates_lock);
+       mono_coop_cond_wait (&threadpool_io->updates_cond, &threadpool_io->updates_lock);
 
-       mono_mutex_unlock (&threadpool_io->updates_lock);
+       mono_coop_mutex_unlock (&threadpool_io->updates_lock);
 }
 
 void
@@ -632,7 +632,7 @@ mono_threadpool_ms_io_remove_domain_jobs (MonoDomain *domain)
        if (!mono_lazy_is_initialized (&io_status))
                return;
 
-       mono_mutex_lock (&threadpool_io->updates_lock);
+       mono_coop_mutex_lock (&threadpool_io->updates_lock);
 
        update = update_get_new ();
        update->type = UPDATE_REMOVE_DOMAIN;
@@ -641,9 +641,9 @@ mono_threadpool_ms_io_remove_domain_jobs (MonoDomain *domain)
 
        selector_thread_wakeup ();
 
-       mono_cond_wait (&threadpool_io->updates_cond, &threadpool_io->updates_lock);
+       mono_coop_cond_wait (&threadpool_io->updates_cond, &threadpool_io->updates_lock);
 
-       mono_mutex_unlock (&threadpool_io->updates_lock);
+       mono_coop_mutex_unlock (&threadpool_io->updates_lock);
 }
 
 #else
index 05c88bea0d4ae55b13e2a5979db1f2387e7fba28..17936001106381195303b13ea8c3ed9b0dc88863 100644 (file)
@@ -27,7 +27,7 @@
 
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/exception.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/object.h>
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/threadpool-ms.h>
@@ -37,7 +37,7 @@
 #include <mono/utils/mono-complex.h>
 #include <mono/utils/mono-lazy-init.h>
 #include <mono/utils/mono-logger.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-proclib.h>
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/mono-time.h>
@@ -49,6 +49,8 @@
 #define MONITOR_INTERVAL 100 // ms
 #define MONITOR_MINIMAL_LIFETIME 60 * 1000 // ms
 
+#define WORKER_CREATION_MAX_PER_SEC 10
+
 /* The exponent to apply to the gain. 1.0 means to use linear gain,
  * higher values will enhance large moves and damp small ones.
  * default: 2.0 */
@@ -125,12 +127,16 @@ typedef struct {
        ThreadPoolCounter counters;
 
        GPtrArray *domains; // ThreadPoolDomain* []
-       mono_mutex_t domains_lock;
+       MonoCoopMutex domains_lock;
 
        GPtrArray *working_threads; // ThreadPoolWorkingThread* []
        gint32 parked_threads_count;
-       mono_cond_t parked_threads_cond;
-       mono_mutex_t active_threads_lock; /* protect access to working_threads and parked_threads */
+       MonoCoopCond parked_threads_cond;
+       MonoCoopMutex active_threads_lock; /* protect access to working_threads and parked_threads */
+
+       guint32 worker_creation_current_second;
+       guint32 worker_creation_current_count;
+       MonoCoopMutex worker_creation_lock;
 
        gint32 heuristic_completions;
        guint32 heuristic_sample_start;
@@ -138,7 +144,7 @@ typedef struct {
        guint32 heuristic_last_adjustment; // ms
        guint32 heuristic_adjustment_interval; // ms
        ThreadPoolHillClimbing heuristic_hill_climbing;
-       mono_mutex_t heuristic_lock;
+       MonoCoopMutex heuristic_lock;
 
        gint32 limit_worker_min;
        gint32 limit_worker_max;
@@ -248,15 +254,18 @@ initialize (void)
        g_assert (threadpool);
 
        threadpool->domains = g_ptr_array_new ();
-       mono_mutex_init_recursive (&threadpool->domains_lock);
+       mono_coop_mutex_init (&threadpool->domains_lock);
 
        threadpool->parked_threads_count = 0;
-       mono_cond_init (&threadpool->parked_threads_cond, NULL);
+       mono_coop_cond_init (&threadpool->parked_threads_cond);
        threadpool->working_threads = g_ptr_array_new ();
-       mono_mutex_init_recursive (&threadpool->active_threads_lock);
+       mono_coop_mutex_init (&threadpool->active_threads_lock);
+
+       threadpool->worker_creation_current_second = -1;
+       mono_coop_mutex_init (&threadpool->worker_creation_lock);
 
        threadpool->heuristic_adjustment_interval = 10;
-       mono_mutex_init (&threadpool->heuristic_lock);
+       mono_coop_mutex_init (&threadpool->heuristic_lock);
 
        mono_rand_open ();
 
@@ -295,7 +304,12 @@ initialize (void)
        threads_count = mono_cpu_count () * threads_per_cpu;
 
        threadpool->limit_worker_min = threadpool->limit_io_min = threads_count;
+
+#if defined (PLATFORM_ANDROID) || defined (HOST_IOS)
+       threadpool->limit_worker_max = threadpool->limit_io_max = CLAMP (threads_count * 100, MIN (threads_count, 200), MAX (threads_count, 200));
+#else
        threadpool->limit_worker_max = threadpool->limit_io_max = threads_count * 100;
+#endif
 
        threadpool->counters._.max_working = threadpool->limit_worker_min;
 
@@ -315,23 +329,19 @@ cleanup (void)
         * cleaning up only if the runtime is shutting down */
        g_assert (mono_runtime_is_shutting_down ());
 
-       MONO_PREPARE_BLOCKING;
        while (monitor_status != MONITOR_STATUS_NOT_RUNNING)
-               g_usleep (1000);
-       MONO_FINISH_BLOCKING;
+               mono_thread_info_sleep (1, NULL);
 
-       MONO_PREPARE_BLOCKING;
-       mono_mutex_lock (&threadpool->active_threads_lock);
-       MONO_FINISH_BLOCKING;
+       mono_coop_mutex_lock (&threadpool->active_threads_lock);
 
        /* stop all threadpool->working_threads */
        for (i = 0; i < threadpool->working_threads->len; ++i)
                worker_kill ((ThreadPoolWorkingThread*) g_ptr_array_index (threadpool->working_threads, i));
 
        /* unpark all threadpool->parked_threads */
-       mono_cond_broadcast (&threadpool->parked_threads_cond);
+       mono_coop_cond_broadcast (&threadpool->parked_threads_cond);
 
-       mono_mutex_unlock (&threadpool->active_threads_lock);
+       mono_coop_mutex_unlock (&threadpool->active_threads_lock);
 }
 
 void
@@ -371,6 +381,7 @@ mono_threadpool_ms_enqueue_work_item (MonoDomain *domain, MonoObject *work_item)
        }
 }
 
+/* LOCKING: threadpool->domains_lock must be held */
 static void
 domain_add (ThreadPoolDomain *tpdomain)
 {
@@ -378,31 +389,25 @@ domain_add (ThreadPoolDomain *tpdomain)
 
        g_assert (tpdomain);
 
-       mono_mutex_lock (&threadpool->domains_lock);
        len = threadpool->domains->len;
        for (i = 0; i < len; ++i) {
                if (g_ptr_array_index (threadpool->domains, i) == tpdomain)
                        break;
        }
+
        if (i == len)
                g_ptr_array_add (threadpool->domains, tpdomain);
-       mono_mutex_unlock (&threadpool->domains_lock);
 }
 
+/* LOCKING: threadpool->domains_lock must be held */
 static gboolean
 domain_remove (ThreadPoolDomain *tpdomain)
 {
-       gboolean res;
-
        g_assert (tpdomain);
-
-       mono_mutex_lock (&threadpool->domains_lock);
-       res = g_ptr_array_remove (threadpool->domains, tpdomain);
-       mono_mutex_unlock (&threadpool->domains_lock);
-
-       return res;
+       return g_ptr_array_remove (threadpool->domains, tpdomain);
 }
 
+/* LOCKING: threadpool->domains_lock must be held */
 static ThreadPoolDomain *
 domain_get (MonoDomain *domain, gboolean create)
 {
@@ -411,20 +416,18 @@ domain_get (MonoDomain *domain, gboolean create)
 
        g_assert (domain);
 
-       mono_mutex_lock (&threadpool->domains_lock);
        for (i = 0; i < threadpool->domains->len; ++i) {
-               ThreadPoolDomain *tmp = g_ptr_array_index (threadpool->domains, i);
-               if (tmp->domain == domain) {
-                       tpdomain = tmp;
-                       break;
-               }
+               tpdomain = (ThreadPoolDomain *)g_ptr_array_index (threadpool->domains, i);
+               if (tpdomain->domain == domain)
+                       return tpdomain;
        }
-       if (!tpdomain && create) {
+
+       if (create) {
                tpdomain = g_new0 (ThreadPoolDomain, 1);
                tpdomain->domain = domain;
                domain_add (tpdomain);
        }
-       mono_mutex_unlock (&threadpool->domains_lock);
+
        return tpdomain;
 }
 
@@ -434,31 +437,28 @@ domain_free (ThreadPoolDomain *tpdomain)
        g_free (tpdomain);
 }
 
+/* LOCKING: threadpool->domains_lock must be held */
 static gboolean
 domain_any_has_request (void)
 {
-       gboolean res = FALSE;
        guint i;
 
-       mono_mutex_lock (&threadpool->domains_lock);
        for (i = 0; i < threadpool->domains->len; ++i) {
-               ThreadPoolDomain *tmp = g_ptr_array_index (threadpool->domains, i);
-               if (tmp->outstanding_request > 0) {
-                       res = TRUE;
-                       break;
-               }
+               ThreadPoolDomain *tmp = (ThreadPoolDomain *)g_ptr_array_index (threadpool->domains, i);
+               if (tmp->outstanding_request > 0)
+                       return TRUE;
        }
-       mono_mutex_unlock (&threadpool->domains_lock);
-       return res;
+
+       return FALSE;
 }
 
+/* LOCKING: threadpool->domains_lock must be held */
 static ThreadPoolDomain *
 domain_get_next (ThreadPoolDomain *current)
 {
        ThreadPoolDomain *tpdomain = NULL;
        guint len;
 
-       mono_mutex_lock (&threadpool->domains_lock);
        len = threadpool->domains->len;
        if (len > 0) {
                guint i, current_idx = -1;
@@ -472,23 +472,23 @@ domain_get_next (ThreadPoolDomain *current)
                        g_assert (current_idx >= 0);
                }
                for (i = current_idx + 1; i < len + current_idx + 1; ++i) {
-                       ThreadPoolDomain *tmp = g_ptr_array_index (threadpool->domains, i % len);
+                       ThreadPoolDomain *tmp = (ThreadPoolDomain *)g_ptr_array_index (threadpool->domains, i % len);
                        if (tmp->outstanding_request > 0) {
                                tpdomain = tmp;
                                break;
                        }
                }
        }
-       mono_mutex_unlock (&threadpool->domains_lock);
+
        return tpdomain;
 }
 
 static void
 worker_wait_interrupt (gpointer data)
 {
-       mono_mutex_lock (&threadpool->active_threads_lock);
-       mono_cond_signal (&threadpool->parked_threads_cond);
-       mono_mutex_unlock (&threadpool->active_threads_lock);
+       mono_coop_mutex_lock (&threadpool->active_threads_lock);
+       mono_coop_cond_signal (&threadpool->parked_threads_cond);
+       mono_coop_mutex_unlock (&threadpool->active_threads_lock);
 }
 
 /* return TRUE if timeout, FALSE otherwise (worker unpark or interrupt) */
@@ -497,13 +497,11 @@ worker_park (void)
 {
        gboolean timeout = FALSE;
 
-       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] current worker parking", GetCurrentThreadId ());
+       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] current worker parking", mono_native_thread_id_get ());
 
        mono_gc_set_skip_thread (TRUE);
 
-       MONO_PREPARE_BLOCKING;
-
-       mono_mutex_lock (&threadpool->active_threads_lock);
+       mono_coop_mutex_lock (&threadpool->active_threads_lock);
 
        if (!mono_runtime_is_shutting_down ()) {
                static gpointer rand_handle = NULL;
@@ -524,7 +522,7 @@ worker_park (void)
                if (interrupted)
                        goto done;
 
-               if (mono_cond_timedwait_ms (&threadpool->parked_threads_cond, &threadpool->active_threads_lock, rand_next (rand_handle, 5 * 1000, 60 * 1000)) != 0)
+               if (mono_coop_cond_timedwait (&threadpool->parked_threads_cond, &threadpool->active_threads_lock, rand_next ((void **)rand_handle, 5 * 1000, 60 * 1000)) != 0)
                        timeout = TRUE;
 
                mono_thread_info_uninstall_interrupt (&interrupted);
@@ -534,13 +532,11 @@ done:
                threadpool->parked_threads_count -= 1;
        }
 
-       mono_mutex_unlock (&threadpool->active_threads_lock);
-
-       MONO_FINISH_BLOCKING;
+       mono_coop_mutex_unlock (&threadpool->active_threads_lock);
 
        mono_gc_set_skip_thread (FALSE);
 
-       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] current worker unparking, timeout? %s", GetCurrentThreadId (), timeout ? "yes" : "no");
+       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] current worker unparking, timeout? %s", mono_native_thread_id_get (), timeout ? "yes" : "no");
 
        return timeout;
 }
@@ -550,20 +546,16 @@ worker_try_unpark (void)
 {
        gboolean res = FALSE;
 
-       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try unpark worker", GetCurrentThreadId ());
-
-       MONO_PREPARE_BLOCKING;
+       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try unpark worker", mono_native_thread_id_get ());
 
-       mono_mutex_lock (&threadpool->active_threads_lock);
+       mono_coop_mutex_lock (&threadpool->active_threads_lock);
        if (threadpool->parked_threads_count > 0) {
-               mono_cond_signal (&threadpool->parked_threads_cond);
+               mono_coop_cond_signal (&threadpool->parked_threads_cond);
                res = TRUE;
        }
-       mono_mutex_unlock (&threadpool->active_threads_lock);
+       mono_coop_mutex_unlock (&threadpool->active_threads_lock);
 
-       MONO_FINISH_BLOCKING;
-
-       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try unpark worker, success? %s", GetCurrentThreadId (), res ? "yes" : "no");
+       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try unpark worker, success? %s", mono_native_thread_id_get (), res ? "yes" : "no");
 
        return res;
 }
@@ -585,7 +577,7 @@ worker_thread (gpointer data)
        ThreadPoolCounter counter;
        gboolean retire = FALSE;
 
-       mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_THREADPOOL, "[%p] worker starting", GetCurrentThreadId ());
+       mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_THREADPOOL, "[%p] worker starting", mono_native_thread_id_get ());
 
        g_assert (threadpool);
 
@@ -594,23 +586,21 @@ worker_thread (gpointer data)
 
        mono_thread_set_name_internal (thread, mono_string_new (mono_domain_get (), "Threadpool worker"), FALSE);
 
-       MONO_PREPARE_BLOCKING;
-       mono_mutex_lock (&threadpool->active_threads_lock);
+       mono_coop_mutex_lock (&threadpool->active_threads_lock);
        g_ptr_array_add (threadpool->working_threads, thread);
-       mono_mutex_unlock (&threadpool->active_threads_lock);
-       MONO_FINISH_BLOCKING;
+       mono_coop_mutex_unlock (&threadpool->active_threads_lock);
 
        previous_tpdomain = NULL;
 
-       mono_mutex_lock (&threadpool->domains_lock);
+       mono_coop_mutex_lock (&threadpool->domains_lock);
 
        while (!mono_runtime_is_shutting_down ()) {
                tpdomain = NULL;
 
                if ((thread->state & (ThreadState_StopRequested | ThreadState_SuspendRequested)) != 0) {
-                       mono_mutex_unlock (&threadpool->domains_lock);
+                       mono_coop_mutex_unlock (&threadpool->domains_lock);
                        mono_thread_interruption_checkpoint ();
-                       mono_mutex_lock (&threadpool->domains_lock);
+                       mono_coop_mutex_lock (&threadpool->domains_lock);
                }
 
                if (retire || !(tpdomain = domain_get_next (previous_tpdomain))) {
@@ -621,9 +611,9 @@ worker_thread (gpointer data)
                                counter._.parked ++;
                        });
 
-                       mono_mutex_unlock (&threadpool->domains_lock);
+                       mono_coop_mutex_unlock (&threadpool->domains_lock);
                        timeout = worker_park ();
-                       mono_mutex_lock (&threadpool->domains_lock);
+                       mono_coop_mutex_lock (&threadpool->domains_lock);
 
                        COUNTER_ATOMIC (counter, {
                                counter._.working ++;
@@ -643,13 +633,13 @@ worker_thread (gpointer data)
                g_assert (tpdomain->outstanding_request >= 0);
 
                mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] worker running in domain %p",
-                       GetCurrentThreadId (), tpdomain->domain, tpdomain->outstanding_request);
+                       mono_native_thread_id_get (), tpdomain->domain, tpdomain->outstanding_request);
 
                g_assert (tpdomain->domain);
                g_assert (tpdomain->domain->threadpool_jobs >= 0);
                tpdomain->domain->threadpool_jobs ++;
 
-               mono_mutex_unlock (&threadpool->domains_lock);
+               mono_coop_mutex_unlock (&threadpool->domains_lock);
 
                mono_thread_push_appdomain_ref (tpdomain->domain);
                if (mono_domain_set (tpdomain->domain, FALSE)) {
@@ -660,7 +650,7 @@ worker_thread (gpointer data)
                        else if (res && *(MonoBoolean*) mono_object_unbox (res) == FALSE)
                                retire = TRUE;
 
-                       mono_thread_clr_state (thread , ~ThreadState_Background);
+                       mono_thread_clr_state (thread, (MonoThreadState)~ThreadState_Background);
                        if (!mono_thread_test_state (thread , ThreadState_Background))
                                ves_icall_System_Threading_Thread_SetState (thread, ThreadState_Background);
 
@@ -668,7 +658,7 @@ worker_thread (gpointer data)
                }
                mono_thread_pop_appdomain_ref ();
 
-               mono_mutex_lock (&threadpool->domains_lock);
+               mono_coop_mutex_lock (&threadpool->domains_lock);
 
                tpdomain->domain->threadpool_jobs --;
                g_assert (tpdomain->domain->threadpool_jobs >= 0);
@@ -685,20 +675,18 @@ worker_thread (gpointer data)
                previous_tpdomain = tpdomain;
        }
 
-       mono_mutex_unlock (&threadpool->domains_lock);
+       mono_coop_mutex_unlock (&threadpool->domains_lock);
 
-       MONO_PREPARE_BLOCKING;
-       mono_mutex_lock (&threadpool->active_threads_lock);
+       mono_coop_mutex_lock (&threadpool->active_threads_lock);
        g_ptr_array_remove_fast (threadpool->working_threads, thread);
-       mono_mutex_unlock (&threadpool->active_threads_lock);
-       MONO_FINISH_BLOCKING;
+       mono_coop_mutex_unlock (&threadpool->active_threads_lock);
 
        COUNTER_ATOMIC (counter, {
                counter._.working--;
                counter._.active --;
        });
 
-       mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_THREADPOOL, "[%p] worker finishing", GetCurrentThreadId ());
+       mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_THREADPOOL, "[%p] worker finishing", mono_native_thread_id_get ());
 }
 
 static gboolean
@@ -706,29 +694,56 @@ worker_try_create (void)
 {
        ThreadPoolCounter counter;
        MonoInternalThread *thread;
+       gint32 now;
+
+       mono_coop_mutex_lock (&threadpool->worker_creation_lock);
 
-       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker", GetCurrentThreadId ());
+       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker", mono_native_thread_id_get ());
+
+       if ((now = mono_100ns_ticks () / 10 / 1000 / 1000) == 0) {
+               g_warning ("failed to get 100ns ticks");
+       } else {
+               if (threadpool->worker_creation_current_second != now) {
+                       threadpool->worker_creation_current_second = now;
+                       threadpool->worker_creation_current_count = 0;
+               } else {
+                       g_assert (threadpool->worker_creation_current_count <= WORKER_CREATION_MAX_PER_SEC);
+                       if (threadpool->worker_creation_current_count == WORKER_CREATION_MAX_PER_SEC) {
+                               mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker, failed: maximum number of worker created per second reached, current count = %d",
+                                       mono_native_thread_id_get (), threadpool->worker_creation_current_count);
+                               mono_coop_mutex_unlock (&threadpool->worker_creation_lock);
+                               return FALSE;
+                       }
+               }
+       }
 
        COUNTER_ATOMIC (counter, {
-               if (counter._.working >= counter._.max_working)
+               if (counter._.working >= counter._.max_working) {
+                       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker, failed: maximum number of working threads reached",
+                               mono_native_thread_id_get ());
+                       mono_coop_mutex_unlock (&threadpool->worker_creation_lock);
                        return FALSE;
+               }
                counter._.working ++;
                counter._.active ++;
        });
 
        if ((thread = mono_thread_create_internal (mono_get_root_domain (), worker_thread, NULL, TRUE, 0)) != NULL) {
-               mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker, created %p",
-                       GetCurrentThreadId (), thread->tid);
+               threadpool->worker_creation_current_count += 1;
+
+               mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker, created %p, now = %d count = %d", mono_native_thread_id_get (), thread->tid, now, threadpool->worker_creation_current_count);
+               mono_coop_mutex_unlock (&threadpool->worker_creation_lock);
                return TRUE;
        }
 
-       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker, failed", GetCurrentThreadId ());
+       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] try create worker, failed: could not create thread", mono_native_thread_id_get ());
 
        COUNTER_ATOMIC (counter, {
                counter._.working --;
                counter._.active --;
        });
 
+       mono_coop_mutex_unlock (&threadpool->worker_creation_lock);
        return FALSE;
 }
 
@@ -745,11 +760,11 @@ worker_request (MonoDomain *domain)
        if (mono_runtime_is_shutting_down ())
                return FALSE;
 
-       mono_mutex_lock (&threadpool->domains_lock);
+       mono_coop_mutex_lock (&threadpool->domains_lock);
 
        /* synchronize check with worker_thread */
        if (mono_domain_is_unloading (domain)) {
-               mono_mutex_unlock (&threadpool->domains_lock);
+               mono_coop_mutex_unlock (&threadpool->domains_lock);
                return FALSE;
        }
 
@@ -758,9 +773,9 @@ worker_request (MonoDomain *domain)
        tpdomain->outstanding_request ++;
 
        mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] request worker, domain = %p, outstanding_request = %d",
-               GetCurrentThreadId (), tpdomain->domain, tpdomain->outstanding_request);
+               mono_native_thread_id_get (), tpdomain->domain, tpdomain->outstanding_request);
 
-       mono_mutex_unlock (&threadpool->domains_lock);
+       mono_coop_mutex_unlock (&threadpool->domains_lock);
 
        if (threadpool->suspended)
                return FALSE;
@@ -768,16 +783,16 @@ worker_request (MonoDomain *domain)
        monitor_ensure_running ();
 
        if (worker_try_unpark ()) {
-               mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] request worker, unparked", GetCurrentThreadId ());
+               mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] request worker, unparked", mono_native_thread_id_get ());
                return TRUE;
        }
 
        if (worker_try_create ()) {
-               mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] request worker, created", GetCurrentThreadId ());
+               mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] request worker, created", mono_native_thread_id_get ());
                return TRUE;
        }
 
-       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] request worker, failed", GetCurrentThreadId ());
+       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] request worker, failed", mono_native_thread_id_get ());
        return FALSE;
 }
 
@@ -794,8 +809,10 @@ monitor_should_keep_running (void)
                if (mono_runtime_is_shutting_down ()) {
                        should_keep_running = FALSE;
                } else {
+                       mono_coop_mutex_lock (&threadpool->domains_lock);
                        if (!domain_any_has_request ())
                                should_keep_running = FALSE;
+                       mono_coop_mutex_unlock (&threadpool->domains_lock);
 
                        if (!should_keep_running) {
                                if (last_should_keep_running == -1 || mono_100ns_ticks () - last_should_keep_running < MONITOR_MINIMAL_LIFETIME * 1000 * 10) {
@@ -847,7 +864,7 @@ monitor_thread (void)
 
        mono_cpu_usage (threadpool->cpu_usage_state);
 
-       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] monitor thread, started", GetCurrentThreadId ());
+       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] monitor thread, started", mono_native_thread_id_get ());
 
        do {
                MonoInternalThread *thread;
@@ -861,12 +878,13 @@ monitor_thread (void)
 
                do {
                        guint32 ts;
+                       gboolean alerted = FALSE;
 
                        if (mono_runtime_is_shutting_down ())
                                break;
 
                        ts = mono_msec_ticks ();
-                       if (SleepEx (interval_left, TRUE) == 0)
+                       if (mono_thread_info_sleep (interval_left, &alerted) == 0)
                                break;
                        interval_left -= mono_msec_ticks () - ts;
 
@@ -881,25 +899,41 @@ monitor_thread (void)
                if (threadpool->suspended)
                        continue;
 
-               if (mono_runtime_is_shutting_down () || !domain_any_has_request ())
+               if (mono_runtime_is_shutting_down ())
                        continue;
 
-               MONO_PREPARE_BLOCKING;
-               mono_mutex_lock (&threadpool->active_threads_lock);
+               mono_coop_mutex_lock (&threadpool->domains_lock);
+               if (!domain_any_has_request ()) {
+                       mono_coop_mutex_unlock (&threadpool->domains_lock);
+                       continue;
+               }
+               mono_coop_mutex_unlock (&threadpool->domains_lock);
+
+
+               mono_coop_mutex_lock (&threadpool->active_threads_lock);
                for (i = 0; i < threadpool->working_threads->len; ++i) {
-                       thread = g_ptr_array_index (threadpool->working_threads, i);
+                       thread = (MonoInternalThread *)g_ptr_array_index (threadpool->working_threads, i);
                        if ((thread->state & ThreadState_WaitSleepJoin) == 0) {
                                all_waitsleepjoin = FALSE;
                                break;
                        }
                }
-               mono_mutex_unlock (&threadpool->active_threads_lock);
-               MONO_FINISH_BLOCKING;
+               mono_coop_mutex_unlock (&threadpool->active_threads_lock);
 
                if (all_waitsleepjoin) {
                        ThreadPoolCounter counter;
-                       COUNTER_ATOMIC (counter, { counter._.max_working ++; });
-                       hill_climbing_force_change (counter._.max_working, TRANSITION_STARVATION);
+                       gboolean limit_worker_max_reached = FALSE;
+
+                       COUNTER_ATOMIC (counter, {
+                               if (counter._.max_working >= threadpool->limit_worker_max) {
+                                       limit_worker_max_reached = TRUE;
+                                       break;
+                               }
+                               counter._.max_working ++;
+                       });
+
+                       if (!limit_worker_max_reached)
+                               hill_climbing_force_change (counter._.max_working, TRANSITION_STARVATION);
                }
 
                threadpool->cpu_usage = mono_cpu_usage (threadpool->cpu_usage_state);
@@ -910,19 +944,19 @@ monitor_thread (void)
                                        break;
 
                                if (worker_try_unpark ()) {
-                                       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] monitor thread, unparked", GetCurrentThreadId ());
+                                       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] monitor thread, unparked", mono_native_thread_id_get ());
                                        break;
                                }
 
                                if (worker_try_create ()) {
-                                       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] monitor thread, created", GetCurrentThreadId ());
+                                       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] monitor thread, created", mono_native_thread_id_get ());
                                        break;
                                }
                        }
                }
        } while (monitor_should_keep_running ());
 
-       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] monitor thread, finished", GetCurrentThreadId ());
+       mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] monitor thread, finished", mono_native_thread_id_get ());
 }
 
 static void
@@ -958,7 +992,7 @@ hill_climbing_change_thread_count (gint16 new_thread_count, ThreadPoolHeuristicS
 
        hc = &threadpool->heuristic_hill_climbing;
 
-       mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_THREADPOOL, "[%p] hill climbing, change max number of threads %d", GetCurrentThreadId (), new_thread_count);
+       mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_THREADPOOL, "[%p] hill climbing, change max number of threads %d", mono_native_thread_id_get (), new_thread_count);
 
        hc->last_thread_count = new_thread_count;
        hc->current_sample_interval = rand_next (&hc->random_interval_generator, hc->sample_interval_low, hc->sample_interval_high);
@@ -1248,7 +1282,7 @@ heuristic_adjust (void)
 {
        g_assert (threadpool);
 
-       if (mono_mutex_trylock (&threadpool->heuristic_lock) == 0) {
+       if (mono_coop_mutex_trylock (&threadpool->heuristic_lock) == 0) {
                gint32 completions = InterlockedExchange (&threadpool->heuristic_completions, 0);
                guint32 sample_end = mono_msec_ticks ();
                guint32 sample_duration = sample_end - threadpool->heuristic_sample_start;
@@ -1269,7 +1303,7 @@ heuristic_adjust (void)
                        threadpool->heuristic_last_adjustment = mono_msec_ticks ();
                }
 
-               mono_mutex_unlock (&threadpool->heuristic_lock);
+               mono_coop_mutex_unlock (&threadpool->heuristic_lock);
        }
 }
 
@@ -1438,12 +1472,16 @@ mono_threadpool_ms_resume (void)
 void
 ves_icall_System_Threading_ThreadPool_GetAvailableThreadsNative (gint32 *worker_threads, gint32 *completion_port_threads)
 {
+       ThreadPoolCounter counter;
+
        if (!worker_threads || !completion_port_threads)
                return;
 
        mono_lazy_initialize (&status, initialize);
 
-       *worker_threads = threadpool->limit_worker_max;
+       counter.as_gint64 = COUNTER_READ ();
+
+       *worker_threads = MAX (0, threadpool->limit_worker_max - counter._.active);
        *completion_port_threads = threadpool->limit_io_max;
 }
 
@@ -1481,8 +1519,8 @@ ves_icall_System_Threading_ThreadPool_SetMinThreadsNative (gint32 worker_threads
        if (completion_port_threads <= 0 || completion_port_threads > threadpool->limit_io_max)
                return FALSE;
 
-       threadpool->limit_worker_max = worker_threads;
-       threadpool->limit_io_max = completion_port_threads;
+       threadpool->limit_worker_min = worker_threads;
+       threadpool->limit_io_min = completion_port_threads;
 
        return TRUE;
 }
index 5ffafe61b78e1c8eb1d04385ce7f2ebbb2fc55ee..4d5eb3931eb527ba33434b43bf5e4d4e02282936 100644 (file)
@@ -224,7 +224,6 @@ void mono_threads_install_notify_pending_exc (MonoThreadNotifyPendingExcFunc fun
 void mono_runtime_set_has_tls_get (gboolean val);
 gboolean mono_runtime_has_tls_get (void);
 
-void mono_thread_abort_all_other_threads (void);
 void mono_thread_suspend_all_other_threads (void);
 gboolean mono_threads_abort_appdomain_threads (MonoDomain *domain, int timeout);
 
@@ -258,4 +257,6 @@ void mono_thread_join (gpointer tid);
 
 void mono_thread_detach_internal (MonoInternalThread *thread);
 
+void ves_icall_System_Threading_Thread_GetStackTraces (MonoArray **out_threads, MonoArray **out_stack_traces);
+
 #endif /* _MONO_METADATA_THREADS_TYPES_H_ */
index fd83f30929e108812f54c1f0106c4e16f4b3e401..c39b70375a29b552d22ec03f86d232889802c73b 100644 (file)
@@ -24,7 +24,7 @@
 #include <mono/metadata/exception.h>
 #include <mono/metadata/environment.h>
 #include <mono/metadata/monitor.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/marshal.h>
 #include <mono/metadata/runtime.h>
 #include <mono/io-layer/io-layer.h>
@@ -41,7 +41,7 @@
 #include <mono/utils/atomic.h>
 #include <mono/utils/mono-memory-model.h>
 
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 
 #ifdef HAVE_SIGNAL_H
 #include <signal.h>
@@ -128,11 +128,11 @@ typedef struct {
 /* Controls access to the 'threads' hash table */
 static void mono_threads_lock (void);
 static void mono_threads_unlock (void);
-static mono_mutex_t threads_mutex;
+static MonoCoopMutex threads_mutex;
 
 /* Controls access to the 'joinable_threads' hash table */
-#define joinable_threads_lock() mono_mutex_lock (&joinable_threads_mutex)
-#define joinable_threads_unlock() mono_mutex_unlock (&joinable_threads_mutex)
+#define joinable_threads_lock() mono_os_mutex_lock (&joinable_threads_mutex)
+#define joinable_threads_unlock() mono_os_mutex_unlock (&joinable_threads_mutex)
 static mono_mutex_t joinable_threads_mutex;
 
 /* Holds current status of static data heap */
@@ -149,6 +149,9 @@ static MonoGHashTable *threads=NULL;
  */
 static GHashTable *contexts = NULL;
 
+/* Cleanup queue for contexts. */
+static MonoReferenceQueue *context_queue;
+
 /*
  * Threads which are starting up and they are not in the 'threads' hash yet.
  * When handle_store is called for a thread, it will be removed from this hash table.
@@ -204,14 +207,13 @@ static gboolean mono_thread_resume (MonoInternalThread* thread);
 static void abort_thread_internal (MonoInternalThread *thread, gboolean can_raise_exception, gboolean install_async_abort);
 static void suspend_thread_internal (MonoInternalThread *thread, gboolean interrupt);
 static void self_suspend_internal (MonoInternalThread *thread);
-static gboolean resume_thread_internal (MonoInternalThread *thread);
 
-static MonoException* mono_thread_execute_interruption ();
+static MonoException* mono_thread_execute_interruption (void);
 static void ref_stack_destroy (gpointer rs);
 
 /* Spin lock for InterlockedXXX 64 bit functions */
-#define mono_interlocked_lock() mono_mutex_lock (&interlocked_mutex)
-#define mono_interlocked_unlock() mono_mutex_unlock (&interlocked_mutex)
+#define mono_interlocked_lock() mono_os_mutex_lock (&interlocked_mutex)
+#define mono_interlocked_unlock() mono_os_mutex_unlock (&interlocked_mutex)
 static mono_mutex_t interlocked_mutex;
 
 /* global count of thread interruptions requested */
@@ -227,15 +229,13 @@ static gint32 managed_thread_id_counter = 0;
 static void
 mono_threads_lock (void)
 {
-       MONO_TRY_BLOCKING;
-       mono_locks_acquire (&threads_mutex, ThreadsLock);
-       MONO_FINISH_TRY_BLOCKING;
+       mono_locks_coop_acquire (&threads_mutex, ThreadsLock);
 }
 
 static void
 mono_threads_unlock (void)
 {
-       mono_locks_release (&threads_mutex, ThreadsLock);
+       mono_locks_coop_release (&threads_mutex, ThreadsLock);
 }
 
 
@@ -349,19 +349,19 @@ static gboolean handle_remove(MonoInternalThread *thread)
 
 static void ensure_synch_cs_set (MonoInternalThread *thread)
 {
-       mono_mutex_t *synch_cs;
+       MonoCoopMutex *synch_cs;
 
        if (thread->synch_cs != NULL) {
                return;
        }
 
-       synch_cs = g_new0 (mono_mutex_t, 1);
-       mono_mutex_init_recursive (synch_cs);
+       synch_cs = g_new0 (MonoCoopMutex, 1);
+       mono_coop_mutex_init_recursive (synch_cs);
 
        if (InterlockedCompareExchangePointer ((gpointer *)&thread->synch_cs,
                                               synch_cs, NULL) != NULL) {
                /* Another thread must have installed this CS */
-               mono_mutex_destroy (synch_cs);
+               mono_coop_mutex_destroy (synch_cs);
                g_free (synch_cs);
        }
 }
@@ -374,15 +374,13 @@ lock_thread (MonoInternalThread *thread)
 
        g_assert (thread->synch_cs);
 
-       MONO_TRY_BLOCKING;
-       mono_mutex_lock (thread->synch_cs);
-       MONO_FINISH_TRY_BLOCKING;
+       mono_coop_mutex_lock (thread->synch_cs);
 }
 
 static inline void
 unlock_thread (MonoInternalThread *thread)
 {
-       mono_mutex_unlock (thread->synch_cs);
+       mono_coop_mutex_unlock (thread->synch_cs);
 }
 
 /*
@@ -481,6 +479,7 @@ static void thread_cleanup (MonoInternalThread *thread)
                MONO_GC_UNREGISTER_ROOT (thread->thread_pinning_ref);
                thread->thread_pinning_ref = NULL;
        }
+
 }
 
 /*
@@ -554,7 +553,7 @@ get_current_thread_ptr_for_domain (MonoDomain *domain, MonoInternalThread *threa
        mono_domain_unlock (domain);
        g_assert (offset);
 
-       return get_thread_static_data (thread, offset);
+       return (MonoThread **)get_thread_static_data (thread, offset);
 }
 
 static void
@@ -592,8 +591,8 @@ create_internal_thread (void)
        vt = mono_class_vtable (mono_get_root_domain (), mono_defaults.internal_thread_class);
        thread = (MonoInternalThread*)mono_gc_alloc_mature (vt);
 
-       thread->synch_cs = g_new0 (mono_mutex_t, 1);
-       mono_mutex_init_recursive (thread->synch_cs);
+       thread->synch_cs = g_new0 (MonoCoopMutex, 1);
+       mono_coop_mutex_init_recursive (thread->synch_cs);
 
        thread->apartment_state = ThreadApartmentState_Unknown;
        thread->managed_id = get_next_managed_thread_id ();
@@ -632,7 +631,7 @@ static guint32 WINAPI start_wrapper_internal(void *data)
        MonoObject *start_delegate = start_info->delegate;
        MonoDomain *domain = start_info->obj->obj.vtable->domain;
 
-       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Start wrapper", __func__, GetCurrentThreadId ()));
+       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Start wrapper", __func__, mono_native_thread_id_get ()));
 
        /* We can be sure start_info->obj->tid and
         * start_info->obj->handle have been set, because the thread
@@ -675,10 +674,12 @@ static guint32 WINAPI start_wrapper_internal(void *data)
         */
        mono_thread_new_init (tid, &tid, start_func);
        internal->stack_ptr = &tid;
+       if (domain != mono_get_root_domain ())
+               set_current_thread_for_domain (domain, internal, start_info->obj);
 
-       LIBGC_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT",%d) Setting thread stack to %p", __func__, GetCurrentThreadId (), getpid (), thread->stack_ptr));
+       LIBGC_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT",%d) Setting thread stack to %p", __func__, mono_native_thread_id_get (), getpid (), thread->stack_ptr));
 
-       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Setting current_object_key to %p", __func__, GetCurrentThreadId (), internal));
+       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Setting current_object_key to %p", __func__, mono_native_thread_id_get (), internal));
 
        /* On 2.0 profile (and higher), set explicitly since state might have been
           Unknown */
@@ -727,7 +728,7 @@ static guint32 WINAPI start_wrapper_internal(void *data)
         * call thread_cleanup() on this thread's behalf.
         */
 
-       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Start wrapper terminating", __func__, GetCurrentThreadId ()));
+       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Start wrapper terminating", __func__, mono_native_thread_id_get ()));
 
        /* Do any cleanup needed for apartment state. This
         * cannot be done in thread_cleanup since thread_cleanup could be 
@@ -814,10 +815,8 @@ create_thread (MonoThread *thread, MonoInternalThread *internal, StartInfo *star
         */
        create_flags = CREATE_SUSPENDED;
 
-       MONO_PREPARE_BLOCKING;
        thread_handle = mono_threads_create_thread ((LPTHREAD_START_ROUTINE)start_wrapper, start_info,
                                                                                                stack_size, create_flags, &tid);
-       MONO_FINISH_BLOCKING;
 
        if (thread_handle == NULL) {
                /* The thread couldn't be created, so throw an exception */
@@ -840,7 +839,7 @@ create_thread (MonoThread *thread, MonoInternalThread *internal, StartInfo *star
        if (threadpool_thread)
                mono_thread_set_state (internal, ThreadState_Background);
 
-       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Launching thread %p (%"G_GSIZE_FORMAT")", __func__, GetCurrentThreadId (), internal, (gsize)internal->tid));
+       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Launching thread %p (%"G_GSIZE_FORMAT")", __func__, mono_native_thread_id_get (), internal, (gsize)internal->tid));
 
        /* Only store the handle when the thread is about to be
         * launched, to avoid the main thread deadlocking while trying
@@ -849,9 +848,7 @@ create_thread (MonoThread *thread, MonoInternalThread *internal, StartInfo *star
        if (!handle_store (thread, FALSE))
                return FALSE;
 
-       MONO_PREPARE_BLOCKING;
        mono_thread_info_resume (tid);
-       MONO_FINISH_BLOCKING;
 
        if (internal->start_notify) {
                /*
@@ -860,7 +857,7 @@ create_thread (MonoThread *thread, MonoInternalThread *internal, StartInfo *star
                 * to look up the data believing the thread has
                 * started
                 */
-               THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") waiting for thread %p (%"G_GSIZE_FORMAT") to start", __func__, GetCurrentThreadId (), internal, (gsize)internal->tid));
+               THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") waiting for thread %p (%"G_GSIZE_FORMAT") to start", __func__, mono_native_thread_id_get (), internal, (gsize)internal->tid));
 
                MONO_PREPARE_BLOCKING;
                WaitForSingleObjectEx (internal->start_notify, INFINITE, FALSE);
@@ -870,7 +867,7 @@ create_thread (MonoThread *thread, MonoInternalThread *internal, StartInfo *star
                internal->start_notify = NULL;
        }
 
-       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Done launching thread %p (%"G_GSIZE_FORMAT")", __func__, GetCurrentThreadId (), internal, (gsize)internal->tid));
+       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Done launching thread %p (%"G_GSIZE_FORMAT")", __func__, mono_native_thread_id_get (), internal, (gsize)internal->tid));
 
        return TRUE;
 }
@@ -910,7 +907,7 @@ mono_thread_create_internal (MonoDomain *domain, gpointer func, gpointer arg, gb
        MONO_OBJECT_SETREF (thread, internal_thread, internal);
 
        start_info = g_new0 (StartInfo, 1);
-       start_info->func = func;
+       start_info->func = (guint32 (*)(void *))func;
        start_info->obj = thread;
        start_info->start_arg = arg;
 
@@ -919,8 +916,10 @@ mono_thread_create_internal (MonoDomain *domain, gpointer func, gpointer arg, gb
                return NULL;
 
        /* Check that the managed and unmanaged layout of MonoInternalThread matches */
+#ifndef MONO_CROSS_COMPILE
        if (mono_check_corlib_version () == NULL)
                g_assert (((char*)&internal->unused2 - (char*)internal) == mono_defaults.internal_thread_class->fields [mono_defaults.internal_thread_class->field.count - 1].offset);
+#endif
 
        return internal;
 }
@@ -944,7 +943,7 @@ mono_thread_attach_full (MonoDomain *domain, gboolean force_attach)
        MonoInternalThread *thread;
        MonoThread *current_thread;
        HANDLE thread_handle;
-       gsize tid;
+       MonoNativeThreadId tid;
 
        if ((thread = mono_thread_internal_current ())) {
                if (domain != mono_domain_get ())
@@ -954,7 +953,7 @@ mono_thread_attach_full (MonoDomain *domain, gboolean force_attach)
        }
 
        if (!mono_gc_register_thread (&domain)) {
-               g_error ("Thread %"G_GSIZE_FORMAT" calling into managed code is not registered with the GC. On UNIX, this can be fixed by #include-ing <gc.h> before <pthread.h> in the file containing the thread creation code.", GetCurrentThreadId ());
+               g_error ("Thread %"G_GSIZE_FORMAT" calling into managed code is not registered with the GC. On UNIX, this can be fixed by #include-ing <gc.h> before <pthread.h> in the file containing the thread creation code.", mono_native_thread_id_get ());
        }
 
        thread = create_internal_thread ();
@@ -962,10 +961,10 @@ mono_thread_attach_full (MonoDomain *domain, gboolean force_attach)
        thread_handle = mono_thread_info_open_handle ();
        g_assert (thread_handle);
 
-       tid=GetCurrentThreadId ();
+       tid=mono_native_thread_id_get ();
 
        thread->handle = thread_handle;
-       thread->tid = tid;
+       thread->tid = MONO_NATIVE_THREAD_ID_TO_UINT (tid);
        thread->stack_ptr = &tid;
 
        THREAD_DEBUG (g_message ("%s: Attached thread ID %"G_GSIZE_FORMAT" (handle %p)", __func__, tid, thread_handle));
@@ -980,10 +979,10 @@ mono_thread_attach_full (MonoDomain *domain, gboolean force_attach)
        if (!handle_store (current_thread, force_attach)) {
                /* Mono is shutting down, so just wait for the end */
                for (;;)
-                       Sleep (10000);
+                       mono_thread_info_sleep (10000, NULL);
        }
 
-       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Setting current_object_key to %p", __func__, GetCurrentThreadId (), thread));
+       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Setting current_object_key to %p", __func__, mono_native_thread_id_get (), thread));
 
        SET_CURRENT_OBJECT (thread);
        mono_domain_set (domain, TRUE);
@@ -1002,13 +1001,13 @@ mono_thread_attach_full (MonoDomain *domain, gboolean force_attach)
                mono_thread_info_get_stack_bounds (&staddr, &stsize);
 
                if (staddr == NULL)
-                       mono_thread_attach_cb (tid, &tid);
+                       mono_thread_attach_cb (MONO_NATIVE_THREAD_ID_TO_UINT (tid), &tid);
                else
-                       mono_thread_attach_cb (tid, staddr + stsize);
+                       mono_thread_attach_cb (MONO_NATIVE_THREAD_ID_TO_UINT (tid), staddr + stsize);
        }
 
        // FIXME: Need a separate callback
-       mono_profiler_thread_start (tid);
+       mono_profiler_thread_start (MONO_NATIVE_THREAD_ID_TO_UINT (tid));
 
        return current_thread;
 }
@@ -1083,7 +1082,7 @@ ves_icall_System_Threading_Thread_ConstructInternalThread (MonoThread *this_obj)
 
        internal->state = ThreadState_Unstarted;
 
-       InterlockedCompareExchangePointer ((gpointer)&this_obj->internal_thread, internal, NULL);
+       InterlockedCompareExchangePointer ((volatile gpointer *)&this_obj->internal_thread, internal, NULL);
 }
 
 HANDLE
@@ -1151,9 +1150,9 @@ ves_icall_System_Threading_InternalThread_Thread_free_internal (MonoInternalThre
                CloseHandle (thread);
 
        if (this_obj->synch_cs) {
-               mono_mutex_t *synch_cs = this_obj->synch_cs;
+               MonoCoopMutex *synch_cs = this_obj->synch_cs;
                this_obj->synch_cs = NULL;
-               mono_mutex_destroy (synch_cs);
+               mono_coop_mutex_destroy (synch_cs);
                g_free (synch_cs);
        }
 
@@ -1173,17 +1172,17 @@ ves_icall_System_Threading_Thread_Sleep_internal(gint32 ms)
        THREAD_DEBUG (g_message ("%s: Sleeping for %d ms", __func__, ms));
 
        mono_thread_current_check_pending_interrupt ();
-       
+
        while (TRUE) {
+               gboolean alerted = FALSE;
+
                mono_thread_set_state (thread, ThreadState_WaitSleepJoin);
-       
-               MONO_PREPARE_BLOCKING;
-               res = SleepEx(ms,TRUE);
-               MONO_FINISH_BLOCKING;
-       
+
+               res = mono_thread_info_sleep (ms, &alerted);
+
                mono_thread_clr_state (thread, ThreadState_WaitSleepJoin);
 
-               if (res == WAIT_IO_COMPLETION) { /* we might have been interrupted */
+               if (alerted) {
                        MonoException* exc = mono_thread_execute_interruption ();
                        if (exc) {
                                mono_raise_exception (exc);
@@ -1301,15 +1300,40 @@ ves_icall_System_Threading_Thread_SetName_internal (MonoInternalThread *this_obj
        mono_thread_set_name_internal (this_obj, name, TRUE);
 }
 
+/*
+ * ves_icall_System_Threading_Thread_GetPriority_internal:
+ * @param this_obj: The MonoInternalThread on which to operate.
+ *
+ * Gets the priority of the given thread.
+ * @return: The priority of the given thread.
+ */
 int
-ves_icall_System_Threading_Thread_GetPriority (MonoThread *this)
+ves_icall_System_Threading_Thread_GetPriority (MonoThread *this_obj)
 {
-       return ThreadPriority_Lowest;
+       gint32 priority;
+       MonoInternalThread *internal = this_obj->internal_thread;
+
+       LOCK_THREAD (internal);
+       priority = GetThreadPriority (internal->handle) + 2;
+       UNLOCK_THREAD (internal);
+       return priority;
 }
 
+/* 
+ * ves_icall_System_Threading_Thread_SetPriority_internal:
+ * @param this_obj: The MonoInternalThread on which to operate.
+ * @param priority: The priority to set.
+ *
+ * Sets the priority of the given thread.
+ */
 void
 ves_icall_System_Threading_Thread_SetPriority (MonoThread *this_obj, int priority)
 {
+       MonoInternalThread *internal = this_obj->internal_thread;
+
+       LOCK_THREAD (internal);
+       SetThreadPriority (internal->handle, priority - 2);
+       UNLOCK_THREAD (internal);
 }
 
 /* If the array is already in the requested domain, we just return it,
@@ -1359,6 +1383,23 @@ mono_thread_current (void)
        return *current_thread_ptr;
 }
 
+/* Return the thread object belonging to INTERNAL in the current domain */
+static MonoThread *
+mono_thread_current_for_thread (MonoInternalThread *internal)
+{
+       MonoDomain *domain = mono_domain_get ();
+       MonoThread **current_thread_ptr;
+
+       g_assert (internal);
+       current_thread_ptr = get_current_thread_ptr_for_domain (domain, internal);
+
+       if (!*current_thread_ptr) {
+               g_assert (domain != mono_get_root_domain ());
+               *current_thread_ptr = new_thread_with_internal (domain, internal);
+       }
+       return *current_thread_ptr;
+}
+
 MonoInternalThread*
 mono_thread_internal_current (void)
 {
@@ -1487,10 +1528,10 @@ gboolean ves_icall_System_Threading_WaitHandle_WaitAll_internal(MonoArray *mono_
        g_free(handles);
 
        if(ret==WAIT_FAILED) {
-               THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Wait failed", __func__, GetCurrentThreadId ()));
+               THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Wait failed", __func__, mono_native_thread_id_get ()));
                return(FALSE);
        } else if(ret==WAIT_TIMEOUT) {
-               THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Wait timed out", __func__, GetCurrentThreadId ()));
+               THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Wait timed out", __func__, mono_native_thread_id_get ()));
                return(FALSE);
        }
        
@@ -1529,7 +1570,7 @@ gint32 ves_icall_System_Threading_WaitHandle_WaitAny_internal(MonoArray *mono_ha
 
        mono_thread_clr_state (thread, ThreadState_WaitSleepJoin);
 
-       THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") returning %d", __func__, GetCurrentThreadId (), ret));
+       THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") returning %d", __func__, mono_native_thread_id_get (), ret));
 
        /*
         * These need to be here.  See MSDN dos on WaitForMultipleObjects.
@@ -1551,7 +1592,7 @@ gboolean ves_icall_System_Threading_WaitHandle_WaitOne_internal(MonoObject *this
        guint32 ret;
        MonoInternalThread *thread = mono_thread_internal_current ();
 
-       THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") waiting for %p, %d ms", __func__, GetCurrentThreadId (), handle, ms));
+       THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") waiting for %p, %d ms", __func__, mono_native_thread_id_get (), handle, ms));
        
        if(ms== -1) {
                ms=INFINITE;
@@ -1566,10 +1607,10 @@ gboolean ves_icall_System_Threading_WaitHandle_WaitOne_internal(MonoObject *this
        mono_thread_clr_state (thread, ThreadState_WaitSleepJoin);
        
        if(ret==WAIT_FAILED) {
-               THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Wait failed", __func__, GetCurrentThreadId ()));
+               THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Wait failed", __func__, mono_native_thread_id_get ()));
                return(FALSE);
        } else if(ret==WAIT_TIMEOUT) {
-               THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Wait timed out", __func__, GetCurrentThreadId ()));
+               THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Wait timed out", __func__, mono_native_thread_id_get ()));
                return(FALSE);
        }
        
@@ -1906,7 +1947,7 @@ MonoObject*
 ves_icall_System_Threading_Interlocked_CompareExchange_T (MonoObject **location, MonoObject *value, MonoObject *comparand)
 {
        MonoObject *res;
-       res = InterlockedCompareExchangePointer ((gpointer *)location, value, comparand);
+       res = (MonoObject *)InterlockedCompareExchangePointer ((volatile gpointer *)location, value, comparand);
        mono_gc_wbarrier_generic_nostore (location);
        return res;
 }
@@ -1915,7 +1956,7 @@ MonoObject*
 ves_icall_System_Threading_Interlocked_Exchange_T (MonoObject **location, MonoObject *value)
 {
        MonoObject *res;
-       res = InterlockedExchangePointer ((gpointer *)location, value);
+       res = (MonoObject *)InterlockedExchangePointer ((volatile gpointer *)location, value);
        mono_gc_wbarrier_generic_nostore (location);
        return res;
 }
@@ -1964,9 +2005,9 @@ ves_icall_System_Threading_Thread_MemoryBarrier (void)
 }
 
 void
-ves_icall_System_Threading_Thread_ClrState (MonoInternalThread* this, guint32 state)
+ves_icall_System_Threading_Thread_ClrState (MonoInternalThread* this_obj, guint32 state)
 {
-       mono_thread_clr_state (thisstate);
+       mono_thread_clr_state (this_obj, (MonoThreadState)state);
 
        if (state & ThreadState_Background) {
                /* If the thread changes the background mode, the main thread has to
@@ -1978,9 +2019,9 @@ ves_icall_System_Threading_Thread_ClrState (MonoInternalThread* this, guint32 st
 }
 
 void
-ves_icall_System_Threading_Thread_SetState (MonoInternalThread* this, guint32 state)
+ves_icall_System_Threading_Thread_SetState (MonoInternalThread* this_obj, guint32 state)
 {
-       mono_thread_set_state (thisstate);
+       mono_thread_set_state (this_obj, (MonoThreadState)state);
        
        if (state & ThreadState_Background) {
                /* If the thread changes the background mode, the main thread has to
@@ -1992,15 +2033,15 @@ ves_icall_System_Threading_Thread_SetState (MonoInternalThread* this, guint32 st
 }
 
 guint32
-ves_icall_System_Threading_Thread_GetState (MonoInternalThread* this)
+ves_icall_System_Threading_Thread_GetState (MonoInternalThread* this_obj)
 {
        guint32 state;
 
-       LOCK_THREAD (this);
+       LOCK_THREAD (this_obj);
        
-       state = this->state;
+       state = this_obj->state;
 
-       UNLOCK_THREAD (this);
+       UNLOCK_THREAD (this_obj);
        
        return state;
 }
@@ -2008,7 +2049,7 @@ ves_icall_System_Threading_Thread_GetState (MonoInternalThread* this)
 void ves_icall_System_Threading_Thread_Interrupt_internal (MonoThread *this_obj)
 {
        MonoInternalThread *current;
-       gboolean throw;
+       gboolean throw_;
        MonoInternalThread *thread = this_obj->internal_thread;
 
        LOCK_THREAD (thread);
@@ -2016,11 +2057,11 @@ void ves_icall_System_Threading_Thread_Interrupt_internal (MonoThread *this_obj)
        current = mono_thread_internal_current ();
 
        thread->thread_interrupt_requested = TRUE;
-       throw = current != thread && (thread->state & ThreadState_WaitSleepJoin);
+       throw_ = current != thread && (thread->state & ThreadState_WaitSleepJoin);
 
        UNLOCK_THREAD (thread);
        
-       if (throw) {
+       if (throw_) {
                abort_thread_internal (thread, TRUE, FALSE);
        }
 }
@@ -2028,18 +2069,18 @@ void ves_icall_System_Threading_Thread_Interrupt_internal (MonoThread *this_obj)
 void mono_thread_current_check_pending_interrupt ()
 {
        MonoInternalThread *thread = mono_thread_internal_current ();
-       gboolean throw = FALSE;
+       gboolean throw_ = FALSE;
 
        LOCK_THREAD (thread);
        
        if (thread->thread_interrupt_requested) {
-               throw = TRUE;
+               throw_ = TRUE;
                thread->thread_interrupt_requested = FALSE;
        }
        
        UNLOCK_THREAD (thread);
 
-       if (throw) {
+       if (throw_) {
                mono_raise_exception (mono_get_exception_thread_interrupted ());
        }
 }
@@ -2074,15 +2115,15 @@ ves_icall_System_Threading_Thread_Abort (MonoInternalThread *thread, MonoObject
        }
        thread->abort_exc = NULL;
 
-       UNLOCK_THREAD (thread);
-
-       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Abort requested for %p (%"G_GSIZE_FORMAT")", __func__, GetCurrentThreadId (), thread, (gsize)thread->tid));
+       THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Abort requested for %p (%"G_GSIZE_FORMAT")", __func__, mono_native_thread_id_get (), thread, (gsize)thread->tid));
 
        /* During shutdown, we can't wait for other threads */
        if (!shutting_down)
                /* Make sure the thread is awake */
                mono_thread_resume (thread);
-       
+
+       UNLOCK_THREAD (thread);
+
        abort_thread_internal (thread, TRUE, TRUE);
 }
 
@@ -2199,14 +2240,12 @@ ves_icall_System_Threading_Thread_Suspend (MonoThread *this_obj)
        }
 }
 
+/* LOCKING: LOCK_THREAD(thread) must be held */
 static gboolean
 mono_thread_resume (MonoInternalThread *thread)
 {
-       LOCK_THREAD (thread);
-
        if ((thread->state & ThreadState_SuspendRequested) != 0) {
                thread->state &= ~ThreadState_SuspendRequested;
-               UNLOCK_THREAD (thread);
                return TRUE;
        }
 
@@ -2215,19 +2254,32 @@ mono_thread_resume (MonoInternalThread *thread)
                (thread->state & ThreadState_Aborted) != 0 || 
                (thread->state & ThreadState_Stopped) != 0)
        {
-               UNLOCK_THREAD (thread);
                return FALSE;
        }
 
-       return resume_thread_internal (thread);
+       UNLOCK_THREAD (thread);
+
+       /* Awake the thread */
+       if (!mono_thread_info_resume (thread_get_tid (thread)))
+               return FALSE;
+
+       LOCK_THREAD (thread);
+
+       thread->state &= ~ThreadState_Suspended;
+
+       return TRUE;
 }
 
 void
 ves_icall_System_Threading_Thread_Resume (MonoThread *thread)
 {
-       if (!thread->internal_thread || !mono_thread_resume (thread->internal_thread)) {
+       if (!thread->internal_thread) {
                mono_set_pending_exception (mono_get_exception_thread_state ("Thread has not been started, or is dead."));
-               return;
+       } else {
+               LOCK_THREAD (thread->internal_thread);
+               if (!mono_thread_resume (thread->internal_thread))
+                       mono_set_pending_exception (mono_get_exception_thread_state ("Thread has not been started, or is dead."));
+               UNLOCK_THREAD (thread->internal_thread);
        }
 }
 
@@ -2358,19 +2410,19 @@ ves_icall_System_Threading_Thread_VolatileReadFloat (void *ptr)
 gint8
 ves_icall_System_Threading_Volatile_Read1 (void *ptr)
 {
-       return InterlockedRead8 (ptr);
+       return InterlockedRead8 ((volatile gint8 *)ptr);
 }
 
 gint16
 ves_icall_System_Threading_Volatile_Read2 (void *ptr)
 {
-       return InterlockedRead16 (ptr);
+       return InterlockedRead16 ((volatile gint16 *)ptr);
 }
 
 gint32
 ves_icall_System_Threading_Volatile_Read4 (void *ptr)
 {
-       return InterlockedRead (ptr);
+       return InterlockedRead ((volatile gint32 *)ptr);
 }
 
 gint64
@@ -2385,13 +2437,13 @@ ves_icall_System_Threading_Volatile_Read8 (void *ptr)
                return val;
        }
 #endif
-       return InterlockedRead64 (ptr);
+       return InterlockedRead64 ((volatile gint64 *)ptr);
 }
 
 void *
 ves_icall_System_Threading_Volatile_ReadIntPtr (void *ptr)
 {
-       return InterlockedReadPointer (ptr);
+       return InterlockedReadPointer ((volatile gpointer *)ptr);
 }
 
 double
@@ -2409,7 +2461,7 @@ ves_icall_System_Threading_Volatile_ReadDouble (void *ptr)
        }
 #endif
 
-       u.ival = InterlockedRead64 (ptr);
+       u.ival = InterlockedRead64 ((volatile gint64 *)ptr);
 
        return u.fval;
 }
@@ -2419,7 +2471,7 @@ ves_icall_System_Threading_Volatile_ReadFloat (void *ptr)
 {
        IntFloatUnion u;
 
-       u.ival = InterlockedRead (ptr);
+       u.ival = InterlockedRead ((volatile gint32 *)ptr);
 
        return u.fval;
 }
@@ -2427,7 +2479,7 @@ ves_icall_System_Threading_Volatile_ReadFloat (void *ptr)
 MonoObject*
 ves_icall_System_Threading_Volatile_Read_T (void *ptr)
 {
-       return InterlockedReadPointer (ptr);
+       return (MonoObject *)InterlockedReadPointer ((volatile gpointer *)ptr);
 }
 
 void
@@ -2481,19 +2533,19 @@ ves_icall_System_Threading_Thread_VolatileWriteFloat (void *ptr, float value)
 void
 ves_icall_System_Threading_Volatile_Write1 (void *ptr, gint8 value)
 {
-       InterlockedWrite8 (ptr, value);
+       InterlockedWrite8 ((volatile gint8 *)ptr, value);
 }
 
 void
 ves_icall_System_Threading_Volatile_Write2 (void *ptr, gint16 value)
 {
-       InterlockedWrite16 (ptr, value);
+       InterlockedWrite16 ((volatile gint16 *)ptr, value);
 }
 
 void
 ves_icall_System_Threading_Volatile_Write4 (void *ptr, gint32 value)
 {
-       InterlockedWrite (ptr, value);
+       InterlockedWrite ((volatile gint32 *)ptr, value);
 }
 
 void
@@ -2508,13 +2560,13 @@ ves_icall_System_Threading_Volatile_Write8 (void *ptr, gint64 value)
        }
 #endif
 
-       InterlockedWrite64 (ptr, value);
+       InterlockedWrite64 ((volatile gint64 *)ptr, value);
 }
 
 void
 ves_icall_System_Threading_Volatile_WriteIntPtr (void *ptr, void *value)
 {
-       InterlockedWritePointer (ptr, value);
+       InterlockedWritePointer ((volatile gpointer *)ptr, value);
 }
 
 void
@@ -2533,7 +2585,7 @@ ves_icall_System_Threading_Volatile_WriteDouble (void *ptr, double value)
 
        u.fval = value;
 
-       InterlockedWrite64 (ptr, u.ival);
+       InterlockedWrite64 ((volatile gint64 *)ptr, u.ival);
 }
 
 void
@@ -2543,7 +2595,7 @@ ves_icall_System_Threading_Volatile_WriteFloat (void *ptr, float value)
 
        u.fval = value;
 
-       InterlockedWrite (ptr, u.ival);
+       InterlockedWrite ((volatile gint32 *)ptr, u.ival);
 }
 
 void
@@ -2552,6 +2604,31 @@ ves_icall_System_Threading_Volatile_Write_T (void *ptr, MonoObject *value)
        mono_gc_wbarrier_generic_store_atomic (ptr, value);
 }
 
+static void
+free_context (void *user_data)
+{
+       ContextStaticData *data = user_data;
+
+       mono_threads_lock ();
+
+       /*
+        * There is no guarantee that, by the point this reference queue callback
+        * has been invoked, the GC handle associated with the object will fail to
+        * resolve as one might expect. So if we don't free and remove the GC
+        * handle here, free_context_static_data_helper () could end up resolving
+        * a GC handle to an actually-dead context which would contain a pointer
+        * to an already-freed static data segment, resulting in a crash when
+        * accessing it.
+        */
+       g_hash_table_remove (contexts, GUINT_TO_POINTER (data->gc_handle));
+
+       mono_threads_unlock ();
+
+       mono_gchandle_free (data->gc_handle);
+       mono_free_static_data (data->static_data);
+       g_free (data);
+}
+
 void
 ves_icall_System_Runtime_Remoting_Contexts_Context_RegisterContext (MonoAppContext *ctx)
 {
@@ -2562,10 +2639,24 @@ ves_icall_System_Runtime_Remoting_Contexts_Context_RegisterContext (MonoAppConte
        if (!contexts)
                contexts = g_hash_table_new (NULL, NULL);
 
-       context_adjust_static_data (ctx);
+       if (!context_queue)
+               context_queue = mono_gc_reference_queue_new (free_context);
+
        gpointer gch = GUINT_TO_POINTER (mono_gchandle_new_weakref (&ctx->obj, FALSE));
        g_hash_table_insert (contexts, gch, gch);
 
+       /*
+        * We use this intermediate structure to contain a duplicate pointer to
+        * the static data because we can't rely on being able to resolve the GC
+        * handle in the reference queue callback.
+        */
+       ContextStaticData *data = g_new0 (ContextStaticData, 1);
+       data->gc_handle = GPOINTER_TO_UINT (gch);
+       ctx->data = data;
+
+       context_adjust_static_data (ctx);
+       mono_gc_reference_queue_add (context_queue, &ctx->obj, data);
+
        mono_threads_unlock ();
 
        mono_profiler_context_loaded (ctx);
@@ -2577,9 +2668,7 @@ ves_icall_System_Runtime_Remoting_Contexts_Context_ReleaseContext (MonoAppContex
        /*
         * NOTE: Since finalizers are unreliable for the purposes of ensuring
         * cleanup in exceptional circumstances, we don't actually do any
-        * cleanup work here. We instead do this when we iterate the `contexts`
-        * hash table. The only purpose of this finalizer, at the moment, is to
-        * notify the profiler.
+        * cleanup work here. We instead do this via a reference queue.
         */
 
        //g_print ("Releasing context %d in domain %d\n", ctx->context_id, ctx->domain_id);
@@ -2597,9 +2686,10 @@ mono_thread_init_tls (void)
 void mono_thread_init (MonoThreadStartCB start_cb,
                       MonoThreadAttachCB attach_cb)
 {
-       mono_mutex_init_recursive(&threads_mutex);
-       mono_mutex_init_recursive(&interlocked_mutex);
-       mono_mutex_init_recursive(&joinable_threads_mutex);
+       mono_coop_mutex_init_recursive (&threads_mutex);
+
+       mono_os_mutex_init_recursive(&interlocked_mutex);
+       mono_os_mutex_init_recursive(&joinable_threads_mutex);
        
        background_change_event = CreateEvent (NULL, TRUE, FALSE, NULL);
        g_assert(background_change_event != NULL);
@@ -2640,10 +2730,10 @@ void mono_thread_cleanup (void)
         * critical sections can be locked when mono_thread_cleanup is
         * called.
         */
-       mono_mutex_destroy (&threads_mutex);
-       mono_mutex_destroy (&interlocked_mutex);
-       mono_mutex_destroy (&delayed_free_table_mutex);
-       mono_mutex_destroy (&small_id_mutex);
+       mono_coop_mutex_destroy (&threads_mutex);
+       mono_os_mutex_destroy (&interlocked_mutex);
+       mono_os_mutex_destroy (&delayed_free_table_mutex);
+       mono_os_mutex_destroy (&small_id_mutex);
        CloseHandle (background_change_event);
 #endif
 
@@ -2848,17 +2938,18 @@ static gboolean
 remove_and_abort_threads (gpointer key, gpointer value, gpointer user)
 {
        struct wait_data *wait=(struct wait_data *)user;
-       gsize self = GetCurrentThreadId ();
-       MonoInternalThread *thread = value;
+       MonoNativeThreadId self = mono_native_thread_id_get ();
+       MonoInternalThread *thread = (MonoInternalThread *)value;
        HANDLE handle;
 
        if (wait->num >= MAXIMUM_WAIT_OBJECTS)
                return FALSE;
 
        /* The finalizer thread is not a background thread */
-       if (thread->tid != self && (thread->state & ThreadState_Background) != 0 &&
-               !(thread->flags & MONO_THREAD_FLAG_DONT_MANAGE)) {
-       
+       if (!mono_native_thread_id_equals (thread_get_tid (thread), self)
+            && (thread->state & ThreadState_Background) != 0
+            && (thread->flags & MONO_THREAD_FLAG_DONT_MANAGE) == 0
+       ) {
                handle = mono_threads_open_thread_handle (thread->handle, thread_get_tid (thread));
                if (handle == NULL)
                        return FALSE;
@@ -2873,7 +2964,8 @@ remove_and_abort_threads (gpointer key, gpointer value, gpointer user)
                return TRUE;
        }
 
-       return (thread->tid != self && !mono_gc_is_finalizer_internal_thread (thread)); 
+       return !mono_native_thread_id_equals (thread_get_tid (thread), self)
+               && !mono_gc_is_finalizer_internal_thread (thread);
 }
 
 /** 
@@ -3001,29 +3093,6 @@ void mono_thread_manage (void)
        mono_thread_info_yield ();
 }
 
-static void terminate_thread (gpointer key, gpointer value, gpointer user)
-{
-       MonoInternalThread *thread=(MonoInternalThread *)value;
-       
-       if(thread->tid != (gsize)user) {
-               /*TerminateThread (thread->handle, -1);*/
-       }
-}
-
-void mono_thread_abort_all_other_threads (void)
-{
-       gsize self = GetCurrentThreadId ();
-
-       mono_threads_lock ();
-       THREAD_DEBUG (g_message ("%s: There are %d threads to abort", __func__,
-                                mono_g_hash_table_size (threads));
-                     mono_g_hash_table_foreach (threads, print_tids, NULL));
-
-       mono_g_hash_table_foreach (threads, terminate_thread, (gpointer)self);
-       
-       mono_threads_unlock ();
-}
-
 static void
 collect_threads_for_suspend (gpointer key, gpointer value, gpointer user_data)
 {
@@ -3062,7 +3131,7 @@ void mono_thread_suspend_all_other_threads (void)
        struct wait_data wait_data;
        struct wait_data *wait = &wait_data;
        int i;
-       gsize self = GetCurrentThreadId ();
+       MonoNativeThreadId self = mono_native_thread_id_get ();
        guint32 eventidx = 0;
        gboolean starting, finished;
 
@@ -3104,7 +3173,10 @@ void mono_thread_suspend_all_other_threads (void)
                for (i = 0; i < wait->num; ++i) {
                        MonoInternalThread *thread = wait->threads [i];
 
-                       if ((thread->tid == self) || mono_gc_is_finalizer_internal_thread (thread) || (thread->flags & MONO_THREAD_FLAG_DONT_MANAGE)) {
+                       if (mono_native_thread_id_equals (thread_get_tid (thread), self)
+                            || mono_gc_is_finalizer_internal_thread (thread)
+                            || (thread->flags & MONO_THREAD_FLAG_DONT_MANAGE)
+                       ) {
                                //CloseHandle (wait->handles [i]);
                                wait->threads [i] = NULL; /* ignore this thread in next loop */
                                continue;
@@ -3149,62 +3221,145 @@ void mono_thread_suspend_all_other_threads (void)
                                starting = FALSE;
                        mono_threads_unlock ();
                        if (starting)
-                               Sleep (100);
+                               mono_thread_info_sleep (100, NULL);
                        else
                                finished = TRUE;
                }
        }
 }
 
+typedef struct {
+       MonoInternalThread *thread;
+       MonoStackFrameInfo *frames;
+       int nframes, max_frames;
+       int nthreads, max_threads;
+       MonoInternalThread **threads;
+} ThreadDumpUserData;
+
 static gboolean thread_dump_requested;
 
-static G_GNUC_UNUSED gboolean
-print_stack_frame_to_string (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data)
+/* This needs to be async safe */
+static gboolean
+collect_frame (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
-       GString *p = (GString*)data;
-       MonoMethod *method = NULL;
-       if (frame->type == FRAME_TYPE_MANAGED)
-               method = mono_jit_info_get_method (frame->ji);
+       ThreadDumpUserData *ud = (ThreadDumpUserData *)data;
 
-       if (method) {
-               gchar *location = mono_debug_print_stack_frame (method, frame->native_offset, frame->domain);
-               g_string_append_printf (p, "  %s\n", location);
-               g_free (location);
-       } else
-               g_string_append_printf (p, "  at <unknown> <0x%05x>\n", frame->native_offset);
+       if (ud->nframes < ud->max_frames) {
+               memcpy (&ud->frames [ud->nframes], frame, sizeof (MonoStackFrameInfo));
+               ud->nframes ++;
+       }
 
        return FALSE;
 }
 
+/* This needs to be async safe */
 static SuspendThreadResult
-print_thread_dump (MonoThreadInfo *info, gpointer ud)
+get_thread_dump (MonoThreadInfo *info, gpointer ud)
+{
+       ThreadDumpUserData *user_data = (ThreadDumpUserData *)ud;
+       MonoInternalThread *thread = user_data->thread;
+
+#if 0
+/* This no longer works with remote unwinding */
+#ifndef HOST_WIN32
+       wapi_desc = wapi_current_thread_desc ();
+       g_string_append_printf (text, " tid=0x%p this=0x%p %s\n", (gpointer)(gsize)thread->tid, thread,  wapi_desc);
+       free (wapi_desc);
+#endif
+#endif
+
+       if (thread == mono_thread_internal_current ())
+               mono_get_eh_callbacks ()->mono_walk_stack_with_ctx (collect_frame, NULL, MONO_UNWIND_SIGNAL_SAFE, ud);
+       else
+               mono_get_eh_callbacks ()->mono_walk_stack_with_state (collect_frame, mono_thread_info_get_suspend_state (info), MONO_UNWIND_SIGNAL_SAFE, ud);
+
+       return MonoResumeThread;
+}
+
+typedef struct {
+       int nthreads, max_threads;
+       MonoInternalThread **threads;
+} CollectThreadsUserData;
+
+static void
+collect_thread (gpointer key, gpointer value, gpointer user)
+{
+       CollectThreadsUserData *ud = (CollectThreadsUserData *)user;
+       MonoInternalThread *thread = (MonoInternalThread *)value;
+
+       if (ud->nthreads < ud->max_threads)
+               ud->threads [ud->nthreads ++] = thread;
+}
+
+/*
+ * Collect running threads into the THREADS array.
+ * THREADS should be an array allocated on the stack.
+ */
+static int
+collect_threads (MonoInternalThread **thread_array, int max_threads)
+{
+       CollectThreadsUserData ud;
+
+       memset (&ud, 0, sizeof (ud));
+       /* This array contains refs, but its on the stack, so its ok */
+       ud.threads = thread_array;
+       ud.max_threads = max_threads;
+
+       mono_threads_lock ();
+       mono_g_hash_table_foreach (threads, collect_thread, &ud);
+       mono_threads_unlock ();
+
+       return ud.nthreads;
+}
+
+static void
+dump_thread (MonoInternalThread *thread, ThreadDumpUserData *ud)
 {
-       MonoInternalThread *thread = ud;
        GString* text = g_string_new (0);
        char *name;
        GError *error = NULL;
+       int i;
+
+       ud->thread = thread;
+       ud->nframes = 0;
 
+       /* Collect frames for the thread */
+       if (thread == mono_thread_internal_current ()) {
+               get_thread_dump (mono_thread_info_current (), ud);
+       } else {
+               mono_thread_info_safe_suspend_and_run (thread_get_tid (thread), FALSE, get_thread_dump, ud);
+       }
+
+       /*
+        * Do all the non async-safe work outside of get_thread_dump.
+        */
        if (thread->name) {
                name = g_utf16_to_utf8 (thread->name, thread->name_len, NULL, NULL, &error);
                g_assert (!error);
                g_string_append_printf (text, "\n\"%s\"", name);
                g_free (name);
        }
-       else if (thread->threadpool_thread)
+       else if (thread->threadpool_thread) {
                g_string_append (text, "\n\"<threadpool thread>\"");
-       else
+       } else {
                g_string_append (text, "\n\"<unnamed thread>\"");
+       }
 
-#if 0
-/* This no longer works with remote unwinding */
-#ifndef HOST_WIN32
-       wapi_desc = wapi_current_thread_desc ();
-       g_string_append_printf (text, " tid=0x%p this=0x%p %s\n", (gpointer)(gsize)thread->tid, thread,  wapi_desc);
-       free (wapi_desc);
-#endif
-#endif
+       for (i = 0; i < ud->nframes; ++i) {
+               MonoStackFrameInfo *frame = &ud->frames [i];
+               MonoMethod *method = NULL;
 
-       mono_get_eh_callbacks ()->mono_walk_stack_with_state (print_stack_frame_to_string, mono_thread_info_get_suspend_state (info), MONO_UNWIND_SIGNAL_SAFE, text);
+               if (frame->type == FRAME_TYPE_MANAGED)
+                       method = mono_jit_info_get_method (frame->ji);
+
+               if (method) {
+                       gchar *location = mono_debug_print_stack_frame (method, frame->native_offset, frame->domain);
+                       g_string_append_printf (text, "  %s\n", location);
+                       g_free (location);
+               } else {
+                       g_string_append_printf (text, "  at <unknown> <0x%05x>\n", frame->native_offset);
+               }
+       }
 
        fprintf (stdout, "%s", text->str);
 
@@ -3214,51 +3369,114 @@ print_thread_dump (MonoThreadInfo *info, gpointer ud)
 
        g_string_free (text, TRUE);
        fflush (stdout);
-       return MonoResumeThread;
-}
-
-static void
-dump_thread (gpointer key, gpointer value, gpointer user)
-{
-       MonoInternalThread *thread = (MonoInternalThread *)value;
-
-       if (thread == mono_thread_internal_current ())
-               return;
-
-       /*
-       FIXME This still can hang if we stop a thread during malloc.
-       FIXME This can hang if we suspend on a critical method and the GC kicks in. A fix might be to have function
-       that takes a callback and runs it with the target suspended.
-       We probably should loop a bit around trying to get it to either managed code
-       or WSJ state.
-       */
-       mono_thread_info_safe_suspend_and_run (thread_get_tid (thread), FALSE, print_thread_dump, thread);
 }
 
 void
 mono_threads_perform_thread_dump (void)
 {
+       ThreadDumpUserData ud;
+       MonoInternalThread *thread_array [128];
+       int tindex, nthreads;
+
        if (!thread_dump_requested)
                return;
 
        printf ("Full thread dump:\n");
 
-       /* We take the loader lock and the root domain lock as to increase our odds of not deadlocking if
-       something needs then in the process.
-       */
-       mono_loader_lock ();
-       mono_domain_lock (mono_get_root_domain ());
+       /* Make a copy of the threads hash to avoid doing work inside threads_lock () */
+       nthreads = collect_threads (thread_array, 128);
 
-       mono_threads_lock ();
-       mono_g_hash_table_foreach (threads, dump_thread, NULL);
-       mono_threads_unlock ();
+       memset (&ud, 0, sizeof (ud));
+       ud.frames = g_new0 (MonoStackFrameInfo, 256);
+       ud.max_frames = 256;
+
+       for (tindex = 0; tindex < nthreads; ++tindex)
+               dump_thread (thread_array [tindex], &ud);
 
-       mono_domain_unlock (mono_get_root_domain ());
-       mono_loader_unlock ();
+       g_free (ud.frames);
 
        thread_dump_requested = FALSE;
 }
 
+/* Obtain the thread dump of all threads */
+static void
+mono_threads_get_thread_dump (MonoArray **out_threads, MonoArray **out_stack_frames)
+{
+       ThreadDumpUserData ud;
+       MonoInternalThread *thread_array [128];
+       MonoDomain *domain = mono_domain_get ();
+       MonoDebugSourceLocation *location;
+       int tindex, nthreads;
+
+       *out_threads = NULL;
+       *out_stack_frames = NULL;
+
+       /* Make a copy of the threads hash to avoid doing work inside threads_lock () */
+       nthreads = collect_threads (thread_array, 128);
+
+       memset (&ud, 0, sizeof (ud));
+       ud.frames = g_new0 (MonoStackFrameInfo, 256);
+       ud.max_frames = 256;
+
+       *out_threads = mono_array_new (domain, mono_defaults.thread_class, nthreads);
+       *out_stack_frames = mono_array_new (domain, mono_defaults.array_class, nthreads);
+
+       for (tindex = 0; tindex < nthreads; ++tindex) {
+               MonoInternalThread *thread = thread_array [tindex];
+               MonoArray *thread_frames;
+               int i;
+
+               ud.thread = thread;
+               ud.nframes = 0;
+
+               /* Collect frames for the thread */
+               if (thread == mono_thread_internal_current ()) {
+                       get_thread_dump (mono_thread_info_current (), &ud);
+               } else {
+                       mono_thread_info_safe_suspend_and_run (thread_get_tid (thread), FALSE, get_thread_dump, &ud);
+               }
+
+               mono_array_setref_fast (*out_threads, tindex, mono_thread_current_for_thread (thread));
+
+               thread_frames = mono_array_new (domain, mono_defaults.stack_frame_class, ud.nframes);
+               mono_array_setref_fast (*out_stack_frames, tindex, thread_frames);
+
+               for (i = 0; i < ud.nframes; ++i) {
+                       MonoStackFrameInfo *frame = &ud.frames [i];
+                       MonoMethod *method = NULL;
+                       MonoStackFrame *sf = (MonoStackFrame *)mono_object_new (domain, mono_defaults.stack_frame_class);
+
+                       sf->native_offset = frame->native_offset;
+
+                       if (frame->type == FRAME_TYPE_MANAGED)
+                               method = mono_jit_info_get_method (frame->ji);
+
+                       if (method) {
+                               sf->method_address = (gsize) frame->ji->code_start;
+
+                               MONO_OBJECT_SETREF (sf, method, mono_method_get_object (domain, method, NULL));
+
+                               location = mono_debug_lookup_source_location (method, frame->native_offset, domain);
+                               if (location) {
+                                       sf->il_offset = location->il_offset;
+
+                                       if (location && location->source_file) {
+                                               MONO_OBJECT_SETREF (sf, filename, mono_string_new (domain, location->source_file));
+                                               sf->line = location->row;
+                                               sf->column = location->column;
+                                       }
+                                       mono_debug_free_source_location (location);
+                               } else {
+                                       sf->il_offset = -1;
+                               }
+                       }
+                       mono_array_setref (thread_frames, i, sf);
+               }
+       }
+
+       g_free (ud.frames);
+}
+
 /**
  * mono_threads_request_thread_dump:
  *
@@ -3295,7 +3513,7 @@ ref_stack_new (gint initial_size)
 static void
 ref_stack_destroy (gpointer ptr)
 {
-       RefStack *rs = ptr;
+       RefStack *rs = (RefStack *)ptr;
 
        if (rs != NULL) {
                g_free (rs->refs);
@@ -3309,7 +3527,7 @@ ref_stack_push (RefStack *rs, gpointer ptr)
        g_assert (rs != NULL);
 
        if (rs->bottom >= rs->allocated) {
-               rs->refs = g_realloc (rs->refs, rs->allocated * 2 * sizeof (gpointer) + 1);
+               rs->refs = (void **)g_realloc (rs->refs, rs->allocated * 2 * sizeof (gpointer) + 1);
                rs->allocated <<= 1;
                rs->refs [rs->allocated] = NULL;
        }
@@ -3358,7 +3576,7 @@ mono_thread_push_appdomain_ref (MonoDomain *domain)
                SPIN_LOCK (thread->lock_thread_id);
                if (thread->appdomain_refs == NULL)
                        thread->appdomain_refs = ref_stack_new (16);
-               ref_stack_push (thread->appdomain_refs, domain);
+               ref_stack_push ((RefStack *)thread->appdomain_refs, domain);
                SPIN_UNLOCK (thread->lock_thread_id);
        }
 }
@@ -3371,7 +3589,7 @@ mono_thread_pop_appdomain_ref (void)
        if (thread) {
                /* printf ("POP REF: %"G_GSIZE_FORMAT" -> %s.\n", (gsize)thread->tid, ((MonoDomain*)(thread->appdomain_refs->data))->friendly_name); */
                SPIN_LOCK (thread->lock_thread_id);
-               ref_stack_pop (thread->appdomain_refs);
+               ref_stack_pop ((RefStack *)thread->appdomain_refs);
                SPIN_UNLOCK (thread->lock_thread_id);
        }
 }
@@ -3381,7 +3599,7 @@ mono_thread_internal_has_appdomain_ref (MonoInternalThread *thread, MonoDomain *
 {
        gboolean res;
        SPIN_LOCK (thread->lock_thread_id);
-       res = ref_stack_find (thread->appdomain_refs, domain);
+       res = ref_stack_find ((RefStack *)thread->appdomain_refs, domain);
        SPIN_UNLOCK (thread->lock_thread_id);
        return res;
 }
@@ -3552,10 +3770,10 @@ static MonoBitSet *context_reference_bitmaps [NUM_STATIC_DATA_IDX];
 static void
 mark_slots (void *addr, MonoBitSet **bitmaps, MonoGCMarkFunc mark_func, void *gc_data)
 {
-       gpointer *static_data = addr;
+       gpointer *static_data = (gpointer *)addr;
 
        for (int i = 0; i < NUM_STATIC_DATA_IDX; ++i) {
-               void **ptr = static_data [i];
+               void **ptr = (void **)static_data [i];
 
                if (!ptr)
                        continue;
@@ -3605,7 +3823,7 @@ mono_alloc_static_data (gpointer **static_data_ptr, guint32 offset, gboolean thr
                                ctx_desc = mono_gc_make_root_descr_user (mark_ctx_slots);
                }
 
-               static_data = mono_gc_alloc_fixed (static_data_size [0], threadlocal ? tls_desc : ctx_desc,
+               static_data = (void **)mono_gc_alloc_fixed (static_data_size [0], threadlocal ? tls_desc : ctx_desc,
                        threadlocal ? MONO_ROOT_SOURCE_THREAD_STATIC : MONO_ROOT_SOURCE_CONTEXT_STATIC,
                        threadlocal ? "managed thread-static variables" : "managed context-static variables");
                *static_data_ptr = static_data;
@@ -3716,6 +3934,7 @@ context_adjust_static_data (MonoAppContext *ctx)
        if (context_static_info.offset || context_static_info.idx > 0) {
                guint32 offset = MAKE_SPECIAL_STATIC_OFFSET (context_static_info.idx, context_static_info.offset, 0);
                mono_alloc_static_data (&ctx->static_data, offset, FALSE);
+               ctx->data->static_data = ctx->static_data;
        }
 }
 
@@ -3725,7 +3944,7 @@ context_adjust_static_data (MonoAppContext *ctx)
 static void 
 alloc_thread_static_data_helper (gpointer key, gpointer value, gpointer user)
 {
-       MonoInternalThread *thread = value;
+       MonoInternalThread *thread = (MonoInternalThread *)value;
        guint32 offset = GPOINTER_TO_UINT (user);
 
        mono_alloc_static_data (&(thread->static_data), offset, TRUE);
@@ -3734,21 +3953,17 @@ alloc_thread_static_data_helper (gpointer key, gpointer value, gpointer user)
 /*
  * LOCKING: requires that threads_mutex is held
  */
-static gboolean
+static void
 alloc_context_static_data_helper (gpointer key, gpointer value, gpointer user)
 {
-       uint32_t gch = GPOINTER_TO_INT (key);
-       MonoAppContext *ctx = (MonoAppContext *) mono_gchandle_get_target (gch);
+       MonoAppContext *ctx = (MonoAppContext *) mono_gchandle_get_target (GPOINTER_TO_INT (key));
 
-       if (!ctx) {
-               mono_gchandle_free (gch);
-               return TRUE; // Remove this key/value pair
-       }
+       if (!ctx)
+               return;
 
        guint32 offset = GPOINTER_TO_UINT (user);
        mono_alloc_static_data (&ctx->static_data, offset, FALSE);
-
-       return FALSE; // Don't remove it
+       ctx->data->static_data = ctx->static_data;
 }
 
 static StaticDataFreeList*
@@ -3840,7 +4055,7 @@ mono_alloc_special_static_data (guint32 static_type, guint32 size, guint32 align
                        mono_g_hash_table_foreach (threads, alloc_thread_static_data_helper, GUINT_TO_POINTER (offset));
        } else {
                if (contexts != NULL)
-                       g_hash_table_foreach_remove (contexts, alloc_context_static_data_helper, GUINT_TO_POINTER (offset));
+                       g_hash_table_foreach (contexts, alloc_context_static_data_helper, GUINT_TO_POINTER (offset));
 
                ACCESS_SPECIAL_STATIC_OFFSET (offset, type) = SPECIAL_STATIC_OFFSET_TYPE_CONTEXT;
        }
@@ -3879,8 +4094,8 @@ typedef struct {
 static void 
 free_thread_static_data_helper (gpointer key, gpointer value, gpointer user)
 {
-       MonoInternalThread *thread = value;
-       OffsetSize *data = user;
+       MonoInternalThread *thread = (MonoInternalThread *)value;
+       OffsetSize *data = (OffsetSize *)user;
        int idx = ACCESS_SPECIAL_STATIC_OFFSET (data->offset, index);
        int off = ACCESS_SPECIAL_STATIC_OFFSET (data->offset, offset);
        char *ptr;
@@ -3894,29 +4109,24 @@ free_thread_static_data_helper (gpointer key, gpointer value, gpointer user)
 /*
  * LOCKING: requires that threads_mutex is held
  */
-static gboolean
+static void
 free_context_static_data_helper (gpointer key, gpointer value, gpointer user)
 {
-       uint32_t gch = GPOINTER_TO_INT (key);
-       MonoAppContext *ctx = (MonoAppContext *) mono_gchandle_get_target (gch);
+       MonoAppContext *ctx = (MonoAppContext *) mono_gchandle_get_target (GPOINTER_TO_INT (key));
 
-       if (!ctx) {
-               mono_gchandle_free (gch);
-               return TRUE; // Remove this key/value pair
-       }
+       if (!ctx)
+               return;
 
-       OffsetSize *data = user;
+       OffsetSize *data = (OffsetSize *)user;
        int idx = ACCESS_SPECIAL_STATIC_OFFSET (data->offset, index);
        int off = ACCESS_SPECIAL_STATIC_OFFSET (data->offset, offset);
        char *ptr;
 
        if (!ctx->static_data || !ctx->static_data [idx])
-               return FALSE; // Don't remove this key/value pair
+               return;
 
        ptr = ((char*) ctx->static_data [idx]) + off;
        mono_gc_bzero_atomic (ptr, data->size);
-
-       return FALSE; // Don't remove this key/value pair
 }
 
 static void
@@ -3945,7 +4155,7 @@ do_free_special_slot (guint32 offset, guint32 size)
                        mono_g_hash_table_foreach (threads, free_thread_static_data_helper, &data);
        } else {
                if (contexts != NULL)
-                       g_hash_table_foreach_remove (contexts, free_context_static_data_helper, &data);
+                       g_hash_table_foreach (contexts, free_context_static_data_helper, &data);
        }
 
        if (!mono_runtime_is_shutting_down ()) {
@@ -3962,7 +4172,7 @@ do_free_special_slot (guint32 offset, guint32 size)
 static void
 do_free_special (gpointer key, gpointer value, gpointer data)
 {
-       MonoClassField *field = key;
+       MonoClassField *field = (MonoClassField *)key;
        guint32 offset = GPOINTER_TO_UINT (value);
        gint32 align;
        guint32 size;
@@ -4371,7 +4581,7 @@ mono_jit_info_match (MonoJitInfo *ji, gpointer ip)
 static gboolean
 last_managed (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
-       MonoJitInfo **dest = data;
+       MonoJitInfo **dest = (MonoJitInfo **)data;
        *dest = frame->ji;
        return TRUE;
 }
@@ -4395,7 +4605,7 @@ typedef struct {
 static SuspendThreadResult
 abort_thread_critical (MonoThreadInfo *info, gpointer ud)
 {
-       AbortThreadData *data = ud;
+       AbortThreadData *data = (AbortThreadData *)ud;
        MonoInternalThread *thread = data->thread;
        MonoJitInfo *ji = NULL;
        gboolean protected_wrapper;
@@ -4475,7 +4685,7 @@ typedef struct{
 static SuspendThreadResult
 suspend_thread_critical (MonoThreadInfo *info, gpointer ud)
 {
-       SuspendThreadData *data = ud;
+       SuspendThreadData *data = (SuspendThreadData *)ud;
        MonoInternalThread *thread = data->thread;
        MonoJitInfo *ji = NULL;
        gboolean protected_wrapper;
@@ -4493,7 +4703,7 @@ suspend_thread_critical (MonoThreadInfo *info, gpointer ud)
                if (InterlockedCompareExchange (&thread->interruption_requested, 1, 0) == 0)
                        InterlockedIncrement (&thread_interruption_requested);
                if (data->interrupt)
-                       data->interrupt_token = mono_thread_info_prepare_interrupt (thread->thread_info);
+                       data->interrupt_token = mono_thread_info_prepare_interrupt ((MonoThreadInfo *)thread->thread_info);
                
                if (mono_thread_notify_pending_exc_fn && !running_managed)
                        /* The JIT will notify the thread about the interruption */
@@ -4536,20 +4746,6 @@ self_suspend_internal (MonoInternalThread *thread)
        mono_thread_info_end_self_suspend ();
 }
 
-/*This is called with @thread synch_cs held and it must release it*/
-static gboolean
-resume_thread_internal (MonoInternalThread *thread)
-{
-       UNLOCK_THREAD (thread);
-       /* Awake the thread */
-       if (!mono_thread_info_resume (thread_get_tid (thread)))
-               return FALSE;
-       LOCK_THREAD (thread);
-       thread->state &= ~ThreadState_Suspended;
-       UNLOCK_THREAD (thread);
-       return TRUE;
-}
-
 
 /*
  * mono_thread_is_foreign:
@@ -4563,7 +4759,7 @@ resume_thread_internal (MonoInternalThread *thread)
 mono_bool
 mono_thread_is_foreign (MonoThread *thread)
 {
-       MonoThreadInfo *info = thread->internal_thread->thread_info;
+       MonoThreadInfo *info = (MonoThreadInfo *)thread->internal_thread->thread_info;
        return info->runtime_thread == FALSE;
 }
 
@@ -4704,3 +4900,9 @@ mono_thread_internal_unhandled_exception (MonoObject* exc)
                }
        }
 }
+
+void
+ves_icall_System_Threading_Thread_GetStackTraces (MonoArray **out_threads, MonoArray **out_stack_traces)
+{
+       mono_threads_get_thread_dump (out_threads, out_stack_traces);
+}
index 68fe0688774e03bdf70e4f80f566f1e98cc3abf8..e9af9516a1b4652f3e43ca9b3dd254addad43a0f 100644 (file)
@@ -409,10 +409,10 @@ mono_type_is_enum_type (MonoType *type)
  * 
  */
 static gboolean
-mono_type_is_value_type (MonoType *type, const char *namespace, const char *name)
+mono_type_is_value_type (MonoType *type, const char *namespace_, const char *name)
 {
        return type->type == MONO_TYPE_VALUETYPE &&
-               !strcmp (namespace, type->data.klass->name_space) &&
+               !strcmp (namespace_, type->data.klass->name_space) &&
                !strcmp (name, type->data.klass->name);
 }
 
@@ -941,7 +941,7 @@ verifier_load_field (VerifyContext *ctx, int token, MonoClass **out_klass, const
        MonoClass *klass = NULL;
 
        if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
-               field = mono_method_get_wrapper_data (ctx->method, (guint32)token);
+               field = (MonoClassField *)mono_method_get_wrapper_data (ctx->method, (guint32)token);
                klass = field ? field->parent : NULL;
        } else {
                if (!IS_FIELD_DEF_OR_REF (token) || !token_bounds_check (ctx->image, token)) {
@@ -978,7 +978,7 @@ verifier_load_method (VerifyContext *ctx, int token, const char *opcode) {
 
 
        if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
-               method = mono_method_get_wrapper_data (ctx->method, (guint32)token);
+               method = (MonoMethod *)mono_method_get_wrapper_data (ctx->method, (guint32)token);
        } else {
                MonoError error;
                if (!IS_METHOD_DEF_OR_REF_OR_SPEC (token) || !token_bounds_check (ctx->image, token)) {
@@ -1006,8 +1006,8 @@ verifier_load_type (VerifyContext *ctx, int token, const char *opcode) {
        MonoType* type;
        
        if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
-               MonoClass *class = mono_method_get_wrapper_data (ctx->method, (guint32)token);
-               type = class ? &class->byval_arg : NULL;
+               MonoClass *klass = (MonoClass *)mono_method_get_wrapper_data (ctx->method, (guint32)token);
+               type = klass ? &klass->byval_arg : NULL;
        } else {
                MonoError error;
                if (!IS_TYPE_DEF_OR_REF_OR_SPEC (token) || !token_bounds_check (ctx->image, token)) {
@@ -1175,7 +1175,7 @@ mono_free_verify_list (GSList *list)
        GSList *tmp;
 
        for (tmp = list; tmp; tmp = tmp->next) {
-               info = tmp->data;
+               info = (MonoVerifyInfoExtended *)tmp->data;
                g_free (info->info.message);
                g_free (info);
        }
@@ -1655,7 +1655,7 @@ static MonoType*
 get_boxable_mono_type (VerifyContext* ctx, int token, const char *opcode)
 {
        MonoType *type;
-       MonoClass *class;
+       MonoClass *klass;
 
        if (!(type = verifier_load_type (ctx, token, opcode)))
                return NULL;
@@ -1673,10 +1673,10 @@ get_boxable_mono_type (VerifyContext* ctx, int token, const char *opcode)
        if (type->type == MONO_TYPE_TYPEDBYREF)
                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Invalid use of typedbyref for %s at 0x%04x", opcode, ctx->ip_offset));
 
-       if (!(class = mono_class_from_mono_type (type)))
+       if (!(klass = mono_class_from_mono_type (type)))
                ADD_VERIFY_ERROR (ctx, g_strdup_printf ("Could not retrieve type token for %s at 0x%04x", opcode, ctx->ip_offset));
 
-       if (class->generic_container && type->type != MONO_TYPE_GENERICINST)
+       if (klass->generic_container && type->type != MONO_TYPE_GENERICINST)
                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot use the generic type definition in a boxable type position for %s at 0x%04x", opcode, ctx->ip_offset));      
 
        check_unverifiable_type (ctx, type);
@@ -2444,11 +2444,11 @@ recursive_boxed_constraint_type_check (VerifyContext *ctx, MonoType *type, MonoC
 
        if (mono_type_is_generic_argument (constraint_type)) {
                MonoGenericParam *param = get_generic_param (ctx, constraint_type);
-               MonoClass **class;
+               MonoClass **klass;
                if (!param)
                        return FALSE;
-               for (class = mono_generic_param_info (param)->constraints; class && *class; ++class) {
-                       if (recursive_boxed_constraint_type_check (ctx, type, *class, recursion_level - 1))
+               for (klass = mono_generic_param_info (param)->constraints; klass && *klass; ++klass) {
+                       if (recursive_boxed_constraint_type_check (ctx, type, *klass, recursion_level - 1))
                                return TRUE;
                }
        }
@@ -2476,13 +2476,13 @@ is_compatible_boxed_valuetype (VerifyContext *ctx, MonoType *type, MonoType *can
 
        if (mono_type_is_generic_argument (candidate)) {
                MonoGenericParam *param = get_generic_param (ctx, candidate);
-               MonoClass **class;
+               MonoClass **klass;
                if (!param)
                        return FALSE;
 
-               for (class = mono_generic_param_info (param)->constraints; class && *class; ++class) {
+               for (klass = mono_generic_param_info (param)->constraints; klass && *klass; ++klass) {
                        /*256 should be enough since there can't be more than 255 generic arguments.*/
-                       if (recursive_boxed_constraint_type_check (ctx, type, *class, 256))
+                       if (recursive_boxed_constraint_type_check (ctx, type, *klass, 256))
                                return TRUE;
                }
        }
@@ -2515,6 +2515,12 @@ verify_stack_type_compatibility_full (VerifyContext *ctx, MonoType *type, ILStac
        if (drop_byref)
                return verify_type_compatibility_full (ctx, type, mono_type_get_type_byval (candidate), FALSE);
 
+       /* Handle how Roslyn emit fixed statements by encoding it as byref */
+       if (type->byref && candidate->byref && (type->type == MONO_TYPE_I) && !mono_type_is_reference (candidate)) {
+               if (!IS_STRICT_MODE (ctx))
+                       return TRUE;
+       }
+
        return verify_type_compatibility_full (ctx, type, candidate, FALSE);
 }
 
@@ -3142,7 +3148,7 @@ do_ret (VerifyContext *ctx)
  * TODO handle calling .ctor outside one or calling the .ctor for other class but super  
  */
 static void
-do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual)
+do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual_)
 {
        MonoError error;
        int param_count, i;
@@ -3152,10 +3158,10 @@ do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual)
        gboolean virt_check_this = FALSE;
        gboolean constrained = ctx->prefix_set & PREFIX_CONSTRAINED;
 
-       if (!(method = verifier_load_method (ctx, method_token, virtual ? "callvirt" : "call")))
+       if (!(method = verifier_load_method (ctx, method_token, virtual_ ? "callvirt" : "call")))
                return;
 
-       if (virtual) {
+       if (virtual_) {
                CLEAR_PREFIX (ctx, PREFIX_CONSTRAINED);
 
                if (method->klass->valuetype) // && !constrained ???
@@ -3203,10 +3209,10 @@ do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual)
                }
 
                if (stack_slot_is_managed_mutability_pointer (value))
-                       CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot use a readonly pointer as argument of %s at 0x%04x", virtual ? "callvirt" : "call",  ctx->ip_offset));
+                       CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot use a readonly pointer as argument of %s at 0x%04x", virtual_ ? "callvirt" : "call",  ctx->ip_offset));
 
                if ((ctx->prefix_set & PREFIX_TAIL) && stack_slot_is_managed_pointer (value)) {
-                       ADD_VERIFY_ERROR (ctx, g_strdup_printf ("Cannot  pass a byref argument to a tail %s at 0x%04x", virtual ? "callvirt" : "call",  ctx->ip_offset));
+                       ADD_VERIFY_ERROR (ctx, g_strdup_printf ("Cannot  pass a byref argument to a tail %s at 0x%04x", virtual_ ? "callvirt" : "call",  ctx->ip_offset));
                        return;
                }
        }
@@ -3238,7 +3244,7 @@ do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual)
                if (virt_check_this && !stack_slot_is_this_pointer (value) && !(method->klass->valuetype || stack_slot_is_boxed_value (value)))
                        CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot use the call opcode with a non-final virtual method on an object different than the 'this' pointer at 0x%04x", ctx->ip_offset));
 
-               if (constrained && virtual) {
+               if (constrained && virtual_) {
                        if (!stack_slot_is_managed_pointer (value))
                                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Object is not a managed pointer for a constrained call at 0x%04x", ctx->ip_offset));
                        if (!mono_metadata_type_equal_full (mono_type_get_type_byval (value->type), mono_type_get_underlying_type (ctx->constrained_type), TRUE))
@@ -3249,10 +3255,10 @@ do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual)
                        if (stack_slot_is_managed_pointer (value) && !mono_class_from_mono_type (value->type)->valuetype)
                                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot call a reference type using a managed pointer to the this arg at 0x%04x", ctx->ip_offset));
        
-                       if (!virtual && mono_class_from_mono_type (value->type)->valuetype && !method->klass->valuetype && !stack_slot_is_boxed_value (value))
+                       if (!virtual_ && mono_class_from_mono_type (value->type)->valuetype && !method->klass->valuetype && !stack_slot_is_boxed_value (value))
                                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot call a valuetype baseclass at 0x%04x", ctx->ip_offset));
        
-                       if (virtual && mono_class_from_mono_type (value->type)->valuetype && !stack_slot_is_boxed_value (value))
+                       if (virtual_ && mono_class_from_mono_type (value->type)->valuetype && !stack_slot_is_boxed_value (value))
                                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot use a valuetype with callvirt at 0x%04x", ctx->ip_offset));
        
                        if (method->klass->valuetype && (stack_slot_is_boxed_value (value) || !stack_slot_is_managed_pointer (value)))
@@ -3621,7 +3627,7 @@ do_load_token (VerifyContext *ctx, int token)
 
        if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
                handle = mono_method_get_wrapper_data (ctx->method, token);
-               handle_class = mono_method_get_wrapper_data (ctx->method, token + 1);
+               handle_class = (MonoClass *)mono_method_get_wrapper_data (ctx->method, token + 1);
                if (handle_class == mono_defaults.typehandle_class)
                        handle = &((MonoClass*)handle)->byval_arg;
        } else {
@@ -4347,19 +4353,19 @@ do_switch (VerifyContext *ctx, int count, const unsigned char *data)
 }
 
 static void
-do_load_function_ptr (VerifyContext *ctx, guint32 token, gboolean virtual)
+do_load_function_ptr (VerifyContext *ctx, guint32 token, gboolean virtual_)
 {
        ILStackDesc *top;
        MonoMethod *method;
 
-       if (virtual && !check_underflow (ctx, 1))
+       if (virtual_ && !check_underflow (ctx, 1))
                return;
 
-       if (!virtual && !check_overflow (ctx))
+       if (!virtual_ && !check_overflow (ctx))
                return;
 
        if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
-               method = mono_method_get_wrapper_data (ctx->method, (guint32)token);
+               method = (MonoMethod *)mono_method_get_wrapper_data (ctx->method, (guint32)token);
                if (!method) {
                        ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid token %x for ldftn  at 0x%04x", token, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
                        return;
@@ -4370,14 +4376,14 @@ do_load_function_ptr (VerifyContext *ctx, guint32 token, gboolean virtual)
                        return;
                }
 
-               if (!(method = verifier_load_method (ctx, token, virtual ? "ldvirtfrn" : "ldftn")))
+               if (!(method = verifier_load_method (ctx, token, virtual_ ? "ldvirtfrn" : "ldftn")))
                        return;
        }
 
        if (mono_method_is_constructor (method))
                CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot use ldftn with a constructor at 0x%04x", ctx->ip_offset));
 
-       if (virtual) {
+       if (virtual_) {
                ILStackDesc *top = stack_pop (ctx);
        
                if (stack_slot_get_type (top) != TYPE_COMPLEX || top->type->type == MONO_TYPE_VALUETYPE)
@@ -4880,7 +4886,7 @@ mono_method_verify (MonoMethod *method, int level)
        memset(ctx.code, 0, sizeof (ILCodeDesc) * ctx.header->code_size);
 
        ctx.num_locals = ctx.header->num_locals;
-       ctx.locals = g_memdup (ctx.header->locals, sizeof (MonoType*) * ctx.header->num_locals);
+       ctx.locals = (MonoType **)g_memdup (ctx.header->locals, sizeof (MonoType*) * ctx.header->num_locals);
        _MEM_ALLOC (sizeof (MonoType*) * ctx.header->num_locals);
 
        if (ctx.num_locals > 0 && !ctx.header->init_locals)
@@ -5982,7 +5988,7 @@ cleanup:
        g_slist_free (ctx.funptrs);
 
        for (tmp = ctx.exception_types; tmp; tmp = tmp->next)
-               mono_metadata_free_type (tmp->data);
+               mono_metadata_free_type ((MonoType *)tmp->data);
        g_slist_free (ctx.exception_types);
 
        for (i = 0; i < ctx.num_locals; ++i) {
@@ -6090,21 +6096,21 @@ get_field_end (MonoClassField *field)
 }
 
 static gboolean
-verify_class_for_overlapping_reference_fields (MonoClass *class)
+verify_class_for_overlapping_reference_fields (MonoClass *klass)
 {
        int i = 0, j;
        gpointer iter = NULL;
        MonoClassField *field;
-       gboolean is_fulltrust = mono_verifier_is_class_full_trust (class);
+       gboolean is_fulltrust = mono_verifier_is_class_full_trust (klass);
        /*We can't skip types with !has_references since this is calculated after we have run.*/
-       if (!((class->flags & TYPE_ATTRIBUTE_LAYOUT_MASK) == TYPE_ATTRIBUTE_EXPLICIT_LAYOUT))
+       if (!((klass->flags & TYPE_ATTRIBUTE_LAYOUT_MASK) == TYPE_ATTRIBUTE_EXPLICIT_LAYOUT))
                return TRUE;
 
 
        /*We must check for stuff overlapping reference fields.
          The outer loop uses mono_class_get_fields to ensure that MonoClass:fields get inited.
        */
-       while ((field = mono_class_get_fields (class, &iter))) {
+       while ((field = mono_class_get_fields (klass, &iter))) {
                int fieldEnd = get_field_end (field);
                gboolean is_valuetype = !MONO_TYPE_IS_REFERENCE (field->type);
                ++i;
@@ -6112,8 +6118,8 @@ verify_class_for_overlapping_reference_fields (MonoClass *class)
                if (mono_field_is_deleted (field) || (field->type->attrs & FIELD_ATTRIBUTE_STATIC))
                        continue;
 
-               for (j = i; j < class->field.count; ++j) {
-                       MonoClassField *other = &class->fields [j];
+               for (j = i; j < klass->field.count; ++j) {
+                       MonoClassField *other = &klass->fields [j];
                        int otherEnd = get_field_end (other);
                        if (mono_field_is_deleted (other) || (is_valuetype && !MONO_TYPE_IS_REFERENCE (other->type)) || (other->type->attrs & FIELD_ATTRIBUTE_STATIC))
                                continue;
@@ -6131,30 +6137,30 @@ verify_class_for_overlapping_reference_fields (MonoClass *class)
 static guint
 field_hash (gconstpointer key)
 {
-       const MonoClassField *field = key;
+       const MonoClassField *field = (const MonoClassField *)key;
        return g_str_hash (field->name) ^ mono_metadata_type_hash (field->type); /**/
 }
 
 static gboolean
 field_equals (gconstpointer _a, gconstpointer _b)
 {
-       const MonoClassField *a = _a;
-       const MonoClassField *b = _b;
+       const MonoClassField *a = (const MonoClassField *)_a;
+       const MonoClassField *b = (const MonoClassField *)_b;
        return !strcmp (a->name, b->name) && mono_metadata_type_equal (a->type, b->type);
 }
 
 
 static gboolean
-verify_class_fields (MonoClass *class)
+verify_class_fields (MonoClass *klass)
 {
        gpointer iter = NULL;
        MonoClassField *field;
-       MonoGenericContext *context = mono_class_get_context (class);
+       MonoGenericContext *context = mono_class_get_context (klass);
        GHashTable *unique_fields = g_hash_table_new_full (&field_hash, &field_equals, NULL, NULL);
-       if (class->generic_container)
-               context = &class->generic_container->context;
+       if (klass->generic_container)
+               context = &klass->generic_container->context;
 
-       while ((field = mono_class_get_fields (class, &iter)) != NULL) {
+       while ((field = mono_class_get_fields (klass, &iter)) != NULL) {
                if (!mono_type_is_valid_type_in_context (field->type, context)) {
                        g_hash_table_destroy (unique_fields);
                        return FALSE;
@@ -6170,11 +6176,11 @@ verify_class_fields (MonoClass *class)
 }
 
 static gboolean
-verify_interfaces (MonoClass *class)
+verify_interfaces (MonoClass *klass)
 {
        int i;
-       for (i = 0; i < class->interface_count; ++i) {
-               MonoClass *iface = class->interfaces [i];
+       for (i = 0; i < klass->interface_count; ++i) {
+               MonoClass *iface = klass->interfaces [i];
                if (!(iface->flags & TYPE_ATTRIBUTE_INTERFACE))
                        return FALSE;
        }
@@ -6182,22 +6188,22 @@ verify_interfaces (MonoClass *class)
 }
 
 static gboolean
-verify_valuetype_layout_with_target (MonoClass *class, MonoClass *target_class)
+verify_valuetype_layout_with_target (MonoClass *klass, MonoClass *target_class)
 {
        int type;
        gpointer iter = NULL;
        MonoClassField *field;
        MonoClass *field_class;
 
-       if (!class->valuetype)
+       if (!klass->valuetype)
                return TRUE;
 
-       type = class->byval_arg.type;
+       type = klass->byval_arg.type;
        /*primitive type fields are not properly decoded*/
        if ((type >= MONO_TYPE_BOOLEAN && type <= MONO_TYPE_R8) || (type >= MONO_TYPE_I && type <= MONO_TYPE_U))
                return TRUE;
 
-       while ((field = mono_class_get_fields (class, &iter)) != NULL) {
+       while ((field = mono_class_get_fields (klass, &iter)) != NULL) {
                if (!field->type)
                        return FALSE;
 
@@ -6206,7 +6212,7 @@ verify_valuetype_layout_with_target (MonoClass *class, MonoClass *target_class)
 
                field_class = mono_class_get_generic_type_definition (mono_class_from_mono_type (field->type));
 
-               if (field_class == target_class || class == field_class || !verify_valuetype_layout_with_target (field_class, target_class))
+               if (field_class == target_class || klass == field_class || !verify_valuetype_layout_with_target (field_class, target_class))
                        return FALSE;
        }
 
@@ -6214,10 +6220,10 @@ verify_valuetype_layout_with_target (MonoClass *class, MonoClass *target_class)
 }
 
 static gboolean
-verify_valuetype_layout (MonoClass *class)
+verify_valuetype_layout (MonoClass *klass)
 {
        gboolean res;
-       res = verify_valuetype_layout_with_target (class, class);
+       res = verify_valuetype_layout_with_target (klass, klass);
        return res;
 }
 
@@ -6251,10 +6257,10 @@ recursive_mark_constraint_args (MonoBitSet *used_args, MonoGenericContainer *gc,
 }
 
 static gboolean
-verify_generic_parameters (MonoClass *class)
+verify_generic_parameters (MonoClass *klass)
 {
        int i;
-       MonoGenericContainer *gc = class->generic_container;
+       MonoGenericContainer *gc = klass->generic_container;
        MonoBitSet *used_args = mono_bitset_new (gc->type_argc, 0);
 
        for (i = 0; i < gc->type_argc; ++i) {
@@ -6271,7 +6277,7 @@ verify_generic_parameters (MonoClass *class)
                        MonoClass *ctr = *constraints;
                        MonoType *constraint_type = &ctr->byval_arg;
 
-                       if (!mono_class_can_access_class (class, ctr))
+                       if (!mono_class_can_access_class (klass, ctr))
                                goto fail;
 
                        if (!mono_type_is_valid_type_in_context (constraint_type, &gc->context))
@@ -6301,48 +6307,48 @@ fail:
  * 
  */
 gboolean
-mono_verifier_verify_class (MonoClass *class)
+mono_verifier_verify_class (MonoClass *klass)
 {
        /*Neither <Module>, object or ifaces have parent.*/
-       if (!class->parent &&
-               class != mono_defaults.object_class && 
-               !MONO_CLASS_IS_INTERFACE (class) &&
-               (!image_is_dynamic (class->image) && class->type_token != 0x2000001)) /*<Module> is the first type in the assembly*/
+       if (!klass->parent &&
+               klass != mono_defaults.object_class && 
+               !MONO_CLASS_IS_INTERFACE (klass) &&
+               (!image_is_dynamic (klass->image) && klass->type_token != 0x2000001)) /*<Module> is the first type in the assembly*/
                return FALSE;
-       if (class->parent) {
-               if (MONO_CLASS_IS_INTERFACE (class->parent))
+       if (klass->parent) {
+               if (MONO_CLASS_IS_INTERFACE (klass->parent))
                        return FALSE;
-               if (!class->generic_class && class->parent->generic_container)
+               if (!klass->generic_class && klass->parent->generic_container)
                        return FALSE;
-               if (class->parent->generic_class && !class->generic_class) {
-                       MonoGenericContext *context = mono_class_get_context (class);
-                       if (class->generic_container)
-                               context = &class->generic_container->context;
-                       if (!mono_type_is_valid_type_in_context (&class->parent->byval_arg, context))
+               if (klass->parent->generic_class && !klass->generic_class) {
+                       MonoGenericContext *context = mono_class_get_context (klass);
+                       if (klass->generic_container)
+                               context = &klass->generic_container->context;
+                       if (!mono_type_is_valid_type_in_context (&klass->parent->byval_arg, context))
                                return FALSE;
                }
        }
-       if (class->generic_container && (class->flags & TYPE_ATTRIBUTE_LAYOUT_MASK) == TYPE_ATTRIBUTE_EXPLICIT_LAYOUT)
+       if (klass->generic_container && (klass->flags & TYPE_ATTRIBUTE_LAYOUT_MASK) == TYPE_ATTRIBUTE_EXPLICIT_LAYOUT)
                return FALSE;
-       if (class->generic_container && !verify_generic_parameters (class))
+       if (klass->generic_container && !verify_generic_parameters (klass))
                return FALSE;
-       if (!verify_class_for_overlapping_reference_fields (class))
+       if (!verify_class_for_overlapping_reference_fields (klass))
                return FALSE;
-       if (class->generic_class && !mono_class_is_valid_generic_instantiation (NULL, class))
+       if (klass->generic_class && !mono_class_is_valid_generic_instantiation (NULL, klass))
                return FALSE;
-       if (class->generic_class == NULL && !verify_class_fields (class))
+       if (klass->generic_class == NULL && !verify_class_fields (klass))
                return FALSE;
-       if (class->valuetype && !verify_valuetype_layout (class))
+       if (klass->valuetype && !verify_valuetype_layout (klass))
                return FALSE;
-       if (!verify_interfaces (class))
+       if (!verify_interfaces (klass))
                return FALSE;
        return TRUE;
 }
 
 gboolean
-mono_verifier_class_is_valid_generic_instantiation (MonoClass *class)
+mono_verifier_class_is_valid_generic_instantiation (MonoClass *klass)
 {
-       return mono_class_is_valid_generic_instantiation (NULL, class);
+       return mono_class_is_valid_generic_instantiation (NULL, klass);
 }
 
 gboolean
@@ -6356,7 +6362,7 @@ mono_verifier_is_method_valid_generic_instantiation (MonoMethod *method)
 #else
 
 gboolean
-mono_verifier_verify_class (MonoClass *class)
+mono_verifier_verify_class (MonoClass *klass)
 {
        /* The verifier was disabled at compile time */
        return TRUE;
@@ -6419,7 +6425,7 @@ mono_free_verify_list (GSList *list)
 }
 
 gboolean
-mono_verifier_class_is_valid_generic_instantiation (MonoClass *class)
+mono_verifier_class_is_valid_generic_instantiation (MonoClass *klass)
 {
        return TRUE;
 }
index 6b817e20d48dc837339ee960a166cb2c3ddd8545..8d320c4e4c878c822f764f8adbfa010bdc03d060 100755 (executable)
@@ -87,13 +87,13 @@ boehm_static_libraries = libmini-static.la $(boehm_static_libs)
 boehm_binaries  = mono-boehm
 endif
 
-# The mono executable uses sgen, while libmono remains boehm
 if SUPPORT_SGEN
 mono_bin_suffix = sgen
+libmono_suffix = sgen
 else
 mono_bin_suffix = boehm
-endif
 libmono_suffix = boehm
+endif
 
 if DISABLE_EXECUTABLES
 else
@@ -147,7 +147,7 @@ endif
 
 if LOADED_LLVM
 lib_LTLIBRARIES += libmono-llvm.la
-libmono_llvm_la_SOURCES = mini-llvm.c mini-llvm-cpp.cpp
+libmono_llvm_la_SOURCES = mini-llvm.c mini-llvm-cpp.cpp llvm-jit.cpp
 libmono_llvm_la_LIBADD = $(GLIB_LIBS) $(LLVM_LIBS) $(LLVM_LDFLAGS)
 if PLATFORM_DARWIN
 libmono_llvm_la_LDFLAGS=-Wl,-undefined -Wl,suppress -Wl,-flat_namespace
@@ -243,6 +243,10 @@ mono_sgen_LDADD = \
 
 mono_sgen_LDFLAGS = $(static_flags) -export-dynamic $(monobinldflags) $(monobin_platform_ldflags)
 
+if BITCODE
+libmonoldflags += -no-undefined
+endif
+
 # if SUPPORT_SGEN
 # 
 # mono_LDADD = $(mono_sgen_LDADD)
@@ -363,7 +367,18 @@ else
 llvm_sources = \
        mini-llvm.c             \
        mini-llvm-loaded.c \
-       mini-llvm-cpp.cpp
+       mini-llvm-cpp.cpp \
+       llvm-jit.cpp
+endif
+endif
+
+if ENABLE_LLVM
+llvm_runtime_sources = \
+       llvm-runtime.cpp
+else
+if ENABLE_LLVM_RUNTIME
+llvm_runtime_sources = \
+       llvm-runtime.cpp
 endif
 endif
 
@@ -397,6 +412,7 @@ common_sources = \
        driver.c                \
        debug-mini.c            \
        linear-scan.c           \
+       aot-compiler.h          \
        aot-compiler.c          \
        aot-runtime.c           \
        graph.c                 \
@@ -421,10 +437,12 @@ common_sources = \
        debugger-agent.h        \
        debugger-agent.c        \
        xdebug.c                        \
+       mini-llvm.h                     \
        mini-llvm-cpp.h \
        alias-analysis.c        \
        mini-cross-helpers.c \
-       arch-stubs.c
+       arch-stubs.c            \
+       llvm-runtime.h
 
 test_sources =                         \
        basic-calls.cs          \
@@ -437,7 +455,7 @@ test_sources =                      \
        basic.cs                \
        exceptions.cs           \
        devirtualization.cs     \
-       iltests.il.in           \
+       iltests.il              \
        test.cs                 \
        generics.cs             \
        generics-variant-types.il\
@@ -537,7 +555,7 @@ os_sources = $(darwin_sources) $(posix_sources)
 monobin_platform_ldflags=-framework CoreFoundation -framework Foundation
 endif
 
-libmini_la_SOURCES = $(common_sources) $(llvm_sources) $(arch_sources) $(os_sources)
+libmini_la_SOURCES = $(common_sources) $(llvm_sources) $(llvm_runtime_sources) $(arch_sources) $(os_sources)
 libmini_la_CFLAGS = $(mono_CFLAGS)
 
 libmonoboehm_2_0_la_SOURCES =
@@ -577,10 +595,6 @@ generics.exe: generics.cs TestDriver.dll generics-variant-types.dll
 %.exe: %.cs TestDriver.dll
        $(MCS) -out:$@ $(CSFLAGS) $< -r:TestDriver.dll
 
-iltests.il: iltests.il.in Makefile.am
-       echo '// DO NOT EDIT: This file has been generated from iltests.il.in' > iltests.il
-       cpp -Darch=$(arch_define) < $(srcdir)/iltests.il.in | sed 's/^#.*//' >> iltests.il
-
 %.exe: %.il
        $(ILASM) -output=$@ $<
 
@@ -658,11 +672,15 @@ endif
 rcheck2: mono $(regtests)
        $(MINI_RUNTIME) --regression $(regtests)
 
+if ARM
+check-seq-points:
+else
 check-seq-points: mono $(regtests)
-       rm -f TestResults_op_il_seq_point.xml
+       rm -f TestResult-op_il_seq_point.xml
        for i in $(regtests); do $(srcdir)/test_op_il_seq_point.sh $$i || ($(srcdir)/test_op_il_seq_point_headerfooter.sh; exit 1) || exit 1; done
        for i in $(regtests); do $(srcdir)/test_op_il_seq_point.sh $$i --aot || ($(srcdir)/test_op_il_seq_point_headerfooter.sh; exit 1) || exit 1; done
        $(srcdir)/test_op_il_seq_point_headerfooter.sh
+endif
 
 gctest: mono gc-test.exe
        MONO_DEBUG_OPTIONS=clear-nursery-at-gc $(MINI_RUNTIME) --regression gc-test.exe
@@ -699,7 +717,7 @@ FULLAOT_LIBS = \
 fullaotcheck: mono $(fullaot_regtests)
        rm -rf fullaot-tmp
        mkdir fullaot-tmp
-       $(MAKE) fullaot-libs AOT_FLAGS=full
+       $(MAKE) fullaot-libs AOT_FLAGS=full GSHAREDVT=$(GSHAREDVT)
        cp $(regtests) $(fullaot_regtests) generics-variant-types.dll TestDriver.dll fullaot-tmp/
        MONO_PATH=fullaot-tmp $(top_builddir)/runtime/mono-wrapper $(LLVM_AOT_RUNTIME_OPTS) $(GSHAREDVT_RUNTIME_OPTS) --aot=full fullaot-tmp/{generics-variant-types.dll,TestDriver.dll,*.exe} || exit 1
        ln -s $$PWD/mono fullaot-tmp/
@@ -711,29 +729,22 @@ fullaot-libs: $(patsubst %,fullaot-tmp/%.dylib,$(FULLAOT_LIBS))
 fullaot-tmp/%.dylib: $(CLASS)/%
        cp $(CLASS)/$* fullaot-tmp/
        mkdir fullaot-tmp/$*-tmp
-       MONO_PATH=fullaot-tmp/:$(CLASS) $(top_builddir)/runtime/mono-wrapper --aot=$(AOT_FLAGS),temp-path=fullaot-tmp/$*-tmp fullaot-tmp/$*
+       MONO_PATH=fullaot-tmp/:$(CLASS) $(top_builddir)/runtime/mono-wrapper $(if $(GSHAREDVT),-O=gsharedvt) --aot=$(AOT_FLAGS),temp-path=fullaot-tmp/$*-tmp fullaot-tmp/$*
        rm -rf fullaot-tmp/$*-tmp
 
 llvmfullaotcheck:
        $(MAKE) fullaotcheck LLVM=1
 
-llvmonlycheck: mono $(fullaot_regtests)
+llvmonly_regtests = $(fullaot_regtests) gshared.exe
+
+llvmonlycheck: mono $(llvmonly_regtests)
        rm -rf fullaot-tmp
        mkdir fullaot-tmp
        $(MAKE) fullaot-libs AOT_FLAGS=llvmonly
-       cp $(regtests) $(fullaot_regtests) generics-variant-types.dll TestDriver.dll fullaot-tmp/
+       cp $(llvmonly_regtests) generics-variant-types.dll TestDriver.dll fullaot-tmp/
        MONO_PATH=fullaot-tmp $(top_builddir)/runtime/mono-wrapper  --aot=llvmonly fullaot-tmp/{generics-variant-types.dll,TestDriver.dll,*.exe} || exit 1
        ln -s $$PWD/mono fullaot-tmp/
-       for i in $(fullaot_regtests); do echo $$i; MONO_PATH=fullaot-tmp $(top_builddir)/runtime/mono-wrapper --llvmonly fullaot-tmp/$$i --exclude '!FULLAOT' --exclude '!BITCODE' $(ARCH_FULLAOT_EXCLUDE) || exit 1; done
-
-# This can run in parallel
-fullaot-libs: $(patsubst %,fullaot-tmp/%.dylib,$(FULLAOT_LIBS))
-
-fullaot-tmp/%.dylib: $(CLASS)/%
-       cp $(CLASS)/$* fullaot-tmp/
-       mkdir fullaot-tmp/$*-tmp
-       MONO_PATH=fullaot-tmp/:$(CLASS) $(top_builddir)/runtime/mono-wrapper --aot=$(AOT_FLAGS),temp-path=fullaot-tmp/$*-tmp fullaot-tmp/$*
-       rm -rf fullaot-tmp/$*-tmp
+       for i in $(llvmonly_regtests); do echo $$i; MONO_PATH=fullaot-tmp $(top_builddir)/runtime/mono-wrapper --llvmonly fullaot-tmp/$$i --exclude '!BITCODE' || exit 1; done
 
 gccheck: gc-test.exe
        MONO_GC_PARAMS=stack-mark=precise MONO_GC_DEBUG=clear-at-gc ./mono-sgen gc-test.exe     
@@ -762,7 +773,7 @@ docu: mini.sgm
 check-local: rcheck check-seq-points
 
 clean-local:
-       rm -f mono a.out gmon.out *.o buildver-boehm.h buildver-sgen.h test.exe regressionexitcode.out TestResults_op_il_seq_point.xml*
+       rm -f mono a.out gmon.out *.o buildver-boehm.h buildver-sgen.h test.exe regressionexitcode.out TestResult-op_il_seq_point.xml*
 
 pkgconfigdir = $(libdir)/pkgconfig
 
index 64372e06c24db1d9043a75eadb017f15150238b6..c3bf999d2729ae30c014fee5a8e32a4f4449ce2f 100644 (file)
@@ -133,3 +133,65 @@ public class TestDriver {
        }
 }
 
+/// Provide tests with the ability to find out how much time they have to run before being timed out.
+public class TestTimeout {
+       const string ENV_TIMEOUT = "TEST_DRIVER_TIMEOUT_SEC";
+       private readonly TimeSpan availableTime;
+       private TimeSpan slack;
+       private DateTime startTime;
+
+       /// <summary>
+       ///   How much time the test runner provided for us or TimeSpan.Zero if there is no bound.
+       /// </summary>
+       public TimeSpan AvailableTime { get { return availableTime; } }
+
+       public DateTime StartTime { get { return startTime; } }
+
+       /// <summary> Extra time to add when deciding if there
+       ///   is still time to run.  Bigger slack means less
+       ///   time left.
+       /// </summary>
+       public TimeSpan Slack {
+               get { return slack; }
+               set { slack = value; }
+       }
+
+       public TestTimeout () {
+               availableTime = initializeAvailableTime ();
+               slack = defaultSlack ();
+       }
+
+       /// <summary>
+       ///    Consider the test started.
+       /// </summary>
+       public void Start ()
+       {
+               startTime = DateTime.UtcNow;
+       }
+
+       public bool HaveTimeLeft ()
+       {
+               if (availableTime == TimeSpan.Zero)
+                       return true;
+               var t = DateTime.UtcNow;
+               var finishTime = startTime + availableTime - slack;
+               return (t < finishTime);
+       }
+
+       private TimeSpan defaultSlack ()
+       {
+               return TimeSpan.FromSeconds (5);
+       }
+
+       private TimeSpan initializeAvailableTime ()
+       {
+               var e = System.Environment.GetEnvironmentVariable(ENV_TIMEOUT);
+               double d;
+               if (Double.TryParse(e, out d)) {
+                       return TimeSpan.FromSeconds(d);
+               } else {
+                       return TimeSpan.Zero;
+               }
+       }
+
+}
index 45d5394a6679a188dd8435e8311e12ae11523d4e..fddbef9d9cb64556dc4f726d1adfb3a5a9260bce 100644 (file)
@@ -62,8 +62,8 @@ static int verbose_level;
                (r)->next = NULL;\
        } while (0)
 
-#define MONO_NEGATED_RELATION(r) ((~(r))&MONO_ANY_RELATION)
-#define MONO_SYMMETRIC_RELATION(r) (((r)&MONO_EQ_RELATION)|(((r)&MONO_LT_RELATION)<<1)|((r&MONO_GT_RELATION)>>1))
+#define MONO_NEGATED_RELATION(r) ((MonoValueRelation)((~(r))&MONO_ANY_RELATION))
+#define MONO_SYMMETRIC_RELATION(r) ((MonoValueRelation)(((r)&MONO_EQ_RELATION)|(((r)&MONO_LT_RELATION)<<1)|((r&MONO_GT_RELATION)>>1)))
 
 
 
@@ -905,7 +905,7 @@ evaluate_relation_with_target_variable (MonoVariableRelationsEvaluationArea *are
                        
                        current_context = father_context;
                        while (current_context != last_context) {
-                               current_context->status |= recursive_status;
+                               current_context->status = (MonoRelationsEvaluationStatus)(current_context->status | recursive_status);
                                current_context = current_context->father;
                        }
                } else {
@@ -1029,7 +1029,7 @@ add_non_null (MonoVariableRelationsEvaluationArea *area, MonoCompile *cfg, int r
 {
        MonoAdditionalVariableRelation *rel;
 
-       rel = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoAdditionalVariableRelation));
+       rel = (MonoAdditionalVariableRelation *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoAdditionalVariableRelation));
        rel->variable = reg;
        rel->relation.relation = MONO_GT_RELATION;
        rel->relation.related_value.type = MONO_CONSTANT_SUMMARIZED_VALUE;
@@ -1106,7 +1106,7 @@ process_block (MonoCompile *cfg, MonoBasicBlock *bb, MonoVariableRelationsEvalua
 
                        /* We can derive additional relations from the bounds check */
                        if (ins->opcode != OP_NOP) {
-                               rel = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoAdditionalVariableRelation));
+                               rel = (MonoAdditionalVariableRelation *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoAdditionalVariableRelation));
                                rel->variable = index_var;
                                rel->relation.relation = MONO_LT_RELATION;
                                rel->relation.related_value.type = MONO_VARIABLE_SUMMARIZED_VALUE;
@@ -1117,7 +1117,7 @@ process_block (MonoCompile *cfg, MonoBasicBlock *bb, MonoVariableRelationsEvalua
 
                                check_relations = g_slist_append_mempool (cfg->mempool, check_relations, rel);
 
-                               rel = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoAdditionalVariableRelation));
+                               rel = (MonoAdditionalVariableRelation *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoAdditionalVariableRelation));
                                rel->variable = index_var;
                                rel->relation.relation = MONO_GE_RELATION;
                                rel->relation.related_value.type = MONO_CONSTANT_SUMMARIZED_VALUE;
@@ -1193,7 +1193,7 @@ process_block (MonoCompile *cfg, MonoBasicBlock *bb, MonoVariableRelationsEvalua
        }
 
        for (l = check_relations; l; l = l->next)
-               remove_change_from_evaluation_area (l->data);
+               remove_change_from_evaluation_area ((MonoAdditionalVariableRelation *)l->data);
        
        remove_change_from_evaluation_area (&(additional_relations.relation1));
        remove_change_from_evaluation_area (&(additional_relations.relation2));
@@ -1224,10 +1224,10 @@ type_to_value_kind (MonoType *type)
                return MONO_UNSIGNED_INTEGER_VALUE_SIZE_4;
                break;
        case MONO_TYPE_I:
-               return SIZEOF_VOID_P;
+               return (MonoIntegerValueKind)SIZEOF_VOID_P;
                break;
        case MONO_TYPE_U:
-               return (MONO_UNSIGNED_VALUE_FLAG|SIZEOF_VOID_P);
+               return (MonoIntegerValueKind)(MONO_UNSIGNED_VALUE_FLAG | SIZEOF_VOID_P);
                break;
        case MONO_TYPE_I8:
                return MONO_INTEGER_VALUE_SIZE_8;
@@ -1275,7 +1275,7 @@ mono_perform_abc_removal (MonoCompile *cfg)
                mono_mempool_alloc (cfg->mempool, sizeof (MonoRelationsEvaluationContext) * (cfg->next_vreg));
        area.variable_value_kind = (MonoIntegerValueKind *)
                mono_mempool_alloc (cfg->mempool, sizeof (MonoIntegerValueKind) * (cfg->next_vreg));
-       area.defs = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * cfg->next_vreg);
+       area.defs = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * cfg->next_vreg);
        for (i = 0; i < cfg->next_vreg; i++) {
                area.variable_value_kind [i] = MONO_UNKNOWN_INTEGER_VALUE;
                area.relations [i].relation = MONO_EQ_RELATION;
index c260dae2c7abcf706b005ef0fc5f7e10ea103c50..f40070aeb38b9f2212c5f674aa1f346923938158 100644 (file)
@@ -40,7 +40,7 @@ is_long_stack_size (int type)
 static gboolean
 lower_load (MonoCompile *cfg, MonoInst *load, MonoInst *ldaddr)
 {
-       MonoInst *var = ldaddr->inst_p0;
+       MonoInst *var = (MonoInst *)ldaddr->inst_p0;
        MonoType *type = &var->klass->byval_arg;
        int replaced_op = mono_type_to_load_membase (cfg, type);
 
@@ -70,7 +70,7 @@ lower_load (MonoCompile *cfg, MonoInst *load, MonoInst *ldaddr)
 static gboolean
 lower_store (MonoCompile *cfg, MonoInst *store, MonoInst *ldaddr)
 {
-       MonoInst *var = ldaddr->inst_p0;
+       MonoInst *var = (MonoInst *)ldaddr->inst_p0;
        MonoType *type = &var->klass->byval_arg;
        int replaced_op = mono_type_to_store_membase (cfg, type);
 
@@ -101,7 +101,7 @@ lower_store (MonoCompile *cfg, MonoInst *store, MonoInst *ldaddr)
 static gboolean
 lower_store_imm (MonoCompile *cfg, MonoInst *store, MonoInst *ldaddr)
 {
-       MonoInst *var = ldaddr->inst_p0;
+       MonoInst *var = (MonoInst *)ldaddr->inst_p0;
        MonoType *type = &var->klass->byval_arg;
        int store_op = mono_type_to_store_membase (cfg, type);
        if (store_op == OP_STOREV_MEMBASE || store_op == OP_STOREX_MEMBASE)
@@ -195,7 +195,7 @@ handle_instruction:
                        case OP_LOADR8_MEMBASE:
                                if (ins->inst_offset != 0)
                                        continue;
-                               tmp = g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->sreg1));
+                               tmp = (MonoInst *)g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->sreg1));
                                if (tmp) {
                                        if (cfg->verbose_level > 2) { printf ("Found candidate load:"); mono_print_ins (ins); }
                                        if (lower_load (cfg, ins, tmp)) {
@@ -216,7 +216,7 @@ handle_instruction:
                        case OP_STOREV_MEMBASE:
                                if (ins->inst_offset != 0)
                                        continue;
-                               tmp = g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->dreg));
+                               tmp = (MonoInst *)g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->dreg));
                                if (tmp) {
                                        if (cfg->verbose_level > 2) { printf ("Found candidate store:"); mono_print_ins (ins); }
                                        if (lower_store (cfg, ins, tmp)) {
@@ -232,7 +232,7 @@ handle_instruction:
                        case OP_STOREI8_MEMBASE_IMM:
                                if (ins->inst_offset != 0)
                                        continue;
-                               tmp = g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->dreg));
+                               tmp = (MonoInst *)g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->dreg));
                                if (tmp) {
                                        if (cfg->verbose_level > 2) { printf ("Found candidate store-imm:"); mono_print_ins (ins); }
                                        needs_dce |= lower_store_imm (cfg, ins, tmp);
@@ -240,7 +240,7 @@ handle_instruction:
                                break;
                        case OP_CHECK_THIS:
                        case OP_NOT_NULL:
-                               tmp = g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->sreg1));
+                               tmp = (MonoInst *)g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->sreg1));
                                if (tmp) {
                                        if (cfg->verbose_level > 2) { printf ("Found null check over local: "); mono_print_ins (ins); }
                                        NULLIFY_INS (ins);
index dd64cfdba8044ec83c7132dbefc22c8c0ff0a7a4..1608dd78d697c927d132f85fb346f4842cd650ed 100644 (file)
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/metadata-internals.h>
 #include <mono/metadata/marshal.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/mempool-internals.h>
 #include <mono/metadata/mono-endian.h>
 #include <mono/metadata/threads-types.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-time.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/json.h>
 
-#include "mini.h"
+#include "aot-compiler.h"
 #include "seq-points.h"
 #include "image-writer.h"
 #include "dwarfwriter.h"
 #include "mini-gc.h"
+#include "mini-llvm.h"
 
 #if !defined(DISABLE_AOT) && !defined(DISABLE_JIT)
 
@@ -94,6 +95,7 @@ static ReadOnlyValue *readonly_values;
 typedef struct MonoAotOptions {
        char *outfile;
        char *llvm_outfile;
+       char *data_outfile;
        gboolean save_temps;
        gboolean write_symbols;
        gboolean metadata_only;
@@ -135,11 +137,20 @@ typedef struct MonoAotOptions {
        gboolean dump_json;
 } MonoAotOptions;
 
+typedef enum {
+       METHOD_CAT_NORMAL,
+       METHOD_CAT_GSHAREDVT,
+       METHOD_CAT_INST,
+       METHOD_CAT_WRAPPER,
+       METHOD_CAT_NUM
+} MethodCategory;
+
 typedef struct MonoAotStats {
        int ccount, mcount, lmfcount, abscount, gcount, ocount, genericcount;
        gint64 code_size, info_size, ex_info_size, unwind_info_size, got_size, class_info_size, got_info_size, plt_size;
        int methods_without_got_slots, direct_calls, all_calls, llvm_count;
        int got_slots, offsets_size;
+       int method_categories [METHOD_CAT_NUM];
        int got_slot_types [MONO_PATCH_INFO_NONE];
        int got_slot_info_sizes [MONO_PATCH_INFO_NONE];
        int jit_time, gen_time, link_time;
@@ -177,12 +188,15 @@ typedef struct MonoAotCompile {
        GHashTable *klass_blob_hash;
        /* Maps MonoMethod* -> blob offset */
        GHashTable *method_blob_hash;
+       GHashTable *gsharedvt_in_signatures;
+       GHashTable *gsharedvt_out_signatures;
        guint32 *plt_got_info_offsets;
-       guint32 got_offset, llvm_got_offset, plt_offset, plt_got_offset_base;
+       guint32 got_offset, llvm_got_offset, plt_offset, plt_got_offset_base, nshared_got_entries;
        /* Number of GOT entries reserved for trampolines */
        guint32 num_trampoline_got_entries;
        guint32 tramp_page_size;
 
+       guint32 table_offsets [MONO_AOT_TABLE_NUM];
        guint32 num_trampolines [MONO_AOT_TRAMP_NUM];
        guint32 trampoline_got_offset_base [MONO_AOT_TRAMP_NUM];
        guint32 trampoline_size [MONO_AOT_TRAMP_NUM];
@@ -227,6 +241,7 @@ typedef struct MonoAotCompile {
        gboolean has_jitted_code;
        MonoAotFileFlags flags;
        MonoDynamicStream blob;
+       gboolean blob_closed;
        MonoClass **typespec_classes;
        GString *llc_args;
        GString *as_args;
@@ -241,6 +256,9 @@ typedef struct MonoAotCompile {
        GHashTable *objc_selector_to_index;
        FILE *logfile;
        FILE *instances_logfile;
+       FILE *data_outfile;
+       int datafile_offset;
+       int gc_name_offset;
 } MonoAotCompile;
 
 typedef struct {
@@ -250,8 +268,8 @@ typedef struct {
        gboolean jit_used, llvm_used;
 } MonoPltEntry;
 
-#define mono_acfg_lock(acfg) mono_mutex_lock (&((acfg)->mutex))
-#define mono_acfg_unlock(acfg) mono_mutex_unlock (&((acfg)->mutex))
+#define mono_acfg_lock(acfg) mono_os_mutex_lock (&((acfg)->mutex))
+#define mono_acfg_unlock(acfg) mono_os_mutex_unlock (&((acfg)->mutex))
 
 /* This points to the current acfg in LLVM mode */
 static MonoAotCompile *llvm_acfg;
@@ -1857,7 +1875,7 @@ arch_emit_imt_thunk (MonoAotCompile *acfg, int offset, int *tramp_size)
 
        const int kSizeOfMove = 7;
 #if defined(__default_codegen__)
-       code = buf = g_malloc (256);
+       code = buf = (guint8 *)g_malloc (256);
 #elif defined(__native_client_codegen__)
        buf_alloc = g_malloc (256 + kNaClAlignment + kSizeOfMove);
        buf = ((guint)buf_alloc + kNaClAlignment) & ~kNaClAlignmentMask;
@@ -2251,7 +2269,7 @@ stream_init (MonoDynamicStream *sh)
 {
        sh->index = 0;
        sh->alloc_size = 4096;
-       sh->data = g_malloc (4096);
+       sh->data = (char *)g_malloc (4096);
 
        /* So offsets are > 0 */
        sh->data [0] = 0;
@@ -2271,7 +2289,7 @@ make_room_in_stream (MonoDynamicStream *stream, int size)
                        stream->alloc_size *= 2;
        }
        
-       stream->data = g_realloc (stream->data, stream->alloc_size);
+       stream->data = (char *)g_realloc (stream->data, stream->alloc_size);
 }
 
 static guint32
@@ -2295,6 +2313,8 @@ add_stream_data (MonoDynamicStream *stream, const char *data, guint32 len)
 static guint32
 add_to_blob (MonoAotCompile *acfg, const guint8 *data, guint32 data_len)
 {
+       g_assert (!acfg->blob_closed);
+
        if (acfg->blob.alloc_size == 0)
                stream_init (&acfg->blob);
 
@@ -2319,6 +2339,30 @@ add_to_blob_aligned (MonoAotCompile *acfg, const guint8 *data, guint32 data_len,
        return add_stream_data (&acfg->blob, (char*)data, data_len);
 }
 
+/* Emit a table of data into the aot image */
+static void
+emit_aot_data (MonoAotCompile *acfg, MonoAotFileTable table, const char *symbol, guint8 *data, int size)
+{
+       if (acfg->data_outfile) {
+               acfg->table_offsets [(int)table] = acfg->datafile_offset;
+               fwrite (data,1, size, acfg->data_outfile);
+               acfg->datafile_offset += size;
+               // align the data to 8 bytes. Put zeros in the file (so that every build results in consistent output).
+               int align = 8 - size % 8;
+               acfg->datafile_offset += align;
+               guint8 align_buf [16];
+               memset (&align_buf, 0, sizeof (align_buf));
+               fwrite (align_buf, align, 1, acfg->data_outfile);
+       } else if (acfg->llvm) {
+               mono_llvm_emit_aot_data (symbol, data, size);
+       } else {
+               emit_section_change (acfg, RODATA_SECT, 0);
+               emit_alignment (acfg, 8);
+               emit_label (acfg, symbol);
+               emit_bytes (acfg, data, size);
+       }
+}
+
 /*
  * emit_offset_table:
  *
@@ -2328,7 +2372,7 @@ add_to_blob_aligned (MonoAotCompile *acfg, const guint8 *data, guint32 data_len,
  * a given entry. Returns the size of the table.
  */
 static guint32
-emit_offset_table (MonoAotCompile *acfg, const char *symbol, int noffsets, int group_size, gint32 *offsets)
+emit_offset_table (MonoAotCompile *acfg, const char *symbol, MonoAotFileTable table, int noffsets, int group_size, gint32 *offsets)
 {
        gint32 current_offset;
        int i, buf_size, ngroups, index_entry_size;
@@ -2341,7 +2385,7 @@ emit_offset_table (MonoAotCompile *acfg, const char *symbol, int noffsets, int g
        index_offsets = g_new0 (guint32, ngroups);
 
        buf_size = noffsets * 4;
-       p = buf = g_malloc0 (buf_size);
+       p = buf = (guint8 *)g_malloc0 (buf_size);
 
        current_offset = 0;
        for (i = 0; i < noffsets; ++i) {
@@ -2366,7 +2410,7 @@ emit_offset_table (MonoAotCompile *acfg, const char *symbol, int noffsets, int g
                index_entry_size = 4;
 
        buf_size = (data_p - data_buf) + (ngroups * 4) + 16;
-       p = buf = g_malloc0 (buf_size);
+       p = buf = (guint8 *)g_malloc0 (buf_size);
 
        /* Emit the header */
        encode_int (noffsets, p, &p);
@@ -2387,14 +2431,7 @@ emit_offset_table (MonoAotCompile *acfg, const char *symbol, int noffsets, int g
 
        g_assert (p - buf <= buf_size);
 
-       if (acfg->llvm) {
-               mono_llvm_emit_aot_data (symbol, buf, p - buf);
-       } else {
-               emit_section_change (acfg, RODATA_SECT, 1);
-               emit_alignment (acfg, 8);
-               emit_label (acfg, symbol);
-               emit_bytes (acfg, buf, p - buf);
-       }
+       emit_aot_data (acfg, table, symbol, buf, p - buf);
 
        g_free (buf);
        g_free (data_buf);
@@ -2426,7 +2463,7 @@ find_typespec_for_class (MonoAotCompile *acfg, MonoClass *klass)
 
        /* FIXME: Search referenced images as well */
        if (!acfg->typespec_classes) {
-               acfg->typespec_classes = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoClass*) * len);
+               acfg->typespec_classes = (MonoClass **)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoClass*) * len);
                for (i = 0; i < len; ++i) {
                        MonoError error;
                        acfg->typespec_classes [i] = mono_class_get_and_inflate_typespec_checked (acfg->image, MONO_TOKEN_TYPE_SPEC | (i + 1), NULL, &error);
@@ -2504,34 +2541,24 @@ encode_klass_ref_inner (MonoAotCompile *acfg, MonoClass *klass, guint8 *buf, gui
                MonoGenericParam *par = klass->byval_arg.data.generic_param;
 
                encode_value (MONO_AOT_TYPEREF_VAR, p, &p);
-               encode_value (klass->byval_arg.type, p, &p);
-               encode_value (mono_type_get_generic_param_num (&klass->byval_arg), p, &p);
-
-               encode_value (container ? 1 : 0, p, &p);
-               if (container) {
-                       encode_value (container->is_method, p, &p);
-                       g_assert (!par->gshared_constraint);
-                       if (container->is_method)
-                               encode_method_ref (acfg, container->owner.method, p, &p);
-                       else
-                               encode_klass_ref (acfg, container->owner.klass, p, &p);
-               } else {
-                       encode_value (par->gshared_constraint ? 1 : 0, p, &p);
-                       if (par->gshared_constraint) {
-                               const char *name;
 
-                               encode_type (acfg, par->gshared_constraint, p, &p);
+               encode_value (par->gshared_constraint ? 1 : 0, p, &p);
+               if (par->gshared_constraint) {
+                       MonoGSharedGenericParam *gpar = (MonoGSharedGenericParam*)par;
+                       encode_type (acfg, par->gshared_constraint, p, &p);
+                       encode_klass_ref (acfg, mono_class_from_generic_parameter (gpar->parent, NULL, klass->byval_arg.type == MONO_TYPE_MVAR), p, &p);
+               } else {
+                       encode_value (klass->byval_arg.type, p, &p);
+                       encode_value (mono_type_get_generic_param_num (&klass->byval_arg), p, &p);
 
-                               name = mono_generic_param_name (par);
-                               if (name) {
-                                       int len = strlen (name);
+                       encode_value (container->is_anonymous ? 0 : 1, p, &p);
 
-                                       encode_value (len, p, &p);
-                                       memcpy (p, name, len);
-                                       p += len;
-                               } else {
-                                       encode_value (0, p, &p);
-                               }
+                       if (!container->is_anonymous) {
+                               encode_value (container->is_method, p, &p);
+                               if (container->is_method)
+                                       encode_method_ref (acfg, container->owner.method, p, &p);
+                               else
+                                       encode_klass_ref (acfg, container->owner.klass, p, &p);
                        }
                }
        } else if (klass->byval_arg.type == MONO_TYPE_PTR) {
@@ -2578,7 +2605,7 @@ encode_klass_ref (MonoAotCompile *acfg, MonoClass *klass, guint8 *buf, guint8 **
                guint8 *buf2, *p;
 
                if (!offset) {
-                       buf2 = g_malloc (1024);
+                       buf2 = (guint8 *)g_malloc (1024);
                        p = buf2;
 
                        encode_klass_ref_inner (acfg, klass, p, &p);
@@ -2793,6 +2820,8 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                encode_value ((MONO_AOT_METHODREF_NO_AOT_TRAMPOLINE << 24), p, &p);
 
        if (method->wrapper_type) {
+               WrapperInfo *info = mono_marshal_get_wrapper_info (method);
+
                encode_value ((MONO_AOT_METHODREF_WRAPPER << 24), p, &p);
 
                encode_value (method->wrapper_type, p, &p);
@@ -2813,8 +2842,6 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                case MONO_WRAPPER_LDFLDA:
                case MONO_WRAPPER_STFLD:
                case MONO_WRAPPER_ISINST: {
-                       WrapperInfo *info = mono_marshal_get_wrapper_info (method);
-
                        g_assert (info);
                        encode_klass_ref (acfg, info->d.proxy.klass, p, &p);
                        break;
@@ -2823,18 +2850,16 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                case MONO_WRAPPER_STFLD_REMOTE:
                        break;
                case MONO_WRAPPER_ALLOC: {
-                       AllocatorWrapperInfo *info = mono_marshal_get_wrapper_info (method);
-
                        /* The GC name is saved once in MonoAotFileInfo */
-                       g_assert (info->alloc_type != -1);
-                       encode_value (info->alloc_type, p, &p);
+                       g_assert (info->d.alloc.alloc_type != -1);
+                       encode_value (info->d.alloc.alloc_type, p, &p);
                        break;
                }
-               case MONO_WRAPPER_WRITE_BARRIER:
+               case MONO_WRAPPER_WRITE_BARRIER: {
+                       g_assert (info);
                        break;
+               }
                case MONO_WRAPPER_STELEMREF: {
-                       WrapperInfo *info = mono_marshal_get_wrapper_info (method);
-
                        g_assert (info);
                        encode_value (info->subtype, p, &p);
                        if (info->subtype == WRAPPER_SUBTYPE_VIRTUAL_STELEMREF)
@@ -2842,8 +2867,6 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                        break;
                }
                case MONO_WRAPPER_UNKNOWN: {
-                       WrapperInfo *info = mono_marshal_get_wrapper_info (method);
-
                        g_assert (info);
                        encode_value (info->subtype, p, &p);
                        if (info->subtype == WRAPPER_SUBTYPE_PTR_TO_STRUCTURE ||
@@ -2853,11 +2876,13 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                                encode_method_ref (acfg, info->d.synchronized_inner.method, p, &p);
                        else if (info->subtype == WRAPPER_SUBTYPE_ARRAY_ACCESSOR)
                                encode_method_ref (acfg, info->d.array_accessor.method, p, &p);
+                       else if (info->subtype == WRAPPER_SUBTYPE_GSHAREDVT_IN_SIG)
+                               encode_signature (acfg, info->d.gsharedvt.sig, p, &p);
+                       else if (info->subtype == WRAPPER_SUBTYPE_GSHAREDVT_OUT_SIG)
+                               encode_signature (acfg, info->d.gsharedvt.sig, p, &p);
                        break;
                }
                case MONO_WRAPPER_MANAGED_TO_NATIVE: {
-                       WrapperInfo *info = mono_marshal_get_wrapper_info (method);
-
                        g_assert (info);
                        encode_value (info->subtype, p, &p);
                        if (info->subtype == WRAPPER_SUBTYPE_ICALL_WRAPPER) {
@@ -2881,8 +2906,6 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                        break;
                }
                case MONO_WRAPPER_MANAGED_TO_MANAGED: {
-                       WrapperInfo *info = mono_marshal_get_wrapper_info (method);
-
                        g_assert (info);
                        encode_value (info->subtype, p, &p);
 
@@ -2897,18 +2920,13 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                        break;
                }
                case MONO_WRAPPER_CASTCLASS: {
-                       WrapperInfo *info = mono_marshal_get_wrapper_info (method);
-
                        g_assert (info);
                        encode_value (info->subtype, p, &p);
                        break;
                }
                case MONO_WRAPPER_RUNTIME_INVOKE: {
-                       WrapperInfo *info = mono_marshal_get_wrapper_info (method);
-
                        g_assert (info);
                        encode_value (info->subtype, p, &p);
-                       encode_value (info->d.runtime_invoke.pass_rgctx, p, &p);
                        if (info->subtype == WRAPPER_SUBTYPE_RUNTIME_INVOKE_DIRECT || info->subtype == WRAPPER_SUBTYPE_RUNTIME_INVOKE_VIRTUAL)
                                encode_method_ref (acfg, info->d.runtime_invoke.method, p, &p);
                        else if (info->subtype == WRAPPER_SUBTYPE_RUNTIME_INVOKE_NORMAL)
@@ -2934,8 +2952,6 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                        break;
                }
                case MONO_WRAPPER_NATIVE_TO_MANAGED: {
-                       WrapperInfo *info = mono_marshal_get_wrapper_info (method);
-
                        g_assert (info);
                        encode_method_ref (acfg, info->d.native_to_managed.method, p, &p);
                        encode_klass_ref (acfg, info->d.native_to_managed.klass, p, &p);
@@ -2950,7 +2966,7 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                 * encode that.
                 * Obtain the token from information recorded by the JIT.
                 */
-               ji = g_hash_table_lookup (acfg->token_info_hash, method);
+               ji = (MonoJumpInfoToken *)g_hash_table_lookup (acfg->token_info_hash, method);
                if (ji) {
                        image_index = get_image_index (acfg, ji->image);
                        g_assert (image_index < MAX_IMAGE_INDEX);
@@ -2987,7 +3003,7 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
        } else if (token == 0) {
                /* This might be a method of a constructed type like int[,].Set */
                /* Obtain the token from information recorded by the JIT */
-               ji = g_hash_table_lookup (acfg->token_info_hash, method);
+               ji = (MonoJumpInfoToken *)g_hash_table_lookup (acfg->token_info_hash, method);
                if (ji) {
                        image_index = get_image_index (acfg, ji->image);
                        g_assert (image_index < MAX_IMAGE_INDEX);
@@ -3082,7 +3098,6 @@ is_plt_patch (MonoJumpInfo *patch_info)
        case MONO_PATCH_INFO_JIT_ICALL_ADDR:
        case MONO_PATCH_INFO_ICALL_ADDR:
        case MONO_PATCH_INFO_RGCTX_FETCH:
-       case MONO_PATCH_INFO_LLVM_IMT_TRAMPOLINE:
                return TRUE;
        default:
                return FALSE;
@@ -3125,7 +3140,7 @@ get_plt_entry (MonoAotCompile *acfg, MonoJumpInfo *patch_info)
 
        if (!acfg->patch_to_plt_entry [patch_info->type])
                acfg->patch_to_plt_entry [patch_info->type] = g_hash_table_new (mono_patch_info_hash, mono_patch_info_equal);
-       res = g_hash_table_lookup (acfg->patch_to_plt_entry [patch_info->type], patch_info);
+       res = (MonoPltEntry *)g_hash_table_lookup (acfg->patch_to_plt_entry [patch_info->type], patch_info);
 
        if (!acfg->llvm && patch_info->type == MONO_PATCH_INFO_METHOD && (patch_info->data.method->iflags & METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED)) {
                /* 
@@ -3142,7 +3157,7 @@ get_plt_entry (MonoAotCompile *acfg, MonoJumpInfo *patch_info)
 
                new_ji = mono_patch_info_dup_mp (acfg->mempool, patch_info);
 
-               res = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoPltEntry));
+               res = (MonoPltEntry *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoPltEntry));
                res->plt_offset = acfg->plt_offset;
                res->ji = new_ji;
                res->symbol = get_plt_symbol (acfg, res->plt_offset, patch_info);
@@ -3294,8 +3309,8 @@ add_extra_method (MonoAotCompile *acfg, MonoMethod *method)
 static void
 add_jit_icall_wrapper (gpointer key, gpointer value, gpointer user_data)
 {
-       MonoAotCompile *acfg = user_data;
-       MonoJitICallInfo *callinfo = value;
+       MonoAotCompile *acfg = (MonoAotCompile *)user_data;
+       MonoJitICallInfo *callinfo = (MonoJitICallInfo *)value;
        MonoMethod *wrapper;
        char *name;
 
@@ -3317,13 +3332,13 @@ get_runtime_invoke_sig (MonoMethodSignature *sig)
 
        mb = mono_mb_new (mono_defaults.object_class, "FOO", MONO_WRAPPER_NONE);
        m = mono_mb_create_method (mb, sig, 16);
-       return mono_marshal_get_runtime_invoke (m, FALSE, FALSE);
+       return mono_marshal_get_runtime_invoke (m, FALSE);
 }
 
 static MonoMethod*
-get_runtime_invoke (MonoAotCompile *acfg, MonoMethod *method, gboolean virtual)
+get_runtime_invoke (MonoAotCompile *acfg, MonoMethod *method, gboolean virtual_)
 {
-       return mono_marshal_get_runtime_invoke (method, virtual, acfg->aot_opts.llvm_only && mono_method_needs_static_rgctx_invoke (method, TRUE));
+       return mono_marshal_get_runtime_invoke (method, virtual_);
 }
 
 static gboolean
@@ -3511,6 +3526,10 @@ add_wrappers (MonoAotCompile *acfg)
                }
 #endif
 
+               if (acfg->aot_opts.llvm_only)
+                       /* Supported by the gsharedvt based runtime-invoke wrapper */
+                       skip = TRUE;
+
                if (!skip) {
                        //printf ("%s\n", mono_method_full_name (method, TRUE));
                        add_method (acfg, get_runtime_invoke (acfg, method, FALSE));
@@ -3584,6 +3603,21 @@ add_wrappers (MonoAotCompile *acfg)
                        add_method (acfg, mono_marshal_get_runtime_invoke_dynamic ());
 #endif
 
+               /* These are used by mono_jit_runtime_invoke () to calls gsharedvt out wrappers */
+               if (acfg->aot_opts.llvm_only) {
+                       int variants;
+
+                       /* Create simplified signatures which match the signature used by the gsharedvt out wrappers */
+                       for (variants = 0; variants < 4; ++variants) {
+                               for (i = 0; i < 16; ++i) {
+                                       sig = mini_get_gsharedvt_out_sig_wrapper_signature ((variants & 1) > 0, (variants & 2) > 0, i);
+                                       add_extra_method (acfg, mono_marshal_get_runtime_invoke_for_sig (sig));
+
+                                       g_free (sig);
+                               }
+                       }
+               }
+
                /* stelemref */
                add_method (acfg, mono_marshal_get_stelemref ());
 
@@ -3768,7 +3802,7 @@ add_wrappers (MonoAotCompile *acfg)
                        continue;
                }
 
-               if (klass->rank && MONO_TYPE_IS_PRIMITIVE (&klass->element_class->byval_arg)) {
+               if (!acfg->aot_opts.llvm_only && klass->rank && MONO_TYPE_IS_PRIMITIVE (&klass->element_class->byval_arg)) {
                        MonoMethod *m, *wrapper;
 
                        /* Add runtime-invoke wrappers too */
@@ -3887,7 +3921,7 @@ add_wrappers (MonoAotCompile *acfg)
 
                                /* From load_cattr_value () in reflection.c */
                                slen = mono_metadata_decode_value (p, &p);
-                               n = g_memdup (p, slen + 1);
+                               n = (char *)g_memdup (p, slen + 1);
                                n [slen] = 0;
                                t = mono_reflection_type_from_name (n, acfg->image);
                                g_assert (t);
@@ -3914,7 +3948,7 @@ add_wrappers (MonoAotCompile *acfg)
                                        named += 1;
 
                                        name_len = mono_metadata_decode_blob_size (named, &named);
-                                       name = g_malloc (name_len + 1);
+                                       name = (char *)g_malloc (name_len + 1);
                                        memcpy (name, named, name_len);
                                        name [name_len] = 0;
                                        named += name_len;
@@ -3925,7 +3959,7 @@ add_wrappers (MonoAotCompile *acfg)
                                        /* load_cattr_value (), string case */
                                        g_assert (*named != (char)0xff);
                                        slen = mono_metadata_decode_value (named, &named);
-                                       export_name = g_malloc (slen + 1);
+                                       export_name = (char *)g_malloc (slen + 1);
                                        memcpy (export_name, named, slen);
                                        export_name [slen] = 0;
                                        named += slen;
@@ -4477,7 +4511,7 @@ add_generic_instances (MonoAotCompile *acfg)
 
        /* Add types of args/locals */
        for (i = 0; i < acfg->methods->len; ++i) {
-               method = g_ptr_array_index (acfg->methods, i);
+               method = (MonoMethod *)g_ptr_array_index (acfg->methods, i);
                add_types_from_method_header (acfg, method);
        }
 
@@ -4507,6 +4541,41 @@ add_generic_instances (MonoAotCompile *acfg)
                if (klass)
                        add_instances_of (acfg, klass, insts, ninsts, TRUE);
 
+               /* Add instances of EnumEqualityComparer which are created by EqualityComparer<T> for enums */
+               {
+                       MonoClass *enum_comparer;
+                       MonoType *insts [16];
+                       int ninsts;
+
+                       ninsts = 0;
+                       insts [ninsts ++] = &mono_defaults.int32_class->byval_arg;
+                       insts [ninsts ++] = &mono_defaults.uint32_class->byval_arg;
+                       insts [ninsts ++] = &mono_defaults.uint16_class->byval_arg;
+                       insts [ninsts ++] = &mono_defaults.byte_class->byval_arg;
+                       enum_comparer = mono_class_from_name (mono_defaults.corlib, "System.Collections.Generic", "EnumEqualityComparer`1");
+                       g_assert (enum_comparer);
+                       add_instances_of (acfg, enum_comparer, insts, ninsts, FALSE);
+
+                       ninsts = 0;
+                       insts [ninsts ++] = &mono_defaults.int16_class->byval_arg;
+                       enum_comparer = mono_class_from_name (mono_defaults.corlib, "System.Collections.Generic", "ShortEnumEqualityComparer`1");
+                       g_assert (enum_comparer);
+                       add_instances_of (acfg, enum_comparer, insts, ninsts, FALSE);
+
+                       ninsts = 0;
+                       insts [ninsts ++] = &mono_defaults.sbyte_class->byval_arg;
+                       enum_comparer = mono_class_from_name (mono_defaults.corlib, "System.Collections.Generic", "SByteEnumEqualityComparer`1");
+                       g_assert (enum_comparer);
+                       add_instances_of (acfg, enum_comparer, insts, ninsts, FALSE);
+
+                       enum_comparer = mono_class_from_name (mono_defaults.corlib, "System.Collections.Generic", "LongEnumEqualityComparer`1");
+                       g_assert (enum_comparer);
+                       ninsts = 0;
+                       insts [ninsts ++] = &mono_defaults.int64_class->byval_arg;
+                       insts [ninsts ++] = &mono_defaults.uint64_class->byval_arg;
+                       add_instances_of (acfg, enum_comparer, insts, ninsts, FALSE);
+               }
+
                /* Add instances of the array generic interfaces for primitive types */
                /* This will add instances of the InternalArray_ helper methods in Array too */
                klass = mono_class_from_name (acfg->image, "System.Collections.Generic", "ICollection`1");
@@ -4582,6 +4651,30 @@ add_generic_instances (MonoAotCompile *acfg)
                                }
                        }
                }
+
+               /* object[] accessor wrappers. */
+               {
+                       MonoClass *obj_array_class = mono_array_class_get (mono_defaults.object_class, 1);
+                       MonoMethod *m;
+
+                       m = mono_class_get_method_from_name (obj_array_class, "Get", 1);
+                       g_assert (m);
+
+                       m = mono_marshal_get_array_accessor_wrapper (m);
+                       add_extra_method (acfg, m);
+
+                       m = mono_class_get_method_from_name (obj_array_class, "Address", 1);
+                       g_assert (m);
+
+                       m = mono_marshal_get_array_accessor_wrapper (m);
+                       add_extra_method (acfg, m);
+
+                       m = mono_class_get_method_from_name (obj_array_class, "Set", 2);
+                       g_assert (m);
+
+                       m = mono_marshal_get_array_accessor_wrapper (m);
+                       add_extra_method (acfg, m);
+               }
        }
 }
 
@@ -4595,7 +4688,7 @@ static gboolean
 is_direct_callable (MonoAotCompile *acfg, MonoMethod *method, MonoJumpInfo *patch_info)
 {
        if ((patch_info->type == MONO_PATCH_INFO_METHOD) && (patch_info->data.method->klass->image == acfg->image)) {
-               MonoCompile *callee_cfg = g_hash_table_lookup (acfg->method_to_cfg, patch_info->data.method);
+               MonoCompile *callee_cfg = (MonoCompile *)g_hash_table_lookup (acfg->method_to_cfg, patch_info->data.method);
                if (callee_cfg) {
                        gboolean direct_callable = TRUE;
 
@@ -4647,7 +4740,7 @@ get_pinvoke_import (MonoAotCompile *acfg, MonoMethod *method)
        guint32 im_cols [MONO_IMPLMAP_SIZE];
        char *import;
 
-       import = g_hash_table_lookup (acfg->method_to_pinvoke_import, method);
+       import = (char *)g_hash_table_lookup (acfg->method_to_pinvoke_import, method);
        if (import != NULL)
                return import;
 
@@ -4707,7 +4800,7 @@ compute_line_numbers (MonoMethod *method, int code_size, MonoDebugMethodJitInfo
        ln_array = g_new0 (MonoDebugLineNumberEntry, debug_info->num_line_numbers);
        memcpy (ln_array, debug_info->line_numbers, debug_info->num_line_numbers * sizeof (MonoDebugLineNumberEntry));
 
-       qsort (ln_array, debug_info->num_line_numbers, sizeof (MonoDebugLineNumberEntry), (gpointer)compare_lne);
+       qsort (ln_array, debug_info->num_line_numbers, sizeof (MonoDebugLineNumberEntry), (int (*)(const void *, const void *))compare_lne);
 
        native_to_il_offset = g_new0 (int, code_size + 1);
 
@@ -4828,7 +4921,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
        for (i = 0; i < code_len; i += INST_LEN) {
                patch_info = NULL;
                for (pindex = start_index; pindex < patches->len; ++pindex) {
-                       patch_info = g_ptr_array_index (patches, pindex);
+                       patch_info = (MonoJumpInfo *)g_ptr_array_index (patches, pindex);
                        if (patch_info->ip.i >= i)
                                break;
                }
@@ -4862,7 +4955,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
                        }
                        case MONO_PATCH_INFO_OBJC_SELECTOR_REF: {
                                int code_size, index;
-                               char *selector = (void*)patch_info->data.target;
+                               char *selector = (char *)patch_info->data.target;
 
                                if (!acfg->objc_selector_to_index)
                                        acfg->objc_selector_to_index = g_hash_table_new (g_str_hash, g_str_equal);
@@ -4894,7 +4987,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
                                external_call = FALSE;
                                if ((patch_info->type == MONO_PATCH_INFO_METHOD) && (patch_info->data.method->klass->image == acfg->image)) {
                                        if (!got_only && is_direct_callable (acfg, method, patch_info)) {
-                                               MonoCompile *callee_cfg = g_hash_table_lookup (acfg->method_to_cfg, patch_info->data.method);
+                                               MonoCompile *callee_cfg = (MonoCompile *)g_hash_table_lookup (acfg->method_to_cfg, patch_info->data.method);
                                                //printf ("DIRECT: %s %s\n", method ? mono_method_full_name (method, TRUE) : "", mono_method_full_name (callee_cfg->method, TRUE));
                                                direct_call = TRUE;
                                                direct_call_target = callee_cfg->asm_symbol;
@@ -4977,7 +5070,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
                        /* Find next patch */
                        patch_info = NULL;
                        for (pindex = start_index; pindex < patches->len; ++pindex) {
-                               patch_info = g_ptr_array_index (patches, pindex);
+                               patch_info = (MonoJumpInfo *)g_ptr_array_index (patches, pindex);
                                if (patch_info->ip.i >= i)
                                        break;
                        }
@@ -5068,7 +5161,7 @@ get_debug_sym (MonoMethod *method, const char *prefix, GHashTable *cache)
 #endif
 
        len = strlen (name1);
-       name2 = malloc (strlen (prefix) + len + 16);
+       name2 = (char *)malloc (strlen (prefix) + len + 16);
        memcpy (name2, prefix, strlen (prefix));
        j = strlen (prefix);
        for (i = 0; i < len; ++i) {
@@ -5091,7 +5184,7 @@ get_debug_sym (MonoMethod *method, const char *prefix, GHashTable *cache)
 
        count = 0;
        while (TRUE) {
-               cached_method = g_hash_table_lookup (cache, name2);
+               cached_method = (MonoMethod *)g_hash_table_lookup (cache, name2);
                if (!(cached_method && cached_method != method))
                        break;
                sprintf (name2 + j, "_%d", count);
@@ -5146,7 +5239,7 @@ emit_method_code (MonoAotCompile *acfg, MonoCompile *cfg)
                emit_label (acfg, debug_sym);
        }
 
-       export_name = g_hash_table_lookup (acfg->export_names, method);
+       export_name = (char *)g_hash_table_lookup (acfg->export_names, method);
        if (export_name) {
                /* Emit a global symbol for the method */
                emit_global_inner (acfg, export_name, TRUE);
@@ -5196,6 +5289,7 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
        case MONO_PATCH_INFO_JIT_TLS_ID:
        case MONO_PATCH_INFO_GC_CARD_TABLE_ADDR:
        case MONO_PATCH_INFO_GC_NURSERY_START:
+       case MONO_PATCH_INFO_GC_NURSERY_BITS:
                break;
        case MONO_PATCH_INFO_CASTCLASS_CACHE:
                encode_value (patch_info->data.index, p, &p);
@@ -5257,7 +5351,7 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
 
                ex_class =
                        mono_class_from_name (mono_defaults.exception_class->image,
-                                                                 "System", patch_info->data.target);
+                                                                 "System", (const char *)patch_info->data.target);
                g_assert (ex_class);
                encode_klass_ref (acfg, ex_class, p, &p);
                break;
@@ -5303,7 +5397,7 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
                 */
                offset = GPOINTER_TO_UINT (g_hash_table_lookup (acfg->method_blob_hash, entry->method));
                if (!offset) {
-                       buf2 = g_malloc (1024);
+                       buf2 = (guint8 *)g_malloc (1024);
                        p2 = buf2;
 
                        encode_method_ref (acfg, entry->method, p2, &p2);
@@ -5327,10 +5421,6 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
        case MONO_PATCH_INFO_SEQ_POINT_INFO:
        case MONO_PATCH_INFO_AOT_MODULE:
                break;
-       case MONO_PATCH_INFO_LLVM_IMT_TRAMPOLINE:
-               encode_method_ref (acfg, patch_info->data.imt_tramp->method, p, &p);
-               encode_value (patch_info->data.imt_tramp->vt_offset, p, &p);
-               break;
        case MONO_PATCH_INFO_SIGNATURE:
                encode_signature (acfg, (MonoMethodSignature*)patch_info->data.target, p, &p);
                break;
@@ -5348,15 +5438,15 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
                encode_method_ref (acfg, info->method, p, &p);
                encode_value (info->num_entries, p, &p);
                for (i = 0; i < info->num_entries; ++i) {
-                       MonoRuntimeGenericContextInfoTemplate *template = &info->entries [i];
+                       MonoRuntimeGenericContextInfoTemplate *template_ = &info->entries [i];
 
-                       encode_value (template->info_type, p, &p);
-                       switch (mini_rgctx_info_type_to_patch_info_type (template->info_type)) {
+                       encode_value (template_->info_type, p, &p);
+                       switch (mini_rgctx_info_type_to_patch_info_type (template_->info_type)) {
                        case MONO_PATCH_INFO_CLASS:
-                               encode_klass_ref (acfg, mono_class_from_mono_type (template->data), p, &p);
+                               encode_klass_ref (acfg, mono_class_from_mono_type ((MonoType *)template_->data), p, &p);
                                break;
                        case MONO_PATCH_INFO_FIELD:
-                               encode_field_info (acfg, template->data, p, &p);
+                               encode_field_info (acfg, (MonoClassField *)template_->data, p, &p);
                                break;
                        default:
                                g_assert_not_reached ();
@@ -5366,7 +5456,7 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
                break;
        }
        case MONO_PATCH_INFO_LDSTR_LIT: {
-               const char *s = patch_info->data.target;
+               const char *s = (const char *)patch_info->data.target;
                int len = strlen (s);
 
                encode_value (len, p, &p);
@@ -5398,7 +5488,7 @@ encode_patch_list (MonoAotCompile *acfg, GPtrArray *patches, int n_patches, gboo
        encode_value (n_patches, p, &p);
 
        for (pindex = 0; pindex < patches->len; ++pindex) {
-               patch_info = g_ptr_array_index (patches, pindex);
+               patch_info = (MonoJumpInfo *)g_ptr_array_index (patches, pindex);
 
                if (patch_info->type == MONO_PATCH_INFO_NONE || patch_info->type == MONO_PATCH_INFO_BB)
                        /* Nothing to do */
@@ -5439,7 +5529,7 @@ emit_method_info (MonoAotCompile *acfg, MonoCompile *cfg)
        /**********************/
 
        buf_size = (patches->len < 1000) ? 40960 : 40960 + (patches->len * 64);
-       p = buf = g_malloc (buf_size);
+       p = buf = (guint8 *)g_malloc (buf_size);
 
        if (mono_class_get_cctor (method->klass))
                encode_klass_ref (acfg, method->klass, p, &p);
@@ -5451,7 +5541,7 @@ emit_method_info (MonoAotCompile *acfg, MonoCompile *cfg)
 
        n_patches = 0;
        for (pindex = 0; pindex < patches->len; ++pindex) {
-               patch_info = g_ptr_array_index (patches, pindex);
+               patch_info = (MonoJumpInfo *)g_ptr_array_index (patches, pindex);
                
                if ((patch_info->type == MONO_PATCH_INFO_GOT_OFFSET) ||
                        (patch_info->type == MONO_PATCH_INFO_NONE)) {
@@ -5468,6 +5558,7 @@ emit_method_info (MonoAotCompile *acfg, MonoCompile *cfg)
 
                if (patch_info->type == MONO_PATCH_INFO_GC_CARD_TABLE_ADDR ||
                        patch_info->type == MONO_PATCH_INFO_GC_NURSERY_START ||
+                       patch_info->type == MONO_PATCH_INFO_GC_NURSERY_BITS ||
                        patch_info->type == MONO_PATCH_INFO_AOT_MODULE) {
                        /* Stored in a GOT slot initialized at module load time */
                        patch_info->type = MONO_PATCH_INFO_NONE;
@@ -5557,7 +5648,7 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg, gboolean stor
 
        buf_size = header->num_clauses * 256 + debug_info_size + 2048 + seq_points_size + cfg->gc_map_size;
 
-       p = buf = g_malloc (buf_size);
+       p = buf = (guint8 *)g_malloc (buf_size);
 
        use_unwind_ops = cfg->unwind_ops != NULL;
 
@@ -5658,7 +5749,7 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg, gboolean stor
                                        guint8 *buf2, *p2;
                                        int len;
 
-                                       buf2 = g_malloc (4096);
+                                       buf2 = (guint8 *)g_malloc (4096);
                                        p2 = buf2;
                                        encode_klass_ref (acfg, ei->data.catch_class, p2, &p2);
                                        len = p2 - buf2;
@@ -5729,7 +5820,7 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg, gboolean stor
                 * Need to encode jinfo->method too, since it is not equal to 'method'
                 * when using generic sharing.
                 */
-               buf2 = g_malloc (4096);
+               buf2 = (guint8 *)g_malloc (4096);
                p2 = buf2;
                encode_method_ref (acfg, jinfo->d.method, p2, &p2);
                len = p2 - buf2;
@@ -5793,7 +5884,7 @@ emit_klass_info (MonoAotCompile *acfg, guint32 token)
 
                buf_size = 16;
 
-               p = buf = g_malloc (buf_size);
+               p = buf = (guint8 *)g_malloc (buf_size);
 
                /* Mark as unusable */
                encode_value (-1, p, &p);
@@ -5805,7 +5896,7 @@ emit_klass_info (MonoAotCompile *acfg, guint32 token)
        }
                
        buf_size = 10240 + (klass->vtable_size * 16);
-       p = buf = g_malloc (buf_size);
+       p = buf = (guint8 *)g_malloc (buf_size);
 
        g_assert (klass);
 
@@ -5943,7 +6034,7 @@ emit_plt (MonoAotCompile *acfg)
                         */
                        continue;
 
-               plt_entry = g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
+               plt_entry = (MonoPltEntry *)g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
 
                debug_sym = plt_entry->debug_sym;
 
@@ -5997,7 +6088,7 @@ emit_plt (MonoAotCompile *acfg)
                        if (i == 0)
                                continue;
 
-                       plt_entry = g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
+                       plt_entry = (MonoPltEntry *)g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
 
                        /* Skip plt entries not actually called by LLVM code */
                        if (!plt_entry->llvm_used)
@@ -6106,7 +6197,7 @@ emit_trampoline_full (MonoAotCompile *acfg, int got_offset, MonoTrampInfo *info,
        g_ptr_array_sort (patches, compare_patches);
 
        buf_size = patches->len * 128 + 128;
-       buf = g_malloc (buf_size);
+       buf = (guint8 *)g_malloc (buf_size);
        p = buf;
 
        encode_patch_list (acfg, patches, patches->len, FALSE, got_offset, p, &p);
@@ -6162,7 +6253,7 @@ emit_trampolines (MonoAotCompile *acfg)
        char symbol [256];
        char end_symbol [256];
        int i, tramp_got_offset;
-       MonoAotTrampoline ntype;
+       int ntype;
 #ifdef MONO_ARCH_HAVE_FULL_AOT_TRAMPOLINES
        int tramp_type;
 #endif
@@ -6194,7 +6285,7 @@ emit_trampolines (MonoAotCompile *acfg)
                        if (tramp_type == MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD)
                                continue;
 #endif
-                       mono_arch_create_generic_trampoline (tramp_type, &info, acfg->aot_opts.use_trampolines_page? 2: TRUE);
+                       mono_arch_create_generic_trampoline ((MonoTrampolineType)tramp_type, &info, acfg->aot_opts.use_trampolines_page? 2: TRUE);
                        emit_trampoline (acfg, acfg->got_offset, info);
                }
 
@@ -6233,7 +6324,7 @@ emit_trampolines (MonoAotCompile *acfg)
                        GSList *l = mono_arch_get_trampolines (TRUE);
 
                        while (l) {
-                               MonoTrampInfo *info = l->data;
+                               MonoTrampInfo *info = (MonoTrampInfo *)l->data;
 
                                emit_trampoline (acfg, acfg->got_offset, info);
                                l = l->next;
@@ -6264,7 +6355,7 @@ emit_trampolines (MonoAotCompile *acfg)
                        /* delegate_invoke_impl trampolines */
                        l = mono_arch_get_delegate_invoke_impls ();
                        while (l) {
-                               MonoTrampInfo *info = l->data;
+                               MonoTrampInfo *info = (MonoTrampInfo *)l->data;
 
                                emit_trampoline (acfg, acfg->got_offset, info);
                                l = l->next;
@@ -6445,7 +6536,7 @@ add_readonly_value (MonoAotOptions *opts, const char *val)
                exit (1);
        }
        rdv = g_new0 (ReadOnlyValue, 1);
-       rdv->name = g_malloc0 (tval - val + 1);
+       rdv->name = (char *)g_malloc0 (tval - val + 1);
        memcpy (rdv->name, val, tval - val);
        tval++;
        fval++;
@@ -6561,7 +6652,7 @@ mono_aot_parse_options (const char *aot_options, MonoAotOptions *opts)
 
        args = mono_aot_split_options (aot_options ? aot_options : "");
        for (int i = 0; i < args->len; ++i) {
-               const char *arg = g_ptr_array_index (args, i);
+               const char *arg = (const char *)g_ptr_array_index (args, i);
 
                if (str_begins_with (arg, "outfile=")) {
                        opts->outfile = g_strdup (arg + strlen ("outfile="));
@@ -6656,6 +6747,8 @@ mono_aot_parse_options (const char *aot_options, MonoAotOptions *opts)
                        opts->mode = MONO_AOT_MODE_FULL;
                        opts->llvm = TRUE;
                        opts->llvm_only = TRUE;
+               } else if (str_begins_with (arg, "data-outfile=")) {
+                       opts->data_outfile = g_strdup (arg + strlen ("data-outfile="));
                } else if (str_begins_with (arg, "help") || str_begins_with (arg, "?")) {
                        printf ("Supported options for --aot:\n");
                        printf ("    outfile=\n");
@@ -6713,10 +6806,10 @@ add_token_info_hash (gpointer key, gpointer value, gpointer user_data)
 {
        MonoMethod *method = (MonoMethod*)key;
        MonoJumpInfoToken *ji = (MonoJumpInfoToken*)value;
-       MonoAotCompile *acfg = user_data;
+       MonoAotCompile *acfg = (MonoAotCompile *)user_data;
        MonoJumpInfoToken *new_ji;
 
-       new_ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfoToken));
+       new_ji = (MonoJumpInfoToken *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfoToken));
        new_ji->image = ji->image;
        new_ji->token = ji->token;
        g_hash_table_insert (acfg->token_info_hash, method, new_ji);
@@ -6830,6 +6923,113 @@ can_encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info)
        return TRUE;
 }
 
+static gboolean
+is_concrete_type (MonoType *t)
+{
+       MonoClass *klass;
+       int i;
+
+       if (t->type == MONO_TYPE_VAR || t->type == MONO_TYPE_MVAR)
+               return FALSE;
+       if (t->type == MONO_TYPE_GENERICINST) {
+               MonoGenericContext *orig_ctx;
+               MonoGenericInst *inst;
+               MonoType *arg;
+
+               if (!MONO_TYPE_ISSTRUCT (t))
+                       return TRUE;
+               klass = mono_class_from_mono_type (t);
+               orig_ctx = &klass->generic_class->context;
+
+               inst = orig_ctx->class_inst;
+               if (inst) {
+                       for (i = 0; i < inst->type_argc; ++i) {
+                               arg = mini_get_underlying_type (inst->type_argv [i]);
+                               if (!is_concrete_type (arg))
+                                       return FALSE;
+                       }
+               }
+               inst = orig_ctx->method_inst;
+               if (inst) {
+                       for (i = 0; i < inst->type_argc; ++i) {
+                               arg = mini_get_underlying_type (inst->type_argv [i]);
+                               if (!is_concrete_type (arg))
+                                       return FALSE;
+                       }
+               }
+       }
+       return TRUE;
+}
+
+/* LOCKING: Assumes the loader lock is held */
+static void
+add_gsharedvt_wrappers (MonoAotCompile *acfg, MonoMethodSignature *sig, gboolean gsharedvt_in, gboolean gsharedvt_out)
+{
+       MonoMethod *wrapper;
+       gboolean concrete = TRUE;
+       gboolean add_in = gsharedvt_in;
+       gboolean add_out = gsharedvt_out;
+
+       if (gsharedvt_in && g_hash_table_lookup (acfg->gsharedvt_in_signatures, sig))
+               add_in = FALSE;
+       if (gsharedvt_out && g_hash_table_lookup (acfg->gsharedvt_out_signatures, sig))
+               add_out = FALSE;
+
+       if (!add_in && !add_out)
+               return;
+
+       if (mini_is_gsharedvt_variable_signature (sig))
+               return;
+
+       if (add_in)
+               g_hash_table_insert (acfg->gsharedvt_in_signatures, sig, sig);
+       if (add_out)
+               g_hash_table_insert (acfg->gsharedvt_out_signatures, sig, sig);
+
+       if (!sig->has_type_parameters) {
+               //printf ("%s\n", mono_signature_full_name (sig));
+
+               if (gsharedvt_in) {
+                       wrapper = mini_get_gsharedvt_in_sig_wrapper (sig);
+                       add_extra_method (acfg, wrapper);
+               }
+               if (gsharedvt_out) {
+                       wrapper = mini_get_gsharedvt_out_sig_wrapper (sig);
+                       add_extra_method (acfg, wrapper);
+               }
+       } else {
+               /* For signatures creared during generic sharing, convert them to a concrete signature if possible */
+               MonoMethodSignature *copy = mono_metadata_signature_dup (sig);
+               int i;
+
+               //printf ("%s\n", mono_signature_full_name (sig));
+
+               copy->ret = mini_get_underlying_type (sig->ret);
+               if (!is_concrete_type (copy->ret))
+                       concrete = FALSE;
+               for (i = 0; i < sig->param_count; ++i) {
+                       copy->params [i] = mini_get_underlying_type (sig->params [i]);
+                       if (!is_concrete_type (copy->params [i]))
+                               concrete = FALSE;
+               }
+               if (concrete) {
+                       copy->has_type_parameters = 0;
+
+                       if (gsharedvt_in) {
+                               wrapper = mini_get_gsharedvt_in_sig_wrapper (copy);
+                               add_extra_method (acfg, wrapper);
+                       }
+
+                       if (gsharedvt_out) {
+                               wrapper = mini_get_gsharedvt_out_sig_wrapper (copy);
+                               add_extra_method (acfg, wrapper);
+                       }
+
+                       //printf ("%s\n", mono_method_full_name (wrapper, 1));
+               }
+       }
+}
+
 /*
  * compile_method:
  *
@@ -6891,13 +7091,13 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
         */
        flags = JIT_FLAG_AOT;
        if (mono_aot_mode_is_full (&acfg->aot_opts))
-               flags |= JIT_FLAG_FULL_AOT;
+               flags = (JitFlags)(flags | JIT_FLAG_FULL_AOT);
        if (acfg->llvm)
-               flags |= JIT_FLAG_LLVM;
+               flags = (JitFlags)(flags | JIT_FLAG_LLVM);
        if (acfg->aot_opts.llvm_only)
-               flags |= JIT_FLAG_LLVM_ONLY | JIT_FLAG_EXPLICIT_NULL_CHECKS;
+               flags = (JitFlags)(flags | JIT_FLAG_LLVM_ONLY | JIT_FLAG_EXPLICIT_NULL_CHECKS);
        if (acfg->aot_opts.no_direct_calls)
-               flags |= JIT_FLAG_NO_DIRECT_ICALLS;
+               flags = (JitFlags)(flags | JIT_FLAG_NO_DIRECT_ICALLS);
        cfg = mini_method_compile (method, acfg->opts, mono_get_root_domain (), flags, 0, index);
        mono_loader_clear_error ();
 
@@ -6968,6 +7168,15 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
        /* Lock for the rest of the code */
        mono_acfg_lock (acfg);
 
+       if (cfg->gsharedvt)
+               acfg->stats.method_categories [METHOD_CAT_GSHAREDVT] ++;
+       else if (cfg->gshared)
+               acfg->stats.method_categories [METHOD_CAT_INST] ++;
+       else if (cfg->method->wrapper_type)
+               acfg->stats.method_categories [METHOD_CAT_WRAPPER] ++;
+       else
+               acfg->stats.method_categories [METHOD_CAT_NORMAL] ++;
+
        /*
         * Check for methods/klasses we can't encode.
         */
@@ -7071,6 +7280,7 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
                case MONO_PATCH_INFO_NONE:
                case MONO_PATCH_INFO_GC_CARD_TABLE_ADDR:
                case MONO_PATCH_INFO_GC_NURSERY_START:
+               case MONO_PATCH_INFO_GC_NURSERY_BITS:
                        break;
                case MONO_PATCH_INFO_IMAGE:
                        /* The assembly is stored in GOT slot 0 */
@@ -7087,6 +7297,22 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
        if (!cfg->has_got_slots)
                InterlockedIncrement (&acfg->stats.methods_without_got_slots);
 
+       if (!cfg->method->wrapper_type)
+               /* These only need out wrappers */
+               add_gsharedvt_wrappers (acfg, mono_method_signature (cfg->method), FALSE, TRUE);
+
+       /* Add gsharedvt wrappers for signatures used by the method */
+       if (acfg->aot_opts.llvm_only) {
+               GSList *l;
+
+               for (l = cfg->signatures; l; l = l->next) {
+                       MonoMethodSignature *sig = mono_metadata_signature_dup ((MonoMethodSignature*)l->data);
+
+                       /* These only need in wrappers */
+                       add_gsharedvt_wrappers (acfg, sig, TRUE, FALSE);
+               }
+       }
+
        /* 
         * FIXME: Instead of this mess, allocate the patches from the aot mempool.
         */
@@ -7112,7 +7338,7 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
 
                unwind_ops = NULL;
                for (l = cfg->unwind_ops; l; l = l->next) {
-                       op = mono_mempool_alloc (acfg->mempool, sizeof (MonoUnwindOp));
+                       op = (MonoUnwindOp *)mono_mempool_alloc (acfg->mempool, sizeof (MonoUnwindOp));
                        memcpy (op, l->data, sizeof (MonoUnwindOp));
                        unwind_ops = g_slist_prepend_mempool (acfg->mempool, unwind_ops, op);
                }
@@ -7126,17 +7352,17 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
                int i;
                
                sig = mono_method_signature (method);
-               args = mono_mempool_alloc (acfg->mempool, sizeof (MonoInst*) * (sig->param_count + sig->hasthis));
+               args = (MonoInst **)mono_mempool_alloc (acfg->mempool, sizeof (MonoInst*) * (sig->param_count + sig->hasthis));
                for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
-                       args [i] = mono_mempool_alloc (acfg->mempool, sizeof (MonoInst));
+                       args [i] = (MonoInst *)mono_mempool_alloc (acfg->mempool, sizeof (MonoInst));
                        memcpy (args [i], cfg->args [i], sizeof (MonoInst));
                }
                cfg->args = args;
 
                header = mono_method_get_header (method);
-               locals = mono_mempool_alloc (acfg->mempool, sizeof (MonoInst*) * header->num_locals);
+               locals = (MonoInst **)mono_mempool_alloc (acfg->mempool, sizeof (MonoInst*) * header->num_locals);
                for (i = 0; i < header->num_locals; ++i) {
-                       locals [i] = mono_mempool_alloc (acfg->mempool, sizeof (MonoInst));
+                       locals [i] = (MonoInst *)mono_mempool_alloc (acfg->mempool, sizeof (MonoInst));
                        memcpy (locals [i], cfg->locals [i], sizeof (MonoInst));
                }
                cfg->locals = locals;
@@ -7184,15 +7410,15 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
 static void
 compile_thread_main (gpointer *user_data)
 {
-       MonoDomain *domain = user_data [0];
-       MonoAotCompile *acfg = user_data [1];
-       GPtrArray *methods = user_data [2];
+       MonoDomain *domain = (MonoDomain *)user_data [0];
+       MonoAotCompile *acfg = (MonoAotCompile *)user_data [1];
+       GPtrArray *methods = (GPtrArray *)user_data [2];
        int i;
 
        mono_thread_attach (domain);
 
        for (i = 0; i < methods->len; ++i)
-               compile_method (acfg, g_ptr_array_index (methods, i));
+               compile_method (acfg, (MonoMethod *)g_ptr_array_index (methods, i));
 }
 
 static void
@@ -7291,6 +7517,18 @@ mono_aot_get_got_offset (MonoJumpInfo *ji)
        return get_got_offset (llvm_acfg, TRUE, ji);
 }
 
+/*
+ * mono_aot_is_shared_got_offset:
+ *
+ *   Return whenever OFFSET refers to a GOT slot which is preinitialized
+ * when the AOT image is loaded.
+ */
+gboolean
+mono_aot_is_shared_got_offset (int offset)
+{
+       return offset < llvm_acfg->nshared_got_entries;
+}
+
 char*
 mono_aot_get_method_name (MonoCompile *cfg)
 {
@@ -7301,6 +7539,170 @@ mono_aot_get_method_name (MonoCompile *cfg)
                return get_debug_sym (cfg->orig_method, "", llvm_acfg->method_label_hash);
 }
 
+/*
+ * mono_aot_is_linkonce_method:
+ *
+ *   Return whenever METHOD should be emitted with linkonce linkage,
+ * eliminating duplicate copies when compiling in static mode.
+ */
+gboolean
+mono_aot_is_linkonce_method (MonoMethod *method)
+{
+       WrapperInfo *info;
+
+       // FIXME: Add more cases
+       if (method->wrapper_type != MONO_WRAPPER_UNKNOWN)
+               return FALSE;
+       info = mono_marshal_get_wrapper_info (method);
+       if ((info && (info->subtype == WRAPPER_SUBTYPE_GSHAREDVT_IN_SIG || info->subtype == WRAPPER_SUBTYPE_GSHAREDVT_OUT_SIG)))
+               return TRUE;
+       return FALSE;
+}
+
+static gboolean
+append_mangled_type (GString *s, MonoType *t)
+{
+       if (t->byref)
+               g_string_append_printf (s, "b");
+       switch (t->type) {
+       case MONO_TYPE_VOID:
+               g_string_append_printf (s, "void_");
+               break;
+       case MONO_TYPE_I1:
+               g_string_append_printf (s, "i1");
+               break;
+       case MONO_TYPE_U1:
+               g_string_append_printf (s, "u1");
+               break;
+       case MONO_TYPE_I2:
+               g_string_append_printf (s, "i2");
+               break;
+       case MONO_TYPE_U2:
+               g_string_append_printf (s, "u2");
+               break;
+       case MONO_TYPE_I4:
+               g_string_append_printf (s, "i4");
+               break;
+       case MONO_TYPE_U4:
+               g_string_append_printf (s, "u4");
+               break;
+       case MONO_TYPE_I8:
+               g_string_append_printf (s, "i8");
+               break;
+       case MONO_TYPE_U8:
+               g_string_append_printf (s, "u8");
+               break;
+       case MONO_TYPE_I:
+               g_string_append_printf (s, "ii");
+               break;
+       case MONO_TYPE_U:
+               g_string_append_printf (s, "ui");
+               break;
+       case MONO_TYPE_R4:
+               g_string_append_printf (s, "fl");
+               break;
+       case MONO_TYPE_R8:
+               g_string_append_printf (s, "do");
+               break;
+       default: {
+               char *fullname = mono_type_full_name (t);
+               GString *temp;
+               char *temps;
+               int i, len;
+
+               /*
+                * Have to create a mangled name which is:
+                * - a valid symbol
+                * - unique
+                */
+               temp = g_string_new ("");
+               len = strlen (fullname);
+               for (i = 0; i < len; ++i) {
+                       char c = fullname [i];
+                       if (isalnum (c)) {
+                               g_string_append_c (temp, c);
+                       } else if (c == '_') {
+                               g_string_append_c (temp, '_');
+                               g_string_append_c (temp, '_');
+                       } else {
+                               g_string_append_c (temp, '_');
+                               g_string_append_printf (temp, "%x", (int)c);
+                       }
+               }
+               temps = g_string_free (temp, FALSE);
+               /* Include the length to avoid different length type names aliasing each other */
+               g_string_append_printf (s, "cl%x_%s_", strlen (temps), temps);
+               g_free (temps);
+               return TRUE;
+       }
+       }
+       return TRUE;
+}
+
+static gboolean
+append_mangled_signature (GString *s, MonoMethodSignature *sig)
+{
+       int i;
+       gboolean supported;
+
+       supported = append_mangled_type (s, sig->ret);
+       if (!supported)
+               return FALSE;
+       if (sig->hasthis)
+               g_string_append_printf (s, "this_");
+       for (i = 0; i < sig->param_count; ++i) {
+               supported = append_mangled_type (s, sig->params [i]);
+               if (!supported)
+                       return FALSE;
+       }
+
+       return TRUE;
+}
+
+/*
+ * mono_aot_get_mangled_method_name:
+ *
+ *   Return a unique mangled name for METHOD, or NULL.
+ */
+char*
+mono_aot_get_mangled_method_name (MonoMethod *method)
+{
+       WrapperInfo *info;
+       GString *s;
+       gboolean supported;
+
+       // FIXME: Add more cases
+       if (method->wrapper_type != MONO_WRAPPER_UNKNOWN)
+               return NULL;
+       info = mono_marshal_get_wrapper_info (method);
+       if (!(info && (info->subtype == WRAPPER_SUBTYPE_GSHAREDVT_IN_SIG || info->subtype == WRAPPER_SUBTYPE_GSHAREDVT_OUT_SIG)))
+               return NULL;
+
+       s = g_string_new ("");
+
+       g_string_append_printf (s, "aot_method_w_");
+
+       switch (info->subtype) {
+       case WRAPPER_SUBTYPE_GSHAREDVT_IN_SIG:
+               g_string_append_printf (s, "gsharedvt_in_");
+               break;
+       case WRAPPER_SUBTYPE_GSHAREDVT_OUT_SIG:
+               g_string_append_printf (s, "gsharedvt_out_");
+               break;
+       default:
+               g_assert_not_reached ();
+               break;
+       }
+
+       supported = append_mangled_signature (s, info->d.gsharedvt.sig);
+       if (!supported) {
+               g_string_free (s, TRUE);
+               return NULL;
+       }
+
+       return g_string_free (s, FALSE);
+}
+
 gboolean
 mono_aot_is_direct_callable (MonoJumpInfo *patch_info)
 {
@@ -7316,10 +7718,30 @@ mono_aot_mark_unused_llvm_plt_entry (MonoJumpInfo *patch_info)
        plt_entry->llvm_used = FALSE;
 }
 
+char*
+mono_aot_get_direct_call_symbol (MonoJumpInfoType type, gconstpointer data)
+{
+       const char *sym = NULL;
+
+       if (llvm_acfg->aot_opts.direct_icalls) {
+               if (type == MONO_PATCH_INFO_JIT_ICALL_ADDR) {
+                       /* Call to a C function implementing a jit icall */
+                       sym = mono_lookup_jit_icall_symbol ((const char *)data);
+               } else if (type == MONO_PATCH_INFO_ICALL_ADDR) {
+                       MonoMethod *method = (MonoMethod *)data;
+                       if (!(method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL))
+                               sym = mono_lookup_icall_symbol (method);
+               }
+               if (sym)
+                       return g_strdup (sym);
+       }
+       return NULL;
+}
+
 char*
 mono_aot_get_plt_symbol (MonoJumpInfoType type, gconstpointer data)
 {
-       MonoJumpInfo *ji = mono_mempool_alloc (llvm_acfg->mempool, sizeof (MonoJumpInfo));
+       MonoJumpInfo *ji = (MonoJumpInfo *)mono_mempool_alloc (llvm_acfg->mempool, sizeof (MonoJumpInfo));
        MonoPltEntry *plt_entry;
        const char *sym = NULL;
 
@@ -7332,9 +7754,9 @@ mono_aot_get_plt_symbol (MonoJumpInfoType type, gconstpointer data)
        if (llvm_acfg->aot_opts.direct_icalls) {
                if (type == MONO_PATCH_INFO_JIT_ICALL_ADDR) {
                        /* Call to a C function implementing a jit icall */
-                       sym = mono_lookup_jit_icall_symbol (data);
+                       sym = mono_lookup_jit_icall_symbol ((const char *)data);
                } else if (type == MONO_PATCH_INFO_ICALL_ADDR) {
-                       MonoMethod *method = (gpointer)data;
+                       MonoMethod *method = (MonoMethod *)data;
                        if (!(method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL))
                                sym = mono_lookup_icall_symbol (method);
                }
@@ -7411,6 +7833,11 @@ emit_llvm_file (MonoAotCompile *acfg)
        char *command, *opts, *tempbc, *output_fname;
 
        /* Emit the LLVM code into a .bc file */
+       if (acfg->aot_opts.llvm_only && acfg->aot_opts.asm_only) {
+               mono_llvm_emit_aot_module (acfg->aot_opts.llvm_outfile, g_path_get_basename (acfg->image->name));
+               return TRUE;
+       }
+
        tempbc = g_strdup_printf ("%s.bc", acfg->tmpbasename);
        mono_llvm_emit_aot_module (tempbc, g_path_get_basename (acfg->image->name));
        g_free (tempbc);
@@ -7743,7 +8170,7 @@ emit_info (MonoAotCompile *acfg)
                }
        }
 
-       acfg->stats.offsets_size += emit_offset_table (acfg, "method_info_offsets", acfg->nmethods, 10, offsets);
+       acfg->stats.offsets_size += emit_offset_table (acfg, "method_info_offsets", MONO_AOT_TABLE_METHOD_INFO_OFFSETS, acfg->nmethods, 10, offsets);
 
        g_free (offsets);
 }
@@ -7819,7 +8246,7 @@ mono_aot_method_hash (MonoMethod *method)
                ginst = ((MonoMethodInflated*)method)->context.method_inst;
 
        hashes_count = sig->param_count + 5 + (class_ginst ? class_ginst->type_argc : 0) + (ginst ? ginst->type_argc : 0);
-       hashes_start = g_malloc0 (hashes_count * sizeof (guint32));
+       hashes_start = (guint32 *)g_malloc0 (hashes_count * sizeof (guint32));
        hashes = hashes_start;
 
        /* Some wrappers are assigned to random classes */
@@ -7956,7 +8383,6 @@ static void
 emit_extra_methods (MonoAotCompile *acfg)
 {
        int i, table_size, buf_size;
-       char symbol [256];
        guint8 *p, *buf;
        guint32 *info_offsets;
        guint32 hash;
@@ -7970,14 +8396,14 @@ emit_extra_methods (MonoAotCompile *acfg)
        /* Emit method info */
        nmethods = 0;
        for (i = 0; i < acfg->extra_methods->len; ++i) {
-               MonoMethod *method = g_ptr_array_index (acfg->extra_methods, i);
-               MonoCompile *cfg = g_hash_table_lookup (acfg->method_to_cfg, method);
+               MonoMethod *method = (MonoMethod *)g_ptr_array_index (acfg->extra_methods, i);
+               MonoCompile *cfg = (MonoCompile *)g_hash_table_lookup (acfg->method_to_cfg, method);
 
                if (!cfg)
                        continue;
 
                buf_size = 10240;
-               p = buf = g_malloc (buf_size);
+               p = buf = (guint8 *)g_malloc (buf_size);
 
                nmethods ++;
 
@@ -8002,8 +8428,8 @@ emit_extra_methods (MonoAotCompile *acfg)
        chain_lengths = g_new0 (int, table_size);
        max_chain_length = 0;
        for (i = 0; i < acfg->extra_methods->len; ++i) {
-               MonoMethod *method = g_ptr_array_index (acfg->extra_methods, i);
-               MonoCompile *cfg = g_hash_table_lookup (acfg->method_to_cfg, method);
+               MonoMethod *method = (MonoMethod *)g_ptr_array_index (acfg->extra_methods, i);
+               MonoCompile *cfg = (MonoCompile *)g_hash_table_lookup (acfg->method_to_cfg, method);
                guint32 key, value;
 
                if (!cfg)
@@ -8018,11 +8444,11 @@ emit_extra_methods (MonoAotCompile *acfg)
                chain_lengths [hash] ++;
                max_chain_length = MAX (max_chain_length, chain_lengths [hash]);
 
-               new_entry = mono_mempool_alloc0 (acfg->mempool, sizeof (HashEntry));
+               new_entry = (HashEntry *)mono_mempool_alloc0 (acfg->mempool, sizeof (HashEntry));
                new_entry->key = key;
                new_entry->value = value;
 
-               entry = g_ptr_array_index (table, hash);
+               entry = (HashEntry *)g_ptr_array_index (table, hash);
                if (entry == NULL) {
                        new_entry->index = hash;
                        g_ptr_array_index (table, hash) = new_entry;
@@ -8039,11 +8465,11 @@ emit_extra_methods (MonoAotCompile *acfg)
        //printf ("MAX: %d\n", max_chain_length);
 
        buf_size = table->len * 12 + 4;
-       p = buf = g_malloc (buf_size);
+       p = buf = (guint8 *)g_malloc (buf_size);
        encode_int (table_size, p, &p);
 
        for (i = 0; i < table->len; ++i) {
-               HashEntry *entry = g_ptr_array_index (table, i);
+               HashEntry *entry = (HashEntry *)g_ptr_array_index (table, i);
 
                if (entry == NULL) {
                        encode_int (0, p, &p);
@@ -8062,38 +8488,22 @@ emit_extra_methods (MonoAotCompile *acfg)
        g_assert (p - buf <= buf_size);
 
        /* Emit the table */
-       if (acfg->llvm) {
-               mono_llvm_emit_aot_data ("extra_method_table", buf, p - buf);
-       } else {
-               sprintf (symbol, "extra_method_table");
-               emit_section_change (acfg, RODATA_SECT, 0);
-               emit_alignment (acfg, 8);
-               emit_label (acfg, symbol);
-               emit_bytes (acfg, buf, p - buf);
-       }
+       emit_aot_data (acfg, MONO_AOT_TABLE_EXTRA_METHOD_TABLE, "extra_method_table", buf, p - buf);
 
        /* 
         * Emit a table reverse mapping method indexes to their index in extra_method_info.
         * This is used by mono_aot_find_jit_info ().
         */
        buf_size = acfg->extra_methods->len * 8 + 4;
-       p = buf = g_malloc (buf_size);
+       p = buf = (guint8 *)g_malloc (buf_size);
        encode_int (acfg->extra_methods->len, p, &p);
        for (i = 0; i < acfg->extra_methods->len; ++i) {
-               MonoMethod *method = g_ptr_array_index (acfg->extra_methods, i);
+               MonoMethod *method = (MonoMethod *)g_ptr_array_index (acfg->extra_methods, i);
 
                encode_int (get_method_index (acfg, method), p, &p);
                encode_int (info_offsets [i], p, &p);
        }
-       if (acfg->llvm) {
-               mono_llvm_emit_aot_data ("extra_method_info_offsets", buf, p - buf);
-       } else {
-               sprintf (symbol, "extra_method_info_offsets");
-               emit_section_change (acfg, RODATA_SECT, 0);
-               emit_alignment (acfg, 8);
-               emit_label (acfg, symbol);
-               emit_bytes (acfg, buf, p - buf);
-       }
+       emit_aot_data (acfg, MONO_AOT_TABLE_EXTRA_METHOD_INFO_OFFSETS, "extra_method_info_offsets", buf, p - buf);
 }      
 
 static void
@@ -8138,7 +8548,7 @@ emit_exception_info (MonoAotCompile *acfg)
                g_free (seq_points_aot_file);
        }
 
-       acfg->stats.offsets_size += emit_offset_table (acfg, "ex_info_offsets", acfg->nmethods, 10, offsets);
+       acfg->stats.offsets_size += emit_offset_table (acfg, "ex_info_offsets", MONO_AOT_TABLE_EX_INFO_OFFSETS, acfg->nmethods, 10, offsets);
        g_free (offsets);
 }
 
@@ -8192,7 +8602,7 @@ emit_class_info (MonoAotCompile *acfg)
        for (i = 0; i < acfg->image->tables [MONO_TABLE_TYPEDEF].rows; ++i)
                offsets [i] = emit_klass_info (acfg, MONO_TOKEN_TYPE_DEF | (i + 1));
 
-       acfg->stats.offsets_size += emit_offset_table (acfg, "class_info_offsets", acfg->image->tables [MONO_TABLE_TYPEDEF].rows, 10, offsets);
+       acfg->stats.offsets_size += emit_offset_table (acfg, "class_info_offsets", MONO_AOT_TABLE_CLASS_INFO_OFFSETS, acfg->image->tables [MONO_TABLE_TYPEDEF].rows, 10, offsets);
        g_free (offsets);
 }
 
@@ -8210,7 +8620,6 @@ emit_class_name_table (MonoAotCompile *acfg)
        GPtrArray *table;
        char *full_name;
        guint8 *buf, *p;
-       char symbol [256];
        ClassNameTableEntry *entry, *new_entry;
 
        /*
@@ -8236,7 +8645,7 @@ emit_class_name_table (MonoAotCompile *acfg)
                new_entry = g_new0 (ClassNameTableEntry, 1);
                new_entry->token = token;
 
-               entry = g_ptr_array_index (table, hash);
+               entry = (ClassNameTableEntry *)g_ptr_array_index (table, hash);
                if (entry == NULL) {
                        new_entry->index = hash;
                        g_ptr_array_index (table, hash) = new_entry;
@@ -8252,14 +8661,14 @@ emit_class_name_table (MonoAotCompile *acfg)
 
        /* Emit the table */
        buf_size = table->len * 4 + 4;
-       p = buf = g_malloc0 (buf_size);
+       p = buf = (guint8 *)g_malloc0 (buf_size);
 
        /* FIXME: Optimize memory usage */
        g_assert (table_size < 65000);
        encode_int16 (table_size, p, &p);
        g_assert (table->len < 65000);
        for (i = 0; i < table->len; ++i) {
-               ClassNameTableEntry *entry = g_ptr_array_index (table, i);
+               ClassNameTableEntry *entry = (ClassNameTableEntry *)g_ptr_array_index (table, i);
 
                if (entry == NULL) {
                        encode_int16 (0, p, &p);
@@ -8274,22 +8683,13 @@ emit_class_name_table (MonoAotCompile *acfg)
        }
        g_assert (p - buf <= buf_size);
 
-       if (acfg->llvm) {
-               mono_llvm_emit_aot_data ("class_name_table", buf, p - buf);
-       } else {
-               sprintf (symbol, "class_name_table");
-               emit_section_change (acfg, RODATA_SECT, 0);
-               emit_alignment (acfg, 8);
-               emit_label (acfg, symbol);
-               emit_bytes (acfg, buf, p - buf);
-       }
+       emit_aot_data (acfg, MONO_AOT_TABLE_CLASS_NAME, "class_name_table", buf, p - buf);
 }
 
 static void
 emit_image_table (MonoAotCompile *acfg)
 {
        int i, buf_size;
-       char symbol [256];
        guint8 *buf, *p;
 
        /*
@@ -8304,7 +8704,7 @@ emit_image_table (MonoAotCompile *acfg)
                buf_size += strlen (image->assembly_name) + strlen (image->guid) + (aname->culture ? strlen (aname->culture) : 1) + strlen ((char*)aname->public_key_token) + 4;
        }
 
-       buf = p = g_malloc0 (buf_size);
+       buf = p = (guint8 *)g_malloc0 (buf_size);
        encode_int (acfg->image_table->len, p, &p);
        for (i = 0; i < acfg->image_table->len; i++) {
                MonoImage *image = (MonoImage*)g_ptr_array_index (acfg->image_table, i);
@@ -8329,15 +8729,7 @@ emit_image_table (MonoAotCompile *acfg)
        }
        g_assert (p - buf <= buf_size);
 
-       if (acfg->llvm) {
-               mono_llvm_emit_aot_data ("image_table", buf, p - buf);
-       } else {
-               sprintf (symbol, "image_table");
-               emit_section_change (acfg, RODATA_SECT, 1);
-               emit_alignment (acfg, 8);
-               emit_label (acfg, symbol);
-               emit_bytes (acfg, buf, p - buf);
-       }
+       emit_aot_data (acfg, MONO_AOT_TABLE_IMAGE_TABLE, "image_table", buf, p - buf);
 
        g_free (buf);
 }
@@ -8355,7 +8747,7 @@ emit_got_info (MonoAotCompile *acfg, gboolean llvm)
                acfg->plt_got_offset_base = acfg->got_offset;
                first_plt_got_patch = info->got_patches->len;
                for (i = 1; i < acfg->plt_offset; ++i) {
-                       MonoPltEntry *plt_entry = g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
+                       MonoPltEntry *plt_entry = (MonoPltEntry *)g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
 
                        g_ptr_array_add (info->got_patches, plt_entry->ji);
 
@@ -8378,16 +8770,16 @@ emit_got_info (MonoAotCompile *acfg, gboolean llvm)
 
        /* Encode info required to decode shared GOT entries */
        buf_size = info->got_patches->len * 128;
-       p = buf = mono_mempool_alloc (acfg->mempool, buf_size);
-       got_info_offsets = mono_mempool_alloc (acfg->mempool, info->got_patches->len * sizeof (guint32));
+       p = buf = (guint8 *)mono_mempool_alloc (acfg->mempool, buf_size);
+       got_info_offsets = (guint32 *)mono_mempool_alloc (acfg->mempool, info->got_patches->len * sizeof (guint32));
        if (!llvm) {
-               acfg->plt_got_info_offsets = mono_mempool_alloc (acfg->mempool, acfg->plt_offset * sizeof (guint32));
+               acfg->plt_got_info_offsets = (guint32 *)mono_mempool_alloc (acfg->mempool, acfg->plt_offset * sizeof (guint32));
                /* Unused */
                if (acfg->plt_offset)
                        acfg->plt_got_info_offsets [0] = 0;
        }
        for (i = 0; i < info->got_patches->len; ++i) {
-               MonoJumpInfo *ji = g_ptr_array_index (info->got_patches, i);
+               MonoJumpInfo *ji = (MonoJumpInfo *)g_ptr_array_index (info->got_patches, i);
                guint8 *p2;
 
                p = buf;
@@ -8407,7 +8799,7 @@ emit_got_info (MonoAotCompile *acfg, gboolean llvm)
        /* Emit got_info_offsets table */
 
        /* No need to emit offsets for the got plt entries, the plt embeds them directly */
-       acfg->stats.offsets_size += emit_offset_table (acfg, llvm ? "llvm_got_info_offsets" : "got_info_offsets", llvm ? acfg->llvm_got_offset : first_plt_got_patch, 10, (gint32*)got_info_offsets);
+       acfg->stats.offsets_size += emit_offset_table (acfg, llvm ? "llvm_got_info_offsets" : "got_info_offsets", llvm ? MONO_AOT_TABLE_LLVM_GOT_INFO_OFFSETS : MONO_AOT_TABLE_GOT_INFO_OFFSETS, llvm ? acfg->llvm_got_offset : first_plt_got_patch, 10, (gint32*)got_info_offsets);
 }
 
 static void
@@ -8459,6 +8851,10 @@ emit_globals (MonoAotCompile *acfg)
 
        if (!acfg->aot_opts.static_link)
                return;
+       if (acfg->aot_opts.llvm_only) {
+               g_assert (acfg->globals->len == 0);
+               return;
+       }
 
        /* 
         * When static linking, we emit a table containing our globals.
@@ -8473,7 +8869,7 @@ emit_globals (MonoAotCompile *acfg)
        for (i = 0; i < table_size; ++i)
                g_ptr_array_add (table, NULL);
        for (i = 0; i < acfg->globals->len; ++i) {
-               char *name = g_ptr_array_index (acfg->globals, i);
+               char *name = (char *)g_ptr_array_index (acfg->globals, i);
 
                hash = mono_metadata_str_hash (name) % table_size;
 
@@ -8481,7 +8877,7 @@ emit_globals (MonoAotCompile *acfg)
                new_entry = g_new0 (GlobalsTableEntry, 1);
                new_entry->value = i;
 
-               entry = g_ptr_array_index (table, hash);
+               entry = (GlobalsTableEntry *)g_ptr_array_index (table, hash);
                if (entry == NULL) {
                        new_entry->index = hash;
                        g_ptr_array_index (table, hash) = new_entry;
@@ -8505,7 +8901,7 @@ emit_globals (MonoAotCompile *acfg)
        g_assert (table_size < 65000);
        emit_int16 (acfg, table_size);
        for (i = 0; i < table->len; ++i) {
-               GlobalsTableEntry *entry = g_ptr_array_index (table, i);
+               GlobalsTableEntry *entry = (GlobalsTableEntry *)g_ptr_array_index (table, i);
 
                if (entry == NULL) {
                        emit_int16 (acfg, 0);
@@ -8521,7 +8917,7 @@ emit_globals (MonoAotCompile *acfg)
 
        /* Emit the names */
        for (i = 0; i < acfg->globals->len; ++i) {
-               char *name = g_ptr_array_index (acfg->globals, i);
+               char *name = (char *)g_ptr_array_index (acfg->globals, i);
 
                sprintf (symbol, "name_%d", i);
                emit_section_change (acfg, RODATA_SECT, 1);
@@ -8543,7 +8939,7 @@ emit_globals (MonoAotCompile *acfg)
        emit_pointer (acfg, symbol);
 
        for (i = 0; i < acfg->globals->len; ++i) {
-               char *name = g_ptr_array_index (acfg->globals, i);
+               char *name = (char *)g_ptr_array_index (acfg->globals, i);
 
                sprintf (symbol, "name_%d", i);
                emit_pointer (acfg, symbol);
@@ -8572,7 +8968,7 @@ emit_mem_end (MonoAotCompile *acfg)
 }
 
 static void
-init_aot_file_info (MonoAotCompile *acfg, MonoAotFileInfo *info, int gc_name_offset)
+init_aot_file_info (MonoAotCompile *acfg, MonoAotFileInfo *info)
 {
        int i;
 
@@ -8584,7 +8980,10 @@ init_aot_file_info (MonoAotCompile *acfg, MonoAotFileInfo *info, int gc_name_off
        info->flags = acfg->flags;
        info->opts = acfg->opts;
        info->simd_opts = acfg->simd_opts;
-       info->gc_name_index = gc_name_offset;
+       info->gc_name_index = acfg->gc_name_offset;
+       info->datafile_size = acfg->datafile_offset;
+       for (i = 0; i < MONO_AOT_TABLE_NUM; ++i)
+               info->table_offsets [i] = acfg->table_offsets [i];
        for (i = 0; i < MONO_AOT_TRAMP_NUM; ++i)
                info->num_trampolines [i] = acfg->num_trampolines [i];
        for (i = 0; i < MONO_AOT_TRAMP_NUM; ++i)
@@ -8597,6 +8996,7 @@ init_aot_file_info (MonoAotCompile *acfg, MonoAotFileInfo *info, int gc_name_off
        info->long_align = MONO_ABI_ALIGNOF (gint64);
        info->generic_tramp_num = MONO_TRAMPOLINE_NUM;
        info->tramp_page_size = acfg->tramp_page_size;
+       info->nshared_got_entries = acfg->nshared_got_entries;
        for (i = 0; i < MONO_AOT_TRAMP_NUM; ++i)
                info->tramp_page_code_offsets [i] = acfg->tramp_page_code_offsets [i];
 }
@@ -8631,20 +9031,25 @@ emit_aot_file_info (MonoAotCompile *acfg, MonoAotFileInfo *info)
                symbols [sindex ++] = NULL;
                symbols [sindex ++] = NULL;
        }
-       symbols [sindex ++] = "blob";
-       symbols [sindex ++] = "class_name_table";
-       symbols [sindex ++] = "class_info_offsets";
-       symbols [sindex ++] = "method_info_offsets";
-       symbols [sindex ++] = "ex_info_offsets";
-       symbols [sindex ++] = "extra_method_info_offsets";
-       symbols [sindex ++] = "extra_method_table";
-       symbols [sindex ++] = "got_info_offsets";
-       if (acfg->llvm)
-               symbols [sindex ++] = "llvm_got_info_offsets";
-       else
-               symbols [sindex ++] = NULL;
+       if (acfg->data_outfile) {
+               for (i = 0; i < MONO_AOT_TABLE_NUM; ++i)
+                       symbols [sindex ++] = NULL;
+       } else {
+               symbols [sindex ++] = "blob";
+               symbols [sindex ++] = "class_name_table";
+               symbols [sindex ++] = "class_info_offsets";
+               symbols [sindex ++] = "method_info_offsets";
+               symbols [sindex ++] = "ex_info_offsets";
+               symbols [sindex ++] = "extra_method_info_offsets";
+               symbols [sindex ++] = "extra_method_table";
+               symbols [sindex ++] = "got_info_offsets";
+               if (acfg->llvm)
+                       symbols [sindex ++] = "llvm_got_info_offsets";
+               else
+                       symbols [sindex ++] = NULL;
+               symbols [sindex ++] = "image_table";
+       }
        symbols [sindex ++] = "mem_end";
-       symbols [sindex ++] = "image_table";
        symbols [sindex ++] = "assembly_guid";
        symbols [sindex ++] = "runtime_version";
        if (acfg->num_trampoline_got_entries) {
@@ -8712,7 +9117,11 @@ emit_aot_file_info (MonoAotCompile *acfg, MonoAotFileInfo *info)
        emit_int32 (acfg, info->long_align);
        emit_int32 (acfg, info->generic_tramp_num);
        emit_int32 (acfg, info->tramp_page_size);
+       emit_int32 (acfg, info->nshared_got_entries);
+       emit_int32 (acfg, info->datafile_size);
 
+       for (i = 0; i < MONO_AOT_TABLE_NUM; ++i)
+               emit_int32 (acfg, info->table_offsets [i]);
        for (i = 0; i < MONO_AOT_TRAMP_NUM; ++i)
                emit_int32 (acfg, info->num_trampolines [i]);
        for (i = 0; i < MONO_AOT_TRAMP_NUM; ++i)
@@ -8723,25 +9132,9 @@ emit_aot_file_info (MonoAotCompile *acfg, MonoAotFileInfo *info)
                emit_int32 (acfg, info->tramp_page_code_offsets [i]);
 
        if (acfg->aot_opts.static_link) {
-               char *p;
-
-               /* 
-                * Emit a global symbol which can be passed by an embedding app to
-                * mono_aot_register_module (). The symbol points to a pointer to the the file info
-                * structure.
-                */
-               sprintf (symbol, "%smono_aot_module_%s_info", acfg->user_symbol_prefix, acfg->image->assembly->aname.name);
-
-               /* Get rid of characters which cannot occur in symbols */
-               p = symbol;
-               for (p = symbol; *p; ++p) {
-                       if (!(isalnum (*p) || *p == '_'))
-                               *p = '_';
-               }
-               acfg->static_linking_symbol = g_strdup (symbol);
-               emit_global_inner (acfg, symbol, FALSE);
+               emit_global_inner (acfg, acfg->static_linking_symbol, FALSE);
                emit_alignment (acfg, sizeof (gpointer));
-               emit_label (acfg, symbol);
+               emit_label (acfg, acfg->static_linking_symbol);
                emit_pointer_2 (acfg, acfg->user_symbol_prefix, "mono_aot_file_info");
        }
 }
@@ -8752,8 +9145,6 @@ emit_aot_file_info (MonoAotCompile *acfg, MonoAotFileInfo *info)
 static void
 emit_file_info (MonoAotCompile *acfg)
 {
-       int gc_name_offset;
-       const char *gc_name;
        char *build_info;
        MonoAotFileInfo *info;
 
@@ -8770,15 +9161,28 @@ emit_file_info (MonoAotCompile *acfg)
        /* Emit a string holding the assembly name */
        emit_string_symbol (acfg, "assembly_name", acfg->image->assembly->aname.name);
 
-       /*
-        * The managed allocators are GC specific, so can't use an AOT image created by one GC
-        * in another.
-        */
-       gc_name = mono_gc_get_gc_name ();
-       gc_name_offset = add_to_blob (acfg, (guint8*)gc_name, strlen (gc_name) + 1);
-
        info = g_new0 (MonoAotFileInfo, 1);
-       init_aot_file_info (acfg, info, gc_name_offset);
+       init_aot_file_info (acfg, info);
+
+       if (acfg->aot_opts.static_link) {
+               char symbol [256];
+               char *p;
+
+               /*
+                * Emit a global symbol which can be passed by an embedding app to
+                * mono_aot_register_module (). The symbol points to a pointer to the the file info
+                * structure.
+                */
+               sprintf (symbol, "%smono_aot_module_%s_info", acfg->user_symbol_prefix, acfg->image->assembly->aname.name);
+
+               /* Get rid of characters which cannot occur in symbols */
+               p = symbol;
+               for (p = symbol; *p; ++p) {
+                       if (!(isalnum (*p) || *p == '_'))
+                               *p = '_';
+               }
+               acfg->static_linking_symbol = g_strdup (symbol);
+       }
 
        if (acfg->llvm)
                mono_llvm_emit_aot_file_info (info, acfg->has_jitted_code);
@@ -8789,19 +9193,9 @@ emit_file_info (MonoAotCompile *acfg)
 static void
 emit_blob (MonoAotCompile *acfg)
 {
-       char symbol [128];
-
-       if (acfg->llvm) {
-               mono_llvm_emit_aot_data ("blob", (guint8*)acfg->blob.data, acfg->blob.index);
-               return;
-       }
+       acfg->blob_closed = TRUE;
 
-       sprintf (symbol, "blob");
-       emit_section_change (acfg, RODATA_SECT, 1);
-       emit_alignment (acfg, 8);
-       emit_label (acfg, symbol);
-
-       emit_bytes (acfg, (guint8*)acfg->blob.data, acfg->blob.index);
+       emit_aot_data (acfg, MONO_AOT_TABLE_BLOB, "blob", (guint8*)acfg->blob.data, acfg->blob.index);
 }
 
 static void
@@ -8867,7 +9261,7 @@ emit_dwarf_info (MonoAotCompile *acfg)
 
                sprintf (symbol2, "%sme_%x", acfg->temp_prefix, i);
 
-               mono_dwarf_writer_emit_method (acfg->dwarf, cfg, cfg->method, cfg->asm_symbol, symbol2, cfg->asm_debug_symbol, cfg->jit_info->code_start, cfg->jit_info->code_size, cfg->args, cfg->locals, cfg->unwind_ops, mono_debug_find_method (cfg->jit_info->d.method, mono_domain_get ()));
+               mono_dwarf_writer_emit_method (acfg->dwarf, cfg, cfg->method, cfg->asm_symbol, symbol2, cfg->asm_debug_symbol, (guint8 *)cfg->jit_info->code_start, cfg->jit_info->code_size, cfg->args, cfg->locals, cfg->unwind_ops, mono_debug_find_method (cfg->jit_info->d.method, mono_domain_get ()));
        }
 #endif
 }
@@ -8980,7 +9374,7 @@ compile_methods (MonoAotCompile *acfg)
                methods = g_new0 (MonoMethod*, methods_len);
                //memcpy (methods, g_ptr_array_index (acfg->methods, 0), sizeof (MonoMethod*) * methods_len);
                for (i = 0; i < methods_len; ++i)
-                       methods [i] = g_ptr_array_index (acfg->methods, i);
+                       methods [i] = (MonoMethod *)g_ptr_array_index (acfg->methods, i);
                i = 0;
                while (i < methods_len) {
                        frag = g_ptr_array_new ();
@@ -8996,7 +9390,7 @@ compile_methods (MonoAotCompile *acfg)
                        user_data [1] = acfg;
                        user_data [2] = frag;
                        
-                       handle = mono_threads_create_thread ((gpointer)compile_thread_main, user_data, 0, 0, NULL);
+                       handle = mono_threads_create_thread ((LPTHREAD_START_ROUTINE)compile_thread_main, user_data, 0, 0, NULL);
                        g_ptr_array_add (threads, handle);
                }
                g_free (methods);
@@ -9011,7 +9405,7 @@ compile_methods (MonoAotCompile *acfg)
        /* Compile methods added by compile_method () or all methods if nthreads == 0 */
        for (i = methods_len; i < acfg->methods->len; ++i) {
                /* This can new methods to acfg->methods */
-               compile_method (acfg, g_ptr_array_index (acfg->methods, i));
+               compile_method (acfg, (MonoMethod *)g_ptr_array_index (acfg->methods, i));
        }
 }
 
@@ -9241,7 +9635,9 @@ acfg_create (MonoAssembly *ass, guint32 opts)
        acfg->klass_blob_hash = g_hash_table_new (NULL, NULL);
        acfg->method_blob_hash = g_hash_table_new (NULL, NULL);
        acfg->plt_entry_debug_sym_cache = g_hash_table_new (g_str_hash, g_str_equal);
-       mono_mutex_init_recursive (&acfg->mutex);
+       acfg->gsharedvt_in_signatures = g_hash_table_new ((GHashFunc)mono_signature_hash, (GEqualFunc)mono_metadata_signature_equal);
+       acfg->gsharedvt_out_signatures = g_hash_table_new ((GHashFunc)mono_signature_hash, (GEqualFunc)mono_metadata_signature_equal);
+       mono_os_mutex_init_recursive (&acfg->mutex);
 
        init_got_info (&acfg->got_info);
        init_got_info (&acfg->llvm_got_info);
@@ -9455,6 +9851,73 @@ static void aot_dump (MonoAotCompile *acfg)
        mono_json_writer_destroy (&writer);
 }
 
+static const char *preinited_jit_icalls[] = {
+       "mono_aot_init_llvm_method",
+       "mono_aot_init_gshared_method_this",
+       "mono_aot_init_gshared_method_rgctx",
+       "mono_llvm_throw_corlib_exception",
+       "mono_init_vtable_slot",
+       "mono_helper_ldstr_mscorlib"
+};
+
+static void
+add_preinit_got_slots (MonoAotCompile *acfg)
+{
+       MonoJumpInfo *ji;
+       int i;
+
+       /*
+        * Allocate the first few GOT entries to information which is needed frequently, or it is needed
+        * during method initialization etc.
+        */
+
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji->type = MONO_PATCH_INFO_IMAGE;
+       ji->data.image = acfg->image;
+       get_got_offset (acfg, FALSE, ji);
+       get_got_offset (acfg, TRUE, ji);
+
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji->type = MONO_PATCH_INFO_MSCORLIB_GOT_ADDR;
+       get_got_offset (acfg, FALSE, ji);
+       get_got_offset (acfg, TRUE, ji);
+
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji->type = MONO_PATCH_INFO_GC_CARD_TABLE_ADDR;
+       get_got_offset (acfg, FALSE, ji);
+       get_got_offset (acfg, TRUE, ji);
+
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji->type = MONO_PATCH_INFO_GC_NURSERY_START;
+       get_got_offset (acfg, FALSE, ji);
+       get_got_offset (acfg, TRUE, ji);
+
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji->type = MONO_PATCH_INFO_JIT_TLS_ID;
+       get_got_offset (acfg, FALSE, ji);
+       get_got_offset (acfg, TRUE, ji);
+
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji->type = MONO_PATCH_INFO_AOT_MODULE;
+       get_got_offset (acfg, FALSE, ji);
+       get_got_offset (acfg, TRUE, ji);
+
+       ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
+       ji->type = MONO_PATCH_INFO_GC_NURSERY_BITS;
+       get_got_offset (acfg, FALSE, ji);
+       get_got_offset (acfg, TRUE, ji);
+
+       for (i = 0; i < sizeof (preinited_jit_icalls) / sizeof (char*); ++i) {
+               ji = (MonoJumpInfo *)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoAotCompile));
+               ji->type = MONO_PATCH_INFO_INTERNAL_METHOD;
+               ji->data.name = preinited_jit_icalls [i];
+               get_got_offset (acfg, FALSE, ji);
+               get_got_offset (acfg, TRUE, ji);
+       }
+
+       acfg->nshared_got_entries = acfg->got_offset;
+}
+
 int
 mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 {
@@ -9488,15 +9951,44 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                acfg->logfile = fopen (acfg->aot_opts.logfile, "a+");
        }
 
+       if (acfg->aot_opts.data_outfile) {
+               acfg->data_outfile = fopen (acfg->aot_opts.data_outfile, "w+");
+               if (!acfg->data_outfile) {
+                       aot_printerrf (acfg, "Unable to create file '%s': %s\n", acfg->aot_opts.data_outfile, strerror (errno));
+                       return 1;
+               }
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_SEPARATE_DATA);
+       }
+
        //acfg->aot_opts.print_skipped_methods = TRUE;
 
-#if !defined(MONO_ARCH_GSHAREDVT_SUPPORTED) || !defined(ENABLE_GSHAREDVT)
+#if !defined(ENABLE_GSHAREDVT)
        if (opts & MONO_OPT_GSHAREDVT) {
                aot_printerrf (acfg, "-O=gsharedvt not supported on this platform.\n");
                return 1;
        }
 #endif
 
+#if !defined(MONO_ARCH_GSHAREDVT_SUPPORTED)
+       if (!acfg->aot_opts.llvm_only && (opts & MONO_OPT_GSHAREDVT)) {
+               aot_printerrf (acfg, "-O=gsharedvt not supported on this platform.\n");
+               return 1;
+       }
+#endif
+
+       if (acfg->aot_opts.llvm_only) {
+#ifndef ENABLE_GSHAREDVT
+               aot_printerrf (acfg, "--aot=llvmonly requires a runtime compiled with --enable-gsharedvt.\n");
+               return 1;
+#else
+               acfg->opts |= MONO_OPT_GSHAREDVT;
+               opts |= MONO_OPT_GSHAREDVT;
+#endif
+       }
+
+       if (opts & MONO_OPT_GSHAREDVT)
+               mono_set_generic_sharing_vt_supported (TRUE);
+
        aot_printf (acfg, "Mono Ahead of Time compiler - compiling assembly %s\n", image->name);
 
 #ifndef MONO_ARCH_HAVE_FULL_AOT_TRAMPOLINES
@@ -9524,13 +10016,13 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                        aot_printerrf (acfg, "The soft-debug AOT option requires the --debug option.\n");
                        return 1;
                }
-               acfg->flags |= MONO_AOT_FILE_FLAG_DEBUG;
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_DEBUG);
        }
 
        if (mono_use_llvm || acfg->aot_opts.llvm) {
                acfg->llvm = TRUE;
                acfg->aot_opts.asm_writer = TRUE;
-               acfg->flags |= MONO_AOT_FILE_FLAG_WITH_LLVM;
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_WITH_LLVM);
 
                if (acfg->aot_opts.soft_debug) {
                        aot_printerrf (acfg, "The 'soft-debug' option is not supported when compiling with LLVM.\n");
@@ -9559,7 +10051,10 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        }
 
        if (mono_aot_mode_is_full (&acfg->aot_opts))
-               acfg->flags |= MONO_AOT_FILE_FLAG_FULL_AOT;
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_FULL_AOT);
+
+       if (mono_threads_is_coop_enabled ())
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_SAFEPOINTS);
 
        if (acfg->aot_opts.instances_logfile_path) {
                acfg->instances_logfile = fopen (acfg->aot_opts.instances_logfile_path, "w");
@@ -9586,9 +10081,9 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        arch_init (acfg);
 
        if (acfg->llvm && acfg->thumb_mixed)
-               acfg->flags |= MONO_AOT_FILE_FLAG_LLVM_THUMB;
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_LLVM_THUMB);
        if (acfg->aot_opts.llvm_only)
-               acfg->flags |= MONO_AOT_FILE_FLAG_LLVM_ONLY;
+               acfg->flags = (MonoAotFileFlags)(acfg->flags | MONO_AOT_FILE_FLAG_LLVM_ONLY);
 
        acfg->assembly_name_sym = g_strdup (acfg->image->assembly->aname.name);
        /* Get rid of characters which cannot occur in symbols */
@@ -9619,6 +10114,7 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 
        /* PLT offset 0 is reserved for the PLT trampoline */
        acfg->plt_offset = 1;
+       add_preinit_got_slots (acfg);
 
 #ifdef ENABLE_LLVM
        if (acfg->llvm) {
@@ -9627,68 +10123,6 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        }
 #endif
 
-       {
-               MonoJumpInfo *ji;
-
-               /* Slot 0 */
-               ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
-               ji->type = MONO_PATCH_INFO_IMAGE;
-               ji->data.image = acfg->image;
-               get_got_offset (acfg, FALSE, ji);
-               get_got_offset (acfg, TRUE, ji);
-
-               /* Slot 1 */
-               ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
-               ji->type = MONO_PATCH_INFO_MSCORLIB_GOT_ADDR;
-               get_got_offset (acfg, FALSE, ji);
-               get_got_offset (acfg, TRUE, ji);
-
-               /* Slot 2 */
-               ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
-               ji->type = MONO_PATCH_INFO_GC_CARD_TABLE_ADDR;
-               get_got_offset (acfg, FALSE, ji);
-               get_got_offset (acfg, TRUE, ji);
-
-               /* Slot 3 */
-               ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
-               ji->type = MONO_PATCH_INFO_GC_NURSERY_START;
-               get_got_offset (acfg, FALSE, ji);
-               get_got_offset (acfg, TRUE, ji);
-
-               /* Slot 4 */
-               ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
-               ji->type = MONO_PATCH_INFO_JIT_TLS_ID;
-               get_got_offset (acfg, FALSE, ji);
-               get_got_offset (acfg, TRUE, ji);
-
-               /* Slot 5 */
-               ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoJumpInfo));
-               ji->type = MONO_PATCH_INFO_AOT_MODULE;
-               get_got_offset (acfg, FALSE, ji);
-               get_got_offset (acfg, TRUE, ji);
-
-               /* Slot 6 */
-               ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoAotCompile));
-               ji->type = MONO_PATCH_INFO_INTERNAL_METHOD;
-               ji->data.name = "mono_aot_init_llvm_method";
-               get_got_offset (acfg, FALSE, ji);
-               get_got_offset (acfg, TRUE, ji);
-
-               /* Slot 7 */
-               ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoAotCompile));
-               ji->type = MONO_PATCH_INFO_INTERNAL_METHOD;
-               ji->data.name = "mono_aot_init_gshared_method_this";
-               get_got_offset (acfg, FALSE, ji);
-               get_got_offset (acfg, TRUE, ji);
-
-               /* Slot 8 */
-               ji = mono_mempool_alloc0 (acfg->mempool, sizeof (MonoAotCompile));
-               ji->type = MONO_PATCH_INFO_INTERNAL_METHOD;
-               ji->data.name = "mono_aot_init_gshared_method_rgctx";
-               get_got_offset (acfg, FALSE, ji);
-               get_got_offset (acfg, TRUE, ji);
-       }
-
        TV_GETTIME (atv);
 
        compile_methods (acfg);
@@ -9727,21 +10161,22 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        }
 #endif
 
-       if (acfg->aot_opts.asm_only) {
+       if (acfg->aot_opts.asm_only && !acfg->aot_opts.llvm_only) {
                if (acfg->aot_opts.outfile)
                        acfg->tmpfname = g_strdup_printf ("%s", acfg->aot_opts.outfile);
                else
                        acfg->tmpfname = g_strdup_printf ("%s.s", acfg->image->name);
-               acfg->fp = fopen (acfg->tmpfname, "w+");
+                       acfg->fp = fopen (acfg->tmpfname, "w+");
        } else {
                int i = g_file_open_tmp ("mono_aot_XXXXXX", &acfg->tmpfname, NULL);
                acfg->fp = fdopen (i, "w+");
        }
-       if (acfg->fp == 0) {
+       if (acfg->fp == 0 && !acfg->aot_opts.llvm_only) {
                aot_printerrf (acfg, "Unable to open file '%s': %s\n", acfg->tmpfname, strerror (errno));
                return 1;
        }
-       acfg->w = mono_img_writer_create (acfg->fp, FALSE);
+       if (acfg->fp)
+               acfg->w = mono_img_writer_create (acfg->fp, FALSE);
 
        tmp_outfile_name = NULL;
        outfile_name = NULL;
@@ -9779,7 +10214,8 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                acfg->dwarf = mono_dwarf_writer_create (acfg->w, NULL, 0, FALSE, !acfg->gas_line_numbers);
        }
 
-       mono_img_writer_emit_start (acfg->w);
+       if (acfg->w)
+               mono_img_writer_emit_start (acfg->w);
 
        if (acfg->dwarf)
                mono_dwarf_writer_emit_base_info (acfg->dwarf, g_path_get_basename (acfg->image->name), mono_unwind_get_cie_program ());
@@ -9810,7 +10246,14 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 
        emit_got (acfg);
 
-       emit_file_info (acfg);
+       {
+               /*
+                * The managed allocators are GC specific, so can't use an AOT image created by one GC
+                * in another.
+                */
+               const char *gc_name = mono_gc_get_gc_name ();
+               acfg->gc_name_offset = add_to_blob (acfg, (guint8*)gc_name, strlen (gc_name) + 1);
+       }
 
        emit_blob (acfg);
 
@@ -9818,6 +10261,8 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 
        emit_globals (acfg);
 
+       emit_file_info (acfg);
+
        if (acfg->dwarf) {
                emit_dwarf_info (acfg);
                mono_dwarf_writer_close (acfg->dwarf);
@@ -9831,6 +10276,9 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                fprintf (acfg->fp, "\n.section  .note.GNU-stack,\"\",@progbits\n");
        }
 
+       if (acfg->aot_opts.data_outfile)
+               fclose (acfg->data_outfile);
+
 #ifdef ENABLE_LLVM
        if (acfg->llvm) {
                gboolean res;
@@ -9877,15 +10325,17 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                aot_printf (acfg, "%d methods have other problems (%d%%)\n", acfg->stats.ocount, acfg->stats.mcount ? (acfg->stats.ocount * 100) / acfg->stats.mcount : 100);
 
        TV_GETTIME (atv);
-       res = mono_img_writer_emit_writeout (acfg->w);
-       if (res != 0) {
-               acfg_free (acfg);
-               return res;
-       }
-       res = compile_asm (acfg);
-       if (res != 0) {
-               acfg_free (acfg);
-               return res;
+       if (acfg->w) {
+               res = mono_img_writer_emit_writeout (acfg->w);
+               if (res != 0) {
+                       acfg_free (acfg);
+                       return res;
+               }
+               res = compile_asm (acfg);
+               if (res != 0) {
+                       acfg_free (acfg);
+                       return res;
+               }
        }
        TV_GETTIME (btv);
        acfg->stats.link_time = TV_ELAPSED (atv, btv);
@@ -9897,6 +10347,11 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                for (i = 0; i < MONO_PATCH_INFO_NONE; ++i)
                        if (acfg->stats.got_slot_types [i])
                                aot_printf (acfg, "\t%s: %d (%d)\n", get_patch_name (i), acfg->stats.got_slot_types [i], acfg->stats.got_slot_info_sizes [i]);
+               aot_printf (acfg, "\nMethod stats:\n");
+               aot_printf (acfg, "\tNormal:    %d\n", acfg->stats.method_categories [METHOD_CAT_NORMAL]);
+               aot_printf (acfg, "\tInstance:  %d\n", acfg->stats.method_categories [METHOD_CAT_INST]);
+               aot_printf (acfg, "\tGSharedvt: %d\n", acfg->stats.method_categories [METHOD_CAT_GSHAREDVT]);
+               aot_printf (acfg, "\tWrapper:   %d\n", acfg->stats.method_categories [METHOD_CAT_WRAPPER]);
        }
 
        aot_printf (acfg, "JIT time: %d ms, Generation time: %d ms, Assembly+Link time: %d ms.\n", acfg->stats.jit_time / 1000, acfg->stats.gen_time / 1000, acfg->stats.link_time / 1000);
@@ -9925,4 +10380,10 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        return 0;
 }
 
+gboolean
+mono_aot_is_shared_got_offset (int offset)
+{
+       return FALSE;
+}
+
 #endif
diff --git a/mono/mini/aot-compiler.h b/mono/mini/aot-compiler.h
new file mode 100644 (file)
index 0000000..999165f
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef __MONO_AOT_COMPILER_H__
+#define __MONO_AOT_COMPILER_H__
+
+#include "mini.h"
+
+int mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options);
+void* mono_aot_readonly_field_override (MonoClassField *field);
+gboolean mono_aot_is_shared_got_offset (int offset) MONO_LLVM_INTERNAL;
+
+guint32  mono_aot_get_got_offset            (MonoJumpInfo *ji) MONO_LLVM_INTERNAL;
+char*    mono_aot_get_method_name           (MonoCompile *cfg) MONO_LLVM_INTERNAL;
+char*    mono_aot_get_mangled_method_name   (MonoMethod *method) MONO_LLVM_INTERNAL;
+gboolean mono_aot_is_linkonce_method        (MonoMethod *method) MONO_LLVM_INTERNAL;
+gboolean mono_aot_is_direct_callable        (MonoJumpInfo *patch_info) MONO_LLVM_INTERNAL;
+void     mono_aot_mark_unused_llvm_plt_entry(MonoJumpInfo *patch_info) MONO_LLVM_INTERNAL;
+char*    mono_aot_get_plt_symbol            (MonoJumpInfoType type, gconstpointer data) MONO_LLVM_INTERNAL;
+char*    mono_aot_get_direct_call_symbol    (MonoJumpInfoType type, gconstpointer data);
+int      mono_aot_get_method_index          (MonoMethod *method) MONO_LLVM_INTERNAL;
+MonoJumpInfo* mono_aot_patch_info_dup       (MonoJumpInfo* ji) MONO_LLVM_INTERNAL;
+
+#endif
+
+
+
+
index 470a417a655b4a668b8a749bf8f5e18554acfdb9..2289ed25607b5b6256c70f6fc94d9d8a1b30b4fd 100644 (file)
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/metadata-internals.h>
 #include <mono/metadata/marshal.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/threads-types.h>
 #include <mono/metadata/mono-endian.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-mmap.h>
-#include "mono/utils/mono-compiler.h"
+#include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/mono-digest.h>
 
@@ -60,6 +60,7 @@
 #include "seq-points.h"
 #include "version.h"
 #include "debugger-agent.h"
+#include "aot-compiler.h"
 
 #ifndef DISABLE_AOT
 
@@ -68,7 +69,7 @@
 #endif
 
 /* Number of got entries shared between the JIT and LLVM GOT */
-#define N_COMMON_GOT_ENTRIES 9
+#define N_COMMON_GOT_ENTRIES 10
 
 #define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
 #define ALIGN_PTR_TO(ptr,align) (gpointer)((((gssize)(ptr)) + (align - 1)) & (~(align - 1)))
@@ -84,7 +85,7 @@ typedef struct MonoAotModule {
        /* Pointer to the Global Offset Table */
        gpointer *got;
        gpointer *llvm_got;
-       gpointer shared_got [N_COMMON_GOT_ENTRIES];
+       gpointer *shared_got;
        GHashTable *name_cache;
        GHashTable *extra_methods;
        /* Maps methods to their code */
@@ -119,6 +120,8 @@ typedef struct MonoAotModule {
        guint32 *method_info_offsets;
        guint32 *ex_info_offsets;
        guint32 *class_info_offsets;
+       guint32 *got_info_offsets;
+       guint32 *llvm_got_info_offsets;
        guint32 *methods_loaded;
        guint16 *class_name_table;
        guint32 *extra_method_table;
@@ -131,6 +134,8 @@ typedef struct MonoAotModule {
        /* Points to the mono EH data created by LLVM */
        guint8 *mono_eh_frame;
 
+       /* Points to the data tables if MONO_AOT_FILE_FLAG_SEPARATE_DATA is set */
+       gpointer tables [MONO_AOT_TABLE_NUM];
        /* Points to the trampolines */
        guint8 *trampolines [MONO_AOT_TRAMP_NUM];
        /* The first unused trampoline of each kind */
@@ -154,8 +159,8 @@ typedef struct {
 } TrampolinePage;
 
 static GHashTable *aot_modules;
-#define mono_aot_lock() mono_mutex_lock (&aot_mutex)
-#define mono_aot_unlock() mono_mutex_unlock (&aot_mutex)
+#define mono_aot_lock() mono_os_mutex_lock (&aot_mutex)
+#define mono_aot_unlock() mono_os_mutex_unlock (&aot_mutex)
 static mono_mutex_t aot_mutex;
 
 /* 
@@ -200,12 +205,17 @@ static GHashTable *aot_jit_icall_hash;
 #define USE_PAGE_TRAMPOLINES 0
 #endif
 
-#define mono_aot_page_lock() mono_mutex_lock (&aot_page_mutex)
-#define mono_aot_page_unlock() mono_mutex_unlock (&aot_page_mutex)
+#define mono_aot_page_lock() mono_os_mutex_lock (&aot_page_mutex)
+#define mono_aot_page_unlock() mono_os_mutex_unlock (&aot_page_mutex)
 static mono_mutex_t aot_page_mutex;
 
 static MonoAotModule *mscorlib_aot_module;
 
+/* Embedding API hooks to load the AOT data for AOT images compiled with MONO_AOT_FILE_FLAG_SEPARATE_DATA */
+static MonoLoadAotDataFunc aot_data_load_func;
+static MonoFreeAotDataFunc aot_data_free_func;
+static gpointer aot_data_func_user_data;
+
 static void
 init_plt (MonoAotModule *info);
 
@@ -213,18 +223,21 @@ static void
 compute_llvm_code_range (MonoAotModule *amodule, guint8 **code_start, guint8 **code_end);
 
 static gboolean
-init_method (MonoAotModule *amodule, guint32 method_index, MonoMethod *method, MonoClass *init_class, MonoGenericContext *context);
+init_llvm_method (MonoAotModule *amodule, guint32 method_index, MonoMethod *method, MonoClass *init_class, MonoGenericContext *context);
+
+static MonoJumpInfo*
+decode_patches (MonoAotModule *amodule, MonoMemPool *mp, int n_patches, gboolean llvm, guint32 *got_offsets);
 
 static inline void
 amodule_lock (MonoAotModule *amodule)
 {
-       mono_mutex_lock (&amodule->mutex);
+       mono_os_mutex_lock (&amodule->mutex);
 }
 
 static inline void
 amodule_unlock (MonoAotModule *amodule)
 {
-       mono_mutex_unlock (&amodule->mutex);
+       mono_os_mutex_unlock (&amodule->mutex);
 }
 
 /*
@@ -467,75 +480,72 @@ decode_klass_ref (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
                break;
        }
        case MONO_AOT_TYPEREF_VAR: {
-               MonoType *t;
+               MonoType *t = NULL;
                MonoGenericContainer *container = NULL;
-               int type = decode_value (p, &p);
-               int num = decode_value (p, &p);
-               gboolean has_container = decode_value (p, &p);
-               MonoType *gshared_constraint = NULL;
-               char *par_name = NULL;
-
-               if (has_container) {
-                       gboolean is_method = decode_value (p, &p);
-                       
-                       if (is_method) {
-                               MonoMethod *method_def;
-                               g_assert (type == MONO_TYPE_MVAR);
-                               method_def = decode_resolve_method_ref (module, p, &p);
-                               if (!method_def)
-                                       return NULL;
+               gboolean has_constraint = decode_value (p, &p);
 
-                               container = mono_method_get_generic_container (method_def);
-                       } else {
-                               MonoClass *class_def;
-                               g_assert (type == MONO_TYPE_VAR);
-                               class_def = decode_klass_ref (module, p, &p);
-                               if (!class_def)
-                                       return NULL;
+               if (has_constraint) {
+                       MonoClass *par_klass;
+                       MonoType *gshared_constraint;
 
-                               container = class_def->generic_container;
-                       }
+                       gshared_constraint = decode_type (module, p, &p);
+                       if (!gshared_constraint)
+                               return NULL;
+
+                       par_klass = decode_klass_ref (module, p, &p);
+                       if (!par_klass)
+                               return NULL;
+
+                       t = mini_get_shared_gparam (&par_klass->byval_arg, gshared_constraint);
+                       klass = mono_class_from_mono_type (t);
                } else {
-                       gboolean has_gshared_constraint = decode_value (p, &p);
-                       if (has_gshared_constraint) {
-                               int len;
+                       int type = decode_value (p, &p);
+                       int num = decode_value (p, &p);
+                       gboolean is_not_anonymous = decode_value (p, &p);
 
-                               gshared_constraint = decode_type (module, p, &p);
-                               if (!gshared_constraint)
-                                       return NULL;
+                       if (is_not_anonymous) {
+                               gboolean is_method = decode_value (p, &p);
+                       
+                               if (is_method) {
+                                       MonoMethod *method_def;
+                                       g_assert (type == MONO_TYPE_MVAR);
+                                       method_def = decode_resolve_method_ref (module, p, &p);
+                                       if (!method_def)
+                                               return NULL;
+
+                                       container = mono_method_get_generic_container (method_def);
+                               } else {
+                                       MonoClass *class_def;
+                                       g_assert (type == MONO_TYPE_VAR);
+                                       class_def = decode_klass_ref (module, p, &p);
+                                       if (!class_def)
+                                               return NULL;
 
-                               len = decode_value (p, &p);
-                               if (len) {
-                                       par_name = mono_image_alloc (module->assembly->image, len + 1);
-                                       memcpy (par_name, p, len);
-                                       p += len;
-                                       par_name [len] = '\0';
+                                       container = class_def->generic_container;
                                }
+                       } else {
+                               // We didn't decode is_method, so we have to infer it from type enum.
+                               container = get_anonymous_container_for_image (module->assembly->image, type == MONO_TYPE_MVAR);
                        }
-               }
-
-               t = g_new0 (MonoType, 1);
-               t->type = type;
-               if (container) {
-                       t->data.generic_param = mono_generic_container_get_param (container, num);
-                       g_assert (gshared_constraint == NULL);
-               } else {
-                       /* Anonymous */
-                       MonoGenericParam *par = (MonoGenericParam*)mono_image_alloc0 (module->assembly->image, sizeof (MonoGenericParamFull));
-                       par->num = num;
-                       par->gshared_constraint = gshared_constraint;
-                       // FIXME:
-                       par->image = mono_defaults.corlib;
-                       t->data.generic_param = par;
-                       if (par_name)
-                               ((MonoGenericParamFull*)par)->info.name = par_name;
-               }
 
-               // FIXME: Maybe use types directly to avoid
-               // the overhead of creating MonoClass-es
-               klass = mono_class_from_mono_type (t);
+                       t = g_new0 (MonoType, 1);
+                       t->type = (MonoTypeEnum)type;
+                       if (is_not_anonymous) {
+                               t->data.generic_param = mono_generic_container_get_param (container, num);
+                       } else {
+                               /* Anonymous */
+                               MonoGenericParam *par = (MonoGenericParam*)mono_image_alloc0 (module->assembly->image, sizeof (MonoGenericParamFull));
+                               par->owner = container;
+                               par->num = num;
+                               t->data.generic_param = par;
+                               ((MonoGenericParamFull*)par)->info.name = make_generic_name_string (module->assembly->image, num);
+                       }
+                       // FIXME: Maybe use types directly to avoid
+                       // the overhead of creating MonoClass-es
+                       klass = mono_class_from_mono_type (t);
 
-               g_free (t);
+                       g_free (t);
+               }
                break;
        }
        case MONO_AOT_TYPEREF_ARRAY:
@@ -598,7 +608,7 @@ decode_type (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
        guint8 *p = buf;
        MonoType *t;
 
-       t = g_malloc0 (sizeof (MonoType));
+       t = (MonoType *)g_malloc0 (sizeof (MonoType));
 
        while (TRUE) {
                if (*p == MONO_TYPE_PINNED) {
@@ -612,7 +622,7 @@ decode_type (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
                }
        }
 
-       t->type = *p;
+       t->type = (MonoTypeEnum)*p;
        ++p;
 
        switch (t->type) {
@@ -681,13 +691,13 @@ decode_type (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
                array->numsizes = decode_value (p, &p);
 
                if (array->numsizes)
-                       array->sizes = g_malloc0 (sizeof (int) * array->numsizes);
+                       array->sizes = (int *)g_malloc0 (sizeof (int) * array->numsizes);
                for (i = 0; i < array->numsizes; ++i)
                        array->sizes [i] = decode_value (p, &p);
 
                array->numlobounds = decode_value (p, &p);
                if (array->numlobounds)
-                       array->lobounds = g_malloc0 (sizeof (int) * array->numlobounds);
+                       array->lobounds = (int *)g_malloc0 (sizeof (int) * array->numlobounds);
                for (i = 0; i < array->numlobounds; ++i)
                        array->lobounds [i] = decode_value (p, &p);
                t->data.array = array;
@@ -717,7 +727,7 @@ decode_signature_with_target (MonoAotModule *module, MonoMethodSignature *target
 {
        MonoMethodSignature *sig;
        guint32 flags;
-       int i, param_count, call_conv;
+       int i, gen_param_count = 0, param_count, call_conv;
        guint8 *p = buf;
        gboolean hasthis, explicit_this, has_gen_params;
 
@@ -729,17 +739,17 @@ decode_signature_with_target (MonoAotModule *module, MonoMethodSignature *target
        call_conv = flags & 0x0F;
 
        if (has_gen_params)
-               /* gen_param_count = */ decode_value (p, &p);
+               gen_param_count = decode_value (p, &p);
        param_count = decode_value (p, &p);
        if (target && param_count != target->param_count)
                return NULL;
-       sig = g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + param_count * sizeof (MonoType *));
+       sig = (MonoMethodSignature *)g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + param_count * sizeof (MonoType *));
        sig->param_count = param_count;
        sig->sentinelpos = -1;
        sig->hasthis = hasthis;
        sig->explicit_this = explicit_this;
        sig->call_convention = call_conv;
-       sig->param_count = param_count;
+       sig->generic_param_count = gen_param_count;
        sig->ret = decode_type (module, p, &p);
        for (i = 0; i < param_count; ++i) {
                if (*p == MONO_TYPE_SENTINEL) {
@@ -824,6 +834,7 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
        }
 
        if (image_index == MONO_AOT_METHODREF_WRAPPER) {
+               WrapperInfo *info;
                guint32 wrapper_type;
 
                wrapper_type = decode_value (p, &p);
@@ -889,9 +900,10 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
                                g_error ("Error: No managed allocator, but we need one for AOT.\nAre you using non-standard GC options?\n");
                        break;
                }
-               case MONO_WRAPPER_WRITE_BARRIER:
+               case MONO_WRAPPER_WRITE_BARRIER: {
                        ref->method = mono_gc_get_write_barrier ();
                        break;
+               }
                case MONO_WRAPPER_STELEMREF: {
                        int subtype = decode_value (p, &p);
 
@@ -899,7 +911,6 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
                                ref->method = mono_marshal_get_stelemref ();
                        } else if (subtype == WRAPPER_SUBTYPE_VIRTUAL_STELEMREF) {
                                int kind;
-                               WrapperInfo *info;
                                
                                kind = decode_value (p, &p);
 
@@ -969,6 +980,16 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
                                ref->method = mono_marshal_get_gsharedvt_in_wrapper ();
                        } else if (subtype == WRAPPER_SUBTYPE_GSHAREDVT_OUT) {
                                ref->method = mono_marshal_get_gsharedvt_out_wrapper ();
+                       } else if (subtype == WRAPPER_SUBTYPE_GSHAREDVT_IN_SIG) {
+                               MonoMethodSignature *sig = decode_signature (module, p, &p);
+                               if (!sig)
+                                       return FALSE;
+                               ref->method = mini_get_gsharedvt_in_sig_wrapper (sig);
+                       } else if (subtype == WRAPPER_SUBTYPE_GSHAREDVT_OUT_SIG) {
+                               MonoMethodSignature *sig = decode_signature (module, p, &p);
+                               if (!sig)
+                                       return FALSE;
+                               ref->method = mini_get_gsharedvt_out_sig_wrapper (sig);
                        } else {
                                g_assert_not_reached ();
                        }
@@ -983,7 +1004,6 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
 
                                ref->method = mono_marshal_get_array_address (rank, elem_size);
                        } else if (subtype == WRAPPER_SUBTYPE_STRING_CTOR) {
-                               WrapperInfo *info;
                                MonoMethod *m;
 
                                m = decode_resolve_method_ref (module, p, &p);
@@ -1044,7 +1064,6 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
                }
                case MONO_WRAPPER_RUNTIME_INVOKE: {
                        int subtype = decode_value (p, &p);
-                       int pass_rgctx = decode_value (p, &p);
 
                        if (!target)
                                return FALSE;
@@ -1059,17 +1078,16 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
 
                                if (!m)
                                        return FALSE;
-                               ref->method = mono_marshal_get_runtime_invoke (m, FALSE, pass_rgctx);
+                               ref->method = mono_marshal_get_runtime_invoke (m, FALSE);
                        } else if (subtype == WRAPPER_SUBTYPE_RUNTIME_INVOKE_VIRTUAL) {
                                /* Virtual direct wrapper */
                                MonoMethod *m = decode_resolve_method_ref (module, p, &p);
 
                                if (!m)
                                        return FALSE;
-                               ref->method = mono_marshal_get_runtime_invoke (m, TRUE, pass_rgctx);
+                               ref->method = mono_marshal_get_runtime_invoke (m, TRUE);
                        } else {
                                MonoMethodSignature *sig;
-                               WrapperInfo *info;
 
                                sig = decode_signature_with_target (module, NULL, p, &p);
                                info = mono_marshal_get_wrapper_info (target);
@@ -1077,8 +1095,6 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
 
                                if (info->subtype != subtype)
                                        return FALSE;
-                               if (info->d.runtime_invoke.pass_rgctx != pass_rgctx)
-                                       return FALSE;
                                g_assert (info->d.runtime_invoke.sig);
                                if (mono_metadata_signature_equal (sig, info->d.runtime_invoke.sig))
                                        ref->method = target;
@@ -1118,9 +1134,17 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
                                        g_assert_not_reached ();
                                        break;
                                }
-                               if (target && wrapper != target)
-                                       return FALSE;
-                               ref->method = wrapper;
+                               if (target) {
+                                       /*
+                                        * Due to the way mini_get_shared_method () works, we could end up with
+                                        * multiple copies of the same wrapper.
+                                        */
+                                       if (wrapper->klass != target->klass)
+                                               return FALSE;
+                                       ref->method = target;
+                               } else {
+                                       ref->method = wrapper;
+                               }
                        } else {
                                /*
                                 * These wrappers are associated with a signature, not with a method.
@@ -1130,9 +1154,7 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
                                        return FALSE;
 
                                if (wrapper_type == MONO_WRAPPER_DELEGATE_INVOKE) {
-                                       WrapperInfo *info;
-
-                                       subtype = decode_value (p, &p);
+                                       subtype = (WrapperSubtype)decode_value (p, &p);
                                        info = mono_marshal_get_wrapper_info (target);
                                        if (info) {
                                                if (info->subtype != subtype)
@@ -1596,7 +1618,7 @@ find_symbol (MonoDl *module, gpointer *globals, const char *name, gpointer *valu
 #endif
 
                /* The first entry points to the hash */
-               table = globals [0];
+               table = (guint16 *)globals [0];
                globals ++;
 
                table_size = table [0];
@@ -1641,14 +1663,55 @@ find_symbol (MonoDl *module, gpointer *globals, const char *name, gpointer *valu
        }
 }
 
+static void
+find_amodule_symbol (MonoAotModule *amodule, const char *name, gpointer *value)
+{
+       g_assert (!(amodule->info.flags & MONO_AOT_FILE_FLAG_LLVM_ONLY));
+
+       find_symbol (amodule->sofile, amodule->globals, name, value);
+}
+
+void
+mono_install_load_aot_data_hook (MonoLoadAotDataFunc load_func, MonoFreeAotDataFunc free_func, gpointer user_data)
+{
+       aot_data_load_func = load_func;
+       aot_data_free_func = free_func;
+       aot_data_func_user_data = user_data;
+}
+
+/* Load the separate aot data file for ASSEMBLY */
+static guint8*
+open_aot_data (MonoAssembly *assembly, MonoAotFileInfo *info, void **ret_handle)
+{
+       MonoFileMap *map;
+       char *filename;
+       guint8 *data;
+
+       if (aot_data_load_func) {
+               data = aot_data_load_func (assembly, info->datafile_size, aot_data_func_user_data, ret_handle);
+               g_assert (data);
+               return data;
+       }
+
+       /*
+        * Use <assembly name>.aotdata as the default implementation if no callback is given
+        */
+       filename = g_strdup_printf ("%s.aotdata", assembly->image->name);
+       map = mono_file_map_open (filename);
+       g_assert (map);
+       data = mono_file_map (info->datafile_size, MONO_MMAP_READ, mono_file_map_fd (map), 0, ret_handle);
+       g_assert (data);
+
+       return data;
+}
+
 static gboolean
-check_usable (MonoAssembly *assembly, MonoAotFileInfo *info, char **out_msg)
+check_usable (MonoAssembly *assembly, MonoAotFileInfo *info, guint8 *blob, char **out_msg)
 {
        char *build_info;
        char *msg = NULL;
        gboolean usable = TRUE;
-       gboolean full_aot;
-       guint8 *blob;
+       gboolean full_aot, safepoints;
        guint32 excluded_cpu_optimizations;
 
        if (strcmp (assembly->image->guid, info->assembly_guid)) {
@@ -1657,7 +1720,7 @@ check_usable (MonoAssembly *assembly, MonoAotFileInfo *info, char **out_msg)
        }
 
        build_info = mono_get_runtime_build_info ();
-       if (strlen (info->runtime_version) > 0 && strcmp (info->runtime_version, build_info)) {
+       if (strlen ((const char *)info->runtime_version) > 0 && strcmp (info->runtime_version, build_info)) {
                msg = g_strdup_printf ("compiled against runtime version '%s' while this runtime has version '%s'", info->runtime_version, build_info);
                usable = FALSE;
        }
@@ -1704,8 +1767,6 @@ check_usable (MonoAssembly *assembly, MonoAotFileInfo *info, char **out_msg)
                usable = FALSE;
        }
 
-       blob = info->blob;
-
        if (info->gc_name_index != -1) {
                char *gc_name = (char*)&blob [info->gc_name_index];
                const char *current_gc_name = mono_gc_get_gc_name ();
@@ -1716,6 +1777,13 @@ check_usable (MonoAssembly *assembly, MonoAotFileInfo *info, char **out_msg)
                }
        }
 
+       safepoints = info->flags & MONO_AOT_FILE_FLAG_SAFEPOINTS;
+
+       if (!safepoints && mono_threads_is_coop_enabled ()) {
+               msg = g_strdup_printf ("not compiled with safepoints");
+               usable = FALSE;
+       }
+
        *out_msg = msg;
        return usable;
 }
@@ -1752,41 +1820,69 @@ get_call_table_entry (void *table, int index)
 #endif
 }
 
+/*
+ * init_amodule_got:
+ *
+ *   Initialize the shared got entries for AMODULE.
+ */
 static void
-init_gots (MonoAotModule *amodule)
+init_amodule_got (MonoAotModule *amodule)
 {
-       int i;
+       MonoJumpInfo *ji;
+       MonoMemPool *mp;
+       MonoJumpInfo *patches;
+       guint32 got_offsets [128];
+       int i, npatches;
+
+       /* These can't be initialized in load_aot_module () */
+       if (amodule->shared_got [0] || amodule->got_initializing)
+               return;
+
+       amodule->got_initializing = TRUE;
+
+       mp = mono_mempool_new ();
+       npatches = amodule->info.nshared_got_entries;
+       for (i = 0; i < npatches; ++i)
+               got_offsets [i] = i;
+       patches = decode_patches (amodule, mp, npatches, FALSE, got_offsets);
+       g_assert (patches);
+       for (i = 0; i < npatches; ++i) {
+               ji = &patches [i];
+
+               if (ji->type == MONO_PATCH_INFO_GC_CARD_TABLE_ADDR && !mono_gc_is_moving ()) {
+                       amodule->shared_got [i] = NULL;
+               } else if (ji->type == MONO_PATCH_INFO_GC_NURSERY_START && !mono_gc_is_moving ()) {
+                       amodule->shared_got [i] = NULL;
+               } else if (ji->type == MONO_PATCH_INFO_GC_NURSERY_BITS && !mono_gc_is_moving ()) {
+                       amodule->shared_got [i] = NULL;
+               } else if (ji->type == MONO_PATCH_INFO_IMAGE) {
+                       amodule->shared_got [i] = amodule->assembly->image;
+               } else if (ji->type == MONO_PATCH_INFO_MSCORLIB_GOT_ADDR) {
+                       if (mono_defaults.corlib) {
+                               MonoAotModule *mscorlib_amodule = (MonoAotModule *)mono_defaults.corlib->aot_module;
+
+                               if (mscorlib_amodule)
+                                       amodule->shared_got [i] = mscorlib_amodule->got;
+                       } else {
+                               amodule->shared_got [i] = amodule->got;
+                       }
+               } else if (ji->type == MONO_PATCH_INFO_AOT_MODULE) {
+                       amodule->shared_got [i] = amodule;
+               } else {
+                       amodule->shared_got [i] = mono_resolve_patch_target (NULL, mono_get_root_domain (), NULL, ji, FALSE);
+               }
+       }
 
        if (amodule->got) {
-               for (i = 0; i < N_COMMON_GOT_ENTRIES; ++i)
+               for (i = 0; i < npatches; ++i)
                        amodule->got [i] = amodule->shared_got [i];
        }
        if (amodule->llvm_got) {
-               for (i = 0; i < N_COMMON_GOT_ENTRIES; ++i)
+               for (i = 0; i < npatches; ++i)
                        amodule->llvm_got [i] = amodule->shared_got [i];
        }
-}
 
-static void
-init_amodule_got (MonoAotModule *amodule)
-{
-       MonoJumpInfo ji;
-
-       /* These can't be initialized in load_aot_module () */
-       if (!amodule->shared_got [6] && !amodule->got_initializing) {
-               amodule->got_initializing = TRUE;
-
-               memset (&ji, 0, sizeof (ji));
-               ji.type = MONO_PATCH_INFO_INTERNAL_METHOD;
-               ji.data.name = "mono_aot_init_llvm_method";
-               amodule->got_initializing = TRUE;
-               amodule->shared_got [6] = mono_resolve_patch_target (NULL, mono_get_root_domain (), NULL, &ji, FALSE);
-               ji.data.name = "mono_aot_init_gshared_method_this";
-               amodule->shared_got [7] = mono_resolve_patch_target (NULL, mono_get_root_domain (), NULL, &ji, FALSE);
-               ji.data.name = "mono_aot_init_gshared_method_rgctx";
-               amodule->shared_got [8] = mono_resolve_patch_target (NULL, mono_get_root_domain (), NULL, &ji, FALSE);
-               init_gots (amodule);
-       }
+       mono_mempool_destroy (mp);
 }
 
 static void
@@ -1801,9 +1897,9 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
        gpointer *globals = NULL;
        MonoAotFileInfo *info = NULL;
        int i, version;
-       guint8 *blob;
        gboolean do_load_image = TRUE;
        int align_double, align_int64;
+       guint8 *aot_data = NULL;
 
        if (mono_compile_aot)
                return;
@@ -1820,7 +1916,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 
        mono_aot_lock ();
        if (static_aot_modules)
-               info = g_hash_table_lookup (static_aot_modules, assembly->aname.name);
+               info = (MonoAotFileInfo *)g_hash_table_lookup (static_aot_modules, assembly->aname.name);
        else
                info = NULL;
        mono_aot_unlock ();
@@ -1831,7 +1927,10 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                /* Statically linked AOT module */
                aot_name = g_strdup_printf ("%s", assembly->aname.name);
                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "Found statically linked AOT module '%s'.\n", aot_name);
-               globals = info->globals;
+               if (!(info->flags & MONO_AOT_FILE_FLAG_LLVM_ONLY)) {
+                       globals = (void **)info->globals;
+                       g_assert (globals);
+               }
        } else {
                if (enable_aot_cache)
                        sofile = aot_cache_load_module (assembly, &aot_name);
@@ -1845,7 +1944,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT module '%s' not found: %s\n", aot_name, err);
                                g_free (err);
 
-                               aot_name = g_strdup_printf ("%s/mono/aot-cache/%s/%s%s", mono_assembly_getrootdir(), ARCHITECTURE, g_path_get_basename (assembly->image->name), MONO_SOLIB_EXT);
+                               aot_name = g_strdup_printf ("%s/mono/aot-cache/%s/%s%s", mono_assembly_getrootdir(), MONO_ARCHITECTURE, g_path_get_basename (assembly->image->name), MONO_SOLIB_EXT);
                                sofile = mono_dl_open (aot_name, MONO_DL_LAZY, &err);
                                if (!sofile) {
                                        mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT module '%s' not found: %s\n", aot_name, err);
@@ -1854,13 +1953,12 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 
                        }
                }
-       }
-
-       if (!sofile && !globals) {
-               if (mono_aot_only && assembly->image->tables [MONO_TABLE_METHOD].rows)
-                       g_error ("Failed to load AOT module '%s' in aot-only mode.\n", aot_name);
-               g_free (aot_name);
-               return;
+               if (!sofile) {
+                       if (mono_aot_only && assembly->image->tables [MONO_TABLE_METHOD].rows)
+                               g_error ("Failed to load AOT module '%s' in aot-only mode.\n", aot_name);
+                       g_free (aot_name);
+                       return;
+               }
        }
 
        if (!info) {
@@ -1880,7 +1978,18 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                msg = g_strdup_printf ("wrong file format version (expected %d got %d)", MONO_AOT_FILE_VERSION, version);
                usable = FALSE;
        } else {
-               usable = check_usable (assembly, info, &msg);
+               guint8 *blob;
+               void *handle;
+
+               if (info->flags & MONO_AOT_FILE_FLAG_SEPARATE_DATA) {
+                       aot_data = open_aot_data (assembly, info, &handle);
+
+                       blob = aot_data + info->table_offsets [MONO_AOT_TABLE_BLOB];
+               } else {
+                       blob = (guint8 *)info->blob;
+               }
+
+               usable = check_usable (assembly, info, blob, &msg);
        }
 
        if (!usable) {
@@ -1904,29 +2013,36 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
        g_assert (info->long_align == align_int64);
        g_assert (info->generic_tramp_num == MONO_TRAMPOLINE_NUM);
 
-       blob = info->blob;
-
        amodule = g_new0 (MonoAotModule, 1);
        amodule->aot_name = aot_name;
        amodule->assembly = assembly;
 
        memcpy (&amodule->info, info, sizeof (*info));
 
-       amodule->got = amodule->info.jit_got;
-       amodule->llvm_got = amodule->info.llvm_got;
+       amodule->got = (void **)amodule->info.jit_got;
+       amodule->llvm_got = (void **)amodule->info.llvm_got;
        amodule->globals = globals;
        amodule->sofile = sofile;
        amodule->method_to_code = g_hash_table_new (mono_aligned_addr_hash, NULL);
-       amodule->blob = blob;
+       amodule->extra_methods = g_hash_table_new (NULL, NULL);
+       amodule->shared_got = g_new0 (gpointer, info->nshared_got_entries);
 
-       mono_mutex_init_recursive (&amodule->mutex);
+       if (info->flags & MONO_AOT_FILE_FLAG_SEPARATE_DATA) {
+               for (i = 0; i < MONO_AOT_TABLE_NUM; ++i)
+                       amodule->tables [i] = aot_data + info->table_offsets [i];
+       }
+
+       mono_os_mutex_init_recursive (&amodule->mutex);
 
        /* Read image table */
        {
                guint32 table_len, i;
                char *table = NULL;
 
-               table = info->image_table;
+               if (info->flags & MONO_AOT_FILE_FLAG_SEPARATE_DATA)
+                       table = amodule->tables [MONO_AOT_TABLE_IMAGE_TABLE];
+               else
+                       table = (char *)info->image_table;
                g_assert (table);
 
                table_len = *(guint32*)table;
@@ -1948,7 +2064,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                        memcpy (aname->public_key_token, table, strlen (table) + 1);
                        table += strlen (table) + 1;                    
 
-                       table = ALIGN_PTR_TO (table, 8);
+                       table = (char *)ALIGN_PTR_TO (table, 8);
                        aname->flags = *(guint32*)table;
                        table += 4;
                        aname->major = *(guint32*)table;
@@ -1962,38 +2078,53 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                }
        }
 
-       amodule->jit_code_start = info->jit_code_start;
-       amodule->jit_code_end = info->jit_code_end;
-       amodule->method_info_offsets = info->method_info_offsets;
-       amodule->ex_info_offsets = info->ex_info_offsets;
-       amodule->class_info_offsets = info->class_info_offsets;
-       amodule->class_name_table = info->class_name_table;
-       amodule->extra_method_table = info->extra_method_table;
-       amodule->extra_method_info_offsets = info->extra_method_info_offsets;
-       amodule->unbox_trampolines = info->unbox_trampolines;
-       amodule->unbox_trampolines_end = info->unbox_trampolines_end;
-       amodule->unbox_trampoline_addresses = info->unbox_trampoline_addresses;
-       amodule->unwind_info = info->unwind_info;
+       amodule->jit_code_start = (guint8 *)info->jit_code_start;
+       amodule->jit_code_end = (guint8 *)info->jit_code_end;
+       if (info->flags & MONO_AOT_FILE_FLAG_SEPARATE_DATA) {
+               amodule->blob = amodule->tables [MONO_AOT_TABLE_BLOB];
+               amodule->method_info_offsets = amodule->tables [MONO_AOT_TABLE_METHOD_INFO_OFFSETS];
+               amodule->ex_info_offsets = amodule->tables [MONO_AOT_TABLE_EX_INFO_OFFSETS];
+               amodule->class_info_offsets = amodule->tables [MONO_AOT_TABLE_CLASS_INFO_OFFSETS];
+               amodule->class_name_table = amodule->tables [MONO_AOT_TABLE_CLASS_NAME];
+               amodule->extra_method_table = amodule->tables [MONO_AOT_TABLE_EXTRA_METHOD_TABLE];
+               amodule->extra_method_info_offsets = amodule->tables [MONO_AOT_TABLE_EXTRA_METHOD_INFO_OFFSETS];
+               amodule->got_info_offsets = amodule->tables [MONO_AOT_TABLE_GOT_INFO_OFFSETS];
+               amodule->llvm_got_info_offsets = amodule->tables [MONO_AOT_TABLE_LLVM_GOT_INFO_OFFSETS];
+       } else {
+               amodule->blob = info->blob;
+               amodule->method_info_offsets = (guint32 *)info->method_info_offsets;
+               amodule->ex_info_offsets = (guint32 *)info->ex_info_offsets;
+               amodule->class_info_offsets = (guint32 *)info->class_info_offsets;
+               amodule->class_name_table = (guint16 *)info->class_name_table;
+               amodule->extra_method_table = (guint32 *)info->extra_method_table;
+               amodule->extra_method_info_offsets = (guint32 *)info->extra_method_info_offsets;
+               amodule->got_info_offsets = info->got_info_offsets;
+               amodule->llvm_got_info_offsets = info->llvm_got_info_offsets;
+       }
+       amodule->unbox_trampolines = (guint32 *)info->unbox_trampolines;
+       amodule->unbox_trampolines_end = (guint32 *)info->unbox_trampolines_end;
+       amodule->unbox_trampoline_addresses = (guint32 *)info->unbox_trampoline_addresses;
+       amodule->unwind_info = (guint8 *)info->unwind_info;
        amodule->mem_begin = amodule->jit_code_start;
-       amodule->mem_end = info->mem_end;
-       amodule->plt = info->plt;
-       amodule->plt_end = info->plt_end;
-       amodule->mono_eh_frame = info->mono_eh_frame;
-       amodule->trampolines [MONO_AOT_TRAMP_SPECIFIC] = info->specific_trampolines;
-       amodule->trampolines [MONO_AOT_TRAMP_STATIC_RGCTX] = info->static_rgctx_trampolines;
-       amodule->trampolines [MONO_AOT_TRAMP_IMT_THUNK] = info->imt_thunks;
-       amodule->trampolines [MONO_AOT_TRAMP_GSHAREDVT_ARG] = info->gsharedvt_arg_trampolines;
+       amodule->mem_end = (guint8 *)info->mem_end;
+       amodule->plt = (guint8 *)info->plt;
+       amodule->plt_end = (guint8 *)info->plt_end;
+       amodule->mono_eh_frame = (guint8 *)info->mono_eh_frame;
+       amodule->trampolines [MONO_AOT_TRAMP_SPECIFIC] = (guint8 *)info->specific_trampolines;
+       amodule->trampolines [MONO_AOT_TRAMP_STATIC_RGCTX] = (guint8 *)info->static_rgctx_trampolines;
+       amodule->trampolines [MONO_AOT_TRAMP_IMT_THUNK] = (guint8 *)info->imt_thunks;
+       amodule->trampolines [MONO_AOT_TRAMP_GSHAREDVT_ARG] = (guint8 *)info->gsharedvt_arg_trampolines;
 
        if (!strcmp (assembly->aname.name, "mscorlib"))
                mscorlib_aot_module = amodule;
 
        /* Compute method addresses */
-       amodule->methods = g_malloc0 (amodule->info.nmethods * sizeof (gpointer));
+       amodule->methods = (void **)g_malloc0 (amodule->info.nmethods * sizeof (gpointer));
        for (i = 0; i < amodule->info.nmethods; ++i) {
                void *addr = NULL;
 
                if (amodule->info.llvm_get_method) {
-                       gpointer (*get_method) (int) = amodule->info.llvm_get_method;
+                       gpointer (*get_method) (int) = (gpointer (*)(int))amodule->info.llvm_get_method;
 
                        addr = get_method (i);
                }
@@ -2056,40 +2187,13 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 
        assembly->image->aot_module = amodule;
 
-       amodule->shared_got [0] = assembly->image;
-
-       if (mono_aot_only) {
+       if (mono_aot_only && !mono_llvm_only) {
                char *code;
-               find_symbol (amodule->sofile, amodule->globals, "specific_trampolines_page", (gpointer *)&code);
+               find_amodule_symbol (amodule, "specific_trampolines_page", (gpointer *)&code);
                amodule->use_page_trampolines = code != NULL;
                /*g_warning ("using page trampolines: %d", amodule->use_page_trampolines);*/
-               if (mono_defaults.corlib) {
-                       /* The second got slot contains the mscorlib got addr */
-                       MonoAotModule *mscorlib_amodule = mono_defaults.corlib->aot_module;
-
-                       amodule->shared_got [1] = mscorlib_amodule->got;
-               } else {
-                       amodule->shared_got [1] = amodule->got;
-               }
-       }
-
-       if (mono_gc_is_moving ()) {
-               MonoJumpInfo ji;
-
-               memset (&ji, 0, sizeof (ji));
-               ji.type = MONO_PATCH_INFO_GC_CARD_TABLE_ADDR;
-               amodule->shared_got [2] = mono_resolve_patch_target (NULL, mono_get_root_domain (), NULL, &ji, FALSE);
-
-               memset (&ji, 0, sizeof (ji));
-               ji.type = MONO_PATCH_INFO_GC_NURSERY_START;
-               amodule->shared_got [3] = mono_resolve_patch_target (NULL, mono_get_root_domain (), NULL, &ji, FALSE);
        }
 
-       amodule->shared_got [5] = amodule;
-       /* Can't initialize the other shared got slots yet, they are initialized in init_amodule_got () */
-
-       init_gots (amodule);
-
        /*
         * Register the plt region as a single trampoline so we can unwind from this code
         */
@@ -2135,18 +2239,6 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT: loaded AOT Module for %s.\n", assembly->image->name);
 }
 
-/*
- * mono_aot_register_globals:
- *
- *   This is called by the ctor function in AOT images compiled with the
- * 'no-dlsym' option.
- */
-void
-mono_aot_register_globals (gpointer *globals)
-{
-       g_assert_not_reached ();
-}
-
 /*
  * mono_aot_register_module:
  *
@@ -2159,14 +2251,16 @@ mono_aot_register_module (gpointer *aot_info)
 {
        gpointer *globals;
        char *aname;
-       MonoAotFileInfo *info = (gpointer)aot_info;
+       MonoAotFileInfo *info = (MonoAotFileInfo *)aot_info;
 
        g_assert (info->version == MONO_AOT_FILE_VERSION);
 
-       globals = info->globals;
-       g_assert (globals);
+       if (!(info->flags & MONO_AOT_FILE_FLAG_LLVM_ONLY)) {
+               globals = (void **)info->globals;
+               g_assert (globals);
+       }
 
-       aname = info->assembly_name;
+       aname = (char *)info->assembly_name;
 
        /* This could be called before startup */
        if (aot_modules)
@@ -2184,8 +2278,8 @@ mono_aot_register_module (gpointer *aot_info)
 void
 mono_aot_init (void)
 {
-       mono_mutex_init_recursive (&aot_mutex);
-       mono_mutex_init_recursive (&aot_page_mutex);
+       mono_os_mutex_init_recursive (&aot_mutex);
+       mono_os_mutex_init_recursive (&aot_page_mutex);
        aot_modules = g_hash_table_new (NULL, NULL);
 
 #ifndef __native_client__
@@ -2258,7 +2352,7 @@ mono_aot_get_method_from_vt_slot (MonoDomain *domain, MonoVTable *vtable, int sl
 {
        int i;
        MonoClass *klass = vtable->klass;
-       MonoAotModule *amodule = klass->image->aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)klass->image->aot_module;
        guint8 *info, *p;
        MonoCachedClassInfo class_info;
        gboolean err;
@@ -2293,7 +2387,7 @@ mono_aot_get_method_from_vt_slot (MonoDomain *domain, MonoVTable *vtable, int sl
 gboolean
 mono_aot_get_cached_class_info (MonoClass *klass, MonoCachedClassInfo *res)
 {
-       MonoAotModule *amodule = klass->image->aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)klass->image->aot_module;
        guint8 *p;
        gboolean err;
 
@@ -2322,7 +2416,7 @@ mono_aot_get_cached_class_info (MonoClass *klass, MonoCachedClassInfo *res)
 gboolean
 mono_aot_get_class_from_name (MonoImage *image, const char *name_space, const char *name, MonoClass **klass)
 {
-       MonoAotModule *amodule = image->aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)image->aot_module;
        guint16 *table, *entry;
        guint16 table_size;
        guint32 hash;
@@ -2343,9 +2437,9 @@ mono_aot_get_class_from_name (MonoImage *image, const char *name_space, const ch
        /* First look in the cache */
        if (!amodule->name_cache)
                amodule->name_cache = g_hash_table_new (g_str_hash, g_str_equal);
-       nspace_table = g_hash_table_lookup (amodule->name_cache, name_space);
+       nspace_table = (GHashTable *)g_hash_table_lookup (amodule->name_cache, name_space);
        if (nspace_table) {
-               *klass = g_hash_table_lookup (nspace_table, name);
+               *klass = (MonoClass *)g_hash_table_lookup (nspace_table, name);
                if (*klass) {
                        amodule_unlock (amodule);
                        return TRUE;
@@ -2396,7 +2490,7 @@ mono_aot_get_class_from_name (MonoImage *image, const char *name_space, const ch
                                /* Add to cache */
                                if (*klass) {
                                        amodule_lock (amodule);
-                                       nspace_table = g_hash_table_lookup (amodule->name_cache, name_space);
+                                       nspace_table = (GHashTable *)g_hash_table_lookup (amodule->name_cache, name_space);
                                        if (!nspace_table) {
                                                nspace_table = g_hash_table_new (g_str_hash, g_str_equal);
                                                g_hash_table_insert (amodule->name_cache, (char*)name_space2, nspace_table);
@@ -2429,10 +2523,10 @@ compute_llvm_code_range (MonoAotModule *amodule, guint8 **code_start, guint8 **c
        gint32 *table;
 
        if (amodule->info.llvm_get_method) {
-               gpointer (*get_method) (int) = amodule->info.llvm_get_method;
+               gpointer (*get_method) (int) = (gpointer (*)(int))amodule->info.llvm_get_method;
 
-               *code_start = get_method (-1);
-               *code_end = get_method (-2);
+               *code_start = (guint8 *)get_method (-1);
+               *code_end = (guint8 *)get_method (-2);
 
                g_assert (*code_end > *code_start);
                return;
@@ -2449,14 +2543,14 @@ compute_llvm_code_range (MonoAotModule *amodule, guint8 **code_start, guint8 **c
        g_assert (version == 3);
        p ++;
        p ++;
-       p = ALIGN_PTR_TO (p, 4);
+       p = (guint8 *)ALIGN_PTR_TO (p, 4);
 
        fde_count = *(guint32*)p;
        p += 4;
        table = (gint32*)p;
 
        if (fde_count > 0) {
-               *code_start = amodule->methods [table [0]];
+               *code_start = (guint8 *)amodule->methods [table [0]];
                *code_end = (guint8*)amodule->methods [table [(fde_count - 1) * 2]] + table [fde_count * 2];
        } else {
                *code_start = NULL;
@@ -2509,7 +2603,7 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
        MonoLLVMFDEInfo info;
 
        if (!amodule->mono_eh_frame) {
-               jinfo = mono_domain_alloc0_lock_free (domain, mono_jit_info_size (flags, num_clauses, 0));
+               jinfo = (MonoJitInfo *)mono_domain_alloc0_lock_free (domain, mono_jit_info_size (flags, num_clauses, 0));
                mono_jit_info_init (jinfo, method, code, code_len, flags, num_clauses, 0);
                memcpy (jinfo->clauses, clauses, num_clauses * sizeof (MonoJitExceptionInfo));
                return jinfo;
@@ -2527,7 +2621,7 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
        p ++;
        /* func_encoding = *p; */
        p ++;
-       p = ALIGN_PTR_TO (p, 4);
+       p = (guint8 *)ALIGN_PTR_TO (p, 4);
 
        fde_count = *(guint32*)p;
        p += 4;
@@ -2544,12 +2638,12 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
 
                /* The table contains method index/fde offset pairs */
                g_assert (table [(pos * 2)] != -1);
-               code1 = amodule->methods [table [(pos * 2)]];
+               code1 = (guint8 *)amodule->methods [table [(pos * 2)]];
                if (pos + 1 == fde_count) {
                        code2 = amodule->llvm_code_end;
                } else {
                        g_assert (table [(pos + 1) * 2] != -1);
-                       code2 = amodule->methods [table [(pos + 1) * 2]];
+                       code2 = (guint8 *)amodule->methods [table [(pos + 1) * 2]];
                }
 
                if (code < code1)
@@ -2560,13 +2654,13 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
                        break;
        }
 
-       code_start = amodule->methods [table [(pos * 2)]];
+       code_start = (guint8 *)amodule->methods [table [(pos * 2)]];
        if (pos + 1 == fde_count) {
                /* The +1 entry in the table contains the length of the last method */
                int len = table [(pos + 1) * 2];
                code_end = code_start + len;
        } else {
-               code_end = amodule->methods [table [(pos + 1) * 2]];
+               code_end = (guint8 *)amodule->methods [table [(pos + 1) * 2]];
        }
        if (!code_len)
                code_len = code_end - code_start;
@@ -2604,7 +2698,7 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
         * allocate a new JI.
         */
        jinfo = 
-               mono_domain_alloc0_lock_free (domain, mono_jit_info_size (flags, ei_len + nested_len, 0));
+               (MonoJitInfo *)mono_domain_alloc0_lock_free (domain, mono_jit_info_size (flags, ei_len + nested_len, 0));
        mono_jit_info_init (jinfo, method, code, code_len, flags, ei_len + nested_len, 0);
 
        jinfo->unwind_info = mono_cache_unwind_info (info.unw_info, info.unw_info_len);
@@ -2631,7 +2725,7 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
                jei->handler_start = ei [i].handler_start;
                jei->clause_index = clause_index;
 
-               if (is_thumb_code (amodule, jei->try_start)) {
+               if (is_thumb_code (amodule, (guint8 *)jei->try_start)) {
                        jei->try_start = (void*)((mgreg_t)jei->try_start & ~1);
                        jei->try_end = (void*)((mgreg_t)jei->try_end & ~1);
                        /* Make sure we transition to thumb when a handler starts */
@@ -2719,18 +2813,18 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
                unwind_info = decode_value (p, &p);
        }
        if (has_generic_jit_info)
-               flags |= JIT_INFO_HAS_GENERIC_JIT_INFO;
+               flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_GENERIC_JIT_INFO);
 
        if (has_try_block_holes) {
                num_holes = decode_value (p, &p);
-               flags |= JIT_INFO_HAS_TRY_BLOCK_HOLES;
+               flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_TRY_BLOCK_HOLES);
                try_holes_info_size = sizeof (MonoTryBlockHoleTableJitInfo) + num_holes * sizeof (MonoTryBlockHoleJitInfo);
        } else {
                num_holes = try_holes_info_size = 0;
        }
 
        if (has_arch_eh_jit_info) {
-               flags |= JIT_INFO_HAS_ARCH_EH_INFO;
+               flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_ARCH_EH_INFO);
                /* Overwrite the original code_len which includes alignment padding */
                code_len = decode_value (p, &p);
        }
@@ -2787,7 +2881,7 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
                g_free (nesting);
        } else {
                len = mono_jit_info_size (flags, num_clauses, num_holes);
-               jinfo = alloc0_jit_info_data (domain, len, async);
+               jinfo = (MonoJitInfo *)alloc0_jit_info_data (domain, len, async);
                mono_jit_info_init (jinfo, method, code, code_len, flags, num_clauses, num_holes);
 
                for (i = 0; i < jinfo->num_clauses; ++i) {
@@ -2872,7 +2966,7 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 
                gi->nlocs = decode_value (p, &p);
                if (gi->nlocs) {
-                       gi->locations = alloc0_jit_info_data (domain, gi->nlocs * sizeof (MonoDwarfLocListEntry), async);
+                       gi->locations = (MonoDwarfLocListEntry *)alloc0_jit_info_data (domain, gi->nlocs * sizeof (MonoDwarfLocListEntry), async);
                        for (i = 0; i < gi->nlocs; ++i) {
                                MonoDwarfLocListEntry *entry = &gi->locations [i];
 
@@ -2965,12 +3059,12 @@ mono_aot_get_unwind_info (MonoJitInfo *ji, guint32 *unwind_info_len)
 {
        MonoAotModule *amodule;
        guint8 *p;
-       guint8 *code = ji->code_start;
+       guint8 *code = (guint8 *)ji->code_start;
 
        if (ji->async)
-               amodule = ji->d.aot_info;
+               amodule = (MonoAotModule *)ji->d.aot_info;
        else
-               amodule = jinfo_get_method (ji)->klass->image->aot_module;
+               amodule = (MonoAotModule *)jinfo_get_method (ji)->klass->image->aot_module;
        g_assert (amodule);
        g_assert (ji->from_aot);
 
@@ -2978,7 +3072,7 @@ mono_aot_get_unwind_info (MonoJitInfo *ji, guint32 *unwind_info_len)
                /* ji belongs to a different aot module than amodule */
                mono_aot_lock ();
                g_assert (ji_to_amodule);
-               amodule = g_hash_table_lookup (ji_to_amodule, ji);
+               amodule = (MonoAotModule *)g_hash_table_lookup (ji_to_amodule, ji);
                g_assert (amodule);
                g_assert (amodule_contains_code_addr (amodule, code));
                mono_aot_unlock ();
@@ -3059,7 +3153,7 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
        int pos, left, right, code_len;
        int method_index, table_len;
        guint32 token;
-       MonoAotModule *amodule = image->aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)image->aot_module;
        MonoMethod *method = NULL;
        MonoJitInfo *jinfo;
        guint8 *code, *ex_info, *p;
@@ -3079,7 +3173,7 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
                /* FIXME: */
                return NULL;
 
-       if (!amodule_contains_code_addr (amodule, addr))
+       if (!amodule_contains_code_addr (amodule, (guint8 *)addr))
                return NULL;
 
        async = mono_thread_info_is_async_context ();
@@ -3115,20 +3209,20 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
        /* Binary search in the sorted_methods table */
        methods = amodule->sorted_methods;
        methods_len = amodule->sorted_methods_len;
-       code = addr;
+       code = (guint8 *)addr;
        left = 0;
        right = methods_len;
        while (TRUE) {
                pos = (left + right) / 2;
 
-               code1 = methods [pos];
+               code1 = (guint8 *)methods [pos];
                if (pos + 1 == methods_len) {
                        if (code1 >= amodule->jit_code_start && code1 < amodule->jit_code_end)
                                code2 = amodule->jit_code_end;
                        else
                                code2 = amodule->llvm_code_end;
                } else {
-                       code2 = methods [pos + 1];
+                       code2 = (guint8 *)methods [pos + 1];
                }
 
                if (code < code1)
@@ -3158,7 +3252,7 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
                }
        }
 
-       code = amodule->methods [method_index];
+       code = (guint8 *)amodule->methods [method_index];
        ex_info = &amodule->blob [mono_aot_get_offset (amodule->ex_info_offsets, method_index)];
 
        if (pos == methods_len - 1) {
@@ -3176,7 +3270,7 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
        if (!async) {
                if (amodule->extra_methods) {
                        amodule_lock (amodule);
-                       method = g_hash_table_lookup (amodule->extra_methods, GUINT_TO_POINTER (method_index));
+                       method = (MonoMethod *)g_hash_table_lookup (amodule->extra_methods, GUINT_TO_POINTER (method_index));
                        amodule_unlock (amodule);
                } else {
                        method = NULL;
@@ -3244,7 +3338,7 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
                                len = old_table[0].method_index;
                        else
                                len = 1;
-                       new_table = alloc0_jit_info_data (domain, (len + 1) * sizeof (JitInfoMap), async);
+                       new_table = (JitInfoMap *)alloc0_jit_info_data (domain, (len + 1) * sizeof (JitInfoMap), async);
                        if (old_table)
                                memcpy (new_table, old_table, len * sizeof (JitInfoMap));
                        new_table [0].method_index = len + 1;
@@ -3252,7 +3346,7 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
                        new_table [len].jinfo = jinfo;
                        /* Publish it */
                        mono_memory_barrier ();
-                       if (InterlockedCompareExchangePointer ((gpointer)&amodule->async_jit_info_table, new_table, old_table) == old_table)
+                       if (InterlockedCompareExchangePointer ((volatile gpointer *)&amodule->async_jit_info_table, new_table, old_table) == old_table)
                                break;
                }
        } else {
@@ -3325,7 +3419,7 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                        goto cleanup;
                break;
        case MONO_PATCH_INFO_DELEGATE_TRAMPOLINE:
-               ji->data.del_tramp = mono_mempool_alloc0 (mp, sizeof (MonoDelegateClassMethodPair));
+               ji->data.del_tramp = (MonoDelegateClassMethodPair *)mono_mempool_alloc0 (mp, sizeof (MonoDelegateClassMethodPair));
                ji->data.del_tramp->klass = decode_klass_ref (aot_module, p, &p);
                if (!ji->data.del_tramp->klass)
                        goto cleanup;
@@ -3349,9 +3443,9 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                        goto cleanup;
                break;
        case MONO_PATCH_INFO_SWITCH:
-               ji->data.table = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoBBTable));
+               ji->data.table = (MonoJumpInfoBBTable *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoBBTable));
                ji->data.table->table_size = decode_value (p, &p);
-               table = mono_domain_alloc (mono_domain_get (), sizeof (gpointer) * ji->data.table->table_size);
+               table = (void **)mono_domain_alloc (mono_domain_get (), sizeof (gpointer) * ji->data.table->table_size);
                ji->data.table->table = (MonoBasicBlock**)table;
                for (i = 0; i < ji->data.table->table_size; i++)
                        table [i] = (gpointer)(gssize)decode_value (p, &p);
@@ -3411,6 +3505,7 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
        case MONO_PATCH_INFO_INTERRUPTION_REQUEST_FLAG:
        case MONO_PATCH_INFO_GC_CARD_TABLE_ADDR:
        case MONO_PATCH_INFO_GC_NURSERY_START:
+       case MONO_PATCH_INFO_GC_NURSERY_BITS:
        case MONO_PATCH_INFO_JIT_TLS_ID:
                break;
        case MONO_PATCH_INFO_CASTCLASS_CACHE:
@@ -3426,13 +3521,13 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                offset = decode_value (p, &p);
                val = decode_value (p, &p);
 
-               entry = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoRgctxEntry));
+               entry = (MonoJumpInfoRgctxEntry *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoRgctxEntry));
                p2 = aot_module->blob + offset;
                entry->method = decode_resolve_method_ref (aot_module, p2, &p2);
                entry->in_mrgctx = ((val & 1) > 0) ? TRUE : FALSE;
-               entry->info_type = (val >> 1) & 0xff;
-               entry->data = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfo));
-               entry->data->type = (val >> 9) & 0xff;
+               entry->info_type = (MonoRgctxInfoType)((val >> 1) & 0xff);
+               entry->data = (MonoJumpInfo *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfo));
+               entry->data->type = (MonoJumpInfoType)((val >> 9) & 0xff);
                
                res = decode_patch (aot_module, mp, entry->data, p, &p);
                if (!res)
@@ -3442,16 +3537,8 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
        }
        case MONO_PATCH_INFO_SEQ_POINT_INFO:
        case MONO_PATCH_INFO_AOT_MODULE:
+       case MONO_PATCH_INFO_MSCORLIB_GOT_ADDR:
                break;
-       case MONO_PATCH_INFO_LLVM_IMT_TRAMPOLINE: {
-               MonoJumpInfoImtTramp *imt_tramp = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoImtTramp));
-
-               imt_tramp->method = decode_resolve_method_ref (aot_module, p, &p);
-               imt_tramp->vt_offset = decode_value (p, &p);
-               
-               ji->data.imt_tramp = imt_tramp;
-               break;
-       }
        case MONO_PATCH_INFO_SIGNATURE:
                ji->data.target = decode_signature (aot_module, p, &p);
                break;
@@ -3459,7 +3546,7 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                ji->data.target = GINT_TO_POINTER (decode_value (p, &p));
                break;
        case MONO_PATCH_INFO_GSHAREDVT_CALL: {
-               MonoJumpInfoGSharedVtCall *info = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoGSharedVtCall));
+               MonoJumpInfoGSharedVtCall *info = (MonoJumpInfoGSharedVtCall *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoGSharedVtCall));
                info->sig = decode_signature (aot_module, p, &p);
                g_assert (info->sig);
                info->method = decode_resolve_method_ref (aot_module, p, &p);
@@ -3469,29 +3556,29 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                break;
        }
        case MONO_PATCH_INFO_GSHAREDVT_METHOD: {
-               MonoGSharedVtMethodInfo *info = mono_mempool_alloc0 (mp, sizeof (MonoGSharedVtMethodInfo));
+               MonoGSharedVtMethodInfo *info = (MonoGSharedVtMethodInfo *)mono_mempool_alloc0 (mp, sizeof (MonoGSharedVtMethodInfo));
                int i;
                
                info->method = decode_resolve_method_ref (aot_module, p, &p);
                g_assert (info->method);
                info->num_entries = decode_value (p, &p);
                info->count_entries = info->num_entries;
-               info->entries = mono_mempool_alloc0 (mp, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->num_entries);
+               info->entries = (MonoRuntimeGenericContextInfoTemplate *)mono_mempool_alloc0 (mp, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->num_entries);
                for (i = 0; i < info->num_entries; ++i) {
-                       MonoRuntimeGenericContextInfoTemplate *template = &info->entries [i];
+                       MonoRuntimeGenericContextInfoTemplate *template_ = &info->entries [i];
 
-                       template->info_type = decode_value (p, &p);
-                       switch (mini_rgctx_info_type_to_patch_info_type (template->info_type)) {
+                       template_->info_type = (MonoRgctxInfoType)decode_value (p, &p);
+                       switch (mini_rgctx_info_type_to_patch_info_type (template_->info_type)) {
                        case MONO_PATCH_INFO_CLASS: {
                                MonoClass *klass = decode_klass_ref (aot_module, p, &p);
                                if (!klass)
                                        goto cleanup;
-                               template->data = &klass->byval_arg;
+                               template_->data = &klass->byval_arg;
                                break;
                        }
                        case MONO_PATCH_INFO_FIELD:
-                               template->data = decode_field_info (aot_module, p, &p);
-                               if (!template->data)
+                               template_->data = decode_field_info (aot_module, p, &p);
+                               if (!template_->data)
                                        goto cleanup;
                                break;
                        default:
@@ -3506,7 +3593,7 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                int len = decode_value (p, &p);
                char *s;
 
-               s = mono_mempool_alloc0 (mp, len + 1);
+               s = (char *)mono_mempool_alloc0 (mp, len + 1);
                memcpy (s, p, len + 1);
                p += len + 1;
 
@@ -3514,7 +3601,7 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                break;
        }
        case MONO_PATCH_INFO_VIRT_METHOD: {
-               MonoJumpInfoVirtMethod *info = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoVirtMethod));
+               MonoJumpInfoVirtMethod *info = (MonoJumpInfoVirtMethod *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoVirtMethod));
 
                info->klass = decode_klass_ref (aot_module, p, &p);
                g_assert (info->klass);
@@ -3542,63 +3629,75 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
        return FALSE;
 }
 
+/*
+ * decode_patches:
+ *
+ *    Decode a list of patches identified by the got offsets in GOT_OFFSETS. Return an array of
+ * MonoJumpInfo structures allocated from MP.
+ */
 static MonoJumpInfo*
-load_patch_info (MonoAotModule *aot_module, MonoMemPool *mp, int n_patches,
-                                gboolean llvm, guint32 **got_slots,
-                                guint8 *buf, guint8 **endbuf)
+decode_patches (MonoAotModule *amodule, MonoMemPool *mp, int n_patches, gboolean llvm, guint32 *got_offsets)
 {
        MonoJumpInfo *patches;
-       int pindex;
-       guint8 *p;
+       MonoJumpInfo *ji;
        gpointer *got;
-       guint32 *got_offsets;
-
-       p = buf;
+       guint32 *got_info_offsets;
+       int i;
+       gboolean res;
 
        if (llvm) {
-               got = aot_module->llvm_got;
-               got_offsets = aot_module->info.llvm_got_info_offsets;
+               got = amodule->llvm_got;
+               got_info_offsets = (guint32 *)amodule->llvm_got_info_offsets;
        } else {
-               got = aot_module->got;
-               got_offsets = aot_module->info.got_info_offsets;
+               got = amodule->got;
+               got_info_offsets = (guint32 *)amodule->got_info_offsets;
        }
 
-       patches = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfo) * n_patches);
-
-       *got_slots = g_malloc (sizeof (guint32) * n_patches);
-
-       for (pindex = 0; pindex < n_patches; ++pindex) {
-               MonoJumpInfo *ji = &patches [pindex];
-               guint8 *shared_p;
-               gboolean res;
-               guint32 got_offset;
-
-               got_offset = decode_value (p, &p);
+       patches = (MonoJumpInfo *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfo) * n_patches);
+       for (i = 0; i < n_patches; ++i) {
+               guint8 *p = amodule->blob + mono_aot_get_offset (got_info_offsets, got_offsets [i]);
 
-               shared_p = aot_module->blob + mono_aot_get_offset (got_offsets, got_offset);
-
-               ji->type = decode_value (shared_p, &shared_p);
+               ji = &patches [i];
+               ji->type = (MonoJumpInfoType)decode_value (p, &p);
 
                /* See load_method () for SFLDA */
-               if (got [got_offset] && ji->type != MONO_PATCH_INFO_SFLDA) {
+               if (got && got [got_offsets [i]] && ji->type != MONO_PATCH_INFO_SFLDA) {
                        /* Already loaded */
                } else {
-                       res = decode_patch (aot_module, mp, ji, shared_p, &shared_p);
+                       res = decode_patch (amodule, mp, ji, p, &p);
                        if (!res)
-                               goto cleanup;
+                               return NULL;
                }
-
-               (*got_slots) [pindex] = got_offset;
        }
 
-       *endbuf = p;
        return patches;
+}
 
- cleanup:
-       g_free (*got_slots);
-       *got_slots = NULL;
+static MonoJumpInfo*
+load_patch_info (MonoAotModule *amodule, MonoMemPool *mp, int n_patches,
+                                gboolean llvm, guint32 **got_slots,
+                                guint8 *buf, guint8 **endbuf)
+{
+       MonoJumpInfo *patches;
+       int pindex;
+       guint8 *p;
 
-       return NULL;
+       p = buf;
+
+       *got_slots = (guint32 *)g_malloc (sizeof (guint32) * n_patches);
+       for (pindex = 0; pindex < n_patches; ++pindex) {
+               (*got_slots)[pindex] = decode_value (p, &p);
+       }
+
+       patches = decode_patches (amodule, mp, n_patches, llvm, *got_slots);
+       if (!patches) {
+               g_free (*got_slots);
+               *got_slots = NULL;
+               return NULL;
+       }
+
+       *endbuf = p;
+       return patches;
 }
 
 static void
@@ -3616,7 +3715,7 @@ register_jump_target_got_slot (MonoDomain *domain, MonoMethod *method, gpointer
        mono_domain_lock (domain);
        if (!info->jump_target_got_slot_hash)
                info->jump_target_got_slot_hash = g_hash_table_new (NULL, NULL);
-       list = g_hash_table_lookup (info->jump_target_got_slot_hash, method);
+       list = (GSList *)g_hash_table_lookup (info->jump_target_got_slot_hash, method);
        list = g_slist_prepend (list, got_slot);
        g_hash_table_insert (info->jump_target_got_slot_hash, method, list);
        mono_domain_unlock (domain);
@@ -3656,8 +3755,8 @@ load_method (MonoDomain *domain, MonoAotModule *amodule, MonoImage *image, MonoM
                /*
                 * Obtain the method address by calling a generated function in the LLVM module.
                 */
-               gpointer (*get_method) (int) = amodule->info.llvm_get_method;
-               code = get_method (method_index);
+               gpointer (*get_method) (int) = (gpointer (*)(int))amodule->info.llvm_get_method;
+               code = (guint8 *)get_method (method_index);
        }
 
        if (!code) {
@@ -3674,7 +3773,7 @@ load_method (MonoDomain *domain, MonoAotModule *amodule, MonoImage *image, MonoM
                        }
                        return NULL;
                }
-               code = amodule->methods [method_index];
+               code = (guint8 *)amodule->methods [method_index];
        }
 
        info = &amodule->blob [mono_aot_get_offset (amodule->method_info_offsets, method_index)];
@@ -3711,7 +3810,7 @@ load_method (MonoDomain *domain, MonoAotModule *amodule, MonoImage *image, MonoM
        }
 
        if (!(is_llvm_code (amodule, code) && (amodule->info.flags & MONO_AOT_FILE_FLAG_LLVM_ONLY))) {
-               res = init_method (amodule, method_index, method, NULL, NULL);
+               res = init_llvm_method (amodule, method_index, method, NULL, NULL);
                if (!res)
                        goto cleanup;
        }
@@ -3801,7 +3900,7 @@ find_aot_method_in_amodule (MonoAotModule *amodule, MonoMethod *method, guint32
                amodule_lock (amodule);
                if (!amodule->method_ref_to_method)
                        amodule->method_ref_to_method = g_hash_table_new (NULL, NULL);
-               m = g_hash_table_lookup (amodule->method_ref_to_method, p);
+               m = (MonoMethod *)g_hash_table_lookup (amodule->method_ref_to_method, p);
                amodule_unlock (amodule);
                if (!m) {
                        m = decode_resolve_method_ref_with_target (amodule, method, p, &p);
@@ -3820,13 +3919,27 @@ find_aot_method_in_amodule (MonoAotModule *amodule, MonoMethod *method, guint32
                        break;
                }
 
-               /* Special case: wrappers of shared generic methods */
-               if (m && method->wrapper_type && m->wrapper_type == m->wrapper_type &&
+               /*
+                * Special case: wrappers of shared generic methods.
+                * This is needed because of the way mini_get_shared_method () works,
+                * we could end up with multiple copies of the same wrapper.
+                */
+               if (m && method->wrapper_type && method->wrapper_type == m->wrapper_type &&
                        method->wrapper_type == MONO_WRAPPER_SYNCHRONIZED) {
                        MonoMethod *w1 = mono_marshal_method_from_wrapper (method);
                        MonoMethod *w2 = mono_marshal_method_from_wrapper (m);
 
-                       if (w1->is_inflated && ((MonoMethodInflated *)w1)->declaring == w2) {
+                       if ((w1 == w2) || (w1->is_inflated && ((MonoMethodInflated *)w1)->declaring == w2)) {
+                               index = value;
+                               break;
+                       }
+               }
+               if (m && method->wrapper_type && method->wrapper_type == m->wrapper_type &&
+                       method->wrapper_type == MONO_WRAPPER_DELEGATE_INVOKE) {
+                       WrapperInfo *info1 = mono_marshal_get_wrapper_info (method);
+                       WrapperInfo *info2 = mono_marshal_get_wrapper_info (m);
+
+                       if (info1 && info2 && info1->subtype == info2->subtype && method->klass == m->klass) {
                                index = value;
                                break;
                        }
@@ -3869,8 +3982,8 @@ find_aot_method (MonoMethod *method, MonoAotModule **out_amodule)
        guint32 hash = mono_aot_method_hash (method);
 
        /* Try the method's module first */
-       *out_amodule = method->klass->image->aot_module;
-       index = find_aot_method_in_amodule (method->klass->image->aot_module, method, hash);
+       *out_amodule = (MonoAotModule *)method->klass->image->aot_module;
+       index = find_aot_method_in_amodule ((MonoAotModule *)method->klass->image->aot_module, method, hash);
        if (index != 0xffffff)
                return index;
 
@@ -3889,7 +4002,7 @@ find_aot_method (MonoMethod *method, MonoAotModule **out_amodule)
 
        index = 0xffffff;
        for (i = 0; i < modules->len; ++i) {
-               MonoAotModule *amodule = g_ptr_array_index (modules, i);
+               MonoAotModule *amodule = (MonoAotModule *)g_ptr_array_index (modules, i);
 
                if (amodule != method->klass->image->aot_module)
                        index = find_aot_method_in_amodule (amodule, method, hash);
@@ -3912,7 +4025,7 @@ mono_aot_find_method_index (MonoMethod *method)
 }
 
 static gboolean
-init_method (MonoAotModule *amodule, guint32 method_index, MonoMethod *method, MonoClass *init_class, MonoGenericContext *context)
+init_llvm_method (MonoAotModule *amodule, guint32 method_index, MonoMethod *method, MonoClass *init_class, MonoGenericContext *context)
 {
        MonoDomain *domain = mono_domain_get ();
        MonoMemPool *mp;
@@ -3923,7 +4036,7 @@ init_method (MonoAotModule *amodule, guint32 method_index, MonoMethod *method, M
        MonoJitInfo *jinfo = NULL;
        guint8 *code, *info;
 
-       code = amodule->methods [method_index];
+       code = (guint8 *)amodule->methods [method_index];
        info = &amodule->blob [mono_aot_get_offset (amodule->method_info_offsets, method_index)];
 
        p = info;
@@ -3955,8 +4068,10 @@ init_method (MonoAotModule *amodule, guint32 method_index, MonoMethod *method, M
                }
 
                patches = load_patch_info (amodule, mp, n_patches, llvm, &got_slots, p, &p);
-               if (patches == NULL)
+               if (patches == NULL) {
+                       mono_mempool_destroy (mp);
                        goto cleanup;
+               }
 
                for (pindex = 0; pindex < n_patches; ++pindex) {
                        MonoJumpInfo *ji = &patches [pindex];
@@ -4018,34 +4133,43 @@ init_method (MonoAotModule *amodule, guint32 method_index, MonoMethod *method, M
 void
 mono_aot_init_llvm_method (gpointer aot_module, guint32 method_index)
 {
-       MonoAotModule *amodule = aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)aot_module;
        gboolean res;
 
        // FIXME: Handle failure
-       res = init_method (amodule, method_index, NULL, NULL, NULL);
+       res = init_llvm_method (amodule, method_index, NULL, NULL, NULL);
        g_assert (res);
 }
 
 void
-mono_aot_init_gshared_method_this (gpointer aot_module, guint32 method_index, MonoObject *this)
+mono_aot_init_gshared_method_this (gpointer aot_module, guint32 method_index, MonoObject *this_obj)
 {
-       MonoAotModule *amodule = aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)aot_module;
        gboolean res;
        MonoClass *klass;
+       MonoGenericContext *context;
+       MonoMethod *method;
 
        // FIXME:
-       g_assert (this);
+       g_assert (this_obj);
+       klass = this_obj->vtable->klass;
 
-       // FIXME: Handle failure
-       klass = this->vtable->klass;
-       res = init_method (amodule, method_index, NULL, klass, klass->generic_class ? &klass->generic_class->context : NULL);
+       amodule_lock (amodule);
+       method = (MonoMethod *)g_hash_table_lookup (amodule->extra_methods, GUINT_TO_POINTER (method_index));
+       amodule_unlock (amodule);
+
+       g_assert (method);
+       context = mono_method_get_context (method);
+       g_assert (context);
+
+       res = init_llvm_method (amodule, method_index, NULL, klass, context);
        g_assert (res);
 }
 
 void
 mono_aot_init_gshared_method_rgctx  (gpointer aot_module, guint32 method_index, MonoMethodRuntimeGenericContext *rgctx)
 {
-       MonoAotModule *amodule = aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)aot_module;
        gboolean res;
        MonoGenericContext context = { NULL, NULL };
        MonoClass *klass = rgctx->class_vtable->klass;
@@ -4056,7 +4180,7 @@ mono_aot_init_gshared_method_rgctx  (gpointer aot_module, guint32 method_index,
                context.class_inst = klass->generic_container->context.class_inst;
        context.method_inst = rgctx->method_inst;
 
-       res = init_method (amodule, method_index, NULL, rgctx->class_vtable->klass, &context);
+       res = init_llvm_method (amodule, method_index, NULL, rgctx->class_vtable->klass, &context);
        g_assert (res);
 }
 
@@ -4071,16 +4195,22 @@ gpointer
 mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
 {
        MonoClass *klass = method->klass;
+       MonoMethod *orig_method = method;
        guint32 method_index;
-       MonoAotModule *amodule = klass->image->aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)klass->image->aot_module;
        guint8 *code;
+       gboolean cache_result = FALSE;
+
+       if (domain != mono_get_root_domain ())
+               /* Non shared AOT code can't be used in other appdomains */
+               return NULL;
 
        if (enable_aot_cache && !amodule && domain->entry_assembly && klass->image == mono_defaults.corlib) {
                /* This cannot be AOTed during startup, so do it now */
                if (!mscorlib_aot_loaded) {
                        mscorlib_aot_loaded = TRUE;
                        load_aot_module (klass->image->assembly, NULL);
-                       amodule = klass->image->aot_module;
+                       amodule = (MonoAotModule *)klass->image->aot_module;
                }
        }
 
@@ -4109,20 +4239,30 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
        /* Find method index */
        method_index = 0xffffff;
        if (method->is_inflated && !method->wrapper_type && mono_method_is_generic_sharable_full (method, TRUE, FALSE, FALSE)) {
+               MonoMethod *orig_method = method;
                /* 
                 * For generic methods, we store the fully shared instance in place of the
                 * original method.
                 */
                method = mono_method_get_declaring_generic_method (method);
                method_index = mono_metadata_token_index (method->token) - 1;
+
+               if (mono_llvm_only) {
+                       /* Needed by mono_aot_init_gshared_method_this () */
+                       /* orig_method is a random instance but it is enough to make init_llvm_method () work */
+                       amodule_lock (amodule);
+                       g_hash_table_insert (amodule->extra_methods, GUINT_TO_POINTER (method_index), orig_method);
+                       amodule_unlock (amodule);
+               }
        } else if (method->is_inflated || !method->token) {
                /* This hash table is used to avoid the slower search in the extra_method_table in the AOT image */
                amodule_lock (amodule);
-               code = g_hash_table_lookup (amodule->method_to_code, method);
+               code = (guint8 *)g_hash_table_lookup (amodule->method_to_code, method);
                amodule_unlock (amodule);
                if (code)
                        return code;
 
+               cache_result = TRUE;
                method_index = find_aot_method (method, &amodule);
                /*
                 * Special case the ICollection<T> wrappers for arrays, as they cannot
@@ -4132,7 +4272,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
                if (method_index == 0xffffff && method->wrapper_type == MONO_WRAPPER_MANAGED_TO_MANAGED && method->klass->rank && strstr (method->name, "System.Collections.Generic")) {
                        MonoMethod *m = mono_aot_get_array_helper_from_wrapper (method);
 
-                       code = mono_aot_get_method (domain, m);
+                       code = (guint8 *)mono_aot_get_method (domain, m);
                        if (code)
                                return code;
                }
@@ -4166,7 +4306,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
                         * Get the code for the <object> instantiation which should be emitted into
                         * the mscorlib aot image by the AOT compiler.
                         */
-                       code = mono_aot_get_method (domain, m);
+                       code = (guint8 *)mono_aot_get_method (domain, m);
                        if (code)
                                return code;
                }
@@ -4204,11 +4344,32 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
                         * Get the code for the <object> instantiation which should be emitted into
                         * the mscorlib aot image by the AOT compiler.
                         */
-                       code = mono_aot_get_method (domain, m);
+                       code = (guint8 *)mono_aot_get_method (domain, m);
                        if (code)
                                return code;
                }
 
+               /* For ARRAY_ACCESSOR wrappers with reference types, use the <object> instantiation saved in corlib */
+               if (method_index == 0xffffff && method->wrapper_type == MONO_WRAPPER_UNKNOWN) {
+                       WrapperInfo *info = mono_marshal_get_wrapper_info (method);
+
+                       if (info->subtype == WRAPPER_SUBTYPE_ARRAY_ACCESSOR) {
+                               MonoMethod *array_method = info->d.array_accessor.method;
+                               if (MONO_TYPE_IS_REFERENCE (&array_method->klass->element_class->byval_arg)) {
+                                       MonoClass *obj_array_class = mono_array_class_get (mono_defaults.object_class, 1);
+                                       MonoMethod *m = mono_class_get_method_from_name (obj_array_class, array_method->name, mono_method_signature (array_method)->param_count);
+                                       g_assert (m);
+
+                                       m = mono_marshal_get_array_accessor_wrapper (m);
+                                       if (m != method) {
+                                               code = (guint8 *)mono_aot_get_method (domain, m);
+                                               if (code)
+                                                       return code;
+                                       }
+                               }
+                       }
+               }
+
                if (method_index == 0xffffff && method->is_inflated && mono_method_is_generic_sharable_full (method, FALSE, TRUE, FALSE)) {
                        /* Partial sharing */
                        MonoMethod *shared;
@@ -4243,8 +4404,6 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
 
                /* Needed by find_jit_info */
                amodule_lock (amodule);
-               if (!amodule->extra_methods)
-                       amodule->extra_methods = g_hash_table_new (NULL, NULL);
                g_hash_table_insert (amodule->extra_methods, GUINT_TO_POINTER (method_index), method);
                amodule_unlock (amodule);
        } else {
@@ -4252,7 +4411,13 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
                method_index = mono_metadata_token_index (method->token) - 1;
        }
 
-       return load_method (domain, amodule, klass->image, method, method->token, method_index);
+       code = (guint8 *)load_method (domain, amodule, klass->image, method, method->token, method_index);
+       if (code && cache_result) {
+               amodule_lock (amodule);
+               g_hash_table_insert (amodule->method_to_code, orig_method, code);
+               amodule_unlock (amodule);
+       }
+       return code;
 }
 
 /**
@@ -4262,7 +4427,7 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
 gpointer
 mono_aot_get_method_from_token (MonoDomain *domain, MonoImage *image, guint32 token)
 {
-       MonoAotModule *aot_module = image->aot_module;
+       MonoAotModule *aot_module = (MonoAotModule *)image->aot_module;
        int method_index;
 
        if (!aot_module)
@@ -4385,9 +4550,9 @@ mono_aot_plt_resolve (gpointer aot_module, guint32 plt_info_offset, guint8 *code
 
        p = &module->blob [plt_info_offset];
 
-       ji.type = decode_value (p, &p);
+       ji.type = (MonoJumpInfoType)decode_value (p, &p);
 
-       mp = mono_mempool_new_size (512);
+       mp = mono_mempool_new ();
        res = decode_patch (module, mp, &ji, p, &p);
 
        if (!res) {
@@ -4407,10 +4572,10 @@ mono_aot_plt_resolve (gpointer aot_module, guint32 plt_info_offset, guint8 *code
         */
        if (mono_aot_only && ji.type == MONO_PATCH_INFO_METHOD && !ji.data.method->is_generic && !mono_method_check_context_used (ji.data.method) && !(ji.data.method->iflags & METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED) &&
                !mono_method_needs_static_rgctx_invoke (ji.data.method, FALSE) && !using_gsharedvt) {
-               target = mono_jit_compile_method (ji.data.method);
+               target = (guint8 *)mono_jit_compile_method (ji.data.method);
                no_ftnptr = TRUE;
        } else {
-               target = mono_resolve_patch_target (NULL, mono_domain_get (), NULL, &ji, TRUE);
+               target = (guint8 *)mono_resolve_patch_target (NULL, mono_domain_get (), NULL, &ji, TRUE);
        }
 
        /*
@@ -4431,7 +4596,7 @@ mono_aot_plt_resolve (gpointer aot_module, guint32 plt_info_offset, guint8 *code
 #ifdef PPC_USES_FUNCTION_DESCRIPTOR
                g_assert (((gpointer*)target) [2] != 0);
 #endif
-               target = mono_create_ftnptr (mono_domain_get (), target);
+               target = (guint8 *)mono_create_ftnptr (mono_domain_get (), target);
        }
 
        mono_mempool_destroy (mp);
@@ -4597,7 +4762,7 @@ load_function_full (MonoAotModule *amodule, const char *name, MonoTrampInfo **ou
        /* Load the code */
 
        symbol = g_strdup_printf ("%s", name);
-       find_symbol (amodule->sofile, amodule->globals, symbol, (gpointer *)&code);
+       find_amodule_symbol (amodule, symbol, (gpointer *)&code);
        g_free (symbol);
        if (!code)
                g_error ("Symbol '%s' not found in AOT file '%s'.\n", name, amodule->aot_name);
@@ -4607,7 +4772,7 @@ load_function_full (MonoAotModule *amodule, const char *name, MonoTrampInfo **ou
        /* Load info */
 
        symbol = g_strdup_printf ("%s_p", name);
-       find_symbol (amodule->sofile, amodule->globals, symbol, (gpointer *)&p);
+       find_amodule_symbol (amodule, symbol, (gpointer *)&p);
        g_free (symbol);
        if (!p)
                /* Nothing to patch */
@@ -4628,7 +4793,7 @@ load_function_full (MonoAotModule *amodule, const char *name, MonoTrampInfo **ou
                uw_info_len = decode_value (uw_info, &uw_info);
 
                tinfo = g_new0 (MonoTrampInfo, 1);
-               tinfo->code = code;
+               tinfo->code = (guint8 *)code;
                tinfo->code_size = code_size;
                tinfo->uw_info = uw_info;
                tinfo->uw_info_len = uw_info_len;
@@ -4672,7 +4837,7 @@ load_function_full (MonoAotModule *amodule, const char *name, MonoTrampInfo **ou
                                } else if (!strcmp (ji->data.name, "mono_throw_exception")) {
                                        target = mono_get_throw_exception ();
                                } else if (strstr (ji->data.name, "trampoline_func_") == ji->data.name) {
-                                       int tramp_type2 = atoi (ji->data.name + strlen ("trampoline_func_"));
+                                       MonoTrampolineType tramp_type2 = (MonoTrampolineType)atoi (ji->data.name + strlen ("trampoline_func_"));
                                        target = (gpointer)mono_get_trampoline_func (tramp_type2);
                                } else if (strstr (ji->data.name, "specific_trampoline_lazy_fetch_") == ji->data.name) {
                                        /* atoll is needed because the the offset is unsigned */
@@ -4682,7 +4847,7 @@ load_function_full (MonoAotModule *amodule, const char *name, MonoTrampInfo **ou
                                        res = sscanf (ji->data.name, "specific_trampoline_lazy_fetch_%u", &slot);
                                        g_assert (res == 1);
                                        target = mono_create_specific_trampoline (GUINT_TO_POINTER (slot), MONO_TRAMPOLINE_RGCTX_LAZY_FETCH, mono_get_root_domain (), NULL);
-                                       target = mono_create_ftnptr_malloc (target);
+                                       target = mono_create_ftnptr_malloc ((guint8 *)target);
                                } else if (!strcmp (ji->data.name, "mono_thread_get_and_clear_pending_exception")) {
                                        target = mono_thread_get_and_clear_pending_exception;
                                } else if (!strcmp (ji->data.name, "debugger_agent_single_step_from_context")) {
@@ -4703,7 +4868,7 @@ load_function_full (MonoAotModule *amodule, const char *name, MonoTrampInfo **ou
                                /* Hopefully the code doesn't have patches which need method or 
                                 * domain to be set.
                                 */
-                               target = mono_resolve_patch_target (NULL, NULL, code, ji, FALSE);
+                               target = mono_resolve_patch_target (NULL, NULL, (guint8 *)code, ji, FALSE);
                                g_assert (target);
                        }
 
@@ -4732,7 +4897,7 @@ get_mscorlib_aot_module (void)
 
        image = mono_defaults.corlib;
        if (image)
-               amodule = image->aot_module;
+               amodule = (MonoAotModule *)image->aot_module;
        else
                amodule = mscorlib_aot_module;
        g_assert (amodule);
@@ -4759,7 +4924,7 @@ mono_aot_get_trampoline_full (const char *name, MonoTrampInfo **out_tinfo)
                return no_trampolines;
        }
 
-       return mono_create_ftnptr_malloc (load_function_full (amodule, name, out_tinfo));
+       return mono_create_ftnptr_malloc ((guint8 *)load_function_full (amodule, name, out_tinfo));
 }
 
 gpointer
@@ -4781,7 +4946,7 @@ read_unwind_info (MonoAotModule *amodule, MonoTrampInfo *info, const char *symbo
        guint32 uw_offset, uw_info_len;
        guint8 *uw_info;
 
-       find_symbol (amodule->sofile, amodule->globals, symbol_name, &symbol_addr);
+       find_amodule_symbol (amodule, symbol_name, &symbol_addr);
 
        if (!symbol_addr)
                return NULL;
@@ -5093,14 +5258,14 @@ mono_aot_create_specific_trampoline (MonoImage *image, gpointer arg1, MonoTrampo
                g_free (symbol);
        }
 
-       tramp = generic_trampolines [tramp_type];
+       tramp = (guint8 *)generic_trampolines [tramp_type];
        g_assert (tramp);
 
        if (USE_PAGE_TRAMPOLINES) {
-               code = get_new_specific_trampoline_from_page (tramp, arg1);
+               code = (guint8 *)get_new_specific_trampoline_from_page (tramp, arg1);
                tramp_size = 8;
        } else {
-               code = get_numerous_trampoline (MONO_AOT_TRAMP_SPECIFIC, 2, &amodule, &got_offset, &tramp_size);
+               code = (guint8 *)get_numerous_trampoline (MONO_AOT_TRAMP_SPECIFIC, 2, &amodule, &got_offset, &tramp_size);
 
                amodule->got [got_offset] = tramp;
                amodule->got [got_offset + 1] = arg1;
@@ -5120,9 +5285,9 @@ mono_aot_get_static_rgctx_trampoline (gpointer ctx, gpointer addr)
        guint32 got_offset;
 
        if (USE_PAGE_TRAMPOLINES) {
-               code = get_new_rgctx_trampoline_from_page (addr, ctx);
+               code = (guint8 *)get_new_rgctx_trampoline_from_page (addr, ctx);
        } else {
-               code = get_numerous_trampoline (MONO_AOT_TRAMP_STATIC_RGCTX, 2, &amodule, &got_offset, NULL);
+               code = (guint8 *)get_numerous_trampoline (MONO_AOT_TRAMP_STATIC_RGCTX, 2, &amodule, &got_offset, NULL);
 
                amodule->got [got_offset] = ctx;
                amodule->got [got_offset + 1] = addr; 
@@ -5155,12 +5320,12 @@ mono_aot_get_unbox_trampoline (MonoMethod *method)
                }
                g_assert (method_index != 0xffffff);
        } else {
-               amodule = method->klass->image->aot_module;
+               amodule = (MonoAotModule *)method->klass->image->aot_module;
                g_assert (amodule);
        }
 
        if (amodule->info.llvm_get_unbox_tramp) {
-               gpointer (*get_tramp) (int) = amodule->info.llvm_get_unbox_tramp;
+               gpointer (*get_tramp) (int) = (gpointer (*)(int))amodule->info.llvm_get_unbox_tramp;
                code = get_tramp (method_index);
 
                if (code)
@@ -5189,7 +5354,7 @@ mono_aot_get_unbox_trampoline (MonoMethod *method)
        code = get_call_table_entry (amodule->unbox_trampoline_addresses, entry_index);
        g_assert (code);
 
-       tinfo = mono_tramp_info_create (NULL, code, 0, NULL, NULL);
+       tinfo = mono_tramp_info_create (NULL, (guint8 *)code, 0, NULL, NULL);
 
        symbol_addr = read_unwind_info (amodule, tinfo, "unbox_trampoline_p");
        if (!symbol_addr) {
@@ -5209,7 +5374,7 @@ mono_aot_get_lazy_fetch_trampoline (guint32 slot)
 {
        char *symbol;
        gpointer code;
-       MonoAotModule *amodule = mono_defaults.corlib->aot_module;
+       MonoAotModule *amodule = (MonoAotModule *)mono_defaults.corlib->aot_module;
        guint32 index = MONO_RGCTX_SLOT_INDEX (slot);
        static int count = 0;
 
@@ -5223,7 +5388,7 @@ mono_aot_get_lazy_fetch_trampoline (guint32 slot)
                 */
                if (!addr)
                        addr = load_function (amodule, "rgctx_fetch_trampoline_general");
-               info = mono_domain_alloc0 (mono_get_root_domain (), sizeof (gpointer) * 2);
+               info = (void **)mono_domain_alloc0 (mono_get_root_domain (), sizeof (gpointer) * 2);
                info [0] = GUINT_TO_POINTER (slot);
                info [1] = mono_create_specific_trampoline (GUINT_TO_POINTER (slot), MONO_TRAMPOLINE_RGCTX_LAZY_FETCH, mono_get_root_domain (), NULL);
                code = mono_aot_get_static_rgctx_trampoline (info, addr);
@@ -5231,7 +5396,7 @@ mono_aot_get_lazy_fetch_trampoline (guint32 slot)
        }
 
        symbol = mono_get_rgctx_fetch_trampoline_name (slot);
-       code = load_function (mono_defaults.corlib->aot_module, symbol);
+       code = load_function ((MonoAotModule *)mono_defaults.corlib->aot_module, symbol);
        g_free (symbol);
        /* The caller expects an ftnptr */
        return mono_create_ftnptr (mono_domain_get (), code);
@@ -5264,7 +5429,7 @@ mono_aot_get_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem
        }
 
        /* Save the entries into an array */
-       buf = mono_domain_alloc (domain, (real_count + 1) * 2 * sizeof (gpointer));
+       buf = (void **)mono_domain_alloc (domain, (real_count + 1) * 2 * sizeof (gpointer));
        index = 0;
        for (i = 0; i < count; ++i) {
                MonoIMTCheckItem *item = imt_entries [i];               
@@ -5276,7 +5441,7 @@ mono_aot_get_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem
 
                buf [(index * 2)] = item->key;
                if (item->has_target_code) {
-                       gpointer *p = mono_domain_alloc (domain, sizeof (gpointer));
+                       gpointer *p = (gpointer *)mono_domain_alloc (domain, sizeof (gpointer));
                        *p = item->value.target_code;
                        buf [(index * 2) + 1] = p;
                } else {
@@ -5306,9 +5471,9 @@ mono_aot_get_gsharedvt_arg_trampoline (gpointer arg, gpointer addr)
        guint32 got_offset;
 
        if (USE_PAGE_TRAMPOLINES) {
-               code = get_new_gsharedvt_arg_trampoline_from_page (addr, arg);
+               code = (guint8 *)get_new_gsharedvt_arg_trampoline_from_page (addr, arg);
        } else {
-               code = get_numerous_trampoline (MONO_AOT_TRAMP_GSHAREDVT_ARG, 2, &amodule, &got_offset, NULL);
+               code = (guint8 *)get_numerous_trampoline (MONO_AOT_TRAMP_GSHAREDVT_ARG, 2, &amodule, &got_offset, NULL);
 
                amodule->got [got_offset] = arg;
                amodule->got [got_offset + 1] = addr; 
@@ -5418,6 +5583,33 @@ mono_aot_init (void)
 {
 }
 
+void
+mono_aot_cleanup (void)
+{
+}
+
+guint32
+mono_aot_find_method_index (MonoMethod *method)
+{
+       g_assert_not_reached ();
+       return 0;
+}
+
+void
+mono_aot_init_llvm_method (gpointer aot_module, guint32 method_index)
+{
+}
+
+void
+mono_aot_init_gshared_method_this (gpointer aot_module, guint32 method_index, MonoObject *this)
+{
+}
+
+void
+mono_aot_init_gshared_method_rgctx  (gpointer aot_module, guint32 method_index, MonoMethodRuntimeGenericContext *rgctx)
+{
+}
+
 gpointer
 mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
 {
@@ -5499,6 +5691,13 @@ mono_aot_get_static_rgctx_trampoline (gpointer ctx, gpointer addr)
        return NULL;
 }
 
+gpointer
+mono_aot_get_trampoline_full (const char *name, MonoTrampInfo **out_tinfo)
+{
+       g_assert_not_reached ();
+       return NULL;
+}
+
 gpointer
 mono_aot_get_trampoline (const char *name)
 {
@@ -5527,6 +5726,29 @@ mono_aot_get_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem
        return NULL;
 }      
 
+gpointer
+mono_aot_get_gsharedvt_arg_trampoline (gpointer arg, gpointer addr)
+{
+       g_assert_not_reached ();
+       return NULL;
+}
+
+void
+mono_aot_set_make_unreadable (gboolean unreadable)
+{
+}
+
+gboolean
+mono_aot_is_pagefault (void *ptr)
+{
+       return FALSE;
+}
+
+void
+mono_aot_handle_pagefault (void *ptr)
+{
+}
+
 guint8*
 mono_aot_get_unwind_info (MonoJitInfo *ji, guint32 *unwind_info_len)
 {
index 98bd905faf3550cfae9354d3c34360ba53cdebd9..a79e708282b296df8284d14cb19bbd5672601c3b 100644 (file)
@@ -5,18 +5,19 @@ using System.Reflection;
 using System.Runtime.InteropServices;
 using System.Runtime.CompilerServices;
 using System.Collections.Generic;
+using System.Collections.ObjectModel;
 
 /*
  * Regression tests for the AOT/FULL-AOT code.
  */
 
-#if MOBILE
+#if __MOBILE__
 class AotTests
 #else
 class Tests
 #endif
 {
-#if !MOBILE
+#if !__MOBILE__
        static int Main (String[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
@@ -237,6 +238,16 @@ class Tests
                public static T GetValue<T>(Nullable<T> value) where T : struct {
                        return value.Value;
                }
+
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public static Nullable<T> Get<T>(T t) where T : struct {
+                       return t;
+               }
+
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public static Nullable<T> GetNull<T>() where T : struct {
+                       return null;
+               }
        }
 
        [Category ("DYNCALL")]
@@ -258,6 +269,14 @@ class Tests
                var res = (int)typeof (NullableMethods).GetMethod ("GetValue").MakeGenericMethod (new Type [] { typeof (int) }).Invoke (null, new object [] { v });
                if (res != 42)
                        return 3;
+
+               NullableMethods.Get (42);
+               var res2 = (int?)typeof (NullableMethods).GetMethod ("Get").MakeGenericMethod (new Type [] { typeof (int) }).Invoke (null, new object [] { 42 });
+               if (res2 != 42)
+                       return 4;
+               res2 = (int?)typeof (NullableMethods).GetMethod ("GetNull").MakeGenericMethod (new Type [] { typeof (int) }).Invoke (null, new object [] { });
+               if (res2.HasValue)
+                       return 5;
                return 0;
        }
 
@@ -291,4 +310,137 @@ class Tests
                        return 1;
                return 0;
        }
+
+       enum LongEnum : ulong {
+               A = 1
+                       }
+
+       public static int test_0_long_enum_eq_comparer () {
+               var c = EqualityComparer<LongEnum>.Default;
+               c.GetHashCode (LongEnum.A);
+               return 0;
+       }
+
+       enum UInt32Enum : uint {
+               A = 1
+                       }
+
+       enum Int32Enum : int {
+               A = 1
+                       }
+
+       enum Int16Enum : short {
+               A = 1
+                       }
+
+       enum UInt16Enum : ushort {
+               A = 1
+                       }
+
+       enum Int8Enum : sbyte {
+               A = 1
+                       }
+
+       enum UInt8Enum : byte {
+               A = 1
+                       }
+
+       public static int test_0_int_enum_eq_comparer () {
+               var t1 = new Dictionary<Int32Enum, object> ();
+               t1 [Int32Enum.A] = "foo";
+
+               var t2 = new Dictionary<UInt32Enum, object> ();
+               t2 [UInt32Enum.A] = "foo";
+
+               var t3 = new Dictionary<UInt16Enum, object> ();
+               t3 [UInt16Enum.A] = "foo";
+
+               var t4 = new Dictionary<Int16Enum, object> ();
+               t4 [Int16Enum.A] = "foo";
+
+               var t5 = new Dictionary<Int8Enum, object> ();
+               t5 [Int8Enum.A] = "foo";
+
+               var t6 = new Dictionary<UInt8Enum, object> ();
+               t6 [UInt8Enum.A] = "foo";
+
+               return 0;
+       }
+
+       public static int test_0_array_accessor_runtime_invoke_ref () {
+               var t = typeof (string[]);
+               var arr = Array.CreateInstance (typeof (string), 1);
+               arr.GetType ().GetMethod ("Set").Invoke (arr, new object [] { 0, "A" });
+               var res = (string)arr.GetType ().GetMethod ("Get").Invoke (arr, new object [] { 0 });
+               if (res != "A")
+                       return 1;
+               return 0;
+       }
+
+       public static void SetArrayValue_<T> (T[] values) {
+               values.Select (x => x).ToArray ();
+       }
+
+       [Category ("GSHAREDVT")]
+       public static int test_0_delegate_invoke_wrappers_gsharedvt () {
+               var enums = new LongEnum [] { LongEnum.A };
+               SetArrayValue_ (enums);
+               return 0;
+       }
+
+       struct LargeStruct {
+               public int a, b, c, d;
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static bool GetHasValue<T>(T? value) where T : struct
+       {
+               return value.HasValue;
+       }
+
+       [Category ("DYNCALL")]
+       public static int test_0_large_nullable_invoke () {
+               var s = new LargeStruct () { a = 1, b = 2, c = 3, d = 4 };
+
+               GetHasValue<LargeStruct> (s);
+
+#if __MOBILE__
+               var m = typeof(AotTests).GetMethod("GetHasValue", BindingFlags.Static | BindingFlags.Public);
+#else
+               var m = typeof(Tests).GetMethod("GetHasValue", BindingFlags.Static | BindingFlags.Public);
+#endif
+
+               Type type = typeof (LargeStruct?).GetGenericArguments () [0];
+               bool b1 = (bool)m.MakeGenericMethod (new Type[] {type}).Invoke (null, new object[] { s });
+               if (!b1)
+                       return 1;
+               bool b2 = (bool)m.MakeGenericMethod (new Type[] {type}).Invoke (null, new object[] { null });
+               if (b2)
+                       return 2;
+               return 0;
+       }
+
+       struct FpStruct {
+               public float a, b, c;
+       }
+
+       struct LargeStruct2 {
+               public FpStruct x;
+               public int a, b, c, d, e, f, g, h;
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       static int pass_hfa_on_stack (FpStruct s1, FpStruct s2, FpStruct s3) {
+               return (int)s3.c;
+       }
+
+       public static int test_10_arm64_hfa_on_stack_llvm () {
+               var arr = new LargeStruct2 [10, 10];
+               for (int i = 0; i < 10; ++i)
+                       for (int j = 0; j < 10; ++j)
+                               arr [i, j].x = new FpStruct ();
+
+               var s1 = new FpStruct () { a = 1, b = 1, c = 10 };
+               return pass_hfa_on_stack (s1, s1, s1);
+       }
 }
index d67b677dd871f5d7e4f84a56951926ba585a7dd3..a75bab23586eab4d4d92fadbde33c865897c48b0 100644 (file)
@@ -61,7 +61,7 @@ mono_arch_decompose_opts (MonoCompile *cfg, MonoInst *ins)
 gboolean
 mono_arch_opcode_needs_emulation (MonoCompile *cfg, int opcode)
 {
-       return FALSE;
+       return TRUE;
 }
 #endif
 
@@ -71,3 +71,11 @@ mono_arch_decompose_long_opts (MonoCompile *cfg, MonoInst *ins)
 {
 }
 #endif
+
+#ifndef MONO_ARCH_HAVE_OP_TAIL_CALL
+gboolean
+mono_arch_tail_call_supported (MonoCompile *cfg, MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig)
+{
+       return mono_metadata_signature_equal (caller_sig, callee_sig) && !MONO_TYPE_ISSTRUCT (callee_sig->ret);
+}
+#endif
index 55df1662c34358f3bf3fc345dec84b404e7e8a16..00a3c6b901f86a6b0c92e4b9a2993dbb447f3e78 100644 (file)
@@ -23,14 +23,14 @@ using System.Reflection;
  * the IL code looks.
  */
 
-#if MOBILE
+#if __MOBILE__
 class ArrayTests
 #else
 class Tests
 #endif
 {
 
-#if !MOBILE
+#if !__MOBILE__
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
index ba0351628184c28297183dfcdd2350bd2a40ed70..ad3cdde59a1f3284f151948cf5441b6910db2fd8 100644 (file)
@@ -23,14 +23,14 @@ using System.Reflection;
  * the IL code looks.
  */
 
-#if MOBILE
+#if __MOBILE__
 class CallsTests
 #else
 class Tests
 #endif
 {
 
-#if !MOBILE
+#if !__MOBILE__
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
index 0eb1e240bc5348d18f4d81badc38b476dee69152..9415256e94fd78049813135bd7df3a1b2e723629 100644 (file)
@@ -26,14 +26,14 @@ using System.Reflection;
 /* A comparison made to same variable. */
 #pragma warning disable 1718
 
-#if MOBILE
+#if __MOBILE__
 class FloatTests
 #else
 class Tests
 #endif
 {
 
-#if !MOBILE
+#if !__MOBILE__
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
index 1d81232c3a04dbb80a94811fbdf41ee1766f2285..82eb5befe7dd3b2b3a6b1153bf7cc70d65beee1f 100644 (file)
@@ -23,14 +23,14 @@ using System.Reflection;
  * the IL code looks.
  */
 
-#if MOBILE
+#if __MOBILE__
 class LongTests
 #else
 class Tests
 #endif
 {
 
-#if !MOBILE
+#if !__MOBILE__
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
index 854b21e5868870a4ca21709eff65612f6bdfdcde..9a1fcb9406cd97e0c3887220e7f1df61fdef5600 100644 (file)
@@ -23,14 +23,14 @@ using System.Reflection;
  * the IL code looks.
  */
 
-#if MOBILE
+#if __MOBILE__
 class MathTests
 #else
 class Tests
 #endif
 {
 
-#if !MOBILE
+#if !__MOBILE__
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
index 477af333e9b4a8401a8b6ec5ab4e7646e6044ac3..984f1ac27f084f91d38bd2616ad1ff7e998d46a3 100644 (file)
@@ -23,14 +23,14 @@ using System.Reflection;
  * the IL code looks.
  */
 
-#if MOBILE
+#if __MOBILE__
 class BasicTests
 #else
 class Tests
 #endif
 {
 
-#if !MOBILE
+#if !__MOBILE__
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
@@ -1276,6 +1276,105 @@ class Tests
                return 0;
        }
 
+       public static int test_0_udiv_opt () {
+               uint i;
+
+               // Avoid cfolding this
+               i = 0;
+               for (int j = 0; j < 567; ++j)
+                       i ++;
+               i += 1234000;
+               if ((i / 2) != 617283)
+                       return 1;
+               if ((i / 4) != 308641)
+                       return 2;
+               if ((i / 8) != 154320)
+                       return 3;
+               if ((i / 16) != 77160)
+                       return 4;
+
+               return 0;
+       }
+
+       public static int test_0_signed_ct_div () {
+               int n = 2147483647;
+               bool divide_by_zero = false;
+               bool overflow = false;
+
+               if ((n / 2147483647) != 1)
+                       return 1;
+               if ((n / -2147483647) != -1)
+                       return 2;
+               n = -n;
+               if ((n / 2147483647) != -1)
+                       return 3;
+               n--; /* MinValue */
+               if ((n / -2147483648) != 1)
+                       return 4;
+               if ((n / 2147483647) != -1)
+                       return 5;
+               if ((n / 1) != n)
+                       return 6;
+
+               try {
+                       int r = n / (-1);
+               } catch (OverflowException) {
+                       overflow = true;
+               }
+               if (!overflow)
+                       return 7;
+
+               try {
+                       int r = n / 0;
+               } catch (DivideByZeroException) {
+                       divide_by_zero = true;
+               }
+               if (!divide_by_zero)
+                       return 8;
+
+               if ((n / 35) != -61356675)
+                       return 9;
+               if ((n / -35) != 61356675)
+                       return 10;
+               n = -(n + 1);  /* MaxValue */
+               if ((n / 35) != 61356675)
+                       return 11;
+               if ((n / -35) != -61356675)
+                       return 12;
+
+               return 0;
+       }
+
+       public static int test_0_unsigned_ct_div () {
+               uint n = 4294967295;
+               bool divide_by_zero = false;
+
+               if ((n / 4294967295) != 1)
+                       return 1;
+               n--;
+               if ((n / 4294967295) != 0)
+                       return 2;
+               n++;
+               if ((n / 4294967294) != 1)
+                       return 3;
+               if ((n / 1) != n)
+                       return 4;
+
+               try {
+                       uint a = n / 0;
+               } catch (DivideByZeroException) {
+                       divide_by_zero = true;
+               }
+
+               if (!divide_by_zero)
+                       return 5;
+
+               if ((n / 35) != 122713351)
+                       return 9;
+
+               return 0;
+       }
+
        public static int test_0_rem_opt () {
                int i;
 
index 6b5d709f905d335e3fb4b37267dfce4527d97797..aeb11a0ff0e7ab327bac24441a82e0854a51cec2 100644 (file)
@@ -85,7 +85,7 @@ mono_branch_optimize_exception_target (MonoCompile *cfg, MonoBasicBlock *bb, con
                                                MONO_INST_NEW (cfg, jump, OP_BR);
 
                                                /* Allocate memory for our branch target */
-                                               jump->inst_i1 = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst));
+                                               jump->inst_i1 = (MonoInst *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst));
                                                jump->inst_true_bb = targetbb;
 
                                                if (cfg->verbose_level > 2) 
@@ -851,7 +851,7 @@ replace_out_block_in_code (MonoBasicBlock *bb, MonoBasicBlock *orig, MonoBasicBl
                                        ins->inst_false_bb = repl;
                        } else if (MONO_IS_JUMP_TABLE (ins)) {
                                int i;
-                               MonoJumpInfoBBTable *table = MONO_JUMP_TABLE_FROM_INS (ins);
+                               MonoJumpInfoBBTable *table = (MonoJumpInfoBBTable *)MONO_JUMP_TABLE_FROM_INS (ins);
                                for (i = 0; i < table->table_size; i++ ) {
                                        if (table->table [i] == orig)
                                                table->table [i] = repl;
@@ -995,7 +995,7 @@ mono_merge_basic_blocks (MonoCompile *cfg, MonoBasicBlock *bb, MonoBasicBlock *b
                for (inst = bb->code; inst != NULL; inst = inst->next) {
                        if (MONO_IS_JUMP_TABLE (inst)) {
                                int i;
-                               MonoJumpInfoBBTable *table = MONO_JUMP_TABLE_FROM_INS (inst);
+                               MonoJumpInfoBBTable *table = (MonoJumpInfoBBTable *)MONO_JUMP_TABLE_FROM_INS (inst);
                                for (i = 0; i < table->table_size; i++ ) {
                                        /* Might be already NULL from a previous merge */
                                        if (table->table [i])
@@ -1137,7 +1137,7 @@ mono_remove_critical_edges (MonoCompile *cfg)
                                 * overwrite the sreg1 of the ins.
                                 */
                                if ((in_bb->out_count > 1) || (in_bb->out_count == 1 && in_bb->last_ins && in_bb->last_ins->opcode == OP_BR_REG)) {
-                                       MonoBasicBlock *new_bb = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
+                                       MonoBasicBlock *new_bb = (MonoBasicBlock *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
                                        new_bb->block_num = cfg->num_bblocks++;
 //                                     new_bb->real_offset = bb->real_offset;
                                        new_bb->region = bb->region;
@@ -1161,7 +1161,7 @@ mono_remove_critical_edges (MonoCompile *cfg)
                                                        /* We cannot add any inst to the entry BB, so we must */
                                                        /* put a new BB in the middle to hold the OP_BR */
                                                        MonoInst *jump;
-                                                       MonoBasicBlock *new_bb_after_entry = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
+                                                       MonoBasicBlock *new_bb_after_entry = (MonoBasicBlock *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
                                                        new_bb_after_entry->block_num = cfg->num_bblocks++;
 //                                                     new_bb_after_entry->real_offset = bb->real_offset;
                                                        new_bb_after_entry->region = bb->region;
@@ -1190,10 +1190,10 @@ mono_remove_critical_edges (MonoCompile *cfg)
                                        previous_bb = new_bb;
                                        
                                        /* Setup in_bb and out_bb */
-                                       new_bb->in_bb = mono_mempool_alloc ((cfg)->mempool, sizeof (MonoBasicBlock*));
+                                       new_bb->in_bb = (MonoBasicBlock **)mono_mempool_alloc ((cfg)->mempool, sizeof (MonoBasicBlock*));
                                        new_bb->in_bb [0] = in_bb;
                                        new_bb->in_count = 1;
-                                       new_bb->out_bb = mono_mempool_alloc ((cfg)->mempool, sizeof (MonoBasicBlock*));
+                                       new_bb->out_bb = (MonoBasicBlock **)mono_mempool_alloc ((cfg)->mempool, sizeof (MonoBasicBlock*));
                                        new_bb->out_bb [0] = bb;
                                        new_bb->out_count = 1;
                                        
@@ -1263,7 +1263,7 @@ mono_optimize_branches (MonoCompile *cfg)
                for (previous_bb = cfg->bb_entry, bb = cfg->bb_entry->next_bb; bb; previous_bb = bb, bb = bb->next_bb) {
                        count ++;
                        if (count == 1000) {
-                               MONO_SUSPEND_CHECK ();
+                               mono_threads_safepoint ();
                                count = 0;
                        }
                        /* dont touch code inside exception clauses */
index 0bae69301bd1ba0eab51d6cf33e51a0ce8cfd76c..69cff0e2b48b258b12301966f2d33c80b21b3ee2 100644 (file)
@@ -393,3 +393,4 @@ long_and_imm: dest:i src1:i len:48
 long_or_imm: dest:i src1:i len:48
 long_xor_imm: dest:i src1:i len:48
 
+gc_safe_point: len:0
index d6047aa98df18ea116c7754eee85d1b060a459a7..608e5132daba33655b0910e5f7d6ffe4a93053f5 100644 (file)
@@ -455,3 +455,5 @@ mips_cond_exc_iov: src1:i src2:i len:44
 mips_cond_exc_ino: src1:i src2:i len:44
 mips_cond_exc_ic: src1:i src2:i len:44
 mips_cond_exc_inc: src1:i src2:i len:44
+
+gc_safe_point: len:0
index 8109c232b0b5aa61015222287733c4b25fbb4989..b2499e111307673c044c3daa4c4956281d59b679 100644 (file)
@@ -318,3 +318,5 @@ jump_table: dest:i len:8
 
 atomic_add_i4: src1:b src2:i dest:i len:28
 atomic_cas_i4: src1:b src2:i src3:i dest:i len:38
+
+gc_safe_point: len:0
index e0789c2845bb58f1185b4efb8e4350330dd654c9..d786bbad8fcc36e2a293eb5670aabf76360f42b6 100644 (file)
@@ -386,3 +386,5 @@ atomic_add_i4: src1:b src2:i dest:i len:28
 atomic_add_i8: src1:b src2:i dest:i len:28
 atomic_cas_i4: src1:b src2:i src3:i dest:i len:38
 atomic_cas_i8: src1:b src2:i src3:i dest:i len:38
+
+gc_safe_point: len:0
index cbb566b6676df06d5dfffb20d655412c6941b923..75d4d95d44dfd04fa006ce89261033ad40e7aeb9 100644 (file)
@@ -131,8 +131,8 @@ float_rem: dest:f src1:f src2:f len:16
 float_rem_un: dest:f src1:f src2:f len:16
 float_sub: dest:f src1:f src2:f len:6
 fmove: dest:f src1:f len:4
-move_f_to_i4: dest:i src1:f len:4
-move_i4_to_f: dest:f src1:i len:8
+move_f_to_i4: dest:i src1:f len:14
+move_i4_to_f: dest:f src1:i len:14
 move_f_to_i8: dest:i src1:f len:4
 move_i8_to_f: dest:f src1:i len:8
 i8const: dest:i len:20
@@ -389,5 +389,6 @@ gc_liveness_def: len:0
 gc_liveness_use: len:0
 gc_spill_slot_liveness_def: len:0
 gc_param_slot_liveness_def: len:0
+gc_safe_point: clob:c src1:i len:32
 
 generic_class_init: src1:A len:32 clob:c
index 970f7404add6052b3292164a169c78fa6527e345..d3409bc1d91648ded646222366c9282d9a6d0981 100644 (file)
@@ -316,3 +316,5 @@ long_conv_to_ovf_i4_2: dest:i src1:i src2:i len:48
 vcall2: len:40 clob:c
 vcall2_reg: src1:i len:64 clob:c
 vcall2_membase: src1:b len:64 clob:c
+
+gc_safe_point: len:0
index 92ff7d8ce1f1fdeaa03cf1e759b33b5e0b1dcf2f..8ee0457a5647100e15bc48df186fd318859b5129 100644 (file)
@@ -451,7 +451,7 @@ mono_debug_serialize_debug_info (MonoCompile *cfg, guint8 **out_buf, guint32 *bu
        }
 
        size = ((jit->num_params + jit->num_locals + 1) * 10) + (jit->num_line_numbers * 10) + 64;
-       p = buf = g_malloc (size);
+       p = buf = (guint8 *)g_malloc (size);
        encode_value (jit->epilogue_begin, p, &p);
        encode_value (jit->prologue_end, p, &p);
        encode_value (jit->code_size, p, &p);
@@ -650,7 +650,7 @@ void
 mono_debug_print_vars (gpointer ip, gboolean only_arguments)
 {
        MonoDomain *domain = mono_domain_get ();
-       MonoJitInfo *ji = mono_jit_info_table_find (domain, ip);
+       MonoJitInfo *ji = mono_jit_info_table_find (domain, (char *)ip);
        MonoDebugMethodJitInfo *jit;
        int i;
 
@@ -730,7 +730,7 @@ mono_debugger_method_has_breakpoint (MonoMethod *method)
                return 0;
 
        for (i = 0; i < breakpoints->len; i++) {
-               MiniDebugBreakpointInfo *info = g_ptr_array_index (breakpoints, i);
+               MiniDebugBreakpointInfo *info = (MiniDebugBreakpointInfo *)g_ptr_array_index (breakpoints, i);
 
                if (!mono_method_desc_full_match (info->desc, method))
                        continue;
index 5a5faf35c4663f289bbf2821a3059955f12068af..a8e6b3920eb370ed43e229f6f4ce9d1317dffe39 100644 (file)
@@ -54,7 +54,7 @@
 #include <mono/metadata/mono-debug.h>
 #include <mono/metadata/mono-debug-debugger.h>
 #include <mono/metadata/debug-mono-symfile.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/environment.h>
 #include <mono/metadata/threads-types.h>
 #include <mono/metadata/threadpool-ms.h>
@@ -62,7 +62,8 @@
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/runtime.h>
 #include <mono/metadata/verify-internals.h>
-#include <mono/utils/mono-semaphore.h>
+#include <mono/utils/mono-coop-mutex.h>
+#include <mono/utils/mono-coop-semaphore.h>
 #include <mono/utils/mono-error-internals.h>
 #include <mono/utils/mono-stack-unwinding.h>
 #include <mono/utils/mono-time.h>
@@ -91,7 +92,7 @@
 
 #ifndef DISABLE_DEBUGGER_AGENT
 
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-os-mutex.h>
 
 #define THREAD_TO_INTERNAL(thread) (thread)->internal_thread
 
@@ -662,7 +663,7 @@ static MonoGHashTable *tid_to_thread;
 /* Protected by the loader lock */
 static MonoGHashTable *tid_to_thread_obj;
 
-static gsize debugger_thread_id;
+static MonoNativeThreadId debugger_thread_id;
 
 static HANDLE debugger_thread_handle;
 
@@ -680,10 +681,10 @@ static GPtrArray *pending_assembly_loads;
 static gboolean debugger_thread_exited;
 
 /* Cond variable used to wait for debugger_thread_exited becoming true */
-static mono_cond_t debugger_thread_exited_cond;
+static MonoCoopCond debugger_thread_exited_cond;
 
 /* Mutex for the cond var above */
-static mono_mutex_t debugger_thread_exited_mutex;
+static MonoCoopMutex debugger_thread_exited_mutex;
 
 static DebuggerProfiler debugger_profiler;
 
@@ -715,14 +716,9 @@ static gboolean buffer_replies;
 static ReplyPacket reply_packets [128];
 int nreply_packets;
 
-#define dbg_lock() do {        \
-       MONO_TRY_BLOCKING;                      \
-       mono_mutex_lock (&debug_mutex); \
-       MONO_FINISH_TRY_BLOCKING;               \
-} while (0)
-
-#define dbg_unlock() mono_mutex_unlock (&debug_mutex)
-static mono_mutex_t debug_mutex;
+#define dbg_lock() mono_coop_mutex_lock (&debug_mutex)
+#define dbg_unlock() mono_coop_mutex_unlock (&debug_mutex)
+static MonoCoopMutex debug_mutex;
 
 static void transport_init (void);
 static void transport_connect (const char *address);
@@ -811,7 +807,7 @@ register_socket_transport (void);
 static inline gboolean
 is_debugger_thread (void)
 {
-       return GetCurrentThreadId () == debugger_thread_id;
+       return mono_native_thread_id_equals (mono_native_thread_id_get (), debugger_thread_id);
 }
 
 static int
@@ -822,7 +818,7 @@ parse_address (char *address, char **host, int *port)
        if (pos == NULL || pos == address)
                return 1;
 
-       *host = g_malloc (pos - address + 1);
+       *host = (char *)g_malloc (pos - address + 1);
        strncpy (*host, address, pos - address);
        (*host) [pos - address] = '\0';
 
@@ -961,7 +957,7 @@ mono_debugger_agent_parse_options (char *options)
 void
 mono_debugger_agent_init (void)
 {
-       mono_mutex_init_recursive (&debug_mutex);
+       mono_coop_mutex_init_recursive (&debug_mutex);
 
        if (!agent_config.enabled)
                return;
@@ -973,11 +969,11 @@ mono_debugger_agent_init (void)
 
        event_requests = g_ptr_array_new ();
 
-       mono_mutex_init (&debugger_thread_exited_mutex);
-       mono_cond_init (&debugger_thread_exited_cond, 0);
+       mono_coop_mutex_init (&debugger_thread_exited_mutex);
+       mono_coop_cond_init (&debugger_thread_exited_cond);
 
        mono_profiler_install ((MonoProfiler*)&debugger_profiler, runtime_shutdown);
-       mono_profiler_set_events (MONO_PROFILE_APPDOMAIN_EVENTS | MONO_PROFILE_THREADS | MONO_PROFILE_ASSEMBLY_EVENTS | MONO_PROFILE_JIT_COMPILATION | MONO_PROFILE_METHOD_EVENTS);
+       mono_profiler_set_events ((MonoProfileFlags)(MONO_PROFILE_APPDOMAIN_EVENTS | MONO_PROFILE_THREADS | MONO_PROFILE_ASSEMBLY_EVENTS | MONO_PROFILE_JIT_COMPILATION | MONO_PROFILE_METHOD_EVENTS));
        mono_profiler_install_runtime_initialized (runtime_initialized);
        mono_profiler_install_appdomain (NULL, appdomain_load, appdomain_start_unload, appdomain_unload);
        mono_profiler_install_thread (thread_startup, thread_end);
@@ -1075,7 +1071,7 @@ finish_agent_init (gboolean on_startup)
                argv [2] = agent_config.address;
                argv [3] = NULL;
 
-               res = g_spawn_async_with_pipes (NULL, argv, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+               res = g_spawn_async_with_pipes (NULL, argv, NULL, (GSpawnFlags)0, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
                if (!res) {
                        fprintf (stderr, "Failed to execute '%s'.\n", agent_config.launch);
                        exit (1);
@@ -1104,9 +1100,6 @@ mono_debugger_agent_cleanup (void)
        breakpoints_cleanup ();
        objrefs_cleanup ();
        ids_cleanup ();
-       
-       mono_mutex_destroy (&debugger_thread_exited_mutex);
-       mono_cond_destroy (&debugger_thread_exited_cond);
 }
 
 /*
@@ -1538,18 +1531,18 @@ transport_handshake (void)
        /* Write handshake message */
        sprintf (handshake_msg, "DWP-Handshake");
        /* Must use try blocking as this can nest into code that runs blocking */
-       MONO_TRY_BLOCKING;
+       MONO_PREPARE_BLOCKING;
        do {
                res = transport_send (handshake_msg, strlen (handshake_msg));
        } while (res == -1 && get_last_sock_error () == MONO_EINTR);
-       MONO_FINISH_TRY_BLOCKING;
+       MONO_FINISH_BLOCKING;
 
        g_assert (res != -1);
 
        /* Read answer */
-       MONO_TRY_BLOCKING;
+       MONO_PREPARE_BLOCKING;
        res = transport_recv (buf, strlen (handshake_msg));
-       MONO_FINISH_TRY_BLOCKING;
+       MONO_FINISH_BLOCKING;
        if ((res != strlen (handshake_msg)) || (memcmp (buf, handshake_msg, strlen (handshake_msg)) != 0)) {
                fprintf (stderr, "debugger-agent: DWP handshake failed.\n");
                return FALSE;
@@ -1602,14 +1595,12 @@ stop_debugger_thread (void)
         * If we continue with the shutdown without waiting for it, then the client might
         * not receive an answer to its last command like a resume.
         */
-       if (GetCurrentThreadId () != debugger_thread_id) {
+       if (!is_debugger_thread ()) {
                do {
-                       MONO_TRY_BLOCKING;
-                       mono_mutex_lock (&debugger_thread_exited_mutex);
+                       mono_coop_mutex_lock (&debugger_thread_exited_mutex);
                        if (!debugger_thread_exited)
-                               mono_cond_wait (&debugger_thread_exited_cond, &debugger_thread_exited_mutex);
-                       mono_mutex_unlock (&debugger_thread_exited_mutex);
-                       MONO_FINISH_TRY_BLOCKING;
+                               mono_coop_cond_wait (&debugger_thread_exited_cond, &debugger_thread_exited_mutex);
+                       mono_coop_mutex_unlock (&debugger_thread_exited_mutex);
                } while (!debugger_thread_exited);
        }
 
@@ -1674,7 +1665,7 @@ decode_string (guint8 *buf, guint8 **endbuf, guint8 *limit)
                return NULL;
        }
 
-       s = g_malloc (len + 1);
+       s = (char *)g_malloc (len + 1);
        g_assert (s);
 
        memcpy (s, buf, len);
@@ -1692,7 +1683,7 @@ decode_string (guint8 *buf, guint8 **endbuf, guint8 *limit)
 static inline void
 buffer_init (Buffer *buf, int size)
 {
-       buf->buf = g_malloc (size);
+       buf->buf = (guint8 *)g_malloc (size);
        buf->p = buf->buf;
        buf->end = buf->buf + size;
 }
@@ -1708,7 +1699,7 @@ buffer_make_room (Buffer *buf, int size)
 {
        if (buf->end - buf->p < size) {
                int new_size = buf->end - buf->buf + size + 32;
-               guint8 *p = g_realloc (buf->buf, new_size);
+               guint8 *p = (guint8 *)g_realloc (buf->buf, new_size);
                size = buf->p - buf->buf;
                buf->buf = p;
                buf->p = p + size;
@@ -1917,7 +1908,7 @@ static MonoGHashTable *suspended_objs;
 static void
 free_objref (gpointer value)
 {
-       ObjRef *o = value;
+       ObjRef *o = (ObjRef *)value;
 
        mono_gchandle_free (o->handle);
 
@@ -1973,9 +1964,9 @@ get_objref (MonoObject *obj)
                 */
                hash = mono_object_hash (obj);
 
-               reflist = g_hash_table_lookup (obj_to_objref, GINT_TO_POINTER (hash));
+               reflist = (GSList *)g_hash_table_lookup (obj_to_objref, GINT_TO_POINTER (hash));
                for (l = reflist; l; l = l->next) {
-                       ref = l->data;
+                       ref = (ObjRef *)l->data;
                        if (ref && mono_gchandle_get_target (ref->handle) == obj) {
                                mono_loader_unlock ();
                                return ref;
@@ -1983,7 +1974,7 @@ get_objref (MonoObject *obj)
                }
        } else {
                /* Use a hash table with masked pointers to internalize object references */
-               ref = g_hash_table_lookup (obj_to_objref, GINT_TO_POINTER (~((gsize)obj)));
+               ref = (ObjRef *)g_hash_table_lookup (obj_to_objref, GINT_TO_POINTER (~((gsize)obj)));
                /* ref might refer to a different object with the same addr which was GCd */
                if (ref && mono_gchandle_get_target (ref->handle) == obj) {
                        mono_loader_unlock ();
@@ -2041,7 +2032,7 @@ get_object_allow_null (int objid, MonoObject **obj)
 
        if (objid == 0) {
                *obj = NULL;
-               return 0;
+               return ERR_NONE;
        }
 
        if (!objrefs)
@@ -2049,14 +2040,14 @@ get_object_allow_null (int objid, MonoObject **obj)
 
        mono_loader_lock ();
 
-       ref = g_hash_table_lookup (objrefs, GINT_TO_POINTER (objid));
+       ref = (ObjRef *)g_hash_table_lookup (objrefs, GINT_TO_POINTER (objid));
 
        if (ref) {
                *obj = mono_gchandle_get_target (ref->handle);
                mono_loader_unlock ();
                if (!(*obj))
                        return ERR_INVALID_OBJECT;
-               return 0;
+               return ERR_NONE;
        } else {
                mono_loader_unlock ();
                return ERR_INVALID_OBJECT;
@@ -2066,13 +2057,13 @@ get_object_allow_null (int objid, MonoObject **obj)
 static ErrorCode
 get_object (int objid, MonoObject **obj)
 {
-       int err = get_object_allow_null (objid, obj);
+       ErrorCode err = get_object_allow_null (objid, obj);
 
-       if (err)
+       if (err != ERR_NONE)
                return err;
        if (!(*obj))
                return ERR_INVALID_OBJECT;
-       return 0;
+       return ERR_NONE;
 }
 
 static inline int
@@ -2168,7 +2159,7 @@ ids_cleanup (void)
 void
 mono_debugger_agent_free_domain_info (MonoDomain *domain)
 {
-       AgentDomainInfo *info = domain_jit_info (domain)->agent_info;
+       AgentDomainInfo *info = (AgentDomainInfo *)domain_jit_info (domain)->agent_info;
        int i, j;
        GHashTableIter iter;
        GPtrArray *file_names;
@@ -2210,7 +2201,7 @@ mono_debugger_agent_free_domain_info (MonoDomain *domain)
        for (i = 0; i < ID_NUM; ++i) {
                if (ids [i]) {
                        for (j = 0; j < ids [i]->len; ++j) {
-                               Id *id = g_ptr_array_index (ids [i], j);
+                               Id *id = (Id *)g_ptr_array_index (ids [i], j);
                                if (id->domain == domain)
                                        id->domain = NULL;
                        }
@@ -2230,9 +2221,10 @@ get_agent_domain_info (MonoDomain *domain)
 
        mono_domain_lock (domain);
 
-       info = domain_jit_info (domain)->agent_info;
+       info = (AgentDomainInfo *)domain_jit_info (domain)->agent_info;
        if (!info) {
-               info = domain_jit_info (domain)->agent_info = g_new0 (AgentDomainInfo, 1);
+               info = g_new0 (AgentDomainInfo, 1);
+               domain_jit_info (domain)->agent_info = info;
                info->loaded_classes = g_hash_table_new (mono_aligned_addr_hash, NULL);
                info->source_files = g_hash_table_new (mono_aligned_addr_hash, NULL);
                info->source_file_to_class = g_hash_table_new (g_str_hash, g_str_equal);
@@ -2260,7 +2252,7 @@ get_id (MonoDomain *domain, IdType type, gpointer val)
        if (info->val_to_id [type] == NULL)
                info->val_to_id [type] = g_hash_table_new (mono_aligned_addr_hash, NULL);
 
-       id = g_hash_table_lookup (info->val_to_id [type], val);
+       id = (Id *)g_hash_table_lookup (info->val_to_id [type], val);
        if (id) {
                dbg_unlock ();
                return id->id;
@@ -2281,13 +2273,13 @@ get_id (MonoDomain *domain, IdType type, gpointer val)
 }
 
 static inline gpointer
-decode_ptr_id (guint8 *buf, guint8 **endbuf, guint8 *limit, IdType type, MonoDomain **domain, int *err)
+decode_ptr_id (guint8 *buf, guint8 **endbuf, guint8 *limit, IdType type, MonoDomain **domain, ErrorCode *err)
 {
        Id *res;
 
        int id = decode_id (buf, endbuf, limit);
 
-       *err = 0;
+       *err = ERR_NONE;
        if (domain)
                *domain = NULL;
 
@@ -2298,7 +2290,7 @@ decode_ptr_id (guint8 *buf, guint8 **endbuf, guint8 *limit, IdType type, MonoDom
        dbg_lock ();
        g_assert (id > 0 && id <= ids [type]->len);
 
-       res = g_ptr_array_index (ids [type], GPOINTER_TO_INT (id - 1));
+       res = (Id *)g_ptr_array_index (ids [type], GPOINTER_TO_INT (id - 1));
        dbg_unlock ();
 
        if (res->domain == NULL) {
@@ -2323,11 +2315,11 @@ buffer_add_ptr_id (Buffer *buf, MonoDomain *domain, IdType type, gpointer val)
 }
 
 static inline MonoClass*
-decode_typeid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_typeid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
        MonoClass *klass;
 
-       klass = decode_ptr_id (buf, endbuf, limit, ID_TYPE, domain, err);
+       klass = (MonoClass *)decode_ptr_id (buf, endbuf, limit, ID_TYPE, domain, err);
        if (G_UNLIKELY (log_level >= 2) && klass) {
                char *s;
 
@@ -2339,23 +2331,23 @@ decode_typeid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain,
 }
 
 static inline MonoAssembly*
-decode_assemblyid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_assemblyid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
-       return decode_ptr_id (buf, endbuf, limit, ID_ASSEMBLY, domain, err);
+       return (MonoAssembly *)decode_ptr_id (buf, endbuf, limit, ID_ASSEMBLY, domain, err);
 }
 
 static inline MonoImage*
-decode_moduleid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_moduleid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
-       return decode_ptr_id (buf, endbuf, limit, ID_MODULE, domain, err);
+       return (MonoImage *)decode_ptr_id (buf, endbuf, limit, ID_MODULE, domain, err);
 }
 
 static inline MonoMethod*
-decode_methodid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_methodid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
        MonoMethod *m;
 
-       m = decode_ptr_id (buf, endbuf, limit, ID_METHOD, domain, err);
+       m = (MonoMethod *)decode_ptr_id (buf, endbuf, limit, ID_METHOD, domain, err);
        if (G_UNLIKELY (log_level >= 2) && m) {
                char *s;
 
@@ -2367,21 +2359,21 @@ decode_methodid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domai
 }
 
 static inline MonoClassField*
-decode_fieldid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_fieldid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
-       return decode_ptr_id (buf, endbuf, limit, ID_FIELD, domain, err);
+       return (MonoClassField *)decode_ptr_id (buf, endbuf, limit, ID_FIELD, domain, err);
 }
 
 static inline MonoDomain*
-decode_domainid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_domainid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
-       return decode_ptr_id (buf, endbuf, limit, ID_DOMAIN, domain, err);
+       return (MonoDomain *)decode_ptr_id (buf, endbuf, limit, ID_DOMAIN, domain, err);
 }
 
 static inline MonoProperty*
-decode_propertyid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
+decode_propertyid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, ErrorCode *err)
 {
-       return decode_ptr_id (buf, endbuf, limit, ID_PROPERTY, domain, err);
+       return (MonoProperty *)decode_ptr_id (buf, endbuf, limit, ID_PROPERTY, domain, err);
 }
 
 static inline void
@@ -2392,10 +2384,10 @@ buffer_add_typeid (Buffer *buf, MonoDomain *domain, MonoClass *klass)
                char *s;
 
                s = mono_type_full_name (&klass->byval_arg);
-               if (GetCurrentThreadId () == debugger_thread_id)
+               if (is_debugger_thread ())
                        DEBUG_PRINTF (2, "[dbg]   send class [%s]\n", s);
                else
-                       DEBUG_PRINTF (2, "[%p]   send class [%s]\n", (gpointer)GetCurrentThreadId (), s);
+                       DEBUG_PRINTF (2, "[%p]   send class [%s]\n", (gpointer)mono_native_thread_id_get (), s);
                g_free (s);
        }
 }
@@ -2464,7 +2456,7 @@ save_thread_context (MonoContext *ctx)
 {
        DebuggerTlsData *tls;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
 
        if (ctx)
@@ -2480,20 +2472,20 @@ save_thread_context (MonoContext *ctx)
  */
 static gint32 threads_suspend_count;
 
-static mono_mutex_t suspend_mutex;
+static MonoCoopMutex suspend_mutex;
 
 /* Cond variable used to wait for suspend_count becoming 0 */
-static mono_cond_t suspend_cond;
+static MonoCoopCond suspend_cond;
 
 /* Semaphore used to wait for a thread becoming suspended */
-static MonoSemType suspend_sem;
+static MonoCoopSem suspend_sem;
 
 static void
 suspend_init (void)
 {
-       mono_mutex_init (&suspend_mutex);
-       mono_cond_init (&suspend_cond, 0);      
-       MONO_SEM_INIT (&suspend_sem, 0);
+       mono_coop_mutex_init (&suspend_mutex);
+       mono_coop_cond_init (&suspend_cond);    
+       mono_coop_sem_init (&suspend_sem, 0);
 }
 
 typedef struct
@@ -2502,12 +2494,13 @@ typedef struct
        gboolean last_frame_set;
        MonoContext ctx;
        gpointer lmf;
+       MonoDomain *domain;
 } GetLastFrameUserData;
 
 static gboolean
 get_last_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
 {
-       GetLastFrameUserData *data = user_data;
+       GetLastFrameUserData *data = (GetLastFrameUserData *)user_data;
 
        if (info->type == FRAME_TYPE_MANAGED_TO_NATIVE || info->type == FRAME_TYPE_TRAMPOLINE)
                return FALSE;
@@ -2521,19 +2514,32 @@ get_last_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
                /* Store the context/lmf for the frame above the last frame */
                memcpy (&data->ctx, ctx, sizeof (MonoContext));
                data->lmf = info->lmf;
+               data->domain = info->domain;
                return TRUE;
        }
 }
 
+static void
+copy_unwind_state_from_frame_data (MonoThreadUnwindState *to, GetLastFrameUserData *data, gpointer jit_tls)
+{
+       memcpy (&to->ctx, &data->ctx, sizeof (MonoContext));
+
+       to->unwind_data [MONO_UNWIND_DATA_DOMAIN] = data->domain;
+       to->unwind_data [MONO_UNWIND_DATA_LMF] = data->lmf;
+       to->unwind_data [MONO_UNWIND_DATA_JIT_TLS] = jit_tls;
+       to->valid = TRUE;
+}
+
 /*
  * thread_interrupt:
  *
  *   Process interruption of a thread. This should be signal safe.
+ *
+ * This always runs in the debugger thread.
  */
 static void
 thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, MonoJitInfo *ji)
 {
-       gboolean res;
        gpointer ip;
        MonoNativeThreadId tid;
 
@@ -2556,7 +2562,6 @@ thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, MonoJitInfo *ji)
                 * tls->suspending flag to avoid races when that happens.
                 */
                if (!tls->suspended && !tls->suspending) {
-                       MonoContext ctx;
                        GetLastFrameUserData data;
 
                        // FIXME: printf is not signal safe, but this is only used during
@@ -2582,15 +2587,12 @@ thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, MonoJitInfo *ji)
                        data.last_frame_set = FALSE;
                        mono_get_eh_callbacks ()->mono_walk_stack_with_state (get_last_frame, mono_thread_info_get_suspend_state (info), MONO_UNWIND_SIGNAL_SAFE, &data);
                        if (data.last_frame_set) {
+                               gpointer jit_tls = ((MonoThreadInfo*)tls->thread->thread_info)->jit_data;
+
                                memcpy (&tls->async_last_frame, &data.last_frame, sizeof (StackFrameInfo));
-                               res = mono_thread_state_init_from_monoctx (&tls->async_state, &ctx);
-                               g_assert (res);
-                               mono_thread_state_init_from_monoctx (&tls->context, &ctx);
-                               g_assert (res);
 
-                               memcpy (&tls->async_state.ctx, &data.ctx, sizeof (MonoContext));
-                               tls->async_state.unwind_data [MONO_UNWIND_DATA_LMF] = data.lmf;
-                               tls->async_state.unwind_data [MONO_UNWIND_DATA_JIT_TLS] = ((MonoThreadInfo*)tls->thread->thread_info)->jit_data;
+                               copy_unwind_state_from_frame_data (&tls->async_state, &data, jit_tls);
+                               copy_unwind_state_from_frame_data (&tls->context, &data, jit_tls);
                        } else {
                                tls->async_state.valid = FALSE;
                        }
@@ -2598,7 +2600,7 @@ thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, MonoJitInfo *ji)
                        mono_memory_barrier ();
 
                        tls->suspended = TRUE;
-                       MONO_SEM_POST (&suspend_sem);
+                       mono_coop_sem_post (&suspend_sem);
                }
        }
 }
@@ -2611,7 +2613,7 @@ thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, MonoJitInfo *ji)
 static void
 reset_native_thread_suspend_state (gpointer key, gpointer value, gpointer user_data)
 {
-       DebuggerTlsData *tls = value;
+       DebuggerTlsData *tls = (DebuggerTlsData *)value;
 
        if (!tls->really_suspended && tls->suspended) {
                tls->suspended = FALSE;
@@ -2633,13 +2635,13 @@ typedef struct {
 static SuspendThreadResult
 debugger_interrupt_critical (MonoThreadInfo *info, gpointer user_data)
 {
-       InterruptData *data = user_data;
+       InterruptData *data = (InterruptData *)user_data;
        MonoJitInfo *ji;
 
        data->valid_info = TRUE;
        ji = mono_jit_info_table_find_internal (
-                       mono_thread_info_get_suspend_state (info)->unwind_data [MONO_UNWIND_DATA_DOMAIN],
-                       MONO_CONTEXT_GET_IP (&mono_thread_info_get_suspend_state (info)->ctx),
+                       (MonoDomain *)mono_thread_info_get_suspend_state (info)->unwind_data [MONO_UNWIND_DATA_DOMAIN],
+                       (char *)MONO_CONTEXT_GET_IP (&mono_thread_info_get_suspend_state (info)->ctx),
                        TRUE,
                        TRUE);
 
@@ -2656,14 +2658,14 @@ debugger_interrupt_critical (MonoThreadInfo *info, gpointer user_data)
 static void
 notify_thread (gpointer key, gpointer value, gpointer user_data)
 {
-       MonoInternalThread *thread = key;
-       DebuggerTlsData *tls = value;
-       gsize tid = thread->tid;
+       MonoInternalThread *thread = (MonoInternalThread *)key;
+       DebuggerTlsData *tls = (DebuggerTlsData *)value;
+       MonoNativeThreadId tid = MONO_UINT_TO_NATIVE_THREAD_ID (thread->tid);
 
-       if (GetCurrentThreadId () == tid || tls->terminated)
+       if (mono_native_thread_id_equals (mono_native_thread_id_get (), tid) || tls->terminated)
                return;
 
-       DEBUG_PRINTF (1, "[%p] Interrupting %p...\n", (gpointer)GetCurrentThreadId (), (gpointer)tid);
+       DEBUG_PRINTF (1, "[%p] Interrupting %p...\n", (gpointer)mono_native_thread_id_get (), (gpointer)tid);
 
        /* This is _not_ equivalent to ves_icall_System_Threading_Thread_Abort () */
        InterruptData interrupt_data = { 0 };
@@ -2671,7 +2673,7 @@ notify_thread (gpointer key, gpointer value, gpointer user_data)
 
        mono_thread_info_safe_suspend_and_run ((MonoNativeThreadId)(gpointer)(gsize)thread->tid, FALSE, debugger_interrupt_critical, &interrupt_data);
        if (!interrupt_data.valid_info) {
-               DEBUG_PRINTF (1, "[%p] mono_thread_info_suspend_sync () failed for %p...\n", (gpointer)GetCurrentThreadId (), (gpointer)tid);
+               DEBUG_PRINTF (1, "[%p] mono_thread_info_suspend_sync () failed for %p...\n", (gpointer)mono_native_thread_id_get (), (gpointer)tid);
                /* 
                 * Attached thread which died without detaching.
                 */
@@ -2682,7 +2684,7 @@ notify_thread (gpointer key, gpointer value, gpointer user_data)
 static void
 process_suspend (DebuggerTlsData *tls, MonoContext *ctx)
 {
-       guint8 *ip = MONO_CONTEXT_GET_IP (ctx);
+       guint8 *ip = (guint8 *)MONO_CONTEXT_GET_IP (ctx);
        MonoJitInfo *ji;
        MonoMethod *method;
 
@@ -2695,14 +2697,14 @@ process_suspend (DebuggerTlsData *tls, MonoContext *ctx)
                return;
        }
 
-       if (debugger_thread_id == GetCurrentThreadId ())
+       if (is_debugger_thread ())
                return;
 
        /* Prevent races with mono_debugger_agent_thread_interrupt () */
        if (suspend_count - tls->resume_count > 0)
                tls->suspending = TRUE;
 
-       DEBUG_PRINTF (1, "[%p] Received single step event for suspending.\n", (gpointer)GetCurrentThreadId ());
+       DEBUG_PRINTF (1, "[%p] Received single step event for suspending.\n", (gpointer)mono_native_thread_id_get ());
 
        if (suspend_count - tls->resume_count == 0) {
                /* 
@@ -2710,7 +2712,7 @@ process_suspend (DebuggerTlsData *tls, MonoContext *ctx)
                 * suspending is still active.
                 * FIXME: This slows down single threaded invokes.
                 */
-               DEBUG_PRINTF (1, "[%p] Ignored during single threaded invoke.\n", (gpointer)GetCurrentThreadId ());
+               DEBUG_PRINTF (1, "[%p] Ignored during single threaded invoke.\n", (gpointer)mono_native_thread_id_get ());
                return;
        }
 
@@ -2737,13 +2739,11 @@ suspend_vm (void)
 {
        mono_loader_lock ();
 
-       MONO_TRY_BLOCKING;
-       mono_mutex_lock (&suspend_mutex);
-       MONO_FINISH_TRY_BLOCKING;
+       mono_coop_mutex_lock (&suspend_mutex);
 
        suspend_count ++;
 
-       DEBUG_PRINTF (1, "[%p] Suspending vm...\n", (gpointer)GetCurrentThreadId ());
+       DEBUG_PRINTF (1, "[%p] Suspending vm...\n", (gpointer)mono_native_thread_id_get ());
 
        if (suspend_count == 1) {
                // FIXME: Is it safe to call this inside the lock ?
@@ -2751,7 +2751,7 @@ suspend_vm (void)
                mono_g_hash_table_foreach (thread_to_tls, notify_thread, NULL);
        }
 
-       mono_mutex_unlock (&suspend_mutex);
+       mono_coop_mutex_unlock (&suspend_mutex);
 
        if (suspend_count == 1)
                /*
@@ -2773,18 +2773,16 @@ resume_vm (void)
 {
        int err;
 
-       g_assert (debugger_thread_id == GetCurrentThreadId ());
+       g_assert (is_debugger_thread ());
 
        mono_loader_lock ();
 
-       MONO_TRY_BLOCKING;
-       mono_mutex_lock (&suspend_mutex);
-       MONO_FINISH_TRY_BLOCKING;
+       mono_coop_mutex_lock (&suspend_mutex);
 
        g_assert (suspend_count > 0);
        suspend_count --;
 
-       DEBUG_PRINTF (1, "[%p] Resuming vm, suspend count=%d...\n", (gpointer)GetCurrentThreadId (), suspend_count);
+       DEBUG_PRINTF (1, "[%p] Resuming vm, suspend count=%d...\n", (gpointer)mono_native_thread_id_get (), suspend_count);
 
        if (suspend_count == 0) {
                // FIXME: Is it safe to call this inside the lock ?
@@ -2793,10 +2791,10 @@ resume_vm (void)
        }
 
        /* Signal this even when suspend_count > 0, since some threads might have resume_count > 0 */
-       err = mono_cond_broadcast (&suspend_cond);
+       err = mono_coop_cond_broadcast (&suspend_cond);
        g_assert (err == 0);
 
-       mono_mutex_unlock (&suspend_mutex);
+       mono_coop_mutex_unlock (&suspend_mutex);
        //g_assert (err == 0);
 
        if (suspend_count == 0)
@@ -2816,16 +2814,14 @@ resume_thread (MonoInternalThread *thread)
        int err;
        DebuggerTlsData *tls;
 
-       g_assert (debugger_thread_id == GetCurrentThreadId ());
+       g_assert (is_debugger_thread ());
 
        mono_loader_lock ();
 
-       tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+       tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
        g_assert (tls);
-       
-       MONO_TRY_BLOCKING;
-       mono_mutex_lock (&suspend_mutex);
-       MONO_FINISH_TRY_BLOCKING;
+
+       mono_coop_mutex_lock (&suspend_mutex);
 
        g_assert (suspend_count > 0);
 
@@ -2837,10 +2833,10 @@ resume_thread (MonoInternalThread *thread)
         * Signal suspend_count without decreasing suspend_count, the threads will wake up
         * but only the one whose resume_count field is > 0 will be resumed.
         */
-       err = mono_cond_broadcast (&suspend_cond);
+       err = mono_coop_cond_broadcast (&suspend_cond);
        g_assert (err == 0);
 
-       mono_mutex_unlock (&suspend_mutex);
+       mono_coop_mutex_unlock (&suspend_mutex);
        //g_assert (err == 0);
 
        mono_loader_unlock ();
@@ -2863,7 +2859,7 @@ static void
 invalidate_frames (DebuggerTlsData *tls)
 {
        if (!tls)
-               tls = mono_native_tls_get_value (debugger_tls_id);
+               tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
 
        free_frames (tls->frames, tls->frame_count);
@@ -2887,7 +2883,7 @@ suspend_current (void)
        DebuggerTlsData *tls;
        int err;
 
-       g_assert (debugger_thread_id != GetCurrentThreadId ());
+       g_assert (!is_debugger_thread ());
 
        if (mono_loader_lock_is_owned_by_self ()) {
                /*
@@ -2897,38 +2893,34 @@ suspend_current (void)
                return;
        }
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
 
-       MONO_TRY_BLOCKING;
-       mono_mutex_lock (&suspend_mutex);
-       MONO_FINISH_TRY_BLOCKING;
+       mono_coop_mutex_lock (&suspend_mutex);
 
        tls->suspending = FALSE;
        tls->really_suspended = TRUE;
 
        if (!tls->suspended) {
                tls->suspended = TRUE;
-               MONO_SEM_POST (&suspend_sem);
+               mono_coop_sem_post (&suspend_sem);
        }
 
-       DEBUG_PRINTF (1, "[%p] Suspended.\n", (gpointer)GetCurrentThreadId ());
+       DEBUG_PRINTF (1, "[%p] Suspended.\n", (gpointer)mono_native_thread_id_get ());
 
-       MONO_TRY_BLOCKING;
        while (suspend_count - tls->resume_count > 0) {
-               err = mono_cond_wait (&suspend_cond, &suspend_mutex);
+               err = mono_coop_cond_wait (&suspend_cond, &suspend_mutex);
                g_assert (err == 0);
        }
-       MONO_FINISH_TRY_BLOCKING;
 
        tls->suspended = FALSE;
        tls->really_suspended = FALSE;
 
        threads_suspend_count --;
 
-       mono_mutex_unlock (&suspend_mutex);
+       mono_coop_mutex_unlock (&suspend_mutex);
 
-       DEBUG_PRINTF (1, "[%p] Resumed.\n", (gpointer)GetCurrentThreadId ());
+       DEBUG_PRINTF (1, "[%p] Resumed.\n", (gpointer)mono_native_thread_id_get ());
 
        if (tls->pending_invoke) {
                /* Save the original context */
@@ -2947,7 +2939,7 @@ suspend_current (void)
 static void
 count_thread (gpointer key, gpointer value, gpointer user_data)
 {
-       DebuggerTlsData *tls = value;
+       DebuggerTlsData *tls = (DebuggerTlsData *)value;
 
        if (!tls->suspended && !tls->terminated)
                *(int*)user_data = *(int*)user_data + 1;
@@ -2985,7 +2977,7 @@ wait_for_suspend (void)
                nwait = count_threads_to_wait_for ();
                if (nwait) {
                        DEBUG_PRINTF (1, "Waiting for %d(%d) threads to suspend...\n", nwait, nthreads);
-                       err = MONO_SEM_WAIT (&suspend_sem);
+                       err = mono_coop_sem_wait (&suspend_sem, MONO_SEM_FLAGS_NONE);
                        g_assert (err == 0);
                        waited = TRUE;
                } else {
@@ -3009,12 +3001,12 @@ is_suspended (void)
 }
 
 static void
-no_seq_points_found (MonoMethod *method)
+no_seq_points_found (MonoMethod *method, int offset)
 {
        /*
         * This can happen in full-aot mode with assemblies AOTed without the 'soft-debug' option to save space.
         */
-       printf ("Unable to find seq points for method '%s'.\n", mono_method_full_name (method, TRUE));
+       printf ("Unable to find seq points for method '%s', offset 0x%x.\n", mono_method_full_name (method, TRUE), offset);
 }
 
 typedef struct {
@@ -3025,7 +3017,7 @@ typedef struct {
 static gboolean
 process_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
 {
-       ComputeFramesUserData *ud = user_data;
+       ComputeFramesUserData *ud = (ComputeFramesUserData *)user_data;
        StackFrame *frame;
        MonoMethod *method, *actual_method, *api_method;
        SeqPoint sp;
@@ -3100,7 +3092,7 @@ process_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
 static gboolean
 process_filter_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
 {
-       ComputeFramesUserData *ud = user_data;
+       ComputeFramesUserData *ud = (ComputeFramesUserData *)user_data;
 
        /*
         * 'tls->filter_ctx' is the location of the throw site.
@@ -3123,7 +3115,7 @@ static StackFrame**
 compute_frame_info_from (MonoInternalThread *thread, DebuggerTlsData *tls, MonoThreadUnwindState *state, int *out_nframes)
 {
        ComputeFramesUserData user_data;
-       MonoUnwindOptions opts = MONO_UNWIND_DEFAULT|MONO_UNWIND_REG_LOCATIONS;
+       MonoUnwindOptions opts = (MonoUnwindOptions)(MONO_UNWIND_DEFAULT | MONO_UNWIND_REG_LOCATIONS);
        StackFrame **res;
        int i, nframes;
        GSList *l;
@@ -3137,7 +3129,7 @@ compute_frame_info_from (MonoInternalThread *thread, DebuggerTlsData *tls, MonoT
        res = g_new0 (StackFrame*, nframes);
        l = user_data.frames;
        for (i = 0; i < nframes; ++i) {
-               res [i] = l->data;
+               res [i] = (StackFrame *)l->data;
                l = l->next;
        }
        *out_nframes = nframes;
@@ -3152,7 +3144,7 @@ compute_frame_info (MonoInternalThread *thread, DebuggerTlsData *tls)
        GSList *tmp;
        int i, findex, new_frame_count;
        StackFrame **new_frames, *f;
-       MonoUnwindOptions opts = MONO_UNWIND_DEFAULT|MONO_UNWIND_REG_LOCATIONS;
+       MonoUnwindOptions opts = (MonoUnwindOptions)(MONO_UNWIND_DEFAULT | MONO_UNWIND_REG_LOCATIONS);
 
        // FIXME: Locking on tls
        if (tls->frames && tls->frames_up_to_date)
@@ -3193,7 +3185,7 @@ compute_frame_info (MonoInternalThread *thread, DebuggerTlsData *tls)
        new_frames = g_new0 (StackFrame*, new_frame_count);
        findex = 0;
        for (tmp = user_data.frames; tmp; tmp = tmp->next) {
-               f = tmp->data;
+               f = (StackFrame *)tmp->data;
 
                /* 
                 * Reuse the id for already existing stack frames, so invokes don't invalidate
@@ -3231,7 +3223,7 @@ static void
 emit_appdomain_load (gpointer key, gpointer value, gpointer user_data)
 {
        process_profiler_event (EVENT_KIND_APPDOMAIN_CREATE, value);
-       g_hash_table_foreach (get_agent_domain_info (value)->loaded_classes, emit_type_load, NULL);
+       g_hash_table_foreach (get_agent_domain_info ((MonoDomain *)value)->loaded_classes, emit_type_load, NULL);
 }
 
 /*
@@ -3243,7 +3235,7 @@ emit_appdomain_load (gpointer key, gpointer value, gpointer user_data)
 static void
 emit_thread_start (gpointer key, gpointer value, gpointer user_data)
 {
-       if (GPOINTER_TO_INT (key) != debugger_thread_id)
+       if (!mono_native_thread_id_equals (MONO_UINT_TO_NATIVE_THREAD_ID (GPOINTER_TO_UINT (key)), debugger_thread_id))
                process_profiler_event (EVENT_KIND_THREAD_START, value);
 }
 
@@ -3392,7 +3384,7 @@ create_event_list (EventKind event, GPtrArray *reqs, MonoJitInfo *ji, EventInfo
                return NULL;
 
        for (i = 0; i < reqs->len; ++i) {
-               EventRequest *req = g_ptr_array_index (reqs, i);
+               EventRequest *req = (EventRequest *)g_ptr_array_index (reqs, i);
                if (req->event_kind == event) {
                        gboolean filtered = FALSE;
 
@@ -3448,7 +3440,7 @@ create_event_list (EventKind event, GPtrArray *reqs, MonoJitInfo *ji, EventInfo
                                                if (minfo) {
                                                        mono_debug_get_seq_points (minfo, &source_file, &source_file_list, NULL, NULL, NULL);
                                                        for (i = 0; i < source_file_list->len; ++i) {
-                                                               sinfo = g_ptr_array_index (source_file_list, i);
+                                                               sinfo = (MonoDebugSourceInfo *)g_ptr_array_index (source_file_list, i);
                                                                /*
                                                                 * Do a case-insesitive match by converting the file name to
                                                                 * lowercase.
@@ -3600,14 +3592,14 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
 
                if (agent_config.defer) {
                        /* Make sure the thread id is always set when doing deferred debugging */
-                       if (debugger_thread_id == GetCurrentThreadId ()) {
+                       if (is_debugger_thread ()) {
                                /* Don't suspend on events from the debugger thread */
                                suspend_policy = SUSPEND_POLICY_NONE;
                                thread = mono_thread_get_main ();
                        }
                        else thread = mono_thread_current ();
                } else {
-                       if (debugger_thread_id == GetCurrentThreadId () && event != EVENT_KIND_VM_DEATH)
+                       if (is_debugger_thread () && event != EVENT_KIND_VM_DEATH)
                                // FIXME: Send these with a NULL thread, don't suspend the current thread
                                return;
                }
@@ -3628,7 +3620,7 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                        thread = mono_thread_current ();
 
                if (event == EVENT_KIND_VM_START && arg != NULL)
-                       thread = arg;
+                       thread = (MonoThread *)arg;
 
                buffer_add_objid (&buf, (MonoObject*)thread); // thread
 
@@ -3638,32 +3630,32 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                        break;
                case EVENT_KIND_APPDOMAIN_CREATE:
                case EVENT_KIND_APPDOMAIN_UNLOAD:
-                       buffer_add_domainid (&buf, arg);
+                       buffer_add_domainid (&buf, (MonoDomain *)arg);
                        break;
                case EVENT_KIND_METHOD_ENTRY:
                case EVENT_KIND_METHOD_EXIT:
-                       buffer_add_methodid (&buf, domain, arg);
+                       buffer_add_methodid (&buf, domain, (MonoMethod *)arg);
                        break;
                case EVENT_KIND_ASSEMBLY_LOAD:
-                       buffer_add_assemblyid (&buf, domain, arg);
+                       buffer_add_assemblyid (&buf, domain, (MonoAssembly *)arg);
                        break;
                case EVENT_KIND_ASSEMBLY_UNLOAD: {
                        DebuggerTlsData *tls;
 
                        /* The domain the assembly belonged to is not equal to the current domain */
-                       tls = mono_native_tls_get_value (debugger_tls_id);
+                       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
                        g_assert (tls);
                        g_assert (tls->domain_unloading);
 
-                       buffer_add_assemblyid (&buf, tls->domain_unloading, arg);
+                       buffer_add_assemblyid (&buf, tls->domain_unloading, (MonoAssembly *)arg);
                        break;
                }
                case EVENT_KIND_TYPE_LOAD:
-                       buffer_add_typeid (&buf, domain, arg);
+                       buffer_add_typeid (&buf, domain, (MonoClass *)arg);
                        break;
                case EVENT_KIND_BREAKPOINT:
                case EVENT_KIND_STEP:
-                       buffer_add_methodid (&buf, domain, arg);
+                       buffer_add_methodid (&buf, domain, (MonoMethod *)arg);
                        buffer_add_long (&buf, il_offset);
                        break;
                case EVENT_KIND_VM_START:
@@ -3674,7 +3666,7 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                                buffer_add_int (&buf, mono_environment_exitcode_get ());
                        break;
                case EVENT_KIND_EXCEPTION: {
-                       EventInfo *ei = arg;
+                       EventInfo *ei = (EventInfo *)arg;
                        buffer_add_objid (&buf, ei->exc);
                        /*
                         * We are not yet suspending, so get_objref () will not keep this object alive. So we need to do it
@@ -3686,7 +3678,7 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                case EVENT_KIND_USER_BREAK:
                        break;
                case EVENT_KIND_USER_LOG: {
-                       EventInfo *ei = arg;
+                       EventInfo *ei = (EventInfo *)arg;
                        buffer_add_int (&buf, ei->level);
                        buffer_add_string (&buf, ei->category ? ei->category : "");
                        buffer_add_string (&buf, ei->message ? ei->message : "");
@@ -3744,7 +3736,7 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                vm_start_event_sent = TRUE;
        }
 
-       DEBUG_PRINTF (1, "[%p] Sent %d events %s(%d), suspend=%d.\n", (gpointer)GetCurrentThreadId (), nevents, event_to_string (event), ecount, suspend_policy);
+       DEBUG_PRINTF (1, "[%p] Sent %d events %s(%d), suspend=%d.\n", (gpointer)mono_native_thread_id_get (), nevents, event_to_string (event), ecount, suspend_policy);
 
        switch (suspend_policy) {
        case SUSPEND_POLICY_NONE:
@@ -3768,7 +3760,7 @@ process_profiler_event (EventKind event, gpointer arg)
        EventInfo ei, *ei_arg = NULL;
 
        if (event == EVENT_KIND_TYPE_LOAD) {
-               ei.klass = arg;
+               ei.klass = (MonoClass *)arg;
                ei_arg = &ei;
        }
 
@@ -3802,13 +3794,13 @@ thread_startup (MonoProfiler *prof, uintptr_t tid)
        MonoInternalThread *old_thread;
        DebuggerTlsData *tls;
 
-       if (tid == debugger_thread_id)
+       if (mono_native_thread_id_equals (MONO_UINT_TO_NATIVE_THREAD_ID (tid), debugger_thread_id))
                return;
 
-       g_assert (thread->tid == tid);
+       g_assert (mono_native_thread_id_equals (MONO_UINT_TO_NATIVE_THREAD_ID (tid), MONO_UINT_TO_NATIVE_THREAD_ID (thread->tid)));
 
        mono_loader_lock ();
-       old_thread = mono_g_hash_table_lookup (tid_to_thread, (gpointer)tid);
+       old_thread = (MonoInternalThread *)mono_g_hash_table_lookup (tid_to_thread, GUINT_TO_POINTER (tid));
        mono_loader_unlock ();
        if (old_thread) {
                if (thread == old_thread) {
@@ -3816,23 +3808,23 @@ thread_startup (MonoProfiler *prof, uintptr_t tid)
                         * For some reason, thread_startup () might be called for the same thread
                         * multiple times (attach ?).
                         */
-                       DEBUG_PRINTF (1, "[%p] thread_start () called multiple times for %p, ignored.\n", (gpointer)tid, (gpointer)tid);
+                       DEBUG_PRINTF (1, "[%p] thread_start () called multiple times for %p, ignored.\n", GUINT_TO_POINTER (tid), GUINT_TO_POINTER (tid));
                        return;
                } else {
                        /*
                         * thread_end () might not be called for some threads, and the tid could
                         * get reused.
                         */
-                       DEBUG_PRINTF (1, "[%p] Removing stale data for tid %p.\n", (gpointer)tid, (gpointer)tid);
+                       DEBUG_PRINTF (1, "[%p] Removing stale data for tid %p.\n", GUINT_TO_POINTER (tid), GUINT_TO_POINTER (tid));
                        mono_loader_lock ();
                        mono_g_hash_table_remove (thread_to_tls, old_thread);
-                       mono_g_hash_table_remove (tid_to_thread, (gpointer)tid);
-                       mono_g_hash_table_remove (tid_to_thread_obj, (gpointer)tid);
+                       mono_g_hash_table_remove (tid_to_thread, GUINT_TO_POINTER (tid));
+                       mono_g_hash_table_remove (tid_to_thread_obj, GUINT_TO_POINTER (tid));
                        mono_loader_unlock ();
                }
        }
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (!tls);
        // FIXME: Free this somewhere
        tls = g_new0 (DebuggerTlsData, 1);
@@ -3845,7 +3837,7 @@ thread_startup (MonoProfiler *prof, uintptr_t tid)
        mono_loader_lock ();
        mono_g_hash_table_insert (thread_to_tls, thread, tls);
        mono_g_hash_table_insert (tid_to_thread, (gpointer)tid, thread);
-       mono_g_hash_table_insert (tid_to_thread_obj, (gpointer)tid, mono_thread_current ());
+       mono_g_hash_table_insert (tid_to_thread_obj, GUINT_TO_POINTER (tid), mono_thread_current ());
        mono_loader_unlock ();
 
        process_profiler_event (EVENT_KIND_THREAD_START, thread);
@@ -3863,10 +3855,10 @@ thread_end (MonoProfiler *prof, uintptr_t tid)
        DebuggerTlsData *tls = NULL;
 
        mono_loader_lock ();
-       thread = mono_g_hash_table_lookup (tid_to_thread, (gpointer)tid);
+       thread = (MonoInternalThread *)mono_g_hash_table_lookup (tid_to_thread, GUINT_TO_POINTER (tid));
        if (thread) {
-               mono_g_hash_table_remove (tid_to_thread_obj, (gpointer)tid);
-               tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+               mono_g_hash_table_remove (tid_to_thread_obj, GUINT_TO_POINTER (tid));
+               tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
                if (tls) {
                        /* FIXME: Maybe we need to free this instead, but some code can't handle that */
                        tls->terminated = TRUE;
@@ -3881,7 +3873,9 @@ thread_end (MonoProfiler *prof, uintptr_t tid)
        if (thread) {
                DEBUG_PRINTF (1, "[%p] Thread terminated, obj=%p, tls=%p.\n", (gpointer)tid, thread, tls);
 
-               if (GetCurrentThreadId () == tid && !mono_native_tls_get_value (debugger_tls_id)) {
+               if (mono_native_thread_id_equals (mono_native_thread_id_get (), MONO_UINT_TO_NATIVE_THREAD_ID (tid))
+                    && !mono_native_tls_get_value (debugger_tls_id)
+               ) {
                        /*
                         * This can happen on darwin since we deregister threads using pthread dtors.
                         * process_profiler_event () and the code it calls cannot handle a null TLS value.
@@ -3916,7 +3910,7 @@ appdomain_start_unload (MonoProfiler *prof, MonoDomain *domain)
         * Remember the currently unloading appdomain as it is needed to generate
         * proper ids for unloading assemblies.
         */
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
        tls->domain_unloading = domain;
 }
@@ -3929,7 +3923,7 @@ appdomain_unload (MonoProfiler *prof, MonoDomain *domain)
        if (is_debugger_thread ())
                return;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
        tls->domain_unloading = NULL;
 
@@ -3952,7 +3946,7 @@ appdomain_unload (MonoProfiler *prof, MonoDomain *domain)
 static void
 invalidate_each_thread (gpointer key, gpointer value, gpointer user_data)
 {
-       invalidate_frames (value);
+       invalidate_frames ((DebuggerTlsData *)value);
 }
 
 static void
@@ -4031,7 +4025,7 @@ jit_end (MonoProfiler *prof, MonoMethod *method, MonoJitInfo *jinfo, int result)
                // FIXME: Maybe store this in TLS so the thread of the event is correct ?
                dbg_lock ();
                if (pending_assembly_loads->len > 0) {
-                       assembly = g_ptr_array_index (pending_assembly_loads, 0);
+                       assembly = (MonoAssembly *)g_ptr_array_index (pending_assembly_loads, 0);
                        g_ptr_array_remove_index (pending_assembly_loads, 0);
                }
                dbg_unlock ();
@@ -4268,14 +4262,14 @@ add_pending_breakpoints (MonoMethod *method, MonoJitInfo *ji)
        mono_loader_lock ();
 
        for (i = 0; i < breakpoints->len; ++i) {
-               MonoBreakpoint *bp = g_ptr_array_index (breakpoints, i);
+               MonoBreakpoint *bp = (MonoBreakpoint *)g_ptr_array_index (breakpoints, i);
                gboolean found = FALSE;
 
                if (!bp_matches_method (bp, method))
                        continue;
 
                for (j = 0; j < bp->children->len; ++j) {
-                       BreakpointInstance *inst = g_ptr_array_index (bp->children, j);
+                       BreakpointInstance *inst = (BreakpointInstance *)g_ptr_array_index (bp->children, j);
 
                        if (inst->ji == ji)
                                found = TRUE;
@@ -4289,9 +4283,9 @@ add_pending_breakpoints (MonoMethod *method, MonoJitInfo *ji)
                                declaring = mono_method_get_declaring_generic_method (jmethod);
 
                        mono_domain_lock (domain);
-                       seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, jmethod);
+                       seq_points = (MonoSeqPointInfo *)g_hash_table_lookup (domain_jit_info (domain)->seq_points, jmethod);
                        if (!seq_points && declaring)
-                               seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, declaring);
+                               seq_points = (MonoSeqPointInfo *)g_hash_table_lookup (domain_jit_info (domain)->seq_points, declaring);
                        mono_domain_unlock (domain);
                        if (!seq_points)
                                /* Could be AOT code */
@@ -4319,7 +4313,7 @@ set_bp_in_method (MonoDomain *domain, MonoMethod *method, MonoSeqPointInfo *seq_
                /* Might be AOTed code */
                code = mono_aot_get_method (domain, method);
                g_assert (code);
-               ji = mono_jit_info_table_find (domain, code);
+               ji = mono_jit_info_table_find (domain, (char *)code);
                g_assert (ji);
        }
        g_assert (code);
@@ -4391,9 +4385,9 @@ set_breakpoint (MonoMethod *method, long il_offset, EventRequest *req, MonoError
        }
 
        for (i = 0; i < methods->len; ++i) {
-               m = g_ptr_array_index (methods, i);
-               domain = g_ptr_array_index (method_domains, i);
-               seq_points = g_ptr_array_index (method_seq_points, i);
+               m = (MonoMethod *)g_ptr_array_index (methods, i);
+               domain = (MonoDomain *)g_ptr_array_index (method_domains, i);
+               seq_points = (MonoSeqPointInfo *)g_ptr_array_index (method_seq_points, i);
                set_bp_in_method (domain, m, seq_points, bp, error);
        }
 
@@ -4419,7 +4413,7 @@ clear_breakpoint (MonoBreakpoint *bp)
 
        // FIXME: locking, races
        for (i = 0; i < bp->children->len; ++i) {
-               BreakpointInstance *inst = g_ptr_array_index (bp->children, i);
+               BreakpointInstance *inst = (BreakpointInstance *)g_ptr_array_index (bp->children, i);
 
                remove_breakpoint (inst);
 
@@ -4442,10 +4436,10 @@ breakpoints_cleanup (void)
        mono_loader_lock ();
        i = 0;
        while (i < event_requests->len) {
-               EventRequest *req = g_ptr_array_index (event_requests, i);
+               EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, i);
 
                if (req->event_kind == EVENT_KIND_BREAKPOINT) {
-                       clear_breakpoint (req->info);
+                       clear_breakpoint ((MonoBreakpoint *)req->info);
                        g_ptr_array_remove_index_fast (event_requests, i);
                        g_free (req);
                } else {
@@ -4481,11 +4475,11 @@ clear_breakpoints_for_domain (MonoDomain *domain)
 
        mono_loader_lock ();
        for (i = 0; i < breakpoints->len; ++i) {
-               MonoBreakpoint *bp = g_ptr_array_index (breakpoints, i);
+               MonoBreakpoint *bp = (MonoBreakpoint *)g_ptr_array_index (breakpoints, i);
 
                j = 0;
                while (j < bp->children->len) {
-                       BreakpointInstance *inst = g_ptr_array_index (bp->children, j);
+                       BreakpointInstance *inst = (BreakpointInstance *)g_ptr_array_index (bp->children, j);
 
                        if (inst->domain == domain) {
                                remove_breakpoint (inst);
@@ -4518,7 +4512,7 @@ ss_update (SingleStepReq *req, MonoJitInfo *ji, SeqPoint *sp, DebuggerTlsData *t
                /*
                 * These seq points are inserted by the JIT after calls, step over needs to skip them.
                 */
-               DEBUG_PRINTF (1, "[%p] Seq point at nonempty stack %x while stepping over, continuing single stepping.\n", (gpointer)GetCurrentThreadId (), sp->il_offset);
+               DEBUG_PRINTF (1, "[%p] Seq point at nonempty stack %x while stepping over, continuing single stepping.\n", (gpointer)mono_native_thread_id_get (), sp->il_offset);
                return FALSE;
        }
 
@@ -4528,7 +4522,7 @@ ss_update (SingleStepReq *req, MonoJitInfo *ji, SeqPoint *sp, DebuggerTlsData *t
                compute_frame_info (tls->thread, tls);
                if (req->nframes && tls->frame_count && tls->frame_count > req->nframes) {
                        /* Hit the breakpoint in a recursive call */
-                       DEBUG_PRINTF (1, "[%p] Breakpoint at lower frame while stepping over, continuing single stepping.\n", (gpointer)GetCurrentThreadId ());
+                       DEBUG_PRINTF (1, "[%p] Breakpoint at lower frame while stepping over, continuing single stepping.\n", (gpointer)mono_native_thread_id_get ());
                        return FALSE;
                }
        }
@@ -4539,7 +4533,7 @@ ss_update (SingleStepReq *req, MonoJitInfo *ji, SeqPoint *sp, DebuggerTlsData *t
                        mono_thread_state_init_from_monoctx (&tls->context, ctx);
                compute_frame_info (tls->thread, tls);
                if (ss_req->start_method == method && req->nframes && tls->frame_count == req->nframes) {//Check also frame count(could be recursion)
-                       DEBUG_PRINTF (1, "[%p] Seq point at nonempty stack %x while stepping in, continuing single stepping.\n", (gpointer)GetCurrentThreadId (), sp->il_offset);
+                       DEBUG_PRINTF (1, "[%p] Seq point at nonempty stack %x while stepping in, continuing single stepping.\n", (gpointer)mono_native_thread_id_get (), sp->il_offset);
                        return FALSE;
                }
        }
@@ -4552,14 +4546,14 @@ ss_update (SingleStepReq *req, MonoJitInfo *ji, SeqPoint *sp, DebuggerTlsData *t
        minfo = mono_debug_lookup_method (method);
 
        if (minfo)
-               loc = mono_debug_symfile_lookup_location (minfo, sp->il_offset);
+               loc = mono_debug_method_lookup_location (minfo, sp->il_offset);
 
        if (!loc) {
-               DEBUG_PRINTF (1, "[%p] No line number info for il offset %x, continuing single stepping.\n", (gpointer)GetCurrentThreadId (), sp->il_offset);
+               DEBUG_PRINTF (1, "[%p] No line number info for il offset %x, continuing single stepping.\n", (gpointer)mono_native_thread_id_get (), sp->il_offset);
                ss_req->last_method = method;
                hit = FALSE;
        } else if (loc && method == ss_req->last_method && loc->row == ss_req->last_line) {
-               DEBUG_PRINTF (1, "[%p] Same source line (%d), continuing single stepping.\n", (gpointer)GetCurrentThreadId (), loc->row);
+               DEBUG_PRINTF (1, "[%p] Same source line (%d), continuing single stepping.\n", (gpointer)mono_native_thread_id_get (), loc->row);
                hit = FALSE;
        }
                                
@@ -4598,7 +4592,7 @@ process_breakpoint_inner (DebuggerTlsData *tls, gboolean from_signal)
 
        // FIXME: Speed this up
 
-       ip = MONO_CONTEXT_GET_IP (ctx);
+       ip = (guint8 *)MONO_CONTEXT_GET_IP (ctx);
        ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, NULL);
        g_assert (ji && !ji->is_trampoline);
        method = jinfo_get_method (ji);
@@ -4628,21 +4622,21 @@ process_breakpoint_inner (DebuggerTlsData *tls, gboolean from_signal)
        found_sp = mono_find_prev_seq_point_for_native_offset (mono_domain_get (), method, native_offset, &info, &sp);
 
        if (!found_sp)
-               no_seq_points_found (method);
+               no_seq_points_found (method, native_offset);
 
        g_assert (found_sp);
 
-       DEBUG_PRINTF (1, "[%p] Breakpoint hit, method=%s, ip=%p, [il=0x%x,native=0x%x].\n", (gpointer)GetCurrentThreadId (), method->name, ip, sp.il_offset, native_offset);
+       DEBUG_PRINTF (1, "[%p] Breakpoint hit, method=%s, ip=%p, [il=0x%x,native=0x%x].\n", (gpointer)mono_native_thread_id_get (), method->name, ip, sp.il_offset, native_offset);
 
        bp = NULL;
        for (i = 0; i < breakpoints->len; ++i) {
-               bp = g_ptr_array_index (breakpoints, i);
+               bp = (MonoBreakpoint *)g_ptr_array_index (breakpoints, i);
 
                if (!bp->method)
                        continue;
 
                for (j = 0; j < bp->children->len; ++j) {
-                       inst = g_ptr_array_index (bp->children, j);
+                       inst = (BreakpointInstance *)g_ptr_array_index (bp->children, j);
                        if (inst->ji == ji && inst->il_offset == sp.il_offset && inst->native_offset == sp.native_offset) {
                                if (bp->req->event_kind == EVENT_KIND_STEP) {
                                        g_ptr_array_add (ss_reqs_orig, bp->req);
@@ -4662,8 +4656,8 @@ process_breakpoint_inner (DebuggerTlsData *tls, gboolean from_signal)
 
        /* Process single step requests */
        for (i = 0; i < ss_reqs_orig->len; ++i) {
-               EventRequest *req = g_ptr_array_index (ss_reqs_orig, i);
-               SingleStepReq *ss_req = req->info;
+               EventRequest *req = (EventRequest *)g_ptr_array_index (ss_reqs_orig, i);
+               SingleStepReq *ss_req = (SingleStepReq *)req->info;
                gboolean hit;
 
                if (mono_thread_internal_current () != ss_req->thread)
@@ -4709,7 +4703,7 @@ process_signal_event (void (*func) (DebuggerTlsData*, gboolean))
        MonoThreadUnwindState orig_restore_state;
        MonoContext ctx;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        /* Have to save/restore the restore_ctx as we can be called recursively during invokes etc. */
        memcpy (&orig_restore_state, &tls->restore_state, sizeof (MonoThreadUnwindState));
        mono_thread_state_init_from_monoctx (&tls->restore_state, &tls->handler_ctx);
@@ -4737,9 +4731,9 @@ resume_from_signal_handler (void *sigctx, void *func)
 
        /* Save the original context in TLS */
        // FIXME: This might not work on an altstack ?
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        if (!tls)
-               fprintf (stderr, "Thread %p is not attached to the JIT.\n", (gpointer)GetCurrentThreadId ());
+               fprintf (stderr, "Thread %p is not attached to the JIT.\n", (gpointer)mono_native_thread_id_get ());
        g_assert (tls);
 
        // FIXME: MonoContext usually doesn't include the fp registers, so these are 
@@ -4796,7 +4790,7 @@ mono_debugger_agent_user_break (void)
 
                /* Obtain a context */
                MONO_CONTEXT_SET_IP (&ctx, NULL);
-               mono_walk_stack_with_ctx (user_break_cb, NULL, 0, &ctx);
+               mono_walk_stack_with_ctx (user_break_cb, NULL, (MonoUnwindOptions)0, &ctx);
                g_assert (MONO_CONTEXT_GET_IP (&ctx) != NULL);
 
                mono_loader_lock ();
@@ -4839,13 +4833,16 @@ process_single_step_inner (DebuggerTlsData *tls, gboolean from_signal)
        SeqPoint sp;
        MonoSeqPointInfo *info;
 
-       ip = MONO_CONTEXT_GET_IP (ctx);
+       ip = (guint8 *)MONO_CONTEXT_GET_IP (ctx);
 
        /* Skip the instruction causing the single step */
        if (from_signal)
                mono_arch_skip_single_step (ctx);
 
        if (suspend_count > 0) {
+               /* Fastpath during invokes, see in process_suspend () */
+               if (suspend_count - tls->resume_count == 0)
+                       return;
                process_suspend (tls, ctx);
                return;
        }
@@ -4860,7 +4857,7 @@ process_single_step_inner (DebuggerTlsData *tls, gboolean from_signal)
        if (log_level > 0) {
                ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, &domain);
 
-               DEBUG_PRINTF (1, "[%p] Single step event (depth=%s) at %s (%p)[0x%x], sp %p, last sp %p\n", (gpointer)GetCurrentThreadId (), ss_depth_to_string (ss_req->depth), mono_method_full_name (jinfo_get_method (ji), TRUE), MONO_CONTEXT_GET_IP (ctx), (int)((guint8*)MONO_CONTEXT_GET_IP (ctx) - (guint8*)ji->code_start), MONO_CONTEXT_GET_SP (ctx), ss_req->last_sp);
+               DEBUG_PRINTF (1, "[%p] Single step event (depth=%s) at %s (%p)[0x%x], sp %p, last sp %p\n", (gpointer)mono_native_thread_id_get (), ss_depth_to_string (ss_req->depth), mono_method_full_name (jinfo_get_method (ji), TRUE), MONO_CONTEXT_GET_IP (ctx), (int)((guint8*)MONO_CONTEXT_GET_IP (ctx) - (guint8*)ji->code_start), MONO_CONTEXT_GET_SP (ctx), ss_req->last_sp);
        }
 
        ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, &domain);
@@ -4936,7 +4933,7 @@ mono_debugger_agent_single_step_event (void *sigctx)
        // be as fast as possible. Move the relevant code from process_single_step_inner ()
        // here
 
-       if (GetCurrentThreadId () == debugger_thread_id) {
+       if (is_debugger_thread ()) {
                /* 
                 * This could happen despite our best effors when the runtime calls 
                 * assembly/type resolve hooks.
@@ -4959,10 +4956,14 @@ debugger_agent_single_step_from_context (MonoContext *ctx)
        DebuggerTlsData *tls;
        MonoThreadUnwindState orig_restore_state;
 
-       if (GetCurrentThreadId () == debugger_thread_id)
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
+       /* Fastpath during invokes, see in process_suspend () */
+       if (tls && suspend_count && suspend_count - tls->resume_count == 0)
+               return;
+
+       if (is_debugger_thread ())
                return;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
 
        /* Have to save/restore the restore_ctx as we can be called recursively during invokes etc. */
@@ -4983,13 +4984,13 @@ debugger_agent_breakpoint_from_context (MonoContext *ctx)
        MonoThreadUnwindState orig_restore_state;
        guint8 *orig_ip;
 
-       if (GetCurrentThreadId () == debugger_thread_id)
+       if (is_debugger_thread ())
                return;
 
-       orig_ip = MONO_CONTEXT_GET_IP (ctx);
+       orig_ip = (guint8 *)MONO_CONTEXT_GET_IP (ctx);
        MONO_CONTEXT_SET_IP (ctx, orig_ip - 1);
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
        memcpy (&orig_restore_state, &tls->restore_state, sizeof (MonoThreadUnwindState));
        mono_thread_state_init_from_monoctx (&tls->restore_state, ctx);
@@ -5047,7 +5048,7 @@ ss_stop (SingleStepReq *ss_req)
                GSList *l;
 
                for (l = ss_req->bps; l; l = l->next) {
-                       clear_breakpoint (l->data);
+                       clear_breakpoint ((MonoBreakpoint *)l->data);
                }
                g_slist_free (ss_req->bps);
                ss_req->bps = NULL;
@@ -5276,7 +5277,7 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, StepFilte
        req->info = ss_req;
 
        mono_loader_lock ();
-       tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+       tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
        mono_loader_unlock ();
        g_assert (tls);
        g_assert (tls->context.valid);
@@ -5302,7 +5303,10 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, StepFilte
                 */
 
                /* Find the the jit info for the catch context */
-               res = mono_find_jit_info_ext (tls->catch_state.unwind_data [MONO_UNWIND_DATA_DOMAIN], ((MonoThreadInfo*)thread->thread_info)->jit_data, NULL, &tls->catch_state.ctx, &new_ctx, NULL, &lmf, NULL, &frame);
+               res = mono_find_jit_info_ext (
+                       (MonoDomain *)tls->catch_state.unwind_data [MONO_UNWIND_DATA_DOMAIN],
+                       (MonoJitTlsData *)((MonoThreadInfo*)thread->thread_info)->jit_data,
+                       NULL, &tls->catch_state.ctx, &new_ctx, NULL, &lmf, NULL, &frame);
                g_assert (res);
                g_assert (frame.type == FRAME_TYPE_MANAGED);
 
@@ -5313,7 +5317,7 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, StepFilte
                found_sp = mono_find_next_seq_point_for_native_offset (frame.domain, frame.method, frame.native_offset, &info, &local_sp);
                sp = (found_sp)? &local_sp : NULL;
                if (!sp)
-                       no_seq_points_found (frame.method);
+                       no_seq_points_found (frame.method, frame.native_offset);
                g_assert (sp);
 
                method = frame.method;
@@ -5343,7 +5347,7 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, StepFilte
 
                                minfo = mono_debug_lookup_method (frame->method);
                                if (minfo && frame->il_offset != -1) {
-                                       MonoDebugSourceLocation *loc = mono_debug_symfile_lookup_location (minfo, frame->il_offset);
+                                       MonoDebugSourceLocation *loc = mono_debug_method_lookup_location (minfo, frame->il_offset);
 
                                        if (loc) {
                                                ss_req->last_line = loc->row;
@@ -5359,7 +5363,7 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, StepFilte
                                found_sp = mono_find_prev_seq_point_for_native_offset (frame->domain, frame->method, frame->native_offset, &info, &local_sp);
                                sp = (found_sp)? &local_sp : NULL;
                                if (!sp)
-                                       no_seq_points_found (frame->method);
+                                       no_seq_points_found (frame->method, frame->native_offset);
                                g_assert (sp);
                                method = frame->method;
                        }
@@ -5373,7 +5377,7 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, StepFilte
        if (frames)
                free_frames (frames, nframes);
 
-       return 0;
+       return ERR_NONE;
 }
 
 static void
@@ -5397,8 +5401,8 @@ ss_clear_for_assembly (SingleStepReq *req, MonoAssembly *assembly)
        while (found) {
                found = FALSE;
                for (l = ss_req->bps; l; l = l->next) {
-                       if (breakpoint_matches_assembly (l->data, assembly)) {
-                               clear_breakpoint (l->data);
+                       if (breakpoint_matches_assembly ((MonoBreakpoint *)l->data, assembly)) {
+                               clear_breakpoint ((MonoBreakpoint *)l->data);
                                ss_req->bps = g_slist_delete_link (ss_req->bps, l);
                                found = TRUE;
                                break;
@@ -5477,7 +5481,7 @@ mono_debugger_agent_handle_exception (MonoException *exc, MonoContext *throw_ctx
                MonoInternalThread *thread = mono_thread_internal_current ();
 
                mono_loader_lock ();
-               tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+               tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
                mono_loader_unlock ();
 
                if (tls && tls->abort_requested)
@@ -5506,7 +5510,7 @@ mono_debugger_agent_handle_exception (MonoException *exc, MonoContext *throw_ctx
                gboolean found = FALSE;
 
                for (l = agent_config.onthrow; l; l = l->next) {
-                       char *ex_type = l->data;
+                       char *ex_type = (char *)l->data;
                        char *f = mono_type_full_name (&exc->object.vtable->klass->byval_arg);
 
                        if (!strcmp (ex_type, "") || !strcmp (ex_type, f))
@@ -5531,9 +5535,9 @@ mono_debugger_agent_handle_exception (MonoException *exc, MonoContext *throw_ctx
        if (!inited)
                return;
 
-       ji = mini_jit_info_table_find (mono_domain_get (), MONO_CONTEXT_GET_IP (throw_ctx), NULL);
+       ji = mini_jit_info_table_find (mono_domain_get (), (char *)MONO_CONTEXT_GET_IP (throw_ctx), NULL);
        if (catch_ctx)
-               catch_ji = mini_jit_info_table_find (mono_domain_get (), MONO_CONTEXT_GET_IP (catch_ctx), NULL);
+               catch_ji = mini_jit_info_table_find (mono_domain_get (), (char *)MONO_CONTEXT_GET_IP (catch_ctx), NULL);
        else
                catch_ji = NULL;
 
@@ -5544,7 +5548,7 @@ mono_debugger_agent_handle_exception (MonoException *exc, MonoContext *throw_ctx
 
        /* Treat exceptions which are caught in non-user code as unhandled */
        for (i = 0; i < event_requests->len; ++i) {
-               EventRequest *req = g_ptr_array_index (event_requests, i);
+               EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, i);
                if (req->event_kind != EVENT_KIND_EXCEPTION)
                        continue;
 
@@ -5591,7 +5595,7 @@ mono_debugger_agent_begin_exception_filter (MonoException *exc, MonoContext *ctx
        if (!inited)
                return;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        if (!tls)
                return;
 
@@ -5630,7 +5634,7 @@ mono_debugger_agent_end_exception_filter (MonoException *exc, MonoContext *ctx,
        if (!inited)
                return;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        if (!tls)
                return;
 
@@ -5860,20 +5864,20 @@ decode_vtype (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8
        int nfields;
        gpointer iter = NULL;
        MonoDomain *d;
-       int err;
+       ErrorCode err;
 
        is_enum = decode_byte (buf, &buf, limit);
        /* Enums are sent as a normal vtype */
        if (is_enum)
                return ERR_NOT_IMPLEMENTED;
        klass = decode_typeid (buf, &buf, limit, &d, &err);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        if (t && klass != mono_class_from_mono_type (t)) {
                char *name = mono_type_full_name (t);
                char *name2 = mono_type_full_name (&klass->byval_arg);
-               DEBUG_PRINTF (1, "[%p] Expected value of type %s, got %s.\n", (gpointer)GetCurrentThreadId (), name, name2);
+               DEBUG_PRINTF (1, "[%p] Expected value of type %s, got %s.\n", (gpointer)mono_native_thread_id_get (), name, name2);
                g_free (name);
                g_free (name2);
                return ERR_INVALID_ARGUMENT;
@@ -5886,7 +5890,7 @@ decode_vtype (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8
                if (mono_field_is_deleted (f))
                        continue;
                err = decode_value (f->type, domain, (guint8*)addr + f->offset - sizeof (MonoObject), buf, &buf, limit);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                nfields --;
        }
@@ -5894,13 +5898,13 @@ decode_vtype (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8
 
        *endbuf = buf;
 
-       return 0;
+       return ERR_NONE;
 }
 
 static ErrorCode
 decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8 **endbuf, guint8 *limit)
 {
-       int err;
+       ErrorCode err;
 
        if (type != t->type && !MONO_TYPE_IS_REFERENCE (t) &&
                !(t->type == MONO_TYPE_I && type == MONO_TYPE_VALUETYPE) &&
@@ -5909,7 +5913,7 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
                !(t->type == MONO_TYPE_GENERICINST && type == MONO_TYPE_VALUETYPE) &&
                !(t->type == MONO_TYPE_VALUETYPE && type == MONO_TYPE_OBJECT)) {
                char *name = mono_type_full_name (t);
-               DEBUG_PRINTF (1, "[%p] Expected value of type %s, got 0x%0x.\n", (gpointer)GetCurrentThreadId (), name, type);
+               DEBUG_PRINTF (1, "[%p] Expected value of type %s, got 0x%0x.\n", (gpointer)mono_native_thread_id_get (), name, type);
                g_free (name);
                return ERR_INVALID_ARGUMENT;
        }
@@ -5974,11 +5978,11 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
                if (type == MONO_TYPE_OBJECT) {
                        /* Boxed vtype */
                        int objid = decode_objid (buf, &buf, limit);
-                       int err;
+                       ErrorCode err;
                        MonoObject *obj;
 
                        err = get_object (objid, (MonoObject**)&obj);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
                        if (!obj)
                                return ERR_INVALID_ARGUMENT;
@@ -5989,7 +5993,7 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
                        memcpy (addr, mono_object_unbox (obj), mono_class_value_size (obj->vtable->klass, NULL));
                } else {
                        err = decode_vtype (t, domain, addr, buf, &buf, limit);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
                }
                break;
@@ -5998,11 +6002,11 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
                if (MONO_TYPE_IS_REFERENCE (t)) {
                        if (type == MONO_TYPE_OBJECT) {
                                int objid = decode_objid (buf, &buf, limit);
-                               int err;
+                               ErrorCode err;
                                MonoObject *obj;
 
                                err = get_object (objid, (MonoObject**)&obj);
-                               if (err)
+                               if (err != ERR_NONE)
                                        return err;
 
                                if (obj) {
@@ -6035,17 +6039,17 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
                                if (is_enum)
                                        return ERR_NOT_IMPLEMENTED;
                                klass = decode_typeid (buf, &buf, limit, &d, &err);
-                               if (err)
+                               if (err != ERR_NONE)
                                        return err;
 
                                /* Decode the vtype into a temporary buffer, then box it. */
                                vtype_buf_size = mono_class_value_size (klass, NULL);
-                               vtype_buf = g_malloc0 (vtype_buf_size);
+                               vtype_buf = (guint8 *)g_malloc0 (vtype_buf_size);
                                g_assert (vtype_buf);
 
                                buf = buf2;
                                err = decode_vtype (NULL, domain, vtype_buf, buf, &buf, limit);
-                               if (err) {
+                               if (err != ERR_NONE) {
                                        g_free (vtype_buf);
                                        return err;
                                }
@@ -6053,7 +6057,7 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
                                g_free (vtype_buf);
                        } else {
                                char *name = mono_type_full_name (t);
-                               DEBUG_PRINTF (1, "[%p] Expected value of type %s, got 0x%0x.\n", (gpointer)GetCurrentThreadId (), name, type);
+                               DEBUG_PRINTF (1, "[%p] Expected value of type %s, got 0x%0x.\n", (gpointer)mono_native_thread_id_get (), name, type);
                                g_free (name);
                                return ERR_INVALID_ARGUMENT;
                        }
@@ -6065,13 +6069,13 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
 
        *endbuf = buf;
 
-       return 0;
+       return ERR_NONE;
 }
 
 static ErrorCode
 decode_value (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8 **endbuf, guint8 *limit)
 {
-       int err;
+       ErrorCode err;
        int type = decode_byte (buf, &buf, limit);
 
        if (t->type == MONO_TYPE_GENERICINST && mono_class_is_nullable (mono_class_from_mono_type (t))) {
@@ -6082,16 +6086,16 @@ decode_value (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8
                 * First try decoding it as a Nullable`1
                 */
                err = decode_value_internal (t, type, domain, addr, buf, endbuf, limit);
-               if (!err)
+               if (err == ERR_NONE)
                        return err;
 
                /*
                 * Then try decoding as a primitive value or null.
                 */
                if (targ->type == type) {
-                       nullable_buf = g_malloc (mono_class_instance_size (mono_class_from_mono_type (targ)));
+                       nullable_buf = (guint8 *)g_malloc (mono_class_instance_size (mono_class_from_mono_type (targ)));
                        err = decode_value_internal (targ, type, domain, nullable_buf, buf, endbuf, limit);
-                       if (err) {
+                       if (err != ERR_NONE) {
                                g_free (nullable_buf);
                                return err;
                        }
@@ -6127,7 +6131,7 @@ add_var (Buffer *buf, MonoDebugMethodJitInfo *jit, MonoType *t, MonoDebugVarInfo
                buffer_add_value_full (buf, t, &reg_val, domain, as_vtype, NULL);
                break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET:
-               addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                addr += (gint32)var->offset;
 
                //printf ("[R%d+%d] = %p\n", reg, var->offset, addr);
@@ -6140,10 +6144,10 @@ add_var (Buffer *buf, MonoDebugMethodJitInfo *jit, MonoType *t, MonoDebugVarInfo
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
        case MONO_DEBUG_VAR_ADDRESS_MODE_VTADDR:
                /* Same as regoffset, but with an indirection */
-               addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                addr += (gint32)var->offset;
 
-               gaddr = *(gpointer*)addr;
+               gaddr = (guint8 *)*(gpointer*)addr;
                g_assert (gaddr);
                buffer_add_value_full (buf, t, gaddr, domain, as_vtype, NULL);
                break;
@@ -6162,11 +6166,11 @@ add_var (Buffer *buf, MonoDebugMethodJitInfo *jit, MonoType *t, MonoDebugVarInfo
                flags = info_var->index & MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
                reg = info_var->index & ~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
                if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET) {
-                       addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                        addr += (gint32)info_var->offset;
-                       info = *(gpointer*)addr;
+                       info = (MonoGSharedVtMethodRuntimeInfo *)*(gpointer*)addr;
                } else if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER) {
-                       info = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       info = (MonoGSharedVtMethodRuntimeInfo *)mono_arch_context_get_int_reg (ctx, reg);
                } else {
                        g_assert_not_reached ();
                }
@@ -6175,11 +6179,11 @@ add_var (Buffer *buf, MonoDebugMethodJitInfo *jit, MonoType *t, MonoDebugVarInfo
                flags = locals_var->index & MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
                reg = locals_var->index & ~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
                if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET) {
-                       addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                        addr += (gint32)locals_var->offset;
-                       locals = *(gpointer*)addr;
+                       locals = (guint8 *)*(gpointer*)addr;
                } else if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER) {
-                       locals = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       locals = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                } else {
                        g_assert_not_reached ();
                }
@@ -6218,7 +6222,7 @@ set_var (MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domai
                gboolean is_signed = FALSE;
 
                if (t->byref) {
-                       addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
 
                        if (addr) {
                                // FIXME: Write barriers
@@ -6267,7 +6271,7 @@ set_var (MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domai
                break;
        }
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET:
-               addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                addr += (gint32)var->offset;
 
                //printf ("[R%d+%d] = %p\n", reg, var->offset, addr);
@@ -6284,10 +6288,10 @@ set_var (MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domai
                break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
                /* Same as regoffset, but with an indirection */
-               addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               addr = (guint8 *)mono_arch_context_get_int_reg (ctx, reg);
                addr += (gint32)var->offset;
 
-               gaddr = *(gpointer*)addr;
+               gaddr = (guint8 *)*(gpointer*)addr;
                g_assert (gaddr);
                // FIXME: Write barriers
                mono_gc_memmove_atomic (gaddr, val, size);
@@ -6307,17 +6311,17 @@ clear_event_request (int req_id, int etype)
 
        mono_loader_lock ();
        for (i = 0; i < event_requests->len; ++i) {
-               EventRequest *req = g_ptr_array_index (event_requests, i);
+               EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, i);
 
                if (req->id == req_id && req->event_kind == etype) {
                        if (req->event_kind == EVENT_KIND_BREAKPOINT)
-                               clear_breakpoint (req->info);
+                               clear_breakpoint ((MonoBreakpoint *)req->info);
                        if (req->event_kind == EVENT_KIND_STEP)
-                               ss_destroy (req->info);
+                               ss_destroy ((SingleStepReq *)req->info);
                        if (req->event_kind == EVENT_KIND_METHOD_ENTRY)
-                               clear_breakpoint (req->info);
+                               clear_breakpoint ((MonoBreakpoint *)req->info);
                        if (req->event_kind == EVENT_KIND_METHOD_EXIT)
-                               clear_breakpoint (req->info);
+                               clear_breakpoint ((MonoBreakpoint *)req->info);
                        g_ptr_array_remove_index_fast (event_requests, i);
                        g_free (req);
                        break;
@@ -6385,18 +6389,18 @@ clear_event_requests_for_assembly (MonoAssembly *assembly)
        while (found) {
                found = FALSE;
                for (i = 0; i < event_requests->len; ++i) {
-                       EventRequest *req = g_ptr_array_index (event_requests, i);
+                       EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, i);
 
                        clear_assembly_from_modifiers (req, assembly);
 
-                       if (req->event_kind == EVENT_KIND_BREAKPOINT && breakpoint_matches_assembly (req->info, assembly)) {
+                       if (req->event_kind == EVENT_KIND_BREAKPOINT && breakpoint_matches_assembly ((MonoBreakpoint *)req->info, assembly)) {
                                clear_event_request (req->id, req->event_kind);
                                found = TRUE;
                                break;
                        }
 
                        if (req->event_kind == EVENT_KIND_STEP)
-                               ss_clear_for_assembly (req->info, assembly);
+                               ss_clear_for_assembly ((SingleStepReq *)req->info, assembly);
                }
        }
        mono_loader_unlock ();
@@ -6438,8 +6442,8 @@ clear_types_for_assembly (MonoAssembly *assembly)
 static void
 add_thread (gpointer key, gpointer value, gpointer user_data)
 {
-       MonoInternalThread *thread = value;
-       Buffer *buf = user_data;
+       MonoInternalThread *thread = (MonoInternalThread *)value;
+       Buffer *buf = (Buffer *)user_data;
 
        buffer_add_objid (buf, (MonoObject*)thread);
 }
@@ -6449,7 +6453,8 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
 {
        guint8 *end = invoke->endp;
        MonoMethod *m;
-       int i, err, nargs;
+       int i, nargs;
+       ErrorCode err;
        MonoMethodSignature *sig;
        guint8 **arg_buf;
        void **args;
@@ -6466,25 +6471,25 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
                 * Invoke this method directly, currently only Environment.Exit () is supported.
                 */
                this_arg = NULL;
-               DEBUG_PRINTF (1, "[%p] Invoking method '%s' on receiver '%s'.\n", (gpointer)GetCurrentThreadId (), mono_method_full_name (invoke->method, TRUE), this_arg ? this_arg->vtable->klass->name : "<null>");
+               DEBUG_PRINTF (1, "[%p] Invoking method '%s' on receiver '%s'.\n", (gpointer)mono_native_thread_id_get (), mono_method_full_name (invoke->method, TRUE), this_arg ? this_arg->vtable->klass->name : "<null>");
                mono_runtime_invoke (invoke->method, NULL, invoke->args, &exc);
                g_assert_not_reached ();
        }
 
        m = decode_methodid (p, &p, end, &domain, &err);
-       if (err)
+       if (err != ERR_NONE)
                return err;
        sig = mono_method_signature (m);
 
        if (m->klass->valuetype)
-               this_buf = g_alloca (mono_class_instance_size (m->klass));
+               this_buf = (guint8 *)g_alloca (mono_class_instance_size (m->klass));
        else
-               this_buf = g_alloca (sizeof (MonoObject*));
+               this_buf = (guint8 *)g_alloca (sizeof (MonoObject*));
        if (m->klass->valuetype && (m->flags & METHOD_ATTRIBUTE_STATIC)) {
                /* Should be null */
                int type = decode_byte (p, &p, end);
                if (type != VALUE_TYPE_ID_NULL) {
-                       DEBUG_PRINTF (1, "[%p] Error: Static vtype method invoked with this argument.\n", (gpointer)GetCurrentThreadId ());
+                       DEBUG_PRINTF (1, "[%p] Error: Static vtype method invoked with this argument.\n", (gpointer)mono_native_thread_id_get ());
                        return ERR_INVALID_ARGUMENT;
                }
                memset (this_buf, 0, mono_class_instance_size (m->klass));
@@ -6498,12 +6503,12 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
                                p = tmp_p;
                        } else {
                                err = decode_value (&m->klass->byval_arg, domain, this_buf, p, &p, end);
-                               if (err)
+                               if (err != ERR_NONE)
                                        return err;
                        }
        } else {
                err = decode_value (&m->klass->byval_arg, domain, this_buf, p, &p, end);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
        }
 
@@ -6514,28 +6519,28 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
 
        if (MONO_CLASS_IS_INTERFACE (m->klass)) {
                if (!this_arg) {
-                       DEBUG_PRINTF (1, "[%p] Error: Interface method invoked without this argument.\n", (gpointer)GetCurrentThreadId ());
+                       DEBUG_PRINTF (1, "[%p] Error: Interface method invoked without this argument.\n", (gpointer)mono_native_thread_id_get ());
                        return ERR_INVALID_ARGUMENT;
                }
                m = mono_object_get_virtual_method (this_arg, m);
                /* Transform this to the format the rest of the code expects it to be */
                if (m->klass->valuetype) {
-                       this_buf = g_alloca (mono_class_instance_size (m->klass));
+                       this_buf = (guint8 *)g_alloca (mono_class_instance_size (m->klass));
                        memcpy (this_buf, mono_object_unbox (this_arg), mono_class_instance_size (m->klass));
                }
        } else if ((m->flags & METHOD_ATTRIBUTE_VIRTUAL) && !m->klass->valuetype && invoke->flags & INVOKE_FLAG_VIRTUAL) {
                if (!this_arg) {
-                       DEBUG_PRINTF (1, "[%p] Error: invoke with INVOKE_FLAG_VIRTUAL flag set without this argument.\n", (gpointer)GetCurrentThreadId ());
+                       DEBUG_PRINTF (1, "[%p] Error: invoke with INVOKE_FLAG_VIRTUAL flag set without this argument.\n", (gpointer)mono_native_thread_id_get ());
                        return ERR_INVALID_ARGUMENT;
                }
                m = mono_object_get_virtual_method (this_arg, m);
                if (m->klass->valuetype) {
-                       this_buf = g_alloca (mono_class_instance_size (m->klass));
+                       this_buf = (guint8 *)g_alloca (mono_class_instance_size (m->klass));
                        memcpy (this_buf, mono_object_unbox (this_arg), mono_class_instance_size (m->klass));
                }
        }
 
-       DEBUG_PRINTF (1, "[%p] Invoking method '%s' on receiver '%s'.\n", (gpointer)GetCurrentThreadId (), mono_method_full_name (m, TRUE), this_arg ? this_arg->vtable->klass->name : "<null>");
+       DEBUG_PRINTF (1, "[%p] Invoking method '%s' on receiver '%s'.\n", (gpointer)mono_native_thread_id_get (), mono_method_full_name (m, TRUE), this_arg ? this_arg->vtable->klass->name : "<null>");
 
        if (this_arg && this_arg->vtable->domain != domain)
                NOT_IMPLEMENTED;
@@ -6558,26 +6563,26 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
        if (nargs != sig->param_count)
                return ERR_INVALID_ARGUMENT;
        /* Use alloca to get gc tracking */
-       arg_buf = g_alloca (nargs * sizeof (gpointer));
+       arg_buf = (guint8 **)g_alloca (nargs * sizeof (gpointer));
        memset (arg_buf, 0, nargs * sizeof (gpointer));
-       args = g_alloca (nargs * sizeof (gpointer));
+       args = (gpointer *)g_alloca (nargs * sizeof (gpointer));
        for (i = 0; i < nargs; ++i) {
                if (MONO_TYPE_IS_REFERENCE (sig->params [i])) {
                        err = decode_value (sig->params [i], domain, (guint8*)&args [i], p, &p, end);
-                       if (err)
+                       if (err != ERR_NONE)
                                break;
                        if (args [i] && ((MonoObject*)args [i])->vtable->domain != domain)
                                NOT_IMPLEMENTED;
 
                        if (sig->params [i]->byref) {
-                               arg_buf [i] = g_alloca (sizeof (mgreg_t));
+                               arg_buf [i] = (guint8 *)g_alloca (sizeof (mgreg_t));
                                *(gpointer*)arg_buf [i] = args [i];
                                args [i] = arg_buf [i];
                        }
                } else {
-                       arg_buf [i] = g_alloca (mono_class_instance_size (mono_class_from_mono_type (sig->params [i])));
+                       arg_buf [i] = (guint8 *)g_alloca (mono_class_instance_size (mono_class_from_mono_type (sig->params [i])));
                        err = decode_value (sig->params [i], domain, arg_buf [i], p, &p, end);
-                       if (err)
+                       if (err != ERR_NONE)
                                break;
                        args [i] = arg_buf [i];
                }
@@ -6617,7 +6622,7 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
        else
                res = mono_runtime_invoke (m, this_arg, args, &exc);
        mono_stopwatch_stop (&watch);
-       DEBUG_PRINTF (1, "[%p] Invoke result: %p, exc: %s, time: %ld ms.\n", (gpointer)GetCurrentThreadId (), res, exc ? exc->vtable->klass->name : NULL, (long)mono_stopwatch_elapsed_ms (&watch));
+       DEBUG_PRINTF (1, "[%p] Invoke result: %p, exc: %s, time: %ld ms.\n", (gpointer)mono_native_thread_id_get (), res, exc ? exc->vtable->klass->name : NULL, (long)mono_stopwatch_elapsed_ms (&watch));
        if (exc) {
                buffer_add_byte (buf, 0);
                buffer_add_value (buf, &mono_defaults.object_class->byval_arg, &exc, domain);
@@ -6644,7 +6649,7 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
                } else if (mono_class_from_mono_type (sig->ret)->valuetype || sig->ret->type == MONO_TYPE_PTR || sig->ret->type == MONO_TYPE_FNPTR) {
                        if (mono_class_is_nullable (mono_class_from_mono_type (sig->ret))) {
                                MonoClass *k = mono_class_from_mono_type (sig->ret);
-                               guint8 *nullable_buf = g_alloca (mono_class_value_size (k, NULL));
+                               guint8 *nullable_buf = (guint8 *)g_alloca (mono_class_value_size (k, NULL));
 
                                g_assert (nullable_buf);
                                mono_nullable_init (nullable_buf, res, k);
@@ -6677,7 +6682,7 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
 
 #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
        if (invoke->has_ctx)
-               mono_set_lmf ((gpointer)(((gssize)ext.lmf.previous_lmf) & ~3));
+               mono_set_lmf ((MonoLMF *)(((gssize)ext.lmf.previous_lmf) & ~3));
 #endif
 
        *endp = p;
@@ -6697,12 +6702,13 @@ invoke_method (void)
        DebuggerTlsData *tls;
        InvokeData *invoke;
        int id;
-       int i, err, mindex;
+       int i, mindex;
+       ErrorCode err;
        Buffer buf;
        MonoContext restore_ctx;
        guint8 *p;
 
-       tls = mono_native_tls_get_value (debugger_tls_id);
+       tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
 
        /*
@@ -6726,7 +6732,7 @@ invoke_method (void)
        id = invoke->id;
 
        p = invoke->p;
-       err = 0;
+       err = ERR_NONE;
        for (mindex = 0; mindex < invoke->nmethods; ++mindex) {
                buffer_init (&buf, 128);
 
@@ -6764,7 +6770,7 @@ invoke_method (void)
                tls->resume_count -= invoke->suspend_count;
        }
 
-       DEBUG_PRINTF (1, "[%p] Invoke finished (%d), resume_count = %d.\n", (gpointer)GetCurrentThreadId (), err, tls->resume_count);
+       DEBUG_PRINTF (1, "[%p] Invoke finished (%d), resume_count = %d.\n", (gpointer)mono_native_thread_id_get (), err, tls->resume_count);
 
        /*
         * Take the loader lock to avoid race conditions with CMD_VM_ABORT_INVOKE:
@@ -6793,12 +6799,12 @@ invoke_method (void)
 static gboolean
 is_really_suspended (gpointer key, gpointer value, gpointer user_data)
 {
-       MonoThread *thread = value;
+       MonoThread *thread = (MonoThread *)value;
        DebuggerTlsData *tls;
        gboolean res;
 
        mono_loader_lock ();
-       tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+       tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
        g_assert (tls);
        res = tls->really_suspended;
        mono_loader_unlock ();
@@ -6824,7 +6830,7 @@ get_source_files_for_type (MonoClass *klass)
                if (minfo) {
                        mono_debug_get_seq_points (minfo, NULL, &source_file_list, NULL, NULL, NULL);
                        for (j = 0; j < source_file_list->len; ++j) {
-                               sinfo = g_ptr_array_index (source_file_list, j);
+                               sinfo = (MonoDebugSourceInfo *)g_ptr_array_index (source_file_list, j);
                                for (i = 0; i < files->len; ++i)
                                        if (!strcmp (g_ptr_array_index (files, i), sinfo->source_file))
                                                break;
@@ -6884,7 +6890,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                /* Clear all event requests */
                mono_loader_lock ();
                while (event_requests->len > 0) {
-                       EventRequest *req = g_ptr_array_index (event_requests, 0);
+                       EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, 0);
 
                        clear_event_request (req->id, req->event_kind);
                }
@@ -6915,7 +6921,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                /* Clear all event requests */
                mono_loader_lock ();
                while (event_requests->len > 0) {
-                       EventRequest *req = g_ptr_array_index (event_requests, 0);
+                       EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, 0);
 
                        clear_event_request (req->id, req->event_kind);
                }
@@ -6938,12 +6944,12 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 #endif
 
                mono_loader_lock ();
-               thread = mono_g_hash_table_find (tid_to_thread, is_really_suspended, NULL);
+               thread = (MonoInternalThread *)mono_g_hash_table_find (tid_to_thread, is_really_suspended, NULL);
                mono_loader_unlock ();
 
                if (thread && exit_method) {
                        mono_loader_lock ();
-                       tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+                       tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
                        mono_loader_unlock ();
 
                        args = g_new0 (gpointer, 1);
@@ -6987,10 +6993,11 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                int objid = decode_objid (p, &p, end);
                MonoThread *thread;
                DebuggerTlsData *tls;
-               int i, count, err, flags, nmethods;
+               int i, count, flags, nmethods;
+               ErrorCode err;
 
                err = get_object (objid, (MonoObject**)&thread);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                flags = decode_int (p, &p, end);
@@ -7007,7 +7014,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                        return ERR_NOT_SUSPENDED;
 
                mono_loader_lock ();
-               tls = mono_g_hash_table_lookup (thread_to_tls, THREAD_TO_INTERNAL (thread));
+               tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, THREAD_TO_INTERNAL (thread));
                mono_loader_unlock ();
                g_assert (tls);
 
@@ -7024,7 +7031,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                tls->pending_invoke = g_new0 (InvokeData, 1);
                tls->pending_invoke->id = id;
                tls->pending_invoke->flags = flags;
-               tls->pending_invoke->p = g_malloc (end - p);
+               tls->pending_invoke->p = (guint8 *)g_malloc (end - p);
                memcpy (tls->pending_invoke->p, p, end - p);
                tls->pending_invoke->endp = tls->pending_invoke->p + (end - p);
                tls->pending_invoke->suspend_count = suspend_count;
@@ -7044,16 +7051,17 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                int objid = decode_objid (p, &p, end);
                MonoThread *thread;
                DebuggerTlsData *tls;
-               int invoke_id, err;
+               int invoke_id;
+               ErrorCode err;
 
                err = get_object (objid, (MonoObject**)&thread);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                invoke_id = decode_int (p, &p, end);
 
                mono_loader_lock ();
-               tls = mono_g_hash_table_lookup (thread_to_tls, THREAD_TO_INTERNAL (thread));
+               tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, THREAD_TO_INTERNAL (thread));
                g_assert (tls);
 
                if (tls->abort_requested) {
@@ -7117,7 +7125,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                mono_loader_lock ();
                g_hash_table_iter_init (&iter, domains);
                while (g_hash_table_iter_next (&iter, NULL, (void**)&domain)) {
-                       AgentDomainInfo *info = domain_jit_info (domain)->agent_info;
+                       AgentDomainInfo *info = (AgentDomainInfo *)domain_jit_info (domain)->agent_info;
 
                        /* Update 'source_file_to_class' cache */
                        g_hash_table_iter_init (&kiter, info->loaded_classes);
@@ -7127,11 +7135,11 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                                        g_hash_table_insert (info->source_files, klass, files);
 
                                        for (i = 0; i < files->len; ++i) {
-                                               char *s = g_ptr_array_index (files, i);
+                                               char *s = (char *)g_ptr_array_index (files, i);
                                                char *s2 = dbg_path_get_basename (s);
                                                char *s3;
 
-                                               class_list = g_hash_table_lookup (info->source_file_to_class, s2);
+                                               class_list = (GSList *)g_hash_table_lookup (info->source_file_to_class, s2);
                                                if (!class_list) {
                                                        class_list = g_slist_prepend (class_list, klass);
                                                        g_hash_table_insert (info->source_file_to_class, g_strdup (s2), class_list);
@@ -7142,7 +7150,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 
                                                /* The _ignorecase hash contains the lowercase path */
                                                s3 = strdup_tolower (s2);
-                                               class_list = g_hash_table_lookup (info->source_file_to_class_ignorecase, s3);
+                                               class_list = (GSList *)g_hash_table_lookup (info->source_file_to_class_ignorecase, s3);
                                                if (!class_list) {
                                                        class_list = g_slist_prepend (class_list, klass);
                                                        g_hash_table_insert (info->source_file_to_class_ignorecase, g_strdup (s3), class_list);
@@ -7161,14 +7169,14 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                                char *s;
 
                                s = strdup_tolower (basename);
-                               class_list = g_hash_table_lookup (info->source_file_to_class_ignorecase, s);
+                               class_list = (GSList *)g_hash_table_lookup (info->source_file_to_class_ignorecase, s);
                                g_free (s);
                        } else {
-                               class_list = g_hash_table_lookup (info->source_file_to_class, basename);
+                               class_list = (GSList *)g_hash_table_lookup (info->source_file_to_class, basename);
                        }
 
                        for (l = class_list; l; l = l->next) {
-                               klass = l->data;
+                               klass = (MonoClass *)l->data;
 
                                g_ptr_array_add (res_classes, klass);
                                g_ptr_array_add (res_domains, domain);
@@ -7181,7 +7189,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 
                buffer_add_int (buf, res_classes->len);
                for (i = 0; i < res_classes->len; ++i)
-                       buffer_add_typeid (buf, g_ptr_array_index (res_domains, i), g_ptr_array_index (res_classes, i));
+                       buffer_add_typeid (buf, (MonoDomain *)g_ptr_array_index (res_domains, i), (MonoClass *)g_ptr_array_index (res_classes, i));
                g_ptr_array_free (res_classes, TRUE);
                g_ptr_array_free (res_domains, TRUE);
                break;
@@ -7217,7 +7225,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 
                        mono_domain_assemblies_lock (domain);
                        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-                               ass = tmp->data;
+                               ass = (MonoAssembly *)tmp->data;
 
                                if (ass->image) {
                                        type_resolve = TRUE;
@@ -7237,7 +7245,7 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 
                buffer_add_int (buf, res_classes->len);
                for (i = 0; i < res_classes->len; ++i)
-                       buffer_add_typeid (buf, g_ptr_array_index (res_domains, i), g_ptr_array_index (res_classes, i));
+                       buffer_add_typeid (buf, (MonoDomain *)g_ptr_array_index (res_domains, i), (MonoClass *)g_ptr_array_index (res_classes, i));
                g_ptr_array_free (res_classes, TRUE);
                g_ptr_array_free (res_domains, TRUE);
                break;
@@ -7256,17 +7264,21 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int err;
+       ErrorCode err;
        MonoError error;
 
        switch (command) {
        case CMD_EVENT_REQUEST_SET: {
                EventRequest *req;
-               int i, event_kind, suspend_policy, nmodifiers, mod;
+               int i, event_kind, suspend_policy, nmodifiers;
+               ModifierKind mod;
                MonoMethod *method;
                long location = 0;
                MonoThread *step_thread;
-               int size = 0, depth = 0, filter = 0, step_thread_id = 0;
+               int step_thread_id = 0;
+               StepDepth depth = STEP_DEPTH_INTO;
+               StepSize size = STEP_SIZE_MIN;
+               StepFilter filter = STEP_FILTER_NONE;
                MonoDomain *domain;
                Modifier *modifier;
 
@@ -7274,7 +7286,7 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                suspend_policy = decode_byte (p, &p, end);
                nmodifiers = decode_byte (p, &p, end);
 
-               req = g_malloc0 (sizeof (EventRequest) + (nmodifiers * sizeof (Modifier)));
+               req = (EventRequest *)g_malloc0 (sizeof (EventRequest) + (nmodifiers * sizeof (Modifier)));
                req->id = InterlockedIncrement (&event_request_id);
                req->event_kind = event_kind;
                req->suspend_policy = suspend_policy;
@@ -7282,38 +7294,38 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
                method = NULL;
                for (i = 0; i < nmodifiers; ++i) {
-                       mod = decode_byte (p, &p, end);
+                       mod = (ModifierKind)decode_byte (p, &p, end);
 
                        req->modifiers [i].kind = mod;
                        if (mod == MOD_KIND_COUNT) {
                                req->modifiers [i].data.count = decode_int (p, &p, end);
                        } else if (mod == MOD_KIND_LOCATION_ONLY) {
                                method = decode_methodid (p, &p, end, &domain, &err);
-                               if (err)
+                               if (err != ERR_NONE)
                                        return err;
                                location = decode_long (p, &p, end);
                        } else if (mod == MOD_KIND_STEP) {
                                step_thread_id = decode_id (p, &p, end);
-                               size = decode_int (p, &p, end);
-                               depth = decode_int (p, &p, end);
+                               size = (StepSize)decode_int (p, &p, end);
+                               depth = (StepDepth)decode_int (p, &p, end);
                                if (CHECK_PROTOCOL_VERSION (2, 16))
-                                       filter = decode_int (p, &p, end);
+                                       filter = (StepFilter)decode_int (p, &p, end);
                                req->modifiers [i].data.filter = filter;
                                if (!CHECK_PROTOCOL_VERSION (2, 26) && (req->modifiers [i].data.filter & STEP_FILTER_DEBUGGER_HIDDEN))
                                        /* Treat STEP_THOUGH the same as HIDDEN */
-                                       req->modifiers [i].data.filter |= STEP_FILTER_DEBUGGER_STEP_THROUGH;
+                                       req->modifiers [i].data.filter = (StepFilter)(req->modifiers [i].data.filter | STEP_FILTER_DEBUGGER_STEP_THROUGH);
                        } else if (mod == MOD_KIND_THREAD_ONLY) {
                                int id = decode_id (p, &p, end);
 
                                err = get_object (id, (MonoObject**)&req->modifiers [i].data.thread);
-                               if (err) {
+                               if (err != ERR_NONE) {
                                        g_free (req);
                                        return err;
                                }
                        } else if (mod == MOD_KIND_EXCEPTION_ONLY) {
                                MonoClass *exc_class = decode_typeid (p, &p, end, &domain, &err);
 
-                               if (err)
+                               if (err != ERR_NONE)
                                        return err;
                                req->modifiers [i].caught = decode_byte (p, &p, end);
                                req->modifiers [i].uncaught = decode_byte (p, &p, end);
@@ -7337,7 +7349,7 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                                req->modifiers [i].data.assemblies = g_new0 (MonoAssembly*, n);
                                for (j = 0; j < n; ++j) {
                                        req->modifiers [i].data.assemblies [j] = decode_assemblyid (p, &p, end, &domain, &err);
-                                       if (err) {
+                                       if (err != ERR_NONE) {
                                                g_free (req->modifiers [i].data.assemblies);
                                                return err;
                                        }
@@ -7390,13 +7402,13 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                        g_assert (step_thread_id);
 
                        err = get_object (step_thread_id, (MonoObject**)&step_thread);
-                       if (err) {
+                       if (err != ERR_NONE) {
                                g_free (req);
                                return err;
                        }
 
                        err = ss_create (THREAD_TO_INTERNAL (step_thread), size, depth, filter, req);
-                       if (err) {
+                       if (err != ERR_NONE) {
                                g_free (req);
                                return err;
                        }
@@ -7460,10 +7472,10 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                mono_loader_lock ();
                i = 0;
                while (i < event_requests->len) {
-                       EventRequest *req = g_ptr_array_index (event_requests, i);
+                       EventRequest *req = (EventRequest *)g_ptr_array_index (event_requests, i);
 
                        if (req->event_kind == EVENT_KIND_BREAKPOINT) {
-                               clear_breakpoint (req->info);
+                               clear_breakpoint ((MonoBreakpoint *)req->info);
 
                                g_ptr_array_remove_index_fast (event_requests, i);
                                g_free (req);
@@ -7484,7 +7496,7 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int err;
+       ErrorCode err;
        MonoDomain *domain;
 
        switch (command) {
@@ -7494,7 +7506,7 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        }
        case CMD_APPDOMAIN_GET_FRIENDLY_NAME: {
                domain = decode_domainid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                buffer_add_string (buf, domain->friendly_name);
                break;
@@ -7505,7 +7517,7 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                int count;
 
                domain = decode_domainid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                mono_loader_lock ();
                count = 0;
@@ -7514,7 +7526,7 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                }
                buffer_add_int (buf, count);
                for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-                       ass = tmp->data;
+                       ass = (MonoAssembly *)tmp->data;
                        buffer_add_assemblyid (buf, domain, ass);
                }
                mono_loader_unlock ();
@@ -7522,7 +7534,7 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        }
        case CMD_APPDOMAIN_GET_ENTRY_ASSEMBLY: {
                domain = decode_domainid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                buffer_add_assemblyid (buf, domain, domain->entry_assembly);
@@ -7530,7 +7542,7 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        }
        case CMD_APPDOMAIN_GET_CORLIB: {
                domain = decode_domainid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                buffer_add_assemblyid (buf, domain, domain->domain->mbr.obj.vtable->klass->image->assembly);
@@ -7541,7 +7553,7 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                MonoString *o;
 
                domain = decode_domainid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                s = decode_string (p, &p, end);
 
@@ -7555,10 +7567,10 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                MonoObject *o;
 
                domain = decode_domainid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                klass = decode_typeid (p, &p, end, &domain2, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                // FIXME:
@@ -7566,8 +7578,8 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
                o = mono_object_new (domain, klass);
 
-               err = decode_value (&klass->byval_arg, domain, mono_object_unbox (o), p, &p, end);
-               if (err)
+               err = decode_value (&klass->byval_arg, domain, (guint8 *)mono_object_unbox (o), p, &p, end);
+               if (err != ERR_NONE)
                        return err;
 
                buffer_add_objid (buf, o);
@@ -7583,12 +7595,12 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 assembly_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int err;
+       ErrorCode err;
        MonoAssembly *ass;
        MonoDomain *domain;
 
        ass = decode_assemblyid (p, &p, end, &domain, &err);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        switch (command) {
@@ -7675,7 +7687,7 @@ assembly_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 module_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int err;
+       ErrorCode err;
        MonoDomain *domain;
 
        switch (command) {
@@ -7702,7 +7714,7 @@ module_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 field_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int err;
+       ErrorCode err;
        MonoDomain *domain;
 
        switch (command) {
@@ -7736,7 +7748,7 @@ buffer_add_cattr_arg (Buffer *buf, MonoType *t, MonoDomain *domain, MonoObject *
                buffer_add_value (buf, t, mono_object_unbox (val), domain);
 }
 
-static int
+static ErrorCode
 buffer_add_cattrs (Buffer *buf, MonoDomain *domain, MonoImage *image, MonoClass *attr_klass, MonoCustomAttrInfo *cinfo)
 {
        int i, j;
@@ -7841,7 +7853,8 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
        MonoType *type;
        gpointer iter;
        guint8 b;
-       int err, nnested;
+       int nnested;
+       ErrorCode err;
        char *name;
 
        switch (command) {
@@ -7913,7 +7926,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                                count = container->type_argc;
                                buffer_add_int (buf, count);
                                for (i = 0; i < count; i++) {
-                                       pklass = mono_class_from_generic_parameter (mono_generic_container_get_param (container, i), klass->image, FALSE);
+                                       pklass = mono_class_from_generic_parameter_internal (mono_generic_container_get_param (container, i));
                                        buffer_add_typeid (buf, domain, pklass);
                                }
                        } else {
@@ -7988,13 +8001,13 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
 
                attr_klass = decode_typeid (p, &p, end, NULL, &err);
                /* attr_klass can be NULL */
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                cinfo = mono_custom_attrs_from_class (klass);
 
                err = buffer_add_cattrs (buf, domain, klass->image, attr_klass, cinfo);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                break;
        }
@@ -8004,16 +8017,16 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                MonoClassField *field;
 
                field = decode_fieldid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                attr_klass = decode_typeid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                cinfo = mono_custom_attrs_from_field (klass, field);
 
                err = buffer_add_cattrs (buf, domain, klass->image, attr_klass, cinfo);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                break;
        }
@@ -8023,16 +8036,16 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                MonoProperty *prop;
 
                prop = decode_propertyid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                attr_klass = decode_typeid (p, &p, end, NULL, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                cinfo = mono_custom_attrs_from_property (klass, prop);
 
                err = buffer_add_cattrs (buf, domain, klass->image, attr_klass, cinfo);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                break;
        }
@@ -8050,10 +8063,10 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
 
                if (command == CMD_TYPE_GET_VALUES_2) {
                        int objid = decode_objid (p, &p, end);
-                       int err;
+                       ErrorCode err;
 
                        err = get_object (objid, (MonoObject**)&thread_obj);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        thread = THREAD_TO_INTERNAL (thread_obj);
@@ -8062,7 +8075,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                len = decode_int (p, &p, end);
                for (i = 0; i < len; ++i) {
                        f = decode_fieldid (p, &p, end, NULL, &err);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        if (!(f->type->attrs & FIELD_ATTRIBUTE_STATIC))
@@ -8085,7 +8098,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                                return ERR_INVALID_FIELDID;
 
                        vtable = mono_class_vtable (domain, f->parent);
-                       val = g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
+                       val = (guint8 *)g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
                        mono_field_static_get_value_for_thread (thread ? thread : mono_thread_internal_current (), vtable, f, val);
                        buffer_add_value (buf, f->type, val, domain);
                        g_free (val);
@@ -8103,7 +8116,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                len = decode_int (p, &p, end);
                for (i = 0; i < len; ++i) {
                        f = decode_fieldid (p, &p, end, NULL, &err);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        if (!(f->type->attrs & FIELD_ATTRIBUTE_STATIC))
@@ -8125,9 +8138,9 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                        // FIXME: Check for literal/const
 
                        vtable = mono_class_vtable (domain, f->parent);
-                       val = g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
+                       val = (guint8 *)g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
                        err = decode_value (f->type, domain, val, p, &p, end);
-                       if (err) {
+                       if (err != ERR_NONE) {
                                g_free (val);
                                return err;
                        }
@@ -8154,7 +8167,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
 
                buffer_add_int (buf, files->len);
                for (i = 0; i < files->len; ++i) {
-                       source_file = g_ptr_array_index (files, i);
+                       source_file = (char *)g_ptr_array_index (files, i);
                        if (command == CMD_TYPE_GET_SOURCE_FILES_2) {
                                buffer_add_string (buf, source_file);
                        } else {
@@ -8170,7 +8183,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
        case CMD_TYPE_IS_ASSIGNABLE_FROM: {
                MonoClass *oklass = decode_typeid (p, &p, end, NULL, &err);
 
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                if (mono_class_is_assignable_from (klass, oklass))
                        buffer_add_byte (buf, 1);
@@ -8188,7 +8201,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
                        return ERR_LOADER_ERROR;
                buffer_add_int (buf, array->len);
                for (i = 0; i < array->len; ++i) {
-                       MonoMethod *method = g_ptr_array_index (array, i);
+                       MonoMethod *method = (MonoMethod *)g_ptr_array_index (array, i);
                        buffer_add_methodid (buf, domain, method);
                }
 
@@ -8235,7 +8248,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
 
                for (tindex = 0; tindex < len; ++tindex) {
                        iclass = decode_typeid (p, &p, end, NULL, &err);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        ioffset = mono_class_interface_offset_with_variance (klass, iclass, &variance_used);
@@ -8283,10 +8296,10 @@ type_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        MonoClass *klass;
        MonoDomain *old_domain;
        MonoDomain *domain;
-       int err;
+       ErrorCode err;
 
        klass = decode_typeid (p, &p, end, &domain, &err);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        old_domain = mono_domain_get ();
@@ -8304,7 +8317,7 @@ static ErrorCode
 method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, guint8 *p, guint8 *end, Buffer *buf)
 {
        MonoMethodHeader *header;
-       int err;
+       ErrorCode err;
 
        switch (command) {
        case CMD_METHOD_GET_NAME: {
@@ -8345,7 +8358,7 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                if (CHECK_PROTOCOL_VERSION (2, 13)) {
                        buffer_add_int (buf, source_file_list->len);
                        for (i = 0; i < source_file_list->len; ++i) {
-                               MonoDebugSourceInfo *sinfo = g_ptr_array_index (source_file_list, i);
+                               MonoDebugSourceInfo *sinfo = (MonoDebugSourceInfo *)g_ptr_array_index (source_file_list, i);
                                buffer_add_string (buf, sinfo->source_file);
                                if (CHECK_PROTOCOL_VERSION (2, 14)) {
                                        for (j = 0; j < 16; ++j)
@@ -8362,7 +8375,7 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                        const char *srcfile = "";
 
                        if (source_files [i] != -1) {
-                               MonoDebugSourceInfo *sinfo = g_ptr_array_index (source_file_list, source_files [i]);
+                               MonoDebugSourceInfo *sinfo = (MonoDebugSourceInfo *)g_ptr_array_index (source_file_list, source_files [i]);
                                srcfile = sinfo->source_file;
                        }
                        DEBUG_PRINTF (10, "IL%x -> %s:%d %d %d %d\n", sp->il_offset, srcfile, sp->line, sp->column, sp->end_line, sp->end_column);
@@ -8525,7 +8538,7 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                                                buffer_add_int (buf, count);
                                                for (i = 0; i < count; i++) {
                                                        MonoGenericParam *param = mono_generic_container_get_param (container, i);
-                                                       MonoClass *pklass = mono_class_from_generic_parameter (param, method->klass->image, TRUE);
+                                                       MonoClass *pklass = mono_class_from_generic_parameter_internal (param);
                                                        buffer_add_typeid (buf, domain, pklass);
                                                }
                                        } else {
@@ -8598,7 +8611,7 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
 
                        if (method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD) {
                                val = mono_method_get_wrapper_data (method, token);
-                               handle_class = mono_method_get_wrapper_data (method, token + 1);
+                               handle_class = (MonoClass *)mono_method_get_wrapper_data (method, token + 1);
 
                                if (handle_class == NULL) {
                                        // Can't figure out the token type
@@ -8620,14 +8633,14 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                                        buffer_add_typeid (buf, domain, mono_class_from_mono_type ((MonoType*)val));
                        } else if (handle_class == mono_defaults.fieldhandle_class) {
                                buffer_add_byte (buf, TOKEN_TYPE_FIELD);
-                               buffer_add_fieldid (buf, domain, val);
+                               buffer_add_fieldid (buf, domain, (MonoClassField *)val);
                        } else if (handle_class == mono_defaults.methodhandle_class) {
                                buffer_add_byte (buf, TOKEN_TYPE_METHOD);
-                               buffer_add_methodid (buf, domain, val);
+                               buffer_add_methodid (buf, domain, (MonoMethod *)val);
                        } else if (handle_class == mono_defaults.string_class) {
                                char *s;
 
-                               s = mono_string_to_utf8 (val);
+                               s = mono_string_to_utf8 ((MonoString *)val);
                                buffer_add_byte (buf, TOKEN_TYPE_STRING);
                                buffer_add_string (buf, s);
                                g_free (s);
@@ -8645,13 +8658,13 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
 
                attr_klass = decode_typeid (p, &p, end, NULL, &err);
                /* attr_klass can be NULL */
-               if (err)
+               if (err != ERR_NONE)
                        return err;
 
                cinfo = mono_custom_attrs_from_method (method);
 
                err = buffer_add_cattrs (buf, domain, method->klass->image, attr_klass, cinfo);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                break;
        }
@@ -8669,7 +8682,7 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                type_argv = g_new0 (MonoType*, type_argc);
                for (i = 0; i < type_argc; ++i) {
                        klass = decode_typeid (p, &p, end, &d, &err);
-                       if (err) {
+                       if (err != ERR_NONE) {
                                g_free (type_argv);
                                return err;
                        }
@@ -8701,13 +8714,13 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
 static ErrorCode
 method_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int err;
+       ErrorCode err;
        MonoDomain *old_domain;
        MonoDomain *domain;
        MonoMethod *method;
 
        method = decode_methodid (p, &p, end, &domain, &err);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        old_domain = mono_domain_get ();
@@ -8725,12 +8738,12 @@ static ErrorCode
 thread_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
        int objid = decode_objid (p, &p, end);
-       int err;
+       ErrorCode err;
        MonoThread *thread_obj;
        MonoInternalThread *thread;
 
        err = get_object (objid, (MonoObject**)&thread_obj);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        thread = THREAD_TO_INTERNAL (thread_obj);
@@ -8778,7 +8791,7 @@ thread_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                        return ERR_NOT_IMPLEMENTED;
 
                mono_loader_lock ();
-               tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+               tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
                mono_loader_unlock ();
                g_assert (tls);
 
@@ -8822,7 +8835,7 @@ thread_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                gint64 il_offset;
 
                method = decode_methodid (p, &p, end, &domain, &err);
-               if (err)
+               if (err != ERR_NONE)
                        return err;
                il_offset = decode_long (p, &p, end);
 
@@ -8832,7 +8845,7 @@ thread_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                }
 
                mono_loader_lock ();
-               tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+               tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
                mono_loader_unlock ();
                g_assert (tls);
 
@@ -8864,7 +8877,7 @@ static ErrorCode
 frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
        int objid;
-       int err;
+       ErrorCode err;
        MonoThread *thread_obj;
        MonoInternalThread *thread;
        int pos, i, len, frame_idx;
@@ -8877,7 +8890,7 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
        objid = decode_objid (p, &p, end);
        err = get_object (objid, (MonoObject**)&thread_obj);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        thread = THREAD_TO_INTERNAL (thread_obj);
@@ -8885,7 +8898,7 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        id = decode_id (p, &p, end);
 
        mono_loader_lock ();
-       tls = mono_g_hash_table_lookup (thread_to_tls, thread);
+       tls = (DebuggerTlsData *)mono_g_hash_table_lookup (thread_to_tls, thread);
        mono_loader_unlock ();
        g_assert (tls);
 
@@ -9020,11 +9033,11 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                        }
 
                        if (MONO_TYPE_IS_REFERENCE (t))
-                               val_buf = g_alloca (sizeof (MonoObject*));
+                               val_buf = (guint8 *)g_alloca (sizeof (MonoObject*));
                        else
-                               val_buf = g_alloca (mono_class_instance_size (mono_class_from_mono_type (t)));
+                               val_buf = (guint8 *)g_alloca (mono_class_instance_size (mono_class_from_mono_type (t)));
                        err = decode_value (t, frame->domain, val_buf, p, &p, end);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        set_var (t, var, &frame->ctx, frame->domain, val_buf, frame->reg_locations, &tls->restore_state.ctx);
@@ -9048,12 +9061,13 @@ static ErrorCode
 array_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
        MonoArray *arr;
-       int objid, err, index, len, i, esize;
+       int objid, index, len, i, esize;
+       ErrorCode err;
        gpointer elem;
 
        objid = decode_objid (p, &p, end);
        err = get_object (objid, (MonoObject**)&arr);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        switch (command) {
@@ -9095,7 +9109,7 @@ array_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                for (i = index; i < index + len; ++i) {
                        elem = (gpointer*)((char*)arr->vector + (i * esize));
 
-                       decode_value (&arr->obj.vtable->klass->element_class->byval_arg, arr->obj.vtable->domain, elem, p, &p, end);
+                       decode_value (&arr->obj.vtable->klass->element_class->byval_arg, arr->obj.vtable->domain, (guint8 *)elem, p, &p, end);
                }
                break;
        default:
@@ -9108,7 +9122,8 @@ array_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 string_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int objid, err;
+       int objid;
+       ErrorCode err;
        MonoString *str;
        char *s;
        int i, index, length;
@@ -9117,7 +9132,7 @@ string_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
        objid = decode_objid (p, &p, end);
        err = get_object (objid, (MonoObject**)&str);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        switch (command) {
@@ -9159,7 +9174,8 @@ string_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 static ErrorCode
 object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
-       int objid, err;
+       int objid;
+       ErrorCode err;
        MonoObject *obj;
        int len, i;
        MonoClassField *f;
@@ -9169,16 +9185,16 @@ object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        if (command == CMD_OBJECT_REF_IS_COLLECTED) {
                objid = decode_objid (p, &p, end);
                err = get_object (objid, &obj);
-               if (err)
+               if (err != ERR_NONE)
                        buffer_add_int (buf, 1);
                else
                        buffer_add_int (buf, 0);
-               return 0;
+               return ERR_NONE;
        }
 
        objid = decode_objid (p, &p, end);
        err = get_object (objid, &obj);
-       if (err)
+       if (err != ERR_NONE)
                return err;
 
        MonoClass *obj_type;
@@ -9199,7 +9215,7 @@ object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
                for (i = 0; i < len; ++i) {
                        MonoClassField *f = decode_fieldid (p, &p, end, NULL, &err);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        /* Check that the field belongs to the object */
@@ -9222,7 +9238,7 @@ object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
                                g_assert (f->type->attrs & FIELD_ATTRIBUTE_STATIC);
                                vtable = mono_class_vtable (obj->vtable->domain, f->parent);
-                               val = g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
+                               val = (guint8 *)g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
                                mono_field_static_get_value (vtable, f, val);
                                buffer_add_value (buf, f->type, val, obj->vtable->domain);
                                g_free (val);
@@ -9236,7 +9252,7 @@ object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
                for (i = 0; i < len; ++i) {
                        f = decode_fieldid (p, &p, end, NULL, &err);
-                       if (err)
+                       if (err != ERR_NONE)
                                return err;
 
                        /* Check that the field belongs to the object */
@@ -9260,9 +9276,9 @@ object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                                g_assert (f->type->attrs & FIELD_ATTRIBUTE_STATIC);
                                vtable = mono_class_vtable (obj->vtable->domain, f->parent);
 
-                               val = g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
+                               val = (guint8 *)g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
                                err = decode_value (f->type, obj->vtable->domain, val, p, &p, end);
-                               if (err) {
+                               if (err != ERR_NONE) {
                                        g_free (val);
                                        return err;
                                }
@@ -9270,7 +9286,7 @@ object_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                                g_free (val);
                        } else {
                                err = decode_value (f->type, obj->vtable->domain, (guint8*)obj + f->offset, p, &p, end);
-                               if (err)
+                               if (err != ERR_NONE)
                                        return err;
                        }
                }
@@ -9565,7 +9581,8 @@ wait_for_attach (void)
 static guint32 WINAPI
 debugger_thread (void *arg)
 {
-       int res, len, id, flags, command_set = 0, command = 0;
+       int res, len, id, flags, command = 0;
+       CommandSet command_set = (CommandSet)0;
        guint8 header [HEADER_LENGTH];
        guint8 *data, *p, *end;
        Buffer buf;
@@ -9573,9 +9590,9 @@ debugger_thread (void *arg)
        gboolean no_reply;
        gboolean attach_failed = FALSE;
 
-       DEBUG_PRINTF (1, "[dbg] Agent thread started, pid=%p\n", (gpointer)GetCurrentThreadId ());
+       DEBUG_PRINTF (1, "[dbg] Agent thread started, pid=%p\n", (gpointer)mono_native_thread_id_get ());
 
-       debugger_thread_id = GetCurrentThreadId ();
+       debugger_thread_id = mono_native_thread_id_get ();
 
        mono_jit_thread_attach (mono_get_root_domain ());
 
@@ -9610,7 +9627,7 @@ debugger_thread (void *arg)
                len = decode_int (p, &p, end);
                id = decode_int (p, &p, end);
                flags = decode_byte (p, &p, end);
-               command_set = decode_byte (p, &p, end);
+               command_set = (CommandSet)decode_byte (p, &p, end);
                command = decode_byte (p, &p, end);
 
                g_assert (flags == 0);
@@ -9628,7 +9645,7 @@ debugger_thread (void *arg)
                        DEBUG_PRINTF (1, "[dbg] Command %s(%s) [%d][at=%lx].\n", command_set_to_string (command_set), cmd_str, id, (long)mono_100ns_ticks () / 10000);
                }
 
-               data = g_malloc (len - HEADER_LENGTH);
+               data = (guint8 *)g_malloc (len - HEADER_LENGTH);
                if (len - HEADER_LENGTH > 0)
                {
                        MONO_PREPARE_BLOCKING;
@@ -9652,7 +9669,7 @@ debugger_thread (void *arg)
                switch (command_set) {
                case CMD_SET_VM:
                        err = vm_commands (command, id, p, end, &buf);
-                       if (!err && command == CMD_VM_INVOKE_METHOD)
+                       if (err == ERR_NONE && command == CMD_VM_INVOKE_METHOD)
                                /* Sent after the invoke is complete */
                                no_reply = TRUE;
                        break;
@@ -9709,7 +9726,7 @@ debugger_thread (void *arg)
                        }
                }
 
-               if (!err && command_set == CMD_SET_VM && command == CMD_VM_STOP_BUFFERING) {
+               if (err == ERR_NONE && command_set == CMD_SET_VM && command == CMD_VM_STOP_BUFFERING) {
                        send_buffered_reply_packets ();
                        buffer_replies = FALSE;
                }
@@ -9722,13 +9739,11 @@ debugger_thread (void *arg)
        }
 
        mono_set_is_debugger_attached (FALSE);
-       
-       MONO_TRY_BLOCKING;
-       mono_mutex_lock (&debugger_thread_exited_mutex);
+
+       mono_coop_mutex_lock (&debugger_thread_exited_mutex);
        debugger_thread_exited = TRUE;
-       mono_cond_signal (&debugger_thread_exited_cond);
-       mono_mutex_unlock (&debugger_thread_exited_mutex);
-       MONO_FINISH_TRY_BLOCKING;
+       mono_coop_cond_signal (&debugger_thread_exited_cond);
+       mono_coop_mutex_unlock (&debugger_thread_exited_mutex);
 
        DEBUG_PRINTF (1, "[dbg] Debugger thread exited.\n");
        
index a9b7e0a68f1cfa9e8818da89606bb35c01894422..2899a1e91838ffda2f0a30771e3a01e09f2b7e61 100644 (file)
@@ -12,7 +12,7 @@
 #include "ir-emit.h"
 #include "jit-icalls.h"
 
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/abi-details.h>
 
 #ifndef DISABLE_JIT
@@ -76,7 +76,7 @@ decompose_long_opcode (MonoCompile *cfg, MonoInst *ins, MonoInst **repl_ins)
 
                if (COMPILE_LLVM (cfg))
                        break;
-               if (MONO_IS_ILP32 && SIZEOF_REGISTER == 8)
+               if (cfg->backend->ilp32 && SIZEOF_REGISTER == 8)
                        opcode = OP_LADDCC;
                else
                        opcode = OP_ADDCC;
@@ -90,7 +90,7 @@ decompose_long_opcode (MonoCompile *cfg, MonoInst *ins, MonoInst **repl_ins)
 
                if (COMPILE_LLVM (cfg))
                        break;
-               if (MONO_IS_ILP32 && SIZEOF_REGISTER == 8)
+               if (cfg->backend->ilp32 && SIZEOF_REGISTER == 8)
                        opcode = OP_LADDCC;
                else
                        opcode = OP_ADDCC;
@@ -105,7 +105,7 @@ decompose_long_opcode (MonoCompile *cfg, MonoInst *ins, MonoInst **repl_ins)
 
                if (COMPILE_LLVM (cfg))
                        break;
-               if (MONO_IS_ILP32 && SIZEOF_REGISTER == 8)
+               if (cfg->backend->ilp32 && SIZEOF_REGISTER == 8)
                        opcode = OP_LSUBCC;
                else
                        opcode = OP_SUBCC;
@@ -119,7 +119,7 @@ decompose_long_opcode (MonoCompile *cfg, MonoInst *ins, MonoInst **repl_ins)
 
                if (COMPILE_LLVM (cfg))
                        break;
-               if (MONO_IS_ILP32 && SIZEOF_REGISTER == 8)
+               if (cfg->backend->ilp32 && SIZEOF_REGISTER == 8)
                        opcode = OP_LSUBCC;
                else
                        opcode = OP_SUBCC;
@@ -443,36 +443,34 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
                cfg->exception_message = g_strdup_printf ("float conv.ovf.un opcodes not supported.");
                break;
 
-#if defined(MONO_ARCH_EMULATE_DIV)
        case OP_IDIV:
        case OP_IREM:
        case OP_IDIV_UN:
        case OP_IREM_UN:
-               if (!mono_arch_opcode_needs_emulation (cfg, ins->opcode)) {
-#ifdef MONO_ARCH_NEED_DIV_CHECK
-                       int reg1 = alloc_ireg (cfg);
-                       int reg2 = alloc_ireg (cfg);
-                       /* b == 0 */
-                       MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg2, 0);
-                       MONO_EMIT_NEW_COND_EXC (cfg, IEQ, "DivideByZeroException");
-                       if (ins->opcode == OP_IDIV || ins->opcode == OP_IREM) {
-                               /* b == -1 && a == 0x80000000 */
-                               MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg2, -1);
-                               MONO_EMIT_NEW_UNALU (cfg, OP_ICEQ, reg1, -1);
-                               MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 0x80000000);
-                               MONO_EMIT_NEW_UNALU (cfg, OP_ICEQ, reg2, -1);
-                               MONO_EMIT_NEW_BIALU (cfg, OP_IAND, reg1, reg1, reg2);
-                               MONO_EMIT_NEW_ICOMPARE_IMM (cfg, reg1, 1);
-                               MONO_EMIT_NEW_COND_EXC (cfg, IEQ, "OverflowException");
+               if (cfg->backend->emulate_div && mono_arch_opcode_needs_emulation (cfg, ins->opcode))
+                       emulate = TRUE;
+               if (!emulate) {
+                       if (cfg->backend->need_div_check) {
+                               int reg1 = alloc_ireg (cfg);
+                               int reg2 = alloc_ireg (cfg);
+                               /* b == 0 */
+                               MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg2, 0);
+                               MONO_EMIT_NEW_COND_EXC (cfg, IEQ, "DivideByZeroException");
+                               if (ins->opcode == OP_IDIV || ins->opcode == OP_IREM) {
+                                       /* b == -1 && a == 0x80000000 */
+                                       MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg2, -1);
+                                       MONO_EMIT_NEW_UNALU (cfg, OP_ICEQ, reg1, -1);
+                                       MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 0x80000000);
+                                       MONO_EMIT_NEW_UNALU (cfg, OP_ICEQ, reg2, -1);
+                                       MONO_EMIT_NEW_BIALU (cfg, OP_IAND, reg1, reg1, reg2);
+                                       MONO_EMIT_NEW_ICOMPARE_IMM (cfg, reg1, 1);
+                                       MONO_EMIT_NEW_COND_EXC (cfg, IEQ, "OverflowException");
+                               }
                        }
-#endif
                        MONO_EMIT_NEW_BIALU (cfg, ins->opcode, ins->dreg, ins->sreg1, ins->sreg2);
                        NULLIFY_INS (ins);
-               } else {
-                       emulate = TRUE;
                }
                break;
-#endif
 
 #if SIZEOF_REGISTER == 8
        case OP_LREM_IMM:
@@ -541,7 +539,7 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
                        g_assert (!info->sig->hasthis);
                        g_assert (info->sig->param_count <= MONO_MAX_SRC_REGS);
 
-                       args = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * info->sig->param_count);
+                       args = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * info->sig->param_count);
                        if (info->sig->param_count > 0) {
                                int sregs [MONO_MAX_SRC_REGS];
                                int num_sregs, i;
@@ -1199,9 +1197,11 @@ mono_decompose_vtype_opts (MonoCompile *cfg)
         * Create a dummy bblock and emit code into it so we can use the normal 
         * code generation macros.
         */
-       cfg->cbb = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
+       cfg->cbb = (MonoBasicBlock *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
        first_bb = cfg->cbb;
 
+       /* For LLVM, decompose only the OP_STOREV_MEMBASE opcodes, which need write barriers and the gsharedvt opcodes */
+
        for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
                MonoInst *ins;
                MonoInst *prev = NULL;
@@ -1220,11 +1220,12 @@ mono_decompose_vtype_opts (MonoCompile *cfg)
                        for (ins = bb->code; ins; ins = ins->next) {
                                switch (ins->opcode) {
                                case OP_VMOVE: {
+                                       g_assert (ins->klass);
+                                       if (COMPILE_LLVM (cfg) && !mini_is_gsharedvt_klass (ins->klass))
+                                               break;
                                        src_var = get_vreg_to_inst (cfg, ins->sreg1);
                                        dest_var = get_vreg_to_inst (cfg, ins->dreg);
 
-                                       g_assert (ins->klass);
-
                                        if (!src_var)
                                                src_var = mono_compile_create_var_for_vreg (cfg, &ins->klass->byval_arg, OP_LOCAL, ins->dreg);
 
@@ -1242,6 +1243,9 @@ mono_decompose_vtype_opts (MonoCompile *cfg)
                                        break;
                                }
                                case OP_VZERO:
+                                       if (COMPILE_LLVM (cfg) && !mini_is_gsharedvt_klass (ins->klass))
+                                               break;
+
                                        g_assert (ins->klass);
 
                                        EMIT_NEW_VARLOADA_VREG (cfg, dest, ins->dreg, &ins->klass->byval_arg);
@@ -1260,6 +1264,9 @@ mono_decompose_vtype_opts (MonoCompile *cfg)
                                        }
                                        break;
                                case OP_DUMMY_VZERO:
+                                       if (COMPILE_LLVM (cfg))
+                                               break;
+
                                        NULLIFY_INS (ins);
                                        break;
                                case OP_STOREV_MEMBASE: {
@@ -1279,6 +1286,8 @@ mono_decompose_vtype_opts (MonoCompile *cfg)
                                }
                                case OP_LOADV_MEMBASE: {
                                        g_assert (ins->klass);
+                                       if (COMPILE_LLVM (cfg) && !mini_is_gsharedvt_klass (ins->klass))
+                                               break;
 
                                        dest_var = get_vreg_to_inst (cfg, ins->dreg);
                                        // FIXME-VT:
@@ -1293,6 +1302,9 @@ mono_decompose_vtype_opts (MonoCompile *cfg)
                                        break;
                                }
                                case OP_OUTARG_VT: {
+                                       if (COMPILE_LLVM (cfg))
+                                               break;
+
                                        g_assert (ins->klass);
 
                                        src_var = get_vreg_to_inst (cfg, ins->sreg1);
@@ -1324,6 +1336,9 @@ mono_decompose_vtype_opts (MonoCompile *cfg)
                                        MonoCallInst *call = (MonoCallInst*)ins;
                                        int size;
 
+                                       if (COMPILE_LLVM (cfg))
+                                               break;
+
                                        if (call->vret_in_reg) {
                                                MonoCallInst *call2;
 
@@ -1444,71 +1459,6 @@ mono_decompose_vtype_opts (MonoCompile *cfg)
        }
 }
 
-void
-mono_decompose_vtype_opts_llvm (MonoCompile *cfg)
-{
-       MonoBasicBlock *bb, *first_bb;
-
-       /* Decompose only the OP_STOREV_MEMBASE opcodes, which need write barriers */
-
-       cfg->cbb = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
-       first_bb = cfg->cbb;
-
-       for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
-               MonoInst *ins;
-               MonoInst *prev = NULL;
-               MonoInst *src_var, *src, *dest;
-               gboolean restart;
-               int dreg;
-
-               if (cfg->verbose_level > 2) mono_print_bb (bb, "BEFORE LOWER-VTYPE-OPTS(LLVM) ");
-
-               cfg->cbb->code = cfg->cbb->last_ins = NULL;
-               restart = TRUE;
-
-               while (restart) {
-                       restart = FALSE;
-
-                       for (ins = bb->code; ins; ins = ins->next) {
-                               switch (ins->opcode) {
-                               case OP_STOREV_MEMBASE: {
-                                       src_var = get_vreg_to_inst (cfg, ins->sreg1);
-
-                                       if (!src_var) {
-                                               g_assert (ins->klass);
-                                               src_var = mono_compile_create_var_for_vreg (cfg, &ins->klass->byval_arg, OP_LOCAL, ins->sreg1);
-                                       }
-
-                                       EMIT_NEW_VARLOADA_VREG ((cfg), (src), ins->sreg1, &ins->klass->byval_arg);
-
-                                       dreg = alloc_preg (cfg);
-                                       EMIT_NEW_BIALU_IMM (cfg, dest, OP_ADD_IMM, dreg, ins->inst_destbasereg, ins->inst_offset);
-                                       mini_emit_stobj (cfg, dest, src, src_var->klass, src_var->backend.is_pinvoke);
-                                       break;
-                               }
-                               default:
-                                       break;
-                               }
-
-                               g_assert (cfg->cbb == first_bb);
-
-                               if (cfg->cbb->code || (cfg->cbb != first_bb)) {
-                                       /* Replace the original instruction with the new code sequence */
-
-                                       mono_replace_ins (cfg, bb, ins, &prev, first_bb, cfg->cbb);
-                                       first_bb->code = first_bb->last_ins = NULL;
-                                       first_bb->in_count = first_bb->out_count = 0;
-                                       cfg->cbb = first_bb;
-                               }
-                               else
-                                       prev = ins;
-                       }
-               }
-
-               if (cfg->verbose_level > 2) mono_print_bb (bb, "AFTER LOWER-VTYPE-OPTS(LLVM) ");
-       }
-}
-
 inline static MonoInst *
 mono_get_domainvar (MonoCompile *cfg)
 {
@@ -1536,7 +1486,7 @@ mono_decompose_array_access_opts (MonoCompile *cfg)
         * Create a dummy bblock and emit code into it so we can use the normal 
         * code generation macros.
         */
-       cfg->cbb = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
+       cfg->cbb = (MonoBasicBlock *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock));
        first_bb = cfg->cbb;
 
        for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
index 285eb3f49edbf98ae7ac2b47f5e451f6c2c6e3dd..bf1134be6bb765cbed3bab6e178cd595a00106d3 100644 (file)
@@ -193,4 +193,4 @@ class Tests {
                
                return 0;
        }
-}
\ No newline at end of file
+}
index b9437db9be4aea35c456101921a911d5c6529e29..ab3ba6333cce8f5c11d47acd8c0b7759ce421275 100644 (file)
@@ -117,7 +117,7 @@ compute_dominators (MonoCompile *cfg)
                MonoBitSet *dominators;
                char *mem;
 
-               mem = mono_mempool_alloc0 (cfg->mempool, bitsize);
+               mem = (char *)mono_mempool_alloc0 (cfg->mempool, bitsize);
 
                bb->dominators = dominators = mono_bitset_mem_new (mem, cfg->num_bblocks, 0);
                mem += bitsize;
@@ -199,7 +199,7 @@ compute_dominance_frontier (MonoCompile *cfg)
                cfg->bblocks [i]->flags &= ~BB_VISITED;
 
        bitsize = mono_bitset_alloc_size (cfg->num_bblocks, 0);
-       mem = mono_mempool_alloc0 (cfg->mempool, bitsize * cfg->num_bblocks);
+       mem = (char *)mono_mempool_alloc0 (cfg->mempool, bitsize * cfg->num_bblocks);
  
        for (i = 0; i < cfg->num_bblocks; ++i) {
                MonoBasicBlock *bb = cfg->bblocks [i];
@@ -332,7 +332,7 @@ mono_compute_natural_loops (MonoCompile *cfg)
                                        GList *l;
 
                                        for (l = h->loop_blocks; l; l = l->next) {
-                                               MonoBasicBlock *b = l->data;
+                                               MonoBasicBlock *b = (MonoBasicBlock *)l->data;
                                                if (b->dfn)
                                                        mono_bitset_set_fast (in_loop_blocks, b->dfn);
                                        }
index 650b19a389259c251d0e5779af0ef52499ae3473..ab0fab80d49bfbb5d9276f9e7c8559a7b94ca46d 100644 (file)
@@ -45,7 +45,7 @@
 #include <mono/metadata/mono-debug.h>
 #include <mono/metadata/security-manager.h>
 #include <mono/metadata/security-core-clr.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/coree.h>
 #include <mono/metadata/attach.h>
 #include "mono/utils/mono-counters.h"
 
 #include "mini.h"
 #include "jit.h"
+#include "aot-compiler.h"
+
 #include <string.h>
 #include <ctype.h>
 #include <locale.h>
 #include "version.h"
 #include "debugger-agent.h"
+#if TARGET_OSX
+#   include <sys/resource.h>
+#endif
 
 static FILE *mini_stats_fd;
 
@@ -145,7 +150,7 @@ extern char *nacl_mono_path;
 #define EXCLUDED_FROM_ALL (MONO_OPT_SHARED | MONO_OPT_PRECOMP | MONO_OPT_UNSAFE | MONO_OPT_GSHAREDVT | MONO_OPT_FLOAT32)
 
 static guint32
-parse_optimizations (guint32 opt, const char* p)
+parse_optimizations (guint32 opt, const char* p, gboolean cpu_opts)
 {
        guint32 exclude = 0;
        const char *n;
@@ -155,8 +160,10 @@ parse_optimizations (guint32 opt, const char* p)
        mono_hwcap_init ();
 
        /* call out to cpu detection code here that sets the defaults ... */
-       opt |= mono_arch_cpu_optimizations (&exclude);
-       opt &= ~exclude;
+       if (cpu_opts) {
+               opt |= mono_arch_cpu_optimizations (&exclude);
+               opt &= ~exclude;
+       }
        if (!p)
                return opt;
 
@@ -282,12 +289,12 @@ mono_parse_default_optimizations (const char* p)
 {
        guint32 opt;
 
-       opt = parse_optimizations (DEFAULT_OPTIMIZATIONS, p);
+       opt = parse_optimizations (DEFAULT_OPTIMIZATIONS, p, TRUE);
        return opt;
 }
 
-static char*
-opt_descr (guint32 flags) {
+char*
+mono_opt_descr (guint32 flags) {
        GString *str = g_string_new ("");
        int i, need_comma;
 
@@ -356,7 +363,7 @@ mini_regression_step (MonoImage *image, int verbose, int *total_run, int *total,
        int i;
 
        mono_set_defaults (verbose, opt_flags);
-       n = opt_descr (opt_flags);
+       n = mono_opt_descr (opt_flags);
        g_print ("Test run: image=%s, opts=%s\n", mono_image_get_filename (image), n);
        g_free (n);
        cfailed = failed = run = code_size = 0;
@@ -390,7 +397,7 @@ mini_regression_step (MonoImage *image, int verbose, int *total_run, int *total,
                                if (verbose >= 2)
                                        g_print ("Running '%s' ...\n", method->name);
 #ifdef MONO_USE_AOT_COMPILER
-                               if ((func = mono_aot_get_method (mono_get_root_domain (), method)))
+                               if ((func = (TestMethod)mono_aot_get_method (mono_get_root_domain (), method)))
                                        ;
                                else
 #endif
@@ -450,7 +457,7 @@ mini_regression (MonoImage *image, int verbose, int *total_run)
                fprintf (mini_stats_fd, "$graph->set_legend(qw(");
                for (opt = 0; opt < G_N_ELEMENTS (opt_sets); opt++) {
                        guint32 opt_flags = opt_sets [opt];
-                       n = opt_descr (opt_flags);
+                       n = mono_opt_descr (opt_flags);
                        if (!n [0])
                                n = (char *)"none";
                        if (opt)
@@ -495,7 +502,7 @@ mini_regression (MonoImage *image, int verbose, int *total_run)
                for (iter = mono_single_method_list; iter; iter = g_slist_next (iter)) {
                        char *method_name;
 
-                       mono_current_single_method = iter->data;
+                       mono_current_single_method = (MonoMethod *)iter->data;
 
                        method_name = mono_method_full_name (mono_current_single_method, TRUE);
                        g_print ("Current single method: %s\n", method_name);
@@ -932,7 +939,7 @@ compile_all_methods_thread_main_inner (CompileAllThreadArgs *args)
                        g_print ("Compiling %d %s\n", count, desc);
                        g_free (desc);
                }
-               cfg = mini_method_compile (method, mono_get_optimizations_for_method (method, args->opts), mono_get_root_domain (), 0, 0, -1);
+               cfg = mini_method_compile (method, mono_get_optimizations_for_method (method, args->opts), mono_get_root_domain (), (JitFlags)0, 0, -1);
                if (cfg->exception_type != MONO_EXCEPTION_NONE) {
                        printf ("Compilation of %s failed with exception '%s':\n", mono_method_full_name (cfg->method, TRUE), cfg->exception_message);
                        fail_count ++;
@@ -1015,7 +1022,7 @@ typedef struct
 
 static void main_thread_handler (gpointer user_data)
 {
-       MainThreadArgs *main_args = user_data;
+       MainThreadArgs *main_args = (MainThreadArgs *)user_data;
        MonoAssembly *assembly;
 
        if (mono_compile_aot) {
@@ -1077,7 +1084,7 @@ load_agent (MonoDomain *domain, char *desc)
        MonoImageOpenStatus open_status;
 
        if (col) {
-               agent = g_memdup (desc, col - desc + 1);
+               agent = (char *)g_memdup (desc, col - desc + 1);
                agent [col - desc] = '\0';
                args = col + 1;
        } else {
@@ -1255,9 +1262,9 @@ mini_debug_usage (void)
 }
 
 #if defined(MONO_ARCH_ARCHITECTURE)
-/* Redefine ARCHITECTURE to include more information */
-#undef ARCHITECTURE
-#define ARCHITECTURE MONO_ARCH_ARCHITECTURE
+/* Redefine MONO_ARCHITECTURE to include more information */
+#undef MONO_ARCHITECTURE
+#define MONO_ARCHITECTURE MONO_ARCH_ARCHITECTURE
 #endif
 
 static const char info[] =
@@ -1278,7 +1285,7 @@ static const char info[] =
 #else
     "\tNotification:  Thread + polling\n"
 #endif
-        "\tArchitecture:  " ARCHITECTURE "\n"
+        "\tArchitecture:  " MONO_ARCHITECTURE "\n"
        "\tDisabled:      " DISABLED_FEATURES "\n"
        "\tMisc:          "
 #ifdef MONO_SMALL_CONFIG
@@ -1369,10 +1376,10 @@ mono_jit_parse_options (int argc, char * argv[])
                        opt->soft_breakpoints = TRUE;
                        opt->explicit_null_checks = TRUE;
                } else if (strncmp (argv [i], "--optimize=", 11) == 0) {
-                       opt = parse_optimizations (opt, argv [i] + 11);
+                       opt = parse_optimizations (opt, argv [i] + 11, TRUE);
                        mono_set_optimizations (opt);
                } else if (strncmp (argv [i], "-O=", 3) == 0) {
-                       opt = parse_optimizations (opt, argv [i] + 3);
+                       opt = parse_optimizations (opt, argv [i] + 3, TRUE);
                        mono_set_optimizations (opt);
                } else if (strcmp (argv [i], "--trace") == 0) {
                        trace_options = (char*)"";
@@ -1433,7 +1440,7 @@ mono_set_use_smp (int use_smp)
 #ifdef GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY
                sched_setaffinity (getpid(), (gpointer)&proc_mask);
 #else
-               sched_setaffinity (getpid(), sizeof (unsigned long), (gpointer)&proc_mask);
+               sched_setaffinity (getpid(), sizeof (unsigned long), (const cpu_set_t *)&proc_mask);
 #endif
        }
 #endif
@@ -1468,14 +1475,30 @@ switch_gc (char* argv[], const char* target_gc)
 
 #ifdef TARGET_OSX
 
+/*
+ * tries to increase the minimum number of files, if the number is below 1024
+ */
+static void
+darwin_change_default_file_handles ()
+{
+       struct rlimit limit;
+       
+       if (getrlimit (RLIMIT_NOFILE, &limit) == 0){
+               if (limit.rlim_cur < 1024){
+                       limit.rlim_cur = MAX(1024,limit.rlim_cur);
+                       setrlimit (RLIMIT_NOFILE, &limit);
+               }
+       }
+}
+
 static void
 switch_arch (char* argv[], const char* target_arch)
 {
        GString *path;
        gsize arch_offset;
 
-       if ((strcmp (target_arch, "32") == 0 && strcmp (ARCHITECTURE, "x86") == 0) ||
-               (strcmp (target_arch, "64") == 0 && strcmp (ARCHITECTURE, "amd64") == 0)) {
+       if ((strcmp (target_arch, "32") == 0 && strcmp (MONO_ARCHITECTURE, "x86") == 0) ||
+               (strcmp (target_arch, "64") == 0 && strcmp (MONO_ARCHITECTURE, "amd64") == 0)) {
                return; /* matching arch loaded */
        }
 
@@ -1518,7 +1541,7 @@ mono_main (int argc, char* argv[])
        char *config_file = NULL;
        int i, count = 1;
        guint32 opt, action = DO_EXEC, recompilation_times = 1;
-       MonoGraphOptions mono_graph_options = 0;
+       MonoGraphOptions mono_graph_options = (MonoGraphOptions)0;
        int mini_verbose = 0;
        gboolean enable_profile = FALSE;
        char *trace_options = NULL;
@@ -1548,6 +1571,10 @@ mono_main (int argc, char* argv[])
 
        setlocale (LC_ALL, "");
 
+#if TARGET_OSX
+       darwin_change_default_file_handles ();
+#endif
+       
        if (g_getenv ("MONO_NO_SMP"))
                mono_set_use_smp (FALSE);
        
@@ -1564,7 +1591,7 @@ mono_main (int argc, char* argv[])
                } else if (strncmp (argv [i], "--single-method=", 16) == 0) {
                        char *full_opts = g_strdup_printf ("-all,%s", argv [i] + 16);
                        action = DO_SINGLE_METHOD_REGRESSION;
-                       mono_single_method_regression_opt = parse_optimizations (opt, full_opts);
+                       mono_single_method_regression_opt = parse_optimizations (opt, full_opts, TRUE);
                        g_free (full_opts);
                } else if (strcmp (argv [i], "--verbose") == 0 || strcmp (argv [i], "-v") == 0) {
                        mini_verbose++;
@@ -1614,9 +1641,20 @@ mono_main (int argc, char* argv[])
                        }
                        mini_stats_fd = fopen (argv [++i], "w+");
                } else if (strncmp (argv [i], "--optimize=", 11) == 0) {
-                       opt = parse_optimizations (opt, argv [i] + 11);
+                       opt = parse_optimizations (opt, argv [i] + 11, TRUE);
                } else if (strncmp (argv [i], "-O=", 3) == 0) {
-                       opt = parse_optimizations (opt, argv [i] + 3);
+                       opt = parse_optimizations (opt, argv [i] + 3, TRUE);
+               } else if (strncmp (argv [i], "--bisect=", 9) == 0) {
+                       char *param = argv [i] + 9;
+                       char *sep = strchr (param, ':');
+                       if (!sep) {
+                               fprintf (stderr, "Error: --bisect requires OPT:FILENAME\n");
+                               return 1;
+                       }
+                       char *opt_string = g_strndup (param, sep - param);
+                       guint32 opt = parse_optimizations (0, opt_string, FALSE);
+                       g_free (opt_string);
+                       mono_set_bisect_methods (opt, sep + 1);
                } else if (strcmp (argv [i], "--gc=sgen") == 0) {
                        switch_gc (argv, "sgen");
                } else if (strcmp (argv [i], "--gc=boehm") == 0) {
@@ -2111,10 +2149,10 @@ mono_main (int argc, char* argv[])
                        (method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL)) {
                        MonoMethod *nm;
                        nm = mono_marshal_get_native_wrapper (method, TRUE, FALSE);
-                       cfg = mini_method_compile (nm, opt, mono_get_root_domain (), 0, part, -1);
+                       cfg = mini_method_compile (nm, opt, mono_get_root_domain (), (JitFlags)0, part, -1);
                }
                else
-                       cfg = mini_method_compile (method, opt, mono_get_root_domain (), 0, part, -1);
+                       cfg = mini_method_compile (method, opt, mono_get_root_domain (), (JitFlags)0, part, -1);
                if ((mono_graph_options & MONO_GRAPH_CFG_SSA) && !(cfg->comp_done & MONO_COMP_SSA)) {
                        g_warning ("no SSA info available (use -O=deadce)");
                        return 1;
@@ -2133,7 +2171,7 @@ mono_main (int argc, char* argv[])
                        fprintf (mini_stats_fd, "[");
                        for (i = 0; i < G_N_ELEMENTS (opt_sets); i++) {
                                opt = opt_sets [i];
-                               n = opt_descr (opt);
+                               n = mono_opt_descr (opt);
                                if (!n [0])
                                        n = "none";
                                fprintf (mini_stats_fd, "\"%s\",", n);
@@ -2146,7 +2184,7 @@ mono_main (int argc, char* argv[])
                                opt = opt_sets [i];
                                g_timer_start (timer);
                                for (j = 0; j < count; ++j) {
-                                       cfg = mini_method_compile (method, opt, mono_get_root_domain (), 0, 0, -1);
+                                       cfg = mini_method_compile (method, opt, mono_get_root_domain (), (JitFlags)0, 0, -1);
                                        mono_destroy_compile (cfg);
                                }
                                g_timer_stop (timer);
@@ -2169,12 +2207,12 @@ mono_main (int argc, char* argv[])
                                        (method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL))
                                        method = mono_marshal_get_native_wrapper (method, TRUE, FALSE);
 
-                               cfg = mini_method_compile (method, opt, mono_get_root_domain (), 0, 0, -1);
+                               cfg = mini_method_compile (method, opt, mono_get_root_domain (), (JitFlags)0, 0, -1);
                                mono_destroy_compile (cfg);
                        }
                }
        } else {
-               cfg = mini_method_compile (method, opt, mono_get_root_domain (), 0, 0, -1);
+               cfg = mini_method_compile (method, opt, mono_get_root_domain (), (JitFlags)0, 0, -1);
                mono_destroy_compile (cfg);
        }
 #endif
@@ -2226,14 +2264,16 @@ void
 mono_jit_set_aot_only (gboolean val)
 {
        mono_aot_only = val;
-       if (mono_aot_only)
-               mono_llvm_only = TRUE;
 }
 
 void
 mono_jit_set_aot_mode (MonoAotMode mode)
 {
        mono_aot_mode = mode;
+       if (mono_aot_mode == MONO_AOT_MODE_LLVMONLY) {
+               mono_aot_only = TRUE;
+               mono_llvm_only = TRUE;
+       }
 }
 
 /**
@@ -2286,3 +2326,84 @@ mono_set_crash_chaining (gboolean chain_crashes)
 {
        mono_do_crash_chaining = chain_crashes;
 }
+
+void
+mono_parse_env_options (int *ref_argc, char **ref_argv [])
+{
+       int argc = *ref_argc;
+       char **argv = *ref_argv;
+
+       const char *env_options = g_getenv ("MONO_ENV_OPTIONS");
+       if (env_options != NULL){
+               GPtrArray *array = g_ptr_array_new ();
+               GString *buffer = g_string_new ("");
+               const char *p;
+               unsigned i;
+               gboolean in_quotes = FALSE;
+               char quote_char = '\0';
+
+               for (p = env_options; *p; p++){
+                       switch (*p){
+                       case ' ': case '\t':
+                               if (!in_quotes) {
+                                       if (buffer->len != 0){
+                                               g_ptr_array_add (array, g_strdup (buffer->str));
+                                               g_string_truncate (buffer, 0);
+                                       }
+                               } else {
+                                       g_string_append_c (buffer, *p);
+                               }
+                               break;
+                       case '\\':
+                               if (p [1]){
+                                       g_string_append_c (buffer, p [1]);
+                                       p++;
+                               }
+                               break;
+                       case '\'':
+                       case '"':
+                               if (in_quotes) {
+                                       if (quote_char == *p)
+                                               in_quotes = FALSE;
+                                       else
+                                               g_string_append_c (buffer, *p);
+                               } else {
+                                       in_quotes = TRUE;
+                                       quote_char = *p;
+                               }
+                               break;
+                       default:
+                               g_string_append_c (buffer, *p);
+                               break;
+                       }
+               }
+               if (in_quotes) {
+                       fprintf (stderr, "Unmatched quotes in value of MONO_ENV_OPTIONS: [%s]\n", env_options);
+                       exit (1);
+               }
+                       
+               if (buffer->len != 0)
+                       g_ptr_array_add (array, g_strdup (buffer->str));
+               g_string_free (buffer, TRUE);
+
+               if (array->len > 0){
+                       int new_argc = array->len + argc;
+                       char **new_argv = g_new (char *, new_argc + 1);
+                       int j;
+
+                       new_argv [0] = argv [0];
+                       
+                       /* First the environment variable settings, to allow the command line options to override */
+                       for (i = 0; i < array->len; i++)
+                               new_argv [i+1] = (char *)g_ptr_array_index (array, i);
+                       i++;
+                       for (j = 1; j < argc; j++)
+                               new_argv [i++] = argv [j];
+                       new_argv [i] = NULL;
+
+                       *ref_argc = new_argc;
+                       *ref_argv = new_argv;
+               }
+               g_ptr_array_free (array, TRUE);
+       }
+}
index 090f29fb12e5641b4ef9c7068b3bafbfb8a9b8e0..771c1be1e7f993d2aeed58b0c645fe4b696a4746 100644 (file)
@@ -223,6 +223,39 @@ emit_byte (MonoDwarfWriter *w, guint8 val)
        mono_img_writer_emit_byte (w->w, val); 
 }
 
+static void
+emit_escaped_string (MonoDwarfWriter *w, char *value)
+{
+       int i, len;
+
+       len = strlen (value);
+       for (i = 0; i < len; ++i) {
+               char c = value [i];
+               if (!(isalnum (c))) {
+                       switch (c) {
+                       case '_':
+                       case '-':
+                       case ':':
+                       case '.':
+                       case ',':
+                       case '/':
+                       case '<':
+                       case '>':
+                       case '`':
+                       case '(':
+                       case ')':
+                       case '[':
+                       case ']':
+                               break;
+                       default:
+                               value [i] = '_';
+                               break;
+                       }
+               }
+       }
+       mono_img_writer_emit_string (w->w, value);
+}
+
 static G_GNUC_UNUSED void
 emit_uleb128 (MonoDwarfWriter *w, guint32 value)
 {
@@ -678,7 +711,7 @@ mono_dwarf_escape_path (const char *name)
                int len, i, j;
 
                len = strlen (name);
-               s = g_malloc0 ((len + 1) * 2);
+               s = (char *)g_malloc0 ((len + 1) * 2);
                j = 0;
                for (i = 0; i < len; ++i) {
                        if (name [i] == '\\') {
@@ -708,7 +741,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
        /* Collect files */
        info_list = g_slist_reverse (w->line_info);
        for (l = info_list; l; l = l->next) {
-               MethodLineNumberInfo *info = l->data;
+               MethodLineNumberInfo *info = (MethodLineNumberInfo *)l->data;
                MonoDebugMethodInfo *minfo;
                GPtrArray *source_file_list;
 
@@ -719,7 +752,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
 
                mono_debug_get_seq_points (minfo, NULL, &source_file_list, NULL, NULL, NULL);
                for (i = 0; i < source_file_list->len; ++i) {
-                       MonoDebugSourceInfo *sinfo = g_ptr_array_index (source_file_list, i);
+                       MonoDebugSourceInfo *sinfo = (MonoDebugSourceInfo *)g_ptr_array_index (source_file_list, i);
                        add_line_number_file_name (w, sinfo->source_file, 0, 0);
                }
        }               
@@ -728,7 +761,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
        dir_to_index = g_hash_table_new (g_str_hash, g_str_equal);
        index_to_dir = g_hash_table_new (NULL, NULL);
        for (i = 0; i < w->line_number_file_index; ++i) {
-               char *name = g_hash_table_lookup (w->index_to_file, GUINT_TO_POINTER (i + 1));
+               char *name = (char *)g_hash_table_lookup (w->index_to_file, GUINT_TO_POINTER (i + 1));
                char *copy;
                int dir_index = 0;
 
@@ -778,7 +811,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
        /* Includes */
        emit_section_change (w, ".debug_line", 0);
        for (i = 0; i < w->line_number_dir_index; ++i) {
-               char *dir = g_hash_table_lookup (index_to_dir, GUINT_TO_POINTER (i + 1));
+               char *dir = (char *)g_hash_table_lookup (index_to_dir, GUINT_TO_POINTER (i + 1));
 
                emit_string (w, mono_dwarf_escape_path (dir));
        }
@@ -787,7 +820,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
 
        /* Files */
        for (i = 0; i < w->line_number_file_index; ++i) {
-               char *name = g_hash_table_lookup (w->index_to_file, GUINT_TO_POINTER (i + 1));
+               char *name = (char *)g_hash_table_lookup (w->index_to_file, GUINT_TO_POINTER (i + 1));
                char *basename = NULL, *dir;
                int dir_index = 0;
 
@@ -814,7 +847,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
 
        /* Emit line number table */
        for (l = info_list; l; l = l->next) {
-               MethodLineNumberInfo *info = l->data;
+               MethodLineNumberInfo *info = (MethodLineNumberInfo *)l->data;
                MonoDebugMethodJitInfo *dmji;
 
                dmji = mono_debug_find_method (info->method, mono_domain_get ());
@@ -978,7 +1011,7 @@ get_class_die (MonoDwarfWriter *w, MonoClass *klass, gboolean vtype)
        else
                cache = w->class_to_die;
 
-       return g_hash_table_lookup (cache, klass);
+       return (const char *)g_hash_table_lookup (cache, klass);
 }
 
 /* Returns the local symbol pointing to the emitted debug info */
@@ -999,7 +1032,7 @@ emit_class_dwarf_info (MonoDwarfWriter *w, MonoClass *klass, gboolean vtype)
        else
                cache = w->class_to_die;
 
-       die = g_hash_table_lookup (cache, klass);
+       die = (char *)g_hash_table_lookup (cache, klass);
        if (die)
                return die;
 
@@ -1206,7 +1239,7 @@ get_type_die (MonoDwarfWriter *w, MonoType *t)
 
        if (t->byref) {
                if (t->type == MONO_TYPE_VALUETYPE) {
-                       tdie = g_hash_table_lookup (w->class_to_pointer_die, klass);
+                       tdie = (const char *)g_hash_table_lookup (w->class_to_pointer_die, klass);
                }
                else {
                        tdie = get_class_die (w, klass, FALSE);
@@ -1223,7 +1256,7 @@ get_type_die (MonoDwarfWriter *w, MonoType *t)
        } else {
                switch (t->type) {
                case MONO_TYPE_CLASS:
-                       tdie = g_hash_table_lookup (w->class_to_reference_die, klass);
+                       tdie = (const char *)g_hash_table_lookup (w->class_to_reference_die, klass);
                        //tdie = ".LDIE_OBJECT";
                        break;
                case MONO_TYPE_ARRAY:
@@ -1237,7 +1270,7 @@ get_type_die (MonoDwarfWriter *w, MonoType *t)
                        break;
                case MONO_TYPE_GENERICINST:
                        if (!MONO_TYPE_ISSTRUCT (t)) {
-                               tdie = g_hash_table_lookup (w->class_to_reference_die, klass);
+                               tdie = (const char *)g_hash_table_lookup (w->class_to_reference_die, klass);
                        } else {
                                tdie = ".LDIE_I4";
                        }
@@ -1386,7 +1419,7 @@ token_handler (MonoDisHelper *dh, MonoMethod *method, guint32 token)
        case CEE_CASTCLASS:
        case CEE_LDELEMA:
                if (method->wrapper_type) {
-                       klass = data;
+                       klass = (MonoClass *)data;
                } else {
                        klass = mono_class_get_checked (method->klass->image, token, &error);
                        g_assert (mono_error_ok (&error)); /* FIXME error handling */
@@ -1397,7 +1430,7 @@ token_handler (MonoDisHelper *dh, MonoMethod *method, guint32 token)
        case CEE_CALL:
        case CEE_CALLVIRT:
                if (method->wrapper_type)
-                       cmethod = data;
+                       cmethod = (MonoMethod *)data;
                else
                        cmethod = mono_get_method_full (method->klass->image, token, NULL, NULL);
                desc = mono_method_full_name (cmethod, TRUE);
@@ -1406,7 +1439,7 @@ token_handler (MonoDisHelper *dh, MonoMethod *method, guint32 token)
                break;
        case CEE_CALLI:
                if (method->wrapper_type) {
-                       desc = mono_signature_get_desc (data, FALSE);
+                       desc = mono_signature_get_desc ((MonoMethodSignature *)data, FALSE);
                        res = g_strdup_printf ("<%s>", desc);
                        g_free (desc);
                } else {
@@ -1418,7 +1451,7 @@ token_handler (MonoDisHelper *dh, MonoMethod *method, guint32 token)
        case CEE_STFLD:
        case CEE_STSFLD:
                if (method->wrapper_type) {
-                       field = data;
+                       field = (MonoClassField *)data;
                } else {
                        field = mono_field_from_token_checked (method->klass->image, token, &klass, NULL,  &error);
                        g_assert (mono_error_ok (&error)); /* FIXME error handling */
@@ -1587,7 +1620,7 @@ emit_line_number_info (MonoDwarfWriter *w, MonoMethod *method,
        ln_array = g_new0 (MonoDebugLineNumberEntry, debug_info->num_line_numbers);
        memcpy (ln_array, debug_info->line_numbers, debug_info->num_line_numbers * sizeof (MonoDebugLineNumberEntry));
 
-       qsort (ln_array, debug_info->num_line_numbers, sizeof (MonoDebugLineNumberEntry), (gpointer)compare_lne);
+       qsort (ln_array, debug_info->num_line_numbers, sizeof (MonoDebugLineNumberEntry), (int (*)(const void *, const void *))compare_lne);
 
        native_to_il_offset = g_new0 (int, code_size + 1);
 
@@ -1870,7 +1903,7 @@ mono_dwarf_writer_emit_method (MonoDwarfWriter *w, MonoCompile *cfg, MonoMethod
        emit_uleb128 (w, ABBREV_SUBPROGRAM);
        /* DW_AT_name */
        name = mono_method_full_name (method, FALSE);
-       emit_string (w, name);
+       emit_escaped_string (w, name);
        /* DW_AT_MIPS_linkage_name */
        if (linkage_name)
                emit_string (w, linkage_name);
index b511e7d8c9dc07ab2854269be6f5e805a711fe7b..63e667985fefde6e36f7bfcad7cc33eef8f8679d 100755 (executable)
@@ -35,7 +35,7 @@ foreach $line (<STDIN>) {
         } else {
             $successbool = "True";
         }
-        open (my $nunitxml, '>', 'TestResults_regression.xml') or die "Could not write to 'TestResults_regression.xml' $!";
+        open (my $nunitxml, '>', 'TestResult-regression.xml') or die "Could not write to 'TestResult-regression.xml' $!";
         print $nunitxml "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n";
         print $nunitxml "<!--This file represents the results of running a test suite-->\n";
         print $nunitxml "<test-results name=\"regression-tests.dummy\" total=\"$total\" failures=\"$failed\" not-run=\"0\" date=\"" . strftime ("%F", localtime) . "\" time=\"" . strftime ("%T", localtime) . "\">\n";
index 4f7e336e6d2ee53f4ef524810ac7d667809d8723..3f039f74b3e71ad570f7b0cbe5df185b6329566f 100644 (file)
@@ -28,7 +28,7 @@
 #include <mono/metadata/threads-types.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/exception.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/mono-debug.h>
 #include <mono/utils/mono-mmap.h>
 
@@ -167,7 +167,7 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
 
        /* restore_contect (MonoContext *ctx) */
 
-       start = code = mono_global_codeman_reserve (256);
+       start = code = (guint8 *)mono_global_codeman_reserve (256);
 
        amd64_mov_reg_reg (code, AMD64_R11, AMD64_ARG_REG1, 8);
 
@@ -226,7 +226,7 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
        GSList *unwind_ops = NULL;
        const guint kMaxCodeSize = NACL_SIZE (128, 256);
 
-       start = code = mono_global_codeman_reserve (kMaxCodeSize);
+       start = code = (guint8 *)mono_global_codeman_reserve (kMaxCodeSize);
 
        /* call_filter (MonoContext *ctx, unsigned long eip) */
        code = start;
@@ -381,7 +381,7 @@ get_throw_trampoline (MonoTrampInfo **info, gboolean rethrow, gboolean corlib, g
        dummy_stack_space = 0;
 #endif
 
-       start = code = mono_global_codeman_reserve (kMaxCodeSize);
+       start = code = (guint8 *)mono_global_codeman_reserve (kMaxCodeSize);
 
        /* The stack is unaligned on entry */
        stack_size = ALIGN_TO (sizeof (MonoContext) + 64 + dummy_stack_space, MONO_ARCH_FRAME_ALIGNMENT) + 8;
@@ -561,9 +561,9 @@ mono_arch_unwind_frame (MonoDomain *domain, MonoJitTlsData *jit_tls,
                for (i = 0; i < AMD64_NREG; ++i)
                        regs [i] = new_ctx->gregs [i];
 
-               mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, 
+               mono_unwind_frame (unwind_info, unwind_info_len, (guint8 *)ji->code_start,
                                                   (guint8*)ji->code_start + ji->code_size,
-                                                  ip, epilog ? &epilog : NULL, regs, MONO_MAX_IREGS + 1,
+                                                  (guint8 *)ip, epilog ? &epilog : NULL, regs, MONO_MAX_IREGS + 1,
                                                   save_locations, MONO_MAX_IREGS, &cfa);
 
                for (i = 0; i < AMD64_NREG; ++i)
@@ -590,7 +590,7 @@ mono_arch_unwind_frame (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
                        memcpy (new_ctx, &ext->ctx, sizeof (MonoContext));
 
-                       *lmf = (gpointer)(((guint64)(*lmf)->previous_lmf) & ~7);
+                       *lmf = (MonoLMF *)(((guint64)(*lmf)->previous_lmf) & ~7);
 
                        frame->type = FRAME_TYPE_DEBUGGER_INVOKE;
 
@@ -615,7 +615,7 @@ mono_arch_unwind_frame (MonoDomain *domain, MonoJitTlsData *jit_tls,
                        rip = *(guint64*)((*lmf)->rsp - sizeof(mgreg_t));
                }
 
-               ji = mini_jit_info_table_find (domain, (gpointer)rip, NULL);
+               ji = mini_jit_info_table_find (domain, (char *)rip, NULL);
                /*
                 * FIXME: ji == NULL can happen when a managed-to-native wrapper is interrupted
                 * in the soft debugger suspend code, since (*lmf)->rsp no longer points to the
@@ -652,7 +652,7 @@ mono_arch_unwind_frame (MonoDomain *domain, MonoJitTlsData *jit_tls,
                        }
                }
 
-               *lmf = (gpointer)(((guint64)(*lmf)->previous_lmf) & ~7);
+               *lmf = (MonoLMF *)(((guint64)(*lmf)->previous_lmf) & ~7);
 
                return TRUE;
        }
@@ -668,12 +668,12 @@ mono_arch_unwind_frame (MonoDomain *domain, MonoJitTlsData *jit_tls,
 static void
 handle_signal_exception (gpointer obj)
 {
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoContext ctx;
 
        memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext));
 
-       mono_handle_exception (&ctx, obj);
+       mono_handle_exception (&ctx, (MonoObject *)obj);
 
        mono_restore_context (&ctx);
 }
@@ -715,7 +715,7 @@ mono_arch_handle_exception (void *sigctx, gpointer obj)
         * signal is disabled, and we could run arbitrary code though the debugger. So
         * resume into the normal stack and do most work there if possible.
         */
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
 
        /* Pass the ctx parameter in TLS */
        mono_sigctx_to_monoctx (sigctx, &jit_tls->ex_ctx);
@@ -756,7 +756,7 @@ mono_arch_ip_from_context (void *sigctx)
 static void
 restore_soft_guard_pages (void)
 {
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        if (jit_tls->stack_ovf_guard_base)
                mono_mprotect (jit_tls->stack_ovf_guard_base, jit_tls->stack_ovf_guard_size, MONO_MMAP_NONE);
 }
@@ -771,7 +771,7 @@ static void
 prepare_for_guard_pages (MonoContext *mctx)
 {
        gpointer *sp;
-       sp = (gpointer)(mctx->gregs [AMD64_RSP]);
+       sp = (gpointer *)(mctx->gregs [AMD64_RSP]);
        sp -= 1;
        /* the return addr */
        sp [0] = (gpointer)(mctx->gregs [AMD64_RIP]);
@@ -780,7 +780,7 @@ prepare_for_guard_pages (MonoContext *mctx)
 }
 
 static void
-altstack_handle_and_restore (MonoContext *ctx, gpointer obj, gboolean stack_ovf)
+altstack_handle_and_restore (MonoContext *ctx, MonoObject *obj, gboolean stack_ovf)
 {
        MonoContext mctx;
 
@@ -797,7 +797,7 @@ mono_arch_handle_altstack_exception (void *sigctx, MONO_SIG_HANDLER_INFO_TYPE *s
 {
 #if defined(MONO_ARCH_USE_SIGACTION)
        MonoException *exc = NULL;
-       MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (gpointer)UCONTEXT_REG_RIP (sigctx), NULL);
+       MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (char *)UCONTEXT_REG_RIP (sigctx), NULL);
        gpointer *sp;
        int frame_size;
        MonoContext *copied_ctx;
@@ -818,8 +818,8 @@ mono_arch_handle_altstack_exception (void *sigctx, MONO_SIG_HANDLER_INFO_TYPE *s
        frame_size = sizeof (MonoContext) + sizeof (gpointer) * 4 + 128;
        frame_size += 15;
        frame_size &= ~15;
-       sp = (gpointer)(UCONTEXT_REG_RSP (sigctx) & ~15);
-       sp = (gpointer)((char*)sp - frame_size);
+       sp = (gpointer *)(UCONTEXT_REG_RSP (sigctx) & ~15);
+       sp = (gpointer *)((char*)sp - frame_size);
        copied_ctx = (MonoContext*)(sp + 4);
        /* the arguments must be aligned */
        sp [-1] = (gpointer)UCONTEXT_REG_RIP (sigctx);
@@ -882,7 +882,7 @@ mono_arch_exceptions_init (void)
                /* Call this to avoid initialization races */
                tramps = mono_amd64_get_exception_trampolines (FALSE);
                for (l = tramps; l; l = l->next) {
-                       MonoTrampInfo *info = l->data;
+                       MonoTrampInfo *info = (MonoTrampInfo *)l->data;
 
                        mono_register_jit_icall (info->code, g_strdup (info->name), NULL, TRUE);
                        mono_tramp_info_register (info, NULL);
@@ -1145,7 +1145,7 @@ mono_tasklets_arch_restore (void)
 
        if (saved)
                return (MonoContinuationRestore)saved;
-       code = start = mono_global_codeman_reserve (kMaxCodeSize);
+       code = start = (guint8 *)mono_global_codeman_reserve (kMaxCodeSize);
        /* the signature is: restore (MonoContinuation *cont, int state, MonoLMF **lmf_addr) */
        /* cont is in AMD64_ARG_REG1 ($rcx or $rdi)
         * state is in AMD64_ARG_REG2 ($rdx or $rsi)
index b9299cbe4fd3181883a5bf90efa29e896e4f6328..9d13bfbf2c59a3f485e4a2d963cda406fb4caf04 100644 (file)
@@ -29,7 +29,7 @@
 #include <mono/metadata/threads.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/exception.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/mono-debug.h>
 
 #include "mini.h"
index b3b5633597644d39ff345274d0fc4f2749b21d66..d9b3d9d99c658bfc396ef0e01aa21af3633d7a03 100644 (file)
@@ -21,7 +21,7 @@
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/exception.h>
 #include <mono/metadata/mono-debug.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/tokentype.h>
 
 #include "mini.h"
index 3db25ca7f810f8ab363fe926b3a75c355c3e10da..87a67abd930f3d4ee33149018d6a2ed89ca38fb1 100644 (file)
@@ -23,7 +23,7 @@
 #include <mono/metadata/threads.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/exception.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/mono-debug.h>
 #include <mono/utils/mono-mmap.h>
 
index 131a9c63a5ce1b69d7cfe3ffb0f9450325c9817a..e84abc68b019d0994e72115d53373ee2097a8f99 100644 (file)
@@ -24,14 +24,14 @@ using System.Runtime.CompilerServices;
  * the IL code looks.
  */
 
-#if MOBILE
+#if __MOBILE__
 class ExceptionTests
 #else
 class Tests
 #endif
 {
 
-#if !MOBILE
+#if !__MOBILE__
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
@@ -2589,7 +2589,7 @@ class Tests
        public static int test_0_lmf_filter () {
                try {
                        // The invoke calls a runtime-invoke wrapper which has a filter clause
-#if MOBILE
+#if __MOBILE__
                        typeof (ExceptionTests).GetMethod ("lmf_filter").Invoke (null, new object [] { });
 #else
                        typeof (Tests).GetMethod ("lmf_filter").Invoke (null, new object [] { });
@@ -2816,10 +2816,38 @@ class Tests
                }
                return finally_called ? 0 : 1;
        }
+
+       static int array_len_1 = 1;
+
+       public static int test_0_bounds_check_negative_constant () {
+               try {
+                       byte[] arr = new byte [array_len_1];
+                       byte b = arr [-1];
+                       return 1;
+               } catch {
+               }
+               try {
+                       byte[] arr = new byte [array_len_1];
+                       arr [-1] = 1;
+                       return 2;
+               } catch {
+               }
+               return 0;
+       }
+
+       public static int test_0_string_bounds_check_negative_constant () {
+               try {
+                       string s = "A";
+                       char c = s [-1];
+                       return 1;
+               } catch {
+               }
+               return 0;
+       }
 }
 
-#if !MOBILE
+#if !__MOBILE__
 class ExceptionTests : Tests
 {
 }
-#endif
\ No newline at end of file
+#endif
index 50a91fdf2ea4ef97daa5257c588f42ab40ae82de..023a56d716507bda15dc1dc604531d94b82090eb 100644 (file)
@@ -628,4 +628,4 @@ class Tests {
 
                return (int)lb.o1 + (int)lb.o2 + (int)lb.o3 + (int)lb.o32;
        }
-}
\ No newline at end of file
+}
index 9d7517e39e35c0aa05dc796db55cac9a700f5c25..bf1353f8eed6f5cc3a0928e1c59594f0391884d3 100644 (file)
@@ -5,7 +5,7 @@ using System.Runtime.CompilerServices;
 using System.Threading;
 using System.Threading.Tasks;
 
-#if MOBILE
+#if __MOBILE__
 class GenericsTests
 #else
 class Tests
@@ -21,7 +21,7 @@ class Tests
                }
        }
 
-#if !MOBILE
+#if !__MOBILE__
        class Enumerator <T> : MyIEnumerator <T> {
                T MyIEnumerator<T>.Current {
                        get {
@@ -41,7 +41,7 @@ class Tests
        }
 #endif
 
-#if !MOBILE
+#if !__MOBILE__
        static int Main (string[] args)
        {
                return TestDriver.RunTests (typeof (Tests), args);
@@ -191,7 +191,7 @@ class Tests
        public static int test_0_constrained_vtype_box () {
                GenericClass<TestStruct> t = new GenericClass<TestStruct> ();
 
-#if MOBILE
+#if __MOBILE__
                return t.toString (new TestStruct ()) == "GenericsTests+TestStruct" ? 0 : 1;
 #else
                return t.toString (new TestStruct ()) == "Tests+TestStruct" ? 0 : 1;
@@ -401,7 +401,7 @@ class Tests
                return 0;
        }
 
-#if !MOBILE
+#if !__MOBILE__
        public static int test_0_variance_reflection () {
                // covariance on IEnumerator
                if (!typeof (MyIEnumerator<object>).IsAssignableFrom (typeof (MyIEnumerator<string>)))
@@ -990,6 +990,20 @@ class Tests
                return 0;
        }
 
+       class AClass {
+       }
+
+       class BClass : AClass {
+       }
+
+       public static int test_0_fullaot_variant_iface () {
+               var arr = new BClass [10];
+               var enumerable = (IEnumerable<AClass>)arr;
+               Console.WriteLine (enumerable);
+               enumerable.GetEnumerator ();
+               return 0;
+       }
+
        struct Record : Foo2<Record>.IRecord {
                int counter;
                int Foo2<Record>.IRecord.DoSomething () {
@@ -1233,7 +1247,7 @@ class Tests
        }
 }
 
-#if !MOBILE
+#if !__MOBILE__
 class GenericsTests : Tests
 {
 }
index 0cd3f3b5c815699c87ccd4a2beb6e9e55f633102..b996f8f83b55a07a401a31409d4f5c437228d43c 100644 (file)
@@ -99,7 +99,7 @@ load_file (const char *name) {
                        is_template = TRUE;
                        desc = g_new0 (OpDesc, 1);
                } else {
-                       desc = g_hash_table_lookup (table, str);
+                       desc = (OpDesc *)g_hash_table_lookup (table, str);
                        if (!desc)
                                g_error ("Invalid opcode '%s' at line %d in %s\n", str, line, name);
                        if (desc->desc)
@@ -165,7 +165,7 @@ load_file (const char *name) {
                                tname = p;
                                while (*p && isalnum (*p)) ++p;
                                *p++ = 0;
-                               tdesc = g_hash_table_lookup (template_table, tname);
+                               tdesc = (OpDesc *)g_hash_table_lookup (template_table, tname);
                                if (!tdesc)
                                        g_error ("Invalid template name %s at '%s' at line %d in %s\n", tname, p, line, name);
                                for (i = 0; i < MONO_INST_MAX; ++i) {
index fed9002320487da1e5088867e4905881ca99a3f9..08d2891f87c239c138f3d1e48284f3f8c8399aef 100644 (file)
@@ -20,7 +20,7 @@ static char *
 convert_name (const char *str)
 {
        int i, j, len = strlen (str);
-       char *res = g_malloc (len * 2);
+       char *res = (char *)g_malloc (len * 2);
 
        j = 0;
        for (i = 0; i < len; i++) {
index f5ee9bbbf6069effddeddeeed2067809a3058226..48a3e4416315c97845cd8008ec433f47f67f3979 100644 (file)
@@ -48,13 +48,13 @@ class GFoo3<T> {
 
 // FIXME: Add mixed ref/noref tests, i.e. Dictionary<string, int>
 
-#if MOBILE
+#if __MOBILE__
 public class GSharedTests
 #else
 public class Tests
 #endif
 {
-#if !MOBILE
+#if !__MOBILE__
        public static int Main (String[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
@@ -1718,6 +1718,33 @@ public class Tests
                        return 2;
                return 0;
        }
+
+       public interface IFaceTest {
+               int iface_method ();
+       }
+
+       public interface IFaceConstrainedIFace {
+               int foo<T, T2> (ref T val) where T: IFaceTest;
+       }
+
+       class ConstrainedIFace : IFaceConstrainedIFace {
+               public int foo<T, T2> (ref T val) where T: IFaceTest {
+                       return val.iface_method ();
+               }
+       }
+
+       class ClassTest : IFaceTest {
+               public int iface_method () {
+                       return 42;
+               }
+       }
+
+       // Test constrained calls on an interface made from gsharedvt methods
+       public static int test_42_gsharedvt_constrained_iface () {
+               IFaceConstrainedIFace obj = new ConstrainedIFace ();
+               IFaceTest t = new ClassTest ();
+               return obj.foo<IFaceTest, int> (ref t);
+       }
 }
 
 // #13191
@@ -1735,7 +1762,7 @@ public class MobileServiceCollection<TTable, TCol>
        }
 }
 
-#if !MOBILE
+#if !__MOBILE__
 public class GSharedTests : Tests {
 }
 #endif
index 65b234486b1dae91a3f3840b17e770fa1961caf3..493dbc85a70b677bcf498cf3218b579892dc9528 100644 (file)
@@ -66,7 +66,7 @@ opnames[] = {
 #endif /* DISABLE_LOGGING */
 
 #if defined(__i386__) || defined(__x86_64__)
-#ifndef TARGET_ARM64
+#if !defined(TARGET_ARM64) && !defined(__APPLE__)
 #define emit_debug_info  TRUE
 #else
 #define emit_debug_info  FALSE
diff --git a/mono/mini/iltests.il b/mono/mini/iltests.il
new file mode 100644 (file)
index 0000000..203584e
--- /dev/null
@@ -0,0 +1,2822 @@
+.assembly iltests {
+  .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() =  (
+               01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
+               63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.
+}
+.assembly extern TestDriver {}
+.assembly extern mscorlib {}
+
+.class public auto ansi sealed beforefieldinit Tests {
+
+       .method static public int32 Main(string[] args) il managed {
+               .entrypoint
+               
+               ldtoken Tests
+               call       class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
+               ldarg.0
+               call       int32 [TestDriver]TestDriver::RunTests(class [mscorlib]System.Type, string[])
+               ret
+       }
+
+       // make sure the register allocator works when the return value of
+       // 'div' is discarded
+       .method static public int32 test_0_div_regalloc () il managed {
+               .locals init (
+                       int32 i
+               )
+
+               ldloc 0
+               ldc.i4.s 0xa
+               div
+               pop
+               ldc.i4.0
+               ret
+       }
+       
+       
+       .method static public int32 test_1_ceq_to_i4 () il managed {
+               .locals init (
+                       int32   foo
+               )
+               ldc.i4 500
+               stloc foo
+               ldloc foo
+               ldc.i4 500
+               ceq
+               stloc foo
+               ldloc foo
+               ret
+       }
+       
+       .method static public int32 test_3_shl_regvars () il managed {
+               .locals init (
+                       int32   a,
+                       int32   b,
+                       int32   r1,
+                       int32   r2,
+                       int32   r3
+               )
+                       
+               ldc.i4.2
+               stloc      a
+               ldc.i4.1
+               stloc      b
+       
+               ldloc      a
+               ldloc      b
+               shl 
+               stloc      r1
+               
+               ldloc      a
+               ldloc      b
+               shl 
+               stloc      r2
+               
+               ldloc      a
+               ldloc      b
+               shl 
+               stloc      r3
+               
+               ldloc      r1
+               ldc.i4.4
+               ceq
+               
+               ldloc      r2
+               ldc.i4.4
+               ceq
+               
+               ldloc      r3
+               ldc.i4.4
+               ceq
+               
+               add
+               add
+               
+               ret
+       }
+       
+       .method static public int32 test_1_fceq_to_i4 () il managed {
+       
+               .locals init (
+                       float64 foo,
+                       int32   val
+               )
+
+               ldc.r8      2
+               stloc       foo
+               
+               ldloc       foo
+               ldc.r8      2
+               ceq
+               stloc       val
+               
+               ldloc       val
+               ret
+       }
+
+       //
+       // This should be manually checked. Basically under -O=linears,
+       // you should not see tons of register spilling.
+       //
+       .method static public int32 test_1_bytedreg_free () il managed {
+               .locals init (
+                       int32   foo
+               )
+               ldc.i4 500
+               stloc foo
+               ldloc foo
+               ldc.i4 500
+               ceq
+               stloc foo
+               
+               ldloc foo
+               ldc.i4 1
+               ceq
+               stloc foo
+
+               ldloc foo
+               ldc.i4 1
+               ceq
+               stloc foo
+
+               ldloc foo
+               ldc.i4 1
+               ceq
+               stloc foo
+               
+               ldloc foo
+               ldc.i4 1
+               ceq
+               stloc foo
+               
+               ldloc foo
+               ret
+       }
+       
+       //
+       // This should be manually checked. Basically under -O=linears,
+       // you should not see tons of register spilling.
+       //
+       .method static public int32 test_0_bytesreg1_free () il managed {
+               .locals init (
+                       unsigned int8      dest,
+                       int32              src,
+                       unsigned int8&     pdest
+               )
+
+               ldloca     dest
+               stloc      pdest
+               
+               ldloc      pdest
+               ldloc      src
+               stind.i1
+               
+               ldloc      pdest
+               ldloc      src
+               stind.i1
+               
+               ldloc      pdest
+               ldloc      src
+               stind.i1
+               
+               ldloc      pdest
+               ldloc      src
+               stind.i1
+               
+               ldloc      pdest
+               ldloc      src
+               stind.i1
+               
+               ldloc      pdest
+               ldloc      src
+               stind.i1
+               
+               ldloc      pdest
+               ldind.i1
+               ret
+       }
+       
+       .method static public int32 test_1_shift_regvar () il managed {
+       
+               .locals init (
+                       int32   v7FFFFFFF,
+                       int32   v1
+               )
+               
+               ldc.i4  0x7FFFFFFF
+               stloc   v7FFFFFFF
+       
+               ldc.i4.1
+               stloc v1
+               
+               ldloc   v7FFFFFFF
+               ldloc   v1
+               shl
+               ldc.i4  0xFFFFFFFE
+               ceq
+               ret
+       }
+       
+       // this only happens with the managed pointer, not an unmanaged one.
+       .method static public int32 test_0_foo () il managed {
+       
+               .locals init (
+                       int32&  buf
+               )
+               
+               ldc.i4.5
+               localloc
+               
+               stloc buf
+               ldloc buf
+               
+               ldind.i4
+               
+               ret
+       }
+
+       .method static public int32 test_0_localloc () cil managed {
+               .locals init (native int, native int, native int, native int, int32)
+
+               ldc.i4 6
+               localloc
+               conv.i
+               stloc.0
+
+               ldc.i4 6
+               localloc
+               conv.i
+               stloc.1
+
+               ldc.i4 6
+               localloc
+               conv.i
+               stloc.2
+
+               // Variable length
+               ldc.i4 128
+               stloc.s 4
+               ldloc.s 4
+               localloc
+               conv.i
+               stloc.3
+
+               // Check zero initialized
+               ldloc.0
+               ldind.i4
+               ldc.i4.0
+               beq OK1
+               ldc.i4.1
+               br FAIL
+
+OK1:
+               ldloc.3
+               ldind.i4
+               ldc.i4.0
+               beq OK2
+               ldc.i4.2
+               br FAIL
+
+OK2:
+               ldloc.3
+               ldc.i4.s 124
+               add
+               ldind.i4
+               ldc.i4.0
+               beq OK3
+               ldc.i4.3
+               br FAIL
+
+OK3:
+               ldloc.1
+               ldc.i4 999999
+               stind.i4
+               ldloc.1
+               ldind.i4
+               ldc.i4 999999
+               beq OK4
+               ldc.i4.4
+               br FAIL
+
+OK4:
+               ldloc.0
+               ldc.i4 999999
+               stind.i4
+               ldloc.0
+               ldind.i4
+               ldc.i4 999999
+               beq OK5
+               ldc.i4.5
+               br FAIL
+
+OK5:
+               // Try allocations bigger than one page
+               ldc.i4 8196
+               localloc
+               conv.i
+               stloc.3
+               ldloc.3
+               ldc.i4 8192
+               add
+               ldc.i4 99
+               stind.i4
+               ldloc.3
+               ldc.i4 8192
+               add
+               ldind.i4
+               ldc.i4 99
+               beq PASS
+               ldc.i4.6
+               br FAIL
+
+FAIL:
+               ret
+
+PASS:  ldc.i4.0
+               ret
+       }
+
+    .method private static void do_localloc () cil managed {
+        .maxstack 3
+        .locals init (
+                unsigned int8*  V_0)
+        IL_0000:  ldc.i4.1
+        IL_0001:  ldc.i4 131072
+        IL_0006:  mul
+        IL_0007:  localloc
+        IL_0009:  stloc.0
+        IL_000a:  ret
+    }
+
+       // Check that localloc cannot be inlined
+       .method static public int32 test_0_localloc_inline () cil managed {
+               .maxstack 16
+               .locals init (
+                       int32 i
+               )
+
+               ldc.i4.0
+        stloc.0
+        br COND
+
+START:  call void class Tests::do_localloc()
+        ldloc.0
+        ldc.i4.1
+        add
+        stloc.0
+COND:   ldloc.0
+        ldc.i4 1000
+        blt START
+
+               ldc.i4.0
+               ret
+       }       
+       
+       .method static public int32 test_3_copy_used_bug () il managed {
+
+               .locals init (
+                       int32 size,
+                       int32 res
+               )
+
+               ldc.i4 0
+               stloc res
+
+               ldc.i4 1
+               stloc size
+
+               ldloc size
+               ldloc size
+               ldloc size
+               add
+               stloc size
+               ldloc size
+               add
+               stloc res
+
+               ldloc res
+               ret
+       }
+
+       // demonstrate that the copy_used_var is not a fix for the above bug
+       .method static public int32 test_3_copy_used_indir_bug () il managed {
+
+               .locals init (
+                       int32 size,
+                       int32 res
+               )
+
+               ldc.i4 0
+               stloc res
+
+               ldc.i4 1
+               stloc size
+
+               ldloc size
+               ldloca size
+               ldloc size
+               ldloc size
+               add
+               stind.i4
+               ldloc size
+               add
+               stloc res
+
+               ldloc res
+               ret
+       }
+
+       .method static public void do_nothing (int32 a) il managed {
+               ret
+       }
+       
+       // demonstrate the block_split failure: needs -O=inline
+       // mini -O=inline --compile Tests:test_0_split_block_bug iltests.exe
+       .method static public int32 test_0_split_block_bug () il managed {
+
+               .locals init (
+                       int32 i1
+               )
+
+               ldc.i4 1
+               stloc i1
+ test_label:
+               ldloc i1
+               call void class Tests::do_nothing (int32)
+               ldc.i4 0
+               brtrue test_label
+               
+               ldc.i4 0
+               ret
+       }
+
+       .method public void inline_do_nothing () il managed {
+               ret
+       }
+       .method static public int32 test_1_checkthis_inlining () il managed {
+               ldnull
+               call instance void class Tests::inline_do_nothing ()
+               ldc.i4 1
+               ret
+       }
+
+       .class nested private auto ansi sealed beforefieldinit TailCallStruct 
+               extends [mscorlib]System.ValueType {
+               .field public int32 a
+               .field public int32 b
+       }
+
+       .method static valuetype Tests/TailCallStruct tail1 (valuetype Tests/TailCallStruct arg) {
+               ldarga 0
+               ldarga 0
+               ldfld int32 Tests/TailCallStruct::a
+               ldc.i4.1
+               add
+               stfld int32 Tests/TailCallStruct::a
+               ldarga 0
+               ldarga 0
+               ldfld int32 Tests/TailCallStruct::a
+               ldc.i4.2
+               add
+               stfld int32 Tests/TailCallStruct::a
+               ldarg.0
+               ret
+       }
+
+       .method static valuetype Tests/TailCallStruct tail2 (valuetype Tests/TailCallStruct arg) {
+               ldarg.0
+               tail.
+               call valuetype Tests/TailCallStruct Tests::tail1 (valuetype Tests/TailCallStruct)
+               ret
+       }
+
+       .class nested private auto ansi sealed beforefieldinit TailCallStructBig
+               extends [mscorlib]System.ValueType {
+               .field public int32 a
+               .field public int32 b
+               .field public int32 c
+               .field public int32 d
+               .field public int32 e
+       }
+
+       .method static valuetype Tests/TailCallStructBig tail_vret_by_addr_inner (valuetype Tests/TailCallStructBig arg) {
+               ldarga 0
+               ldarga 0
+               ldfld int32 Tests/TailCallStructBig::a
+               ldc.i4.1
+               add
+               stfld int32 Tests/TailCallStructBig::a
+               ldarg.0
+               ret
+       }
+
+       .method static valuetype Tests/TailCallStructBig tail_vret_by_addr (valuetype Tests/TailCallStructBig arg) {
+               ldarg.0
+               tail.
+               call valuetype Tests/TailCallStructBig Tests::tail_vret_by_addr_inner (valuetype Tests/TailCallStructBig)
+               ret
+       }
+
+       .method static public int32 test_3_tail_call_vret_by_addr () il managed {
+               .maxstack 16
+               .locals init (
+                       valuetype Tests/TailCallStructBig arg2
+               )
+
+               ldloca 0
+               ldc.i4.2
+               stfld int32 Tests/TailCallStructBig::a
+               ldloc.0
+               call valuetype Tests/TailCallStructBig Tests::tail_vret_by_addr (valuetype Tests/TailCallStructBig)
+               stloc.0
+
+               ldloca 0
+               ldfld int32 Tests/TailCallStructBig::a
+               ret
+       }
+
+       .method static public int32 test_9_tail_call_vret_by_val () il managed {
+               .maxstack 16
+               .locals init (
+                       valuetype Tests/TailCallStruct arg
+               )
+               ldloca 0
+               ldc.i4.2
+               stfld int32 Tests/TailCallStruct::a
+               ldloca 0
+               ldc.i4.4
+               stfld int32 Tests/TailCallStruct::b
+               ldloc.0
+               call valuetype Tests/TailCallStruct Tests::tail2 (valuetype Tests/TailCallStruct)
+               stloc.0
+
+               ldloca 0
+               ldfld int32 Tests/TailCallStruct::a
+               ldloca 0
+               ldfld int32 Tests/TailCallStruct::b
+               add
+               ret
+       }
+
+       .method static public int32 tail3 (int32 i, int32 j) il managed {
+               ldarg.0
+               ldarg.1
+               add
+               ret
+       }
+
+       .method static public int32 tail4 (int32 i, int32 j) il managed {
+               .maxstack 16
+               .locals init (
+                       int32 k)
+
+               // Test arg0 allocated to a register
+               ldarg.0
+               ldarg.0
+               ldarg.0
+               ldarg.0
+               add
+               add
+               add
+               starg 0
+
+               // Test switched up argument variables as the actual arguments
+               ldarg.1
+               ldarg.0
+               tail.
+               call int32 Tests::tail3 (int32, int32)
+               ret
+       }
+
+       .method static public int32 test_24_tail_calls2 () il managed {
+               // Some platforms might not be able to AOT tail calls
+               .custom instance void class [TestDriver]CategoryAttribute::'.ctor'(string) =  (01 00 08 21 46 55 4C 4C 41 4F 54 00 00 ) // ...!FULLAOT..
+
+               .maxstack 16
+               .locals init (
+                       int32 i,
+                       int32 j)
+
+               ldc.i4.4
+               stloc.0
+               ldc.i4.8
+               stloc.1
+
+               ldloc.0 
+               ldloc.1
+               call int32 Tests::tail4 (int32, int32)
+               ret
+       }
+
+       .method public static int32 test_5_jmp () cil managed {
+               // Some platforms might not be able to AOT tail calls
+               .custom instance void class [TestDriver]CategoryAttribute::'.ctor'(string) =  (01 00 08 21 46 55 4C 4C 41 4F 54 00 00 ) // ...!FULLAOT..
+
+               ldc.i4.1
+               ldc.i4.2
+               call int32 Tests::jmp2 (int32, int32)
+               ret
+       }
+
+       .method public static int32 jmp2 (int32, int32) cil managed {
+               ldarg.0
+               ldc.i4.1
+               add
+               starg.s 0
+               ldarg.1
+               ldc.i4.1
+               add
+               starg.s 1
+               jmp int32 Tests::jmp3 (int32, int32)
+               ldc.i4.0
+               ret
+       }               
+
+       .method public static int32 jmp3 (int32 i, int32 j) cil managed {
+               ldarg.0
+               ldarg.1
+               add
+               ret
+       }
+
+       .method static public int32 test_11_switch_with_nonempty_stack () il managed {
+               .maxstack 16
+
+               ldc.i4.5
+               ldc.i4.6
+               ldc.i4.1
+               switch (L0, L1)
+       L0: 
+               add
+               ret
+       L1:
+               add
+               ret
+       }
+    .method public static int32 test_5_endfinally_with_nonempty_stack () il managed {
+               .maxstack 16
+
+        .try {
+          leave IL_0
+        }
+        finally  {
+          ldc.i4.0
+          endfinally
+        }
+        IL_0:  ldc.i4.5
+               ret
+    }
+
+    .method public static int32 test_5_endfinally_llvm_linking () il managed {
+               .maxstack 16
+
+        .try {
+          leave IL_0
+        }
+        finally  {
+          ldc.i4.0
+                 dup
+                 brtrue L1
+                 pop
+                 br L2
+               L1:
+                 pop
+               L2:
+          endfinally
+        }
+        IL_0:  ldc.i4.5
+               ret
+    }
+
+       .method public static int32 test_0_conv_ovf_i8_neg () il managed {
+               .maxstack 16
+
+               ldc.i4.m1
+               conv.ovf.i8
+               conv.i4
+               ldc.i4.m1
+               beq L_OK
+               ldc.i4.1
+               ret
+       L_OK:
+               ldc.i4.0
+               ret
+       }               
+
+       .method public static int32 test_1234_conv_u4 () cil managed {
+               .maxstack 16
+
+               ldc.i4 1234
+               conv.u4
+               conv.i4
+               ret
+       }
+
+       .method public static int32 test_0_conv_ovf_i_un () cil managed {
+               .maxstack 16
+
+               ldc.i4 1234
+               conv.ovf.i.un
+               conv.i4
+               ldc.i4 1234
+               beq L1
+               ldc.i4.1
+               ret
+       L1:
+               ldc.i4 0x7fffffff
+               conv.ovf.i.un
+               conv.i4
+               ldc.i4 0x7fffffff
+               beq L2
+               ldc.i4.2
+               ret
+       L2:
+               sizeof [mscorlib]System.IntPtr
+               ldc.i4 8
+               beq L5
+               .try {
+                       ldc.i4 0x80000000
+                       conv.ovf.i.un
+                       leave L4
+               } catch [mscorlib]System.OverflowException {
+                       pop
+                       leave L5
+               }
+       L4: 
+               ldc.i4.3
+               ret
+       L5:
+               ldc.i4.0
+               ret
+       }
+
+       .method public static int32 test_0_conv_ovf_u_un () cil managed {
+               .maxstack 16
+
+               ldc.i4 1234
+               conv.ovf.u.un
+               conv.i4
+               ldc.i4 1234
+               beq L1
+               ldc.i4.1
+               ret
+       L1:
+               ldc.i4.0
+               ret
+       }
+
+       .method public static int32 test_0_conv_ovf_i () cil managed {
+               .maxstack 16
+
+               ldc.i4 1234
+               conv.ovf.i
+               conv.i4
+               ldc.i4 1234
+               beq L1
+               ldc.i4.1
+               ret
+       L1:
+               ldc.i4.0
+               ret
+       }
+
+       .method public static int32 test_0_conv_ovf_u () cil managed {
+               .maxstack 16
+
+               ldc.i4 1234
+               conv.ovf.u
+               conv.i4
+               ldc.i4 1234
+               beq L1
+               ldc.i4.1
+               ret
+       L1:
+               ldc.i4.0
+               ret
+       }
+
+       .method public static int32 test_1234_conv_ovf_i8_un () cil managed {
+               .maxstack 16
+
+               ldc.i4 1234
+               conv.ovf.i8.un
+               conv.i4
+               ret
+       }
+
+       .method public static int32 test_0_lconv_ovf_i () cil managed {
+               .maxstack 16
+
+               ldc.i4 1234
+               conv.i8
+               conv.ovf.i
+               conv.i4
+               ldc.i4 1234
+               beq L1
+               ldc.i4.1
+               ret
+       L1:
+               ldc.i4.0
+               ret
+       }
+
+       .method public static int32 test_0_lconv_ovf_u () cil managed {
+               .maxstack 16
+
+               ldc.i4 1234
+               conv.i8
+               conv.ovf.u
+               conv.i4
+               ldc.i4 1234
+               beq L1
+               ldc.i4.1
+               ret
+       L1:
+               ldc.i4.0
+               ret
+       }
+
+       .method public static int32 test_0_lconv_ovf_i_un () cil managed {
+               .maxstack 16
+
+               ldc.i4 1234
+               conv.i8
+               conv.ovf.i.un
+               conv.i4
+               ldc.i4 1234
+               beq L1
+               ldc.i4.1
+               ret
+       L1:
+               ldc.i4.0
+               ret
+       }
+
+       .method public static int32 test_0_lconv_ovf_u_un () cil managed {
+               .maxstack 16
+
+               ldc.i4 1234
+               conv.i8
+               conv.ovf.u.un
+               conv.i4
+               ldc.i4 1234
+               beq L1
+               ldc.i4.1
+               ret
+       L1:
+               ldc.i4.0
+               ret
+       }
+
+       .method public static int32 test_0_lconv_to_ovf_i8 () cil managed {
+               .maxstack 16
+
+               ldc.i4 1234
+               conv.i8
+               conv.ovf.i8
+               conv.i4
+               ldc.i4 1234
+               beq L1
+               ldc.i4.1
+               ret
+       L1:
+               ldc.i4.0
+               ret
+       }
+
+       .method public static int32 test_0_lconv_to_ovf_u8_un () cil managed {
+               .maxstack 16
+
+               ldc.i4 1234
+               conv.i8
+               conv.ovf.u8.un
+               conv.i4
+               ldc.i4 1234
+               beq L1
+               ldc.i4.1
+               ret
+       L1:
+               ldc.i4.0
+               ret
+       }
+
+       .method public static int32 test_2_lconv_to_ovf_i4_un () cil managed {
+               .maxstack 16
+               .locals init (int32 res)
+
+               ldc.i4 0x7fffffff
+               conv.u8
+               conv.ovf.i4.un
+               pop
+
+               ldc.i4.2
+               stloc res
+
+        .try {
+                       ldc.i8 0x80000000
+                       conv.ovf.i4.un
+                       pop
+                       ldc.i4.0
+                       stloc res
+                       leave RET
+               } catch [mscorlib]System.OverflowException {
+                       pop
+                       leave IL_0
+               }
+
+       IL_0:
+
+        .try {
+                       ldc.i8 0xffffffff80000000
+                       conv.ovf.i4.un
+                       pop
+                       ldc.i4.1
+                       stloc res
+                       leave RET
+               } catch [mscorlib]System.OverflowException {
+                       pop
+                       leave RET
+               }
+
+       RET:
+               ldloc res
+               ret
+       }
+
+    .method public static int32 test_1_lconv_to_ovf_i_un () cil managed {
+               .maxstack 16
+               .locals init (int32 res)
+
+               ldc.i4 0x7fffffff
+               conv.u8
+               conv.ovf.i.un
+               conv.i4
+               pop
+
+               ldc.i4.1
+               ret
+       }
+
+       .method public static int32 test_32_lconv_to_u8 () cil managed
+       {
+               .maxstack 16
+
+               ldc.i4 32
+               conv.i8
+               conv.u8
+               conv.i4
+               ret
+       }                               
+
+       .method public static int32 test_32_lconv_to_i8 () cil managed
+       {
+               .maxstack 16
+
+               ldc.i4 32
+               conv.i8
+               conv.i8
+               conv.i4
+               ret
+       }                               
+
+       .method public static int32 test_15_lconv_to_u () cil managed
+       {
+       ldc.i8 0x10000000f
+               conv.u
+               conv.i4
+               ret
+       }
+
+       .method public static int32 test_1234_fconv_u () cil managed {
+               .maxstack 16
+
+               ldc.r8 1234.0
+               conv.u
+               conv.i4
+               ret
+       }
+
+       .method public static int32 test_0_get_type_from_handle_on_bblock_boundary () cil managed 
+       {
+               .maxstack 16
+       
+               ldc.i4.1
+               brfalse OBJECT
+       
+               ldtoken [mscorlib]System.String
+               br AFTER
+       OBJECT:
+               ldtoken [mscorlib]System.Object
+       AFTER:
+               call class [mscorlib]'System.Type' class [mscorlib]'System.Type'::'GetTypeFromHandle'(valuetype [mscorlib]'System.RuntimeTypeHandle')
+               callvirt instance string class [mscorlib]System.Type::get_FullName ()
+               ldstr "System.String"
+               callvirt instance bool class [mscorlib]System.Object::Equals(object)
+               ldc.i4.0
+               ceq
+               ret 
+       }
+               
+       .method public static int32 test_0_bug59580  ()
+       {
+               ldc.r4          float32(0x7FC00000)
+               ldc.r4          float32(0x7FC00000)
+               bge.un          pass
+               br              fail
+       pass:
+               ldc.i4.0
+               ret
+       fail:
+               ldc.i4.1
+               ret
+       }
+       
+       .method public static int32 test_1_bug60056  () {
+               .locals init (int32 m5)
+                       
+               ldc.i4.m1
+               stloc.0
+               
+               ldc.i4.1
+               conv.u8
+               
+               ldloc.0
+               conv.i8
+               mul
+               
+               ldc.i4.m1
+               conv.i8
+               ceq
+               ret
+       }
+       
+       .method public static int32 test_1_conv_u8_cfold  () {
+               ldc.i4.m1
+               conv.u8
+               
+               ldc.i8 0x00000000ffffffff
+               
+               ceq
+               ret
+       }
+       
+       .method public static int32 test_1_array_type_mismatch_ldelema  () {
+               .locals init (int32 r)
+               
+                       ldc.i4.1
+                       newarr string
+                       ldc.i4.0 
+                       ldelema string
+                       pop
+               
+               .try {
+                       ldc.i4.1
+                       newarr string
+                       ldc.i4.0 
+                       ldelema object
+                       pop
+                       
+                       leave end
+               } catch [mscorlib]System.ArrayTypeMismatchException {
+                       pop
+                       ldc.i4.1
+                       stloc.0
+                       leave end
+               }
+       end:
+               ldloc.0
+               ret
+       }
+
+       .method public static int32 test_1_conv_ovf_i8_with_i4 () {
+                       ldc.i4.m1 
+                       conv.ovf.i8
+                       conv.ovf.i4
+                       neg
+                       ret
+       }
+
+       // bug #72148
+    .method public static int32 test_0_initlocals_float_ptr () {
+       .maxstack 3
+       .locals init (
+               float32[]       V_0,
+               float32& pinned V_1,
+               unsigned int32  V_2)
+                       ldc.i4.s 0x0f
+                       newarr [mscorlib]System.Single
+                       stloc.0 
+                       ldloc.0 
+                       ldc.i4.0 
+                       ldc.r4 1.13
+                       stelem.r4 
+                       ldloc.0 
+                       ldc.i4.0 
+                       ldelema [mscorlib]System.Single
+                       stloc.1 
+                       ldloc.1 
+                       conv.i 
+                       ldind.u4 
+                       stloc.2 
+                       ldc.i4.0
+                       ret
+       }
+
+       .method public static int32 test_7_conv_ovf_u8_un () {
+       .maxstack  2
+        .locals    init (unsigned int64)
+
+        ldc.i4.7
+        conv.ovf.u8.un
+        stloc.0
+               ldloc.0
+               conv.i4
+        ret
+       }
+
+       .method public static int32 test_7_conv_ovf_u4_un () {
+       .maxstack  2
+        .locals    init (unsigned int32)
+
+        ldc.i4.7
+        conv.ovf.u4.un
+        stloc.0
+               ldloc.0
+               conv.i4
+        ret
+       }
+
+       .method public static int32 test_1_bug_74591 () {
+               .maxstack 16
+               .locals init (int32)
+
+               ldc.i4.m1
+               stloc.0
+               ldloc.0
+               conv.ovf.i8
+               ldc.i4.m1
+               conv.ovf.i8
+               mul.ovf
+               conv.i4
+               ret
+       }
+
+       .class nested public auto ansi Integer
+               extends [mscorlib]System.Object {
+
+               .field public bool n
+
+           .method public hidebysig  specialname  rtspecialname 
+           instance default void .ctor (unsigned int64 i, bool n)  cil managed 
+           {
+                       .maxstack 8
+                       ldarg.0
+                       call instance void class [mscorlib]System.Object::.ctor()
+                       ldarg.0
+                       ldarg.2
+                       stfld bool Tests/Integer::n
+                       ret
+               }
+       }
+
+       .method public static int32 test_1_bug_74726 () {
+               .maxstack 16
+
+               ldc.i4.2
+               conv.ovf.u8
+               ldc.i4.1
+               conv.ovf.u8
+               mul.ovf.un
+               ldc.i4.1
+               newobj instance void class Tests/Integer::.ctor(unsigned int64, bool)
+               ldfld bool Tests/Integer::n
+               ldc.i4.1
+               ceq
+               ret
+       }
+
+       .class nested private auto ansi sealed xxx
+       extends [mscorlib]System.ValueType
+   {
+     .field  public   object a
+
+     .method public hidebysig  specialname  rtspecialname 
+            instance default void .ctor ()  cil managed 
+     {
+                .maxstack 8
+                ret 
+     }
+   } // end of class xxx
+
+       .method public static int32 test_0_newobj_vtype () {
+               .maxstack 6
+               .locals init (
+                       valuetype Tests/xxx V_0
+               )
+
+               newobj instance void valuetype Tests/xxx::.ctor ()
+               stloc.0
+               ldloca.s 0
+               ldfld object Tests/xxx::a
+               brfalse OK
+               ldc.i4.s 1
+               ret
+       OK:
+               ldc.i4.s 0
+               ret
+       }
+
+       .method public static int32 test_0_newobj_vtype_primitive () {
+               .maxstack 6
+               .locals init (
+                       native int V_0
+               )
+
+               ldc.i4.s 10
+               newobj instance void native int::'.ctor'(int32)
+               stloc.0
+               ldloc.0
+               ldc.i4.s 10
+               beq OK
+               ldc.i4.s 1
+               ret
+       OK:
+               ldc.i4.s 0
+               ret
+       }
+
+       .method public static int32 test_1_filters () {
+               .custom instance void [TestDriver]CategoryAttribute::.ctor(string) = ( 01 00 08 21 42 49 54 43 4F 44 45 00 00 )          // ...!BITCODE..
+               .maxstack 16
+               .locals init (
+                       int32 res
+               )
+
+               .try { // 0
+                       .try {
+                               ldstr "OnErrorSub test Exception"
+                               newobj instance void class [mscorlib]System.Exception::.ctor(string)
+                               throw 
+                               leave.s IL_0033
+                       }
+                       filter {
+                               pop
+                               ldc.i4.0
+                               endfilter
+                       } {
+                               pop
+                               // Should not be called
+                               ldc.i4.2
+                               stloc res
+                               leave.s IL_0033
+                       }
+               }
+               filter {
+                       pop
+                       ldc.i4.1
+                       endfilter 
+               } {
+                 pop
+                 ldc.i4.1
+                 stloc res       
+                 leave.s IL_0033
+
+               }
+               IL_0033:
+               ldloc res
+               ret
+       }
+
+       .class nested private auto ansi sealed beforefieldinit TheStruct
+               extends [mscorlib]System.ValueType {
+               .field public int32 a
+               .field public int32 b
+       }
+
+       .method public static int32 test_5_cpobj () {
+               .maxstack 8
+               .locals init (  
+                               valuetype Tests/TheStruct v_0, 
+                               valuetype Tests/TheStruct v_1
+                                        )
+
+               ldloca v_0
+               ldc.i4.2
+               stfld int32 Tests/TheStruct::a
+
+               ldloca v_0
+               ldc.i4.3
+               stfld int32 Tests/TheStruct::b
+
+               ldloca v_1
+               ldloca v_0
+               cpobj Tests/TheStruct
+
+               ldloca v_1
+               ldfld int32 Tests/TheStruct::a
+               ldloca v_1
+               ldfld int32 Tests/TheStruct::b
+               add
+
+               ret
+       }
+
+       .method public static int32 test_5_ldobj_stloc_optimization () {
+               .maxstack 8
+               .locals init (  
+                               valuetype Tests/TheStruct v_0, 
+                               valuetype Tests/TheStruct v_1
+                                        )
+
+               ldloca v_0
+               ldc.i4.2
+               stfld int32 Tests/TheStruct::a
+
+               ldloca v_0
+               ldc.i4.3
+               stfld int32 Tests/TheStruct::b
+
+               ldloca v_0
+               ldobj valuetype Tests/TheStruct
+               stloc.s v_1
+
+               ldloca v_1
+               ldfld int32 Tests/TheStruct::a
+               ldloca v_1
+               ldfld int32 Tests/TheStruct::b
+               add
+
+               ret
+       }
+
+       .method public static int32 test_1_cpobj_reference () {
+               .maxstack 8
+               .locals init (  
+                               object v_0, 
+                               object v_1
+                                        )
+
+               newobj instance void object::.ctor()
+               stloc v_0
+
+               ldloca v_1
+               ldloca v_0
+               cpobj object
+
+               ldloc v_0
+               ldloc v_1
+               ceq
+               ret
+       }
+
+       .method public static int32 test_1_initobj_reference () {
+               .maxstack 8
+               .locals init (  
+                               object v_0
+                                        )
+
+               newobj instance void object::.ctor()
+               stloc v_0
+
+               ldloca v_0
+               initobj object
+
+               ldloc v_0
+               ldnull
+               ceq
+               ret
+       }
+
+       .method public static int32 test_1_ldobj_reference () {
+               .maxstack 8
+               .locals init (  
+                               object v_0
+                                        )
+
+               newobj instance void object::.ctor()
+               stloc v_0
+
+               ldloc v_0
+               ldloca v_0
+               ldobj object
+               ceq
+               ret
+       }
+
+       .method public static int32 test_5_vtype_on_bb_boundary () {
+               .maxstack 8
+               .locals init (  
+                               valuetype Tests/TheStruct v_0, 
+                               valuetype Tests/TheStruct v_1
+                                        )
+
+               ldloca v_0
+               ldc.i4.2
+               stfld int32 Tests/TheStruct::a
+
+               ldloca v_0
+               ldc.i4.3
+               stfld int32 Tests/TheStruct::b
+
+               ldloc v_0
+               br L_0
+       L_0: stloc v_1
+
+               ldloca v_1
+               ldfld int32 Tests/TheStruct::a
+               ldloca v_1
+               ldfld int32 Tests/TheStruct::b
+               add
+               ret
+       }
+
+       .method public static int32 test_5_different_in_stacks () cil managed {
+               .maxstack 16
+
+                       ldc.i4.1
+                       ldc.i4.1
+                       beq L_0
+
+                       ldc.i4.3
+                       ldc.i4.3
+                       br L_1
+                       ldc.i4.3
+                       ldc.i4.3
+                       br L_2
+        L_0:   ldc.i4.2
+                       ldc.i4.3
+                       ldc.i4.1
+                       ldc.i4.1
+                       beq L_2
+        L_1:   add
+                       ret
+        L_2:   add
+                       ret
+       }
+
+       .method public static int32 test_3_larray_get_set () {
+               .locals init (
+                       int32[2]        V_0)
+                         
+                       ldc.i4.2 
+                       newobj instance void int32[0...]::.ctor(int32)
+                       stloc.0 
+                       ldloc.0 
+                       ldc.i4.0 
+                       ldc.i4 1
+                       call instance void int32[0...]::Set(int32, int32)
+                   ldloc.0 
+                   ldc.i4.1 
+                       ldc.i4 2
+                       call instance void int32[0...]::Set(int32, int32)
+
+                       ldloc.0
+                       ldc.i4.0
+                       call instance int32 int32[0...]::Get(int32)
+                       ldloc.0
+                       ldc.i4.1
+                       call instance int32 int32[0...]::Get(int32)
+                       add
+                       ret
+       }
+
+       .method public static int32 test_0_pop_side_effects () {
+               .try {
+                       ldc.r8 1
+                       ldc.r8 0
+                       div
+                       ckfinite
+                       pop
+                       leave FAIL
+               }
+               catch [mscorlib]System.ArithmeticException {
+                       pop
+                       leave L_0
+               }
+               L_0:
+               ldc.i4.0
+               ret
+               FAIL:
+               ldc.i4.1
+               ret
+       }
+
+       .method public static void regalloc_regress_78314_helper (object o) cil managed
+       {
+               ret
+       }
+
+       .method public static int32 test_1_regalloc_regress_78314 () cil managed
+       {
+    // Code size       68 (0x44)
+    .maxstack  6
+    .locals init (int32 V_0, bool V_1)
+    IL_0000:  ldc.i4.0
+    IL_0001:  stloc.0
+    IL_0002:  br.s       IL_003b
+
+    IL_0004:
+    IL_001e:  ldc.i4.s   10
+    IL_0020:  ldloc.0
+    IL_0021:  shl
+    IL_0022:  ldc.i4.s   10
+    IL_0024:  ldloc.0
+    IL_0025:  shl
+    IL_0026:  ceq
+    IL_0028:  box        [mscorlib]System.Boolean
+    IL_0032:  call       void Tests::regalloc_regress_78314_helper(object)
+    IL_0037:  ldloc.0
+    IL_0038:  ldc.i4.1
+    IL_0039:  add
+    IL_003a:  stloc.0
+    IL_003b:  ldloc.0
+    IL_003c:  ldc.i4.8
+    IL_003f:  blt.s      IL_0004
+
+       ldloc.0
+       ldc.i4.8
+       ceq
+       conv.i4
+       ret     
+  }
+
+       .method public static void try_block_end_remove_if_useless () cil managed {
+           .maxstack  8
+
+           T_START:
+               ldstr   "Start"
+                       pop
+               leave.s COMPLETE
+           T1_END:
+
+           COMPLETE:
+               ret
+
+           F1_START:
+               ldstr   "Finally1"
+                       pop
+               endfinally
+           F1_END:
+
+           .try T_START to T1_END finally handler F1_START to F1_END
+       }
+
+       .method public static int32 test_0_try_block_end_remove_if_useless () cil managed {
+               call void class Tests::try_block_end_remove_if_useless ()
+               ldc.i4.0
+               ret
+       }
+
+   .method private static int32 test_0_regress_78629_switch_next_ins_target ()  cil managed
+    {
+        ldc.i4.0
+        switch (target)
+        target: ldstr "bar"
+               pop
+               ldc.i4.0
+        ret
+    }
+
+       // This belongs to basic-float.cs, but its hard to tell mcs/csc to
+       // generate the non .un version of the opcodes
+    .method private static  hidebysig 
+           default int32 test_4_float_branch_nan ()  cil managed 
+    {
+        // Method begins at RVA 0x27a4
+       // Code size 74 (0x4a)
+       .maxstack 2
+       .locals init (
+               float64 V_0,
+               float64 V_1,
+               int32   V_2)
+       IL_0000:  ldc.r8 (00 00 00 00 00 00 f8 ff)
+       IL_0009:  stloc.0 
+       IL_000a:  ldc.r8 1.
+       IL_0013:  stloc.1 
+       IL_0014:  ldc.i4.0 
+       IL_0015:  stloc.2 
+       IL_0016:  ldloc.0 
+       IL_0017:  ldloc.1 
+       IL_0018:  bge.s IL_001a
+
+                               br L1
+       IL_001a:  ldloc.2 
+       IL_001b:  ret 
+       L1:
+       IL_001c:  ldloc.2 
+       IL_001d:  ldc.i4.1 
+       IL_001e:  add 
+       IL_001f:  stloc.2 
+       IL_0020:  ldloc.0 
+       IL_0021:  ldloc.1 
+       IL_0022:  ble.s IL_002e
+                               br L2
+       IL_002e:  ldloc.2 
+       IL_002f:  ret 
+       L2:
+       IL_0030:  ldloc.2 
+       IL_0031:  ldc.i4.1 
+       IL_0032:  add 
+       IL_0033:  stloc.2 
+       IL_0034:  ldloc.0 
+       IL_0035:  ldloc.1 
+       IL_0036:  blt.s IL_0038
+                               br L3           
+       IL_0038:  ldloc.2 
+       IL_0039:  ret 
+       L3:
+       IL_003a:  ldloc.2 
+       IL_003b:  ldc.i4.1 
+       IL_003c:  add 
+       IL_003d:  stloc.2 
+       IL_003e:  ldloc.0 
+       IL_003f:  ldloc.1 
+       IL_0040:  bgt.s IL_0042
+                               br L4
+       IL_0042:  ldloc.2 
+       IL_0043:  ret 
+       L4:
+       IL_0044:  ldloc.2 
+       IL_0045:  ldc.i4.1 
+       IL_0046:  add 
+       IL_0047:  stloc.2 
+       IL_0048:  ldloc.2 
+       IL_0049:  ret 
+    } // end of method Tests::test_5_float_branch_nan
+
+    .method private static  hidebysig
+           default void regress_80622_inner (object x)  cil managed
+    {
+               .locals init (unsigned int8 i)
+        // Method begins at RVA 0x2050
+        // Code size 14 (0xe)
+        .maxstack 8
+        IL_1000:  ldarg.0
+        IL_1001:  unbox unsigned int8
+        IL_1006:  ldobj unsigned int8
+        IL_000b:  conv.ovf.i4.un
+        IL_000c:  pop
+        IL_000d:  ret
+    }
+
+    // method line 2
+    .method private static  hidebysig
+           default int32 test_0_regress_80622 ()  cil managed
+    {
+        .maxstack 8
+        IL_0000:  ldc.i4 255
+        IL_0005:  box unsigned int8
+        IL_000a:  call void class Tests::regress_80622_inner (object)
+               ldc.i4.0
+        IL_000f:  ret
+    }
+
+       .method private static default int32 test_0_regresss_80190 () cil managed
+       {
+           .maxstack  2
+           .locals init (int32 V_0,
+                    int32* V_1)
+           IL_0000:  nop
+           IL_0001:  nop
+           IL_0002:  ldloca.s   V_0
+           IL_0004:  conv.u
+           IL_0005:  stloc.1
+           IL_0006:  ldloc.1
+           IL_0007:  ldc.i4.3
+           IL_0008:  stind.i4
+           IL_0009:  nop
+                                 ldc.i4.0
+                                 ret
+       }
+
+       .class interface nested public auto ansi abstract IFaceWithStaticMethod
+       {
+           .method public static  specialname 
+              default void foo ()  cil managed noinlining 
+           {
+               .maxstack 0
+               IL_0000:  ret 
+       }
+       }
+       
+       .class nested public auto ansi AClass extends [mscorlib]System.Object implements Tests/IFaceWithStaticMethod
+       {
+           .method public hidebysig  specialname  rtspecialname 
+           instance default void .ctor ()  cil managed 
+           {
+                       .maxstack 8
+                       ret
+               }
+
+       }
+
+       // Test that static methods in interfaces are ignored during vtable construction
+       .method private static default int32 test_0_ifaces_with_static_methods () cil managed
+       {
+               .maxstack 16
+
+               newobj instance void class Tests/AClass::.ctor()
+               pop
+               ldc.i4.0
+               ret
+       }
+
+       .method private static hidebysig default int32 Foo<T> (!!T n)  cil managed {
+               ldarg.0
+               box !!0
+               brtrue HAS_VALUE
+               ldc.i4.0
+               ret
+HAS_VALUE:     ldc.i4.1
+               ret
+       }
+
+       // bug 78019
+       .method static public int32 test_0_nullable_box_brtrue () cil managed {
+
+               .locals init (valuetype [mscorlib]System.Nullable`1<int32> V_0)
+
+               ldloc.0
+               call int32 class Tests::Foo<valuetype [mscorlib]System.Nullable`1<int32>> (!!0)
+               ret
+       }
+
+       //Bug 372410
+       .method static public int32 test_0_ldelema_type_check () cil managed {
+               .maxstack 16
+               .locals init (object[] V_0,
+                                         object[,] V_1)
+
+               ldc.i4.1
+               newarr object
+               stloc.0
+
+               .try {
+                       ldloc.0
+                       ldc.i4.0
+                       ldelema object
+                       leave L1
+               } catch [mscorlib]System.ArrayTypeMismatchException {
+                       leave ERROR1
+               }
+
+       L1:
+               ldc.i4.1
+               newarr string
+               stloc.0
+
+               .try {
+                       ldloc.0
+                       ldc.i4.0
+                       ldelema object
+                       leave ERROR2
+               } catch [mscorlib]System.ArrayTypeMismatchException {
+                       leave L2
+               }
+
+       L2:
+                       ldc.i4.1
+               newarr string
+               stloc.0
+
+               .try {
+                       ldloc.0
+                       ldc.i4.0
+                       readonly. ldelema object
+                       leave L3
+               } catch [mscorlib]System.ArrayTypeMismatchException {
+                       leave ERROR3
+               }
+
+       L3:
+               ldc.i4.0
+               ret
+
+
+       ERROR1:
+               ldc.i4.1
+               ret
+
+       ERROR2:
+               ldc.i4.2
+               ret
+
+       ERROR3:
+               ldc.i4.3
+               ret
+       }
+
+
+       //Bug 372410
+       .method static public int32 test_0_array_address_type_check () cil managed {
+               .maxstack 16
+               .locals init (object[] V_0,
+                                         object[,] V_1)
+
+               ldc.i4.1 
+           ldc.i4.1 
+           newobj instance void object[,]::.ctor(int32, int32)
+               stloc.1
+
+               .try {
+                       ldloc.1
+                       ldc.i4.0
+                       ldc.i4.0
+                       call instance object&  object[,]::Address(int32, int32)
+                       leave L4
+               } catch [mscorlib]System.ArrayTypeMismatchException {
+                       leave ERROR4
+               }
+
+       L4:
+               ldc.i4.1 
+           ldc.i4.1 
+           newobj instance void string[,]::.ctor(int32, int32)
+               stloc.1
+
+               .try {
+                       ldloc.1
+                       ldc.i4.0
+                       ldc.i4.0
+                       call instance object&  object[,]::Address(int32, int32)
+                       leave ERROR5
+               } catch [mscorlib]System.ArrayTypeMismatchException {
+                       leave L5
+               }
+
+       L5:
+               ldc.i4.1 
+           ldc.i4.1 
+           newobj instance void string[,]::.ctor(int32, int32)
+               stloc.1
+
+               .try {
+                       ldloc.1
+                       ldc.i4.0
+                       ldc.i4.0
+                       readonly. call instance object&  object[,]::Address(int32, int32)
+                       leave L6
+               } catch [mscorlib]System.ArrayTypeMismatchException {
+                       leave ERROR6
+               }
+
+       L6:
+               ldc.i4.0
+               ret
+       ERROR4:
+               ldc.i4.4
+               ret
+
+       ERROR5:
+               ldc.i4.5
+               ret
+
+       ERROR6:
+               ldc.i4.6
+               ret
+       }
+
+       .field public  static unsigned int64 'ull'
+
+       .field public  static int32 'shift2'
+
+       .method public static int32 test_0_long_shift_regalloc () cil managed
+       {
+               .locals init (unsigned int32 'cilsimp.28', unsigned int64 'cilsimp.27', int32 'cilsimp.26')
+
+               .maxstack 4
+
+               ldc.i8  81985529234382576
+               stsfld  unsigned int64 Tests::ull
+           ldc.i4      60
+               stsfld  int32 Tests::shift2
+
+               ldsfld  unsigned int64 Tests::ull
+               stloc   'cilsimp.27'
+               ldsfld  int32 Tests::shift2
+               stloc   'cilsimp.28'
+               ldloc   'cilsimp.27'
+               ldloc   'cilsimp.28'
+               shr.un
+               ldloc   'cilsimp.27'
+               ldc.i4  64
+               ldloc   'cilsimp.28'
+               sub
+               shl
+               or
+               ldc.i8  1311768467750121216
+               ceq
+               ldc.i4.1
+               xor
+               conv.u4
+               ret
+       }
+
+       // Test calling ldfld directly on a vtype instead of a vtype address
+       .method public static int32 test_5_call_ldfld_vtype () cil managed
+       {
+               .maxstack 16
+               .locals init (
+                       valuetype Tests/TailCallStruct arg
+               )
+               ldloca 0
+               ldc.i4.2
+               stfld int32 Tests/TailCallStruct::a
+               ldloca 0
+               ldc.i4.4
+               stfld int32 Tests/TailCallStruct::b
+               ldloc.0
+               call valuetype Tests/TailCallStruct Tests::tail2 (valuetype Tests/TailCallStruct)
+               ldfld int32 Tests/TailCallStruct::a
+               ret
+       }
+
+       .method public static int32 throw_ret () cil managed
+       {
+               ldstr "FOO"
+               newobj instance void class [mscorlib]System.OverflowException::.ctor(string)
+               throw
+               ldc.i4.4
+               ret
+       }
+
+       .method public static int32 throw2_ret () cil managed
+       {
+               // Disable inlining
+               ldc.i4.5
+               localloc
+               pop
+
+               call int32 Tests::throw_ret ()
+               ret
+       }
+
+       // Test inlining a method which contains just a throw
+       .method public static int32 test_0_inline_throw () cil managed
+       {
+               .maxstack 16
+               .locals init (
+                               int32 v_0
+               )
+
+               .try {
+                       call int32 Tests::throw2_ret ()
+                       stloc.0
+                       leave L0
+               } catch [mscorlib]System.OverflowException {
+                       pop
+                       leave L1
+               }
+
+               L0:
+                       ldc.i4.1
+                       ret
+               L1:
+                       ldc.i4.0
+                       ret                     
+       }
+
+    .method public static int32 test_0_stelem_any_null_opt () cil managed
+    {
+               .maxstack 16
+               .locals init (
+                               object[]        V_0,
+                               int32   V_1)
+
+               ldc.i4.s 10
+               newarr [mscorlib]System.Object
+               stloc.0
+
+               ldc.i4.0
+               stloc.1
+               br L0
+
+       L1:
+               ldloc.0
+               ldloc.1
+               ldnull
+               stelem.any [mscorlib]System.Object
+               ldloc.1
+               ldc.i4.1
+               add
+               stloc.1
+       L0:
+               ldloc.1
+               ldc.i4.s 10
+               blt L1
+
+               ldc.i4.0
+               ret
+       }
+
+    // method line 2
+    .method public static  hidebysig 
+           default int32 manyargs_callee (int32 a, int32 b, int32 c, int32 d, int32 e, int32 f, int32 g, int32 h, int32 i, int32 j, int32 k, int32 l, int32 m, int32 n, int32 o, int32 p)  cil managed 
+    {
+        // Method begins at RVA 0x20f4
+       // Code size 44 (0x2c)
+       .maxstack 8
+       IL_0000:  ldarg.0 
+       IL_0001:  ldarg.1 
+       IL_0002:  add 
+       IL_0003:  ldarg.2 
+       IL_0004:  add 
+       IL_0005:  ldarg.3 
+       IL_0006:  add 
+       IL_0007:  ldarg.s 4
+       IL_0009:  add 
+       IL_000a:  ldarg.s 5
+       IL_000c:  add 
+       IL_000d:  ldarg.s 6
+       IL_000f:  add 
+       IL_0010:  ldarg.s 7
+       IL_0012:  add 
+       IL_0013:  ldarg.s 8
+       IL_0015:  add 
+       IL_0016:  ldarg.s 9
+       IL_0018:  add 
+       IL_0019:  ldarg.s 10
+       IL_001b:  add 
+       IL_001c:  ldarg.s 11
+       IL_001e:  add 
+       IL_001f:  ldarg.s 12
+       IL_0021:  add 
+       IL_0022:  ldarg.s 13
+       IL_0024:  add 
+       IL_0025:  ldarg.s 14
+       IL_0027:  add 
+       IL_0028:  ldarg.s 15
+       IL_002a:  add 
+       IL_002b:  ret 
+    } // end of method main::callee
+
+    // method line 3
+    .method public static  hidebysig 
+           default int32 manyargs_tail_caller (int32 a, int32 b, int32 c, int32 d, int32 e, int32 f, int32 g, int32 h, int32 i, int32 j, int32 k, int32 l, int32 m, int32 n, int32 o, int32 p)  cil managed 
+    {
+        // Method begins at RVA 0x2124
+       // Code size 34 (0x22)
+       .maxstack 17
+       IL_0000:  ldarg.0 
+                         ldc.i4.1
+                         add
+       IL_0001:  ldarg.1 
+       IL_0002:  ldarg.2 
+       IL_0003:  ldarg.3 
+       IL_0004:  ldarg.s 4
+       IL_0006:  ldarg.s 5
+       IL_0008:  ldarg.s 6
+       IL_000a:  ldarg.s 7
+       IL_000c:  ldarg.s 8
+       IL_000e:  ldarg.s 9
+       IL_0010:  ldarg.s 10
+       IL_0012:  ldarg.s 11
+       IL_0014:  ldarg.s 12
+       IL_0016:  ldarg.s 13
+       IL_0018:  ldarg.s 14
+                         ldc.i4.1
+                         add
+       IL_001a:  ldarg.s 15
+                         ldc.i4.1
+                         add
+                 tail.
+       IL_001c:  call int32 class Tests::manyargs_callee(int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32)
+       IL_0021:  ret 
+    } // end of method main::caller
+
+    // method line 4
+    .method public static  hidebysig 
+           default int32 test_139_many_args_tail_call ()  cil managed
+    {
+               // Some platforms might not be able to AOT tail calls
+               .custom instance void class [TestDriver]CategoryAttribute::'.ctor'(string) =  (01 00 08 21 46 55 4C 4C 41 4F 54 00 00 ) // ...!FULLAOT..
+
+        // Method begins at RVA 0x2154
+       // Code size 43 (0x2b)
+       .maxstack 17
+       IL_0000:  ldc.i4.1 
+       IL_0001:  ldc.i4.2 
+       IL_0002:  ldc.i4.3 
+       IL_0003:  ldc.i4.4 
+       IL_0004:  ldc.i4.5 
+       IL_0005:  ldc.i4.6 
+       IL_0006:  ldc.i4.7 
+       IL_0007:  ldc.i4.8 
+       IL_0008:  ldc.i4.s 0x09
+       IL_000a:  ldc.i4.s 0x0a
+       IL_000c:  ldc.i4.s 0x0b
+       IL_000e:  ldc.i4.s 0x0c
+       IL_0010:  ldc.i4.s 0x0d
+       IL_0012:  ldc.i4.s 0x0e
+       IL_0014:  ldc.i4.s 0x0f
+       IL_0016:  ldc.i4.s 0x10
+       IL_0018:  call int32 class Tests::manyargs_tail_caller(int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32)
+       IL_0028:  ret 
+    } // end of method main::Main
+
+       .class nested private auto ansi beforefieldinit R1
+          extends [mscorlib]System.MarshalByRefObject
+       {
+               .field  public  int32 test_field
+
+       .method public hidebysig  specialname  rtspecialname
+                       instance default void '.ctor' ()  cil managed
+       {
+                       ret
+               }
+       }
+
+       .method public static hidebysig
+                       default int32 return_0 () cil managed
+       {
+               ldc.i4.0
+               ret
+       }
+
+       .method public static hidebysig
+                       default int32 test_1_volatile_marshalbyref_bug_432673 () cil managed
+       {
+               .locals init (
+                       class Tests/R1 v_0
+               )
+
+               newobj instance void class Tests/R1::.ctor ()
+               stloc.0
+               ldloc.0
+               ldc.i4.0
+               volatile.
+               stfld int32 Tests/R1::test_field
+               call int32 class Tests::return_0 ()
+               ldc.i4.1
+               add
+               ret
+       }
+
+       .method public static default int32 return_2 () cil managed
+       {
+               // Prevent inlining
+               ldc.i4.s 16
+        localloc
+               pop
+               ldc.i4.s 2
+               ret
+       }
+
+       .method public static hidebysig
+                       default int32 test_1_cmov_opt_regress_463357 () cil managed
+       {
+               call int32 class Tests::return_2 ()
+               ldc.i4.0
+               ceq
+               brfalse L1
+               ldc.i4.0
+               ret
+               br L2
+       L1: nop
+       L2: nop
+               ldc.i4.1
+               ret
+       }
+
+   .method public static hidebysig default int32 cmov_opt_regress_474718_inner (int32 A_1)  cil managed 
+   {
+      .maxstack 3
+      .locals init (int32 V_0, bool V_1, bool V_2)
+      
+         ldc.i4.0
+      IL_000b:  stloc.1 
+      IL_000d:  br IL_002f
+
+         ldc.i4.1    
+         stloc.2
+      IL_001e:  ldloc.2 
+      IL_001f:  brfalse IL_0036
+
+      IL_0024:  
+      IL_002a:  br IL_0041
+    
+      IL_002f:  ldloc.1
+      IL_0030:  stloc.2 
+      IL_0031:  br IL_001e
+    
+      IL_0036:  ldc.i4 0
+      IL_003b:  stloc.0 
+      IL_003c:  br IL_0041
+    
+      IL_0041:  ldloc.0 
+      IL_0042:  ret 
+  } 
+
+    .method public static default int32 test_0_cmov_opt_regress_474718 ()  cil managed 
+    {
+        .maxstack 16
+        ldc.i4.1
+        call int32 Tests::cmov_opt_regress_474718_inner (int32)
+        ret
+   }
+
+       .method public static default int32 test_5_createarr_newobj () cil managed
+       {
+               .maxstack 16
+
+               ldc.i4 5
+               newobj void char[]::.ctor(int32)
+               ldlen
+               ret
+       }
+
+       .method public static default int32 test_0_initblk_3_regress_481458 () cil managed
+       {
+               .maxstack 16
+               .locals init (native int)
+
+               ldc.i4.s 10
+               localloc
+               stloc.0
+
+               // Set the first value to 3
+               ldloc.0
+               ldc.i4.0
+               add             //addr
+               ldc.i4.3        //value
+               stind.i1
+
+               // Zero out the first 3 values
+               ldloc.0         //addr
+               ldc.i4.0        //value
+               ldc.i4.s 3      //size
+               initblk
+
+               // Load the first value
+               ldloc.0
+               ldc.i4.0
+               add     
+               ldind.u1
+               conv.i4
+               ret
+       }
+
+       .method public static float32 GetFloat32() cil managed noinlining
+       {
+               .maxstack  8
+               ldc.r8     0.19975845134874831
+               ret
+       }
+
+/*        Disabled until they can be fixed to run on amd64
+       .method public static default int32 test_0_implicit_float_to_double_conversion () cil managed
+       {
+               .maxstack 16
+
+               call float32 Tests::GetFloat32()
+               ldc.r8     0.19975845134874831
+               beq OK
+
+               ldc.i4.1
+               ret
+OK:
+               ldc.i4.0
+               ret
+       }
+*/
+
+       .method public static default int32 test_0_long_to_r8_un_overflow () cil managed
+       {
+               .maxstack 16
+               ldc.i8     0x00FFFFFFFFFFFFFF
+               conv.r.un
+               conv.i8
+               ldc.i8 0x100000000000000
+               beq OK_1
+
+               ldc.i4.1
+               ret
+OK_1:
+               ldc.i8     0x00FFFFFFFFFFFFFF
+               conv.r.un
+               conv.r8
+               conv.i8
+               ldc.i8 0x100000000000000
+               beq OK_2
+
+               ldc.i4.2
+               ret
+OK_2:
+               ldc.i4.0
+               ret
+       }
+
+       .field public static int32 shift1
+
+       .method public static int32 regress_497271_helper (int32 i) cil managed
+       {
+               ldarg.0
+               ret
+       }
+
+       .method public static int32 test_0_regalloc_regress_497271 () cil managed
+       {
+               .locals init (int32 var)
+
+               ldc.i4  4
+               stsfld  int32 Tests::shift1
+               ldsfld  int32 Tests::shift1
+               stloc   var
+               ldc.i4  4660
+               ldloc   var
+               shr.un
+               ldc.i4  4660
+               ldc.i4  32
+               ldloc   var
+               sub
+               shl
+               or
+               ldc.i4  1073742115
+               beq     ?L10
+?L9:
+               ldc.i4  1
+               call    int32 Tests::regress_497271_helper (int32)
+               ret
+?L10:
+               ldc.i4  0
+               call    int32 Tests::regress_497271_helper (int32)
+               ret
+       }
+
+   .field  private static  int32 Value
+
+  .method public static hidebysig  specialname 
+          default int32 regress_513931_inner ()  cil managed 
+    {                                                                 
+        // Method begins at RVA 0x225c                                
+        // Code size 52 (0x34)                                        
+        .maxstack 2                                                   
+        .locals init (                                                
+                int32   V_0,                                          
+                int32   V_1,                                          
+                bool    V_2)
+                       
+                               ldc.i4 999
+                               stsfld int32 Tests::Value
+
+        IL_0000:  nop                                                 
+        IL_0001:  ldsfld int32 Tests::Value      
+        IL_0006:  stloc.0                                             
+        IL_0007:  ldloc.0                                             
+        IL_0008:  ldc.i4.0                                            
+        IL_0009:  cgt                                                 
+        IL_000b:  ldc.i4.0                                            
+        IL_000c:  ceq                                                 
+        IL_000e:  stloc.2                                             
+        IL_000f:  ldloc.2                                             
+        IL_0010:  brtrue.s IL_0027                                    
+
+        IL_0012:  nop 
+        IL_0013:  ldloc.0 
+        IL_0014:  ldc.i4.s 0x7b
+        IL_0016:  ceq          
+        IL_0018:  ldc.i4.0     
+        IL_0019:  ceq          
+        IL_001b:  stloc.2      
+        IL_001c:  ldloc.2      
+        IL_001d:  brtrue.s IL_0023
+
+        IL_001f:  ldc.i4.m1 
+        IL_0020:  stloc.1   
+        IL_0021:  br.s IL_0032
+
+        IL_0023:  ldc.i4.1 
+        IL_0024:  stloc.1  
+        IL_0025:  br.s IL_0032
+
+        IL_0027:  
+        IL_002c:  newobj instance void class [mscorlib]System.Exception::'.ctor'()
+        IL_0031:  throw                                                                            
+        IL_0032:  ldloc.1                                                                          
+        IL_0033:  ret                                                                              
+    }
+
+       .method public static hidebysig  specialname 
+         default int32 test_0_regress_513931 ()  cil managed 
+       {
+               call int32 Tests::regress_513931_inner ()
+               pop
+               ldc.i4.0
+               ret
+       }
+
+       .method public static default int32 test_0_newarr_i8 () cil managed
+       {
+               ldc.i4 1000
+               conv.i8
+               newarr [mscorlib]System.Boolean
+               pop
+               ldc.i4 0
+               ret
+       }
+
+       .method public static specialname 
+              default int32 return_1_noinline ()  cil managed noinlining 
+       {
+               .maxstack 0
+
+               ldc.i4.1
+               ret 
+       }
+
+       // Only happens with -O=-deadce,cmov
+       .method public static default int32 test_0_cmov_unused_582322 () cil managed
+       {
+        .maxstack 2                                                   
+        .locals init (                                                
+                               int32 V_0
+               )                               
+               call int32 Tests::return_1_noinline ()
+               ldc.i4.1
+               bne.un L0
+               ldloc.s 0
+               pop
+       L0:
+               ldc.i4.0
+               ret
+       }
+
+    .method public static  hidebysig 
+           default int32 test_0_regress_586664 ()  cil managed 
+    {                                        
+        // Method begins at RVA 0x20f4       
+        // Code size 76 (0x4c)               
+        .maxstack 6                          
+        .locals init (                       
+                float64 V_0,                 
+                float64[]       V_1)         
+        IL_0000:  ldc.r8 1.                  
+        IL_0009:  ldc.r8 2.                  
+        IL_0012:  ldc.r8 1.                  
+        IL_001b:  call float64 class [mscorlib]System.Math::Pow(float64, float64)
+        IL_0020:  div                                                            
+        IL_0021:  stloc.0                                                        
+        IL_0022:  ldc.i4.2                                                       
+        IL_0023:  newarr [mscorlib]System.Double                                 
+        IL_0028:  dup                                                            
+        IL_0029:  ldc.i4.0                                                       
+        IL_002a:  ldloc.0                                                        
+        IL_002b:  neg                                                            
+        IL_002c:  stelem.r8                                                      
+        IL_002d:  dup                                                            
+        IL_002e:  ldc.i4.1                                                       
+        IL_002f:  ldloc.0
+        IL_0030:  neg
+        IL_0031:  stelem.r8
+        IL_0032:  stloc.1
+        IL_0033:  ldloc.1
+        IL_0034:  ldc.i4.0
+        IL_0035:  ldelem.r8
+        IL_0036:  ldc.r8 -0.5
+        IL_003f:  bne.un IL_004a
+
+        IL_0044:  ldc.i4.0
+        IL_0045:  br IL_004b
+
+        IL_004a:  ldc.i4.1
+        IL_004b:  ret
+    }
+
+       .method public static int32 test_2_leave_multiple_blocks_from_end ()
+       {
+               .locals init (int32 V_0)
+
+               .try {
+                       .try {
+                               nop
+                               nop
+                               leave END
+                       } finally {
+                               ldloc.0
+                               ldc.i4.1
+                               add
+                               stloc.0
+                               endfinally
+                       }
+                       nop
+                       leave END
+               } finally {
+                       ldloc.0
+                       ldc.i4.1
+                       add
+                       stloc.0
+                       endfinally
+               }
+END:
+               ldloc.0
+               ret
+       }
+
+       .method public static int32 test_3_leave_multiple_blocks_from_hole ()
+       {
+               .locals init (int32 V_0)
+
+               .try {
+                       .try {
+                               ldloc.0
+                               brtrue REST
+                               leave BEFORE_END
+REST:
+                               nop
+                               nop
+                               leave END
+                       } finally {
+                               ldloc.0
+                               ldc.i4.1
+                               add
+                               stloc.0
+                               endfinally
+                       }
+                       nop
+                       leave END
+               } finally {
+                       ldloc.0
+                       ldc.i4.1
+                       add
+                       stloc.0
+                       endfinally
+               }
+BEFORE_END:
+               ldloc.0
+               ldc.i4.1
+               add
+               stloc.0
+END:
+               ldloc.0
+               ret
+       }
+
+       .class nested private auto ansi sealed beforefieldinit Pair`2<TKey,TValue>
+                  extends [mscorlib]System.ValueType
+       {
+               .field  public  !0 key
+       .field  public  !1 'value'
+       }
+
+    .method private static hidebysig 
+           default bool ContentEquals<TKey,TValue> (valuetype Tests/Pair`2<!!TKey, !!TValue> v)  cil managed 
+    {
+       .maxstack 8
+       IL_0000:  ldarga.s 0 
+       IL_0006:  ldnull 
+                         constrained. valuetype Tests/Pair`2<!!0,!!1>
+       IL_0007:  callvirt instance bool class [mscorlib]System.Object::Equals(object)
+                         ret
+    }
+
+    .method public static hidebysig default int32 test_0_constrained_gshared_595863 () cil managed
+    {
+               .locals init (
+               valuetype Tests/Pair`2<string, string>  V_0,
+               valuetype Tests/Pair`2<string, string>  V_1)
+       IL_0000:  ldloca.s 0
+       IL_0002:  initobj valuetype Tests/Pair`2<string,string>
+       IL_0008:  ldloc.0 
+       IL_0009:  stloc.1 
+       IL_000a:  ldloca.s 1
+       IL_000c:  ldstr "A"
+       IL_0011:  stfld !0 valuetype Tests/Pair`2<string,string>::key
+       IL_0016:  ldloca.s 1
+       IL_0018:  ldstr "B"
+       IL_001d:  stfld !1 valuetype Tests/Pair`2<string,string>::'value'
+       IL_0022:  ldloc.1 
+       IL_0023:  stloc.0 
+       IL_0024:  ldloc.0 
+       IL_0025:  call bool class Tests::ContentEquals<string, string> (valuetype Tests/Pair`2<!!0,!!1>)
+                         brfalse SUCCESS
+                         ldc.i4.1
+                         ret
+       SUCCESS:
+                         ldc.i4.0
+                         ret
+    }
+
+       .method public static default int32 test_0_wrap_non_exception_throws () cil managed
+       {
+         .try {
+                   newobj instance void class [mscorlib]System.Object::'.ctor'()
+                       throw
+                 leave IL_0
+         } catch class [mscorlib]System.Runtime.CompilerServices.RuntimeWrappedException {
+                 leave IL_0
+               }
+               IL_0:
+               ldc.i4.0
+               ret
+    }
+
+       .method public static default int32 test_0_typespec_modopt () cil managed {
+               ldtoken class Tests modopt (Tests)
+               pop
+               ldc.i4.0
+               ret
+       }
+
+       .method public hidebysig static int32 SizeOfT<T>() cil managed
+       {
+               .maxstack  8
+    
+               sizeof !!0
+       ret
+       }
+
+       .method public static default int32 test_1_sizeof_gshared () cil managed {
+           call   int32 Tests::SizeOfT<int8>()
+               ldc.i4.1
+               ceq
+               ret
+       }
+
+       .method public static default int32 test_1_sizeof_ref () cil managed {
+           call   int32 Tests::SizeOfT<object>()
+               sizeof [mscorlib]System.IntPtr
+               ceq
+               ret
+       }
+
+  .field static public int32 volatile_int
+
+       .method public static default int32 test_5_volatile_load_store () cil managed {
+               ldsflda int32 class Tests::volatile_int
+               ldc.i4 5
+               volatile.
+               stind.i4
+               ldsflda int32 class Tests::volatile_int
+               volatile.
+               ldind.i4
+               ret
+       }               
+
+    .method public static 
+           default int32 regress_693905_inner (int32 x, int32 acc)  cil managed 
+    {
+        // Method begins at RVA 0x2050
+        // Code size 17 (0x11)
+        .maxstack 5
+        IL_0000:  ldarg.0 
+        IL_0001:  brtrue.s IL_0005
+
+        IL_0003:  ldarg.1 
+        IL_0004:  ret 
+        IL_0005:  ldarg.0 
+        IL_0006:  ldc.i4.1 
+        IL_0007:  sub 
+        IL_0008:  ldarg.1 
+        IL_0009:  ldc.i4.1 
+        IL_000a:  add 
+        IL_000b:  starg.s 1
+        IL_000d:  starg.s 0
+        IL_000f:  br.s IL_0000
+
+    } // end of method Test::f
+
+    .method public static 
+           default int32 test_10_regress_693905 ()  cil managed 
+       {
+               ldc.i4.s 0x0a
+        ldc.i4.0 
+        call int32 class Tests::regress_693905_inner(int32, int32)
+               ret
+       }
+
+       .method public static
+                       default int32 test_0_llvm_regress_171 () cil managed
+       {
+               .locals init (
+                       int32 i
+               )
+
+               call int32 Tests::return_1_noinline ()
+               ldc.i4.1
+               beq L1
+               ldc.i4.1
+               stloc.s 0
+               call int32 Tests::return_1_noinline ()
+               ldc.i4.0
+               beq L1
+               L1:
+               ldloc.s 0
+               ret
+       }
+
+     .field  public static int32 static_a
+
+       .method public static
+                       default int32 test_4_ldfld_stfld_static () cil managed
+       {
+               ldnull
+               ldc.i4 2
+               stfld int32 Tests::static_a
+               ldnull
+               ldfld int32 Tests::static_a
+               ldnull
+               ldflda int32 Tests::static_a
+               ldind.i4
+               add
+               ret
+       }
+
+  .method public static default int32 no_initlocals_inner () cil managed
+  {
+    .locals (
+       int32 V_0,
+       float32 V_1,
+       float64 V_2,
+       valuetype Tests/TailCallStruct V_3)
+       ldloc V_0
+       ret
+  }
+
+  .method public static default int32 test_0_no_initlocals () cil managed
+  {
+       call int32 Tests::no_initlocals_inner()
+       pop
+          ldc.i4.0
+       ret
+  }
+
+  .method public hidebysig static int32  test_5_r4_fadd_mixed() cil managed
+  {
+    // Code size       17 (0x11)
+    .maxstack  2
+    .locals init (float32 V_0,
+             float64 V_1)
+    IL_0000:  ldc.r4     3
+    IL_0005:  stloc.0
+    IL_0006:  ldc.r8     2
+    IL_000b:  stloc.1
+    IL_000c:  ldloc.0
+    IL_000d:  ldloc.1
+    IL_000e:  add
+    IL_000f:  conv.i4
+    IL_0010:  ret
+  }
+
+ .method public hidebysig static int32  test_0_fcmp_eq_r4_mixed() cil managed
+  {
+    // Code size       32 (0x20)
+    .maxstack  2
+    .locals init (float32 V_0,
+             float64 V_1)
+    IL_0000:  ldc.r4     1
+    IL_0005:  stloc.0
+    IL_0006:  ldc.r8     1
+    IL_000f:  stloc.1
+    IL_0010:  ldloc.0
+    IL_0012:  ldloc.1
+    IL_0013:  bne.un     IL_001e
+
+    IL_0018:  ldc.i4.0
+    IL_0019:  br         IL_001f
+
+    IL_001e:  ldc.i4.1
+    IL_001f:  ret
+  } // end of method Tests::test_0_fcmp_eq_r4_mixed
+
+  .method public hidebysig static int32  test_0_fceq_r4_mixed() cil managed
+  {
+    // Code size       31 (0x1f)
+    .maxstack  2
+    .locals init (float32 V_0,
+             float64 V_1,
+             bool V_2)
+    IL_0000:  ldc.r4     1
+    IL_0005:  stloc.0
+    IL_0006:  ldc.r8     1
+    IL_000b:  stloc.1
+    IL_000c:  ldloc.0
+    IL_000d:  ldloc.1
+    IL_000e:  ceq
+    IL_0010:  stloc.2
+    IL_0011:  ldloc.2
+    IL_0012:  brfalse    IL_001d
+
+    IL_0017:  ldc.i4.0
+    IL_0018:  br         IL_001e
+
+    IL_001d:  ldc.i4.1
+    IL_001e:  ret
+  } // end of method Tests::test_0_fceq_r4
+
+  .method public static int32 test_0_switch_loop () cil managed
+  {
+       .maxstack 16
+       .locals init (valuetype Tests/TailCallStruct V_0, int32 V_1)
+       ldc.i4.0
+       ldloc.0
+       ldloc.1
+       brtrue L_1
+       L_0:
+       ldc.i4.4
+       switch (L_0)
+       L_1:
+       pop
+       ret
+  }
+}
diff --git a/mono/mini/iltests.il.in b/mono/mini/iltests.il.in
deleted file mode 100644 (file)
index 35f1f8d..0000000
+++ /dev/null
@@ -1,2801 +0,0 @@
-.assembly iltests {
-  .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() =  (
-               01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
-               63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.
-}
-.assembly extern TestDriver {}
-.assembly extern mscorlib {}
-
-.class public auto ansi sealed beforefieldinit Tests {
-
-       .method static public int32 Main(string[] args) il managed {
-               .entrypoint
-               
-               ldtoken Tests
-               call       class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
-               ldarg.0
-               call       int32 [TestDriver]TestDriver::RunTests(class [mscorlib]System.Type, string[])
-               ret
-       }
-
-       // make sure the register allocator works when the return value of
-       // 'div' is discarded
-       .method static public int32 test_0_div_regalloc () il managed {
-               .locals init (
-                       int32 i
-               )
-
-               ldloc 0
-               ldc.i4.s 0xa
-               div
-               pop
-               ldc.i4.0
-               ret
-       }
-       
-       
-       .method static public int32 test_1_ceq_to_i4 () il managed {
-               .locals init (
-                       int32   foo
-               )
-               ldc.i4 500
-               stloc foo
-               ldloc foo
-               ldc.i4 500
-               ceq
-               stloc foo
-               ldloc foo
-               ret
-       }
-       
-       .method static public int32 test_3_shl_regvars () il managed {
-               .locals init (
-                       int32   a,
-                       int32   b,
-                       int32   r1,
-                       int32   r2,
-                       int32   r3
-               )
-                       
-               ldc.i4.2
-               stloc      a
-               ldc.i4.1
-               stloc      b
-       
-               ldloc      a
-               ldloc      b
-               shl 
-               stloc      r1
-               
-               ldloc      a
-               ldloc      b
-               shl 
-               stloc      r2
-               
-               ldloc      a
-               ldloc      b
-               shl 
-               stloc      r3
-               
-               ldloc      r1
-               ldc.i4.4
-               ceq
-               
-               ldloc      r2
-               ldc.i4.4
-               ceq
-               
-               ldloc      r3
-               ldc.i4.4
-               ceq
-               
-               add
-               add
-               
-               ret
-       }
-       
-       .method static public int32 test_1_fceq_to_i4 () il managed {
-       
-               .locals init (
-                       float64 foo,
-                       int32   val
-               )
-
-               ldc.r8      2
-               stloc       foo
-               
-               ldloc       foo
-               ldc.r8      2
-               ceq
-               stloc       val
-               
-               ldloc       val
-               ret
-       }
-
-       //
-       // This should be manually checked. Basically under -O=linears,
-       // you should not see tons of register spilling.
-       //
-       .method static public int32 test_1_bytedreg_free () il managed {
-               .locals init (
-                       int32   foo
-               )
-               ldc.i4 500
-               stloc foo
-               ldloc foo
-               ldc.i4 500
-               ceq
-               stloc foo
-               
-               ldloc foo
-               ldc.i4 1
-               ceq
-               stloc foo
-
-               ldloc foo
-               ldc.i4 1
-               ceq
-               stloc foo
-
-               ldloc foo
-               ldc.i4 1
-               ceq
-               stloc foo
-               
-               ldloc foo
-               ldc.i4 1
-               ceq
-               stloc foo
-               
-               ldloc foo
-               ret
-       }
-       
-       //
-       // This should be manually checked. Basically under -O=linears,
-       // you should not see tons of register spilling.
-       //
-       .method static public int32 test_0_bytesreg1_free () il managed {
-               .locals init (
-                       unsigned int8      dest,
-                       int32              src,
-                       unsigned int8&     pdest
-               )
-
-               ldloca     dest
-               stloc      pdest
-               
-               ldloc      pdest
-               ldloc      src
-               stind.i1
-               
-               ldloc      pdest
-               ldloc      src
-               stind.i1
-               
-               ldloc      pdest
-               ldloc      src
-               stind.i1
-               
-               ldloc      pdest
-               ldloc      src
-               stind.i1
-               
-               ldloc      pdest
-               ldloc      src
-               stind.i1
-               
-               ldloc      pdest
-               ldloc      src
-               stind.i1
-               
-               ldloc      pdest
-               ldind.i1
-               ret
-       }
-       
-       .method static public int32 test_1_shift_regvar () il managed {
-       
-               .locals init (
-                       int32   v7FFFFFFF,
-                       int32   v1
-               )
-               
-               ldc.i4  0x7FFFFFFF
-               stloc   v7FFFFFFF
-       
-               ldc.i4.1
-               stloc v1
-               
-               ldloc   v7FFFFFFF
-               ldloc   v1
-               shl
-               ldc.i4  0xFFFFFFFE
-               ceq
-               ret
-       }
-       
-       // this only happens with the managed pointer, not an unmanaged one.
-       .method static public int32 test_0_foo () il managed {
-       
-               .locals init (
-                       int32&  buf
-               )
-               
-               ldc.i4.5
-               localloc
-               
-               stloc buf
-               ldloc buf
-               
-               ldind.i4
-               
-               ret
-       }
-
-       .method static public int32 test_0_localloc () cil managed {
-               .locals init (native int, native int, native int, native int, int32)
-
-               ldc.i4 6
-               localloc
-               conv.i
-               stloc.0
-
-               ldc.i4 6
-               localloc
-               conv.i
-               stloc.1
-
-               ldc.i4 6
-               localloc
-               conv.i
-               stloc.2
-
-               // Variable length
-               ldc.i4 128
-               stloc.s 4
-               ldloc.s 4
-               localloc
-               conv.i
-               stloc.3
-
-               // Check zero initialized
-               ldloc.0
-               ldind.i4
-               ldc.i4.0
-               beq OK1
-               ldc.i4.1
-               br FAIL
-
-OK1:
-               ldloc.3
-               ldind.i4
-               ldc.i4.0
-               beq OK2
-               ldc.i4.2
-               br FAIL
-
-OK2:
-               ldloc.3
-               ldc.i4.s 124
-               add
-               ldind.i4
-               ldc.i4.0
-               beq OK3
-               ldc.i4.3
-               br FAIL
-
-OK3:
-               ldloc.1
-               ldc.i4 999999
-               stind.i4
-               ldloc.1
-               ldind.i4
-               ldc.i4 999999
-               beq OK4
-               ldc.i4.4
-               br FAIL
-
-OK4:
-               ldloc.0
-               ldc.i4 999999
-               stind.i4
-               ldloc.0
-               ldind.i4
-               ldc.i4 999999
-               beq OK5
-               ldc.i4.5
-               br FAIL
-
-OK5:
-               // Try allocations bigger than one page
-               ldc.i4 8196
-               localloc
-               conv.i
-               stloc.3
-               ldloc.3
-               ldc.i4 8192
-               add
-               ldc.i4 99
-               stind.i4
-               ldloc.3
-               ldc.i4 8192
-               add
-               ldind.i4
-               ldc.i4 99
-               beq PASS
-               ldc.i4.6
-               br FAIL
-
-FAIL:
-               ret
-
-PASS:  ldc.i4.0
-               ret
-       }
-
-    .method private static void do_localloc () cil managed {
-        .maxstack 3
-        .locals init (
-                unsigned int8*  V_0)
-        IL_0000:  ldc.i4.1
-        IL_0001:  ldc.i4 131072
-        IL_0006:  mul
-        IL_0007:  localloc
-        IL_0009:  stloc.0
-        IL_000a:  ret
-    }
-
-       // Check that localloc cannot be inlined
-       .method static public int32 test_0_localloc_inline () cil managed {
-               .maxstack 16
-               .locals init (
-                       int32 i
-               )
-
-               ldc.i4.0
-        stloc.0
-        br COND
-
-START:  call void class Tests::do_localloc()
-        ldloc.0
-        ldc.i4.1
-        add
-        stloc.0
-COND:   ldloc.0
-        ldc.i4 1000
-        blt START
-
-               ldc.i4.0
-               ret
-       }       
-       
-       .method static public int32 test_3_copy_used_bug () il managed {
-
-               .locals init (
-                       int32 size,
-                       int32 res
-               )
-
-               ldc.i4 0
-               stloc res
-
-               ldc.i4 1
-               stloc size
-
-               ldloc size
-               ldloc size
-               ldloc size
-               add
-               stloc size
-               ldloc size
-               add
-               stloc res
-
-               ldloc res
-               ret
-       }
-
-       // demonstrate that the copy_used_var is not a fix for the above bug
-       .method static public int32 test_3_copy_used_indir_bug () il managed {
-
-               .locals init (
-                       int32 size,
-                       int32 res
-               )
-
-               ldc.i4 0
-               stloc res
-
-               ldc.i4 1
-               stloc size
-
-               ldloc size
-               ldloca size
-               ldloc size
-               ldloc size
-               add
-               stind.i4
-               ldloc size
-               add
-               stloc res
-
-               ldloc res
-               ret
-       }
-
-       .method static public void do_nothing (int32 a) il managed {
-               ret
-       }
-       
-       // demonstrate the block_split failure: needs -O=inline
-       // mini -O=inline --compile Tests:test_0_split_block_bug iltests.exe
-       .method static public int32 test_0_split_block_bug () il managed {
-
-               .locals init (
-                       int32 i1
-               )
-
-               ldc.i4 1
-               stloc i1
- test_label:
-               ldloc i1
-               call void class Tests::do_nothing (int32)
-               ldc.i4 0
-               brtrue test_label
-               
-               ldc.i4 0
-               ret
-       }
-
-       .method public void inline_do_nothing () il managed {
-               ret
-       }
-       .method static public int32 test_1_checkthis_inlining () il managed {
-               ldnull
-               call instance void class Tests::inline_do_nothing ()
-               ldc.i4 1
-               ret
-       }
-
-       .class nested private auto ansi sealed beforefieldinit TailCallStruct 
-               extends [mscorlib]System.ValueType {
-               .field public int32 a
-               .field public int32 b
-       }
-
-       .method static valuetype Tests/TailCallStruct tail1 (valuetype Tests/TailCallStruct arg) {
-               ldarga 0
-               ldarga 0
-               ldfld int32 Tests/TailCallStruct::a
-               ldc.i4.1
-               add
-               stfld int32 Tests/TailCallStruct::a
-               ldarga 0
-               ldarga 0
-               ldfld int32 Tests/TailCallStruct::a
-               ldc.i4.2
-               add
-               stfld int32 Tests/TailCallStruct::a
-               ldarg.0
-               ret
-       }
-
-       .method static valuetype Tests/TailCallStruct tail2 (valuetype Tests/TailCallStruct arg) {
-               ldarg.0
-               tail.
-               call valuetype Tests/TailCallStruct Tests::tail1 (valuetype Tests/TailCallStruct)
-               ret
-       }
-
-       .class nested private auto ansi sealed beforefieldinit TailCallStructBig
-               extends [mscorlib]System.ValueType {
-               .field public int32 a
-               .field public int32 b
-               .field public int32 c
-               .field public int32 d
-               .field public int32 e
-       }
-
-       .method static valuetype Tests/TailCallStructBig tail_vret_by_addr_inner (valuetype Tests/TailCallStructBig arg) {
-               ldarga 0
-               ldarga 0
-               ldfld int32 Tests/TailCallStructBig::a
-               ldc.i4.1
-               add
-               stfld int32 Tests/TailCallStructBig::a
-               ldarg.0
-               ret
-       }
-
-       .method static valuetype Tests/TailCallStructBig tail_vret_by_addr (valuetype Tests/TailCallStructBig arg) {
-               ldarg.0
-               tail.
-               call valuetype Tests/TailCallStructBig Tests::tail_vret_by_addr_inner (valuetype Tests/TailCallStructBig)
-               ret
-       }
-
-       .method static public int32 test_3_tail_call_vret_by_addr () il managed {
-               .maxstack 16
-               .locals init (
-                       valuetype Tests/TailCallStructBig arg2
-               )
-
-               ldloca 0
-               ldc.i4.2
-               stfld int32 Tests/TailCallStructBig::a
-               ldloc.0
-               call valuetype Tests/TailCallStructBig Tests::tail_vret_by_addr (valuetype Tests/TailCallStructBig)
-               stloc.0
-
-               ldloca 0
-               ldfld int32 Tests/TailCallStructBig::a
-               ret
-       }
-
-       .method static public int32 test_9_tail_call_vret_by_val () il managed {
-               .maxstack 16
-               .locals init (
-                       valuetype Tests/TailCallStruct arg
-               )
-               ldloca 0
-               ldc.i4.2
-               stfld int32 Tests/TailCallStruct::a
-               ldloca 0
-               ldc.i4.4
-               stfld int32 Tests/TailCallStruct::b
-               ldloc.0
-               call valuetype Tests/TailCallStruct Tests::tail2 (valuetype Tests/TailCallStruct)
-               stloc.0
-
-               ldloca 0
-               ldfld int32 Tests/TailCallStruct::a
-               ldloca 0
-               ldfld int32 Tests/TailCallStruct::b
-               add
-               ret
-       }
-
-       .method static public int32 tail3 (int32 i, int32 j) il managed {
-               ldarg.0
-               ldarg.1
-               add
-               ret
-       }
-
-       .method static public int32 tail4 (int32 i, int32 j) il managed {
-               .maxstack 16
-               .locals init (
-                       int32 k)
-
-               // Test arg0 allocated to a register
-               ldarg.0
-               ldarg.0
-               ldarg.0
-               ldarg.0
-               add
-               add
-               add
-               starg 0
-
-               // Test switched up argument variables as the actual arguments
-               ldarg.1
-               ldarg.0
-               tail.
-               call int32 Tests::tail3 (int32, int32)
-               ret
-       }
-
-       .method static public int32 test_24_tail_calls2 () il managed {
-               // Some platforms might not be able to AOT tail calls
-               .custom instance void class [TestDriver]CategoryAttribute::'.ctor'(string) =  (01 00 08 21 46 55 4C 4C 41 4F 54 00 00 ) // ...!FULLAOT..
-
-               .maxstack 16
-               .locals init (
-                       int32 i,
-                       int32 j)
-
-               ldc.i4.4
-               stloc.0
-               ldc.i4.8
-               stloc.1
-
-               ldloc.0 
-               ldloc.1
-               call int32 Tests::tail4 (int32, int32)
-               ret
-       }
-
-       .method public static int32 test_5_jmp () cil managed {
-               // Some platforms might not be able to AOT tail calls
-               .custom instance void class [TestDriver]CategoryAttribute::'.ctor'(string) =  (01 00 08 21 46 55 4C 4C 41 4F 54 00 00 ) // ...!FULLAOT..
-
-               ldc.i4.1
-               ldc.i4.2
-               call int32 Tests::jmp2 (int32, int32)
-               ret
-       }
-
-       .method public static int32 jmp2 (int32, int32) cil managed {
-               ldarg.0
-               ldc.i4.1
-               add
-               starg.s 0
-               ldarg.1
-               ldc.i4.1
-               add
-               starg.s 1
-               jmp int32 Tests::jmp3 (int32, int32)
-               ldc.i4.0
-               ret
-       }               
-
-       .method public static int32 jmp3 (int32 i, int32 j) cil managed {
-               ldarg.0
-               ldarg.1
-               add
-               ret
-       }
-
-       .method static public int32 test_11_switch_with_nonempty_stack () il managed {
-               .maxstack 16
-
-               ldc.i4.5
-               ldc.i4.6
-               ldc.i4.1
-               switch (L0, L1)
-       L0: 
-               add
-               ret
-       L1:
-               add
-               ret
-       }
-    .method public static int32 test_5_endfinally_with_nonempty_stack () il managed {
-               .maxstack 16
-
-        .try {
-          leave IL_0
-        }
-        finally  {
-          ldc.i4.0
-          endfinally
-        }
-        IL_0:  ldc.i4.5
-               ret
-    }
-
-       .method public static int32 test_0_conv_ovf_i8_neg () il managed {
-               .maxstack 16
-
-               ldc.i4.m1
-               conv.ovf.i8
-               conv.i4
-               ldc.i4.m1
-               beq L_OK
-               ldc.i4.1
-               ret
-       L_OK:
-               ldc.i4.0
-               ret
-       }               
-
-       .method public static int32 test_1234_conv_u4 () cil managed {
-               .maxstack 16
-
-               ldc.i4 1234
-               conv.u4
-               conv.i4
-               ret
-       }
-
-       .method public static int32 test_0_conv_ovf_i_un () cil managed {
-               .maxstack 16
-
-               ldc.i4 1234
-               conv.ovf.i.un
-               conv.i4
-               ldc.i4 1234
-               beq L1
-               ldc.i4.1
-               ret
-       L1:
-               ldc.i4 0x7fffffff
-               conv.ovf.i.un
-               conv.i4
-               ldc.i4 0x7fffffff
-               beq L2
-               ldc.i4.2
-               ret
-       L2:
-               sizeof [mscorlib]System.IntPtr
-               ldc.i4 8
-               beq L5
-               .try {
-                       ldc.i4 0x80000000
-                       conv.ovf.i.un
-                       leave L4
-               } catch [mscorlib]System.OverflowException {
-                       pop
-                       leave L5
-               }
-       L4: 
-               ldc.i4.3
-               ret
-       L5:
-               ldc.i4.0
-               ret
-       }
-
-       .method public static int32 test_0_conv_ovf_u_un () cil managed {
-               .maxstack 16
-
-               ldc.i4 1234
-               conv.ovf.u.un
-               conv.i4
-               ldc.i4 1234
-               beq L1
-               ldc.i4.1
-               ret
-       L1:
-               ldc.i4.0
-               ret
-       }
-
-       .method public static int32 test_0_conv_ovf_i () cil managed {
-               .maxstack 16
-
-               ldc.i4 1234
-               conv.ovf.i
-               conv.i4
-               ldc.i4 1234
-               beq L1
-               ldc.i4.1
-               ret
-       L1:
-               ldc.i4.0
-               ret
-       }
-
-       .method public static int32 test_0_conv_ovf_u () cil managed {
-               .maxstack 16
-
-               ldc.i4 1234
-               conv.ovf.u
-               conv.i4
-               ldc.i4 1234
-               beq L1
-               ldc.i4.1
-               ret
-       L1:
-               ldc.i4.0
-               ret
-       }
-
-       .method public static int32 test_1234_conv_ovf_i8_un () cil managed {
-               .maxstack 16
-
-               ldc.i4 1234
-               conv.ovf.i8.un
-               conv.i4
-               ret
-       }
-
-       .method public static int32 test_0_lconv_ovf_i () cil managed {
-               .maxstack 16
-
-               ldc.i4 1234
-               conv.i8
-               conv.ovf.i
-               conv.i4
-               ldc.i4 1234
-               beq L1
-               ldc.i4.1
-               ret
-       L1:
-               ldc.i4.0
-               ret
-       }
-
-       .method public static int32 test_0_lconv_ovf_u () cil managed {
-               .maxstack 16
-
-               ldc.i4 1234
-               conv.i8
-               conv.ovf.u
-               conv.i4
-               ldc.i4 1234
-               beq L1
-               ldc.i4.1
-               ret
-       L1:
-               ldc.i4.0
-               ret
-       }
-
-       .method public static int32 test_0_lconv_ovf_i_un () cil managed {
-               .maxstack 16
-
-               ldc.i4 1234
-               conv.i8
-               conv.ovf.i.un
-               conv.i4
-               ldc.i4 1234
-               beq L1
-               ldc.i4.1
-               ret
-       L1:
-               ldc.i4.0
-               ret
-       }
-
-       .method public static int32 test_0_lconv_ovf_u_un () cil managed {
-               .maxstack 16
-
-               ldc.i4 1234
-               conv.i8
-               conv.ovf.u.un
-               conv.i4
-               ldc.i4 1234
-               beq L1
-               ldc.i4.1
-               ret
-       L1:
-               ldc.i4.0
-               ret
-       }
-
-       .method public static int32 test_0_lconv_to_ovf_i8 () cil managed {
-               .maxstack 16
-
-               ldc.i4 1234
-               conv.i8
-               conv.ovf.i8
-               conv.i4
-               ldc.i4 1234
-               beq L1
-               ldc.i4.1
-               ret
-       L1:
-               ldc.i4.0
-               ret
-       }
-
-       .method public static int32 test_0_lconv_to_ovf_u8_un () cil managed {
-               .maxstack 16
-
-               ldc.i4 1234
-               conv.i8
-               conv.ovf.u8.un
-               conv.i4
-               ldc.i4 1234
-               beq L1
-               ldc.i4.1
-               ret
-       L1:
-               ldc.i4.0
-               ret
-       }
-
-       .method public static int32 test_2_lconv_to_ovf_i4_un () cil managed {
-               .maxstack 16
-               .locals init (int32 res)
-
-               ldc.i4 0x7fffffff
-               conv.u8
-               conv.ovf.i4.un
-               pop
-
-               ldc.i4.2
-               stloc res
-
-        .try {
-                       ldc.i8 0x80000000
-                       conv.ovf.i4.un
-                       pop
-                       ldc.i4.0
-                       stloc res
-                       leave RET
-               } catch [mscorlib]System.OverflowException {
-                       pop
-                       leave IL_0
-               }
-
-       IL_0:
-
-        .try {
-                       ldc.i8 0xffffffff80000000
-                       conv.ovf.i4.un
-                       pop
-                       ldc.i4.1
-                       stloc res
-                       leave RET
-               } catch [mscorlib]System.OverflowException {
-                       pop
-                       leave RET
-               }
-
-       RET:
-               ldloc res
-               ret
-       }
-
-    .method public static int32 test_1_lconv_to_ovf_i_un () cil managed {
-               .maxstack 16
-               .locals init (int32 res)
-
-               ldc.i4 0x7fffffff
-               conv.u8
-               conv.ovf.i.un
-               conv.i4
-               pop
-
-               ldc.i4.1
-               ret
-       }
-
-       .method public static int32 test_32_lconv_to_u8 () cil managed
-       {
-               .maxstack 16
-
-               ldc.i4 32
-               conv.i8
-               conv.u8
-               conv.i4
-               ret
-       }                               
-
-       .method public static int32 test_32_lconv_to_i8 () cil managed
-       {
-               .maxstack 16
-
-               ldc.i4 32
-               conv.i8
-               conv.i8
-               conv.i4
-               ret
-       }                               
-
-       .method public static int32 test_15_lconv_to_u () cil managed
-       {
-       ldc.i8 0x10000000f
-               conv.u
-               conv.i4
-               ret
-       }
-
-       .method public static int32 test_1234_fconv_u () cil managed {
-               .maxstack 16
-
-               ldc.r8 1234.0
-               conv.u
-               conv.i4
-               ret
-       }
-
-       .method public static int32 test_0_get_type_from_handle_on_bblock_boundary () cil managed 
-       {
-               .maxstack 16
-       
-               ldc.i4.1
-               brfalse OBJECT
-       
-               ldtoken [mscorlib]System.String
-               br AFTER
-       OBJECT:
-               ldtoken [mscorlib]System.Object
-       AFTER:
-               call class [mscorlib]'System.Type' class [mscorlib]'System.Type'::'GetTypeFromHandle'(valuetype [mscorlib]'System.RuntimeTypeHandle')
-               callvirt instance string class [mscorlib]System.Type::get_FullName ()
-               ldstr "System.String"
-               callvirt instance bool class [mscorlib]System.Object::Equals(object)
-               ldc.i4.0
-               ceq
-               ret 
-       }
-               
-       .method public static int32 test_0_bug59580  ()
-       {
-               ldc.r4          float32(0x7FC00000)
-               ldc.r4          float32(0x7FC00000)
-               bge.un          pass
-               br              fail
-       pass:
-               ldc.i4.0
-               ret
-       fail:
-               ldc.i4.1
-               ret
-       }
-       
-       .method public static int32 test_1_bug60056  () {
-               .locals init (int32 m5)
-                       
-               ldc.i4.m1
-               stloc.0
-               
-               ldc.i4.1
-               conv.u8
-               
-               ldloc.0
-               conv.i8
-               mul
-               
-               ldc.i4.m1
-               conv.i8
-               ceq
-               ret
-       }
-       
-       .method public static int32 test_1_conv_u8_cfold  () {
-               ldc.i4.m1
-               conv.u8
-               
-               ldc.i8 0x00000000ffffffff
-               
-               ceq
-               ret
-       }
-       
-       .method public static int32 test_1_array_type_mismatch_ldelema  () {
-               .locals init (int32 r)
-               
-                       ldc.i4.1
-                       newarr string
-                       ldc.i4.0 
-                       ldelema string
-                       pop
-               
-               .try {
-                       ldc.i4.1
-                       newarr string
-                       ldc.i4.0 
-                       ldelema object
-                       pop
-                       
-                       leave end
-               } catch [mscorlib]System.ArrayTypeMismatchException {
-                       pop
-                       ldc.i4.1
-                       stloc.0
-                       leave end
-               }
-       end:
-               ldloc.0
-               ret
-       }
-
-       .method public static int32 test_1_conv_ovf_i8_with_i4 () {
-                       ldc.i4.m1 
-                       conv.ovf.i8
-                       conv.ovf.i4
-                       neg
-                       ret
-       }
-
-       // bug #72148
-    .method public static int32 test_0_initlocals_float_ptr () {
-       .maxstack 3
-       .locals init (
-               float32[]       V_0,
-               float32& pinned V_1,
-               unsigned int32  V_2)
-                       ldc.i4.s 0x0f
-                       newarr [mscorlib]System.Single
-                       stloc.0 
-                       ldloc.0 
-                       ldc.i4.0 
-                       ldc.r4 1.13
-                       stelem.r4 
-                       ldloc.0 
-                       ldc.i4.0 
-                       ldelema [mscorlib]System.Single
-                       stloc.1 
-                       ldloc.1 
-                       conv.i 
-                       ldind.u4 
-                       stloc.2 
-                       ldc.i4.0
-                       ret
-       }
-
-       .method public static int32 test_7_conv_ovf_u8_un () {
-       .maxstack  2
-        .locals    init (unsigned int64)
-
-        ldc.i4.7
-        conv.ovf.u8.un
-        stloc.0
-               ldloc.0
-               conv.i4
-        ret
-       }
-
-       .method public static int32 test_7_conv_ovf_u4_un () {
-       .maxstack  2
-        .locals    init (unsigned int32)
-
-        ldc.i4.7
-        conv.ovf.u4.un
-        stloc.0
-               ldloc.0
-               conv.i4
-        ret
-       }
-
-       .method public static int32 test_1_bug_74591 () {
-               .maxstack 16
-               .locals init (int32)
-
-               ldc.i4.m1
-               stloc.0
-               ldloc.0
-               conv.ovf.i8
-               ldc.i4.m1
-               conv.ovf.i8
-               mul.ovf
-               conv.i4
-               ret
-       }
-
-       .class nested public auto ansi Integer
-               extends [mscorlib]System.Object {
-
-               .field public bool n
-
-           .method public hidebysig  specialname  rtspecialname 
-           instance default void .ctor (unsigned int64 i, bool n)  cil managed 
-           {
-                       .maxstack 8
-                       ldarg.0
-                       call instance void class [mscorlib]System.Object::.ctor()
-                       ldarg.0
-                       ldarg.2
-                       stfld bool Tests/Integer::n
-                       ret
-               }
-       }
-
-       .method public static int32 test_1_bug_74726 () {
-               .maxstack 16
-
-               ldc.i4.2
-               conv.ovf.u8
-               ldc.i4.1
-               conv.ovf.u8
-               mul.ovf.un
-               ldc.i4.1
-               newobj instance void class Tests/Integer::.ctor(unsigned int64, bool)
-               ldfld bool Tests/Integer::n
-               ldc.i4.1
-               ceq
-               ret
-       }
-
-       .class nested private auto ansi sealed xxx
-       extends [mscorlib]System.ValueType
-   {
-     .field  public   object a
-
-     .method public hidebysig  specialname  rtspecialname 
-            instance default void .ctor ()  cil managed 
-     {
-                .maxstack 8
-                ret 
-     }
-   } // end of class xxx
-
-       .method public static int32 test_0_newobj_vtype () {
-               .maxstack 6
-               .locals init (
-                       valuetype Tests/xxx V_0
-               )
-
-               newobj instance void valuetype Tests/xxx::.ctor ()
-               stloc.0
-               ldloca.s 0
-               ldfld object Tests/xxx::a
-               brfalse OK
-               ldc.i4.s 1
-               ret
-       OK:
-               ldc.i4.s 0
-               ret
-       }
-
-       .method public static int32 test_0_newobj_vtype_primitive () {
-               .maxstack 6
-               .locals init (
-                       native int V_0
-               )
-
-               ldc.i4.s 10
-               newobj instance void native int::'.ctor'(int32)
-               stloc.0
-               ldloc.0
-               ldc.i4.s 10
-               beq OK
-               ldc.i4.s 1
-               ret
-       OK:
-               ldc.i4.s 0
-               ret
-       }
-
-       .method public static int32 test_1_filters () {
-               .custom instance void [TestDriver]CategoryAttribute::.ctor(string) = ( 01 00 08 21 42 49 54 43 4F 44 45 00 00 )          // ...!BITCODE..
-               .maxstack 16
-               .locals init (
-                       int32 res
-               )
-
-               .try { // 0
-                       .try {
-                               ldstr "OnErrorSub test Exception"
-                               newobj instance void class [mscorlib]System.Exception::.ctor(string)
-                               throw 
-                               leave.s IL_0033
-                       }
-                       filter {
-                               pop
-                               ldc.i4.0
-                               endfilter
-                       } {
-                               pop
-                               // Should not be called
-                               ldc.i4.2
-                               stloc res
-                               leave.s IL_0033
-                       }
-               }
-               filter {
-                       pop
-                       ldc.i4.1
-                       endfilter 
-               } {
-                 pop
-                 ldc.i4.1
-                 stloc res       
-                 leave.s IL_0033
-
-               }
-               IL_0033:
-               ldloc res
-               ret
-       }
-
-       .class nested private auto ansi sealed beforefieldinit TheStruct
-               extends [mscorlib]System.ValueType {
-               .field public int32 a
-               .field public int32 b
-       }
-
-       .method public static int32 test_5_cpobj () {
-               .maxstack 8
-               .locals init (  
-                               valuetype Tests/TheStruct v_0, 
-                               valuetype Tests/TheStruct v_1
-                                        )
-
-               ldloca v_0
-               ldc.i4.2
-               stfld int32 Tests/TheStruct::a
-
-               ldloca v_0
-               ldc.i4.3
-               stfld int32 Tests/TheStruct::b
-
-               ldloca v_1
-               ldloca v_0
-               cpobj Tests/TheStruct
-
-               ldloca v_1
-               ldfld int32 Tests/TheStruct::a
-               ldloca v_1
-               ldfld int32 Tests/TheStruct::b
-               add
-
-               ret
-       }
-
-       .method public static int32 test_5_ldobj_stloc_optimization () {
-               .maxstack 8
-               .locals init (  
-                               valuetype Tests/TheStruct v_0, 
-                               valuetype Tests/TheStruct v_1
-                                        )
-
-               ldloca v_0
-               ldc.i4.2
-               stfld int32 Tests/TheStruct::a
-
-               ldloca v_0
-               ldc.i4.3
-               stfld int32 Tests/TheStruct::b
-
-               ldloca v_0
-               ldobj valuetype Tests/TheStruct
-               stloc.s v_1
-
-               ldloca v_1
-               ldfld int32 Tests/TheStruct::a
-               ldloca v_1
-               ldfld int32 Tests/TheStruct::b
-               add
-
-               ret
-       }
-
-       .method public static int32 test_1_cpobj_reference () {
-               .maxstack 8
-               .locals init (  
-                               object v_0, 
-                               object v_1
-                                        )
-
-               newobj instance void object::.ctor()
-               stloc v_0
-
-               ldloca v_1
-               ldloca v_0
-               cpobj object
-
-               ldloc v_0
-               ldloc v_1
-               ceq
-               ret
-       }
-
-       .method public static int32 test_1_initobj_reference () {
-               .maxstack 8
-               .locals init (  
-                               object v_0
-                                        )
-
-               newobj instance void object::.ctor()
-               stloc v_0
-
-               ldloca v_0
-               initobj object
-
-               ldloc v_0
-               ldnull
-               ceq
-               ret
-       }
-
-       .method public static int32 test_1_ldobj_reference () {
-               .maxstack 8
-               .locals init (  
-                               object v_0
-                                        )
-
-               newobj instance void object::.ctor()
-               stloc v_0
-
-               ldloc v_0
-               ldloca v_0
-               ldobj object
-               ceq
-               ret
-       }
-
-       .method public static int32 test_5_vtype_on_bb_boundary () {
-               .maxstack 8
-               .locals init (  
-                               valuetype Tests/TheStruct v_0, 
-                               valuetype Tests/TheStruct v_1
-                                        )
-
-               ldloca v_0
-               ldc.i4.2
-               stfld int32 Tests/TheStruct::a
-
-               ldloca v_0
-               ldc.i4.3
-               stfld int32 Tests/TheStruct::b
-
-               ldloc v_0
-               br L_0
-       L_0: stloc v_1
-
-               ldloca v_1
-               ldfld int32 Tests/TheStruct::a
-               ldloca v_1
-               ldfld int32 Tests/TheStruct::b
-               add
-               ret
-       }
-
-       .method public static int32 test_5_different_in_stacks () cil managed {
-               .maxstack 16
-
-                       ldc.i4.1
-                       ldc.i4.1
-                       beq L_0
-
-                       ldc.i4.3
-                       ldc.i4.3
-                       br L_1
-                       ldc.i4.3
-                       ldc.i4.3
-                       br L_2
-        L_0:   ldc.i4.2
-                       ldc.i4.3
-                       ldc.i4.1
-                       ldc.i4.1
-                       beq L_2
-        L_1:   add
-                       ret
-        L_2:   add
-                       ret
-       }
-
-       .method public static int32 test_3_larray_get_set () {
-               .locals init (
-                       int32[2]        V_0)
-                         
-                       ldc.i4.2 
-                       newobj instance void int32[0...]::.ctor(int32)
-                       stloc.0 
-                       ldloc.0 
-                       ldc.i4.0 
-                       ldc.i4 1
-                       call instance void int32[0...]::Set(int32, int32)
-                   ldloc.0 
-                   ldc.i4.1 
-                       ldc.i4 2
-                       call instance void int32[0...]::Set(int32, int32)
-
-                       ldloc.0
-                       ldc.i4.0
-                       call instance int32 int32[0...]::Get(int32)
-                       ldloc.0
-                       ldc.i4.1
-                       call instance int32 int32[0...]::Get(int32)
-                       add
-                       ret
-       }
-
-       .method public static int32 test_0_pop_side_effects () {
-               .try {
-                       ldc.r8 1
-                       ldc.r8 0
-                       div
-                       ckfinite
-                       pop
-                       leave FAIL
-               }
-               catch [mscorlib]System.ArithmeticException {
-                       pop
-                       leave L_0
-               }
-               L_0:
-               ldc.i4.0
-               ret
-               FAIL:
-               ldc.i4.1
-               ret
-       }
-
-       .method public static void regalloc_regress_78314_helper (object o) cil managed
-       {
-               ret
-       }
-
-       .method public static int32 test_1_regalloc_regress_78314 () cil managed
-       {
-    // Code size       68 (0x44)
-    .maxstack  6
-    .locals init (int32 V_0, bool V_1)
-    IL_0000:  ldc.i4.0
-    IL_0001:  stloc.0
-    IL_0002:  br.s       IL_003b
-
-    IL_0004:
-    IL_001e:  ldc.i4.s   10
-    IL_0020:  ldloc.0
-    IL_0021:  shl
-    IL_0022:  ldc.i4.s   10
-    IL_0024:  ldloc.0
-    IL_0025:  shl
-    IL_0026:  ceq
-    IL_0028:  box        [mscorlib]System.Boolean
-    IL_0032:  call       void Tests::regalloc_regress_78314_helper(object)
-    IL_0037:  ldloc.0
-    IL_0038:  ldc.i4.1
-    IL_0039:  add
-    IL_003a:  stloc.0
-    IL_003b:  ldloc.0
-    IL_003c:  ldc.i4.8
-    IL_003f:  blt.s      IL_0004
-
-       ldloc.0
-       ldc.i4.8
-       ceq
-       conv.i4
-       ret     
-  }
-
-       .method public static void try_block_end_remove_if_useless () cil managed {
-           .maxstack  8
-
-           T_START:
-               ldstr   "Start"
-                       pop
-               leave.s COMPLETE
-           T1_END:
-
-           COMPLETE:
-               ret
-
-           F1_START:
-               ldstr   "Finally1"
-                       pop
-               endfinally
-           F1_END:
-
-           .try T_START to T1_END finally handler F1_START to F1_END
-       }
-
-       .method public static int32 test_0_try_block_end_remove_if_useless () cil managed {
-               call void class Tests::try_block_end_remove_if_useless ()
-               ldc.i4.0
-               ret
-       }
-
-   .method private static int32 test_0_regress_78629_switch_next_ins_target ()  cil managed
-    {
-        ldc.i4.0
-        switch (target)
-        target: ldstr "bar"
-               pop
-               ldc.i4.0
-        ret
-    }
-
-       // This belongs to basic-float.cs, but its hard to tell mcs/csc to
-       // generate the non .un version of the opcodes
-    .method private static  hidebysig 
-           default int32 test_4_float_branch_nan ()  cil managed 
-    {
-        // Method begins at RVA 0x27a4
-       // Code size 74 (0x4a)
-       .maxstack 2
-       .locals init (
-               float64 V_0,
-               float64 V_1,
-               int32   V_2)
-       IL_0000:  ldc.r8 (00 00 00 00 00 00 f8 ff)
-       IL_0009:  stloc.0 
-       IL_000a:  ldc.r8 1.
-       IL_0013:  stloc.1 
-       IL_0014:  ldc.i4.0 
-       IL_0015:  stloc.2 
-       IL_0016:  ldloc.0 
-       IL_0017:  ldloc.1 
-       IL_0018:  bge.s IL_001a
-
-                               br L1
-       IL_001a:  ldloc.2 
-       IL_001b:  ret 
-       L1:
-       IL_001c:  ldloc.2 
-       IL_001d:  ldc.i4.1 
-       IL_001e:  add 
-       IL_001f:  stloc.2 
-       IL_0020:  ldloc.0 
-       IL_0021:  ldloc.1 
-       IL_0022:  ble.s IL_002e
-                               br L2
-       IL_002e:  ldloc.2 
-       IL_002f:  ret 
-       L2:
-       IL_0030:  ldloc.2 
-       IL_0031:  ldc.i4.1 
-       IL_0032:  add 
-       IL_0033:  stloc.2 
-       IL_0034:  ldloc.0 
-       IL_0035:  ldloc.1 
-       IL_0036:  blt.s IL_0038
-                               br L3           
-       IL_0038:  ldloc.2 
-       IL_0039:  ret 
-       L3:
-       IL_003a:  ldloc.2 
-       IL_003b:  ldc.i4.1 
-       IL_003c:  add 
-       IL_003d:  stloc.2 
-       IL_003e:  ldloc.0 
-       IL_003f:  ldloc.1 
-       IL_0040:  bgt.s IL_0042
-                               br L4
-       IL_0042:  ldloc.2 
-       IL_0043:  ret 
-       L4:
-       IL_0044:  ldloc.2 
-       IL_0045:  ldc.i4.1 
-       IL_0046:  add 
-       IL_0047:  stloc.2 
-       IL_0048:  ldloc.2 
-       IL_0049:  ret 
-    } // end of method Tests::test_5_float_branch_nan
-
-    .method private static  hidebysig
-           default void regress_80622_inner (object x)  cil managed
-    {
-               .locals init (unsigned int8 i)
-        // Method begins at RVA 0x2050
-        // Code size 14 (0xe)
-        .maxstack 8
-        IL_1000:  ldarg.0
-        IL_1001:  unbox unsigned int8
-        IL_1006:  ldobj unsigned int8
-        IL_000b:  conv.ovf.i4.un
-        IL_000c:  pop
-        IL_000d:  ret
-    }
-
-    // method line 2
-    .method private static  hidebysig
-           default int32 test_0_regress_80622 ()  cil managed
-    {
-        .maxstack 8
-        IL_0000:  ldc.i4 255
-        IL_0005:  box unsigned int8
-        IL_000a:  call void class Tests::regress_80622_inner (object)
-               ldc.i4.0
-        IL_000f:  ret
-    }
-
-       .method private static default int32 test_0_regresss_80190 () cil managed
-       {
-           .maxstack  2
-           .locals init (int32 V_0,
-                    int32* V_1)
-           IL_0000:  nop
-           IL_0001:  nop
-           IL_0002:  ldloca.s   V_0
-           IL_0004:  conv.u
-           IL_0005:  stloc.1
-           IL_0006:  ldloc.1
-           IL_0007:  ldc.i4.3
-           IL_0008:  stind.i4
-           IL_0009:  nop
-                                 ldc.i4.0
-                                 ret
-       }
-
-       .class interface nested public auto ansi abstract IFaceWithStaticMethod
-       {
-           .method public static  specialname 
-              default void foo ()  cil managed noinlining 
-           {
-               .maxstack 0
-               IL_0000:  ret 
-       }
-       }
-       
-       .class nested public auto ansi AClass extends [mscorlib]System.Object implements Tests/IFaceWithStaticMethod
-       {
-           .method public hidebysig  specialname  rtspecialname 
-           instance default void .ctor ()  cil managed 
-           {
-                       .maxstack 8
-                       ret
-               }
-
-       }
-
-       // Test that static methods in interfaces are ignored during vtable construction
-       .method private static default int32 test_0_ifaces_with_static_methods () cil managed
-       {
-               .maxstack 16
-
-               newobj instance void class Tests/AClass::.ctor()
-               pop
-               ldc.i4.0
-               ret
-       }
-
-       .method private static hidebysig default int32 Foo<T> (!!T n)  cil managed {
-               ldarg.0
-               box !!0
-               brtrue HAS_VALUE
-               ldc.i4.0
-               ret
-HAS_VALUE:     ldc.i4.1
-               ret
-       }
-
-       // bug 78019
-       .method static public int32 test_0_nullable_box_brtrue () cil managed {
-
-               .locals init (valuetype [mscorlib]System.Nullable`1<int32> V_0)
-
-               ldloc.0
-               call int32 class Tests::Foo<valuetype [mscorlib]System.Nullable`1<int32>> (!!0)
-               ret
-       }
-
-       //Bug 372410
-       .method static public int32 test_0_ldelema_type_check () cil managed {
-               .maxstack 16
-               .locals init (object[] V_0,
-                                         object[,] V_1)
-
-               ldc.i4.1
-               newarr object
-               stloc.0
-
-               .try {
-                       ldloc.0
-                       ldc.i4.0
-                       ldelema object
-                       leave L1
-               } catch [mscorlib]System.ArrayTypeMismatchException {
-                       leave ERROR1
-               }
-
-       L1:
-               ldc.i4.1
-               newarr string
-               stloc.0
-
-               .try {
-                       ldloc.0
-                       ldc.i4.0
-                       ldelema object
-                       leave ERROR2
-               } catch [mscorlib]System.ArrayTypeMismatchException {
-                       leave L2
-               }
-
-       L2:
-                       ldc.i4.1
-               newarr string
-               stloc.0
-
-               .try {
-                       ldloc.0
-                       ldc.i4.0
-                       readonly. ldelema object
-                       leave L3
-               } catch [mscorlib]System.ArrayTypeMismatchException {
-                       leave ERROR3
-               }
-
-       L3:
-               ldc.i4.0
-               ret
-
-
-       ERROR1:
-               ldc.i4.1
-               ret
-
-       ERROR2:
-               ldc.i4.2
-               ret
-
-       ERROR3:
-               ldc.i4.3
-               ret
-       }
-
-
-       //Bug 372410
-       .method static public int32 test_0_array_address_type_check () cil managed {
-               .maxstack 16
-               .locals init (object[] V_0,
-                                         object[,] V_1)
-
-               ldc.i4.1 
-           ldc.i4.1 
-           newobj instance void object[,]::.ctor(int32, int32)
-               stloc.1
-
-               .try {
-                       ldloc.1
-                       ldc.i4.0
-                       ldc.i4.0
-                       call instance object&  object[,]::Address(int32, int32)
-                       leave L4
-               } catch [mscorlib]System.ArrayTypeMismatchException {
-                       leave ERROR4
-               }
-
-       L4:
-               ldc.i4.1 
-           ldc.i4.1 
-           newobj instance void string[,]::.ctor(int32, int32)
-               stloc.1
-
-               .try {
-                       ldloc.1
-                       ldc.i4.0
-                       ldc.i4.0
-                       call instance object&  object[,]::Address(int32, int32)
-                       leave ERROR5
-               } catch [mscorlib]System.ArrayTypeMismatchException {
-                       leave L5
-               }
-
-       L5:
-               ldc.i4.1 
-           ldc.i4.1 
-           newobj instance void string[,]::.ctor(int32, int32)
-               stloc.1
-
-               .try {
-                       ldloc.1
-                       ldc.i4.0
-                       ldc.i4.0
-                       readonly. call instance object&  object[,]::Address(int32, int32)
-                       leave L6
-               } catch [mscorlib]System.ArrayTypeMismatchException {
-                       leave ERROR6
-               }
-
-       L6:
-               ldc.i4.0
-               ret
-       ERROR4:
-               ldc.i4.4
-               ret
-
-       ERROR5:
-               ldc.i4.5
-               ret
-
-       ERROR6:
-               ldc.i4.6
-               ret
-       }
-
-       .field public  static unsigned int64 'ull'
-
-       .field public  static int32 'shift2'
-
-       .method public static int32 test_0_long_shift_regalloc () cil managed
-       {
-               .locals init (unsigned int32 'cilsimp.28', unsigned int64 'cilsimp.27', int32 'cilsimp.26')
-
-               .maxstack 4
-
-               ldc.i8  81985529234382576
-               stsfld  unsigned int64 Tests::ull
-           ldc.i4      60
-               stsfld  int32 Tests::shift2
-
-               ldsfld  unsigned int64 Tests::ull
-               stloc   'cilsimp.27'
-               ldsfld  int32 Tests::shift2
-               stloc   'cilsimp.28'
-               ldloc   'cilsimp.27'
-               ldloc   'cilsimp.28'
-               shr.un
-               ldloc   'cilsimp.27'
-               ldc.i4  64
-               ldloc   'cilsimp.28'
-               sub
-               shl
-               or
-               ldc.i8  1311768467750121216
-               ceq
-               ldc.i4.1
-               xor
-               conv.u4
-               ret
-       }
-
-       // Test calling ldfld directly on a vtype instead of a vtype address
-       .method public static int32 test_5_call_ldfld_vtype () cil managed
-       {
-               .maxstack 16
-               .locals init (
-                       valuetype Tests/TailCallStruct arg
-               )
-               ldloca 0
-               ldc.i4.2
-               stfld int32 Tests/TailCallStruct::a
-               ldloca 0
-               ldc.i4.4
-               stfld int32 Tests/TailCallStruct::b
-               ldloc.0
-               call valuetype Tests/TailCallStruct Tests::tail2 (valuetype Tests/TailCallStruct)
-               ldfld int32 Tests/TailCallStruct::a
-               ret
-       }
-
-       .method public static int32 throw_ret () cil managed
-       {
-               ldstr "FOO"
-               newobj instance void class [mscorlib]System.OverflowException::.ctor(string)
-               throw
-               ldc.i4.4
-               ret
-       }
-
-       .method public static int32 throw2_ret () cil managed
-       {
-               // Disable inlining
-               ldc.i4.5
-               localloc
-               pop
-
-               call int32 Tests::throw_ret ()
-               ret
-       }
-
-       // Test inlining a method which contains just a throw
-       .method public static int32 test_0_inline_throw () cil managed
-       {
-               .maxstack 16
-               .locals init (
-                               int32 v_0
-               )
-
-               .try {
-                       call int32 Tests::throw2_ret ()
-                       stloc.0
-                       leave L0
-               } catch [mscorlib]System.OverflowException {
-                       pop
-                       leave L1
-               }
-
-               L0:
-                       ldc.i4.1
-                       ret
-               L1:
-                       ldc.i4.0
-                       ret                     
-       }
-
-    .method public static int32 test_0_stelem_any_null_opt () cil managed
-    {
-               .maxstack 16
-               .locals init (
-                               object[]        V_0,
-                               int32   V_1)
-
-               ldc.i4.s 10
-               newarr [mscorlib]System.Object
-               stloc.0
-
-               ldc.i4.0
-               stloc.1
-               br L0
-
-       L1:
-               ldloc.0
-               ldloc.1
-               ldnull
-               stelem.any [mscorlib]System.Object
-               ldloc.1
-               ldc.i4.1
-               add
-               stloc.1
-       L0:
-               ldloc.1
-               ldc.i4.s 10
-               blt L1
-
-               ldc.i4.0
-               ret
-       }
-
-    // method line 2
-    .method public static  hidebysig 
-           default int32 manyargs_callee (int32 a, int32 b, int32 c, int32 d, int32 e, int32 f, int32 g, int32 h, int32 i, int32 j, int32 k, int32 l, int32 m, int32 n, int32 o, int32 p)  cil managed 
-    {
-        // Method begins at RVA 0x20f4
-       // Code size 44 (0x2c)
-       .maxstack 8
-       IL_0000:  ldarg.0 
-       IL_0001:  ldarg.1 
-       IL_0002:  add 
-       IL_0003:  ldarg.2 
-       IL_0004:  add 
-       IL_0005:  ldarg.3 
-       IL_0006:  add 
-       IL_0007:  ldarg.s 4
-       IL_0009:  add 
-       IL_000a:  ldarg.s 5
-       IL_000c:  add 
-       IL_000d:  ldarg.s 6
-       IL_000f:  add 
-       IL_0010:  ldarg.s 7
-       IL_0012:  add 
-       IL_0013:  ldarg.s 8
-       IL_0015:  add 
-       IL_0016:  ldarg.s 9
-       IL_0018:  add 
-       IL_0019:  ldarg.s 10
-       IL_001b:  add 
-       IL_001c:  ldarg.s 11
-       IL_001e:  add 
-       IL_001f:  ldarg.s 12
-       IL_0021:  add 
-       IL_0022:  ldarg.s 13
-       IL_0024:  add 
-       IL_0025:  ldarg.s 14
-       IL_0027:  add 
-       IL_0028:  ldarg.s 15
-       IL_002a:  add 
-       IL_002b:  ret 
-    } // end of method main::callee
-
-    // method line 3
-    .method public static  hidebysig 
-           default int32 manyargs_tail_caller (int32 a, int32 b, int32 c, int32 d, int32 e, int32 f, int32 g, int32 h, int32 i, int32 j, int32 k, int32 l, int32 m, int32 n, int32 o, int32 p)  cil managed 
-    {
-        // Method begins at RVA 0x2124
-       // Code size 34 (0x22)
-       .maxstack 17
-       IL_0000:  ldarg.0 
-                         ldc.i4.1
-                         add
-       IL_0001:  ldarg.1 
-       IL_0002:  ldarg.2 
-       IL_0003:  ldarg.3 
-       IL_0004:  ldarg.s 4
-       IL_0006:  ldarg.s 5
-       IL_0008:  ldarg.s 6
-       IL_000a:  ldarg.s 7
-       IL_000c:  ldarg.s 8
-       IL_000e:  ldarg.s 9
-       IL_0010:  ldarg.s 10
-       IL_0012:  ldarg.s 11
-       IL_0014:  ldarg.s 12
-       IL_0016:  ldarg.s 13
-       IL_0018:  ldarg.s 14
-                         ldc.i4.1
-                         add
-       IL_001a:  ldarg.s 15
-                         ldc.i4.1
-                         add
-                 tail.
-       IL_001c:  call int32 class Tests::manyargs_callee(int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32)
-       IL_0021:  ret 
-    } // end of method main::caller
-
-    // method line 4
-    .method public static  hidebysig 
-           default int32 test_139_many_args_tail_call ()  cil managed
-    {
-               // Some platforms might not be able to AOT tail calls
-               .custom instance void class [TestDriver]CategoryAttribute::'.ctor'(string) =  (01 00 08 21 46 55 4C 4C 41 4F 54 00 00 ) // ...!FULLAOT..
-
-        // Method begins at RVA 0x2154
-       // Code size 43 (0x2b)
-       .maxstack 17
-       IL_0000:  ldc.i4.1 
-       IL_0001:  ldc.i4.2 
-       IL_0002:  ldc.i4.3 
-       IL_0003:  ldc.i4.4 
-       IL_0004:  ldc.i4.5 
-       IL_0005:  ldc.i4.6 
-       IL_0006:  ldc.i4.7 
-       IL_0007:  ldc.i4.8 
-       IL_0008:  ldc.i4.s 0x09
-       IL_000a:  ldc.i4.s 0x0a
-       IL_000c:  ldc.i4.s 0x0b
-       IL_000e:  ldc.i4.s 0x0c
-       IL_0010:  ldc.i4.s 0x0d
-       IL_0012:  ldc.i4.s 0x0e
-       IL_0014:  ldc.i4.s 0x0f
-       IL_0016:  ldc.i4.s 0x10
-       IL_0018:  call int32 class Tests::manyargs_tail_caller(int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32, int32)
-       IL_0028:  ret 
-    } // end of method main::Main
-
-       .class nested private auto ansi beforefieldinit R1
-          extends [mscorlib]System.MarshalByRefObject
-       {
-               .field  public  int32 test_field
-
-       .method public hidebysig  specialname  rtspecialname
-                       instance default void '.ctor' ()  cil managed
-       {
-                       ret
-               }
-       }
-
-       .method public static hidebysig
-                       default int32 return_0 () cil managed
-       {
-               ldc.i4.0
-               ret
-       }
-
-       .method public static hidebysig
-                       default int32 test_1_volatile_marshalbyref_bug_432673 () cil managed
-       {
-               .locals init (
-                       class Tests/R1 v_0
-               )
-
-               newobj instance void class Tests/R1::.ctor ()
-               stloc.0
-               ldloc.0
-               ldc.i4.0
-               volatile.
-               stfld int32 Tests/R1::test_field
-               call int32 class Tests::return_0 ()
-               ldc.i4.1
-               add
-               ret
-       }
-
-       .method public static default int32 return_2 () cil managed
-       {
-               // Prevent inlining
-               ldc.i4.s 16
-        localloc
-               pop
-               ldc.i4.s 2
-               ret
-       }
-
-       .method public static hidebysig
-                       default int32 test_1_cmov_opt_regress_463357 () cil managed
-       {
-               call int32 class Tests::return_2 ()
-               ldc.i4.0
-               ceq
-               brfalse L1
-               ldc.i4.0
-               ret
-               br L2
-       L1: nop
-       L2: nop
-               ldc.i4.1
-               ret
-       }
-
-   .method public static hidebysig default int32 cmov_opt_regress_474718_inner (int32 A_1)  cil managed 
-   {
-      .maxstack 3
-      .locals init (int32 V_0, bool V_1, bool V_2)
-      
-         ldc.i4.0
-      IL_000b:  stloc.1 
-      IL_000d:  br IL_002f
-
-         ldc.i4.1    
-         stloc.2
-      IL_001e:  ldloc.2 
-      IL_001f:  brfalse IL_0036
-
-      IL_0024:  
-      IL_002a:  br IL_0041
-    
-      IL_002f:  ldloc.1
-      IL_0030:  stloc.2 
-      IL_0031:  br IL_001e
-    
-      IL_0036:  ldc.i4 0
-      IL_003b:  stloc.0 
-      IL_003c:  br IL_0041
-    
-      IL_0041:  ldloc.0 
-      IL_0042:  ret 
-  } 
-
-    .method public static default int32 test_0_cmov_opt_regress_474718 ()  cil managed 
-    {
-        .maxstack 16
-        ldc.i4.1
-        call int32 Tests::cmov_opt_regress_474718_inner (int32)
-        ret
-   }
-
-       .method public static default int32 test_5_createarr_newobj () cil managed
-       {
-               .maxstack 16
-
-               ldc.i4 5
-               newobj void char[]::.ctor(int32)
-               ldlen
-               ret
-       }
-
-       .method public static default int32 test_0_initblk_3_regress_481458 () cil managed
-       {
-               .maxstack 16
-               .locals init (native int)
-
-               ldc.i4.s 10
-               localloc
-               stloc.0
-
-               // Set the first value to 3
-               ldloc.0
-               ldc.i4.0
-               add             //addr
-               ldc.i4.3        //value
-               stind.i1
-
-               // Zero out the first 3 values
-               ldloc.0         //addr
-               ldc.i4.0        //value
-               ldc.i4.s 3      //size
-               initblk
-
-               // Load the first value
-               ldloc.0
-               ldc.i4.0
-               add     
-               ldind.u1
-               conv.i4
-               ret
-       }
-
-       .method public static float32 GetFloat32() cil managed noinlining
-       {
-               .maxstack  8
-               ldc.r8     0.19975845134874831
-               ret
-       }
-
-/*        Disabled until they can be fixed to run on amd64
-       .method public static default int32 test_0_implicit_float_to_double_conversion () cil managed
-       {
-               .maxstack 16
-
-               call float32 Tests::GetFloat32()
-               ldc.r8     0.19975845134874831
-               beq OK
-
-               ldc.i4.1
-               ret
-OK:
-               ldc.i4.0
-               ret
-       }
-*/
-
-       .method public static default int32 test_0_long_to_r8_un_overflow () cil managed
-       {
-               .maxstack 16
-               ldc.i8     0x00FFFFFFFFFFFFFF
-               conv.r.un
-               conv.i8
-               ldc.i8 0x100000000000000
-               beq OK_1
-
-               ldc.i4.1
-               ret
-OK_1:
-               ldc.i8     0x00FFFFFFFFFFFFFF
-               conv.r.un
-               conv.r8
-               conv.i8
-               ldc.i8 0x100000000000000
-               beq OK_2
-
-               ldc.i4.2
-               ret
-OK_2:
-               ldc.i4.0
-               ret
-       }
-
-       .field public static int32 shift1
-
-       .method public static int32 regress_497271_helper (int32 i) cil managed
-       {
-               ldarg.0
-               ret
-       }
-
-       .method public static int32 test_0_regalloc_regress_497271 () cil managed
-       {
-               .locals init (int32 var)
-
-               ldc.i4  4
-               stsfld  int32 Tests::shift1
-               ldsfld  int32 Tests::shift1
-               stloc   var
-               ldc.i4  4660
-               ldloc   var
-               shr.un
-               ldc.i4  4660
-               ldc.i4  32
-               ldloc   var
-               sub
-               shl
-               or
-               ldc.i4  1073742115
-               beq     ?L10
-?L9:
-               ldc.i4  1
-               call    int32 Tests::regress_497271_helper (int32)
-               ret
-?L10:
-               ldc.i4  0
-               call    int32 Tests::regress_497271_helper (int32)
-               ret
-       }
-
-   .field  private static  int32 Value
-
-  .method public static hidebysig  specialname 
-          default int32 regress_513931_inner ()  cil managed 
-    {                                                                 
-        // Method begins at RVA 0x225c                                
-        // Code size 52 (0x34)                                        
-        .maxstack 2                                                   
-        .locals init (                                                
-                int32   V_0,                                          
-                int32   V_1,                                          
-                bool    V_2)
-                       
-                               ldc.i4 999
-                               stsfld int32 Tests::Value
-
-        IL_0000:  nop                                                 
-        IL_0001:  ldsfld int32 Tests::Value      
-        IL_0006:  stloc.0                                             
-        IL_0007:  ldloc.0                                             
-        IL_0008:  ldc.i4.0                                            
-        IL_0009:  cgt                                                 
-        IL_000b:  ldc.i4.0                                            
-        IL_000c:  ceq                                                 
-        IL_000e:  stloc.2                                             
-        IL_000f:  ldloc.2                                             
-        IL_0010:  brtrue.s IL_0027                                    
-
-        IL_0012:  nop 
-        IL_0013:  ldloc.0 
-        IL_0014:  ldc.i4.s 0x7b
-        IL_0016:  ceq          
-        IL_0018:  ldc.i4.0     
-        IL_0019:  ceq          
-        IL_001b:  stloc.2      
-        IL_001c:  ldloc.2      
-        IL_001d:  brtrue.s IL_0023
-
-        IL_001f:  ldc.i4.m1 
-        IL_0020:  stloc.1   
-        IL_0021:  br.s IL_0032
-
-        IL_0023:  ldc.i4.1 
-        IL_0024:  stloc.1  
-        IL_0025:  br.s IL_0032
-
-        IL_0027:  
-        IL_002c:  newobj instance void class [mscorlib]System.Exception::'.ctor'()
-        IL_0031:  throw                                                                            
-        IL_0032:  ldloc.1                                                                          
-        IL_0033:  ret                                                                              
-    }
-
-       .method public static hidebysig  specialname 
-         default int32 test_0_regress_513931 ()  cil managed 
-       {
-               call int32 Tests::regress_513931_inner ()
-               pop
-               ldc.i4.0
-               ret
-       }
-
-       .method public static default int32 test_0_newarr_i8 () cil managed
-       {
-               ldc.i4 1000
-               conv.i8
-               newarr [mscorlib]System.Boolean
-               pop
-               ldc.i4 0
-               ret
-       }
-
-       .method public static specialname 
-              default int32 return_1_noinline ()  cil managed noinlining 
-       {
-               .maxstack 0
-
-               ldc.i4.1
-               ret 
-       }
-
-       // Only happens with -O=-deadce,cmov
-       .method public static default int32 test_0_cmov_unused_582322 () cil managed
-       {
-        .maxstack 2                                                   
-        .locals init (                                                
-                               int32 V_0
-               )                               
-               call int32 Tests::return_1_noinline ()
-               ldc.i4.1
-               bne.un L0
-               ldloc.s 0
-               pop
-       L0:
-               ldc.i4.0
-               ret
-       }
-
-    .method public static  hidebysig 
-           default int32 test_0_regress_586664 ()  cil managed 
-    {                                        
-        // Method begins at RVA 0x20f4       
-        // Code size 76 (0x4c)               
-        .maxstack 6                          
-        .locals init (                       
-                float64 V_0,                 
-                float64[]       V_1)         
-        IL_0000:  ldc.r8 1.                  
-        IL_0009:  ldc.r8 2.                  
-        IL_0012:  ldc.r8 1.                  
-        IL_001b:  call float64 class [mscorlib]System.Math::Pow(float64, float64)
-        IL_0020:  div                                                            
-        IL_0021:  stloc.0                                                        
-        IL_0022:  ldc.i4.2                                                       
-        IL_0023:  newarr [mscorlib]System.Double                                 
-        IL_0028:  dup                                                            
-        IL_0029:  ldc.i4.0                                                       
-        IL_002a:  ldloc.0                                                        
-        IL_002b:  neg                                                            
-        IL_002c:  stelem.r8                                                      
-        IL_002d:  dup                                                            
-        IL_002e:  ldc.i4.1                                                       
-        IL_002f:  ldloc.0
-        IL_0030:  neg
-        IL_0031:  stelem.r8
-        IL_0032:  stloc.1
-        IL_0033:  ldloc.1
-        IL_0034:  ldc.i4.0
-        IL_0035:  ldelem.r8
-        IL_0036:  ldc.r8 -0.5
-        IL_003f:  bne.un IL_004a
-
-        IL_0044:  ldc.i4.0
-        IL_0045:  br IL_004b
-
-        IL_004a:  ldc.i4.1
-        IL_004b:  ret
-    }
-
-       .method public static int32 test_2_leave_multiple_blocks_from_end ()
-       {
-               .locals init (int32 V_0)
-
-               .try {
-                       .try {
-                               nop
-                               nop
-                               leave END
-                       } finally {
-                               ldloc.0
-                               ldc.i4.1
-                               add
-                               stloc.0
-                               endfinally
-                       }
-                       nop
-                       leave END
-               } finally {
-                       ldloc.0
-                       ldc.i4.1
-                       add
-                       stloc.0
-                       endfinally
-               }
-END:
-               ldloc.0
-               ret
-       }
-
-       .method public static int32 test_3_leave_multiple_blocks_from_hole ()
-       {
-               .locals init (int32 V_0)
-
-               .try {
-                       .try {
-                               ldloc.0
-                               brtrue REST
-                               leave BEFORE_END
-REST:
-                               nop
-                               nop
-                               leave END
-                       } finally {
-                               ldloc.0
-                               ldc.i4.1
-                               add
-                               stloc.0
-                               endfinally
-                       }
-                       nop
-                       leave END
-               } finally {
-                       ldloc.0
-                       ldc.i4.1
-                       add
-                       stloc.0
-                       endfinally
-               }
-BEFORE_END:
-               ldloc.0
-               ldc.i4.1
-               add
-               stloc.0
-END:
-               ldloc.0
-               ret
-       }
-
-       .class nested private auto ansi sealed beforefieldinit Pair`2<TKey,TValue>
-                  extends [mscorlib]System.ValueType
-       {
-               .field  public  !0 key
-       .field  public  !1 'value'
-       }
-
-    .method private static hidebysig 
-           default bool ContentEquals<TKey,TValue> (valuetype Tests/Pair`2<!!TKey, !!TValue> v)  cil managed 
-    {
-       .maxstack 8
-       IL_0000:  ldarga.s 0 
-       IL_0006:  ldnull 
-                         constrained. valuetype Tests/Pair`2<!!0,!!1>
-       IL_0007:  callvirt instance bool class [mscorlib]System.Object::Equals(object)
-                         ret
-    }
-
-    .method public static hidebysig default int32 test_0_constrained_gshared_595863 () cil managed
-    {
-               .locals init (
-               valuetype Tests/Pair`2<string, string>  V_0,
-               valuetype Tests/Pair`2<string, string>  V_1)
-       IL_0000:  ldloca.s 0
-       IL_0002:  initobj valuetype Tests/Pair`2<string,string>
-       IL_0008:  ldloc.0 
-       IL_0009:  stloc.1 
-       IL_000a:  ldloca.s 1
-       IL_000c:  ldstr "A"
-       IL_0011:  stfld !0 valuetype Tests/Pair`2<string,string>::key
-       IL_0016:  ldloca.s 1
-       IL_0018:  ldstr "B"
-       IL_001d:  stfld !1 valuetype Tests/Pair`2<string,string>::'value'
-       IL_0022:  ldloc.1 
-       IL_0023:  stloc.0 
-       IL_0024:  ldloc.0 
-       IL_0025:  call bool class Tests::ContentEquals<string, string> (valuetype Tests/Pair`2<!!0,!!1>)
-                         brfalse SUCCESS
-                         ldc.i4.1
-                         ret
-       SUCCESS:
-                         ldc.i4.0
-                         ret
-    }
-
-       .method public static default int32 test_0_wrap_non_exception_throws () cil managed
-       {
-         .try {
-                   newobj instance void class [mscorlib]System.Object::'.ctor'()
-                       throw
-                 leave IL_0
-         } catch class [mscorlib]System.Runtime.CompilerServices.RuntimeWrappedException {
-                 leave IL_0
-               }
-               IL_0:
-               ldc.i4.0
-               ret
-    }
-
-       .method public static default int32 test_0_typespec_modopt () cil managed {
-               ldtoken class Tests modopt (Tests)
-               pop
-               ldc.i4.0
-               ret
-       }
-
-       .method public hidebysig static int32 SizeOfT<T>() cil managed
-       {
-               .maxstack  8
-    
-               sizeof !!0
-       ret
-       }
-
-       .method public static default int32 test_1_sizeof_gshared () cil managed {
-           call   int32 Tests::SizeOfT<int8>()
-               ldc.i4.1
-               ceq
-               ret
-       }
-
-       .method public static default int32 test_1_sizeof_ref () cil managed {
-           call   int32 Tests::SizeOfT<object>()
-               sizeof [mscorlib]System.IntPtr
-               ceq
-               ret
-       }
-
-  .field static public int32 volatile_int
-
-       .method public static default int32 test_5_volatile_load_store () cil managed {
-               ldsflda int32 class Tests::volatile_int
-               ldc.i4 5
-               volatile.
-               stind.i4
-               ldsflda int32 class Tests::volatile_int
-               volatile.
-               ldind.i4
-               ret
-       }               
-
-    .method public static 
-           default int32 regress_693905_inner (int32 x, int32 acc)  cil managed 
-    {
-        // Method begins at RVA 0x2050
-        // Code size 17 (0x11)
-        .maxstack 5
-        IL_0000:  ldarg.0 
-        IL_0001:  brtrue.s IL_0005
-
-        IL_0003:  ldarg.1 
-        IL_0004:  ret 
-        IL_0005:  ldarg.0 
-        IL_0006:  ldc.i4.1 
-        IL_0007:  sub 
-        IL_0008:  ldarg.1 
-        IL_0009:  ldc.i4.1 
-        IL_000a:  add 
-        IL_000b:  starg.s 1
-        IL_000d:  starg.s 0
-        IL_000f:  br.s IL_0000
-
-    } // end of method Test::f
-
-    .method public static 
-           default int32 test_10_regress_693905 ()  cil managed 
-       {
-               ldc.i4.s 0x0a
-        ldc.i4.0 
-        call int32 class Tests::regress_693905_inner(int32, int32)
-               ret
-       }
-
-       .method public static
-                       default int32 test_0_llvm_regress_171 () cil managed
-       {
-               .locals init (
-                       int32 i
-               )
-
-               call int32 Tests::return_1_noinline ()
-               ldc.i4.1
-               beq L1
-               ldc.i4.1
-               stloc.s 0
-               call int32 Tests::return_1_noinline ()
-               ldc.i4.0
-               beq L1
-               L1:
-               ldloc.s 0
-               ret
-       }
-
-     .field  public static int32 static_a
-
-       .method public static
-                       default int32 test_4_ldfld_stfld_static () cil managed
-       {
-               ldnull
-               ldc.i4 2
-               stfld int32 Tests::static_a
-               ldnull
-               ldfld int32 Tests::static_a
-               ldnull
-               ldflda int32 Tests::static_a
-               ldind.i4
-               add
-               ret
-       }
-
-  .method public static default int32 no_initlocals_inner () cil managed
-  {
-    .locals (
-       int32 V_0,
-       float32 V_1,
-       float64 V_2,
-       valuetype Tests/TailCallStruct V_3)
-       ldloc V_0
-       ret
-  }
-
-  .method public static default int32 test_0_no_initlocals () cil managed
-  {
-       call int32 Tests::no_initlocals_inner()
-       pop
-          ldc.i4.0
-       ret
-  }
-
-  .method public hidebysig static int32  test_5_r4_fadd_mixed() cil managed
-  {
-    // Code size       17 (0x11)
-    .maxstack  2
-    .locals init (float32 V_0,
-             float64 V_1)
-    IL_0000:  ldc.r4     3
-    IL_0005:  stloc.0
-    IL_0006:  ldc.r8     2
-    IL_000b:  stloc.1
-    IL_000c:  ldloc.0
-    IL_000d:  ldloc.1
-    IL_000e:  add
-    IL_000f:  conv.i4
-    IL_0010:  ret
-  }
-
- .method public hidebysig static int32  test_0_fcmp_eq_r4_mixed() cil managed
-  {
-    // Code size       32 (0x20)
-    .maxstack  2
-    .locals init (float32 V_0,
-             float64 V_1)
-    IL_0000:  ldc.r4     1
-    IL_0005:  stloc.0
-    IL_0006:  ldc.r8     1
-    IL_000f:  stloc.1
-    IL_0010:  ldloc.0
-    IL_0012:  ldloc.1
-    IL_0013:  bne.un     IL_001e
-
-    IL_0018:  ldc.i4.0
-    IL_0019:  br         IL_001f
-
-    IL_001e:  ldc.i4.1
-    IL_001f:  ret
-  } // end of method Tests::test_0_fcmp_eq_r4_mixed
-
-  .method public hidebysig static int32  test_0_fceq_r4_mixed() cil managed
-  {
-    // Code size       31 (0x1f)
-    .maxstack  2
-    .locals init (float32 V_0,
-             float64 V_1,
-             bool V_2)
-    IL_0000:  ldc.r4     1
-    IL_0005:  stloc.0
-    IL_0006:  ldc.r8     1
-    IL_000b:  stloc.1
-    IL_000c:  ldloc.0
-    IL_000d:  ldloc.1
-    IL_000e:  ceq
-    IL_0010:  stloc.2
-    IL_0011:  ldloc.2
-    IL_0012:  brfalse    IL_001d
-
-    IL_0017:  ldc.i4.0
-    IL_0018:  br         IL_001e
-
-    IL_001d:  ldc.i4.1
-    IL_001e:  ret
-  } // end of method Tests::test_0_fceq_r4
-
-  .method public static int32 test_0_switch_loop () cil managed
-  {
-       .maxstack 16
-       .locals init (valuetype Tests/TailCallStruct V_0, int32 V_1)
-       ldc.i4.0
-       ldloc.0
-       ldloc.1
-       brtrue L_1
-       L_0:
-       ldc.i4.4
-       switch (L_0)
-       L_1:
-       pop
-       ret
-  }
-}
index 0a74bfb4ff875eca13a397a825b55ff506582437..c216f3b25755f4231091b096a4f506990e4a8d2f 100644 (file)
@@ -324,7 +324,7 @@ bin_writer_emit_ensure_buffer (BinSection *section, int size)
                guint8 *data;
                while (new_size <= new_offset)
                        new_size *= 2;
-               data = g_malloc0 (new_size);
+               data = (guint8 *)g_malloc0 (new_size);
 #ifdef __native_client_codegen__
                /* for Native Client, fill empty space with HLT instruction */
                /* instead of 00.                                           */
@@ -448,7 +448,7 @@ static BinReloc*
 create_reloc (MonoImageWriter *acfg, const char *end, const char* start, int offset)
 {
        BinReloc *reloc;
-       reloc = mono_mempool_alloc0 (acfg->mempool, sizeof (BinReloc));
+       reloc = (BinReloc *)mono_mempool_alloc0 (acfg->mempool, sizeof (BinReloc));
        reloc->val1 = mono_mempool_strdup (acfg->mempool, end);
        if (strcmp (start, ".") == 0) {
                reloc->val2_section = acfg->cur_section;
@@ -899,7 +899,7 @@ get_label_addr (MonoImageWriter *acfg, const char *name)
        BinSection *section;
        gsize value;
 
-       lab = g_hash_table_lookup (acfg->labels, name);
+       lab = (BinLabel *)g_hash_table_lookup (acfg->labels, name);
        if (!lab)
                g_error ("Undefined label: '%s'.\n", name);
        section = lab->section;
@@ -982,7 +982,7 @@ collect_syms (MonoImageWriter *acfg, int *hash, ElfStrTable *strtab, ElfSectHead
                /*g_print ("sym name %s tabled to %d\n", symbol->name, symbols [i].st_name);*/
                section = symbol->section;
                symbols [i].st_shndx = section->parent? section->parent->shidx: section->shidx;
-               lab = g_hash_table_lookup (acfg->labels, symbol->name);
+               lab = (BinLabel *)g_hash_table_lookup (acfg->labels, symbol->name);
                offset = lab->offset;
                if (section->parent) {
                        symbols [i].st_value = section->parent->virt_offset + section->cur_offset + offset;
@@ -991,7 +991,7 @@ collect_syms (MonoImageWriter *acfg, int *hash, ElfStrTable *strtab, ElfSectHead
                }
 
                if (symbol->end_label) {
-                       BinLabel *elab = g_hash_table_lookup (acfg->labels, symbol->end_label);
+                       BinLabel *elab = (BinLabel *)g_hash_table_lookup (acfg->labels, symbol->end_label);
                        g_assert (elab);
                        symbols [i].st_size = elab->offset - lab->offset;
                }
@@ -1063,7 +1063,7 @@ reloc_symbols (MonoImageWriter *acfg, ElfSymbol *symbols, ElfSectHeader *sheader
                if (dynamic && !symbol->is_global)
                        continue;
                section = symbol->section;
-               lab = g_hash_table_lookup (acfg->labels, symbol->name);
+               lab = (BinLabel *)g_hash_table_lookup (acfg->labels, symbol->name);
                offset = lab->offset;
                if (section->parent) {
                        symbols [i].st_value = sheaders [section->parent->shidx].sh_addr + section->cur_offset + offset;
@@ -1615,7 +1615,7 @@ bin_writer_emit_writeout (MonoImageWriter *acfg)
 
        if (!acfg->fp) {
                acfg->out_buf_size = file_offset + sizeof (secth);
-               acfg->out_buf = g_malloc (acfg->out_buf_size);
+               acfg->out_buf = (guint8 *)g_malloc (acfg->out_buf_size);
        }
 
        bin_writer_fwrite (acfg, &header, sizeof (header), 1);
index 59654ee902875458b9aa814f6dc22c194f449b49..b9ed1784a5643c47f95c11fb39edaf9e0699cfe6 100644 (file)
@@ -106,7 +106,7 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
  * JIT code still uses the left and right fields, so it has to stay.
  */
 #define MONO_INST_NEW(cfg,dest,op) do {        \
-               (dest) = mono_mempool_alloc ((cfg)->mempool, sizeof (MonoInst));        \
+               (dest) = (MonoInst *)mono_mempool_alloc ((cfg)->mempool, sizeof (MonoInst));    \
                (dest)->inst_c0 = (dest)->inst_c1 = 0; \
                (dest)->next = (dest)->prev = NULL;    \
                (dest)->opcode = (op);  \
@@ -230,7 +230,7 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 #define NEW_AOTCONST(cfg,dest,patch_type,cons) do {    \
         MONO_INST_NEW ((cfg), (dest), cfg->compile_aot ? OP_AOTCONST : OP_PCONST); \
                (dest)->inst_p0 = (cons);       \
-               (dest)->inst_i1 = (gpointer)(patch_type); \
+               (dest)->inst_i1 = (MonoInst *)(patch_type); \
                (dest)->type = STACK_PTR;       \
                (dest)->dreg = alloc_dreg ((cfg), STACK_PTR);   \
     } while (0)
@@ -311,7 +311,7 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
                type_to_eval_stack_type ((cfg), (vartype), (dest));     \
                (dest)->klass = var->klass;     \
                (dest)->sreg1 = var->dreg;   \
-        (dest)->dreg = alloc_dreg ((cfg), (dest)->type); \
+        (dest)->dreg = alloc_dreg ((cfg), (MonoStackType)(dest)->type); \
         if ((dest)->opcode == OP_VMOVE) (dest)->klass = mono_class_from_mono_type ((vartype)); \
        } while (0)
 
@@ -373,7 +373,7 @@ handle_gsharedvt_ldaddr (MonoCompile *cfg)
         (dest)->type = STACK_MP; \
            (dest)->klass = cfg->ret->klass;    \
            (dest)->sreg1 = cfg->vret_addr->dreg;   \
-        (dest)->dreg = alloc_dreg ((cfg), (dest)->type); \
+        (dest)->dreg = alloc_dreg ((cfg), (MonoStackType)(dest)->type); \
        } while (0)
 
 #define NEW_ARGLOADA(cfg,dest,num) NEW_VARLOADA ((cfg), (dest), arg_array [(num)], param_types [(num)])
@@ -395,7 +395,7 @@ handle_gsharedvt_ldaddr (MonoCompile *cfg)
 #define NEW_LOAD_MEMBASE_TYPE(cfg,dest,ltype,base,offset) do { \
            NEW_LOAD_MEMBASE ((cfg), (dest), mono_type_to_load_membase ((cfg), (ltype)), 0, (base), (offset)); \
            type_to_eval_stack_type ((cfg), (ltype), (dest)); \
-           (dest)->dreg = alloc_dreg ((cfg), (dest)->type); \
+           (dest)->dreg = alloc_dreg ((cfg), (MonoStackType)(dest)->type); \
     } while (0)
 
 #define NEW_STORE_MEMBASE_TYPE(cfg,dest,ltype,base,offset,sr) do { \
@@ -743,7 +743,7 @@ handle_gsharedvt_ldaddr (MonoCompile *cfg)
  * block_num: unique ID assigned at bblock creation
  */
 #define NEW_BBLOCK(cfg,bblock) do { \
-       (bblock) = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock)); \
+       (bblock) = (MonoBasicBlock *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoBasicBlock)); \
        (bblock)->block_num = cfg->num_bblocks++; \
     } while (0)
 
@@ -796,7 +796,7 @@ static int ccount = 0;
             MONO_ADD_INS ((cfg)->cbb, ins); \
             MONO_START_BB ((cfg), falsebb); \
         } else { \
-                   ins->inst_many_bb = mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);  \
+                   ins->inst_many_bb = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);       \
             ins->inst_true_bb = (truebb); \
             ins->inst_false_bb = NULL; \
             mono_link_bblock ((cfg), (cfg)->cbb, (truebb)); \
@@ -817,7 +817,7 @@ static int ccount = 0;
 #define        MONO_EMIT_NEW_BRANCH_BLOCK2(cfg,op,truebb,falsebb) do { \
         MonoInst *ins; \
         MONO_INST_NEW ((cfg), (ins), (op)); \
-               ins->inst_many_bb = mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);      \
+               ins->inst_many_bb = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);   \
         ins->inst_true_bb = (truebb); \
         ins->inst_false_bb = (falsebb); \
         mono_link_bblock ((cfg), (cfg)->cbb, (truebb)); \
index 3cec2ff80da48fc91f4bc0255d73135eec27fbda..ef3e7a4e45a0d0f2973cdcbd960bc3768e0840e1 100644 (file)
@@ -671,14 +671,14 @@ mono_array_new_va (MonoMethod *cm, ...)
 
        va_start (ap, cm);
        
-       lengths = alloca (sizeof (uintptr_t) * pcount);
+       lengths = (uintptr_t *)alloca (sizeof (uintptr_t) * pcount);
        for (i = 0; i < pcount; ++i)
                lengths [i] = d = va_arg(ap, int);
 
        if (rank == pcount) {
                /* Only lengths provided. */
                if (cm->klass->byval_arg.type == MONO_TYPE_ARRAY) {
-                       lower_bounds = alloca (sizeof (intptr_t) * rank);
+                       lower_bounds = (intptr_t *)alloca (sizeof (intptr_t) * rank);
                        memset (lower_bounds, 0, sizeof (intptr_t) * rank);
                } else {
                        lower_bounds = NULL;
@@ -712,7 +712,7 @@ mono_array_new_1 (MonoMethod *cm, guint32 length)
        g_assert (rank == pcount);
 
        if (cm->klass->byval_arg.type == MONO_TYPE_ARRAY) {
-               lower_bounds = alloca (sizeof (intptr_t) * rank);
+               lower_bounds = (intptr_t *)alloca (sizeof (intptr_t) * rank);
                memset (lower_bounds, 0, sizeof (intptr_t) * rank);
        } else {
                lower_bounds = NULL;
@@ -739,7 +739,7 @@ mono_array_new_2 (MonoMethod *cm, guint32 length1, guint32 length2)
        g_assert (rank == pcount);
 
        if (cm->klass->byval_arg.type == MONO_TYPE_ARRAY) {
-               lower_bounds = alloca (sizeof (intptr_t) * rank);
+               lower_bounds = (intptr_t *)alloca (sizeof (intptr_t) * rank);
                memset (lower_bounds, 0, sizeof (intptr_t) * rank);
        } else {
                lower_bounds = NULL;
@@ -767,7 +767,7 @@ mono_array_new_3 (MonoMethod *cm, guint32 length1, guint32 length2, guint32 leng
        g_assert (rank == pcount);
 
        if (cm->klass->byval_arg.type == MONO_TYPE_ARRAY) {
-               lower_bounds = alloca (sizeof (intptr_t) * rank);
+               lower_bounds = (intptr_t *)alloca (sizeof (intptr_t) * rank);
                memset (lower_bounds, 0, sizeof (intptr_t) * rank);
        } else {
                lower_bounds = NULL;
@@ -796,7 +796,7 @@ mono_array_new_4 (MonoMethod *cm, guint32 length1, guint32 length2, guint32 leng
        g_assert (rank == pcount);
 
        if (cm->klass->byval_arg.type == MONO_TYPE_ARRAY) {
-               lower_bounds = alloca (sizeof (intptr_t) * rank);
+               lower_bounds = (intptr_t *)alloca (sizeof (intptr_t) * rank);
                memset (lower_bounds, 0, sizeof (intptr_t) * rank);
        } else {
                lower_bounds = NULL;
@@ -1119,7 +1119,7 @@ mono_object_castclass_unbox (MonoObject *obj, MonoClass *klass)
        MonoClass *oklass;
 
        if (mini_get_debug_options ()->better_cast_details) {
-               jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+               jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
                jit_tls->class_cast_from = NULL;
        }
 
@@ -1150,7 +1150,7 @@ mono_object_castclass_with_cache (MonoObject *obj, MonoClass *klass, gpointer *c
        gpointer cached_vtable, obj_vtable;
 
        if (mini_get_debug_options ()->better_cast_details) {
-               jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+               jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
                jit_tls->class_cast_from = NULL;
        }
 
@@ -1223,11 +1223,16 @@ static MonoMethod*
 constrained_gsharedvt_call_setup (gpointer mp, MonoMethod *cmethod, MonoClass *klass, gpointer *this_arg)
 {
        MonoMethod *m;
-       int vt_slot;
+       int vt_slot, iface_offset;
 
        if (klass->flags & TYPE_ATTRIBUTE_INTERFACE) {
-               mono_set_pending_exception (mono_get_exception_execution_engine ("Not yet supported."));
-               return NULL;
+               MonoObject *this_obj;
+
+               /* Have to use the receiver's type instead of klass, the receiver is a ref type */
+               this_obj = *(MonoObject**)mp;
+               g_assert (this_obj);
+
+               klass = this_obj->vtable->klass;
        }
 
        if (mono_method_signature (cmethod)->pinvoke) {
@@ -1239,8 +1244,6 @@ constrained_gsharedvt_call_setup (gpointer mp, MonoMethod *cmethod, MonoClass *k
                g_assert (klass->vtable);
                vt_slot = mono_method_get_vtable_slot (cmethod);
                if (cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE) {
-                       int iface_offset;
-
                        iface_offset = mono_class_interface_offset (klass, cmethod->klass);
                        g_assert (iface_offset != -1);
                        vt_slot += iface_offset;
@@ -1249,6 +1252,7 @@ constrained_gsharedvt_call_setup (gpointer mp, MonoMethod *cmethod, MonoClass *k
                if (cmethod->is_inflated)
                        m = mono_class_inflate_generic_method (m, mono_method_get_context (cmethod));
        }
+
        if (klass->valuetype && (m->klass == mono_defaults.object_class || m->klass == mono_defaults.enum_class->parent || m->klass == mono_defaults.enum_class))
                /*
                 * Calling a non-vtype method with a vtype receiver, has to box.
@@ -1324,12 +1328,15 @@ mono_fill_method_rgctx (MonoMethodRuntimeGenericContext *mrgctx, int index)
 }
 
 /*
- * mono_resolve_iface_call:
+ * resolve_iface_call:
  *
  *   Return the executable code for the iface method IMT_METHOD called on THIS.
+ * This function is called on a slowpath, so it doesn't need to be fast.
+ * This returns an ftnptr by returning the address part, and the arg in the OUT_ARG
+ * out parameter.
  */
-gpointer
-mono_resolve_iface_call (MonoObject *this, int imt_slot, MonoMethod *imt_method, gpointer *out_rgctx_arg)
+static gpointer
+resolve_iface_call (MonoObject *this_obj, int imt_slot, MonoMethod *imt_method, gpointer *out_arg, gboolean caller_gsharedvt)
 {
        MonoVTable *vt;
        gpointer *imt, *vtable_slot;
@@ -1337,13 +1344,11 @@ mono_resolve_iface_call (MonoObject *this, int imt_slot, MonoMethod *imt_method,
        gpointer addr, compiled_method, aot_addr;
        gboolean need_rgctx_tramp = FALSE, need_unbox_tramp = FALSE;
 
-       // FIXME: Optimize this
-
-       if (!this)
+       if (!this_obj)
                /* The caller will handle it */
                return NULL;
 
-       vt = this->vtable;
+       vt = this_obj->vtable;
        imt = (gpointer*)vt - MONO_IMT_SIZE;
 
        vtable_slot = mini_resolve_imt_method (vt, imt + imt_slot, imt_method, &impl_method, &aot_addr, &need_rgctx_tramp, &variant_iface);
@@ -1352,10 +1357,8 @@ mono_resolve_iface_call (MonoObject *this, int imt_slot, MonoMethod *imt_method,
        addr = compiled_method = mono_compile_method (impl_method);
        g_assert (addr);
 
-       if (imt_method->is_inflated && ((MonoMethodInflated*)imt_method)->context.method_inst) {
+       if (imt_method->is_inflated && ((MonoMethodInflated*)imt_method)->context.method_inst)
                generic_virtual = imt_method;
-               need_rgctx_tramp = TRUE;
-       }
 
        if (generic_virtual || variant_iface) {
                if (vt->klass->valuetype) /*FIXME is this required variant iface?*/
@@ -1365,7 +1368,7 @@ mono_resolve_iface_call (MonoObject *this, int imt_slot, MonoMethod *imt_method,
                        need_unbox_tramp = TRUE;
        }
 
-       addr = mini_add_method_trampoline (impl_method, addr, need_rgctx_tramp, need_unbox_tramp);
+       addr = mini_add_method_wrappers_llvmonly (impl_method, addr, caller_gsharedvt, need_unbox_tramp, out_arg);
 
        if (generic_virtual || variant_iface) {
                MonoMethod *target = generic_virtual ? generic_virtual : variant_iface;
@@ -1375,26 +1378,15 @@ mono_resolve_iface_call (MonoObject *this, int imt_slot, MonoMethod *imt_method,
                                                                                                        target, addr);
        }
 
-       *vtable_slot = addr;
-
-       if (need_rgctx_tramp && out_rgctx_arg) {
-               MonoMethod *m = impl_method;
-               MonoJitInfo *ji;
-
-               /*
-                * The exact compiled method might not be shared so it doesn't have an rgctx arg.
-                */
-               ji = mini_jit_info_table_find (mono_domain_get (), compiled_method, NULL);
-               if (!ji || (ji && ji->has_generic_jit_info)) {
-                       if (m->wrapper_type == MONO_WRAPPER_MANAGED_TO_MANAGED && m->klass->rank && strstr (m->name, "System.Collections.Generic"))
-                               m = mono_aot_get_array_helper_from_wrapper (m);
-                       *out_rgctx_arg = mini_method_get_rgctx (m);
-               }
-       }
-
        return addr;
 }
 
+gpointer
+mono_resolve_iface_call_gsharedvt (MonoObject *this_obj, int imt_slot, MonoMethod *imt_method, gpointer *out_arg)
+{
+       return resolve_iface_call (this_obj, imt_slot, imt_method, out_arg, TRUE);
+}
+
 static gboolean
 is_generic_method_definition (MonoMethod *m)
 {
@@ -1413,39 +1405,26 @@ is_generic_method_definition (MonoMethod *m)
 }
 
 /*
- * mono_resolve_vcall:
+ * resolve_vcall:
  *
- *   Return the executable code for calling this->vtable [slot].
+ *   Return the executable code for calling vt->vtable [slot].
+ * This function is called on a slowpath, so it doesn't need to be fast.
+ * This returns an ftnptr by returning the address part, and the arg in the OUT_ARG
+ * out parameter.
  */
-gpointer
-mono_resolve_vcall (MonoObject *this, int slot, MonoMethod *imt_method)
+static gpointer
+resolve_vcall (MonoVTable *vt, int slot, MonoMethod *imt_method, gpointer *out_arg, gboolean gsharedvt)
 {
-       MonoVTable *vt;
        MonoMethod *m, *generic_virtual = NULL;
-       gpointer *vtable_slot;
-       gpointer addr;
-       gboolean need_rgctx_tramp = FALSE, need_unbox_tramp = FALSE;
-
-       // FIXME: Optimize this
-
-       if (!this)
-               /* The caller will handle it */
-               return NULL;
-
-       vt = this->vtable;
-
-       vtable_slot = &(vt->vtable [slot]);
+       gpointer addr, compiled_method;
+       gboolean need_unbox_tramp = FALSE;
 
        /* Same as in common_call_trampoline () */
 
        /* Avoid loading metadata or creating a generic vtable if possible */
        addr = mono_aot_get_method_from_vt_slot (mono_domain_get (), vt, slot);
-       if (addr && !vt->klass->valuetype) {
-               if (mono_domain_owns_vtable_slot (mono_domain_get (), vtable_slot))
-                       *vtable_slot = addr;
-
+       if (addr && !vt->klass->valuetype)
                return mono_create_ftnptr (mono_domain_get (), addr);
-       }
 
        m = mono_class_get_vtable_entry (vt->klass, slot);
 
@@ -1471,14 +1450,10 @@ mono_resolve_vcall (MonoObject *this, int slot, MonoMethod *imt_method)
 
                m = mono_class_inflate_generic_method_checked (declaring, &context, &error);
                g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
-               /* FIXME: only do this if the method is sharable */
-               // FIXME:
-               //g_assert_not_reached ();
-               //need_rgctx_tramp = TRUE;
        }
 
        if (generic_virtual) {
-               if (vt->klass->valuetype) /*FIXME is this required variant iface?*/
+               if (vt->klass->valuetype)
                        need_unbox_tramp = TRUE;
        } else {
                if (m->klass->valuetype)
@@ -1486,16 +1461,170 @@ mono_resolve_vcall (MonoObject *this, int slot, MonoMethod *imt_method)
        }
 
        // FIXME: This can throw exceptions
-       addr = mono_compile_method (m);
+       addr = compiled_method = mono_compile_method (m);
        g_assert (addr);
 
-       addr = mini_add_method_trampoline (m, addr, need_rgctx_tramp, need_unbox_tramp);
+       addr = mini_add_method_wrappers_llvmonly (m, addr, gsharedvt, need_unbox_tramp, out_arg);
 
-       *vtable_slot = addr;
+       if (!gsharedvt && generic_virtual) {
+               // FIXME: This wastes memory since add_generic_virtual_invocation ignores it in a lot of cases
+               MonoFtnDesc *ftndesc = mini_create_llvmonly_ftndesc (mono_domain_get (), addr, out_arg);
+
+               mono_method_add_generic_virtual_invocation (mono_domain_get (),
+                                                                                                       vt, vt->vtable + slot,
+                                                                                                       generic_virtual, ftndesc);
+       }
 
        return addr;
 }
 
+gpointer
+mono_resolve_vcall_gsharedvt (MonoObject *this_obj, int slot, MonoMethod *imt_method, gpointer *out_arg)
+{
+       g_assert (this_obj);
+
+       return resolve_vcall (this_obj->vtable, slot, imt_method, out_arg, TRUE);
+}
+
+/*
+ * mono_resolve_generic_virtual_call:
+ *
+ *   Resolve a generic virtual call.
+ * This function is called on a slowpath, so it doesn't need to be fast.
+ */
+MonoFtnDesc*
+mono_resolve_generic_virtual_call (MonoVTable *vt, int slot, MonoMethod *generic_virtual)
+{
+       MonoMethod *m;
+       gpointer addr, compiled_method;
+       gboolean need_unbox_tramp = FALSE;
+       MonoError error;
+       MonoGenericContext context = { NULL, NULL };
+       MonoMethod *declaring;
+       gpointer arg = NULL;
+
+       m = mono_class_get_vtable_entry (vt->klass, slot);
+
+       g_assert (is_generic_method_definition (m));
+
+       if (m->is_inflated)
+               declaring = mono_method_get_declaring_generic_method (m);
+       else
+               declaring = m;
+
+       if (m->klass->generic_class)
+               context.class_inst = m->klass->generic_class->context.class_inst;
+       else
+               g_assert (!m->klass->generic_container);
+
+       g_assert (generic_virtual->is_inflated);
+       context.method_inst = ((MonoMethodInflated*)generic_virtual)->context.method_inst;
+
+       m = mono_class_inflate_generic_method_checked (declaring, &context, &error);
+       g_assert (mono_error_ok (&error));
+
+       if (vt->klass->valuetype)
+               need_unbox_tramp = TRUE;
+
+       // FIXME: This can throw exceptions
+       addr = compiled_method = mono_compile_method (m);
+       g_assert (addr);
+
+       addr = mini_add_method_wrappers_llvmonly (m, addr, FALSE, need_unbox_tramp, &arg);
+
+       /*
+        * This wastes memory but the memory usage is bounded since
+        * mono_method_add_generic_virtual_invocation () eventually builds an imt thunk for
+        * this vtable slot so we are not called any more for this instantiation.
+        */
+       MonoFtnDesc *ftndesc = mini_create_llvmonly_ftndesc (mono_domain_get (), addr, arg);
+
+       mono_method_add_generic_virtual_invocation (mono_domain_get (),
+                                                                                               vt, vt->vtable + slot,
+                                                                                               generic_virtual, ftndesc);
+       return ftndesc;
+}
+
+/*
+ * mono_resolve_generic_virtual_call:
+ *
+ *   Resolve a generic virtual/variant iface call on interfaces.
+ * This function is called on a slowpath, so it doesn't need to be fast.
+ */
+MonoFtnDesc*
+mono_resolve_generic_virtual_iface_call (MonoVTable *vt, int imt_slot, MonoMethod *generic_virtual)
+{
+       MonoMethod *m, *variant_iface;
+       gpointer addr, aot_addr, compiled_method;
+       gboolean need_unbox_tramp = FALSE;
+       gboolean need_rgctx_tramp;
+       gpointer arg = NULL;
+       gpointer *imt;
+
+       imt = (gpointer*)vt - MONO_IMT_SIZE;
+
+       mini_resolve_imt_method (vt, imt + imt_slot, generic_virtual, &m, &aot_addr, &need_rgctx_tramp, &variant_iface);
+
+       if (vt->klass->valuetype)
+               need_unbox_tramp = TRUE;
+
+       // FIXME: This can throw exceptions
+       addr = compiled_method = mono_compile_method (m);
+       g_assert (addr);
+
+       addr = mini_add_method_wrappers_llvmonly (m, addr, FALSE, need_unbox_tramp, &arg);
+
+       /*
+        * This wastes memory but the memory usage is bounded since
+        * mono_method_add_generic_virtual_invocation () eventually builds an imt thunk for
+        * this vtable slot so we are not called any more for this instantiation.
+        */
+       MonoFtnDesc *ftndesc = mini_create_llvmonly_ftndesc (mono_domain_get (), addr, arg);
+
+       mono_method_add_generic_virtual_invocation (mono_domain_get (),
+                                                                                               vt, imt + imt_slot,
+                                                                                               variant_iface ? variant_iface : generic_virtual, ftndesc);
+       return ftndesc;
+}
+
+/*
+ * mono_init_vtable_slot:
+ *
+ *   Initialize slot SLOT of VTABLE.
+ * Return the contents of the vtable slot.
+ */
+gpointer
+mono_init_vtable_slot (MonoVTable *vtable, int slot)
+{
+       gpointer arg = NULL;
+       gpointer addr;
+       gpointer *ftnptr;
+
+       addr = resolve_vcall (vtable, slot, NULL, &arg, FALSE);
+       ftnptr = mono_domain_alloc0 (vtable->domain, 2 * sizeof (gpointer));
+       ftnptr [0] = addr;
+       ftnptr [1] = arg;
+       mono_memory_barrier ();
+
+       vtable->vtable [slot] = ftnptr;
+
+       return ftnptr;
+}
+
+static gboolean
+is_callee_gsharedvt_variable (gpointer addr)
+{
+       MonoJitInfo *ji;
+       gboolean callee_gsharedvt;
+
+       ji = mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (addr), NULL);
+       g_assert (ji);
+       callee_gsharedvt = mini_jit_info_is_gsharedvt (ji);
+       if (callee_gsharedvt)
+               callee_gsharedvt = mini_is_gsharedvt_variable_signature (mono_method_signature (jinfo_get_method (ji)));
+       return callee_gsharedvt;
+}
+
 /*
  * mono_init_delegate:
  *
@@ -1508,8 +1637,20 @@ mono_init_delegate (MonoDelegate *del, MonoObject *target, MonoMethod *method)
        MONO_OBJECT_SETREF (del, target, target);
        del->method = method;
        del->method_ptr = mono_compile_method (method);
+
        if (mono_method_needs_static_rgctx_invoke (method, FALSE))
                del->rgctx = mini_method_get_rgctx (method);
+
+       /*
+        * Avoid adding gsharedvt in wrappers since they might not exist if
+        * this delegate is called through a gsharedvt delegate invoke wrapper.
+        * Instead, encode that the method is gsharedvt in del->rgctx,
+        * the CEE_MONO_CALLI_EXTRA_ARG implementation in the JIT depends on this.
+        */
+       if (is_callee_gsharedvt_variable (del->method_ptr)) {
+               g_assert ((((mgreg_t)del->rgctx) & 1) == 0);
+               del->rgctx = (gpointer)(((mgreg_t)del->rgctx) | 1);
+       }
 }
 
 void
@@ -1522,8 +1663,14 @@ mono_init_delegate_virtual (MonoDelegate *del, MonoObject *target, MonoMethod *m
        MONO_OBJECT_SETREF (del, target, target);
        del->method = method;
        del->method_ptr = mono_compile_method (method);
+
        if (mono_method_needs_static_rgctx_invoke (method, FALSE))
                del->rgctx = mini_method_get_rgctx (method);
+
+       if (is_callee_gsharedvt_variable (del->method_ptr)) {
+               g_assert ((((mgreg_t)del->rgctx) & 1) == 0);
+               del->rgctx = (gpointer)(((mgreg_t)del->rgctx) | 1);
+       }
 }
 
 MonoObject*
index 6368b8d5e3761b8856618862cce97a34e8ea8ae9..2edf5759cd482d803cd2e6f2f881994dd100af93 100644 (file)
@@ -195,9 +195,15 @@ gpointer mono_fill_class_rgctx (MonoVTable *vtable, int index);
 
 gpointer mono_fill_method_rgctx (MonoMethodRuntimeGenericContext *mrgctx, int index);
 
-gpointer mono_resolve_iface_call (MonoObject *this, int imt_slot, MonoMethod *imt_method, gpointer *out_rgctx_arg);
+gpointer mono_resolve_iface_call_gsharedvt (MonoObject *this_obj, int imt_slot, MonoMethod *imt_method, gpointer *out_arg);
 
-gpointer mono_resolve_vcall (MonoObject *this, int slot, MonoMethod *imt_method);
+gpointer mono_resolve_vcall_gsharedvt (MonoObject *this_obj, int imt_slot, MonoMethod *imt_method, gpointer *out_arg);
+
+MonoFtnDesc* mono_resolve_generic_virtual_call (MonoVTable *vt, int slot, MonoMethod *imt_method);
+
+MonoFtnDesc* mono_resolve_generic_virtual_iface_call (MonoVTable *vt, int imt_slot, MonoMethod *imt_method);
+
+gpointer mono_init_vtable_slot (MonoVTable *vtable, int slot);
 
 void mono_init_delegate (MonoDelegate *del, MonoObject *target, MonoMethod *method);
 
index cbff1aaa36d171bee67b7cd5fe1bbb9e823cb044..f2dc914e374aaf959ca6cbb97336efe5bb72ab6c 100644 (file)
@@ -47,11 +47,13 @@ typedef enum {
        MONO_AOT_MODE_NONE,
        /* Enables normal AOT mode, equivalent to mono_jit_set_aot_only (false) */
        MONO_AOT_MODE_NORMAL,
-       /* Enables hyrbid AOT mode, JIT can still be used for wrappers */
+       /* Enables hybrid AOT mode, JIT can still be used for wrappers */
        MONO_AOT_MODE_HYBRID,
        /* Enables full AOT mode, JIT is disabled and not allowed,
         * equivalent to mono_jit_set_aot_only (true) */
-       MONO_AOT_MODE_FULL
+       MONO_AOT_MODE_FULL,
+       /* Same as full, but use only llvm compiled code */
+       MONO_AOT_MODE_LLVMONLY
 } MonoAotMode;
 
 MONO_API void
index d778ab5fc73f700a880ab4f65618a59172e62a66..6ee1e0ff7929ef8118525e4280d15b911eb029c9 100644 (file)
@@ -23,7 +23,7 @@ mono_varlist_insert_sorted (MonoCompile *cfg, GList *list, MonoMethodVar *mv, in
                return g_list_prepend (NULL, mv);
 
        for (l = list; l; l = l->next) {
-               MonoMethodVar *v1 = l->data;
+               MonoMethodVar *v1 = (MonoMethodVar *)l->data;
                
                if (sort_type == 2) {
                        if (mv->spill_costs >= v1->spill_costs) {
@@ -108,7 +108,7 @@ mono_linear_scan (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_ma
 
        /* linear scan */
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
 
 #ifdef DEBUG_LSCAN
                printf ("START  %2d %08x %08x\n",  vmv->idx, vmv->range.first_use.abs_pos, 
@@ -199,7 +199,7 @@ mono_linear_scan (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_ma
 
        n_regvars = 0;
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
                
                if (vmv->reg >= 0)  {
                        if ((gains [vmv->reg] > mono_arch_regalloc_cost (cfg, vmv)) && (cfg->varinfo [vmv->idx]->opcode != OP_REGVAR)) {
@@ -227,7 +227,7 @@ mono_linear_scan (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_ma
        /* Compute used regs */
        used_regs = 0;
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
                
                if (vmv->reg >= 0)
                        used_regs |= 1LL << vmv->reg;
@@ -288,7 +288,7 @@ mono_linear_scan2 (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_m
        int n_regs, n_regvars, i;
 
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
                LSCAN_DEBUG (printf ("VAR R%d %08x %08x C%d\n", cfg->varinfo [vmv->idx]->dreg, vmv->range.first_use.abs_pos, 
                                                         vmv->range.last_use.abs_pos, vmv->spill_costs));
        }
@@ -302,7 +302,7 @@ mono_linear_scan2 (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_m
        inactive = NULL;
 
        while (unhandled) {
-               MonoMethodVar *current = unhandled->data;
+               MonoMethodVar *current = (MonoMethodVar *)unhandled->data;
                int pos, reg, max_free_pos;
                gboolean changed;
 
@@ -470,7 +470,7 @@ mono_linear_scan2 (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_m
        /* Do the actual register assignment */
        n_regvars = 0;
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
 
                if (vmv->reg >= 0) {
                        int reg_index = vmv->reg;
@@ -498,7 +498,7 @@ mono_linear_scan2 (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_m
        /* Compute used regs */
        used_regs = 0;
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
                
                if (vmv->reg >= 0)
                        used_regs |= 1LL << vmv->reg;
index 355846bea67270805a5262f2d9518839fc2f33df..ee87dfa082ad509892177d58242c5dc7bf962971 100644 (file)
@@ -44,14 +44,14 @@ optimize_initlocals (MonoCompile *cfg);
 static inline MonoBitSet* 
 mono_bitset_mp_new (MonoMemPool *mp, guint32 size, guint32 max_size)
 {
-       guint8 *mem = mono_mempool_alloc0 (mp, size);
+       guint8 *mem = (guint8 *)mono_mempool_alloc0 (mp, size);
        return mono_bitset_mem_new (mem, max_size, MONO_BITSET_DONT_FREE);
 }
 
 static inline MonoBitSet* 
 mono_bitset_mp_new_noinit (MonoMemPool *mp, guint32 size, guint32 max_size)
 {
-       guint8 *mem = mono_mempool_alloc (mp, size);
+       guint8 *mem = (guint8 *)mono_mempool_alloc (mp, size);
        return mono_bitset_mem_new (mem, max_size, MONO_BITSET_DONT_FREE);
 }
 
@@ -154,7 +154,7 @@ mono_liveness_handle_exception_clauses (MonoCompile *cfg)
         * Determine which clauses are outer try clauses, i.e. they are not contained in any
         * other non-try clause.
         */
-       outer_try = mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * header->num_clauses);
+       outer_try = (gboolean *)mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * header->num_clauses);
        for (i = 0; i < header->num_clauses; ++i)
                outer_try [i] = TRUE;
        /* Iterate over the clauses backward, so outer clauses come first */
@@ -238,7 +238,7 @@ analyze_liveness_bb (MonoCompile *cfg, MonoBasicBlock *bb)
                        continue;
 
                if (ins->opcode == OP_LDADDR) {
-                       MonoInst *var = ins->inst_p0;
+                       MonoInst *var = (MonoInst *)ins->inst_p0;
                        int idx = var->inst_c0;
                        MonoMethodVar *vi = MONO_VARINFO (cfg, idx);
 
@@ -660,7 +660,7 @@ mono_linterval_add_range (MonoCompile *cfg, MonoLiveInterval *interval, int from
                next_range->from = from;
        } else {
                /* Insert it */
-               new_range = mono_mempool_alloc (cfg->mempool, sizeof (MonoLiveRange2));
+               new_range = (MonoLiveRange2 *)mono_mempool_alloc (cfg->mempool, sizeof (MonoLiveRange2));
                new_range->from = from;
                new_range->to = to;
                new_range->next = NULL;
@@ -753,8 +753,8 @@ mono_linterval_split (MonoCompile *cfg, MonoLiveInterval *interval, MonoLiveInte
 
        g_assert (pos > interval->range->from && pos <= interval->last_range->to);
 
-       *i1 = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
-       *i2 = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
+       *i1 = (MonoLiveInterval *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
+       *i2 = (MonoLiveInterval *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
 
        for (r = interval->range; r; r = r->next) {
                if (pos > r->to) {
@@ -889,12 +889,12 @@ mono_analyze_liveness2 (MonoCompile *cfg)
        last_use = g_new0 (gint32, max_vars);
 
        reverse_len = 1024;
-       reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * reverse_len);
+       reverse = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * reverse_len);
 
        for (idx = 0; idx < max_vars; ++idx) {
                MonoMethodVar *vi = MONO_VARINFO (cfg, idx);
 
-               vi->interval = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
+               vi->interval = (MonoLiveInterval *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
        }
 
        /*
@@ -941,7 +941,7 @@ mono_analyze_liveness2 (MonoCompile *cfg)
                for (nins = 0, pos = block_from, ins = bb->code; ins; ins = ins->next, ++nins, ++pos) {
                        if (nins >= reverse_len) {
                                int new_reverse_len = reverse_len * 2;
-                               MonoInst **new_reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * new_reverse_len);
+                               MonoInst **new_reverse = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * new_reverse_len);
                                memcpy (new_reverse, reverse, sizeof (MonoInst*) * reverse_len);
                                reverse = new_reverse;
                                reverse_len = new_reverse_len;
@@ -1025,17 +1025,17 @@ update_liveness_gc (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, gint32
 
                /* Add it to the last callsite */
                g_assert (*callsites);
-               last = (*callsites)->data;
+               last = (GCCallSite *)(*callsites)->data;
                last->param_slots = g_slist_prepend_mempool (cfg->mempool, last->param_slots, ins);
        } else if (ins->flags & MONO_INST_GC_CALLSITE) {
-               GCCallSite *callsite = mono_mempool_alloc0 (cfg->mempool, sizeof (GCCallSite));
+               GCCallSite *callsite = (GCCallSite *)mono_mempool_alloc0 (cfg->mempool, sizeof (GCCallSite));
                int i;
 
                LIVENESS_DEBUG (printf ("\t%x: ", ins->backend.pc_offset); mono_print_ins (ins));
                LIVENESS_DEBUG (printf ("\t\tlive: "));
 
                callsite->bb = bb;
-               callsite->liveness = mono_mempool_alloc0 (cfg->mempool, ALIGN_TO (cfg->num_varinfo, 8) / 8);
+               callsite->liveness = (guint8 *)mono_mempool_alloc0 (cfg->mempool, ALIGN_TO (cfg->num_varinfo, 8) / 8);
                callsite->pc_offset = ins->backend.pc_offset;
                for (i = 0; i < cfg->num_varinfo; ++i) {
                        if (last_use [i] != 0) {
@@ -1091,7 +1091,7 @@ mono_analyze_liveness_gc (MonoCompile *cfg)
        }
 
        reverse_len = 1024;
-       reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * reverse_len);
+       reverse = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * reverse_len);
 
        for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
                MonoInst *ins;
@@ -1133,7 +1133,7 @@ mono_analyze_liveness_gc (MonoCompile *cfg)
                for (nins = 0, pos = block_from, ins = bb->code; ins; ins = ins->next, ++nins, ++pos) {
                        if (nins >= reverse_len) {
                                int new_reverse_len = reverse_len * 2;
-                               MonoInst **new_reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * new_reverse_len);
+                               MonoInst **new_reverse = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * new_reverse_len);
                                memcpy (new_reverse, reverse, sizeof (MonoInst*) * reverse_len);
                                reverse = new_reverse;
                                reverse_len = new_reverse_len;
diff --git a/mono/mini/llvm-jit.cpp b/mono/mini/llvm-jit.cpp
new file mode 100644 (file)
index 0000000..dc39414
--- /dev/null
@@ -0,0 +1,581 @@
+//
+// jit-llvm.cpp: Support code for using LLVM as a JIT backend
+//
+// (C) 2009-2011 Novell, Inc.
+// Copyright 2011-2015 Xamarin, Inc (http://www.xamarin.com)
+//
+
+//
+// Mono's internal header files are not C++ clean, so avoid including them if 
+// possible
+//
+
+#include "config.h"
+
+#include <stdint.h>
+
+#include <llvm/Support/raw_ostream.h>
+#include <llvm/Support/Host.h>
+#include <llvm/PassManager.h>
+#include <llvm/ExecutionEngine/ExecutionEngine.h>
+#include <llvm/ExecutionEngine/JITMemoryManager.h>
+#include <llvm/ExecutionEngine/JITEventListener.h>
+#include <llvm/Target/TargetOptions.h>
+#include <llvm/Target/TargetRegisterInfo.h>
+#include <llvm/IR/Verifier.h>
+#include <llvm/Analysis/Passes.h>
+#include <llvm/Transforms/Scalar.h>
+#include <llvm/Support/CommandLine.h>
+#include <llvm/IR/LegacyPassNameParser.h>
+#include <llvm/Support/PrettyStackTrace.h>
+#include <llvm/CodeGen/Passes.h>
+#include <llvm/CodeGen/MachineFunctionPass.h>
+#include <llvm/CodeGen/MachineFunction.h>
+#include <llvm/CodeGen/MachineFrameInfo.h>
+#include <llvm/IR/Function.h>
+#include <llvm/IR/IRBuilder.h>
+#include <llvm/IR/Module.h>
+
+#include <llvm-c/Core.h>
+#include <llvm-c/ExecutionEngine.h>
+
+#include "mini-llvm-cpp.h"
+
+#ifndef MONO_CROSS_COMPILE
+
+using namespace llvm;
+
+static void (*unhandled_exception)() = default_mono_llvm_unhandled_exception;
+
+void
+mono_llvm_set_unhandled_exception_handler (void)
+{
+       std::set_terminate (unhandled_exception);
+}
+
+class MonoJITMemoryManager : public JITMemoryManager
+{
+private:
+       JITMemoryManager *mm;
+
+public:
+       /* Callbacks installed by mono */
+       AllocCodeMemoryCb *alloc_cb;
+       DlSymCb *dlsym_cb;
+       ExceptionTableCb *exception_cb;
+
+       MonoJITMemoryManager ();
+       ~MonoJITMemoryManager ();
+
+       void setMemoryWritable (void);
+
+       void setMemoryExecutable (void);
+
+       void AllocateGOT();
+
+    unsigned char *getGOTBase() const {
+               return mm->getGOTBase ();
+    }
+
+       void setPoisonMemory(bool) {
+       }
+
+       unsigned char *startFunctionBody(const Function *F, 
+                                                                        uintptr_t &ActualSize);
+  
+       unsigned char *allocateStub(const GlobalValue* F, unsigned StubSize,
+                                                                unsigned Alignment);
+  
+       void endFunctionBody(const Function *F, unsigned char *FunctionStart,
+                                                unsigned char *FunctionEnd);
+
+       unsigned char *allocateSpace(intptr_t Size, unsigned Alignment);
+
+       uint8_t *allocateGlobal(uintptr_t Size, unsigned Alignment);
+  
+       void deallocateMemForFunction(const Function *F);
+  
+       unsigned char*startExceptionTable(const Function* F,
+                                                                         uintptr_t &ActualSize);
+  
+       void endExceptionTable(const Function *F, unsigned char *TableStart,
+                                                  unsigned char *TableEnd, 
+                                                  unsigned char* FrameRegister);
+
+       virtual void deallocateFunctionBody(void*) {
+       }
+
+       virtual void deallocateExceptionTable(void*) {
+       }
+
+       virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID,
+                                                                                StringRef SectionName) {
+               // FIXME:
+               assert(0);
+               return NULL;
+       }
+
+       virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, unsigned SectionID,
+                                                                                StringRef SectionName, bool IsReadOnly) {
+               // FIXME:
+               assert(0);
+               return NULL;
+       }
+
+       virtual bool applyPermissions(std::string*) {
+               // FIXME:
+               assert(0);
+               return false;
+       }
+
+       virtual bool finalizeMemory(std::string *ErrMsg = 0) {
+               // FIXME:
+               assert(0);
+               return false;
+       }
+
+       virtual void* getPointerToNamedFunction(const std::string &Name, bool AbortOnFailure) {
+               void *res;
+               char *err;
+
+               err = dlsym_cb (Name.c_str (), &res);
+               if (err) {
+                       outs () << "Unable to resolve: " << Name << ": " << err << "\n";
+                       assert(0);
+                       return NULL;
+               }
+               return res;
+       }
+};
+
+MonoJITMemoryManager::MonoJITMemoryManager ()
+{
+       mm = JITMemoryManager::CreateDefaultMemManager ();
+}
+
+MonoJITMemoryManager::~MonoJITMemoryManager ()
+{
+       delete mm;
+}
+
+void
+MonoJITMemoryManager::setMemoryWritable (void)
+{
+}
+
+void
+MonoJITMemoryManager::setMemoryExecutable (void)
+{
+}
+
+void
+MonoJITMemoryManager::AllocateGOT()
+{
+       mm->AllocateGOT ();
+}
+
+unsigned char *
+MonoJITMemoryManager::startFunctionBody(const Function *F, 
+                                       uintptr_t &ActualSize)
+{
+       // FIXME: This leaks memory
+       if (ActualSize == 0)
+               ActualSize = 128;
+       return alloc_cb (wrap (F), ActualSize);
+}
+  
+unsigned char *
+MonoJITMemoryManager::allocateStub(const GlobalValue* F, unsigned StubSize,
+                          unsigned Alignment)
+{
+       return alloc_cb (wrap (F), StubSize);
+}
+  
+void
+MonoJITMemoryManager::endFunctionBody(const Function *F, unsigned char *FunctionStart,
+                                 unsigned char *FunctionEnd)
+{
+}
+
+unsigned char *
+MonoJITMemoryManager::allocateSpace(intptr_t Size, unsigned Alignment)
+{
+       return new unsigned char [Size];
+}
+
+uint8_t *
+MonoJITMemoryManager::allocateGlobal(uintptr_t Size, unsigned Alignment)
+{
+       return new unsigned char [Size];
+}
+
+void
+MonoJITMemoryManager::deallocateMemForFunction(const Function *F)
+{
+}
+  
+unsigned char*
+MonoJITMemoryManager::startExceptionTable(const Function* F,
+                                         uintptr_t &ActualSize)
+{
+       return startFunctionBody(F, ActualSize);
+}
+  
+void
+MonoJITMemoryManager::endExceptionTable(const Function *F, unsigned char *TableStart,
+                                       unsigned char *TableEnd, 
+                                       unsigned char* FrameRegister)
+{
+       exception_cb (FrameRegister);
+}
+
+class MonoJITEventListener : public JITEventListener {
+
+public:
+       FunctionEmittedCb *emitted_cb;
+
+       MonoJITEventListener (FunctionEmittedCb *cb) {
+               emitted_cb = cb;
+       }
+
+       virtual void NotifyFunctionEmitted(const Function &F,
+                                                                          void *Code, size_t Size,
+                                                                          const EmittedFunctionDetails &Details) {
+               emitted_cb (wrap (&F), Code, (char*)Code + Size);
+       }
+};
+
+class MonoEE {
+public:
+       ExecutionEngine *EE;
+       MonoJITMemoryManager *mm;
+       MonoJITEventListener *listener;
+       FunctionPassManager *fpm;
+};
+
+void
+mono_llvm_optimize_method (MonoEERef eeref, LLVMValueRef method)
+{
+       MonoEE *mono_ee = (MonoEE*)eeref;
+
+       /*
+        * The verifier does some checks on the whole module, leading to quadratic behavior.
+        */
+       //verifyFunction (*(unwrap<Function> (method)));
+       mono_ee->fpm->run (*unwrap<Function> (method));
+}
+
+static cl::list<const PassInfo*, bool, PassNameParser>
+PassList(cl::desc("Optimizations available:"));
+
+static void
+force_pass_linking (void)
+{
+       // Make sure the rest is linked in, but never executed
+       if (g_getenv ("FOO") != (char*)-1)
+               return;
+
+       // This is a subset of the passes in LinkAllPasses.h
+       // The utility passes and the interprocedural passes are commented out
+
+      (void) llvm::createAAEvalPass();
+      (void) llvm::createAggressiveDCEPass();
+      (void) llvm::createAliasAnalysisCounterPass();
+      (void) llvm::createAliasDebugger();
+         /*
+      (void) llvm::createArgumentPromotionPass();
+      (void) llvm::createStructRetPromotionPass();
+         */
+      (void) llvm::createBasicAliasAnalysisPass();
+      (void) llvm::createLibCallAliasAnalysisPass(0);
+      (void) llvm::createScalarEvolutionAliasAnalysisPass();
+      //(void) llvm::createBlockPlacementPass();
+      (void) llvm::createBreakCriticalEdgesPass();
+      (void) llvm::createCFGSimplificationPass();
+         /*
+      (void) llvm::createConstantMergePass();
+      (void) llvm::createConstantPropagationPass();
+         */
+         /*
+      (void) llvm::createDeadArgEliminationPass();
+         */
+      (void) llvm::createDeadCodeEliminationPass();
+      (void) llvm::createDeadInstEliminationPass();
+      (void) llvm::createDeadStoreEliminationPass();
+         /*
+      (void) llvm::createDeadTypeEliminationPass();
+      (void) llvm::createDomOnlyPrinterPass();
+      (void) llvm::createDomPrinterPass();
+      (void) llvm::createDomOnlyViewerPass();
+      (void) llvm::createDomViewerPass();
+      (void) llvm::createEdgeProfilerPass();
+      (void) llvm::createOptimalEdgeProfilerPass();
+      (void) llvm::createFunctionInliningPass();
+      (void) llvm::createAlwaysInlinerPass();
+      (void) llvm::createGlobalDCEPass();
+      (void) llvm::createGlobalOptimizerPass();
+      (void) llvm::createGlobalsModRefPass();
+      (void) llvm::createIPConstantPropagationPass();
+      (void) llvm::createIPSCCPPass();
+         */
+      (void) llvm::createIndVarSimplifyPass();
+      (void) llvm::createInstructionCombiningPass();
+         /*
+      (void) llvm::createInternalizePass(false);
+         */
+      (void) llvm::createLCSSAPass();
+      (void) llvm::createLICMPass();
+      (void) llvm::createLazyValueInfoPass();
+      //(void) llvm::createLoopDependenceAnalysisPass();
+         /*
+      (void) llvm::createLoopExtractorPass();
+         */
+      (void) llvm::createLoopSimplifyPass();
+      (void) llvm::createLoopStrengthReducePass();
+      (void) llvm::createLoopUnrollPass();
+      (void) llvm::createLoopUnswitchPass();
+      (void) llvm::createLoopRotatePass();
+      (void) llvm::createLowerInvokePass();
+         /*
+      (void) llvm::createLowerSetJmpPass();
+         */
+      (void) llvm::createLowerSwitchPass();
+      (void) llvm::createNoAAPass();
+         /*
+      (void) llvm::createNoProfileInfoPass();
+      (void) llvm::createProfileEstimatorPass();
+      (void) llvm::createProfileVerifierPass();
+      (void) llvm::createProfileLoaderPass();
+         */
+      (void) llvm::createPromoteMemoryToRegisterPass();
+      (void) llvm::createDemoteRegisterToMemoryPass();
+         /*
+      (void) llvm::createPruneEHPass();
+      (void) llvm::createPostDomOnlyPrinterPass();
+      (void) llvm::createPostDomPrinterPass();
+      (void) llvm::createPostDomOnlyViewerPass();
+      (void) llvm::createPostDomViewerPass();
+         */
+      (void) llvm::createReassociatePass();
+      (void) llvm::createSCCPPass();
+      (void) llvm::createScalarReplAggregatesPass();
+      //(void) llvm::createSimplifyLibCallsPass();
+         /*
+      (void) llvm::createSingleLoopExtractorPass();
+      (void) llvm::createStripSymbolsPass();
+      (void) llvm::createStripNonDebugSymbolsPass();
+      (void) llvm::createStripDeadDebugInfoPass();
+      (void) llvm::createStripDeadPrototypesPass();
+      (void) llvm::createTailCallEliminationPass();
+      (void) llvm::createTailDuplicationPass();
+      (void) llvm::createJumpThreadingPass();
+         */
+         /*
+      (void) llvm::createUnifyFunctionExitNodesPass();
+         */
+      (void) llvm::createInstCountPass();
+      (void) llvm::createCodeGenPreparePass();
+      (void) llvm::createGVNPass();
+      (void) llvm::createMemCpyOptPass();
+      (void) llvm::createLoopDeletionPass();
+         /*
+      (void) llvm::createPostDomTree();
+      (void) llvm::createPostDomFrontier();
+      (void) llvm::createInstructionNamerPass();
+      (void) llvm::createPartialSpecializationPass();
+      (void) llvm::createFunctionAttrsPass();
+      (void) llvm::createMergeFunctionsPass();
+      (void) llvm::createPrintModulePass(0);
+      (void) llvm::createPrintFunctionPass("", 0);
+      (void) llvm::createDbgInfoPrinterPass();
+      (void) llvm::createModuleDebugInfoPrinterPass();
+      (void) llvm::createPartialInliningPass();
+      (void) llvm::createGEPSplitterPass();
+      (void) llvm::createLintPass();
+         */
+      (void) llvm::createSinkingPass();
+}
+
+static gboolean inited;
+
+static void
+init_llvm (void)
+{
+       if (inited)
+               return;
+
+  force_pass_linking ();
+
+#ifdef TARGET_ARM
+  LLVMInitializeARMTarget ();
+  LLVMInitializeARMTargetInfo ();
+  LLVMInitializeARMTargetMC ();
+#elif defined(TARGET_X86) || defined(TARGET_AMD64)
+  LLVMInitializeX86Target ();
+  LLVMInitializeX86TargetInfo ();
+  LLVMInitializeX86TargetMC ();
+#elif defined(TARGET_POWERPC)
+  LLVMInitializePowerPCTarget ();
+  LLVMInitializePowerPCTargetInfo ();
+  LLVMInitializePowerPCTargetMC ();
+#else
+  #error Unsupported mono-llvm target
+#endif
+
+  PassRegistry &Registry = *PassRegistry::getPassRegistry();
+  initializeCore(Registry);
+  initializeScalarOpts(Registry);
+  initializeAnalysis(Registry);
+  initializeIPA(Registry);
+  initializeTransformUtils(Registry);
+  initializeInstCombine(Registry);
+  initializeTarget(Registry);
+
+  llvm::cl::ParseEnvironmentOptions("mono", "MONO_LLVM", "");
+
+  inited = true;
+}
+
+MonoEERef
+mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, FunctionEmittedCb *emitted_cb, ExceptionTableCb *exception_cb, DlSymCb *dlsym_cb, LLVMExecutionEngineRef *ee)
+{
+  std::string Error;
+  MonoEE *mono_ee;
+
+  init_llvm ();
+
+  mono_ee = new MonoEE ();
+
+  MonoJITMemoryManager *mono_mm = new MonoJITMemoryManager ();
+  mono_mm->alloc_cb = alloc_cb;
+  mono_mm->dlsym_cb = dlsym_cb;
+  mono_mm->exception_cb = exception_cb;
+  mono_ee->mm = mono_mm;
+
+  /*
+   * The Default code model doesn't seem to work on amd64,
+   * test_0_fields_with_big_offsets (among others) crashes, because LLVM tries to call
+   * memset using a normal pcrel code which is in 32bit memory, while memset isn't.
+   */
+
+  TargetOptions opts;
+  opts.JITExceptionHandling = 1;
+
+  StringRef cpu_name = sys::getHostCPUName ();
+
+  // EngineBuilder no longer has a copy assignment operator (?)
+  std::unique_ptr<Module> Owner(unwrap(MP));
+  EngineBuilder b (std::move(Owner));
+  ExecutionEngine *EE = b.setJITMemoryManager (mono_mm).setTargetOptions (opts).setAllocateGVsWithCode (true).setMCPU (cpu_name).create ();
+
+  g_assert (EE);
+  mono_ee->EE = EE;
+
+  MonoJITEventListener *listener = new MonoJITEventListener (emitted_cb);
+  EE->RegisterJITEventListener (listener);
+  mono_ee->listener = listener;
+
+  FunctionPassManager *fpm = new FunctionPassManager (unwrap (MP));
+  mono_ee->fpm = fpm;
+
+  fpm->add(new DataLayoutPass(*EE->getDataLayout()));
+
+  if (PassList.size() > 0) {
+         /* Use the passes specified by the env variable */
+         /* Only the passes in force_pass_linking () can be used */
+         for (unsigned i = 0; i < PassList.size(); ++i) {
+                 const PassInfo *PassInf = PassList[i];
+                 Pass *P = 0;
+
+                 if (PassInf->getNormalCtor())
+                         P = PassInf->getNormalCtor()();
+                 fpm->add (P);
+         }
+  } else {
+         /* Use the same passes used by 'opt' by default, without the ipo passes */
+         const char *opts = "-simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -domfrontier -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -iv-users -indvars -loop-deletion -loop-simplify -lcssa -loop-unroll -instcombine -memdep -gvn -memdep -memcpyopt -sccp -instcombine -domtree -memdep -dse -adce -gvn -simplifycfg";
+         char **args;
+         int i;
+
+         args = g_strsplit (opts, " ", 1000);
+         for (i = 0; args [i]; i++)
+                 ;
+         llvm::cl::ParseCommandLineOptions (i, args, "");
+         g_strfreev (args);
+
+         for (unsigned i = 0; i < PassList.size(); ++i) {
+                 const PassInfo *PassInf = PassList[i];
+                 Pass *P = 0;
+
+                 if (PassInf->getNormalCtor())
+                         P = PassInf->getNormalCtor()();
+                 g_assert (P->getPassKind () == llvm::PT_Function || P->getPassKind () == llvm::PT_Loop);
+                 fpm->add (P);
+         }
+
+         /*
+         fpm->add(createInstructionCombiningPass());
+         fpm->add(createReassociatePass());
+         fpm->add(createGVNPass());
+         fpm->add(createCFGSimplificationPass());
+         */
+  }
+
+  *ee = wrap (EE);
+
+  return mono_ee;
+}
+
+void
+mono_llvm_dispose_ee (MonoEERef *eeref)
+{
+       MonoEE *mono_ee = (MonoEE*)eeref;
+
+       delete mono_ee->EE;
+       delete mono_ee->fpm;
+       //delete mono_ee->mm;
+       delete mono_ee->listener;
+       delete mono_ee;
+}
+
+#else /* MONO_CROSS_COMPILE */
+
+void
+mono_llvm_set_unhandled_exception_handler (void)
+{
+}
+
+MonoEERef
+mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, FunctionEmittedCb *emitted_cb, ExceptionTableCb *exception_cb, DlSymCb *dlsym_cb, LLVMExecutionEngineRef *ee)
+{
+       g_assert_not_reached ();
+       return NULL;
+}
+
+void
+mono_llvm_optimize_method (MonoEERef eeref, LLVMValueRef method)
+{
+}
+
+void
+mono_llvm_dispose_ee (MonoEERef *eeref)
+{
+       g_assert_not_reached ();
+}
+
+/* Not linked in */
+void
+LLVMAddGlobalMapping(LLVMExecutionEngineRef EE, LLVMValueRef Global,
+                                        void* Addr)
+{
+       g_assert_not_reached ();
+}
+
+void*
+LLVMGetPointerToGlobal(LLVMExecutionEngineRef EE, LLVMValueRef Global)
+{
+       g_assert_not_reached ();
+       return NULL;
+}
+
+#endif /* !MONO_CROSS_COMPILE */
diff --git a/mono/mini/llvm-runtime.cpp b/mono/mini/llvm-runtime.cpp
new file mode 100644 (file)
index 0000000..c747e02
--- /dev/null
@@ -0,0 +1,21 @@
+#include <config.h>
+#include "llvm-runtime.h"
+
+#include <glib.h>
+
+extern "C" {
+
+void
+mono_llvm_cpp_throw_exception (void)
+{
+#ifdef MONO_LLVM_LOADED
+       g_assert_not_reached ();
+#else
+       gint32 *ex = NULL;
+
+       /* The generated code catches an int32* */
+       throw ex;
+#endif
+}
+
+}
diff --git a/mono/mini/llvm-runtime.h b/mono/mini/llvm-runtime.h
new file mode 100644 (file)
index 0000000..f62cb8b
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * llvm-runtime.h: Runtime support for llvm generated code
+ *
+ * Authors:
+ *   Zoltan Varga (vargaz@gmail.com)
+ *
+ * (C) 2015 Xamarin, Inc.
+ */
+
+#ifndef __MONO_LLVM_RUNTIME_H__
+#define __MONO_LLVM_RUNTIME_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+void
+mono_llvm_cpp_throw_exception (void);
+
+G_END_DECLS
+
+#endif /* __MONO_LLVM_RUNTIME_H__ */
+
+
index 3d4e8029aab6b69e8e9a352adecdffc0e40445ff..aa2a934f556215633115d9cce999a9b6361575d7 100644 (file)
@@ -58,8 +58,8 @@ mono_local_cprop (MonoCompile *cfg)
 restart:
 
        max = cfg->next_vreg;
-       defs = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * (cfg->next_vreg + 1));
-       def_index = mono_mempool_alloc (cfg->mempool, sizeof (guint32) * (cfg->next_vreg + 1));
+       defs = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * (cfg->next_vreg + 1));
+       def_index = (gint32 *)mono_mempool_alloc (cfg->mempool, sizeof (guint32) * (cfg->next_vreg + 1));
 
        for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
                MonoInst *ins;
@@ -107,7 +107,7 @@ restart:
 
                        /* FIXME: Optimize this */
                        if (ins->opcode == OP_LDADDR) {
-                               MonoInst *var = ins->inst_p0;
+                               MonoInst *var = (MonoInst *)ins->inst_p0;
 
                                defs [var->dreg] = NULL;
                                /*
@@ -365,7 +365,7 @@ restart:
 
                                        // We allocated a new vreg, so need to restart
                                        goto restart;
-                               } else if (power2 > 0) {
+                               } else if (power2 > 0 && power2 < 31) {
                                        int r1 = mono_alloc_ireg (cfg);
 
                                        NEW_BIALU_IMM (cfg, tmp1, OP_ISHR_IMM, r1, ins->sreg1, 31);
index 6dc2dbf249b3230b5e3732e03180b9cf742aeb80..4ef344ecdd9b0f1b5e005e5e9a1f6b258744dadb 100644 (file)
@@ -1,5 +1,6 @@
 #include <config.h>
 #include "mini.h"
+
 #ifndef HOST_WIN32
 #ifndef BUILDVER_INCLUDED
 #include "buildver-boehm.h"
 static int
 mono_main_with_options (int argc, char *argv [])
 {
-       const char *env_options = g_getenv ("MONO_ENV_OPTIONS");
-       if (env_options != NULL){
-               GPtrArray *array = g_ptr_array_new ();
-               GString *buffer = g_string_new ("");
-               const char *p;
-               unsigned i;
-               gboolean in_quotes = FALSE;
-               char quote_char = '\0';
-
-               for (p = env_options; *p; p++){
-                       switch (*p){
-                       case ' ': case '\t':
-                               if (!in_quotes) {
-                                       if (buffer->len != 0){
-                                               g_ptr_array_add (array, g_strdup (buffer->str));
-                                               g_string_truncate (buffer, 0);
-                                       }
-                               } else {
-                                       g_string_append_c (buffer, *p);
-                               }
-                               break;
-                       case '\\':
-                               if (p [1]){
-                                       g_string_append_c (buffer, p [1]);
-                                       p++;
-                               }
-                               break;
-                       case '\'':
-                       case '"':
-                               if (in_quotes) {
-                                       if (quote_char == *p)
-                                               in_quotes = FALSE;
-                                       else
-                                               g_string_append_c (buffer, *p);
-                               } else {
-                                       in_quotes = TRUE;
-                                       quote_char = *p;
-                               }
-                               break;
-                       default:
-                               g_string_append_c (buffer, *p);
-                               break;
-                       }
-               }
-               if (in_quotes) {
-                       fprintf (stderr, "Unmatched quotes in value of MONO_ENV_OPTIONS: [%s]\n", env_options);
-                       exit (1);
-               }
-                       
-               if (buffer->len != 0)
-                       g_ptr_array_add (array, g_strdup (buffer->str));
-               g_string_free (buffer, TRUE);
-
-               if (array->len > 0){
-                       int new_argc = array->len + argc;
-                       char **new_argv = g_new (char *, new_argc + 1);
-                       int j;
-
-                       new_argv [0] = argv [0];
-                       
-                       /* First the environment variable settings, to allow the command line options to override */
-                       for (i = 0; i < array->len; i++)
-                               new_argv [i+1] = g_ptr_array_index (array, i);
-                       i++;
-                       for (j = 1; j < argc; j++)
-                               new_argv [i++] = argv [j];
-                       new_argv [i] = NULL;
-
-                       argc = new_argc;
-                       argv = new_argv;
-               }
-               g_ptr_array_free (array, TRUE);
-       }
+       mono_parse_env_options (&argc, &argv);
 
        return mono_main (argc, argv);
 }
index 0c1ad62bac972539e57f29175a3ef2c3d62328e6..96787ddd9999187c300dc4440e3bc3b4bc0edf87 100644 (file)
@@ -50,7 +50,7 @@
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/mono-debug.h>
 #include <mono/metadata/mono-debug-debugger.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/security-manager.h>
 #include <mono/metadata/threads-types.h>
 #include <mono/metadata/security-core-clr.h>
@@ -69,6 +69,8 @@
 #include "jit.h"
 #include "debugger-agent.h"
 #include "seq-points.h"
+#include "aot-compiler.h"
+#include "mini-llvm.h"
 
 #define BRANCH_COST 10
 #define INLINE_LENGTH_LIMIT 20
@@ -144,10 +146,13 @@ MONO_API MonoInst* mono_emit_native_call (MonoCompile *cfg, gconstpointer func,
 
 static int inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, MonoInst **sp,
                                                  guchar *ip, guint real_offset, gboolean inline_always);
+static MonoInst*
+emit_llvmonly_virtual_call (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, int context_used, MonoInst **sp);
 
 /* helper methods signatures */
 static MonoMethodSignature *helper_sig_domain_get;
 static MonoMethodSignature *helper_sig_rgctx_lazy_fetch_trampoline;
+static MonoMethodSignature *helper_sig_llvmonly_imt_thunk;
 
 /*
  * Instruction metadata
@@ -352,6 +357,7 @@ mono_create_helper_signatures (void)
 {
        helper_sig_domain_get = mono_create_icall_signature ("ptr");
        helper_sig_rgctx_lazy_fetch_trampoline = mono_create_icall_signature ("ptr ptr");
+       helper_sig_llvmonly_imt_thunk = mono_create_icall_signature ("ptr ptr ptr");
 }
 
 static MONO_NEVER_INLINE void
@@ -497,7 +503,7 @@ add_widen_op (MonoCompile *cfg, MonoInst *ins, MonoInst **arg1_ref, MonoInst **a
                CHECK_TYPE (ins);       \
                /* Have to insert a widening op */               \
         add_widen_op (cfg, ins, &sp [0], &sp [1]);              \
-        ins->dreg = alloc_dreg ((cfg), (ins)->type); \
+        ins->dreg = alloc_dreg ((cfg), (MonoStackType)(ins)->type); \
         MONO_ADD_INS ((cfg)->cbb, (ins)); \
         *sp++ = mono_decompose_opcode ((cfg), (ins));  \
        } while (0)
@@ -508,7 +514,7 @@ add_widen_op (MonoCompile *cfg, MonoInst *ins, MonoInst **arg1_ref, MonoInst **a
                ins->sreg1 = sp [0]->dreg;      \
                type_from_op (cfg, ins, sp [0], NULL);  \
                CHECK_TYPE (ins);       \
-        (ins)->dreg = alloc_dreg ((cfg), (ins)->type); \
+        (ins)->dreg = alloc_dreg ((cfg), (MonoStackType)(ins)->type); \
         MONO_ADD_INS ((cfg)->cbb, (ins)); \
                *sp++ = mono_decompose_opcode (cfg, ins);       \
        } while (0)
@@ -523,7 +529,7 @@ add_widen_op (MonoCompile *cfg, MonoInst *ins, MonoInst **arg1_ref, MonoInst **a
                CHECK_TYPE (cmp);       \
                add_widen_op (cfg, cmp, &sp [0], &sp [1]);                                              \
                type_from_op (cfg, ins, sp [0], sp [1]);                                                        \
-               ins->inst_many_bb = mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);      \
+               ins->inst_many_bb = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);   \
                GET_BBLOCK (cfg, tblock, target);               \
                link_bblock (cfg, cfg->cbb, tblock);    \
                ins->inst_true_bb = tblock;     \
@@ -580,7 +586,7 @@ link_bblock (MonoCompile *cfg, MonoBasicBlock *from, MonoBasicBlock* to)
                }
        }
        if (!found) {
-               newa = mono_mempool_alloc (cfg->mempool, sizeof (gpointer) * (from->out_count + 1));
+               newa = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof (gpointer) * (from->out_count + 1));
                for (i = 0; i < from->out_count; ++i) {
                        newa [i] = from->out_bb [i];
                }
@@ -597,7 +603,7 @@ link_bblock (MonoCompile *cfg, MonoBasicBlock *from, MonoBasicBlock* to)
                }
        }
        if (!found) {
-               newa = mono_mempool_alloc (cfg->mempool, sizeof (gpointer) * (to->in_count + 1));
+               newa = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof (gpointer) * (to->in_count + 1));
                for (i = 0; i < to->in_count; ++i) {
                        newa [i] = to->in_bb [i];
                }
@@ -683,7 +689,7 @@ mono_create_spvar_for_region (MonoCompile *cfg, int region)
 {
        MonoInst *var;
 
-       var = g_hash_table_lookup (cfg->spvars, GINT_TO_POINTER (region));
+       var = (MonoInst *)g_hash_table_lookup (cfg->spvars, GINT_TO_POINTER (region));
        if (var)
                return;
 
@@ -697,7 +703,7 @@ mono_create_spvar_for_region (MonoCompile *cfg, int region)
 MonoInst *
 mono_find_exvar_for_offset (MonoCompile *cfg, int offset)
 {
-       return g_hash_table_lookup (cfg->exvars, GINT_TO_POINTER (offset));
+       return (MonoInst *)g_hash_table_lookup (cfg->exvars, GINT_TO_POINTER (offset));
 }
 
 static MonoInst*
@@ -705,7 +711,7 @@ mono_create_exvar_for_offset (MonoCompile *cfg, int offset)
 {
        MonoInst *var;
 
-       var = g_hash_table_lookup (cfg->exvars, GINT_TO_POINTER (offset));
+       var = (MonoInst *)g_hash_table_lookup (cfg->exvars, GINT_TO_POINTER (offset));
        if (var)
                return var;
 
@@ -1227,16 +1233,12 @@ mono_get_domainvar (MonoCompile *cfg)
 MonoInst *
 mono_get_got_var (MonoCompile *cfg)
 {
-#ifdef MONO_ARCH_NEED_GOT_VAR
-       if (!cfg->compile_aot)
+       if (!cfg->compile_aot || !cfg->backend->need_got_var)
                return NULL;
        if (!cfg->got_var) {
                cfg->got_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
        }
        return cfg->got_var;
-#else
-       return NULL;
-#endif
 }
 
 static MonoInst *
@@ -1399,7 +1401,7 @@ mono_save_token_info (MonoCompile *cfg, MonoImage *image, guint32 token, gpointe
         * table == 0 means this is a reference made from a wrapper.
         */
        if (cfg->compile_aot && !cfg->generic_context && (mono_metadata_token_table (token) > 0)) {
-               MonoJumpInfoToken *jump_info_token = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoToken));
+               MonoJumpInfoToken *jump_info_token = (MonoJumpInfoToken *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoToken));
                jump_info_token->image = image;
                jump_info_token->token = token;
                g_hash_table_insert (cfg->token_info_hash, key, jump_info_token);
@@ -1449,7 +1451,7 @@ handle_stack_args (MonoCompile *cfg, MonoInst **sp, int count)
                }
                //printf ("\n");
                if (!found) {
-                       bb->out_stack = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * count);
+                       bb->out_stack = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * count);
                        for (i = 0; i < count; ++i) {
                                /* 
                                 * try to reuse temps already allocated for this purpouse, if they occupy the same
@@ -1532,6 +1534,26 @@ handle_stack_args (MonoCompile *cfg, MonoInst **sp, int count)
        }
 }
 
+static MonoInst*
+emit_runtime_constant (MonoCompile *cfg, MonoJumpInfoType patch_type, gpointer data)
+{
+       MonoInst *ins;
+
+       if (cfg->compile_aot) {
+               EMIT_NEW_AOTCONST (cfg, ins, patch_type, data);
+       } else {
+               MonoJumpInfo ji;
+               gpointer target;
+
+               ji.type = patch_type;
+               ji.data.target = data;
+               target = mono_resolve_patch_target (NULL, cfg->domain, NULL, &ji, FALSE);
+
+               EMIT_NEW_PCONST (cfg, ins, target);
+       }
+       return ins;
+}
+
 static void
 mini_emit_interface_bitmap_check (MonoCompile *cfg, int intf_bit_reg, int base_reg, int offset, MonoClass *klass)
 {
@@ -1542,10 +1564,7 @@ mini_emit_interface_bitmap_check (MonoCompile *cfg, int intf_bit_reg, int base_r
        NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, ibitmap_reg, base_reg, offset);
        MONO_ADD_INS (cfg->cbb, ins);
        args [0] = ins;
-       if (cfg->compile_aot)
-               EMIT_NEW_AOTCONST (cfg, args [1], MONO_PATCH_INFO_IID, klass);
-       else
-               EMIT_NEW_ICONST (cfg, args [1], klass->interface_id);
+       args [1] = emit_runtime_constant (cfg, MONO_PATCH_INFO_IID, klass);
        res = mono_emit_jit_icall (cfg, mono_class_interface_match, args);
        MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, intf_bit_reg, res->dreg);
 #else
@@ -1708,12 +1727,9 @@ mini_emit_class_check_inst (MonoCompile *cfg, int klass_reg, MonoClass *klass, M
 {
        if (klass_inst) {
                MONO_EMIT_NEW_BIALU (cfg, OP_COMPARE, -1, klass_reg, klass_inst->dreg);
-       } else if (cfg->compile_aot) {
-               int const_reg = alloc_preg (cfg);
-               MONO_EMIT_NEW_CLASSCONST (cfg, const_reg, klass);
-               MONO_EMIT_NEW_BIALU (cfg, OP_COMPARE, -1, klass_reg, const_reg);
        } else {
-               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, klass_reg, klass);
+               MonoInst *ins = emit_runtime_constant (cfg, MONO_PATCH_INFO_CLASS, klass);
+               MONO_EMIT_NEW_BIALU (cfg, OP_COMPARE, -1, klass_reg, ins->dreg);
        }
        MONO_EMIT_NEW_COND_EXC (cfg, NE_UN, "InvalidCastException");
 }
@@ -1847,8 +1863,7 @@ mini_emit_memset (MonoCompile *cfg, int destreg, int offset, int size, int val,
                return;
        }       
 
-#if !NO_UNALIGNED_ACCESS
-       if (SIZEOF_REGISTER == 8) {
+       if (!cfg->backend->no_unaligned_access && SIZEOF_REGISTER == 8) {
                if (offset % 8) {
                        MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STOREI4_MEMBASE_REG, destreg, offset, val_reg);
                        offset += 4;
@@ -1860,7 +1875,6 @@ mini_emit_memset (MonoCompile *cfg, int destreg, int offset, int size, int val,
                        size -= 8;
                }
        }       
-#endif
 
        while (size >= 4) {
                MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STOREI4_MEMBASE_REG, destreg, offset, val_reg);
@@ -1902,8 +1916,7 @@ mini_emit_memcpy (MonoCompile *cfg, int destreg, int doffset, int srcreg, int so
                }
        }
 
-#if !NO_UNALIGNED_ACCESS
-       if (SIZEOF_REGISTER == 8) {
+       if (!cfg->backend->no_unaligned_access && SIZEOF_REGISTER == 8) {
                while (size >= 8) {
                        cur_reg = alloc_preg (cfg);
                        MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADI8_MEMBASE, cur_reg, srcreg, soffset);
@@ -1913,7 +1926,6 @@ mini_emit_memcpy (MonoCompile *cfg, int destreg, int doffset, int srcreg, int so
                        size -= 8;
                }
        }       
-#endif
 
        while (size >= 4) {
                cur_reg = alloc_preg (cfg);
@@ -1942,7 +1954,7 @@ mini_emit_memcpy (MonoCompile *cfg, int destreg, int doffset, int srcreg, int so
 }
 
 static void
-emit_tls_set (MonoCompile *cfg, int sreg1, int tls_key)
+emit_tls_set (MonoCompile *cfg, int sreg1, MonoTlsKey tls_key)
 {
        MonoInst *ins, *c;
 
@@ -2183,8 +2195,12 @@ target_type_is_incompatible (MonoCompile *cfg, MonoType *target, MonoInst *arg)
 
        if (target->byref) {
                /* FIXME: check that the pointed to types match */
-               if (arg->type == STACK_MP)
-                       return arg->klass != mono_class_from_mono_type (target);
+               if (arg->type == STACK_MP) {
+                       MonoClass *base_class = mono_class_from_mono_type (target);
+                       /* This is needed to handle gshared types + ldaddr */
+                       simple_type = mini_get_underlying_type (&base_class->byval_arg);
+                       return target->type != MONO_TYPE_I && arg->klass != base_class && arg->klass != mono_class_from_mono_type (simple_type);
+               }
                if (arg->type == STACK_PTR)
                        return 0;
                return 1;
@@ -2256,11 +2272,13 @@ target_type_is_incompatible (MonoCompile *cfg, MonoType *target, MonoInst *arg)
                return 0;
        case MONO_TYPE_GENERICINST:
                if (mono_type_generic_inst_is_valuetype (simple_type)) {
+                       MonoClass *target_class;
                        if (arg->type != STACK_VTYPE)
                                return 1;
                        klass = mono_class_from_mono_type (simple_type);
+                       target_class = mono_class_from_mono_type (target);
                        /* The second cases is needed when doing partial sharing */
-                       if (klass != arg->klass && mono_class_from_mono_type (target) != arg->klass)
+                       if (klass != arg->klass && target_class != arg->klass && target_class != mono_class_from_mono_type (mini_get_underlying_type (&arg->klass->byval_arg)))
                                return 1;
                        return 0;
                } else {
@@ -2437,39 +2455,27 @@ emit_imt_argument (MonoCompile *cfg, MonoCallInst *call, MonoMethod *method, Mon
        int method_reg;
 
        if (COMPILE_LLVM (cfg)) {
-               method_reg = alloc_preg (cfg);
-
                if (imt_arg) {
+                       method_reg = alloc_preg (cfg);
                        MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, method_reg, imt_arg->dreg);
-               } else if (cfg->compile_aot) {
-                       MONO_EMIT_NEW_AOTCONST (cfg, method_reg, method, MONO_PATCH_INFO_METHODCONST);
                } else {
-                       MonoInst *ins;
-                       MONO_INST_NEW (cfg, ins, OP_PCONST);
-                       ins->inst_p0 = method;
-                       ins->dreg = method_reg;
-                       MONO_ADD_INS (cfg->cbb, ins);
+                       MonoInst *ins = emit_runtime_constant (cfg, MONO_PATCH_INFO_METHODCONST, method);
+                       method_reg = ins->dreg;
                }
 
 #ifdef ENABLE_LLVM
                call->imt_arg_reg = method_reg;
 #endif
-       mono_call_inst_add_outarg_reg (cfg, call, method_reg, MONO_ARCH_IMT_REG, FALSE);
+               mono_call_inst_add_outarg_reg (cfg, call, method_reg, MONO_ARCH_IMT_REG, FALSE);
                return;
        }
 
-       method_reg = alloc_preg (cfg);
-
        if (imt_arg) {
+               method_reg = alloc_preg (cfg);
                MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, method_reg, imt_arg->dreg);
-       } else if (cfg->compile_aot) {
-               MONO_EMIT_NEW_AOTCONST (cfg, method_reg, method, MONO_PATCH_INFO_METHODCONST);
        } else {
-               MonoInst *ins;
-               MONO_INST_NEW (cfg, ins, OP_PCONST);
-               ins->inst_p0 = method;
-               ins->dreg = method_reg;
-               MONO_ADD_INS (cfg->cbb, ins);
+               MonoInst *ins = emit_runtime_constant (cfg, MONO_PATCH_INFO_METHODCONST, method);
+               method_reg = ins->dreg;
        }
 
        mono_call_inst_add_outarg_reg (cfg, call, method_reg, MONO_ARCH_IMT_REG, FALSE);
@@ -2478,7 +2484,7 @@ emit_imt_argument (MonoCompile *cfg, MonoCallInst *call, MonoMethod *method, Mon
 static MonoJumpInfo *
 mono_patch_info_new (MonoMemPool *mp, int ip, MonoJumpInfoType type, gconstpointer target)
 {
-       MonoJumpInfo *ji = mono_mempool_alloc (mp, sizeof (MonoJumpInfo));
+       MonoJumpInfo *ji = (MonoJumpInfo *)mono_mempool_alloc (mp, sizeof (MonoJumpInfo));
 
        ji->ip.i = ip;
        ji->type = type;
@@ -2554,7 +2560,7 @@ check_method_sharing (MonoCompile *cfg, MonoMethod *cmethod, gboolean *out_pass_
 
 inline static MonoCallInst *
 mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig, 
-                                        MonoInst **args, int calli, int virtual, int tail, int rgctx, int unbox_trampoline)
+                                        MonoInst **args, int calli, int virtual_, int tail, int rgctx, int unbox_trampoline)
 {
        MonoType *sig_ret;
        MonoCallInst *call;
@@ -2570,7 +2576,7 @@ mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig,
 
                MONO_INST_NEW_CALL (cfg, call, OP_TAILCALL);
        } else
-               MONO_INST_NEW_CALL (cfg, call, ret_type_to_call_opcode (cfg, sig->ret, calli, virtual));
+               MONO_INST_NEW_CALL (cfg, call, ret_type_to_call_opcode (cfg, sig->ret, calli, virtual_));
 
        call->args = args;
        call->signature = sig;
@@ -2609,7 +2615,7 @@ mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig,
 
                call->vret_var = loada;
        } else if (!MONO_TYPE_IS_VOID (sig_ret))
-               call->inst.dreg = alloc_dreg (cfg, call->inst.type);
+               call->inst.dreg = alloc_dreg (cfg, (MonoStackType)call->inst.type);
 
 #ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
        if (COMPILE_SOFT_FLOAT (cfg)) {
@@ -2662,16 +2668,12 @@ mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig,
 static void
 set_rgctx_arg (MonoCompile *cfg, MonoCallInst *call, int rgctx_reg, MonoInst *rgctx_arg)
 {
-#ifdef MONO_ARCH_RGCTX_REG
        mono_call_inst_add_outarg_reg (cfg, call, rgctx_reg, MONO_ARCH_RGCTX_REG, FALSE);
        cfg->uses_rgctx_reg = TRUE;
        call->rgctx_reg = TRUE;
 #ifdef ENABLE_LLVM
        call->rgctx_arg_reg = rgctx_reg;
 #endif
-#else
-       NOT_IMPLEMENTED;
-#endif
 }      
 
 inline static MonoInst*
@@ -2751,7 +2753,7 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
 #ifndef DISABLE_REMOTING
        gboolean might_be_remote = FALSE;
 #endif
-       gboolean virtual = this_ins != NULL;
+       gboolean virtual_ = this_ins != NULL;
        gboolean enable_for_aot = TRUE;
        int context_used;
        MonoCallInst *call;
@@ -2762,26 +2764,8 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
        if (!sig)
                sig = mono_method_signature (method);
 
-       if (cfg->llvm_only && (method->klass->flags & TYPE_ATTRIBUTE_INTERFACE)) {
-               MonoInst *icall_args [16];
-               MonoInst *ins;
-
-               // FIXME: Optimize this
-
-               guint32 imt_slot = mono_method_get_imt_slot (method);
-
-               icall_args [0] = this_ins;
-               EMIT_NEW_ICONST (cfg, icall_args [1], imt_slot);
-               if (imt_arg) {
-                       icall_args [2] = imt_arg;
-               } else {
-                       EMIT_NEW_AOTCONST (cfg, ins, MONO_PATCH_INFO_METHODCONST, method);
-                       icall_args [2] = ins;
-               }
-               EMIT_NEW_PCONST (cfg, icall_args [3], NULL);
-
-               call_target = mono_emit_jit_icall (cfg, mono_resolve_iface_call, icall_args);
-       }
+       if (cfg->llvm_only && (method->klass->flags & TYPE_ATTRIBUTE_INTERFACE))
+               g_assert_not_reached ();
 
        if (rgctx_arg) {
                rgctx_reg = mono_alloc_preg (cfg);
@@ -2815,37 +2799,12 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
        }
 #endif
 
-       if (cfg->llvm_only && !call_target && virtual && (method->flags & METHOD_ATTRIBUTE_VIRTUAL)) {
-               // FIXME: Vcall optimizations below
-               MonoInst *icall_args [16];
-               MonoInst *ins;
-
-               if (sig->generic_param_count) {
-                       /*
-                        * Generic virtual call, pass the concrete method as the imt argument.
-                        */
-                       imt_arg = emit_get_rgctx_method (cfg, context_used,
-                                                                                        method, MONO_RGCTX_INFO_METHOD);
-               }
-
-               // FIXME: Optimize this
-
-               int slot = mono_method_get_vtable_index (method);
-
-               icall_args [0] = this_ins;
-               EMIT_NEW_ICONST (cfg, icall_args [1], slot);
-               if (imt_arg) {
-                       icall_args [2] = imt_arg;
-               } else {
-                       EMIT_NEW_PCONST (cfg, ins, NULL);
-                       icall_args [2] = ins;
-               }
-               call_target = mono_emit_jit_icall (cfg, mono_resolve_vcall, icall_args);
-       }
+       if (cfg->llvm_only && !call_target && virtual_ && (method->flags & METHOD_ATTRIBUTE_VIRTUAL))
+               return emit_llvmonly_virtual_call (cfg, method, sig, 0, args);
 
        need_unbox_trampoline = method->klass == mono_defaults.object_class || (method->klass->flags & TYPE_ATTRIBUTE_INTERFACE);
 
-       call = mono_emit_call_args (cfg, sig, args, FALSE, virtual, tail, rgctx_arg ? TRUE : FALSE, need_unbox_trampoline);
+       call = mono_emit_call_args (cfg, sig, args, FALSE, virtual_, tail, rgctx_arg ? TRUE : FALSE, need_unbox_trampoline);
 
 #ifndef DISABLE_REMOTING
        if (might_be_remote)
@@ -2857,7 +2816,7 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
        call->inst.inst_left = this_ins;
        call->tail_call = tail;
 
-       if (virtual) {
+       if (virtual_) {
                int vtable_reg, slot_reg, this_reg;
                int offset;
 
@@ -3017,6 +2976,68 @@ mono_emit_abs_call (MonoCompile *cfg, MonoJumpInfoType patch_type, gconstpointer
        return ins;
 }
 
+static MonoMethodSignature*
+sig_to_rgctx_sig (MonoMethodSignature *sig)
+{
+       // FIXME: memory allocation
+       MonoMethodSignature *res;
+       int i;
+
+       res = (MonoMethodSignature *)g_malloc (MONO_SIZEOF_METHOD_SIGNATURE + (sig->param_count + 1) * sizeof (MonoType*));
+       memcpy (res, sig, MONO_SIZEOF_METHOD_SIGNATURE);
+       res->param_count = sig->param_count + 1;
+       for (i = 0; i < sig->param_count; ++i)
+               res->params [i] = sig->params [i];
+       res->params [sig->param_count] = &mono_defaults.int_class->this_arg;
+       return res;
+}
+
+/* Make an indirect call to FSIG passing an additional argument */
+static MonoInst*
+emit_extra_arg_calli (MonoCompile *cfg, MonoMethodSignature *fsig, MonoInst **orig_args, int arg_reg, MonoInst *call_target)
+{
+       MonoMethodSignature *csig;
+       MonoInst *args_buf [16];
+       MonoInst **args;
+       int i, pindex, tmp_reg;
+
+       /* Make a call with an rgctx/extra arg */
+       if (fsig->param_count + 2 < 16)
+               args = args_buf;
+       else
+               args = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * (fsig->param_count + 2));
+       pindex = 0;
+       if (fsig->hasthis)
+               args [pindex ++] = orig_args [0];
+       for (i = 0; i < fsig->param_count; ++i)
+               args [pindex ++] = orig_args [fsig->hasthis + i];
+       tmp_reg = alloc_preg (cfg);
+       EMIT_NEW_UNALU (cfg, args [pindex], OP_MOVE, tmp_reg, arg_reg);
+       csig = sig_to_rgctx_sig (fsig);
+       return mono_emit_calli (cfg, csig, args, call_target, NULL, NULL);
+}
+
+/* Emit an indirect call to the function descriptor ADDR */
+static MonoInst*
+emit_llvmonly_calli (MonoCompile *cfg, MonoMethodSignature *fsig, MonoInst **args, MonoInst *addr)
+{
+       int addr_reg, arg_reg;
+       MonoInst *call_target;
+
+       g_assert (cfg->llvm_only);
+
+       /*
+        * addr points to a <addr, arg> pair, load both of them, and
+        * make a call to addr, passing arg as an extra arg.
+        */
+       addr_reg = alloc_preg (cfg);
+       EMIT_NEW_LOAD_MEMBASE (cfg, call_target, OP_LOAD_MEMBASE, addr_reg, addr->dreg, 0);
+       arg_reg = alloc_preg (cfg);
+       MONO_EMIT_NEW_LOAD_MEMBASE (cfg, arg_reg, addr->dreg, sizeof (gpointer));
+
+       return emit_extra_arg_calli (cfg, fsig, args, arg_reg, call_target);
+}
+
 static gboolean
 direct_icalls_enabled (MonoCompile *cfg)
 {
@@ -3154,7 +3175,6 @@ emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value)
        MonoInst *dummy_use;
        int nursery_shift_bits;
        size_t nursery_size;
-       gboolean has_card_table_wb = FALSE;
 
        if (!cfg->gen_write_barriers)
                return;
@@ -3163,11 +3183,7 @@ emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value)
 
        mono_gc_get_nursery (&nursery_shift_bits, &nursery_size);
 
-#ifdef MONO_ARCH_HAVE_CARD_TABLE_WBARRIER
-       has_card_table_wb = TRUE;
-#endif
-
-       if (has_card_table_wb && !cfg->compile_aot && card_table && nursery_shift_bits > 0 && !COMPILE_LLVM (cfg)) {
+       if (cfg->backend->have_card_table_wb && !cfg->compile_aot && card_table && nursery_shift_bits > 0 && !COMPILE_LLVM (cfg)) {
                MonoInst *wbarrier;
 
                MONO_INST_NEW (cfg, wbarrier, OP_CARD_TABLE_WBARRIER);
@@ -3176,7 +3192,7 @@ emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value)
                MONO_ADD_INS (cfg->cbb, wbarrier);
        } else if (card_table && !cfg->compile_aot && !mono_gc_card_table_nursery_check ()) {
                int offset_reg = alloc_preg (cfg);
-               int card_reg  = alloc_preg (cfg);
+               int card_reg;
                MonoInst *ins;
 
                MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SHR_UN_IMM, offset_reg, ptr->dreg, card_table_shift_bits);
@@ -3186,14 +3202,8 @@ emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value)
                /*We can't use PADD_IMM since the cardtable might end up in high addresses and amd64 doesn't support
                 * IMM's larger than 32bits.
                 */
-               if (cfg->compile_aot) {
-                       MONO_EMIT_NEW_AOTCONST (cfg, card_reg, NULL, MONO_PATCH_INFO_GC_CARD_TABLE_ADDR);
-               } else {
-                       MONO_INST_NEW (cfg, ins, OP_PCONST);
-                       ins->inst_p0 = card_table;
-                       ins->dreg = card_reg;
-                       MONO_ADD_INS (cfg->cbb, ins);
-               }
+               ins = emit_runtime_constant (cfg, MONO_PATCH_INFO_GC_CARD_TABLE_ADDR, NULL);
+               card_reg = ins->dreg;
 
                MONO_EMIT_NEW_BIALU (cfg, OP_PADD, offset_reg, offset_reg, card_reg);
                MONO_EMIT_NEW_STORE_MEMBASE_IMM (cfg, OP_STOREI1_MEMBASE_IMM, offset_reg, 0, 1);
@@ -3347,12 +3357,9 @@ mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *kla
                        } else if (context_used) {
                                iargs [2] = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_KLASS);
                        }  else {
-                               if (cfg->compile_aot) {
-                                       EMIT_NEW_CLASSCONST (cfg, iargs [2], klass);
-                               } else {
-                                       EMIT_NEW_PCONST (cfg, iargs [2], klass);
+                               iargs [2] = emit_runtime_constant (cfg, MONO_PATCH_INFO_CLASS, klass);
+                               if (!cfg->compile_aot)
                                        mono_class_compute_gc_descriptor (klass);
-                               }
                        }
 
                        if (size_ins)
@@ -3419,6 +3426,8 @@ mini_emit_initobj (MonoCompile *cfg, MonoInst *dest, const guchar *ip, MonoClass
                return;
        }
 
+       klass = mono_class_from_mono_type (mini_get_underlying_type (&klass->byval_arg));
+
        n = mono_class_value_size (klass, &align);
 
        if (n <= sizeof (gpointer) * 8) {
@@ -3492,10 +3501,10 @@ emit_get_rgctx (MonoCompile *cfg, MonoMethod *method, int context_used)
 static MonoJumpInfoRgctxEntry *
 mono_patch_info_rgctx_entry_new (MonoMemPool *mp, MonoMethod *method, gboolean in_mrgctx, MonoJumpInfoType patch_type, gconstpointer patch_data, MonoRgctxInfoType info_type)
 {
-       MonoJumpInfoRgctxEntry *res = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoRgctxEntry));
+       MonoJumpInfoRgctxEntry *res = (MonoJumpInfoRgctxEntry *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoRgctxEntry));
        res->method = method;
        res->in_mrgctx = in_mrgctx;
-       res->data = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfo));
+       res->data = (MonoJumpInfo *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfo));
        res->data->type = patch_type;
        res->data->data.target = patch_data;
        res->info_type = info_type;
@@ -3654,7 +3663,7 @@ emit_get_rgctx_gsharedvt_call (MonoCompile *cfg, int context_used,
        MonoJumpInfoRgctxEntry *entry;
        MonoInst *rgctx;
 
-       call_info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoGSharedVtCall));
+       call_info = (MonoJumpInfoGSharedVtCall *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoGSharedVtCall));
        call_info->sig = sig;
        call_info->method = cmethod;
 
@@ -3677,7 +3686,7 @@ emit_get_rgctx_virt_method (MonoCompile *cfg, int context_used,
        MonoJumpInfoRgctxEntry *entry;
        MonoInst *rgctx;
 
-       info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoVirtMethod));
+       info = (MonoJumpInfoVirtMethod *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoVirtMethod));
        info->klass = klass;
        info->method = virt_method;
 
@@ -3745,7 +3754,7 @@ static int
 get_gsharedvt_info_slot (MonoCompile *cfg, gpointer data, MonoRgctxInfoType rgctx_type)
 {
        MonoGSharedVtMethodInfo *info = cfg->gsharedvt_info;
-       MonoRuntimeGenericContextInfoTemplate *template;
+       MonoRuntimeGenericContextInfoTemplate *template_;
        int i, idx;
 
        g_assert (info);
@@ -3761,7 +3770,7 @@ get_gsharedvt_info_slot (MonoCompile *cfg, gpointer data, MonoRgctxInfoType rgct
                MonoRuntimeGenericContextInfoTemplate *new_entries;
                int new_count_entries = info->count_entries ? info->count_entries * 2 : 16;
 
-               new_entries = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRuntimeGenericContextInfoTemplate) * new_count_entries);
+               new_entries = (MonoRuntimeGenericContextInfoTemplate *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRuntimeGenericContextInfoTemplate) * new_count_entries);
 
                memcpy (new_entries, info->entries, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->count_entries);
                info->entries = new_entries;
@@ -3769,9 +3778,9 @@ get_gsharedvt_info_slot (MonoCompile *cfg, gpointer data, MonoRgctxInfoType rgct
        }
 
        idx = info->num_entries;
-       template = &info->entries [idx];
-       template->info_type = rgctx_type;
-       template->data = data;
+       template_ = &info->entries [idx];
+       template_->info_type = rgctx_type;
+       template_->data = data;
 
        info->num_entries ++;
 
@@ -3811,7 +3820,6 @@ emit_class_init (MonoCompile *cfg, MonoClass *klass)
 {
        MonoInst *vtable_arg;
        int context_used;
-       gboolean use_op_generic_class_init = FALSE;
 
        context_used = mini_class_check_context_used (cfg, klass);
 
@@ -3826,12 +3834,7 @@ emit_class_init (MonoCompile *cfg, MonoClass *klass)
                EMIT_NEW_VTABLECONST (cfg, vtable_arg, vtable);
        }
 
-#ifdef MONO_ARCH_HAVE_OP_GENERIC_CLASS_INIT
-       if (!COMPILE_LLVM (cfg))
-               use_op_generic_class_init = TRUE;
-#endif
-
-       if (use_op_generic_class_init) {
+       if (!COMPILE_LLVM (cfg) && cfg->backend->have_op_generic_class_init) {
                MonoInst *ins;
 
                /*
@@ -3958,14 +3961,11 @@ mini_emit_check_array_type (MonoCompile *cfg, MonoInst *obj, MonoClass *array_cl
 
        if (cfg->opt & MONO_OPT_SHARED) {
                int class_reg = alloc_preg (cfg);
+               MonoInst *ins;
+
                MONO_EMIT_NEW_LOAD_MEMBASE (cfg, class_reg, vtable_reg, MONO_STRUCT_OFFSET (MonoVTable, klass));
-               if (cfg->compile_aot) {
-                       int klass_reg = alloc_preg (cfg);
-                       MONO_EMIT_NEW_CLASSCONST (cfg, klass_reg, array_class);
-                       MONO_EMIT_NEW_BIALU (cfg, OP_COMPARE, -1, class_reg, klass_reg);
-               } else {
-                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, class_reg, array_class);
-               }
+               ins = emit_runtime_constant (cfg, MONO_PATCH_INFO_CLASS, array_class);
+               MONO_EMIT_NEW_BIALU (cfg, OP_COMPARE, -1, class_reg, ins->dreg);
        } else if (context_used) {
                MonoInst *vtable_ins;
 
@@ -4011,10 +4011,13 @@ handle_unbox_nullable (MonoCompile* cfg, MonoInst* val, MonoClass* klass, int co
                   RGCTX. */
                addr = emit_get_rgctx_method (cfg, context_used, method,
                                                                          MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
+               if (cfg->llvm_only && cfg->gsharedvt) {
+                       return emit_llvmonly_calli (cfg, mono_method_signature (method), &val, addr);
+               } else {
+                       rgctx = emit_get_rgctx (cfg, cfg->current_method, context_used);
 
-               rgctx = emit_get_rgctx (cfg, cfg->current_method, context_used);
-
-               return mono_emit_calli (cfg, mono_method_signature (method), &val, addr, NULL, rgctx);
+                       return mono_emit_calli (cfg, mono_method_signature (method), &val, addr, NULL, rgctx);
+               }
        } else {
                gboolean pass_vtable, pass_mrgctx;
                MonoInst *rgctx_arg = NULL;
@@ -4105,10 +4108,10 @@ handle_unbox_gsharedvt (MonoCompile *cfg, MonoClass *klass, MonoInst *obj)
        NEW_BBLOCK (cfg, is_nullable_bb);
        NEW_BBLOCK (cfg, end_bb);
        is_ref = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_CLASS_BOX_TYPE);
-       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 1);
+       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, MONO_GSHAREDVT_BOX_TYPE_REF);
        MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_ref_bb);
 
-       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 2);
+       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, MONO_GSHAREDVT_BOX_TYPE_NULLABLE);
        MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_nullable_bb);
 
        /* This will contain either the address of the unboxed vtype, or an address of the temporary where the ref is stored */
@@ -4139,11 +4142,15 @@ handle_unbox_gsharedvt (MonoCompile *cfg, MonoClass *klass, MonoInst *obj)
                MonoInst *unbox_call;
                MonoMethodSignature *unbox_sig;
 
-               unbox_sig = mono_mempool_alloc0 (cfg->mempool, MONO_SIZEOF_METHOD_SIGNATURE + (1 * sizeof (MonoType *)));
+               unbox_sig = (MonoMethodSignature *)mono_mempool_alloc0 (cfg->mempool, MONO_SIZEOF_METHOD_SIGNATURE + (1 * sizeof (MonoType *)));
                unbox_sig->ret = &klass->byval_arg;
                unbox_sig->param_count = 1;
                unbox_sig->params [0] = &mono_defaults.object_class->byval_arg;
-               unbox_call = mono_emit_calli (cfg, unbox_sig, &obj, addr, NULL, NULL);
+
+               if (cfg->llvm_only)
+                       unbox_call = emit_llvmonly_calli (cfg, unbox_sig, &obj, addr);
+               else
+                       unbox_call = mono_emit_calli (cfg, unbox_sig, &obj, addr, NULL, NULL);
 
                EMIT_NEW_VARLOADA_VREG (cfg, addr, unbox_call->dreg, &klass->byval_arg);
                addr->dreg = addr_reg;
@@ -4171,7 +4178,7 @@ handle_alloc (MonoCompile *cfg, MonoClass *klass, gboolean for_box, int context_
 
        if (context_used) {
                MonoInst *data;
-               int rgctx_info;
+               MonoRgctxInfoType rgctx_info;
                MonoInst *iargs [2];
                gboolean known_instance_size = !mini_is_gsharedvt_klass (klass);
 
@@ -4265,13 +4272,19 @@ handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used)
                MonoMethod* method = mono_class_get_method_from_name (klass, "Box", 1);
 
                if (context_used) {
-                       /* FIXME: What if the class is shared?  We might not
-                          have to get the method address from the RGCTX. */
-                       MonoInst *addr = emit_get_rgctx_method (cfg, context_used, method,
-                                                                                                       MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
-                       MonoInst *rgctx = emit_get_rgctx (cfg, cfg->current_method, context_used);
+                       if (cfg->llvm_only && cfg->gsharedvt) {
+                               MonoInst *addr = emit_get_rgctx_method (cfg, context_used, method,
+                                                                                                               MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
+                               return emit_llvmonly_calli (cfg, mono_method_signature (method), &val, addr);
+                       } else {
+                               /* FIXME: What if the class is shared?  We might not
+                                  have to get the method address from the RGCTX. */
+                               MonoInst *addr = emit_get_rgctx_method (cfg, context_used, method,
+                                                                                                               MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
+                               MonoInst *rgctx = emit_get_rgctx (cfg, cfg->current_method, context_used);
 
-                       return mono_emit_calli (cfg, mono_method_signature (method), &val, addr, NULL, rgctx);
+                               return mono_emit_calli (cfg, mono_method_signature (method), &val, addr, NULL, rgctx);
+                       }
                } else {
                        gboolean pass_vtable, pass_mrgctx;
                        MonoInst *rgctx_arg = NULL;
@@ -4301,10 +4314,10 @@ handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used)
                NEW_BBLOCK (cfg, is_nullable_bb);
                NEW_BBLOCK (cfg, end_bb);
                is_ref = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_CLASS_BOX_TYPE);
-               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 1);
+               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, MONO_GSHAREDVT_BOX_TYPE_REF);
                MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_ref_bb);
 
-               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 2);
+               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, MONO_GSHAREDVT_BOX_TYPE_NULLABLE);
                MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_nullable_bb);
 
                /* Non-ref case */
@@ -4343,11 +4356,15 @@ handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used)
                         * klass is Nullable<T>, need to call Nullable<T>.Box () using a gsharedvt signature, but we cannot
                         * construct that method at JIT time, so have to do things by hand.
                         */
-                       box_sig = mono_mempool_alloc0 (cfg->mempool, MONO_SIZEOF_METHOD_SIGNATURE + (1 * sizeof (MonoType *)));
+                       box_sig = (MonoMethodSignature *)mono_mempool_alloc0 (cfg->mempool, MONO_SIZEOF_METHOD_SIGNATURE + (1 * sizeof (MonoType *)));
                        box_sig->ret = &mono_defaults.object_class->byval_arg;
                        box_sig->param_count = 1;
                        box_sig->params [0] = &klass->byval_arg;
-                       box_call = mono_emit_calli (cfg, box_sig, &val, addr, NULL, NULL);
+
+                       if (cfg->llvm_only)
+                               box_call = emit_llvmonly_calli (cfg, box_sig, &val, addr);
+                       else
+                               box_call = mono_emit_calli (cfg, box_sig, &val, addr, NULL, NULL);
                        EMIT_NEW_UNALU (cfg, res, OP_MOVE, dreg, box_call->dreg);
                        res->type = STACK_OBJ;
                        res->klass = klass;
@@ -4466,12 +4483,8 @@ emit_castclass_with_cache_nonshared (MonoCompile *cfg, MonoInst *obj, MonoClass
        EMIT_NEW_CLASSCONST (cfg, args [1], klass);
 
        /* inline cache*/
-       if (cfg->compile_aot) {
-               idx = get_castclass_cache_idx (cfg);
-               EMIT_NEW_AOTCONST (cfg, args [2], MONO_PATCH_INFO_CASTCLASS_CACHE, GINT_TO_POINTER (idx));
-       } else {
-               EMIT_NEW_PCONST (cfg, args [2], mono_domain_alloc0 (cfg->domain, sizeof (gpointer)));
-       }
+       idx = get_castclass_cache_idx (cfg);
+       args [2] = emit_runtime_constant (cfg, MONO_PATCH_INFO_CASTCLASS_CACHE, GINT_TO_POINTER (idx));
 
        /*The wrapper doesn't inline well so the bloat of inlining doesn't pay off.*/
        return emit_castclass_with_cache (cfg, klass, args);
@@ -4955,13 +4968,13 @@ handle_enum_has_flag (MonoCompile *cfg, MonoClass *klass, MonoInst *enum_this, M
        }
 
        {
-               MonoInst *load, *and, *cmp, *ceq;
+               MonoInst *load, *and_, *cmp, *ceq;
                int enum_reg = is_i4 ? alloc_ireg (cfg) : alloc_lreg (cfg);
                int and_reg = is_i4 ? alloc_ireg (cfg) : alloc_lreg (cfg);
                int dest_reg = alloc_ireg (cfg);
 
                EMIT_NEW_LOAD_MEMBASE (cfg, load, load_opc, enum_reg, enum_this->dreg, 0);
-               EMIT_NEW_BIALU (cfg, and, is_i4 ? OP_IAND : OP_LAND, and_reg, enum_reg, enum_flag->dreg);
+               EMIT_NEW_BIALU (cfg, and_, is_i4 ? OP_IAND : OP_LAND, and_reg, enum_reg, enum_flag->dreg);
                EMIT_NEW_BIALU (cfg, cmp, is_i4 ? OP_ICOMPARE : OP_LCOMPARE, -1, and_reg, enum_flag->dreg);
                EMIT_NEW_UNALU (cfg, ceq, is_i4 ? OP_ICEQ : OP_LCEQ, dest_reg, -1);
 
@@ -4969,7 +4982,7 @@ handle_enum_has_flag (MonoCompile *cfg, MonoClass *klass, MonoInst *enum_this, M
 
                if (!is_i4) {
                        load = mono_decompose_opcode (cfg, load);
-                       and = mono_decompose_opcode (cfg, and);
+                       and_ = mono_decompose_opcode (cfg, and_);
                        cmp = mono_decompose_opcode (cfg, cmp);
                        ceq = mono_decompose_opcode (cfg, ceq);
                }
@@ -4982,7 +4995,7 @@ handle_enum_has_flag (MonoCompile *cfg, MonoClass *klass, MonoInst *enum_this, M
  * Returns NULL and set the cfg exception on error.
  */
 static G_GNUC_UNUSED MonoInst*
-handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, MonoMethod *method, int context_used, gboolean virtual)
+handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, MonoMethod *method, int context_used, gboolean virtual_)
 {
        MonoInst *ptr;
        int dreg;
@@ -4991,7 +5004,7 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        MonoDomain *domain;
        guint8 **code_slot;
 
-       if (virtual && !cfg->llvm_only) {
+       if (virtual_ && !cfg->llvm_only) {
                MonoMethod *invoke = mono_get_delegate_invoke (klass);
                g_assert (invoke);
 
@@ -5014,7 +5027,7 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
                args [0] = obj;
                args [1] = target;
                args [2] = emit_get_rgctx_method (cfg, context_used, method, MONO_RGCTX_INFO_METHOD);
-               mono_emit_jit_icall (cfg, virtual ? mono_init_delegate_virtual : mono_init_delegate, args);
+               mono_emit_jit_icall (cfg, virtual_ ? mono_init_delegate_virtual : mono_init_delegate, args);
 
                return obj;
        }
@@ -5051,17 +5064,14 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
                        mono_domain_lock (domain);
                        if (!domain_jit_info (domain)->method_code_hash)
                                domain_jit_info (domain)->method_code_hash = g_hash_table_new (NULL, NULL);
-                       code_slot = g_hash_table_lookup (domain_jit_info (domain)->method_code_hash, method);
+                       code_slot = (guint8 **)g_hash_table_lookup (domain_jit_info (domain)->method_code_hash, method);
                        if (!code_slot) {
-                               code_slot = mono_domain_alloc0 (domain, sizeof (gpointer));
+                               code_slot = (guint8 **)mono_domain_alloc0 (domain, sizeof (gpointer));
                                g_hash_table_insert (domain_jit_info (domain)->method_code_hash, method, code_slot);
                        }
                        mono_domain_unlock (domain);
 
-                       if (cfg->compile_aot)
-                               EMIT_NEW_AOTCONST (cfg, code_slot_ins, MONO_PATCH_INFO_METHOD_CODE_SLOT, method);
-                       else
-                               EMIT_NEW_PCONST (cfg, code_slot_ins, code_slot);
+                       code_slot_ins = emit_runtime_constant (cfg, MONO_PATCH_INFO_METHOD_CODE_SLOT, method);
                }
                MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, obj->dreg, MONO_STRUCT_OFFSET (MonoDelegate, method_code), code_slot_ins->dreg);                
        }
@@ -5069,13 +5079,13 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        if (cfg->compile_aot) {
                MonoDelegateClassMethodPair *del_tramp;
 
-               del_tramp = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoDelegateClassMethodPair));
+               del_tramp = (MonoDelegateClassMethodPair *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoDelegateClassMethodPair));
                del_tramp->klass = klass;
                del_tramp->method = context_used ? NULL : method;
-               del_tramp->is_virtual = virtual;
+               del_tramp->is_virtual = virtual_;
                EMIT_NEW_AOTCONST (cfg, tramp_ins, MONO_PATCH_INFO_DELEGATE_TRAMPOLINE, del_tramp);
        } else {
-               if (virtual)
+               if (virtual_)
                        trampoline = mono_create_delegate_virtual_trampoline (cfg->domain, klass, context_used ? NULL : method);
                else
                        trampoline = mono_create_delegate_trampoline_info (cfg->domain, klass, context_used ? NULL : method);
@@ -5083,7 +5093,7 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        }
 
        /* Set invoke_impl field */
-       if (virtual) {
+       if (virtual_) {
                MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, obj->dreg, MONO_STRUCT_OFFSET (MonoDelegate, invoke_impl), tramp_ins->dreg);
        } else {
                dreg = alloc_preg (cfg);
@@ -5096,7 +5106,7 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        }
 
        dreg = alloc_preg (cfg);
-       MONO_EMIT_NEW_ICONST (cfg, dreg, virtual ? 1 : 0);
+       MONO_EMIT_NEW_ICONST (cfg, dreg, virtual_ ? 1 : 0);
        MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STOREI1_MEMBASE_REG, obj->dreg, MONO_STRUCT_OFFSET (MonoDelegate, method_is_virtual), dreg);
 
        /* All the checks which are in mono_delegate_ctor () are done by the delegate trampoline */
@@ -5115,6 +5125,7 @@ handle_array_new (MonoCompile *cfg, int rank, MonoInst **sp, unsigned char *ip)
        cfg->flags |= MONO_CFG_HAS_VARARGS;
 
        /* mono_array_new_va () needs a vararg calling convention */
+       cfg->exception_message = g_strdup ("array-new");
        cfg->disable_llvm = TRUE;
 
        /* FIXME: This uses info->sig, but it should use the signature of the wrapper */
@@ -5169,9 +5180,12 @@ handle_constrained_gsharedvt_call (MonoCompile *cfg, MonoMethod *cmethod, MonoMe
                        args [4] = ins;
 
                        if (mini_is_gsharedvt_type (fsig->params [0])) {
-                               int addr_reg;
+                               int addr_reg, deref_arg_reg;
 
-                               args [3] = emit_get_gsharedvt_info_klass (cfg, mono_class_from_mono_type (fsig->params [0]), MONO_RGCTX_INFO_CLASS_BOX_TYPE);
+                               ins = emit_get_gsharedvt_info_klass (cfg, mono_class_from_mono_type (fsig->params [0]), MONO_RGCTX_INFO_CLASS_BOX_TYPE);
+                               deref_arg_reg = alloc_preg (cfg);
+                               /* deref_arg = BOX_TYPE != MONO_GSHAREDVT_BOX_TYPE_VTYPE */
+                               EMIT_NEW_BIALU_IMM (cfg, args [3], OP_ISUB_IMM, deref_arg_reg, ins->dreg, 1);
 
                                EMIT_NEW_VARLOADA_VREG (cfg, ins, sp [1]->dreg, fsig->params [0]);
                                addr_reg = ins->dreg;
@@ -5456,7 +5470,6 @@ mini_emit_ldelema_1_ins (MonoCompile *cfg, MonoClass *klass, MonoInst *arr, Mono
        return ins;
 }
 
-#ifndef MONO_ARCH_EMULATE_MUL_DIV
 static MonoInst*
 mini_emit_ldelema_2_ins (MonoCompile *cfg, MonoClass *klass, MonoInst *arr, MonoInst *index_ins1, MonoInst *index_ins2)
 {
@@ -5530,7 +5543,6 @@ mini_emit_ldelema_2_ins (MonoCompile *cfg, MonoClass *klass, MonoInst *arr, Mono
 
        return ins;
 }
-#endif
 
 static MonoInst*
 mini_emit_ldelema_ins (MonoCompile *cfg, MonoMethod *cmethod, MonoInst **sp, unsigned char *ip, gboolean is_set)
@@ -5546,12 +5558,10 @@ mini_emit_ldelema_ins (MonoCompile *cfg, MonoMethod *cmethod, MonoInst **sp, uns
        if (rank == 1)
                return mini_emit_ldelema_1_ins (cfg, eclass, sp [0], sp [1], TRUE);
 
-#ifndef MONO_ARCH_EMULATE_MUL_DIV
        /* emit_ldelema_2 depends on OP_LMUL */
-       if (rank == 2 && (cfg->opt & MONO_OPT_INTRINS) && !mini_is_gsharedvt_variable_klass (eclass)) {
+       if (!cfg->backend->emulate_mul_div && rank == 2 && (cfg->opt & MONO_OPT_INTRINS) && !mini_is_gsharedvt_variable_klass (eclass)) {
                return mini_emit_ldelema_2_ins (cfg, eclass, sp [0], sp [1], sp [2]);
        }
-#endif
 
        if (mini_is_gsharedvt_variable_klass (eclass))
                element_size = 0;
@@ -5677,6 +5687,9 @@ emit_array_store (MonoCompile *cfg, MonoClass *klass, MonoInst **sp, gboolean sa
                        int index_reg = sp [1]->dreg;
                        int offset = (mono_class_array_element_size (klass) * sp [1]->inst_c0) + MONO_STRUCT_OFFSET (MonoArray, vector);
 
+                       if (SIZEOF_REGISTER == 8 && COMPILE_LLVM (cfg))
+                               MONO_EMIT_NEW_UNALU (cfg, OP_ZEXT_I4, index_reg, index_reg);
+
                        if (safety_checks)
                                MONO_EMIT_BOUNDS_CHECK (cfg, array_reg, MonoArray, max_length, index_reg);
                        EMIT_NEW_STORE_MEMBASE_TYPE (cfg, ins, &klass->byval_arg, array_reg, offset, sp [2]->dreg);
@@ -5713,12 +5726,26 @@ static gboolean
 is_unsafe_mov_compatible (MonoCompile *cfg, MonoClass *param_klass, MonoClass *return_klass)
 {
        uint32_t align;
+       int param_size, return_size;
 
        param_klass = mono_class_from_mono_type (mini_get_underlying_type (&param_klass->byval_arg));
+       return_klass = mono_class_from_mono_type (mini_get_underlying_type (&return_klass->byval_arg));
 
-       //Only allow for valuetypes
-       if (!param_klass->valuetype || !return_klass->valuetype)
+       if (cfg->verbose_level > 3)
+               printf ("[UNSAFE-MOV-INTRISIC] %s <- %s\n", return_klass->name, param_klass->name);
+
+       //Don't allow mixing reference types with value types
+       if (param_klass->valuetype != return_klass->valuetype) {
+               if (cfg->verbose_level > 3)
+                       printf ("[UNSAFE-MOV-INTRISIC]\tone of the args is a valuetype and the other is not\n");
                return FALSE;
+       }
+
+       if (!param_klass->valuetype) {
+               if (cfg->verbose_level > 3)
+                       printf ("[UNSAFE-MOV-INTRISIC]\targs are reference types\n");
+               return TRUE;
+       }
 
        //That are blitable
        if (param_klass->has_references || return_klass->has_references)
@@ -5726,17 +5753,51 @@ is_unsafe_mov_compatible (MonoCompile *cfg, MonoClass *param_klass, MonoClass *r
 
        /* Avoid mixing structs and primitive types/enums, they need to be handled differently in the JIT */
        if ((MONO_TYPE_ISSTRUCT (&param_klass->byval_arg) && !MONO_TYPE_ISSTRUCT (&return_klass->byval_arg)) ||
-               (!MONO_TYPE_ISSTRUCT (&param_klass->byval_arg) && MONO_TYPE_ISSTRUCT (&return_klass->byval_arg)))
+               (!MONO_TYPE_ISSTRUCT (&param_klass->byval_arg) && MONO_TYPE_ISSTRUCT (&return_klass->byval_arg))) {
+                       if (cfg->verbose_level > 3)
+                               printf ("[UNSAFE-MOV-INTRISIC]\tmixing structs and scalars\n");
                return FALSE;
+       }
 
        if (param_klass->byval_arg.type == MONO_TYPE_R4 || param_klass->byval_arg.type == MONO_TYPE_R8 ||
-               return_klass->byval_arg.type == MONO_TYPE_R4 || return_klass->byval_arg.type == MONO_TYPE_R8)
+               return_klass->byval_arg.type == MONO_TYPE_R4 || return_klass->byval_arg.type == MONO_TYPE_R8) {
+               if (cfg->verbose_level > 3)
+                       printf ("[UNSAFE-MOV-INTRISIC]\tfloat or double are not supported\n");
                return FALSE;
+       }
+
+       param_size = mono_class_value_size (param_klass, &align);
+       return_size = mono_class_value_size (return_klass, &align);
+
+       //We can do it if sizes match
+       if (param_size == return_size) {
+               if (cfg->verbose_level > 3)
+                       printf ("[UNSAFE-MOV-INTRISIC]\tsame size\n");
+               return TRUE;
+       }
 
-       //And have the same size
-       if (mono_class_value_size (param_klass, &align) != mono_class_value_size (return_klass, &align))
+       //No simple way to handle struct if sizes don't match
+       if (MONO_TYPE_ISSTRUCT (&param_klass->byval_arg)) {
+               if (cfg->verbose_level > 3)
+                       printf ("[UNSAFE-MOV-INTRISIC]\tsize mismatch and type is a struct\n");
                return FALSE;
-       return TRUE;
+       }
+
+       /*
+        * Same reg size category.
+        * A quick note on why we don't require widening here.
+        * The intrinsic is "R Array.UnsafeMov<S,R> (S s)".
+        *
+        * Since the source value comes from a function argument, the JIT will already have
+        * the value in a VREG and performed any widening needed before (say, when loading from a field).
+        */
+       if (param_size <= 4 && return_size <= 4) {
+               if (cfg->verbose_level > 3)
+                       printf ("[UNSAFE-MOV-INTRISIC]\tsize mismatch but both are of the same reg class\n");
+               return TRUE;
+       }
+
+       return FALSE;
 }
 
 static MonoInst*
@@ -5745,7 +5806,10 @@ emit_array_unsafe_mov (MonoCompile *cfg, MonoMethodSignature *fsig, MonoInst **a
        MonoClass *param_klass = mono_class_from_mono_type (fsig->params [0]);
        MonoClass *return_klass = mono_class_from_mono_type (fsig->ret);
 
-       //Valuetypes that are semantically equivalent
+       if (mini_is_gsharedvt_variable_type (fsig->ret))
+               return NULL;
+
+       //Valuetypes that are semantically equivalent or numbers than can be widened to
        if (is_unsafe_mov_compatible (cfg, param_klass, return_klass))
                return args [0];
 
@@ -5877,8 +5941,12 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                        int add_reg = alloc_preg (cfg);
 
 #if SIZEOF_REGISTER == 8
-                       /* The array reg is 64 bits but the index reg is only 32 */
-                       MONO_EMIT_NEW_UNALU (cfg, OP_SEXT_I4, index_reg, args [1]->dreg);
+                       if (COMPILE_LLVM (cfg)) {
+                               MONO_EMIT_NEW_UNALU (cfg, OP_ZEXT_I4, index_reg, args [1]->dreg);
+                       } else {
+                               /* The array reg is 64 bits but the index reg is only 32 */
+                               MONO_EMIT_NEW_UNALU (cfg, OP_SEXT_I4, index_reg, args [1]->dreg);
+                       }
 #else
                        index_reg = args [1]->dreg;
 #endif 
@@ -5920,8 +5988,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                        type_from_op (cfg, ins, NULL, NULL);
 
                        return ins;
-#if !defined(MONO_ARCH_EMULATE_MUL_DIV)
-               } else if (strcmp (cmethod->name, "InternalGetHashCode") == 0 && fsig->param_count == 1 && !mono_gc_is_moving ()) {
+               } else if (!cfg->backend->emulate_mul_div && strcmp (cmethod->name, "InternalGetHashCode") == 0 && fsig->param_count == 1 && !mono_gc_is_moving ()) {
                        int dreg = alloc_ireg (cfg);
                        int t1 = alloc_ireg (cfg);
        
@@ -5930,7 +5997,6 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                        ins->type = STACK_I4;
 
                        return ins;
-#endif
                } else if (strcmp (cmethod->name, ".ctor") == 0 && fsig->param_count == 0) {
                        MONO_INST_NEW (cfg, ins, OP_NOP);
                        MONO_ADD_INS (cfg->cbb, ins);
@@ -6637,7 +6703,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                           (strcmp (cmethod->klass->name_space, "System.Reflection") == 0) &&
                           (strcmp (cmethod->klass->name, "Assembly") == 0)) {
                if (cfg->llvm_only && !strcmp (cmethod->name, "GetExecutingAssembly")) {
-                       /* No stack walks are current available, so implement this as an intrinsic */
+                       /* No stack walks are currently available, so implement this as an intrinsic */
                        MonoInst *assembly_ins;
 
                        EMIT_NEW_AOTCONST (cfg, assembly_ins, MONO_PATCH_INFO_IMAGE, cfg->method->klass->image);
@@ -6658,24 +6724,27 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                                !strcmp (cmethod->klass->name_space, "ObjCRuntime") &&
                                !strcmp (cmethod->klass->name, "Selector"))
                           ) {
-#ifdef MONO_ARCH_HAVE_OBJC_GET_SELECTOR
-               if (!strcmp (cmethod->name, "GetHandle") && fsig->param_count == 1 &&
+               if (cfg->backend->have_objc_get_selector &&
+                       !strcmp (cmethod->name, "GetHandle") && fsig->param_count == 1 &&
                    (args [0]->opcode == OP_GOT_ENTRY || args [0]->opcode == OP_AOTCONST) &&
-                   cfg->compile_aot) {
+                   cfg->compile_aot && !cfg->llvm_only) {
                        MonoInst *pi;
                        MonoJumpInfoToken *ji;
                        MonoString *s;
 
+                       // FIXME: llvmonly
+
+                       cfg->exception_message = g_strdup ("GetHandle");
                        cfg->disable_llvm = TRUE;
 
                        if (args [0]->opcode == OP_GOT_ENTRY) {
-                               pi = args [0]->inst_p1;
+                               pi = (MonoInst *)args [0]->inst_p1;
                                g_assert (pi->opcode == OP_PATCH_INFO);
                                g_assert (GPOINTER_TO_INT (pi->inst_p1) == MONO_PATCH_INFO_LDSTR);
-                               ji = pi->inst_p0;
+                               ji = (MonoJumpInfoToken *)pi->inst_p0;
                        } else {
                                g_assert (GPOINTER_TO_INT (args [0]->inst_p1) == MONO_PATCH_INFO_LDSTR);
-                               ji = args [0]->inst_p0;
+                               ji = (MonoJumpInfoToken *)args [0]->inst_p0;
                        }
 
                        NULLIFY_INS (args [0]);
@@ -6689,7 +6758,6 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                        MONO_ADD_INS (cfg->cbb, ins);
                        return ins;
                }
-#endif
        }
 
 #ifdef MONO_ARCH_SIMD_INTRINSICS
@@ -6905,7 +6973,7 @@ emit_init_local (MonoCompile *cfg, int local, MonoType *type, gboolean init)
        MonoInst *var = cfg->locals [local];
        if (COMPILE_SOFT_FLOAT (cfg)) {
                MonoInst *store;
-               int reg = alloc_dreg (cfg, var->type);
+               int reg = alloc_dreg (cfg, (MonoStackType)var->type);
                emit_init_rvar (cfg, reg, type);
                EMIT_NEW_LOCSTORE (cfg, store, local, cfg->cbb->last_ins);
        } else {
@@ -6940,7 +7008,7 @@ inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig,
        guint32 prev_cil_offset_to_bb_len;
        MonoMethod *prev_current_method;
        MonoGenericContext *prev_generic_context;
-       gboolean ret_var_set, prev_ret_var_set, prev_disable_inline, virtual = FALSE;
+       gboolean ret_var_set, prev_ret_var_set, prev_disable_inline, virtual_ = FALSE;
 
        g_assert (cfg->exception_type == MONO_EXCEPTION_NONE);
 
@@ -6991,7 +7059,7 @@ inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig,
        }
 
        prev_locals = cfg->locals;
-       cfg->locals = mono_mempool_alloc0 (cfg->mempool, cheader->num_locals * sizeof (MonoInst*));     
+       cfg->locals = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, cheader->num_locals * sizeof (MonoInst*));
        for (i = 0; i < cheader->num_locals; ++i)
                cfg->locals [i] = mono_compile_create_var (cfg, cheader->locals [i], OP_LOCAL);
 
@@ -7022,9 +7090,9 @@ inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig,
        prev_disable_inline = cfg->disable_inline;
 
        if (ip && *ip == CEE_CALLVIRT && !(cmethod->flags & METHOD_ATTRIBUTE_STATIC))
-               virtual = TRUE;
+               virtual_ = TRUE;
 
-       costs = mono_method_to_ir (cfg, cmethod, sbblock, ebblock, rvar, sp, real_offset, virtual);
+       costs = mono_method_to_ir (cfg, cmethod, sbblock, ebblock, rvar, sp, real_offset, virtual_);
 
        ret_var_set = cfg->ret_var_set;
 
@@ -7264,7 +7332,7 @@ mini_get_method_allow_open (MonoMethod *m, guint32 token, MonoClass *klass, Mono
        MonoMethod *method;
 
        if (m->wrapper_type != MONO_WRAPPER_NONE) {
-               method = mono_method_get_wrapper_data (m, token);
+               method = (MonoMethod *)mono_method_get_wrapper_data (m, token);
                if (context) {
                        MonoError error;
                        method = mono_class_inflate_generic_method_checked (method, context, &error);
@@ -7295,7 +7363,7 @@ mini_get_class (MonoMethod *method, guint32 token, MonoGenericContext *context)
        MonoClass *klass;
 
        if (method->wrapper_type != MONO_WRAPPER_NONE) {
-               klass = mono_method_get_wrapper_data (method, token);
+               klass = (MonoClass *)mono_method_get_wrapper_data (method, token);
                if (context)
                        klass = mono_class_inflate_generic_class (klass, context);
        } else {
@@ -7458,7 +7526,7 @@ initialize_array_data (MonoMethod *method, gboolean aot, unsigned char *ip, Mono
                        /*g_print ("field: 0x%08x, rva: %d, rva_ptr: %p\n", read32 (ip + 2), rva, data_ptr);*/
                        /* for aot code we do the lookup on load */
                        if (aot && data_ptr)
-                               return GUINT_TO_POINTER (rva);
+                               return (const char *)GUINT_TO_POINTER (rva);
                } else {
                        /*FIXME is it possible to AOT a SRE assembly not meant to be saved? */ 
                        g_assert (!aot);
@@ -7545,6 +7613,207 @@ emit_optimized_ldloca_ir (MonoCompile *cfg, unsigned char *ip, unsigned char *en
        return NULL;
 }
 
+static MonoInst*
+emit_llvmonly_virtual_call (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, int context_used, MonoInst **sp)
+{
+       MonoInst *icall_args [16];
+       MonoInst *call_target, *ins, *vtable_ins;
+       int arg_reg, this_reg, vtable_reg;
+       gboolean is_iface = cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE;
+       gboolean is_gsharedvt = cfg->gsharedvt && mini_is_gsharedvt_variable_signature (fsig);
+       gboolean variant_iface = FALSE;
+       guint32 slot;
+       int offset;
+
+       /*
+        * In llvm-only mode, vtables contain function descriptors instead of
+        * method addresses/trampolines.
+        */
+       MONO_EMIT_NULL_CHECK (cfg, sp [0]->dreg);
+
+       if (is_iface)
+               slot = mono_method_get_imt_slot (cmethod);
+       else
+               slot = mono_method_get_vtable_index (cmethod);
+
+       this_reg = sp [0]->dreg;
+
+       if (is_iface && mono_class_has_variant_generic_params (cmethod->klass))
+               variant_iface = TRUE;
+
+       if (!fsig->generic_param_count && !is_iface && !is_gsharedvt) {
+               /*
+                * The simplest case, a normal virtual call.
+                */
+               int slot_reg = alloc_preg (cfg);
+               int addr_reg = alloc_preg (cfg);
+               int arg_reg = alloc_preg (cfg);
+               MonoBasicBlock *non_null_bb;
+
+               vtable_reg = alloc_preg (cfg);
+               EMIT_NEW_LOAD_MEMBASE (cfg, vtable_ins, OP_LOAD_MEMBASE, vtable_reg, this_reg, MONO_STRUCT_OFFSET (MonoObject, vtable));
+               offset = MONO_STRUCT_OFFSET (MonoVTable, vtable) + (slot * SIZEOF_VOID_P);
+
+               /* Load the vtable slot, which contains a function descriptor. */
+               MONO_EMIT_NEW_LOAD_MEMBASE (cfg, slot_reg, vtable_reg, offset);
+
+               NEW_BBLOCK (cfg, non_null_bb);
+
+               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, slot_reg, 0);
+               cfg->cbb->last_ins->flags |= MONO_INST_LIKELY;
+               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_PBNE_UN, non_null_bb);
+
+               /* Slow path */
+               // FIXME: Make the wrapper use the preserveall cconv
+               // FIXME: Use one icall per slot for small slot numbers ?
+               icall_args [0] = vtable_ins;
+               EMIT_NEW_ICONST (cfg, icall_args [1], slot);
+               /* Make the icall return the vtable slot value to save some code space */
+               ins = mono_emit_jit_icall (cfg, mono_init_vtable_slot, icall_args);
+               ins->dreg = slot_reg;
+               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, non_null_bb);
+
+               /* Fastpath */
+               MONO_START_BB (cfg, non_null_bb);
+               /* Load the address + arg from the vtable slot */
+               EMIT_NEW_LOAD_MEMBASE (cfg, call_target, OP_LOAD_MEMBASE, addr_reg, slot_reg, 0);
+               MONO_EMIT_NEW_LOAD_MEMBASE (cfg, arg_reg, slot_reg, SIZEOF_VOID_P);
+
+               return emit_extra_arg_calli (cfg, fsig, sp, arg_reg, call_target);
+       }
+
+       if (!fsig->generic_param_count && is_iface && !variant_iface && !is_gsharedvt) {
+               /*
+                * A simple interface call
+                *
+                * We make a call through an imt slot to obtain the function descriptor we need to call.
+                * The imt slot contains a function descriptor for a runtime function + arg.
+                */
+               int slot_reg = alloc_preg (cfg);
+               int addr_reg = alloc_preg (cfg);
+               int arg_reg = alloc_preg (cfg);
+               MonoInst *thunk_addr_ins, *thunk_arg_ins, *ftndesc_ins;
+
+               vtable_reg = alloc_preg (cfg);
+               EMIT_NEW_LOAD_MEMBASE (cfg, vtable_ins, OP_LOAD_MEMBASE, vtable_reg, this_reg, MONO_STRUCT_OFFSET (MonoObject, vtable));
+               offset = ((gint32)slot - MONO_IMT_SIZE) * SIZEOF_VOID_P;
+
+               /*
+                * The slot is already initialized when the vtable is created so there is no need
+                * to check it here.
+                */
+
+               /* Load the imt slot, which contains a function descriptor. */
+               MONO_EMIT_NEW_LOAD_MEMBASE (cfg, slot_reg, vtable_reg, offset);
+
+               /* Load the address + arg of the imt thunk from the imt slot */
+               EMIT_NEW_LOAD_MEMBASE (cfg, thunk_addr_ins, OP_LOAD_MEMBASE, addr_reg, slot_reg, 0);
+               EMIT_NEW_LOAD_MEMBASE (cfg, thunk_arg_ins, OP_LOAD_MEMBASE, arg_reg, slot_reg, SIZEOF_VOID_P);
+               /*
+                * IMT thunks in llvm-only mode are C functions which take an info argument
+                * plus the imt method and return the ftndesc to call.
+                */
+               icall_args [0] = thunk_arg_ins;
+               icall_args [1] = emit_get_rgctx_method (cfg, context_used,
+                                                                                               cmethod, MONO_RGCTX_INFO_METHOD);
+               ftndesc_ins = mono_emit_calli (cfg, helper_sig_llvmonly_imt_thunk, icall_args, thunk_addr_ins, NULL, NULL);
+
+               return emit_llvmonly_calli (cfg, fsig, sp, ftndesc_ins);
+       }
+
+       if ((fsig->generic_param_count || variant_iface) && !is_gsharedvt) {
+               /*
+                * This is similar to the interface case, the vtable slot points to an imt thunk which is
+                * dynamically extended as more instantiations are discovered.
+                * This handles generic virtual methods both on classes and interfaces.
+                */
+               int slot_reg = alloc_preg (cfg);
+               int addr_reg = alloc_preg (cfg);
+               int arg_reg = alloc_preg (cfg);
+               int ftndesc_reg = alloc_preg (cfg);
+               MonoInst *thunk_addr_ins, *thunk_arg_ins, *ftndesc_ins;
+               MonoBasicBlock *slowpath_bb, *end_bb;
+
+               NEW_BBLOCK (cfg, slowpath_bb);
+               NEW_BBLOCK (cfg, end_bb);
+
+               vtable_reg = alloc_preg (cfg);
+               EMIT_NEW_LOAD_MEMBASE (cfg, vtable_ins, OP_LOAD_MEMBASE, vtable_reg, this_reg, MONO_STRUCT_OFFSET (MonoObject, vtable));
+               if (is_iface)
+                       offset = ((gint32)slot - MONO_IMT_SIZE) * SIZEOF_VOID_P;
+               else
+                       offset = MONO_STRUCT_OFFSET (MonoVTable, vtable) + (slot * SIZEOF_VOID_P);
+
+               /* Load the slot, which contains a function descriptor. */
+               MONO_EMIT_NEW_LOAD_MEMBASE (cfg, slot_reg, vtable_reg, offset);
+
+               /* These slots are not initialized, so fall back to the slow path until they are initialized */
+               /* That happens when mono_method_add_generic_virtual_invocation () creates an IMT thunk */
+               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, slot_reg, 0);
+               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_PBEQ, slowpath_bb);
+
+               /* Fastpath */
+               /* Same as with iface calls */
+               EMIT_NEW_LOAD_MEMBASE (cfg, thunk_addr_ins, OP_LOAD_MEMBASE, addr_reg, slot_reg, 0);
+               EMIT_NEW_LOAD_MEMBASE (cfg, thunk_arg_ins, OP_LOAD_MEMBASE, arg_reg, slot_reg, SIZEOF_VOID_P);
+               icall_args [0] = thunk_arg_ins;
+               icall_args [1] = emit_get_rgctx_method (cfg, context_used,
+                                                                                               cmethod, MONO_RGCTX_INFO_METHOD);
+               ftndesc_ins = mono_emit_calli (cfg, helper_sig_llvmonly_imt_thunk, icall_args, thunk_addr_ins, NULL, NULL);
+               ftndesc_ins->dreg = ftndesc_reg;
+               /*
+                * Unlike normal iface calls, these imt thunks can return NULL, i.e. when they are passed an instantiation
+                * they don't know about yet. Fall back to the slowpath in that case.
+                */
+               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, ftndesc_reg, 0);
+               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_PBEQ, slowpath_bb);
+
+               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+               /* Slowpath */
+               MONO_START_BB (cfg, slowpath_bb);
+               icall_args [0] = vtable_ins;
+               EMIT_NEW_ICONST (cfg, icall_args [1], slot);
+               icall_args [2] = emit_get_rgctx_method (cfg, context_used,
+                                                                                               cmethod, MONO_RGCTX_INFO_METHOD);
+               if (is_iface)
+                       ftndesc_ins = mono_emit_jit_icall (cfg, mono_resolve_generic_virtual_iface_call, icall_args);
+               else
+                       ftndesc_ins = mono_emit_jit_icall (cfg, mono_resolve_generic_virtual_call, icall_args);
+               ftndesc_ins->dreg = ftndesc_reg;
+               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+               /* Common case */
+               MONO_START_BB (cfg, end_bb);
+               return emit_llvmonly_calli (cfg, fsig, sp, ftndesc_ins);
+       }
+
+       /*
+        * Non-optimized cases
+        */
+       icall_args [0] = sp [0];
+       EMIT_NEW_ICONST (cfg, icall_args [1], slot);
+
+       icall_args [2] = emit_get_rgctx_method (cfg, context_used,
+                                                                                       cmethod, MONO_RGCTX_INFO_METHOD);
+
+       arg_reg = alloc_preg (cfg);
+       MONO_EMIT_NEW_PCONST (cfg, arg_reg, NULL);
+       EMIT_NEW_VARLOADA_VREG (cfg, icall_args [3], arg_reg, &mono_defaults.int_class->byval_arg);
+
+       g_assert (is_gsharedvt);
+       if (is_iface)
+               call_target = mono_emit_jit_icall (cfg, mono_resolve_iface_call_gsharedvt, icall_args);
+       else
+               call_target = mono_emit_jit_icall (cfg, mono_resolve_vcall_gsharedvt, icall_args);
+
+       /*
+        * Pass the extra argument even if the callee doesn't receive it, most
+        * calling conventions allow this.
+        */
+       return emit_extra_arg_calli (cfg, fsig, sp, arg_reg, call_target);
+}
+
 static gboolean
 is_exception_class (MonoClass *klass)
 {
@@ -7623,11 +7892,7 @@ is_supported_tail_call (MonoCompile *cfg, MonoMethod *method, MonoMethod *cmetho
        gboolean supported_tail_call;
        int i;
 
-#ifdef MONO_ARCH_HAVE_OP_TAIL_CALL
        supported_tail_call = mono_arch_tail_call_supported (cfg, mono_method_signature (method), mono_method_signature (cmethod));
-#else
-       supported_tail_call = mono_metadata_signature_equal (mono_method_signature (method), mono_method_signature (cmethod)) && !MONO_TYPE_ISSTRUCT (mono_method_signature (cmethod)->ret);
-#endif
 
        for (i = 0; i < fsig->param_count; ++i) {
                if (fsig->params [i]->byref || fsig->params [i]->type == MONO_TYPE_PTR || fsig->params [i]->type == MONO_TYPE_FNPTR)
@@ -7716,7 +7981,13 @@ handle_ctor_call (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fs
                MonoInst *addr;
 
                addr = emit_get_rgctx_gsharedvt_call (cfg, context_used, fsig, cmethod, MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE);
-               mono_emit_calli (cfg, fsig, sp, addr, NULL, vtable_arg);
+
+               if (cfg->llvm_only) {
+                       // FIXME: Avoid initializing vtable_arg
+                       emit_llvmonly_calli (cfg, fsig, sp, addr);
+               } else {
+                       mono_emit_calli (cfg, fsig, sp, addr, NULL, vtable_arg);
+               }
        } else if (context_used &&
                           ((!mono_method_is_generic_sharable_full (cmethod, TRUE, FALSE, FALSE) ||
                                 !mono_class_generic_sharing_enabled (cmethod->klass)) || cfg->gsharedvt)) {
@@ -7724,10 +7995,16 @@ handle_ctor_call (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fs
 
                /* Generic calls made out of gsharedvt methods cannot be patched, so use an indirect call */
 
-               cmethod_addr = emit_get_rgctx_method (cfg, context_used,
-                                                                                         cmethod, MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
+               if (cfg->llvm_only) {
+                       MonoInst *addr = emit_get_rgctx_method (cfg, context_used, cmethod,
+                                                                                                       MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
+                       emit_llvmonly_calli (cfg, fsig, sp, addr);
+               } else {
+                       cmethod_addr = emit_get_rgctx_method (cfg, context_used,
+                                                                                                 cmethod, MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
 
-               mono_emit_calli (cfg, fsig, sp, cmethod_addr, NULL, vtable_arg);
+                       mono_emit_calli (cfg, fsig, sp, cmethod_addr, NULL, vtable_arg);
+               }
        } else {
                INLINE_FAILURE ("ctor call");
                ins = mono_emit_method_call_full (cfg, cmethod, fsig, FALSE, sp,
@@ -7772,22 +8049,6 @@ emit_setret (MonoCompile *cfg, MonoInst *val)
        }
 }
 
-static MonoMethodSignature*
-sig_to_rgctx_sig (MonoMethodSignature *sig)
-{
-       // FIXME: memory allocation
-       MonoMethodSignature *res;
-       int i;
-
-       res = g_malloc (MONO_SIZEOF_METHOD_SIGNATURE + (sig->param_count + 1) * sizeof (MonoType*));
-       memcpy (res, sig, MONO_SIZEOF_METHOD_SIGNATURE);
-       res->param_count = sig->param_count + 1;
-       for (i = 0; i < sig->param_count; ++i)
-               res->params [i] = sig->params [i];
-       res->params [sig->param_count] = &mono_defaults.int_class->byval_arg;
-       return res;
-}
-
 /*
  * mono_method_to_ir:
  *
@@ -7900,7 +8161,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
         * (OP_DUMMY_ICONST etc.) which generate no code. These are only supported
         * on some platforms.
         */
-       if ((cfg->opt & MONO_OPT_UNSAFE) && ARCH_HAVE_DUMMY_INIT)
+       if ((cfg->opt & MONO_OPT_UNSAFE) && cfg->backend->have_dummy_init)
                init_locals = header->init_locals;
        else
                init_locals = TRUE;
@@ -7939,7 +8200,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                cfg->real_offset = inline_offset;
        }
 
-       cfg->cil_offset_to_bb = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoBasicBlock*) * header->code_size);
+       cfg->cil_offset_to_bb = (MonoBasicBlock **)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoBasicBlock*) * header->code_size);
        cfg->cil_offset_to_bb_len = header->code_size;
 
        cfg->current_method = method;
@@ -7947,7 +8208,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
        if (cfg->verbose_level > 2)
                printf ("method to IR %s\n", mono_method_full_name (method, TRUE));
 
-       param_types = mono_mempool_alloc (cfg->mempool, sizeof (MonoType*) * num_args);
+       param_types = (MonoType **)mono_mempool_alloc (cfg->mempool, sizeof (MonoType*) * num_args);
        if (sig->hasthis)
                param_types [0] = method->klass->valuetype?&method->klass->this_arg:&method->klass->byval_arg;
        for (n = 0; n < sig->param_count; ++n)
@@ -8032,7 +8293,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                /* mostly like handle_stack_args (), but just sets the input args */
                                /* printf ("handling clause at IL_%04x\n", clause->handler_offset); */
                                tblock->in_scount = 1;
-                               tblock->in_stack = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*));
+                               tblock->in_stack = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*));
                                tblock->in_stack [0] = mono_create_exvar_for_offset (cfg, clause->handler_offset);
 
                                cfg->cbb = tblock;
@@ -8064,7 +8325,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        tblock->flags |= BB_EXCEPTION_HANDLER;
                                        tblock->real_offset = clause->data.filter_offset;
                                        tblock->in_scount = 1;
-                                       tblock->in_stack = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*));
+                                       tblock->in_stack = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*));
                                        /* The filter block shares the exvar with the handler block */
                                        tblock->in_stack [0] = mono_create_exvar_for_offset (cfg, clause->handler_offset);
                                        MONO_INST_NEW (cfg, ins, OP_START_HANDLER);
@@ -8137,10 +8398,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                MonoInst *var, *locals_var;
                int dreg;
 
-               info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoGSharedVtMethodInfo));
+               info = (MonoGSharedVtMethodInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoGSharedVtMethodInfo));
                info->method = cfg->method;
                info->count_entries = 16;
-               info->entries = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->count_entries);
+               info->entries = (MonoRuntimeGenericContextInfoTemplate *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->count_entries);
                cfg->gsharedvt_info = info;
 
                var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
@@ -8245,7 +8506,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
        }
 
        /* we use a spare stack slot in SWITCH and NEWOBJ and others */
-       stack_start = sp = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * (header->max_stack + 1));
+       stack_start = sp = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * (header->max_stack + 1));
 
        ins_flag = 0;
        start_new_bblock = 0;
@@ -8565,7 +8826,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 #endif
 
                        /* FIXME: we should really allocate this only late in the compilation process */
-                       f = mono_domain_alloc (cfg->domain, sizeof (float));
+                       f = (float *)mono_domain_alloc (cfg->domain, sizeof (float));
                        CHECK_OPSIZE (5);
                        CHECK_STACK_OVF (1);
 
@@ -8602,7 +8863,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 #endif
 
                        /* FIXME: we should really allocate this only late in the compilation process */
-                       d = mono_domain_alloc (cfg->domain, sizeof (double));
+                       d = (double *)mono_domain_alloc (cfg->domain, sizeof (double));
                        CHECK_OPSIZE (9);
                        CHECK_STACK_OVF (1);
 
@@ -8687,7 +8948,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (cfg->llvm_only) {
                                MonoInst **args;
 
-                               args = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * n);
+                               args = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * n);
                                for (i = 0; i < n; ++i)
                                        EMIT_NEW_ARGLOAD (cfg, args [i], i);
                                ins = mono_emit_method_call_full (cfg, cmethod, fsig, TRUE, args, NULL, NULL, NULL);
@@ -8703,7 +8964,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                link_bblock (cfg, cfg->cbb, end_bblock);
                                ip += 5;
                                break;
-                       } else if (ARCH_HAVE_OP_TAIL_CALL) {
+                       } else if (cfg->backend->have_op_tail_call) {
                                /* Handle tail calls similarly to calls */
                                DISABLE_AOT (cfg);
 
@@ -8711,7 +8972,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                call->method = cmethod;
                                call->tail_call = TRUE;
                                call->signature = mono_method_signature (cmethod);
-                               call->args = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * n);
+                               call->args = (MonoInst **)mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * n);
                                call->inst.inst_p0 = cmethod;
                                for (i = 0; i < n; ++i)
                                        EMIT_NEW_ARGLOAD (cfg, call->args [i], i);
@@ -8769,7 +9030,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                        CHECK_STACK (n);
 
-                       //g_assert (!virtual || fsig->hasthis);
+                       //g_assert (!virtual_ || fsig->hasthis);
 
                        sp -= n;
 
@@ -8790,6 +9051,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        /* Not tested */
                                        GSHAREDVT_FAILURE (*ip);
 
+                               if (cfg->llvm_only)
+                                       // FIXME:
+                                       GSHAREDVT_FAILURE (*ip);
+
                                addr = emit_get_rgctx_sig (cfg, context_used,
                                                                                          fsig, MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI);
                                ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, NULL, callee);
@@ -8800,7 +9065,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        INLINE_FAILURE ("indirect call");
 
                        if (addr->opcode == OP_PCONST || addr->opcode == OP_AOTCONST || addr->opcode == OP_GOT_ENTRY) {
-                               int info_type;
+                               MonoJumpInfoType info_type;
                                gpointer info_data;
 
                                /*
@@ -8808,10 +9073,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                 * with the contents of the aotconst as the patch info.
                                 */
                                if (addr->opcode == OP_PCONST || addr->opcode == OP_AOTCONST) {
-                                       info_type = addr->inst_c1;
+                                       info_type = (MonoJumpInfoType)addr->inst_c1;
                                        info_data = addr->inst_p0;
                                } else {
-                                       info_type = addr->inst_right->inst_c1;
+                                       info_type = (MonoJumpInfoType)addr->inst_right->inst_c1;
                                        info_data = addr->inst_right->inst_left;
                                }
 
@@ -8844,7 +9109,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        MonoInst *addr = NULL;
                        MonoMethodSignature *fsig = NULL;
                        int array_rank = 0;
-                       int virtual = *ip == CEE_CALLVIRT;
+                       int virtual_ = *ip == CEE_CALLVIRT;
                        gboolean pass_imt_from_rgctx = FALSE;
                        MonoInst *imt_arg = NULL;
                        MonoInst *keep_this_alive = NULL;
@@ -8925,9 +9190,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (mono_security_core_clr_enabled ())
                                ensure_method_is_allowed_to_call_method (cfg, method, cil_method);
 
-                       if (!virtual && (cmethod->flags & METHOD_ATTRIBUTE_ABSTRACT))
+                       if (!virtual_ && (cmethod->flags & METHOD_ATTRIBUTE_ABSTRACT))
                                /* MS.NET seems to silently convert this to a callvirt */
-                               virtual = 1;
+                               virtual_ = 1;
 
                        {
                                /*
@@ -8938,8 +9203,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                 */
                                const int test_flags = METHOD_ATTRIBUTE_VIRTUAL | METHOD_ATTRIBUTE_FINAL | METHOD_ATTRIBUTE_STATIC;
                                const int expected_flags = METHOD_ATTRIBUTE_VIRTUAL | METHOD_ATTRIBUTE_FINAL;
-                               if (!virtual && mono_class_is_marshalbyref (cmethod->klass) && (cmethod->flags & test_flags) == expected_flags && cfg->method->wrapper_type == MONO_WRAPPER_NONE)
-                                       virtual = 1;
+                               if (!virtual_ && mono_class_is_marshalbyref (cmethod->klass) && (cmethod->flags & test_flags) == expected_flags && cfg->method->wrapper_type == MONO_WRAPPER_NONE)
+                                       virtual_ = 1;
                        }
 
                        if (!cmethod->klass->inited)
@@ -8963,6 +9228,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                CHECK_CFG_ERROR;
                        }
 
+                       if (cfg->llvm_only && !cfg->method->wrapper_type)
+                               cfg->signatures = g_slist_prepend_mempool (cfg->mempool, cfg->signatures, fsig);
+
                        /* See code below */
                        if (cmethod->klass == mono_defaults.monitor_class && !strcmp (cmethod->name, "Enter") && mono_method_signature (cmethod)->param_count == 1) {
                                MonoBasicBlock *tbb;
@@ -9003,10 +9271,13 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                        CHECK_STACK (n);
 
-                       //g_assert (!virtual || fsig->hasthis);
+                       //g_assert (!virtual_ || fsig->hasthis);
 
                        sp -= n;
 
+                       /*
+                        * We have the `constrained.' prefix opcode.
+                        */
                        if (constrained_class) {
                                if (mini_is_gsharedvt_klass (constrained_class)) {
                                        if ((cmethod->klass != mono_defaults.object_class) && constrained_class->valuetype && cmethod->klass->valuetype) {
@@ -9021,9 +9292,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        }
                                }
 
-                               /*
-                                * We have the `constrained.' prefix opcode.
-                                */
                                if (constrained_partial_call) {
                                        gboolean need_box = TRUE;
 
@@ -9065,7 +9333,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                NEW_BBLOCK (cfg, end_bb);
 
                                                box_type = emit_get_rgctx_virt_method (cfg, mono_class_check_context_used (constrained_class), constrained_class, cmethod, MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE);
-                                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, box_type->dreg, 1);
+                                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, box_type->dreg, MONO_GSHAREDVT_BOX_TYPE_REF);
                                                MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_ref_bb);
 
                                                /* Non-ref case */
@@ -9139,7 +9407,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        CHECK_CFG_EXCEPTION;
                                                }
                                        }
-                                       virtual = 0;
+                                       virtual_ = 0;
                                }
                                constrained_class = NULL;
                        }
@@ -9229,9 +9497,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if ((!(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL) ||
                                         MONO_METHOD_IS_FINAL (cmethod)) &&
                                        !mono_class_is_marshalbyref (cmethod->klass)) {
-                                       if (virtual)
+                                       if (virtual_)
                                                check_this = TRUE;
-                                       virtual = 0;
+                                       virtual_ = 0;
                                }
                        }
 
@@ -9246,7 +9514,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                MONO_EMIT_NEW_CHECK_THIS (cfg, sp [0]->dreg);
 
                        /* Calling virtual generic methods */
-                       if (virtual && (cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL) && 
+                       if (virtual_ && (cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL) &&
                            !(MONO_METHOD_IS_FINAL (cmethod) && 
                              cmethod->wrapper_type != MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK) &&
                            fsig->generic_param_count && 
@@ -9254,7 +9522,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                !cfg->llvm_only) {
                                MonoInst *this_temp, *this_arg_temp, *store;
                                MonoInst *iargs [4];
-                               gboolean use_imt = FALSE;
 
                                g_assert (fsig->is_inflated);
 
@@ -9264,12 +9531,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if (cfg->gsharedvt && mini_is_gsharedvt_signature (fsig))
                                        GSHAREDVT_FAILURE (*ip);
 
-#if MONO_ARCH_HAVE_GENERALIZED_IMT_THUNK && defined(MONO_ARCH_GSHARED_SUPPORTED)
-                               if (cmethod->wrapper_type == MONO_WRAPPER_NONE)
-                                       use_imt = TRUE;
-#endif
-
-                               if (use_imt) {
+                               if (cfg->backend->have_generalized_imt_thunk && cfg->backend->gshared_supported && cmethod->wrapper_type == MONO_WRAPPER_NONE) {
                                        g_assert (!imt_arg);
                                        if (!context_used)
                                                g_assert (cmethod->is_inflated);
@@ -9337,7 +9599,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                        /* Inlining */
                        if ((cfg->opt & MONO_OPT_INLINE) &&
-                               (!virtual || !(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL) || MONO_METHOD_IS_FINAL (cmethod)) &&
+                               (!virtual_ || !(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL) || MONO_METHOD_IS_FINAL (cmethod)) &&
                            mono_method_check_inlining (cfg, cmethod)) {
                                int costs;
                                gboolean always = FALSE;
@@ -9406,10 +9668,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                         * patching gshared method addresses into a gsharedvt method.
                         */
                        if (cfg->gsharedvt && (mini_is_gsharedvt_signature (fsig) || cmethod->is_inflated || cmethod->klass->generic_class) &&
-                               !(cmethod->klass->rank && cmethod->klass->byval_arg.type != MONO_TYPE_SZARRAY)) {
+                               !(cmethod->klass->rank && cmethod->klass->byval_arg.type != MONO_TYPE_SZARRAY) &&
+                               (!(cfg->llvm_only && virtual_ && (cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL)))) {
                                MonoRgctxInfoType info_type;
 
-                               if (virtual) {
+                               if (virtual_) {
                                        //if (cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE)
                                                //GSHAREDVT_FAILURE (*ip);
                                        // disable for possible remoting calls
@@ -9434,13 +9697,18 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if ((cmethod->klass->parent == mono_defaults.multicastdelegate_class) && (!strcmp (cmethod->name, "Invoke")))
                                        keep_this_alive = sp [0];
 
-                               if (virtual && (cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL))
+                               if (virtual_ && (cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL))
                                        info_type = MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT;
                                else
                                        info_type = MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE;
                                addr = emit_get_rgctx_gsharedvt_call (cfg, context_used, fsig, cmethod, info_type);
 
-                               ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, imt_arg, vtable_arg);
+                               if (cfg->llvm_only) {
+                                       // FIXME: Avoid initializing vtable_arg
+                                       ins = emit_llvmonly_calli (cfg, fsig, sp, addr);
+                               } else {
+                                       ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, imt_arg, vtable_arg);
+                               }
                                goto call_end;
                        }
 
@@ -9454,7 +9722,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (context_used && !imt_arg && !array_rank && !delegate_invoke &&
                                (!mono_method_is_generic_sharable_full (cmethod, TRUE, FALSE, FALSE) ||
                                 !mono_class_generic_sharing_enabled (cmethod->klass)) &&
-                               (!virtual || MONO_METHOD_IS_FINAL (cmethod) ||
+                               (!virtual_ || MONO_METHOD_IS_FINAL (cmethod) ||
                                 !(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL))) {
                                INLINE_FAILURE ("gshared");
 
@@ -9471,8 +9739,17 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if (fsig->hasthis)
                                        MONO_EMIT_NEW_CHECK_THIS (cfg, sp [0]->dreg);
 
-                               addr = emit_get_rgctx_method (cfg, context_used, cmethod, MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
-                               ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, imt_arg, vtable_arg);
+                               if (cfg->llvm_only) {
+                                       if (cfg->gsharedvt && mini_is_gsharedvt_variable_signature (fsig))
+                                               addr = emit_get_rgctx_method (cfg, context_used, cmethod, MONO_RGCTX_INFO_GSHAREDVT_OUT_WRAPPER);
+                                       else
+                                               addr = emit_get_rgctx_method (cfg, context_used, cmethod, MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
+                                       // FIXME: Avoid initializing imt_arg/vtable_arg
+                                       ins = emit_llvmonly_calli (cfg, fsig, sp, addr);
+                               } else {
+                                       addr = emit_get_rgctx_method (cfg, context_used, cmethod, MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
+                                       ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, imt_arg, vtable_arg);
+                               }
                                goto call_end;
                        }
 
@@ -9541,7 +9818,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                goto call_end;
                        }
 
-                       ins = mini_redirect_call (cfg, cmethod, fsig, sp, virtual ? sp [0] : NULL);
+                       ins = mini_redirect_call (cfg, cmethod, fsig, sp, virtual_ ? sp [0] : NULL);
                        if (ins)
                                goto call_end;
 
@@ -9562,7 +9839,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                //printf ("HIT: %s -> %s\n", mono_method_full_name (cfg->method, TRUE), mono_method_full_name (cmethod, TRUE));
 
-                               if (ARCH_HAVE_OP_TAIL_CALL) {
+                               if (cfg->backend->have_op_tail_call) {
                                        /* Handle tail calls similarly to normal calls */
                                        tail_call = TRUE;
                                } else {
@@ -9619,73 +9896,16 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        }
 
                        /*
-                        * Interface calls in llvm-only mode are complicated becase the callee might need an rgctx arg,
-                        * (i.e. its a vtype method), and there is no way to for the caller to know this at compile time.
-                        * So we make resolve_iface_call return the rgctx, and do two calls with different signatures
-                        * based on whenever there is an rgctx or not.
+                        * Virtual calls in llvm-only mode.
                         */
-                       if (cfg->llvm_only && virtual && cmethod && (cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE)) {
-                               MonoInst *args [16], *icall_args [16];
-                               MonoBasicBlock *rgctx_bb, *end_bb;
-                               MonoInst *call1, *call2, *call_target;
-                               MonoMethodSignature *rgctx_sig;
-                               int rgctx_reg, tmp_reg;
-
-                               MONO_EMIT_NULL_CHECK (cfg, sp [0]->dreg);
-
-                               NEW_BBLOCK (cfg, rgctx_bb);
-                               NEW_BBLOCK (cfg, end_bb);
-
-                               // FIXME: Optimize this
-
-                               guint32 imt_slot = mono_method_get_imt_slot (cmethod);
-
-                               icall_args [0] = sp [0];
-                               EMIT_NEW_ICONST (cfg, icall_args [1], imt_slot);
-                               if (imt_arg) {
-                                       icall_args [2] = imt_arg;
-                               } else {
-                                       EMIT_NEW_AOTCONST (cfg, ins, MONO_PATCH_INFO_METHODCONST, cmethod);
-                                       icall_args [2] = ins;
-                               }
-
-                               rgctx_reg = alloc_preg (cfg);
-                               MONO_EMIT_NEW_PCONST (cfg, rgctx_reg, NULL);
-                               EMIT_NEW_VARLOADA_VREG (cfg, icall_args [3], rgctx_reg, &mono_defaults.int_class->byval_arg);
-                               //EMIT_NEW_PCONST (cfg, icall_args [3], NULL);
-
-                               call_target = mono_emit_jit_icall (cfg, mono_resolve_iface_call, icall_args);
-
-                               // FIXME: Only do this if needed (generic calls)
-
-                               // Check whenever to pass an rgctx
-                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, rgctx_reg, 0);
-                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBNE_UN, rgctx_bb);
-                               /* Non rgctx case */
-                               call1 = mono_emit_calli (cfg, fsig, sp, call_target, NULL, vtable_arg);
-                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
-                               /* Rgctx case */
-                               MONO_START_BB (cfg, rgctx_bb);
-                               /* Make a call with an rgctx */
-                               g_assert (fsig->param_count + 2 < 16);
-                               args [0] = sp [0];
-                               for (i = 0; i < fsig->param_count; ++i)
-                                       args [i + 1] = sp [i + 1];
-                               tmp_reg = alloc_preg (cfg);
-                               EMIT_NEW_UNALU (cfg, args [fsig->param_count + 1], OP_MOVE, tmp_reg, rgctx_reg);
-                               rgctx_sig = sig_to_rgctx_sig (fsig);
-                               call2 = mono_emit_calli (cfg, rgctx_sig, args, call_target, NULL, NULL);
-                               call2->dreg = call1->dreg;
-                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
-                               /* End */
-                               MONO_START_BB (cfg, end_bb);
-                               ins = call1;
+                       if (cfg->llvm_only && virtual_ && cmethod && (cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL)) {
+                               ins = emit_llvmonly_virtual_call (cfg, cmethod, fsig, context_used, sp);
                                goto call_end;
                        }
 
                        /* Common call */
                        INLINE_FAILURE ("call");
-                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, tail_call, sp, virtual ? sp [0] : NULL,
+                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, tail_call, sp, virtual_ ? sp [0] : NULL,
                                                                                          imt_arg, vtable_arg);
 
                        if (tail_call && !cfg->llvm_only) {
@@ -9911,7 +10131,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        MONO_INST_NEW (cfg, ins, is_true ? CEE_BNE_UN : CEE_BEQ);
                        type_from_op (cfg, ins, sp [0], NULL);
                        MONO_ADD_INS (cfg->cbb, ins);
-                       ins->inst_many_bb = mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);
+                       ins->inst_many_bb = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof(gpointer)*2);
                        GET_BBLOCK (cfg, tblock, target);
                        ins->inst_true_bb = tblock;
                        GET_BBLOCK (cfg, tblock, ip);
@@ -9970,7 +10190,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        GET_BBLOCK (cfg, default_bblock, target);
                        default_bblock->flags |= BB_INDIRECT_JUMP_TARGET;
 
-                       targets = mono_mempool_alloc (cfg->mempool, sizeof (MonoBasicBlock*) * n);
+                       targets = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof (MonoBasicBlock*) * n);
                        for (i = 0; i < n; ++i) {
                                GET_BBLOCK (cfg, tblock, target + (gint32)read32(ip));
                                targets [i] = tblock;
@@ -10003,7 +10223,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        for (i = 0; i < n; ++i)
                                link_bblock (cfg, cfg->cbb, targets [i]);
 
-                       table = mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfoBBTable));
+                       table = (MonoJumpInfoBBTable *)mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfoBBTable));
                        table->table = targets;
                        table->table_size = n;
 
@@ -10025,7 +10245,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                ins->sreg1 = src1->dreg;
                                ins->inst_p0 = table;
                                ins->inst_many_bb = targets;
-                               ins->klass = GUINT_TO_POINTER (n);
+                               ins->klass = (MonoClass *)GUINT_TO_POINTER (n);
                                MONO_ADD_INS (cfg->cbb, ins);
                        } else {
                                if (sizeof (gpointer) == 8)
@@ -10138,7 +10358,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        ins->sreg2 = sp [1]->dreg;
                        type_from_op (cfg, ins, sp [0], sp [1]);
                        CHECK_TYPE (ins);
-                       ins->dreg = alloc_dreg ((cfg), (ins)->type);
+                       ins->dreg = alloc_dreg ((cfg), (MonoStackType)(ins)->type);
 
                        /* Use the immediate opcodes if possible */
                        if ((sp [1]->opcode == OP_ICONST) && mono_arch_is_inst_imm (sp [1]->inst_c0)) {
@@ -10178,7 +10398,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        type_from_op (cfg, ins, sp [0], sp [1]);
                        CHECK_TYPE (ins);
                        add_widen_op (cfg, ins, &sp [0], &sp [1]);
-                       ins->dreg = alloc_dreg ((cfg), (ins)->type);
+                       ins->dreg = alloc_dreg ((cfg), (MonoStackType)(ins)->type);
 
                        /* FIXME: Pass opcode to is_inst_imm */
 
@@ -10426,7 +10646,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        }
                        else if (method->wrapper_type != MONO_WRAPPER_NONE) {
                                MonoInst *iargs [1];
-                               char *str = mono_method_get_wrapper_data (method, n);
+                               char *str = (char *)mono_method_get_wrapper_data (method, n);
 
                                if (cfg->compile_aot)
                                        EMIT_NEW_LDSTRLITCONST (cfg, iargs [0], str);
@@ -10699,12 +10919,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                EMIT_NEW_CLASSCONST (cfg, args [1], klass);
 
                                /* inline cache*/
-                               if (cfg->compile_aot) {
-                                       idx = get_castclass_cache_idx (cfg);
-                                       EMIT_NEW_AOTCONST (cfg, args [2], MONO_PATCH_INFO_CASTCLASS_CACHE, GINT_TO_POINTER (idx));
-                               } else {
-                                       EMIT_NEW_PCONST (cfg, args [2], mono_domain_alloc0 (cfg->domain, sizeof (gpointer)));
-                               }
+                               idx = get_castclass_cache_idx (cfg);
+                               args [2] = emit_runtime_constant (cfg, MONO_PATCH_INFO_CASTCLASS_CACHE, GINT_TO_POINTER (idx));
 
                                *sp++ = mono_emit_method_call (cfg, mono_isinst, args, NULL);
                                ip += 5;
@@ -10995,7 +11211,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        CHECK_OPSIZE (5);
                        token = read32 (ip + 1);
                        if (method->wrapper_type != MONO_WRAPPER_NONE) {
-                               field = mono_method_get_wrapper_data (method, token);
+                               field = (MonoClassField *)mono_method_get_wrapper_data (method, token);
                                klass = field->parent;
                        }
                        else {
@@ -11086,6 +11302,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                context_used = mini_class_check_context_used (cfg, klass);
 
                                                offset_ins = emit_get_gsharedvt_info (cfg, field, MONO_RGCTX_INFO_FIELD_OFFSET);
+                                               /* The value is offset by 1 */
+                                               EMIT_NEW_BIALU_IMM (cfg, ins, OP_PSUB_IMM, offset_ins->dreg, offset_ins->dreg, 1);
                                                dreg = alloc_ireg_mp (cfg);
                                                EMIT_NEW_BIALU (cfg, ins, OP_PADD, dreg, sp [0]->dreg, offset_ins->dreg);
                                                /* The decomposition will call mini_emit_stobj () which will emit a wbarrier if needed */
@@ -11169,6 +11387,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                MonoInst *offset_ins;
 
                                                offset_ins = emit_get_gsharedvt_info (cfg, field, MONO_RGCTX_INFO_FIELD_OFFSET);
+                                               /* The value is offset by 1 */
+                                               EMIT_NEW_BIALU_IMM (cfg, ins, OP_PSUB_IMM, offset_ins->dreg, offset_ins->dreg, 1);
                                                EMIT_NEW_BIALU (cfg, ins, OP_PADD, dreg, sp [0]->dreg, offset_ins->dreg);
                                        } else {
                                                EMIT_NEW_BIALU_IMM (cfg, ins, OP_PADD_IMM, dreg, sp [0]->dreg, foffset);
@@ -11185,6 +11405,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                MonoInst *offset_ins;
 
                                                offset_ins = emit_get_gsharedvt_info (cfg, field, MONO_RGCTX_INFO_FIELD_OFFSET);
+                                               /* The value is offset by 1 */
+                                               EMIT_NEW_BIALU_IMM (cfg, ins, OP_PSUB_IMM, offset_ins->dreg, offset_ins->dreg, 1);
                                                dreg = alloc_ireg_mp (cfg);
                                                EMIT_NEW_BIALU (cfg, ins, OP_PADD, dreg, sp [0]->dreg, offset_ins->dreg);
                                                EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, load, field->type, dreg, 0);
@@ -11310,6 +11532,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        MonoInst *offset_ins;
 
                                        offset_ins = emit_get_rgctx_field (cfg, context_used, field, MONO_RGCTX_INFO_FIELD_OFFSET);
+                                       /* The value is offset by 1 */
+                                       EMIT_NEW_BIALU_IMM (cfg, ins, OP_PSUB_IMM, offset_ins->dreg, offset_ins->dreg, 1);
                                        dreg = alloc_ireg_mp (cfg);
                                        EMIT_NEW_BIALU (cfg, ins, OP_PADD, dreg, static_data->dreg, offset_ins->dreg);
                                } else if (field->offset == 0) {
@@ -11709,6 +11933,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                int index_reg = sp [1]->dreg;
                                int offset = (mono_class_array_element_size (klass) * sp [1]->inst_c0) + MONO_STRUCT_OFFSET (MonoArray, vector);
 
+                               if (SIZEOF_REGISTER == 8 && COMPILE_LLVM (cfg))
+                                       MONO_EMIT_NEW_UNALU (cfg, OP_ZEXT_I4, index_reg, index_reg);
+
                                MONO_EMIT_BOUNDS_CHECK (cfg, array_reg, MonoArray, max_length, index_reg);
                                EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, ins, &klass->byval_arg, array_reg, offset);
                        } else {
@@ -11881,7 +12108,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD ||
                                        method->wrapper_type == MONO_WRAPPER_SYNCHRONIZED) {
                                handle = mono_method_get_wrapper_data (method, n);
-                               handle_class = mono_method_get_wrapper_data (method, n + 1);
+                               handle_class = (MonoClass *)mono_method_get_wrapper_data (method, n + 1);
                                if (handle_class == mono_defaults.typehandle_class)
                                        handle = &((MonoClass*)handle)->byval_arg;
                        }
@@ -11900,11 +12127,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                           typeof(Gen<>). */
                                        context_used = 0;
                                } else if (handle_class == mono_defaults.typehandle_class) {
-                                       context_used = mini_class_check_context_used (cfg, mono_class_from_mono_type (handle));
+                                       context_used = mini_class_check_context_used (cfg, mono_class_from_mono_type ((MonoType *)handle));
                                } else if (handle_class == mono_defaults.fieldhandle_class)
                                        context_used = mini_class_check_context_used (cfg, ((MonoClassField*)handle)->parent);
                                else if (handle_class == mono_defaults.methodhandle_class)
-                                       context_used = mini_method_check_context_used (cfg, handle);
+                                       context_used = mini_method_check_context_used (cfg, (MonoMethod *)handle);
                                else
                                        g_assert_not_reached ();
                        }
@@ -11940,7 +12167,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        (cmethod = mini_get_method (cfg, method, read32 (ip + 6), NULL, generic_context)) &&
                                        (cmethod->klass == mono_defaults.systemtype_class) &&
                                        (strcmp (cmethod->name, "GetTypeFromHandle") == 0)) {
-                                       MonoClass *tclass = mono_class_from_mono_type (handle);
+                                       MonoClass *tclass = mono_class_from_mono_type ((MonoType *)handle);
 
                                        mono_class_init (tclass);
                                        if (context_used) {
@@ -11962,7 +12189,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        EMIT_NEW_TYPE_FROM_HANDLE_CONST (cfg, ins, image, n, generic_context);
                                                }
                                        } else {
-                                               EMIT_NEW_PCONST (cfg, ins, mono_type_get_object (cfg->domain, handle));
+                                               EMIT_NEW_PCONST (cfg, ins, mono_type_get_object (cfg->domain, (MonoType *)handle));
                                        }
                                        ins->type = STACK_OBJ;
                                        ins->klass = cmethod->klass;
@@ -11975,14 +12202,14 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        if (context_used) {
                                                if (handle_class == mono_defaults.typehandle_class) {
                                                        ins = emit_get_rgctx_klass (cfg, context_used,
-                                                                       mono_class_from_mono_type (handle),
+                                                                       mono_class_from_mono_type ((MonoType *)handle),
                                                                        MONO_RGCTX_INFO_TYPE);
                                                } else if (handle_class == mono_defaults.methodhandle_class) {
                                                        ins = emit_get_rgctx_method (cfg, context_used,
-                                                                       handle, MONO_RGCTX_INFO_METHOD);
+                                                                       (MonoMethod *)handle, MONO_RGCTX_INFO_METHOD);
                                                } else if (handle_class == mono_defaults.fieldhandle_class) {
                                                        ins = emit_get_rgctx_field (cfg, context_used,
-                                                                       handle, MONO_RGCTX_INFO_CLASS_FIELD);
+                                                                       (MonoClassField *)handle, MONO_RGCTX_INFO_CLASS_FIELD);
                                                } else {
                                                        g_assert_not_reached ();
                                                }
@@ -12105,7 +12332,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                MonoExceptionClause *clause;
 
                                for (tmp = handlers; tmp; tmp = tmp->next) {
-                                       clause = tmp->data;
+                                       clause = (MonoExceptionClause *)tmp->data;
                                        tblock = cfg->cil_offset_to_bb [clause->handler_offset];
                                        g_assert (tblock);
                                        link_bblock (cfg, cfg->cbb, tblock);
@@ -12120,8 +12347,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                /* 
                                                 * Link the finally bblock with the target, since it will
                                                 * conceptually branch there.
-                                                * FIXME: Have to link the bblock containing the endfinally.
                                                 */
+                                               GET_BBLOCK (cfg, tblock, cfg->cil_start + clause->handler_offset + clause->handler_len - 1);
                                                GET_BBLOCK (cfg, target_bb, target);
                                                link_bblock (cfg, tblock, target_bb);
                                        }
@@ -12177,43 +12404,26 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                break;
                        }
-                       case CEE_MONO_LDPTR_CARD_TABLE: {
-                               int shift_bits;
-                               gpointer card_mask;
-                               CHECK_STACK_OVF (1);
-
-                               if (cfg->compile_aot)
-                                       EMIT_NEW_AOTCONST (cfg, ins, MONO_PATCH_INFO_GC_CARD_TABLE_ADDR, NULL);
-                               else
-                                       EMIT_NEW_PCONST (cfg, ins, mono_gc_get_card_table (&shift_bits, &card_mask));
-
-                               *sp++ = ins;
-                               ip += 2;
-                               inline_costs += 10 * num_calls++;
-                               break;
-                       }
-                       case CEE_MONO_LDPTR_NURSERY_START: {
-                               int shift_bits;
-                               size_t size;
-                               CHECK_STACK_OVF (1);
-
-                               if (cfg->compile_aot)
-                                       EMIT_NEW_AOTCONST (cfg, ins, MONO_PATCH_INFO_GC_NURSERY_START, NULL);
-                               else
-                                       EMIT_NEW_PCONST (cfg, ins, mono_gc_get_nursery (&shift_bits, &size));
-
-                               *sp++ = ins;
-                               ip += 2;
-                               inline_costs += 10 * num_calls++;
-                               break;
-                       }
+                       case CEE_MONO_LDPTR_CARD_TABLE:
+                       case CEE_MONO_LDPTR_NURSERY_START:
+                       case CEE_MONO_LDPTR_NURSERY_BITS:
                        case CEE_MONO_LDPTR_INT_REQ_FLAG: {
                                CHECK_STACK_OVF (1);
 
-                               if (cfg->compile_aot)
-                                       EMIT_NEW_AOTCONST (cfg, ins, MONO_PATCH_INFO_INTERRUPTION_REQUEST_FLAG, NULL);
-                               else
-                                       EMIT_NEW_PCONST (cfg, ins, mono_thread_interruption_request_flag ());
+                               switch (ip [1]) {
+                                       case CEE_MONO_LDPTR_CARD_TABLE:
+                                               ins = emit_runtime_constant (cfg, MONO_PATCH_INFO_GC_CARD_TABLE_ADDR, NULL);
+                                               break;
+                                       case CEE_MONO_LDPTR_NURSERY_START:
+                                               ins = emit_runtime_constant (cfg, MONO_PATCH_INFO_GC_NURSERY_START, NULL);
+                                               break;
+                                       case CEE_MONO_LDPTR_NURSERY_BITS:
+                                               ins = emit_runtime_constant (cfg, MONO_PATCH_INFO_GC_NURSERY_BITS, NULL);
+                                               break;
+                                       case CEE_MONO_LDPTR_INT_REQ_FLAG:
+                                               ins = emit_runtime_constant (cfg, MONO_PATCH_INFO_INTERRUPTION_REQUEST_FLAG, NULL);
+                                               break;
+                               }
 
                                *sp++ = ins;
                                ip += 2;
@@ -12261,7 +12471,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                CHECK_OPSIZE (6);
                                token = read32 (ip + 2);
 
-                               cmethod = mono_method_get_wrapper_data (method, token);
+                               cmethod = (MonoMethod *)mono_method_get_wrapper_data (method, token);
 
                                if (cfg->compile_aot) {
                                        EMIT_NEW_AOTCONST (cfg, ins, MONO_PATCH_INFO_ICALL_ADDR, cmethod);
@@ -12324,7 +12534,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                CHECK_OPSIZE (6);
                                --sp;
                                token = read32 (ip + 2);
-                               klass = mono_method_get_wrapper_data (method, token);
+                               klass = (MonoClass *)mono_method_get_wrapper_data (method, token);
                                g_assert (klass->valuetype);
                                mono_class_init (klass);
 
@@ -12413,11 +12623,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                ip += 2;
                                break;
                        case CEE_MONO_TLS: {
-                               int key;
+                               MonoTlsKey key;
 
                                CHECK_STACK_OVF (1);
                                CHECK_OPSIZE (6);
-                               key = (gint32)read32 (ip + 2);
+                               key = (MonoTlsKey)read32 (ip + 2);
                                g_assert (key < TLS_KEY_NUM);
 
                                ins = mono_create_tls_get (cfg, key);
@@ -12459,7 +12669,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                ins->sreg2 = sp [1]->dreg;
                                MONO_ADD_INS (cfg->cbb, ins);
 
-                               cfg->param_area = MAX (cfg->param_area, MONO_ARCH_DYN_CALL_PARAM_AREA);
+                               cfg->param_area = MAX (cfg->param_area, cfg->backend->dyn_call_param_area);
 
                                ip += 2;
                                inline_costs += 10 * num_calls++;
@@ -12485,7 +12695,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                ad_ins = mono_get_domain_intrinsic (cfg);
                                jit_tls_ins = mono_get_jit_tls_intrinsic (cfg);
 
-                               if (MONO_ARCH_HAVE_TLS_GET && ad_ins && jit_tls_ins) {
+                               if (cfg->backend->have_tls_get && ad_ins && jit_tls_ins) {
                                        NEW_BBLOCK (cfg, next_bb);
                                        NEW_BBLOCK (cfg, call_bb);
 
@@ -12531,6 +12741,109 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                ip += 2;
                                break;
                        }
+                       case CEE_MONO_CALLI_EXTRA_ARG: {
+                               MonoInst *addr;
+                               MonoMethodSignature *fsig;
+                               MonoInst *arg;
+
+                               /*
+                                * This is the same as CEE_CALLI, but passes an additional argument
+                                * to the called method in llvmonly mode.
+                                * This is only used by delegate invoke wrappers to call the
+                                * actual delegate method.
+                                */
+                               g_assert (method->wrapper_type == MONO_WRAPPER_DELEGATE_INVOKE);
+
+                               CHECK_OPSIZE (6);
+                               token = read32 (ip + 2);
+
+                               ins = NULL;
+
+                               cmethod = NULL;
+                               CHECK_STACK (1);
+                               --sp;
+                               addr = *sp;
+                               fsig = mini_get_signature (method, token, generic_context);
+
+                               n = fsig->param_count + fsig->hasthis + 1;
+
+                               CHECK_STACK (n);
+
+                               sp -= n;
+                               arg = sp [n - 1];
+
+                               if (cfg->llvm_only) {
+                                       /*
+                                        * The lowest bit of 'arg' determines whenever the callee uses the gsharedvt
+                                        * cconv. This is set by mono_init_delegate ().
+                                        */
+                                       if (cfg->gsharedvt && mini_is_gsharedvt_variable_signature (fsig)) {
+                                               MonoInst *callee = addr;
+                                               MonoInst *call, *localloc_ins;
+                                               MonoBasicBlock *is_gsharedvt_bb, *end_bb;
+                                               int low_bit_reg = alloc_preg (cfg);
+
+                                               NEW_BBLOCK (cfg, is_gsharedvt_bb);
+                                               NEW_BBLOCK (cfg, end_bb);
+
+                                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_PAND_IMM, low_bit_reg, arg->dreg, 1);
+                                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, low_bit_reg, 0);
+                                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_PBNE_UN, is_gsharedvt_bb);
+
+                                               /* Normal case: callee uses a normal cconv, have to add an out wrapper */
+                                               addr = emit_get_rgctx_sig (cfg, context_used,
+                                                                                                  fsig, MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI);
+                                               /*
+                                                * ADDR points to a gsharedvt-out wrapper, have to pass <callee, arg> as an extra arg.
+                                                */
+                                               MONO_INST_NEW (cfg, ins, OP_LOCALLOC_IMM);
+                                               ins->dreg = alloc_preg (cfg);
+                                               ins->inst_imm = 2 * SIZEOF_VOID_P;
+                                               MONO_ADD_INS (cfg->cbb, ins);
+                                               localloc_ins = ins;
+                                               cfg->flags |= MONO_CFG_HAS_ALLOCA;
+                                               MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, localloc_ins->dreg, 0, callee->dreg);
+                                               MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, localloc_ins->dreg, SIZEOF_VOID_P, arg->dreg);
+
+                                               call = emit_extra_arg_calli (cfg, fsig, sp, localloc_ins->dreg, addr);
+                                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+                                               /* Gsharedvt case: callee uses a gsharedvt cconv, no conversion is needed */
+                                               MONO_START_BB (cfg, is_gsharedvt_bb);
+                                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_PXOR_IMM, arg->dreg, arg->dreg, 1);
+                                               ins = emit_extra_arg_calli (cfg, fsig, sp, arg->dreg, callee);
+                                               ins->dreg = call->dreg;
+
+                                               MONO_START_BB (cfg, end_bb);
+                                       } else {
+                                               ins = emit_extra_arg_calli (cfg, fsig, sp, arg->dreg, addr);
+                                       }
+                               } else {
+                                       /* Same as CEE_CALLI */
+                                       if (cfg->gsharedvt && mini_is_gsharedvt_signature (fsig)) {
+                                               /*
+                                                * We pass the address to the gsharedvt trampoline in the rgctx reg
+                                                */
+                                               MonoInst *callee = addr;
+
+                                               addr = emit_get_rgctx_sig (cfg, context_used,
+                                                                                                  fsig, MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI);
+                                               ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, NULL, callee);
+                                       } else {
+                                               ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, NULL, NULL);
+                                       }
+                               }
+
+                               if (!MONO_TYPE_IS_VOID (fsig->ret))
+                                       *sp++ = mono_emit_widen_call_res (cfg, ins, fsig);
+
+                               CHECK_CFG_EXCEPTION;
+
+                               ip += 6;
+                               ins_flag = 0;
+                               constrained_class = NULL;
+                               break;
+                       }
                        default:
                                g_error ("opcode 0x%02x 0x%02x not handled", MONO_CUSTOM_PREFIX, ip [1]);
                                break;
@@ -12595,7 +12908,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        cmp->opcode = OP_ICOMPARE;
                                MONO_ADD_INS (cfg->cbb, cmp);
                                ins->type = STACK_I4;
-                               ins->dreg = alloc_dreg (cfg, ins->type);
+                               ins->dreg = alloc_dreg (cfg, (MonoStackType)ins->type);
                                type_from_op (cfg, ins, arg1, arg2);
 
                                if (cmp->opcode == OP_FCOMPARE || cmp->opcode == OP_RCOMPARE) {
@@ -12665,7 +12978,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                }
 
                                                /* FIXME: SGEN support */
-                                               if (invoke_context_used == 0) {
+                                               if (invoke_context_used == 0 || cfg->llvm_only) {
                                                        ip += 6;
                                                        if (cfg->verbose_level > 3)
                                                                g_print ("converting (in B%d: stack: %d) %s", cfg->cbb->block_num, (int)(sp - stack_start), mono_disasm_code_one (NULL, method, ip, NULL));
@@ -13550,7 +13863,7 @@ op_to_op_store_membase (int store_opcode, int opcode)
 }
 
 static inline int
-op_to_op_src1_membase (int load_opcode, int opcode)
+op_to_op_src1_membase (MonoCompile *cfg, int load_opcode, int opcode)
 {
 #ifdef TARGET_X86
        /* FIXME: This has sign extension issues */
@@ -13583,11 +13896,7 @@ op_to_op_src1_membase (int load_opcode, int opcode)
 
        switch (opcode) {
        case OP_X86_PUSH:
-#ifdef __mono_ilp32__
-               if (load_opcode == OP_LOADI8_MEMBASE)
-#else
-               if ((load_opcode == OP_LOAD_MEMBASE) || (load_opcode == OP_LOADI8_MEMBASE))
-#endif
+               if ((load_opcode == OP_LOAD_MEMBASE && !cfg->backend->ilp32) || (load_opcode == OP_LOADI8_MEMBASE))
                        return OP_X86_PUSH_MEMBASE;
                break;
                /* FIXME: This only works for 32 bit immediates
@@ -13602,13 +13911,9 @@ op_to_op_src1_membase (int load_opcode, int opcode)
                break;
        case OP_COMPARE:
        case OP_LCOMPARE:
-#ifdef __mono_ilp32__
-               if (load_opcode == OP_LOAD_MEMBASE)
+               if (cfg->backend->ilp32 && load_opcode == OP_LOAD_MEMBASE)
                        return OP_AMD64_ICOMPARE_MEMBASE_REG;
-               if (load_opcode == OP_LOADI8_MEMBASE)
-#else
-               if ((load_opcode == OP_LOAD_MEMBASE) || (load_opcode == OP_LOADI8_MEMBASE))
-#endif
+               if ((load_opcode == OP_LOAD_MEMBASE && !cfg->backend->ilp32) || (load_opcode == OP_LOADI8_MEMBASE))
                        return OP_AMD64_COMPARE_MEMBASE_REG;
                break;
        case OP_ICOMPARE:
@@ -13622,7 +13927,7 @@ op_to_op_src1_membase (int load_opcode, int opcode)
 }
 
 static inline int
-op_to_op_src2_membase (int load_opcode, int opcode)
+op_to_op_src2_membase (MonoCompile *cfg, int load_opcode, int opcode)
 {
 #ifdef TARGET_X86
        if (!((load_opcode == OP_LOAD_MEMBASE) || (load_opcode == OP_LOADI4_MEMBASE) || (load_opcode == OP_LOADU4_MEMBASE)))
@@ -13646,11 +13951,7 @@ op_to_op_src2_membase (int load_opcode, int opcode)
 #endif
 
 #ifdef TARGET_AMD64
-#ifdef __mono_ilp32__
-       if ((load_opcode == OP_LOADI4_MEMBASE) || (load_opcode == OP_LOADU4_MEMBASE) || (load_opcode == OP_LOAD_MEMBASE) ) {
-#else
-       if ((load_opcode == OP_LOADI4_MEMBASE) || (load_opcode == OP_LOADU4_MEMBASE)) {
-#endif
+       if ((load_opcode == OP_LOADI4_MEMBASE) || (load_opcode == OP_LOADU4_MEMBASE) || (load_opcode == OP_LOAD_MEMBASE && cfg->backend->ilp32)) {
                switch (opcode) {
                case OP_ICOMPARE:
                        return OP_AMD64_ICOMPARE_REG_MEMBASE;
@@ -13665,11 +13966,7 @@ op_to_op_src2_membase (int load_opcode, int opcode)
                case OP_IXOR:
                        return OP_X86_XOR_REG_MEMBASE;
                }
-#ifdef __mono_ilp32__
-       } else if (load_opcode == OP_LOADI8_MEMBASE) {
-#else
-       } else if ((load_opcode == OP_LOADI8_MEMBASE) || (load_opcode == OP_LOAD_MEMBASE)) {
-#endif
+       } else if ((load_opcode == OP_LOADI8_MEMBASE) || (load_opcode == OP_LOAD_MEMBASE && !cfg->backend->ilp32)) {
                switch (opcode) {
                case OP_COMPARE:
                case OP_LCOMPARE:
@@ -13730,7 +14027,7 @@ mono_handle_global_vregs (MonoCompile *cfg)
        MonoBasicBlock *bb;
        int i, pos;
 
-       vreg_to_bb = mono_mempool_alloc0 (cfg->mempool, sizeof (gint32*) * cfg->next_vreg + 1);
+       vreg_to_bb = (gint32 *)mono_mempool_alloc0 (cfg->mempool, sizeof (gint32*) * cfg->next_vreg + 1);
 
 #ifdef MONO_ARCH_SIMD_INTRINSICS
        if (cfg->uses_simd_intrinsics)
@@ -13868,6 +14165,11 @@ mono_handle_global_vregs (MonoCompile *cfg)
                        if (mono_arch_is_soft_float ())
                                break;
 
+                       /*
+                       if (var->type == STACK_VTYPE && cfg->gsharedvt && mini_is_gsharedvt_variable_type (var->inst_vtype))
+                               break;
+                       */
+
                        /* Arguments are implicitly global */
                        /* Putting R4 vars into registers doesn't work currently */
                        /* The gsharedvt vars are implicitly referenced by ldaddr opcodes, but those opcodes are only generated later */
@@ -13956,6 +14258,39 @@ mono_handle_global_vregs (MonoCompile *cfg)
                cfg->locals_start = cfg->num_varinfo;
 }
 
+/*
+ * mono_allocate_gsharedvt_vars:
+ *
+ *   Allocate variables with gsharedvt types to entries in the MonoGSharedVtMethodRuntimeInfo.entries array.
+ * Initialize cfg->gsharedvt_vreg_to_idx with the mapping between vregs and indexes.
+ */
+void
+mono_allocate_gsharedvt_vars (MonoCompile *cfg)
+{
+       int i;
+
+       cfg->gsharedvt_vreg_to_idx = (int *)mono_mempool_alloc0 (cfg->mempool, sizeof (int) * cfg->next_vreg);
+
+       for (i = 0; i < cfg->num_varinfo; ++i) {
+               MonoInst *ins = cfg->varinfo [i];
+               int idx;
+
+               if (mini_is_gsharedvt_variable_type (ins->inst_vtype)) {
+                       if (i >= cfg->locals_start) {
+                               /* Local */
+                               idx = get_gsharedvt_info_slot (cfg, ins->inst_vtype, MONO_RGCTX_INFO_LOCAL_OFFSET);
+                               cfg->gsharedvt_vreg_to_idx [ins->dreg] = idx + 1;
+                               ins->opcode = OP_GSHAREDVT_LOCAL;
+                               ins->inst_imm = idx;
+                       } else {
+                               /* Arg */
+                               cfg->gsharedvt_vreg_to_idx [ins->dreg] = -1;
+                               ins->opcode = OP_GSHAREDVT_ARG_REGOFFSET;
+                       }
+               }
+       }
+}
+
 /**
  * mono_spill_global_vars:
  *
@@ -13973,10 +14308,9 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
        guint32 *lvregs;
        guint32 i, lvregs_len;
        gboolean dest_has_lvreg = FALSE;
-       guint32 stacktypes [128];
+       MonoStackType stacktypes [128];
        MonoInst **live_range_start, **live_range_end;
        MonoBasicBlock **live_range_start_bb, **live_range_end_bb;
-       int *gsharedvt_vreg_to_idx = NULL;
 
        *need_local_opts = FALSE;
 
@@ -14035,29 +14369,6 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                                ins->flags |= MONO_INST_GC_TRACK;
                }
        }
-
-       if (cfg->gsharedvt) {
-               gsharedvt_vreg_to_idx = mono_mempool_alloc0 (cfg->mempool, sizeof (int) * cfg->next_vreg);
-
-               for (i = 0; i < cfg->num_varinfo; ++i) {
-                       MonoInst *ins = cfg->varinfo [i];
-                       int idx;
-
-                       if (mini_is_gsharedvt_variable_type (ins->inst_vtype)) {
-                               if (i >= cfg->locals_start) {
-                                       /* Local */
-                                       idx = get_gsharedvt_info_slot (cfg, ins->inst_vtype, MONO_RGCTX_INFO_LOCAL_OFFSET);
-                                       gsharedvt_vreg_to_idx [ins->dreg] = idx + 1;
-                                       ins->opcode = OP_GSHAREDVT_LOCAL;
-                                       ins->inst_imm = idx;
-                               } else {
-                                       /* Arg */
-                                       gsharedvt_vreg_to_idx [ins->dreg] = -1;
-                                       ins->opcode = OP_GSHAREDVT_ARG_REGOFFSET;
-                               }
-                       }
-               }
-       }
                
        /* FIXME: widening and truncation */
 
@@ -14067,8 +14378,8 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
         * the variable again.
         */
        orig_next_vreg = cfg->next_vreg;
-       vreg_to_lvreg = mono_mempool_alloc0 (cfg->mempool, sizeof (guint32) * cfg->next_vreg);
-       lvregs = mono_mempool_alloc (cfg->mempool, sizeof (guint32) * 1024);
+       vreg_to_lvreg = (guint32 *)mono_mempool_alloc0 (cfg->mempool, sizeof (guint32) * cfg->next_vreg);
+       lvregs = (guint32 *)mono_mempool_alloc (cfg->mempool, sizeof (guint32) * 1024);
        lvregs_len = 0;
 
        /* 
@@ -14119,7 +14430,7 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                         * when variable addresses are known.
                         */
                        if (ins->opcode == OP_LDADDR) {
-                               MonoInst *var = ins->inst_p0;
+                               MonoInst *var = (MonoInst *)ins->inst_p0;
 
                                if (var->opcode == OP_VTARG_ADDR) {
                                        /* Happens on SPARC/S390 where vtypes are passed by reference */
@@ -14134,16 +14445,16 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                                                ins->inst_offset = vtaddr->inst_offset;
                                        } else
                                                NOT_IMPLEMENTED;
-                               } else if (cfg->gsharedvt && gsharedvt_vreg_to_idx [var->dreg] < 0) {
+                               } else if (cfg->gsharedvt && cfg->gsharedvt_vreg_to_idx [var->dreg] < 0) {
                                        /* gsharedvt arg passed by ref */
                                        g_assert (var->opcode == OP_GSHAREDVT_ARG_REGOFFSET);
 
                                        ins->opcode = OP_LOAD_MEMBASE;
                                        ins->inst_basereg = var->inst_basereg;
                                        ins->inst_offset = var->inst_offset;
-                               } else if (cfg->gsharedvt && gsharedvt_vreg_to_idx [var->dreg]) {
+                               } else if (cfg->gsharedvt && cfg->gsharedvt_vreg_to_idx [var->dreg]) {
                                        MonoInst *load, *load2, *load3;
-                                       int idx = gsharedvt_vreg_to_idx [var->dreg] - 1;
+                                       int idx = cfg->gsharedvt_vreg_to_idx [var->dreg] - 1;
                                        int reg1, reg2, reg3;
                                        MonoInst *info_var = cfg->gsharedvt_info_var;
                                        MonoInst *locals_var = cfg->gsharedvt_locals_var;
@@ -14350,7 +14661,7 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                                                         * sregs could use it. So set a flag, and do it after
                                                         * the sregs.
                                                         */
-                                                       if ((!MONO_ARCH_USE_FPSTACK || ((store_opcode != OP_STORER8_MEMBASE_REG) && (store_opcode != OP_STORER4_MEMBASE_REG))) && !((var)->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)))
+                                                       if ((!cfg->backend->use_fpstack || ((store_opcode != OP_STORER8_MEMBASE_REG) && (store_opcode != OP_STORER4_MEMBASE_REG))) && !((var)->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)))
                                                                dest_has_lvreg = TRUE;
                                                }
                                        }
@@ -14421,13 +14732,13 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                                        }
 
                                        /* Try to fuse the load into the instruction */
-                                       if ((srcindex == 0) && (op_to_op_src1_membase (load_opcode, ins->opcode) != -1)) {
-                                               ins->opcode = op_to_op_src1_membase (load_opcode, ins->opcode);
+                                       if ((srcindex == 0) && (op_to_op_src1_membase (cfg, load_opcode, ins->opcode) != -1)) {
+                                               ins->opcode = op_to_op_src1_membase (cfg, load_opcode, ins->opcode);
                                                sregs [0] = var->inst_basereg;
                                                //mono_inst_set_src_registers (ins, sregs);
                                                ins->inst_offset = var->inst_offset;
-                                       } else if ((srcindex == 1) && (op_to_op_src2_membase (load_opcode, ins->opcode) != -1)) {
-                                               ins->opcode = op_to_op_src2_membase (load_opcode, ins->opcode);
+                                       } else if ((srcindex == 1) && (op_to_op_src2_membase (cfg, load_opcode, ins->opcode) != -1)) {
+                                               ins->opcode = op_to_op_src2_membase (cfg, load_opcode, ins->opcode);
                                                sregs [1] = var->inst_basereg;
                                                //mono_inst_set_src_registers (ins, sregs);
                                                ins->inst_offset = var->inst_offset;
@@ -14440,7 +14751,7 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
 
                                                        sreg = alloc_dreg (cfg, stacktypes [regtype]);
 
-                                                       if ((!MONO_ARCH_USE_FPSTACK || ((load_opcode != OP_LOADR8_MEMBASE) && (load_opcode != OP_LOADR4_MEMBASE))) && !((var)->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)) && !no_lvreg) {
+                                                       if ((!cfg->backend->use_fpstack || ((load_opcode != OP_LOADR8_MEMBASE) && (load_opcode != OP_LOADR4_MEMBASE))) && !((var)->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)) && !no_lvreg) {
                                                                if (var->dreg == prev_dreg) {
                                                                        /*
                                                                         * sreg refers to the value loaded by the load
@@ -14547,12 +14858,11 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                }
        }
        
-#ifdef MONO_ARCH_HAVE_LIVERANGE_OPS
        /*
         * Emit LIVERANGE_START/LIVERANGE_END opcodes, the backend will implement them
         * by storing the current native offset into MonoMethodVar->live_range_start/end.
         */
-       if (cfg->compute_precise_live_ranges && cfg->comp_done & MONO_COMP_LIVENESS) {
+       if (cfg->backend->have_liverange_ops && cfg->compute_precise_live_ranges && cfg->comp_done & MONO_COMP_LIVENESS) {
                for (i = 0; i < cfg->num_varinfo; ++i) {
                        int vreg = MONO_VARINFO (cfg, i)->vreg;
                        MonoInst *ins;
@@ -14574,7 +14884,6 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                        }
                }
        }
-#endif
 
        if (cfg->gsharedvt_locals_var_ins) {
                /* Nullify if unused */
index 9e7412b794f0b116a45438ce5532773650a7cc99..a1e877743ae410b190a1083f1abbe3a355900435 100644 (file)
@@ -26,7 +26,7 @@
 #include <mono/metadata/threads.h>
 #include <mono/metadata/profiler-private.h>
 #include <mono/metadata/mono-debug.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/utils/mono-math.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-memory-model.h>
@@ -61,8 +61,8 @@ static gboolean optimize_for_xen = TRUE;
 #endif
 
 /* This mutex protects architecture specific caches */
-#define mono_mini_arch_lock() mono_mutex_lock (&mini_arch_mutex)
-#define mono_mini_arch_unlock() mono_mutex_unlock (&mini_arch_mutex)
+#define mono_mini_arch_lock() mono_os_mutex_lock (&mini_arch_mutex)
+#define mono_mini_arch_unlock() mono_os_mutex_unlock (&mini_arch_mutex)
 static mono_mutex_t mini_arch_mutex;
 
 /* The single step trampoline */
@@ -419,7 +419,7 @@ mono_arch_nacl_skip_nops (guint8* code)
 
 #endif /*__native_client_codegen__*/
 
-static inline void 
+static void
 amd64_patch (unsigned char* code, gpointer target)
 {
        guint8 rex = 0;
@@ -719,11 +719,199 @@ collect_field_info_nested (MonoClass *klass, MonoMarshalField *fields, int index
        return index;
 }
 
+#ifdef TARGET_WIN32
+static void
+add_valuetype_win64 (MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
+                                        gboolean is_return,
+                                        guint32 *gr, guint32 *fr, guint32 *stack_size)
+{
+       guint32 size, i, nfields;
+       guint32 argsize = 8;
+       ArgumentClass arg_class;
+       MonoMarshalType *info = NULL;
+       MonoMarshalField *fields = NULL;
+       MonoClass *klass;
+       gboolean pass_on_stack = FALSE;
+
+       klass = mono_class_from_mono_type (type);
+       size = mini_type_stack_size_full (&klass->byval_arg, NULL, sig->pinvoke);
+       if (!sig->pinvoke)
+               pass_on_stack = TRUE;
+
+       /* If this struct can't be split up naturally into 8-byte */
+       /* chunks (registers), pass it on the stack.              */
+       if (sig->pinvoke && !pass_on_stack) {
+               guint32 align;
+               guint32 field_size;
+
+               info = mono_marshal_load_type_info (klass);
+               g_assert (info);
+
+               /*
+                * Collect field information recursively to be able to
+                * handle nested structures.
+                */
+               nfields = count_fields_nested (klass);
+               fields = g_new0 (MonoMarshalField, nfields);
+               collect_field_info_nested (klass, fields, 0, 0);
+
+               for (i = 0; i < nfields; ++i) {
+                       field_size = mono_marshal_type_size (fields [i].field->type,
+                                                          fields [i].mspec,
+                                                          &align, TRUE, klass->unicode);
+                       if ((fields [i].offset < 8) && (fields [i].offset + field_size) > 8) {
+                               pass_on_stack = TRUE;
+                               break;
+                       }
+               }
+       }
+
+       if (pass_on_stack) {
+               /* Allways pass in memory */
+               ainfo->offset = *stack_size;
+               *stack_size += ALIGN_TO (size, 8);
+               ainfo->storage = is_return ? ArgValuetypeAddrInIReg : ArgOnStack;
+
+               g_free (fields);
+               return;
+       }
+
+       if (!sig->pinvoke) {
+               int n = mono_class_value_size (klass, NULL);
+
+               argsize = n;
+
+               if (n > 8)
+                       arg_class = ARG_CLASS_MEMORY;
+               else
+                       /* Always pass in 1 integer register */
+                       arg_class = ARG_CLASS_INTEGER;
+       } else {
+               g_assert (info);
+
+               if (!fields) {
+                       ainfo->storage = ArgValuetypeInReg;
+                       ainfo->pair_storage [0] = ainfo->pair_storage [1] = ArgNone;
+                       return;
+               }
+
+               switch (info->native_size) {
+               case 1: case 2: case 4: case 8:
+                       break;
+               default:
+                       if (is_return) {
+                               ainfo->storage = ArgValuetypeAddrInIReg;
+                               ainfo->offset = *stack_size;
+                               *stack_size += ALIGN_TO (info->native_size, 8);
+                       }
+                       else {
+                               ainfo->storage = ArgValuetypeAddrInIReg;
+
+                               if (*gr < PARAM_REGS) {
+                                       ainfo->pair_storage [0] = ArgInIReg;
+                                       ainfo->pair_regs [0] = param_regs [*gr];
+                                       (*gr) ++;
+                               }
+                               else {
+                                       ainfo->pair_storage [0] = ArgOnStack;
+                                       ainfo->offset = *stack_size;
+                                       *stack_size += 8;
+                               }
+                       }
+
+                       g_free (fields);
+                       return;
+               }
+
+               int size;
+               guint32 align;
+               ArgumentClass class1;
+
+               if (nfields == 0)
+                       class1 = ARG_CLASS_MEMORY;
+               else
+                       class1 = ARG_CLASS_NO_CLASS;
+               for (i = 0; i < nfields; ++i) {
+                       size = mono_marshal_type_size (fields [i].field->type,
+                                                                                  fields [i].mspec,
+                                                                                  &align, TRUE, klass->unicode);
+                       /* How far into this quad this data extends.*/
+                       /* (8 is size of quad) */
+                       argsize = fields [i].offset + size;
+
+                       class1 = merge_argument_class_from_type (fields [i].field->type, class1);
+               }
+               g_assert (class1 != ARG_CLASS_NO_CLASS);
+               arg_class = class1;
+       }
+
+       g_free (fields);
+
+       /* Allocate registers */
+       {
+               int orig_gr = *gr;
+               int orig_fr = *fr;
+
+               while (argsize != 1 && argsize != 2 && argsize != 4 && argsize != 8)
+                       argsize ++;
+
+               ainfo->storage = ArgValuetypeInReg;
+               ainfo->pair_storage [0] = ainfo->pair_storage [1] = ArgNone;
+               ainfo->pair_size [0] = argsize;
+               ainfo->pair_size [1] = 0;
+               ainfo->nregs = 1;
+               switch (arg_class) {
+               case ARG_CLASS_INTEGER:
+                       if (*gr >= PARAM_REGS)
+                               arg_class = ARG_CLASS_MEMORY;
+                       else {
+                               ainfo->pair_storage [0] = ArgInIReg;
+                               if (is_return)
+                                       ainfo->pair_regs [0] = return_regs [*gr];
+                               else
+                                       ainfo->pair_regs [0] = param_regs [*gr];
+                               (*gr) ++;
+                       }
+                       break;
+               case ARG_CLASS_SSE:
+                       if (*fr >= FLOAT_PARAM_REGS)
+                               arg_class = ARG_CLASS_MEMORY;
+                       else {
+                               if (argsize <= 4)
+                                       ainfo->pair_storage [0] = ArgInFloatSSEReg;
+                               else
+                                       ainfo->pair_storage [0] = ArgInDoubleSSEReg;
+                               ainfo->pair_regs [0] = *fr;
+                               (*fr) ++;
+                       }
+                       break;
+               case ARG_CLASS_MEMORY:
+                       break;
+               default:
+                       g_assert_not_reached ();
+               }
+
+               if (arg_class == ARG_CLASS_MEMORY) {
+                       /* Revert possible register assignments */
+                       *gr = orig_gr;
+                       *fr = orig_fr;
+
+                       ainfo->offset = *stack_size;
+                       *stack_size += sizeof (mgreg_t);
+                       ainfo->storage = is_return ? ArgValuetypeAddrInIReg : ArgOnStack;
+               }
+       }
+}
+#endif /* TARGET_WIN32 */
+
 static void
 add_valuetype (MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
                           gboolean is_return,
                           guint32 *gr, guint32 *fr, guint32 *stack_size)
 {
+#ifdef TARGET_WIN32
+       add_valuetype_win64 (sig, ainfo, type, is_return, gr, fr, stack_size);
+#else
        guint32 size, quad, nquads, i, nfields;
        /* Keep track of the size used in each quad so we can */
        /* use the right size when copying args/return vars.  */
@@ -736,17 +924,11 @@ add_valuetype (MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
 
        klass = mono_class_from_mono_type (type);
        size = mini_type_stack_size_full (&klass->byval_arg, NULL, sig->pinvoke);
-#ifndef TARGET_WIN32
        if (!sig->pinvoke && ((is_return && (size == 8)) || (!is_return && (size <= 16)))) {
                /* We pass and return vtypes of size 8 in a register */
        } else if (!sig->pinvoke || (size == 0) || (size > 16)) {
                pass_on_stack = TRUE;
        }
-#else
-       if (!sig->pinvoke) {
-               pass_on_stack = TRUE;
-       }
-#endif
 
        /* If this struct can't be split up naturally into 8-byte */
        /* chunks (registers), pass it on the stack.              */
@@ -776,13 +958,11 @@ add_valuetype (MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
                }
        }
 
-#ifndef TARGET_WIN32
        if (size == 0) {
                ainfo->storage = ArgValuetypeInReg;
                ainfo->pair_storage [0] = ainfo->pair_storage [1] = ArgNone;
                return;
        }
-#endif
 
        if (pass_on_stack) {
                /* Allways pass in memory */
@@ -794,10 +974,6 @@ add_valuetype (MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
                return;
        }
 
-       /* FIXME: Handle structs smaller than 8 bytes */
-       //if ((size % 8) != 0)
-       //      NOT_IMPLEMENTED;
-
        if (size > 8)
                nquads = 2;
        else
@@ -831,7 +1007,6 @@ add_valuetype (MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
                        return;
                }
 
-#ifndef TARGET_WIN32
                if (info->native_size > 16) {
                        ainfo->offset = *stack_size;
                        *stack_size += ALIGN_TO (info->native_size, 8);
@@ -840,35 +1015,6 @@ add_valuetype (MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
                        g_free (fields);
                        return;
                }
-#else
-               switch (info->native_size) {
-               case 1: case 2: case 4: case 8:
-                       break;
-               default:
-                       if (is_return) {
-                               ainfo->storage = ArgValuetypeAddrInIReg;
-                               ainfo->offset = *stack_size;
-                               *stack_size += ALIGN_TO (info->native_size, 8);
-                       }
-                       else {
-                               ainfo->storage = ArgValuetypeAddrInIReg;
-
-                               if (*gr < PARAM_REGS) {
-                                       ainfo->pair_storage [0] = ArgInIReg;
-                                       ainfo->pair_regs [0] = param_regs [*gr];
-                                       (*gr) ++;
-                               }
-                               else {
-                                       ainfo->pair_storage [0] = ArgOnStack;
-                                       ainfo->offset = *stack_size;
-                                       *stack_size += 8;
-                               }
-                       }
-
-                       g_free (fields);
-                       return;
-               }
-#endif
 
                args [0] = ARG_CLASS_NO_CLASS;
                args [1] = ARG_CLASS_NO_CLASS;
@@ -876,7 +1022,7 @@ add_valuetype (MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
                        int size;
                        guint32 align;
                        ArgumentClass class1;
-               
+
                        if (nfields == 0)
                                class1 = ARG_CLASS_MEMORY;
                        else
@@ -975,6 +1121,7 @@ add_valuetype (MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
                        ainfo->storage = is_return ? ArgValuetypeAddrInIReg : ArgOnStack;
                }
        }
+#endif /* !TARGET_WIN32 */
 }
 
 /*
@@ -995,9 +1142,9 @@ get_call_info (MonoMemPool *mp, MonoMethodSignature *sig)
        gboolean is_pinvoke = sig->pinvoke;
 
        if (mp)
-               cinfo = mono_mempool_alloc0 (mp, sizeof (CallInfo) + (sizeof (ArgInfo) * n));
+               cinfo = (CallInfo *)mono_mempool_alloc0 (mp, sizeof (CallInfo) + (sizeof (ArgInfo) * n));
        else
-               cinfo = g_malloc0 (sizeof (CallInfo) + (sizeof (ArgInfo) * n));
+               cinfo = (CallInfo *)g_malloc0 (sizeof (CallInfo) + (sizeof (ArgInfo) * n));
 
        cinfo->nargs = n;
 
@@ -1054,22 +1201,14 @@ get_call_info (MonoMemPool *mp, MonoMethodSignature *sig)
                        break;
                }
                /* fall through */
-#if defined( __native_client_codegen__ )
-       case MONO_TYPE_TYPEDBYREF:
-#endif
-       case MONO_TYPE_VALUETYPE: {
+       case MONO_TYPE_VALUETYPE:
+       case MONO_TYPE_TYPEDBYREF: {
                guint32 tmp_gr = 0, tmp_fr = 0, tmp_stacksize = 0;
 
                add_valuetype (sig, &cinfo->ret, ret_type, TRUE, &tmp_gr, &tmp_fr, &tmp_stacksize);
                g_assert (cinfo->ret.storage != ArgInIReg);
                break;
        }
-#if !defined( __native_client_codegen__ )
-       case MONO_TYPE_TYPEDBYREF:
-               /* Same as a valuetype with size 24 */
-               cinfo->ret.storage = ArgValuetypeAddrInIReg;
-               break;
-#endif
        case MONO_TYPE_VAR:
        case MONO_TYPE_MVAR:
                g_assert (mini_is_gsharedvt_type (ret_type));
@@ -1173,7 +1312,7 @@ get_call_info (MonoMemPool *mp, MonoMethodSignature *sig)
                                add_general (&gr, &stack_size, ainfo);
                                break;
                        }
-                       if (mini_is_gsharedvt_type (ptype)) {
+                       if (mini_is_gsharedvt_variable_type (ptype)) {
                                /* gsharedvt arguments are passed by ref */
                                add_general (&gr, &stack_size, ainfo);
                                if (ainfo->storage == ArgInIReg)
@@ -1310,7 +1449,7 @@ mono_arch_cpu_init (void)
 void
 mono_arch_init (void)
 {
-       mono_mutex_init_recursive (&mini_arch_mutex);
+       mono_os_mutex_init_recursive (&mini_arch_mutex);
 #if defined(__native_client_codegen__)
        mono_native_tls_alloc (&nacl_instruction_depth, NULL);
        mono_native_tls_set_value (nacl_instruction_depth, (gpointer)0);
@@ -1333,7 +1472,7 @@ mono_arch_init (void)
 void
 mono_arch_cleanup (void)
 {
-       mono_mutex_destroy (&mini_arch_mutex);
+       mono_os_mutex_destroy (&mini_arch_mutex);
 #if defined(__native_client_codegen__)
        mono_native_tls_free (nacl_instruction_depth);
        mono_native_tls_free (nacl_rex_tag);
@@ -1454,7 +1593,7 @@ mono_arch_compute_omit_fp (MonoCompile *cfg)
 
        if (!cfg->arch.cinfo)
                cfg->arch.cinfo = get_call_info (cfg->mempool, sig);
-       cinfo = cfg->arch.cinfo;
+       cinfo = (CallInfo *)cfg->arch.cinfo;
 
        /*
         * FIXME: Remove some of the restrictions.
@@ -1637,7 +1776,7 @@ mono_arch_fill_argument_info (MonoCompile *cfg)
 
        sig = mono_method_signature (cfg->method);
 
-       cinfo = cfg->arch.cinfo;
+       cinfo = (CallInfo *)cfg->arch.cinfo;
        sig_ret = mini_get_underlying_type (sig->ret);
 
        /*
@@ -1646,28 +1785,22 @@ mono_arch_fill_argument_info (MonoCompile *cfg)
         * accessed during the execution of the method. The later makes no sense for the 
         * global register allocator, since a variable can be in more than one location.
         */
-       if (sig_ret->type != MONO_TYPE_VOID) {
-               switch (cinfo->ret.storage) {
-               case ArgInIReg:
-               case ArgInFloatSSEReg:
-               case ArgInDoubleSSEReg:
-                       if ((MONO_TYPE_ISSTRUCT (sig_ret) && !mono_class_from_mono_type (sig_ret)->enumtype) || ((sig_ret->type == MONO_TYPE_TYPEDBYREF) && cinfo->ret.storage == ArgValuetypeAddrInIReg)) {
-                               cfg->vret_addr->opcode = OP_REGVAR;
-                               cfg->vret_addr->inst_c0 = cinfo->ret.reg;
-                       }
-                       else {
-                               cfg->ret->opcode = OP_REGVAR;
-                               cfg->ret->inst_c0 = cinfo->ret.reg;
-                       }
-                       break;
-               case ArgValuetypeInReg:
-                       cfg->ret->opcode = OP_REGOFFSET;
-                       cfg->ret->inst_basereg = -1;
-                       cfg->ret->inst_offset = -1;
-                       break;
-               default:
-                       g_assert_not_reached ();
-               }
+       switch (cinfo->ret.storage) {
+       case ArgInIReg:
+       case ArgInFloatSSEReg:
+       case ArgInDoubleSSEReg:
+               cfg->ret->opcode = OP_REGVAR;
+               cfg->ret->inst_c0 = cinfo->ret.reg;
+               break;
+       case ArgValuetypeInReg:
+               cfg->ret->opcode = OP_REGOFFSET;
+               cfg->ret->inst_basereg = -1;
+               cfg->ret->inst_offset = -1;
+               break;
+       case ArgNone:
+               break;
+       default:
+               g_assert_not_reached ();
        }
 
        for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
@@ -1710,7 +1843,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 
        sig = mono_method_signature (cfg->method);
 
-       cinfo = cfg->arch.cinfo;
+       cinfo = (CallInfo *)cfg->arch.cinfo;
        sig_ret = mini_get_underlying_type (sig->ret);
 
        mono_arch_compute_omit_fp (cfg);
@@ -1938,7 +2071,7 @@ mono_arch_create_vars (MonoCompile *cfg)
 
        if (!cfg->arch.cinfo)
                cfg->arch.cinfo = get_call_info (cfg->mempool, sig);
-       cinfo = cfg->arch.cinfo;
+       cinfo = (CallInfo *)cfg->arch.cinfo;
 
        if (cinfo->ret.storage == ArgValuetypeInReg)
                cfg->ret_var_is_local = TRUE;
@@ -2106,22 +2239,39 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
         * - we only pass/receive them in registers in some cases, and only 
         *   in 1 or 2 integer registers.
         */
-       if (cinfo->ret.storage == ArgValuetypeInReg) {
-               if (sig->pinvoke) {
-                       cfg->exception_message = g_strdup ("pinvoke + vtypes");
+       switch (cinfo->ret.storage) {
+       case ArgNone:
+               linfo->ret.storage = LLVMArgNone;
+               break;
+       case ArgInIReg:
+       case ArgInFloatSSEReg:
+       case ArgInDoubleSSEReg:
+               linfo->ret.storage = LLVMArgNormal;
+               break;
+       case ArgValuetypeInReg: {
+               ainfo = &cinfo->ret;
+
+               if (sig->pinvoke &&
+                       (ainfo->pair_storage [0] == ArgInFloatSSEReg || ainfo->pair_storage [0] == ArgInDoubleSSEReg ||
+                        ainfo->pair_storage [1] == ArgInFloatSSEReg || ainfo->pair_storage [1] == ArgInDoubleSSEReg)) {
+                       cfg->exception_message = g_strdup ("pinvoke + vtype ret");
                        cfg->disable_llvm = TRUE;
                        return linfo;
                }
 
                linfo->ret.storage = LLVMArgVtypeInReg;
                for (j = 0; j < 2; ++j)
-                       linfo->ret.pair_storage [j] = arg_storage_to_llvm_arg_storage (cfg, cinfo->ret.pair_storage [j]);
+                       linfo->ret.pair_storage [j] = arg_storage_to_llvm_arg_storage (cfg, ainfo->pair_storage [j]);
+               break;
        }
-
-       if (cinfo->ret.storage == ArgValuetypeAddrInIReg) {
+       case ArgValuetypeAddrInIReg:
                /* Vtype returned using a hidden argument */
                linfo->ret.storage = LLVMArgVtypeRetAddr;
                linfo->vret_arg_index = cinfo->vret_arg_index;
+               break;
+       default:
+               g_assert_not_reached ();
+               break;
        }
 
        for (i = 0; i < n; ++i) {
@@ -2136,27 +2286,22 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
 
                switch (ainfo->storage) {
                case ArgInIReg:
-                       linfo->args [i].storage = LLVMArgInIReg;
+                       linfo->args [i].storage = LLVMArgNormal;
                        break;
                case ArgInDoubleSSEReg:
                case ArgInFloatSSEReg:
-                       linfo->args [i].storage = LLVMArgInFPReg;
+                       linfo->args [i].storage = LLVMArgNormal;
                        break;
                case ArgOnStack:
-                       if (MONO_TYPE_ISSTRUCT (t)) {
+                       if (MONO_TYPE_ISSTRUCT (t))
                                linfo->args [i].storage = LLVMArgVtypeByVal;
-                       } else {
-                               linfo->args [i].storage = LLVMArgInIReg;
-                               if (!t->byref) {
-                                       if (t->type == MONO_TYPE_R4)
-                                               linfo->args [i].storage = LLVMArgInFPReg;
-                                       else if (t->type == MONO_TYPE_R8)
-                                               linfo->args [i].storage = LLVMArgInFPReg;
-                               }
-                       }
+                       else
+                               linfo->args [i].storage = LLVMArgNormal;
                        break;
                case ArgValuetypeInReg:
-                       if (sig->pinvoke) {
+                       if (sig->pinvoke &&
+                               (ainfo->pair_storage [0] == ArgInFloatSSEReg || ainfo->pair_storage [0] == ArgInDoubleSSEReg ||
+                                ainfo->pair_storage [1] == ArgInFloatSSEReg || ainfo->pair_storage [1] == ArgInDoubleSSEReg)) {
                                cfg->exception_message = g_strdup ("pinvoke + vtypes");
                                cfg->disable_llvm = TRUE;
                                return linfo;
@@ -2291,22 +2436,16 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                        guint32 align;
                        guint32 size;
 
-                       if (t->type == MONO_TYPE_TYPEDBYREF) {
-                               size = sizeof (MonoTypedRef);
-                               align = sizeof (gpointer);
-                       }
+                       if (sig->pinvoke)
+                               size = mono_type_native_stack_size (t, &align);
                        else {
-                               if (sig->pinvoke)
-                                       size = mono_type_native_stack_size (t, &align);
-                               else {
-                                       /*
-                                        * Other backends use mono_type_stack_size (), but that
-                                        * aligns the size to 8, which is larger than the size of
-                                        * the source, leading to reads of invalid memory if the
-                                        * source is at the end of address space.
-                                        */
-                                       size = mono_class_value_size (mono_class_from_mono_type (t), &align);
-                               }
+                               /*
+                                * Other backends use mono_type_stack_size (), but that
+                                * aligns the size to 8, which is larger than the size of
+                                * the source, leading to reads of invalid memory if the
+                                * source is at the end of address space.
+                                */
+                               size = mono_class_value_size (mono_class_from_mono_type (t), &align);
                        }
 
                        if (size >= 10000) {
@@ -2643,6 +2782,7 @@ mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, g
        DynCallArgs *p = (DynCallArgs*)buf;
        int arg_index, greg, i, pindex;
        MonoMethodSignature *sig = dinfo->sig;
+       int buffer_offset = 0;
 
        g_assert (buf_len >= sizeof (DynCallArgs));
 
@@ -2716,6 +2856,22 @@ mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, g
                    if (MONO_TYPE_IS_REFERENCE (t)) {
                                p->regs [greg ++] = PTR_TO_GREG(*(arg));
                                break;
+                       } else if (t->type == MONO_TYPE_GENERICINST && mono_class_is_nullable (mono_class_from_mono_type (t))) {
+                                       MonoClass *klass = mono_class_from_mono_type (t);
+                                       guint8 *nullable_buf;
+                                       int size;
+
+                                       size = mono_class_value_size (klass, NULL);
+                                       nullable_buf = p->buffer + buffer_offset;
+                                       buffer_offset += size;
+                                       g_assert (buffer_offset <= 256);
+
+                                       /* The argument pointed to by arg is either a boxed vtype or null */
+                                       mono_nullable_init (nullable_buf, (MonoObject*)arg, klass);
+
+                                       arg = (gpointer*)nullable_buf;
+                                       /* Fall though */
+
                        } else {
                                /* Fall through */
                        }
@@ -2852,7 +3008,7 @@ mono_arch_finish_dyn_call (MonoDynCallInfo *info, guint8 *buf)
 } while (0);
 
 static guint8*
-emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointer data)
+emit_call_body (MonoCompile *cfg, guint8 *code, MonoJumpInfoType patch_type, gconstpointer data)
 {
        gboolean no_patch = FALSE;
 
@@ -2886,7 +3042,7 @@ emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointe
                                 * The call might go directly to a native function without
                                 * the wrapper.
                                 */
-                               MonoJitICallInfo *mi = mono_find_jit_icall_by_name (data);
+                               MonoJitICallInfo *mi = mono_find_jit_icall_by_name ((const char *)data);
                                if (mi) {
                                        gconstpointer target = mono_icall_get_wrapper (mi);
                                        if ((((guint64)target) >> 32) != 0)
@@ -2898,7 +3054,7 @@ emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointe
                        MonoJumpInfo *jinfo = NULL;
 
                        if (cfg->abs_patches)
-                               jinfo = g_hash_table_lookup (cfg->abs_patches, data);
+                               jinfo = (MonoJumpInfo *)g_hash_table_lookup (cfg->abs_patches, data);
                        if (jinfo) {
                                if (jinfo->type == MONO_PATCH_INFO_JIT_ICALL_ADDR) {
                                        MonoJitICallInfo *mi = mono_find_jit_icall_by_name (jinfo->data.name);
@@ -2977,7 +3133,7 @@ emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointe
 }
 
 static inline guint8*
-emit_call (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointer data, gboolean win64_adjust_stack)
+emit_call (MonoCompile *cfg, guint8 *code, MonoJumpInfoType patch_type, gconstpointer data, gboolean win64_adjust_stack)
 {
 #ifdef TARGET_WIN32
        if (win64_adjust_stack)
@@ -3465,7 +3621,7 @@ emit_move_return_value (MonoCompile *cfg, MonoInst *ins, guint8 *code)
        case OP_VCALL2_MEMBASE:
                cinfo = get_call_info (cfg->mempool, ((MonoCallInst*)ins)->signature);
                if (cinfo->ret.storage == ArgValuetypeInReg) {
-                       MonoInst *loc = cfg->arch.vret_addr_loc;
+                       MonoInst *loc = (MonoInst *)cfg->arch.vret_addr_loc;
 
                        /* Load the destination address */
                        g_assert (loc->opcode == OP_REGOFFSET);
@@ -3531,6 +3687,35 @@ mono_amd64_have_tls_get (void)
                       ins [9] == 0xc3;
 
        tls_gs_offset = ins[5];
+
+       /*
+        * Apple now loads a different version of pthread_getspecific when launched from Xcode
+        * For that version we're looking for these instructions:
+        *
+        * pushq  %rbp
+        * movq   %rsp, %rbp
+        * mov    %gs:[offset](,%rdi,8),%rax
+        * popq   %rbp
+        * retq
+        */
+       if (!have_tls_get) {
+               have_tls_get = ins [0] == 0x55 &&
+                              ins [1] == 0x48 &&
+                              ins [2] == 0x89 &&
+                              ins [3] == 0xe5 &&
+                              ins [4] == 0x65 &&
+                              ins [5] == 0x48 &&
+                              ins [6] == 0x8b &&
+                              ins [7] == 0x04 &&
+                              ins [8] == 0xfd &&
+                              ins [10] == 0x00 &&
+                              ins [11] == 0x00 &&
+                              ins [12] == 0x00 &&
+                              ins [13] == 0x5d &&
+                              ins [14] == 0xc3;
+
+               tls_gs_offset = ins[9];
+       }
 #endif
 
        inited = TRUE;
@@ -3805,7 +3990,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 
                if (G_UNLIKELY (offset > (cfg->code_size - max_len - EXTRA_CODE_SPACE))) {
                        cfg->code_size *= 2;
-                       cfg->native_code = mono_realloc_native_code(cfg);
+                       cfg->native_code = (unsigned char *)mono_realloc_native_code(cfg);
                        code = cfg->native_code + offset;
                        cfg->stat_code_reallocs++;
                }
@@ -4153,7 +4338,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                case OP_SEQ_POINT: {
                        if (ins->flags & MONO_INST_SINGLE_STEP_LOC) {
-                               MonoInst *var = cfg->arch.ss_tramp_var;
+                               MonoInst *var = (MonoInst *)cfg->arch.ss_tramp_var;
                                guint8 *label;
 
                                /* Load ss_tramp_var */
@@ -4177,7 +4362,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (cfg->compile_aot) {
                                guint32 offset = code - cfg->native_code;
                                guint32 val;
-                               MonoInst *info_var = cfg->arch.seq_point_info_var;
+                               MonoInst *info_var = (MonoInst *)cfg->arch.seq_point_info_var;
                                guint8 *label;
 
                                /* Load info var */
@@ -4192,7 +4377,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                amd64_call_reg (code, AMD64_R11);
                                amd64_patch (label, code);
                        } else {
-                               MonoInst *var = cfg->arch.bp_tramp_var;
+                               MonoInst *var = (MonoInst *)cfg->arch.bp_tramp_var;
                                guint8 *label;
 
                                /*
@@ -5063,21 +5248,21 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_COND_EXC_IGE_UN:
                case OP_COND_EXC_ILE:
                case OP_COND_EXC_ILE_UN:
-                       EMIT_COND_SYSTEM_EXCEPTION (cc_table [mono_opcode_to_cond (ins->opcode)], cc_signed_table [mono_opcode_to_cond (ins->opcode)], ins->inst_p1);
+                       EMIT_COND_SYSTEM_EXCEPTION (cc_table [mono_opcode_to_cond (ins->opcode)], cc_signed_table [mono_opcode_to_cond (ins->opcode)], (const char *)ins->inst_p1);
                        break;
                case OP_COND_EXC_OV:
                case OP_COND_EXC_NO:
                case OP_COND_EXC_C:
                case OP_COND_EXC_NC:
                        EMIT_COND_SYSTEM_EXCEPTION (branch_cc_table [ins->opcode - OP_COND_EXC_EQ], 
-                                                   (ins->opcode < OP_COND_EXC_NE_UN), ins->inst_p1);
+                                                   (ins->opcode < OP_COND_EXC_NE_UN), (const char *)ins->inst_p1);
                        break;
                case OP_COND_EXC_IOV:
                case OP_COND_EXC_INO:
                case OP_COND_EXC_IC:
                case OP_COND_EXC_INC:
                        EMIT_COND_SYSTEM_EXCEPTION (branch_cc_table [ins->opcode - OP_COND_EXC_IEQ], 
-                                                   (ins->opcode < OP_COND_EXC_INE_UN), ins->inst_p1);
+                                                   (ins->opcode < OP_COND_EXC_INE_UN), (const char *)ins->inst_p1);
                        break;
 
                /* floating point opcodes */
@@ -6560,15 +6745,14 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        int compare_val = 0;
                        guint8 *br [1];
 
-#if defined (USE_COOP_GC)
-                       polling_func = "mono_threads_state_poll";
-                       compare_val = 1;
-#elif defined(__native_client_codegen__) && defined(__native_client_gc__)
+#if defined(__native_client_codegen__) && defined(__native_client_gc__)
                        polling_func = "mono_nacl_gc";
                        compare_val = 0xFFFFFFFF;
+#else
+                       g_assert (mono_threads_is_coop_enabled ());
+                       polling_func = "mono_threads_state_poll";
+                       compare_val = 1;
 #endif
-                       if (!polling_func)
-                               break;
 
                        amd64_test_membase_imm_size (code, ins->sreg1, 0, compare_val, 4);
                        br[0] = code; x86_branch8 (code, X86_CC_EQ, 0, FALSE);
@@ -6697,7 +6881,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        cfg->code_size = MAX (cfg->header->code_size * 4, 1024);
 
 #if defined(__default_codegen__)
-       code = cfg->native_code = g_malloc (cfg->code_size);
+       code = cfg->native_code = (unsigned char *)g_malloc (cfg->code_size);
 #elif defined(__native_client_codegen__)
        /* native_code_alloc is not 32-byte aligned, native_code is. */
        cfg->native_code_alloc = g_malloc (cfg->code_size + kNaClAlignment);
@@ -6808,7 +6992,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                if (G_UNLIKELY (required_code_size >= (cfg->code_size - offset))) {
                        while (required_code_size >= (cfg->code_size - offset))
                                cfg->code_size *= 2;
-                       cfg->native_code = mono_realloc_native_code (cfg);
+                       cfg->native_code = (unsigned char *)mono_realloc_native_code (cfg);
                        code = cfg->native_code + offset;
                        cfg->stat_code_reallocs++;
                }
@@ -6978,7 +7162,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        sig = mono_method_signature (method);
        pos = 0;
 
-       cinfo = cfg->arch.cinfo;
+       cinfo = (CallInfo *)cfg->arch.cinfo;
 
        if (sig->ret->type != MONO_TYPE_VOID) {
                /* Save volatile arguments to the stack */
@@ -7083,7 +7267,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 
        if (trace) {
                args_clobbered = TRUE;
-               code = mono_arch_instrument_prolog (cfg, mono_trace_enter_method, code, TRUE);
+               code = (guint8 *)mono_arch_instrument_prolog (cfg, mono_trace_enter_method, code, TRUE);
        }
 
        if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
@@ -7158,7 +7342,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        }
 
        if (cfg->gen_sdb_seq_points) {
-               MonoInst *info_var = cfg->arch.seq_point_info_var;
+               MonoInst *info_var = (MonoInst *)cfg->arch.seq_point_info_var;
 
                /* Initialize seq_point_info_var */
                if (cfg->compile_aot) {
@@ -7172,7 +7356,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 
                if (cfg->compile_aot) {
                        /* Initialize ss_tramp_var */
-                       ins = cfg->arch.ss_tramp_var;
+                       ins = (MonoInst *)cfg->arch.ss_tramp_var;
                        g_assert (ins->opcode == OP_REGOFFSET);
 
                        amd64_mov_reg_membase (code, AMD64_R11, info_var->inst_basereg, info_var->inst_offset, 8);
@@ -7180,14 +7364,14 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                        amd64_mov_membase_reg (code, ins->inst_basereg, ins->inst_offset, AMD64_R11, 8);
                } else {
                        /* Initialize ss_tramp_var */
-                       ins = cfg->arch.ss_tramp_var;
+                       ins = (MonoInst *)cfg->arch.ss_tramp_var;
                        g_assert (ins->opcode == OP_REGOFFSET);
 
                        amd64_mov_reg_imm (code, AMD64_R11, (guint64)&ss_trampoline);
                        amd64_mov_membase_reg (code, ins->inst_basereg, ins->inst_offset, AMD64_R11, 8);
 
                        /* Initialize bp_tramp_var */
-                       ins = cfg->arch.bp_tramp_var;
+                       ins = (MonoInst *)cfg->arch.bp_tramp_var;
                        g_assert (ins->opcode == OP_REGOFFSET);
 
                        amd64_mov_reg_imm (code, AMD64_R11, (guint64)&bp_trampoline);
@@ -7217,7 +7401,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
 
        while (cfg->code_len + max_epilog_size > (cfg->code_size - 16)) {
                cfg->code_size *= 2;
-               cfg->native_code = mono_realloc_native_code (cfg);
+               cfg->native_code = (unsigned char *)mono_realloc_native_code (cfg);
                cfg->stat_code_reallocs++;
        }
        code = cfg->native_code + cfg->code_len;
@@ -7231,7 +7415,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
        mono_emit_unwind_op_remember_state (cfg, code);
 
        if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
-               code = mono_arch_instrument_epilog (cfg, mono_trace_leave_method, code, TRUE);
+               code = (guint8 *)mono_arch_instrument_epilog (cfg, mono_trace_leave_method, code, TRUE);
 
        /* the code restoring the registers must be kept in sync with OP_TAILCALL */
        
@@ -7272,7 +7456,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
        }
 
        /* Load returned vtypes into registers if needed */
-       cinfo = cfg->arch.cinfo;
+       cinfo = (CallInfo *)cfg->arch.cinfo;
        if (cinfo->ret.storage == ArgValuetypeInReg) {
                ArgInfo *ainfo = &cinfo->ret;
                MonoInst *inst = cfg->ret;
@@ -7347,7 +7531,7 @@ mono_arch_emit_exceptions (MonoCompile *cfg)
 
        while (cfg->code_len + code_size > (cfg->code_size - 16)) {
                cfg->code_size *= 2;
-               cfg->native_code = mono_realloc_native_code (cfg);
+               cfg->native_code = (unsigned char *)mono_realloc_native_code (cfg);
                cfg->stat_code_reallocs++;
        }
 
@@ -7539,7 +7723,7 @@ mono_arch_emit_exceptions (MonoCompile *cfg)
 void*
 mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p, gboolean enable_arguments)
 {
-       guchar *code = p;
+       guchar *code = (guchar *)p;
        MonoMethodSignature *sig;
        MonoInst *inst;
        int i, n, stack_area = 0;
@@ -7590,7 +7774,7 @@ enum {
 void*
 mono_arch_instrument_epilog_full (MonoCompile *cfg, void *func, void *p, gboolean enable_arguments, gboolean preserve_argument_registers)
 {
-       guchar *code = p;
+       guchar *code = (guchar *)p;
        int save_mode = SAVE_NONE;
        MonoMethod *method = cfg->method;
        MonoType *ret_type = mini_get_underlying_type (mono_method_signature (method)->ret);
@@ -7849,7 +8033,7 @@ get_delegate_invoke_impl (MonoTrampInfo **info, gboolean has_target, guint32 par
        unwind_ops = mono_arch_get_cie_program ();
 
        if (has_target) {
-               start = code = mono_global_codeman_reserve (64);
+               start = code = (guint8 *)mono_global_codeman_reserve (64);
 
                /* Replace the this argument with the target */
                amd64_mov_reg_reg (code, AMD64_RAX, AMD64_ARG_REG1, 8);
@@ -7858,7 +8042,7 @@ get_delegate_invoke_impl (MonoTrampInfo **info, gboolean has_target, guint32 par
 
                g_assert ((code - start) < 64);
        } else {
-               start = code = mono_global_codeman_reserve (64);
+               start = code = (guint8 *)mono_global_codeman_reserve (64);
 
                if (param_count == 0) {
                        amd64_jump_membase (code, AMD64_ARG_REG1, MONO_STRUCT_OFFSET (MonoDelegate, method_ptr));
@@ -7920,7 +8104,7 @@ get_delegate_virtual_invoke_impl (MonoTrampInfo **info, gboolean load_imt_reg, i
        if (offset / (int)sizeof (gpointer) > MAX_VIRTUAL_DELEGATE_OFFSET)
                return NULL;
 
-       start = code = mono_global_codeman_reserve (size);
+       start = code = (guint8 *)mono_global_codeman_reserve (size);
 
        unwind_ops = mono_arch_get_cie_program ();
 
@@ -8000,10 +8184,10 @@ mono_arch_get_delegate_invoke_impl (MonoMethodSignature *sig, gboolean has_targe
                        return cached;
 
                if (mono_aot_only) {
-                       start = mono_aot_get_trampoline ("delegate_invoke_impl_has_target");
+                       start = (guint8 *)mono_aot_get_trampoline ("delegate_invoke_impl_has_target");
                } else {
                        MonoTrampInfo *info;
-                       start = get_delegate_invoke_impl (&info, TRUE, 0);
+                       start = (guint8 *)get_delegate_invoke_impl (&info, TRUE, 0);
                        mono_tramp_info_register (info, NULL);
                }
 
@@ -8024,11 +8208,11 @@ mono_arch_get_delegate_invoke_impl (MonoMethodSignature *sig, gboolean has_targe
 
                if (mono_aot_only) {
                        char *name = g_strdup_printf ("delegate_invoke_impl_target_%d", sig->param_count);
-                       start = mono_aot_get_trampoline (name);
+                       start = (guint8 *)mono_aot_get_trampoline (name);
                        g_free (name);
                } else {
                        MonoTrampInfo *info;
-                       start = get_delegate_invoke_impl (&info, FALSE, sig->param_count);
+                       start = (guint8 *)get_delegate_invoke_impl (&info, FALSE, sig->param_count);
                        mono_tramp_info_register (info, NULL);
                }
 
@@ -8166,9 +8350,9 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
        code = mono_domain_code_reserve (domain, size);
 #else
        if (fail_tramp)
-               code = mono_method_alloc_generic_virtual_thunk (domain, size);
+               code = (guint8 *)mono_method_alloc_generic_virtual_thunk (domain, size);
        else
-               code = mono_domain_code_reserve (domain, size);
+               code = (guint8 *)mono_domain_code_reserve (domain, size);
 #endif
        start = code;
 
@@ -8390,8 +8574,8 @@ mono_arch_install_handler_block_guard (MonoJitInfo *ji, MonoJitExceptionInfo *cl
        char *bp;
 
        /*Load the spvar*/
-       bp = MONO_CONTEXT_GET_BP (ctx);
-       sp = *(gpointer*)(bp + clause->exvar_offset);
+       bp = (char *)MONO_CONTEXT_GET_BP (ctx);
+       sp = (gpointer *)*(gpointer*)(bp + clause->exvar_offset);
 
        old_value = *sp;
        if (old_value < ji->code_start || (char*)old_value > ((char*)ji->code_start + ji->code_size))
@@ -8410,7 +8594,7 @@ mono_arch_install_handler_block_guard (MonoJitInfo *ji, MonoJitExceptionInfo *cl
  * On AMD64, the result is placed into R11.
  */
 guint8*
-mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, int tramp_type, gconstpointer target)
+mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, MonoJumpInfoType tramp_type, gconstpointer target)
 {
        *ji = mono_patch_info_list_prepend (*ji, code - start, tramp_type, target);
        amd64_mov_reg_membase (code, AMD64_R11, AMD64_RIP, 0, 8);
@@ -8446,7 +8630,7 @@ mono_arch_set_breakpoint (MonoJitInfo *ji, guint8 *ip)
 
        if (ji->from_aot) {
                guint32 native_offset = ip - (guint8*)ji->code_start;
-               SeqPointInfo *info = mono_arch_get_seq_point_info (mono_domain_get (), ji->code_start);
+               SeqPointInfo *info = (SeqPointInfo *)mono_arch_get_seq_point_info (mono_domain_get (), (guint8 *)ji->code_start);
 
                g_assert (info->bp_addrs [native_offset] == 0);
                info->bp_addrs [native_offset] = mini_get_breakpoint_trampoline ();
@@ -8470,7 +8654,7 @@ mono_arch_clear_breakpoint (MonoJitInfo *ji, guint8 *ip)
 
        if (ji->from_aot) {
                guint32 native_offset = ip - (guint8*)ji->code_start;
-               SeqPointInfo *info = mono_arch_get_seq_point_info (mono_domain_get (), ji->code_start);
+               SeqPointInfo *info = (SeqPointInfo *)mono_arch_get_seq_point_info (mono_domain_get (), (guint8 *)ji->code_start);
 
                info->bp_addrs [native_offset] = NULL;
        } else {
@@ -8559,7 +8743,7 @@ mono_arch_get_seq_point_info (MonoDomain *domain, guint8 *code)
        // FIXME: Add a free function
 
        mono_domain_lock (domain);
-       info = g_hash_table_lookup (domain_jit_info (domain)->arch_seq_points,
+       info = (SeqPointInfo *)g_hash_table_lookup (domain_jit_info (domain)->arch_seq_points,
                                                                code);
        mono_domain_unlock (domain);
 
@@ -8568,7 +8752,7 @@ mono_arch_get_seq_point_info (MonoDomain *domain, guint8 *code)
                g_assert (ji);
 
                // FIXME: Optimize the size
-               info = g_malloc0 (sizeof (SeqPointInfo) + (ji->code_size * sizeof (gpointer)));
+               info = (SeqPointInfo *)g_malloc0 (sizeof (SeqPointInfo) + (ji->code_size * sizeof (gpointer)));
 
                info->ss_tramp_addr = &ss_trampoline;
 
@@ -8628,7 +8812,7 @@ mono_arch_opcode_supported (int opcode)
        }
 }
 
-#if defined(ENABLE_GSHAREDVT)
+#if defined(ENABLE_GSHAREDVT) && defined(MONO_ARCH_GSHAREDVT_SUPPORTED)
 
 #include "../../../mono-extensions/mono/mini/mini-amd64-gsharedvt.c"
 
index 2b1f88dcb348d296c2309ab6095a83447e39d5f3..526e5b00c195d3652e55a35ef1766472b3ed90b5 100644 (file)
@@ -233,6 +233,7 @@ typedef struct {
        mgreg_t regs [PARAM_REGS];
        mgreg_t res;
        guint8 *ret;
+       guint8 buffer [256];
 } DynCallArgs;
 
 #define MONO_CONTEXT_SET_LLVM_EXC_REG(ctx, exc) do { (ctx)->gregs [AMD64_RAX] = (gsize)exc; } while (0)
@@ -341,7 +342,6 @@ typedef struct {
 #define MONO_ARCH_DYN_CALL_SUPPORTED 1
 #define MONO_ARCH_DYN_CALL_PARAM_AREA 0
 
-#define MONO_ARCH_HAVE_LLVM_IMT_TRAMPOLINE 1
 #define MONO_ARCH_LLVM_SUPPORTED 1
 #define MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD 1
 #define MONO_ARCH_HAVE_CARD_TABLE_WBARRIER 1
@@ -357,10 +357,19 @@ typedef struct {
 #define MONO_ARCH_HAVE_PATCH_CODE_NEW 1
 #define MONO_ARCH_HAVE_OP_GENERIC_CLASS_INIT 1
 
+#if defined(TARGET_OSX) || defined(__linux__)
+#define MONO_ARCH_HAVE_UNWIND_BACKTRACE 1
+#endif
+
 #if defined(TARGET_OSX) || defined(__linux__)
 #define MONO_ARCH_HAVE_TLS_GET_REG 1
 #endif
 
+#if defined(TARGET_APPLETVOS)
+/* No signals */
+#define MONO_ARCH_NEED_DIV_CHECK 1
+#endif
+
 /* Used for optimization, not complete */
 #define MONO_ARCH_IS_OP_MEMBASE(opcode) ((opcode) == OP_X86_PUSH_MEMBASE)
 
index 1f7204a884b0d09aae0f4319b5fc8721ab2d1b98..63096e7439f6f435a68f47d3a0d7f3cc2c9c6fe5 100644 (file)
@@ -57,24 +57,22 @@ DECLARE_GLOBAL_SYMBOL mono_fast_get_tls_key_end
 
        .align 4
 DECLARE_GLOBAL_SYMBOL mono_fallback_get_tls_key
-#if defined(__linux__)
-       mov     r1, r0
-       mvn     r0, #0xf000
-       sub     r0, r0, #31
+#if defined(__linux__) && defined(HAVE_KW_THREAD) && defined(__ARM_EABI__)
        push    {lr}
-       blx     r0
-#if defined(HAVE_KW_THREAD)
+       mov     r1, r0
+       bl      __aeabi_read_tp
        ldr     r0, [r0, r1]
-#elif defined(TARGET_ANDROID)
-       ldr     r0, [r0, r1, lsl #2]
-#endif
        pop     {pc}
 #elif defined(TARGET_IOS)
-       push    {lr}
+       push    {r7, lr}
+       mov     r7, sp
        bl      _pthread_getspecific
+       pop     {r7, pc}
+#elif defined(TARGET_ANDROID)
+       push    {lr}
+       bl      pthread_getspecific
        pop     {pc}
 #endif
-
        /*
         * The following thunks set the value corresponding to the key/offset
         * passed in R0. These thunks don't do jumps to external code so execution
@@ -107,23 +105,54 @@ DECLARE_GLOBAL_SYMBOL mono_fast_set_tls_key_end
 
        .align 4
 DECLARE_GLOBAL_SYMBOL mono_fallback_set_tls_key
-#if defined(__linux__)
-       mov     r2, r0
-       mvn     r0, #0xf000
-       sub     r0, r0, #31
+#if defined(__linux__) && defined(HAVE_KW_THREAD) && defined(__ARM_EABI__)
        push    {lr}
-       blx     r0
-#if defined(HAVE_KW_THREAD)
+       mov     r2, r0
+       bl      __aeabi_read_tp
        str     r1, [r0, r2]
-#elif defined(TARGET_ANDROID)
-       str     r1, [r0, r2, lsl #2]
-#endif
        pop     {pc}
 #elif defined(TARGET_IOS)
-       push    {lr}
+       push    {r7, lr}
+       mov     r7, sp
        bl      _pthread_setspecific
+       pop     {r7, pc}
+#elif defined(TARGET_ANDROID)
+       push    {lr}
+       bl      pthread_setspecific
        pop     {pc}
 #endif
 
+
+       /* Additional tls getters/setters */
+
+#if defined(TARGET_ANDROID)
+       .align 4
+DECLARE_GLOBAL_SYMBOL mono_fast_get_tls_key2
+       bic     r0, r0, #0x80000000
+       mrc     15, 0, r1, cr13, cr0, #3
+       lsls    r0, r0, #3
+       ldr     r1, [r1, #4]
+       add     r0, r1
+       ldr     r0, [r0, #0x68]
+       bx      lr
+DECLARE_GLOBAL_SYMBOL mono_fast_get_tls_key2_end
+
+       /*
+        * In order to use this fast setter we need to make sure that the key was
+        * already set at least once using the pthread api, otherwise it will not
+        * interwork with the api.
+        */
+       .align 4
+DECLARE_GLOBAL_SYMBOL mono_fast_set_tls_key2
+       bic     r0, r0, #0x80000000
+       mrc     15, 0, r2, cr13, cr0, #3
+       lsls    r0, r0, #3
+       ldr     r2, [r2, #4]
+       add     r0, r2
+       str     r1, [r0, #0x68]
+       bx      lr
+DECLARE_GLOBAL_SYMBOL mono_fast_set_tls_key2_end
+#endif
+
 #endif
 
index 30b2494dfc70c21ad396339e5e8cec5f8c86af6f..0d32e2ee03b79d14b29068e35581164dec057873 100644 (file)
@@ -5,6 +5,8 @@
 
 int mono_fast_get_tls_key (int);
 void mono_fast_set_tls_key (int, int);
+int mono_fast_get_tls_key2 (int);
+void mono_fast_set_tls_key2 (int, int);
 
 /* Fallback tls getters/setters */
 
@@ -15,5 +17,99 @@ void mono_fallback_set_tls_key (int, int);
 
 void mono_fast_get_tls_key_end (void);
 void mono_fast_set_tls_key_end (void);
+void mono_fast_get_tls_key2_end (void);
+void mono_fast_set_tls_key2_end (void);
 
+#if defined(__linux__) && defined(HAVE_KW_THREAD) && defined(__ARM_EABI__)
+void* __aeabi_read_tp (void);
+#endif
+
+/* Structure that maps a possible  tls implementation to the corresponding thunks */
+typedef struct {
+       guint32 *expected_code;
+       int expected_code_length;
+       gboolean check_kernel_helper;
+       gpointer get_tls_thunk;
+       gpointer get_tls_thunk_end;
+       gpointer set_tls_thunk;
+       gpointer set_tls_thunk_end;
+} MonoTlsImplementation;
+
+
+static MonoTlsImplementation known_tls_implementations [] = {
+#if defined(HAVE_KW_THREAD) && defined(__linux__) && defined(__ARM_EABI__)
+       { (guint32[]) {0x0f70ee1d, 0xbf004770}, 8, FALSE, mono_fast_get_tls_key, mono_fast_get_tls_key_end, mono_fast_set_tls_key, mono_fast_set_tls_key_end },
+       { (guint32[]) {0xe3e00a0f, 0xe240f01f}, 8, TRUE, mono_fast_get_tls_key, mono_fast_get_tls_key_end, mono_fast_set_tls_key, mono_fast_set_tls_key_end }
+#elif defined(TARGET_IOS)
+       { (guint32[]) {0x1f70ee1d, 0x0103f021, 0x0020f851, 0xbf004770}, 16, FALSE, mono_fast_get_tls_key, mono_fast_get_tls_key_end, mono_fast_set_tls_key, mono_fast_set_tls_key_end }
+#elif defined(TARGET_ANDROID)
+       { (guint32[]) {0xe2403003, 0xe353003c, 0xe92d4010, 0xe1a04000, 0x9a000001, 0xe3a00000, 0xe8bd8010, 0xe3e00a0f, 0xe240101f, 0xe12fff31, 0xe7900104, 0xe8bd8010}, 48, TRUE, mono_fast_get_tls_key, mono_fast_get_tls_key_end, mono_fast_set_tls_key, mono_fast_set_tls_key_end}, /* 1.5 */
+       { (guint32[]) {0xe2402003, 0xe1a03000, 0xe352003c, 0x8a000002, 0xee1d0f70, 0xe7900103, 0xe12fff1e}, 28, FALSE, mono_fast_get_tls_key, mono_fast_get_tls_key_end, mono_fast_set_tls_key, mono_fast_set_tls_key_end}, /* 4.2 */
+       { (guint32[]) {0xe2403007, 0xe3530084, 0x8a000002, 0xee1d1f70, 0xe7910100, 0xe12fff1e, 0xe3a00000, 0xe12fff1e}, 32, FALSE, mono_fast_get_tls_key, mono_fast_get_tls_key_end, mono_fast_set_tls_key, mono_fast_set_tls_key_end}, /* 4.4 */
+       { (guint32[]) {0x2b8c1fc3, 0xee1dd804, 0xf8511f70, 0x47700020, 0x47702000}, 20, FALSE, mono_fast_get_tls_key, mono_fast_get_tls_key_end, mono_fast_set_tls_key, mono_fast_set_tls_key_end}, /* 5.0 */
+       { (guint32[]) {0xb5104b0f, 0xda114298, 0xf020490e, 0xee1d4000, 0x00c24f70, 0xf8514479, 0x68631030, 0xd50707cc, 0x6e54441a, 0xd103428c, 0xbd106e90}, 44, FALSE, mono_fast_get_tls_key2, mono_fast_get_tls_key2_end, mono_fast_set_tls_key2, mono_fast_set_tls_key2_end} /* 6.0 */
+#endif
+};
+
+static gboolean
+known_kernel_helper (void)
+{
+#ifdef __linux__
+       const guint32* kuser_get_tls = (void*)0xffff0fe0; /* linux kernel user helper on arm */
+       guint32 expected [] = {0xee1d0f70, 0xe12fff1e};
+
+       /* Expecting mrc + bx lr in the kuser_get_tls kernel helper */
+       return memcmp (kuser_get_tls, expected, 8) == 0;
+#else
+       g_error ("Trying to check linux kernel helper on non linux platform"); 
+       return FALSE;
+#endif
+}
+
+static void
+dump_code (guint32 *ptr)
+{
+       char current_impl [256];
+       char hex [16];
+       int i;
+       guint32 page_mask = ~((guint32)mono_pagesize () - 1);
+
+       current_impl [0] = 0;
+       for (i = 0; i < 16; i++) {
+               /* Don't risk page fault since we don't know where the code ends */
+               if (((guint32)&ptr [i] & page_mask) != ((guint32)ptr & page_mask))
+                       break;
+               sprintf (hex, "0x%x ", ptr [i]);
+               strcat (current_impl, hex);
+       }
+
+       g_warning (current_impl);
+}
+
+static MonoTlsImplementation
+mono_arm_get_tls_implementation (void)
+{
+       /* Discard thumb bit */
+#if defined(__linux__) && defined(HAVE_KW_THREAD) && defined(__ARM_EABI__)
+       guint32* check_addr = (guint32*) ((guint32)__aeabi_read_tp & 0xfffffffe);
+#else
+       guint32* check_addr = (guint32*) ((guint32)pthread_getspecific & 0xfffffffe);
+#endif
+       int i;
+
+       if (!mini_get_debug_options ()->arm_use_fallback_tls) {
+               for (i = 0; i < sizeof (known_tls_implementations) / sizeof (MonoTlsImplementation); i++) {
+                       if (memcmp (check_addr, known_tls_implementations [i].expected_code, known_tls_implementations [i].expected_code_length) == 0) {
+                               if ((known_tls_implementations [i].check_kernel_helper && known_kernel_helper ()) ||
+                                               !known_tls_implementations [i].check_kernel_helper)
+                                       return known_tls_implementations [i];
+                       }
+               }
+       }
+
+       g_warning ("No fast tls on device. Using fallbacks. Current implementation : ");
+       dump_code (check_addr);
+
+       return (MonoTlsImplementation) { NULL, 0, FALSE, mono_fallback_get_tls_key, NULL, mono_fallback_set_tls_key, NULL };
+}
 #endif
index bb146818986e679aea290a4ed3019b395778cf84..a71aa353c19e450658b146d1ed6d3357a1a1a6df 100644 (file)
@@ -29,7 +29,7 @@
 #include "mini-gc.h"
 #include "mono/arch/arm/arm-vfp-codegen.h"
 
-#if defined(HAVE_KW_THREAD) && defined(__linux__) \
+#if (defined(HAVE_KW_THREAD) && defined(__linux__) && defined(__ARM_EABI__)) \
        || defined(TARGET_ANDROID) \
        || (defined(TARGET_IOS) && !defined(TARGET_WATCHOS))
 #define HAVE_FAST_TLS
@@ -95,8 +95,8 @@ void sys_icache_invalidate (void *start, size_t len);
 #endif
 
 /* This mutex protects architecture specific caches */
-#define mono_mini_arch_lock() mono_mutex_lock (&mini_arch_mutex)
-#define mono_mini_arch_unlock() mono_mutex_unlock (&mini_arch_mutex)
+#define mono_mini_arch_lock() mono_os_mutex_lock (&mini_arch_mutex)
+#define mono_mini_arch_unlock() mono_os_mutex_unlock (&mini_arch_mutex)
 static mono_mutex_t mini_arch_mutex;
 
 static gboolean v5_supported = FALSE;
@@ -147,8 +147,6 @@ static int vfp_scratch2 = ARM_VFP_D1;
 
 static int i8_align;
 
-static volatile int ss_trigger_var = 0;
-
 static gpointer single_step_tramp, breakpoint_tramp;
 
 /*
@@ -647,30 +645,6 @@ emit_restore_lmf (MonoCompile *cfg, guint8 *code, gint32 lmf_offset)
 
 #endif /* #ifndef DISABLE_JIT */
 
-#ifndef MONO_CROSS_COMPILE
-static gboolean
-mono_arm_have_fast_tls (void)
-{
-       if (mini_get_debug_options ()->arm_use_fallback_tls)
-               return FALSE;
-#if (defined(HAVE_KW_THREAD) && defined(__linux__)) \
-       || defined(TARGET_ANDROID)
-       guint32* kuser_get_tls = (void*)0xffff0fe0;
-       guint32 expected [] = {0xee1d0f70, 0xe12fff1e};
-
-       /* Expecting mrc + bx lr in the kuser_get_tls kernel helper */
-       return memcmp (kuser_get_tls, expected, 8) == 0;
-#elif defined(TARGET_IOS)
-       guint32 expected [] = {0x1f70ee1d, 0x0103f021, 0x0020f851, 0xbf004770};
-       /* Discard thumb bit */
-       guint32* pthread_getspecific_addr = (guint32*) ((guint32)pthread_getspecific & 0xfffffffe);
-       return memcmp ((void*)pthread_getspecific_addr, expected, 16) == 0;
-#else
-       return FALSE;
-#endif
-}
-#endif
-
 /*
  * mono_arm_have_tls_get:
  *
@@ -917,9 +891,8 @@ mono_arch_init (void)
 {
        const char *cpu_arch;
 
-       mono_mutex_init_recursive (&mini_arch_mutex);
+       mono_os_mutex_init_recursive (&mini_arch_mutex);
        if (mini_get_debug_options ()->soft_breakpoints) {
-               single_step_tramp = mini_get_single_step_trampoline ();
                breakpoint_tramp = mini_get_breakpoint_trampoline ();
        } else {
                ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
@@ -1173,47 +1146,17 @@ mono_arch_regalloc_cost (MonoCompile *cfg, MonoMethodVar *vmv)
 
 #endif /* #ifndef DISABLE_JIT */
 
-#ifndef __GNUC_PREREQ
-#define __GNUC_PREREQ(maj, min) (0)
-#endif
-
 void
 mono_arch_flush_icache (guint8 *code, gint size)
 {
-#if defined(__native_client__)
+#if defined(MONO_CROSS_COMPILE) || defined(__native_client__)
   // For Native Client we don't have to flush i-cache here,
   // as it's being done by dyncode interface.
-#else
-
-#ifdef MONO_CROSS_COMPILE
 #elif __APPLE__
        sys_icache_invalidate (code, size);
-#elif __GNUC_PREREQ(4, 3)
-    __builtin___clear_cache (code, code + size);
-#elif __GNUC_PREREQ(4, 1)
-       __clear_cache (code, code + size);
-#elif defined(PLATFORM_ANDROID)
-       const int syscall = 0xf0002;
-       __asm __volatile (
-               "mov     r0, %0\n"                      
-               "mov     r1, %1\n"
-               "mov     r7, %2\n"
-               "mov     r2, #0x0\n"
-               "svc     0x00000000\n"
-               :
-               :       "r" (code), "r" (code + size), "r" (syscall)
-               :       "r0", "r1", "r7", "r2"
-               );
 #else
-       __asm __volatile ("mov r0, %0\n"
-                       "mov r1, %1\n"
-                       "mov r2, %2\n"
-                       "swi 0x9f0002       @ sys_cacheflush"
-                       : /* no outputs */
-                       : "r" (code), "r" (code + size), "r" (0)
-                       : "r0", "r1", "r3" );
+    __builtin___clear_cache (code, code + size);
 #endif
-#endif /* !__native_client__ */
 }
 
 typedef enum {
@@ -1582,7 +1525,7 @@ get_call_info (MonoMemPool *mp, MonoMethodSignature *sig)
                }
        }
 
-       DEBUG(printf("params: %d\n", sig->param_count));
+       DEBUG(g_print("params: %d\n", sig->param_count));
        for (i = pstart; i < sig->param_count; ++i) {
                ArgInfo *ainfo = &cinfo->args [n];
 
@@ -1594,9 +1537,9 @@ get_call_info (MonoMemPool *mp, MonoMethodSignature *sig)
                        /* Emit the signature cookie just before the implicit arguments */
                        add_general (&gr, &stack_size, &cinfo->sig_cookie, TRUE);
                }
-               DEBUG(printf("param %d: ", i));
+               DEBUG(g_print("param %d: ", i));
                if (sig->params [i]->byref) {
-                        DEBUG(printf("byref\n"));
+                        DEBUG(g_print("byref\n"));
                        add_general (&gr, &stack_size, ainfo, TRUE);
                        n++;
                        continue;
@@ -1666,7 +1609,10 @@ get_call_info (MonoMemPool *mp, MonoMethodSignature *sig)
                                        ainfo->reg = fpr;
                                        ainfo->nregs = nfields;
                                        ainfo->esize = esize;
-                                       fpr += nfields;
+                                       if (esize == 4)
+                                               fpr += nfields;
+                                       else
+                                               fpr += nfields * 2;
                                        break;
                                } else {
                                        fpr = ARM_VFP_F16;
@@ -1683,7 +1629,7 @@ get_call_info (MonoMemPool *mp, MonoMethodSignature *sig)
                                else
                                        size = mini_type_stack_size_full (t, &align, FALSE);
                        }
-                       DEBUG(printf ("load %d bytes struct\n", size));
+                       DEBUG(g_print ("load %d bytes struct\n", size));
                        align_size = size;
                        nwords = 0;
                        align_size += (sizeof (gpointer) - 1);
@@ -1771,7 +1717,7 @@ get_call_info (MonoMemPool *mp, MonoMethodSignature *sig)
        }
 
        /* align stack size to 8 */
-       DEBUG (printf ("      stack size: %d (%d)\n", (stack_size + 15) & ~15, stack_size));
+       DEBUG (g_print ("      stack size: %d (%d)\n", (stack_size + 15) & ~15, stack_size));
        stack_size = (stack_size + 7) & ~7;
 
        cinfo->stack_usage = stack_size;
@@ -1994,7 +1940,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
                ins->opcode = OP_REGOFFSET;
                ins->inst_basereg = cfg->frame_reg;
                if (G_UNLIKELY (cfg->verbose_level > 1)) {
-                       printf ("vret_addr =");
+                       g_print ("vret_addr =");
                        mono_print_ins (cfg->vret_addr);
                }
                offset += sizeof(gpointer);
@@ -2029,20 +1975,9 @@ mono_arch_allocate_vars (MonoCompile *cfg)
                offset += size;
        }
 
-       if (cfg->arch.seq_point_read_var) {
+       if (cfg->arch.seq_point_ss_method_var) {
                MonoInst *ins;
 
-               ins = cfg->arch.seq_point_read_var;
-
-               size = 4;
-               align = 4;
-               offset += align - 1;
-               offset &= ~(align - 1);
-               ins->opcode = OP_REGOFFSET;
-               ins->inst_basereg = cfg->frame_reg;
-               ins->inst_offset = offset;
-               offset += size;
-
                ins = cfg->arch.seq_point_ss_method_var;
                size = 4;
                align = 4;
@@ -2157,7 +2092,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
                        /* These arguments are saved to the stack in the prolog */
                        ins->inst_offset = offset;
                        if (cfg->verbose_level >= 2)
-                               printf ("arg %d allocated to %s+0x%0x.\n", i, mono_arch_regname (ins->inst_basereg), (int)ins->inst_offset);
+                               g_print ("arg %d allocated to %s+0x%0x.\n", i, mono_arch_regname (ins->inst_basereg), (int)ins->inst_offset);
                        // FIXME:
                        offset += 32;
                        break;
@@ -2226,16 +2161,14 @@ mono_arch_create_vars (MonoCompile *cfg)
        if (cinfo->ret.storage == RegTypeStructByAddr) {
                cfg->vret_addr = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_ARG);
                if (G_UNLIKELY (cfg->verbose_level > 1)) {
-                       printf ("vret_addr = ");
+                       g_print ("vret_addr = ");
                        mono_print_ins (cfg->vret_addr);
                }
        }
 
        if (cfg->gen_sdb_seq_points) {
                if (cfg->soft_breakpoints) {
-                       MonoInst *ins = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
-                       ins->flags |= MONO_INST_VOLATILE;
-                       cfg->arch.seq_point_read_var = ins;
+                       MonoInst *ins;
 
                        ins = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
                        ins->flags |= MONO_INST_VOLATILE;
@@ -2335,7 +2268,7 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
                case RegTypeIRegPair:
                case RegTypeBase:
                case RegTypeBaseGen:
-                       linfo->args [i].storage = LLVMArgInIReg;
+                       linfo->args [i].storage = LLVMArgNormal;
                        break;
                case RegTypeStructByVal:
                        linfo->args [i].storage = LLVMArgAsIArgs;
@@ -2671,7 +2604,7 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
 
                                call->float_args = g_slist_append_mempool (cfg->mempool, call->float_args, fad);
                        } else {
-                               add_outarg_reg (cfg, call, RegTypeFP, ainfo->reg + i, load);
+                               add_outarg_reg (cfg, call, RegTypeFP, ainfo->reg + (i * 2), load);
                        }
                }
                break;
@@ -3309,7 +3242,7 @@ mono_arch_peephole_pass_2 (MonoCompile *cfg, MonoBasicBlock *bb)
                                        MONO_DELETE_INS (bb, ins);
                                        continue;
                                } else {
-                                       //static int c = 0; printf ("MATCHX %s %d\n", cfg->method->name,c++);
+                                       //static int c = 0; g_print ("MATCHX %s %d\n", cfg->method->name,c++);
                                        ins->opcode = OP_MOVE;
                                        ins->sreg1 = last_ins->sreg1;
                                }
@@ -3350,7 +3283,7 @@ mono_arch_peephole_pass_2 (MonoCompile *cfg, MonoBasicBlock *bb)
                                                || last_ins->opcode == OP_STORE_MEMBASE_IMM) &&
                                   ins->inst_basereg == last_ins->inst_destbasereg &&
                                   ins->inst_offset == last_ins->inst_offset) {
-                               //static int c = 0; printf ("MATCHX %s %d\n", cfg->method->name,c++);
+                               //static int c = 0; g_print ("MATCHX %s %d\n", cfg->method->name,c++);
                                ins->opcode = OP_ICONST;
                                ins->inst_c0 = last_ins->inst_imm;
                                g_assert_not_reached (); // check this rule
@@ -3913,7 +3846,7 @@ handle_thunk (MonoCompile *cfg, MonoDomain *domain, guchar *code, const guchar *
                        }
                }
 
-               //printf ("THUNK: %p %p %p\n", code, target, target_thunk);
+               //g_print ("THUNK: %p %p %p\n", code, target, target_thunk);
 
                if (!target_thunk) {
                        mono_mini_arch_unlock ();
@@ -4126,6 +4059,12 @@ mono_arm_emit_load_imm (guint8 *code, int dreg, guint32 val)
        code += 4;
        return code;
 #endif
+       if (mini_get_debug_options()->single_imm_size && v7_supported) {
+               ARM_MOVW_REG_IMM (code, dreg, val & 0xffff);
+               ARM_MOVT_REG_IMM (code, dreg, (val >> 16) & 0xffff);
+               return code;
+       }
+
        if ((imm8 = mono_arm_is_rotated_imm8 (val, &rot_amount)) >= 0) {
                ARM_MOV_REG_IMM (code, dreg, imm8, rot_amount);
        } else if ((imm8 = mono_arm_is_rotated_imm8 (~val, &rot_amount)) >= 0) {
@@ -4644,7 +4583,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        int i;
                        MonoInst *info_var = cfg->arch.seq_point_info_var;
                        MonoInst *ss_trigger_page_var = cfg->arch.ss_trigger_page_var;
-                       MonoInst *ss_read_var = cfg->arch.seq_point_read_var;
                        MonoInst *ss_method_var = cfg->arch.seq_point_ss_method_var;
                        MonoInst *bp_method_var = cfg->arch.seq_point_bp_method_var;
                        MonoInst *var;
@@ -4665,7 +4603,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                g_assert (arm_is_imm12 (info_var->inst_offset));
                        }
 
-                       if (!cfg->soft_breakpoints) {
+                       if (!cfg->soft_breakpoints && !cfg->compile_aot) {
                                /*
                                 * Read from the single stepping trigger page. This will cause a
                                 * SIGSEGV when single stepping is enabled.
@@ -4677,8 +4615,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 
                        if (ins->flags & MONO_INST_SINGLE_STEP_LOC) {
                                if (cfg->soft_breakpoints) {
-                                       /* Load the address of the sequence point trigger variable. */
-                                       var = ss_read_var;
+                                       /* Load the address of the sequence point method variable. */
+                                       var = ss_method_var;
                                        g_assert (var);
                                        g_assert (var->opcode == OP_REGOFFSET);
                                        g_assert (arm_is_imm12 (var->inst_offset));
@@ -4687,14 +4625,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                        /* Read the value and check whether it is non-zero. */
                                        ARM_LDR_IMM (code, dreg, dreg, 0);
                                        ARM_CMP_REG_IMM (code, dreg, 0, 0);
-
-                                       /* Load the address of the sequence point method. */
-                                       var = ss_method_var;
-                                       g_assert (var);
-                                       g_assert (var->opcode == OP_REGOFFSET);
-                                       g_assert (arm_is_imm12 (var->inst_offset));
-                                       ARM_LDR_IMM (code, dreg, var->inst_basereg, var->inst_offset);
-
                                        /* Call it conditionally. */
                                        ARM_BLX_REG_COND (code, ARMCOND_NE, dreg);
                                } else {
@@ -5989,10 +5919,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        bb->spill_slot_defs = g_slist_prepend_mempool (cfg->mempool, bb->spill_slot_defs, ins);
                        break;
                case OP_GC_SAFE_POINT: {
-#if defined (USE_COOP_GC)
                        const char *polling_func = NULL;
                        guint8 *buf [1];
 
+                       g_assert (mono_threads_is_coop_enabled ());
+
                        polling_func = "mono_threads_state_poll";
                        ARM_LDR_IMM (code, ARMREG_IP, ins->sreg1, 0);
                        ARM_CMP_REG_IMM (code, ARMREG_IP, 0, 0);
@@ -6001,7 +5932,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_INTERNAL_METHOD, polling_func);
                        code = emit_call_seq (cfg, code);
                        arm_patch (buf [0], code);
-#endif
                        break;
                }
 
@@ -6037,15 +5967,17 @@ mono_arch_register_lowlevel_calls (void)
 
 #ifndef MONO_CROSS_COMPILE
        if (mono_arm_have_tls_get ()) {
-               if (mono_arm_have_fast_tls ()) {
-                       mono_register_jit_icall (mono_fast_get_tls_key, "mono_get_tls_key", mono_create_icall_signature ("ptr ptr"), TRUE);
-                       mono_register_jit_icall (mono_fast_set_tls_key, "mono_set_tls_key", mono_create_icall_signature ("void ptr ptr"), TRUE);
+               MonoTlsImplementation tls_imp = mono_arm_get_tls_implementation ();
 
+               mono_register_jit_icall (tls_imp.get_tls_thunk, "mono_get_tls_key", mono_create_icall_signature ("ptr ptr"), TRUE);
+               mono_register_jit_icall (tls_imp.set_tls_thunk, "mono_set_tls_key", mono_create_icall_signature ("void ptr ptr"), TRUE);
+
+               if (tls_imp.get_tls_thunk_end) {
                        mono_tramp_info_register (
                                mono_tramp_info_create (
                                        "mono_get_tls_key",
-                                       (guint8*)mono_fast_get_tls_key,
-                                       (guint8*)mono_fast_get_tls_key_end - (guint8*)mono_fast_get_tls_key,
+                                       (guint8*)tls_imp.get_tls_thunk,
+                                       (guint8*)tls_imp.get_tls_thunk_end - (guint8*)tls_imp.get_tls_thunk,
                                        NULL,
                                        mono_arch_get_cie_program ()
                                        ),
@@ -6054,17 +5986,13 @@ mono_arch_register_lowlevel_calls (void)
                        mono_tramp_info_register (
                                mono_tramp_info_create (
                                        "mono_set_tls_key",
-                                       (guint8*)mono_fast_set_tls_key,
-                                       (guint8*)mono_fast_set_tls_key_end - (guint8*)mono_fast_set_tls_key,
+                                       (guint8*)tls_imp.set_tls_thunk,
+                                       (guint8*)tls_imp.set_tls_thunk_end - (guint8*)tls_imp.set_tls_thunk,
                                        NULL,
                                        mono_arch_get_cie_program ()
                                        ),
                                NULL
                                );
-               } else {
-                       g_warning ("No fast tls on device. Using fallbacks.");
-                       mono_register_jit_icall (mono_fallback_get_tls_key, "mono_get_tls_key", mono_create_icall_signature ("ptr ptr"), TRUE);
-                       mono_register_jit_icall (mono_fallback_set_tls_key, "mono_set_tls_key", mono_create_icall_signature ("void ptr ptr"), TRUE);
                }
        }
 #endif
@@ -6615,15 +6543,12 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                }
        }
 
-       if (cfg->arch.seq_point_read_var) {
-               MonoInst *read_ins = cfg->arch.seq_point_read_var;
+       if (cfg->arch.seq_point_ss_method_var) {
                MonoInst *ss_method_ins = cfg->arch.seq_point_ss_method_var;
                MonoInst *bp_method_ins = cfg->arch.seq_point_bp_method_var;
 #ifdef USE_JUMP_TABLES
                gpointer *jte;
 #endif
-               g_assert (read_ins->opcode == OP_REGOFFSET);
-               g_assert (arm_is_imm12 (read_ins->inst_offset));
                g_assert (ss_method_ins->opcode == OP_REGOFFSET);
                g_assert (arm_is_imm12 (ss_method_ins->inst_offset));
                g_assert (bp_method_ins->opcode == OP_REGOFFSET);
@@ -6631,26 +6556,21 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 
 #ifdef USE_JUMP_TABLES
                jte = mono_jumptable_add_entries (3);
-               jte [0] = (gpointer)&ss_trigger_var;
-               jte [1] = single_step_tramp;
-               jte [2] = breakpoint_tramp;
+               jte [0] = &single_step_tramp;
+               jte [1] = breakpoint_tramp;
                code = mono_arm_load_jumptable_entry_addr (code, jte, ARMREG_LR);
 #else
                ARM_MOV_REG_REG (code, ARMREG_LR, ARMREG_PC);
                ARM_B (code, 2);
-               *(volatile int **)code = &ss_trigger_var;
-               code += 4;
-               *(gpointer*)code = single_step_tramp;
+               *(gpointer*)code = &single_step_tramp;
                code += 4;
                *(gpointer*)code = breakpoint_tramp;
                code += 4;
 #endif
 
                ARM_LDR_IMM (code, ARMREG_IP, ARMREG_LR, 0);
-               ARM_STR_IMM (code, ARMREG_IP, read_ins->inst_basereg, read_ins->inst_offset);
-               ARM_LDR_IMM (code, ARMREG_IP, ARMREG_LR, 4);
                ARM_STR_IMM (code, ARMREG_IP, ss_method_ins->inst_basereg, ss_method_ins->inst_offset);
-               ARM_LDR_IMM (code, ARMREG_IP, ARMREG_LR, 8);
+               ARM_LDR_IMM (code, ARMREG_IP, ARMREG_LR, 4);
                ARM_STR_IMM (code, ARMREG_IP, bp_method_ins->inst_basereg, bp_method_ins->inst_offset);
        }
 
@@ -7521,7 +7441,7 @@ mono_arch_start_single_stepping (void)
        if (ss_trigger_page)
                mono_mprotect (ss_trigger_page, mono_pagesize (), 0);
        else
-               ss_trigger_var = 1;
+               single_step_tramp = mini_get_single_step_trampoline ();
 }
        
 /*
@@ -7535,7 +7455,7 @@ mono_arch_stop_single_stepping (void)
        if (ss_trigger_page)
                mono_mprotect (ss_trigger_page, mono_pagesize (), MONO_MMAP_READ);
        else
-               ss_trigger_var = 0;
+               single_step_tramp = NULL;
 }
 
 #if __APPLE__
index f6b2e2eac93f70e3d6869f061a6630f3db6fe98c..b09db53452a1993fc7f13f51d056a678d1ef3a03 100644 (file)
@@ -233,7 +233,7 @@ struct MonoLMF {
 
 typedef struct MonoCompileArch {
        gpointer seq_point_info_var, ss_trigger_page_var;
-       gpointer seq_point_read_var, seq_point_ss_method_var;
+       gpointer seq_point_ss_method_var;
        gpointer seq_point_bp_method_var;
        gpointer vret_addr_loc;
        gboolean omit_fp, omit_fp_computed;
index c6efc5b78f864f67a42613376e6462921b8c9a02..83170902e4ee113fe059ea27ab3cf26949af8f3d 100644 (file)
@@ -144,7 +144,7 @@ mono_regstate_assign (MonoRegState *rs)
        if (rs->next_vreg > rs->vassign_size) {
                g_free (rs->vassign);
                rs->vassign_size = MAX (rs->next_vreg, 256);
-               rs->vassign = g_malloc (rs->vassign_size * sizeof (gint32));
+               rs->vassign = (gint32 *)g_malloc (rs->vassign_size * sizeof (gint32));
        }
 
        memset (rs->isymbolic, 0, MONO_MAX_IREGS * sizeof (rs->isymbolic [0]));
@@ -295,7 +295,7 @@ resize_spill_info (MonoCompile *cfg, int bank)
 
        g_assert (bank < MONO_NUM_REGBANKS);
 
-       new_info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoSpillInfo) * new_len);
+       new_info = (MonoSpillInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoSpillInfo) * new_len);
        if (orig_info)
                memcpy (new_info, orig_info, sizeof (MonoSpillInfo) * orig_len);
        for (i = orig_len; i < new_len; ++i)
@@ -419,6 +419,12 @@ static const char* const patch_info_str[] = {
 #undef PATCH_INFO
 };
 
+const char*
+mono_ji_type_to_string (MonoJumpInfoType type)
+{
+       return patch_info_str [type];
+}
+
 void
 mono_print_ji (const MonoJumpInfo *ji)
 {
@@ -437,6 +443,10 @@ mono_print_ji (const MonoJumpInfo *ji)
                g_free (s);
                break;
        }
+       case MONO_PATCH_INFO_INTERNAL_METHOD: {
+               printf ("[INTERNAL_METHOD - %s]", ji->data.name);
+               break;
+       }
        default:
                printf ("[%s]", patch_info_str [ji->type]);
                break;
@@ -733,6 +743,12 @@ print_regtrack (RegTrack *t, int num)
 }
 #else
 
+const char*
+mono_ji_type_to_string (MonoJumpInfoType type)
+{
+       return "";
+}
+
 void
 mono_print_ji (const MonoJumpInfo *ji)
 {
@@ -1164,10 +1180,11 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb)
        if (cfg->reginfo && cfg->reginfo_len < max)
                cfg->reginfo = NULL;
 
-       reginfo = cfg->reginfo;
+       reginfo = (RegTrack *)cfg->reginfo;
        if (!reginfo) {
                cfg->reginfo_len = MAX (1024, max * 2);
-               reginfo = cfg->reginfo = mono_mempool_alloc (cfg->mempool, sizeof (RegTrack) * cfg->reginfo_len);
+               reginfo = (RegTrack *)mono_mempool_alloc (cfg->mempool, sizeof (RegTrack) * cfg->reginfo_len);
+               cfg->reginfo = reginfo;
        } 
        else
                g_assert (cfg->reginfo_len >= rs->next_vreg);
@@ -2434,7 +2451,7 @@ mono_opcode_to_cond (int opcode)
        default:
                printf ("%s\n", mono_inst_name (opcode));
                g_assert_not_reached ();
-               return 0;
+               return (CompRelation)0;
        }
 }
 
@@ -2496,7 +2513,7 @@ mono_opcode_to_type (int opcode, int cmp_opcode)
                }
        } else {
                g_error ("Unknown opcode '%s' in opcode_to_type", mono_inst_name (opcode));
-               return 0;
+               return (CompType)0;
        }
 }
 
index 309ebd82531bf937c0f302cc1955da251b7f8435..659075cc30a7f7297017b408d8df42eaf82f72c6 100644 (file)
 #include <mono/metadata/verify-internals.h>
 #include <mono/metadata/mempool-internals.h>
 #include <mono/metadata/attach.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/utils/mono-math.h>
 #include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-counters.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/dtrace.h>
 
index 5019fe169ce9984a0e3a1d52c9b5ac2370702b2a..8db012832c683dda702d7e504e79a97f7a2e8f83 100644 (file)
 #include <sys/prctl.h>
 #endif
 
+#ifdef HAVE_UNWIND_H
+#include <unwind.h>
+#endif
+
 #include <mono/metadata/appdomain.h>
 #include <mono/metadata/tabledefs.h>
 #include <mono/metadata/threads.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/exception.h>
 #include <mono/metadata/object-internals.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/mono-debug.h>
 #include <mono/metadata/profiler.h>
 #include <mono/metadata/mono-endian.h>
 #include <mono/metadata/environment.h>
 #include <mono/metadata/mono-mlist.h>
 #include <mono/utils/mono-mmap.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 
 #include "mini.h"
 #include "trace.h"
 #include "debugger-agent.h"
 #include "seq-points.h"
+#include "llvm-runtime.h"
+#include "mini-llvm.h"
 
 #ifdef ENABLE_LLVM
 #include "mini-llvm-cpp.h"
@@ -125,14 +131,10 @@ mono_exceptions_init (void)
        cbs.mono_walk_stack_with_ctx = mono_runtime_walk_stack_with_ctx;
        cbs.mono_walk_stack_with_state = mono_walk_stack_with_state;
 
-#if defined(ENABLE_LLVM) && !defined(MONO_LLVM_LOADED)
        if (mono_llvm_only)
                cbs.mono_raise_exception = mono_llvm_raise_exception;
        else
-               cbs.mono_raise_exception = mono_get_throw_exception ();
-#else
-               cbs.mono_raise_exception = mono_get_throw_exception ();
-#endif
+               cbs.mono_raise_exception = (void (*)(MonoException *))mono_get_throw_exception ();
        cbs.mono_raise_exception_with_ctx = mono_raise_exception_with_ctx;
        cbs.mono_exception_walk_trace = mono_exception_walk_trace;
        cbs.mono_install_handler_block_guard = mono_install_handler_block_guard;
@@ -236,21 +238,21 @@ find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *res, Mo
        if (prev_ji && (ip > prev_ji->code_start && ((guint8*)ip < ((guint8*)prev_ji->code_start) + prev_ji->code_size)))
                ji = prev_ji;
        else
-               ji = mini_jit_info_table_find (domain, ip, NULL);
+               ji = mini_jit_info_table_find (domain, (char *)ip, NULL);
 
        if (managed)
                *managed = FALSE;
 
        err = mono_arch_unwind_frame (domain, jit_tls, ji, ctx, new_ctx, lmf, NULL, &frame);
        if (!err)
-               return (gpointer)-1;
+               return (MonoJitInfo *)-1;
 
        if (*lmf && ((*lmf) != jit_tls->first_lmf) && ((gpointer)MONO_CONTEXT_GET_SP (new_ctx) >= (gpointer)(*lmf))) {
                /*
                 * Remove any unused lmf.
                 * Mask out the lower bits which might be used to hold additional information.
                 */
-               *lmf = (gpointer)(((gsize)(*lmf)->previous_lmf) & ~(SIZEOF_VOID_P -1));
+               *lmf = (MonoLMF *)(((gsize)(*lmf)->previous_lmf) & ~(SIZEOF_VOID_P -1));
        }
 
        /* Convert between the new and the old APIs */
@@ -395,7 +397,7 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
        if (prev_ji && (ip > prev_ji->code_start && ((guint8*)ip < ((guint8*)prev_ji->code_start) + prev_ji->code_size)))
                ji = prev_ji;
        else
-               ji = mini_jit_info_table_find (domain, ip, &target_domain);
+               ji = mini_jit_info_table_find (domain, (char *)ip, &target_domain);
 
        if (!target_domain)
                target_domain = domain;
@@ -412,7 +414,7 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
                 * Remove any unused lmf.
                 * Mask out the lower bits which might be used to hold additional information.
                 */
-               *lmf = (gpointer)(((gsize)(*lmf)->previous_lmf) & ~(SIZEOF_VOID_P -1));
+               *lmf = (MonoLMF *)(((gsize)(*lmf)->previous_lmf) & ~(SIZEOF_VOID_P -1));
        }
 
        if (frame->ji && !frame->ji->is_trampoline && !frame->ji->async)
@@ -522,7 +524,7 @@ get_generic_info_from_stack_frame (MonoJitInfo *ji, MonoContext *ctx)
                return info;
        } else {
                /* Avoid returning a managed object */
-               MonoObject *this_obj = info;
+               MonoObject *this_obj = (MonoObject *)info;
 
                return this_obj->vtable->klass;
        }
@@ -540,17 +542,17 @@ get_generic_context_from_stack_frame (MonoJitInfo *ji, gpointer generic_info)
        method = jinfo_get_method (ji);
        g_assert (method->is_inflated);
        if (mono_method_get_context (method)->method_inst) {
-               MonoMethodRuntimeGenericContext *mrgctx = generic_info;
+               MonoMethodRuntimeGenericContext *mrgctx = (MonoMethodRuntimeGenericContext *)generic_info;
 
                klass = mrgctx->class_vtable->klass;
                context.method_inst = mrgctx->method_inst;
                g_assert (context.method_inst);
        } else if ((method->flags & METHOD_ATTRIBUTE_STATIC) || method->klass->valuetype) {
-               MonoVTable *vtable = generic_info;
+               MonoVTable *vtable = (MonoVTable *)generic_info;
 
                klass = vtable->klass;
        } else {
-               klass = generic_info;
+               klass = (MonoClass *)generic_info;
        }
 
        //g_assert (!method->klass->generic_container);
@@ -621,7 +623,7 @@ mono_exception_walk_trace (MonoException *ex, MonoExceptionFrameWalk func, gpoin
        for (i = 0; i < len; i++) {
                gpointer ip = mono_array_get (ta, gpointer, i * 2 + 0);
                gpointer generic_info = mono_array_get (ta, gpointer, i * 2 + 1);
-               MonoJitInfo *ji = mono_jit_info_table_find (domain, ip);
+               MonoJitInfo *ji = mono_jit_info_table_find (domain, (char *)ip);
 
                if (ji == NULL) {
                        if (func (NULL, ip, 0, FALSE, user_data))
@@ -661,7 +663,7 @@ ves_icall_get_trace (MonoException *exc, gint32 skip, MonoBoolean need_file_info
                gpointer generic_info = mono_array_get (ta, gpointer, i * 2 + 1);
                MonoMethod *method;
 
-               ji = mono_jit_info_table_find (domain, ip);
+               ji = mono_jit_info_table_find (domain, (char *)ip);
                if (ji == NULL) {
                        /* Unmanaged frame */
                        mono_array_setref (res, i, sf);
@@ -724,7 +726,7 @@ static void
 mono_runtime_walk_stack_with_ctx (MonoJitStackWalk func, MonoContext *start_ctx, MonoUnwindOptions unwind_options, void *user_data)
 {
        if (!start_ctx) {
-               MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+               MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
                if (jit_tls && jit_tls->orig_ex_ctx_set)
                        start_ctx = &jit_tls->orig_ex_ctx;
        }
@@ -758,7 +760,7 @@ mono_walk_stack_with_ctx (MonoJitStackWalk func, MonoContext *start_ctx, MonoUnw
                start_ctx = &extra_ctx;
        }
 
-       mono_walk_stack_full (func, start_ctx, mono_domain_get (), thread->jit_data, mono_get_lmf (), unwind_options, user_data);
+       mono_walk_stack_full (func, start_ctx, mono_domain_get (), (MonoJitTlsData *)thread->jit_data, mono_get_lmf (), unwind_options, user_data);
 }
 
 /**
@@ -791,9 +793,9 @@ mono_walk_stack_with_state (MonoJitStackWalk func, MonoThreadUnwindState *state,
 
        mono_walk_stack_full (func,
                &state->ctx, 
-               state->unwind_data [MONO_UNWIND_DATA_DOMAIN],
-               state->unwind_data [MONO_UNWIND_DATA_JIT_TLS],
-               state->unwind_data [MONO_UNWIND_DATA_LMF],
+               (MonoDomain *)state->unwind_data [MONO_UNWIND_DATA_DOMAIN],
+               (MonoJitTlsData *)state->unwind_data [MONO_UNWIND_DATA_JIT_TLS],
+               (MonoLMF *)state->unwind_data [MONO_UNWIND_DATA_LMF],
                unwind_options, user_data);
 }
 
@@ -899,7 +901,7 @@ ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info,
                          MonoString **file, gint32 *line, gint32 *column)
 {
        MonoDomain *domain = mono_domain_get ();
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoLMF *lmf = mono_get_lmf ();
        MonoJitInfo *ji = NULL;
        MonoContext ctx, new_ctx;
@@ -1031,7 +1033,7 @@ mini_jit_info_table_find_ext (MonoDomain *domain, char *addr, gboolean allow_tra
        if (!t)
                return NULL;
 
-       refs = (t->appdomain_refs) ? *(gpointer *) t->appdomain_refs : NULL;
+       refs = (gpointer *)((t->appdomain_refs) ? *(gpointer *) t->appdomain_refs : NULL);
        for (; refs && *refs; refs++) {
                if (*refs != domain && *refs != mono_get_root_domain ()) {
                        ji = mono_jit_info_table_find_internal ((MonoDomain*) *refs, addr, TRUE, allow_trampolines);
@@ -1099,7 +1101,7 @@ wrap_non_exception_throws (MonoMethod *m)
                        if (named_type != 0x54)
                                continue;
                        name_len = mono_metadata_decode_blob_size (p, &p);
-                       name = g_malloc (name_len + 1);
+                       name = (char *)g_malloc (name_len + 1);
                        memcpy (name, p, name_len);
                        name [name_len] = 0;
                        p += name_len;
@@ -1191,12 +1193,12 @@ setup_stack_trace (MonoException *mono_ex, GSList *dynamic_methods, MonoArray *i
  * OUT_FILTER_IDX. Return TRUE if the exception is caught, FALSE otherwise.
  */
 static gboolean
-mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint32 *out_filter_idx, MonoJitInfo **out_ji, MonoJitInfo **out_prev_ji, MonoObject *non_exception)
+mono_handle_exception_internal_first_pass (MonoContext *ctx, MonoObject *obj, gint32 *out_filter_idx, MonoJitInfo **out_ji, MonoJitInfo **out_prev_ji, MonoObject *non_exception)
 {
        MonoDomain *domain = mono_domain_get ();
        MonoJitInfo *ji = NULL;
        static int (*call_filter) (MonoContext *, gpointer) = NULL;
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoLMF *lmf = mono_get_lmf ();
        MonoArray *initial_trace_ips = NULL;
        GList *trace_ips = NULL;
@@ -1212,7 +1214,7 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
 
        g_assert (ctx != NULL);
 
-       if (obj == domain->stack_overflow_ex)
+       if (obj == (MonoObject *)domain->stack_overflow_ex)
                stack_overflow = TRUE;
 
        mono_ex = (MonoException*)obj;
@@ -1226,7 +1228,7 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
        }
 
        if (!call_filter)
-               call_filter = mono_get_call_filter ();
+               call_filter = (int (*) (MonoContext *, void *))mono_get_call_filter ();
 
        g_assert (jit_tls->end_of_stack);
        g_assert (jit_tls->abort_func);
@@ -1411,12 +1413,12 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
  * @resume: whenever to resume unwinding based on the state in MonoJitTlsData.
  */
 static gboolean
-mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume, MonoJitInfo **out_ji)
+mono_handle_exception_internal (MonoContext *ctx, MonoObject *obj, gboolean resume, MonoJitInfo **out_ji)
 {
        MonoDomain *domain = mono_domain_get ();
        MonoJitInfo *ji, *prev_ji;
        static int (*call_filter) (MonoContext *, gpointer) = NULL;
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoLMF *lmf = mono_get_lmf ();
        MonoException *mono_ex;
        gboolean stack_overflow = FALSE;
@@ -1438,20 +1440,20 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
        /*
         * Allocate a new exception object instead of the preconstructed ones.
         */
-       if (obj == domain->stack_overflow_ex) {
+       if (obj == (MonoObject *)domain->stack_overflow_ex) {
                /*
                 * It is not a good idea to try and put even more pressure on the little stack available.
                 * obj = mono_get_exception_stack_overflow ();
                 */
                stack_overflow = TRUE;
        }
-       else if (obj == domain->null_reference_ex) {
-               obj = mono_get_exception_null_reference ();
+       else if (obj == (MonoObject *)domain->null_reference_ex) {
+               obj = (MonoObject *)mono_get_exception_null_reference ();
        }
 
        if (!mono_object_isinst (obj, mono_defaults.exception_class)) {
                non_exception = obj;
-               obj = mono_get_exception_runtime_wrapped (obj);
+               obj = (MonoObject *)mono_get_exception_runtime_wrapped (obj);
        }
 
        mono_ex = (MonoException*)obj;
@@ -1490,7 +1492,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
        }
 
        if (!call_filter)
-               call_filter = mono_get_call_filter ();
+               call_filter = (int (*)(MonoContext *, void*))mono_get_call_filter ();
 
        g_assert (jit_tls->end_of_stack);
        g_assert (jit_tls->abort_func);
@@ -1524,7 +1526,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                        if (msg == NULL) {
                                msg = message ? mono_string_to_utf8 ((MonoString *) message) : g_strdup ("(System.Exception.Message property not available)");
                        }
-                       g_print ("[%p:] EXCEPTION handling: %s.%s: %s\n", (void*)GetCurrentThreadId (), mono_object_class (obj)->name_space, mono_object_class (obj)->name, msg);
+                       g_print ("[%p:] EXCEPTION handling: %s.%s: %s\n", (void*)mono_native_thread_id_get (), mono_object_class (obj)->name_space, mono_object_class (obj)->name, msg);
                        g_free (msg);
                        if (mono_ex && mono_trace_eval_exception (mono_object_class (mono_ex)))
                                mono_print_thread_dump_from_ctx (ctx);
@@ -1538,7 +1540,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                if (!res) {
                        if (mini_get_debug_options ()->break_on_exc)
                                G_BREAKPOINT ();
-                       mono_debugger_agent_handle_exception (obj, ctx, NULL);
+                       mono_debugger_agent_handle_exception ((MonoException *)obj, ctx, NULL);
 
                        if (mini_get_debug_options ()->suspend_on_unhandled) {
                                mono_runtime_printf_err ("Unhandled exception, suspending...");
@@ -1565,9 +1567,9 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                        }
 
                        if (unhandled)
-                               mono_debugger_agent_handle_exception (obj, ctx, NULL);
+                               mono_debugger_agent_handle_exception ((MonoException *)obj, ctx, NULL);
                        else
-                               mono_debugger_agent_handle_exception (obj, ctx, &ctx_cp);
+                               mono_debugger_agent_handle_exception ((MonoException *)obj, ctx, &ctx_cp);
                }
        }
 
@@ -1698,7 +1700,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                                                         *      There aren't any further finally/fault handler blocks down the stack over this exception.
                                                         *   This must be ensured by the code that installs the guard trampoline.
                                                         */
-                                                       g_assert (ji == mini_jit_info_table_find (domain, MONO_CONTEXT_GET_IP (&jit_tls->handler_block_context), NULL));
+                                                       g_assert (ji == mini_jit_info_table_find (domain, (char *)MONO_CONTEXT_GET_IP (&jit_tls->handler_block_context), NULL));
 
                                                        if (!is_address_protected (ji, jit_tls->handler_block, ei->handler_start)) {
                                                                is_outside = TRUE;
@@ -1721,7 +1723,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
 #ifndef DISABLE_PERFCOUNTERS
                                        mono_perfcounters->exceptions_depth += frame_count;
 #endif
-                                       if (obj == domain->stack_overflow_ex)
+                                       if (obj == (MonoObject *)domain->stack_overflow_ex)
                                                jit_tls->handling_stack_ovf = FALSE;
 
                                        return 0;
@@ -1796,7 +1798,7 @@ mono_debugger_run_finally (MonoContext *start_ctx)
 {
        static int (*call_filter) (MonoContext *, gpointer) = NULL;
        MonoDomain *domain = mono_domain_get ();
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoLMF *lmf = mono_get_lmf ();
        MonoContext ctx, new_ctx;
        MonoJitInfo *ji, rji;
@@ -1809,7 +1811,7 @@ mono_debugger_run_finally (MonoContext *start_ctx)
                return;
 
        if (!call_filter)
-               call_filter = mono_get_call_filter ();
+               call_filter = (int (*)(MonoContext *, void *))mono_get_call_filter ();
 
        for (i = 0; i < ji->num_clauses; i++) {
                MonoJitExceptionInfo *ei = &ji->clauses [i];
@@ -1827,7 +1829,7 @@ mono_debugger_run_finally (MonoContext *start_ctx)
  * @obj: the exception object
  */
 gboolean
-mono_handle_exception (MonoContext *ctx, gpointer obj)
+mono_handle_exception (MonoContext *ctx, MonoObject *obj)
 {
 #ifndef DISABLE_PERFCOUNTERS
        mono_perfcounters->exceptions_thrown++;
@@ -1942,7 +1944,7 @@ try_restore_stack_protection (MonoJitTlsData *jit_tls, int extra_bytes)
 static G_GNUC_UNUSED void
 try_more_restore (void)
 {
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        if (try_restore_stack_protection (jit_tls, 500))
                jit_tls->restore_stack_prot = NULL;
 }
@@ -1950,7 +1952,7 @@ try_more_restore (void)
 static G_GNUC_UNUSED void
 restore_stack_protection (void)
 {
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoException *ex = mono_domain_get ()->stack_overflow_ex;
        /* if we can't restore the stack protection, keep a callback installed so
         * we'll try to restore as much stack as we can at each return from unmanaged
@@ -1969,7 +1971,7 @@ restore_stack_protection (void)
 gpointer
 mono_altstack_restore_prot (mgreg_t *regs, guint8 *code, gpointer *tramp_data, guint8* tramp)
 {
-       void (*func)(void) = (gpointer)tramp_data;
+       void (*func)(void) = (void (*)(void))tramp_data;
        func ();
        return NULL;
 }
@@ -2037,7 +2039,7 @@ static gboolean
 print_overflow_stack_frame (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
        MonoMethod *method = NULL;
-       PrintOverflowUserData *user_data = data;
+       PrintOverflowUserData *user_data = (PrintOverflowUserData *)data;
        gchar *location;
 
        if (frame->ji && frame->type != FRAME_TYPE_TRAMPOLINE)
@@ -2155,7 +2157,7 @@ mono_handle_native_sigsegv (int signal, void *ctx, MONO_SIG_HANDLER_INFO_TYPE *i
 #ifdef MONO_ARCH_USE_SIGACTION
        struct sigaction sa;
 #endif
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        const char *signal_str = (signal == SIGSEGV) ? "SIGSEGV" : "SIGABRT";
 
        if (handling_sigsegv)
@@ -2180,7 +2182,8 @@ mono_handle_native_sigsegv (int signal, void *ctx, MONO_SIG_HANDLER_INFO_TYPE *i
        if (jit_tls && mono_thread_internal_current ()) {
                mono_runtime_printf_err ("Stacktrace:\n");
 
-               mono_walk_stack (print_stack_frame_to_stderr, TRUE, NULL);
+               /* FIXME: Is MONO_UNWIND_LOOKUP_IL_OFFSET correct here? */
+               mono_walk_stack (print_stack_frame_to_stderr, MONO_UNWIND_LOOKUP_IL_OFFSET, NULL);
        }
 
 #ifdef HAVE_BACKTRACE_SYMBOLS
@@ -2369,14 +2372,14 @@ mono_print_thread_dump_from_ctx (MonoContext *ctx)
 void
 mono_resume_unwind (MonoContext *ctx)
 {
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        MonoContext new_ctx;
 
        MONO_CONTEXT_SET_IP (ctx, MONO_CONTEXT_GET_IP (&jit_tls->resume_state.ctx));
        MONO_CONTEXT_SET_SP (ctx, MONO_CONTEXT_GET_SP (&jit_tls->resume_state.ctx));
        new_ctx = *ctx;
 
-       mono_handle_exception_internal (&new_ctx, jit_tls->resume_state.ex_obj, TRUE, NULL);
+       mono_handle_exception_internal (&new_ctx, (MonoObject *)jit_tls->resume_state.ex_obj, TRUE, NULL);
 
        mono_restore_context (&new_ctx);
 }
@@ -2394,7 +2397,7 @@ find_last_handler_block (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
        int i;
        gpointer ip;
-       FindHandlerBlockData *pdata = data;
+       FindHandlerBlockData *pdata = (FindHandlerBlockData *)data;
        MonoJitInfo *ji = frame->ji;
 
        if (!ji)
@@ -2455,7 +2458,7 @@ gboolean
 mono_install_handler_block_guard (MonoThreadUnwindState *ctx)
 {
        FindHandlerBlockData data = { 0 };
-       MonoJitTlsData *jit_tls = ctx->unwind_data [MONO_UNWIND_DATA_JIT_TLS];
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)ctx->unwind_data [MONO_UNWIND_DATA_JIT_TLS];
        gpointer resume_ip;
 
        /* FIXME */
@@ -2503,7 +2506,7 @@ mono_set_cast_details (MonoClass *from, MonoClass *to)
        MonoJitTlsData *jit_tls = NULL;
 
        if (mini_get_debug_options ()->better_cast_details) {
-               jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+               jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
                jit_tls->class_cast_from = from;
                jit_tls->class_cast_to = to;
        }
@@ -2610,7 +2613,7 @@ mono_thread_state_init_from_current (MonoThreadUnwindState *ctx)
 static void
 mono_raise_exception_with_ctx (MonoException *exc, MonoContext *ctx)
 {
-       mono_handle_exception (ctx, exc);
+       mono_handle_exception (ctx, (MonoObject *)exc);
        mono_restore_context (ctx);
 }
 
@@ -2619,7 +2622,7 @@ void
 mono_setup_async_callback (MonoContext *ctx, void (*async_cb)(void *fun), gpointer user_data)
 {
 #ifdef MONO_ARCH_HAVE_SETUP_ASYNC_CALLBACK
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        jit_tls->ex_ctx = *ctx;
 
        mono_arch_setup_async_callback (ctx, async_cb, user_data);
@@ -2682,7 +2685,7 @@ mono_restore_context (MonoContext *ctx)
        static void (*restore_context) (MonoContext *);
 
        if (!restore_context)
-               restore_context = mono_get_restore_context ();
+               restore_context = (void (*)(MonoContext *))mono_get_restore_context ();
        restore_context (ctx);
        g_assert_not_reached ();
 }
@@ -2711,3 +2714,212 @@ mono_jinfo_get_epilog_size (MonoJitInfo *ji)
 
        return info->epilog_size;
 }
+
+/*
+ * LLVM/Bitcode exception handling.
+ */
+
+#ifdef MONO_ARCH_HAVE_UNWIND_BACKTRACE
+
+#if 0
+static gboolean show_native_addresses = TRUE;
+#else
+static gboolean show_native_addresses = FALSE;
+#endif
+
+static _Unwind_Reason_Code
+build_stack_trace (struct _Unwind_Context *frame_ctx, void *state)
+{
+       MonoDomain *domain = mono_domain_get ();
+       uintptr_t ip = _Unwind_GetIP (frame_ctx);
+
+       if (show_native_addresses || mono_jit_info_table_find (domain, (char*)ip)) {
+               GList **trace_ips = (GList **)state;
+               *trace_ips = g_list_prepend (*trace_ips, (gpointer)ip);
+       }
+
+       return _URC_NO_REASON;
+}
+
+#endif
+
+static void
+throw_exception (MonoObject *ex, gboolean rethrow)
+{
+       MonoJitTlsData *jit_tls = mono_get_jit_tls ();
+       MonoException *mono_ex;
+
+       if (!mono_object_isinst (ex, mono_defaults.exception_class))
+               mono_ex = mono_get_exception_runtime_wrapped (ex);
+       else
+               mono_ex = (MonoException*)ex;
+
+       // Note: Not pinned
+       jit_tls->thrown_exc = mono_gchandle_new ((MonoObject*)mono_ex, FALSE);
+
+       if (!rethrow) {
+#ifdef MONO_ARCH_HAVE_UNWIND_BACKTRACE
+               GList *l, *ips = NULL;
+               GList *trace;
+
+               _Unwind_Backtrace (build_stack_trace, &ips);
+               /* The list contains gshared info-ip pairs */
+               trace = NULL;
+               ips = g_list_reverse (ips);
+               for (l = ips; l; l = l->next) {
+                       // FIXME:
+                       trace = g_list_append (trace, l->data);
+                       trace = g_list_append (trace, NULL);
+               }
+               MONO_OBJECT_SETREF (mono_ex, trace_ips, mono_glist_to_array (trace, mono_defaults.int_class));
+               g_list_free (l);
+               g_list_free (trace);
+#endif
+       }
+
+       mono_llvm_cpp_throw_exception ();
+}
+
+void
+mono_llvm_throw_exception (MonoObject *ex)
+{
+       throw_exception (ex, FALSE);
+}
+
+void
+mono_llvm_rethrow_exception (MonoObject *ex)
+{
+       throw_exception (ex, TRUE);
+}
+
+void
+mono_llvm_raise_exception (MonoException *e)
+{
+       mono_llvm_throw_exception ((MonoObject*)e);
+}
+
+void
+mono_llvm_throw_corlib_exception (guint32 ex_token_index)
+{
+       guint32 ex_token = MONO_TOKEN_TYPE_DEF | ex_token_index;
+       MonoException *ex;
+
+       ex = mono_exception_from_token (mono_defaults.exception_class->image, ex_token);
+
+       mono_llvm_throw_exception ((MonoObject*)ex);
+}
+
+/*
+ * mono_llvm_resume_exception:
+ *
+ *   Resume exception propagation.
+ */
+void
+mono_llvm_resume_exception (void)
+{
+       mono_llvm_cpp_throw_exception ();
+}
+
+/*
+ * mono_llvm_load_exception:
+ *
+ *   Return the currently thrown exception.
+ */
+MonoObject *
+mono_llvm_load_exception (void)
+{
+       MonoJitTlsData *jit_tls = mono_get_jit_tls ();
+
+       MonoException *mono_ex = (MonoException*)mono_gchandle_get_target (jit_tls->thrown_exc);
+       g_assert (mono_ex->trace_ips);
+
+       GList *trace_ips = NULL;
+       gpointer ip = __builtin_return_address (0);
+
+       size_t upper = mono_array_length (mono_ex->trace_ips);
+
+       for (int i = 0; i < upper; i++) {
+               gpointer curr_ip = mono_array_get (mono_ex->trace_ips, gpointer, i);
+               trace_ips = g_list_prepend (trace_ips, curr_ip);
+
+               if (ip == curr_ip)
+                       break;
+       }
+
+       // FIXME: Does this work correctly for rethrows?
+       // We may be discarding useful information
+       // when this gets GC'ed
+       MONO_OBJECT_SETREF (mono_ex, trace_ips, mono_glist_to_array (trace_ips, mono_defaults.int_class));
+       g_list_free (trace_ips);
+
+       // FIXME:
+       //MONO_OBJECT_SETREF (mono_ex, stack_trace, ves_icall_System_Exception_get_trace (mono_ex));
+
+       return &mono_ex->object;
+}
+
+/*
+ * mono_llvm_clear_exception:
+ *
+ *   Mark the currently thrown exception as handled.
+ */
+void
+mono_llvm_clear_exception (void)
+{
+       MonoJitTlsData *jit_tls = mono_get_jit_tls ();
+       mono_gchandle_free (jit_tls->thrown_exc);
+       jit_tls->thrown_exc = 0;
+
+       mono_memory_barrier ();
+}
+
+/*
+ * mono_llvm_match_exception:
+ *
+ *   Return the innermost clause containing REGION_START-REGION_END which can handle
+ * the current exception.
+ */
+gint32
+mono_llvm_match_exception (MonoJitInfo *jinfo, guint32 region_start, guint32 region_end)
+{
+       MonoJitTlsData *jit_tls = mono_get_jit_tls ();
+       MonoObject *exc;
+       gint32 index = -1;
+
+       g_assert (jit_tls->thrown_exc);
+       exc = mono_gchandle_get_target (jit_tls->thrown_exc);
+       for (int i = 0; i < jinfo->num_clauses; i++) {
+               MonoJitExceptionInfo *ei = &jinfo->clauses [i];
+
+               if (! (ei->try_offset == region_start && ei->try_offset + ei->try_len == region_end) )
+                       continue;
+
+               // FIXME: Handle edge cases handled in get_exception_catch_class
+               if (ei->flags == MONO_EXCEPTION_CLAUSE_NONE && mono_object_isinst (exc, ei->data.catch_class)) {
+                       index = ei->clause_index;
+                       break;
+               } else if (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER) {
+                       g_assert_not_reached ();
+               }
+       }
+
+       return index;
+}
+
+#ifdef ENABLE_LLVM
+_Unwind_Reason_Code 
+mono_debug_personality (int a, _Unwind_Action b,
+uint64_t c, struct _Unwind_Exception *d, struct _Unwind_Context *e)
+{
+       g_assert_not_reached ();
+}
+#else
+void
+mono_debug_personality (void);
+
+void
+mono_debug_personality (void)
+{
+       g_assert_not_reached ();
+}
+#endif
index 27a36204ca0c354e2448695293162924744d88c8..47265e1d10f50156070c8372ba7447619fb12436 100644 (file)
@@ -10,7 +10,7 @@
 
 #include "config.h"
 #include "mini-gc.h"
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 
 static gboolean
 get_provenance (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
@@ -38,7 +38,7 @@ get_provenance_func (void)
 //#if defined(MONO_ARCH_GC_MAPS_SUPPORTED)
 
 #include <mono/metadata/sgen-conf.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/utils/mono-counters.h>
 
 #define SIZEOF_SLOT ((int)sizeof (mgreg_t))
@@ -597,7 +597,7 @@ thread_attach_func (void)
        TlsData *tls;
 
        tls = g_new0 (TlsData, 1);
-       tls->tid = GetCurrentThreadId ();
+       tls->tid = mono_native_thread_id_get ();
        tls->info = mono_thread_info_current ();
        stats.tlsdata_size += sizeof (TlsData);
 
@@ -622,7 +622,7 @@ thread_suspend_func (gpointer user_data, void *sigctx, MonoContext *ctx)
                return;
        }
 
-       if (tls->tid != GetCurrentThreadId ()) {
+       if (tls->tid != mono_native_thread_id_get ()) {
                /* Happens on osx because threads are not suspended using signals */
 #ifndef TARGET_WIN32
                gboolean res;
index 420b9aac36eb669795755da219ed5c6445576e44..2e88f8352324d0e0ed00042e78179581869f34b9 100644 (file)
@@ -11,6 +11,7 @@
 #include <config.h>
 
 #include <mono/metadata/class.h>
+#include <mono/metadata/method-builder.h>
 #include <mono/utils/mono-counters.h>
 
 #include "mini.h"
 static void
 mono_class_unregister_image_generic_subclasses (MonoImage *image, gpointer user_data);
 
+/* Counters */
+static int num_templates_allocted;
+static int num_templates_bytes;
+static int num_oti_allocted;
+static int num_oti_bytes;
+
 static gboolean partial_supported = FALSE;
 
 static inline gboolean
@@ -136,35 +143,35 @@ mono_class_check_context_used (MonoClass *klass)
  * LOCKING: loader lock
  */
 static MonoRuntimeGenericContextInfoTemplate*
-get_info_templates (MonoRuntimeGenericContextTemplate *template, int type_argc)
+get_info_templates (MonoRuntimeGenericContextTemplate *template_, int type_argc)
 {
        g_assert (type_argc >= 0);
        if (type_argc == 0)
-               return template->infos;
-       return g_slist_nth_data (template->method_templates, type_argc - 1);
+               return template_->infos;
+       return (MonoRuntimeGenericContextInfoTemplate *)g_slist_nth_data (template_->method_templates, type_argc - 1);
 }
 
 /*
  * LOCKING: loader lock
  */
 static void
-set_info_templates (MonoImage *image, MonoRuntimeGenericContextTemplate *template, int type_argc,
+set_info_templates (MonoImage *image, MonoRuntimeGenericContextTemplate *template_, int type_argc,
        MonoRuntimeGenericContextInfoTemplate *oti)
 {
        g_assert (type_argc >= 0);
        if (type_argc == 0)
-               template->infos = oti;
+               template_->infos = oti;
        else {
-               int length = g_slist_length (template->method_templates);
+               int length = g_slist_length (template_->method_templates);
                GSList *list;
 
                /* FIXME: quadratic! */
                while (length < type_argc) {
-                       template->method_templates = g_slist_append_image (image, template->method_templates, NULL);
+                       template_->method_templates = g_slist_append_image (image, template_->method_templates, NULL);
                        length++;
                }
 
-               list = g_slist_nth (template->method_templates, type_argc - 1);
+               list = g_slist_nth (template_->method_templates, type_argc - 1);
                g_assert (list);
                list->data = oti;
        }
@@ -174,23 +181,23 @@ set_info_templates (MonoImage *image, MonoRuntimeGenericContextTemplate *templat
  * LOCKING: loader lock
  */
 static int
-template_get_max_argc (MonoRuntimeGenericContextTemplate *template)
+template_get_max_argc (MonoRuntimeGenericContextTemplate *template_)
 {
-       return g_slist_length (template->method_templates);
+       return g_slist_length (template_->method_templates);
 }
 
 /*
  * LOCKING: loader lock
  */
 static MonoRuntimeGenericContextInfoTemplate*
-rgctx_template_get_other_slot (MonoRuntimeGenericContextTemplate *template, int type_argc, int slot)
+rgctx_template_get_other_slot (MonoRuntimeGenericContextTemplate *template_, int type_argc, int slot)
 {
        int i;
        MonoRuntimeGenericContextInfoTemplate *oti;
 
        g_assert (slot >= 0);
 
-       for (oti = get_info_templates (template, type_argc), i = 0; i < slot; oti = oti->next, ++i) {
+       for (oti = get_info_templates (template_, type_argc), i = 0; i < slot; oti = oti->next, ++i) {
                if (!oti)
                        return NULL;
        }
@@ -202,12 +209,12 @@ rgctx_template_get_other_slot (MonoRuntimeGenericContextTemplate *template, int
  * LOCKING: loader lock
  */
 static int
-rgctx_template_num_infos (MonoRuntimeGenericContextTemplate *template, int type_argc)
+rgctx_template_num_infos (MonoRuntimeGenericContextTemplate *template_, int type_argc)
 {
        MonoRuntimeGenericContextInfoTemplate *oti;
        int i;
 
-       for (i = 0, oti = get_info_templates (template, type_argc); oti; ++i, oti = oti->next)
+       for (i = 0, oti = get_info_templates (template_, type_argc); oti; ++i, oti = oti->next)
                ;
 
        return i;
@@ -239,14 +246,14 @@ class_set_rgctx_template (MonoClass *klass, MonoRuntimeGenericContextTemplate *r
 static MonoRuntimeGenericContextTemplate*
 class_lookup_rgctx_template (MonoClass *klass)
 {
-       MonoRuntimeGenericContextTemplate *template;
+       MonoRuntimeGenericContextTemplate *template_;
 
        if (!klass->image->rgctx_template_hash)
                return NULL;
 
-       template = g_hash_table_lookup (klass->image->rgctx_template_hash, klass);
+       template_ = (MonoRuntimeGenericContextTemplate *)g_hash_table_lookup (klass->image->rgctx_template_hash, klass);
 
-       return template;
+       return template_;
 }
 
 /*
@@ -267,7 +274,7 @@ register_generic_subclass (MonoClass *klass)
        if (!generic_subclass_hash)
                generic_subclass_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
 
-       subclass = g_hash_table_lookup (generic_subclass_hash, parent);
+       subclass = (MonoClass *)g_hash_table_lookup (generic_subclass_hash, parent);
        rgctx_template->next_subclass = subclass;
        g_hash_table_insert (generic_subclass_hash, parent, klass);
 }
@@ -340,43 +347,24 @@ mono_class_unregister_image_generic_subclasses (MonoImage *image, gpointer user_
 static MonoRuntimeGenericContextTemplate*
 alloc_template (MonoClass *klass)
 {
-       static gboolean inited = FALSE;
-       static int num_allocted = 0;
-       static int num_bytes = 0;
-
        int size = sizeof (MonoRuntimeGenericContextTemplate);
 
-       if (!inited) {
-               mono_counters_register ("RGCTX template num allocted", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &num_allocted);
-               mono_counters_register ("RGCTX template bytes allocted", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &num_bytes);
-               inited = TRUE;
-       }
-
-       num_allocted++;
-       num_bytes += size;
+       num_templates_allocted++;
+       num_templates_bytes += size;
 
-       return mono_image_alloc0 (klass->image, size);
+       return (MonoRuntimeGenericContextTemplate *)mono_image_alloc0 (klass->image, size);
 }
 
+/* LOCKING: Takes the loader lock */
 static MonoRuntimeGenericContextInfoTemplate*
 alloc_oti (MonoImage *image)
 {
-       static gboolean inited = FALSE;
-       static int num_allocted = 0;
-       static int num_bytes = 0;
-
        int size = sizeof (MonoRuntimeGenericContextInfoTemplate);
 
-       if (!inited) {
-               mono_counters_register ("RGCTX oti num allocted", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &num_allocted);
-               mono_counters_register ("RGCTX oti bytes allocted", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &num_bytes);
-               inited = TRUE;
-       }
-
-       num_allocted++;
-       num_bytes += size;
+       num_oti_allocted++;
+       num_oti_bytes += size;
 
-       return mono_image_alloc0 (image, size);
+       return (MonoRuntimeGenericContextInfoTemplate *)mono_image_alloc0 (image, size);
 }
 
 #define MONO_RGCTX_SLOT_USED_MARKER    ((gpointer)&mono_defaults.object_class->byval_arg)
@@ -396,7 +384,7 @@ info_has_identity (MonoRgctxInfoType info_type)
  * LOCKING: loader lock
  */
 static void
-rgctx_template_set_slot (MonoImage *image, MonoRuntimeGenericContextTemplate *template, int type_argc,
+rgctx_template_set_slot (MonoImage *image, MonoRuntimeGenericContextTemplate *template_, int type_argc,
        int slot, gpointer data, MonoRgctxInfoType info_type)
 {
        static gboolean inited = FALSE;
@@ -404,7 +392,7 @@ rgctx_template_set_slot (MonoImage *image, MonoRuntimeGenericContextTemplate *te
        static int num_data = 0;
 
        int i;
-       MonoRuntimeGenericContextInfoTemplate *list = get_info_templates (template, type_argc);
+       MonoRuntimeGenericContextInfoTemplate *list = get_info_templates (template_, type_argc);
        MonoRuntimeGenericContextInfoTemplate **oti = &list;
 
        if (!inited) {
@@ -429,7 +417,7 @@ rgctx_template_set_slot (MonoImage *image, MonoRuntimeGenericContextTemplate *te
        (*oti)->data = data;
        (*oti)->info_type = info_type;
 
-       set_info_templates (image, template, type_argc, list);
+       set_info_templates (image, template_, type_argc, list);
 
        if (data == MONO_RGCTX_SLOT_USED_MARKER)
                ++num_markers;
@@ -543,18 +531,20 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
        case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
        case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: {
                gpointer result = mono_class_inflate_generic_type_with_mempool (temporary ? NULL : klass->image,
-                       data, context, &error);
-               g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
+                       (MonoType *)data, context, &error);
+               if (!mono_error_ok (&error)) /*FIXME proper error handling */
+                       g_error ("Could not inflate generic type due to %s", mono_error_get_message (&error));
                return result;
        }
 
        case MONO_RGCTX_INFO_METHOD:
        case MONO_RGCTX_INFO_GENERIC_METHOD_CODE:
+       case MONO_RGCTX_INFO_GSHAREDVT_OUT_WRAPPER:
        case MONO_RGCTX_INFO_METHOD_RGCTX:
        case MONO_RGCTX_INFO_METHOD_CONTEXT:
        case MONO_RGCTX_INFO_REMOTING_INVOKE_WITH_CHECK:
        case MONO_RGCTX_INFO_METHOD_DELEGATE_CODE: {
-               MonoMethod *method = data;
+               MonoMethod *method = (MonoMethod *)data;
                MonoMethod *inflated_method;
                MonoType *inflated_type = mono_class_inflate_generic_type (&method->klass->byval_arg, context);
                MonoClass *inflated_class = mono_class_from_mono_type (inflated_type);
@@ -579,12 +569,12 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
                return inflated_method;
        }
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO: {
-               MonoGSharedVtMethodInfo *oinfo = data;
+               MonoGSharedVtMethodInfo *oinfo = (MonoGSharedVtMethodInfo *)data;
                MonoGSharedVtMethodInfo *res;
                MonoDomain *domain = mono_domain_get ();
                int i;
 
-               res = mono_domain_alloc0 (domain, sizeof (MonoGSharedVtMethodInfo));
+               res = (MonoGSharedVtMethodInfo *)mono_domain_alloc0 (domain, sizeof (MonoGSharedVtMethodInfo));
                /*
                res->nlocals = info->nlocals;
                res->locals_types = g_new0 (MonoType*, info->nlocals);
@@ -592,19 +582,19 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
                        res->locals_types [i] = mono_class_inflate_generic_type (info->locals_types [i], context);
                */
                res->num_entries = oinfo->num_entries;
-               res->entries = mono_domain_alloc0 (domain, sizeof (MonoRuntimeGenericContextInfoTemplate) * oinfo->num_entries);
+               res->entries = (MonoRuntimeGenericContextInfoTemplate *)mono_domain_alloc0 (domain, sizeof (MonoRuntimeGenericContextInfoTemplate) * oinfo->num_entries);
                for (i = 0; i < oinfo->num_entries; ++i) {
                        MonoRuntimeGenericContextInfoTemplate *otemplate = &oinfo->entries [i];
-                       MonoRuntimeGenericContextInfoTemplate *template = &res->entries [i];
+                       MonoRuntimeGenericContextInfoTemplate *template_ = &res->entries [i];
 
-                       memcpy (template, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
-                       template->data = inflate_info (template, context, klass, FALSE);
+                       memcpy (template_, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
+                       template_->data = inflate_info (template_, context, klass, FALSE);
                }
                return res;
        }
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE:
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT: {
-               MonoJumpInfoGSharedVtCall *info = data;
+               MonoJumpInfoGSharedVtCall *info = (MonoJumpInfoGSharedVtCall *)data;
                MonoMethod *method = info->method;
                MonoMethod *inflated_method;
                MonoType *inflated_type = mono_class_inflate_generic_type (&method->klass->byval_arg, context);
@@ -612,7 +602,7 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
                MonoJumpInfoGSharedVtCall *res;
                MonoDomain *domain = mono_domain_get ();
 
-               res = mono_domain_alloc0 (domain, sizeof (MonoJumpInfoGSharedVtCall));
+               res = (MonoJumpInfoGSharedVtCall *)mono_domain_alloc0 (domain, sizeof (MonoJumpInfoGSharedVtCall));
                /* Keep the original signature */
                res->sig = info->sig;
 
@@ -640,7 +630,7 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
 
        case MONO_RGCTX_INFO_CLASS_FIELD:
        case MONO_RGCTX_INFO_FIELD_OFFSET: {
-               MonoClassField *field = data;
+               MonoClassField *field = (MonoClassField *)data;
                MonoType *inflated_type = mono_class_inflate_generic_type (&field->parent->byval_arg, context);
                MonoClass *inflated_class = mono_class_from_mono_type (inflated_type);
                int i = field - field->parent->fields;
@@ -654,7 +644,7 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
                return &inflated_class->fields [i];
        }
        case MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI: {
-               MonoMethodSignature *sig = data;
+               MonoMethodSignature *sig = (MonoMethodSignature *)data;
                MonoMethodSignature *isig;
                MonoError error;
 
@@ -664,14 +654,14 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
        }
        case MONO_RGCTX_INFO_VIRT_METHOD_CODE:
        case MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE: {
-               MonoJumpInfoVirtMethod *info = data;
+               MonoJumpInfoVirtMethod *info = (MonoJumpInfoVirtMethod *)data;
                MonoJumpInfoVirtMethod *res;
                MonoType *t;
                MonoDomain *domain = mono_domain_get ();
                MonoError error;
 
                // FIXME: Temporary
-               res = mono_domain_alloc0 (domain, sizeof (MonoJumpInfoVirtMethod));
+               res = (MonoJumpInfoVirtMethod *)mono_domain_alloc0 (domain, sizeof (MonoJumpInfoVirtMethod));
                t = mono_class_inflate_generic_type (&info->klass->byval_arg, context);
                res->klass = mono_class_from_mono_type (t);
                mono_metadata_free_type (t);
@@ -702,7 +692,7 @@ free_inflated_info (MonoRgctxInfoType info_type, gpointer info)
        case MONO_RGCTX_INFO_TYPE:
        case MONO_RGCTX_INFO_REFLECTION_TYPE:
        case MONO_RGCTX_INFO_CAST_CACHE:
-               mono_metadata_free_type (info);
+               mono_metadata_free_type ((MonoType *)info);
                break;
        default:
                break;
@@ -741,21 +731,21 @@ get_shared_class (MonoClass *klass)
 static MonoRuntimeGenericContextTemplate*
 mono_class_get_runtime_generic_context_template (MonoClass *klass)
 {
-       MonoRuntimeGenericContextTemplate *parent_template, *template;
+       MonoRuntimeGenericContextTemplate *parent_template, *template_;
        guint32 i;
 
        klass = get_shared_class (klass);
 
        mono_loader_lock ();
-       template = class_lookup_rgctx_template (klass);
+       template_ = class_lookup_rgctx_template (klass);
        mono_loader_unlock ();
 
-       if (template)
-               return template;
+       if (template_)
+               return template_;
 
        //g_assert (get_shared_class (class) == class);
 
-       template = alloc_template (klass);
+       template_ = alloc_template (klass);
 
        mono_loader_lock ();
 
@@ -775,7 +765,7 @@ mono_class_get_runtime_generic_context_template (MonoClass *klass)
 
                                oti = class_get_rgctx_template_oti (klass->parent, type_argc, i, FALSE, FALSE, NULL);
                                if (oti.data && oti.data != MONO_RGCTX_SLOT_USED_MARKER) {
-                                       rgctx_template_set_slot (klass->image, template, type_argc, i,
+                                       rgctx_template_set_slot (klass->image, template_, type_argc, i,
                                                                                         oti.data, oti.info_type);
                                }
                        }
@@ -784,9 +774,9 @@ mono_class_get_runtime_generic_context_template (MonoClass *klass)
 
        if (class_lookup_rgctx_template (klass)) {
                /* some other thread already set the template */
-               template = class_lookup_rgctx_template (klass);
+               template_ = class_lookup_rgctx_template (klass);
        } else {
-               class_set_rgctx_template (klass, template);
+               class_set_rgctx_template (klass, template_);
 
                if (klass->parent)
                        register_generic_subclass (klass);
@@ -794,7 +784,7 @@ mono_class_get_runtime_generic_context_template (MonoClass *klass)
 
        mono_loader_unlock ();
 
-       return template;
+       return template_;
 }
 
 /*
@@ -833,11 +823,11 @@ class_get_rgctx_template_oti (MonoClass *klass, int type_argc, guint32 slot, gbo
 
                return oti;
        } else {
-               MonoRuntimeGenericContextTemplate *template;
+               MonoRuntimeGenericContextTemplate *template_;
                MonoRuntimeGenericContextInfoTemplate *oti;
 
-               template = mono_class_get_runtime_generic_context_template (klass);
-               oti = rgctx_template_get_other_slot (template, type_argc, slot);
+               template_ = mono_class_get_runtime_generic_context_template (klass);
+               oti = rgctx_template_get_other_slot (template_, type_argc, slot);
                g_assert (oti);
 
                if (temporary)
@@ -869,8 +859,8 @@ class_type_info (MonoDomain *domain, MonoClass *klass, MonoRgctxInfoType info_ty
        }
        case MONO_RGCTX_INFO_CAST_CACHE: {
                /*First slot is the cache itself, the second the vtable.*/
-               gpointer **cache_data = mono_domain_alloc0 (domain, sizeof (gpointer) * 2);
-               cache_data [1] = (gpointer)klass;
+               gpointer **cache_data = (gpointer **)mono_domain_alloc0 (domain, sizeof (gpointer) * 2);
+               cache_data [1] = (gpointer *)klass;
                return cache_data;
        }
        case MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE:
@@ -882,11 +872,11 @@ class_type_info (MonoDomain *domain, MonoClass *klass, MonoRgctxInfoType info_ty
                        return GUINT_TO_POINTER (mono_class_value_size (klass, NULL));
        case MONO_RGCTX_INFO_CLASS_BOX_TYPE:
                if (MONO_TYPE_IS_REFERENCE (&klass->byval_arg))
-                       return GUINT_TO_POINTER (1);
+                       return GUINT_TO_POINTER (MONO_GSHAREDVT_BOX_TYPE_REF);
                else if (mono_class_is_nullable (klass))
-                       return GUINT_TO_POINTER (2);
+                       return GUINT_TO_POINTER (MONO_GSHAREDVT_BOX_TYPE_NULLABLE);
                else
-                       return GUINT_TO_POINTER (0);
+                       return GUINT_TO_POINTER (MONO_GSHAREDVT_BOX_TYPE_VTYPE);
        case MONO_RGCTX_INFO_MEMCPY:
        case MONO_RGCTX_INFO_BZERO: {
                static MonoMethod *memcpy_method [17];
@@ -926,7 +916,7 @@ class_type_info (MonoDomain *domain, MonoClass *klass, MonoRgctxInfoType info_ty
                        if (!domain_info->memcpy_addr [size]) {
                                gpointer addr = mono_compile_method (memcpy_method [size]);
                                mono_memory_barrier ();
-                               domain_info->memcpy_addr [size] = addr;
+                               domain_info->memcpy_addr [size] = (gpointer *)addr;
                        }
                        return domain_info->memcpy_addr [size];
                } else {
@@ -946,7 +936,7 @@ class_type_info (MonoDomain *domain, MonoClass *klass, MonoRgctxInfoType info_ty
                        if (!domain_info->bzero_addr [size]) {
                                gpointer addr = mono_compile_method (bzero_method [size]);
                                mono_memory_barrier ();
-                               domain_info->bzero_addr [size] = addr;
+                               domain_info->bzero_addr [size] = (gpointer *)addr;
                        }
                        return domain_info->bzero_addr [size];
                }
@@ -954,8 +944,10 @@ class_type_info (MonoDomain *domain, MonoClass *klass, MonoRgctxInfoType info_ty
        case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
        case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: {
                MonoMethod *method;
-               gpointer addr;
+               gpointer addr, arg;
                MonoJitInfo *ji;
+               MonoMethodSignature *sig, *gsig;
+               MonoMethod *gmethod;
 
                if (!mono_class_is_nullable (klass))
                        /* This can happen since all the entries in MonoGSharedVtMethodInfo are inflated, even those which are not used */
@@ -967,15 +959,24 @@ class_type_info (MonoDomain *domain, MonoClass *klass, MonoRgctxInfoType info_ty
                        method = mono_class_get_method_from_name (klass, "Unbox", 1);
 
                addr = mono_compile_method (method);
+
                // The caller uses the gsharedvt call signature
-               ji = mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (addr), NULL);
+
+               if (mono_llvm_only) {
+                       /* FIXME: We have no access to the gsharedvt signature/gsctx used by the caller, so have to construct it ourselves */
+                       gmethod = mini_get_shared_method_full (method, FALSE, TRUE);
+                       sig = mono_method_signature (method);
+                       gsig = mono_method_signature (gmethod);
+
+                       addr = mini_add_method_wrappers_llvmonly (method, addr, TRUE, FALSE, &arg);
+                       return mini_create_llvmonly_ftndesc (domain, addr, arg);
+               }
+
+               ji = mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (addr), NULL);
                g_assert (ji);
                if (mini_jit_info_is_gsharedvt (ji))
                        return mono_create_static_rgctx_trampoline (method, addr);
                else {
-                       MonoMethodSignature *sig, *gsig;
-                       MonoMethod *gmethod;
-
                        /* Need to add an out wrapper */
 
                        /* FIXME: We have no access to the gsharedvt signature/gsctx used by the caller, so have to construct it ourselves */
@@ -1018,7 +1019,7 @@ typedef struct {
 static guint
 tramp_info_hash (gconstpointer key)
 {
-       GSharedVtTrampInfo *tramp = (gpointer)key;
+       GSharedVtTrampInfo *tramp = (GSharedVtTrampInfo *)key;
 
        return (gsize)tramp->addr;
 }
@@ -1026,14 +1027,331 @@ tramp_info_hash (gconstpointer key)
 static gboolean
 tramp_info_equal (gconstpointer a, gconstpointer b)
 {
-       GSharedVtTrampInfo *tramp1 = (gpointer)a;
-       GSharedVtTrampInfo *tramp2 = (gpointer)b;
+       GSharedVtTrampInfo *tramp1 = (GSharedVtTrampInfo *)a;
+       GSharedVtTrampInfo *tramp2 = (GSharedVtTrampInfo *)b;
 
        /* The signatures should be internalized */
        return tramp1->is_in == tramp2->is_in && tramp1->calli == tramp2->calli && tramp1->vcall_offset == tramp2->vcall_offset &&
                tramp1->addr == tramp2->addr && tramp1->sig == tramp2->sig && tramp1->gsig == tramp2->gsig;
 }
 
+static MonoType*
+get_wrapper_shared_type (MonoType *t)
+{
+       if (t->byref)
+               return &mono_defaults.int_class->this_arg;
+       t = mini_get_underlying_type (t);
+
+       switch (t->type) {
+       case MONO_TYPE_OBJECT:
+       case MONO_TYPE_CLASS:
+       case MONO_TYPE_SZARRAY:
+       case MONO_TYPE_ARRAY:
+       case MONO_TYPE_PTR:
+               return &mono_defaults.int_class->byval_arg;
+       case MONO_TYPE_GENERICINST: {
+               MonoClass *klass;
+               MonoGenericContext ctx;
+               MonoGenericContext *orig_ctx;
+               MonoGenericInst *inst;
+               MonoType *args [16];
+               int i;
+
+               if (!MONO_TYPE_ISSTRUCT (t))
+                       return &mono_defaults.int_class->byval_arg;
+
+               klass = mono_class_from_mono_type (t);
+               orig_ctx = &klass->generic_class->context;
+
+               memset (&ctx, 0, sizeof (MonoGenericContext));
+
+               inst = orig_ctx->class_inst;
+               if (inst) {
+                       g_assert (inst->type_argc < 16);
+                       for (i = 0; i < inst->type_argc; ++i)
+                               args [i] = get_wrapper_shared_type (inst->type_argv [i]);
+                       ctx.class_inst = mono_metadata_get_generic_inst (inst->type_argc, args);
+               }
+               inst = orig_ctx->method_inst;
+               if (inst) {
+                       g_assert (inst->type_argc < 16);
+                       for (i = 0; i < inst->type_argc; ++i)
+                               args [i] = get_wrapper_shared_type (inst->type_argv [i]);
+                       ctx.method_inst = mono_metadata_get_generic_inst (inst->type_argc, args);
+               }
+               klass = mono_class_inflate_generic_class (klass->generic_class->container_class, &ctx);
+               return &klass->byval_arg;
+       }
+#if SIZEOF_VOID_P == 8
+       case MONO_TYPE_I8:
+               return &mono_defaults.int_class->byval_arg;
+#endif
+       default:
+               break;
+       }
+
+       //printf ("%s\n", mono_type_full_name (t));
+
+       return t;
+}
+
+static MonoMethodSignature*
+mini_get_underlying_signature (MonoMethodSignature *sig)
+{
+       MonoMethodSignature *res = mono_metadata_signature_dup (sig);
+       int i;
+
+       res->ret = get_wrapper_shared_type (sig->ret);
+       for (i = 0; i < sig->param_count; ++i)
+               res->params [i] = get_wrapper_shared_type (sig->params [i]);
+       res->generic_param_count = 0;
+       res->is_inflated = 0;
+
+       return res;
+}
+
+/*
+ * mini_get_gsharedvt_in_sig_wrapper:
+ *
+ *   Return a wrapper to translate between the normal and gsharedvt calling conventions of SIG.
+ * The returned wrapper has a signature of SIG, plus one extra argument, which is an <addr, rgctx> pair.
+ * The extra argument is passed the same way as an rgctx to shared methods.
+ * It calls <addr> using the gsharedvt version of SIG, passing in <rgctx> as an extra argument.
+ */
+MonoMethod*
+mini_get_gsharedvt_in_sig_wrapper (MonoMethodSignature *sig)
+{
+       MonoMethodBuilder *mb;
+       MonoMethod *res;
+       WrapperInfo *info;
+       MonoMethodSignature *csig, *gsharedvt_sig;
+       int i, pindex, retval_var;
+       static GHashTable *cache;
+
+       // FIXME: Memory management
+       sig = mini_get_underlying_signature (sig);
+
+       // FIXME: Normal cache
+       if (!cache)
+               cache = g_hash_table_new_full ((GHashFunc)mono_signature_hash, (GEqualFunc)mono_metadata_signature_equal, NULL, NULL);
+       // FIXME: Locking
+       res = g_hash_table_lookup (cache, sig);
+       if (res) {
+               g_free (sig);
+               return res;
+       }
+
+       /* Create the signature for the wrapper */
+       // FIXME:
+       csig = g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + ((sig->param_count + 1) * sizeof (MonoType*)));
+       memcpy (csig, sig, mono_metadata_signature_size (sig));
+       csig->param_count ++;
+       csig->params [sig->param_count] = &mono_defaults.int_class->byval_arg;
+
+       /* Create the signature for the gsharedvt callconv */
+       gsharedvt_sig = g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + ((sig->param_count + 2) * sizeof (MonoType*)));
+       memcpy (gsharedvt_sig, sig, mono_metadata_signature_size (sig));
+       pindex = 0;
+       /* The return value is returned using an explicit vret argument */
+       if (sig->ret->type != MONO_TYPE_VOID) {
+               gsharedvt_sig->params [pindex ++] = &mono_defaults.int_class->byval_arg;
+               gsharedvt_sig->ret = &mono_defaults.void_class->byval_arg;
+       }
+       for (i = 0; i < sig->param_count; i++) {
+               gsharedvt_sig->params [pindex] = sig->params [i];
+               if (!sig->params [i]->byref) {
+                       gsharedvt_sig->params [pindex] = mono_metadata_type_dup (NULL, gsharedvt_sig->params [pindex]);
+                       gsharedvt_sig->params [pindex]->byref = 1;
+               }
+               pindex ++;
+       }
+       /* Rgctx arg */
+       gsharedvt_sig->params [pindex ++] = &mono_defaults.int_class->byval_arg;
+       gsharedvt_sig->param_count = pindex;
+
+       // FIXME: Use shared signatures
+       mb = mono_mb_new (mono_defaults.object_class, sig->hasthis ? "gsharedvt_in_sig" : "gsharedvt_in_sig_static", MONO_WRAPPER_UNKNOWN);
+
+#ifndef DISABLE_JIT
+       if (sig->ret->type != MONO_TYPE_VOID)
+               retval_var = mono_mb_add_local (mb, sig->ret);
+
+       /* Make the call */
+       if (sig->hasthis)
+               mono_mb_emit_ldarg (mb, 0);
+       if (sig->ret->type != MONO_TYPE_VOID)
+               mono_mb_emit_ldloc_addr (mb, retval_var);
+       for (i = 0; i < sig->param_count; i++) {
+               if (sig->params [i]->byref)
+                       mono_mb_emit_ldarg (mb, i + (sig->hasthis == TRUE));
+               else
+                       mono_mb_emit_ldarg_addr (mb, i + (sig->hasthis == TRUE));
+       }
+       /* Rgctx arg */
+       mono_mb_emit_ldarg (mb, sig->param_count + (sig->hasthis ? 1 : 0));
+       mono_mb_emit_icon (mb, sizeof (gpointer));
+       mono_mb_emit_byte (mb, CEE_ADD);
+       mono_mb_emit_byte (mb, CEE_LDIND_I);
+       /* Method to call */
+       mono_mb_emit_ldarg (mb, sig->param_count + (sig->hasthis ? 1 : 0));
+       mono_mb_emit_byte (mb, CEE_LDIND_I);
+       mono_mb_emit_calli (mb, gsharedvt_sig);
+       if (sig->ret->type != MONO_TYPE_VOID)
+               mono_mb_emit_ldloc (mb, retval_var);
+       mono_mb_emit_byte (mb, CEE_RET);
+#endif
+
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_GSHAREDVT_IN_SIG);
+       info->d.gsharedvt.sig = sig;
+
+       res = mono_mb_create (mb, csig, sig->param_count + 16, info);
+
+       // FIXME: Locking
+       g_hash_table_insert (cache, sig, res);
+
+       return res;
+}
+
+/*
+ * mini_get_gsharedvt_out_sig_wrapper:
+ *
+ *   Same as in_sig_wrapper, but translate between the gsharedvt and normal signatures.
+ */
+MonoMethod*
+mini_get_gsharedvt_out_sig_wrapper (MonoMethodSignature *sig)
+{
+       MonoMethodBuilder *mb;
+       MonoMethod *res;
+       WrapperInfo *info;
+       MonoMethodSignature *normal_sig, *csig;
+       int i, pindex, args_start, ldind_op, stind_op;
+       static GHashTable *cache;
+
+       // FIXME: Memory management
+       sig = mini_get_underlying_signature (sig);
+
+       // FIXME: Normal cache
+       if (!cache)
+               cache = g_hash_table_new_full ((GHashFunc)mono_signature_hash, (GEqualFunc)mono_metadata_signature_equal, NULL, NULL);
+       // FIXME: Locking
+       res = g_hash_table_lookup (cache, sig);
+       if (res) {
+               g_free (sig);
+               return res;
+       }
+
+       /* Create the signature for the wrapper */
+       // FIXME:
+       csig = g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + ((sig->param_count + 2) * sizeof (MonoType*)));
+       memcpy (csig, sig, mono_metadata_signature_size (sig));
+       pindex = 0;
+       /* The return value is returned using an explicit vret argument */
+       if (sig->ret->type != MONO_TYPE_VOID) {
+               csig->params [pindex ++] = &mono_defaults.int_class->byval_arg;
+               csig->ret = &mono_defaults.void_class->byval_arg;
+       }
+       args_start = pindex;
+       if (sig->hasthis)
+               args_start ++;
+       for (i = 0; i < sig->param_count; i++) {
+               csig->params [pindex] = sig->params [i];
+               if (!sig->params [i]->byref) {
+                       csig->params [pindex] = mono_metadata_type_dup (NULL, csig->params [pindex]);
+                       csig->params [pindex]->byref = 1;
+               }
+               pindex ++;
+       }
+       /* Rgctx arg */
+       csig->params [pindex ++] = &mono_defaults.int_class->byval_arg;
+       csig->param_count = pindex;
+
+       /* Create the signature for the normal callconv */
+       normal_sig = g_malloc0 (MONO_SIZEOF_METHOD_SIGNATURE + ((sig->param_count + 2) * sizeof (MonoType*)));
+       memcpy (normal_sig, sig, mono_metadata_signature_size (sig));
+       normal_sig->param_count ++;
+       normal_sig->params [sig->param_count] = &mono_defaults.int_class->byval_arg;
+
+       // FIXME: Use shared signatures
+       mb = mono_mb_new (mono_defaults.object_class, "gsharedvt_out_sig", MONO_WRAPPER_UNKNOWN);
+
+#ifndef DISABLE_JIT
+       if (sig->ret->type != MONO_TYPE_VOID)
+               /* Load return address */
+               mono_mb_emit_ldarg (mb, sig->hasthis ? 1 : 0);
+
+       /* Make the call */
+       if (sig->hasthis)
+               mono_mb_emit_ldarg (mb, 0);
+       for (i = 0; i < sig->param_count; i++) {
+               if (sig->params [i]->byref) {
+                       mono_mb_emit_ldarg (mb, args_start + i);
+               } else {
+                       ldind_op = mono_type_to_ldind (sig->params [i]);
+                       mono_mb_emit_ldarg (mb, args_start + i);
+                       // FIXME:
+                       if (ldind_op == CEE_LDOBJ)
+                               mono_mb_emit_op (mb, CEE_LDOBJ, mono_class_from_mono_type (sig->params [i]));
+                       else
+                               mono_mb_emit_byte (mb, ldind_op);
+               }
+       }
+       /* Rgctx arg */
+       mono_mb_emit_ldarg (mb, args_start + sig->param_count);
+       mono_mb_emit_icon (mb, sizeof (gpointer));
+       mono_mb_emit_byte (mb, CEE_ADD);
+       mono_mb_emit_byte (mb, CEE_LDIND_I);
+       /* Method to call */
+       mono_mb_emit_ldarg (mb, args_start + sig->param_count);
+       mono_mb_emit_byte (mb, CEE_LDIND_I);
+       mono_mb_emit_calli (mb, normal_sig);
+       if (sig->ret->type != MONO_TYPE_VOID) {
+               /* Store return value */
+               stind_op = mono_type_to_stind (sig->ret);
+               // FIXME:
+               if (stind_op == CEE_STOBJ)
+                       mono_mb_emit_op (mb, CEE_STOBJ, mono_class_from_mono_type (sig->ret));
+               else
+                       mono_mb_emit_byte (mb, stind_op);
+       }
+       mono_mb_emit_byte (mb, CEE_RET);
+#endif
+
+       info = mono_wrapper_info_create (mb, WRAPPER_SUBTYPE_GSHAREDVT_OUT_SIG);
+       info->d.gsharedvt.sig = sig;
+
+       res = mono_mb_create (mb, csig, sig->param_count + 16, info);
+
+       // FIXME: Locking
+       g_hash_table_insert (cache, sig, res);
+
+       return res;
+}
+
+MonoMethodSignature*
+mini_get_gsharedvt_out_sig_wrapper_signature (gboolean has_this, gboolean has_ret, int param_count)
+{
+       MonoMethodSignature *sig = g_malloc0 (sizeof (MonoMethodSignature) + (32 * sizeof (MonoType*)));
+       int i, pindex;
+
+       sig->ret = &mono_defaults.void_class->byval_arg;
+       sig->sentinelpos = -1;
+       pindex = 0;
+       if (has_this)
+               /* this */
+               sig->params [pindex ++] = &mono_defaults.int_class->byval_arg;
+       if (has_ret)
+               /* vret */
+               sig->params [pindex ++] = &mono_defaults.int_class->byval_arg;
+       for (i = 0; i < param_count; ++i)
+               /* byref arguments */
+               sig->params [pindex ++] = &mono_defaults.int_class->byval_arg;
+       /* extra arg */
+       sig->params [pindex ++] = &mono_defaults.int_class->byval_arg;
+       sig->param_count = pindex;
+
+       return sig;
+}
+
 /*
  * mini_get_gsharedvt_wrapper:
  *
@@ -1055,6 +1373,17 @@ mini_get_gsharedvt_wrapper (gboolean gsharedvt_in, gpointer addr, MonoMethodSign
                inited = TRUE;
        }
 
+       if (mono_llvm_only) {
+               MonoMethod *wrapper;
+
+               if (gsharedvt_in)
+                       wrapper = mini_get_gsharedvt_in_sig_wrapper (normal_sig);
+               else
+                       wrapper = mini_get_gsharedvt_out_sig_wrapper (normal_sig);
+               res = mono_compile_method (wrapper);
+               return res;
+       }
+
        memset (&tinfo, 0, sizeof (tinfo));
        tinfo.is_in = gsharedvt_in;
        tinfo.calli = calli;
@@ -1110,7 +1439,7 @@ mini_get_gsharedvt_wrapper (gboolean gsharedvt_in, gpointer addr, MonoMethodSign
        num_trampolines ++;
 
        /* Cache it */
-       tramp_info = mono_domain_alloc0 (domain, sizeof (GSharedVtTrampInfo));
+       tramp_info = (GSharedVtTrampInfo *)mono_domain_alloc0 (domain, sizeof (GSharedVtTrampInfo));
        memcpy (tramp_info, &tinfo, sizeof (GSharedVtTrampInfo));
 
        mono_domain_lock (domain);
@@ -1158,7 +1487,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
        case MONO_RGCTX_INFO_BZERO:
        case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
        case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: {
-               MonoClass *arg_class = mono_class_from_mono_type (data);
+               MonoClass *arg_class = mono_class_from_mono_type ((MonoType *)data);
 
                free_inflated_info (oti->info_type, data);
                g_assert (arg_class);
@@ -1174,19 +1503,57 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
        case MONO_RGCTX_INFO_TYPE:
                return data;
        case MONO_RGCTX_INFO_REFLECTION_TYPE:
-               return mono_type_get_object (domain, data);
+               return mono_type_get_object (domain, (MonoType *)data);
        case MONO_RGCTX_INFO_METHOD:
                return data;
        case MONO_RGCTX_INFO_GENERIC_METHOD_CODE: {
+               MonoMethod *m = (MonoMethod*)data;
                gpointer addr;
+               gpointer arg = NULL;
+
+               if (mono_llvm_only) {
+                       addr = mono_compile_method (m);
+                       addr = mini_add_method_wrappers_llvmonly (m, addr, FALSE, FALSE, &arg);
+
+                       /* Returns an ftndesc */
+                       return mini_create_llvmonly_ftndesc (domain, addr, arg);
+               } else {
+                       addr = mono_compile_method ((MonoMethod *)data);
+                       return mini_add_method_trampoline ((MonoMethod *)data, addr, mono_method_needs_static_rgctx_invoke ((MonoMethod *)data, FALSE), FALSE);
+               }
+       }
+       case MONO_RGCTX_INFO_GSHAREDVT_OUT_WRAPPER: {
+               MonoMethod *m = (MonoMethod*)data;
+               gpointer addr;
+               gpointer arg = NULL;
+
+               g_assert (mono_llvm_only);
+
+               addr = mono_compile_method (m);
 
-               addr = mono_compile_method (data);
-               return mini_add_method_trampoline (data, addr, mono_method_needs_static_rgctx_invoke (data, FALSE), FALSE);
+               MonoJitInfo *ji;
+               gboolean callee_gsharedvt;
+
+               ji = mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (addr), NULL);
+               g_assert (ji);
+               callee_gsharedvt = mini_jit_info_is_gsharedvt (ji);
+               if (callee_gsharedvt)
+                       callee_gsharedvt = mini_is_gsharedvt_variable_signature (mono_method_signature (jinfo_get_method (ji)));
+               if (callee_gsharedvt) {
+                       /* No need for a wrapper */
+                       return mini_create_llvmonly_ftndesc (domain, addr, mini_method_get_rgctx (m));
+               } else {
+                       addr = mini_add_method_wrappers_llvmonly (m, addr, FALSE, FALSE, &arg);
+
+                       /* Returns an ftndesc */
+                       return mini_create_llvmonly_ftndesc (domain, addr, arg);
+               }
        }
        case MONO_RGCTX_INFO_VIRT_METHOD_CODE: {
-               MonoJumpInfoVirtMethod *info = data;
+               MonoJumpInfoVirtMethod *info = (MonoJumpInfoVirtMethod *)data;
                MonoClass *iface_class = info->method->klass;
                MonoMethod *method;
+               MonoError error;
                int ioffset, slot;
                gpointer addr;
 
@@ -1203,11 +1570,13 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                g_assert (info->klass->vtable);
                method = info->klass->vtable [ioffset + slot];
 
+               method = mono_class_inflate_generic_method_checked (method, context, &error);
+
                addr = mono_compile_method (method);
                return mini_add_method_trampoline (method, addr, mono_method_needs_static_rgctx_invoke (method, FALSE), FALSE);
        }
        case MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE: {
-               MonoJumpInfoVirtMethod *info = data;
+               MonoJumpInfoVirtMethod *info = (MonoJumpInfoVirtMethod *)data;
                MonoClass *iface_class = info->method->klass;
                MonoMethod *method;
                MonoClass *impl_class;
@@ -1228,30 +1597,31 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
 
                impl_class = method->klass;
                if (MONO_TYPE_IS_REFERENCE (&impl_class->byval_arg))
-                       return GUINT_TO_POINTER (1);
+                       return GUINT_TO_POINTER (MONO_GSHAREDVT_BOX_TYPE_REF);
                else if (mono_class_is_nullable (impl_class))
-                       return GUINT_TO_POINTER (2);
+                       return GUINT_TO_POINTER (MONO_GSHAREDVT_BOX_TYPE_NULLABLE);
                else
-                       return GUINT_TO_POINTER (0);
+                       return GUINT_TO_POINTER (MONO_GSHAREDVT_BOX_TYPE_VTYPE);
        }
 #ifndef DISABLE_REMOTING
        case MONO_RGCTX_INFO_REMOTING_INVOKE_WITH_CHECK:
-               return mono_compile_method (mono_marshal_get_remoting_invoke_with_check (data));
+               return mono_compile_method (mono_marshal_get_remoting_invoke_with_check ((MonoMethod *)data));
 #endif
        case MONO_RGCTX_INFO_METHOD_DELEGATE_CODE:
                return mono_domain_alloc0 (domain, sizeof (gpointer));
        case MONO_RGCTX_INFO_CLASS_FIELD:
                return data;
        case MONO_RGCTX_INFO_FIELD_OFFSET: {
-               MonoClassField *field = data;
+               MonoClassField *field = (MonoClassField *)data;
 
+               /* The value is offset by 1 */
                if (field->parent->valuetype && !(field->type->attrs & FIELD_ATTRIBUTE_STATIC))
-                       return GUINT_TO_POINTER (field->offset - sizeof (MonoObject));
+                       return GUINT_TO_POINTER (field->offset - sizeof (MonoObject) + 1);
                else
-                       return GUINT_TO_POINTER (field->offset);
+                       return GUINT_TO_POINTER (field->offset + 1);
        }
        case MONO_RGCTX_INFO_METHOD_RGCTX: {
-               MonoMethodInflated *method = data;
+               MonoMethodInflated *method = (MonoMethodInflated *)data;
                MonoVTable *vtable;
 
                g_assert (method->method.method.is_inflated);
@@ -1264,7 +1634,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                return mono_method_lookup_rgctx (vtable, method->context.method_inst);
        }
        case MONO_RGCTX_INFO_METHOD_CONTEXT: {
-               MonoMethodInflated *method = data;
+               MonoMethodInflated *method = (MonoMethodInflated *)data;
 
                g_assert (method->method.method.is_inflated);
                g_assert (method->context.method_inst);
@@ -1272,8 +1642,8 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                return method->context.method_inst;
        }
        case MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI: {
-               MonoMethodSignature *gsig = oti->data;
-               MonoMethodSignature *sig = data;
+               MonoMethodSignature *gsig = (MonoMethodSignature *)oti->data;
+               MonoMethodSignature *sig = (MonoMethodSignature *)data;
                gpointer addr;
 
                /*
@@ -1284,12 +1654,12 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
        }
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE:
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT: {
-               MonoJumpInfoGSharedVtCall *call_info = data;
+               MonoJumpInfoGSharedVtCall *call_info = (MonoJumpInfoGSharedVtCall *)data;
                MonoMethodSignature *call_sig;
                MonoMethod *method;
                gpointer addr;
                MonoJitInfo *callee_ji;
-               gboolean virtual = oti->info_type == MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT;
+               gboolean virtual_ = oti->info_type == MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT;
                gint32 vcall_offset;
                gboolean callee_gsharedvt;
 
@@ -1300,12 +1670,12 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
 
                g_assert (method->is_inflated);
 
-               if (!virtual)
+               if (!virtual_)
                        addr = mono_compile_method (method);
                else
                        addr = NULL;
 
-               if (virtual) {
+               if (virtual_) {
                        /* Same as in mono_emit_method_call_full () */
                        if ((method->klass->parent == mono_defaults.multicastdelegate_class) && (!strcmp (method->name, "Invoke"))) {
                                /* See mono_emit_method_call_full () */
@@ -1323,7 +1693,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                }
 
                // FIXME: This loads information in the AOT case
-               callee_ji = mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (addr), NULL);
+               callee_ji = mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (addr), NULL);
                callee_gsharedvt = ji_is_gsharedvt (callee_ji);
 
                /*
@@ -1337,7 +1707,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                 * caller -> out trampoline -> in trampoline -> callee
                 * This is not very efficient, but it is easy to implement.
                 */
-               if (virtual || !callee_gsharedvt) {
+               if (virtual_ || !callee_gsharedvt) {
                        MonoMethodSignature *sig, *gsig;
 
                        g_assert (method->is_inflated);
@@ -1345,14 +1715,29 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                        sig = mono_method_signature (method);
                        gsig = call_sig;
 
-                       addr = mini_get_gsharedvt_wrapper (FALSE, addr, sig, gsig, vcall_offset, FALSE);
+                       if (mono_llvm_only) {
+                               if (mini_is_gsharedvt_variable_signature (call_sig)) {
+                                       /* The virtual case doesn't go through this code */
+                                       g_assert (!virtual_);
+
+                                       sig = mono_method_signature (jinfo_get_method (callee_ji));
+                                       gpointer out_wrapper = mini_get_gsharedvt_wrapper (FALSE, NULL, sig, gsig, -1, FALSE);
+                                       MonoFtnDesc *out_wrapper_arg = mini_create_llvmonly_ftndesc (domain, callee_ji->code_start, mini_method_get_rgctx (method));
+
+                                       /* Returns an ftndesc */
+                                       addr = mini_create_llvmonly_ftndesc (domain, out_wrapper, out_wrapper_arg);
+                               } else {
+                                       addr = mini_create_llvmonly_ftndesc (domain, addr, mini_method_get_rgctx (method));
+                               }
+                       } else {
+                               addr = mini_get_gsharedvt_wrapper (FALSE, addr, sig, gsig, vcall_offset, FALSE);
+                       }
 #if 0
                        if (virtual)
                                printf ("OUT-VCALL: %s\n", mono_method_full_name (method, TRUE));
                        else
                                printf ("OUT: %s\n", mono_method_full_name (method, TRUE));
 #endif
-                       //              } else if (!mini_is_gsharedvt_variable_signature (mono_method_signature (caller_method)) && callee_gsharedvt) {
                } else if (callee_gsharedvt) {
                        MonoMethodSignature *sig, *gsig;
 
@@ -1372,7 +1757,33 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                         * FIXME: Optimize this.
                         */
 
-                       if (call_sig == mono_method_signature (method)) {
+                       if (mono_llvm_only) {
+                               /* Both wrappers receive an extra <addr, rgctx> argument */
+                               sig = mono_method_signature (method);
+                               gsig = mono_method_signature (jinfo_get_method (callee_ji));
+
+                               /* Return a function descriptor */
+
+                               if (mini_is_gsharedvt_variable_signature (call_sig)) {
+                                       /*
+                                        * This is not an optimization, but its needed, since the concrete signature 'sig'
+                                        * might not exist at all in IL, so the AOT compiler cannot generate the wrappers
+                                        * for it.
+                                        */
+                                       addr = mini_create_llvmonly_ftndesc (domain, callee_ji->code_start, mini_method_get_rgctx (method));
+                               } else if (mini_is_gsharedvt_variable_signature (gsig)) {
+                                       gpointer in_wrapper = mini_get_gsharedvt_wrapper (TRUE, callee_ji->code_start, sig, gsig, -1, FALSE);
+
+                                       gpointer in_wrapper_arg = mini_create_llvmonly_ftndesc (domain, callee_ji->code_start, mini_method_get_rgctx (method));
+
+                                       gpointer out_wrapper = mini_get_gsharedvt_wrapper (FALSE, NULL, sig, gsig, -1, FALSE);
+                                       MonoFtnDesc *out_wrapper_arg = mini_create_llvmonly_ftndesc (domain, in_wrapper, in_wrapper_arg);
+
+                                       addr = mini_create_llvmonly_ftndesc (domain, out_wrapper, out_wrapper_arg);
+                               } else {
+                                       addr = mini_create_llvmonly_ftndesc (domain, addr, mini_method_get_rgctx (method));
+                               }
+                       } else if (call_sig == mono_method_signature (method)) {
                        } else {
                                sig = mono_method_signature (method);
                                gsig = mono_method_signature (jinfo_get_method (callee_ji)); 
@@ -1391,21 +1802,21 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                return addr;
        }
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO: {
-               MonoGSharedVtMethodInfo *info = data;
+               MonoGSharedVtMethodInfo *info = (MonoGSharedVtMethodInfo *)data;
                MonoGSharedVtMethodRuntimeInfo *res;
                MonoType *t;
                int i, offset, align, size;
 
                // FIXME:
-               res = g_malloc0 (sizeof (MonoGSharedVtMethodRuntimeInfo) + (info->num_entries * sizeof (gpointer)));
+               res = (MonoGSharedVtMethodRuntimeInfo *)g_malloc0 (sizeof (MonoGSharedVtMethodRuntimeInfo) + (info->num_entries * sizeof (gpointer)));
 
                offset = 0;
                for (i = 0; i < info->num_entries; ++i) {
-                       MonoRuntimeGenericContextInfoTemplate *template = &info->entries [i];
+                       MonoRuntimeGenericContextInfoTemplate *template_ = &info->entries [i];
 
-                       switch (template->info_type) {
+                       switch (template_->info_type) {
                        case MONO_RGCTX_INFO_LOCAL_OFFSET:
-                               t = template->data;
+                               t = (MonoType *)template_->data;
 
                                size = mono_type_size (t, &align);
 
@@ -1421,7 +1832,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                                offset += size;
                                break;
                        default:
-                               res->entries [i] = instantiate_info (domain, template, context, klass);
+                               res->entries [i] = instantiate_info (domain, template_, context, klass);
                                break;
                        }
                }
@@ -1442,14 +1853,14 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
 static void
 fill_in_rgctx_template_slot (MonoClass *klass, int type_argc, int index, gpointer data, MonoRgctxInfoType info_type)
 {
-       MonoRuntimeGenericContextTemplate *template = mono_class_get_runtime_generic_context_template (klass);
+       MonoRuntimeGenericContextTemplate *template_ = mono_class_get_runtime_generic_context_template (klass);
        MonoClass *subclass;
 
-       rgctx_template_set_slot (klass->image, template, type_argc, index, data, info_type);
+       rgctx_template_set_slot (klass->image, template_, type_argc, index, data, info_type);
 
        /* Recurse for all subclasses */
        if (generic_subclass_hash)
-               subclass = g_hash_table_lookup (generic_subclass_hash, klass);
+               subclass = (MonoClass *)g_hash_table_lookup (generic_subclass_hash, klass);
        else
                subclass = NULL;
 
@@ -1481,6 +1892,7 @@ mono_rgctx_info_type_to_str (MonoRgctxInfoType type)
        case MONO_RGCTX_INFO_METHOD: return "METHOD";
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO: return "GSHAREDVT_INFO";
        case MONO_RGCTX_INFO_GENERIC_METHOD_CODE: return "GENERIC_METHOD_CODE";
+       case MONO_RGCTX_INFO_GSHAREDVT_OUT_WRAPPER: return "GSHAREDVT_OUT_WRAPPER";
        case MONO_RGCTX_INFO_CLASS_FIELD: return "CLASS_FIELD";
        case MONO_RGCTX_INFO_METHOD_RGCTX: return "METHOD_RGCTX";
        case MONO_RGCTX_INFO_METHOD_CONTEXT: return "METHOD_CONTEXT";
@@ -1523,11 +1935,11 @@ static int
 register_info (MonoClass *klass, int type_argc, gpointer data, MonoRgctxInfoType info_type)
 {
        int i;
-       MonoRuntimeGenericContextTemplate *template = mono_class_get_runtime_generic_context_template (klass);
+       MonoRuntimeGenericContextTemplate *template_ = mono_class_get_runtime_generic_context_template (klass);
        MonoClass *parent;
        MonoRuntimeGenericContextInfoTemplate *oti;
 
-       for (i = 0, oti = get_info_templates (template, type_argc); oti; ++i, oti = oti->next) {
+       for (i = 0, oti = get_info_templates (template_, type_argc); oti; ++i, oti = oti->next) {
                if (!oti->data)
                        break;
        }
@@ -1551,7 +1963,7 @@ register_info (MonoClass *klass, int type_argc, gpointer data, MonoRgctxInfoType
                        break;
 
                rgctx_template_set_slot (parent->image, parent_template, type_argc, i,
-                                                                MONO_RGCTX_SLOT_USED_MARKER, 0);
+                                                                MONO_RGCTX_SLOT_USED_MARKER, (MonoRgctxInfoType)0);
 
                parent = parent->parent;
        }
@@ -1581,10 +1993,11 @@ info_equal (gpointer data1, gpointer data2, MonoRgctxInfoType info_type)
        case MONO_RGCTX_INFO_BZERO:
        case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
        case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX:
-               return mono_class_from_mono_type (data1) == mono_class_from_mono_type (data2);
+               return mono_class_from_mono_type ((MonoType *)data1) == mono_class_from_mono_type ((MonoType *)data2);
        case MONO_RGCTX_INFO_METHOD:
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO:
        case MONO_RGCTX_INFO_GENERIC_METHOD_CODE:
+       case MONO_RGCTX_INFO_GSHAREDVT_OUT_WRAPPER:
        case MONO_RGCTX_INFO_CLASS_FIELD:
        case MONO_RGCTX_INFO_FIELD_OFFSET:
        case MONO_RGCTX_INFO_METHOD_RGCTX:
@@ -1597,8 +2010,8 @@ info_equal (gpointer data1, gpointer data2, MonoRgctxInfoType info_type)
                return data1 == data2;
        case MONO_RGCTX_INFO_VIRT_METHOD_CODE:
        case MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE: {
-               MonoJumpInfoVirtMethod *info1 = data1;
-               MonoJumpInfoVirtMethod *info2 = data2;
+               MonoJumpInfoVirtMethod *info1 = (MonoJumpInfoVirtMethod *)data1;
+               MonoJumpInfoVirtMethod *info2 = (MonoJumpInfoVirtMethod *)data2;
 
                return info1->klass == info2->klass && info1->method == info2->method;
        }
@@ -1638,7 +2051,7 @@ mini_rgctx_info_type_to_patch_info_type (MonoRgctxInfoType info_type)
                return MONO_PATCH_INFO_FIELD;
        default:
                g_assert_not_reached ();
-               return -1;
+               return (MonoJumpInfoType)-1;
        }
 }
 
@@ -1765,7 +2178,7 @@ alloc_rgctx_array (MonoDomain *domain, int n, gboolean is_mrgctx)
        static int mrgctx_bytes_alloced = 0;
 
        int size = mono_class_rgctx_get_array_size (n, is_mrgctx) * sizeof (gpointer);
-       gpointer array = mono_domain_alloc0 (domain, size);
+       gpointer *array = (gpointer *)mono_domain_alloc0 (domain, size);
 
        if (!inited) {
                mono_counters_register ("RGCTX num arrays alloced", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &rgctx_num_alloced);
@@ -1830,7 +2243,7 @@ fill_runtime_generic_context (MonoVTable *class_vtable, MonoRuntimeGenericContex
                }
                if (!rgctx [offset + 0])
                        rgctx [offset + 0] = alloc_rgctx_array (domain, i + 1, method_inst != NULL);
-               rgctx = rgctx [offset + 0];
+               rgctx = (void **)rgctx [offset + 0];
                first_slot += size - 1;
                size = mono_class_rgctx_get_array_size (i + 1, method_inst != NULL);
        }
@@ -1843,6 +2256,7 @@ fill_runtime_generic_context (MonoVTable *class_vtable, MonoRuntimeGenericContex
                                                                                method_inst ? method_inst->type_argc : 0, slot, TRUE, TRUE, &do_free);
        /* This might take the loader lock */
        info = instantiate_info (domain, &oti, &context, klass);
+       g_assert (info);
 
        /*
        if (method_inst)
@@ -1927,7 +2341,7 @@ mono_method_fill_runtime_generic_context (MonoMethodRuntimeGenericContext *mrgct
 static guint
 mrgctx_hash_func (gconstpointer key)
 {
-       const MonoMethodRuntimeGenericContext *mrgctx = key;
+       const MonoMethodRuntimeGenericContext *mrgctx = (const MonoMethodRuntimeGenericContext *)key;
 
        return mono_aligned_addr_hash (mrgctx->class_vtable) ^ mono_metadata_generic_inst_hash (mrgctx->method_inst);
 }
@@ -1935,8 +2349,8 @@ mrgctx_hash_func (gconstpointer key)
 static gboolean
 mrgctx_equal_func (gconstpointer a, gconstpointer b)
 {
-       const MonoMethodRuntimeGenericContext *mrgctx1 = a;
-       const MonoMethodRuntimeGenericContext *mrgctx2 = b;
+       const MonoMethodRuntimeGenericContext *mrgctx1 = (const MonoMethodRuntimeGenericContext *)a;
+       const MonoMethodRuntimeGenericContext *mrgctx2 = (const MonoMethodRuntimeGenericContext *)b;
 
        return mrgctx1->class_vtable == mrgctx2->class_vtable &&
                mono_metadata_generic_inst_equal (mrgctx1->method_inst, mrgctx2->method_inst);
@@ -1969,7 +2383,7 @@ mono_method_lookup_rgctx (MonoVTable *class_vtable, MonoGenericInst *method_inst
        key.class_vtable = class_vtable;
        key.method_inst = method_inst;
 
-       mrgctx = g_hash_table_lookup (domain->method_rgctx_hash, &key);
+       mrgctx = (MonoMethodRuntimeGenericContext *)g_hash_table_lookup (domain->method_rgctx_hash, &key);
 
        if (!mrgctx) {
                //int i;
@@ -2330,7 +2744,7 @@ get_object_generic_inst (int type_argc)
        MonoType **type_argv;
        int i;
 
-       type_argv = alloca (sizeof (MonoType*) * type_argc);
+       type_argv = (MonoType **)alloca (sizeof (MonoType*) * type_argc);
 
        for (i = 0; i < type_argc; ++i)
                type_argv [i] = &mono_defaults.object_class->byval_arg;
@@ -2565,6 +2979,8 @@ mini_type_get_underlying_type (MonoType *type)
                return &mono_defaults.byte_class->byval_arg;
        case MONO_TYPE_CHAR:
                return &mono_defaults.uint16_class->byval_arg;
+       case MONO_TYPE_STRING:
+               return &mono_defaults.object_class->byval_arg;
        default:
                return type;
        }
@@ -2619,6 +3035,11 @@ mini_type_stack_size_full (MonoType *t, guint32 *align, gboolean pinvoke)
 void
 mono_generic_sharing_init (void)
 {
+       mono_counters_register ("RGCTX template num allocted", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &num_templates_allocted);
+       mono_counters_register ("RGCTX template bytes allocted", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &num_templates_bytes);
+       mono_counters_register ("RGCTX oti num allocted", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &num_oti_allocted);
+       mono_counters_register ("RGCTX oti bytes allocted", MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &num_oti_bytes);
+
        mono_install_image_unload_hook (mono_class_unregister_image_generic_subclasses, NULL);
 }
 
@@ -2640,7 +3061,7 @@ gboolean
 mini_type_var_is_vt (MonoType *type)
 {
        if (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR) {
-               return type->data.generic_param->gshared_constraint && type->data.generic_param->gshared_constraint->type == MONO_TYPE_VALUETYPE;
+               return type->data.generic_param->gshared_constraint && (type->data.generic_param->gshared_constraint->type == MONO_TYPE_VALUETYPE || type->data.generic_param->gshared_constraint->type == MONO_TYPE_GENERICINST);
        } else {
                g_assert_not_reached ();
                return FALSE;
@@ -2728,19 +3149,14 @@ get_shared_gparam_name (MonoTypeEnum constraint, const char *name)
        }
 }
 
-typedef struct {
-       MonoGenericParam *par;
-       MonoType *constraint;
-} SharedGParam;
-
 static guint
 shared_gparam_hash (gconstpointer data)
 {
-       SharedGParam *p = (SharedGParam*)data;
+       MonoGSharedGenericParam *p = (MonoGSharedGenericParam*)data;
        guint hash;
 
-       hash = mono_metadata_generic_param_hash (p->par);
-       hash = ((hash << 5) - hash) ^ mono_metadata_type_hash (p->constraint);
+       hash = mono_metadata_generic_param_hash (p->parent);
+       hash = ((hash << 5) - hash) ^ mono_metadata_type_hash (p->param.param.gshared_constraint);
 
        return hash;
 }
@@ -2748,81 +3164,72 @@ shared_gparam_hash (gconstpointer data)
 static gboolean
 shared_gparam_equal (gconstpointer ka, gconstpointer kb)
 {
-       SharedGParam *p1 = (SharedGParam*)ka;
-       SharedGParam *p2 = (SharedGParam*)kb;
+       MonoGSharedGenericParam *p1 = (MonoGSharedGenericParam*)ka;
+       MonoGSharedGenericParam *p2 = (MonoGSharedGenericParam*)kb;
 
        if (p1 == p2)
                return TRUE;
-       if (p1->par != p2->par)
+       if (p1->parent != p2->parent)
                return FALSE;
-       if (!mono_metadata_type_equal (p1->constraint, p2->constraint))
+       if (!mono_metadata_type_equal (p1->param.param.gshared_constraint, p2->param.param.gshared_constraint))
                return FALSE;
        return TRUE;
 }
 
 /*
- * get_shared_gparam:
+ * mini_get_shared_gparam:
  *
- *   Create an anonymous gparam with a type variable with a constraint which encodes which types can match it.
+ *   Create an anonymous gparam from T with a constraint which encodes which types can match it.
  */
-static MonoType*
-get_shared_gparam (MonoType *t, MonoType *constraint)
+MonoType*
+mini_get_shared_gparam (MonoType *t, MonoType *constraint)
 {
        MonoGenericParam *par = t->data.generic_param;
-       MonoGenericParam *copy;
-       SharedGParam key;
+       MonoGSharedGenericParam *copy, key;
        MonoType *res;
        MonoImage *image = NULL;
        char *name;
 
        memset (&key, 0, sizeof (key));
-       key.par = par;
-       key.constraint = constraint;
+       key.parent = par;
+       key.param.param.gshared_constraint = constraint;
 
        g_assert (mono_generic_param_info (par));
-       /* image might not be set for sre */
-       if (par->owner && par->owner->image) {
-               image = par->owner->image;
+       image = get_image_for_generic_param(par);
 
-               mono_image_lock (image);
-               if (!image->gshared_types) {
-                       image->gshared_types_len = MONO_TYPE_INTERNAL;
-                       image->gshared_types = g_new0 (GHashTable*, image->gshared_types_len);
-               }
-               if (!image->gshared_types [constraint->type])
-                       image->gshared_types [constraint->type] = g_hash_table_new (shared_gparam_hash, shared_gparam_equal);
-               res = g_hash_table_lookup (image->gshared_types [constraint->type], &key);
-               mono_image_unlock (image);
-               if (res)
-                       return res;
-               copy = mono_image_alloc0 (image, sizeof (MonoGenericParamFull));
-               memcpy (copy, par, sizeof (MonoGenericParamFull));
-               name = get_shared_gparam_name (constraint->type, ((MonoGenericParamFull*)copy)->info.name);
-               ((MonoGenericParamFull*)copy)->info.name = mono_image_strdup (image, name);
-               g_free (name);
-       } else {
-               /* mono_generic_param_name () expects this to be a MonoGenericParamFull */
-               copy = (MonoGenericParam*)g_new0 (MonoGenericParamFull, 1);
-               memcpy (copy, par, sizeof (MonoGenericParam));
-       }
-       copy->owner = NULL;
-       // FIXME:
-       copy->image = image ? image : mono_defaults.corlib;
+       /*
+        * Need a cache to ensure the newly created gparam
+        * is unique wrt T/CONSTRAINT.
+        */
+       mono_image_lock (image);
+       if (!image->gshared_types) {
+               image->gshared_types_len = MONO_TYPE_INTERNAL;
+               image->gshared_types = g_new0 (GHashTable*, image->gshared_types_len);
+       }
+       if (!image->gshared_types [constraint->type])
+               image->gshared_types [constraint->type] = g_hash_table_new (shared_gparam_hash, shared_gparam_equal);
+       res = (MonoType *)g_hash_table_lookup (image->gshared_types [constraint->type], &key);
+       mono_image_unlock (image);
+       if (res)
+               return res;
+       copy = (MonoGSharedGenericParam *)mono_image_alloc0 (image, sizeof (MonoGSharedGenericParam));
+       memcpy (&copy->param, par, sizeof (MonoGenericParamFull));
+       copy->param.info.pklass = NULL;
+       name = get_shared_gparam_name (constraint->type, ((MonoGenericParamFull*)copy)->info.name);
+       copy->param.info.name = mono_image_strdup (image, name);
+       g_free (name);
+
+       copy->param.param.owner = par->owner;
 
-       copy->gshared_constraint = constraint;
+       copy->param.param.gshared_constraint = constraint;
+       copy->parent = par;
        res = mono_metadata_type_dup (NULL, t);
-       res->data.generic_param = copy;
+       res->data.generic_param = (MonoGenericParam*)copy;
 
        if (image) {
-               SharedGParam *dkey;
-
-               dkey = mono_image_alloc0 (image, sizeof (SharedGParam));
-               dkey->par = par;
-               dkey->constraint = constraint;
-
                mono_image_lock (image);
                /* Duplicates are ok */
-               g_hash_table_insert (image->gshared_types [constraint->type], dkey, res);
+               g_hash_table_insert (image->gshared_types [constraint->type], copy, res);
                mono_image_unlock (image);
        }
 
@@ -2850,7 +3257,7 @@ get_shared_type (MonoType *t, MonoType *type)
 
                k = mono_class_inflate_generic_class (gclass->container_class, &context);
 
-               return get_shared_gparam (t, &k->byval_arg);
+               return mini_get_shared_gparam (t, &k->byval_arg);
        } else if (MONO_TYPE_ISSTRUCT (type)) {
                return type;
        }
@@ -2863,7 +3270,7 @@ get_shared_type (MonoType *t, MonoType *type)
                ttype = MONO_TYPE_OBJECT;
        } else if (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR) {
                if (type->data.generic_param->gshared_constraint)
-                       return get_shared_gparam (t, type->data.generic_param->gshared_constraint);
+                       return mini_get_shared_gparam (t, type->data.generic_param->gshared_constraint);
                ttype = MONO_TYPE_OBJECT;
        }
 
@@ -2875,7 +3282,7 @@ get_shared_type (MonoType *t, MonoType *type)
                t2.type = ttype;
                klass = mono_class_from_mono_type (&t2);
 
-               return get_shared_gparam (t, &klass->byval_arg);
+               return mini_get_shared_gparam (t, &klass->byval_arg);
        }
 }
 
@@ -2883,7 +3290,7 @@ static MonoType*
 get_gsharedvt_type (MonoType *t)
 {
        /* Use TypeHandle as the constraint type since its a valuetype */
-       return get_shared_gparam (t, &mono_defaults.typehandle_class->byval_arg);
+       return mini_get_shared_gparam (t, &mono_defaults.typehandle_class->byval_arg);
 }
 
 static MonoGenericInst*
@@ -3000,7 +3407,7 @@ mini_get_rgctx_entry_slot (MonoJumpInfoRgctxEntry *entry)
                slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, entry->data->data.sig, entry->info_type, mono_method_get_context (entry->method));
                break;
        case MONO_PATCH_INFO_GSHAREDVT_CALL: {
-               MonoJumpInfoGSharedVtCall *call_info = g_malloc0 (sizeof (MonoJumpInfoGSharedVtCall)); //mono_domain_alloc0 (domain, sizeof (MonoJumpInfoGSharedVtCall));
+               MonoJumpInfoGSharedVtCall *call_info = (MonoJumpInfoGSharedVtCall *)g_malloc0 (sizeof (MonoJumpInfoGSharedVtCall)); //mono_domain_alloc0 (domain, sizeof (MonoJumpInfoGSharedVtCall));
 
                memcpy (call_info, entry->data->data.gsharedvt, sizeof (MonoJumpInfoGSharedVtCall));
                slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, call_info, entry->info_type, mono_method_get_context (entry->method));
@@ -3012,15 +3419,15 @@ mini_get_rgctx_entry_slot (MonoJumpInfoRgctxEntry *entry)
                int i;
 
                /* Make a copy into the domain mempool */
-               info = g_malloc0 (sizeof (MonoGSharedVtMethodInfo)); //mono_domain_alloc0 (domain, sizeof (MonoGSharedVtMethodInfo));
+               info = (MonoGSharedVtMethodInfo *)g_malloc0 (sizeof (MonoGSharedVtMethodInfo)); //mono_domain_alloc0 (domain, sizeof (MonoGSharedVtMethodInfo));
                info->method = oinfo->method;
                info->num_entries = oinfo->num_entries;
-               info->entries = g_malloc0 (sizeof (MonoRuntimeGenericContextInfoTemplate) * info->num_entries);
+               info->entries = (MonoRuntimeGenericContextInfoTemplate *)g_malloc0 (sizeof (MonoRuntimeGenericContextInfoTemplate) * info->num_entries);
                for (i = 0; i < oinfo->num_entries; ++i) {
                        MonoRuntimeGenericContextInfoTemplate *otemplate = &oinfo->entries [i];
-                       MonoRuntimeGenericContextInfoTemplate *template = &info->entries [i];
+                       MonoRuntimeGenericContextInfoTemplate *template_ = &info->entries [i];
 
-                       memcpy (template, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
+                       memcpy (template_, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
                }
                slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, info, entry->info_type, mono_method_get_context (entry->method));
                break;
@@ -3029,7 +3436,7 @@ mini_get_rgctx_entry_slot (MonoJumpInfoRgctxEntry *entry)
                MonoJumpInfoVirtMethod *info;
                MonoJumpInfoVirtMethod *oinfo = entry->data->data.virt_method;
 
-               info = g_malloc0 (sizeof (MonoJumpInfoVirtMethod));
+               info = (MonoJumpInfoVirtMethod *)g_malloc0 (sizeof (MonoJumpInfoVirtMethod));
                memcpy (info, oinfo, sizeof (MonoJumpInfoVirtMethod));
                slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, info, entry->info_type, mono_method_get_context (entry->method));
                break;
index e1ca51ba9806b76ac01465f7ad6d8b5f0638ea26..0e8838ae1223cea4ff0b043ee10d77de394a83e8 100644 (file)
@@ -3102,6 +3102,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 
                        ia64_break_i (code, 0);
                        break;
+               case OP_GC_SAFE_POINT:
+                       break;
 
                default:
                        g_warning ("unknown opcode %s in %s()\n", mono_inst_name (ins->opcode), __FUNCTION__);
index ba9d24f2c7743760eeb3ab66bf6aaed213e4e85f..cb5ddd33e79032ea2a81781d811f6df9ef68e754 100644 (file)
 #include <stdint.h>
 
 #include <llvm/Support/raw_ostream.h>
-#include <llvm/Support/Host.h>
-#include <llvm/PassManager.h>
-#include <llvm/ExecutionEngine/ExecutionEngine.h>
-#include <llvm/ExecutionEngine/JITMemoryManager.h>
-#include <llvm/ExecutionEngine/JITEventListener.h>
-#include <llvm/Target/TargetOptions.h>
-#include <llvm/Target/TargetRegisterInfo.h>
-#include <llvm/IR/Verifier.h>
-#include <llvm/Analysis/Passes.h>
-#include <llvm/Transforms/Scalar.h>
-#include <llvm/Support/CommandLine.h>
-#include "llvm/IR/LegacyPassNameParser.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include <llvm/CodeGen/Passes.h>
-#include <llvm/CodeGen/MachineFunctionPass.h>
-#include <llvm/CodeGen/MachineFunction.h>
-#include <llvm/CodeGen/MachineFrameInfo.h>
 #include <llvm/IR/Function.h>
 #include <llvm/IR/IRBuilder.h>
 #include <llvm/IR/Module.h>
 
-#include "llvm-c/Core.h"
-#include "llvm-c/ExecutionEngine.h"
-
 #include "mini-llvm-cpp.h"
 
-// extern "C" void LLVMInitializeARMTargetInfo();
-// extern "C" void LLVMInitializeARMTarget ();
-// extern "C" void LLVMInitializeARMTargetMC ();
-
 using namespace llvm;
 
-#ifndef MONO_CROSS_COMPILE
-
-void
-mono_llvm_cpp_throw_exception (void)
-{
-       gint32 *ex = NULL;
-
-       /* The generated code catches an int32* */
-       throw ex;
-}
-
-static void (*unhandled_exception)() = default_mono_llvm_unhandled_exception;
-
-void
-mono_llvm_set_unhandled_exception_handler (void)
-{
-       std::set_terminate (unhandled_exception);
-}
-
-class MonoJITMemoryManager : public JITMemoryManager
-{
-private:
-       JITMemoryManager *mm;
-
-public:
-       /* Callbacks installed by mono */
-       AllocCodeMemoryCb *alloc_cb;
-       DlSymCb *dlsym_cb;
-       ExceptionTableCb *exception_cb;
-
-       MonoJITMemoryManager ();
-       ~MonoJITMemoryManager ();
-
-       void setMemoryWritable (void);
-
-       void setMemoryExecutable (void);
-
-       void AllocateGOT();
-
-    unsigned char *getGOTBase() const {
-               return mm->getGOTBase ();
-    }
-
-       void setPoisonMemory(bool) {
-       }
-
-       unsigned char *startFunctionBody(const Function *F, 
-                                                                        uintptr_t &ActualSize);
-  
-       unsigned char *allocateStub(const GlobalValue* F, unsigned StubSize,
-                                                                unsigned Alignment);
-  
-       void endFunctionBody(const Function *F, unsigned char *FunctionStart,
-                                                unsigned char *FunctionEnd);
-
-       unsigned char *allocateSpace(intptr_t Size, unsigned Alignment);
-
-       uint8_t *allocateGlobal(uintptr_t Size, unsigned Alignment);
-  
-       void deallocateMemForFunction(const Function *F);
-  
-       unsigned char*startExceptionTable(const Function* F,
-                                                                         uintptr_t &ActualSize);
-  
-       void endExceptionTable(const Function *F, unsigned char *TableStart,
-                                                  unsigned char *TableEnd, 
-                                                  unsigned char* FrameRegister);
-
-       virtual void deallocateFunctionBody(void*) {
-       }
-
-       virtual void deallocateExceptionTable(void*) {
-       }
-
-       virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID,
-                                                                                StringRef SectionName) {
-               // FIXME:
-               assert(0);
-               return NULL;
-       }
-
-       virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, unsigned SectionID,
-                                                                                StringRef SectionName, bool IsReadOnly) {
-               // FIXME:
-               assert(0);
-               return NULL;
-       }
-
-       virtual bool applyPermissions(std::string*) {
-               // FIXME:
-               assert(0);
-               return false;
-       }
-
-       virtual bool finalizeMemory(std::string *ErrMsg = 0) {
-               // FIXME:
-               assert(0);
-               return false;
-       }
-
-       virtual void* getPointerToNamedFunction(const std::string &Name, bool AbortOnFailure) {
-               void *res;
-               char *err;
-
-               err = dlsym_cb (Name.c_str (), &res);
-               if (err) {
-                       outs () << "Unable to resolve: " << Name << ": " << err << "\n";
-                       assert(0);
-                       return NULL;
-               }
-               return res;
-       }
-};
-
-MonoJITMemoryManager::MonoJITMemoryManager ()
-{
-       mm = JITMemoryManager::CreateDefaultMemManager ();
-}
-
-MonoJITMemoryManager::~MonoJITMemoryManager ()
-{
-       delete mm;
-}
-
-void
-MonoJITMemoryManager::setMemoryWritable (void)
-{
-}
-
-void
-MonoJITMemoryManager::setMemoryExecutable (void)
-{
-}
-
-void
-MonoJITMemoryManager::AllocateGOT()
-{
-       mm->AllocateGOT ();
-}
-
-unsigned char *
-MonoJITMemoryManager::startFunctionBody(const Function *F, 
-                                       uintptr_t &ActualSize)
-{
-       // FIXME: This leaks memory
-       if (ActualSize == 0)
-               ActualSize = 128;
-       return alloc_cb (wrap (F), ActualSize);
-}
-  
-unsigned char *
-MonoJITMemoryManager::allocateStub(const GlobalValue* F, unsigned StubSize,
-                          unsigned Alignment)
-{
-       return alloc_cb (wrap (F), StubSize);
-}
-  
-void
-MonoJITMemoryManager::endFunctionBody(const Function *F, unsigned char *FunctionStart,
-                                 unsigned char *FunctionEnd)
-{
-}
-
-unsigned char *
-MonoJITMemoryManager::allocateSpace(intptr_t Size, unsigned Alignment)
-{
-       return new unsigned char [Size];
-}
-
-uint8_t *
-MonoJITMemoryManager::allocateGlobal(uintptr_t Size, unsigned Alignment)
-{
-       return new unsigned char [Size];
-}
-
-void
-MonoJITMemoryManager::deallocateMemForFunction(const Function *F)
-{
-}
-  
-unsigned char*
-MonoJITMemoryManager::startExceptionTable(const Function* F,
-                                         uintptr_t &ActualSize)
-{
-       return startFunctionBody(F, ActualSize);
-}
-  
-void
-MonoJITMemoryManager::endExceptionTable(const Function *F, unsigned char *TableStart,
-                                       unsigned char *TableEnd, 
-                                       unsigned char* FrameRegister)
-{
-       exception_cb (FrameRegister);
-}
-
-#else
-
-class MonoJITMemoryManager {
-};
-
-#endif /* !MONO_CROSS_COMPILE */
-
-class MonoJITEventListener : public JITEventListener {
-
-public:
-       FunctionEmittedCb *emitted_cb;
-
-       MonoJITEventListener (FunctionEmittedCb *cb) {
-               emitted_cb = cb;
-       }
-
-       virtual void NotifyFunctionEmitted(const Function &F,
-                                                                          void *Code, size_t Size,
-                                                                          const EmittedFunctionDetails &Details) {
-               emitted_cb (wrap (&F), Code, (char*)Code + Size);
-       }
-};
-
-class MonoEE {
-public:
-       ExecutionEngine *EE;
-       MonoJITMemoryManager *mm;
-       MonoJITEventListener *listener;
-       FunctionPassManager *fpm;
-};
-
-void
-mono_llvm_optimize_method (MonoEERef eeref, LLVMValueRef method)
-{
-       MonoEE *mono_ee = (MonoEE*)eeref;
-
-       /*
-        * The verifier does some checks on the whole module, leading to quadratic behavior.
-        */
-       //verifyFunction (*(unwrap<Function> (method)));
-       mono_ee->fpm->run (*unwrap<Function> (method));
-}
-
 void
 mono_llvm_dump_value (LLVMValueRef value)
 {
@@ -467,304 +205,14 @@ mono_llvm_set_is_constant (LLVMValueRef global_var)
        unwrap<GlobalVariable>(global_var)->setConstant (true);
 }
 
-static cl::list<const PassInfo*, bool, PassNameParser>
-PassList(cl::desc("Optimizations available:"));
-
-static void
-force_pass_linking (void)
-{
-       // Make sure the rest is linked in, but never executed
-       if (g_getenv ("FOO") != (char*)-1)
-               return;
-
-       // This is a subset of the passes in LinkAllPasses.h
-       // The utility passes and the interprocedural passes are commented out
-
-      (void) llvm::createAAEvalPass();
-      (void) llvm::createAggressiveDCEPass();
-      (void) llvm::createAliasAnalysisCounterPass();
-      (void) llvm::createAliasDebugger();
-         /*
-      (void) llvm::createArgumentPromotionPass();
-      (void) llvm::createStructRetPromotionPass();
-         */
-      (void) llvm::createBasicAliasAnalysisPass();
-      (void) llvm::createLibCallAliasAnalysisPass(0);
-      (void) llvm::createScalarEvolutionAliasAnalysisPass();
-      //(void) llvm::createBlockPlacementPass();
-      (void) llvm::createBreakCriticalEdgesPass();
-      (void) llvm::createCFGSimplificationPass();
-         /*
-      (void) llvm::createConstantMergePass();
-      (void) llvm::createConstantPropagationPass();
-         */
-         /*
-      (void) llvm::createDeadArgEliminationPass();
-         */
-      (void) llvm::createDeadCodeEliminationPass();
-      (void) llvm::createDeadInstEliminationPass();
-      (void) llvm::createDeadStoreEliminationPass();
-         /*
-      (void) llvm::createDeadTypeEliminationPass();
-      (void) llvm::createDomOnlyPrinterPass();
-      (void) llvm::createDomPrinterPass();
-      (void) llvm::createDomOnlyViewerPass();
-      (void) llvm::createDomViewerPass();
-      (void) llvm::createEdgeProfilerPass();
-      (void) llvm::createOptimalEdgeProfilerPass();
-      (void) llvm::createFunctionInliningPass();
-      (void) llvm::createAlwaysInlinerPass();
-      (void) llvm::createGlobalDCEPass();
-      (void) llvm::createGlobalOptimizerPass();
-      (void) llvm::createGlobalsModRefPass();
-      (void) llvm::createIPConstantPropagationPass();
-      (void) llvm::createIPSCCPPass();
-         */
-      (void) llvm::createIndVarSimplifyPass();
-      (void) llvm::createInstructionCombiningPass();
-         /*
-      (void) llvm::createInternalizePass(false);
-         */
-      (void) llvm::createLCSSAPass();
-      (void) llvm::createLICMPass();
-      (void) llvm::createLazyValueInfoPass();
-      //(void) llvm::createLoopDependenceAnalysisPass();
-         /*
-      (void) llvm::createLoopExtractorPass();
-         */
-      (void) llvm::createLoopSimplifyPass();
-      (void) llvm::createLoopStrengthReducePass();
-      (void) llvm::createLoopUnrollPass();
-      (void) llvm::createLoopUnswitchPass();
-      (void) llvm::createLoopRotatePass();
-      (void) llvm::createLowerInvokePass();
-         /*
-      (void) llvm::createLowerSetJmpPass();
-         */
-      (void) llvm::createLowerSwitchPass();
-      (void) llvm::createNoAAPass();
-         /*
-      (void) llvm::createNoProfileInfoPass();
-      (void) llvm::createProfileEstimatorPass();
-      (void) llvm::createProfileVerifierPass();
-      (void) llvm::createProfileLoaderPass();
-         */
-      (void) llvm::createPromoteMemoryToRegisterPass();
-      (void) llvm::createDemoteRegisterToMemoryPass();
-         /*
-      (void) llvm::createPruneEHPass();
-      (void) llvm::createPostDomOnlyPrinterPass();
-      (void) llvm::createPostDomPrinterPass();
-      (void) llvm::createPostDomOnlyViewerPass();
-      (void) llvm::createPostDomViewerPass();
-         */
-      (void) llvm::createReassociatePass();
-      (void) llvm::createSCCPPass();
-      (void) llvm::createScalarReplAggregatesPass();
-      //(void) llvm::createSimplifyLibCallsPass();
-         /*
-      (void) llvm::createSingleLoopExtractorPass();
-      (void) llvm::createStripSymbolsPass();
-      (void) llvm::createStripNonDebugSymbolsPass();
-      (void) llvm::createStripDeadDebugInfoPass();
-      (void) llvm::createStripDeadPrototypesPass();
-      (void) llvm::createTailCallEliminationPass();
-      (void) llvm::createTailDuplicationPass();
-      (void) llvm::createJumpThreadingPass();
-         */
-         /*
-      (void) llvm::createUnifyFunctionExitNodesPass();
-         */
-      (void) llvm::createInstCountPass();
-      (void) llvm::createCodeGenPreparePass();
-      (void) llvm::createGVNPass();
-      (void) llvm::createMemCpyOptPass();
-      (void) llvm::createLoopDeletionPass();
-         /*
-      (void) llvm::createPostDomTree();
-      (void) llvm::createPostDomFrontier();
-      (void) llvm::createInstructionNamerPass();
-      (void) llvm::createPartialSpecializationPass();
-      (void) llvm::createFunctionAttrsPass();
-      (void) llvm::createMergeFunctionsPass();
-      (void) llvm::createPrintModulePass(0);
-      (void) llvm::createPrintFunctionPass("", 0);
-      (void) llvm::createDbgInfoPrinterPass();
-      (void) llvm::createModuleDebugInfoPrinterPass();
-      (void) llvm::createPartialInliningPass();
-      (void) llvm::createGEPSplitterPass();
-      (void) llvm::createLintPass();
-         */
-      (void) llvm::createSinkingPass();
-}
-
-#ifndef MONO_CROSS_COMPILE
-
-static gboolean inited;
-
-static void
-init_llvm (void)
-{
-       if (inited)
-               return;
-
-  force_pass_linking ();
-
-#ifdef TARGET_ARM
-  LLVMInitializeARMTarget ();
-  LLVMInitializeARMTargetInfo ();
-  LLVMInitializeARMTargetMC ();
-#else
-  LLVMInitializeX86Target ();
-  LLVMInitializeX86TargetInfo ();
-  LLVMInitializeX86TargetMC ();
-#endif
-
-  PassRegistry &Registry = *PassRegistry::getPassRegistry();
-  initializeCore(Registry);
-  initializeScalarOpts(Registry);
-  initializeAnalysis(Registry);
-  initializeIPA(Registry);
-  initializeTransformUtils(Registry);
-  initializeInstCombine(Registry);
-  initializeTarget(Registry);
-
-  llvm::cl::ParseEnvironmentOptions("mono", "MONO_LLVM", "");
-
-  inited = true;
-}
-
-MonoEERef
-mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, FunctionEmittedCb *emitted_cb, ExceptionTableCb *exception_cb, DlSymCb *dlsym_cb, LLVMExecutionEngineRef *ee)
-{
-  std::string Error;
-  MonoEE *mono_ee;
-
-  init_llvm ();
-
-  mono_ee = new MonoEE ();
-
-  MonoJITMemoryManager *mono_mm = new MonoJITMemoryManager ();
-  mono_mm->alloc_cb = alloc_cb;
-  mono_mm->dlsym_cb = dlsym_cb;
-  mono_mm->exception_cb = exception_cb;
-  mono_ee->mm = mono_mm;
-
-  /*
-   * The Default code model doesn't seem to work on amd64,
-   * test_0_fields_with_big_offsets (among others) crashes, because LLVM tries to call
-   * memset using a normal pcrel code which is in 32bit memory, while memset isn't.
-   */
-
-  TargetOptions opts;
-  opts.JITExceptionHandling = 1;
-
-  StringRef cpu_name = sys::getHostCPUName ();
-
-  // EngineBuilder no longer has a copy assignment operator (?)
-  std::unique_ptr<Module> Owner(unwrap(MP));
-  EngineBuilder b (std::move(Owner));
-  ExecutionEngine *EE = b.setJITMemoryManager (mono_mm).setTargetOptions (opts).setAllocateGVsWithCode (true).setMCPU (cpu_name).create ();
-
-  g_assert (EE);
-  mono_ee->EE = EE;
-
-  MonoJITEventListener *listener = new MonoJITEventListener (emitted_cb);
-  EE->RegisterJITEventListener (listener);
-  mono_ee->listener = listener;
-
-  FunctionPassManager *fpm = new FunctionPassManager (unwrap (MP));
-  mono_ee->fpm = fpm;
-
-  fpm->add(new DataLayoutPass(*EE->getDataLayout()));
-
-  if (PassList.size() > 0) {
-         /* Use the passes specified by the env variable */
-         /* Only the passes in force_pass_linking () can be used */
-         for (unsigned i = 0; i < PassList.size(); ++i) {
-                 const PassInfo *PassInf = PassList[i];
-                 Pass *P = 0;
-
-                 if (PassInf->getNormalCtor())
-                         P = PassInf->getNormalCtor()();
-                 fpm->add (P);
-         }
-  } else {
-         /* Use the same passes used by 'opt' by default, without the ipo passes */
-         const char *opts = "-simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -domfrontier -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -iv-users -indvars -loop-deletion -loop-simplify -lcssa -loop-unroll -instcombine -memdep -gvn -memdep -memcpyopt -sccp -instcombine -domtree -memdep -dse -adce -gvn -simplifycfg";
-         char **args;
-         int i;
-
-         args = g_strsplit (opts, " ", 1000);
-         for (i = 0; args [i]; i++)
-                 ;
-         llvm::cl::ParseCommandLineOptions (i, args, "");
-         g_strfreev (args);
-
-         for (unsigned i = 0; i < PassList.size(); ++i) {
-                 const PassInfo *PassInf = PassList[i];
-                 Pass *P = 0;
-
-                 if (PassInf->getNormalCtor())
-                         P = PassInf->getNormalCtor()();
-                 g_assert (P->getPassKind () == llvm::PT_Function || P->getPassKind () == llvm::PT_Loop);
-                 fpm->add (P);
-         }
-
-         /*
-         fpm->add(createInstructionCombiningPass());
-         fpm->add(createReassociatePass());
-         fpm->add(createGVNPass());
-         fpm->add(createCFGSimplificationPass());
-         */
-  }
-
-  *ee = wrap (EE);
-
-  return mono_ee;
-}
-
 void
-mono_llvm_dispose_ee (MonoEERef *eeref)
+mono_llvm_set_preserveall_cc (LLVMValueRef func)
 {
-       MonoEE *mono_ee = (MonoEE*)eeref;
-
-       delete mono_ee->EE;
-       delete mono_ee->fpm;
-       //delete mono_ee->mm;
-       delete mono_ee->listener;
-       delete mono_ee;
-}
-
-#else
-
-MonoEERef
-mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, FunctionEmittedCb *emitted_cb, ExceptionTableCb *exception_cb, DlSymCb *dlsym_cb, LLVMExecutionEngineRef *ee)
-{
-       g_assert_not_reached ();
-       return NULL;
-}
-
-void
-mono_llvm_dispose_ee (MonoEERef *eeref)
-{
-       g_assert_not_reached ();
+       unwrap<Function>(func)->setCallingConv (CallingConv::PreserveAll);
 }
 
-/* Not linked in */
 void
-LLVMAddGlobalMapping(LLVMExecutionEngineRef EE, LLVMValueRef Global,
-                                        void* Addr)
+mono_llvm_set_call_preserveall_cc (LLVMValueRef func)
 {
-       g_assert_not_reached ();
+       unwrap<CallInst>(func)->setCallingConv (CallingConv::PreserveAll);
 }
-
-void*
-LLVMGetPointerToGlobal(LLVMExecutionEngineRef EE, LLVMValueRef Global)
-{
-       g_assert_not_reached ();
-       return NULL;
-}
-
-
-#endif /* !MONO_CROSS_COMPILE */
index c6d75281e802526c935053e773808a41a2201bbd..78bccd07ff9422a5adcc1ddc75af0343f5a84a8c 100644 (file)
@@ -15,9 +15,6 @@
 #include "llvm-c/Core.h"
 #include "llvm-c/ExecutionEngine.h"
 
-#include "../metadata/object.h"
-#include "../metadata/domain-internals.h"
-
 #include <unwind.h>
 
 G_BEGIN_DECLS
@@ -99,31 +96,10 @@ void
 mono_llvm_set_is_constant (LLVMValueRef global_var);
 
 void
-mono_llvm_cpp_throw_exception (void);
-
-void
-mono_llvm_rethrow_exception (MonoObject *ex);
-
-void
-mono_llvm_throw_exception (MonoObject *ex);
-
-void
-mono_llvm_throw_corlib_exception (guint32 ex_token_index);
+mono_llvm_set_preserveall_cc (LLVMValueRef func);
 
 void
-mono_llvm_resume_exception (void);
-
-gint32
-mono_llvm_match_exception (MonoJitInfo *jinfo, guint32 region_start, guint32 region_end);
-
-void 
-mono_llvm_clear_exception (void);
-
-MonoObject *
-mono_llvm_load_exception (void);
-
-void
-mono_llvm_reset_exception (void);
+mono_llvm_set_call_preserveall_cc (LLVMValueRef call);
 
 _Unwind_Reason_Code 
 mono_debug_personality (int a, _Unwind_Action b,
@@ -135,9 +111,6 @@ mono_llvm_set_unhandled_exception_handler (void);
 void
 default_mono_llvm_unhandled_exception (void);
 
-void
-mono_llvm_raise_exception (MonoException *e);
-
 G_END_DECLS
 
 #endif /* __MONO_MINI_LLVM_CPP_H__ */  
index 40b44036e4b0c340d91031f64880d942ddf84b9b..baa55cc1ff1d43c8e241f49890ed24d212275db4 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #include "mini.h"
+#include "mini-llvm.h"
 
 #ifdef MONO_LLVM_LOADED
 
@@ -30,6 +31,7 @@ static MonoLLVMCFGFunc mono_llvm_check_method_supported_fptr;
 static MonoLLVMEmitAotInfoFunc mono_llvm_emit_aot_file_info_fptr;
 static MonoLLVMEmitAotDataFunc mono_llvm_emit_aot_data_fptr;
 static MonoLLVMFreeDomainFunc mono_llvm_free_domain_info_fptr;
+static void (*mono_llvm_create_vars_fptr) (MonoCompile *cfg);
 
 void
 mono_llvm_init (void)
@@ -96,6 +98,13 @@ mono_llvm_emit_aot_data (const char *symbol, guint8 *data, int data_len)
                mono_llvm_emit_aot_data_fptr (symbol, data, data_len);
 }
 
+void
+mono_llvm_create_vars (MonoCompile *cfg)
+{
+       if (mono_llvm_create_vars_fptr)
+               mono_llvm_create_vars_fptr (cfg);
+}
+
 int
 mono_llvm_load (const char* bpath)
 {
@@ -128,6 +137,8 @@ mono_llvm_load (const char* bpath)
        if (err) goto symbol_error;
        err = mono_dl_symbol (llvm_lib, "mono_llvm_emit_aot_data", (void**)&mono_llvm_emit_aot_data_fptr);
        if (err) goto symbol_error;
+       err = mono_dl_symbol (llvm_lib, "mono_llvm_create_vars", (void**)&mono_llvm_create_vars_fptr);
+       if (err) goto symbol_error;
        return TRUE;
 symbol_error:
        g_warning ("llvm symbol load failed: %s\n", err);
index 226f15c3083fb8e9d5d507d48f348ca20c4c2b62..3cb056774a012f593ee39bde4bb32048a55f778b 100644 (file)
@@ -11,6 +11,7 @@
 #include <mono/metadata/mempool-internals.h>
 #include <mono/metadata/environment.h>
 #include <mono/metadata/object-internals.h>
+#include <mono/metadata/abi-details.h>
 #include <mono/utils/mono-tls.h>
 #include <mono/utils/mono-dl.h>
 #include <mono/utils/mono-time.h>
@@ -29,6 +30,8 @@
 #include "llvm-c/Analysis.h"
 
 #include "mini-llvm-cpp.h"
+#include "aot-compiler.h"
+#include "mini-llvm.h"
 
 #ifdef __MINGW32__
 
@@ -46,7 +49,7 @@ void bzero (void *to, size_t count) { memset (to, 0, count); }
   * Information associated by mono with LLVM modules.
   */
 typedef struct {
-       LLVMModuleRef module;
+       LLVMModuleRef lmodule;
        LLVMValueRef throw_icall, rethrow, match_exc, throw_corlib_exception, resume_eh;
        GHashTable *llvm_types;
        LLVMValueRef got_var;
@@ -56,6 +59,7 @@ typedef struct {
        GHashTable *plt_entries;
        GHashTable *plt_entries_ji;
        GHashTable *method_to_lmethod;
+       GHashTable *direct_callables;
        char **bb_names;
        int bb_names_len;
        GPtrArray *used;
@@ -74,6 +78,7 @@ typedef struct {
        const char *jit_got_symbol;
        const char *eh_frame_symbol;
        LLVMValueRef get_method, get_unbox_tramp;
+       LLVMValueRef init_method, init_method_gshared_rgctx, init_method_gshared_this;
        LLVMValueRef code_start, code_end;
        LLVMValueRef inited_var;
        int max_inited_idx, max_method_idx;
@@ -82,6 +87,8 @@ typedef struct {
        gboolean llvm_only;
        GHashTable *idx_to_lmethod;
        GHashTable *idx_to_unbox_tramp;
+       /* Maps a MonoMethod to LLVM instructions representing it */
+       GHashTable *method_to_callers;
        LLVMContextRef context;
        LLVMValueRef sentinel_exception;
 } MonoLLVMModule;
@@ -119,8 +126,8 @@ typedef struct {
 
        MonoCompile *cfg;
        LLVMValueRef lmethod;
-       MonoLLVMModule *lmodule;
-       LLVMModuleRef module;
+       MonoLLVMModule *module;
+       LLVMModuleRef lmodule;
        BBInfo *bblocks;
        int sindex, default_index, ex_index;
        LLVMBuilderRef builder;
@@ -136,10 +143,11 @@ typedef struct {
        LLVMValueRef rgctx_arg;
        LLVMValueRef this_arg;
        LLVMTypeRef *vreg_types;
+       LLVMBasicBlockRef init_bb, inited_bb;
        gboolean *is_dead;
        gboolean *unreachable;
        gboolean llvm_only;
-       int *pindexes;
+       gboolean has_got_access;
        int this_arg_pindex, rgctx_arg_pindex;
        LLVMValueRef imt_rgctx_loc;
        GHashTable *llvm_types;
@@ -150,7 +158,7 @@ typedef struct {
        GSList **nested_in;
        LLVMValueRef ex_var;
        GHashTable *exc_meta;
-       LLVMBasicBlockRef entry_out_bb;
+       GHashTable *method_to_callers;
 } EmitContext;
 
 typedef struct {
@@ -261,7 +269,7 @@ static void init_jit_module (MonoDomain *domain);
 
 static void emit_dbg_loc (EmitContext *ctx, LLVMBuilderRef builder, const unsigned char *cil_code);
 static LLVMValueRef emit_dbg_subprogram (EmitContext *ctx, MonoCompile *cfg, LLVMValueRef method, const char *name);
-static void emit_dbg_info (MonoLLVMModule *lmodule, const char *filename, const char *cu_name);
+static void emit_dbg_info (MonoLLVMModule *module, const char *filename, const char *cu_name);
 
 /*
  * IntPtrType:
@@ -364,7 +372,7 @@ type_to_simd_type (int type)
 }
 
 static LLVMTypeRef
-create_llvm_type_for_type (MonoClass *klass)
+create_llvm_type_for_type (MonoLLVMModule *module, MonoClass *klass)
 {
        int i, size, nfields, esize;
        LLVMTypeRef *eltypes;
@@ -392,7 +400,7 @@ create_llvm_type_for_type (MonoClass *klass)
        }
 
        name = mono_type_full_name (&klass->byval_arg);
-       ltype = LLVMStructCreateNamed (aot_module.context, name);
+       ltype = LLVMStructCreateNamed (module->context, name);
        LLVMStructSetBody (ltype, eltypes, size, FALSE);
        g_free (eltypes);
        g_free (name);
@@ -408,10 +416,8 @@ create_llvm_type_for_type (MonoClass *klass)
 static LLVMTypeRef
 type_to_llvm_type (EmitContext *ctx, MonoType *t)
 {
-       if (t->byref)
-               return LLVMPointerType (LLVMInt8Type (), 0);
-
        t = mini_get_underlying_type (t);
+
        switch (t->type) {
        case MONO_TYPE_VOID:
                return LLVMVoidType ();
@@ -469,10 +475,10 @@ type_to_llvm_type (EmitContext *ctx, MonoType *t)
                if (klass->enumtype)
                        return type_to_llvm_type (ctx, mono_class_enum_basetype (klass));
 
-               ltype = (LLVMTypeRef)g_hash_table_lookup (ctx->lmodule->llvm_types, klass);
+               ltype = (LLVMTypeRef)g_hash_table_lookup (ctx->module->llvm_types, klass);
                if (!ltype) {
-                       ltype = create_llvm_type_for_type (klass);
-                       g_hash_table_insert (ctx->lmodule->llvm_types, klass, ltype);
+                       ltype = create_llvm_type_for_type (ctx->module, klass);
+                       g_hash_table_insert (ctx->module->llvm_types, klass, ltype);
                }
                return ltype;
        }
@@ -517,6 +523,9 @@ type_to_llvm_arg_type (EmitContext *ctx, MonoType *t)
 {
        LLVMTypeRef ptype = type_to_llvm_type (ctx, t);
 
+       if (ctx->cfg->llvm_only)
+               return ptype;
+
        /*
         * This works on all abis except arm64/ios which passes multiple
         * arguments in one stack slot.
@@ -985,18 +994,18 @@ get_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        sprintf (bb_name_buf, "EH_CLAUSE%d_BB%d", clause_index, bb->block_num);
                        bb_name = bb_name_buf;
                } else if (bb->block_num < 256) {
-                       if (!ctx->lmodule->bb_names) {
-                               ctx->lmodule->bb_names_len = 256;
-                               ctx->lmodule->bb_names = g_new0 (char*, ctx->lmodule->bb_names_len);
+                       if (!ctx->module->bb_names) {
+                               ctx->module->bb_names_len = 256;
+                               ctx->module->bb_names = g_new0 (char*, ctx->module->bb_names_len);
                        }
-                       if (!ctx->lmodule->bb_names [bb->block_num]) {
+                       if (!ctx->module->bb_names [bb->block_num]) {
                                char *n;
 
                                n = g_strdup_printf ("BB%d", bb->block_num);
                                mono_memory_barrier ();
-                               ctx->lmodule->bb_names [bb->block_num] = n;
+                               ctx->module->bb_names [bb->block_num] = n;
                        }
-                       bb_name = ctx->lmodule->bb_names [bb->block_num];
+                       bb_name = ctx->module->bb_names [bb->block_num];
                } else {
                        sprintf (bb_name_buf, "BB%d", bb->block_num);
                        bb_name = bb_name_buf;
@@ -1162,115 +1171,140 @@ emit_volatile_store (EmitContext *ctx, int vreg)
        }
 }
 
-typedef struct {
-       /* 
-        * Maps parameter indexes in the original signature to parameter indexes
-        * in the LLVM signature.
-        */
-       int *pindexes;
-       /* The indexes of various special arguments in the LLVM signature */
-       int vret_arg_pindex, this_arg_pindex, rgctx_arg_pindex, imt_arg_pindex;
-} LLVMSigInfo;
+static LLVMTypeRef
+sig_to_llvm_sig_no_cinfo (EmitContext *ctx, MonoMethodSignature *sig)
+{
+       LLVMTypeRef ret_type;
+       LLVMTypeRef *param_types = NULL;
+       LLVMTypeRef res;
+       int i, pindex;
+       MonoType *rtype;
+
+       rtype = mini_get_underlying_type (sig->ret);
+       ret_type = type_to_llvm_type (ctx, rtype);
+       CHECK_FAILURE (ctx);
+
+       param_types = g_new0 (LLVMTypeRef, (sig->param_count * 8) + 3);
+       pindex = 0;
+
+       if (sig->hasthis)
+               param_types [pindex ++] = ThisType ();
+       for (i = 0; i < sig->param_count; ++i)
+               param_types [pindex ++] = type_to_llvm_arg_type (ctx, sig->params [i]);
+
+       CHECK_FAILURE (ctx);
+
+       res = LLVMFunctionType (ret_type, param_types, pindex, FALSE);
+       g_free (param_types);
+
+       return res;
+
+ FAILURE:
+       g_free (param_types);
+
+       return NULL;
+}
 
 /*
  * sig_to_llvm_sig_full:
  *
  *   Return the LLVM signature corresponding to the mono signature SIG using the
- * calling convention information in CINFO. Return parameter mapping information in SINFO.
+ * calling convention information in CINFO. Fill out the parameter mapping information in CINFO.
  */
 static LLVMTypeRef
-sig_to_llvm_sig_full (EmitContext *ctx, MonoMethodSignature *sig, LLVMCallInfo *cinfo,
-                                         LLVMSigInfo *sinfo)
+sig_to_llvm_sig_full (EmitContext *ctx, MonoMethodSignature *sig, LLVMCallInfo *cinfo)
 {
        LLVMTypeRef ret_type;
        LLVMTypeRef *param_types = NULL;
        LLVMTypeRef res;
        int i, j, pindex, vret_arg_pindex = 0;
-       int *pindexes;
        gboolean vretaddr = FALSE;
        MonoType *rtype;
 
-       if (sinfo)
-               memset (sinfo, 0, sizeof (LLVMSigInfo));
+       if (!cinfo)
+               return sig_to_llvm_sig_no_cinfo (ctx, sig);
 
        rtype = mini_get_underlying_type (sig->ret);
        ret_type = type_to_llvm_type (ctx, rtype);
        CHECK_FAILURE (ctx);
 
-       if (cinfo) {
-               switch (cinfo->ret.storage) {
-               case LLVMArgVtypeInReg:
-                       /* LLVM models this by returning an aggregate value */
-                       if (cinfo->ret.pair_storage [0] == LLVMArgInIReg && cinfo->ret.pair_storage [1] == LLVMArgNone) {
-                               LLVMTypeRef members [2];
-
-                               members [0] = IntPtrType ();
-                               ret_type = LLVMStructType (members, 1, FALSE);
-                       } else if (cinfo->ret.pair_storage [0] == LLVMArgNone && cinfo->ret.pair_storage [1] == LLVMArgNone) {
-                               /* Empty struct */
-                               ret_type = LLVMVoidType ();
-                       } else {
-                               g_assert_not_reached ();
-                       }
-                       break;
-               case LLVMArgVtypeByVal:
-                       /* Vtype returned normally by val */
-                       break;
-               case LLVMArgVtypeAsScalar:
-                       /* LLVM models this by returning an int */
-                       g_assert (cinfo->ret.nslots == 1 || cinfo->ret.nslots == 2);
-                       ret_type = LLVMIntType (cinfo->ret.nslots * sizeof (mgreg_t) * 8);
-                       break;
-               case LLVMArgFpStruct: {
-                       /* Vtype returned as a fp struct */
-                       LLVMTypeRef members [16];
+       switch (cinfo->ret.storage) {
+       case LLVMArgVtypeInReg:
+               /* LLVM models this by returning an aggregate value */
+               if (cinfo->ret.pair_storage [0] == LLVMArgInIReg && cinfo->ret.pair_storage [1] == LLVMArgNone) {
+                       LLVMTypeRef members [2];
 
-                       /* Have to create our own structure since we don't map fp structures to LLVM fp structures yet */
-                       for (i = 0; i < cinfo->ret.nslots; ++i)
-                               members [i] = cinfo->ret.esize == 8 ? LLVMDoubleType () : LLVMFloatType ();
-                       ret_type = LLVMStructType (members, cinfo->ret.nslots, FALSE);
-                       break;
-               }
-               case LLVMArgVtypeByRef:
-                       /* Vtype returned using a hidden argument */
+                       members [0] = IntPtrType ();
+                       ret_type = LLVMStructType (members, 1, FALSE);
+               } else if (cinfo->ret.pair_storage [0] == LLVMArgNone && cinfo->ret.pair_storage [1] == LLVMArgNone) {
+                       /* Empty struct */
                        ret_type = LLVMVoidType ();
-                       break;
-               default:
-                       if (mini_type_is_vtype (rtype)) {
-                               g_assert (cinfo->ret.storage == LLVMArgVtypeRetAddr);
-                               vretaddr = TRUE;
-                               ret_type = LLVMVoidType ();
-                       }
-                       break;
+               } else if (cinfo->ret.pair_storage [0] == LLVMArgInIReg && cinfo->ret.pair_storage [1] == LLVMArgInIReg) {
+                       LLVMTypeRef members [2];
+
+                       members [0] = IntPtrType ();
+                       members [1] = IntPtrType ();
+                       ret_type = LLVMStructType (members, 2, FALSE);
+               } else {
+                       g_assert_not_reached ();
                }
+               break;
+       case LLVMArgVtypeByVal:
+               /* Vtype returned normally by val */
+               break;
+       case LLVMArgVtypeAsScalar:
+               /* LLVM models this by returning an int */
+               g_assert (cinfo->ret.nslots == 1 || cinfo->ret.nslots == 2);
+               ret_type = LLVMIntType (cinfo->ret.nslots * sizeof (mgreg_t) * 8);
+               break;
+       case LLVMArgFpStruct: {
+               /* Vtype returned as a fp struct */
+               LLVMTypeRef members [16];
+
+               /* Have to create our own structure since we don't map fp structures to LLVM fp structures yet */
+               for (i = 0; i < cinfo->ret.nslots; ++i)
+                       members [i] = cinfo->ret.esize == 8 ? LLVMDoubleType () : LLVMFloatType ();
+               ret_type = LLVMStructType (members, cinfo->ret.nslots, FALSE);
+               break;
+       }
+       case LLVMArgVtypeByRef:
+               /* Vtype returned using a hidden argument */
+               ret_type = LLVMVoidType ();
+               break;
+       case LLVMArgVtypeRetAddr:
+       case LLVMArgScalarRetAddr:
+       case LLVMArgGsharedvtFixed:
+       case LLVMArgGsharedvtFixedVtype:
+       case LLVMArgGsharedvtVariable:
+               vretaddr = TRUE;
+               ret_type = LLVMVoidType ();
+               break;
+       default:
+               break;
        }
 
-       pindexes = g_new0 (int, sig->param_count);
        param_types = g_new0 (LLVMTypeRef, (sig->param_count * 8) + 3);
        pindex = 0;
-       if (cinfo && cinfo->ret.storage == LLVMArgVtypeByRef) {
+       if (cinfo->ret.storage == LLVMArgVtypeByRef) {
                /*
                 * Has to be the first argument because of the sret argument attribute
                 * FIXME: This might conflict with passing 'this' as the first argument, but
                 * this is only used on arm64 which has a dedicated struct return register.
                 */
-               if (sinfo)
-                       sinfo->vret_arg_pindex = pindex;
+               cinfo->vret_arg_pindex = pindex;
                param_types [pindex] = type_to_llvm_arg_type (ctx, sig->ret);
                CHECK_FAILURE (ctx);
                param_types [pindex] = LLVMPointerType (param_types [pindex], 0);
                pindex ++;
        }
-       if (!ctx->llvm_only && cinfo && cinfo->rgctx_arg) {
-               if (sinfo)
-                       sinfo->rgctx_arg_pindex = pindex;
-               param_types [pindex] = ctx->lmodule->ptr_type;
+       if (!ctx->llvm_only && cinfo->rgctx_arg) {
+               cinfo->rgctx_arg_pindex = pindex;
+               param_types [pindex] = ctx->module->ptr_type;
                pindex ++;
        }
-       if (cinfo && cinfo->imt_arg) {
-               if (sinfo)
-                       sinfo->imt_arg_pindex = pindex;
-               param_types [pindex] = ctx->lmodule->ptr_type;
+       if (cinfo->imt_arg) {
+               cinfo->imt_arg_pindex = pindex;
+               param_types [pindex] = ctx->module->ptr_type;
                pindex ++;
        }
        if (vretaddr) {
@@ -1291,30 +1325,24 @@ sig_to_llvm_sig_full (EmitContext *ctx, MonoMethodSignature *sig, LLVMCallInfo *
                        }
                }
 
-               if (sinfo)
-                       sinfo->vret_arg_pindex = vret_arg_pindex;
+               cinfo->vret_arg_pindex = vret_arg_pindex;
        }                               
 
        if (vretaddr && vret_arg_pindex == pindex)
                param_types [pindex ++] = IntPtrType ();
        if (sig->hasthis) {
-               if (sinfo)
-                       sinfo->this_arg_pindex = pindex;
+               cinfo->this_arg_pindex = pindex;
                param_types [pindex ++] = ThisType ();
+               cinfo->args [0].pindex = cinfo->this_arg_pindex;
        }
        if (vretaddr && vret_arg_pindex == pindex)
                param_types [pindex ++] = IntPtrType ();
        for (i = 0; i < sig->param_count; ++i) {
-               LLVMArgInfo *ainfo = cinfo ? &cinfo->args [i + sig->hasthis] : NULL;
+               LLVMArgInfo *ainfo = &cinfo->args [i + sig->hasthis];
 
                if (vretaddr && vret_arg_pindex == pindex)
                        param_types [pindex ++] = IntPtrType ();
-               pindexes [i] = pindex;
-
-               if (!ainfo) {
-                       param_types [pindex ++] = type_to_llvm_arg_type (ctx, sig->params [i]);
-                       continue;
-               }
+               ainfo->pindex = pindex;
 
                switch (ainfo->storage) {
                case LLVMArgVtypeInReg:
@@ -1331,7 +1359,7 @@ sig_to_llvm_sig_full (EmitContext *ctx, MonoMethodSignature *sig, LLVMCallInfo *
                        }
                        break;
                case LLVMArgVtypeByVal:
-                       param_types [pindex] = type_to_llvm_arg_type (ctx, sig->params [i]);
+                       param_types [pindex] = type_to_llvm_arg_type (ctx, ainfo->type);
                        CHECK_FAILURE (ctx);
                        param_types [pindex] = LLVMPointerType (param_types [pindex], 0);
                        pindex ++;
@@ -1341,7 +1369,8 @@ sig_to_llvm_sig_full (EmitContext *ctx, MonoMethodSignature *sig, LLVMCallInfo *
                        pindex ++;
                        break;
                case LLVMArgVtypeByRef:
-                       param_types [pindex] = type_to_llvm_arg_type (ctx, sig->params [i]);
+               case LLVMArgScalarByRef:
+                       param_types [pindex] = type_to_llvm_arg_type (ctx, ainfo->type);
                        CHECK_FAILURE (ctx);
                        param_types [pindex] = LLVMPointerType (param_types [pindex], 0);
                        pindex ++;
@@ -1349,26 +1378,34 @@ sig_to_llvm_sig_full (EmitContext *ctx, MonoMethodSignature *sig, LLVMCallInfo *
                case LLVMArgAsFpArgs: {
                        int j;
 
+                       /* Emit dummy fp arguments if needed so the rest is passed on the stack */
+                       for (j = 0; j < ainfo->ndummy_fpargs; ++j)
+                               param_types [pindex ++] = LLVMDoubleType ();
                        for (j = 0; j < ainfo->nslots; ++j)
-                               param_types [pindex + j] = ainfo->esize == 8 ? LLVMDoubleType () : LLVMFloatType ();
-                       pindex += ainfo->nslots;
+                               param_types [pindex ++] = ainfo->esize == 8 ? LLVMDoubleType () : LLVMFloatType ();
                        break;
                }
                case LLVMArgVtypeAsScalar:
                        g_assert_not_reached ();
                        break;
+               case LLVMArgGsharedvtFixed:
+               case LLVMArgGsharedvtFixedVtype:
+                       param_types [pindex ++] = LLVMPointerType (type_to_llvm_arg_type (ctx, ainfo->type), 0);
+                       break;
+               case LLVMArgGsharedvtVariable:
+                       param_types [pindex ++] = LLVMPointerType (IntPtrType (), 0);
+                       break;
                default:
-                       param_types [pindex ++] = type_to_llvm_arg_type (ctx, sig->params [i]);
+                       param_types [pindex ++] = type_to_llvm_arg_type (ctx, ainfo->type);
                        break;
                }
        }
        if (vretaddr && vret_arg_pindex == pindex)
                param_types [pindex ++] = IntPtrType ();
-       if (ctx->llvm_only && cinfo && cinfo->rgctx_arg) {
+       if (ctx->llvm_only && cinfo->rgctx_arg) {
                /* Pass the rgctx as the last argument */
-               if (sinfo)
-                       sinfo->rgctx_arg_pindex = pindex;
-               param_types [pindex] = ctx->lmodule->ptr_type;
+               cinfo->rgctx_arg_pindex = pindex;
+               param_types [pindex] = ctx->module->ptr_type;
                pindex ++;
        }
 
@@ -1377,12 +1414,6 @@ sig_to_llvm_sig_full (EmitContext *ctx, MonoMethodSignature *sig, LLVMCallInfo *
        res = LLVMFunctionType (ret_type, param_types, pindex, FALSE);
        g_free (param_types);
 
-       if (sinfo) {
-               sinfo->pindexes = pindexes;
-       } else {
-               g_free (pindexes);
-       }
-
        return res;
 
  FAILURE:
@@ -1394,7 +1425,7 @@ sig_to_llvm_sig_full (EmitContext *ctx, MonoMethodSignature *sig, LLVMCallInfo *
 static LLVMTypeRef
 sig_to_llvm_sig (EmitContext *ctx, MonoMethodSignature *sig)
 {
-       return sig_to_llvm_sig_full (ctx, sig, NULL, NULL);
+       return sig_to_llvm_sig_full (ctx, sig, NULL);
 }
 
 /*
@@ -1481,8 +1512,30 @@ create_builder (EmitContext *ctx)
        return builder;
 }
 
+static char*
+get_aotconst_name (MonoJumpInfoType type, gconstpointer data, int got_offset)
+{
+       char *name;
+
+       switch (type) {
+       case MONO_PATCH_INFO_INTERNAL_METHOD:
+               name = g_strdup_printf ("jit_icall_%s", data);
+               break;
+       case MONO_PATCH_INFO_RGCTX_SLOT_INDEX: {
+               MonoJumpInfoRgctxEntry *entry = (MonoJumpInfoRgctxEntry*)data;
+               name = g_strdup_printf ("RGCTX_SLOT_INDEX_%s", mono_rgctx_info_type_to_str (entry->info_type));
+               break;
+       }
+       default:
+               name = g_strdup_printf ("%s_%d", mono_ji_type_to_string (type), got_offset);
+               break;
+       }
+
+       return name;
+}
+
 static LLVMValueRef
-get_aotconst (EmitContext *ctx, MonoJumpInfoType type, gconstpointer data)
+get_aotconst_typed (EmitContext *ctx, MonoJumpInfoType type, gconstpointer data, LLVMTypeRef llvm_type)
 {
        MonoCompile *cfg;
        guint32 got_offset;
@@ -1504,44 +1557,71 @@ get_aotconst (EmitContext *ctx, MonoJumpInfoType type, gconstpointer data)
        cfg->patch_info = ji;
 
        got_offset = mono_aot_get_got_offset (cfg->patch_info);
-       ctx->lmodule->max_got_offset = MAX (ctx->lmodule->max_got_offset, got_offset);
+       ctx->module->max_got_offset = MAX (ctx->module->max_got_offset, got_offset);
+       /* 
+        * If the got slot is shared, it means its initialized when the aot image is loaded, so we don't need to
+        * explicitly initialize it.
+        */
+       if (!mono_aot_is_shared_got_offset (got_offset)) {
+               //mono_print_ji (ji);
+               //printf ("\n");
+               ctx->has_got_access = TRUE;
+       }
 
        indexes [0] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
        indexes [1] = LLVMConstInt (LLVMInt32Type (), (gssize)got_offset, FALSE);
-       got_entry_addr = LLVMBuildGEP (builder, ctx->lmodule->got_var, indexes, 2, "");
+       got_entry_addr = LLVMBuildGEP (builder, ctx->module->got_var, indexes, 2, "");
 
-       switch (type) {
-       case MONO_PATCH_INFO_INTERNAL_METHOD:
-               name = g_strdup_printf ("jit_icall_%s", data);
-               break;
-       default:
-               break;
+       name = get_aotconst_name (type, data, got_offset);
+       if (llvm_type) {
+               load = convert (ctx, LLVMBuildLoad (builder, got_entry_addr, ""), llvm_type);
+               LLVMSetValueName (load, name ? name : "");
+       } else {
+               load = LLVMBuildLoad (builder, got_entry_addr, name ? name : "");
        }
-
-       load = LLVMBuildLoad (builder, got_entry_addr, name ? name : "");
        g_free (name);
        //set_invariant_load_flag (load);
 
        return load;
 }
 
+static LLVMValueRef
+get_aotconst (EmitContext *ctx, MonoJumpInfoType type, gconstpointer data)
+{
+       return get_aotconst_typed (ctx, type, data, NULL);
+}
+
 static LLVMValueRef
 get_callee (EmitContext *ctx, LLVMTypeRef llvm_sig, MonoJumpInfoType type, gconstpointer data)
 {
+       LLVMValueRef callee;
+       char *callee_name;
        if (ctx->llvm_only) {
-               LLVMValueRef load;
+               callee_name = mono_aot_get_direct_call_symbol (type, data);
+               if (callee_name) {
+                       /* Directly callable */
+                       // FIXME: Locking
+                       callee = (LLVMValueRef)g_hash_table_lookup (ctx->module->direct_callables, callee_name);
+                       if (!callee) {
+                               callee = LLVMAddFunction (ctx->lmodule, callee_name, llvm_sig);
+
+                               LLVMSetVisibility (callee, LLVMHiddenVisibility);
+
+                               g_hash_table_insert (ctx->module->direct_callables, (char*)callee_name, callee);
+                       } else {
+                               g_free (callee_name);
+                       }
+                       return callee;
+               }
 
                /*
                 * Calls are made through the GOT.
                 */
-               load = get_aotconst (ctx, type, data);
-
-               return convert (ctx, load, LLVMPointerType (llvm_sig, 0));
+               return get_aotconst_typed (ctx, type, data, LLVMPointerType (llvm_sig, 0));
        } else {
-               char *callee_name = mono_aot_get_plt_symbol (type, data);
-               LLVMValueRef callee;
                MonoJumpInfo *ji = NULL;
 
+               callee_name = mono_aot_get_plt_symbol (type, data);
                if (!callee_name)
                        return NULL;
 
@@ -1550,13 +1630,13 @@ get_callee (EmitContext *ctx, LLVMTypeRef llvm_sig, MonoJumpInfoType type, gcons
                        mono_add_patch_info (ctx->cfg, 0, type, data);
 
                // FIXME: Locking
-               callee = (LLVMValueRef)g_hash_table_lookup (ctx->lmodule->plt_entries, callee_name);
+               callee = (LLVMValueRef)g_hash_table_lookup (ctx->module->plt_entries, callee_name);
                if (!callee) {
-                       callee = LLVMAddFunction (ctx->module, callee_name, llvm_sig);
+                       callee = LLVMAddFunction (ctx->lmodule, callee_name, llvm_sig);
 
                        LLVMSetVisibility (callee, LLVMHiddenVisibility);
 
-                       g_hash_table_insert (ctx->lmodule->plt_entries, (char*)callee_name, callee);
+                       g_hash_table_insert (ctx->module->plt_entries, (char*)callee_name, callee);
                }
 
                if (ctx->cfg->compile_aot) {
@@ -1564,7 +1644,7 @@ get_callee (EmitContext *ctx, LLVMTypeRef llvm_sig, MonoJumpInfoType type, gcons
                        ji->type = type;
                        ji->data.target = data;
 
-                       g_hash_table_insert (ctx->lmodule->plt_entries_ji, ji, callee);
+                       g_hash_table_insert (ctx->module->plt_entries_ji, ji, callee);
                }
 
                return callee;
@@ -1790,7 +1870,7 @@ emit_load_general (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder
                args [1] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
                args [2] = LLVMConstInt (LLVMInt1Type (), TRUE, FALSE);
                args [3] = LLVMConstInt (LLVMInt32Type (), ordering, FALSE);
-               res = emit_call (ctx, bb, builder_ref, LLVMGetNamedFunction (ctx->module, intrins_name), args, 4);
+               res = emit_call (ctx, bb, builder_ref, LLVMGetNamedFunction (ctx->lmodule, intrins_name), args, 4);
 
                if (addr_type == LLVMPointerType (LLVMDoubleType (), 0))
                        res = LLVMBuildBitCast (*builder_ref, res, LLVMDoubleType (), "");
@@ -1875,7 +1955,7 @@ emit_store_general (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builde
                args [2] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
                args [3] = LLVMConstInt (LLVMInt1Type (), TRUE, FALSE);
                args [4] = LLVMConstInt (LLVMInt32Type (), ordering, FALSE);
-               emit_call (ctx, bb, builder_ref, LLVMGetNamedFunction (ctx->module, intrins_name), args, 5);
+               emit_call (ctx, bb, builder_ref, LLVMGetNamedFunction (ctx->lmodule, intrins_name), args, 5);
        } else {
                mono_llvm_build_store (*builder_ref, value, addr, is_faulting, barrier);
        }
@@ -1941,7 +2021,7 @@ emit_cond_system_exception (EmitContext *ctx, MonoBasicBlock *bb, const char *ex
                return;
        }
 
-       callee = ctx->lmodule->throw_corlib_exception;
+       callee = ctx->module->throw_corlib_exception;
        if (!callee) {
                LLVMTypeRef sig;
                const char *icall_name;
@@ -1952,17 +2032,17 @@ emit_cond_system_exception (EmitContext *ctx, MonoBasicBlock *bb, const char *ex
                if (ctx->cfg->compile_aot) {
                        callee = get_callee (ctx, sig, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name);
                } else {
-                       callee = LLVMAddFunction (ctx->module, "llvm_throw_corlib_exception_trampoline", sig);
+                       callee = LLVMAddFunction (ctx->lmodule, "llvm_throw_corlib_exception_trampoline", sig);
 
                        /*
                         * Differences between the LLVM/non-LLVM throw corlib exception trampoline:
                         * - On x86, LLVM generated code doesn't push the arguments
                         * - The trampoline takes the throw address as an arguments, not a pc offset.
                         */
-                       LLVMAddGlobalMapping (ctx->lmodule->ee, callee, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name));
+                       LLVMAddGlobalMapping (ctx->module->ee, callee, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name));
 
                        mono_memory_barrier ();
-                       ctx->lmodule->throw_corlib_exception = callee;
+                       ctx->module->throw_corlib_exception = callee;
                }
        }
 
@@ -2119,7 +2199,7 @@ emit_vtype_to_args (EmitContext *ctx, LLVMBuilderRef builder, MonoType *t, LLVMV
 }
 
 static LLVMValueRef
-build_alloca_llvm_type (EmitContext *ctx, LLVMTypeRef t, int align)
+build_alloca_llvm_type_name (EmitContext *ctx, LLVMTypeRef t, int align, const char *name)
 {
        /*
         * Have to place all alloca's at the end of the entry bb, since otherwise they would
@@ -2127,16 +2207,24 @@ build_alloca_llvm_type (EmitContext *ctx, LLVMTypeRef t, int align)
         */
        LLVMPositionBuilder (ctx->alloca_builder, get_bb (ctx, ctx->cfg->bb_entry), ctx->last_alloca);
 
-       ctx->last_alloca = mono_llvm_build_alloca (ctx->alloca_builder, t, NULL, align, "");
+       ctx->last_alloca = mono_llvm_build_alloca (ctx->alloca_builder, t, NULL, align, name);
        return ctx->last_alloca;
 }
 
+static LLVMValueRef
+build_alloca_llvm_type (EmitContext *ctx, LLVMTypeRef t, int align)
+{
+       return build_alloca_llvm_type_name (ctx, t, align, "");
+}
+
 static LLVMValueRef
 build_alloca (EmitContext *ctx, MonoType *t)
 {
        MonoClass *k = mono_class_from_mono_type (t);
        int align;
 
+       g_assert (!mini_is_gsharedvt_variable_type (t));
+
        if (MONO_CLASS_IS_SIMD (ctx->cfg, k))
                align = 16;
        else
@@ -2149,34 +2237,63 @@ build_alloca (EmitContext *ctx, MonoType *t)
        return build_alloca_llvm_type (ctx, type_to_llvm_type (ctx, t), align);
 }
 
+static LLVMValueRef
+emit_gsharedvt_ldaddr (EmitContext *ctx, int vreg)
+{
+       /*
+        * gsharedvt local.
+        * Compute the address of the local as gsharedvt_locals_var + gsharedvt_info_var->locals_offsets [idx].
+        */
+       MonoCompile *cfg = ctx->cfg;
+       LLVMBuilderRef builder = ctx->builder;
+       LLVMValueRef offset, offset_var;
+       LLVMValueRef info_var = ctx->values [cfg->gsharedvt_info_var->dreg];
+       LLVMValueRef locals_var = ctx->values [cfg->gsharedvt_locals_var->dreg];
+       LLVMValueRef ptr;
+       char *name;
+
+       g_assert (info_var);
+       g_assert (locals_var);
+
+       int idx = cfg->gsharedvt_vreg_to_idx [vreg] - 1;
+
+       offset = LLVMConstInt (LLVMInt32Type (), MONO_STRUCT_OFFSET (MonoGSharedVtMethodRuntimeInfo, entries) + (idx * sizeof (gpointer)), FALSE);
+       ptr = LLVMBuildAdd (builder, convert (ctx, info_var, IntPtrType ()), convert (ctx, offset, IntPtrType ()), "");
+
+       name = g_strdup_printf ("gsharedvt_local_%d_offset", vreg);
+       offset_var = LLVMBuildLoad (builder, convert (ctx, ptr, LLVMPointerType (LLVMInt32Type (), 0)), name);
+
+       return LLVMBuildAdd (builder, convert (ctx, locals_var, IntPtrType ()), convert (ctx, offset_var, IntPtrType ()), "");
+}
+
 /*
  * Put the global into the 'llvm.used' array to prevent it from being optimized away.
  */
 static void
-mark_as_used (MonoLLVMModule *lmodule, LLVMValueRef global)
+mark_as_used (MonoLLVMModule *module, LLVMValueRef global)
 {
-       if (!lmodule->used)
-               lmodule->used = g_ptr_array_sized_new (16);
-       g_ptr_array_add (lmodule->used, global);
+       if (!module->used)
+               module->used = g_ptr_array_sized_new (16);
+       g_ptr_array_add (module->used, global);
 }
 
 static void
-emit_llvm_used (MonoLLVMModule *lmodule)
+emit_llvm_used (MonoLLVMModule *module)
 {
-       LLVMModuleRef module = lmodule->module;
+       LLVMModuleRef lmodule = module->lmodule;
        LLVMTypeRef used_type;
        LLVMValueRef used, *used_elem;
        int i;
                
-       if (!lmodule->used)
+       if (!module->used)
                return;
 
-       used_type = LLVMArrayType (LLVMPointerType (LLVMInt8Type (), 0), lmodule->used->len);
-       used = LLVMAddGlobal (module, used_type, "llvm.used");
-       used_elem = g_new0 (LLVMValueRef, lmodule->used->len);
-       for (i = 0; i < lmodule->used->len; ++i)
-               used_elem [i] = LLVMConstBitCast ((LLVMValueRef)g_ptr_array_index (lmodule->used, i), LLVMPointerType (LLVMInt8Type (), 0));
-       LLVMSetInitializer (used, LLVMConstArray (LLVMPointerType (LLVMInt8Type (), 0), used_elem, lmodule->used->len));
+       used_type = LLVMArrayType (LLVMPointerType (LLVMInt8Type (), 0), module->used->len);
+       used = LLVMAddGlobal (lmodule, used_type, "llvm.used");
+       used_elem = g_new0 (LLVMValueRef, module->used->len);
+       for (i = 0; i < module->used->len; ++i)
+               used_elem [i] = LLVMConstBitCast ((LLVMValueRef)g_ptr_array_index (module->used, i), LLVMPointerType (LLVMInt8Type (), 0));
+       LLVMSetInitializer (used, LLVMConstArray (LLVMPointerType (LLVMInt8Type (), 0), used_elem, module->used->len));
        LLVMSetLinkage (used, LLVMAppendingLinkage);
        LLVMSetSection (used, "llvm.metadata");
 }
@@ -2187,9 +2304,9 @@ emit_llvm_used (MonoLLVMModule *lmodule)
  *   Emit a function mapping method indexes to their code
  */
 static void
-emit_get_method (MonoLLVMModule *lmodule)
+emit_get_method (MonoLLVMModule *module)
 {
-       LLVMModuleRef module = lmodule->module;
+       LLVMModuleRef lmodule = module->lmodule;
        LLVMValueRef func, switch_ins, m;
        LLVMBasicBlockRef entry_bb, fail_bb, bb, code_start_bb, code_end_bb;
        LLVMBasicBlockRef *bbs;
@@ -2203,11 +2320,11 @@ emit_get_method (MonoLLVMModule *lmodule)
         * but generating code seems safer.
         */
        rtype = LLVMPointerType (LLVMInt8Type (), 0);
-       func = LLVMAddFunction (module, lmodule->get_method_symbol, LLVMFunctionType1 (rtype, LLVMInt32Type (), FALSE));
+       func = LLVMAddFunction (lmodule, module->get_method_symbol, LLVMFunctionType1 (rtype, LLVMInt32Type (), FALSE));
        LLVMSetLinkage (func, LLVMExternalLinkage);
        LLVMSetVisibility (func, LLVMHiddenVisibility);
        LLVMAddFunctionAttr (func, LLVMNoUnwindAttribute);
-       lmodule->get_method = func;
+       module->get_method = func;
 
        entry_bb = LLVMAppendBasicBlock (func, "ENTRY");
 
@@ -2222,17 +2339,17 @@ emit_get_method (MonoLLVMModule *lmodule)
        g_free (name);
        builder = LLVMCreateBuilder ();
        LLVMPositionBuilderAtEnd (builder, code_start_bb);
-       LLVMBuildRet (builder, LLVMBuildBitCast (builder, lmodule->code_start, rtype, ""));
+       LLVMBuildRet (builder, LLVMBuildBitCast (builder, module->code_start, rtype, ""));
 
        name = g_strdup_printf ("BB_CODE_END");
        code_end_bb = LLVMAppendBasicBlock (func, name);
        g_free (name);
        builder = LLVMCreateBuilder ();
        LLVMPositionBuilderAtEnd (builder, code_end_bb);
-       LLVMBuildRet (builder, LLVMBuildBitCast (builder, lmodule->code_end, rtype, ""));
+       LLVMBuildRet (builder, LLVMBuildBitCast (builder, module->code_end, rtype, ""));
 
-       bbs = g_new0 (LLVMBasicBlockRef, lmodule->max_method_idx + 1);
-       for (i = 0; i < lmodule->max_method_idx + 1; ++i) {
+       bbs = g_new0 (LLVMBasicBlockRef, module->max_method_idx + 1);
+       for (i = 0; i < module->max_method_idx + 1; ++i) {
                name = g_strdup_printf ("BB_%d", i);
                bb = LLVMAppendBasicBlock (func, name);
                g_free (name);
@@ -2241,7 +2358,7 @@ emit_get_method (MonoLLVMModule *lmodule)
                builder = LLVMCreateBuilder ();
                LLVMPositionBuilderAtEnd (builder, bb);
 
-               m = (LLVMValueRef)g_hash_table_lookup (lmodule->idx_to_lmethod, GINT_TO_POINTER (i));
+               m = (LLVMValueRef)g_hash_table_lookup (module->idx_to_lmethod, GINT_TO_POINTER (i));
                if (m)
                        LLVMBuildRet (builder, LLVMBuildBitCast (builder, m, rtype, ""));
                else
@@ -2259,11 +2376,11 @@ emit_get_method (MonoLLVMModule *lmodule)
        switch_ins = LLVMBuildSwitch (builder, LLVMGetParam (func, 0), fail_bb, 0);
        LLVMAddCase (switch_ins, LLVMConstInt (LLVMInt32Type (), -1, FALSE), code_start_bb);
        LLVMAddCase (switch_ins, LLVMConstInt (LLVMInt32Type (), -2, FALSE), code_end_bb);
-       for (i = 0; i < lmodule->max_method_idx + 1; ++i) {
+       for (i = 0; i < module->max_method_idx + 1; ++i) {
                LLVMAddCase (switch_ins, LLVMConstInt (LLVMInt32Type (), i, FALSE), bbs [i]);
        }
 
-       mark_as_used (lmodule, func);
+       mark_as_used (module, func);
 }
 
 /*
@@ -2272,9 +2389,9 @@ emit_get_method (MonoLLVMModule *lmodule)
  *   Emit a function mapping method indexes to their unbox trampoline
  */
 static void
-emit_get_unbox_tramp (MonoLLVMModule *lmodule)
+emit_get_unbox_tramp (MonoLLVMModule *module)
 {
-       LLVMModuleRef module = lmodule->module;
+       LLVMModuleRef lmodule = module->lmodule;
        LLVMValueRef func, switch_ins, m;
        LLVMBasicBlockRef entry_bb, fail_bb, bb;
        LLVMBasicBlockRef *bbs;
@@ -2286,17 +2403,17 @@ emit_get_unbox_tramp (MonoLLVMModule *lmodule)
        /* Similar to emit_get_method () */
 
        rtype = LLVMPointerType (LLVMInt8Type (), 0);
-       func = LLVMAddFunction (module, lmodule->get_unbox_tramp_symbol, LLVMFunctionType1 (rtype, LLVMInt32Type (), FALSE));
+       func = LLVMAddFunction (lmodule, module->get_unbox_tramp_symbol, LLVMFunctionType1 (rtype, LLVMInt32Type (), FALSE));
        LLVMSetLinkage (func, LLVMExternalLinkage);
        LLVMSetVisibility (func, LLVMHiddenVisibility);
        LLVMAddFunctionAttr (func, LLVMNoUnwindAttribute);
-       lmodule->get_unbox_tramp = func;
+       module->get_unbox_tramp = func;
 
        entry_bb = LLVMAppendBasicBlock (func, "ENTRY");
 
-       bbs = g_new0 (LLVMBasicBlockRef, lmodule->max_method_idx + 1);
-       for (i = 0; i < lmodule->max_method_idx + 1; ++i) {
-               m = (LLVMValueRef)g_hash_table_lookup (lmodule->idx_to_unbox_tramp, GINT_TO_POINTER (i));
+       bbs = g_new0 (LLVMBasicBlockRef, module->max_method_idx + 1);
+       for (i = 0; i < module->max_method_idx + 1; ++i) {
+               m = (LLVMValueRef)g_hash_table_lookup (module->idx_to_unbox_tramp, GINT_TO_POINTER (i));
                if (!m)
                        continue;
 
@@ -2320,48 +2437,133 @@ emit_get_unbox_tramp (MonoLLVMModule *lmodule)
        LLVMPositionBuilderAtEnd (builder, entry_bb);
 
        switch_ins = LLVMBuildSwitch (builder, LLVMGetParam (func, 0), fail_bb, 0);
-       for (i = 0; i < lmodule->max_method_idx + 1; ++i) {
-               m = (LLVMValueRef)g_hash_table_lookup (lmodule->idx_to_unbox_tramp, GINT_TO_POINTER (i));
+       for (i = 0; i < module->max_method_idx + 1; ++i) {
+               m = (LLVMValueRef)g_hash_table_lookup (module->idx_to_unbox_tramp, GINT_TO_POINTER (i));
                if (!m)
                        continue;
 
                LLVMAddCase (switch_ins, LLVMConstInt (LLVMInt32Type (), i, FALSE), bbs [i]);
        }
 
-       mark_as_used (lmodule, func);
+       mark_as_used (module, func);
 }
 
 /* Add a function to mark the beginning of LLVM code */
 static void
-emit_llvm_code_start (MonoLLVMModule *lmodule)
+emit_llvm_code_start (MonoLLVMModule *module)
 {
-       LLVMModuleRef module = lmodule->module;
+       LLVMModuleRef lmodule = module->lmodule;
        LLVMValueRef func;
        LLVMBasicBlockRef entry_bb;
        LLVMBuilderRef builder;
 
-       func = LLVMAddFunction (module, "llvm_code_start", LLVMFunctionType (LLVMVoidType (), NULL, 0, FALSE));
+       func = LLVMAddFunction (lmodule, "llvm_code_start", LLVMFunctionType (LLVMVoidType (), NULL, 0, FALSE));
        LLVMSetLinkage (func, LLVMInternalLinkage);
        LLVMAddFunctionAttr (func, LLVMNoUnwindAttribute);
-       lmodule->code_start = func;
+       module->code_start = func;
        entry_bb = LLVMAppendBasicBlock (func, "ENTRY");
        builder = LLVMCreateBuilder ();
        LLVMPositionBuilderAtEnd (builder, entry_bb);
        LLVMBuildRetVoid (builder);
 }
 
+static LLVMValueRef
+emit_init_icall_wrapper (MonoLLVMModule *module, const char *name, const char *icall_name, int subtype)
+{
+       LLVMModuleRef lmodule = module->lmodule;
+       LLVMValueRef func, indexes [2], got_entry_addr, args [16], callee;
+       LLVMBasicBlockRef entry_bb;
+       LLVMBuilderRef builder;
+       LLVMTypeRef sig;
+       MonoJumpInfo *ji;
+       int got_offset;
+
+       switch (subtype) {
+       case 0:
+               func = LLVMAddFunction (lmodule, name, LLVMFunctionType1 (LLVMVoidType (), LLVMInt32Type (), FALSE));
+               sig = LLVMFunctionType2 (LLVMVoidType (), IntPtrType (), LLVMInt32Type (), FALSE);
+               break;
+       case 1:
+               func = LLVMAddFunction (lmodule, name, LLVMFunctionType2 (LLVMVoidType (), LLVMInt32Type (), IntPtrType (), FALSE));
+               sig = LLVMFunctionType3 (LLVMVoidType (), IntPtrType (), LLVMInt32Type (), IntPtrType (), FALSE);
+               break;
+       case 2:
+               func = LLVMAddFunction (lmodule, name, LLVMFunctionType2 (LLVMVoidType (), LLVMInt32Type (), ObjRefType (), FALSE));
+               sig = LLVMFunctionType3 (LLVMVoidType (), IntPtrType (), LLVMInt32Type (), ObjRefType (), FALSE);
+               break;
+       default:
+               g_assert_not_reached ();
+       }
+       LLVMSetLinkage (func, LLVMInternalLinkage);
+       LLVMAddFunctionAttr (func, LLVMNoInlineAttribute);
+       mono_llvm_set_preserveall_cc (func);
+       entry_bb = LLVMAppendBasicBlock (func, "ENTRY");
+       builder = LLVMCreateBuilder ();
+       LLVMPositionBuilderAtEnd (builder, entry_bb);
+
+       /* get_aotconst */
+       ji = g_new0 (MonoJumpInfo, 1);
+       ji->type = MONO_PATCH_INFO_AOT_MODULE;
+       ji = mono_aot_patch_info_dup (ji);
+       got_offset = mono_aot_get_got_offset (ji);
+       module->max_got_offset = MAX (module->max_got_offset, got_offset);
+       indexes [0] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
+       indexes [1] = LLVMConstInt (LLVMInt32Type (), got_offset, FALSE);
+       got_entry_addr = LLVMBuildGEP (builder, module->got_var, indexes, 2, "");
+       args [0] = LLVMBuildPtrToInt (builder, LLVMBuildLoad (builder, got_entry_addr, ""), IntPtrType (), "");
+       args [1] = LLVMGetParam (func, 0);
+       if (subtype)
+               args [2] = LLVMGetParam (func, 1);
+
+       ji = g_new0 (MonoJumpInfo, 1);
+       ji->type = MONO_PATCH_INFO_INTERNAL_METHOD;
+       ji->data.name = icall_name;
+       ji = mono_aot_patch_info_dup (ji);
+       got_offset = mono_aot_get_got_offset (ji);
+       module->max_got_offset = MAX (module->max_got_offset, got_offset);
+       indexes [0] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
+       indexes [1] = LLVMConstInt (LLVMInt32Type (), got_offset, FALSE);
+       got_entry_addr = LLVMBuildGEP (builder, module->got_var, indexes, 2, "");
+       callee = LLVMBuildLoad (builder, got_entry_addr, "");
+       callee = LLVMBuildBitCast (builder, callee, LLVMPointerType (sig, 0), "");
+       LLVMBuildCall (builder, callee, args, LLVMCountParamTypes (sig), "");
+
+       // Set the inited flag
+       indexes [0] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
+       indexes [1] = LLVMGetParam (func, 0);
+       LLVMBuildStore (builder, LLVMConstInt (LLVMInt8Type (), 1, FALSE), LLVMBuildGEP (builder, module->inited_var, indexes, 2, ""));
+
+       LLVMBuildRetVoid (builder);
+
+       LLVMVerifyFunction(func, LLVMAbortProcessAction);
+       return func;
+}
+
+/*
+ * Emit wrappers around the C icalls used to initialize llvm methods, to
+ * make the calling code smaller and to enable usage of the llvm
+ * PreserveAll calling convention.
+ */
 static void
-emit_llvm_code_end (MonoLLVMModule *lmodule)
+emit_init_icall_wrappers (MonoLLVMModule *module)
 {
-       LLVMModuleRef module = lmodule->module;
+       module->init_method = emit_init_icall_wrapper (module, "init_method", "mono_aot_init_llvm_method", 0);
+       module->init_method_gshared_rgctx = emit_init_icall_wrapper (module, "init_method_gshared_rgctx", "mono_aot_init_gshared_method_rgctx", 1);
+       module->init_method_gshared_this = emit_init_icall_wrapper (module, "init_method_gshared_this", "mono_aot_init_gshared_method_this", 2);
+}
+
+static void
+emit_llvm_code_end (MonoLLVMModule *module)
+{
+       LLVMModuleRef lmodule = module->lmodule;
        LLVMValueRef func;
        LLVMBasicBlockRef entry_bb;
        LLVMBuilderRef builder;
 
-       func = LLVMAddFunction (module, "llvm_code_end", LLVMFunctionType (LLVMVoidType (), NULL, 0, FALSE));
+       func = LLVMAddFunction (lmodule, "llvm_code_end", LLVMFunctionType (LLVMVoidType (), NULL, 0, FALSE));
        LLVMSetLinkage (func, LLVMInternalLinkage);
        LLVMAddFunctionAttr (func, LLVMNoUnwindAttribute);
-       lmodule->code_end = func;
+       module->code_end = func;
        entry_bb = LLVMAppendBasicBlock (func, "ENTRY");
        builder = LLVMCreateBuilder ();
        LLVMPositionBuilderAtEnd (builder, entry_bb);
@@ -2371,11 +2573,8 @@ emit_llvm_code_end (MonoLLVMModule *lmodule)
 static void
 emit_div_check (EmitContext *ctx, LLVMBuilderRef builder, MonoBasicBlock *bb, MonoInst *ins, LLVMValueRef lhs, LLVMValueRef rhs)
 {
-       gboolean need_div_check = FALSE;
+       gboolean need_div_check = ctx->cfg->backend->need_div_check;
 
-#ifdef MONO_ARCH_NEED_DIV_CHECK
-       need_div_check = TRUE;
-#endif
        if (bb->region)
                /* LLVM doesn't know that these can throw an exception since they are not called through an intrinsic */
                need_div_check = TRUE;
@@ -2439,33 +2638,24 @@ static void
 emit_init_method (EmitContext *ctx)
 {
        LLVMValueRef indexes [16], args [16], callee;
-       LLVMValueRef inited_var, cmp;
+       LLVMValueRef inited_var, cmp, call;
        LLVMBasicBlockRef inited_bb, notinited_bb;
        LLVMBuilderRef builder = ctx->builder;
-       LLVMTypeRef sig;
        MonoCompile *cfg = ctx->cfg;
 
-       //
-       // FIXME: The call is not a trampoline, so it clobbers argument registers
-       // FIXME: Optimize
-       // FIXME: Do this only if the method has got slots in the end
-       // FIXME: Add an aot option for this
-       //
-
-       ctx->lmodule->max_inited_idx = MAX (ctx->lmodule->max_inited_idx, cfg->method_index);
-       ctx->lmodule->max_method_idx = MAX (ctx->lmodule->max_method_idx, cfg->method_index);
+       ctx->module->max_inited_idx = MAX (ctx->module->max_inited_idx, cfg->method_index);
 
        indexes [0] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
        indexes [1] = LLVMConstInt (LLVMInt32Type (), cfg->method_index, FALSE);
-       inited_var = LLVMBuildLoad (builder, LLVMBuildGEP (builder, ctx->lmodule->inited_var, indexes, 2, ""), "");
+       inited_var = LLVMBuildLoad (builder, LLVMBuildGEP (builder, ctx->module->inited_var, indexes, 2, ""), "is_inited");
 
        args [0] = inited_var;
        args [1] = LLVMConstInt (LLVMInt8Type (), 1, FALSE);
-       inited_var = LLVMBuildCall (ctx->builder, LLVMGetNamedFunction (ctx->module, "llvm.expect.i8"), args, 2, "");
+       inited_var = LLVMBuildCall (ctx->builder, LLVMGetNamedFunction (ctx->lmodule, "llvm.expect.i8"), args, 2, "");
 
        cmp = LLVMBuildICmp (builder, LLVMIntEQ, inited_var, LLVMConstInt (LLVMTypeOf (inited_var), 0, FALSE), "");
 
-       inited_bb = gen_bb (ctx, "INITED_BB");
+       inited_bb = ctx->inited_bb;
        notinited_bb = gen_bb (ctx, "NOTINITED_BB");
 
        LLVMBuildCondBr (ctx->builder, cmp, notinited_bb, inited_bb);
@@ -2473,33 +2663,31 @@ emit_init_method (EmitContext *ctx)
        builder = ctx->builder = create_builder (ctx);
        LLVMPositionBuilderAtEnd (ctx->builder, notinited_bb);
 
-       args [0] = convert (ctx, get_aotconst (ctx, MONO_PATCH_INFO_AOT_MODULE, NULL), IntPtrType ());
-       args [1] = LLVMConstInt (LLVMInt32Type (), cfg->method_index, 0);
-
        // FIXME: Cache
        if (ctx->rgctx_arg) {
-               sig = LLVMFunctionType3 (LLVMVoidType (), IntPtrType (), LLVMInt32Type (), IntPtrType (), FALSE);
-               callee = get_callee (ctx, sig, MONO_PATCH_INFO_INTERNAL_METHOD, "mono_aot_init_gshared_method_rgctx");
-               args [2] = convert (ctx, ctx->rgctx_arg, IntPtrType ());
-               LLVMBuildCall (builder, callee, args, 3, "");
+               args [0] = LLVMConstInt (LLVMInt32Type (), cfg->method_index, 0);
+               args [1] = convert (ctx, ctx->rgctx_arg, IntPtrType ());
+               callee = ctx->module->init_method_gshared_rgctx;
+               call = LLVMBuildCall (builder, callee, args, 2, "");
        } else if (cfg->gshared) {
-               sig = LLVMFunctionType3 (LLVMVoidType (), IntPtrType (), LLVMInt32Type (), ObjRefType (), FALSE);
-               callee = get_callee (ctx, sig, MONO_PATCH_INFO_INTERNAL_METHOD, "mono_aot_init_gshared_method_this");
-               args [2] = convert (ctx, ctx->this_arg, ObjRefType ());
-               LLVMBuildCall (builder, callee, args, 3, "");
+               args [0] = LLVMConstInt (LLVMInt32Type (), cfg->method_index, 0);
+               args [1] = convert (ctx, ctx->this_arg, ObjRefType ());
+               callee = ctx->module->init_method_gshared_this;
+               call = LLVMBuildCall (builder, callee, args, 2, "");
        } else {
-               sig = LLVMFunctionType2 (LLVMVoidType (), IntPtrType (), LLVMInt32Type (), FALSE);
-               callee = get_callee (ctx, sig, MONO_PATCH_INFO_INTERNAL_METHOD, "mono_aot_init_llvm_method");
-               LLVMBuildCall (builder, callee, args, 2, "");
+               args [0] = LLVMConstInt (LLVMInt32Type (), cfg->method_index, 0);
+               callee = ctx->module->init_method;
+               call = LLVMBuildCall (builder, callee, args, 1, "");
        }
 
-       // Set the inited flag
-       indexes [0] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
-       indexes [1] = LLVMConstInt (LLVMInt32Type (), cfg->method_index, FALSE);
-       LLVMBuildStore (builder, LLVMConstInt (LLVMInt8Type (), 1, FALSE), LLVMBuildGEP (builder, ctx->lmodule->inited_var, indexes, 2, ""));
+       /*
+        * This enables llvm to keep arguments in their original registers/
+        * scratch registers, since the call will not clobber them.
+        */
+       mono_llvm_set_call_preserveall_cc (call);
 
        LLVMBuildBr (builder, inited_bb);
-       ctx->entry_out_bb = inited_bb;
+       ctx->bblocks [cfg->bb_entry->block_num].end_bblock = inited_bb;
 
        builder = ctx->builder = create_builder (ctx);
        LLVMPositionBuilderAtEnd (ctx->builder, inited_bb);
@@ -2518,7 +2706,7 @@ emit_unbox_tramp (EmitContext *ctx, const char *method_name, LLVMTypeRef method_
        int i, nargs;
 
        tramp_name = g_strdup_printf ("ut_%s", method_name);
-       tramp = LLVMAddFunction (ctx->lmodule->module, tramp_name, method_type);
+       tramp = LLVMAddFunction (ctx->module->lmodule, tramp_name, method_type);
        LLVMSetLinkage (tramp, LLVMInternalLinkage);
        LLVMAddFunctionAttr (tramp, LLVMNoUnwindAttribute);
        if (!ctx->llvm_only && ctx->rgctx_arg_pindex != -1)
@@ -2549,7 +2737,7 @@ emit_unbox_tramp (EmitContext *ctx, const char *method_name, LLVMTypeRef method_
        else
                LLVMBuildRet (builder, call);
 
-       g_hash_table_insert (ctx->lmodule->idx_to_unbox_tramp, GINT_TO_POINTER (method_index), tramp);
+       g_hash_table_insert (ctx->module->idx_to_unbox_tramp, GINT_TO_POINTER (method_index), tramp);
 }
 
 /*
@@ -2565,6 +2753,7 @@ emit_entry_bb (EmitContext *ctx, LLVMBuilderRef builder)
        MonoMethodSignature *sig = ctx->sig;
        LLVMCallInfo *linfo = ctx->linfo;
        MonoBasicBlock *bb;
+       char **names;
 
        LLVMBuilderRef old_builder = ctx->builder;
        ctx->builder = builder;
@@ -2579,7 +2768,8 @@ emit_entry_bb (EmitContext *ctx, LLVMBuilderRef builder)
                MonoInst *var = cfg->varinfo [i];
                LLVMTypeRef vtype;
 
-               if (var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT) || mini_type_is_vtype (var->inst_vtype)) {
+               if (var->opcode == OP_GSHAREDVT_LOCAL || var->opcode == OP_GSHAREDVT_ARG_REGOFFSET) {
+               } else if (var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT) || (mini_type_is_vtype (var->inst_vtype) && !MONO_CLASS_IS_SIMD (ctx->cfg, var->klass))) {
                        vtype = type_to_llvm_type (ctx, var->inst_vtype);
                        CHECK_FAILURE (ctx);
                        /* Could be already created by an OP_VPHI */
@@ -2589,9 +2779,15 @@ emit_entry_bb (EmitContext *ctx, LLVMBuilderRef builder)
                }
        }
 
+       names = g_new (char *, sig->param_count);
+       mono_method_get_param_names (cfg->method, (const char **) names);
+
        for (i = 0; i < sig->param_count; ++i) {
                LLVMArgInfo *ainfo = &linfo->args [i + sig->hasthis];
                int reg = cfg->args [i + sig->hasthis]->dreg;
+               char *name;
+
+               pindex = ainfo->pindex;
 
                switch (ainfo->storage) {
                case LLVMArgVtypeInReg:
@@ -2599,9 +2795,10 @@ emit_entry_bb (EmitContext *ctx, LLVMBuilderRef builder)
                        LLVMValueRef args [8];
                        int j;
 
+                       pindex += ainfo->ndummy_fpargs;
+
                        /* The argument is received as a set of int/fp arguments, store them into the real argument */
                        memset (args, 0, sizeof (args));
-                       pindex = ctx->pindexes [i];
                        if (ainfo->storage == LLVMArgVtypeInReg) {
                                args [0] = LLVMGetParam (ctx->lmethod, pindex);
                                if (ainfo->pair_storage [1] != LLVMArgNone)
@@ -2609,22 +2806,22 @@ emit_entry_bb (EmitContext *ctx, LLVMBuilderRef builder)
                        } else {
                                g_assert (ainfo->nslots <= 8);
                                for (j = 0; j < ainfo->nslots; ++j)
-                                       args [j] = LLVMGetParam (ctx->lmethod, ctx->pindexes [i] + j);
+                                       args [j] = LLVMGetParam (ctx->lmethod, pindex + j);
                        }
-                       ctx->addresses [reg] = build_alloca (ctx, sig->params [i]);
+                       ctx->addresses [reg] = build_alloca (ctx, ainfo->type);
 
-                       emit_args_to_vtype (ctx, builder, sig->params [i], ctx->addresses [reg], ainfo, args);
+                       emit_args_to_vtype (ctx, builder, ainfo->type, ctx->addresses [reg], ainfo, args);
 
-                       if (ainfo->storage == LLVMArgVtypeInReg && MONO_CLASS_IS_SIMD (ctx->cfg, mono_class_from_mono_type (sig->params [i]))) {
+                       if (ainfo->storage == LLVMArgVtypeInReg && MONO_CLASS_IS_SIMD (ctx->cfg, mono_class_from_mono_type (ainfo->type))) {
                                /* Treat these as normal values */
                                ctx->values [reg] = LLVMBuildLoad (builder, ctx->addresses [reg], "");
                        }
                        break;
                }
                case LLVMArgVtypeByVal: {
-                       ctx->addresses [reg] = LLVMGetParam (ctx->lmethod, ctx->pindexes [i]);
+                       ctx->addresses [reg] = LLVMGetParam (ctx->lmethod, pindex);
 
-                       if (MONO_CLASS_IS_SIMD (ctx->cfg, mono_class_from_mono_type (sig->params [i]))) {
+                       if (MONO_CLASS_IS_SIMD (ctx->cfg, mono_class_from_mono_type (ainfo->type))) {
                                /* Treat these as normal values */
                                ctx->values [reg] = LLVMBuildLoad (builder, ctx->addresses [reg], "");
                        }
@@ -2632,13 +2829,22 @@ emit_entry_bb (EmitContext *ctx, LLVMBuilderRef builder)
                }
                case LLVMArgVtypeByRef: {
                        /* The argument is passed by ref */
-                       ctx->addresses [reg] = LLVMGetParam (ctx->lmethod, ctx->pindexes [i]);
+                       ctx->addresses [reg] = LLVMGetParam (ctx->lmethod, pindex);
+                       break;
+               }
+               case LLVMArgScalarByRef: {
+                       if (names [i])
+                               name = g_strdup_printf ("arg_%s", names [i]);
+                       else
+                               name = g_strdup_printf ("arg_%d", i);
+                       ctx->values [reg] = LLVMBuildLoad (builder, LLVMGetParam (ctx->lmethod, pindex), name);
+                       g_free (name);
                        break;
                }
                case LLVMArgAsIArgs: {
-                       LLVMValueRef arg = LLVMGetParam (ctx->lmethod, ctx->pindexes [i]);
+                       LLVMValueRef arg = LLVMGetParam (ctx->lmethod, pindex);
 
-                       ctx->addresses [reg] = build_alloca (ctx, sig->params [i]);
+                       ctx->addresses [reg] = build_alloca (ctx, ainfo->type);
 
                        /* The argument is received as an array of ints, store it into the real argument */
                        LLVMBuildStore (ctx->builder, arg, convert (ctx, ctx->addresses [reg], LLVMPointerType (LLVMTypeOf (arg), 0)));
@@ -2647,11 +2853,42 @@ emit_entry_bb (EmitContext *ctx, LLVMBuilderRef builder)
                case LLVMArgVtypeAsScalar:
                        g_assert_not_reached ();
                        break;
+               case LLVMArgGsharedvtFixed: {
+                       /* These are non-gsharedvt arguments passed by ref, the rest of the IR treats them as scalars */
+                       LLVMValueRef arg = LLVMGetParam (ctx->lmethod, pindex);
+
+                       if (names [i])
+                               name = g_strdup_printf ("arg_%s", names [i]);
+                       else
+                               name = g_strdup_printf ("arg_%d", i);
+
+                       ctx->values [reg] = LLVMBuildLoad (builder, convert (ctx, arg, LLVMPointerType (type_to_llvm_type (ctx, ainfo->type), 0)), name);
+                       break;
+               }
+               case LLVMArgGsharedvtFixedVtype: {
+                       LLVMValueRef arg = LLVMGetParam (ctx->lmethod, pindex);
+
+                       if (names [i])
+                               name = g_strdup_printf ("vtype_arg_%s", names [i]);
+                       else
+                               name = g_strdup_printf ("vtype_arg_%d", i);
+
+                       /* Non-gsharedvt vtype argument passed by ref, the rest of the IR treats it as a vtype */
+                       g_assert (ctx->addresses [reg]);
+                       LLVMSetValueName (ctx->addresses [reg], name);
+                       LLVMBuildStore (builder, LLVMBuildLoad (builder, convert (ctx, arg, LLVMPointerType (type_to_llvm_type (ctx, ainfo->type), 0)), ""), ctx->addresses [reg]);
+                       break;
+               }
+               case LLVMArgGsharedvtVariable:
+                       /* The IR treats these as variables with addresses */
+                       ctx->addresses [reg] = LLVMGetParam (ctx->lmethod, pindex);
+                       break;
                default:
-                       ctx->values [reg] = convert_full (ctx, ctx->values [reg], llvm_type_to_stack_type (cfg, type_to_llvm_type (ctx, sig->params [i])), type_is_unsigned (ctx, sig->params [i]));
+                       ctx->values [reg] = convert_full (ctx, ctx->values [reg], llvm_type_to_stack_type (cfg, type_to_llvm_type (ctx, ainfo->type)), type_is_unsigned (ctx, ainfo->type));
                        break;
                }
        }
+       g_free (names);
 
        if (cfg->vret_addr)
                emit_volatile_store (ctx, cfg->vret_addr->dreg);
@@ -2693,12 +2930,18 @@ emit_entry_bb (EmitContext *ctx, LLVMBuilderRef builder)
 
        /* Initialize the method if needed */
        if (cfg->compile_aot && ctx->llvm_only) {
-               emit_init_method (ctx);
-               builder = ctx->builder;
+               /* Emit a location for the initialization code */
+               ctx->init_bb = gen_bb (ctx, "INIT_BB");
+               ctx->inited_bb = gen_bb (ctx, "INITED_BB");
+
+               LLVMBuildBr (ctx->builder, ctx->init_bb);
+               builder = ctx->builder = create_builder (ctx);
+               LLVMPositionBuilderAtEnd (ctx->builder, ctx->inited_bb);
+               ctx->bblocks [cfg->bb_entry->block_num].end_bblock = ctx->inited_bb;
        }
 
        /* Compute nesting between clauses */
-       ctx->nested_in = mono_mempool_alloc0 (cfg->mempool, sizeof (GSList*) * cfg->header->num_clauses);
+       ctx->nested_in = (GSList**)mono_mempool_alloc0 (cfg->mempool, sizeof (GSList*) * cfg->header->num_clauses);
        for (i = 0; i < cfg->header->num_clauses; ++i) {
                for (j = 0; j < cfg->header->num_clauses; ++j) {
                        MonoExceptionClause *clause1 = &cfg->header->clauses [i];
@@ -2758,7 +3001,7 @@ static void
 process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref, MonoInst *ins)
 {
        MonoCompile *cfg = ctx->cfg;
-       LLVMModuleRef module = ctx->module;
+       LLVMModuleRef lmodule = ctx->lmodule;
        LLVMValueRef *values = ctx->values;
        LLVMValueRef *addresses = ctx->addresses;
        MonoCallInst *call = (MonoCallInst*)ins;
@@ -2771,26 +3014,28 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
        gboolean vretaddr;
        LLVMTypeRef llvm_sig;
        gpointer target;
-       gboolean is_virtual, calli;
+       gboolean is_virtual, calli, preserveall;
        LLVMBuilderRef builder = *builder_ref;
-       LLVMSigInfo sinfo;
 
        if (call->signature->call_convention != MONO_CALL_DEFAULT)
                LLVM_FAILURE (ctx, "non-default callconv");
 
        cinfo = call->cinfo;
+       g_assert (cinfo);
        if (call->rgctx_arg_reg)
                cinfo->rgctx_arg = TRUE;
        if (call->imt_arg_reg)
                cinfo->imt_arg = TRUE;
 
-       vretaddr = cinfo && (cinfo->ret.storage == LLVMArgVtypeRetAddr || cinfo->ret.storage == LLVMArgVtypeByRef);
+       vretaddr = (cinfo->ret.storage == LLVMArgVtypeRetAddr || cinfo->ret.storage == LLVMArgVtypeByRef || cinfo->ret.storage == LLVMArgScalarRetAddr || cinfo->ret.storage == LLVMArgGsharedvtFixed || cinfo->ret.storage == LLVMArgGsharedvtVariable || cinfo->ret.storage == LLVMArgGsharedvtFixedVtype);
 
-       llvm_sig = sig_to_llvm_sig_full (ctx, sig, cinfo, &sinfo);
+       llvm_sig = sig_to_llvm_sig_full (ctx, sig, cinfo);
        CHECK_FAILURE (ctx);
 
        is_virtual = (ins->opcode == OP_VOIDCALL_MEMBASE || ins->opcode == OP_CALL_MEMBASE || ins->opcode == OP_VCALL_MEMBASE || ins->opcode == OP_LCALL_MEMBASE || ins->opcode == OP_FCALL_MEMBASE || ins->opcode == OP_RCALL_MEMBASE);
        calli = !call->fptr_is_patch && (ins->opcode == OP_VOIDCALL_REG || ins->opcode == OP_CALL_REG || ins->opcode == OP_VCALL_REG || ins->opcode == OP_LCALL_REG || ins->opcode == OP_FCALL_REG || ins->opcode == OP_RCALL_REG);
+       /* Unused */
+       preserveall = FALSE;
 
        /* FIXME: Avoid creating duplicate methods */
 
@@ -2802,17 +3047,28 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
                                callee = get_callee (ctx, llvm_sig, MONO_PATCH_INFO_METHOD, call->method);
                                if (!callee)
                                        LLVM_FAILURE (ctx, "can't encode patch");
+
+                               if (cfg->llvm_only && call->method->klass->image->assembly == ctx->module->assembly) {
+                                       /*
+                                        * Collect instructions representing the callee into a hash so they can be replaced
+                                        * by the llvm method for the callee if the callee turns out to be direct
+                                        * callable. Currently this only requires it to not fail llvm compilation.
+                                        */
+                                       GSList *l = (GSList*)g_hash_table_lookup (ctx->method_to_callers, call->method);
+                                       l = g_slist_prepend (l, callee);
+                                       g_hash_table_insert (ctx->method_to_callers, call->method, l);
+                               }
                        } else {
-                               callee = LLVMAddFunction (module, "", llvm_sig);
+                               callee = LLVMAddFunction (lmodule, "", llvm_sig);
  
                                target =
                                        mono_create_jit_trampoline_in_domain (mono_domain_get (),
                                                                                                                  call->method);
-                               LLVMAddGlobalMapping (ctx->lmodule->ee, callee, target);
+                               LLVMAddGlobalMapping (ctx->module->ee, callee, target);
                        }
                }
 
-               if (call->method && strstr (call->method->klass->name, "AsyncVoidMethodBuilder"))
+               if (!cfg->llvm_only && call->method && strstr (call->method->klass->name, "AsyncVoidMethodBuilder"))
                        /* LLVM miscompiles async methods */
                        LLVM_FAILURE (ctx, "#13734");
        } else if (calli) {
@@ -2834,9 +3090,9 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
                                if (!callee)
                                        LLVM_FAILURE (ctx, "can't encode patch");
                        } else {
-                               callee = LLVMAddFunction (module, "", llvm_sig);
+                               callee = LLVMAddFunction (lmodule, "", llvm_sig);
                                target = (gpointer)mono_icall_get_wrapper (info);
-                               LLVMAddGlobalMapping (ctx->lmodule->ee, callee, target);
+                               LLVMAddGlobalMapping (ctx->module->ee, callee, target);
                        }
                } else {
                        if (cfg->compile_aot) {
@@ -2852,7 +3108,7 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
                                if (!callee)
                                        LLVM_FAILURE (ctx, "aot");
                        } else {
-                               callee = LLVMAddFunction (module, "", llvm_sig);
+                               callee = LLVMAddFunction (lmodule, "", llvm_sig);
                                target = NULL;
                                if (cfg->abs_patches) {
                                        MonoJumpInfo *abs_ji = (MonoJumpInfo*)g_hash_table_lookup (cfg->abs_patches, call->fptr);
@@ -2867,11 +3123,11 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
                                                        LLVM_FAILURE (ctx, "trampoline with own cconv");
 #endif
                                                target = mono_resolve_patch_target (cfg->method, cfg->domain, NULL, abs_ji, FALSE);
-                                               LLVMAddGlobalMapping (ctx->lmodule->ee, callee, target);
+                                               LLVMAddGlobalMapping (ctx->module->ee, callee, target);
                                        }
                                }
                                if (!target)
-                                       LLVMAddGlobalMapping (ctx->lmodule->ee, callee, (gpointer)call->fptr);
+                                       LLVMAddGlobalMapping (ctx->module->ee, callee, (gpointer)call->fptr);
                        }
                }
        }
@@ -2902,7 +3158,7 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
 
        if (call->rgctx_arg_reg) {
                g_assert (values [call->rgctx_arg_reg]);
-               g_assert (sinfo.rgctx_arg_pindex < nargs);
+               g_assert (cinfo->rgctx_arg_pindex < nargs);
                /*
                 * On ARM, the imt/rgctx argument is passed in a caller save register, but some of our trampolines etc. clobber it, leading to
                 * problems is LLVM moves the arg assignment earlier. To work around this, save the argument into a stack slot and load
@@ -2910,49 +3166,57 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
                 */
 #ifdef TARGET_ARM
                if (!ctx->imt_rgctx_loc)
-                       ctx->imt_rgctx_loc = build_alloca_llvm_type (ctx, ctx->lmodule->ptr_type, sizeof (gpointer));
-               LLVMBuildStore (builder, convert (ctx, ctx->values [call->rgctx_arg_reg], ctx->lmodule->ptr_type), ctx->imt_rgctx_loc);
-               args [sinfo.rgctx_arg_pindex] = mono_llvm_build_load (builder, ctx->imt_rgctx_loc, "", TRUE, LLVM_BARRIER_NONE);
+                       ctx->imt_rgctx_loc = build_alloca_llvm_type (ctx, ctx->module->ptr_type, sizeof (gpointer));
+               LLVMBuildStore (builder, convert (ctx, ctx->values [call->rgctx_arg_reg], ctx->module->ptr_type), ctx->imt_rgctx_loc);
+               args [cinfo->rgctx_arg_pindex] = mono_llvm_build_load (builder, ctx->imt_rgctx_loc, "", TRUE, LLVM_BARRIER_NONE);
 #else
-               args [sinfo.rgctx_arg_pindex] = convert (ctx, values [call->rgctx_arg_reg], ctx->lmodule->ptr_type);
+               args [cinfo->rgctx_arg_pindex] = convert (ctx, values [call->rgctx_arg_reg], ctx->module->ptr_type);
 #endif
        }
        if (call->imt_arg_reg) {
                g_assert (!ctx->llvm_only);
                g_assert (values [call->imt_arg_reg]);
-               g_assert (sinfo.imt_arg_pindex < nargs);
+               g_assert (cinfo->imt_arg_pindex < nargs);
 #ifdef TARGET_ARM
                if (!ctx->imt_rgctx_loc)
-                       ctx->imt_rgctx_loc = build_alloca_llvm_type (ctx, ctx->lmodule->ptr_type, sizeof (gpointer));
-               LLVMBuildStore (builder, convert (ctx, ctx->values [call->imt_arg_reg], ctx->lmodule->ptr_type), ctx->imt_rgctx_loc);
-               args [sinfo.imt_arg_pindex] = mono_llvm_build_load (builder, ctx->imt_rgctx_loc, "", TRUE, LLVM_BARRIER_NONE);
+                       ctx->imt_rgctx_loc = build_alloca_llvm_type (ctx, ctx->module->ptr_type, sizeof (gpointer));
+               LLVMBuildStore (builder, convert (ctx, ctx->values [call->imt_arg_reg], ctx->module->ptr_type), ctx->imt_rgctx_loc);
+               args [cinfo->imt_arg_pindex] = mono_llvm_build_load (builder, ctx->imt_rgctx_loc, "", TRUE, LLVM_BARRIER_NONE);
 #else
-               args [sinfo.imt_arg_pindex] = convert (ctx, values [call->imt_arg_reg], ctx->lmodule->ptr_type);
+               args [cinfo->imt_arg_pindex] = convert (ctx, values [call->imt_arg_reg], ctx->module->ptr_type);
 #endif
        }
-       if (vretaddr) {
-               if (!addresses [call->inst.dreg])
-                       addresses [call->inst.dreg] = build_alloca (ctx, sig->ret);
-               g_assert (sinfo.vret_arg_pindex < nargs);
-               if (cinfo && cinfo->ret.storage == LLVMArgVtypeByRef)
-                       args [sinfo.vret_arg_pindex] = addresses [call->inst.dreg];
-               else
-                       args [sinfo.vret_arg_pindex] = LLVMBuildPtrToInt (builder, addresses [call->inst.dreg], IntPtrType (), "");
+       switch (cinfo->ret.storage) {
+       case LLVMArgGsharedvtVariable: {
+               MonoInst *var = get_vreg_to_inst (cfg, call->inst.dreg);
+
+               if (var && var->opcode == OP_GSHAREDVT_LOCAL) {
+                       args [cinfo->vret_arg_pindex] = convert (ctx, emit_gsharedvt_ldaddr (ctx, var->dreg), IntPtrType ());
+               } else {
+                       g_assert (addresses [call->inst.dreg]);
+                       args [cinfo->vret_arg_pindex] = addresses [call->inst.dreg];
+               }
+               break;
+       }
+       default:
+               if (vretaddr) {
+                       if (!addresses [call->inst.dreg])
+                               addresses [call->inst.dreg] = build_alloca (ctx, sig->ret);
+                       g_assert (cinfo->vret_arg_pindex < nargs);
+                       if (cinfo->ret.storage == LLVMArgVtypeByRef)
+                               args [cinfo->vret_arg_pindex] = addresses [call->inst.dreg];
+                       else
+                               args [cinfo->vret_arg_pindex] = LLVMBuildPtrToInt (builder, addresses [call->inst.dreg], IntPtrType (), "");
+               }
+               break;
        }
 
        for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
                guint32 regpair;
                int reg, pindex;
-               LLVMArgInfo *ainfo = call->cinfo ? &call->cinfo->args [i] : NULL;
+               LLVMArgInfo *ainfo = &call->cinfo->args [i];
 
-               if (sig->hasthis) {
-                       if (i == 0)
-                               pindex = sinfo.this_arg_pindex;
-                       else
-                               pindex = sinfo.pindexes [i - 1];
-               } else {
-                       pindex = sinfo.pindexes [i];
-               }
+               pindex = ainfo->pindex;
 
                regpair = (guint32)(gssize)(l->data);
                reg = regpair & 0xffffff;
@@ -2961,9 +3225,14 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
                case LLVMArgVtypeInReg:
                case LLVMArgAsFpArgs: {
                        guint32 nargs;
+                       int j;
+
+                       for (j = 0; j < ainfo->ndummy_fpargs; ++j)
+                               args [pindex + j] = LLVMConstNull (LLVMDoubleType ());
+                       pindex += ainfo->ndummy_fpargs;
 
                        g_assert (addresses [reg]);
-                       emit_vtype_to_args (ctx, builder, sig->params [i - sig->hasthis], addresses [reg], ainfo, args + pindex, &nargs);
+                       emit_vtype_to_args (ctx, builder, ainfo->type, addresses [reg], ainfo, args + pindex, &nargs);
                        pindex += nargs;
 
                        // FIXME: alignment
@@ -2975,9 +3244,11 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
                        args [pindex] = addresses [reg];
                        break;
                case LLVMArgVtypeByRef:
+               case LLVMArgScalarByRef: {
                        g_assert (addresses [reg]);
-                       args [pindex] = addresses [reg];
+                       args [pindex] = convert (ctx, addresses [reg], LLVMPointerType (type_to_llvm_arg_type (ctx, ainfo->type), 0));
                        break;
+               }
                case LLVMArgAsIArgs:
                        g_assert (addresses [reg]);
                        args [pindex] = LLVMBuildLoad (ctx->builder, convert (ctx, addresses [reg], LLVMPointerType (LLVMArrayType (IntPtrType (), ainfo->nslots), 0)), "");
@@ -2985,12 +3256,21 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
                case LLVMArgVtypeAsScalar:
                        g_assert_not_reached ();
                        break;
+               case LLVMArgGsharedvtFixed:
+               case LLVMArgGsharedvtFixedVtype:
+                       g_assert (addresses [reg]);
+                       args [pindex] = addresses [reg];
+                       break;
+               case LLVMArgGsharedvtVariable:
+                       g_assert (addresses [reg]);
+                       args [pindex] = convert (ctx, addresses [reg], LLVMPointerType (IntPtrType (), 0));
+                       break;
                default:
                        g_assert (args [pindex]);
                        if (i == 0 && sig->hasthis)
                                args [pindex] = convert (ctx, args [pindex], ThisType ());
                        else
-                               args [pindex] = convert (ctx, args [pindex], type_to_llvm_arg_type (ctx, sig->params [i - sig->hasthis]));
+                               args [pindex] = convert (ctx, args [pindex], type_to_llvm_arg_type (ctx, ainfo->type));
                        break;
                }
                g_assert (pindex <= nargs);
@@ -3016,82 +3296,81 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
        g_assert (!(call->rgctx_arg_reg && call->imt_arg_reg));
        if (!sig->pinvoke && !cfg->llvm_only)
                LLVMSetInstructionCallConv (lcall, LLVMMono1CallConv);
+       if (preserveall)
+               mono_llvm_set_call_preserveall_cc (lcall);
 
-       if (cinfo && cinfo->ret.storage == LLVMArgVtypeByRef)
-               LLVMAddInstrAttribute (lcall, 1 + sinfo.vret_arg_pindex, LLVMStructRetAttribute);
+       if (cinfo->ret.storage == LLVMArgVtypeByRef)
+               LLVMAddInstrAttribute (lcall, 1 + cinfo->vret_arg_pindex, LLVMStructRetAttribute);
        if (!ctx->llvm_only && call->rgctx_arg_reg)
-               LLVMAddInstrAttribute (lcall, 1 + sinfo.rgctx_arg_pindex, LLVMInRegAttribute);
+               LLVMAddInstrAttribute (lcall, 1 + cinfo->rgctx_arg_pindex, LLVMInRegAttribute);
        if (call->imt_arg_reg)
-               LLVMAddInstrAttribute (lcall, 1 + sinfo.imt_arg_pindex, LLVMInRegAttribute);
+               LLVMAddInstrAttribute (lcall, 1 + cinfo->imt_arg_pindex, LLVMInRegAttribute);
 
        /* Add byval attributes if needed */
        for (i = 0; i < sig->param_count; ++i) {
-               LLVMArgInfo *ainfo = call->cinfo ? &call->cinfo->args [i + sig->hasthis] : NULL;
+               LLVMArgInfo *ainfo = &call->cinfo->args [i + sig->hasthis];
 
-               if (ainfo && ainfo->storage == LLVMArgVtypeByVal) {
-                       LLVMAddInstrAttribute (lcall, 1 + sinfo.pindexes [i], LLVMByValAttribute);
-               }
+               if (ainfo && ainfo->storage == LLVMArgVtypeByVal)
+                       LLVMAddInstrAttribute (lcall, 1 + ainfo->pindex, LLVMByValAttribute);
        }
 
        /*
         * Convert the result
         */
-       if (cinfo) {
-               switch (cinfo->ret.storage) {
-               case LLVMArgVtypeInReg: {
-                       LLVMValueRef regs [2];
+       switch (cinfo->ret.storage) {
+       case LLVMArgVtypeInReg: {
+               LLVMValueRef regs [2];
 
-                       if (LLVMTypeOf (lcall) == LLVMVoidType ())
-                               /* Empty struct */
-                               break;
+               if (LLVMTypeOf (lcall) == LLVMVoidType ())
+                       /* Empty struct */
+                       break;
 
-                       if (!addresses [ins->dreg])
-                               addresses [ins->dreg] = build_alloca (ctx, sig->ret);
+               if (!addresses [ins->dreg])
+                       addresses [ins->dreg] = build_alloca (ctx, sig->ret);
 
-                       regs [0] = LLVMBuildExtractValue (builder, lcall, 0, "");
-                       if (cinfo->ret.pair_storage [1] != LLVMArgNone)
-                               regs [1] = LLVMBuildExtractValue (builder, lcall, 1, "");
-                       emit_args_to_vtype (ctx, builder, sig->ret, addresses [ins->dreg], &cinfo->ret, regs);
-                       break;
-               }
-               case LLVMArgVtypeByVal:
-                       if (!addresses [call->inst.dreg])
-                               addresses [call->inst.dreg] = build_alloca (ctx, sig->ret);
-                       LLVMBuildStore (builder, lcall, addresses [call->inst.dreg]);
-                       break;
-               case LLVMArgFpStruct:
-                       if (!addresses [call->inst.dreg])
-                               addresses [call->inst.dreg] = build_alloca (ctx, sig->ret);
-                       LLVMBuildStore (builder, lcall, convert_full (ctx, addresses [call->inst.dreg], LLVMPointerType (LLVMTypeOf (lcall), 0), FALSE));
-                       break;
-               case LLVMArgVtypeAsScalar:
-                       if (!addresses [call->inst.dreg])
-                               addresses [call->inst.dreg] = build_alloca (ctx, sig->ret);
-                       LLVMBuildStore (builder, lcall, convert_full (ctx, addresses [call->inst.dreg], LLVMPointerType (LLVMTypeOf (lcall), 0), FALSE));
-                       break;
-               default:
-                       if (sig->ret->type != MONO_TYPE_VOID && !vretaddr)
-                               /* If the method returns an unsigned value, need to zext it */
-                               values [ins->dreg] = convert_full (ctx, lcall, llvm_type_to_stack_type (cfg, type_to_llvm_type (ctx, sig->ret)), type_is_unsigned (ctx, sig->ret));
-                       break;
-               }
-       } else {
-               if (sig->ret->type != MONO_TYPE_VOID && !vretaddr)
-                       /* If the method returns an unsigned value, need to zext it */
-                       values [ins->dreg] = convert_full (ctx, lcall, llvm_type_to_stack_type (cfg, type_to_llvm_type (ctx, sig->ret)), type_is_unsigned (ctx, sig->ret));
+               regs [0] = LLVMBuildExtractValue (builder, lcall, 0, "");
+               if (cinfo->ret.pair_storage [1] != LLVMArgNone)
+                       regs [1] = LLVMBuildExtractValue (builder, lcall, 1, "");
+               emit_args_to_vtype (ctx, builder, sig->ret, addresses [ins->dreg], &cinfo->ret, regs);
+               break;
        }
-
-       if (vretaddr) {
+       case LLVMArgVtypeByVal:
+               if (!addresses [call->inst.dreg])
+                       addresses [call->inst.dreg] = build_alloca (ctx, sig->ret);
+               LLVMBuildStore (builder, lcall, addresses [call->inst.dreg]);
+               break;
+       case LLVMArgFpStruct:
+               if (!addresses [call->inst.dreg])
+                       addresses [call->inst.dreg] = build_alloca (ctx, sig->ret);
+               LLVMBuildStore (builder, lcall, convert_full (ctx, addresses [call->inst.dreg], LLVMPointerType (LLVMTypeOf (lcall), 0), FALSE));
+               break;
+       case LLVMArgVtypeAsScalar:
                if (!addresses [call->inst.dreg])
                        addresses [call->inst.dreg] = build_alloca (ctx, sig->ret);
-               g_assert (sinfo.vret_arg_pindex < nargs);
-               args [sinfo.vret_arg_pindex] = LLVMBuildPtrToInt (builder, addresses [call->inst.dreg], IntPtrType (), "");
+               LLVMBuildStore (builder, lcall, convert_full (ctx, addresses [call->inst.dreg], LLVMPointerType (LLVMTypeOf (lcall), 0), FALSE));
+               break;
+       case LLVMArgVtypeRetAddr:
+       case LLVMArgVtypeByRef:
+               break;
+       case LLVMArgScalarRetAddr:
+               /* Normal scalar returned using a vtype return argument */
+               values [ins->dreg] = LLVMBuildLoad (builder, convert_full (ctx, addresses [call->inst.dreg], LLVMPointerType (type_to_llvm_type (ctx, sig->ret), 0), FALSE), "");
+               break;
+       case LLVMArgGsharedvtVariable:
+               break;
+       case LLVMArgGsharedvtFixed:
+       case LLVMArgGsharedvtFixedVtype:
+               values [ins->dreg] = LLVMBuildLoad (builder, convert_full (ctx, addresses [call->inst.dreg], LLVMPointerType (type_to_llvm_type (ctx, sig->ret), 0), FALSE), "");
+               break;
+       default:
+               if (sig->ret->type != MONO_TYPE_VOID)
+                       /* If the method returns an unsigned value, need to zext it */
+                       values [ins->dreg] = convert_full (ctx, lcall, llvm_type_to_stack_type (cfg, type_to_llvm_type (ctx, sig->ret)), type_is_unsigned (ctx, sig->ret));
+               break;
        }
 
        *builder_ref = ctx->builder;
 
-       g_free (sinfo.pindexes);
-       
        return;
  FAILURE:
        return;
@@ -3101,7 +3380,7 @@ static void
 emit_llvmonly_throw (EmitContext *ctx, MonoBasicBlock *bb, gboolean rethrow, LLVMValueRef exc)
 {
        const char *icall_name = rethrow ? "mono_llvm_rethrow_exception" : "mono_llvm_throw_exception";
-       LLVMValueRef callee = rethrow ? ctx->lmodule->rethrow : ctx->lmodule->throw_icall;
+       LLVMValueRef callee = rethrow ? ctx->module->rethrow : ctx->module->throw_icall;
 
        LLVMTypeRef exc_type = type_to_llvm_type (ctx, &mono_get_exception_class ()->byval_arg);
 
@@ -3111,14 +3390,14 @@ emit_llvmonly_throw (EmitContext *ctx, MonoBasicBlock *bb, gboolean rethrow, LLV
                if (ctx->cfg->compile_aot) {
                        callee = get_callee (ctx, fun_sig, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name);
                } else {
-                       callee = LLVMAddFunction (ctx->module, icall_name, fun_sig);
-                       LLVMAddGlobalMapping (ctx->lmodule->ee, callee, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name));
+                       callee = LLVMAddFunction (ctx->lmodule, icall_name, fun_sig);
+                       LLVMAddGlobalMapping (ctx->module->ee, callee, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name));
                        mono_memory_barrier ();
 
                        if (rethrow)
-                               ctx->lmodule->rethrow = callee;
+                               ctx->module->rethrow = callee;
                        else
-                               ctx->lmodule->throw_icall = callee;
+                               ctx->module->throw_icall = callee;
                }
        }
 
@@ -3139,7 +3418,7 @@ emit_throw (EmitContext *ctx, MonoBasicBlock *bb, gboolean rethrow, LLVMValueRef
        LLVMValueRef callee, arg;
        const char *icall_name;
                                
-       callee = rethrow ? ctx->lmodule->rethrow : ctx->lmodule->throw_icall;
+       callee = rethrow ? ctx->module->rethrow : ctx->module->throw_icall;
        icall_name = rethrow ? "mono_arch_rethrow_exception" : "mono_arch_throw_exception";
 
        if (!callee) {
@@ -3149,24 +3428,24 @@ emit_throw (EmitContext *ctx, MonoBasicBlock *bb, gboolean rethrow, LLVMValueRef
                if (ctx->cfg->compile_aot) {
                        callee = get_callee (ctx, sig_to_llvm_sig (ctx, throw_sig), MONO_PATCH_INFO_INTERNAL_METHOD, icall_name);
                } else {
-                       callee = LLVMAddFunction (ctx->module, icall_name, sig_to_llvm_sig (ctx, throw_sig));
+                       callee = LLVMAddFunction (ctx->lmodule, icall_name, sig_to_llvm_sig (ctx, throw_sig));
 
 #ifdef TARGET_X86
                        /* 
                         * LLVM doesn't push the exception argument, so we need a different
                         * trampoline.
                         */
-                       LLVMAddGlobalMapping (ctx->lmodule->ee, callee, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, rethrow ? "llvm_rethrow_exception_trampoline" : "llvm_throw_exception_trampoline"));
+                       LLVMAddGlobalMapping (ctx->module->ee, callee, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, rethrow ? "llvm_rethrow_exception_trampoline" : "llvm_throw_exception_trampoline"));
 #else
-                       LLVMAddGlobalMapping (ctx->lmodule->ee, callee, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name));
+                       LLVMAddGlobalMapping (ctx->module->ee, callee, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name));
 #endif
                }
 
                mono_memory_barrier ();
                if (rethrow)
-                       ctx->lmodule->rethrow = callee;
+                       ctx->module->rethrow = callee;
                else
-                       ctx->lmodule->throw_icall = callee;
+                       ctx->module->throw_icall = callee;
        }
        arg = convert (ctx, exc, type_to_llvm_type (ctx, &mono_get_object_class ()->byval_arg));
        emit_call (ctx, bb, &ctx->builder, callee, &arg, 1);
@@ -3176,7 +3455,7 @@ static void
 emit_resume_eh (EmitContext *ctx, MonoBasicBlock *bb)
 {
        const char *icall_name = "mono_llvm_resume_exception";
-       LLVMValueRef callee = ctx->lmodule->resume_eh;
+       LLVMValueRef callee = ctx->module->resume_eh;
 
        LLVMTypeRef fun_sig = LLVMFunctionType0 (LLVMVoidType (), FALSE);
 
@@ -3184,11 +3463,11 @@ emit_resume_eh (EmitContext *ctx, MonoBasicBlock *bb)
                if (ctx->cfg->compile_aot) {
                        callee = get_callee (ctx, fun_sig, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name);
                } else {
-                       callee = LLVMAddFunction (ctx->module, icall_name, fun_sig);
-                       LLVMAddGlobalMapping (ctx->lmodule->ee, callee, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name));
+                       callee = LLVMAddFunction (ctx->lmodule, icall_name, fun_sig);
+                       LLVMAddGlobalMapping (ctx->module->ee, callee, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name));
                        mono_memory_barrier ();
 
-                       ctx->lmodule->resume_eh = callee;
+                       ctx->module->resume_eh = callee;
                }
        }
 
@@ -3212,7 +3491,7 @@ mono_llvm_emit_clear_exception_call (EmitContext *ctx, LLVMBuilderRef builder)
                        callee = get_callee (ctx, call_sig, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name);
                } else {
                        // FIXME: This is broken.
-                       callee = LLVMAddFunction (ctx->module, icall_name, call_sig);
+                       callee = LLVMAddFunction (ctx->lmodule, icall_name, call_sig);
                }
        }
 
@@ -3234,7 +3513,7 @@ mono_llvm_emit_load_exception_call (EmitContext *ctx, LLVMBuilderRef builder)
                        callee = get_callee (ctx, call_sig, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name);
                } else {
                        // FIXME: This is broken.
-                       callee = LLVMAddFunction (ctx->module, icall_name, call_sig);
+                       callee = LLVMAddFunction (ctx->lmodule, icall_name, call_sig);
                }
        }
 
@@ -3258,7 +3537,7 @@ mono_llvm_emit_match_exception_call (EmitContext *ctx, LLVMBuilderRef builder, g
        args [2] = LLVMConstInt (LLVMInt32Type (), region_end, 0);
 
        LLVMTypeRef match_sig = LLVMFunctionType3 (LLVMInt32Type (), IntPtrType (), LLVMInt32Type (), LLVMInt32Type (), FALSE);
-       LLVMValueRef callee = ctx->lmodule->match_exc;
+       LLVMValueRef callee = ctx->module->match_exc;
 
        if (!callee) {
                if (ctx->cfg->compile_aot) {
@@ -3266,9 +3545,9 @@ mono_llvm_emit_match_exception_call (EmitContext *ctx, LLVMBuilderRef builder, g
                        // get_callee expects ctx->builder to be the emitting builder
                        callee = get_callee (ctx, match_sig, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name);
                } else {
-                       callee = ctx->lmodule->match_exc = LLVMAddFunction (ctx->module, icall_name, match_sig);
-                       LLVMAddGlobalMapping (ctx->lmodule->ee, ctx->lmodule->match_exc, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name));
-                       ctx->lmodule->match_exc = callee;
+                       callee = ctx->module->match_exc = LLVMAddFunction (ctx->lmodule, icall_name, match_sig);
+                       LLVMAddGlobalMapping (ctx->module->ee, ctx->module->match_exc, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, icall_name));
+                       ctx->module->match_exc = callee;
                        mono_memory_barrier ();
                }
        }
@@ -3283,12 +3562,6 @@ mono_llvm_emit_match_exception_call (EmitContext *ctx, LLVMBuilderRef builder, g
 // FIXME: This won't work because the code-finding makes this
 // not a constant.
 /*#define MONO_PERSONALITY_DEBUG*/
-_Unwind_Reason_Code 
-mono_debug_personality (int a, _Unwind_Action b,
-uint64_t c, struct _Unwind_Exception *d, struct _Unwind_Context *e)
-{
-       g_assert_not_reached ();
-}
 
 #ifdef MONO_PERSONALITY_DEBUG
 static const gboolean use_debug_personality = TRUE;
@@ -3324,17 +3597,17 @@ get_mono_personality (EmitContext *ctx)
 
        if (!use_debug_personality) {
                if (ctx->cfg->compile_aot) {
-                               personality = LLVMGetNamedFunction (ctx->module, default_personality_name);
+                               personality = LLVMGetNamedFunction (ctx->lmodule, default_personality_name);
                } else if (InterlockedCompareExchange (&mapping_inited, 1, 0) == 0) {
-                               personality = LLVMAddFunction (ctx->module, default_personality_name, personality_type);
-                               LLVMAddGlobalMapping (ctx->lmodule->ee, personality, personality);
+                               personality = LLVMAddFunction (ctx->lmodule, default_personality_name, personality_type);
+                               LLVMAddGlobalMapping (ctx->module->ee, personality, personality);
                }
        } else {
                if (ctx->cfg->compile_aot) {
                        personality = get_callee (ctx, personality_type, MONO_PATCH_INFO_INTERNAL_METHOD, default_personality_name);
                } else {
-                       personality = LLVMAddFunction (ctx->module, default_personality_name, personality_type);
-                       LLVMAddGlobalMapping (ctx->lmodule->ee, personality, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, default_personality_name));
+                       personality = LLVMAddFunction (ctx->lmodule, default_personality_name, personality_type);
+                       LLVMAddGlobalMapping (ctx->module->ee, personality, resolve_patch (ctx->cfg, MONO_PATCH_INFO_INTERNAL_METHOD, default_personality_name));
                        mono_memory_barrier ();
                }
        }
@@ -3367,7 +3640,7 @@ emit_landing_pad (EmitContext *ctx, int group_index, int group_size)
        LLVMValueRef landing_pad = LLVMBuildLandingPad (lpadBuilder, default_cpp_lpad_exc_signature (), personality, 0, "");
        g_assert (landing_pad);
 
-       LLVMValueRef cast = LLVMBuildBitCast (lpadBuilder, ctx->lmodule->sentinel_exception, LLVMPointerType (LLVMInt8Type (), 0), "int8TypeInfo");
+       LLVMValueRef cast = LLVMBuildBitCast (lpadBuilder, ctx->module->sentinel_exception, LLVMPointerType (LLVMInt8Type (), 0), "int8TypeInfo");
        LLVMAddClause (landing_pad, cast);
 
        LLVMBasicBlockRef resume_bb = gen_bb (ctx, "RESUME_BB");
@@ -3465,7 +3738,7 @@ emit_handler_start (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef builder
 {
        MonoCompile *cfg = ctx->cfg;
        LLVMValueRef *values = ctx->values;
-       LLVMModuleRef module = ctx->module;
+       LLVMModuleRef lmodule = ctx->lmodule;
        BBInfo *bblocks = ctx->bblocks;
        LLVMTypeRef i8ptr;
        LLVMValueRef personality;
@@ -3475,7 +3748,7 @@ emit_handler_start (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef builder
        static gint32 mapping_inited;
        static int ti_generator;
        char ti_name [128];
-       MonoClass **ti;
+       gint32 *ti;
        LLVMValueRef type_info;
        int clause_index;
        GSList *l;
@@ -3484,12 +3757,12 @@ emit_handler_start (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef builder
 
        if (cfg->compile_aot) {
                /* Use a dummy personality function */
-               personality = LLVMGetNamedFunction (module, "mono_personality");
+               personality = LLVMGetNamedFunction (lmodule, "mono_personality");
                g_assert (personality);
        } else {
-               personality = LLVMGetNamedFunction (module, "mono_personality");
+               personality = LLVMGetNamedFunction (lmodule, "mono_personality");
                if (InterlockedCompareExchange (&mapping_inited, 1, 0) == 0)
-                       LLVMAddGlobalMapping (ctx->lmodule->ee, personality, mono_personality);
+                       LLVMAddGlobalMapping (ctx->module->ee, personality, (gpointer)mono_personality);
        }
 
        i8ptr = LLVMPointerType (LLVMInt8Type (), 0);
@@ -3504,7 +3777,7 @@ emit_handler_start (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef builder
 
        if (cfg->compile_aot) {
                /* decode_eh_frame () in aot-runtime.c will decode this */
-               type_info = LLVMAddGlobal (module, LLVMInt32Type (), ti_name);
+               type_info = LLVMAddGlobal (lmodule, LLVMInt32Type (), ti_name);
                LLVMSetInitializer (type_info, LLVMConstInt (LLVMInt32Type (), clause_index, FALSE));
 
                /*
@@ -3517,12 +3790,12 @@ emit_handler_start (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef builder
                 * but this is not a problem, since we decode it once in exception_cb during
                 * compilation.
                 */
-               ti = mono_mempool_alloc (cfg->mempool, sizeof (gint32));
+               ti = (gint32*)mono_mempool_alloc (cfg->mempool, sizeof (gint32));
                *(gint32*)ti = clause_index;
 
-               type_info = LLVMAddGlobal (module, i8ptr, ti_name);
+               type_info = LLVMAddGlobal (lmodule, i8ptr, ti_name);
 
-               LLVMAddGlobalMapping (ctx->lmodule->ee, type_info, ti);
+               LLVMAddGlobalMapping (ctx->module->ee, type_info, ti);
        }
 
        {
@@ -3561,7 +3834,7 @@ emit_handler_start (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef builder
                int nesting_clause_index = GPOINTER_TO_INT (l->data);
                MonoBasicBlock *handler_bb;
 
-               handler_bb = g_hash_table_lookup (ctx->clause_to_handler, GINT_TO_POINTER (nesting_clause_index));
+               handler_bb = (MonoBasicBlock*)g_hash_table_lookup (ctx->clause_to_handler, GINT_TO_POINTER (nesting_clause_index));
                g_assert (handler_bb);
 
                g_assert (ctx->bblocks [handler_bb->block_num].call_handler_target_bb);
@@ -3600,7 +3873,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
        LLVMValueRef *values = ctx->values;
        LLVMValueRef *addresses = ctx->addresses;
        LLVMCallInfo *linfo = ctx->linfo;
-       LLVMModuleRef module = ctx->module;
+       LLVMModuleRef lmodule = ctx->lmodule;
        BBInfo *bblocks = ctx->bblocks;
        MonoInst *ins;
        LLVMBasicBlockRef cbb;
@@ -3610,10 +3883,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
        LLVMValueRef lhs, rhs;
        int nins = 0;
 
-       if (bb == cfg->bb_entry && ctx->entry_out_bb)
-               cbb = ctx->entry_out_bb;
-       else
-               cbb = get_bb (ctx, bb);
+       cbb = get_end_bb (ctx, bb);
 
        builder = create_builder (ctx);
        ctx->builder = builder;
@@ -3661,7 +3931,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                if (spec [MONO_INST_SRC1] != ' ' && spec [MONO_INST_SRC1] != 'v') {
                        MonoInst *var = get_vreg_to_inst (cfg, ins->sreg1);
 
-                       if (var && var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)) {
+                       if (var && var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT) && var->opcode != OP_GSHAREDVT_ARG_REGOFFSET) {
                                lhs = emit_volatile_load (ctx, ins->sreg1);
                        } else {
                                /* It is ok for SETRET to have an uninitialized argument */
@@ -3763,20 +4033,43 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        switch (linfo->ret.storage) {
                        case LLVMArgVtypeInReg: {
                                LLVMTypeRef ret_type = LLVMGetReturnType (LLVMGetElementType (LLVMTypeOf (method)));
-                               LLVMValueRef part1, retval;
-                               int size;
-
-                               size = get_vtype_size (sig->ret);
-
-                               g_assert (addresses [ins->sreg1]);
+                               LLVMValueRef val, addr, retval;
+                               int i;
 
-                               g_assert (linfo->ret.pair_storage [0] == LLVMArgInIReg);
-                               g_assert (linfo->ret.pair_storage [1] == LLVMArgNone);
-                                       
-                               part1 = convert (ctx, LLVMBuildLoad (builder, LLVMBuildBitCast (builder, addresses [ins->sreg1], LLVMPointerType (LLVMIntType (size * 8), 0), ""), ""), IntPtrType ());
-
-                               retval = LLVMBuildInsertValue (builder, LLVMGetUndef (ret_type), part1, 0, "");
+                               retval = LLVMGetUndef (ret_type);
 
+                               if (!addresses [ins->sreg1]) {
+                                       /*
+                                        * The return type is an LLVM vector type, have to convert between it and the
+                                        * real return type which is a struct type.
+                                        */
+                                       g_assert (MONO_CLASS_IS_SIMD (ctx->cfg, mono_class_from_mono_type (sig->ret)));
+                                       /* Convert to 2xi64 first */
+                                       val = LLVMBuildBitCast (builder, values [ins->sreg1], LLVMVectorType (IntPtrType (), 2), "");
+
+                                       for (i = 0; i < 2; ++i) {
+                                               if (linfo->ret.pair_storage [i] == LLVMArgInIReg) {
+                                                       retval = LLVMBuildInsertValue (builder, retval, LLVMBuildExtractElement (builder, val, LLVMConstInt (LLVMInt32Type (), i, FALSE), ""), i, "");
+                                               } else {
+                                                       g_assert (linfo->ret.pair_storage [i] == LLVMArgNone);
+                                               }
+                                       }
+                               } else {
+                                       addr = LLVMBuildBitCast (builder, addresses [ins->sreg1], LLVMPointerType (ret_type, 0), "");
+                                       for (i = 0; i < 2; ++i) {
+                                               if (linfo->ret.pair_storage [i] == LLVMArgInIReg) {
+                                                       LLVMValueRef indexes [2], part_addr;
+
+                                                       indexes [0] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
+                                                       indexes [1] = LLVMConstInt (LLVMInt32Type (), i, FALSE);
+                                                       part_addr = LLVMBuildGEP (builder, addr, indexes, 2, "");
+
+                                                       retval = LLVMBuildInsertValue (builder, retval, LLVMBuildLoad (builder, part_addr, ""), i, "");
+                                               } else {
+                                                       g_assert (linfo->ret.pair_storage [i] == LLVMArgNone);
+                                               }
+                                       }
+                               }
                                LLVMBuildRet (builder, retval);
                                break;
                        }
@@ -3805,10 +4098,42 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                                LLVMBuildRetVoid (builder);
                                break;
                        }
+                       case LLVMArgGsharedvtFixed: {
+                               LLVMTypeRef ret_type = type_to_llvm_type (ctx, sig->ret);
+                               /* The return value is in lhs, need to store to the vret argument */
+                               /* sreg1 might not be set */
+                               if (lhs) {
+                                       g_assert (cfg->vret_addr);
+                                       g_assert (values [cfg->vret_addr->dreg]);
+                                       LLVMBuildStore (builder, convert (ctx, lhs, ret_type), convert (ctx, values [cfg->vret_addr->dreg], LLVMPointerType (ret_type, 0)));
+                               }
+                               LLVMBuildRetVoid (builder);
+                               break;
+                       }
+                       case LLVMArgGsharedvtFixedVtype: {
+                               /* Already set */
+                               LLVMBuildRetVoid (builder);
+                               break;
+                       }
+                       case LLVMArgGsharedvtVariable: {
+                               /* Already set */
+                               LLVMBuildRetVoid (builder);
+                               break;
+                       }
                        case LLVMArgVtypeRetAddr: {
                                LLVMBuildRetVoid (builder);
                                break;
                        }
+                       case LLVMArgScalarRetAddr: {
+                               LLVMTypeRef ret_type = type_to_llvm_type (ctx, sig->ret);
+                               LLVMValueRef param = LLVMGetParam (method, linfo->vret_arg_pindex);
+
+                               /* sreg1 might not be set */
+                               if (lhs)
+                                       LLVMBuildStore (builder, convert (ctx, lhs, ret_type), convert (ctx, param, LLVMPointerType (ret_type, 0)));
+                               LLVMBuildRetVoid (builder);
+                               break;
+                       }
                        case LLVMArgFpStruct: {
                                LLVMTypeRef ret_type = LLVMGetReturnType (LLVMGetElementType (LLVMTypeOf (method)));
                                LLVMValueRef retval;
@@ -3818,7 +4143,8 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                                LLVMBuildRet (builder, retval);
                                break;
                        }
-                       default: {
+                       case LLVMArgNone:
+                       case LLVMArgNormal: {
                                if (!lhs || ctx->is_dead [ins->sreg1]) {
                                        /*
                                         * The method did not set its return value, probably because it
@@ -3834,6 +4160,9 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                                has_terminator = TRUE;
                                break;
                        }
+                       default:
+                               g_assert_not_reached ();
+                               break;
                        }
                        break;
                case OP_ICOMPARE:
@@ -3845,7 +4174,8 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                case OP_LCOMPARE_IMM:
                case OP_COMPARE_IMM: {
                        CompRelation rel;
-                       LLVMValueRef cmp;
+                       LLVMValueRef cmp, args [16];
+                       gboolean likely = (ins->flags & MONO_INST_LIKELY) != 0;
 
                        if (ins->next->opcode == OP_NOP)
                                break;
@@ -3907,6 +4237,12 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        } else
                                cmp = LLVMBuildICmp (builder, cond_to_llvm_cond [rel], lhs, rhs, "");
 
+                       if (likely) {
+                               args [0] = cmp;
+                               args [1] = LLVMConstInt (LLVMInt1Type (), 1, FALSE);
+                               cmp = LLVMBuildCall (ctx->builder, LLVMGetNamedFunction (ctx->lmodule, "llvm.expect.i1"), args, 2, "");
+                       }
+
                        if (MONO_IS_COND_BRANCH_OP (ins->next)) {
                                if (ins->next->inst_true_bb == ins->next->inst_false_bb) {
                                        /*
@@ -4209,6 +4545,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                case OP_ISHR_UN_IMM:
                case OP_LADD_IMM:
                case OP_LSUB_IMM:
+               case OP_LMUL_IMM:
                case OP_LREM_IMM:
                case OP_LAND_IMM:
                case OP_LOR_IMM:
@@ -4254,6 +4591,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                                break;
                        case OP_IMUL_IMM:
                        case OP_MUL_IMM:
+                       case OP_LMUL_IMM:
                                values [ins->dreg] = LLVMBuildMul (builder, lhs, imm, dname);
                                break;
                        case OP_IDIV_IMM:
@@ -4460,7 +4798,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                                args [2] = LLVMConstInt (LLVMInt32Type (), size, FALSE);
                                args [3] = LLVMConstInt (LLVMInt32Type (), MONO_ARCH_FRAME_ALIGNMENT, FALSE);
                                args [4] = LLVMConstInt (LLVMInt1Type (), 0, FALSE);
-                               LLVMBuildCall (builder, LLVMGetNamedFunction (module, memset_func_name), args, memset_param_count, "");
+                               LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, memset_func_name), args, memset_param_count, "");
                        }
 
                        values [ins->dreg] = v;
@@ -4481,7 +4819,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                                args [2] = size;
                                args [3] = LLVMConstInt (LLVMInt32Type (), MONO_ARCH_FRAME_ALIGNMENT, FALSE);
                                args [4] = LLVMConstInt (LLVMInt1Type (), 0, FALSE);
-                               LLVMBuildCall (builder, LLVMGetNamedFunction (module, memset_func_name), args, memset_param_count, "");
+                               LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, memset_func_name), args, memset_param_count, "");
                        }
                        values [ins->dreg] = v;
                        break;
@@ -4639,31 +4977,40 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                case OP_AOTCONST: {
                        guint32 got_offset;
                        LLVMValueRef indexes [2];
-                       MonoJumpInfo *ji;
+                       MonoJumpInfo *tmp_ji, *ji;
                        LLVMValueRef got_entry_addr;
+                       char *name;
 
                        /* 
                         * FIXME: Can't allocate from the cfg mempool since that is freed if
                         * the LLVM compile fails.
                         */
-                       ji = g_new0 (MonoJumpInfo, 1);
-                       ji->type = (MonoJumpInfoType)ins->inst_c1;
-                       ji->data.target = ins->inst_p0;
+                       tmp_ji = g_new0 (MonoJumpInfo, 1);
+                       tmp_ji->type = (MonoJumpInfoType)ins->inst_c1;
+                       tmp_ji->data.target = ins->inst_p0;
 
-                       ji = mono_aot_patch_info_dup (ji);
+                       ji = mono_aot_patch_info_dup (tmp_ji);
+                       g_free (tmp_ji);
 
                        ji->next = cfg->patch_info;
                        cfg->patch_info = ji;
                                   
                        //mono_add_patch_info (cfg, 0, (MonoJumpInfoType)ins->inst_i1, ins->inst_p0);
                        got_offset = mono_aot_get_got_offset (cfg->patch_info);
-                       ctx->lmodule->max_got_offset = MAX (ctx->lmodule->max_got_offset, got_offset);
+                       ctx->module->max_got_offset = MAX (ctx->module->max_got_offset, got_offset);
+                       if (!mono_aot_is_shared_got_offset (got_offset)) {
+                               //mono_print_ji (ji);
+                               //printf ("\n");
+                               ctx->has_got_access = TRUE;
+                       }
  
                        indexes [0] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
                        indexes [1] = LLVMConstInt (LLVMInt32Type (), (gssize)got_offset, FALSE);
-                       got_entry_addr = LLVMBuildGEP (builder, ctx->lmodule->got_var, indexes, 2, "");
+                       got_entry_addr = LLVMBuildGEP (builder, ctx->module->got_var, indexes, 2, "");
 
-                       values [ins->dreg] = LLVMBuildLoad (builder, got_entry_addr, dname);
+                       name = get_aotconst_name (ji->type, ji->data.target, got_offset);
+                       values [ins->dreg] = LLVMBuildLoad (builder, got_entry_addr, name);
+                       g_free (name);
                        set_invariant_load_flag (values [ins->dreg]);
                        break;
                }
@@ -4688,6 +5035,8 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        if (var->opcode == OP_VTARG_ADDR) {
                                /* The variable contains the vtype address */
                                values [ins->dreg] = values [var->dreg];
+                       } else if (var->opcode == OP_GSHAREDVT_LOCAL) {
+                               values [ins->dreg] = emit_gsharedvt_ldaddr (ctx, var->dreg);
                        } else {
                                values [ins->dreg] = addresses [var->dreg];
                        }
@@ -4697,14 +5046,14 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        LLVMValueRef args [1];
 
                        args [0] = convert (ctx, lhs, LLVMDoubleType ());
-                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, "llvm.sin.f64"), args, 1, dname);
+                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, "llvm.sin.f64"), args, 1, dname);
                        break;
                }
                case OP_COS: {
                        LLVMValueRef args [1];
 
                        args [0] = convert (ctx, lhs, LLVMDoubleType ());
-                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, "llvm.cos.f64"), args, 1, dname);
+                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, "llvm.cos.f64"), args, 1, dname);
                        break;
                }
                case OP_SQRT: {
@@ -4720,14 +5069,14 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        LLVM_FAILURE (ctx, "sqrt");
 #endif
                        args [0] = convert (ctx, lhs, LLVMDoubleType ());
-                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, "llvm.sqrt.f64"), args, 1, dname);
+                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, "llvm.sqrt.f64"), args, 1, dname);
                        break;
                }
                case OP_ABS: {
                        LLVMValueRef args [1];
 
                        args [0] = convert (ctx, lhs, LLVMDoubleType ());
-                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, "fabs"), args, 1, dname);
+                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, "fabs"), args, 1, dname);
                        break;
                }
 
@@ -4901,7 +5250,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                }
                case OP_RELAXED_NOP: {
 #if defined(TARGET_AMD64) || defined(TARGET_X86)
-                       emit_call (ctx, bb, &builder, LLVMGetNamedFunction (ctx->module, "llvm.x86.sse2.pause"), NULL, 0);
+                       emit_call (ctx, bb, &builder, LLVMGetNamedFunction (ctx->lmodule, "llvm.x86.sse2.pause"), NULL, 0);
                        break;
 #else
                        break;
@@ -4977,7 +5326,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 
                                args [0] = convert (ctx, lhs, op_to_llvm_type (ins->opcode));
                                args [1] = convert (ctx, rhs, op_to_llvm_type (ins->opcode));
-                               func = LLVMGetNamedFunction (module, ovf_op_to_intrins (ins->opcode));
+                               func = LLVMGetNamedFunction (lmodule, ovf_op_to_intrins (ins->opcode));
                                g_assert (func);
                                val = LLVMBuildCall (builder, func, args, 2, "");
                                values [ins->dreg] = LLVMBuildExtractValue (builder, val, 0, dname);
@@ -5013,7 +5362,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        // FIXME: Alignment
                        args [3] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
                        args [4] = LLVMConstInt (LLVMInt1Type (), 0, FALSE);
-                       LLVMBuildCall (builder, LLVMGetNamedFunction (module, memset_func_name), args, memset_param_count, "");
+                       LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, memset_func_name), args, memset_param_count, "");
                        break;
                }
                case OP_DUMMY_VZERO:
@@ -5086,17 +5435,41 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        // FIXME: Alignment
                        args [3] = LLVMConstInt (LLVMInt32Type (), 0, FALSE);
                        args [4] = LLVMConstInt (LLVMInt1Type (), 0, FALSE);
-                       LLVMBuildCall (builder, LLVMGetNamedFunction (module, memcpy_func_name), args, memcpy_param_count, "");
-                       break;
-               }
-               case OP_LLVM_OUTARG_VT:
-                       if (!addresses [ins->sreg1]) {
-                               addresses [ins->sreg1] = build_alloca (ctx, &ins->klass->byval_arg);
-                               g_assert (values [ins->sreg1]);
-                               LLVMBuildStore (builder, values [ins->sreg1], addresses [ins->sreg1]);
+                       LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, memcpy_func_name), args, memcpy_param_count, "");
+                       break;
+               }
+               case OP_LLVM_OUTARG_VT: {
+                       LLVMArgInfo *ainfo = (LLVMArgInfo*)ins->inst_p0;
+                       MonoType *t = mini_get_underlying_type (ins->inst_vtype);
+
+                       if (ainfo->storage == LLVMArgScalarByRef) {
+                               LLVMTypeRef argtype;
+                               LLVMValueRef loc, v;
+
+                               argtype = type_to_llvm_arg_type (ctx, t);
+                               loc = build_alloca_llvm_type (ctx, argtype, 0);
+                               v = convert (ctx, values [ins->sreg1], argtype);
+                               LLVMBuildStore (ctx->builder, v, loc);
+                               addresses [ins->dreg] = loc;
+                       } else if (ainfo->storage == LLVMArgGsharedvtVariable) {
+                                       MonoInst *var = get_vreg_to_inst (cfg, ins->sreg1);
+
+                                       if (var && var->opcode == OP_GSHAREDVT_LOCAL) {
+                                               addresses [ins->dreg] = convert (ctx, emit_gsharedvt_ldaddr (ctx, var->dreg), LLVMPointerType (IntPtrType (), 0));
+                                       } else {
+                                               g_assert (addresses [ins->sreg1]);
+                                               addresses [ins->dreg] = addresses [ins->sreg1];
+                                       }
+                       } else {
+                               if (!addresses [ins->sreg1]) {
+                                       addresses [ins->sreg1] = build_alloca (ctx, t);
+                                       g_assert (values [ins->sreg1]);
+                                       LLVMBuildStore (builder, convert (ctx, values [ins->sreg1], type_to_llvm_type (ctx, t)), addresses [ins->sreg1]);
+                               }
+                               addresses [ins->dreg] = addresses [ins->sreg1];
                        }
-                       addresses [ins->dreg] = addresses [ins->sreg1];
                        break;
+               }
 
                        /* 
                         * SIMD
@@ -5256,7 +5629,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        args [0] = lhs;
                        args [1] = rhs;
 
-                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, simd_op_to_intrins (ins->opcode)), args, 2, dname);
+                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, simd_op_to_intrins (ins->opcode)), args, 2, dname);
                        break;
                }
                case OP_PCMPEQB:
@@ -5363,7 +5736,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 
                        v = convert (ctx, values [ins->sreg1], simd_op_to_llvm_type (ins->opcode));
 
-                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, simd_op_to_intrins (ins->opcode)), &v, 1, dname);
+                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, simd_op_to_intrins (ins->opcode)), &v, 1, dname);
                        break;
                }
 
@@ -5375,7 +5748,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        args [1] = rhs;
                        args [2] = LLVMConstInt (LLVMInt8Type (), ins->inst_c0, FALSE);
 
-                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, simd_op_to_intrins (ins->opcode)), args, 3, dname);
+                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, simd_op_to_intrins (ins->opcode)), args, 3, dname);
                        break;
                }
 
@@ -5397,7 +5770,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        args [0] = lhs;
                        args [1] = LLVMConstInt (LLVMInt32Type (), ins->inst_imm, FALSE);
 
-                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, simd_op_to_intrins (ins->opcode)), args, 2, dname);
+                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, simd_op_to_intrins (ins->opcode)), args, 2, dname);
                        break;
                }
 
@@ -5414,7 +5787,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        args [0] = lhs;
                        args [1] = values [ins->sreg2];
 
-                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, simd_op_to_intrins (ins->opcode)), args, 2, dname);
+                       values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (lmodule, simd_op_to_intrins (ins->opcode)), args, 2, dname);
                        break;
                }
 
@@ -5702,7 +6075,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                                if (ctx->cfg->compile_aot) {
                                        callee = get_callee (ctx, LLVMFunctionType (LLVMVoidType (), NULL, 0, FALSE), MONO_PATCH_INFO_INTERNAL_METHOD, "llvm_resume_unwind_trampoline");
                                } else {
-                                       callee = LLVMGetNamedFunction (module, "llvm_resume_unwind_trampoline");
+                                       callee = LLVMGetNamedFunction (lmodule, "llvm_resume_unwind_trampoline");
                                }
                                LLVMBuildCall (builder, callee, NULL, 0, "");
                                LLVMBuildUnreachable (builder);
@@ -5711,6 +6084,8 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        has_terminator = TRUE;
                        break;
                }
+               case OP_IL_SEQ_POINT:
+                       break;
                default: {
                        char reason [128];
 
@@ -5784,8 +6159,9 @@ mono_llvm_check_method_supported (MonoCompile *cfg)
                        MonoExceptionClause *clause1 = &cfg->header->clauses [i];
                        MonoExceptionClause *clause2 = &cfg->header->clauses [j];
 
-                       if (i != j && clause1->try_offset >= clause2->try_offset && clause1->handler_offset <= clause2->handler_offset &&
-                               (clause1->flags == MONO_EXCEPTION_CLAUSE_FINALLY || clause2->flags == MONO_EXCEPTION_CLAUSE_FINALLY)) {
+                       // FIXME: Nested try clauses fail in some cases too, i.e. #37273
+                       if (i != j && clause1->try_offset >= clause2->try_offset && clause1->handler_offset <= clause2->handler_offset) {
+                               //(clause1->flags == MONO_EXCEPTION_CLAUSE_FINALLY || clause2->flags == MONO_EXCEPTION_CLAUSE_FINALLY)) {
                                cfg->exception_message = g_strdup ("nested clauses");
                                cfg->disable_llvm = TRUE;
                                break;
@@ -5804,6 +6180,63 @@ mono_llvm_check_method_supported (MonoCompile *cfg)
                return;
 }
 
+static LLVMCallInfo*
+get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
+{
+       LLVMCallInfo *linfo;
+       int i;
+
+       if (cfg->gsharedvt && cfg->llvm_only && mini_is_gsharedvt_variable_signature (sig)) {
+               int i, n, pindex;
+
+               /*
+                * Gsharedvt methods have the following calling convention:
+                * - all arguments are passed by ref, even non generic ones
+                * - the return value is returned by ref too, using a vret
+                *   argument passed after 'this'.
+                */
+               n = sig->param_count + sig->hasthis;
+               linfo = (LLVMCallInfo*)mono_mempool_alloc0 (cfg->mempool, sizeof (LLVMCallInfo) + (sizeof (LLVMArgInfo) * n));
+
+               pindex = 0;
+               if (sig->hasthis)
+                       linfo->args [pindex ++].storage = LLVMArgNormal;
+
+               if (sig->ret->type != MONO_TYPE_VOID) {
+                       if (mini_is_gsharedvt_variable_type (sig->ret))
+                               linfo->ret.storage = LLVMArgGsharedvtVariable;
+                       else if (mini_type_is_vtype (sig->ret))
+                               linfo->ret.storage = LLVMArgGsharedvtFixedVtype;
+                       else
+                               linfo->ret.storage = LLVMArgGsharedvtFixed;
+                       linfo->vret_arg_index = pindex;
+               } else {
+                       linfo->ret.storage = LLVMArgNone;
+               }
+
+               for (i = 0; i < sig->param_count; ++i) {
+                       if (sig->params [i]->byref)
+                               linfo->args [pindex].storage = LLVMArgNormal;
+                       else if (mini_is_gsharedvt_variable_type (sig->params [i]))
+                               linfo->args [pindex].storage = LLVMArgGsharedvtVariable;
+                       else if (mini_type_is_vtype (sig->params [i]))
+                               linfo->args [pindex].storage = LLVMArgGsharedvtFixedVtype;
+                       else
+                               linfo->args [pindex].storage = LLVMArgGsharedvtFixed;
+                       linfo->args [pindex].type = sig->params [i];
+                       pindex ++;
+               }
+               return linfo;
+       }
+
+
+       linfo = mono_arch_get_llvm_call_info (cfg, sig);
+       for (i = 0; i < sig->param_count; ++i)
+               linfo->args [i + sig->hasthis].type = sig->params [i];
+
+       return linfo;
+}
+
 /*
  * mono_llvm_emit_method:
  *
@@ -5820,16 +6253,15 @@ mono_llvm_emit_method (MonoCompile *cfg)
        char *method_name;
        LLVMValueRef *values;
        int i, max_block_num, bb_index;
-       gboolean last = FALSE;
+       gboolean last = FALSE, is_linkonce = FALSE;
        GPtrArray *phi_values;
        LLVMCallInfo *linfo;
        GSList *l;
-       LLVMModuleRef module;
+       LLVMModuleRef lmodule;
        BBInfo *bblocks;
        GPtrArray *bblock_list;
        MonoMethodHeader *header;
        MonoExceptionClause *clause;
-       LLVMSigInfo sinfo;
        char **names;
 
        /* The code below might acquire the loader lock, so use it for global locking */
@@ -5866,21 +6298,43 @@ mono_llvm_emit_method (MonoCompile *cfg)
        ctx->values = values;
        ctx->region_to_handler = g_hash_table_new (NULL, NULL);
        ctx->clause_to_handler = g_hash_table_new (NULL, NULL);
+       ctx->method_to_callers = g_hash_table_new (NULL, NULL);
  
        if (cfg->compile_aot) {
-               ctx->lmodule = &aot_module;
-               method_name = mono_aot_get_method_name (cfg);
+               ctx->module = &aot_module;
+
+               method_name = NULL;
+               /*
+                * Allow the linker to discard duplicate copies of wrappers, generic instances etc. by using the 'linkonce'
+                * linkage for them. This requires the following:
+                * - the method needs to have a unique mangled name
+                * - llvmonly mode, since the code in aot-runtime.c would initialize got slots in the wrong aot image etc.
+                */
+               is_linkonce = ctx->module->llvm_only && ctx->module->static_link && mono_aot_is_linkonce_method (cfg->method);
+               if (is_linkonce) {
+                       method_name = mono_aot_get_mangled_method_name (cfg->method);
+                       if (!method_name)
+                               is_linkonce = FALSE;
+                       /*
+                       if (method_name)
+                               printf ("%s %s\n", mono_method_full_name (cfg->method, 1), method_name);
+                       else
+                               printf ("%s\n", mono_method_full_name (cfg->method, 1));
+                       */
+               }
+               if (!method_name)
+                       method_name = mono_aot_get_method_name (cfg);
                cfg->llvm_method_name = g_strdup (method_name);
        } else {
                init_jit_module (cfg->domain);
-               ctx->lmodule = (MonoLLVMModule*)domain_jit_info (cfg->domain)->llvm_module;
+               ctx->module = (MonoLLVMModule*)domain_jit_info (cfg->domain)->llvm_module;
                method_name = mono_method_full_name (cfg->method, TRUE);
        }
 
-       module = ctx->module = ctx->lmodule->module;
-       ctx->llvm_only = ctx->lmodule->llvm_only;
+       lmodule = ctx->lmodule = ctx->module->lmodule;
+       ctx->llvm_only = ctx->module->llvm_only;
 
-       if (cfg->gsharedvt)
+       if (cfg->gsharedvt && !cfg->llvm_only)
                LLVM_FAILURE (ctx, "gsharedvt");
 
 #if 1
@@ -5903,22 +6357,16 @@ mono_llvm_emit_method (MonoCompile *cfg)
        sig = mono_method_signature (cfg->method);
        ctx->sig = sig;
 
-       linfo = mono_arch_get_llvm_call_info (cfg, sig);
+       linfo = get_llvm_call_info (cfg, sig);
        ctx->linfo = linfo;
        CHECK_FAILURE (ctx);
 
        if (cfg->rgctx_var)
                linfo->rgctx_arg = TRUE;
-       method_type = sig_to_llvm_sig_full (ctx, sig, linfo, &sinfo);
+       method_type = sig_to_llvm_sig_full (ctx, sig, linfo);
        CHECK_FAILURE (ctx);
 
-       /* 
-        * This maps parameter indexes in the original signature to the indexes in
-        * the LLVM signature.
-        */
-       ctx->pindexes = sinfo.pindexes;
-
-       method = LLVMAddFunction (module, method_name, method_type);
+       method = LLVMAddFunction (lmodule, method_name, method_type);
        ctx->lmethod = method;
 
        if (!cfg->llvm_only)
@@ -5929,10 +6377,14 @@ mono_llvm_emit_method (MonoCompile *cfg)
 
        if (cfg->compile_aot) {
                LLVMSetLinkage (method, LLVMInternalLinkage);
-               if (ctx->lmodule->external_symbols) {
+               if (ctx->module->external_symbols) {
                        LLVMSetLinkage (method, LLVMExternalLinkage);
                        LLVMSetVisibility (method, LLVMHiddenVisibility);
                }
+               if (is_linkonce) {
+                       LLVMSetLinkage (method, LLVMLinkOnceAnyLinkage);
+                       LLVMSetVisibility (method, LLVMDefaultVisibility);
+               }
        } else {
                LLVMSetLinkage (method, LLVMPrivateLinkage);
        }
@@ -5940,7 +6392,7 @@ mono_llvm_emit_method (MonoCompile *cfg)
        if (cfg->method->save_lmf && !cfg->llvm_only)
                LLVM_FAILURE (ctx, "lmf");
 
-       if (sig->pinvoke && cfg->method->wrapper_type != MONO_WRAPPER_RUNTIME_INVOKE)
+       if (sig->pinvoke && cfg->method->wrapper_type != MONO_WRAPPER_RUNTIME_INVOKE && !cfg->llvm_only)
                LLVM_FAILURE (ctx, "pinvoke signature");
 
        header = cfg->header;
@@ -5954,8 +6406,8 @@ mono_llvm_emit_method (MonoCompile *cfg)
                LLVMAddFunctionAttr (method, LLVMNoInlineAttribute);
 
        if (linfo->rgctx_arg) {
-               ctx->rgctx_arg = LLVMGetParam (method, sinfo.rgctx_arg_pindex);
-               ctx->rgctx_arg_pindex = sinfo.rgctx_arg_pindex;
+               ctx->rgctx_arg = LLVMGetParam (method, linfo->rgctx_arg_pindex);
+               ctx->rgctx_arg_pindex = linfo->rgctx_arg_pindex;
                /*
                 * We mark the rgctx parameter with the inreg attribute, which is mapped to
                 * MONO_ARCH_RGCTX_REG in the Mono calling convention in llvm, i.e.
@@ -5968,16 +6420,20 @@ mono_llvm_emit_method (MonoCompile *cfg)
                ctx->rgctx_arg_pindex = -1;
        }
        if (cfg->vret_addr) {
-               values [cfg->vret_addr->dreg] = LLVMGetParam (method, sinfo.vret_arg_pindex);
+               values [cfg->vret_addr->dreg] = LLVMGetParam (method, linfo->vret_arg_pindex);
                LLVMSetValueName (values [cfg->vret_addr->dreg], "vret");
                if (linfo->ret.storage == LLVMArgVtypeByRef) {
-                       LLVMAddAttribute (LLVMGetParam (method, sinfo.vret_arg_pindex), LLVMStructRetAttribute);
-                       LLVMAddAttribute (LLVMGetParam (method, sinfo.vret_arg_pindex), LLVMNoAliasAttribute);
+                       LLVMAddAttribute (LLVMGetParam (method, linfo->vret_arg_pindex), LLVMStructRetAttribute);
+                       LLVMAddAttribute (LLVMGetParam (method, linfo->vret_arg_pindex), LLVMNoAliasAttribute);
                }
+       } else if (linfo->ret.storage == LLVMArgScalarRetAddr) {
+               LLVMValueRef param = LLVMGetParam (method, linfo->vret_arg_pindex);
+               LLVMSetValueName (param, "vret");
        }
+
        if (sig->hasthis) {
-               ctx->this_arg_pindex = sinfo.this_arg_pindex;
-               ctx->this_arg = LLVMGetParam (method, sinfo.this_arg_pindex);
+               ctx->this_arg_pindex = linfo->this_arg_pindex;
+               ctx->this_arg = LLVMGetParam (method, linfo->this_arg_pindex);
                values [cfg->args [0]->dreg] = ctx->this_arg;
                LLVMSetValueName (values [cfg->args [0]->dreg], "this");
        }
@@ -5986,26 +6442,47 @@ mono_llvm_emit_method (MonoCompile *cfg)
        mono_method_get_param_names (cfg->method, (const char **) names);
 
        for (i = 0; i < sig->param_count; ++i) {
+               LLVMArgInfo *ainfo = &linfo->args [i + sig->hasthis];
                char *name;
+               int pindex = ainfo->pindex + ainfo->ndummy_fpargs;
+               int j;
 
-               values [cfg->args [i + sig->hasthis]->dreg] = LLVMGetParam (method, sinfo.pindexes [i]);
-               if (names [i] && names [i][0] != '\0')
-                       name = g_strdup_printf ("arg_%s", names [i]);
-               else
-                       name = g_strdup_printf ("arg_%d", i);
+               for (j = 0; j < ainfo->ndummy_fpargs; ++j) {
+                       name = g_strdup_printf ("dummy_%d_%d", i, j);
+                       LLVMSetValueName (LLVMGetParam (method, ainfo->pindex + j), name);
+                       g_free (name);
+               }
+
+               values [cfg->args [i + sig->hasthis]->dreg] = LLVMGetParam (method, pindex);
+               if (ainfo->storage == LLVMArgScalarByRef) {
+                       if (names [i] && names [i][0] != '\0')
+                               name = g_strdup_printf ("p_arg_%s", names [i]);
+                       else
+                               name = g_strdup_printf ("p_arg_%d", i);
+               } else if (ainfo->storage == LLVMArgGsharedvtFixed || ainfo->storage == LLVMArgGsharedvtFixedVtype) {
+                       if (names [i] && names [i][0] != '\0')
+                               name = g_strdup_printf ("p_arg_%s", names [i]);
+                       else
+                               name = g_strdup_printf ("p_arg_%d", i);
+               } else {
+                       if (names [i] && names [i][0] != '\0')
+                               name = g_strdup_printf ("arg_%s", names [i]);
+                       else
+                               name = g_strdup_printf ("arg_%d", i);
+               }
                LLVMSetValueName (values [cfg->args [i + sig->hasthis]->dreg], name);
                g_free (name);
-               if (linfo->args [i + sig->hasthis].storage == LLVMArgVtypeByVal)
-                       LLVMAddAttribute (LLVMGetParam (method, sinfo.pindexes [i]), LLVMByValAttribute);
+               if (ainfo->storage == LLVMArgVtypeByVal)
+                       LLVMAddAttribute (LLVMGetParam (method, pindex), LLVMByValAttribute);
 
-               if (linfo->args [i + sig->hasthis].storage == LLVMArgVtypeByRef) {
+               if (ainfo->storage == LLVMArgVtypeByRef) {
                        /* For OP_LDADDR */
                        cfg->args [i + sig->hasthis]->opcode = OP_VTARG_ADDR;
                }
        }
        g_free (names);
 
-       if (ctx->lmodule->emit_dwarf && cfg->compile_aot && mono_debug_enabled ()) {
+       if (ctx->module->emit_dwarf && cfg->compile_aot && mono_debug_enabled ()) {
                ctx->minfo = mono_debug_lookup_method (cfg->method);
                ctx->dbg_md = emit_dbg_subprogram (ctx, cfg, method, method_name);
        }
@@ -6233,15 +6710,52 @@ mono_llvm_emit_method (MonoCompile *cfg)
                        GSList *bb_list = info->call_handler_return_bbs;
 
                        for (i = 0; i < g_slist_length (bb_list); ++i)
-                               LLVMAddCase (switch_ins, LLVMConstInt (LLVMInt32Type (), i + 1, FALSE), g_slist_nth (bb_list, i)->data);
+                               LLVMAddCase (switch_ins, LLVMConstInt (LLVMInt32Type (), i + 1, FALSE), (LLVMBasicBlockRef)(g_slist_nth (bb_list, i)->data));
+               }
+       }
+
+       /* Initialize the method if needed */
+       if (cfg->compile_aot && ctx->llvm_only) {
+               // FIXME: Add more shared got entries
+               ctx->builder = create_builder (ctx);
+               LLVMPositionBuilderAtEnd (ctx->builder, ctx->init_bb);
+
+               ctx->module->max_method_idx = MAX (ctx->module->max_method_idx, cfg->method_index);
+
+               // FIXME: beforefieldinit
+               if (ctx->has_got_access || mono_class_get_cctor (cfg->method->klass)) {
+                       emit_init_method (ctx);
+               } else {
+                       LLVMBuildBr (ctx->builder, ctx->inited_bb);
+               }
+       }
+
+       if (cfg->llvm_only) {
+               GHashTableIter iter;
+               MonoMethod *method;
+               GSList *callers, *l, *l2;
+
+               /*
+                * Add the contents of ctx->method_to_callers to module->method_to_callers.
+                * We can't do this earlier, as it contains llvm instructions which can be
+                * freed if compilation fails.
+                * FIXME: Get rid of this when all methods can be llvm compiled.
+                */
+               g_hash_table_iter_init (&iter, ctx->method_to_callers);
+               while (g_hash_table_iter_next (&iter, (void**)&method, (void**)&callers)) {
+                       for (l = callers; l; l = l->next) {
+                               l2 = (GSList*)g_hash_table_lookup (ctx->module->method_to_callers, method);
+                               l2 = g_slist_prepend (l2, l->data);
+                               g_hash_table_insert (ctx->module->method_to_callers, method, l2);
+                       }
                }
        }
 
        if (cfg->verbose_level > 1)
                mono_llvm_dump_value (method);
 
-       if (cfg->compile_aot)
-               mark_as_used (ctx->lmodule, method);
+       if (cfg->compile_aot && !cfg->llvm_only)
+               mark_as_used (ctx->module, method);
 
        if (cfg->compile_aot) {
                LLVMValueRef md_args [16];
@@ -6252,7 +6766,7 @@ mono_llvm_emit_method (MonoCompile *cfg)
                md_args [0] = LLVMMDString (method_name, strlen (method_name));
                md_args [1] = LLVMConstInt (LLVMInt32Type (), method_index, FALSE);
                md_node = LLVMMDNode (md_args, 2);
-               LLVMAddNamedMetadataOperand (module, "mono.function_indexes", md_node);
+               LLVMAddNamedMetadataOperand (lmodule, "mono.function_indexes", md_node);
                //LLVMSetMetadata (method, md_kind, LLVMMDNode (&md_arg, 1));
        }
 
@@ -6261,15 +6775,16 @@ mono_llvm_emit_method (MonoCompile *cfg)
                if (cfg->verbose_level)
                        printf ("%s emitted as %s\n", mono_method_full_name (cfg->method, TRUE), method_name);
 
-               LLVMVerifyFunction(method, 0);
+               int err = LLVMVerifyFunction(method,   LLVMPrintMessageAction);
+               g_assert (err == 0);
        } else {
-               LLVMVerifyFunction(method, 0);
-               mono_llvm_optimize_method (ctx->lmodule->mono_ee, method);
+               //LLVMVerifyFunction(method, 0);
+               mono_llvm_optimize_method (ctx->module->mono_ee, method);
 
                if (cfg->verbose_level > 1)
                        mono_llvm_dump_value (method);
 
-               cfg->native_code = LLVMGetPointerToGlobal (ctx->lmodule->ee, method);
+               cfg->native_code = (unsigned char*)LLVMGetPointerToGlobal (ctx->module->ee, method);
 
                /* Set by emit_cb */
                g_assert (cfg->code_len);
@@ -6277,10 +6792,10 @@ mono_llvm_emit_method (MonoCompile *cfg)
                /* FIXME: Free the LLVM IL for the function */
        }
 
-       if (ctx->lmodule->method_to_lmethod)
-               g_hash_table_insert (ctx->lmodule->method_to_lmethod, cfg->method, method);
-       if (ctx->lmodule->idx_to_lmethod)
-               g_hash_table_insert (ctx->lmodule->idx_to_lmethod, GINT_TO_POINTER (cfg->method_index), method);
+       if (ctx->module->method_to_lmethod)
+               g_hash_table_insert (ctx->module->method_to_lmethod, cfg->method, method);
+       if (ctx->module->idx_to_lmethod)
+               g_hash_table_insert (ctx->module->idx_to_lmethod, GINT_TO_POINTER (cfg->method_index), method);
 
        if (ctx->llvm_only && cfg->orig_method->klass->valuetype && !(cfg->orig_method->flags & METHOD_ATTRIBUTE_STATIC))
                emit_unbox_tramp (ctx, method_name, method_type, method, cfg->method_index);
@@ -6298,7 +6813,7 @@ mono_llvm_emit_method (MonoCompile *cfg)
                LLVMPositionBuilderAtEnd (builder, phi_bb);
 
                for (i = 0; i < phi_values->len; ++i) {
-                       LLVMValueRef v = g_ptr_array_index (phi_values, i);
+                       LLVMValueRef v = (LLVMValueRef)g_ptr_array_index (phi_values, i);
                        if (LLVMGetInstructionParent (v) == NULL)
                                LLVMInsertIntoBuilder (builder, v);
                }
@@ -6311,7 +6826,6 @@ mono_llvm_emit_method (MonoCompile *cfg)
        g_free (ctx->addresses);
        g_free (ctx->vreg_types);
        g_free (ctx->vreg_cli_types);
-       g_free (ctx->pindexes);
        g_free (ctx->is_dead);
        g_free (ctx->unreachable);
        g_ptr_array_free (phi_values, TRUE);
@@ -6322,7 +6836,7 @@ mono_llvm_emit_method (MonoCompile *cfg)
        g_ptr_array_free (bblock_list, TRUE);
 
        for (l = ctx->builders; l; l = l->next) {
-               LLVMBuilderRef builder = l->data;
+               LLVMBuilderRef builder = (LLVMBuilderRef)l->data;
                LLVMDisposeBuilder (builder);
        }
 
@@ -6333,6 +6847,30 @@ mono_llvm_emit_method (MonoCompile *cfg)
        mono_loader_unlock ();
 }
 
+/*
+ * mono_llvm_create_vars:
+ *
+ *   Same as mono_arch_create_vars () for LLVM.
+ */
+void
+mono_llvm_create_vars (MonoCompile *cfg)
+{
+       MonoMethodSignature *sig;
+
+       sig = mono_method_signature (cfg->method);
+       if (cfg->gsharedvt && cfg->llvm_only) {
+               if (mini_is_gsharedvt_variable_signature (sig) && sig->ret->type != MONO_TYPE_VOID) {
+                       cfg->vret_addr = mono_compile_create_var (cfg, &mono_get_int32_class ()->byval_arg, OP_ARG);
+                       if (G_UNLIKELY (cfg->verbose_level > 1)) {
+                               printf ("vret_addr = ");
+                               mono_print_ins (cfg->vret_addr);
+                       }
+               }
+       } else {
+               mono_arch_create_vars (cfg);
+       }
+}
+
 /*
  * mono_llvm_emit_call:
  *
@@ -6351,7 +6889,7 @@ mono_llvm_emit_call (MonoCompile *cfg, MonoCallInst *call)
        sig = call->signature;
        n = sig->param_count + sig->hasthis;
 
-       call->cinfo = mono_arch_get_llvm_call_info (cfg, sig);
+       call->cinfo = get_llvm_call_info (cfg, sig);
 
        if (cfg->disable_llvm)
                return;
@@ -6370,9 +6908,8 @@ mono_llvm_emit_call (MonoCompile *cfg, MonoCallInst *call)
                        
                /* Simply remember the arguments */
                switch (ainfo->storage) {
-               case LLVMArgInIReg:
-               case LLVMArgInFPReg: {
-                       MonoType *t = (sig->hasthis && i == 0) ? &mono_get_intptr_class ()->byval_arg : sig->params [i - sig->hasthis];
+               case LLVMArgNormal: {
+                       MonoType *t = (sig->hasthis && i == 0) ? &mono_get_intptr_class ()->byval_arg : ainfo->type;
                        int opcode;
 
                        opcode = mono_type_to_regmove (cfg, t);
@@ -6382,6 +6919,9 @@ mono_llvm_emit_call (MonoCompile *cfg, MonoCallInst *call)
                        } else if (opcode == OP_LMOVE) {
                                MONO_INST_NEW (cfg, ins, OP_LMOVE);
                                ins->dreg = mono_alloc_lreg (cfg);
+                       } else if (opcode == OP_RMOVE) {
+                               MONO_INST_NEW (cfg, ins, OP_RMOVE);
+                               ins->dreg = mono_alloc_freg (cfg);
                        } else {
                                MONO_INST_NEW (cfg, ins, OP_MOVE);
                                ins->dreg = mono_alloc_ireg (cfg);
@@ -6393,15 +6933,21 @@ mono_llvm_emit_call (MonoCompile *cfg, MonoCallInst *call)
                case LLVMArgVtypeByRef:
                case LLVMArgVtypeInReg:
                case LLVMArgVtypeAsScalar:
+               case LLVMArgScalarByRef:
                case LLVMArgAsIArgs:
                case LLVMArgAsFpArgs:
+               case LLVMArgGsharedvtVariable:
+               case LLVMArgGsharedvtFixed:
+               case LLVMArgGsharedvtFixedVtype:
                        MONO_INST_NEW (cfg, ins, OP_LLVM_OUTARG_VT);
                        ins->dreg = mono_alloc_ireg (cfg);
                        ins->sreg1 = in->dreg;
-                       ins->klass = mono_class_from_mono_type (sig->params [i - sig->hasthis]);
+                       ins->inst_p0 = mono_mempool_alloc0 (cfg->mempool, sizeof (LLVMArgInfo));
+                       memcpy (ins->inst_p0, ainfo, sizeof (LLVMArgInfo));
+                       ins->inst_vtype = ainfo->type;
+                       ins->klass = mono_class_from_mono_type (ainfo->type);
                        break;
                default:
-                       call->cinfo = mono_arch_get_llvm_call_info (cfg, sig);
                        cfg->exception_message = g_strdup ("ainfo->storage");
                        cfg->disable_llvm = TRUE;
                        return;
@@ -6419,13 +6965,13 @@ alloc_cb (LLVMValueRef function, int size)
 {
        MonoCompile *cfg;
 
-       cfg = mono_native_tls_get_value (current_cfg_tls_id);
+       cfg = (MonoCompile*)mono_native_tls_get_value (current_cfg_tls_id);
 
        if (cfg) {
                // FIXME: dynamic
-               return mono_domain_code_reserve (cfg->domain, size);
+               return (unsigned char*)mono_domain_code_reserve (cfg->domain, size);
        } else {
-               return mono_domain_code_reserve (mono_domain_get (), size);
+               return (unsigned char*)mono_domain_code_reserve (mono_domain_get (), size);
        }
 }
 
@@ -6434,7 +6980,7 @@ emitted_cb (LLVMValueRef function, void *start, void *end)
 {
        MonoCompile *cfg;
 
-       cfg = mono_native_tls_get_value (current_cfg_tls_id);
+       cfg = (MonoCompile*)mono_native_tls_get_value (current_cfg_tls_id);
        g_assert (cfg);
        cfg->code_len = (guint8*)end - (guint8*)start;
 }
@@ -6448,7 +6994,7 @@ exception_cb (void *data)
        gpointer *type_info;
        int this_reg, this_offset;
 
-       cfg = mono_native_tls_get_value (current_cfg_tls_id);
+       cfg = (MonoCompile*)mono_native_tls_get_value (current_cfg_tls_id);
        g_assert (cfg);
 
        /*
@@ -6477,7 +7023,7 @@ exception_cb (void *data)
                }
        }
 
-       cfg->llvm_ex_info = mono_mempool_alloc0 (cfg->mempool, (ei_len + nested_len) * sizeof (MonoJitExceptionInfo));
+       cfg->llvm_ex_info = (MonoJitExceptionInfo*)mono_mempool_alloc0 (cfg->mempool, (ei_len + nested_len) * sizeof (MonoJitExceptionInfo));
        cfg->llvm_ex_info_len = ei_len + nested_len;
        memcpy (cfg->llvm_ex_info, ei, ei_len * sizeof (MonoJitExceptionInfo));
        /* Fill the rest of the information from the type info */
@@ -6635,6 +7181,7 @@ add_intrinsics (LLVMModuleRef module)
        }
 
        AddFunc2 (module, "llvm.expect.i8", LLVMInt8Type (), LLVMInt8Type (), LLVMInt8Type ());
+       AddFunc2 (module, "llvm.expect.i1", LLVMInt1Type (), LLVMInt1Type (), LLVMInt1Type ());
 
        /* EH intrinsics */
        {
@@ -6817,9 +7364,9 @@ add_intrinsics (LLVMModuleRef module)
 }
 
 static void
-add_types (MonoLLVMModule *lmodule)
+add_types (MonoLLVMModule *module)
 {
-       lmodule->ptr_type = LLVMPointerType (sizeof (gpointer) == 8 ? LLVMInt64Type () : LLVMInt32Type (), 0);
+       module->ptr_type = LLVMPointerType (sizeof (gpointer) == 8 ? LLVMInt64Type () : LLVMInt32Type (), 0);
 }
 
 void
@@ -6831,6 +7378,7 @@ mono_llvm_init (void)
 static void
 init_jit_module (MonoDomain *domain)
 {
+       MonoJitICallInfo *info;
        MonoJitDomainInfo *dinfo;
        MonoLLVMModule *module;
        char *name;
@@ -6849,15 +7397,20 @@ init_jit_module (MonoDomain *domain)
        module = g_new0 (MonoLLVMModule, 1);
 
        name = g_strdup_printf ("mono-%s", domain->friendly_name);
-       module->module = LLVMModuleCreateWithName (name);
+       module->lmodule = LLVMModuleCreateWithName (name);
+       module->context = LLVMGetGlobalContext ();
 
-       module->mono_ee = mono_llvm_create_ee (LLVMCreateModuleProviderForExistingModule (module->module), alloc_cb, emitted_cb, exception_cb, dlsym_cb, &module->ee);
+       module->mono_ee = (MonoEERef*)mono_llvm_create_ee (LLVMCreateModuleProviderForExistingModule (module->lmodule), alloc_cb, emitted_cb, exception_cb, dlsym_cb, &module->ee);
 
-       add_intrinsics (module->module);
+       add_intrinsics (module->lmodule);
        add_types (module);
 
        module->llvm_types = g_hash_table_new (NULL, NULL);
 
+       info = mono_find_jit_icall_by_name ("llvm_resume_unwind_trampoline");
+       g_assert (info);
+       LLVMAddGlobalMapping (module->ee, LLVMGetNamedFunction (module->lmodule, "llvm_resume_unwind_trampoline"), (void*)info->func);
+
        mono_memory_barrier ();
 
        dinfo->llvm_module = module;
@@ -6868,18 +7421,20 @@ init_jit_module (MonoDomain *domain)
 void
 mono_llvm_cleanup (void)
 {
-       if (aot_module.module)
-               LLVMDisposeModule (aot_module.module);
+       MonoLLVMModule *module = &aot_module;
+
+       if (module->lmodule)
+               LLVMDisposeModule (module->lmodule);
 
-       if (aot_module.context)
-               LLVMContextDispose (aot_module.context);
+       if (module->context)
+               LLVMContextDispose (module->context);
 }
 
 void
 mono_llvm_free_domain_info (MonoDomain *domain)
 {
        MonoJitDomainInfo *info = domain_jit_info (domain);
-       MonoLLVMModule *module = info->llvm_module;
+       MonoLLVMModule *module = (MonoLLVMModule*)info->llvm_module;
        int i;
 
        if (!module)
@@ -6905,35 +7460,37 @@ mono_llvm_free_domain_info (MonoDomain *domain)
 void
 mono_llvm_create_aot_module (MonoAssembly *assembly, const char *global_prefix, gboolean emit_dwarf, gboolean static_link, gboolean llvm_only)
 {
-       MonoLLVMModule *lmodule = &aot_module;
+       MonoLLVMModule *module = &aot_module;
 
        /* Delete previous module */
-       if (lmodule->plt_entries)
-               g_hash_table_destroy (lmodule->plt_entries);
-       if (lmodule->module)
-               LLVMDisposeModule (lmodule->module);
-
-       memset (lmodule, 0, sizeof (aot_module));
-
-       lmodule->module = LLVMModuleCreateWithName ("aot");
-       lmodule->assembly = assembly;
-       lmodule->global_prefix = g_strdup (global_prefix);
-       lmodule->got_symbol = g_strdup_printf ("%s_llvm_got", global_prefix);
-       lmodule->eh_frame_symbol = g_strdup_printf ("%s_eh_frame", global_prefix);
-       lmodule->get_method_symbol = g_strdup_printf ("%s_get_method", global_prefix);
-       lmodule->get_unbox_tramp_symbol = g_strdup_printf ("%s_get_unbox_tramp", global_prefix);
-       lmodule->external_symbols = TRUE;
-       lmodule->emit_dwarf = emit_dwarf;
-       lmodule->static_link = static_link;
-       lmodule->llvm_only = llvm_only;
+       if (module->plt_entries)
+               g_hash_table_destroy (module->plt_entries);
+       if (module->lmodule)
+               LLVMDisposeModule (module->lmodule);
+
+       memset (module, 0, sizeof (aot_module));
+
+       module->lmodule = LLVMModuleCreateWithName ("aot");
+       module->assembly = assembly;
+       module->global_prefix = g_strdup (global_prefix);
+       module->got_symbol = g_strdup_printf ("%s_llvm_got", global_prefix);
+       module->eh_frame_symbol = g_strdup_printf ("%s_eh_frame", global_prefix);
+       module->get_method_symbol = g_strdup_printf ("%s_get_method", global_prefix);
+       module->get_unbox_tramp_symbol = g_strdup_printf ("%s_get_unbox_tramp", global_prefix);
+       module->external_symbols = TRUE;
+       module->emit_dwarf = emit_dwarf;
+       module->static_link = static_link;
+       module->llvm_only = llvm_only;
        /* The first few entries are reserved */
-       lmodule->max_got_offset = 16;
-       lmodule->context = LLVMContextCreate ();
+       module->max_got_offset = 16;
+       module->context = LLVMContextCreate ();
 
+       if (llvm_only)
+               /* clang ignores our debug info because it has an invalid version */
+               module->emit_dwarf = FALSE;
 
-       add_intrinsics (lmodule->module);
-       add_types (lmodule);
-       emit_llvm_code_start (lmodule);
+       add_intrinsics (module->lmodule);
+       add_types (module);
 
        /* Add GOT */
        /*
@@ -6943,41 +7500,48 @@ mono_llvm_create_aot_module (MonoAssembly *assembly, const char *global_prefix,
         * its size is known in mono_llvm_emit_aot_module ().
         */
        {
-               LLVMTypeRef got_type = LLVMArrayType (lmodule->ptr_type, 0);
+               LLVMTypeRef got_type = LLVMArrayType (module->ptr_type, 0);
 
-               aot_module.got_var = LLVMAddGlobal (lmodule->module, got_type, "mono_dummy_got");
-               LLVMSetInitializer (lmodule->got_var, LLVMConstNull (got_type));
+               module->got_var = LLVMAddGlobal (module->lmodule, got_type, "mono_dummy_got");
+               LLVMSetInitializer (module->got_var, LLVMConstNull (got_type));
        }
 
        /* Add initialization array */
        if (llvm_only) {
                LLVMTypeRef inited_type = LLVMArrayType (LLVMInt8Type (), 0);
 
-               aot_module.inited_var = LLVMAddGlobal (aot_module.module, inited_type, "mono_inited_tmp");
-               LLVMSetInitializer (aot_module.inited_var, LLVMConstNull (inited_type));
+               module->inited_var = LLVMAddGlobal (aot_module.lmodule, inited_type, "mono_inited_tmp");
+               LLVMSetInitializer (module->inited_var, LLVMConstNull (inited_type));
        }
 
+       if (llvm_only)
+               emit_init_icall_wrappers (module);
+
+       emit_llvm_code_start (module);
+
        /* Add a dummy personality function */
        if (!use_debug_personality) {
-               LLVMValueRef personality = LLVMAddFunction (lmodule->module, default_personality_name, LLVMFunctionType (LLVMInt32Type (), NULL, 0, TRUE));
+               LLVMValueRef personality = LLVMAddFunction (module->lmodule, default_personality_name, LLVMFunctionType (LLVMInt32Type (), NULL, 0, TRUE));
                LLVMSetLinkage (personality, LLVMExternalLinkage);
-               mark_as_used (lmodule, personality);
+               mark_as_used (module, personality);
        }
 
        /* Add a reference to the c++ exception we throw/catch */
        {
                LLVMTypeRef exc = LLVMPointerType (LLVMInt8Type (), 0);
-               lmodule->sentinel_exception = LLVMAddGlobal (lmodule->module, exc, "_ZTIPi");
-               LLVMSetLinkage (lmodule->sentinel_exception, LLVMExternalLinkage);
-               mono_llvm_set_is_constant (lmodule->sentinel_exception);
+               module->sentinel_exception = LLVMAddGlobal (module->lmodule, exc, "_ZTIPi");
+               LLVMSetLinkage (module->sentinel_exception, LLVMExternalLinkage);
+               mono_llvm_set_is_constant (module->sentinel_exception);
        }
 
-       lmodule->llvm_types = g_hash_table_new (NULL, NULL);
-       lmodule->plt_entries = g_hash_table_new (g_str_hash, g_str_equal);
-       lmodule->plt_entries_ji = g_hash_table_new (NULL, NULL);
-       lmodule->method_to_lmethod = g_hash_table_new (NULL, NULL);
-       lmodule->idx_to_lmethod = g_hash_table_new (NULL, NULL);
-       lmodule->idx_to_unbox_tramp = g_hash_table_new (NULL, NULL);
+       module->llvm_types = g_hash_table_new (NULL, NULL);
+       module->plt_entries = g_hash_table_new (g_str_hash, g_str_equal);
+       module->plt_entries_ji = g_hash_table_new (NULL, NULL);
+       module->direct_callables = g_hash_table_new (g_str_hash, g_str_equal);
+       module->method_to_lmethod = g_hash_table_new (NULL, NULL);
+       module->idx_to_lmethod = g_hash_table_new (NULL, NULL);
+       module->idx_to_unbox_tramp = g_hash_table_new (NULL, NULL);
+       module->method_to_callers = g_hash_table_new (NULL, NULL);
 }
 
 static LLVMValueRef
@@ -7003,11 +7567,11 @@ llvm_array_from_uints (LLVMTypeRef el_type, guint32 *values, int nvalues)
 void
 mono_llvm_emit_aot_file_info (MonoAotFileInfo *info, gboolean has_jitted_code)
 {
-       MonoLLVMModule *lmodule = &aot_module;
+       MonoLLVMModule *module = &aot_module;
 
        /* Save these for later */
-       memcpy (&lmodule->aot_info, info, sizeof (MonoAotFileInfo));
-       lmodule->has_jitted_code = has_jitted_code;
+       memcpy (&module->aot_info, info, sizeof (MonoAotFileInfo));
+       module->has_jitted_code = has_jitted_code;
 }
 
 /*
@@ -7018,12 +7582,12 @@ mono_llvm_emit_aot_file_info (MonoAotFileInfo *info, gboolean has_jitted_code)
 void
 mono_llvm_emit_aot_data (const char *symbol, guint8 *data, int data_len)
 {
-       MonoLLVMModule *lmodule = &aot_module;
+       MonoLLVMModule *module = &aot_module;
        LLVMTypeRef type;
        LLVMValueRef d;
 
        type = LLVMArrayType (LLVMInt8Type (), data_len);
-       d = LLVMAddGlobal (lmodule->module, type, symbol);
+       d = LLVMAddGlobal (module->lmodule, type, symbol);
        LLVMSetVisibility (d, LLVMHiddenVisibility);
        LLVMSetLinkage (d, LLVMInternalLinkage);
        LLVMSetInitializer (d, mono_llvm_create_constant_data_array (data, data_len));
@@ -7032,19 +7596,19 @@ mono_llvm_emit_aot_data (const char *symbol, guint8 *data, int data_len)
 
 /* Add a reference to a global defined in JITted code */
 static LLVMValueRef
-AddJitGlobal (MonoLLVMModule *lmodule, LLVMTypeRef type, const char *name)
+AddJitGlobal (MonoLLVMModule *module, LLVMTypeRef type, const char *name)
 {
        char *s;
        LLVMValueRef v;
 
-       s = g_strdup_printf ("%s%s", lmodule->global_prefix, name);
-       v = LLVMAddGlobal (lmodule->module, LLVMInt8Type (), s);
+       s = g_strdup_printf ("%s%s", module->global_prefix, name);
+       v = LLVMAddGlobal (module->lmodule, LLVMInt8Type (), s);
        g_free (s);
        return v;
 }
 
 static void
-emit_aot_file_info (MonoLLVMModule *lmodule)
+emit_aot_file_info (MonoLLVMModule *module)
 {
        LLVMTypeRef file_info_type;
        LLVMTypeRef *eltypes, eltype;
@@ -7052,11 +7616,12 @@ emit_aot_file_info (MonoLLVMModule *lmodule)
        LLVMValueRef *fields;
        int i, nfields, tindex;
        MonoAotFileInfo *info;
+       LLVMModuleRef lmodule = module->lmodule;
 
-       info = &lmodule->aot_info;
+       info = &module->aot_info;
 
        /* Create an LLVM type to represent MonoAotFileInfo */
-       nfields = 2 + MONO_AOT_FILE_INFO_NUM_SYMBOLS + 13 + 4;
+       nfields = 2 + MONO_AOT_FILE_INFO_NUM_SYMBOLS + 15 + 5;
        eltypes = g_new (LLVMTypeRef, nfields);
        tindex = 0;
        eltypes [tindex ++] = LLVMInt32Type ();
@@ -7065,17 +7630,18 @@ emit_aot_file_info (MonoLLVMModule *lmodule)
        for (i = 0; i < MONO_AOT_FILE_INFO_NUM_SYMBOLS; ++i)
                eltypes [tindex ++] = LLVMPointerType (LLVMInt8Type (), 0);
        /* Scalars */
-       for (i = 0; i < 13; ++i)
+       for (i = 0; i < 15; ++i)
                eltypes [tindex ++] = LLVMInt32Type ();
        /* Arrays */
+       eltypes [tindex ++] = LLVMArrayType (LLVMInt32Type (), MONO_AOT_TABLE_NUM);
        for (i = 0; i < 4; ++i)
                eltypes [tindex ++] = LLVMArrayType (LLVMInt32Type (), MONO_AOT_TRAMP_NUM);
        g_assert (tindex == nfields);
-       file_info_type = LLVMStructCreateNamed (aot_module.context, "MonoAotFileInfo");
+       file_info_type = LLVMStructCreateNamed (module->context, "MonoAotFileInfo");
        LLVMStructSetBody (file_info_type, eltypes, nfields, FALSE);
 
-       info_var = LLVMAddGlobal (lmodule->module, file_info_type, "mono_aot_file_info");
-       if (lmodule->static_link) {
+       info_var = LLVMAddGlobal (lmodule, file_info_type, "mono_aot_file_info");
+       if (module->static_link) {
                LLVMSetVisibility (info_var, LLVMHiddenVisibility);
                LLVMSetLinkage (info_var, LLVMInternalLinkage);
        }
@@ -7090,69 +7656,74 @@ emit_aot_file_info (MonoLLVMModule *lmodule)
         * for symbols defined in the .s file emitted by the aot compiler.
         */
        eltype = eltypes [tindex];
-       if (lmodule->llvm_only)
+       if (module->llvm_only)
                fields [tindex ++] = LLVMConstNull (eltype);
        else
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "jit_got");
-       fields [tindex ++] = lmodule->got_var;
+               fields [tindex ++] = AddJitGlobal (module, eltype, "jit_got");
+       fields [tindex ++] = module->got_var;
        /* llc defines this directly */
-       if (!lmodule->llvm_only) {
-               fields [tindex ++] = LLVMAddGlobal (lmodule->module, eltype, lmodule->eh_frame_symbol);
+       if (!module->llvm_only) {
+               fields [tindex ++] = LLVMAddGlobal (lmodule, eltype, module->eh_frame_symbol);
                fields [tindex ++] = LLVMConstNull (eltype);
                fields [tindex ++] = LLVMConstNull (eltype);
        } else {
                fields [tindex ++] = LLVMConstNull (eltype);
-               fields [tindex ++] = lmodule->get_method;
-               fields [tindex ++] = lmodule->get_unbox_tramp;
+               fields [tindex ++] = module->get_method;
+               fields [tindex ++] = module->get_unbox_tramp;
        }
-       if (lmodule->has_jitted_code) {
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "jit_code_start");
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "jit_code_end");
+       if (module->has_jitted_code) {
+               fields [tindex ++] = AddJitGlobal (module, eltype, "jit_code_start");
+               fields [tindex ++] = AddJitGlobal (module, eltype, "jit_code_end");
        } else {
                fields [tindex ++] = LLVMConstNull (eltype);
                fields [tindex ++] = LLVMConstNull (eltype);
        }
-       if (!lmodule->llvm_only)
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "method_addresses");
+       if (!module->llvm_only)
+               fields [tindex ++] = AddJitGlobal (module, eltype, "method_addresses");
        else
                fields [tindex ++] = LLVMConstNull (eltype);
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "blob");
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "class_name_table");
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "class_info_offsets");
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "method_info_offsets");
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "ex_info_offsets");
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "extra_method_info_offsets");
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "extra_method_table");
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "got_info_offsets");
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "llvm_got_info_offsets");
+       if (info->flags & MONO_AOT_FILE_FLAG_SEPARATE_DATA) {
+               for (i = 0; i < MONO_AOT_TABLE_NUM; ++i)
+                       fields [tindex ++] = LLVMConstNull (eltype);
+       } else {
+               fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "blob");
+               fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "class_name_table");
+               fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "class_info_offsets");
+               fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "method_info_offsets");
+               fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "ex_info_offsets");
+               fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "extra_method_info_offsets");
+               fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "extra_method_table");
+               fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "got_info_offsets");
+               fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "llvm_got_info_offsets");
+               fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "image_table");
+       }
        /* Not needed (mem_end) */
        fields [tindex ++] = LLVMConstNull (eltype);
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "image_table");
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "assembly_guid");
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "runtime_version");
+       fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "assembly_guid");
+       fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "runtime_version");
        if (info->trampoline_size [0]) {
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "specific_trampolines");
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "static_rgctx_trampolines");
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "imt_thunks");
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "gsharedvt_arg_trampolines");
+               fields [tindex ++] = AddJitGlobal (module, eltype, "specific_trampolines");
+               fields [tindex ++] = AddJitGlobal (module, eltype, "static_rgctx_trampolines");
+               fields [tindex ++] = AddJitGlobal (module, eltype, "imt_thunks");
+               fields [tindex ++] = AddJitGlobal (module, eltype, "gsharedvt_arg_trampolines");
        } else {
                fields [tindex ++] = LLVMConstNull (eltype);
                fields [tindex ++] = LLVMConstNull (eltype);
                fields [tindex ++] = LLVMConstNull (eltype);
                fields [tindex ++] = LLVMConstNull (eltype);
        }
-       if (lmodule->static_link)
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "globals");
+       if (module->static_link && !module->llvm_only)
+               fields [tindex ++] = AddJitGlobal (module, eltype, "globals");
        else
                fields [tindex ++] = LLVMConstNull (eltype);
-       fields [tindex ++] = LLVMGetNamedGlobal (lmodule->module, "assembly_name");
-       if (!lmodule->llvm_only) {
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "plt");
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "plt_end");
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "unwind_info");
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "unbox_trampolines");
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "unbox_trampolines_end");
-               fields [tindex ++] = AddJitGlobal (lmodule, eltype, "unbox_trampoline_addresses");
+       fields [tindex ++] = LLVMGetNamedGlobal (lmodule, "assembly_name");
+       if (!module->llvm_only) {
+               fields [tindex ++] = AddJitGlobal (module, eltype, "plt");
+               fields [tindex ++] = AddJitGlobal (module, eltype, "plt_end");
+               fields [tindex ++] = AddJitGlobal (module, eltype, "unwind_info");
+               fields [tindex ++] = AddJitGlobal (module, eltype, "unbox_trampolines");
+               fields [tindex ++] = AddJitGlobal (module, eltype, "unbox_trampolines_end");
+               fields [tindex ++] = AddJitGlobal (module, eltype, "unbox_trampoline_addresses");
        } else {
                fields [tindex ++] = LLVMConstNull (eltype);
                fields [tindex ++] = LLVMConstNull (eltype);
@@ -7179,7 +7750,10 @@ emit_aot_file_info (MonoLLVMModule *lmodule)
        fields [tindex ++] = LLVMConstInt (LLVMInt32Type (), info->long_align, FALSE);
        fields [tindex ++] = LLVMConstInt (LLVMInt32Type (), info->generic_tramp_num, FALSE);
        fields [tindex ++] = LLVMConstInt (LLVMInt32Type (), info->tramp_page_size, FALSE);
+       fields [tindex ++] = LLVMConstInt (LLVMInt32Type (), info->nshared_got_entries, FALSE);
+       fields [tindex ++] = LLVMConstInt (LLVMInt32Type (), info->datafile_size, FALSE);
        /* Arrays */
+       fields [tindex ++] = llvm_array_from_uints (LLVMInt32Type (), info->table_offsets, MONO_AOT_TABLE_NUM);
        fields [tindex ++] = llvm_array_from_uints (LLVMInt32Type (), info->num_trampolines, MONO_AOT_TRAMP_NUM);
        fields [tindex ++] = llvm_array_from_uints (LLVMInt32Type (), info->trampoline_got_offset_base, MONO_AOT_TRAMP_NUM);
        fields [tindex ++] = llvm_array_from_uints (LLVMInt32Type (), info->trampoline_size, MONO_AOT_TRAMP_NUM);
@@ -7188,20 +7762,20 @@ emit_aot_file_info (MonoLLVMModule *lmodule)
 
        LLVMSetInitializer (info_var, LLVMConstNamedStruct (file_info_type, fields, nfields));
 
-       if (lmodule->static_link) {
+       if (module->static_link) {
                char *s, *p;
                LLVMValueRef var;
 
-               s = g_strdup_printf ("mono_aot_module_%s_info", lmodule->assembly->aname.name);
+               s = g_strdup_printf ("mono_aot_module_%s_info", module->assembly->aname.name);
                /* Get rid of characters which cannot occur in symbols */
                p = s;
                for (p = s; *p; ++p) {
                        if (!(isalnum (*p) || *p == '_'))
                                *p = '_';
                }
-               var = LLVMAddGlobal (lmodule->module, LLVMPointerType (LLVMInt8Type (), 0), s);
+               var = LLVMAddGlobal (module->lmodule, LLVMPointerType (LLVMInt8Type (), 0), s);
                g_free (s);
-               LLVMSetInitializer (var, LLVMConstBitCast (LLVMGetNamedGlobal (lmodule->module, "mono_aot_file_info"), LLVMPointerType (LLVMInt8Type (), 0)));
+               LLVMSetInitializer (var, LLVMConstBitCast (LLVMGetNamedGlobal (module->lmodule, "mono_aot_file_info"), LLVMPointerType (LLVMInt8Type (), 0)));
                LLVMSetLinkage (var, LLVMExternalLinkage);
        }
 }
@@ -7222,8 +7796,8 @@ mono_llvm_emit_aot_module (const char *filename, const char *cu_name)
         * Create the real got variable and replace all uses of the dummy variable with
         * the real one.
         */
-       got_type = LLVMArrayType (aot_module.ptr_type, module->max_got_offset + 1);
-       real_got = LLVMAddGlobal (aot_module.module, got_type, aot_module.got_symbol);
+       got_type = LLVMArrayType (module->ptr_type, module->max_got_offset + 1);
+       real_got = LLVMAddGlobal (module->lmodule, got_type, module->got_symbol);
        LLVMSetInitializer (real_got, LLVMConstNull (got_type));
        if (module->external_symbols) {
                LLVMSetLinkage (real_got, LLVMExternalLinkage);
@@ -7231,27 +7805,27 @@ mono_llvm_emit_aot_module (const char *filename, const char *cu_name)
        } else {
                LLVMSetLinkage (real_got, LLVMInternalLinkage);
        }
-       mono_llvm_replace_uses_of (aot_module.got_var, real_got);
+       mono_llvm_replace_uses_of (module->got_var, real_got);
 
        mark_as_used (&aot_module, real_got);
 
        /* Delete the dummy got so it doesn't become a global */
-       LLVMDeleteGlobal (aot_module.got_var);
-       aot_module.got_var = real_got;
+       LLVMDeleteGlobal (module->got_var);
+       module->got_var = real_got;
 
        /*
         * Same for the init_var
         */
-       if (aot_module.llvm_only) {
+       if (module->llvm_only) {
                inited_type = LLVMArrayType (LLVMInt8Type (), module->max_inited_idx + 1);
-               real_inited = LLVMAddGlobal (aot_module.module, inited_type, "mono_inited");
+               real_inited = LLVMAddGlobal (module->lmodule, inited_type, "mono_inited");
                LLVMSetInitializer (real_inited, LLVMConstNull (inited_type));
                LLVMSetLinkage (real_inited, LLVMInternalLinkage);
-               mono_llvm_replace_uses_of (aot_module.inited_var, real_inited);
-               LLVMDeleteGlobal (aot_module.inited_var);
+               mono_llvm_replace_uses_of (module->inited_var, real_inited);
+               LLVMDeleteGlobal (module->inited_var);
        }
 
-       if (aot_module.llvm_only) {
+       if (module->llvm_only) {
                emit_get_method (&aot_module);
                emit_get_unbox_tramp (&aot_module);
        }
@@ -7260,18 +7834,44 @@ mono_llvm_emit_aot_module (const char *filename, const char *cu_name)
        emit_dbg_info (&aot_module, filename, cu_name);
        emit_aot_file_info (&aot_module);
 
+       /*
+        * Replace GOT entries for directly callable methods with the methods themselves.
+        * It would be easier to implement this by predefining all methods before compiling
+        * their bodies, but that couldn't handle the case when a method fails to compile
+        * with llvm.
+        */
+       if (module->llvm_only) {
+               GHashTableIter iter;
+               MonoMethod *method;
+               GSList *callers, *l;
+
+               g_hash_table_iter_init (&iter, module->method_to_callers);
+               while (g_hash_table_iter_next (&iter, (void**)&method, (void**)&callers)) {
+                       LLVMValueRef lmethod;
+
+                       lmethod = (LLVMValueRef)g_hash_table_lookup (module->method_to_lmethod, method);
+                       if (lmethod) {
+                               for (l = callers; l; l = l->next) {
+                                       LLVMValueRef caller = (LLVMValueRef)l->data;
+
+                                       mono_llvm_replace_uses_of (caller, lmethod);
+                               }
+                       }
+               }
+       }
+
        /* Replace PLT entries for directly callable methods with the methods themselves */
        {
                GHashTableIter iter;
                MonoJumpInfo *ji;
                LLVMValueRef callee;
 
-               g_hash_table_iter_init (&iter, aot_module.plt_entries_ji);
+               g_hash_table_iter_init (&iter, module->plt_entries_ji);
                while (g_hash_table_iter_next (&iter, (void**)&ji, (void**)&callee)) {
                        if (mono_aot_is_direct_callable (ji)) {
                                LLVMValueRef lmethod;
 
-                               lmethod = g_hash_table_lookup (module->method_to_lmethod, ji->data.method);
+                               lmethod = (LLVMValueRef)g_hash_table_lookup (module->method_to_lmethod, ji->data.method);
                                /* The types might not match because the caller might pass an rgctx */
                                if (lmethod && LLVMTypeOf (callee) == LLVMTypeOf (lmethod)) {
                                        mono_llvm_replace_uses_of (callee, lmethod);
@@ -7285,13 +7885,13 @@ mono_llvm_emit_aot_module (const char *filename, const char *cu_name)
        {
                char *verifier_err;
 
-               if (LLVMVerifyModule (aot_module.module, LLVMReturnStatusAction, &verifier_err)) {
+               if (LLVMVerifyModule (module->module, LLVMReturnStatusAction, &verifier_err)) {
                        g_assert_not_reached ();
                }
        }
 #endif
 
-       LLVMWriteBitcodeToFile (aot_module.module, filename);
+       LLVMWriteBitcodeToFile (module->lmodule, filename);
 }
 
 
@@ -7304,9 +7904,9 @@ md_string (const char *s)
 /* Debugging support */
 
 static void
-emit_dbg_info (MonoLLVMModule *lmodule, const char *filename, const char *cu_name)
+emit_dbg_info (MonoLLVMModule *module, const char *filename, const char *cu_name)
 {
-       LLVMModuleRef module = lmodule->module;
+       LLVMModuleRef lmodule = module->lmodule;
        LLVMValueRef args [16], cu_args [16], cu, ver;
        int n_cuargs;
        char *build_info, *s, *dir;
@@ -7317,7 +7917,7 @@ emit_dbg_info (MonoLLVMModule *lmodule, const char *filename, const char *cu_nam
         * and the abbrev indexes will not be correct since llvm has added its own
         * abbrevs.
         */
-       if (!lmodule->emit_dwarf)
+       if (!module->emit_dwarf)
                return;
 
        /*
@@ -7353,14 +7953,14 @@ emit_dbg_info (MonoLLVMModule *lmodule, const char *filename, const char *cu_nam
        cu_args [n_cuargs ++] = LLVMMDNode (args, 0);
        cu_args [n_cuargs ++] = LLVMMDNode (args, 0);
        /* Subprograms */
-       if (lmodule->subprogram_mds) {
+       if (module->subprogram_mds) {
                LLVMValueRef *mds;
                int i;
 
-               mds = g_new0 (LLVMValueRef, lmodule->subprogram_mds->len);
-               for (i = 0; i < lmodule->subprogram_mds->len; ++i)
-                       mds [i] = g_ptr_array_index (lmodule->subprogram_mds, i);
-               cu_args [n_cuargs ++] = LLVMMDNode (mds, lmodule->subprogram_mds->len);
+               mds = g_new0 (LLVMValueRef, module->subprogram_mds->len);
+               for (i = 0; i < module->subprogram_mds->len; ++i)
+                       mds [i] = (LLVMValueRef)g_ptr_array_index (module->subprogram_mds, i);
+               cu_args [n_cuargs ++] = LLVMMDNode (mds, module->subprogram_mds->len);
        } else {
                cu_args [n_cuargs ++] = LLVMMDNode (args, 0);
        }
@@ -7373,25 +7973,25 @@ emit_dbg_info (MonoLLVMModule *lmodule, const char *filename, const char *cu_nam
        /* DebugEmissionKind = FullDebug */
        cu_args [n_cuargs ++] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
        cu = LLVMMDNode (cu_args, n_cuargs);
-       LLVMAddNamedMetadataOperand (module, "llvm.dbg.cu", cu);
+       LLVMAddNamedMetadataOperand (lmodule, "llvm.dbg.cu", cu);
 
        args [0] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
        args [1] = LLVMMDString ("Dwarf Version", strlen ("Dwarf Version"));
        args [2] = LLVMConstInt (LLVMInt32Type (), 2, FALSE);
        ver = LLVMMDNode (args, 3);
-       LLVMAddNamedMetadataOperand (module, "llvm.module.flags", ver);
+       LLVMAddNamedMetadataOperand (lmodule, "llvm.module.flags", ver);
 
        args [0] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
        args [1] = LLVMMDString ("Debug Info Version", strlen ("Debug Info Version"));
        args [2] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
        ver = LLVMMDNode (args, 3);
-       LLVMAddNamedMetadataOperand (module, "llvm.module.flags", ver);
+       LLVMAddNamedMetadataOperand (lmodule, "llvm.module.flags", ver);
 }
 
 static LLVMValueRef
 emit_dbg_subprogram (EmitContext *ctx, MonoCompile *cfg, LLVMValueRef method, const char *name)
 {
-       MonoLLVMModule *module = ctx->lmodule;
+       MonoLLVMModule *module = ctx->module;
        MonoDebugMethodInfo *minfo = ctx->minfo;
        char *source_file, *dir, *filename;
        LLVMValueRef md, args [16], ctx_args [16], md_args [64], type_args [16], ctx_md, type_md;
@@ -7509,188 +8109,6 @@ emit_dbg_loc (EmitContext *ctx, LLVMBuilderRef builder, const unsigned char *cil
        }
 }
 
-#if 0
-static gboolean show_native_addresses = TRUE;
-#else
-static gboolean show_native_addresses = FALSE;
-#endif
-
-static _Unwind_Reason_Code
-build_stack_trace (struct _Unwind_Context *frame_ctx, void *state)
-{
-       MonoDomain *domain = mono_domain_get ();
-       uintptr_t ip = _Unwind_GetIP (frame_ctx);
-
-       if (show_native_addresses || mono_jit_info_table_find (domain, (char*)ip)) {
-               GList **trace_ips = (GList **)state;
-               *trace_ips = g_list_prepend (*trace_ips, (gpointer)ip);
-       }
-
-       return _URC_NO_REASON;
-}
-
-static void
-throw_exception (MonoObject *ex, gboolean rethrow)
-{
-       MonoJitTlsData *jit_tls = mono_get_jit_tls ();
-       MonoException *mono_ex;
-
-       if (!mono_object_isinst (ex, mono_defaults.exception_class))
-               mono_ex = mono_get_exception_runtime_wrapped (ex);
-       else
-               mono_ex = (MonoException*)ex;
-
-       // Note: Not pinned
-       jit_tls->thrown_exc = mono_gchandle_new ((MonoObject*)mono_ex, FALSE);
-
-       if (!rethrow) {
-               GList *l, *ips = NULL;
-               GList *trace;
-
-               // FIXME: Move this to mini-exceptions.c
-               _Unwind_Backtrace (build_stack_trace, &ips);
-               /* The list contains gshared info-ip pairs */
-               trace = NULL;
-               ips = g_list_reverse (ips);
-               for (l = ips; l; l = l->next) {
-                       // FIXME:
-                       trace = g_list_append (trace, l->data);
-                       trace = g_list_append (trace, NULL);
-               }
-               MONO_OBJECT_SETREF (mono_ex, trace_ips, mono_glist_to_array (trace, mono_defaults.int_class));
-               g_list_free (l);
-               g_list_free (trace);
-       }
-
-       mono_llvm_cpp_throw_exception ();
-}
-
-void
-mono_llvm_throw_exception (MonoObject *ex)
-{
-       throw_exception (ex, FALSE);
-}
-
-void
-mono_llvm_rethrow_exception (MonoObject *ex)
-{
-       throw_exception (ex, TRUE);
-}
-
-void
-mono_llvm_raise_exception (MonoException *e)
-{
-       mono_llvm_throw_exception ((MonoObject*)e);
-}
-
-void
-mono_llvm_throw_corlib_exception (guint32 ex_token_index)
-{
-       guint32 ex_token = MONO_TOKEN_TYPE_DEF | ex_token_index;
-       MonoException *ex;
-
-       ex = mono_exception_from_token (mono_defaults.exception_class->image, ex_token);
-
-       mono_llvm_throw_exception ((MonoObject*)ex);
-}
-
-/*
- * mono_llvm_resume_exception:
- *
- *   Resume exception propagation.
- */
-void
-mono_llvm_resume_exception (void)
-{
-       mono_llvm_cpp_throw_exception ();
-}
-
-/*
- * mono_llvm_load_exception:
- *
- *   Return the currently thrown exception.
- */
-MonoObject *
-mono_llvm_load_exception (void)
-{
-       MonoJitTlsData *jit_tls = mono_get_jit_tls ();
-
-       MonoException *mono_ex = (MonoException*)mono_gchandle_get_target (jit_tls->thrown_exc);
-       g_assert (mono_ex->trace_ips);
-
-       GList *trace_ips = NULL;
-       gpointer ip = __builtin_return_address (0);
-
-       size_t upper = mono_array_length (mono_ex->trace_ips);
-
-       for (int i = 0; i < upper; i++) {
-               gpointer curr_ip = mono_array_get (mono_ex->trace_ips, gpointer, i);
-               trace_ips = g_list_prepend (trace_ips, curr_ip);
-
-               if (ip == curr_ip)
-                       break;
-       }
-
-       // FIXME: Does this work correctly for rethrows?
-       // We may be discarding useful information
-       // when this gets GC'ed
-       MONO_OBJECT_SETREF (mono_ex, trace_ips, mono_glist_to_array (trace_ips, mono_defaults.int_class));
-       g_list_free (trace_ips);
-
-       // FIXME:
-       //MONO_OBJECT_SETREF (mono_ex, stack_trace, ves_icall_System_Exception_get_trace (mono_ex));
-
-       return &mono_ex->object;
-}
-
-/*
- * mono_llvm_clear_exception:
- *
- *   Mark the currently thrown exception as handled.
- */
-void
-mono_llvm_clear_exception (void)
-{
-       MonoJitTlsData *jit_tls = mono_get_jit_tls ();
-       mono_gchandle_free (jit_tls->thrown_exc);
-       jit_tls->thrown_exc = 0;
-
-       mono_memory_barrier ();
-}
-
-/*
- * mono_llvm_match_exception:
- *
- *   Return the innermost clause containing REGION_START-REGION_END which can handle
- * the current exception.
- */
-gint32
-mono_llvm_match_exception (MonoJitInfo *jinfo, guint32 region_start, guint32 region_end)
-{
-       MonoJitTlsData *jit_tls = mono_get_jit_tls ();
-       MonoObject *exc;
-       gint32 index = -1;
-
-       g_assert (jit_tls->thrown_exc);
-       exc = mono_gchandle_get_target (jit_tls->thrown_exc);
-       for (int i = 0; i < jinfo->num_clauses; i++) {
-               MonoJitExceptionInfo *ei = &jinfo->clauses [i];
-
-               if (! (ei->try_offset == region_start && ei->try_offset + ei->try_len == region_end) )
-                       continue;
-
-               // FIXME: Handle edge cases handled in get_exception_catch_class
-               if (ei->flags == MONO_EXCEPTION_CLAUSE_NONE && mono_object_isinst (exc, ei->data.catch_class)) {
-                       index = ei->clause_index;
-                       break;
-               } else if (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER) {
-                       g_assert_not_reached ();
-               }
-       }
-
-       return index;
-}
-
 void
 default_mono_llvm_unhandled_exception (void)
 {
diff --git a/mono/mini/mini-llvm.h b/mono/mini/mini-llvm.h
new file mode 100644 (file)
index 0000000..b7ec016
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef __MONO_MINI_LLVM_H__
+#define __MONO_MINI_LLVM_H__
+
+#include "mini.h"
+
+/* LLVM backend */
+/* KEEP THIS IN SYNCH WITH mini-llvm-loaded.c */
+void     mono_llvm_init                     (void) MONO_LLVM_INTERNAL;
+void     mono_llvm_cleanup                  (void) MONO_LLVM_INTERNAL;
+void     mono_llvm_emit_method              (MonoCompile *cfg) MONO_LLVM_INTERNAL;
+void     mono_llvm_emit_call                (MonoCompile *cfg, MonoCallInst *call) MONO_LLVM_INTERNAL;
+void     mono_llvm_create_aot_module        (MonoAssembly *assembly, const char *global_prefix, gboolean emit_dwarf, gboolean static_link, gboolean llvm_only) MONO_LLVM_INTERNAL;
+void     mono_llvm_emit_aot_module          (const char *filename, const char *cu_name) MONO_LLVM_INTERNAL;
+void     mono_llvm_emit_aot_file_info       (MonoAotFileInfo *info, gboolean has_jitted_code) MONO_LLVM_INTERNAL;
+void     mono_llvm_emit_aot_data            (const char *symbol, guint8 *data, int data_len) MONO_LLVM_INTERNAL;
+void     mono_llvm_check_method_supported   (MonoCompile *cfg) MONO_LLVM_INTERNAL;
+void     mono_llvm_free_domain_info         (MonoDomain *domain) MONO_LLVM_INTERNAL;
+MONO_API void mono_personality              (void);
+int      mono_llvm_load                     (const char* bpath);
+void     mono_llvm_rethrow_exception (MonoObject *ex);
+void     mono_llvm_throw_exception (MonoObject *ex);
+void     mono_llvm_throw_corlib_exception (guint32 ex_token_index);
+void     mono_llvm_resume_exception (void);
+gint32   mono_llvm_match_exception (MonoJitInfo *jinfo, guint32 region_start, guint32 region_end);
+void     mono_llvm_clear_exception (void);
+MonoObject *mono_llvm_load_exception (void);
+void     mono_llvm_reset_exception (void);
+void     mono_llvm_raise_exception (MonoException *e);
+void     mono_llvm_create_vars (MonoCompile *cfg) MONO_LLVM_INTERNAL;
+
+gboolean mini_llvm_init                     (void);
+
+#endif
index 362fa3a14bac36bfaf82a57b24611e83821e706b..f9157a8690bc9d1ab6cdce0552381b25531de724 100644 (file)
@@ -57,8 +57,8 @@ enum {
 };
 
 /* This mutex protects architecture specific caches */
-#define mono_mini_arch_lock() mono_mutex_lock (&mini_arch_mutex)
-#define mono_mini_arch_unlock() mono_mutex_unlock (&mini_arch_mutex)
+#define mono_mini_arch_lock() mono_os_mutex_lock (&mini_arch_mutex)
+#define mono_mini_arch_unlock() mono_os_mutex_unlock (&mini_arch_mutex)
 static mono_mutex_t mini_arch_mutex;
 
 int mono_exc_esp_offset = 0;
@@ -713,7 +713,7 @@ mono_arch_cpu_init (void)
 void
 mono_arch_init (void)
 {
-       mono_mutex_init_recursive (&mini_arch_mutex);
+       mono_os_mutex_init_recursive (&mini_arch_mutex);
 
        ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
        bp_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
@@ -726,7 +726,7 @@ mono_arch_init (void)
 void
 mono_arch_cleanup (void)
 {
-       mono_mutex_destroy (&mini_arch_mutex);
+       mono_os_mutex_destroy (&mini_arch_mutex);
 }
 
 /*
@@ -4640,6 +4640,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        mono_add_patch_info (cfg, offset, (MonoJumpInfoType)ins->inst_c1, ins->inst_p0);
                        mips_load (code, ins->dreg, 0x0f0f0f0f);
                        break;
+               case OP_GC_SAFE_POINT:
+                       break;
 
 
                default:
index 4ff795aeb6cb9fb6d7bb3731a1238b0e698b2cec..7e1e72ce4978c9c82fcefbe77a3da12fc52102d4 100644 (file)
@@ -371,7 +371,7 @@ MINI_OP(OP_INOT,       "int_not", IREG, IREG, NONE)
 MINI_OP(OP_ICONV_TO_I1,"int_conv_to_i1", IREG, IREG, NONE)
 MINI_OP(OP_ICONV_TO_I2,"int_conv_to_i2", IREG, IREG, NONE)
 MINI_OP(OP_ICONV_TO_I4,"int_conv_to_i4", IREG, IREG, NONE)
-MINI_OP(OP_ICONV_TO_I8,"int_conv_to_i8", IREG, IREG, NONE)
+MINI_OP(OP_ICONV_TO_I8,"int_conv_to_i8", LREG, IREG, NONE)
 MINI_OP(OP_ICONV_TO_R4,"int_conv_to_r4", FREG, IREG, NONE)
 MINI_OP(OP_ICONV_TO_R8,"int_conv_to_r8", FREG, IREG, NONE)
 MINI_OP(OP_ICONV_TO_U4,"int_conv_to_u4", IREG, IREG, NONE)
@@ -540,11 +540,11 @@ MINI_OP(OP_FSUB_OVF_UN,   "float_sub_ovf_un", FREG, FREG, FREG)
 MINI_OP(OP_FCONV_TO_OVF_I1_UN,"float_conv_to_ovf_i1_un", IREG, FREG, NONE)
 MINI_OP(OP_FCONV_TO_OVF_I2_UN,"float_conv_to_ovf_i2_un", IREG, FREG, NONE)
 MINI_OP(OP_FCONV_TO_OVF_I4_UN,"float_conv_to_ovf_i4_un", IREG, FREG, NONE)
-MINI_OP(OP_FCONV_TO_OVF_I8_UN,"float_conv_to_ovf_i8_un", IREG, FREG, NONE)
+MINI_OP(OP_FCONV_TO_OVF_I8_UN,"float_conv_to_ovf_i8_un", LREG, FREG, NONE)
 MINI_OP(OP_FCONV_TO_OVF_U1_UN,"float_conv_to_ovf_u1_un", IREG, FREG, NONE)
 MINI_OP(OP_FCONV_TO_OVF_U2_UN,"float_conv_to_ovf_u2_un", IREG, FREG, NONE)
 MINI_OP(OP_FCONV_TO_OVF_U4_UN,"float_conv_to_ovf_u4_un", IREG, FREG, NONE)
-MINI_OP(OP_FCONV_TO_OVF_U8_UN,"float_conv_to_ovf_u8_un", IREG, FREG, NONE)
+MINI_OP(OP_FCONV_TO_OVF_U8_UN,"float_conv_to_ovf_u8_un", LREG, FREG, NONE)
 MINI_OP(OP_FCONV_TO_OVF_I_UN, "float_conv_to_ovf_i_un", IREG, FREG, NONE)
 MINI_OP(OP_FCONV_TO_OVF_U_UN, "float_conv_to_ovf_u_un", IREG, FREG, NONE)
 
@@ -554,8 +554,8 @@ MINI_OP(OP_FCONV_TO_OVF_I2,"float_conv_to_ovf_i2", IREG, FREG, NONE)
 MINI_OP(OP_FCONV_TO_OVF_U2,"float_conv_to_ovf_u2", IREG, FREG, NONE)
 MINI_OP(OP_FCONV_TO_OVF_I4,"float_conv_to_ovf_i4", IREG, FREG, NONE)
 MINI_OP(OP_FCONV_TO_OVF_U4,"float_conv_to_ovf_u4", IREG, FREG, NONE)
-MINI_OP(OP_FCONV_TO_OVF_I8,"float_conv_to_ovf_i8", IREG, FREG, NONE)
-MINI_OP(OP_FCONV_TO_OVF_U8,"float_conv_to_ovf_u8", IREG, FREG, NONE)
+MINI_OP(OP_FCONV_TO_OVF_I8,"float_conv_to_ovf_i8", LREG, FREG, NONE)
+MINI_OP(OP_FCONV_TO_OVF_U8,"float_conv_to_ovf_u8", LREG, FREG, NONE)
 
 /* These do the comparison too */
 MINI_OP(OP_FCEQ,   "float_ceq", IREG, FREG, FREG)
@@ -1067,6 +1067,8 @@ MINI_OP(OP_GC_SPILL_SLOT_LIVENESS_DEF, "gc_spill_slot_liveness_def", NONE, NONE,
  */
 MINI_OP(OP_GC_PARAM_SLOT_LIVENESS_DEF, "gc_param_slot_liveness_def", NONE, NONE, NONE)
 
+MINI_OP(OP_GC_SAFE_POINT, "gc_safe_point", NONE, IREG, NONE)
+
 /*
  * Check if the class given by sreg1 was inited, if not, call
  * mono_generic_class_init_trampoline () though a trampoline.
@@ -1076,10 +1078,6 @@ MINI_OP(OP_GC_PARAM_SLOT_LIVENESS_DEF, "gc_param_slot_liveness_def", NONE, NONE,
 MINI_OP(OP_GENERIC_CLASS_INIT, "generic_class_init", NONE, IREG, NONE)
 
 /* Arch specific opcodes */
-#if defined(TARGET_AMD64) || defined(TARGET_X86) || defined(TARGET_ARM) || defined(TARGET_ARM64)
-MINI_OP(OP_GC_SAFE_POINT,     "gc_safe_point", NONE, IREG, NONE)
-#endif
-
 #if defined(TARGET_X86) || defined(TARGET_AMD64)
 MINI_OP(OP_X86_TEST_NULL,          "x86_test_null", NONE, IREG, NONE)
 MINI_OP(OP_X86_COMPARE_MEMBASE_REG,"x86_compare_membase_reg", NONE, IREG, IREG)
index fe5cc782f833f26e4d965be3e4667654fc703f5d..962557058b4bedb68a655480a721c24b23230f71 100644 (file)
@@ -44,7 +44,7 @@
 #include <mono/metadata/mono-config.h>
 #include <mono/metadata/environment.h>
 #include <mono/metadata/mono-debug.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/threads-types.h>
 #include <mono/metadata/verify.h>
 #include <mono/metadata/verify-internals.h>
@@ -53,7 +53,7 @@
 #include <mono/utils/mono-math.h>
 #include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-counters.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/dtrace.h>
 #include <mono/utils/mono-signal-handler.h>
@@ -130,19 +130,19 @@ mono_gdb_render_native_backtraces (pid_t crashed_pid)
 
 static GHashTable *mono_saved_signal_handlers = NULL;
 
-static gpointer
+static struct sigaction *
 get_saved_signal_handler (int signo)
 {
        if (mono_saved_signal_handlers)
                /* The hash is only modified during startup, so no need for locking */
-               return g_hash_table_lookup (mono_saved_signal_handlers, GINT_TO_POINTER (signo));
+               return (struct sigaction *)g_hash_table_lookup (mono_saved_signal_handlers, GINT_TO_POINTER (signo));
        return NULL;
 }
 
 static void
 save_old_signal_handler (int signo, struct sigaction *old_action)
 {
-       struct sigaction *handler_to_save = g_malloc (sizeof (struct sigaction));
+       struct sigaction *handler_to_save = (struct sigaction *)g_malloc (sizeof (struct sigaction));
 
        mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_CONFIG,
                                "Saving old signal handler for signal %d.", signo);
@@ -189,7 +189,7 @@ gboolean
 MONO_SIG_HANDLER_SIGNATURE (mono_chain_signal)
 {
        int signal = MONO_SIG_HANDLER_GET_SIGNO ();
-       struct sigaction *saved_handler = get_saved_signal_handler (signal);
+       struct sigaction *saved_handler = (struct sigaction *)get_saved_signal_handler (signal);
 
        if (saved_handler && saved_handler->sa_handler) {
                if (!(saved_handler->sa_flags & SA_SIGINFO)) {
@@ -211,7 +211,7 @@ MONO_SIG_HANDLER_FUNC (static, sigabrt_signal_handler)
        MONO_SIG_HANDLER_GET_CONTEXT;
 
        if (mono_thread_internal_current ())
-               ji = mono_jit_info_table_find_internal (mono_domain_get (), mono_arch_ip_from_context (ctx), TRUE, TRUE);
+               ji = mono_jit_info_table_find_internal (mono_domain_get (), (char *)mono_arch_ip_from_context (ctx), TRUE, TRUE);
        if (!ji) {
         if (mono_chain_signal (MONO_SIG_HANDLER_PARAMS))
                        return;
@@ -257,15 +257,15 @@ per_thread_profiler_hit (void *ctx)
        MonoProfilerCallChainStrategy call_chain_strategy = mono_profiler_stat_get_call_chain_strategy ();
 
        if (call_chain_depth == 0) {
-               mono_profiler_stat_hit (mono_arch_ip_from_context (ctx), ctx);
+               mono_profiler_stat_hit ((guchar *)mono_arch_ip_from_context (ctx), ctx);
        } else {
-               MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+               MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
                int current_frame_index = 1;
                MonoContext mono_context;
                guchar *ips [call_chain_depth + 1];
 
                mono_sigctx_to_monoctx (ctx, &mono_context);
-               ips [0] = MONO_CONTEXT_GET_IP (&mono_context);
+               ips [0] = (guchar *)MONO_CONTEXT_GET_IP (&mono_context);
                
                if (jit_tls != NULL) {
                        if (call_chain_strategy == MONO_PROFILER_CALL_CHAIN_NATIVE) {
@@ -274,17 +274,17 @@ per_thread_profiler_hit (void *ctx)
                        guchar *stack_bottom;
                        guchar *stack_top;
                        
-                       stack_bottom = jit_tls->end_of_stack;
-                       stack_top = MONO_CONTEXT_GET_SP (&mono_context);
-                       current_frame = MONO_CONTEXT_GET_BP (&mono_context);
+                       stack_bottom = (guchar *)jit_tls->end_of_stack;
+                       stack_top = (guchar *)MONO_CONTEXT_GET_SP (&mono_context);
+                       current_frame = (guchar *)MONO_CONTEXT_GET_BP (&mono_context);
                        
                        while ((current_frame_index <= call_chain_depth) &&
                                        (stack_bottom IS_BEFORE_ON_STACK (guchar*) current_frame) &&
                                        ((guchar*) current_frame IS_BEFORE_ON_STACK stack_top)) {
-                               ips [current_frame_index] = CURRENT_FRAME_GET_RETURN_ADDRESS (current_frame);
+                               ips [current_frame_index] = (guchar *)CURRENT_FRAME_GET_RETURN_ADDRESS (current_frame);
                                current_frame_index ++;
                                stack_top = current_frame;
-                               current_frame = CURRENT_FRAME_GET_BASE_POINTER (current_frame);
+                               current_frame = (guchar *)CURRENT_FRAME_GET_BASE_POINTER (current_frame);
                        }
 #else
                                call_chain_strategy = MONO_PROFILER_CALL_CHAIN_GLIBC;
@@ -310,7 +310,7 @@ per_thread_profiler_hit (void *ctx)
                                        ji = mono_find_jit_info (domain, jit_tls, &res, NULL, &mono_context,
                                                        &new_mono_context, NULL, &lmf, &native_offset, NULL);
                                        while ((ji != NULL) && (current_frame_index <= call_chain_depth)) {
-                                               ips [current_frame_index] = MONO_CONTEXT_GET_IP (&new_mono_context);
+                                               ips [current_frame_index] = (guchar *)MONO_CONTEXT_GET_IP (&new_mono_context);
                                                current_frame_index ++;
                                                mono_context = new_mono_context;
                                                ji = mono_find_jit_info (domain, jit_tls, &res, NULL, &mono_context,
@@ -393,7 +393,7 @@ add_signal_handler (int signo, gpointer handler)
        struct sigaction previous_sa;
 
 #ifdef MONO_ARCH_USE_SIGACTION
-       sa.sa_sigaction = handler;
+       sa.sa_sigaction = (void (*)(int, siginfo_t *, void *))handler;
        sigemptyset (&sa.sa_mask);
        sa.sa_flags = SA_SIGINFO;
 #ifdef MONO_ARCH_SIGSEGV_ON_ALTSTACK
@@ -658,7 +658,7 @@ void
 mono_gdb_render_native_backtraces (pid_t crashed_pid)
 {
        const char *argv [9];
-       char template [] = "/tmp/mono-lldb-commands.XXXXXX";
+       char template_ [] = "/tmp/mono-lldb-commands.XXXXXX";
        char buf1 [128];
        FILE *commands;
        gboolean using_lldb = FALSE;
@@ -673,10 +673,10 @@ mono_gdb_render_native_backtraces (pid_t crashed_pid)
                return;
 
        if (using_lldb) {
-               if (mkstemp (template) == -1)
+               if (mkstemp (template_) == -1)
                        return;
 
-               commands = fopen (template, "w");
+               commands = fopen (template_, "w");
 
                fprintf (commands, "process attach --pid %ld\n", (long) crashed_pid);
                fprintf (commands, "thread list\n");
@@ -688,7 +688,7 @@ mono_gdb_render_native_backtraces (pid_t crashed_pid)
                fclose (commands);
 
                argv [1] = "--source";
-               argv [2] = template;
+               argv [2] = template_;
                argv [3] = 0;
        } else {
                argv [1] = "-ex";
@@ -705,7 +705,7 @@ mono_gdb_render_native_backtraces (pid_t crashed_pid)
        execv (argv [0], (char**)argv);
 
        if (using_lldb)
-               unlink (template);
+               unlink (template_);
 }
 #endif
 #endif /* __native_client__ */
index 70c4d8cd5d0a8cf8e6fca67fee73f04e01e7fc64..ee00251eeab0fc87a98ff1743637aff20d633f5e 100644 (file)
@@ -62,8 +62,8 @@ enum {
 #define BREAKPOINT_SIZE (PPC_LOAD_SEQUENCE_LENGTH + 4)
 
 /* This mutex protects architecture specific caches */
-#define mono_mini_arch_lock() mono_mutex_lock (&mini_arch_mutex)
-#define mono_mini_arch_unlock() mono_mutex_unlock (&mini_arch_mutex)
+#define mono_mini_arch_lock() mono_os_mutex_lock (&mini_arch_mutex)
+#define mono_mini_arch_unlock() mono_os_mutex_unlock (&mini_arch_mutex)
 static mono_mutex_t mini_arch_mutex;
 
 int mono_exc_esp_offset = 0;
@@ -625,13 +625,16 @@ mono_arch_init (void)
        if (mono_cpu_count () > 1)
                cpu_hw_caps |= PPC_SMP_CAPABLE;
 
-       mono_mutex_init_recursive (&mini_arch_mutex);
+       mono_os_mutex_init_recursive (&mini_arch_mutex);
 
        ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
        bp_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
        mono_mprotect (bp_trigger_page, mono_pagesize (), 0);
 
        mono_aot_register_jit_icall ("mono_ppc_throw_exception", mono_ppc_throw_exception);
+
+       // FIXME: Fix partial sharing for power and remove this
+       mono_set_partial_sharing_supported (FALSE);
 }
 
 /*
@@ -640,7 +643,7 @@ mono_arch_init (void)
 void
 mono_arch_cleanup (void)
 {
-       mono_mutex_destroy (&mini_arch_mutex);
+       mono_os_mutex_destroy (&mini_arch_mutex);
 }
 
 /*
@@ -901,6 +904,87 @@ typedef struct {
 
 #define DEBUG(a)
 
+
+#if PPC_RETURN_SMALL_FLOAT_STRUCTS_IN_FR_REGS
+//
+// Test if a structure is completely composed of either float XOR double fields and has fewer than
+// PPC_MOST_FLOAT_STRUCT_MEMBERS_TO_RETURN_VIA_REGISTER members.
+// If this is true the structure can be returned directly via float registers instead of by a hidden parameter
+// pointing to where the return value should be stored.
+// This is as per the ELF ABI v2.
+//
+static gboolean
+is_float_struct_returnable_via_regs  (MonoType *type, int* member_cnt, int* member_size)
+{
+       int local_member_cnt, local_member_size;         
+       if (!member_cnt) {
+               member_cnt = &local_member_cnt;
+       }
+       if (!member_size) {
+               member_size = &local_member_size;
+       }
+
+       gboolean is_all_floats = mini_type_is_hfa(type, member_cnt, member_size);
+       return is_all_floats && (*member_cnt <= PPC_MOST_FLOAT_STRUCT_MEMBERS_TO_RETURN_VIA_REGISTERS);
+}
+#else
+
+#define is_float_struct_returnable_via_regs(a,b,c) (FALSE)
+
+#endif
+
+#if PPC_RETURN_SMALL_STRUCTS_IN_REGS
+//
+// Test if a structure is smaller in size than 2 doublewords (PPC_LARGEST_STRUCT_SIZE_TO_RETURN_VIA_REGISTERS) and is
+// completely composed of fields all of basic types.
+// If this is true the structure can be returned directly via registers r3/r4 instead of by a hidden parameter
+// pointing to where the return value should be stored.
+// This is as per the ELF ABI v2.
+//
+static gboolean
+is_struct_returnable_via_regs  (MonoClass *klass, gboolean is_pinvoke)
+{
+       gboolean has_a_field = FALSE;
+       int size = 0;
+       if (klass) {
+               gpointer iter = NULL;
+               MonoClassField *f;
+               if (is_pinvoke)
+                       size = mono_type_native_stack_size (&klass->byval_arg, 0);
+               else
+                       size = mini_type_stack_size (&klass->byval_arg, 0);
+               if (size == 0)
+                       return TRUE;
+               if (size > PPC_LARGEST_STRUCT_SIZE_TO_RETURN_VIA_REGISTERS)
+                       return FALSE;
+               while ((f = mono_class_get_fields (klass, &iter))) {
+                       if (!(f->type->attrs & FIELD_ATTRIBUTE_STATIC)) {
+                               // TBD: Is there a better way to check for the basic types?
+                               if (f->type->byref) {
+                                       return FALSE;
+                               } else if ((f->type->type >= MONO_TYPE_BOOLEAN) && (f->type->type <= MONO_TYPE_R8)) {
+                                       has_a_field = TRUE;
+                               } else if (MONO_TYPE_ISSTRUCT (f->type)) {
+                                       MonoClass *klass = mono_class_from_mono_type (f->type);
+                                       if (is_struct_returnable_via_regs(klass, is_pinvoke)) {
+                                               has_a_field = TRUE;
+                                       } else {
+                                               return FALSE;
+                                       }
+                               } else {
+                                       return FALSE;
+                               }
+                       }
+               }
+       }
+       return has_a_field;
+}
+#else
+
+#define is_struct_returnable_via_regs(a,b) (FALSE)
+
+#endif
+
 static void inline
 add_general (guint *gr, guint *stack_size, ArgInfo *ainfo, gboolean simple)
 {
@@ -1123,16 +1207,15 @@ get_call_info (MonoMethodSignature *sig)
 #if PPC_PASS_SMALL_FLOAT_STRUCTS_IN_FR_REGS
                                int mbr_cnt = 0;
                                int mbr_size = 0;
-                               gboolean is_all_floats = mini_type_is_hfa (sig->params [i], &mbr_cnt, &mbr_size);
+                               gboolean is_all_floats = is_float_struct_returnable_via_regs (sig->params [i], &mbr_cnt, &mbr_size);
 
-                               if (is_all_floats && (mbr_cnt <= 8)) {
+                               if (is_all_floats) {
                                        rest = PPC_LAST_FPARG_REG - fr + 1;
                                }
                                // Pass small (<= 8 member) structures entirely made up of either float or double members
                                // in FR registers.  There have to be at least mbr_cnt registers left.
                                if (is_all_floats &&
-                                        (rest >= mbr_cnt) &&
-                                        (mbr_cnt <= 8)) {
+                                        (rest >= mbr_cnt)) {
                                        nregs = mbr_cnt;
                                        n_in_regs = MIN (rest, nregs);
                                        cinfo->args [n].regtype = RegTypeFPStructByVal;
@@ -1821,7 +1904,6 @@ void
 mono_arch_emit_setret (MonoCompile *cfg, MonoMethod *method, MonoInst *val)
 {
        MonoType *ret = mini_get_underlying_type (mono_method_signature (method)->ret);
-
        if (!ret->byref) {
 #ifndef __mono_ppc64__
                if (ret->type == MONO_TYPE_I8 || ret->type == MONO_TYPE_U8) {
@@ -2315,8 +2397,11 @@ mono_arch_decompose_opts (MonoCompile *cfg, MonoInst *ins)
                else
                        MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SHR_IMM, ins->dreg, result_shifted_reg, 32);
                ins->opcode = OP_NOP;
+               break;
        }
 #endif
+       default:
+               break;
        }
 }
 
@@ -4593,6 +4678,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ppc_mr (code, ins->dreg, ppc_r0);
                        break;
                }
+               case OP_GC_SAFE_POINT:
+                       break;
 
                default:
                        g_warning ("unknown opcode %s in %s()\n", mono_inst_name (ins->opcode), __FUNCTION__);
@@ -5967,7 +6054,7 @@ mono_arch_emit_load_got_addr (guint8 *start, guint8 *code, MonoCompile *cfg, Mon
  * r12.
  */
 guint8*
-mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, int tramp_type, gconstpointer target)
+mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, MonoJumpInfoType tramp_type, gconstpointer target)
 {
        /* Load the mscorlib got address */
        ppc_ldptr (code, ppc_r12, sizeof (gpointer), ppc_r30);
index 0c0c21084d39d8c464bc28c5eef7dd64f930fbe6..b0d4654de83ef98cbbb778de7b877fa6a16d860b 100644 (file)
@@ -130,13 +130,18 @@ typedef struct MonoCompileArch {
 #define PPC_STACK_PARAM_OFFSET 24
 #define PPC_MINIMAL_STACK_SIZE 24
 #define PPC_MINIMAL_PARAM_AREA_SIZE 0
+#define PPC_LARGEST_STRUCT_SIZE_TO_RETURN_VIA_REGISTERS 0
+#define PPC_MOST_FLOAT_STRUCT_MEMBERS_TO_RETURN_VIA_REGISTERS 0
 #define PPC_FIRST_ARG_REG ppc_r3
 #define PPC_LAST_ARG_REG ppc_r10
 #define PPC_FIRST_FPARG_REG ppc_f1
 #define PPC_LAST_FPARG_REG ppc_f13
 #define PPC_PASS_STRUCTS_BY_VALUE 1
 #define PPC_PASS_SMALL_FLOAT_STRUCTS_IN_FR_REGS 0
+#define PPC_RETURN_SMALL_FLOAT_STRUCTS_IN_FR_REGS 0
+#define PPC_RETURN_SMALL_STRUCTS_IN_REGS 0
 #define MONO_ARCH_HAVE_DECOMPOSE_VTYPE_OPTS 0
+#define MONO_ARCH_RETURN_CAN_USE_MULTIPLE_REGISTERS 0
 #else
 /* Linux */
 #ifdef __mono_ppc64__
@@ -145,19 +150,33 @@ typedef struct MonoCompileArch {
  #if (_CALL_ELF == 2)
   #define PPC_STACK_PARAM_OFFSET 32
   #define PPC_MINIMAL_STACK_SIZE 32
+  #define PPC_LARGEST_STRUCT_SIZE_TO_RETURN_VIA_REGISTERS 16
+  #define PPC_MOST_FLOAT_STRUCT_MEMBERS_TO_RETURN_VIA_REGISTERS 8
   #define PPC_PASS_SMALL_FLOAT_STRUCTS_IN_FR_REGS 1
+  #define PPC_RETURN_SMALL_FLOAT_STRUCTS_IN_FR_REGS 1
+  #define PPC_RETURN_SMALL_STRUCTS_IN_REGS 1
   #define MONO_ARCH_HAVE_DECOMPOSE_VTYPE_OPTS 1
-// FIXME: To get the test case  finally_block_ending_in_dead_bb  to work properly we need to define the following
+  #define MONO_ARCH_RETURN_CAN_USE_MULTIPLE_REGISTERS 1
+
+// FIXME: To get the test case  finally_block_ending_in_dead_bb  to work properly define the following
 // and then implement the fuction mono_arch_create_handler_block_trampoline.
 //  #define MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD 1
 
+// Define "DEBUG_ELFABIV2" to allow for debugging output for ELF ABI v2 function call and return codegen
 //  #define DEBUG_ELFABIV2
 
+  #define MONO_ARCH_LLVM_SUPPORTED 1
+
  #else
   #define PPC_STACK_PARAM_OFFSET 48
   #define PPC_MINIMAL_STACK_SIZE 48
+  #define PPC_LARGEST_STRUCT_SIZE_TO_RETURN_VIA_REGISTERS 0
+  #define PPC_MOST_FLOAT_STRUCT_MEMBERS_TO_RETURN_VIA_REGISTERS 0
   #define PPC_PASS_SMALL_FLOAT_STRUCTS_IN_FR_REGS 0
+  #define PPC_RETURN_SMALL_FLOAT_STRUCTS_IN_FR_REGS 0
+  #define PPC_RETURN_SMALL_STRUCTS_IN_REGS 0
   #define MONO_ARCH_HAVE_DECOMPOSE_VTYPE_OPTS 0
+  #define MONO_ARCH_RETURN_CAN_USE_MULTIPLE_REGISTERS 0
  #endif
 #define MONO_ARCH_HAVE_SETUP_ASYNC_CALLBACK 1
 #define PPC_MINIMAL_PARAM_AREA_SIZE 64
@@ -356,7 +375,7 @@ void mono_ppc_set_func_into_sigctx (void *sigctx, void *func);
 extern char* mono_type_full_name (MonoType *type);
 
 #define DEBUG_ELFABIV2_mono_print_type(a) \
-{if (getenv("DEBUG_ELFABIV2")) { printf("%s, size: %d\n", mono_type_get_name(&a->klass->byval_arg), mini_type_stack_size (NULL, a, 0)); fflush(stdout); } }
+{if (getenv("DEBUG_ELFABIV2")) { printf("%s, size: %d\n", mono_type_get_name(a), mini_type_stack_size (a, 0)); fflush(stdout); } }
 
 #define DEBUG_ELFABIV2_mono_print_class(a) \
 {if (getenv("DEBUG_ELFABIV2")) { printf("%s\n", mono_type_get_name(&a->byval_arg)); fflush(stdout); } }
index 5da93436e4c1c963e4d9257ad07418eb8ce6faa2..a11f89d5c3a0ee37a174d1ff6ba2261c66e1d3aa 100644 (file)
@@ -42,7 +42,7 @@
 #include <mono/metadata/mono-config.h>
 #include <mono/metadata/environment.h>
 #include <mono/metadata/mono-debug.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/threads-types.h>
 #include <mono/metadata/mempool-internals.h>
 #include <mono/metadata/attach.h>
@@ -51,7 +51,7 @@
 #include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/mono-error-internals.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-path.h>
 #include <mono/utils/mono-tls.h>
@@ -73,6 +73,7 @@
 #include "jit-icalls.h"
 
 #include "mini-gc.h"
+#include "mini-llvm.h"
 #include "debugger-agent.h"
 
 #ifdef MONO_ARCH_LLVM_SUPPORTED
@@ -108,8 +109,8 @@ int mini_verbose = 0;
  */
 gboolean mono_use_llvm = FALSE;
 
-#define mono_jit_lock() mono_mutex_lock (&jit_mutex)
-#define mono_jit_unlock() mono_mutex_unlock (&jit_mutex)
+#define mono_jit_lock() mono_os_mutex_lock (&jit_mutex)
+#define mono_jit_unlock() mono_os_mutex_unlock (&jit_mutex)
 static mono_mutex_t jit_mutex;
 
 static MonoCodeManager *global_codeman;
@@ -166,7 +167,7 @@ get_method_from_ip (void *ip)
        if (!domain)
                domain = mono_get_root_domain ();
 
-       ji = mono_jit_info_table_find_internal (domain, ip, TRUE, TRUE);
+       ji = mono_jit_info_table_find_internal (domain, (char *)ip, TRUE, TRUE);
        if (!ji) {
                user_data.ip = ip;
                user_data.method = NULL;
@@ -243,9 +244,9 @@ mono_print_method_from_ip (void *ip)
        MonoGenericSharingContext*gsctx;
        const char *shared_type;
 
-       ji = mini_jit_info_table_find_ext (domain, ip, TRUE, &target_domain);
+       ji = mini_jit_info_table_find_ext (domain, (char *)ip, TRUE, &target_domain);
        if (ji && ji->is_trampoline) {
-               MonoTrampInfo *tinfo = ji->d.tramp_info;
+               MonoTrampInfo *tinfo = (MonoTrampInfo *)ji->d.tramp_info;
 
                printf ("IP %p is at offset 0x%x of trampoline '%s'.\n", ip, (int)((guint8*)ip - tinfo->code), tinfo->name);
                return;
@@ -436,7 +437,7 @@ mono_create_unwind_op (int when, int tag, int reg, int val)
 MonoJumpInfoToken *
 mono_jump_info_token_new2 (MonoMemPool *mp, MonoImage *image, guint32 token, MonoGenericContext *context)
 {
-       MonoJumpInfoToken *res = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoToken));
+       MonoJumpInfoToken *res = (MonoJumpInfoToken *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoToken));
        res->image = image;
        res->token = token;
        res->has_context = context != NULL;
@@ -487,8 +488,8 @@ register_trampoline_jit_info (MonoDomain *domain, MonoTrampInfo *info)
 {
        MonoJitInfo *ji;
 
-       ji = mono_domain_alloc0 (domain, mono_jit_info_size (0, 0, 0));
-       mono_jit_info_init (ji, NULL, info->code, info->code_size, 0, 0, 0);
+       ji = (MonoJitInfo *)mono_domain_alloc0 (domain, mono_jit_info_size ((MonoJitInfoFlags)0, 0, 0));
+       mono_jit_info_init (ji, NULL, info->code, info->code_size, (MonoJitInfoFlags)0, 0, 0);
        ji->d.tramp_info = info;
        ji->is_trampoline = TRUE;
 
@@ -550,7 +551,7 @@ mono_tramp_info_cleanup (void)
        GSList *l;
 
        for (l = tramp_infos; l; l = l->next) {
-               MonoTrampInfo *info = l->data;
+               MonoTrampInfo *info = (MonoTrampInfo *)l->data;
 
                mono_tramp_info_free (info);
        }
@@ -564,7 +565,7 @@ register_trampolines (MonoDomain *domain)
        GSList *l;
 
        for (l = tramp_infos; l; l = l->next) {
-               MonoTrampInfo *info = l->data;
+               MonoTrampInfo *info = (MonoTrampInfo *)l->data;
 
                register_trampoline_jit_info (domain, info);
        }
@@ -655,7 +656,7 @@ mono_dynamic_code_hash_lookup (MonoDomain *domain, MonoMethod *method)
        MonoJitDynamicMethodInfo *res;
 
        if (domain_jit_info (domain)->dynamic_code_hash)
-               res = g_hash_table_lookup (domain_jit_info (domain)->dynamic_code_hash, method);
+               res = (MonoJitDynamicMethodInfo *)g_hash_table_lookup (domain_jit_info (domain)->dynamic_code_hash, method);
        else
                res = NULL;
        return res;
@@ -774,7 +775,7 @@ MonoLMF *
 mono_get_lmf (void)
 {
 #if defined(MONO_HAVE_FAST_TLS) && defined(MONO_ARCH_ENABLE_MONO_LMF_VAR)
-       return MONO_FAST_TLS_GET (mono_lmf);
+       return (MonoLMF *)MONO_FAST_TLS_GET (mono_lmf);
 #else
        MonoJitTlsData *jit_tls;
 
@@ -793,7 +794,7 @@ MonoLMF **
 mono_get_lmf_addr (void)
 {
 #ifdef MONO_HAVE_FAST_TLS
-       return MONO_FAST_TLS_GET (mono_lmf_addr);
+       return (MonoLMF **)MONO_FAST_TLS_GET (mono_lmf_addr);
 #else
        MonoJitTlsData *jit_tls;
 
@@ -832,7 +833,7 @@ mono_set_lmf (MonoLMF *lmf)
 MonoJitTlsData*
 mono_get_jit_tls (void)
 {
-       return mono_native_tls_get_value (mono_jit_tls_id);
+       return (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
 }
 
 static void
@@ -940,13 +941,13 @@ setup_jit_tls_data (gpointer stack_start, gpointer abort_func)
        MonoJitTlsData *jit_tls;
        MonoLMF *lmf;
 
-       jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        if (jit_tls)
                return jit_tls;
 
        jit_tls = g_new0 (MonoJitTlsData, 1);
 
-       jit_tls->abort_func = abort_func;
+       jit_tls->abort_func = (void (*)(MonoObject *))abort_func;
        jit_tls->end_of_stack = stack_start;
 
        mono_set_jit_tls (jit_tls);
@@ -1037,7 +1038,7 @@ mini_thread_cleanup (MonoNativeThreadId tid)
         * The current offender is mono_thread_manage which cleanup threads from the outside.
         */
        if (info && mono_thread_info_get_tid (info) == tid) {
-               jit_tls = info->jit_data;
+               jit_tls = (MonoJitTlsData *)info->jit_data;
                info->jit_data = NULL;
 
                mono_set_jit_tls (NULL);
@@ -1050,7 +1051,7 @@ mini_thread_cleanup (MonoNativeThreadId tid)
        } else {
                info = mono_thread_info_lookup (tid);
                if (info) {
-                       jit_tls = info->jit_data;
+                       jit_tls = (MonoJitTlsData *)info->jit_data;
                        info->jit_data = NULL;
                }
                mono_hazard_pointer_clear (mono_hazard_pointer_get (), 1);
@@ -1121,7 +1122,7 @@ mono_patch_info_list_prepend (MonoJumpInfo *list, int ip, MonoJumpInfoType type,
 MonoJumpInfo*
 mono_patch_info_dup_mp (MonoMemPool *mp, MonoJumpInfo *patch_info)
 {
-       MonoJumpInfo *res = mono_mempool_alloc (mp, sizeof (MonoJumpInfo));
+       MonoJumpInfo *res = (MonoJumpInfo *)mono_mempool_alloc (mp, sizeof (MonoJumpInfo));
        memcpy (res, patch_info, sizeof (MonoJumpInfo));
 
        switch (patch_info->type) {
@@ -1130,27 +1131,27 @@ mono_patch_info_dup_mp (MonoMemPool *mp, MonoJumpInfo *patch_info)
        case MONO_PATCH_INFO_TYPE_FROM_HANDLE:
        case MONO_PATCH_INFO_LDTOKEN:
        case MONO_PATCH_INFO_DECLSEC:
-               res->data.token = mono_mempool_alloc (mp, sizeof (MonoJumpInfoToken));
+               res->data.token = (MonoJumpInfoToken *)mono_mempool_alloc (mp, sizeof (MonoJumpInfoToken));
                memcpy (res->data.token, patch_info->data.token, sizeof (MonoJumpInfoToken));
                break;
        case MONO_PATCH_INFO_SWITCH:
-               res->data.table = mono_mempool_alloc (mp, sizeof (MonoJumpInfoBBTable));
+               res->data.table = (MonoJumpInfoBBTable *)mono_mempool_alloc (mp, sizeof (MonoJumpInfoBBTable));
                memcpy (res->data.table, patch_info->data.table, sizeof (MonoJumpInfoBBTable));
-               res->data.table->table = mono_mempool_alloc (mp, sizeof (MonoBasicBlock*) * patch_info->data.table->table_size);
+               res->data.table->table = (MonoBasicBlock **)mono_mempool_alloc (mp, sizeof (MonoBasicBlock*) * patch_info->data.table->table_size);
                memcpy (res->data.table->table, patch_info->data.table->table, sizeof (MonoBasicBlock*) * patch_info->data.table->table_size);
                break;
        case MONO_PATCH_INFO_RGCTX_FETCH:
        case MONO_PATCH_INFO_RGCTX_SLOT_INDEX:
-               res->data.rgctx_entry = mono_mempool_alloc (mp, sizeof (MonoJumpInfoRgctxEntry));
+               res->data.rgctx_entry = (MonoJumpInfoRgctxEntry *)mono_mempool_alloc (mp, sizeof (MonoJumpInfoRgctxEntry));
                memcpy (res->data.rgctx_entry, patch_info->data.rgctx_entry, sizeof (MonoJumpInfoRgctxEntry));
                res->data.rgctx_entry->data = mono_patch_info_dup_mp (mp, res->data.rgctx_entry->data);
                break;
        case MONO_PATCH_INFO_DELEGATE_TRAMPOLINE:
-               res->data.del_tramp = mono_mempool_alloc0 (mp, sizeof (MonoDelegateClassMethodPair));
+               res->data.del_tramp = (MonoDelegateClassMethodPair *)mono_mempool_alloc0 (mp, sizeof (MonoDelegateClassMethodPair));
                memcpy (res->data.del_tramp, patch_info->data.del_tramp, sizeof (MonoDelegateClassMethodPair));
                break;
        case MONO_PATCH_INFO_GSHAREDVT_CALL:
-               res->data.gsharedvt = mono_mempool_alloc (mp, sizeof (MonoJumpInfoGSharedVtCall));
+               res->data.gsharedvt = (MonoJumpInfoGSharedVtCall *)mono_mempool_alloc (mp, sizeof (MonoJumpInfoGSharedVtCall));
                memcpy (res->data.gsharedvt, patch_info->data.gsharedvt, sizeof (MonoJumpInfoGSharedVtCall));
                break;
        case MONO_PATCH_INFO_GSHAREDVT_METHOD: {
@@ -1159,15 +1160,15 @@ mono_patch_info_dup_mp (MonoMemPool *mp, MonoJumpInfo *patch_info)
                int i;
 
                oinfo = patch_info->data.gsharedvt_method;
-               info = mono_mempool_alloc (mp, sizeof (MonoGSharedVtMethodInfo));
+               info = (MonoGSharedVtMethodInfo *)mono_mempool_alloc (mp, sizeof (MonoGSharedVtMethodInfo));
                res->data.gsharedvt_method = info;
                memcpy (info, oinfo, sizeof (MonoGSharedVtMethodInfo));
-               info->entries = mono_mempool_alloc (mp, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->count_entries);
+               info->entries = (MonoRuntimeGenericContextInfoTemplate *)mono_mempool_alloc (mp, sizeof (MonoRuntimeGenericContextInfoTemplate) * info->count_entries);
                for (i = 0; i < oinfo->num_entries; ++i) {
                        MonoRuntimeGenericContextInfoTemplate *otemplate = &oinfo->entries [i];
-                       MonoRuntimeGenericContextInfoTemplate *template = &info->entries [i];
+                       MonoRuntimeGenericContextInfoTemplate *template_ = &info->entries [i];
 
-                       memcpy (template, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
+                       memcpy (template_, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
                }
                //info->locals_types = mono_mempool_alloc0 (mp, info->nlocals * sizeof (MonoType*));
                //memcpy (info->locals_types, oinfo->locals_types, info->nlocals * sizeof (MonoType*));
@@ -1178,7 +1179,7 @@ mono_patch_info_dup_mp (MonoMemPool *mp, MonoJumpInfo *patch_info)
                MonoJumpInfoVirtMethod *oinfo;
 
                oinfo = patch_info->data.virt_method;
-               info = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoVirtMethod));
+               info = (MonoJumpInfoVirtMethod *)mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoVirtMethod));
                res->data.virt_method = info;
                memcpy (info, oinfo, sizeof (MonoJumpInfoVirtMethod));
                break;
@@ -1235,6 +1236,7 @@ mono_patch_info_hash (gconstpointer data)
        case MONO_PATCH_INFO_MSCORLIB_GOT_ADDR:
        case MONO_PATCH_INFO_GC_CARD_TABLE_ADDR:
        case MONO_PATCH_INFO_GC_NURSERY_START:
+       case MONO_PATCH_INFO_GC_NURSERY_BITS:
        case MONO_PATCH_INFO_JIT_TLS_ID:
        case MONO_PATCH_INFO_GOT_OFFSET:
        case MONO_PATCH_INFO_GC_SAFE_POINT_FLAG:
@@ -1429,10 +1431,9 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
        case MONO_PATCH_INFO_GC_SAFE_POINT_FLAG:
 #if defined(__native_client_codegen__)
                target = (gpointer)&__nacl_thread_suspension_needed;
-#elif defined (USE_COOP_GC)
-               target = (gpointer)&mono_polling_required;
 #else
-               g_error ("Unsuported patch target");
+               g_assert (mono_threads_is_coop_enabled ());
+               target = (gpointer)&mono_polling_required;
 #endif
                break;
        case MONO_PATCH_INFO_SWITCH: {
@@ -1444,12 +1445,12 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                jump_table = g_malloc0 (sizeof(gpointer) * patch_info->data.table->table_size);
 #else
                if (method && method->dynamic) {
-                       jump_table = mono_code_manager_reserve (mono_dynamic_code_hash_lookup (domain, method)->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
+                       jump_table = (void **)mono_code_manager_reserve (mono_dynamic_code_hash_lookup (domain, method)->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
                } else {
                        if (mono_aot_only) {
-                               jump_table = mono_domain_alloc (domain, sizeof (gpointer) * patch_info->data.table->table_size);
+                               jump_table = (void **)mono_domain_alloc (domain, sizeof (gpointer) * patch_info->data.table->table_size);
                        } else {
-                               jump_table = mono_domain_code_reserve (domain, sizeof (gpointer) * patch_info->data.table->table_size);
+                               jump_table = (void **)mono_domain_code_reserve (domain, sizeof (gpointer) * patch_info->data.table->table_size);
                        }
                }
 #endif
@@ -1559,10 +1560,10 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                if (!mono_error_ok (&error))
                        g_error ("Could not patch ldtoken due to %s", mono_error_get_message (&error));
                mono_class_init (handle_class);
-               mono_class_init (mono_class_from_mono_type (handle));
+               mono_class_init (mono_class_from_mono_type ((MonoType *)handle));
 
                target =
-                       mono_type_get_object (domain, handle);
+                       mono_type_get_object (domain, (MonoType *)handle);
                break;
        }
        case MONO_PATCH_INFO_LDTOKEN: {
@@ -1641,14 +1642,6 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                        target = mono_arch_get_seq_point_info (domain, code);
                break;
 #endif
-       case MONO_PATCH_INFO_LLVM_IMT_TRAMPOLINE:
-#ifdef MONO_ARCH_LLVM_SUPPORTED
-               g_assert (mono_use_llvm);
-               target = mono_create_llvm_imt_trampoline (domain, patch_info->data.imt_tramp->method, patch_info->data.imt_tramp->vt_offset);
-#else
-               g_assert_not_reached ();
-#endif
-               break;
        case MONO_PATCH_INFO_GC_CARD_TABLE_ADDR: {
                int card_table_shift_bits;
                gpointer card_table_mask;
@@ -1663,6 +1656,15 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                target = mono_gc_get_nursery (&shift_bits, &size);
                break;
        }
+       case MONO_PATCH_INFO_GC_NURSERY_BITS: {
+               int shift_bits;
+               size_t size;
+
+               mono_gc_get_nursery (&shift_bits, &size);
+
+               target = (gpointer)(mgreg_t)shift_bits;
+               break;
+       }
        case MONO_PATCH_INFO_CASTCLASS_CACHE: {
                target = mono_domain_alloc0 (domain, sizeof (gpointer));
                break;
@@ -1674,7 +1676,7 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
        case MONO_PATCH_INFO_TLS_OFFSET: {
                int offset;
 
-               offset = mini_get_tls_offset (GPOINTER_TO_INT (patch_info->data.target));
+               offset = mini_get_tls_offset ((MonoTlsKey)GPOINTER_TO_INT (patch_info->data.target));
 #ifdef MONO_ARCH_HAVE_TRANSLATE_TLS_OFFSET
                offset = mono_arch_translate_tls_offset (offset);
 #endif
@@ -1689,8 +1691,8 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                int len;
                char *s;
 
-               len = strlen (patch_info->data.target);
-               s = mono_domain_alloc0 (domain, len + 1);
+               len = strlen ((const char *)patch_info->data.target);
+               s = (char *)mono_domain_alloc0 (domain, len + 1);
                memcpy (s, patch_info->data.target, len);
                target = s;
 
@@ -1744,10 +1746,10 @@ mini_lookup_method (MonoDomain *domain, MonoMethod *method, MonoMethod *shared)
        static int failed_lookups = 0;
 
        mono_domain_jit_code_hash_lock (domain);
-       ji = mono_internal_hash_table_lookup (&domain->jit_code_hash, method);
+       ji = (MonoJitInfo *)mono_internal_hash_table_lookup (&domain->jit_code_hash, method);
        if (!ji && shared) {
                /* Try generic sharing */
-               ji = mono_internal_hash_table_lookup (&domain->jit_code_hash, shared);
+               ji = (MonoJitInfo *)mono_internal_hash_table_lookup (&domain->jit_code_hash, shared);
                if (ji && !ji->has_generic_jit_info)
                        ji = NULL;
                if (!inited) {
@@ -1828,6 +1830,12 @@ mono_jit_map_is_enabled (void)
 
 #endif
 
+static void
+no_gsharedvt_in_wrapper (void)
+{
+       g_assert_not_reached ();
+}
+
 static gpointer
 mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException **ex)
 {
@@ -1850,14 +1858,10 @@ mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException
 
                /* Must be domain neutral since there is only one copy */
                opt |= MONO_OPT_SHARED;
-       }
-
-       if (method->dynamic)
-               opt &= ~MONO_OPT_SHARED;
-
-       /* These methods can become invalid when a domain is unloaded */
-       if (method->klass->image != mono_get_corlib () || method->is_inflated)
+       } else {
+               /* MONO_OPT_SHARED is no longer supported, we only use it for icall wrappers */
                opt &= ~MONO_OPT_SHARED;
+       }
 
        if (opt & MONO_OPT_SHARED)
                target_domain = mono_get_root_domain ();
@@ -1927,6 +1931,19 @@ mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException
                code = mono_jit_compile_method_inner (method, target_domain, opt, ex);
 
        if (!code && mono_llvm_only) {
+               if (method->wrapper_type == MONO_WRAPPER_UNKNOWN) {
+                       WrapperInfo *info = mono_marshal_get_wrapper_info (method);
+
+                       if (info->subtype == WRAPPER_SUBTYPE_GSHAREDVT_IN_SIG) {
+                               /*
+                                * These wrappers are only created for signatures which are in the program, but
+                                * sometimes we load methods too eagerly and have to create them even if they
+                                * will never be called.
+                                */
+                               return no_gsharedvt_in_wrapper;
+                       }
+               }
+
                printf ("AOT method not found in llvmonly mode: %s\n", mono_method_full_name (method, 1));
                g_assert_not_reached ();
        }
@@ -1940,7 +1957,7 @@ mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException
                /*
                 * SGEN requires the JIT info for these methods to be registered, see is_ip_in_managed_allocator ().
                 */
-               ji = mini_jit_info_table_find (mono_domain_get (), code, &d);
+               ji = mini_jit_info_table_find (mono_domain_get (), (char *)code, &d);
                g_assert (ji);
        }
 
@@ -2027,13 +2044,13 @@ mono_jit_free_method (MonoDomain *domain, MonoMethod *method)
 
                remove = NULL;
                for (tmp = jlist->list; tmp; tmp = tmp->next) {
-                       guint8 *ip = tmp->data;
+                       guint8 *ip = (guint8 *)tmp->data;
 
                        if (ip >= (guint8*)ji->ji->code_start && ip < (guint8*)ji->ji->code_start + ji->ji->code_size)
                                remove = g_slist_prepend (remove, tmp);
                }
                for (tmp = remove; tmp; tmp = tmp->next) {
-                       jlist->list = g_slist_delete_link (jlist->list, tmp->data);
+                       jlist->list = g_slist_delete_link ((GSList *)jlist->list, (GSList *)tmp->data);
                }
                g_slist_free (remove);
        }
@@ -2094,6 +2111,32 @@ mono_jit_find_compiled_method_with_jit_info (MonoDomain *domain, MonoMethod *met
        return NULL;
 }
 
+static guint32 bisect_opt = 0;
+static GHashTable *bisect_methods_hash = NULL;
+
+void
+mono_set_bisect_methods (guint32 opt, const char *method_list_filename)
+{
+       FILE *file;
+       char method_name [2048];
+
+       bisect_opt = opt;
+       bisect_methods_hash = g_hash_table_new (g_str_hash, g_str_equal);
+       g_assert (bisect_methods_hash);
+
+       file = fopen (method_list_filename, "r");
+       g_assert (file);
+
+       while (fgets (method_name, sizeof (method_name), file)) {
+               size_t len = strlen (method_name);
+               g_assert (len > 0);
+               g_assert (method_name [len - 1] == '\n');
+               method_name [len - 1] = 0;
+               g_hash_table_insert (bisect_methods_hash, g_strdup (method_name), GINT_TO_POINTER (1));
+       }
+       g_assert (feof (file));
+}
+
 gboolean mono_do_single_method_regression = FALSE;
 guint32 mono_single_method_regression_opt = 0;
 MonoMethod *mono_current_single_method;
@@ -2105,6 +2148,13 @@ mono_get_optimizations_for_method (MonoMethod *method, guint32 default_opt)
 {
        g_assert (method);
 
+       if (bisect_methods_hash) {
+               char *name = mono_method_full_name (method, TRUE);
+               void *res = g_hash_table_lookup (bisect_methods_hash, name);
+               g_free (name);
+               if (res)
+                       return default_opt | bisect_opt;
+       }
        if (!mono_do_single_method_regression)
                return default_opt;
        if (!mono_current_single_method) {
@@ -2134,9 +2184,206 @@ typedef struct {
        MonoVTable *vtable;
        MonoDynCallInfo *dyn_call_info;
        MonoClass *ret_box_class;
-       gboolean needs_rgctx;
+       MonoMethodSignature *sig;
+       gboolean gsharedvt_invoke;
+       gpointer *wrapper_arg;
 } RuntimeInvokeInfo;
 
+static RuntimeInvokeInfo*
+create_runtime_invoke_info (MonoDomain *domain, MonoMethod *method, gpointer compiled_method, gboolean callee_gsharedvt)
+{
+       MonoMethod *invoke;
+       RuntimeInvokeInfo *info;
+
+       info = g_new0 (RuntimeInvokeInfo, 1);
+       info->compiled_method = compiled_method;
+       info->sig = mono_method_signature (method);
+
+       invoke = mono_marshal_get_runtime_invoke (method, FALSE);
+       info->vtable = mono_class_vtable_full (domain, method->klass, TRUE);
+       g_assert (info->vtable);
+
+       MonoMethodSignature *sig = mono_method_signature (method);
+       MonoType *ret_type;
+
+       /*
+        * We want to avoid AOTing 1000s of runtime-invoke wrappers when running
+        * in full-aot mode, so we use a slower, but more generic wrapper if
+        * possible, built on top of the OP_DYN_CALL opcode provided by the JIT.
+        */
+#ifdef MONO_ARCH_DYN_CALL_SUPPORTED
+       if (!mono_llvm_only && (mono_aot_only || debug_options.dyn_runtime_invoke)) {
+               gboolean supported = TRUE;
+               int i;
+
+               if (method->string_ctor)
+                       sig = mono_marshal_get_string_ctor_signature (method);
+
+               for (i = 0; i < sig->param_count; ++i) {
+                       MonoType *t = sig->params [i];
+
+                       if (t->byref && t->type == MONO_TYPE_GENERICINST && mono_class_is_nullable (mono_class_from_mono_type (t)))
+                               supported = FALSE;
+               }
+
+               if (mono_class_is_contextbound (method->klass) || !info->compiled_method)
+                       supported = FALSE;
+
+               if (supported)
+                       info->dyn_call_info = mono_arch_dyn_call_prepare (sig);
+       }
+#endif
+
+       ret_type = sig->ret;
+       switch (ret_type->type) {
+       case MONO_TYPE_VOID:
+               break;
+       case MONO_TYPE_I1:
+       case MONO_TYPE_U1:
+       case MONO_TYPE_I2:
+       case MONO_TYPE_U2:
+       case MONO_TYPE_I4:
+       case MONO_TYPE_U4:
+       case MONO_TYPE_I:
+       case MONO_TYPE_U:
+       case MONO_TYPE_I8:
+       case MONO_TYPE_U8:
+       case MONO_TYPE_BOOLEAN:
+       case MONO_TYPE_CHAR:
+       case MONO_TYPE_R4:
+       case MONO_TYPE_R8:
+               info->ret_box_class = mono_class_from_mono_type (ret_type);
+               break;
+       case MONO_TYPE_PTR:
+               info->ret_box_class = mono_defaults.int_class;
+               break;
+       case MONO_TYPE_STRING:
+       case MONO_TYPE_CLASS:
+       case MONO_TYPE_ARRAY:
+       case MONO_TYPE_SZARRAY:
+       case MONO_TYPE_OBJECT:
+               break;
+       case MONO_TYPE_GENERICINST:
+               if (!MONO_TYPE_IS_REFERENCE (ret_type))
+                       info->ret_box_class = mono_class_from_mono_type (ret_type);
+               break;
+       case MONO_TYPE_VALUETYPE:
+               info->ret_box_class = mono_class_from_mono_type (ret_type);
+               break;
+       default:
+               g_assert_not_reached ();
+               break;
+       }
+
+       if (!info->dyn_call_info) {
+               if (mono_llvm_only) {
+#ifndef ENABLE_GSHAREDVT
+                       g_assert_not_reached ();
+#endif
+                       if (!callee_gsharedvt) {
+                               /* Invoke a gsharedvt out wrapper instead */
+                               MonoMethod *wrapper = mini_get_gsharedvt_out_sig_wrapper (sig);
+                               MonoMethodSignature *wrapper_sig = mini_get_gsharedvt_out_sig_wrapper_signature (sig->hasthis, sig->ret->type != MONO_TYPE_VOID, sig->param_count);
+
+                               info->gsharedvt_invoke = TRUE;
+                               info->wrapper_arg = g_malloc0 (2 * sizeof (gpointer));
+                               info->wrapper_arg [0] = info->compiled_method;
+                               info->wrapper_arg [1] = mono_method_needs_static_rgctx_invoke (method, TRUE) ? mini_method_get_rgctx (method) : NULL;
+
+                               /* Pass has_rgctx == TRUE since the wrapper has an extra arg */
+                               invoke = mono_marshal_get_runtime_invoke_for_sig (wrapper_sig);
+                               g_free (wrapper_sig);
+
+                               info->compiled_method = mono_jit_compile_method (wrapper);
+                       } else {
+                               /* Gsharedvt methods can be invoked the same way */
+                               /* The out wrapper has the same signature as the compiled gsharedvt method */
+                               MonoMethodSignature *wrapper_sig = mini_get_gsharedvt_out_sig_wrapper_signature (sig->hasthis, sig->ret->type != MONO_TYPE_VOID, sig->param_count);
+
+                               info->gsharedvt_invoke = TRUE;
+                               info->wrapper_arg = mono_method_needs_static_rgctx_invoke (method, TRUE) ? mini_method_get_rgctx (method) : NULL;
+
+                               invoke = mono_marshal_get_runtime_invoke_for_sig (wrapper_sig);
+                               g_free (wrapper_sig);
+                       }
+               }
+               info->runtime_invoke = mono_jit_compile_method (invoke);
+       }
+
+       return info;
+}
+
+static MonoObject*
+mono_llvmonly_runtime_invoke (MonoMethod *method, RuntimeInvokeInfo *info, void *obj, void **params, MonoObject **exc)
+{
+       MonoMethodSignature *sig = info->sig;
+       MonoDomain *domain = mono_domain_get ();
+       MonoObject *(*runtime_invoke) (MonoObject *this_obj, void **params, MonoObject **exc, void* compiled_method);
+       gpointer *args;
+       gpointer retval_ptr;
+       guint8 retval [256];
+       gpointer *param_refs;
+       int i, pindex;
+
+       g_assert (info->gsharedvt_invoke);
+
+       /*
+        * Instead of invoking the method directly, we invoke a gsharedvt out wrapper.
+        * The advantage of this is the gsharedvt out wrappers have a reduced set of
+        * signatures, so we only have to generate runtime invoke wrappers for these
+        * signatures.
+        * This code also handles invocation of gsharedvt methods directly, no
+        * out wrappers are used in that case.
+        */
+       args = (void **)g_alloca ((sig->param_count + sig->hasthis + 2) * sizeof (gpointer));
+       param_refs = (gpointer*)g_alloca ((sig->param_count + sig->hasthis + 2) * sizeof (gpointer));
+       pindex = 0;
+       /*
+        * The runtime invoke wrappers expects pointers to primitive types, so have to
+        * use indirections.
+        */
+       if (sig->hasthis)
+               args [pindex ++] = &obj;
+       if (sig->ret->type != MONO_TYPE_VOID) {
+               retval_ptr = (gpointer)&retval;
+               args [pindex ++] = &retval_ptr;
+       }
+       for (i = 0; i < sig->param_count; ++i) {
+               MonoType *t = sig->params [i];
+
+               if (t->type == MONO_TYPE_GENERICINST && mono_class_is_nullable (mono_class_from_mono_type (t))) {
+                       MonoClass *klass = mono_class_from_mono_type (t);
+                       guint8 *nullable_buf;
+                       int size;
+
+                       size = mono_class_value_size (klass, NULL);
+                       nullable_buf = g_alloca (size);
+                       g_assert (nullable_buf);
+
+                       /* The argument pointed to by params [i] is either a boxed vtype or null */
+                       mono_nullable_init (nullable_buf, (MonoObject*)params [i], klass);
+                       params [i] = nullable_buf;
+               }
+
+               if (MONO_TYPE_IS_REFERENCE (t)) {
+                       param_refs [i] = params [i];
+                       params [i] = &(param_refs [i]);
+               }
+               args [pindex ++] = &params [i];
+       }
+       /* The gsharedvt out wrapper has an extra argument which contains the method to call */
+       args [pindex ++] = &info->wrapper_arg;
+
+       runtime_invoke = (MonoObject *(*)(MonoObject *, void **, MonoObject **, void *))info->runtime_invoke;
+
+       runtime_invoke (NULL, args, exc, info->compiled_method);
+
+       if (sig->ret->type != MONO_TYPE_VOID && info->ret_box_class)
+               return mono_value_box (domain, info->ret_box_class, retval);
+       else
+               return *(MonoObject**)retval;
+}
+
 /**
  * mono_jit_runtime_invoke:
  * @method: the method to invoke
@@ -2148,10 +2395,12 @@ static MonoObject*
 mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObject **exc)
 {
        MonoMethod *invoke, *callee;
-       MonoObject *(*runtime_invoke) (MonoObject *this, void **params, MonoObject **exc, void* compiled_method);
+       MonoObject *(*runtime_invoke) (MonoObject *this_obj, void **params, MonoObject **exc, void* compiled_method);
        MonoDomain *domain = mono_domain_get ();
        MonoJitDomainInfo *domain_info;
        RuntimeInvokeInfo *info, *info2;
+       MonoJitInfo *ji = NULL;
+       gboolean callee_gsharedvt = FALSE;
 
        if (obj == NULL && !(method->flags & METHOD_ATTRIBUTE_STATIC) && !method->string_ctor && (method->wrapper_type == 0)) {
                g_warning ("Ignoring invocation of an instance method on a NULL instance.\n");
@@ -2160,7 +2409,7 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
 
        domain_info = domain_jit_info (domain);
 
-       info = mono_conc_hashtable_lookup (domain_info->runtime_invoke_hash, method);
+       info = (RuntimeInvokeInfo *)mono_conc_hashtable_lookup (domain_info->runtime_invoke_hash, method);
 
        if (!info) {
                if (mono_security_core_clr_enabled ()) {
@@ -2178,12 +2427,7 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                        }
                }
 
-               info = g_new0 (RuntimeInvokeInfo, 1);
-               info->needs_rgctx = mono_llvm_only && mono_method_needs_static_rgctx_invoke (method, TRUE);
-
-               invoke = mono_marshal_get_runtime_invoke (method, FALSE, info->needs_rgctx);
-               info->vtable = mono_class_vtable_full (domain, method->klass, TRUE);
-               g_assert (info->vtable);
+               gpointer compiled_method;
 
                callee = method;
                if (method->klass->rank && (method->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) &&
@@ -2199,7 +2443,7 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                                MonoMethod *wrapper;
 
                                wrapper = mono_marshal_get_array_accessor_wrapper (method);
-                               invoke = mono_marshal_get_runtime_invoke (wrapper, FALSE, FALSE);
+                               invoke = mono_marshal_get_runtime_invoke (wrapper, FALSE);
                                callee = wrapper;
                        } else {
                                callee = NULL;
@@ -2209,9 +2453,8 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                if (callee) {
                        MonoException *jit_ex = NULL;
 
-                       info->compiled_method = mono_jit_compile_method_with_opt (callee, mono_get_optimizations_for_method (callee, default_opt), &jit_ex);
-                       if (!info->compiled_method) {
-                               g_free (info);
+                       compiled_method = mono_jit_compile_method_with_opt (callee, mono_get_optimizations_for_method (callee, default_opt), &jit_ex);
+                       if (!compiled_method) {
                                g_assert (jit_ex);
                                if (exc) {
                                        *exc = (MonoObject*)jit_ex;
@@ -2222,90 +2465,21 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                                }
                        }
 
-                       info->compiled_method = mini_add_method_trampoline (callee, info->compiled_method, mono_method_needs_static_rgctx_invoke (callee, TRUE), FALSE);
-               } else {
-                       info->compiled_method = NULL;
-               }
-
-               /*
-                * We want to avoid AOTing 1000s of runtime-invoke wrappers when running
-                * in full-aot mode, so we use a slower, but more generic wrapper if
-                * possible, built on top of the OP_DYN_CALL opcode provided by the JIT.
-                */
-#ifdef MONO_ARCH_DYN_CALL_SUPPORTED
-               if (!mono_llvm_only && (mono_aot_only || debug_options.dyn_runtime_invoke)) {
-                       MonoType *ret_type;
-                       MonoMethodSignature *sig = mono_method_signature (method);
-                       gboolean supported = TRUE;
-                       int i;
-
-                       if (method->string_ctor)
-                               sig = mono_marshal_get_string_ctor_signature (method);
-                       g_assert (!info->needs_rgctx);
-
-                       for (i = 0; i < sig->param_count; ++i) {
-                               MonoType *t = sig->params [i];
-
-                               if (t->byref && t->type == MONO_TYPE_GENERICINST && mono_class_is_nullable (mono_class_from_mono_type (t)))
-                                       supported = FALSE;
+                       if (mono_llvm_only) {
+                               ji = mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (compiled_method), NULL);
+                               callee_gsharedvt = mini_jit_info_is_gsharedvt (ji);
                        }
 
-                       if (mono_class_is_contextbound (method->klass) || !info->compiled_method)
-                               supported = FALSE;
-
-                       if (supported)
-                               info->dyn_call_info = mono_arch_dyn_call_prepare (sig);
-
-                       ret_type = sig->ret;
-                       if (info->dyn_call_info) {
-                               switch (ret_type->type) {
-                               case MONO_TYPE_VOID:
-                                       break;
-                               case MONO_TYPE_I1:
-                               case MONO_TYPE_U1:
-                               case MONO_TYPE_I2:
-                               case MONO_TYPE_U2:
-                               case MONO_TYPE_I4:
-                               case MONO_TYPE_U4:
-                               case MONO_TYPE_I:
-                               case MONO_TYPE_U:
-                               case MONO_TYPE_I8:
-                               case MONO_TYPE_U8:
-                               case MONO_TYPE_BOOLEAN:
-                               case MONO_TYPE_CHAR:
-                               case MONO_TYPE_R4:
-                               case MONO_TYPE_R8:
-                                       info->ret_box_class = mono_class_from_mono_type (ret_type);
-                                       break;
-                               case MONO_TYPE_PTR:
-                                       info->ret_box_class = mono_defaults.int_class;
-                                       break;
-                               case MONO_TYPE_STRING:
-                               case MONO_TYPE_CLASS:
-                               case MONO_TYPE_ARRAY:
-                               case MONO_TYPE_SZARRAY:
-                               case MONO_TYPE_OBJECT:
-                                       break;
-                               case MONO_TYPE_GENERICINST:
-                                       if (!MONO_TYPE_IS_REFERENCE (ret_type))
-                                               info->ret_box_class = mono_class_from_mono_type (ret_type);
-                                       break;
-                               case MONO_TYPE_VALUETYPE:
-                                       info->ret_box_class = mono_class_from_mono_type (ret_type);
-                                       break;
-                               default:
-                                       g_assert_not_reached ();
-                                       break;
-                               }
-                       }
+                       if (!callee_gsharedvt)
+                               compiled_method = mini_add_method_trampoline (callee, compiled_method, mono_method_needs_static_rgctx_invoke (callee, TRUE), FALSE);
+               } else {
+                       compiled_method = NULL;
                }
-#endif
 
-               if (!info->dyn_call_info)
-                       info->runtime_invoke = mono_jit_compile_method (invoke);
+               info = create_runtime_invoke_info (domain, method, compiled_method, callee_gsharedvt);
 
                mono_domain_lock (domain);
-               info2 = mono_conc_hashtable_insert (domain_info->runtime_invoke_hash, method, info);
+               info2 = (RuntimeInvokeInfo *)mono_conc_hashtable_insert (domain_info->runtime_invoke_hash, method, info);
                mono_domain_unlock (domain);
                if (info2) {
                        g_free (info);
@@ -2313,8 +2487,6 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                }
        }
 
-       runtime_invoke = info->runtime_invoke;
-
        /*
         * We need this here because mono_marshal_get_runtime_invoke can place
         * the helper method in System.Object and not the target class.
@@ -2337,17 +2509,16 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                gpointer *args;
                static RuntimeInvokeDynamicFunction dyn_runtime_invoke;
                int i, pindex;
-               guint8 buf [256];
+               guint8 buf [512];
                guint8 retval [256];
-               gpointer rgctx;
 
                if (!dyn_runtime_invoke) {
                        invoke = mono_marshal_get_runtime_invoke_dynamic ();
-                       dyn_runtime_invoke = mono_jit_compile_method (invoke);
+                       dyn_runtime_invoke = (RuntimeInvokeDynamicFunction)mono_jit_compile_method (invoke);
                }
 
                /* Convert the arguments to the format expected by start_dyn_call () */
-               args = g_alloca ((sig->param_count + sig->hasthis + info->needs_rgctx) * sizeof (gpointer));
+               args = (void **)g_alloca ((sig->param_count + sig->hasthis) * sizeof (gpointer));
                pindex = 0;
                if (sig->hasthis)
                        args [pindex ++] = &obj;
@@ -2362,10 +2533,6 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                                args [pindex ++] = params [i];
                        }
                }
-               if (info->needs_rgctx) {
-                       rgctx = mini_method_get_rgctx (method);
-                       args [pindex ++] = &rgctx;
-               }
 
                //printf ("M: %s\n", mono_method_full_name (method, TRUE));
 
@@ -2382,22 +2549,198 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
        }
 #endif
 
-       if (info->needs_rgctx) {
-               MonoMethodSignature *sig = mono_method_signature (method);
-               gpointer rgctx;
-               gpointer *args;
-               int i, pindex;
+       if (mono_llvm_only)
+               return mono_llvmonly_runtime_invoke (method, info, obj, params, exc);
 
-               args = g_alloca ((sig->param_count + sig->hasthis + info->needs_rgctx) * sizeof (gpointer));
-               pindex = 0;
-               rgctx = mini_method_get_rgctx (method);
-               for (i = 0; i < sig->param_count; ++i)
-                       args [pindex ++] = params [i];
-               args [pindex ++] = &rgctx;
-               return runtime_invoke (obj, args, exc, info->compiled_method);
-       } else {
-               return runtime_invoke (obj, params, exc, info->compiled_method);
+       runtime_invoke = (MonoObject *(*)(MonoObject *, void **, MonoObject **, void *))info->runtime_invoke;
+
+       return runtime_invoke ((MonoObject *)obj, params, exc, info->compiled_method);
+}
+
+typedef struct {
+       MonoVTable *vtable;
+       int slot;
+} IMTThunkInfo;
+
+typedef gpointer (*IMTThunkFunc) (gpointer *arg, MonoMethod *imt_method);
+
+/*
+ * mini_llvmonly_initial_imt_thunk:
+ *
+ *  This function is called the first time a call is made through an IMT thunk.
+ * It should have the same signature as the mono_llvmonly_imt_thunk_... functions.
+ */
+static gpointer
+mini_llvmonly_initial_imt_thunk (gpointer *arg, MonoMethod *imt_method)
+{
+       IMTThunkInfo *info = (IMTThunkInfo*)arg;
+       gpointer *imt;
+       gpointer *ftndesc;
+       IMTThunkFunc func;
+
+       mono_vtable_build_imt_slot (info->vtable, info->slot);
+
+       imt = (gpointer*)info->vtable;
+       imt -= MONO_IMT_SIZE;
+
+       /* Return what the real IMT thunk returns */
+       ftndesc = imt [info->slot];
+       func = ftndesc [0];
+
+       if (func == (IMTThunkFunc)mini_llvmonly_initial_imt_thunk)
+               /* Happens when the imt slot contains only a generic virtual method */
+               return NULL;
+       return func ((gpointer *)ftndesc [1], imt_method);
+}
+
+/* This is called indirectly through an imt slot. */
+static gpointer
+mono_llvmonly_imt_thunk (gpointer *arg, MonoMethod *imt_method)
+{
+       int i = 0;
+
+       /* arg points to an array created in mono_llvmonly_get_imt_thunk () */
+       while (arg [i] && arg [i] != imt_method)
+               i += 2;
+       g_assert (arg [i]);
+
+       return arg [i + 1];
+}
+
+/* Optimized versions of mono_llvmonly_imt_thunk () for different table sizes */
+static gpointer
+mono_llvmonly_imt_thunk_1 (gpointer *arg, MonoMethod *imt_method)
+{
+       //g_assert (arg [0] == imt_method);
+       return arg [1];
+}
+
+static gpointer
+mono_llvmonly_imt_thunk_2 (gpointer *arg, MonoMethod *imt_method)
+{
+       //g_assert (arg [0] == imt_method || arg [2] == imt_method);
+       if (arg [0] == imt_method)
+               return arg [1];
+       else
+               return arg [3];
+}
+
+static gpointer
+mono_llvmonly_imt_thunk_3 (gpointer *arg, MonoMethod *imt_method)
+{
+       //g_assert (arg [0] == imt_method || arg [2] == imt_method || arg [4] == imt_method);
+       if (arg [0] == imt_method)
+               return arg [1];
+       else if (arg [2] == imt_method)
+               return arg [3];
+       else
+               return arg [5];
+}
+
+/*
+ * A version of the imt thunk used for generic virtual/variant iface methods.
+ * Unlikely a normal imt thunk, its possible that IMT_METHOD is not found
+ * in the search table. The original JIT code had a 'fallback' trampoline it could
+ * call, but we can't do that, so we just return NULL, and the compiled code
+ * will handle it.
+ */
+static gpointer
+mono_llvmonly_fallback_imt_thunk (gpointer *arg, MonoMethod *imt_method)
+{
+       int i = 0;
+
+       while (arg [i] && arg [i] != imt_method)
+               i += 2;
+       if (!arg [i])
+               return NULL;
+
+       return arg [i + 1];
+}
+
+static gpointer
+mono_llvmonly_get_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem **imt_entries, int count, gpointer fail_tramp)
+{
+       gpointer *buf;
+       gpointer *res;
+       int i, index, real_count;
+       gboolean virtual_generic = FALSE;
+
+       /*
+        * Create an array which is passed to the imt thunk functions.
+        * The array contains MonoMethod-function descriptor pairs, terminated by a NULL entry.
+        */
+
+       real_count = 0;
+       for (i = 0; i < count; ++i) {
+               MonoIMTCheckItem *item = imt_entries [i];
+
+               if (item->is_equals)
+                       real_count ++;
+               if (item->has_target_code)
+                       virtual_generic = TRUE;
        }
+
+       if (virtual_generic)
+               g_assert (fail_tramp);
+
+       /*
+        * Initialize all vtable entries reachable from this imt slot, so the compiled
+        * code doesn't have to check it.
+        */
+       for (i = 0; i < count; ++i) {
+               MonoIMTCheckItem *item = imt_entries [i];
+               int vt_slot;
+
+               if (!item->is_equals || item->has_target_code)
+                       continue;
+               vt_slot = item->value.vtable_slot;
+               mono_init_vtable_slot (vtable, vt_slot);
+       }
+
+       /* Save the entries into an array */
+       buf = (void **)mono_domain_alloc (domain, (real_count + 1) * 2 * sizeof (gpointer));
+       index = 0;
+       for (i = 0; i < count; ++i) {
+               MonoIMTCheckItem *item = imt_entries [i];
+
+               if (!item->is_equals)
+                       continue;
+
+               g_assert (item->key);
+               buf [(index * 2)] = item->key;
+               if (item->has_target_code)
+                       buf [(index * 2) + 1] = item->value.target_code;
+               else
+                       buf [(index * 2) + 1] = vtable->vtable [item->value.vtable_slot];
+               index ++;
+       }
+       buf [(index * 2)] = NULL;
+       buf [(index * 2) + 1] = fail_tramp;
+
+       /*
+        * Return a function descriptor for a C function with 'buf' as its argument.
+        * It will by called by JITted code.
+        */
+       res = (void **)mono_domain_alloc (domain, 2 * sizeof (gpointer));
+       switch (real_count) {
+       case 1:
+               res [0] = mono_llvmonly_imt_thunk_1;
+               break;
+       case 2:
+               res [0] = mono_llvmonly_imt_thunk_2;
+               break;
+       case 3:
+               res [0] = mono_llvmonly_imt_thunk_3;
+               break;
+       default:
+               res [0] = mono_llvmonly_imt_thunk;
+               break;
+       }
+       if (fail_tramp)
+               res [0] = mono_llvmonly_fallback_imt_thunk;
+       res [1] = buf;
+
+       return res;
 }
 
 MONO_SIG_HANDLER_FUNC (, mono_sigfpe_signal_handler)
@@ -2407,7 +2750,7 @@ MONO_SIG_HANDLER_FUNC (, mono_sigfpe_signal_handler)
        MONO_SIG_HANDLER_INFO_TYPE *info = MONO_SIG_HANDLER_GET_INFO ();
        MONO_SIG_HANDLER_GET_CONTEXT;
 
-       ji = mono_jit_info_table_find_internal (mono_domain_get (), mono_arch_ip_from_context (ctx), TRUE, TRUE);
+       ji = mono_jit_info_table_find_internal (mono_domain_get (), (char *)mono_arch_ip_from_context (ctx), TRUE, TRUE);
 
 #if defined(MONO_ARCH_HAVE_IS_INT_OVERFLOW)
        if (mono_arch_is_int_overflow (ctx, info))
@@ -2453,7 +2796,7 @@ MONO_SIG_HANDLER_FUNC (, mono_sigill_signal_handler)
 MONO_SIG_HANDLER_FUNC (, mono_sigsegv_signal_handler)
 {
        MonoJitInfo *ji;
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        gpointer fault_addr = NULL;
 #ifdef HAVE_SIG_INFO
        MONO_SIG_HANDLER_INFO_TYPE *info = MONO_SIG_HANDLER_GET_INFO ();
@@ -2493,7 +2836,7 @@ MONO_SIG_HANDLER_FUNC (, mono_sigsegv_signal_handler)
        }
 #endif
 
-       ji = mono_jit_info_table_find_internal (mono_domain_get (), mono_arch_ip_from_context (ctx), TRUE, TRUE);
+       ji = mono_jit_info_table_find_internal (mono_domain_get (), (char *)mono_arch_ip_from_context (ctx), TRUE, TRUE);
 
 #ifdef MONO_ARCH_SIGSEGV_ON_ALTSTACK
        if (mono_handle_soft_stack_ovf (jit_tls, ji, ctx, info, (guint8*)info->si_addr))
@@ -2577,10 +2920,10 @@ mono_jit_create_remoting_trampoline (MonoDomain *domain, MonoMethod *method, Mon
        if ((method->flags & METHOD_ATTRIBUTE_ABSTRACT) ||
            (mono_method_signature (method)->hasthis && (mono_class_is_marshalbyref (method->klass) || method->klass == mono_defaults.object_class))) {
                nm = mono_marshal_get_remoting_invoke_for_target (method, target);
-               addr = mono_compile_method (nm);
+               addr = (guint8 *)mono_compile_method (nm);
        } else
        {
-               addr = mono_compile_method (method);
+               addr = (guint8 *)mono_compile_method (method);
        }
        return mono_get_addr_from_ftnptr (addr);
 }
@@ -2602,17 +2945,25 @@ static gpointer *vtable_trampolines;
 static int vtable_trampolines_size;
 
 gpointer
-mini_get_vtable_trampoline (int slot_index)
+mini_get_vtable_trampoline (MonoVTable *vt, int slot_index)
 {
        int index = slot_index + MONO_IMT_SIZE;
 
        if (mono_llvm_only) {
-               /* Not used */
-               if (slot_index < 0)
-                       /* The vtable/imt construction code in object.c depends on this being non-NULL */
-                       return no_imt_trampoline;
-               else
-                       return no_vcall_trampoline;
+               if (slot_index < 0) {
+                       /* Initialize the IMT thunks to a 'trampoline' so the generated code doesn't have to initialize it */
+                       // FIXME: Memory management
+                       gpointer *ftndesc = g_malloc (2 * sizeof (gpointer));
+                       IMTThunkInfo *info = g_new0 (IMTThunkInfo, 1);
+                       info->vtable = vt;
+                       info->slot = index;
+                       ftndesc [0] = mini_llvmonly_initial_imt_thunk;
+                       ftndesc [1] = info;
+                       mono_memory_barrier ();
+                       return ftndesc;
+               } else {
+                       return NULL;
+               }
        }
 
        g_assert (slot_index >= - MONO_IMT_SIZE);
@@ -2631,7 +2982,7 @@ mini_get_vtable_trampoline (int slot_index)
                                memcpy (new_table, vtable_trampolines, vtable_trampolines_size * sizeof (gpointer));
                        g_free (vtable_trampolines);
                        mono_memory_barrier ();
-                       vtable_trampolines = new_table;
+                       vtable_trampolines = (void **)new_table;
                        vtable_trampolines_size = new_size;
                }
                mono_jit_unlock ();
@@ -2642,6 +2993,24 @@ mini_get_vtable_trampoline (int slot_index)
        return vtable_trampolines [index];
 }
 
+static gpointer
+mini_get_imt_trampoline (MonoVTable *vt, int slot_index)
+{
+       return mini_get_vtable_trampoline (vt, slot_index - MONO_IMT_SIZE);
+}
+
+static gboolean
+mini_imt_entry_inited (MonoVTable *vt, int imt_slot_index)
+{
+       if (mono_llvm_only)
+               return FALSE;
+
+       gpointer *imt = (gpointer*)vt;
+       imt -= MONO_IMT_SIZE;
+
+       return (imt [imt_slot_index] != mini_get_imt_trampoline (vt, imt_slot_index));
+}
+
 gpointer
 mono_get_delegate_virtual_invoke_impl (MonoMethodSignature *sig, MonoMethod *method)
 {
@@ -2661,7 +3030,7 @@ mono_get_delegate_virtual_invoke_impl (MonoMethodSignature *sig, MonoMethod *met
        is_interface = method->klass->flags & TYPE_ATTRIBUTE_INTERFACE ? TRUE : FALSE;
        load_imt_reg = is_virtual_generic || is_interface;
 
-       if (is_interface && !is_virtual_generic)
+       if (is_interface)
                offset = ((gint32)mono_method_get_imt_slot (method) - MONO_IMT_SIZE) * SIZEOF_VOID_P;
        else
                offset = G_STRUCT_OFFSET (MonoVTable, vtable) + ((mono_method_get_vtable_index (method)) * (SIZEOF_VOID_P));
@@ -2698,18 +3067,79 @@ mono_get_delegate_virtual_invoke_impl (MonoMethodSignature *sig, MonoMethod *met
                int ind = (load_imt_reg ? (-offset) : offset) / SIZEOF_VOID_P;
 
                sprintf (tramp_name, "delegate_virtual_invoke%s_%d", imt, ind);
-               cache [idx] = mono_aot_get_trampoline (tramp_name);
+               cache [idx] = (guint8 *)mono_aot_get_trampoline (tramp_name);
                g_assert (cache [idx]);
        } else {
-               cache [idx] = mono_arch_get_delegate_virtual_invoke_impl (sig, method, offset, load_imt_reg);
+               cache [idx] = (guint8 *)mono_arch_get_delegate_virtual_invoke_impl (sig, method, offset, load_imt_reg);
        }
        return cache [idx];
 }
 
-static gpointer
-mini_get_imt_trampoline (int slot_index)
+/**
+ * mini_parse_debug_option:
+ * @option: The option to parse.
+ *
+ * Parses debug options for the mono runtime. The options are the same as for
+ * the MONO_DEBUG environment variable.
+ *
+ */
+gboolean
+mini_parse_debug_option (const char *option)
 {
-       return mini_get_vtable_trampoline (slot_index - MONO_IMT_SIZE);
+       if (!strcmp (option, "handle-sigint"))
+               debug_options.handle_sigint = TRUE;
+       else if (!strcmp (option, "keep-delegates"))
+               debug_options.keep_delegates = TRUE;
+       else if (!strcmp (option, "reverse-pinvoke-exceptions"))
+               debug_options.reverse_pinvoke_exceptions = TRUE;
+       else if (!strcmp (option, "collect-pagefault-stats"))
+               debug_options.collect_pagefault_stats = TRUE;
+       else if (!strcmp (option, "break-on-unverified"))
+               debug_options.break_on_unverified = TRUE;
+       else if (!strcmp (option, "no-gdb-backtrace"))
+               debug_options.no_gdb_backtrace = TRUE;
+       else if (!strcmp (option, "suspend-on-sigsegv"))
+               debug_options.suspend_on_sigsegv = TRUE;
+       else if (!strcmp (option, "suspend-on-exception"))
+               debug_options.suspend_on_exception = TRUE;
+       else if (!strcmp (option, "suspend-on-unhandled"))
+               debug_options.suspend_on_unhandled = TRUE;
+       else if (!strcmp (option, "dont-free-domains"))
+               mono_dont_free_domains = TRUE;
+       else if (!strcmp (option, "dyn-runtime-invoke"))
+               debug_options.dyn_runtime_invoke = TRUE;
+       else if (!strcmp (option, "gdb"))
+               debug_options.gdb = TRUE;
+       else if (!strcmp (option, "explicit-null-checks"))
+               debug_options.explicit_null_checks = TRUE;
+       else if (!strcmp (option, "gen-seq-points"))
+               debug_options.gen_sdb_seq_points = TRUE;
+       else if (!strcmp (option, "gen-compact-seq-points"))
+               debug_options.gen_seq_points_compact_data = TRUE;
+       else if (!strcmp (option, "single-imm-size"))
+               debug_options.single_imm_size = TRUE;
+       else if (!strcmp (option, "init-stacks"))
+               debug_options.init_stacks = TRUE;
+       else if (!strcmp (option, "casts"))
+               debug_options.better_cast_details = TRUE;
+       else if (!strcmp (option, "soft-breakpoints"))
+               debug_options.soft_breakpoints = TRUE;
+       else if (!strcmp (option, "check-pinvoke-callconv"))
+               debug_options.check_pinvoke_callconv = TRUE;
+       else if (!strcmp (option, "arm-use-fallback-tls"))
+               debug_options.arm_use_fallback_tls = TRUE;
+       else if (!strcmp (option, "debug-domain-unload"))
+               mono_enable_debug_domain_unload (TRUE);
+       else if (!strcmp (option, "partial-sharing"))
+               mono_set_partial_sharing_supported (TRUE);
+       else if (!strcmp (option, "align-small-structs"))
+               mono_align_small_structs = TRUE;
+       else if (!strcmp (option, "native-debugger-break"))
+               debug_options.native_debugger_break = TRUE;
+       else
+               return FALSE;
+
+       return TRUE;
 }
 
 static void
@@ -2726,57 +3156,7 @@ mini_parse_debug_options (void)
        for (ptr = args; ptr && *ptr; ptr++) {
                const char *arg = *ptr;
 
-               if (!strcmp (arg, "handle-sigint"))
-                       debug_options.handle_sigint = TRUE;
-               else if (!strcmp (arg, "keep-delegates"))
-                       debug_options.keep_delegates = TRUE;
-               else if (!strcmp (arg, "reverse-pinvoke-exceptions"))
-                       debug_options.reverse_pinvoke_exceptions = TRUE;
-               else if (!strcmp (arg, "collect-pagefault-stats"))
-                       debug_options.collect_pagefault_stats = TRUE;
-               else if (!strcmp (arg, "break-on-unverified"))
-                       debug_options.break_on_unverified = TRUE;
-               else if (!strcmp (arg, "no-gdb-backtrace"))
-                       debug_options.no_gdb_backtrace = TRUE;
-               else if (!strcmp (arg, "suspend-on-sigsegv"))
-                       debug_options.suspend_on_sigsegv = TRUE;
-               else if (!strcmp (arg, "suspend-on-exception"))
-                       debug_options.suspend_on_exception = TRUE;
-               else if (!strcmp (arg, "suspend-on-unhandled"))
-                       debug_options.suspend_on_unhandled = TRUE;
-               else if (!strcmp (arg, "dont-free-domains"))
-                       mono_dont_free_domains = TRUE;
-               else if (!strcmp (arg, "dyn-runtime-invoke"))
-                       debug_options.dyn_runtime_invoke = TRUE;
-               else if (!strcmp (arg, "gdb"))
-                       debug_options.gdb = TRUE;
-               else if (!strcmp (arg, "explicit-null-checks"))
-                       debug_options.explicit_null_checks = TRUE;
-               else if (!strcmp (arg, "gen-seq-points"))
-                       debug_options.gen_sdb_seq_points = TRUE;
-               else if (!strcmp (arg, "gen-compact-seq-points"))
-                       debug_options.gen_seq_points_compact_data = TRUE;
-               else if (!strcmp (arg, "single-imm-size"))
-                       debug_options.single_imm_size = TRUE;
-               else if (!strcmp (arg, "init-stacks"))
-                       debug_options.init_stacks = TRUE;
-               else if (!strcmp (arg, "casts"))
-                       debug_options.better_cast_details = TRUE;
-               else if (!strcmp (arg, "soft-breakpoints"))
-                       debug_options.soft_breakpoints = TRUE;
-               else if (!strcmp (arg, "check-pinvoke-callconv"))
-                       debug_options.check_pinvoke_callconv = TRUE;
-               else if (!strcmp (arg, "arm-use-fallback-tls"))
-                       debug_options.arm_use_fallback_tls = TRUE;
-               else if (!strcmp (arg, "debug-domain-unload"))
-                       mono_enable_debug_domain_unload (TRUE);
-               else if (!strcmp (arg, "partial-sharing"))
-                       mono_set_partial_sharing_supported (TRUE);
-               else if (!strcmp (arg, "align-small-structs"))
-                       mono_align_small_structs = TRUE;
-               else if (!strcmp (arg, "native-debugger-break"))
-                       debug_options.native_debugger_break = TRUE;
-               else {
+               if (!mini_parse_debug_option (arg)) {
                        fprintf (stderr, "Invalid option for the MONO_DEBUG env variable: %s\n", arg);
                        fprintf (stderr, "Available options: 'handle-sigint', 'keep-delegates', 'reverse-pinvoke-exceptions', 'collect-pagefault-stats', 'break-on-unverified', 'no-gdb-backtrace', 'suspend-on-sigsegv', 'suspend-on-exception', 'suspend-on-unhandled', 'dont-free-domains', 'dyn-runtime-invoke', 'gdb', 'explicit-null-checks', 'gen-seq-points', 'gen-compact-seq-points', 'single-imm-size', 'init-stacks', 'casts', 'soft-breakpoints', 'check-pinvoke-callconv', 'arm-use-fallback-tls', 'debug-domain-unload', 'partial-sharing', 'align-small-structs', 'native-debugger-break'\n");
                        exit (1);
@@ -2862,8 +3242,8 @@ static void runtime_invoke_info_free (gpointer value);
 static gint
 class_method_pair_equal (gconstpointer ka, gconstpointer kb)
 {
-       const MonoClassMethodPair *apair = ka;
-       const MonoClassMethodPair *bpair = kb;
+       const MonoClassMethodPair *apair = (const MonoClassMethodPair *)ka;
+       const MonoClassMethodPair *bpair = (const MonoClassMethodPair *)kb;
 
        return apair->klass == bpair->klass && apair->method == bpair->method ? 1 : 0;
 }
@@ -2871,7 +3251,7 @@ class_method_pair_equal (gconstpointer ka, gconstpointer kb)
 static guint
 class_method_pair_hash (gconstpointer data)
 {
-       const MonoClassMethodPair *pair = data;
+       const MonoClassMethodPair *pair = (const MonoClassMethodPair *)data;
 
        return (gsize)pair->klass ^ (gsize)pair->method;
 }
@@ -2896,21 +3276,21 @@ mini_create_jit_domain_info (MonoDomain *domain)
 static void
 delete_jump_list (gpointer key, gpointer value, gpointer user_data)
 {
-       MonoJumpList *jlist = value;
+       MonoJumpList *jlist = (MonoJumpList *)value;
        g_slist_free (jlist->list);
 }
 
 static void
 delete_got_slot_list (gpointer key, gpointer value, gpointer user_data)
 {
-       GSList *list = value;
+       GSList *list = (GSList *)value;
        g_slist_free (list);
 }
 
 static void
 dynamic_method_info_free (gpointer key, gpointer value, gpointer user_data)
 {
-       MonoJitDynamicMethodInfo *di = value;
+       MonoJitDynamicMethodInfo *di = (MonoJitDynamicMethodInfo *)value;
        mono_code_manager_destroy (di->code_mp);
        g_free (di);
 }
@@ -3020,7 +3400,7 @@ mini_init (const char *filename, const char *runtime_version)
        }
 #endif
 
-       mono_mutex_init_recursive (&jit_mutex);
+       mono_os_mutex_init_recursive (&jit_mutex);
 
        mono_cross_helpers_run ();
 
@@ -3033,6 +3413,9 @@ mini_init (const char *filename, const char *runtime_version)
 #ifdef MONO_ARCH_GSHAREDVT_SUPPORTED
        if (mono_aot_only)
                mono_set_generic_sharing_vt_supported (TRUE);
+#else
+       if (mono_llvm_only)
+               mono_set_generic_sharing_vt_supported (TRUE);
 #endif
 
 #ifdef MONO_HAVE_FAST_TLS
@@ -3059,6 +3442,7 @@ mini_init (const char *filename, const char *runtime_version)
 
        callbacks.get_vtable_trampoline = mini_get_vtable_trampoline;
        callbacks.get_imt_trampoline = mini_get_imt_trampoline;
+       callbacks.imt_entry_inited = mini_imt_entry_inited;
 
        mono_install_callbacks (&callbacks);
 
@@ -3163,10 +3547,14 @@ mini_init (const char *filename, const char *runtime_version)
                mono_marshal_use_aot_wrappers (TRUE);
        }
 
-       if (mono_aot_only)
+       if (mono_llvm_only) {
+               mono_install_imt_thunk_builder (mono_llvmonly_get_imt_thunk);
+               mono_set_always_build_imt_thunks (TRUE);
+       } else if (mono_aot_only) {
                mono_install_imt_thunk_builder (mono_aot_get_imt_thunk);
-       else
+       } else {
                mono_install_imt_thunk_builder (mono_arch_build_imt_thunk);
+       }
 
        /*Init arch tls information only after the metadata side is inited to make sure we see dynamic appdomain tls keys*/
        mono_arch_finish_init ();
@@ -3260,20 +3648,18 @@ register_icalls (void)
        register_icall (mono_jit_set_domain, "mono_jit_set_domain", "void ptr", TRUE);
        register_icall (mono_domain_get, "mono_domain_get", "ptr", TRUE);
 
-#ifdef MONO_ARCH_LLVM_SUPPORTED
-#if defined(ENABLE_LLVM) && !defined(MONO_LLVM_LOADED)
        register_icall (mono_llvm_throw_exception, "mono_llvm_throw_exception", "void object", TRUE);
        register_icall (mono_llvm_rethrow_exception, "mono_llvm_rethrow_exception", "void object", TRUE);
        register_icall (mono_llvm_resume_exception, "mono_llvm_resume_exception", "void", TRUE);
        register_icall (mono_llvm_match_exception, "mono_llvm_match_exception", "int ptr int int", TRUE);
        register_icall (mono_llvm_clear_exception, "mono_llvm_clear_exception", NULL, TRUE);
        register_icall (mono_llvm_load_exception, "mono_llvm_load_exception", "object", TRUE);
-       register_icall (mono_llvm_set_unhandled_exception_handler, "mono_llvm_set_unhandled_exception_handler", NULL, TRUE);
        register_icall (mono_llvm_throw_corlib_exception, "mono_llvm_throw_corlib_exception", "void int", FALSE);
+#if defined(ENABLE_LLVM) && !defined(MONO_LLVM_LOADED)
+       register_icall (mono_llvm_set_unhandled_exception_handler, "mono_llvm_set_unhandled_exception_handler", NULL, TRUE);
 
        // FIXME: This is broken
        register_icall (mono_debug_personality, "mono_debug_personality", "int int int ptr ptr ptr", TRUE);
-#endif
 #endif
 
        register_dyn_icall (mono_get_throw_exception (), "mono_arch_throw_exception", "void object", TRUE);
@@ -3291,9 +3677,9 @@ register_icalls (void)
 #if defined(__native_client__) || defined(__native_client_codegen__)
        register_icall (mono_nacl_gc, "mono_nacl_gc", "void", FALSE);
 #endif
-#if defined(USE_COOP_GC)
-       register_icall (mono_threads_state_poll, "mono_threads_state_poll", "void", FALSE);
-#endif
+
+       if (mono_threads_is_coop_enabled ())
+               register_icall (mono_threads_state_poll, "mono_threads_state_poll", "void", FALSE);
 
 #ifndef MONO_ARCH_NO_EMULATE_LONG_MUL_OPTS
        register_opcode_emulation (OP_LMUL, "__emul_lmul", "long long long", mono_llmult, "mono_llmult", TRUE);
@@ -3330,9 +3716,7 @@ register_icalls (void)
 #endif
 
 #if defined(MONO_ARCH_EMULATE_MUL_DIV) || defined(MONO_ARCH_SOFT_FLOAT_FALLBACK)
-       if (ARCH_EMULATE_MUL_DIV || mono_arch_is_soft_float ()) {
-               register_opcode_emulation (OP_FDIV, "__emul_fdiv", "double double double", mono_fdiv, "mono_fdiv", FALSE);
-       }
+       register_opcode_emulation (OP_FDIV, "__emul_fdiv", "double double double", mono_fdiv, "mono_fdiv", FALSE);
 #endif
 
        register_opcode_emulation (OP_FCONV_TO_U8, "__emul_fconv_to_u8", "ulong double", mono_fconv_u8, "mono_fconv_u8", FALSE);
@@ -3475,8 +3859,12 @@ register_icalls (void)
        register_icall (mono_aot_init_gshared_method_this, "mono_aot_init_gshared_method_this", "void ptr int object", TRUE);
        register_icall (mono_aot_init_gshared_method_rgctx, "mono_aot_init_gshared_method_rgctx", "void ptr int ptr", TRUE);
 
-       register_icall_no_wrapper (mono_resolve_iface_call, "mono_resolve_iface_call", "ptr object int ptr ptr");
-       register_icall_no_wrapper (mono_resolve_vcall, "mono_resolve_vcall", "ptr object int ptr");
+       register_icall_no_wrapper (mono_resolve_iface_call_gsharedvt, "mono_resolve_iface_call_gsharedvt", "ptr object int ptr ptr");
+       register_icall_no_wrapper (mono_resolve_vcall_gsharedvt, "mono_resolve_vcall_gsharedvt", "ptr object int ptr ptr");
+       register_icall_no_wrapper (mono_resolve_generic_virtual_call, "mono_resolve_generic_virtual_call", "ptr ptr int ptr");
+       register_icall_no_wrapper (mono_resolve_generic_virtual_iface_call, "mono_resolve_generic_virtual_iface_call", "ptr ptr int ptr");
+       /* This needs a wrapper so it can have a preserveall cconv */
+       register_icall (mono_init_vtable_slot, "mono_init_vtable_slot", "ptr ptr int", FALSE);
        register_icall (mono_init_delegate, "mono_init_delegate", "void object object ptr", TRUE);
        register_icall (mono_init_delegate_virtual, "mono_init_delegate_virtual", "void object object ptr", TRUE);
        register_icall (mono_get_assembly_object, "mono_get_assembly_object", "object ptr", TRUE);
@@ -3562,7 +3950,7 @@ mini_cleanup (MonoDomain *domain)
        mono_runtime_cleanup (domain);
 #endif
 
-       free_jit_tls_data (mono_native_tls_get_value (mono_jit_tls_id));
+       free_jit_tls_data ((MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id));
 
        mono_icall_cleanup ();
 
@@ -3605,7 +3993,7 @@ mini_cleanup (MonoDomain *domain)
 
        mono_native_tls_free (mono_jit_tls_id);
 
-       mono_mutex_destroy (&jit_mutex);
+       mono_os_mutex_destroy (&jit_mutex);
 
        mono_code_manager_cleanup ();
 
@@ -3634,6 +4022,9 @@ mono_set_optimizations (guint32 opts)
        default_opt_set = TRUE;
 #ifdef MONO_ARCH_GSHAREDVT_SUPPORTED
        mono_set_generic_sharing_vt_supported (mono_aot_only || ((default_opt & MONO_OPT_GSHAREDVT) != 0));
+#else
+       if (mono_llvm_only)
+               mono_set_generic_sharing_vt_supported (TRUE);
 #endif
 }
 
@@ -3690,7 +4081,7 @@ mono_precompile_assembly (MonoAssembly *ass, void *user_data)
                }
                mono_compile_method (method);
                if (strcmp (method->name, "Finalize") == 0) {
-                       invoke = mono_marshal_get_runtime_invoke (method, FALSE, FALSE);
+                       invoke = mono_marshal_get_runtime_invoke (method, FALSE);
                        mono_compile_method (invoke);
                }
 #ifndef DISABLE_REMOTING
@@ -3740,8 +4131,8 @@ typedef struct MonoJumpTableChunk {
 } MonoJumpTableChunk;
 
 static MonoJumpTableChunk* g_jumptable;
-#define mono_jumptable_lock() mono_mutex_lock (&jumptable_mutex)
-#define mono_jumptable_unlock() mono_mutex_unlock (&jumptable_mutex)
+#define mono_jumptable_lock() mono_os_mutex_lock (&jumptable_mutex)
+#define mono_jumptable_unlock() mono_os_mutex_unlock (&jumptable_mutex)
 static mono_mutex_t jumptable_mutex;
 
 static  MonoJumpTableChunk*
@@ -3757,7 +4148,7 @@ void
 mono_jumptable_init (void)
 {
        if (g_jumptable == NULL) {
-               mono_mutex_init_recursive (&jumptable_mutex);
+               mono_os_mutex_init_recursive (&jumptable_mutex);
                g_jumptable = mono_create_jumptable_chunk (DEFAULT_JUMPTABLE_CHUNK_ELEMENTS);
        }
 }
@@ -3813,7 +4204,7 @@ mono_jumptable_cleanup (void)
                        current = prev;
                }
                g_jumptable = NULL;
-               mono_mutex_destroy (&jumptable_mutex);
+               mono_os_mutex_destroy (&jumptable_mutex);
        }
 }
 
index 0805dd3aeda8e7ec822785c814265d09cf16a333..8c27ecee48800ef818ba54ad87b8a01a66c69ca3 100644 (file)
@@ -246,8 +246,8 @@ if (ins->inst_target_bb->native_offset) {                                   \
 #define JUMP_SIZE      6
 #define ENABLE_WRONG_METHOD_CHECK 0
 
-#define mono_mini_arch_lock() mono_mutex_lock (&mini_arch_mutex)
-#define mono_mini_arch_unlock() mono_mutex_unlock (&mini_arch_mutex)
+#define mono_mini_arch_lock() mono_os_mutex_lock (&mini_arch_mutex)
+#define mono_mini_arch_unlock() mono_os_mutex_unlock (&mini_arch_mutex)
 
 /*========================= End of Defines =========================*/
 
@@ -413,6 +413,27 @@ breakpoint_t breakpointCode;
 
 static mono_mutex_t mini_arch_mutex;
 
+static const char * grNames[] = {
+       "s390_r0", "s390_sp", "s390_r2", "s390_r3", "s390_r4",
+       "s390_r5", "s390_r6", "s390_r7", "s390_r8", "s390_r9",
+       "s390_r10", "s390_r11", "s390_r12", "s390_r13", "s390_r14",
+       "s390_r15"
+};
+
+static const char * fpNames[] = {
+       "s390_f0", "s390_f1", "s390_f2", "s390_f3", "s390_f4",
+       "s390_f5", "s390_f6", "s390_f7", "s390_f8", "s390_f9",
+       "s390_f10", "s390_f11", "s390_f12", "s390_f13", "s390_f14",
+       "s390_f15"
+};
+
+static const char * vrNames[] = {
+       "vr0",  "vr1",  "vr2",  "vr3",  "vr4",  "vr5",  "vr6",  "vr7", 
+       "vr8",  "vr9",  "vr10", "vr11", "vr12", "vr13", "vr14", "vr15",
+       "vr16", "vr17", "vr18", "vr19", "vr20", "vr21", "vr22", "vr23",
+       "vr24", "vr25", "vr26", "vr27", "vr28", "vr29", "vr30", "vr31"
+};
+
 /*====================== End of Global Variables ===================*/
 
 /*------------------------------------------------------------------*/
@@ -425,16 +446,10 @@ static mono_mutex_t mini_arch_mutex;
 /*------------------------------------------------------------------*/
 
 const char*
-mono_arch_regname (int reg) {
-       static const char * rnames[] = {
-               "s390_r0", "s390_sp", "s390_r2", "s390_r3", "s390_r4",
-               "s390_r5", "s390_r6", "s390_r7", "s390_r8", "s390_r9",
-               "s390_r10", "s390_r11", "s390_r12", "s390_r13", "s390_r14",
-               "s390_r15"
-       };
-
+mono_arch_regname (int reg) 
+{
        if (reg >= 0 && reg < 16)
-               return rnames [reg];
+               return grNames [reg];
        else
                return "unknown";
 }
@@ -451,16 +466,30 @@ mono_arch_regname (int reg) {
 /*------------------------------------------------------------------*/
 
 const char*
-mono_arch_fregname (int reg) {
-       static const char * rnames[] = {
-               "s390_f0", "s390_f1", "s390_f2", "s390_f3", "s390_f4",
-               "s390_f5", "s390_f6", "s390_f7", "s390_f8", "s390_f9",
-               "s390_f10", "s390_f11", "s390_f12", "s390_f13", "s390_f14",
-               "s390_f15"
-       };
-
+mono_arch_fregname (int reg) 
+{
        if (reg >= 0 && reg < 16)
-               return rnames [reg];
+               return fpNames [reg];
+       else
+               return "unknown";
+}
+
+/*========================= End of Function ========================*/
+
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name                - mono_arch_xregname                                */
+/*                                                                  */
+/* Function    - Returns the name of the register specified by     */
+/*               the input parameter.                              */
+/*                                                                 */
+/*------------------------------------------------------------------*/
+
+const char *
+mono_arch_xregname (int reg)
+{
+       if (reg < s390_VR_NREG)
+               return vrNames [reg];
        else
                return "unknown";
 }
@@ -1281,7 +1310,7 @@ mono_arch_init (void)
 {
        guint8 *code;
 
-       mono_mutex_init_recursive (&mini_arch_mutex);
+       mono_os_mutex_init_recursive (&mini_arch_mutex);
 
        ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ);
        bp_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ);
@@ -1312,7 +1341,7 @@ mono_arch_cleanup (void)
                mono_vfree (ss_trigger_page, mono_pagesize ());
        if (bp_trigger_page)
                mono_vfree (bp_trigger_page, mono_pagesize ());
-       mono_mutex_destroy (&mini_arch_mutex);
+       mono_os_mutex_destroy (&mini_arch_mutex);
 }
 
 /*========================= End of Function ========================*/
@@ -1339,21 +1368,6 @@ mono_arch_cpu_optimizations (guint32 *exclude_mask)
 
 /*========================= End of Function ========================*/
 
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name         - mono_arch_cpu_enumerate_simd_versions             */
-/*                                                                  */
-/* Function     - Returns the SIMD instruction sets on this CPU     */
-/*                                                                  */
-/*------------------------------------------------------------------*/
-guint32
-mono_arch_cpu_enumerate_simd_versions (void)
-{
-       /* SIMD is currently unimplemented */
-       return 0;
-}
-/*========================= End of Function ========================*/
-
 /*------------------------------------------------------------------*/
 /*                                                                  */
 /* Name                - mono_arch_get_allocatable_int_vars                */
@@ -3859,11 +3873,14 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_ldgr (code, ins->dreg, ins->sreg1);
                        break;
                case OP_MOVE_F_TO_I4:
-                       s390_lgdr (code, ins->dreg, ins->sreg1);
+                       s390_ledbr (code, s390_f0, ins->sreg1);
+                       s390_lgdr (code, ins->dreg, s390_f0);
+                       s390_srag (code, ins->dreg, ins->dreg, 0, 32);
                        break;
                case OP_MOVE_I4_TO_F: 
-                       s390_lgfr (code, s390_r0, ins->sreg1);
+                       s390_slag (code, s390_r0, ins->sreg1, 0, 32);
                        s390_ldgr (code, ins->dreg, s390_r0);
+                       s390_ldebr (code, ins->dreg, ins->dreg);
                        break;
                case OP_FCONV_TO_R4:
                        s390_ledbr (code, ins->dreg, ins->sreg1);
@@ -4327,7 +4344,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                }
                        break;
                case OP_LOADR4_MEMBASE: {
-                       S390_LONG (code, ldy, ld, s390_f15, 0, 
+                       S390_LONG (code, ley, le, s390_f15, 0, 
                                   ins->inst_basereg, ins->inst_offset);
                        s390_ldebr (code, ins->dreg, s390_f15);
                }
@@ -4677,10 +4694,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_MEMORY_BARRIER:
                        s390_mem (code);
                        break;
-#if USE_COOP_GC
                case OP_GC_SAFE_POINT: {
                        guint8 *br;
 
+                       g_assert (mono_threads_is_coop_enabled ());
+
                        s390_chi (code, ins->sreg1, 1); 
                        s390_je  (code, 0); CODEPTR(code, br);
                        mono_add_patch_info (cfg, code- cfg->native_code, MONO_PATCH_INFO_ABS,
@@ -4689,7 +4707,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        PTRSLOT (code, br);
                        break;
                }
-#endif
                case OP_GC_LIVENESS_DEF:
                case OP_GC_LIVENESS_USE:
                case OP_GC_PARAM_SLOT_LIVENESS_DEF:
@@ -4699,6 +4716,625 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ins->backend.pc_offset = code - cfg->native_code;
                        bb->spill_slot_defs = g_slist_prepend_mempool (cfg->mempool, bb->spill_slot_defs, ins);
                        break;
+#ifdef MONO_ARCH_SIMD_INTRINSICS
+               case OP_ADDPS:
+                       s390x_addps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_DIVPS:
+                       s390x_divps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_MULPS:
+                       s390x_mulps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_SUBPS:
+                       s390x_subps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_MAXPS:
+                       s390x_maxps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_MINPS:
+                       s390x_minps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_COMPPS:
+                       g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 7);
+                       s390x_cmpps_imm (code, ins->sreg1, ins->sreg2, ins->inst_c0);
+                       break;
+               case OP_ANDPS:
+                       s390x_andps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_ANDNPS:
+                       s390x_andnps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_ORPS:
+                       s390x_orps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_XORPS:
+                       s390x_xorps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_SQRTPS:
+                       s390x_sqrtps (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_RSQRTPS:
+                       s390x_rsqrtps (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_RCPPS:
+                       s390x_rcpps (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_ADDSUBPS:
+                       s390x_addsubps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_HADDPS:
+                       s390x_haddps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_HSUBPS:
+                       s390x_hsubps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_DUPPS_HIGH:
+                       s390x_movshdup (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_DUPPS_LOW:
+                       s390x_movsldup (code, ins->dreg, ins->sreg1);
+                       break;
+
+               case OP_PSHUFLEW_HIGH:
+                       g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0xFF);
+                       s390x_pshufhw_imm (code, ins->dreg, ins->sreg1, ins->inst_c0);
+                       break;
+               case OP_PSHUFLEW_LOW:
+                       g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0xFF);
+                       s390x_pshuflw_imm (code, ins->dreg, ins->sreg1, ins->inst_c0);
+                       break;
+               case OP_PSHUFLED:
+                       g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0xFF);
+                       s390x_pshufd_imm (code, ins->dreg, ins->sreg1, ins->inst_c0);
+                       break;
+               case OP_SHUFPS:
+                       g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0xFF);
+                       s390x_shufps_imm (code, ins->sreg1, ins->sreg2, ins->inst_c0);
+                       break;
+               case OP_SHUFPD:
+                       g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0x3);
+                       s390x_shufpd_imm (code, ins->sreg1, ins->sreg2, ins->inst_c0);
+                       break;
+
+               case OP_ADDPD:
+                       s390x_addpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_DIVPD:
+                       s390x_divpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_MULPD:
+                       s390x_mulpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_SUBPD:
+                       s390x_subpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_MAXPD:
+                       s390x_maxpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_MINPD:
+                       s390x_minpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_COMPPD:
+                       g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 7);
+                       s390x_cmppd_imm (code, ins->sreg1, ins->sreg2, ins->inst_c0);
+                       break;
+               case OP_ANDPD:
+                       s390x_andpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_ANDNPD:
+                       s390x_andnpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_ORPD:
+                       s390x_orpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_XORPD:
+                       s390x_xorpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_SQRTPD:
+                       s390x_sqrtpd (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_ADDSUBPD:
+                       s390x_addsubpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_HADDPD:
+                       s390x_haddpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_HSUBPD:
+                       s390x_hsubpd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_DUPPD:
+                       s390x_movddup (code, ins->dreg, ins->sreg1);
+                       break;
+
+               case OP_EXTRACT_MASK:
+                       s390x_pmovmskb (code, ins->dreg, ins->sreg1);
+                       break;
+
+               case OP_PAND:
+                       s390x_pand (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_POR:
+                       s390x_por (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PXOR:
+                       s390x_pxor (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PADDB:
+                       s390x_paddb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PADDW:
+                       s390x_paddw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PADDD:
+                       s390x_paddd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PADDQ:
+                       s390x_paddq (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PSUBB:
+                       s390x_psubb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PSUBW:
+                       s390x_psubw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PSUBD:
+                       s390x_psubd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PSUBQ:
+                       s390x_psubq (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PMAXB_UN:
+                       s390x_pmaxub (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PMAXW_UN:
+                       s390x_pmaxuw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PMAXD_UN:
+                       s390x_pmaxud (code, ins->sreg1, ins->sreg2);
+                       break;
+               
+               case OP_PMAXB:
+                       s390x_pmaxsb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PMAXW:
+                       s390x_pmaxsw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PMAXD:
+                       s390x_pmaxsd (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PAVGB_UN:
+                       s390x_pavgb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PAVGW_UN:
+                       s390x_pavgw (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PMINB_UN:
+                       s390x_pminub (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PMINW_UN:
+                       s390x_pminuw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PMIND_UN:
+                       s390x_pminud (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PMINB:
+                       s390x_pminsb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PMINW:
+                       s390x_pminsw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PMIND:
+                       s390x_pminsd (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PCMPEQB:
+                       s390x_pcmpeqb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PCMPEQW:
+                       s390x_pcmpeqw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PCMPEQD:
+                       s390x_pcmpeqd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PCMPEQQ:
+                       s390x_pcmpeqq (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PCMPGTB:
+                       s390x_pcmpgtb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PCMPGTW:
+                       s390x_pcmpgtw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PCMPGTD:
+                       s390x_pcmpgtd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PCMPGTQ:
+                       s390x_pcmpgtq (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PSUM_ABS_DIFF:
+                       s390x_psadbw (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_UNPACK_LOWB:
+                       s390x_punpcklbw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_UNPACK_LOWW:
+                       s390x_punpcklwd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_UNPACK_LOWD:
+                       s390x_punpckldq (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_UNPACK_LOWQ:
+                       s390x_punpcklqdq (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_UNPACK_LOWPS:
+                       s390x_unpcklps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_UNPACK_LOWPD:
+                       s390x_unpcklpd (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_UNPACK_HIGHB:
+                       s390x_punpckhbw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_UNPACK_HIGHW:
+                       s390x_punpckhwd (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_UNPACK_HIGHD:
+                       s390x_punpckhdq (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_UNPACK_HIGHQ:
+                       s390x_punpckhqdq (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_UNPACK_HIGHPS:
+                       s390x_unpckhps (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_UNPACK_HIGHPD:
+                       s390x_unpckhpd (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PACKW:
+                       s390x_packsswb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PACKD:
+                       s390x_packssdw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PACKW_UN:
+                       s390x_packuswb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PACKD_UN:
+                       s390x_packusdw (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PADDB_SAT_UN:
+                       s390x_paddusb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PSUBB_SAT_UN:
+                       s390x_psubusb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PADDW_SAT_UN:
+                       s390x_paddusw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PSUBW_SAT_UN:
+                       s390x_psubusw (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PADDB_SAT:
+                       s390x_paddsb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PSUBB_SAT:
+                       s390x_psubsb (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PADDW_SAT:
+                       s390x_paddsw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PSUBW_SAT:
+                       s390x_psubsw (code, ins->sreg1, ins->sreg2);
+                       break;
+                       
+               case OP_PMULW:
+                       s390x_pmullw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PMULD:
+                       s390x_pmulld (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PMULQ:
+                       s390x_pmuludq (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PMULW_HIGH_UN:
+                       s390x_pmulhuw (code, ins->sreg1, ins->sreg2);
+                       break;
+               case OP_PMULW_HIGH:
+                       s390x_pmulhw (code, ins->sreg1, ins->sreg2);
+                       break;
+
+               case OP_PSHRW:
+                       s390x_psrlw_reg_imm (code, ins->dreg, ins->inst_imm);
+                       break;
+               case OP_PSHRW_REG:
+                       s390x_psrlw (code, ins->dreg, ins->sreg2);
+                       break;
+
+               case OP_PSARW:
+                       s390x_psraw_reg_imm (code, ins->dreg, ins->inst_imm);
+                       break;
+               case OP_PSARW_REG:
+                       s390x_psraw (code, ins->dreg, ins->sreg2);
+                       break;
+
+               case OP_PSHLW:
+                       s390x_psllw_reg_imm (code, ins->dreg, ins->inst_imm);
+                       break;
+               case OP_PSHLW_REG:
+                       s390x_psllw (code, ins->dreg, ins->sreg2);
+                       break;
+
+               case OP_PSHRD:
+                       s390x_psrld_reg_imm (code, ins->dreg, ins->inst_imm);
+                       break;
+               case OP_PSHRD_REG:
+                       s390x_psrld (code, ins->dreg, ins->sreg2);
+                       break;
+
+               case OP_PSARD:
+                       s390x_psrad_reg_imm (code, ins->dreg, ins->inst_imm);
+                       break;
+               case OP_PSARD_REG:
+                       s390x_psrad (code, ins->dreg, ins->sreg2);
+                       break;
+
+               case OP_PSHLD:
+                       s390x_pslld_reg_imm (code, ins->dreg, ins->inst_imm);
+                       break;
+               case OP_PSHLD_REG:
+                       s390x_pslld (code, ins->dreg, ins->sreg2);
+                       break;
+
+               case OP_PSHRQ:
+                       s390x_psrlq_reg_imm (code, ins->dreg, ins->inst_imm);
+                       break;
+               case OP_PSHRQ_REG:
+                       s390x_psrlq (code, ins->dreg, ins->sreg2);
+                       break;
+               
+               /*TODO: This is appart of the sse spec but not added
+               case OP_PSARQ:
+                       s390x_psraq_reg_imm (code, ins->dreg, ins->inst_imm);
+                       break;
+               case OP_PSARQ_REG:
+                       s390x_psraq (code, ins->dreg, ins->sreg2);
+                       break;  
+               */
+       
+               case OP_PSHLQ:
+                       s390x_psllq_reg_imm (code, ins->dreg, ins->inst_imm);
+                       break;
+               case OP_PSHLQ_REG:
+                       s390x_psllq (code, ins->dreg, ins->sreg2);
+                       break;  
+               case OP_CVTDQ2PD:
+                       s390x_cvtdq2pd (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_CVTDQ2PS:
+                       s390x_cvtdq2ps (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_CVTPD2DQ:
+                       s390x_cvtpd2dq (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_CVTPD2PS:
+                       s390x_cvtpd2ps (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_CVTPS2DQ:
+                       s390x_cvtps2dq (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_CVTPS2PD:
+                       s390x_cvtps2pd (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_CVTTPD2DQ:
+                       s390x_cvttpd2dq (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_CVTTPS2DQ:
+                       s390x_cvttps2dq (code, ins->dreg, ins->sreg1);
+                       break;
+
+               case OP_ICONV_TO_X:
+                       amd64_movd_xreg_reg_size (code, ins->dreg, ins->sreg1, 4);
+                       break;
+               case OP_EXTRACT_I4:
+                       amd64_movd_reg_xreg_size (code, ins->dreg, ins->sreg1, 4);
+                       break;
+               case OP_EXTRACT_I8:
+                       if (ins->inst_c0) {
+                               amd64_movhlps (code, MONO_ARCH_FP_SCRATCH_REG, ins->sreg1);
+                               amd64_movd_reg_xreg_size (code, ins->dreg, MONO_ARCH_FP_SCRATCH_REG, 8);
+                       } else {
+                               amd64_movd_reg_xreg_size (code, ins->dreg, ins->sreg1, 8);
+                       }
+                       break;
+               case OP_EXTRACT_I1:
+               case OP_EXTRACT_U1:
+                       amd64_movd_reg_xreg_size (code, ins->dreg, ins->sreg1, 4);
+                       if (ins->inst_c0)
+                               amd64_shift_reg_imm (code, X86_SHR, ins->dreg, ins->inst_c0 * 8);
+                       amd64_widen_reg (code, ins->dreg, ins->dreg, ins->opcode == OP_EXTRACT_I1, FALSE);
+                       break;
+               case OP_EXTRACT_I2:
+               case OP_EXTRACT_U2:
+                       /*amd64_movd_reg_xreg_size (code, ins->dreg, ins->sreg1, 4);
+                       if (ins->inst_c0)
+                               amd64_shift_reg_imm_size (code, X86_SHR, ins->dreg, 16, 4);*/
+                       s390x_pextrw_imm (code, ins->dreg, ins->sreg1, ins->inst_c0);
+                       amd64_widen_reg_size (code, ins->dreg, ins->dreg, ins->opcode == OP_EXTRACT_I2, TRUE, 4);
+                       break;
+               case OP_EXTRACT_R8:
+                       if (ins->inst_c0)
+                               amd64_movhlps (code, ins->dreg, ins->sreg1);
+                       else
+                               s390x_movsd (code, ins->dreg, ins->sreg1);
+                       break;
+               case OP_INSERT_I2:
+                       s390x_pinsrw_imm (code, ins->sreg1, ins->sreg2, ins->inst_c0);
+                       break;
+               case OP_EXTRACTX_U2:
+                       s390x_pextrw_imm (code, ins->dreg, ins->sreg1, ins->inst_c0);
+                       break;
+               case OP_INSERTX_U1_SLOW:
+                       /*sreg1 is the extracted ireg (scratch)
+                       /sreg2 is the to be inserted ireg (scratch)
+                       /dreg is the xreg to receive the value*/
+
+                       /*clear the bits from the extracted word*/
+                       amd64_alu_reg_imm (code, X86_AND, ins->sreg1, ins->inst_c0 & 1 ? 0x00FF : 0xFF00);
+                       /*shift the value to insert if needed*/
+                       if (ins->inst_c0 & 1)
+                               amd64_shift_reg_imm_size (code, X86_SHL, ins->sreg2, 8, 4);
+                       /*join them together*/
+                       amd64_alu (code, X86_OR, ins->sreg1, ins->sreg2);
+                       s390x_pinsrw_imm (code, ins->dreg, ins->sreg1, ins->inst_c0 / 2);
+                       break;
+               case OP_INSERTX_I4_SLOW:
+                       s390x_pinsrw_imm (code, ins->dreg, ins->sreg2, ins->inst_c0 * 2);
+                       amd64_shift_reg_imm (code, X86_SHR, ins->sreg2, 16);
+                       s390x_pinsrw_imm (code, ins->dreg, ins->sreg2, ins->inst_c0 * 2 + 1);
+                       break;
+               case OP_INSERTX_I8_SLOW:
+                       amd64_movd_xreg_reg_size(code, MONO_ARCH_FP_SCRATCH_REG, ins->sreg2, 8);
+                       if (ins->inst_c0)
+                               amd64_movlhps (code, ins->dreg, MONO_ARCH_FP_SCRATCH_REG);
+                       else
+                               s390x_movsd (code, ins->dreg, MONO_ARCH_FP_SCRATCH_REG);
+                       break;
+
+               case OP_INSERTX_R4_SLOW:
+                       switch (ins->inst_c0) {
+                       case 0:
+                               if (cfg->r4fp)
+                                       s390x_movss (code, ins->dreg, ins->sreg2);
+                               else
+                                       s390x_cvtsd2ss (code, ins->dreg, ins->sreg2);
+                               break;
+                       case 1:
+                               s390x_pshufd_imm (code, ins->dreg, ins->dreg, mono_simd_shuffle_mask(1, 0, 2, 3));
+                               if (cfg->r4fp)
+                                       s390x_movss (code, ins->dreg, ins->sreg2);
+                               else
+                                       s390x_cvtsd2ss (code, ins->dreg, ins->sreg2);
+                               s390x_pshufd_imm (code, ins->dreg, ins->dreg, mono_simd_shuffle_mask(1, 0, 2, 3));
+                               break;
+                       case 2:
+                               s390x_pshufd_imm (code, ins->dreg, ins->dreg, mono_simd_shuffle_mask(2, 1, 0, 3));
+                               if (cfg->r4fp)
+                                       s390x_movss (code, ins->dreg, ins->sreg2);
+                               else
+                                       s390x_cvtsd2ss (code, ins->dreg, ins->sreg2);
+                               s390x_pshufd_imm (code, ins->dreg, ins->dreg, mono_simd_shuffle_mask(2, 1, 0, 3));
+                               break;
+                       case 3:
+                               s390x_pshufd_imm (code, ins->dreg, ins->dreg, mono_simd_shuffle_mask(3, 1, 2, 0));
+                               if (cfg->r4fp)
+                                       s390x_movss (code, ins->dreg, ins->sreg2);
+                               else
+                                       s390x_cvtsd2ss (code, ins->dreg, ins->sreg2);
+                               s390x_pshufd_imm (code, ins->dreg, ins->dreg, mono_simd_shuffle_mask(3, 1, 2, 0));
+                               break;
+                       }
+                       break;
+               case OP_INSERTX_R8_SLOW:
+                       if (ins->inst_c0)
+                               amd64_movlhps (code, ins->dreg, ins->sreg2);
+                       else
+                               s390x_movsd (code, ins->dreg, ins->sreg2);
+                       break;
+               case OP_STOREX_MEMBASE_REG:
+               case OP_STOREX_MEMBASE:
+                       s390x_movups_membase_reg (code, ins->dreg, ins->inst_offset, ins->sreg1);
+                       break;
+               case OP_LOADX_MEMBASE:
+                       s390x_movups_reg_membase (code, ins->dreg, ins->sreg1, ins->inst_offset);
+                       break;
+               case OP_LOADX_ALIGNED_MEMBASE:
+                       s390x_movaps_reg_membase (code, ins->dreg, ins->sreg1, ins->inst_offset);
+                       break;
+               case OP_STOREX_ALIGNED_MEMBASE_REG:
+                       s390x_movaps_membase_reg (code, ins->dreg, ins->inst_offset, ins->sreg1);
+                       break;
+               case OP_STOREX_NTA_MEMBASE_REG:
+                       s390x_movntps_reg_membase (code, ins->dreg, ins->sreg1, ins->inst_offset);
+                       break;
+               case OP_PREFETCH_MEMBASE:
+                       s390x_prefetch_reg_membase (code, ins->backend.arg_info, ins->sreg1, ins->inst_offset);
+                       break;
+
+               case OP_XMOVE:
+                       /*FIXME the peephole pass should have killed this*/
+                       if (ins->dreg != ins->sreg1)
+                               s390x_movaps (code, ins->dreg, ins->sreg1);
+                       break;          
+               case OP_XZERO:
+                       s390x_pxor (code, ins->dreg, ins->dreg);
+                       break;
+               case OP_ICONV_TO_R4_RAW:
+                       amd64_movd_xreg_reg_size (code, ins->dreg, ins->sreg1, 4);
+                       break;
+
+               case OP_FCONV_TO_R8_X:
+                       s390x_movsd (code, ins->dreg, ins->sreg1);
+                       break;
+
+               case OP_XCONV_R8_TO_I4:
+                       s390x_cvttsd2si_reg_xreg_size (code, ins->dreg, ins->sreg1, 4);
+                       switch (ins->backend.source_opcode) {
+                       case OP_FCONV_TO_I1:
+                               amd64_widen_reg (code, ins->dreg, ins->dreg, TRUE, FALSE);
+                               break;
+                       case OP_FCONV_TO_U1:
+                               amd64_widen_reg (code, ins->dreg, ins->dreg, FALSE, FALSE);
+                               break;
+                       case OP_FCONV_TO_I2:
+                               amd64_widen_reg (code, ins->dreg, ins->dreg, TRUE, TRUE);
+                               break;
+                       case OP_FCONV_TO_U2:
+                               amd64_widen_reg (code, ins->dreg, ins->dreg, FALSE, TRUE);
+                               break;
+                       }                       
+                       break;
+
+               case OP_EXPAND_I2:
+                       s390x_pinsrw_imm (code, ins->dreg, ins->sreg1, 0);
+                       s390x_pinsrw_imm (code, ins->dreg, ins->sreg1, 1);
+                       s390x_pshufd_imm (code, ins->dreg, ins->dreg, 0);
+                       break;
+               case OP_EXPAND_I4:
+                       amd64_movd_xreg_reg_size (code, ins->dreg, ins->sreg1, 4);
+                       s390x_pshufd_imm (code, ins->dreg, ins->dreg, 0);
+                       break;
+               case OP_EXPAND_I8:
+                       amd64_movd_xreg_reg_size (code, ins->dreg, ins->sreg1, 8);
+                       s390x_pshufd_imm (code, ins->dreg, ins->dreg, 0x44);
+                       break;
+               case OP_EXPAND_R4:
+                       if (cfg->r4fp) {
+                               s390x_movsd (code, ins->dreg, ins->sreg1);
+                       } else {
+                               s390x_movsd (code, ins->dreg, ins->sreg1);
+                               s390x_cvtsd2ss (code, ins->dreg, ins->dreg);
+                       }
+                       s390x_pshufd_imm (code, ins->dreg, ins->dreg, 0);
+                       break;
+               case OP_EXPAND_R8:
+                       s390x_movsd (code, ins->dreg, ins->sreg1);
+                       s390x_pshufd_imm (code, ins->dreg, ins->dreg, 0x44);
+                       break;
+#endif
                default:
                        g_warning ("unknown opcode %s in %s()\n", mono_inst_name (ins->opcode), __FUNCTION__);
                        g_assert_not_reached ();
@@ -6356,9 +6992,11 @@ mono_arch_get_seq_point_info (MonoDomain *domain, guint8 *code)
        return NULL;
 }
 
+/*========================= End of Function ========================*/
+
 /*------------------------------------------------------------------*/
 /*                                                                  */
-/* Name                - mono_arch_init_lmf_ext.                               */
+/* Name                - mono_arch_init_lmf_ext.                           */
 /*                                                                  */
 /* Function -                                                       */
 /*                                                                  */
@@ -6377,6 +7015,39 @@ mono_arch_init_lmf_ext (MonoLMFExt *ext, gpointer prev_lmf)
 
 #endif
 
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name            - mono_arch_cpu_enumerate_simd_versions.                */
+/*                                                                  */
+/* Function - If this CPU supports vector operations then it        */
+/*            supports the equivalent of SSE1-4.                    */
+/*                                                                  */
+/*------------------------------------------------------------------*/
+
+guint32
+mono_arch_cpu_enumerate_simd_versions (void)
+{
+       guint32 sseOpts = 0;
+
+       if (facs.vec != 0) 
+               sseOpts = (SIMD_VERSION_SSE1  | SIMD_VERSION_SSE2 |
+                          SIMD_VERSION_SSE3  | SIMD_VERSION_SSSE3 |
+                          SIMD_VERSION_SSE41 | SIMD_VERSION_SSE42 |
+                          SIMD_VERSION_SSE4a);
+
+       return (sseOpts);
+}
+
+/*========================= End of Function ========================*/
+
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name            - mono_arch_opcode_supported.                           */
+/*                                                                  */
+/* Function - Check if a given return code is supported.            */
+/*                                                                  */
+/*------------------------------------------------------------------*/
+
 gboolean
 mono_arch_opcode_supported (int opcode)
 {
@@ -6390,3 +7061,5 @@ mono_arch_opcode_supported (int opcode)
                return FALSE;
        }
 }
+
+/*========================= End of Function ========================*/
index 1de03e2fd2af0df5e8b3b4cc2ac0665ab7b6c622..2ac8cc17a3115c21155a96783b0ae6c49c4d05bc 100644 (file)
@@ -112,6 +112,14 @@ typedef struct
 #define MONO_ARCH_FRAME_ALIGNMENT 8
 #define MONO_ARCH_CODE_ALIGNMENT 32
 
+/*-----------------------------------------------*/
+/* SIMD Related Definitions                      */
+/*-----------------------------------------------*/
+
+#define MONO_MAX_XREGS                 31
+#define MONO_ARCH_CALLEE_XREGS         0x0
+#define MONO_ARCH_CALLEE_SAVED_XREGS   0x0
+
 /*-----------------------------------------------*/
 /* Macros used to generate instructions          */
 /*-----------------------------------------------*/
index 5aa8d082007347d3e00681ef66511cd42582b899..af0805adf29335282fcb7eae617ff1304bd07317 100644 (file)
@@ -3637,6 +3637,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_MEMORY_BARRIER:
                        sparc_membar (code, sparc_membar_all);
                        break;
+               case OP_GC_SAFE_POINT:
+                       break;
 
                default:
 #ifdef __GNUC__
index fb6d1f62e1dc12978dcfddeabc8e587e5ec142aa..116d97782807134fd85cfcd7add1473b1753657d 100644 (file)
@@ -27,8 +27,8 @@ static GHashTable *rgctx_lazy_fetch_trampoline_hash;
 static GHashTable *rgctx_lazy_fetch_trampoline_hash_addr;
 static guint32 trampoline_calls, jit_trampolines, unbox_trampolines, static_rgctx_trampolines;
 
-#define mono_trampolines_lock() mono_mutex_lock (&trampolines_mutex)
-#define mono_trampolines_unlock() mono_mutex_unlock (&trampolines_mutex)
+#define mono_trampolines_lock() mono_os_mutex_lock (&trampolines_mutex)
+#define mono_trampolines_unlock() mono_os_mutex_unlock (&trampolines_mutex)
 static mono_mutex_t trampolines_mutex;
 
 #ifdef MONO_ARCH_GSHARED_SUPPORTED
@@ -41,8 +41,8 @@ typedef struct {
 static gint
 rgctx_tramp_info_equal (gconstpointer ka, gconstpointer kb)
 {
-       const RgctxTrampInfo *i1 = ka;
-       const RgctxTrampInfo *i2 = kb;
+       const RgctxTrampInfo *i1 = (const RgctxTrampInfo *)ka;
+       const RgctxTrampInfo *i2 = (const RgctxTrampInfo *)kb;
 
        if (i1->m == i2->m && i1->addr == i2->addr)
                return 1;
@@ -53,7 +53,7 @@ rgctx_tramp_info_equal (gconstpointer ka, gconstpointer kb)
 static guint
 rgctx_tramp_info_hash (gconstpointer data)
 {
-       const RgctxTrampInfo *info = data;
+       const RgctxTrampInfo *info = (const RgctxTrampInfo *)data;
 
        return GPOINTER_TO_UINT (info->m) ^ GPOINTER_TO_UINT (info->addr);
 }
@@ -112,11 +112,11 @@ mono_create_static_rgctx_trampoline (MonoMethod *m, gpointer addr)
        if (mono_aot_only)
                res = mono_aot_get_static_rgctx_trampoline (ctx, addr);
        else
-               res = mono_arch_get_static_rgctx_trampoline (m, ctx, addr);
+               res = mono_arch_get_static_rgctx_trampoline (m, (MonoMethodRuntimeGenericContext *)ctx, addr);
 
        mono_domain_lock (domain);
        /* Duplicates inserted while we didn't hold the lock are OK */
-       info = mono_domain_alloc (domain, sizeof (RgctxTrampInfo));
+       info = (RgctxTrampInfo *)mono_domain_alloc (domain, sizeof (RgctxTrampInfo));
        info->m = m;
        info->addr = addr;
        g_hash_table_insert (domain_jit_info (domain)->static_rgctx_trampoline_hash, info, res);
@@ -167,7 +167,7 @@ mini_resolve_imt_method (MonoVTable *vt, gpointer *vtable_slot, MonoMethod *imt_
        /* This has to be variance aware since imt_method can be from an interface that vt->klass doesn't directly implement */
        interface_offset = mono_class_interface_offset_with_variance (vt->klass, imt_method->klass, &variance_used);
        if (interface_offset < 0)
-               g_error ("%s doesn't implement interface %s\n", mono_type_get_name_full (&vt->klass->byval_arg, 0), mono_type_get_name_full (&imt_method->klass->byval_arg, 0));
+               g_error ("%s doesn't implement interface %s\n", mono_type_get_name_full (&vt->klass->byval_arg, MONO_TYPE_NAME_FORMAT_IL), mono_type_get_name_full (&imt_method->klass->byval_arg, MONO_TYPE_NAME_FORMAT_IL));
 
        *variant_iface = NULL;
        if (imt_method->is_inflated && ((MonoMethodInflated*)imt_method)->context.method_inst) {
@@ -182,7 +182,8 @@ mini_resolve_imt_method (MonoVTable *vt, gpointer *vtable_slot, MonoMethod *imt_
        /* We can only use the AOT compiled code if we don't require further processing */
        lookup_aot = !generic_virtual & !variant_iface;
 
-       mono_vtable_build_imt_slot (vt, mono_method_get_imt_slot (imt_method));
+       if (!mono_llvm_only)
+               mono_vtable_build_imt_slot (vt, mono_method_get_imt_slot (imt_method));
 
        if (imt_method->is_inflated && ((MonoMethodInflated*)imt_method)->context.method_inst) {
                MonoError error;
@@ -203,7 +204,7 @@ mini_resolve_imt_method (MonoVTable *vt, gpointer *vtable_slot, MonoMethod *imt_
        } else {
                /* Avoid loading metadata or creating a generic vtable if possible */
                if (lookup_aot && !vt->klass->valuetype)
-                       aot_addr = mono_aot_get_method_from_vt_slot (mono_domain_get (), vt, interface_offset + mono_method_get_vtable_slot (imt_method));
+                       aot_addr = (guint8 *)mono_aot_get_method_from_vt_slot (mono_domain_get (), vt, interface_offset + mono_method_get_vtable_slot (imt_method));
                else
                        aot_addr = NULL;
                if (aot_addr)
@@ -298,7 +299,7 @@ mini_add_method_trampoline (MonoMethod *m, gpointer compiled_method, gboolean ad
        MonoJitInfo *ji;
 
        // FIXME: This loads information from AOT (perf problem)
-       ji = mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (compiled_method), NULL);
+       ji = mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (compiled_method), NULL);
        callee_gsharedvt = mini_jit_info_is_gsharedvt (ji);
 
        callee_array_helper = FALSE;
@@ -328,7 +329,7 @@ mini_add_method_trampoline (MonoMethod *m, gpointer compiled_method, gboolean ad
        addr = compiled_method;
 
        if (add_unbox_tramp) {
-               /* 
+               /*
                 * The unbox trampolines call the method directly, so need to add
                 * an rgctx tramp before them.
                 */
@@ -353,6 +354,8 @@ mini_add_method_trampoline (MonoMethod *m, gpointer compiled_method, gboolean ad
 
                addr = mini_get_gsharedvt_wrapper (TRUE, addr, sig, gsig, -1, FALSE);
 
+               if (mono_llvm_only)
+                       g_assert_not_reached ();
                //printf ("IN: %s\n", mono_method_full_name (m, TRUE));
        }
 
@@ -375,6 +378,126 @@ mini_add_method_trampoline (MonoMethod *m, gpointer compiled_method, gboolean ad
        return addr;
 }
 
+/*
+ * mini_create_llvmonly_ftndesc:
+ *
+ *   Create a function descriptor of the form <addr, arg>, which
+ * represents a callee ADDR with ARG as the last argument.
+ * This is used for:
+ * - generic sharing (ARG is the rgctx)
+ * - gsharedvt signature wrappers (ARG is a function descriptor)
+ */
+MonoFtnDesc*
+mini_create_llvmonly_ftndesc (MonoDomain *domain, gpointer addr, gpointer arg)
+{
+       MonoFtnDesc *ftndesc = (MonoFtnDesc*)mono_domain_alloc0 (mono_domain_get (), 2 * sizeof (gpointer));
+       ftndesc->addr = addr;
+       ftndesc->arg = arg;
+
+       return ftndesc;
+}
+
+/**
+ * mini_add_method_wrappers_llvmonly:
+ *
+ *   Add unbox/gsharedvt wrappers around COMPILED_METHOD if needed. Return the wrapper address or COMPILED_METHOD
+ * if no wrapper is needed. Set OUT_ARG to the rgctx/extra argument needed to be passed to the returned method.
+ */
+gpointer
+mini_add_method_wrappers_llvmonly (MonoMethod *m, gpointer compiled_method, gboolean caller_gsharedvt, gboolean add_unbox_tramp, gpointer *out_arg)
+{
+       gpointer addr = compiled_method;
+       gboolean callee_gsharedvt, callee_array_helper;
+       MonoMethod *jmethod = NULL;
+       MonoJitInfo *ji;
+
+       // FIXME: This loads information from AOT (perf problem)
+       ji = mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (compiled_method), NULL);
+       callee_gsharedvt = mini_jit_info_is_gsharedvt (ji);
+
+       callee_array_helper = FALSE;
+       if (m->wrapper_type == MONO_WRAPPER_MANAGED_TO_MANAGED) {
+               WrapperInfo *info = mono_marshal_get_wrapper_info (m);
+
+               /*
+                * generic array helpers.
+                * Have to replace the wrappers with the original generic instances.
+                */
+               if (info && info->subtype == WRAPPER_SUBTYPE_GENERIC_ARRAY_HELPER) {
+                       callee_array_helper = TRUE;
+                       m = info->d.generic_array_helper.method;
+               }
+       } else if (m->wrapper_type == MONO_WRAPPER_UNKNOWN) {
+               WrapperInfo *info = mono_marshal_get_wrapper_info (m);
+
+               /* Same for synchronized inner wrappers */
+               if (info && info->subtype == WRAPPER_SUBTYPE_SYNCHRONIZED_INNER) {
+                       m = info->d.synchronized_inner.method;
+               }
+       }
+
+       if (callee_gsharedvt)
+               g_assert (m->is_inflated);
+
+       addr = compiled_method;
+
+       if (add_unbox_tramp) {
+               /* 
+                * The unbox trampolines call the method directly, so need to add
+                * an rgctx tramp before them.
+                */
+               if (mono_aot_only) {
+                       addr = mono_aot_get_unbox_trampoline (m);
+               } else {
+                       unbox_trampolines ++;
+                       addr = mono_arch_get_unbox_trampoline (m, addr);
+               }
+       }
+
+       g_assert (mono_llvm_only);
+       g_assert (out_arg);
+
+       if (ji && !ji->is_trampoline)
+               jmethod = jinfo_get_method (ji);
+
+       if (callee_gsharedvt)
+               callee_gsharedvt = mini_is_gsharedvt_variable_signature (mono_method_signature (jmethod));
+
+       if (!caller_gsharedvt && callee_gsharedvt) {
+               MonoMethodSignature *sig, *gsig;
+
+               /* Here m is a generic instance, while ji->method is the gsharedvt method implementing it */
+
+               /* Call from normal/gshared code to gsharedvt code with variable signature */
+               sig = mono_method_signature (m);
+               gsig = mono_method_signature (jmethod);
+
+               addr = mini_get_gsharedvt_wrapper (TRUE, addr, sig, gsig, -1, FALSE);
+
+               /*
+                * This is a gsharedvt in wrapper, it gets passed a ftndesc for the gsharedvt method as an argument.
+                */
+               *out_arg = mini_create_llvmonly_ftndesc (mono_domain_get (), compiled_method, mini_method_get_rgctx (m));
+               //printf ("IN: %s\n", mono_method_full_name (m, TRUE));
+       }
+
+       if (!(*out_arg) && mono_method_needs_static_rgctx_invoke (m, FALSE))
+               *out_arg = mini_method_get_rgctx (m);
+
+       if (caller_gsharedvt && !callee_gsharedvt) {
+               /*
+                * The callee uses the gsharedvt calling convention, have to add an out wrapper.
+                */
+               gpointer out_wrapper = mini_get_gsharedvt_wrapper (FALSE, NULL, mono_method_signature (m), NULL, -1, FALSE);
+               MonoFtnDesc *out_wrapper_arg = mini_create_llvmonly_ftndesc (mono_domain_get (), addr, *out_arg);
+
+               addr = out_wrapper;
+               *out_arg = out_wrapper_arg;
+       }
+
+       return addr;
+}
+
 /**
  * common_call_trampoline:
  *
@@ -391,18 +514,18 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
        MonoMethod *declaring = NULL;
        MonoMethod *generic_virtual = NULL, *variant_iface = NULL;
        int context_used;
-       gboolean imt_call, virtual;
+       gboolean imt_call, virtual_;
        gpointer *orig_vtable_slot, *vtable_slot_to_patch = NULL;
        MonoJitInfo *ji = NULL;
 
-       virtual = vt && (gpointer)vtable_slot > (gpointer)vt;
+       virtual_ = vt && (gpointer)vtable_slot > (gpointer)vt;
        imt_call = vt && (gpointer)vtable_slot < (gpointer)vt;
 
        /*
         * rgctx trampolines are needed when the call is indirect so the caller can't pass
         * the rgctx argument needed by the callee.
         */
-       if (virtual && m)
+       if (virtual_ && m)
                need_rgctx_tramp = mono_method_needs_static_rgctx_invoke (m, FALSE);
 
        orig_vtable_slot = vtable_slot;
@@ -416,7 +539,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
                g_assert (vtable_slot);
 
                imt_method = mono_arch_find_imt_method (regs, code);
-               this_arg = mono_arch_get_this_arg_from_call (regs, code);
+               this_arg = (MonoObject *)mono_arch_get_this_arg_from_call (regs, code);
 
                if (mono_object_is_transparent_proxy (this_arg)) {
                        /* Use the slow path for now */
@@ -451,7 +574,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
         * The virtual check is needed because is_generic_method_definition (m) could
         * return TRUE for methods used in IMT calls too.
         */
-       if (virtual && is_generic_method_definition (m)) {
+       if (virtual_ && is_generic_method_definition (m)) {
                MonoError error;
                MonoGenericContext context = { NULL, NULL };
                MonoMethod *declaring;
@@ -499,7 +622,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
 
                        klass = vtable->klass;
                } else {
-                       MonoObject *this_argument = mono_arch_get_this_arg_from_call (regs, code);
+                       MonoObject *this_argument = (MonoObject *)mono_arch_get_this_arg_from_call (regs, code);
 
                        vt = this_argument->vtable;
                        vtable_slot = orig_vtable_slot;
@@ -605,10 +728,10 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
                        GSList *list, *tmp;
 
                        mono_domain_lock (domain);
-                       list = g_hash_table_lookup (domain_jit_info (domain)->jump_target_got_slot_hash, m);
+                       list = (GSList *)g_hash_table_lookup (domain_jit_info (domain)->jump_target_got_slot_hash, m);
                        if (list) {
                                for (tmp = list; tmp; tmp = tmp->next) {
-                                       gpointer *got_slot = tmp->data;
+                                       gpointer *got_slot = (gpointer *)tmp->data;
                                        *got_slot = addr;
                                }
                                g_hash_table_remove (domain_jit_info (domain)->jump_target_got_slot_hash, m);
@@ -635,7 +758,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
                if (plt_entry) {
                        if (generic_shared) {
                                target_ji =
-                                       mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (compiled_method), NULL);
+                                       mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (compiled_method), NULL);
                                if (!ji)
                                        ji = mini_jit_info_table_find (mono_domain_get (), (char*)code, NULL);
 
@@ -644,7 +767,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
                                }
                        }
                        if (!no_patch)
-                               mono_aot_patch_plt_entry (code, plt_entry, NULL, regs, addr);
+                               mono_aot_patch_plt_entry (code, plt_entry, NULL, regs, (guint8 *)addr);
                } else {
                        if (generic_shared) {
                                if (m->wrapper_type != MONO_WRAPPER_NONE)
@@ -654,7 +777,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
 
                        /* Patch calling code */
                        target_ji =
-                               mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (compiled_method), NULL);
+                               mini_jit_info_table_find (mono_domain_get (), (char *)mono_get_addr_from_ftnptr (compiled_method), NULL);
                        if (!ji)
                                ji = mini_jit_info_table_find (mono_domain_get (), (char*)code, NULL);
 
@@ -668,7 +791,7 @@ common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, MonoVT
                        }
 
                        if (!no_patch && mono_method_same_domain (ji, target_ji))
-                               mono_arch_patch_callsite (ji->code_start, code, addr);
+                               mono_arch_patch_callsite ((guint8 *)ji->code_start, code, (guint8 *)addr);
                }
        }
 
@@ -695,7 +818,7 @@ mono_magic_trampoline (mgreg_t *regs, guint8 *code, gpointer arg, guint8* tramp)
 {
        trampoline_calls ++;
 
-       return common_call_trampoline (regs, code, arg, NULL, NULL);
+       return common_call_trampoline (regs, code, (MonoMethod *)arg, NULL, NULL);
 }
 
 /**
@@ -725,7 +848,7 @@ mono_vcall_trampoline (mgreg_t *regs, guint8 *code, int slot, guint8 *tramp)
        /*
         * Obtain the vtable from the 'this' arg.
         */
-       this_arg = mono_arch_get_this_arg_from_call (regs, code);
+       this_arg = (MonoObject *)mono_arch_get_this_arg_from_call (regs, code);
        g_assert (this_arg);
 
        vt = this_arg->vtable;
@@ -823,7 +946,7 @@ mono_aot_trampoline (mgreg_t *regs, guint8 *code, guint8 *token_info,
 
        trampoline_calls ++;
 
-       image = *(gpointer*)(gpointer)token_info;
+       image = (MonoImage *)*(gpointer*)(gpointer)token_info;
        token_info += sizeof (gpointer);
        token = *(guint32*)(gpointer)token_info;
 
@@ -842,7 +965,7 @@ mono_aot_trampoline (mgreg_t *regs, guint8 *code, guint8 *token_info,
        plt_entry = mono_aot_get_plt_entry (code);
        g_assert (plt_entry);
 
-       mono_aot_patch_plt_entry (code, plt_entry, NULL, regs, addr);
+       mono_aot_patch_plt_entry (code, plt_entry, NULL, regs, (guint8 *)addr);
 
        return addr;
 }
@@ -894,9 +1017,9 @@ mono_rgctx_lazy_fetch_trampoline (mgreg_t *regs, guint8 *code, gpointer data, gu
        num_lookups++;
 
        if (mrgctx)
-               return mono_method_fill_runtime_generic_context (arg, index);
+               return mono_method_fill_runtime_generic_context ((MonoMethodRuntimeGenericContext *)arg, index);
        else
-               return mono_class_fill_runtime_generic_context (arg, index);
+               return mono_class_fill_runtime_generic_context ((MonoVTable *)arg, index);
 }
 
 /*
@@ -914,7 +1037,7 @@ create_delegate_trampoline_data (MonoDomain *domain, MonoClass *klass, MonoMetho
        invoke = mono_get_delegate_invoke (klass);
        g_assert (invoke);
 
-       tramp_data = mono_domain_alloc0 (domain, sizeof (MonoDelegateTrampInfo));
+       tramp_data = (MonoDelegateTrampInfo *)mono_domain_alloc0 (domain, sizeof (MonoDelegateTrampInfo));
        tramp_data->invoke = invoke;
        tramp_data->invoke_sig = mono_method_signature (invoke);
        tramp_data->impl_this = mono_arch_get_delegate_invoke_impl (mono_method_signature (invoke), TRUE);
@@ -949,8 +1072,8 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
        gboolean enable_caching = TRUE;
        MonoDelegateTrampInfo *tramp_info = (MonoDelegateTrampInfo*)arg;
        MonoMethod *invoke = tramp_info->invoke;
-       guint8 *impl_this = tramp_info->impl_this;
-       guint8 *impl_nothis = tramp_info->impl_nothis;
+       guint8 *impl_this = (guint8 *)tramp_info->impl_this;
+       guint8 *impl_nothis = (guint8 *)tramp_info->impl_nothis;
        MonoError err;
        MonoMethodSignature *sig;
        gpointer addr, compiled_method;
@@ -959,7 +1082,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
        trampoline_calls ++;
 
        /* Obtain the delegate object according to the calling convention */
-       delegate = mono_arch_get_this_arg_from_call (regs, code);
+       delegate = (MonoDelegate *)mono_arch_get_this_arg_from_call (regs, code);
        g_assert (mono_class_has_parent (mono_object_class (delegate), mono_defaults.multicastdelegate_class));
 
        if (delegate->method) {
@@ -1009,7 +1132,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
        // ftnptrs are being used.  "method" would end up null on archtitectures without
        // ftnptrs so we can just skip this.
        } else if (delegate->method_ptr) {
-               ji = mono_jit_info_table_find (domain, mono_get_addr_from_ftnptr (delegate->method_ptr));
+               ji = mono_jit_info_table_find (domain, (char *)mono_get_addr_from_ftnptr (delegate->method_ptr));
                if (ji)
                        method = jinfo_get_method (ji);
        }
@@ -1073,7 +1196,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
                        addr = mini_add_method_trampoline (method, compiled_method, need_rgctx_tramp, need_unbox_tramp);
                        delegate->method_ptr = addr;
                        if (enable_caching && delegate->method_code)
-                               *delegate->method_code = delegate->method_ptr;
+                               *delegate->method_code = (guint8 *)delegate->method_ptr;
                }
        } else {
                if (need_rgctx_tramp)
@@ -1095,8 +1218,8 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
        if (!code) {
                /* The general, unoptimized case */
                m = mono_marshal_get_delegate_invoke (invoke, delegate);
-               code = mono_compile_method (m);
-               code = mini_add_method_trampoline (m, code, mono_method_needs_static_rgctx_invoke (m, FALSE), FALSE);
+               code = (guint8 *)mono_compile_method (m);
+               code = (guint8 *)mini_add_method_trampoline (m, code, mono_method_needs_static_rgctx_invoke (m, FALSE), FALSE);
        }
 
        delegate->invoke_impl = mono_get_addr_from_ftnptr (code);
@@ -1114,7 +1237,7 @@ mono_handler_block_guard_trampoline (mgreg_t *regs, guint8 *code, gpointer *tram
 {
        MonoContext ctx;
        MonoException *exc;
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        gpointer resume_ip = jit_tls->handler_block_return_address;
 
        memcpy (&ctx, &jit_tls->handler_block_context, sizeof (MonoContext));
@@ -1129,7 +1252,7 @@ mono_handler_block_guard_trampoline (mgreg_t *regs, guint8 *code, gpointer *tram
                exc = mono_thread_resume_interruption ();
 
        if (exc) {
-               mono_handle_exception (&ctx, exc);
+               mono_handle_exception (&ctx, (MonoObject *)exc);
                mono_restore_context (&ctx);
        }
 
@@ -1220,7 +1343,7 @@ create_trampoline_code (MonoTrampolineType tramp_type)
 void
 mono_trampolines_init (void)
 {
-       mono_mutex_init_recursive (&trampolines_mutex);
+       mono_os_mutex_init_recursive (&trampolines_mutex);
 
        if (mono_aot_only)
                return;
@@ -1257,7 +1380,7 @@ mono_trampolines_cleanup (void)
        if (rgctx_lazy_fetch_trampoline_hash_addr)
                g_hash_table_destroy (rgctx_lazy_fetch_trampoline_hash_addr);
 
-       mono_mutex_destroy (&trampolines_mutex);
+       mono_os_mutex_destroy (&trampolines_mutex);
 }
 
 guint8 *
@@ -1306,7 +1429,7 @@ mono_create_jump_trampoline (MonoDomain *domain, MonoMethod *method, gboolean ad
        code = mono_create_specific_trampoline (method, MONO_TRAMPOLINE_JUMP, mono_domain_get (), &code_size);
        g_assert (code_size);
 
-       ji = mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO);
+       ji = (MonoJitInfo *)mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO);
        ji->code_start = code;
        ji->code_size = code_size;
        ji->d.method = method;
@@ -1383,7 +1506,7 @@ mono_create_jit_trampoline_from_token (MonoImage *image, guint32 token)
        MonoDomain *domain = mono_domain_get ();
        guint8 *buf, *start;
 
-       buf = start = mono_domain_alloc0 (domain, 2 * sizeof (gpointer));
+       buf = start = (guint8 *)mono_domain_alloc0 (domain, 2 * sizeof (gpointer));
 
        *(gpointer*)(gpointer)buf = image;
        buf += sizeof (gpointer);
@@ -1412,7 +1535,7 @@ mono_create_delegate_trampoline_info (MonoDomain *domain, MonoClass *klass, Mono
        pair.klass = klass;
        pair.method = method;
        mono_domain_lock (domain);
-       tramp_info = g_hash_table_lookup (domain_jit_info (domain)->delegate_trampoline_hash, &pair);
+       tramp_info = (MonoDelegateTrampInfo *)g_hash_table_lookup (domain_jit_info (domain)->delegate_trampoline_hash, &pair);
        mono_domain_unlock (domain);
        if (tramp_info)
                return tramp_info;
@@ -1422,7 +1545,7 @@ mono_create_delegate_trampoline_info (MonoDomain *domain, MonoClass *klass, Mono
        tramp_info->invoke_impl = mono_create_specific_trampoline (tramp_info, MONO_TRAMPOLINE_DELEGATE, domain, &code_size);
        g_assert (code_size);
 
-       dpair = mono_domain_alloc0 (domain, sizeof (MonoClassMethodPair));
+       dpair = (MonoClassMethodPair *)mono_domain_alloc0 (domain, sizeof (MonoClassMethodPair));
        memcpy (dpair, &pair, sizeof (MonoClassMethodPair));
 
        /* store trampoline address */
@@ -1502,26 +1625,6 @@ mono_create_rgctx_lazy_fetch_trampoline (guint32 offset)
 
        return ptr;
 }
-#ifdef MONO_ARCH_LLVM_SUPPORTED
-/*
- * mono_create_llvm_imt_trampoline:
- *
- *   LLVM compiled code can't pass in the IMT argument, so we use this trampoline, which
- * sets the IMT argument, then branches to the contents of the vtable slot given by
- * vt_offset in the vtable which is obtained from the argument list.
- */
-gpointer
-mono_create_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_offset)
-{
-#ifdef MONO_ARCH_HAVE_LLVM_IMT_TRAMPOLINE
-       return mono_arch_get_llvm_imt_trampoline (domain, m, vt_offset);
-#else
-       g_assert_not_reached ();
-       return NULL;
-#endif
-}
-#endif
 
 guint32
 mono_find_rgctx_lazy_fetch_trampoline_by_addr (gconstpointer addr)
index b2c80c78f9e42f064a8fe1ab6ead3f35174b4e46..4bcc19b5bfb64d86d12da04f3653159639057a1f 100644 (file)
@@ -29,7 +29,7 @@
 #include <mono/metadata/mono-config.h>
 #include <mono/metadata/environment.h>
 #include <mono/metadata/mono-debug.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/threads-types.h>
 #include <mono/metadata/verify.h>
 #include <mono/metadata/verify-internals.h>
@@ -38,7 +38,7 @@
 #include <mono/utils/mono-math.h>
 #include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-counters.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/dtrace.h>
 
index 9d314f7436c22fe1ba3a2d192a7996d3928da419..a74765570f76a2139af0e55533dacdfb50ab8a66 100644 (file)
@@ -23,7 +23,7 @@
 #include <mono/metadata/threads.h>
 #include <mono/metadata/profiler-private.h>
 #include <mono/metadata/mono-debug.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/utils/mono-math.h>
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/mono-mmap.h>
@@ -52,8 +52,8 @@ static gpointer ss_trampoline;
 static gpointer bp_trampoline;
 
 /* This mutex protects architecture specific caches */
-#define mono_mini_arch_lock() mono_mutex_lock (&mini_arch_mutex)
-#define mono_mini_arch_unlock() mono_mutex_unlock (&mini_arch_mutex)
+#define mono_mini_arch_lock() mono_os_mutex_lock (&mini_arch_mutex)
+#define mono_mini_arch_unlock() mono_os_mutex_unlock (&mini_arch_mutex)
 static mono_mutex_t mini_arch_mutex;
 
 #define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
@@ -754,7 +754,7 @@ mono_arch_cpu_init (void)
 void
 mono_arch_init (void)
 {
-       mono_mutex_init_recursive (&mini_arch_mutex);
+       mono_os_mutex_init_recursive (&mini_arch_mutex);
 
        if (!mono_aot_only)
                bp_trampoline = mini_get_breakpoint_trampoline ();
@@ -772,7 +772,7 @@ mono_arch_init (void)
 void
 mono_arch_cleanup (void)
 {
-       mono_mutex_destroy (&mini_arch_mutex);
+       mono_os_mutex_destroy (&mini_arch_mutex);
 }
 
 /*
@@ -1347,11 +1347,11 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
 
                switch (ainfo->storage) {
                case ArgInIReg:
-                       linfo->args [i].storage = LLVMArgInIReg;
+                       linfo->args [i].storage = LLVMArgNormal;
                        break;
                case ArgInDoubleSSEReg:
                case ArgInFloatSSEReg:
-                       linfo->args [i].storage = LLVMArgInFPReg;
+                       linfo->args [i].storage = LLVMArgNormal;
                        break;
                case ArgOnStack:
                        if (mini_type_is_vtype (t)) {
@@ -1361,13 +1361,7 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
                                else
                                        linfo->args [i].storage = LLVMArgVtypeByVal;
                        } else {
-                               linfo->args [i].storage = LLVMArgInIReg;
-                               if (t->byref) {
-                                       if (t->type == MONO_TYPE_R4)
-                                               linfo->args [i].storage = LLVMArgInFPReg;
-                                       else if (t->type == MONO_TYPE_R8)
-                                               linfo->args [i].storage = LLVMArgInFPReg;
-                               }
+                               linfo->args [i].storage = LLVMArgNormal;
                        }
                        break;
                case ArgValuetypeInReg:
@@ -2779,8 +2773,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        /* Have to use ecx as a temp reg since this can occur after OP_SETRET */
 
                        /* 
-                        * Read from the single stepping trigger page. This will cause a
-                        * SIGSEGV when single stepping is enabled.
                         * We do this _before_ the breakpoint, so single stepping after
                         * a breakpoint is hit will step to the next IL offset.
                         */
@@ -3171,7 +3163,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                        saved_eax = TRUE;
                                        x86_push_reg (code, X86_EAX);
                                }
-                       } else if (ins->dreg != X86_EAX) {
+                       } else {
                                saved_edx = TRUE;
                                x86_push_reg (code, X86_EDX);
                        }
@@ -5066,15 +5058,14 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        int compare_val = 0;
                        guint8 *br [1];
 
-#if defined (USE_COOP_GC)
-                       polling_func = "mono_threads_state_poll";
-                       compare_val = 1;
-#elif defined(__native_client_codegen__) && defined(__native_client_gc__)
+#if defined(__native_client_codegen__) && defined(__native_client_gc__)
                        polling_func = "mono_nacl_gc";
                        compare_val = 0xFFFFFFFF;
+#else
+                       g_assert (mono_threads_is_coop_enabled ());
+                       polling_func = "mono_threads_state_poll";
+                       compare_val = 1;
 #endif
-                       if (!polling_func)
-                               break;
 
                        x86_test_membase_imm (code, ins->sreg1, 0, compare_val);
                        br[0] = code; x86_branch8 (code, X86_CC_EQ, 0, FALSE);
@@ -6661,7 +6652,7 @@ emit_load_aotconst (guint8 *start, guint8 *code, MonoCompile *cfg, MonoJumpInfo
  * EAX.
  */
 guint8*
-mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, int tramp_type, gconstpointer target)
+mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, MonoJumpInfoType tramp_type, gconstpointer target)
 {
        /* Load the mscorlib got address */
        x86_mov_reg_membase (code, X86_EAX, MONO_ARCH_GOT_REG, sizeof (gpointer), 4);
index 0547b2c807eaf15c14fb52004f094f87c1073965..212f844af4ca27f1076c08c4b917081aeac08c4e 100644 (file)
@@ -234,7 +234,6 @@ typedef struct {
 #define MONO_ARCH_AOT_SUPPORTED 1
 
 #define MONO_ARCH_GSHARED_SUPPORTED 1
-#define MONO_ARCH_HAVE_LLVM_IMT_TRAMPOLINE 1
 #define MONO_ARCH_LLVM_SUPPORTED 1
 
 #define MONO_ARCH_SOFT_DEBUG_SUPPORTED 1
index 740ce48666b7ac03999a6b4cb7dd59705d82e7b7..82a94497d411de4482b3ef8d38d43d4014d5057b 100644 (file)
@@ -39,7 +39,7 @@
 #include <mono/metadata/mono-config.h>
 #include <mono/metadata/environment.h>
 #include <mono/metadata/mono-debug.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/threads-types.h>
 #include <mono/metadata/verify.h>
 #include <mono/metadata/verify-internals.h>
@@ -50,7 +50,7 @@
 #include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/mono-error-internals.h>
-#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-logger-internals.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-path.h>
 #include <mono/utils/mono-tls.h>
@@ -72,6 +72,8 @@
 
 #include "mini-gc.h"
 #include "debugger-agent.h"
+#include "llvm-runtime.h"
+#include "mini-llvm.h"
 
 MonoTraceSpec *mono_jit_trace_calls;
 MonoMethodDesc *mono_inject_async_exc_method;
@@ -81,10 +83,12 @@ int mono_break_at_bb_bb_num;
 gboolean mono_do_x86_stack_align = TRUE;
 gboolean mono_using_xdebug;
 
-#define mono_jit_lock() mono_mutex_lock (&jit_mutex)
-#define mono_jit_unlock() mono_mutex_unlock (&jit_mutex)
+#define mono_jit_lock() mono_os_mutex_lock (&jit_mutex)
+#define mono_jit_unlock() mono_os_mutex_unlock (&jit_mutex)
 static mono_mutex_t jit_mutex;
 
+MonoBackend *current_backend;
+
 #ifndef DISABLE_JIT
 
 gpointer
@@ -210,8 +214,8 @@ typedef struct MonoJumpTableChunk {
 } MonoJumpTableChunk;
 
 static MonoJumpTableChunk* g_jumptable;
-#define mono_jumptable_lock() mono_mutex_lock (&jumptable_mutex)
-#define mono_jumptable_unlock() mono_mutex_unlock (&jumptable_mutex)
+#define mono_jumptable_lock() mono_os_mutex_lock (&jumptable_mutex)
+#define mono_jumptable_unlock() mono_os_mutex_unlock (&jumptable_mutex)
 static mono_mutex_t jumptable_mutex;
 
 static  MonoJumpTableChunk*
@@ -227,7 +231,7 @@ void
 mono_jumptable_init (void)
 {
        if (g_jumptable == NULL) {
-               mono_mutex_init_recursive (&jumptable_mutex);
+               mono_os_mutex_init_recursive (&jumptable_mutex);
                g_jumptable = mono_create_jumptable_chunk (DEFAULT_JUMPTABLE_CHUNK_ELEMENTS);
        }
 }
@@ -283,7 +287,7 @@ mono_jumptable_cleanup (void)
                        current = prev;
                }
                g_jumptable = NULL;
-               mono_mutex_destroy (&jumptable_mutex);
+               mono_os_mutex_destroy (&jumptable_mutex);
        }
 }
 
@@ -310,7 +314,7 @@ typedef struct {
 void
 mono_emit_unwind_op (MonoCompile *cfg, int when, int tag, int reg, int val)
 {
-       MonoUnwindOp *op = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoUnwindOp));
+       MonoUnwindOp *op = (MonoUnwindOp *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoUnwindOp));
 
        op->op = tag;
        op->reg = reg;
@@ -461,7 +465,7 @@ mono_find_spvar_for_region (MonoCompile *cfg, int region)
 {
        region = mono_get_block_region_notry (cfg, region);
 
-       return g_hash_table_lookup (cfg->spvars, GINT_TO_POINTER (region));
+       return (MonoInst *)g_hash_table_lookup (cfg->spvars, GINT_TO_POINTER (region));
 }
 
 static void
@@ -783,7 +787,7 @@ set_vreg_to_inst (MonoCompile *cfg, int vreg, MonoInst *inst)
 
                while (vreg >= cfg->vreg_to_inst_len)
                        cfg->vreg_to_inst_len = cfg->vreg_to_inst_len ? cfg->vreg_to_inst_len * 2 : 32;
-               cfg->vreg_to_inst = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * cfg->vreg_to_inst_len);
+               cfg->vreg_to_inst = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * cfg->vreg_to_inst_len);
                if (size)
                        memcpy (cfg->vreg_to_inst, tmp, size * sizeof (MonoInst*));
        }
@@ -945,7 +949,7 @@ mono_mark_vreg_as_ref (MonoCompile *cfg, int vreg)
 
                while (vreg >= cfg->vreg_is_ref_len)
                        cfg->vreg_is_ref_len = cfg->vreg_is_ref_len ? cfg->vreg_is_ref_len * 2 : 32;
-               cfg->vreg_is_ref = mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * cfg->vreg_is_ref_len);
+               cfg->vreg_is_ref = (gboolean *)mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * cfg->vreg_is_ref_len);
                if (size)
                        memcpy (cfg->vreg_is_ref, tmp, size * sizeof (gboolean));
        }
@@ -961,7 +965,7 @@ mono_mark_vreg_as_mp (MonoCompile *cfg, int vreg)
 
                while (vreg >= cfg->vreg_is_mp_len)
                        cfg->vreg_is_mp_len = cfg->vreg_is_mp_len ? cfg->vreg_is_mp_len * 2 : 32;
-               cfg->vreg_is_mp = mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * cfg->vreg_is_mp_len);
+               cfg->vreg_is_mp = (gboolean *)mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * cfg->vreg_is_mp_len);
                if (size)
                        memcpy (cfg->vreg_is_mp, tmp, size * sizeof (gboolean));
        }
@@ -1075,10 +1079,10 @@ mono_add_ins_to_end (MonoBasicBlock *bb, MonoInst *inst)
 void
 mono_create_jump_table (MonoCompile *cfg, MonoInst *label, MonoBasicBlock **bbs, int num_blocks)
 {
-       MonoJumpInfo *ji = mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfo));
+       MonoJumpInfo *ji = (MonoJumpInfo *)mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfo));
        MonoJumpInfoBBTable *table;
 
-       table = mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfoBBTable));
+       table = (MonoJumpInfoBBTable *)mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfoBBTable));
        table->table = bbs;
        table->table_size = num_blocks;
        
@@ -1100,7 +1104,7 @@ mono_get_array_new_va_signature (int arity)
        if (!sighash) {
                sighash = g_hash_table_new (NULL, NULL);
        }
-       else if ((res = g_hash_table_lookup (sighash, GINT_TO_POINTER (arity)))) {
+       else if ((res = (MonoMethodSignature *)g_hash_table_lookup (sighash, GINT_TO_POINTER (arity)))) {
                mono_jit_unlock ();
                return res;
        }
@@ -1265,7 +1269,7 @@ mono_dynamic_code_hash_lookup (MonoDomain *domain, MonoMethod *method)
        MonoJitDynamicMethodInfo *res;
 
        if (domain_jit_info (domain)->dynamic_code_hash)
-               res = g_hash_table_lookup (domain_jit_info (domain)->dynamic_code_hash, method);
+               res = (MonoJitDynamicMethodInfo *)g_hash_table_lookup (domain_jit_info (domain)->dynamic_code_hash, method);
        else
                res = NULL;
        return res;
@@ -1315,11 +1319,11 @@ mono_allocate_stack_slots2 (MonoCompile *cfg, gboolean backward, guint32 *stack_
 
        LSCAN_DEBUG (printf ("Allocate Stack Slots 2 for %s:\n", mono_method_full_name (cfg->method, TRUE)));
 
-       scalar_stack_slots = mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * MONO_TYPE_PINNED);
+       scalar_stack_slots = (StackSlotInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * MONO_TYPE_PINNED);
        vtype_stack_slots = NULL;
        nvtypes = 0;
 
-       offsets = mono_mempool_alloc (cfg->mempool, sizeof (gint32) * cfg->num_varinfo);
+       offsets = (gint32 *)mono_mempool_alloc (cfg->mempool, sizeof (gint32) * cfg->num_varinfo);
        for (i = 0; i < cfg->num_varinfo; ++i)
                offsets [i] = -1;
 
@@ -1351,7 +1355,7 @@ mono_allocate_stack_slots2 (MonoCompile *cfg, gboolean backward, guint32 *stack_
        offset = 0;
        *stack_align = 0;
        for (unhandled = vars; unhandled; unhandled = unhandled->next) {
-               MonoMethodVar *current = unhandled->data;
+               MonoMethodVar *current = (MonoMethodVar *)unhandled->data;
 
                vmv = current;
                inst = cfg->varinfo [vmv->idx];
@@ -1389,7 +1393,7 @@ mono_allocate_stack_slots2 (MonoCompile *cfg, gboolean backward, guint32 *stack_
                        /* Fall through */
                case MONO_TYPE_VALUETYPE:
                        if (!vtype_stack_slots)
-                               vtype_stack_slots = mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * 256);
+                               vtype_stack_slots = (StackSlotInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * 256);
                        for (i = 0; i < nvtypes; ++i)
                                if (t->data.klass == vtype_stack_slots [i].vtype)
                                        break;
@@ -1628,11 +1632,11 @@ mono_allocate_stack_slots (MonoCompile *cfg, gboolean backward, guint32 *stack_s
        if ((cfg->num_varinfo > 0) && MONO_VARINFO (cfg, 0)->interval)
                return mono_allocate_stack_slots2 (cfg, backward, stack_size, stack_align);
 
-       scalar_stack_slots = mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * MONO_TYPE_PINNED);
+       scalar_stack_slots = (StackSlotInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * MONO_TYPE_PINNED);
        vtype_stack_slots = NULL;
        nvtypes = 0;
 
-       offsets = mono_mempool_alloc (cfg->mempool, sizeof (gint32) * cfg->num_varinfo);
+       offsets = (gint32 *)mono_mempool_alloc (cfg->mempool, sizeof (gint32) * cfg->num_varinfo);
        for (i = 0; i < cfg->num_varinfo; ++i)
                offsets [i] = -1;
 
@@ -1650,7 +1654,7 @@ mono_allocate_stack_slots (MonoCompile *cfg, gboolean backward, guint32 *stack_s
        offset = 0;
        *stack_align = sizeof(mgreg_t);
        for (l = vars; l; l = l->next) {
-               vmv = l->data;
+               vmv = (MonoMethodVar *)l->data;
                inst = cfg->varinfo [vmv->idx];
 
                t = mono_type_get_underlying_type (inst->inst_vtype);
@@ -1688,7 +1692,7 @@ mono_allocate_stack_slots (MonoCompile *cfg, gboolean backward, guint32 *stack_s
                        /* Fall through */
                case MONO_TYPE_VALUETYPE:
                        if (!vtype_stack_slots)
-                               vtype_stack_slots = mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * 256);
+                               vtype_stack_slots = (StackSlotInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (StackSlotInfo) * 256);
                        for (i = 0; i < nvtypes; ++i)
                                if (t->data.klass == vtype_stack_slots [i].vtype)
                                        break;
@@ -1889,8 +1893,8 @@ mini_register_opcode_emulation (int opcode, const char *name, const char *sigstr
        if (emul_opcode_num >= emul_opcode_alloced) {
                int incr = emul_opcode_alloced? emul_opcode_alloced/2: 16;
                emul_opcode_alloced += incr;
-               emul_opcode_map = g_realloc (emul_opcode_map, sizeof (emul_opcode_map [0]) * emul_opcode_alloced);
-               emul_opcode_opcodes = g_realloc (emul_opcode_opcodes, sizeof (emul_opcode_opcodes [0]) * emul_opcode_alloced);
+               emul_opcode_map = (MonoJitICallInfo **)g_realloc (emul_opcode_map, sizeof (emul_opcode_map [0]) * emul_opcode_alloced);
+               emul_opcode_opcodes = (short *)g_realloc (emul_opcode_opcodes, sizeof (emul_opcode_opcodes [0]) * emul_opcode_alloced);
        }
        emul_opcode_map [emul_opcode_num] = info;
        emul_opcode_opcodes [emul_opcode_num] = opcode;
@@ -2066,7 +2070,7 @@ mono_destroy_compile (MonoCompile *cfg)
        if (cfg->exvars)
                g_hash_table_destroy (cfg->exvars);
        for (l = cfg->headers_to_free; l; l = l->next)
-               mono_metadata_free_mh (l->data);
+               mono_metadata_free_mh ((MonoMethodHeader *)l->data);
        g_list_free (cfg->ldstr_list);
        g_hash_table_destroy (cfg->token_info_hash);
        if (cfg->abs_patches)
@@ -2086,7 +2090,7 @@ mono_create_tls_get_offset (MonoCompile *cfg, int offset)
 {
        MonoInst* ins;
 
-       if (!MONO_ARCH_HAVE_TLS_GET)
+       if (!cfg->backend->have_tls_get)
                return NULL;
 
        if (offset == -1)
@@ -2101,11 +2105,11 @@ mono_create_tls_get_offset (MonoCompile *cfg, int offset)
 gboolean
 mini_tls_get_supported (MonoCompile *cfg, MonoTlsKey key)
 {
-       if (!MONO_ARCH_HAVE_TLS_GET)
+       if (!cfg->backend->have_tls_get)
                return FALSE;
 
        if (cfg->compile_aot)
-               return ARCH_HAVE_TLS_GET_REG;
+               return cfg->backend->have_tls_get_reg;
        else
                return mini_get_tls_offset (key) != -1;
 }
@@ -2113,7 +2117,7 @@ mini_tls_get_supported (MonoCompile *cfg, MonoTlsKey key)
 MonoInst*
 mono_create_tls_get (MonoCompile *cfg, MonoTlsKey key)
 {
-       if (!MONO_ARCH_HAVE_TLS_GET)
+       if (!cfg->backend->have_tls_get)
                return NULL;
 
        /*
@@ -2121,7 +2125,7 @@ mono_create_tls_get (MonoCompile *cfg, MonoTlsKey key)
         * use a different opcode.
         */
        if (cfg->compile_aot) {
-               if (ARCH_HAVE_TLS_GET_REG) {
+               if (cfg->backend->have_tls_get_reg) {
                        MonoInst *ins, *c;
 
                        EMIT_NEW_TLS_OFFSETCONST (cfg, c, key);
@@ -2170,7 +2174,7 @@ mono_get_lmf_addr_intrinsic (MonoCompile* cfg)
 void
 mono_add_patch_info (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpointer target)
 {
-       MonoJumpInfo *ji = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfo));
+       MonoJumpInfo *ji = (MonoJumpInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfo));
 
        ji->ip.i = ip;
        ji->type = type;
@@ -2183,7 +2187,7 @@ mono_add_patch_info (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpoin
 void
 mono_add_patch_info_rel (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpointer target, int relocation)
 {
-       MonoJumpInfo *ji = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfo));
+       MonoJumpInfo *ji = (MonoJumpInfo *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfo));
 
        ji->ip.i = ip;
        ji->type = type;
@@ -2221,7 +2225,7 @@ mono_add_seq_point (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, int nat
 void
 mono_add_var_location (MonoCompile *cfg, MonoInst *var, gboolean is_reg, int reg, int offset, int from, int to)
 {
-       MonoDwarfLocListEntry *entry = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoDwarfLocListEntry));
+       MonoDwarfLocListEntry *entry = (MonoDwarfLocListEntry *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoDwarfLocListEntry));
 
        if (is_reg)
                g_assert (offset == 0);
@@ -2257,7 +2261,7 @@ mono_compile_create_vars (MonoCompile *cfg)
        if (cfg->verbose_level > 2)
                g_print ("creating vars\n");
 
-       cfg->args = mono_mempool_alloc0 (cfg->mempool, (sig->param_count + sig->hasthis) * sizeof (MonoInst*));
+       cfg->args = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, (sig->param_count + sig->hasthis) * sizeof (MonoInst*));
 
        if (sig->hasthis)
                cfg->args [0] = mono_compile_create_var (cfg, &cfg->method->klass->this_arg, OP_ARG);
@@ -2284,7 +2288,7 @@ mono_compile_create_vars (MonoCompile *cfg)
        }
 
        cfg->locals_start = cfg->num_varinfo;
-       cfg->locals = mono_mempool_alloc0 (cfg->mempool, header->num_locals * sizeof (MonoInst*));
+       cfg->locals = (MonoInst **)mono_mempool_alloc0 (cfg->mempool, header->num_locals * sizeof (MonoInst*));
 
        if (cfg->verbose_level > 2)
                g_print ("creating locals\n");
@@ -2295,7 +2299,14 @@ mono_compile_create_vars (MonoCompile *cfg)
        if (cfg->verbose_level > 2)
                g_print ("locals done\n");
 
+#ifdef ENABLE_LLVM
+       if (COMPILE_LLVM (cfg))
+               mono_llvm_create_vars (cfg);
+       else
+               mono_arch_create_vars (cfg);
+#else
        mono_arch_create_vars (cfg);
+#endif
 
        if (cfg->method->save_lmf && cfg->create_lmf_var) {
                MonoInst *lmf_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
@@ -2344,7 +2355,7 @@ mono_postprocess_patches (MonoCompile *cfg)
 
                        if (patch_info->type == MONO_PATCH_INFO_ABS) {
                                if (cfg->abs_patches) {
-                                       MonoJumpInfo *abs_ji = g_hash_table_lookup (cfg->abs_patches, patch_info->data.target);
+                                       MonoJumpInfo *abs_ji = (MonoJumpInfo *)g_hash_table_lookup (cfg->abs_patches, patch_info->data.target);
                                        if (abs_ji) {
                                                patch_info->type = abs_ji->type;
                                                patch_info->data.target = abs_ji->data.target;
@@ -2363,9 +2374,9 @@ mono_postprocess_patches (MonoCompile *cfg)
                        table = g_malloc0 (sizeof(gpointer) * patch_info->data.table->table_size);
 #else
                        if (cfg->method->dynamic) {
-                               table = mono_code_manager_reserve (cfg->dynamic_info->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
+                               table = (void **)mono_code_manager_reserve (cfg->dynamic_info->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
                        } else {
-                               table = mono_domain_code_reserve (cfg->domain, sizeof (gpointer) * patch_info->data.table->table_size);
+                               table = (void **)mono_domain_code_reserve (cfg->domain, sizeof (gpointer) * patch_info->data.table->table_size);
                        }
 #endif
 
@@ -2393,9 +2404,9 @@ mono_postprocess_patches (MonoCompile *cfg)
 #endif
 
                        mono_domain_lock (domain);
-                       jlist = g_hash_table_lookup (domain_jit_info (domain)->jump_target_hash, patch_info->data.method);
+                       jlist = (MonoJumpList *)g_hash_table_lookup (domain_jit_info (domain)->jump_target_hash, patch_info->data.method);
                        if (!jlist) {
-                               jlist = mono_domain_alloc0 (domain, sizeof (MonoJumpList));
+                               jlist = (MonoJumpList *)mono_domain_alloc0 (domain, sizeof (MonoJumpList));
                                g_hash_table_insert (domain_jit_info (domain)->jump_target_hash, patch_info->data.method, jlist);
                        }
                        jlist->list = g_slist_prepend (jlist->list, ip);
@@ -2511,11 +2522,11 @@ mono_codegen (MonoCompile *cfg)
 
                if (mono_using_xdebug)
                        /* See the comment for cfg->code_domain */
-                       code = mono_domain_code_reserve (code_domain, cfg->code_size + cfg->thunk_area + unwindlen);
+                       code = (guint8 *)mono_domain_code_reserve (code_domain, cfg->code_size + cfg->thunk_area + unwindlen);
                else
-                       code = mono_code_manager_reserve (cfg->dynamic_info->code_mp, cfg->code_size + cfg->thunk_area + unwindlen);
+                       code = (guint8 *)mono_code_manager_reserve (cfg->dynamic_info->code_mp, cfg->code_size + cfg->thunk_area + unwindlen);
        } else {
-               code = mono_domain_code_reserve (code_domain, cfg->code_size + cfg->thunk_area + unwindlen);
+               code = (guint8 *)mono_domain_code_reserve (code_domain, cfg->code_size + cfg->thunk_area + unwindlen);
        }
 #if defined(__native_client_codegen__) && defined(__native_client__)
        nacl_allow_target_modification (TRUE);
@@ -2555,10 +2566,13 @@ mono_codegen (MonoCompile *cfg)
  
        if (cfg->verbose_level > 0) {
                char* nm = mono_method_full_name (cfg->method, TRUE);
-               g_print ("Method %s emitted at %p to %p (code length %d) [%s]\n", 
+               char *opt_descr = mono_opt_descr (cfg->opt);
+               g_print ("Method %s emitted at %p to %p (code length %d) [%s] with opts %s\n", 
                                 nm, 
-                                cfg->native_code, cfg->native_code + cfg->code_len, cfg->code_len, cfg->domain->friendly_name);
+                                cfg->native_code, cfg->native_code + cfg->code_len, cfg->code_len, cfg->domain->friendly_name,
+                                opt_descr);
                g_free (nm);
+               g_free (opt_descr);
        }
 
        {
@@ -2681,7 +2695,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
        header = cfg->header;
 
        if (cfg->gshared)
-               flags |= JIT_INFO_HAS_GENERIC_JIT_INFO;
+               flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_GENERIC_JIT_INFO);
 
        if (cfg->arch_eh_jit_info) {
                MonoJitArgumentInfo *arg_info;
@@ -2695,18 +2709,18 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                stack_size = mono_arch_get_argument_info (sig, sig->param_count, arg_info);
 
                if (stack_size)
-                       flags |= JIT_INFO_HAS_ARCH_EH_INFO;
+                       flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_ARCH_EH_INFO);
        }
 
        if (cfg->has_unwind_info_for_epilog && !(flags & JIT_INFO_HAS_ARCH_EH_INFO))
-               flags |= JIT_INFO_HAS_ARCH_EH_INFO;
+               flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_ARCH_EH_INFO);
 
        if (cfg->thunk_area)
-               flags |= JIT_INFO_HAS_THUNK_INFO;
+               flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_THUNK_INFO);
 
        if (cfg->try_block_holes) {
                for (tmp = cfg->try_block_holes; tmp; tmp = tmp->next) {
-                       TryBlockHole *hole = tmp->data;
+                       TryBlockHole *hole = (TryBlockHole *)tmp->data;
                        MonoExceptionClause *ec = hole->clause;
                        int hole_end = hole->basic_block->native_offset + hole->basic_block->native_length;
                        MonoBasicBlock *clause_last_bb = cfg->cil_offset_to_bb [ec->try_offset + ec->try_len];
@@ -2717,7 +2731,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                                ++num_holes;
                }
                if (num_holes)
-                       flags |= JIT_INFO_HAS_TRY_BLOCK_HOLES;
+                       flags = (MonoJitInfoFlags)(flags | JIT_INFO_HAS_TRY_BLOCK_HOLES);
                if (G_UNLIKELY (cfg->verbose_level >= 4))
                        printf ("Number of try block holes %d\n", num_holes);
        }
@@ -2728,9 +2742,9 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                num_clauses = header->num_clauses;
 
        if (cfg->method->dynamic)
-               jinfo = g_malloc0 (mono_jit_info_size (flags, num_clauses, num_holes));
+               jinfo = (MonoJitInfo *)g_malloc0 (mono_jit_info_size (flags, num_clauses, num_holes));
        else
-               jinfo = mono_domain_alloc0 (cfg->domain, mono_jit_info_size (flags, num_clauses, num_holes));
+               jinfo = (MonoJitInfo *)mono_domain_alloc0 (cfg->domain, mono_jit_info_size (flags, num_clauses, num_holes));
        mono_jit_info_init (jinfo, cfg->method_to_register, cfg->native_code, cfg->code_len, flags, num_clauses, num_holes);
        jinfo->domain_neutral = (cfg->opt & MONO_OPT_SHARED) != 0;
 
@@ -2748,7 +2762,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                if (cfg->method->dynamic)
                        gi->generic_sharing_context = g_new0 (MonoGenericSharingContext, 1);
                else
-                       gi->generic_sharing_context = mono_domain_alloc0 (cfg->domain, sizeof (MonoGenericSharingContext));
+                       gi->generic_sharing_context = (MonoGenericSharingContext *)mono_domain_alloc0 (cfg->domain, sizeof (MonoGenericSharingContext));
                mini_init_gsctx (cfg->method->dynamic ? NULL : cfg->domain, NULL, cfg->gsctx_context, gi->generic_sharing_context);
 
                if ((method_to_compile->flags & METHOD_ATTRIBUTE_STATIC) ||
@@ -2778,9 +2792,9 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
 
                        gi->nlocs = g_slist_length (loclist);
                        if (cfg->method->dynamic)
-                               gi->locations = g_malloc0 (gi->nlocs * sizeof (MonoDwarfLocListEntry));
+                               gi->locations = (MonoDwarfLocListEntry *)g_malloc0 (gi->nlocs * sizeof (MonoDwarfLocListEntry));
                        else
-                               gi->locations = mono_domain_alloc0 (cfg->domain, gi->nlocs * sizeof (MonoDwarfLocListEntry));
+                               gi->locations = (MonoDwarfLocListEntry *)mono_domain_alloc0 (cfg->domain, gi->nlocs * sizeof (MonoDwarfLocListEntry));
                        i = 0;
                        for (l = loclist; l; l = l->next) {
                                memcpy (&(gi->locations [i]), l->data, sizeof (MonoDwarfLocListEntry));
@@ -2821,7 +2835,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                for (tmp = cfg->try_block_holes; tmp; tmp = tmp->next) {
                        guint32 start_bb_offset;
                        MonoTryBlockHoleJitInfo *hole;
-                       TryBlockHole *hole_data = tmp->data;
+                       TryBlockHole *hole_data = (TryBlockHole *)tmp->data;
                        MonoExceptionClause *ec = hole_data->clause;
                        int hole_end = hole_data->basic_block->native_offset + hole_data->basic_block->native_length;
                        MonoBasicBlock *clause_last_bb = cfg->cil_offset_to_bb [ec->try_offset + ec->try_len];
@@ -2908,7 +2922,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                                 * Extend the try block backwards to include parts of the previous call
                                 * instruction.
                                 */
-                               ei->try_start = (guint8*)ei->try_start - MONO_ARCH_MONITOR_ENTER_ADJUSTMENT;
+                               ei->try_start = (guint8*)ei->try_start - cfg->backend->monitor_enter_adjustment;
                        }
                        tblock = cfg->cil_offset_to_bb [ec->try_offset + ec->try_len];
                        g_assert (tblock);
@@ -2929,7 +2943,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                        ei->handler_start = cfg->native_code + tblock->native_offset;
 
                        for (tmp = cfg->try_block_holes; tmp; tmp = tmp->next) {
-                               TryBlockHole *hole = tmp->data;
+                               TryBlockHole *hole = (TryBlockHole *)tmp->data;
                                gpointer hole_end = cfg->native_code + (hole->basic_block->native_offset + hole->basic_block->native_length);
                                if (hole->clause == ec && hole_end == ei->try_end) {
                                        if (G_UNLIKELY (cfg->verbose_level >= 4))
@@ -3047,8 +3061,6 @@ is_open_method (MonoMethod *method)
        return FALSE;
 }
 
-#if defined(__native_client_codegen__) || USE_COOP_GC
-
 static void
 mono_create_gc_safepoint (MonoCompile *cfg, MonoBasicBlock *bblock)
 {
@@ -3059,6 +3071,7 @@ mono_create_gc_safepoint (MonoCompile *cfg, MonoBasicBlock *bblock)
 #if defined(__native_client_codegen__)
        NEW_AOTCONST (cfg, poll_addr, MONO_PATCH_INFO_GC_SAFE_POINT_FLAG, (gpointer)&__nacl_thread_suspension_needed);
 #else
+       g_assert (mono_threads_is_coop_enabled ());
        NEW_AOTCONST (cfg, poll_addr, MONO_PATCH_INFO_GC_SAFE_POINT_FLAG, (gpointer)&mono_polling_required);
 #endif
 
@@ -3104,14 +3117,19 @@ static void
 mono_insert_safepoints (MonoCompile *cfg)
 {
        MonoBasicBlock *bb;
+
+#if !defined(__native_client_codegen__)
+       if (!mono_threads_is_coop_enabled ())
+               return;
+#endif
+
        if (cfg->method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE) {
                WrapperInfo *info = mono_marshal_get_wrapper_info (cfg->method);
 #if defined(__native_client__) || defined(__native_client_codegen__)
                gpointer poll_func = &mono_nacl_gc;
-#elif defined(USE_COOP_GC)
-               gpointer poll_func = &mono_threads_state_poll;
 #else
-               gpointer poll_func = NULL;
+               g_assert (mono_threads_is_coop_enabled ());
+               gpointer poll_func = &mono_threads_state_poll;
 #endif
 
                if (info && info->subtype == WRAPPER_SUBTYPE_ICALL_WRAPPER && info->d.icall.func == poll_func) {
@@ -3156,14 +3174,70 @@ mono_insert_safepoints (MonoCompile *cfg)
 
 }
 
-#else
-
 static void
-mono_insert_safepoints (MonoCompile *cfg)
+init_backend (MonoBackend *backend)
 {
-}
-
+#ifdef MONO_ARCH_NEED_GOT_VAR
+       backend->need_got_var = 1;
+#endif
+#ifdef MONO_ARCH_HAVE_CARD_TABLE_WBARRIER
+       backend->have_card_table_wb = 1;
+#endif
+#ifdef MONO_ARCH_HAVE_OP_GENERIC_CLASS_INIT
+       backend->have_op_generic_class_init = 1;
+#endif
+#ifdef MONO_ARCH_EMULATE_MUL_DIV
+       backend->emulate_mul_div = 1;
+#endif
+#ifdef MONO_ARCH_EMULATE_DIV
+       backend->emulate_div = 1;
+#endif
+#if !defined(MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS)
+       backend->emulate_long_shift_opts = 1;
 #endif
+#ifdef MONO_ARCH_HAVE_OBJC_GET_SELECTOR
+       backend->have_objc_get_selector = 1;
+#endif
+#ifdef MONO_ARCH_HAVE_GENERALIZED_IMT_THUNK
+       backend->have_generalized_imt_thunk = 1;
+#endif
+#ifdef MONO_ARCH_GSHARED_SUPPORTED
+       backend->gshared_supported = 1;
+#endif
+       if (MONO_ARCH_HAVE_TLS_GET)
+               backend->have_tls_get = 1;
+#ifdef MONO_ARCH_HAVE_TLS_GET_REG
+               backend->have_tls_get_reg = 1;
+#endif
+       if (MONO_ARCH_USE_FPSTACK)
+               backend->use_fpstack = 1;
+#ifdef MONO_ARCH_HAVE_LIVERANGE_OPS
+       backend->have_liverange_ops = 1;
+#endif
+#ifdef MONO_ARCH_HAVE_OP_TAIL_CALL
+       backend->have_op_tail_call = 1;
+#endif
+#ifndef MONO_ARCH_MONITOR_ENTER_ADJUSTMENT
+       backend->monitor_enter_adjustment = 1;
+#else
+       backend->monitor_enter_adjustment = MONO_ARCH_MONITOR_ENTER_ADJUSTMENT;
+#endif
+#if defined(__mono_ilp32__)
+       backend->ilp32 = 1;
+#endif
+#ifdef MONO_ARCH_HAVE_DUMMY_INIT
+       backend->have_dummy_init = 1;
+#endif
+#ifdef MONO_ARCH_NEED_DIV_CHECK
+       backend->need_div_check = 1;
+#endif
+#ifdef NO_UNALIGNED_ACCESS
+       backend->no_unaligned_access = 1;
+#endif
+#ifdef MONO_ARCH_DYN_CALL_PARAM_AREA
+       backend->dyn_call_param_area = MONO_ARCH_DYN_CALL_PARAM_AREA;
+#endif
+}
 
 /*
  * mini_method_compile:
@@ -3224,8 +3298,10 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                try_generic_shared = mono_class_generic_sharing_enabled (method->klass) &&
                        (opts & MONO_OPT_GSHARED) && mono_method_is_generic_sharable (method, FALSE);
                if (mini_is_gsharedvt_sharable_method (method)) {
+                       /*
                        if (!mono_debug_count ())
                                try_generic_shared = FALSE;
+                       */
                }
        }
 
@@ -3273,6 +3349,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
        cfg->gen_seq_points = debug_options.gen_seq_points_compact_data || debug_options.gen_sdb_seq_points;
        cfg->gen_sdb_seq_points = debug_options.gen_sdb_seq_points;
        cfg->llvm_only = (flags & JIT_FLAG_LLVM_ONLY) != 0;
+       cfg->backend = current_backend;
 
 #ifdef PLATFORM_ANDROID
        if (cfg->method->wrapper_type != MONO_WRAPPER_NONE) {
@@ -3282,8 +3359,11 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
        }
 #endif
        /* coop / nacl requires loop detection to happen */
-#if defined(__native_client_codegen__) || defined(USE_COOP_GC)
+#if defined(__native_client_codegen__)
        cfg->opt |= MONO_OPT_LOOP;
+#else
+       if (mono_threads_is_coop_enabled ())
+               cfg->opt |= MONO_OPT_LOOP;
 #endif
        cfg->explicit_null_checks = debug_options.explicit_null_checks || (flags & JIT_FLAG_EXPLICIT_NULL_CHECKS);
        cfg->soft_breakpoints = debug_options.soft_breakpoints;
@@ -3335,9 +3415,10 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                cfg->gsctx_context = context;
 
                cfg->gsharedvt = TRUE;
-               // FIXME:
-               cfg->disable_llvm = TRUE;
-               cfg->exception_message = g_strdup ("gsharedvt");
+               if (!cfg->llvm_only) {
+                       cfg->disable_llvm = TRUE;
+                       cfg->exception_message = g_strdup ("gsharedvt");
+               }
        }
 
        if (cfg->gshared) {
@@ -3388,7 +3469,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                if (COMPILE_LLVM (cfg)) {
                        mono_llvm_check_method_supported (cfg);
                        if (cfg->disable_llvm) {
-                               if (cfg->verbose_level >= cfg->llvm_only ? 0 : 1) {
+                               if (cfg->verbose_level >= (cfg->llvm_only ? 0 : 1)) {
                                        //nm = mono_method_full_name (cfg->method, TRUE);
                                        printf ("LLVM failed for '%s': %s\n", method->name, cfg->exception_message);
                                        //g_free (nm);
@@ -3417,11 +3498,6 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
 
                cfg->extend_live_ranges = TRUE;
 
-               /* Temporarily disable this when running in the debugger until we have support
-                * for this in the debugger. */
-               /* This is no longer needed with sdb */
-               //cfg->disable_omit_fp = TRUE;
-
                /* The debugger needs all locals to be on the stack or in a global register */
                cfg->disable_vreg_to_lvreg = TRUE;
 
@@ -3429,13 +3505,10 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                 * may still want to view them. */
                cfg->disable_deadce_vars = TRUE;
 
-               // cfg->opt |= MONO_OPT_SHARED;
                cfg->opt &= ~MONO_OPT_DEADCE;
                cfg->opt &= ~MONO_OPT_INLINE;
                cfg->opt &= ~MONO_OPT_COPYPROP;
                cfg->opt &= ~MONO_OPT_CONSPROP;
-               /* This is no longer needed with sdb */
-               //cfg->opt &= ~MONO_OPT_GSHARED;
 
                /* This is needed for the soft debugger, which doesn't like code after the epilog */
                cfg->disable_out_of_line_bblocks = TRUE;
@@ -3480,7 +3553,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                }
        }
 
-       cfg->intvars = mono_mempool_alloc0 (cfg->mempool, sizeof (guint16) * STACK_MAX * header->max_stack);
+       cfg->intvars = (guint16 *)mono_mempool_alloc0 (cfg->mempool, sizeof (guint16) * STACK_MAX * header->max_stack);
 
        if (cfg->verbose_level > 0) {
                char *method_name;
@@ -3619,10 +3692,10 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
        if (!COMPILE_LLVM (cfg))
                mono_if_conversion (cfg);
 
-       MONO_SUSPEND_CHECK ();
+       mono_threads_safepoint ();
 
        /* Depth-first ordering on basic blocks */
-       cfg->bblocks = mono_mempool_alloc (cfg->mempool, sizeof (MonoBasicBlock*) * (cfg->num_bblocks + 1));
+       cfg->bblocks = (MonoBasicBlock **)mono_mempool_alloc (cfg->mempool, sizeof (MonoBasicBlock*) * (cfg->num_bblocks + 1));
 
        cfg->max_block_num = cfg->num_bblocks;
 
@@ -3758,14 +3831,14 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                return cfg;
        }
 
+       if (cfg->llvm_only && cfg->gsharedvt)
+               mono_ssa_remove_gsharedvt (cfg);
+
 #ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
        if (COMPILE_SOFT_FLOAT (cfg))
                mono_decompose_soft_float (cfg);
 #endif
-       if (COMPILE_LLVM (cfg))
-               mono_decompose_vtype_opts_llvm (cfg);
-       else
-               mono_decompose_vtype_opts (cfg);
+       mono_decompose_vtype_opts (cfg);
        if (cfg->flags & MONO_CFG_HAS_ARRAY_ACCESS)
                mono_decompose_array_access_opts (cfg);
 
@@ -3840,6 +3913,9 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                MonoBasicBlock *bb;
                gboolean need_local_opts;
 
+               if (cfg->gsharedvt)
+                       mono_allocate_gsharedvt_vars (cfg);
+
                if (!COMPILE_LLVM (cfg)) {
                        mono_spill_global_vars (cfg, &need_local_opts);
 
@@ -3865,7 +3941,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
 
                                        bb->last_ins->opcode = mono_reverse_branch_op (bb->last_ins->opcode);
                                } else {                        
-                                       MonoInst *inst = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst));
+                                       MonoInst *inst = (MonoInst *)mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst));
                                        inst->opcode = OP_BR;
                                        inst->inst_target_bb = bb->last_ins->inst_false_bb;
                                        mono_bblock_add_inst (bb, inst);
@@ -3907,7 +3983,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                if (!cfg->disable_llvm)
                        mono_llvm_emit_method (cfg);
                if (cfg->disable_llvm) {
-                       if (cfg->verbose_level >= cfg->llvm_only ? 0 : 1) {
+                       if (cfg->verbose_level >= (cfg->llvm_only ? 0 : 1)) {
                                //nm = mono_method_full_name (cfg->method, TRUE);
                                printf ("LLVM failed for '%s': %s\n", method->name, cfg->exception_message);
                                //g_free (nm);
@@ -4010,7 +4086,7 @@ mono_arch_instrument_epilog (MonoCompile *cfg, void *func, void *p, gboolean ena
 void
 mono_cfg_add_try_hole (MonoCompile *cfg, MonoExceptionClause *clause, guint8 *start, MonoBasicBlock *bb)
 {
-       TryBlockHole *hole = mono_mempool_alloc (cfg->mempool, sizeof (TryBlockHole));
+       TryBlockHole *hole = (TryBlockHole *)mono_mempool_alloc (cfg->mempool, sizeof (TryBlockHole));
        hole->clause = clause;
        hole->start_offset = start - cfg->native_code;
        hole->basic_block = bb;
@@ -4041,7 +4117,7 @@ create_jit_info_for_trampoline (MonoMethod *wrapper, MonoTrampInfo *info)
                uw_info = mono_unwind_ops_encode (info->unwind_ops, &info_len);
        }
 
-       jinfo = mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO);
+       jinfo = (MonoJitInfo *)mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO);
        jinfo->d.method = wrapper;
        jinfo->code_start = info->code;
        jinfo->code_size = info->code_size;
@@ -4089,9 +4165,9 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                }
                nm = mono_marshal_get_native_wrapper (method, TRUE, mono_aot_only);
                code = mono_get_addr_from_ftnptr (mono_compile_method (nm));
-               jinfo = mono_jit_info_table_find (target_domain, code);
+               jinfo = mono_jit_info_table_find (target_domain, (char *)code);
                if (!jinfo)
-                       jinfo = mono_jit_info_table_find (mono_domain_get (), code);
+                       jinfo = mono_jit_info_table_find (mono_domain_get (), (char *)code);
                if (jinfo)
                        mono_profiler_method_end_jit (method, jinfo, MONO_PROFILE_OK);
                return code;
@@ -4206,7 +4282,7 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                        ex = mono_loader_error_prepare_exception (error);
                } else {
                        if (cfg->exception_ptr) {
-                               ex = mono_class_get_exception_for_failure (cfg->exception_ptr);
+                               ex = mono_class_get_exception_for_failure ((MonoClass *)cfg->exception_ptr);
                        } else {
                                if (cfg->exception_type == MONO_EXCEPTION_MISSING_FIELD)
                                        ex = mono_exception_from_name_msg (mono_defaults.corlib, "System", "MissingFieldException", cfg->exception_message);
@@ -4237,7 +4313,7 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                ex = mono_exception_from_name_msg (mono_defaults.corlib, "System", "FieldAccessException", cfg->exception_message);
                break;
        case MONO_EXCEPTION_OBJECT_SUPPLIED: {
-               MonoException *exp = cfg->exception_ptr;
+               MonoException *exp = (MonoException *)cfg->exception_ptr;
                MONO_GC_UNREGISTER_ROOT (cfg->exception_ptr);
 
                ex = exp;
@@ -4321,7 +4397,7 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                MonoJumpInfo patch_info;
                MonoJumpList *jlist;
                GSList *tmp;
-               jlist = g_hash_table_lookup (domain_jit_info (target_domain)->jump_target_hash, method);
+               jlist = (MonoJumpList *)g_hash_table_lookup (domain_jit_info (target_domain)->jump_target_hash, method);
                if (jlist) {
                        patch_info.next = NULL;
                        patch_info.ip.i = 0;
@@ -4335,8 +4411,8 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
 #endif
 #ifdef MONO_ARCH_HAVE_PATCH_CODE_NEW
                        for (tmp = jlist->list; tmp; tmp = tmp->next) {
-                               gpointer target = mono_resolve_patch_target (NULL, target_domain, tmp->data, &patch_info, TRUE);
-                               mono_arch_patch_code_new (NULL, target_domain, tmp->data, &patch_info, target);
+                               gpointer target = mono_resolve_patch_target (NULL, target_domain, (guint8 *)tmp->data, &patch_info, TRUE);
+                               mono_arch_patch_code_new (NULL, target_domain, (guint8 *)tmp->data, &patch_info, target);
                        }
 #else
                        for (tmp = jlist->list; tmp; tmp = tmp->next)
@@ -4398,7 +4474,11 @@ mini_get_underlying_type (MonoType *type)
 void
 mini_jit_init (void)
 {
-       mono_mutex_init_recursive (&jit_mutex);
+       mono_os_mutex_init_recursive (&jit_mutex);
+#ifndef DISABLE_JIT
+       current_backend = g_new0 (MonoBackend, 1);
+       init_backend (current_backend);
+#endif
 }
 
 void
@@ -4421,6 +4501,17 @@ void mono_llvm_emit_aot_data (const char *symbol, guint8 *data, int data_len)
 {
        g_assert_not_reached ();
 }
+
+#endif
+
+#if !defined(ENABLE_LLVM_RUNTIME) && !defined(ENABLE_LLVM)
+
+void
+mono_llvm_cpp_throw_exception (void)
+{
+       g_assert_not_reached ();
+}
+
 #endif
 
 #ifdef DISABLE_JIT
index 7d26178dc2e89f88bdd8eb2fa34f2f53353c410c..3c75f2c8b897544ba09ac8d569ad8620773311f3 100644 (file)
@@ -35,8 +35,6 @@
 #include <mono/utils/mono-conc-hashtable.h>
 #include <mono/utils/mono-signal-handler.h>
 
-#define MONO_BREAKPOINT_ARRAY_SIZE 64
-
 #include "mini-arch.h"
 #include "regalloc.h"
 #include "mini-unwind.h"
 #endif
 
 /* Version number of the AOT file format */
-#define MONO_AOT_FILE_VERSION 122
+#define MONO_AOT_FILE_VERSION 130
 
 //TODO: This is x86/amd64 specific.
 #define mono_simd_shuffle_mask(a,b,c,d) ((a) | ((b) << 2) | ((c) << 4) | ((d) << 6))
@@ -178,8 +176,24 @@ typedef enum {
        MONO_AOT_FILE_FLAG_DEBUG = 4,
        MONO_AOT_FILE_FLAG_LLVM_THUMB = 8,
        MONO_AOT_FILE_FLAG_LLVM_ONLY = 16,
+       MONO_AOT_FILE_FLAG_SAFEPOINTS = 32,
+       MONO_AOT_FILE_FLAG_SEPARATE_DATA = 64,
 } MonoAotFileFlags;
 
+typedef enum {
+       MONO_AOT_TABLE_BLOB,
+       MONO_AOT_TABLE_IMAGE_TABLE,
+       MONO_AOT_TABLE_CLASS_NAME,
+       MONO_AOT_TABLE_METHOD_INFO_OFFSETS,
+       MONO_AOT_TABLE_EX_INFO_OFFSETS,
+       MONO_AOT_TABLE_CLASS_INFO_OFFSETS,
+       MONO_AOT_TABLE_GOT_INFO_OFFSETS,
+       MONO_AOT_TABLE_LLVM_GOT_INFO_OFFSETS,
+       MONO_AOT_TABLE_EXTRA_METHOD_INFO_OFFSETS,
+       MONO_AOT_TABLE_EXTRA_METHOD_TABLE,
+       MONO_AOT_TABLE_NUM
+} MonoAotFileTable;
+
 /* This structure is stored in the AOT file */
 typedef struct MonoAotFileInfo
 {
@@ -214,8 +228,8 @@ typedef struct MonoAotFileInfo
        gpointer extra_method_table;
        gpointer got_info_offsets;
        gpointer llvm_got_info_offsets;
-       gpointer mem_end;
        gpointer image_table;
+       gpointer mem_end;
        /* The GUID of the assembly which the AOT image was generated from */
        gpointer assembly_guid;
        /*
@@ -267,8 +281,18 @@ typedef struct MonoAotFileInfo
        guint32 double_align, long_align, generic_tramp_num;
        /* The page size used by trampoline pages */
        guint32 tramp_page_size;
+       /*
+        * The number of GOT entries which need to be preinitialized when the
+        * module is loaded.
+        */
+       guint32 nshared_got_entries;
+       /* The size of the data file, if MONO_AOT_FILE_FLAG_SEPARATE_DATA is set */
+       guint32 datafile_size;
 
        /* Arrays */
+       /* Offsets for tables inside the data file if MONO_AOT_FILE_FLAG_SEPARATE_DATA is set */
+       // FIXME: Sync with AOT
+       guint32 table_offsets [MONO_AOT_TABLE_NUM];
        /* Number of trampolines */
        guint32 num_trampolines [MONO_AOT_TRAMP_NUM];
        /* The indexes of the first GOT slots used by the trampolines */
@@ -334,6 +358,12 @@ typedef struct {
        MonoCodeManager *code_mp;
 } MonoJitDynamicMethodInfo;
 
+/* An extension of MonoGenericParamFull used in generic sharing */
+typedef struct {
+       MonoGenericParamFull param;
+       MonoGenericParam *parent;
+} MonoGSharedGenericParam;
+
 #define domain_jit_info(domain) ((MonoJitDomainInfo*)((domain)->runtime_info))
 
 /* Contains a list of ips which needs to be patched when a method is compiled */
@@ -380,7 +410,7 @@ enum {
        } while (0)
 
 #define MONO_INST_NEW(cfg,dest,op) do {        \
-               (dest) = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoInst));       \
+               (dest) = (MonoInst *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoInst));   \
                (dest)->opcode = (op);  \
                (dest)->dreg = -1;                          \
                MONO_INST_NULLIFY_SREGS ((dest));           \
@@ -388,7 +418,7 @@ enum {
        } while (0)
 
 #define MONO_INST_NEW_CALL(cfg,dest,op) do {   \
-               (dest) = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoCallInst));   \
+               (dest) = (MonoCallInst *)mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoCallInst));   \
                (dest)->inst.opcode = (op);     \
                (dest)->inst.dreg = -1;                                 \
                MONO_INST_NULLIFY_SREGS (&(dest)->inst);                \
@@ -722,12 +752,22 @@ typedef struct MonoMemcpyArgs {
 
 typedef enum {
        LLVMArgNone,
+       /* Scalar argument passed by value */
+       LLVMArgNormal,
+       /* Only in ainfo->pair_storage */
        LLVMArgInIReg,
+       /* Only in ainfo->pair_storage */
        LLVMArgInFPReg,
        LLVMArgVtypeInReg,
        LLVMArgVtypeByVal,
        LLVMArgVtypeRetAddr, /* On on cinfo->ret */
        LLVMArgGSharedVt,
+       /* Fixed size argument passed to/returned from gsharedvt method by ref */
+       LLVMArgGsharedvtFixed,
+       /* Fixed size vtype argument passed to/returned from gsharedvt method by ref */
+       LLVMArgGsharedvtFixedVtype,
+       /* Variable sized argument passed to/returned from gsharedvt method by ref */
+       LLVMArgGsharedvtVariable,
        /* Vtype passed as one int array argument */
        LLVMArgAsIArgs,
        /* Vtype passed as a set of fp arguments */
@@ -740,6 +780,10 @@ typedef enum {
        LLVMArgVtypeByRef,
        /* Vtype returned as an int */
        LLVMArgVtypeAsScalar,
+       /* Scalar returned by ref using an additional argument */
+       LLVMArgScalarRetAddr,
+       /* Scalar passed by ref */
+       LLVMArgScalarByRef
 } LLVMArgStorage;
 
 typedef struct {
@@ -760,6 +804,11 @@ typedef struct {
        int nslots;
        /* Only if storage == LLVMArgAsFpArgs/LLVMArgFpStruct (4/8) */
        int esize;
+       /* Parameter index in the LLVM signature */
+       int pindex;
+       MonoType *type;
+       /* Only if storage == LLVMArgAsFpArgs. Dummy fp args to insert before this arg */
+       int ndummy_fpargs;
 } LLVMArgInfo;
 
 typedef struct {
@@ -774,6 +823,10 @@ typedef struct {
         * Should be 0 or 1.
         */
        int vret_arg_index;
+       /* The indexes of various special arguments in the LLVM signature */
+       int vret_arg_pindex, this_arg_pindex, rgctx_arg_pindex, imt_arg_pindex;
+
+       /* Inline array of argument info */
        /* args [0] is for the this argument if it exists */
        LLVMArgInfo args [1];
 } LLVMCallInfo;
@@ -930,7 +983,9 @@ enum {
         * Set on instructions during code emission which make calls, i.e. OP_CALL, OP_THROW.
         * backend.pc_offset will be set to the pc offset at the end of the native call instructions.
         */
-       MONO_INST_GC_CALLSITE = 128
+       MONO_INST_GC_CALLSITE = 128,
+       /* On comparisons, mark the branch following the condition as likely to be taken */
+       MONO_INST_LIKELY = 128,
 };
 
 #define inst_c0 data.op[0].const_val
@@ -1124,6 +1179,13 @@ enum {
        MONO_GENERIC_CONTEXT_USED_METHOD = 2
 };
 
+enum {
+       /* Cannot be 0 since this is stored in rgctx slots, and 0 means an unitialized rgctx slot */
+       MONO_GSHAREDVT_BOX_TYPE_VTYPE = 1,
+       MONO_GSHAREDVT_BOX_TYPE_REF = 2,
+       MONO_GSHAREDVT_BOX_TYPE_NULLABLE = 3
+};
+
 typedef enum {
        MONO_RGCTX_INFO_STATIC_DATA,
        MONO_RGCTX_INFO_KLASS,
@@ -1132,7 +1194,9 @@ typedef enum {
        MONO_RGCTX_INFO_TYPE,
        MONO_RGCTX_INFO_REFLECTION_TYPE,
        MONO_RGCTX_INFO_METHOD,
+       /* In llvmonly mode, this is a function descriptor */
        MONO_RGCTX_INFO_GENERIC_METHOD_CODE,
+       MONO_RGCTX_INFO_GSHAREDVT_OUT_WRAPPER,
        MONO_RGCTX_INFO_CLASS_FIELD,
        MONO_RGCTX_INFO_METHOD_RGCTX,
        MONO_RGCTX_INFO_METHOD_CONTEXT,
@@ -1141,18 +1205,17 @@ typedef enum {
        MONO_RGCTX_INFO_CAST_CACHE,
        MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE,
        MONO_RGCTX_INFO_VALUE_SIZE,
+       /* +1 to avoid zero values in rgctx slots */
        MONO_RGCTX_INFO_FIELD_OFFSET,
        /* Either the code for a gsharedvt method, or the address for a gsharedvt-out trampoline for the method */
+       /* In llvmonly mode, this is a function descriptor */
        MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE,
        /* Same for virtual calls */
+       /* In llvmonly mode, this is a function descriptor */
        MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT,
        /* Same for calli, associated with a signature */
        MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI,
-       /*
-        * 0 - vtype
-        * 1 - ref
-        * 2 - gsharedvt type
-        */
+       /* One of MONO_GSHAREDVT_BOX_TYPE */
        MONO_RGCTX_INFO_CLASS_BOX_TYPE,
        /* Resolves to a MonoGSharedVtMethodRuntimeInfo */
        MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO,
@@ -1160,6 +1223,7 @@ typedef enum {
        MONO_RGCTX_INFO_MEMCPY,
        MONO_RGCTX_INFO_BZERO,
        /* The address of Nullable<T>.Box () */
+       /* In llvmonly mode, this is a function descriptor */
        MONO_RGCTX_INFO_NULLABLE_CLASS_BOX,
        MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX,
        /* MONO_PATCH_INFO_VCALL_METHOD */
@@ -1169,7 +1233,7 @@ typedef enum {
         * Same as MONO_RGCTX_INFO_CLASS_BOX_TYPE, but for the class
         * which implements the method.
         */
-       MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE
+       MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE,
 } MonoRgctxInfoType;
 
 typedef struct _MonoRuntimeGenericContextInfoTemplate {
@@ -1229,6 +1293,17 @@ typedef struct
        gboolean need_rgctx_tramp;
 } MonoDelegateTrampInfo;
 
+/*
+ * A function descriptor, which is a function address + argument pair.
+ * In llvm-only mode, these are used instead of trampolines to pass
+ * extra arguments to runtime functions/methods.
+ */
+typedef struct
+{
+       gpointer addr;
+       gpointer arg;
+} MonoFtnDesc;
+
 typedef enum {
 #define PATCH_INFO(a,b) MONO_PATCH_INFO_ ## a,
 #include "patch-info.h"
@@ -1365,6 +1440,32 @@ enum {
        MONO_OPT_LAST
 };
 
+/*
+ * This structure represents a JIT backend.
+ */
+typedef struct {
+       guint            have_card_table_wb : 1;
+       guint            have_op_generic_class_init : 1;
+       guint            emulate_mul_div : 1;
+       guint            emulate_div : 1;
+       guint            emulate_long_shift_opts : 1;
+       guint            have_objc_get_selector : 1;
+       guint            have_generalized_imt_thunk : 1;
+       guint            have_tls_get : 1;
+       guint            have_tls_get_reg : 1;
+       guint            have_liverange_ops: 1;
+       guint            have_op_tail_call : 1;
+       guint            have_dummy_init : 1;
+       guint            gshared_supported : 1;
+       guint            use_fpstack : 1;
+       guint            ilp32 : 1;
+       guint            need_got_var : 1;
+       guint            need_div_check : 1;
+       guint            no_unaligned_access : 1;
+       int              monitor_enter_adjustment;
+       int              dyn_call_param_area;
+} MonoBackend;
+
 /* Flags for mini_method_compile () */
 typedef enum {
        /* Whenever to run cctors during JITting */
@@ -1446,6 +1547,8 @@ typedef struct {
        MonoMethod      *method_to_register; /* The method to register in JIT info tables */
        MonoGenericContext *generic_context;
 
+       MonoBackend *backend;
+
        /* 
         * This variable represents the hidden argument holding the vtype
         * return address. If the method returns something other than a vtype, or
@@ -1699,6 +1802,10 @@ typedef struct {
        /* DWARF location list for 'rgctx_var' */
        GSList *rgctx_loclist;
 
+       int *gsharedvt_vreg_to_idx;
+
+       GSList *signatures;
+
        /* GC Maps */
    
        /* The offsets of the locals area relative to the frame pointer */
@@ -1801,7 +1908,9 @@ enum {
 #define OP_DUMMY_PCONST OP_DUMMY_I8CONST
 #define OP_PADD OP_LADD
 #define OP_PADD_IMM OP_LADD_IMM
+#define OP_PSUB_IMM OP_LSUB_IMM
 #define OP_PAND_IMM OP_LAND_IMM
+#define OP_PXOR_IMM OP_LXOR_IMM
 #define OP_PSUB OP_LSUB
 #define OP_PMUL OP_LMUL
 #define OP_PMUL_IMM OP_LMUL_IMM
@@ -1825,7 +1934,9 @@ enum {
 #define OP_DUMMY_PCONST OP_DUMMY_ICONST
 #define OP_PADD OP_IADD
 #define OP_PADD_IMM OP_IADD_IMM
+#define OP_PSUB_IMM OP_ISUB_IMM
 #define OP_PAND_IMM OP_IAND_IMM
+#define OP_PXOR_IMM OP_IXOR_IMM
 #define OP_PSUB OP_ISUB
 #define OP_PMUL OP_IMUL
 #define OP_PMUL_IMM OP_IMUL_IMM
@@ -2115,16 +2226,20 @@ mono_bb_last_inst (MonoBasicBlock *bb, int filter)
 /* main function */
 MONO_API int         mono_main                      (int argc, char* argv[]);
 MONO_API void        mono_set_defaults              (int verbose_level, guint32 opts);
+MONO_API void        mono_parse_env_options         (int *ref_argc, char **ref_argv []);
 MonoDomain* mini_init                      (const char *filename, const char *runtime_version);
 void        mini_cleanup                   (MonoDomain *domain);
 MONO_API MonoDebugOptions *mini_get_debug_options   (void);
+MONO_API gboolean    mini_parse_debug_option (const char *option);
 
 /* helper methods */
 void      mini_jit_init                    (void);
 void      mini_jit_cleanup                 (void);
 void      mono_disable_optimizations       (guint32 opts);
 void      mono_set_optimizations           (guint32 opts);
+void      mono_set_bisect_methods          (guint32 opt, const char *method_list_filename);
 guint32   mono_get_optimizations_for_method (MonoMethod *method, guint32 default_opt);
+char*     mono_opt_descr                   (guint32 flags);
 void      mono_set_verbose_level           (guint32 level);
 MonoJumpInfoToken* mono_jump_info_token_new (MonoMemPool *mp, MonoImage *image, guint32 token);
 MonoJumpInfoToken* mono_jump_info_token_new2 (MonoMemPool *mp, MonoImage *image, guint32 token, MonoGenericContext *context);
@@ -2169,6 +2284,7 @@ void      mono_merge_basic_blocks           (MonoCompile *cfg, MonoBasicBlock *b
 void      mono_optimize_branches            (MonoCompile *cfg);
 
 void      mono_blockset_print               (MonoCompile *cfg, MonoBitSet *set, const char *name, guint idom);
+const char*mono_ji_type_to_string           (MonoJumpInfoType type);
 void      mono_print_ji                     (const MonoJumpInfo *ji);
 void      mono_print_ins_index              (int i, MonoInst *ins);
 void      mono_print_ins                    (MonoInst *ins);
@@ -2223,7 +2339,6 @@ void      mono_analyze_liveness_gc          (MonoCompile *cfg);
 void      mono_linear_scan                  (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_mask);
 void      mono_global_regalloc              (MonoCompile *cfg);
 void      mono_create_jump_table            (MonoCompile *cfg, MonoInst *label, MonoBasicBlock **bbs, int num_blocks);
-int       mono_compile_assembly             (MonoAssembly *ass, guint32 opts, const char *aot_options);
 MonoCompile *mini_method_compile            (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFlags flags, int parts, int aot_method_index);
 void      mono_destroy_compile              (MonoCompile *cfg);
 MonoJitICallInfo *mono_find_jit_opcode_emulation (int opcode);
@@ -2324,51 +2439,34 @@ gpointer mono_aot_get_gsharedvt_arg_trampoline(gpointer arg, gpointer addr);
 guint8*  mono_aot_get_unwind_info           (MonoJitInfo *ji, guint32 *unwind_info_len);
 guint32  mono_aot_method_hash               (MonoMethod *method);
 MonoMethod* mono_aot_get_array_helper_from_wrapper (MonoMethod *method);
-guint32  mono_aot_get_got_offset            (MonoJumpInfo *ji) MONO_LLVM_INTERNAL;
-char*    mono_aot_get_method_name           (MonoCompile *cfg) MONO_LLVM_INTERNAL;
-gboolean mono_aot_is_direct_callable        (MonoJumpInfo *patch_info) MONO_LLVM_INTERNAL;
-void     mono_aot_mark_unused_llvm_plt_entry(MonoJumpInfo *patch_info) MONO_LLVM_INTERNAL;
-char*    mono_aot_get_plt_symbol            (MonoJumpInfoType type, gconstpointer data) MONO_LLVM_INTERNAL;
-int      mono_aot_get_method_index          (MonoMethod *method) MONO_LLVM_INTERNAL;
-MonoJumpInfo* mono_aot_patch_info_dup       (MonoJumpInfo* ji) MONO_LLVM_INTERNAL;
 void     mono_aot_set_make_unreadable       (gboolean unreadable);
 gboolean mono_aot_is_pagefault              (void *ptr);
 void     mono_aot_handle_pagefault          (void *ptr);
 void     mono_aot_register_jit_icall        (const char *name, gpointer addr);
-void*    mono_aot_readonly_field_override   (MonoClassField *field);
 guint32  mono_aot_find_method_index         (MonoMethod *method);
 void     mono_aot_init_llvm_method          (gpointer aot_module, guint32 method_index);
 void     mono_aot_init_gshared_method_this  (gpointer aot_module, guint32 method_index, MonoObject *this_ins);
 void     mono_aot_init_gshared_method_rgctx  (gpointer aot_module, guint32 method_index, MonoMethodRuntimeGenericContext *rgctx);
 
 /* This is an exported function */
-MONO_API void     mono_aot_register_globals          (gpointer *globals);
-/* This too */
 MONO_API void     mono_aot_register_module           (gpointer *aot_info);
 
+/* These are used to load the AOT data for aot images compiled with MONO_AOT_FILE_FLAG_SEPARATE_DATA */
+/*
+ * Return the AOT data for ASSEMBLY. SIZE is the size of the data. OUT_HANDLE should be set to a handle which is later
+ * passed to the free function.
+ */
+typedef unsigned char* (*MonoLoadAotDataFunc)          (MonoAssembly *assembly, int size, gpointer user_data, void **out_handle);
+/* Not yet used */
+typedef void  (*MonoFreeAotDataFunc)          (MonoAssembly *assembly, int size, gpointer user_data, void *handle);
+MONO_API void mono_install_load_aot_data_hook (MonoLoadAotDataFunc load_func, MonoFreeAotDataFunc free_func, gpointer user_data);
+
 void     mono_xdebug_init                   (const char *xdebug_opts);
 void     mono_save_xdebug_info              (MonoCompile *cfg);
 void     mono_save_trampoline_xdebug_info   (MonoTrampInfo *info);
 /* This is an exported function */
 void     mono_xdebug_flush                  (void);
 
-/* LLVM backend */
-/* KEEP THIS IN SYNCH WITH mini-llvm-loaded.c */
-void     mono_llvm_init                     (void) MONO_LLVM_INTERNAL;
-void     mono_llvm_cleanup                  (void) MONO_LLVM_INTERNAL;
-void     mono_llvm_emit_method              (MonoCompile *cfg) MONO_LLVM_INTERNAL;
-void     mono_llvm_emit_call                (MonoCompile *cfg, MonoCallInst *call) MONO_LLVM_INTERNAL;
-void     mono_llvm_create_aot_module        (MonoAssembly *assembly, const char *global_prefix, gboolean emit_dwarf, gboolean static_link, gboolean llvm_only) MONO_LLVM_INTERNAL;
-void     mono_llvm_emit_aot_module          (const char *filename, const char *cu_name) MONO_LLVM_INTERNAL;
-void     mono_llvm_emit_aot_file_info       (MonoAotFileInfo *info, gboolean has_jitted_code) MONO_LLVM_INTERNAL;
-void     mono_llvm_emit_aot_data            (const char *symbol, guint8 *data, int data_len) MONO_LLVM_INTERNAL;
-void     mono_llvm_check_method_supported   (MonoCompile *cfg) MONO_LLVM_INTERNAL;
-void     mono_llvm_free_domain_info         (MonoDomain *domain) MONO_LLVM_INTERNAL;
-MONO_API void mono_personality              (void);
-int      mono_llvm_load                     (const char* bpath);
-
-gboolean mini_llvm_init                     (void);
-
 gboolean  mono_method_blittable             (MonoMethod *method);
 gboolean  mono_method_same_domain           (MonoJitInfo *caller, MonoJitInfo *callee);
 
@@ -2404,7 +2502,6 @@ gpointer          mono_create_monitor_enter_trampoline (void);
 gpointer          mono_create_monitor_enter_v4_trampoline (void);
 gpointer          mono_create_monitor_exit_trampoline (void);
 gpointer          mono_create_static_rgctx_trampoline (MonoMethod *m, gpointer addr);
-gpointer          mono_create_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_offset) MONO_LLVM_INTERNAL;
 MonoVTable*       mono_find_class_init_trampoline_by_addr (gconstpointer addr);
 guint32           mono_find_rgctx_lazy_fetch_trampoline_by_addr (gconstpointer addr);
 gpointer          mono_magic_trampoline (mgreg_t *regs, guint8 *code, gpointer arg, guint8* tramp);
@@ -2422,7 +2519,7 @@ void              mono_monitor_enter_trampoline (mgreg_t *regs, guint8 *code, Mo
 void              mono_monitor_enter_v4_trampoline (mgreg_t *regs, guint8 *code, MonoObject *obj, guint8 *tramp);
 void              mono_monitor_exit_trampoline (mgreg_t *regs, guint8 *code, MonoObject *obj, guint8 *tramp);
 gconstpointer     mono_get_trampoline_func (MonoTrampolineType tramp_type);
-gpointer          mini_get_vtable_trampoline (int slot_index);
+gpointer          mini_get_vtable_trampoline (MonoVTable *vt, int slot_index);
 const char*       mono_get_generic_trampoline_simple_name (MonoTrampolineType tramp_type);
 char*             mono_get_generic_trampoline_name (MonoTrampolineType tramp_type);
 char*             mono_get_rgctx_fetch_trampoline_name (int slot);
@@ -2430,9 +2527,11 @@ gpointer          mini_get_nullified_class_init_trampoline (void);
 gpointer          mini_get_single_step_trampoline (void);
 gpointer          mini_get_breakpoint_trampoline (void);
 gpointer          mini_add_method_trampoline (MonoMethod *m, gpointer compiled_method, gboolean add_static_rgctx_tramp, gboolean add_unbox_tramp);
+gpointer          mini_add_method_wrappers_llvmonly (MonoMethod *m, gpointer compiled_method, gboolean caller_gsharedvt, gboolean add_unbox_tramp, gpointer *out_arg);
 gboolean          mini_jit_info_is_gsharedvt (MonoJitInfo *ji);
 gpointer*         mini_resolve_imt_method (MonoVTable *vt, gpointer *vtable_slot, MonoMethod *imt_method, MonoMethod **impl_method, gpointer *out_aot_addr,
                                                                                   gboolean *out_need_rgctx_tramp, MonoMethod **variant_iface);
+MonoFtnDesc      *mini_create_llvmonly_ftndesc (MonoDomain *domain, gpointer addr, gpointer arg);
 
 gboolean          mono_running_on_valgrind (void);
 void*             mono_global_codeman_reserve (int size);
@@ -2473,11 +2572,11 @@ int               mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoB
 MonoInst         *mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins);
 void              mono_decompose_long_opts (MonoCompile *cfg);
 void              mono_decompose_vtype_opts (MonoCompile *cfg);
-void              mono_decompose_vtype_opts_llvm (MonoCompile *cfg);
 void              mono_decompose_array_access_opts (MonoCompile *cfg);
 void              mono_decompose_soft_float (MonoCompile *cfg);
 void              mono_handle_global_vregs (MonoCompile *cfg);
 void              mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts);
+void              mono_allocate_gsharedvt_vars (MonoCompile *cfg);
 void              mono_if_conversion (MonoCompile *cfg);
 
 /* virtual function delegate */
@@ -2542,7 +2641,7 @@ void      mono_arch_decompose_long_opts         (MonoCompile *cfg, MonoInst *ins
 GSList*   mono_arch_get_delegate_invoke_impls   (void);
 LLVMCallInfo* mono_arch_get_llvm_call_info      (MonoCompile *cfg, MonoMethodSignature *sig) MONO_LLVM_INTERNAL;
 guint8*   mono_arch_emit_load_got_addr          (guint8 *start, guint8 *code, MonoCompile *cfg, MonoJumpInfo **ji);
-guint8*   mono_arch_emit_load_aotconst          (guint8 *start, guint8 *code, MonoJumpInfo **ji, int tramp_type, gconstpointer target);
+guint8*   mono_arch_emit_load_aotconst          (guint8 *start, guint8 *code, MonoJumpInfo **ji, MonoJumpInfoType tramp_type, gconstpointer target);
 GSList*   mono_arch_get_cie_program             (void);
 void      mono_arch_set_target                  (char *mtriple);
 gboolean  mono_arch_gsharedvt_sig_supported     (MonoMethodSignature *sig);
@@ -2619,7 +2718,7 @@ gboolean mono_arch_is_int_overflow              (void *sigctx, void *info);
 void     mono_arch_invalidate_method            (MonoJitInfo *ji, void *func, gpointer func_arg);
 guint32  mono_arch_get_patch_offset             (guint8 *code);
 gpointer*mono_arch_get_delegate_method_ptr_addr (guint8* code, mgreg_t *regs);
-void     mono_arch_create_vars                  (MonoCompile *cfg);
+void     mono_arch_create_vars                  (MonoCompile *cfg) MONO_LLVM_INTERNAL;
 void     mono_arch_save_unwind_info             (MonoCompile *cfg);
 void     mono_arch_register_lowlevel_calls      (void);
 gpointer mono_arch_get_unbox_trampoline         (MonoMethod *m, gpointer addr);
@@ -2663,7 +2762,7 @@ mono_thread_state_init_from_handle (MonoThreadUnwindState *tctx, MonoThreadInfo
 typedef gboolean (*MonoJitStackWalk)            (StackFrameInfo *frame, MonoContext *ctx, gpointer data);
 
 void     mono_exceptions_init                   (void);
-gboolean mono_handle_exception                  (MonoContext *ctx, gpointer obj);
+gboolean mono_handle_exception                  (MonoContext *ctx, MonoObject *obj);
 void     mono_handle_native_sigsegv             (int signal, void *sigctx, MONO_SIG_HANDLER_INFO_TYPE *siginfo);
 MONO_API void     mono_print_thread_dump                 (void *sigctx);
 MONO_API void     mono_print_thread_dump_from_ctx        (MonoContext *ctx);
@@ -2725,6 +2824,7 @@ void        mono_compute_natural_loops          (MonoCompile *cfg);
 MonoBitSet* mono_compile_iterated_dfrontier     (MonoCompile *cfg, MonoBitSet *set);
 void        mono_ssa_compute                    (MonoCompile *cfg);
 void        mono_ssa_remove                     (MonoCompile *cfg);
+void        mono_ssa_remove_gsharedvt           (MonoCompile *cfg);
 void        mono_ssa_cprop                      (MonoCompile *cfg);
 void        mono_ssa_deadce                     (MonoCompile *cfg);
 void        mono_ssa_strength_reduction         (MonoCompile *cfg);
@@ -2869,6 +2969,7 @@ MonoType* mini_type_get_underlying_type (MonoType *type);
 MonoMethod* mini_get_shared_method (MonoMethod *method);
 MonoMethod* mini_get_shared_method_to_register (MonoMethod *method);
 MonoMethod* mini_get_shared_method_full (MonoMethod *method, gboolean all_vt, gboolean is_gsharedvt);
+MonoType* mini_get_shared_gparam (MonoType *t, MonoType *constraint);
 int mini_get_rgctx_entry_slot (MonoJumpInfoRgctxEntry *entry);
 
 int mini_type_stack_size (MonoType *t, int *align);
@@ -2896,6 +2997,10 @@ void mini_init_gsctx (MonoDomain *domain, MonoMemPool *mp, MonoGenericContext *c
 
 gpointer mini_get_gsharedvt_wrapper (gboolean gsharedvt_in, gpointer addr, MonoMethodSignature *normal_sig, MonoMethodSignature *gsharedvt_sig,
                                                                         gint32 vcall_offset, gboolean calli);
+MonoMethod* mini_get_gsharedvt_in_sig_wrapper (MonoMethodSignature *sig);
+MonoMethod* mini_get_gsharedvt_out_sig_wrapper (MonoMethodSignature *sig);
+MonoMethodSignature* mini_get_gsharedvt_out_sig_wrapper_signature (gboolean has_this, gboolean has_ret, int param_count);
+gboolean mini_gsharedvt_runtime_invoke_supported (MonoMethodSignature *sig);
 
 /* SIMD support */
 
@@ -2989,58 +3094,14 @@ void MONO_SIG_HANDLER_SIGNATURE (mono_sigsegv_signal_handler);
 void MONO_SIG_HANDLER_SIGNATURE (mono_sigint_signal_handler) ;
 gboolean MONO_SIG_HANDLER_SIGNATURE (mono_chain_signal);
 
-#ifdef MONO_ARCH_HAVE_OP_TAIL_CALL
-#define ARCH_HAVE_OP_TAIL_CALL 1
-#else
-#define ARCH_HAVE_OP_TAIL_CALL 0
-#endif
-
 #ifndef MONO_ARCH_HAVE_TLS_GET
 #define MONO_ARCH_HAVE_TLS_GET 0
 #endif
 
-#ifdef MONO_ARCH_HAVE_TLS_GET_REG
-#define ARCH_HAVE_TLS_GET_REG 1
-#else
-#define ARCH_HAVE_TLS_GET_REG 0
-#endif
-
-#ifdef MONO_ARCH_EMULATE_MUL_DIV
-#define ARCH_EMULATE_MUL_DIV 1
-#else
-#define ARCH_EMULATE_MUL_DIV 0
-#endif
-
-#ifndef MONO_ARCH_MONITOR_ENTER_ADJUSTMENT
-#define MONO_ARCH_MONITOR_ENTER_ADJUSTMENT 1
-#endif
-
-#ifndef MONO_ARCH_DYN_CALL_PARAM_AREA
-#define MONO_ARCH_DYN_CALL_PARAM_AREA 0
-#endif
-
 #ifdef MONO_ARCH_VARARG_ICALLS
 #define ARCH_VARARG_ICALLS 1
 #else
 #define ARCH_VARARG_ICALLS 0
 #endif
 
-#ifdef MONO_ARCH_HAVE_DUMMY_INIT
-#define ARCH_HAVE_DUMMY_INIT 1
-#else
-#define ARCH_HAVE_DUMMY_INIT 0
-#endif
-
-#ifdef MONO_CROSS_COMPILE
-#define MONO_IS_CROSS_COMPILE 1
-#else
-#define MONO_IS_CROSS_COMPILE 0
-#endif
-
-#if defined(__mono_ilp32__)
-#define MONO_IS_ILP32 1
-#else
-#define MONO_IS_ILP32 0
-#endif
-
 #endif /* __MONO_MINI_H__ */
index d2ef247a130a1c046d3aaff1d71d970a94dfafa7..c6837933d3f5203420b50c086c7645ae8cbd1a85 100644 (file)
@@ -26,7 +26,7 @@ using System.Runtime.CompilerServices;
  * the IL code looks.
  */
 
-#if MOBILE
+#if __MOBILE__
 namespace ObjectTests
 {
 #endif
@@ -119,7 +119,7 @@ struct Gamma {
 
 class Tests {
 
-#if !MOBILE
+#if !__MOBILE__
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
@@ -1667,8 +1667,68 @@ ncells ) {
                var res = arm64_hfa_on_stack_inner (1, 2, 3, 4, 5, 6, 7, 8, s);
                return res == 10.0 ? 0 : 1;
        }
+
+       class MulOvfClass {
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public unsafe void EncodeIntoBuffer(char* value, int valueLength, char* buffer, int bufferLength) {
+               }
+       }
+
+       static unsafe int test_0_mul_ovf_regress_36052 () {
+               var p = new MulOvfClass ();
+
+               string typeName = typeof(int).Name;
+               int bufferSize = 45;
+
+               fixed (char* value = typeName) {
+                       char* buffer = stackalloc char[bufferSize];
+                       p.EncodeIntoBuffer(value, typeName.Length, buffer, bufferSize);
+               }
+               return 0;
+       }
+
+       struct Struct16 {
+               public int a, b, c, d;
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       static int pass_struct16 (object o0, object o2, object o3, object o4, object o5, object o6, object o7, Struct16 o8) {
+               // This disables LLVM
+               try {
+               } catch {
+               }
+               return o8.a;
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       static int pass_struct16 (object o0, object o2, object o3, object o6, object o7, Struct16 o8) {
+               return pass_struct16 (o0, o2, null, o3, null, o6, o7, o8);
+       }
+
+       public static int test_42_pass_16byte_struct_split () {
+               return pass_struct16 (null, null, null, null, null, new Struct16 () { a = 42 });
+       }
+
+       public interface IComparer2
+       {
+               Type foo<T> ();
+       }
+
+       public class AClass : IComparer2 {
+               public Type foo<T> () {
+                       return typeof(T);
+               }
+       }
+
+       public static int test_0_delegate_to_virtual_generic_on_ifaces () {
+               IComparer2 c = new AClass ();
+
+               Func<Type> f = c.foo<string>;
+               return f () == typeof(string) ? 0 : 1;
+       }
+
 }
 
-#if MOBILE
+#if __MOBILE__
 }
 #endif
index 8b77c438721b0280a37688ba279136d663308bd3..c9b9885e18ba3906b59224c477e92b7c81289047 100644 (file)
@@ -41,7 +41,6 @@ PATCH_INFO(MONITOR_ENTER_V4, "monitor_enter_v4")
 PATCH_INFO(MONITOR_EXIT, "monitor_exit")
 PATCH_INFO(MSCORLIB_GOT_ADDR, "mscorlib_got_addr")
 PATCH_INFO(SEQ_POINT_INFO, "seq_point_info")
-PATCH_INFO(LLVM_IMT_TRAMPOLINE, "llvm_imt_trampoline")
 PATCH_INFO(GC_CARD_TABLE_ADDR, "gc_card_table_addr")
 PATCH_INFO(CASTCLASS_CACHE, "castclass_cache")
 PATCH_INFO(SIGNATURE, "signature")
@@ -58,3 +57,4 @@ PATCH_INFO(GC_SAFE_POINT_FLAG, "gc_safe_point_flag")
 PATCH_INFO(NONE, "none")
 PATCH_INFO(AOT_MODULE, "aot_module")
 PATCH_INFO(AOT_JIT_INFO, "aot_jit_info")
+PATCH_INFO(GC_NURSERY_BITS, "gc_nursery_bits")
index c9f74b8e170b68359225bbc6e8a1fba44da6598c..ac22ca41f070d0201b7c4b55371cc597b1e97a51 100644 (file)
@@ -58,7 +58,7 @@ mono_save_seq_point_info (MonoCompile *cfg)
 
        for (i = 0; i < cfg->seq_points->len; ++i) {
                SeqPoint *sp = &seq_points [i];
-               MonoInst *ins = g_ptr_array_index (cfg->seq_points, i);
+               MonoInst *ins = (MonoInst *)g_ptr_array_index (cfg->seq_points, i);
 
                sp->il_offset = ins->inst_imm;
                sp->native_offset = ins->inst_offset;
@@ -79,7 +79,7 @@ mono_save_seq_point_info (MonoCompile *cfg)
                        bb_seq_points = g_slist_reverse (bb->seq_points);
                        last = NULL;
                        for (l = bb_seq_points; l; l = l->next) {
-                               MonoInst *ins = l->data;
+                               MonoInst *ins = (MonoInst *)l->data;
 
                                if (ins->inst_imm == METHOD_ENTRY_IL_OFFSET || ins->inst_imm == METHOD_EXIT_IL_OFFSET)
                                /* Used to implement method entry/exit events */
@@ -108,13 +108,13 @@ mono_save_seq_point_info (MonoCompile *cfg)
                                 */
                                l = g_slist_last (bb->seq_points);
                                if (l) {
-                                       endfinally_seq_point = l->data;
+                                       endfinally_seq_point = (MonoInst *)l->data;
 
                                        for (bb2 = cfg->bb_entry; bb2; bb2 = bb2->next_bb) {
                                                GSList *l = g_slist_last (bb2->seq_points);
 
                                                if (l) {
-                                                       MonoInst *ins = l->data;
+                                                       MonoInst *ins = (MonoInst *)l->data;
 
                                                        if (!(ins->inst_imm == METHOD_ENTRY_IL_OFFSET || ins->inst_imm == METHOD_EXIT_IL_OFFSET) && ins != endfinally_seq_point)
                                                                next [endfinally_seq_point->backend.size] = g_slist_append (next [endfinally_seq_point->backend.size], GUINT_TO_POINTER (ins->backend.size));
@@ -198,12 +198,12 @@ mono_get_seq_points (MonoDomain *domain, MonoMethod *method)
        }
 
        mono_loader_lock ();
-       seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, method);
+       seq_points = (MonoSeqPointInfo *)g_hash_table_lookup (domain_jit_info (domain)->seq_points, method);
        if (!seq_points && method->is_inflated) {
                /* generic sharing + aot */
-               seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, declaring_generic_method);
+               seq_points = (MonoSeqPointInfo *)g_hash_table_lookup (domain_jit_info (domain)->seq_points, declaring_generic_method);
                if (!seq_points)
-                       seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, shared_method);
+                       seq_points = (MonoSeqPointInfo *)g_hash_table_lookup (domain_jit_info (domain)->seq_points, shared_method);
        }
        mono_loader_unlock ();
 
@@ -299,6 +299,6 @@ void
 mono_image_get_aot_seq_point_path (MonoImage *image, char **str)
 {
        int size = strlen (image->name) + strlen (SEQ_POINT_AOT_EXT) + 1;
-       *str = g_malloc (size);
+       *str = (char *)g_malloc (size);
        g_sprintf (*str, "%s%s", image->name, SEQ_POINT_AOT_EXT);
 }
index 0f484a98758ab2c15d81df374257df9e9eaabe59..6bffbd05c4927183446441b0f290e53e1595debf 100644 (file)
@@ -686,7 +686,7 @@ mono_simd_simplify_indirection (MonoCompile *cfg)
        }
 
        DEBUG (printf ("[simd-simplify] max vreg is %d\n", max_vreg));
-       vreg_flags = g_malloc0 (max_vreg + 1);
+       vreg_flags = (char *)g_malloc0 (max_vreg + 1);
        target_bb = g_new0 (MonoBasicBlock*, max_vreg + 1);
 
        for (i = 0; i < cfg->num_varinfo; i++) {
@@ -1482,7 +1482,7 @@ simd_version_name (guint32 version)
 static MonoInst*
 emit_intrinsics (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, MonoInst **args, const SimdIntrinsc *intrinsics, guint32 size)
 {
-       const SimdIntrinsc * result = mono_binary_search (cmethod->name, intrinsics, size, sizeof (SimdIntrinsc), &simd_intrinsic_compare_by_name);
+       const SimdIntrinsc *result = (const SimdIntrinsc *)mono_binary_search (cmethod->name, intrinsics, size, sizeof (SimdIntrinsc), &simd_intrinsic_compare_by_name);
        if (!result) {
                DEBUG (printf ("function doesn't have a simd intrinsic %s::%s/%d\n", cmethod->klass->name, cmethod->name, fsig->param_count));
                return NULL;
index 95bea3006eef32939c9fbfd145f62f5b754c3816..a29108872a4adbb4dfb50430f70595a6eb3c9b17 100644 (file)
@@ -141,7 +141,7 @@ static inline void
 record_use (MonoCompile *cfg, MonoInst *var, MonoBasicBlock *bb, MonoInst *ins)
 {
        MonoMethodVar *info;
-       MonoVarUsageInfo *ui = mono_mempool_alloc (cfg->mempool, sizeof (MonoVarUsageInfo));
+       MonoVarUsageInfo *ui = (MonoVarUsageInfo *)mono_mempool_alloc (cfg->mempool, sizeof (MonoVarUsageInfo));
 
        info = MONO_VARINFO (cfg, var->inst_c0);
        
@@ -352,7 +352,7 @@ mono_ssa_compute (MonoCompile *cfg)
        mono_compile_dominator_info (cfg, MONO_COMP_DOM | MONO_COMP_IDOM | MONO_COMP_DFRONTIER);
 
        bitsize = mono_bitset_alloc_size (cfg->num_bblocks, 0);
-       buf = buf_start = g_malloc0 (mono_bitset_alloc_size (cfg->num_bblocks, 0) * cfg->num_varinfo);
+       buf = buf_start = (guint8 *)g_malloc0 (mono_bitset_alloc_size (cfg->num_bblocks, 0) * cfg->num_varinfo);
 
        for (i = 0; i < cfg->num_varinfo; ++i) {
                vinfo [i].def_in = mono_bitset_mem_new (buf, cfg->num_bblocks, 0);
@@ -434,7 +434,7 @@ mono_ssa_compute (MonoCompile *cfg)
                        else
                                ins->klass = var->klass;
 
-                       ins->inst_phi_args =  mono_mempool_alloc0 (cfg->mempool, sizeof (int) * (cfg->bblocks [idx]->in_count + 1));
+                       ins->inst_phi_args = (int *)mono_mempool_alloc0 (cfg->mempool, sizeof (int) * (cfg->bblocks [idx]->in_count + 1));
                        ins->inst_phi_args [0] = cfg->bblocks [idx]->in_count;
 
                        /* For debugging */
@@ -457,7 +457,7 @@ mono_ssa_compute (MonoCompile *cfg)
 
        /* Renaming phase */
 
-       stack = alloca (sizeof (MonoInst *) * cfg->num_varinfo);
+       stack = (MonoInst **)alloca (sizeof (MonoInst *) * cfg->num_varinfo);
        memset (stack, 0, sizeof (MonoInst *) * cfg->num_varinfo);
 
        lvreg_stack = g_new0 (guint32, cfg->next_vreg);
@@ -477,6 +477,73 @@ mono_ssa_compute (MonoCompile *cfg)
        cfg->comp_done |= MONO_COMP_SSA;
 }
 
+/*
+ * mono_ssa_remove_gsharedvt:
+ *
+ *   Same as mono_ssa_remove, but only remove phi nodes for gsharedvt variables.
+ */
+void
+mono_ssa_remove_gsharedvt (MonoCompile *cfg)
+{
+       MonoInst *ins, *var, *move;
+       int i, j, first;
+
+       /*
+        * When compiling gsharedvt code, we need to get rid of the VPHI instructions,
+        * since they cannot be handled later in the llvm backend.
+        */
+       g_assert (cfg->comp_done & MONO_COMP_SSA);
+
+       for (i = 0; i < cfg->num_bblocks; ++i) {
+               MonoBasicBlock *bb = cfg->bblocks [i];
+
+               if (cfg->verbose_level >= 4)
+                       printf ("\nREMOVE SSA %d:\n", bb->block_num);
+
+               for (ins = bb->code; ins; ins = ins->next) {
+                       if (!(MONO_IS_PHI (ins) && ins->opcode == OP_VPHI && mini_is_gsharedvt_variable_type (&ins->klass->byval_arg)))
+                               continue;
+
+                       g_assert (ins->inst_phi_args [0] == bb->in_count);
+                       var = get_vreg_to_inst (cfg, ins->dreg);
+
+                       /* Check for PHI nodes where all the inputs are the same */
+                       first = ins->inst_phi_args [1];
+
+                       for (j = 1; j < bb->in_count; ++j)
+                               if (first != ins->inst_phi_args [j + 1])
+                                       break;
+
+                       if ((bb->in_count > 1) && (j == bb->in_count)) {
+                               ins->opcode = op_phi_to_move (ins->opcode);
+                               if (ins->opcode == OP_VMOVE)
+                                       g_assert (ins->klass);
+                               ins->sreg1 = first;
+                       } else {
+                               for (j = 0; j < bb->in_count; j++) {
+                                       MonoBasicBlock *pred = bb->in_bb [j];
+                                       int sreg = ins->inst_phi_args [j + 1];
+
+                                       if (cfg->verbose_level >= 4)
+                                               printf ("\tADD R%d <- R%d in BB%d\n", var->dreg, sreg, pred->block_num);
+                                       if (var->dreg != sreg) {
+                                               MONO_INST_NEW (cfg, move, op_phi_to_move (ins->opcode));
+                                               if (move->opcode == OP_VMOVE) {
+                                                       g_assert (ins->klass);
+                                                       move->klass = ins->klass;
+                                               }
+                                               move->dreg = var->dreg;
+                                               move->sreg1 = sreg;
+                                               mono_add_ins_to_end (pred, move);
+                                       }
+                               }
+
+                               NULLIFY_INS (ins);
+                       }
+               }
+       }
+}
+
 void
 mono_ssa_remove (MonoCompile *cfg)
 {
@@ -937,7 +1004,7 @@ visit_inst (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, GList **cvars,
 
                if (MONO_IS_JUMP_TABLE (ins)) {
                        int i;
-                       MonoJumpInfoBBTable *table = MONO_JUMP_TABLE_FROM_INS (ins);
+                       MonoJumpInfoBBTable *table = (MonoJumpInfoBBTable *)MONO_JUMP_TABLE_FROM_INS (ins);
 
                        if (!ins->next || ins->next->opcode != OP_PADD) {
                                /* The PADD was optimized away */
@@ -973,7 +1040,7 @@ visit_inst (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, GList **cvars,
 
                if (ins->opcode == OP_SWITCH) {
                        int i;
-                       MonoJumpInfoBBTable *table = ins->inst_p0;
+                       MonoJumpInfoBBTable *table = (MonoJumpInfoBBTable *)ins->inst_p0;
 
                        for (i = 0; i < table->table_size; i++)
                                if (table->table [i])
@@ -1049,7 +1116,7 @@ fold_ins (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, MonoInst **carray
 
                if (MONO_IS_JUMP_TABLE (ins)) {
                        int i;
-                       MonoJumpInfoBBTable *table = MONO_JUMP_TABLE_FROM_INS (ins);
+                       MonoJumpInfoBBTable *table = (MonoJumpInfoBBTable *)MONO_JUMP_TABLE_FROM_INS (ins);
 
                        if (!ins->next || ins->next->opcode != OP_PADD) {
                                /* The PADD was optimized away */
index 9abca97a1b9fd3b11e34748588cd4188cc2d85f9..9457633bafc1b81e5dcf27980522e6702e214274 100644 (file)
@@ -2,14 +2,14 @@
 #include "config.h"
 #include "tasklets.h"
 #include "mono/metadata/exception.h"
-#include "mono/metadata/gc-internal.h"
+#include "mono/metadata/gc-internals.h"
 #include "mini.h"
 
 #if defined(MONO_SUPPORT_TASKLETS)
 
 static mono_mutex_t tasklets_mutex;
-#define tasklets_lock() mono_mutex_lock(&tasklets_mutex)
-#define tasklets_unlock() mono_mutex_unlock(&tasklets_mutex)
+#define tasklets_lock() mono_os_mutex_lock(&tasklets_mutex)
+#define tasklets_unlock() mono_os_mutex_unlock(&tasklets_mutex)
 
 /* LOCKING: tasklets_mutex is assumed to e taken */
 static void
@@ -47,10 +47,10 @@ continuation_mark_frame (MonoContinuation *cont)
        if (cont->domain)
                return mono_get_exception_argument ("cont", "Already marked");
 
-       jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        lmf = mono_get_lmf();
        cont->domain = mono_domain_get ();
-       cont->thread_id = GetCurrentThreadId ();
+       cont->thread_id = mono_native_thread_id_get ();
 
        /* get to the frame that called Mark () */
        memset (&rji, 0, sizeof (rji));
@@ -82,7 +82,7 @@ continuation_store (MonoContinuation *cont, int state, MonoException **e)
                *e =  mono_get_exception_argument ("cont", "Continuation not initialized");
                return 0;
        }
-       if (cont->domain != mono_domain_get () || cont->thread_id != GetCurrentThreadId ()) {
+       if (cont->domain != mono_domain_get () || !mono_native_thread_id_equals (cont->thread_id, mono_native_thread_id_get ())) {
                *e = mono_get_exception_argument ("cont", "Continuation from another thread or domain");
                return 0;
        }
@@ -124,7 +124,7 @@ continuation_restore (MonoContinuation *cont, int state)
 
        if (!cont->domain || !cont->return_sp)
                return mono_get_exception_argument ("cont", "Continuation not initialized");
-       if (cont->domain != mono_domain_get () || cont->thread_id != GetCurrentThreadId ())
+       if (cont->domain != mono_domain_get () || !mono_native_thread_id_equals (cont->thread_id, mono_native_thread_id_get ()))
                return mono_get_exception_argument ("cont", "Continuation from another thread or domain");
 
        /*g_print ("restore: %p, state: %d\n", cont, state);*/
@@ -136,7 +136,7 @@ continuation_restore (MonoContinuation *cont, int state)
 void
 mono_tasklets_init (void)
 {
-       mono_mutex_init_recursive (&tasklets_mutex);
+       mono_os_mutex_init_recursive (&tasklets_mutex);
 
        mono_add_internal_call ("Mono.Tasklets.Continuation::alloc", continuation_alloc);
        mono_add_internal_call ("Mono.Tasklets.Continuation::free", continuation_free);
index 025a8d2db5a4335503ded53572a5f4989c60fe83..615f20a4b9b9a1067ae941b0702b87d748aab880 100644 (file)
@@ -6,7 +6,7 @@
 typedef struct {
        MonoLMF *lmf;
        gpointer top_sp;
-       gsize thread_id;
+       MonoNativeThreadId thread_id;
        MonoDomain *domain;
 
        /* the instruction pointer and stack to return to on Restore */
index 5df176e4755c968607feee268744df3ab860bb28..06508eb512f0bdd1d3ebb596e052300dcc3fe420 100755 (executable)
@@ -89,27 +89,29 @@ while read line; do
        fi
 done < $TMP_FILE
 
-echo -n "              <test-case name=\"MonoTests.op_il_seq_point.${TEST_FILE}${USE_AOT}\" executed=\"True\" time=\"0\" asserts=\"0\" success=\"" >> TestResults_op_il_seq_point.xml
+TESTRESULT_FILE=TestResult-op_il_seq_point.xml
+
+echo -n "              <test-case name=\"MonoTests.op_il_seq_point.${TEST_FILE}${USE_AOT}\" executed=\"True\" time=\"0\" asserts=\"0\" success=\"" >> $TESTRESULT_FILE
 
 if [ $CHANGES != 0 ]
 then
        METHOD_NAME=$(get_method_name "$METHOD")
 
-       echo "False\">" >> TestResults_op_il_seq_point.xml
-       echo "                <failure>" >> TestResults_op_il_seq_point.xml
-       echo -n "                  <message><![CDATA[" >> TestResults_op_il_seq_point.xml
-       echo "Detected OP_IL_SEQ_POINT incompatibility on $TEST_FILE" >> TestResults_op_il_seq_point.xml
-       echo "  $CHANGES methods differ when sequence points are enabled." >> TestResults_op_il_seq_point.xml
-       echo '  This is probably caused by a runtime optimization that is not handling OP_IL_SEQ_POINT' >> TestResults_op_il_seq_point.xml
-       echo '' >> TestResults_op_il_seq_point.xml
-       echo "Diff $METHOD_NAME" >> TestResults_op_il_seq_point.xml
-       echo "Without IL_OP_SEQ_POINT                                                         With IL_OP_SEQ_POINT" >> TestResults_op_il_seq_point.xml
-       echo -n "$(diff_method $MONO_PATH $RUNTIME $TEST_FILE $METHOD_NAME $USE_AOT)" >> TestResults_op_il_seq_point.xml
-       echo "]]></message>" >> TestResults_op_il_seq_point.xml
-       echo "                  <stack-trace>" >> TestResults_op_il_seq_point.xml
-       echo "                  </stack-trace>" >> TestResults_op_il_seq_point.xml
-       echo "                </failure>" >> TestResults_op_il_seq_point.xml
-       echo "              </test-case>" >> TestResults_op_il_seq_point.xml
+       echo "False\">" >> $TESTRESULT_FILE
+       echo "                <failure>" >> $TESTRESULT_FILE
+       echo -n "                  <message><![CDATA[" >> $TESTRESULT_FILE
+       echo "Detected OP_IL_SEQ_POINT incompatibility on $TEST_FILE" >> $TESTRESULT_FILE
+       echo "  $CHANGES methods differ when sequence points are enabled." >> $TESTRESULT_FILE
+       echo '  This is probably caused by a runtime optimization that is not handling OP_IL_SEQ_POINT' >> $TESTRESULT_FILE
+       echo '' >> $TESTRESULT_FILE
+       echo "Diff $METHOD_NAME" >> $TESTRESULT_FILE
+       echo "Without IL_OP_SEQ_POINT                                                         With IL_OP_SEQ_POINT" >> $TESTRESULT_FILE
+       echo -n "$(diff_method $MONO_PATH $RUNTIME $TEST_FILE $METHOD_NAME $USE_AOT)" >> $TESTRESULT_FILE
+       echo "]]></message>" >> $TESTRESULT_FILE
+       echo "                  <stack-trace>" >> $TESTRESULT_FILE
+       echo "                  </stack-trace>" >> $TESTRESULT_FILE
+       echo "                </failure>" >> $TESTRESULT_FILE
+       echo "              </test-case>" >> $TESTRESULT_FILE
 
        echo ''
        echo "Detected OP_IL_SEQ_POINT incompatibility on $TEST_FILE"
@@ -122,5 +124,5 @@ then
        echo "$(diff_method $MONO_PATH $RUNTIME $TEST_FILE $METHOD_NAME $USE_AOT)"
        exit 1
 else
-       echo "True\" />" >> TestResults_op_il_seq_point.xml
+       echo "True\" />" >> $TESTRESULT_FILE
 fi
index 2eea27b5beb6ef4928ecd1e2ba427fdf5cd34d35..583945708ca2dad329e281145f30747ded3fab0b 100755 (executable)
@@ -1,7 +1,8 @@
 #!/bin/sh
 
-TOTAL=$(grep -c "<test-case" TestResults_op_il_seq_point.xml)
-FAILURES=$(grep -c "<failure>" TestResults_op_il_seq_point.xml)
+TESTRESULT_FILE=TestResult-op_il_seq_point.xml
+TOTAL=$(grep -c "<test-case" $TESTRESULT_FILE)
+FAILURES=$(grep -c "<failure>" $TESTRESULT_FILE)
 if [ "$FAILURES" -eq "0" ]
 then
        PASS="True"
@@ -15,26 +16,26 @@ MYFQDN=$(hostname -f)
 MYDATE=$(date +%F)
 MYTIME=$(date +%T)
 
-echo "            </results>" >> TestResults_op_il_seq_point.xml
-echo "          </test-suite>" >> TestResults_op_il_seq_point.xml
-echo "        </results>" >> TestResults_op_il_seq_point.xml
-echo "      </test-suite>" >> TestResults_op_il_seq_point.xml
-echo "    </results>" >> TestResults_op_il_seq_point.xml
-echo "  </test-suite>" >> TestResults_op_il_seq_point.xml
-echo "</test-results>" >> TestResults_op_il_seq_point.xml
+echo "            </results>" >> $TESTRESULT_FILE
+echo "          </test-suite>" >> $TESTRESULT_FILE
+echo "        </results>" >> $TESTRESULT_FILE
+echo "      </test-suite>" >> $TESTRESULT_FILE
+echo "    </results>" >> $TESTRESULT_FILE
+echo "  </test-suite>" >> $TESTRESULT_FILE
+echo "</test-results>" >> $TESTRESULT_FILE
 
-echo "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>" > TestResults_op_il_seq_point.xml.header
-echo "<!--This file represents the results of running a test suite-->" >> TestResults_op_il_seq_point.xml.header
-echo "<test-results name=\"regression-tests.dummy\" total=\"${TOTAL}\" failures=\"${FAILURES}\" not-run=\"0\" date=\"${MYDATE}\" time=\"${MYTIME}\">" >> TestResults_op_il_seq_point.xml.header
-echo "  <environment nunit-version=\"2.4.8.0\" clr-version=\"4.0.30319.17020\" os-version=\"Unix ${MYUNAME}\" platform=\"Unix\" cwd=\"${PWD}\" machine-name=\"${MYHOSTNAME}\" user=\"${USER}\" user-domain=\"${MYFQDN}\" />" >> TestResults_op_il_seq_point.xml.header
-echo "  <culture-info current-culture=\"${MYLOCALE}\" current-uiculture=\"${MYLOCALE}\" />" >> TestResults_op_il_seq_point.xml.header
-echo "  <test-suite name=\"op_il_seq_point-tests.dummy\" success=\"${PASS}\" time=\"0\" asserts=\"0\">" >> TestResults_op_il_seq_point.xml.header
-echo "    <results>" >> TestResults_op_il_seq_point.xml.header
-echo "      <test-suite name=\"MonoTests\" success=\"${PASS}\" time=\"0\" asserts=\"0\">" >> TestResults_op_il_seq_point.xml.header
-echo "        <results>" >> TestResults_op_il_seq_point.xml.header
-echo "          <test-suite name=\"op_il_seq_point\" success=\"${PASS}\" time=\"0\" asserts=\"0\">" >> TestResults_op_il_seq_point.xml.header
-echo "            <results>" >> TestResults_op_il_seq_point.xml.header
+echo "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>" > $TESTRESULT_FILE.header
+echo "<!--This file represents the results of running a test suite-->" >> $TESTRESULT_FILE.header
+echo "<test-results name=\"regression-tests.dummy\" total=\"${TOTAL}\" failures=\"${FAILURES}\" not-run=\"0\" date=\"${MYDATE}\" time=\"${MYTIME}\">" >> $TESTRESULT_FILE.header
+echo "  <environment nunit-version=\"2.4.8.0\" clr-version=\"4.0.30319.17020\" os-version=\"Unix ${MYUNAME}\" platform=\"Unix\" cwd=\"${PWD}\" machine-name=\"${MYHOSTNAME}\" user=\"${USER}\" user-domain=\"${MYFQDN}\" />" >> $TESTRESULT_FILE.header
+echo "  <culture-info current-culture=\"${MYLOCALE}\" current-uiculture=\"${MYLOCALE}\" />" >> $TESTRESULT_FILE.header
+echo "  <test-suite name=\"op_il_seq_point-tests.dummy\" success=\"${PASS}\" time=\"0\" asserts=\"0\">" >> $TESTRESULT_FILE.header
+echo "    <results>" >> $TESTRESULT_FILE.header
+echo "      <test-suite name=\"MonoTests\" success=\"${PASS}\" time=\"0\" asserts=\"0\">" >> $TESTRESULT_FILE.header
+echo "        <results>" >> $TESTRESULT_FILE.header
+echo "          <test-suite name=\"op_il_seq_point\" success=\"${PASS}\" time=\"0\" asserts=\"0\">" >> $TESTRESULT_FILE.header
+echo "            <results>" >> $TESTRESULT_FILE.header
 
-cat TestResults_op_il_seq_point.xml.header TestResults_op_il_seq_point.xml > TestResults_op_il_seq_point.xml.new
-mv TestResults_op_il_seq_point.xml.new TestResults_op_il_seq_point.xml
-rm -f TestResults_op_il_seq_point.xml.header
+cat $TESTRESULT_FILE.header $TESTRESULT_FILE > $TESTRESULT_FILE.new
+mv $TESTRESULT_FILE.new $TESTRESULT_FILE
+rm -f $TESTRESULT_FILE.header
index abd79479169cf069619ed65c68f3b33858550e4b..765bc111c09bb22e86740bdc03f19ff6b4bf29fb 100644 (file)
@@ -21,6 +21,7 @@
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/assembly.h>
 #include <mono/utils/mono-time.h>
+#include <mono/utils/mono-memory-model.h>
 #include "trace.h"
 
 #if defined (PLATFORM_ANDROID) || (defined (TARGET_IOS) && defined (TARGET_IOS))
@@ -51,6 +52,8 @@
 
 static MonoTraceSpec trace_spec;
 
+static volatile gint32 output_lock = 0;
+
 gboolean
 mono_trace_eval_exception (MonoClass *klass)
 {
@@ -155,7 +158,7 @@ static void get_string (void)
        }
        if (value != NULL)
                g_free (value);
-       value = g_malloc (input - start + 1);
+       value = (char *)g_malloc (input - start + 1);
        strncpy (value, start, input-start);
        value [input-start] = 0;
 }
@@ -357,7 +360,7 @@ static void indent (int diff) {
                indent_level += diff;
        if (start_time == 0)
                start_time = mono_100ns_ticks ();
-       printf ("[%p: %.5f %d] ", (void*)GetCurrentThreadId (), seconds_since_start (), indent_level);
+       printf ("[%p: %.5f %d] ", (void*)mono_native_thread_id_get (), seconds_since_start (), indent_level);
        if (diff > 0)
                indent_level += diff;
 }
@@ -413,6 +416,9 @@ mono_trace_enter_method (MonoMethod *method, char *ebp)
        if (!trace_spec.enabled)
                return;
 
+       while (output_lock != 0 || InterlockedCompareExchange (&output_lock, 1, 0) != 0)
+               mono_thread_info_yield ();
+
        fname = mono_method_full_name (method, TRUE);
        indent (1);
        printf ("ENTER: %s(", fname);
@@ -420,22 +426,22 @@ mono_trace_enter_method (MonoMethod *method, char *ebp)
 
        if (!ebp) {
                printf (") ip: %p\n", RETURN_ADDRESS_N (1));
-               return;
-       }       
+               goto unlock;
+       }
 
        sig = mono_method_signature (method);
 
-       arg_info = alloca (sizeof (MonoJitArgumentInfo) * (sig->param_count + 1));
+       arg_info = (MonoJitArgumentInfo *)alloca (sizeof (MonoJitArgumentInfo) * (sig->param_count + 1));
 
        if (method->is_inflated) {
                /* FIXME: Might be better to pass the ji itself */
-               MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), RETURN_ADDRESS (), NULL);
+               MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (char *)RETURN_ADDRESS (), NULL);
                if (ji) {
                        gsctx = mono_jit_info_get_generic_sharing_context (ji);
                        if (gsctx && gsctx->is_gsharedvt) {
                                /* Needs a ctx to get precise method */
                                printf (") <gsharedvt>\n");
-                               return;
+                               goto unlock;
                        }
                }
        }
@@ -449,11 +455,11 @@ mono_trace_enter_method (MonoMethod *method, char *ebp)
        }
 
        if (mono_method_signature (method)->hasthis) {
-               gpointer *this = (gpointer *)(ebp + arg_info [0].offset);
+               gpointer *this_obj = (gpointer *)(ebp + arg_info [0].offset);
                if (method->klass->valuetype) {
-                       printf ("value:%p, ", *arg_in_stack_slot(this, gpointer *));
+                       printf ("value:%p, ", *arg_in_stack_slot(this_obj, gpointer *));
                } else {
-                       o = *arg_in_stack_slot(this, MonoObject *);
+                       o = *arg_in_stack_slot(this_obj, MonoObject *);
 
                        if (o) {
                                klass = o->vtable->klass;
@@ -480,7 +486,7 @@ mono_trace_enter_method (MonoMethod *method, char *ebp)
                
                if (type->byref) {
                        printf ("[BYREF:%p], ", *arg_in_stack_slot(cpos, gpointer *));
-               } else switch (mono_type_get_underlying_type (type)->type) {
+               } else switch (mini_get_underlying_type (type)->type) {
                        
                case MONO_TYPE_I:
                case MONO_TYPE_U:
@@ -565,6 +571,9 @@ mono_trace_enter_method (MonoMethod *method, char *ebp)
 
        printf (")\n");
        fflush (stdout);
+
+unlock:
+       mono_atomic_store_release (&output_lock, 0);
 }
 
 void
@@ -578,6 +587,9 @@ mono_trace_leave_method (MonoMethod *method, ...)
        if (!trace_spec.enabled)
                return;
 
+       while (output_lock != 0 || InterlockedCompareExchange (&output_lock, 1, 0) != 0)
+               mono_thread_info_yield ();
+
        va_start(ap, method);
 
        fname = mono_method_full_name (method, TRUE);
@@ -587,20 +599,19 @@ mono_trace_leave_method (MonoMethod *method, ...)
 
        if (method->is_inflated) {
                /* FIXME: Might be better to pass the ji itself */
-               MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), RETURN_ADDRESS (), NULL);
+               MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (char *)RETURN_ADDRESS (), NULL);
                if (ji) {
                        gsctx = mono_jit_info_get_generic_sharing_context (ji);
                        if (gsctx && gsctx->is_gsharedvt) {
                                /* Needs a ctx to get precise method */
                                printf (") <gsharedvt>\n");
-                               return;
+                               goto unlock;
                        }
                }
        }
 
-       type = mono_method_signature (method)->ret;
+       type = mini_get_underlying_type (mono_method_signature (method)->ret);
 
-handle_enum:
        switch (type->type) {
        case MONO_TYPE_VOID:
                break;
@@ -682,20 +693,16 @@ handle_enum:
                printf ("FP=%f", f);
                break;
        }
-       case MONO_TYPE_VALUETYPE: 
-               if (type->data.klass->enumtype) {
-                       type = mono_class_enum_basetype (type->data.klass);
-                       goto handle_enum;
-               } else {
-                       guint8 *p = va_arg (ap, gpointer);
-                       int j, size, align;
-                       size = mono_type_size (type, &align);
-                       printf ("[");
-                       for (j = 0; p && j < size; j++)
-                               printf ("%02x,", p [j]);
-                       printf ("]");
-               }
+       case MONO_TYPE_VALUETYPE:  {
+               guint8 *p = (guint8 *)va_arg (ap, gpointer);
+               int j, size, align;
+               size = mono_type_size (type, &align);
+               printf ("[");
+               for (j = 0; p && j < size; j++)
+                       printf ("%02x,", p [j]);
+               printf ("]");
                break;
+       }
        default:
                printf ("(unknown return type %x)", mono_method_signature (method)->ret->type);
        }
@@ -703,6 +710,9 @@ handle_enum:
        //printf (" ip: %p\n", RETURN_ADDRESS_N (1));
        printf ("\n");
        fflush (stdout);
+
+unlock:
+       mono_atomic_store_release (&output_lock, 0);
 }
 
 void
index e9ac1b8a11a2a70d596a975c27b96002551092b0..8e054b99dadf150db4a8e4631565b94862e145f9 100644 (file)
@@ -19,7 +19,7 @@
 #include <mono/metadata/tabledefs.h>
 #include <mono/metadata/mono-debug-debugger.h>
 #include <mono/metadata/profiler-private.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/arch/amd64/amd64-codegen.h>
 
 #include <mono/utils/memcheck.h>
@@ -57,7 +57,7 @@ mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 
        this_reg = mono_arch_get_this_arg_reg (NULL);
 
-       start = code = mono_domain_code_reserve (domain, size);
+       start = code = (guint8 *)mono_domain_code_reserve (domain, size);
 
        unwind_ops = mono_arch_get_cie_program ();
 
@@ -101,7 +101,7 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, MonoMethodRuntimeGenericCo
                buf_len = NACL_SIZE (30, 32);
 #endif
 
-       start = code = mono_domain_code_reserve (domain, buf_len);
+       start = code = (guint8 *)mono_domain_code_reserve (domain, buf_len);
 
        unwind_ops = mono_arch_get_cie_program ();
 
@@ -118,36 +118,6 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, MonoMethodRuntimeGenericCo
        return start;
 }
 
-gpointer
-mono_arch_get_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_offset)
-{
-       guint8 *code, *start;
-       int buf_len;
-       int this_reg;
-
-       buf_len = 32;
-
-       start = code = mono_domain_code_reserve (domain, buf_len);
-
-       this_reg = mono_arch_get_this_arg_reg (NULL);
-
-       /* Set imt arg */
-       amd64_mov_reg_imm (code, MONO_ARCH_IMT_REG, m);
-       /* Load vtable address */
-       amd64_mov_reg_membase (code, AMD64_RAX, this_reg, 0, 8);
-       amd64_jump_membase (code, AMD64_RAX, vt_offset);
-       amd64_ret (code);
-
-       g_assert ((code - start) < buf_len);
-
-       nacl_domain_code_validate (domain, &start, buf_len, &code);
-
-       mono_arch_flush_icache (start, code - start);
-       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_IMT_TRAMPOLINE, NULL);
-
-       return start;
-}
-
 #ifdef _WIN64
 // Workaround lack of Valgrind support for 64-bit Windows
 #define VALGRIND_DISCARD_TRANSLATIONS(...)
@@ -185,7 +155,7 @@ mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
                                 */
                                guint8 *thunk_start, *thunk_code;
 
-                               thunk_start = thunk_code = mono_domain_code_reserve (mono_domain_get (), 32);
+                               thunk_start = thunk_code = (guint8 *)mono_domain_code_reserve (mono_domain_get (), 32);
                                amd64_jump_membase (thunk_code, AMD64_RIP, 0);
                                *(guint64*)thunk_code = (guint64)addr;
                                addr = thunk_start;
@@ -252,7 +222,7 @@ mono_arch_create_llvm_native_thunk (MonoDomain *domain, guint8 *addr)
         */
        guint8 *thunk_start, *thunk_code;
 
-       thunk_start = thunk_code = mono_domain_code_reserve (mono_domain_get (), 32);
+       thunk_start = thunk_code = (guint8 *)mono_domain_code_reserve (mono_domain_get (), 32);
        amd64_jump_membase (thunk_code, AMD64_RIP, 0);
        *(guint64*)thunk_code = (guint64)addr;
        addr = thunk_start;
@@ -324,7 +294,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        else
                has_caller = TRUE;
 
-       code = buf = mono_global_codeman_reserve (kMaxCodeSize);
+       code = buf = (guint8 *)mono_global_codeman_reserve (kMaxCodeSize);
 
        /* Compute stack frame size and offsets */
        offset = 0;
@@ -648,7 +618,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
        else
                size = 5 + 1 + 8;
 
-       code = buf = mono_domain_code_reserve_align (domain, size, 1);
+       code = buf = (guint8 *)mono_domain_code_reserve_align (domain, size, 1);
 
        if (((gint64)tramp - (gint64)code) >> 31 != 0 && ((gint64)tramp - (gint64)code) >> 31 != -1) {
 #ifndef MONO_ARCH_NOMAP32BIT
@@ -656,7 +626,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
 #endif
                far_addr = TRUE;
                size += 16;
-               code = buf = mono_domain_code_reserve_align (domain, size, 1);
+               code = buf = (guint8 *)mono_domain_code_reserve_align (domain, size, 1);
        }
 #elif defined(__native_client_codegen__)
        size = 5 + 1 + 4;
@@ -732,11 +702,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        tramp_size = NACL_SIZE (64 + 8 * depth, 128 + 8 * depth);
 
-       code = buf = mono_global_codeman_reserve (tramp_size);
+       code = buf = (guint8 *)mono_global_codeman_reserve (tramp_size);
 
        unwind_ops = mono_arch_get_cie_program ();
 
-       rgctx_null_jumps = g_malloc (sizeof (guint8*) * (depth + 2));
+       rgctx_null_jumps = (guint8 **)g_malloc (sizeof (guint8*) * (depth + 2));
 
        if (mrgctx) {
                /* get mrgctx ptr */
@@ -786,7 +756,7 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
                code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, g_strdup_printf ("specific_trampoline_lazy_fetch_%u", slot));
                amd64_jump_reg (code, AMD64_R11);
        } else {
-               tramp = mono_arch_create_specific_trampoline (GUINT_TO_POINTER (slot), MONO_TRAMPOLINE_RGCTX_LAZY_FETCH, mono_get_root_domain (), NULL);
+               tramp = (guint8 *)mono_arch_create_specific_trampoline (GUINT_TO_POINTER (slot), MONO_TRAMPOLINE_RGCTX_LAZY_FETCH, mono_get_root_domain (), NULL);
 
                /* jump to the actual trampoline */
                amd64_jump_code (code, tramp);
@@ -809,7 +779,7 @@ void
 mono_arch_invalidate_method (MonoJitInfo *ji, void *func, gpointer func_arg)
 {
        /* FIXME: This is not thread safe */
-       guint8 *code = ji->code_start;
+       guint8 *code = (guint8 *)ji->code_start;
 
        amd64_mov_reg_imm (code, AMD64_ARG_REG1, func_arg);
        amd64_mov_reg_imm (code, AMD64_R11, func);
@@ -822,7 +792,7 @@ mono_arch_invalidate_method (MonoJitInfo *ji, void *func, gpointer func_arg)
 static void
 handler_block_trampoline_helper (gpointer *ptr)
 {
-       MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
+       MonoJitTlsData *jit_tls = (MonoJitTlsData *)mono_native_tls_get_value (mono_jit_tls_id);
        *ptr = jit_tls->handler_block_return_address;
 }
 
@@ -837,7 +807,7 @@ mono_arch_create_handler_block_trampoline (MonoTrampInfo **info, gboolean aot)
 
        g_assert (!aot);
 
-       code = buf = mono_global_codeman_reserve (tramp_size);
+       code = buf = (guint8 *)mono_global_codeman_reserve (tramp_size);
 
        unwind_ops = mono_arch_get_cie_program ();
 
@@ -922,7 +892,7 @@ mono_arch_create_sdb_trampoline (gboolean single_step, MonoTrampInfo **info, gbo
        GSList *unwind_ops = NULL;
        MonoJumpInfo *ji = NULL;
 
-       code = buf = mono_global_codeman_reserve (tramp_size);
+       code = buf = (guint8 *)mono_global_codeman_reserve (tramp_size);
 
        framesize = 0;
 #ifdef TARGET_WIN32
@@ -1004,7 +974,7 @@ mono_arch_create_sdb_trampoline (gboolean single_step, MonoTrampInfo **info, gbo
        return buf;
 }
 
-#if defined(ENABLE_GSHAREDVT)
+#if defined(ENABLE_GSHAREDVT) && defined(MONO_ARCH_GSHAREDVT_SUPPORTED)
 
 #include "../../../mono-extensions/mono/mini/tramp-amd64-gsharedvt.c"
 
index 37e75c9d01ef90396a0ee0a7f38224a7b1c8452f..22030a29885168b536b6eb372ba3cb184374a03c 100644 (file)
@@ -231,6 +231,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
                 * preceeding the got slot where the value is stored. The offset can be
                 * found at [lr + 0].
                 */
+               /* See if emit_trampolines () in aot-compiler.c for the '2' */
                if (aot == 2) {
                        ARM_MOV_REG_REG (code, ARMREG_V2, ARMREG_R1);
                } else {
index 00fa048d84cb5931cca2611a83f9074c251b6adb..4a604f97e16c1c72b5e6f2256774f25cbc61e4e0 100644 (file)
@@ -39,7 +39,7 @@
 
 #include <mono/metadata/abi-details.h>
 #include <mono/metadata/appdomain.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/marshal.h>
 #include <mono/metadata/profiler-private.h>
 #include <mono/metadata/tabledefs.h>
index 6e79922512c9f3b165e62ebace0af1d2de63b81f..2b4475f0a67e929629a8b46cee381cf8e911c365 100644 (file)
@@ -18,7 +18,7 @@
 #include <mono/metadata/mono-debug.h>
 #include <mono/metadata/mono-debug-debugger.h>
 #include <mono/metadata/profiler-private.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/arch/x86/x86-codegen.h>
 
 #include <mono/utils/memcheck.h>
@@ -90,37 +90,6 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, MonoMethodRuntimeGenericCo
        return start;
 }
 
-gpointer
-mono_arch_get_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_offset)
-{
-       guint8 *code, *start;
-       int buf_len;
-       int this_offset;
-
-       buf_len = 32;
-
-       start = code = mono_domain_code_reserve (domain, buf_len);
-
-       this_offset = mono_x86_get_this_arg_offset (mono_method_signature (m));
-
-       /* Set imt arg */
-       x86_mov_reg_imm (code, MONO_ARCH_IMT_REG, m);
-       /* Load this */
-       x86_mov_reg_membase (code, X86_EAX, X86_ESP, this_offset + 4, 4);
-       /* Load vtable address */
-       x86_mov_reg_membase (code, X86_EAX, X86_EAX, 0, 4);
-       x86_jump_membase (code, X86_EAX, vt_offset);
-
-       g_assert ((code - start) < buf_len);
-
-       nacl_domain_code_validate (domain, &start, buf_len, &code);
-
-       mono_arch_flush_icache (start, code - start);
-       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_IMT_TRAMPOLINE, NULL);
-
-       return start;
-}
-
 void
 mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
 {
@@ -789,6 +758,7 @@ mono_arch_create_sdb_trampoline (gboolean single_step, MonoTrampInfo **info, gbo
        /* Argument area */
        framesize += sizeof (mgreg_t);
 
+       framesize = ALIGN_TO (framesize, 8);
        ctx_offset = framesize;
        framesize += sizeof (MonoContext);
 
index 1fbd5c9f63bbfed5c3b6bf580c31fb63a4770743..82f14d7882255940ad311339fbe8c50073075a1b 100644 (file)
@@ -41,8 +41,8 @@ static GSList *cached_info_list;
 /* Statistics */
 static int unwind_info_size;
 
-#define unwind_lock() mono_mutex_lock (&unwind_mutex)
-#define unwind_unlock() mono_mutex_unlock (&unwind_mutex)
+#define unwind_lock() mono_os_mutex_lock (&unwind_mutex)
+#define unwind_unlock() mono_os_mutex_unlock (&unwind_mutex)
 
 #ifdef TARGET_AMD64
 static int map_hw_reg_to_dwarf_reg [] = { 0, 2, 1, 3, 7, 6, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
@@ -361,7 +361,7 @@ mono_unwind_ops_encode_full (GSList *unwind_ops, guint32 *out_len, gboolean enab
        for (; l; l = l->next) {
                int reg;
 
-               op = l->data;
+               op = (MonoUnwindOp *)l->data;
 
                /* Convert the register from the hw encoding to the dwarf encoding */
                reg = mono_hw_reg_to_dwarf_reg (op->reg);
@@ -446,7 +446,7 @@ mono_unwind_ops_encode_full (GSList *unwind_ops, guint32 *out_len, gboolean enab
        
        g_assert (p - buf < 4096);
        *out_len = p - buf;
-       res = g_malloc (p - buf);
+       res = (guint8 *)g_malloc (p - buf);
        memcpy (res, buf, p - buf);
        return res;
 }
@@ -632,7 +632,7 @@ mono_unwind_frame (guint8 *unwind_info, guint32 unwind_info_len,
 void
 mono_unwind_init (void)
 {
-       mono_mutex_init_recursive (&unwind_mutex);
+       mono_os_mutex_init_recursive (&unwind_mutex);
 
        mono_counters_register ("Unwind info size", MONO_COUNTER_JIT | MONO_COUNTER_INT, &unwind_info_size);
 }
@@ -642,7 +642,7 @@ mono_unwind_cleanup (void)
 {
        int i;
 
-       mono_mutex_destroy (&unwind_mutex);
+       mono_os_mutex_destroy (&unwind_mutex);
 
        if (!cached_info)
                return;
@@ -688,7 +688,7 @@ mono_cache_unwind_info (guint8 *unwind_info, guint32 unwind_info_len)
                }
        }
 
-       info = g_malloc (sizeof (MonoUnwindInfo) + unwind_info_len);
+       info = (MonoUnwindInfo *)g_malloc (sizeof (MonoUnwindInfo) + unwind_info_len);
        info->len = unwind_info_len;
        memcpy (&info->info, unwind_info, unwind_info_len);
 
@@ -881,11 +881,11 @@ decode_lsda (guint8 *lsda, guint8 *code, MonoJitExceptionInfo **ex_info, guint32
        p = (guint8*)ALIGN_TO ((mgreg_t)p, 4);
 
        if (ex_info) {
-               *ex_info = g_malloc0 (ncall_sites * sizeof (MonoJitExceptionInfo));
+               *ex_info = (MonoJitExceptionInfo *)g_malloc0 (ncall_sites * sizeof (MonoJitExceptionInfo));
                *ex_info_len = ncall_sites;
        }
        if (type_info)
-               *type_info = g_malloc0 (ncall_sites * sizeof (gpointer));
+               *type_info = (gpointer *)g_malloc0 (ncall_sites * sizeof (gpointer));
 
        for (i = 0; i < ncall_sites; ++i) {
                int block_start_offset, block_size, landing_pad;
@@ -1058,7 +1058,7 @@ mono_unwind_decode_fde (guint8 *fde, guint32 *out_len, guint32 *code_len, MonoJi
        g_assert (return_reg == DWARF_PC_REG);
 
        buf_len = (cie + cie_len + 4 - cie_cfi) + (fde + fde_len + 4 - fde_cfi);
-       buf = g_malloc0 (buf_len);
+       buf = (guint8 *)g_malloc0 (buf_len);
 
        i = 0;
        p = cie_cfi;
@@ -1084,7 +1084,7 @@ mono_unwind_decode_fde (guint8 *fde, guint32 *out_len, guint32 *code_len, MonoJi
 
        *out_len = i;
 
-       return g_realloc (buf, i);
+       return (guint8 *)g_realloc (buf, i);
 }
 
 /*
@@ -1158,7 +1158,7 @@ mono_unwind_decode_llvm_mono_fde (guint8 *fde, int fde_len, guint8 *cie, guint8
        cie_cfi_len = p - cie_cfi;
        fde_cfi_len = (fde + fde_len - fde_cfi);
 
-       buf = g_malloc0 (cie_cfi_len + fde_cfi_len);
+       buf = (guint8 *)g_malloc0 (cie_cfi_len + fde_cfi_len);
        memcpy (buf, cie_cfi, cie_cfi_len);
        memcpy (buf + cie_cfi_len, fde_cfi, fde_cfi_len);
 
index d67a97264ac046c1244e5951d859ba7a8fdf20ea..1dc7a5e64cd6bbea5246e4570f7a0dbb7d321535 100644 (file)
@@ -19,11 +19,15 @@ if HAVE_VTUNE
 vtune_lib = libmono-profiler-vtune.la
 endif
 
-lib_LTLIBRARIES = libmono-profiler-aot.la libmono-profiler-iomap.la libmono-profiler-log.la $(vtune_lib)
+lib_LTLIBRARIES = libmono-profiler-aot.la libmono-profiler-iomap.la libmono-profiler-log.la libmono-profiler-log-static.la $(vtune_lib)
 
 if PLATFORM_DARWIN
+if BITCODE
+libmono_profiler_log_la_LDFLAGS = -no-undefined
+else
 libmono_profiler_log_la_LDFLAGS = -Wl,-undefined -Wl,suppress -Wl,-flat_namespace
 endif
+endif
 if PLATFORM_ANDROID
 libmono_profiler_log_la_LDFLAGS = -avoid-version
 endif
@@ -58,8 +62,14 @@ endif
 
 libmono_profiler_aot_la_SOURCES = mono-profiler-aot.c
 libmono_profiler_aot_la_LIBADD = $(LIBMONO) $(GLIB_LIBS) $(LIBICONV)
+if BITCODE
+libmono_profiler_aot_la_LDFLAGS = -no-undefined
+endif
 libmono_profiler_iomap_la_SOURCES = mono-profiler-iomap.c
 libmono_profiler_iomap_la_LIBADD = $(LIBMONO) $(GLIB_LIBS) $(LIBICONV)
+if BITCODE
+libmono_profiler_iomap_la_LDFLAGS = -no-undefined
+endif
 libmono_profiler_log_la_SOURCES = proflog.c
 libmono_profiler_log_la_LIBADD = $(LIBMONO) $(GLIB_LIBS) $(Z_LIBS)
 if HAVE_VTUNE
@@ -68,6 +78,14 @@ libmono_profiler_vtune_la_CFLAGS = $(VTUNE_CFLAGS)
 libmono_profiler_vtune_la_LIBADD = $(VTUNE_LIBS) $(LIBMONO) $(GLIB_LIBS) $(LIBICONV)
 endif
 
+# The log profile uses eglib functions, so it needs to be linked against
+# libeglib in shared mode, but not in static mode, since that would
+# leads to duplicate symbols when it is linked into an app which
+# also uses eglib (e.g. the runtime). Automake doesn't support this
+# functionality, so create a separate static version of the library.
+libmono_profiler_log_static_la_SOURCES = proflog.c
+libmono_profiler_log_static_la_LDFLAGS = -static
+
 mprof_report_SOURCES = decode.c
 mprof_report_LDADD = $(Z_LIBS) $(GLIB_LIBS) $(LIBICONV)
 
index 4ee385504bea1c339957a3080e005c3bfaf02b41..e57211635ee700b0ea1bea48015d8709333b89fd 100644 (file)
@@ -133,7 +133,7 @@ static char*
 pstrdup (const char *s)
 {
        int len = strlen (s) + 1;
-       char *p = malloc (len);
+       char *p = (char *)malloc (len);
        memcpy (p, s, len);
        return p;
 }
@@ -196,7 +196,7 @@ add_counter_to_section (Counter *counter)
        CounterSection *csection, *s;
        CounterList *clist;
 
-       clist = calloc (1, sizeof (CounterList));
+       clist = (CounterList *)calloc (1, sizeof (CounterList));
        clist->counter = counter;
 
        for (csection = counters_sections; csection; csection = csection->next) {
@@ -212,7 +212,7 @@ add_counter_to_section (Counter *counter)
        }
 
        /* If section does not exist */
-       csection = calloc (1, sizeof (CounterSection));
+       csection = (CounterSection *)calloc (1, sizeof (CounterSection));
        csection->value = counter->section;
        csection->counters = clist;
        csection->counters_last = clist;
@@ -237,7 +237,7 @@ add_counter (const char *section, const char *name, int type, int unit, int vari
                if (list->counter->index == index)
                        return;
 
-       counter = calloc (1, sizeof (Counter));
+       counter = (Counter *)calloc (1, sizeof (Counter));
        counter->section = section;
        counter->name = name;
        counter->type = type;
@@ -245,7 +245,7 @@ add_counter (const char *section, const char *name, int type, int unit, int vari
        counter->variance = variance;
        counter->index = index;
 
-       list = calloc (1, sizeof (CounterList));
+       list = (CounterList *)calloc (1, sizeof (CounterList));
        list->counter = counter;
 
        if (!counters) {
@@ -268,7 +268,7 @@ add_counter_to_timestamp (uint64_t timestamp, Counter *counter)
        CounterSection *csection;
        CounterList *clist;
 
-       clist = calloc (1, sizeof (CounterList));
+       clist = (CounterList *)calloc (1, sizeof (CounterList));
        clist->counter = counter;
 
        for (ctimestamp = counters_timestamps; ctimestamp; ctimestamp = ctimestamp->next) {
@@ -286,7 +286,7 @@ add_counter_to_timestamp (uint64_t timestamp, Counter *counter)
                        }
 
                        /* if timestamp exist and section does not exist */
-                       csection = calloc (1, sizeof (CounterSection));
+                       csection = (CounterSection *)calloc (1, sizeof (CounterSection));
                        csection->value = counter->section;
                        csection->counters = clist;
                        csection->counters_last = clist;
@@ -301,12 +301,12 @@ add_counter_to_timestamp (uint64_t timestamp, Counter *counter)
        }
 
        /* If timestamp do not exist and section does not exist */
-       csection = calloc (1, sizeof (CounterSection));
+       csection = (CounterSection *)calloc (1, sizeof (CounterSection));
        csection->value = counter->section;
        csection->counters = clist;
        csection->counters_last = clist;
 
-       ctimestamp = calloc (1, sizeof (CounterTimestamp));
+       ctimestamp = (CounterTimestamp *)calloc (1, sizeof (CounterTimestamp));
        ctimestamp->value = timestamp;
        ctimestamp->sections = csection;
        ctimestamp->sections_last = csection;
@@ -564,7 +564,7 @@ static void
 add_image (intptr_t image, char *name)
 {
        int slot = ((image >> 2) & 0xffff) % SMALL_HASH_SIZE;
-       ImageDesc *cd = malloc (sizeof (ImageDesc));
+       ImageDesc *cd = (ImageDesc *)malloc (sizeof (ImageDesc));
        cd->image = image;
        cd->filename = pstrdup (name);
        cd->next = image_hash [slot];
@@ -587,7 +587,7 @@ static void
 add_assembly (intptr_t assembly, char *name)
 {
        int slot = ((assembly >> 2) & 0xffff) % SMALL_HASH_SIZE;
-       AssemblyDesc *cd = malloc (sizeof (AssemblyDesc));
+       AssemblyDesc *cd = (AssemblyDesc *)malloc (sizeof (AssemblyDesc));
        cd->assembly = assembly;
        cd->asmname = pstrdup (name);
        cd->next = assembly_hash [slot];
@@ -635,7 +635,7 @@ add_class (intptr_t klass, const char *name)
                cd->name = pstrdup (name);
                return cd;
        }
-       cd = calloc (sizeof (ClassDesc), 1);
+       cd = (ClassDesc *)calloc (sizeof (ClassDesc), 1);
        cd->klass = klass;
        cd->name = pstrdup (name);
        cd->next = class_hash [slot];
@@ -701,7 +701,7 @@ add_method (intptr_t method, const char *name, intptr_t code, int len)
                cd->name = pstrdup (name);
                return cd;
        }
-       cd = calloc (sizeof (MethodDesc), 1);
+       cd = (MethodDesc *)calloc (sizeof (MethodDesc), 1);
        cd->method = method;
        cd->name = pstrdup (name);
        cd->code = code;
@@ -743,8 +743,8 @@ add_stat_sample (int type, uintptr_t ip) {
                size_stat_samples *= 2;
                if (!size_stat_samples)
                size_stat_samples = 32;
-               stat_samples = realloc (stat_samples, size_stat_samples * sizeof (uintptr_t));
-               stat_sample_desc = realloc (stat_sample_desc, size_stat_samples * sizeof (int));
+               stat_samples = (uintptr_t *)realloc (stat_samples, size_stat_samples * sizeof (uintptr_t));
+               stat_sample_desc = (int *)realloc (stat_sample_desc, size_stat_samples * sizeof (int));
        }
        stat_samples [num_stat_samples] = ip;
        stat_sample_desc [num_stat_samples++] = type;
@@ -772,8 +772,8 @@ lookup_method_by_ip (uintptr_t ip)
 static int
 compare_method_samples (const void *a, const void *b)
 {
-       MethodDesc *const*A = a;
-       MethodDesc *const*B = b;
+       MethodDesc *const *A = (MethodDesc *const *)a;
+       MethodDesc *const *B = (MethodDesc *const *)b;
        if ((*A)->sample_hits == (*B)->sample_hits)
                return 0;
        if ((*B)->sample_hits < (*A)->sample_hits)
@@ -798,8 +798,8 @@ static int usymbols_num = 0;
 static int
 compare_usymbol_addr (const void *a, const void *b)
 {
-       UnmanagedSymbol *const*A = a;
-       UnmanagedSymbol *const*B = b;
+       UnmanagedSymbol *const *A = (UnmanagedSymbol *const *)a;
+       UnmanagedSymbol *const *B = (UnmanagedSymbol *const *)b;
        if ((*B)->addr == (*A)->addr)
                return 0;
        if ((*B)->addr > (*A)->addr)
@@ -810,8 +810,8 @@ compare_usymbol_addr (const void *a, const void *b)
 static int
 compare_usymbol_samples (const void *a, const void *b)
 {
-       UnmanagedSymbol *const*A = a;
-       UnmanagedSymbol *const*B = b;
+       UnmanagedSymbol *const *A = (UnmanagedSymbol *const *)a;
+       UnmanagedSymbol *const *B = (UnmanagedSymbol *const *)b;
        if ((*B)->sample_hits == (*A)->sample_hits)
                return 0;
        if ((*B)->sample_hits < (*A)->sample_hits)
@@ -827,10 +827,10 @@ add_unmanaged_symbol (uintptr_t addr, char *name, uintptr_t size)
                int new_size = usymbols_size * 2;
                if (!new_size)
                        new_size = 16;
-               usymbols = realloc (usymbols, sizeof (void*) * new_size);
+               usymbols = (UnmanagedSymbol **)realloc (usymbols, sizeof (void*) * new_size);
                usymbols_size = new_size;
        }
-       sym = calloc (sizeof (UnmanagedSymbol), 1);
+       sym = (UnmanagedSymbol *)calloc (sizeof (UnmanagedSymbol), 1);
        sym->addr = addr;
        sym->name = name;
        sym->size = size;
@@ -875,10 +875,10 @@ add_unmanaged_binary (uintptr_t addr, char *name, uintptr_t size)
                int new_size = ubinaries_size * 2;
                if (!new_size)
                        new_size = 16;
-               ubinaries = realloc (ubinaries, sizeof (void*) * new_size);
+               ubinaries = (UnmanagedSymbol **)realloc (ubinaries, sizeof (void*) * new_size);
                ubinaries_size = new_size;
        }
-       sym = calloc (sizeof (UnmanagedSymbol), 1);
+       sym = (UnmanagedSymbol *)calloc (sizeof (UnmanagedSymbol), 1);
        sym->addr = addr;
        sym->name = name;
        sym->size = size;
@@ -965,7 +965,7 @@ dump_samples (void)
                                        msize *= 2;
                                        if (!msize)
                                                msize = 4;
-                                       cachedm = realloc (cachedm, sizeof (void*) * msize);
+                                       cachedm = (MethodDesc **)realloc (cachedm, sizeof (void*) * msize);
                                }
                                cachedm [count++] = m;
                        }
@@ -983,7 +983,7 @@ dump_samples (void)
                                                usize *= 2;
                                                if (!usize)
                                                        usize = 4;
-                                               cachedus = realloc (cachedus, sizeof (void*) * usize);
+                                               cachedus = (UnmanagedSymbol **)realloc (cachedus, sizeof (void*) * usize);
                                        }
                                        cachedus [ucount++] = usym;
                                }
@@ -1091,7 +1091,7 @@ add_heap_class_rev (HeapClassDesc *from, HeapClassDesc *to)
                to->rev_hash_size *= 2;
                if (to->rev_hash_size == 0)
                        to->rev_hash_size = 4;
-               n = calloc (sizeof (HeapClassRevRef) * to->rev_hash_size, 1);
+               n = (HeapClassRevRef *)calloc (sizeof (HeapClassRevRef) * to->rev_hash_size, 1);
                for (i = 0; i < old_size; ++i) {
                        if (to->rev_hash [i].klass)
                                add_rev_class_hashed (n, to->rev_hash_size, to->rev_hash [i].klass, to->rev_hash [i].count);
@@ -1133,9 +1133,9 @@ static int num_heap_shots = 0;
 static HeapShot*
 new_heap_shot (uint64_t timestamp)
 {
-       HeapShot *hs = calloc (sizeof (HeapShot), 1);
+       HeapShot *hs = (HeapShot *)calloc (sizeof (HeapShot), 1);
        hs->hash_size = 4;
-       hs->class_hash = calloc (sizeof (void*), hs->hash_size);
+       hs->class_hash = (HeapClassDesc **)calloc (sizeof (void*), hs->hash_size);
        hs->timestamp = timestamp;
        num_heap_shots++;
        hs->next = heap_shots;
@@ -1181,7 +1181,7 @@ add_heap_hashed (HeapClassDesc **hash, HeapClassDesc **retv, uintptr_t hsize, Cl
                                hash [i] = *retv;
                                return 1;
                        }
-                       hash [i] = calloc (sizeof (HeapClassDesc), 1);
+                       hash [i] = (HeapClassDesc *)calloc (sizeof (HeapClassDesc), 1);
                        hash [i]->klass = klass;
                        hash [i]->total_size += size;
                        hash [i]->count += count;
@@ -1208,7 +1208,7 @@ add_heap_shot_class (HeapShot *hs, ClassDesc *klass, uint64_t size)
                hs->hash_size *= 2;
                if (hs->hash_size == 0)
                        hs->hash_size = 4;
-               n = calloc (sizeof (void*) * hs->hash_size, 1);
+               n = (HeapClassDesc **)calloc (sizeof (void*) * hs->hash_size, 1);
                for (i = 0; i < old_size; ++i) {
                        res = hs->class_hash [i];
                        if (hs->class_hash [i])
@@ -1228,7 +1228,7 @@ add_heap_shot_class (HeapShot *hs, ClassDesc *klass, uint64_t size)
 static HeapObjectDesc*
 alloc_heap_obj (uintptr_t objaddr, HeapClassDesc *hklass, uintptr_t num_refs)
 {
-       HeapObjectDesc* ho = calloc (sizeof (HeapObjectDesc) + num_refs * sizeof (uintptr_t), 1);
+       HeapObjectDesc* ho = (HeapObjectDesc *)calloc (sizeof (HeapObjectDesc) + num_refs * sizeof (uintptr_t), 1);
        ho->objaddr = objaddr;
        ho->hklass = hklass;
        ho->num_refs = num_refs;
@@ -1311,7 +1311,7 @@ add_heap_shot_obj (HeapShot *hs, HeapObjectDesc *obj)
                hs->objects_hash_size *= 2;
                if (hs->objects_hash_size == 0)
                        hs->objects_hash_size = 4;
-               n = calloc (sizeof (void*) * hs->objects_hash_size, 1);
+               n = (HeapObjectDesc **)calloc (sizeof (void*) * hs->objects_hash_size, 1);
                for (i = 0; i < old_size; ++i) {
                        if (hs->objects_hash [i])
                                add_heap_hashed_obj (n, hs->objects_hash_size, hs->objects_hash [i]);
@@ -1365,7 +1365,7 @@ heap_shot_mark_objects (HeapShot *hs)
        if (!debug)
                return;
        /* consistency checks: it seems not all the objects are walked in the heap in some cases */
-       marks = calloc (hs->objects_hash_size, 1);
+       marks = (unsigned char *)calloc (hs->objects_hash_size, 1);
        if (!marks)
                return;
        for (i = 0; i < hs->num_roots; ++i) {
@@ -1478,14 +1478,14 @@ add_backtrace (int count, MethodDesc **methods)
                        return bt;
                bt = bt->next;
        }
-       bt = malloc (sizeof (BackTrace) + ((count - 1) * sizeof (void*)));
+       bt = (BackTrace *)malloc (sizeof (BackTrace) + ((count - 1) * sizeof (void*)));
        bt->next = backtrace_hash [slot];
        backtrace_hash [slot] = bt;
        if (next_backtrace == num_backtraces) {
                num_backtraces *= 2;
                if (!num_backtraces)
                        num_backtraces = 16;
-               backtraces = realloc (backtraces, sizeof (void*) * num_backtraces);
+               backtraces = (BackTrace **)realloc (backtraces, sizeof (void*) * num_backtraces);
        }
        bt->id = next_backtrace++;
        backtraces [bt->id] = bt;
@@ -1562,7 +1562,7 @@ static void
 ensure_buffer (ProfContext *ctx, int size)
 {
        if (ctx->size < size) {
-               ctx->buf = realloc (ctx->buf, size);
+               ctx->buf = (unsigned char *)realloc (ctx->buf, size);
                ctx->size = size;
        }
 }
@@ -1600,16 +1600,16 @@ get_thread (ProfContext *ctx, intptr_t thread_id)
                }
                thread = thread->next;
        }
-       thread = calloc (sizeof (ThreadContext), 1);
+       thread = (ThreadContext *)calloc (sizeof (ThreadContext), 1);
        thread->next = ctx->threads;
        ctx->threads = thread;
        thread->thread_id = thread_id;
        thread->last_time = 0;
        thread->stack_id = 0;
        thread->stack_size = 32;
-       thread->stack = malloc (thread->stack_size * sizeof (void*));
-       thread->time_stack = malloc (thread->stack_size * sizeof (uint64_t));
-       thread->callee_time_stack = malloc (thread->stack_size * sizeof (uint64_t));
+       thread->stack = (MethodDesc **)malloc (thread->stack_size * sizeof (void*));
+       thread->time_stack = (uint64_t *)malloc (thread->stack_size * sizeof (uint64_t));
+       thread->callee_time_stack = (uint64_t *)malloc (thread->stack_size * sizeof (uint64_t));
        return thread;
 }
 
@@ -1628,7 +1628,7 @@ get_domain (ProfContext *ctx, intptr_t domain_id)
                domain = domain->next;
        }
 
-       domain = calloc (sizeof (DomainContext), 1);
+       domain = (DomainContext *)calloc (sizeof (DomainContext), 1);
        domain->next = ctx->domains;
        ctx->domains = domain;
        domain->domain_id = domain_id;
@@ -1651,7 +1651,7 @@ get_remctx (ProfContext *ctx, intptr_t remctx_id)
                remctx = remctx->next;
        }
 
-       remctx = calloc (sizeof (RemCtxContext), 1);
+       remctx = (RemCtxContext *)calloc (sizeof (RemCtxContext), 1);
        remctx->next = ctx->remctxs;
        ctx->remctxs = remctx;
        remctx->remctx_id = remctx_id;
@@ -1672,9 +1672,9 @@ ensure_thread_stack (ThreadContext *thread)
 {
        if (thread->stack_id == thread->stack_size) {
                thread->stack_size *= 2;
-               thread->stack = realloc (thread->stack, thread->stack_size * sizeof (void*));
-               thread->time_stack = realloc (thread->time_stack, thread->stack_size * sizeof (uint64_t));
-               thread->callee_time_stack = realloc (thread->callee_time_stack, thread->stack_size * sizeof (uint64_t));
+               thread->stack = (MethodDesc **)realloc (thread->stack, thread->stack_size * sizeof (void*));
+               thread->time_stack = (uint64_t *)realloc (thread->time_stack, thread->stack_size * sizeof (uint64_t));
+               thread->callee_time_stack = (uint64_t *)realloc (thread->callee_time_stack, thread->stack_size * sizeof (uint64_t));
        }
 }
 
@@ -1715,7 +1715,7 @@ add_trace_bt (BackTrace *bt, TraceDesc *trace, uint64_t value)
                trace->size *= 2;
                if (trace->size == 0)
                        trace->size = 4;
-               n = calloc (sizeof (CallContext) * trace->size, 1);
+               n = (CallContext *)calloc (sizeof (CallContext) * trace->size, 1);
                for (i = 0; i < old_size; ++i) {
                        if (trace->traces [i].bt)
                                add_trace_hashed (n, trace->size, trace->traces [i].bt, trace->traces [i].count);
@@ -1761,9 +1761,9 @@ thread_add_root (ThreadContext *ctx, uintptr_t obj, int root_type, uintptr_t ext
                int new_size = ctx->size_roots * 2;
                if (!new_size)
                        new_size = 4;
-               ctx->roots = realloc (ctx->roots, new_size * sizeof (uintptr_t));
-               ctx->roots_extra = realloc (ctx->roots_extra, new_size * sizeof (uintptr_t));
-               ctx->roots_types = realloc (ctx->roots_types, new_size * sizeof (int));
+               ctx->roots = (uintptr_t *)realloc (ctx->roots, new_size * sizeof (uintptr_t));
+               ctx->roots_extra = (uintptr_t *)realloc (ctx->roots_extra, new_size * sizeof (uintptr_t));
+               ctx->roots_types = (int *)realloc (ctx->roots_types, new_size * sizeof (int));
                ctx->size_roots = new_size;
        }
        ctx->roots_types [ctx->num_roots] = root_type;
@@ -1774,8 +1774,8 @@ thread_add_root (ThreadContext *ctx, uintptr_t obj, int root_type, uintptr_t ext
 static int
 compare_callc (const void *a, const void *b)
 {
-       const CallContext *A = a;
-       const CallContext *B = b;
+       const CallContext *A = (const CallContext *)a;
+       const CallContext *B = (const CallContext *)b;
        if (B->count == A->count)
                return 0;
        if (B->count < A->count)
@@ -1908,7 +1908,7 @@ lookup_monitor (uintptr_t objid)
        while (cd && cd->objid != objid)
                cd = cd->next;
        if (!cd) {
-               cd = calloc (sizeof (MonitorDesc), 1);
+               cd = (MonitorDesc *)calloc (sizeof (MonitorDesc), 1);
                cd->objid = objid;
                cd->next = monitor_hash [slot];
                monitor_hash [slot] = cd;
@@ -1963,7 +1963,7 @@ decode_bt (MethodDesc** sframes, int *size, unsigned char *p, unsigned char **en
        if (flags != 0)
                return NULL;
        if (count > *size)
-               frames = malloc (count * sizeof (void*));
+               frames = (MethodDesc **)malloc (count * sizeof (void*));
        else
                frames = sframes;
        for (i = 0; i < count; ++i) {
@@ -2033,7 +2033,7 @@ static void
 found_object (uintptr_t obj)
 {
        num_tracked_objects ++;
-       tracked_objects = realloc (tracked_objects, num_tracked_objects * sizeof (tracked_objects [0]));
+       tracked_objects = (uintptr_t *)realloc (tracked_objects, num_tracked_objects * sizeof (tracked_objects [0]));
        tracked_objects [num_tracked_objects - 1] = obj;
 }
 
@@ -2120,8 +2120,8 @@ static void
 gather_coverage_statements (void)
 {
        for (guint i = 0; i < coverage_statements->len; i++) {
-               CoverageCoverage *coverage = coverage_statements->pdata[i];
-               CoverageMethod *method = g_hash_table_lookup (coverage_methods_hash, GINT_TO_POINTER (coverage->method_id));
+               CoverageCoverage *coverage = (CoverageCoverage *)coverage_statements->pdata[i];
+               CoverageMethod *method = (CoverageMethod *)g_hash_table_lookup (coverage_methods_hash, GINT_TO_POINTER (coverage->method_id));
                if (method == NULL) {
                        fprintf (outfile, "Cannot find method with ID: %d\n", coverage->method_id);
                        continue;
@@ -2163,7 +2163,7 @@ coverage_add_class (CoverageClass *klass)
        }
 
        g_ptr_array_add (coverage_classes, klass);
-       classes = g_hash_table_lookup (coverage_assembly_classes, klass->assembly_name);
+       classes = (GPtrArray *)g_hash_table_lookup (coverage_assembly_classes, klass->assembly_name);
        if (classes == NULL) {
                classes = g_ptr_array_new ();
                g_hash_table_insert (coverage_assembly_classes, klass->assembly_name, classes);
@@ -2768,7 +2768,7 @@ decode_buffer (ProfContext *ctx)
                                int codelen = decode_uleb128 (p, &p);
                                const char *name;
                                if (type == MONO_PROFILER_CODE_BUFFER_SPECIFIC_TRAMPOLINE) {
-                                       name = (void*)p;
+                                       name = (const char *)p;
                                        while (*p) p++;
                                                p++;
                                } else {
@@ -2877,7 +2877,7 @@ decode_buffer (ProfContext *ctx)
 
                                        type = decode_uleb128 (p, &p);
 
-                                       value = calloc (1, sizeof (CounterValue));
+                                       value = (CounterValue *)calloc (1, sizeof (CounterValue));
                                        value->timestamp = timestamp;
 
                                        switch (type) {
@@ -2885,11 +2885,11 @@ decode_buffer (ProfContext *ctx)
 #if SIZEOF_VOID_P == 4
                                        case MONO_COUNTER_WORD:
 #endif
-                                               value->buffer = malloc (sizeof (int32_t));
+                                               value->buffer = (unsigned char *)malloc (sizeof (int32_t));
                                                *(int32_t*)value->buffer = (int32_t)decode_sleb128 (p, &p) + (previous ? (*(int32_t*)previous->buffer) : 0);
                                                break;
                                        case MONO_COUNTER_UINT:
-                                               value->buffer = malloc (sizeof (uint32_t));
+                                               value->buffer = (unsigned char *)malloc (sizeof (uint32_t));
                                                *(uint32_t*)value->buffer = (uint32_t)decode_uleb128 (p, &p) + (previous ? (*(uint32_t*)previous->buffer) : 0);
                                                break;
                                        case MONO_COUNTER_LONG:
@@ -2897,15 +2897,15 @@ decode_buffer (ProfContext *ctx)
                                        case MONO_COUNTER_WORD:
 #endif
                                        case MONO_COUNTER_TIME_INTERVAL:
-                                               value->buffer = malloc (sizeof (int64_t));
+                                               value->buffer = (unsigned char *)malloc (sizeof (int64_t));
                                                *(int64_t*)value->buffer = (int64_t)decode_sleb128 (p, &p) + (previous ? (*(int64_t*)previous->buffer) : 0);
                                                break;
                                        case MONO_COUNTER_ULONG:
-                                               value->buffer = malloc (sizeof (uint64_t));
+                                               value->buffer = (unsigned char *)malloc (sizeof (uint64_t));
                                                *(uint64_t*)value->buffer = (uint64_t)decode_uleb128 (p, &p) + (previous ? (*(uint64_t*)previous->buffer) : 0);
                                                break;
                                        case MONO_COUNTER_DOUBLE:
-                                               value->buffer = malloc (sizeof (double));
+                                               value->buffer = (unsigned char *)malloc (sizeof (double));
 #if TARGET_BYTE_ORDER == G_LITTLE_ENDIAN
                                                for (i = 0; i < sizeof (double); i++)
 #else
@@ -2939,11 +2939,11 @@ decode_buffer (ProfContext *ctx)
                                int token, n_offsets, method_id;
 
                                p++;
-                               assembly = (void *)p; while (*p) p++; p++;
-                               klass = (void *)p; while (*p) p++; p++;
-                               name = (void *)p; while (*p) p++; p++;
-                               sig = (void *)p; while (*p) p++; p++;
-                               filename = (void *)p; while (*p) p++; p++;
+                               assembly = (const char *)p; while (*p) p++; p++;
+                               klass = (const char *)p; while (*p) p++; p++;
+                               name = (const char *)p; while (*p) p++; p++;
+                               sig = (const char *)p; while (*p) p++; p++;
+                               filename = (const char *)p; while (*p) p++; p++;
 
                                token = decode_uleb128 (p, &p);
                                method_id = decode_uleb128 (p, &p);
@@ -2989,9 +2989,9 @@ decode_buffer (ProfContext *ctx)
                                int number_of_methods, fully_covered, partially_covered;
                                p++;
 
-                               name = (void *)p; while (*p) p++; p++;
-                               guid = (void *)p; while (*p) p++; p++;
-                               filename = (void *)p; while (*p) p++; p++;
+                               name = (char *)p; while (*p) p++; p++;
+                               guid = (char *)p; while (*p) p++; p++;
+                               filename = (char *)p; while (*p) p++; p++;
                                number_of_methods = decode_uleb128 (p, &p);
                                fully_covered = decode_uleb128 (p, &p);
                                partially_covered = decode_uleb128 (p, &p);
@@ -3012,8 +3012,8 @@ decode_buffer (ProfContext *ctx)
                                int number_of_methods, fully_covered, partially_covered;
                                p++;
 
-                               assembly_name = (void *)p; while (*p) p++; p++;
-                               class_name = (void *)p; while (*p) p++; p++;
+                               assembly_name = (char *)p; while (*p) p++; p++;
+                               class_name = (char *)p; while (*p) p++; p++;
                                number_of_methods = decode_uleb128 (p, &p);
                                fully_covered = decode_uleb128 (p, &p);
                                partially_covered = decode_uleb128 (p, &p);
@@ -3049,7 +3049,7 @@ static ProfContext*
 load_file (char *name)
 {
        unsigned char *p;
-       ProfContext *ctx = calloc (sizeof (ProfContext), 1);
+       ProfContext *ctx = (ProfContext *)calloc (sizeof (ProfContext), 1);
        if (strcmp (name, "-") == 0)
                ctx->file = stdin;
        else
@@ -3091,8 +3091,8 @@ static int alloc_sort_mode = ALLOC_SORT_BYTES;
 static int
 compare_class (const void *a, const void *b)
 {
-       ClassDesc *const*A = a;
-       ClassDesc *const*B = b;
+       ClassDesc *const *A = (ClassDesc *const *)a;
+       ClassDesc *const *B = (ClassDesc *const *)b;
        uint64_t vala, valb;
        if (alloc_sort_mode == ALLOC_SORT_BYTES) {
                vala = (*A)->alloc_size;
@@ -3190,8 +3190,8 @@ dump_exceptions (void)
 static int
 compare_monitor (const void *a, const void *b)
 {
-       MonitorDesc *const*A = a;
-       MonitorDesc *const*B = b;
+       MonitorDesc *const *A = (MonitorDesc *const *)a;
+       MonitorDesc *const *B = (MonitorDesc *const *)b;
        if ((*B)->wait_time == (*A)->wait_time)
                return 0;
        if ((*B)->wait_time < (*A)->wait_time)
@@ -3206,7 +3206,7 @@ dump_monitors (void)
        int i, j;
        if (!num_monitors)
                return;
-       monitors = malloc (sizeof (void*) * num_monitors);
+       monitors = (MonitorDesc **)malloc (sizeof (void*) * num_monitors);
        for (i = 0, j = 0; i < SMALL_HASH_SIZE; ++i) {
                MonitorDesc *mdesc = monitor_hash [i];
                while (mdesc) {
@@ -3288,7 +3288,7 @@ dump_allocations (void)
        intptr_t allocs = 0;
        uint64_t size = 0;
        int header_done = 0;
-       ClassDesc **classes = malloc (num_classes * sizeof (void*));
+       ClassDesc **classes = (ClassDesc **)malloc (num_classes * sizeof (void*));
        ClassDesc *cd;
        c = 0;
        for (i = 0; i < HASH_SIZE; ++i) {
@@ -3331,8 +3331,8 @@ static int method_sort_mode = METHOD_SORT_TOTAL;
 static int
 compare_method (const void *a, const void *b)
 {
-       MethodDesc *const*A = a;
-       MethodDesc *const*B = b;
+       MethodDesc *const *A = (MethodDesc *const *)a;
+       MethodDesc *const *B = (MethodDesc *const *)b;
        uint64_t vala, valb;
        if (method_sort_mode == METHOD_SORT_SELF) {
                vala = (*A)->self_time;
@@ -3387,7 +3387,7 @@ dump_methods (void)
        int i, c;
        uint64_t calls = 0;
        int header_done = 0;
-       MethodDesc **methods = malloc (num_methods * sizeof (void*));
+       MethodDesc **methods = (MethodDesc **)malloc (num_methods * sizeof (void*));
        MethodDesc *cd;
        c = 0;
        for (i = 0; i < HASH_SIZE; ++i) {
@@ -3428,8 +3428,8 @@ dump_methods (void)
 static int
 compare_heap_class (const void *a, const void *b)
 {
-       HeapClassDesc *const*A = a;
-       HeapClassDesc *const*B = b;
+       HeapClassDesc *const *A = (HeapClassDesc *const *)a;
+       HeapClassDesc *const *B = (HeapClassDesc *const *)b;
        uint64_t vala, valb;
        if (alloc_sort_mode == ALLOC_SORT_BYTES) {
                vala = (*A)->total_size;
@@ -3448,8 +3448,8 @@ compare_heap_class (const void *a, const void *b)
 static int
 compare_rev_class (const void *a, const void *b)
 {
-       const HeapClassRevRef *A = a;
-       const HeapClassRevRef *B = b;
+       const HeapClassRevRef *A = (const HeapClassRevRef *)a;
+       const HeapClassRevRef *B = (const HeapClassRevRef *)b;
        if (B->count == A->count)
                return 0;
        if (B->count < A->count)
@@ -3482,7 +3482,7 @@ heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs)
        int i;
        HeapClassDesc *cd;
        HeapClassDesc **sorted;
-       sorted = malloc (sizeof (void*) * hs->class_count);
+       sorted = (HeapClassDesc **)malloc (sizeof (void*) * hs->class_count);
        for (i = 0; i < hs->hash_size; ++i) {
                cd = hs->class_hash [i];
                if (!cd)
@@ -3523,7 +3523,7 @@ heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs)
                }
                if (!collect_traces)
                        continue;
-               rev_sorted = malloc (cd->rev_count * sizeof (HeapClassRevRef));
+               rev_sorted = (HeapClassRevRef *)malloc (cd->rev_count * sizeof (HeapClassRevRef));
                k = 0;
                for (j = 0; j < cd->rev_hash_size; ++j) {
                        if (cd->rev_hash [j].klass)
@@ -3542,8 +3542,8 @@ heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs)
 static int
 compare_heap_shots (const void *a, const void *b)
 {
-       HeapShot *const*A = a;
-       HeapShot *const*B = b;
+       HeapShot *const *A = (HeapShot *const *)a;
+       HeapShot *const *B = (HeapShot *const *)b;
        if ((*B)->timestamp == (*A)->timestamp)
                return 0;
        if ((*B)->timestamp > (*A)->timestamp)
@@ -3560,7 +3560,7 @@ dump_heap_shots (void)
        int i;
        if (!heap_shots)
                return;
-       hs_sorted = malloc (num_heap_shots * sizeof (void*));
+       hs_sorted = (HeapShot **)malloc (num_heap_shots * sizeof (void*));
        fprintf (outfile, "\nHeap shot summary\n");
        i = 0;
        for (hs = heap_shots; hs; hs = hs->next)
@@ -3650,7 +3650,7 @@ dump_coverage (void)
        g_ptr_array_sort (coverage_assemblies, sort_assemblies);
 
        for (guint i = 0; i < coverage_assemblies->len; i++) {
-               CoverageAssembly *assembly = coverage_assemblies->pdata[i];
+               CoverageAssembly *assembly = (CoverageAssembly *)coverage_assemblies->pdata[i];
                GPtrArray *classes;
 
                if (assembly->number_of_methods != 0) {
@@ -3670,10 +3670,10 @@ dump_coverage (void)
                        g_free (escaped_filename);
                }
 
-               classes = g_hash_table_lookup (coverage_assembly_classes, assembly->name);
+               classes = (GPtrArray *)g_hash_table_lookup (coverage_assembly_classes, assembly->name);
                if (classes) {
                        for (guint j = 0; j < classes->len; j++) {
-                               CoverageClass *klass = classes->pdata[j];
+                               CoverageClass *klass = (CoverageClass *)classes->pdata [j];
 
                                if (klass->number_of_methods > 0) {
                                        int percentage = ((klass->fully_covered + klass->partially_covered) * 100) / klass->number_of_methods;
@@ -3693,7 +3693,7 @@ dump_coverage (void)
        }
 
        for (guint i = 0; i < coverage_methods->len; i++) {
-               CoverageMethod *method = coverage_methods->pdata[i];
+               CoverageMethod *method = (CoverageMethod *)coverage_methods->pdata [i];
 
                if (coverage_outfile) {
                        char *escaped_assembly, *escaped_class, *escaped_method, *escaped_sig, *escaped_filename;
@@ -3713,7 +3713,7 @@ dump_coverage (void)
                        g_free (escaped_filename);
 
                        for (guint j = 0; j < method->coverage->len; j++) {
-                               CoverageCoverage *coverage = method->coverage->pdata[j];
+                               CoverageCoverage *coverage = (CoverageCoverage *)method->coverage->pdata [j];
                                fprintf (coverage_outfile, "\t\t<statement offset=\"%d\" counter=\"%d\" line=\"%d\" column=\"%d\"/>\n", coverage->offset, coverage->count, coverage->line, coverage->column);
                        }
                        fprintf (coverage_outfile, "\t</method>\n");
index ba614b4de7e0f6c55e4cd49ce7c433522f6344c1..79d80717aaabb9fed6e46a05a8403e7a5f2cd43e 100644 (file)
@@ -124,7 +124,7 @@ prof_jit_leave (MonoProfiler *prof, MonoMethod *method, int result)
        MonoImage *image = mono_class_get_image (mono_method_get_class (method));
        PerImageData *data;
 
-       data = g_hash_table_lookup (prof->images, image);
+       data = (PerImageData *)g_hash_table_lookup (prof->images, image);
        if (!data) {
                data = g_new0 (PerImageData, 1);
                g_hash_table_insert (prof->images, image, data);
index bc0dd2c1b65cc1ad70d71a62ae54332c18750afa..0dff9e980880e9e276e33182ceb53ea43ff693e4 100644 (file)
@@ -23,7 +23,7 @@
 #include <mono/metadata/threads.h>
 #include <mono/metadata/profiler.h>
 #include <mono/metadata/loader.h>
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-os-mutex.h>
 
 #define LOCATION_INDENT "        "
 #define BACKTRACE_SIZE 64
@@ -112,7 +112,7 @@ static void mismatched_stats_foreach_func (gpointer key, gpointer value, gpointe
                return;
        }
 
-       location = g_hash_table_lookup (prof->string_locations_hash, &hash);
+       location = (StringLocation *)g_hash_table_lookup (prof->string_locations_hash, &hash);
        while (location) {
                if (location->hint && strlen (location->hint) > 0) {
                        if (!bannerShown) {
@@ -243,7 +243,7 @@ static gboolean saved_strings_find_func (gpointer key, gpointer value, gpointer
 
 static inline void store_string_location (MonoProfiler *prof, const gchar *string, guint32 hash, size_t len)
 {
-       StringLocation *location = g_hash_table_lookup (prof->string_locations_hash, &hash);
+       StringLocation *location = (StringLocation *)g_hash_table_lookup (prof->string_locations_hash, &hash);
        SavedString *saved;
        SavedStringFindInfo info;
        guint32 *hashptr;
@@ -461,7 +461,7 @@ static void mono_portability_remember_string (MonoProfiler *prof, MonoDomain *do
                return;
        }
 
-       mono_mutex_lock (&mismatched_files_section);
+       mono_os_mutex_lock (&mismatched_files_section);
        head = (SavedString*)g_hash_table_lookup (prof->saved_strings_hash, (gpointer)str);
        if (head) {
                while (head->next)
@@ -469,7 +469,7 @@ static void mono_portability_remember_string (MonoProfiler *prof, MonoDomain *do
                head->next = entry;
        } else
                g_hash_table_insert (prof->saved_strings_hash, (gpointer)str, (gpointer)entry);
-       mono_mutex_unlock (&mismatched_files_section);
+       mono_os_mutex_unlock (&mismatched_files_section);
 }
 
 static MonoClass *string_class = NULL;
@@ -489,7 +489,7 @@ static void mono_portability_iomap_event (MonoProfiler *prof, const char *report
        if (!runtime_initialized)
                return;
 
-       mono_mutex_lock (&mismatched_files_section);
+       mono_os_mutex_lock (&mismatched_files_section);
        hash = calc_strings_hash (pathname, new_pathname, &pathnameHash);
        stats = (MismatchedFilesStats*)g_hash_table_lookup (prof->mismatched_files_hash, &hash);
        if (stats == NULL) {
@@ -507,11 +507,11 @@ static void mono_portability_iomap_event (MonoProfiler *prof, const char *report
                        g_error ("Out of memory allocating integer pointer for mismatched files hash table.");
 
                store_string_location (prof, (const gchar*)stats->requestedName, pathnameHash, strlen (stats->requestedName));
-               mono_mutex_unlock (&mismatched_files_section);
+               mono_os_mutex_unlock (&mismatched_files_section);
 
                print_report ("%s -     Found file path: '%s'\n", report, new_pathname);
        } else {
-               mono_mutex_unlock (&mismatched_files_section);
+               mono_os_mutex_unlock (&mismatched_files_section);
                stats->count++;
        }
 }
@@ -525,14 +525,14 @@ static void runtime_initialized_cb (MonoProfiler *prof)
 static void profiler_shutdown (MonoProfiler *prof)
 {
        print_mismatched_stats (prof);
-       mono_mutex_destroy (&mismatched_files_section);
+       mono_os_mutex_destroy (&mismatched_files_section);
 }
 
 void mono_profiler_startup (const char *desc)
 {
        MonoProfiler *prof = g_new0 (MonoProfiler, 1);
 
-       mono_mutex_init (&mismatched_files_section);
+       mono_os_mutex_init (&mismatched_files_section);
        prof->mismatched_files_hash = g_hash_table_new (mismatched_files_guint32_hash, mismatched_files_guint32_equal);
        prof->saved_strings_hash = g_hash_table_new (NULL, NULL);
        prof->string_locations_hash = g_hash_table_new (mismatched_files_guint32_hash, mismatched_files_guint32_equal);
@@ -542,5 +542,5 @@ void mono_profiler_startup (const char *desc)
        mono_profiler_install_iomap (mono_portability_iomap_event);
        mono_profiler_install_allocation (mono_portability_remember_alloc);
 
-       mono_profiler_set_events (MONO_PROFILE_ALLOCATIONS | MONO_PROFILE_IOMAP_EVENTS);
+       mono_profiler_set_events ((MonoProfileFlags)(MONO_PROFILE_ALLOCATIONS | MONO_PROFILE_IOMAP_EVENTS));
 }
index c8adbd4a7de273d73fbf145ceda9b5561b848137..9120ae06916850b4154f96828b7bb34757b40a41 100644 (file)
@@ -23,7 +23,7 @@
 #include <mono/utils/atomic.h>
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/mono-counters.h>
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-os-mutex.h>
 #include <mono/utils/mono-conc-hashtable.h>
 #include <mono/utils/lock-free-queue.h>
 #include <stdlib.h>
@@ -522,7 +522,7 @@ static char*
 pstrdup (const char *s)
 {
        int len = strlen (s) + 1;
-       char *p = malloc (len);
+       char *p = (char *)malloc (len);
        memcpy (p, s, len);
        return p;
 }
@@ -530,7 +530,7 @@ pstrdup (const char *s)
 static StatBuffer*
 create_stat_buffer (void)
 {
-       StatBuffer* buf = alloc_buffer (BUFFER_SIZE);
+       StatBuffer* buf = (StatBuffer *)alloc_buffer (BUFFER_SIZE);
        buf->size = BUFFER_SIZE;
        buf->data_end = (uintptr_t*)((unsigned char*)buf + buf->size);
        buf->data = buf->buf;
@@ -540,7 +540,7 @@ create_stat_buffer (void)
 static LogBuffer*
 create_buffer (void)
 {
-       LogBuffer* buf = alloc_buffer (BUFFER_SIZE);
+       LogBuffer* buf = (LogBuffer *)alloc_buffer (BUFFER_SIZE);
        buf->size = BUFFER_SIZE;
        buf->time_base = current_time ();
        buf->last_time = buf->time_base;
@@ -571,29 +571,29 @@ ensure_logbuf_inner (LogBuffer *old, int bytes)
        if (old && old->data + bytes + 100 < old->data_end)
                return old;
 
-       LogBuffer *new = create_buffer ();
-       new->thread_id = thread_id ();
-       new->next = old;
+       LogBuffer *new_ = (LogBuffer *)create_buffer ();
+       new_->thread_id = thread_id ();
+       new_->next = old;
 
        if (old)
-               new->call_depth = old->call_depth;
+               new_->call_depth = old->call_depth;
 
-       return new;
+       return new_;
 }
 
 static LogBuffer*
 ensure_logbuf (int bytes)
 {
        LogBuffer *old = TLS_GET (LogBuffer, tlsbuffer);
-       LogBuffer *new = ensure_logbuf_inner (old, bytes);
+       LogBuffer *new_ = ensure_logbuf_inner (old, bytes);
 
-       if (new == old)
+       if (new_ == old)
                return old; // Still enough space.
 
-       TLS_SET (tlsbuffer, new);
+       TLS_SET (tlsbuffer, new_);
        init_thread ();
 
-       return new;
+       return new_;
 }
 
 static void
@@ -615,8 +615,8 @@ static void
 emit_time (LogBuffer *logbuffer, uint64_t value)
 {
        uint64_t tdiff = value - logbuffer->last_time;
-       if (value < logbuffer->last_time)
-               printf ("time went backwards\n");
+       //if (value < logbuffer->last_time)
+       //      printf ("time went backwards\n");
        //if (tdiff > 1000000)
        //      printf ("large time offset: %llu\n", tdiff);
        encode_uleb128 (tdiff, logbuffer->data, &logbuffer->data);
@@ -661,6 +661,7 @@ emit_method_inner (LogBuffer *logbuffer, void *method)
        assert (logbuffer->data <= logbuffer->data_end);
 }
 
+/*
 typedef struct {
        MonoMethod *method;
        MonoJitInfo *found;
@@ -688,11 +689,20 @@ find_method (MonoDomain *domain, void *user_data)
        if (ji)
                search->found = ji;
 }
+*/
 
 static void
 register_method_local (MonoProfiler *prof, MonoMethod *method, MonoJitInfo *ji)
 {
        if (!mono_conc_hashtable_lookup (prof->method_table, method)) {
+               /*
+                * FIXME: In some cases, we crash while looking up JIT info for AOT'd methods.
+                * This usually happens for static constructors. This code is disabled for now
+                * as we don't need this info for anything critical.
+                *
+                * https://bugzilla.xamarin.com/show_bug.cgi?id=35171
+                */
+               /*
                if (!ji) {
                        MethodSearch search = { method, NULL };
 
@@ -700,6 +710,7 @@ register_method_local (MonoProfiler *prof, MonoMethod *method, MonoJitInfo *ji)
 
                        ji = search.found;
                }
+               */
 
                /*
                 * FIXME: We can't always find JIT info for a generic shared method, especially
@@ -709,7 +720,7 @@ register_method_local (MonoProfiler *prof, MonoMethod *method, MonoJitInfo *ji)
                 */
                //g_assert (ji);
 
-               MethodInfo *info = malloc (sizeof (MethodInfo));
+               MethodInfo *info = (MethodInfo *)malloc (sizeof (MethodInfo));
 
                info->method = method;
                info->ji = ji;
@@ -834,7 +845,7 @@ dump_header (MonoProfiler *profiler)
 static void
 send_buffer (MonoProfiler *prof, GPtrArray *methods, LogBuffer *buffer)
 {
-       WriterQueueEntry *entry = calloc (1, sizeof (WriterQueueEntry));
+       WriterQueueEntry *entry = (WriterQueueEntry *)calloc (1, sizeof (WriterQueueEntry));
        mono_lock_free_queue_node_init (&entry->node, FALSE);
        entry->methods = methods;
        entry->buffer = buffer;
@@ -1045,7 +1056,7 @@ static int num_frames = MAX_FRAMES;
 static mono_bool
 walk_stack (MonoMethod *method, int32_t native_offset, int32_t il_offset, mono_bool managed, void* data)
 {
-       FrameData *frame = data;
+       FrameData *frame = (FrameData *)data;
        if (method && frame->count < num_frames) {
                frame->il_offsets [frame->count] = il_offset;
                frame->native_offsets [frame->count] = native_offset;
@@ -1260,7 +1271,7 @@ type_name (MonoClass *klass)
        char buf [1024];
        char *p;
        push_nesting (buf, klass);
-       p = malloc (strlen (buf) + 1);
+       p = (char *)malloc (strlen (buf) + 1);
        strcpy (p, buf);
        return p;
 }
@@ -1584,7 +1595,7 @@ code_buffer_new (MonoProfiler *prof, void *buffer, int size, MonoProfilerCodeBuf
        char *name;
        LogBuffer *logbuffer;
        if (type == MONO_PROFILER_CODE_BUFFER_SPECIFIC_TRAMPOLINE) {
-               name = data;
+               name = (char *)data;
                nlen = strlen (name) + 1;
        } else {
                name = NULL;
@@ -1948,7 +1959,7 @@ typedef struct {
 static mono_bool
 async_walk_stack (MonoMethod *method, MonoDomain *domain, void *base_address, int offset, void *data)
 {
-       AsyncFrameData *frame = data;
+       AsyncFrameData *frame = (AsyncFrameData *)data;
        if (frame->count < num_frames) {
                frame->data [frame->count].method = method;
                frame->data [frame->count].domain = domain;
@@ -2006,7 +2017,7 @@ mono_sample_hit (MonoProfiler *profiler, unsigned char *ip, void *context)
                do {
                        oldsb = profiler->stat_buffers;
                        sbuf->next = oldsb;
-                       foundsb = InterlockedCompareExchangePointer ((void * volatile*)&profiler->stat_buffers, sbuf, oldsb);
+                       foundsb = (StatBuffer *)InterlockedCompareExchangePointer ((void * volatile*)&profiler->stat_buffers, sbuf, oldsb);
                } while (foundsb != oldsb);
                if (do_debug)
                        ign_res (write (2, "overflow\n", 9));
@@ -2021,7 +2032,7 @@ mono_sample_hit (MonoProfiler *profiler, unsigned char *ip, void *context)
        do {
                old_data = sbuf->data;
                new_data = old_data + SAMPLE_EVENT_SIZE_IN_SLOTS (bt_data.count);
-               data = InterlockedCompareExchangePointer ((void * volatile*)&sbuf->data, new_data, old_data);
+               data = (uintptr_t *)InterlockedCompareExchangePointer ((void * volatile*)&sbuf->data, new_data, old_data);
        } while (data != old_data);
        if (old_data >= sbuf->data_end)
                return; /* lost event */
@@ -2078,7 +2089,7 @@ add_code_pointer (uintptr_t ip)
                size_code_pages *= 2;
                if (size_code_pages == 0)
                        size_code_pages = 16;
-               n = calloc (sizeof (uintptr_t) * size_code_pages, 1);
+               n = (uintptr_t *)calloc (sizeof (uintptr_t) * size_code_pages, 1);
                for (i = 0; i < old_size; ++i) {
                        if (code_pages [i])
                                add_code_page (n, size_code_pages, code_pages [i]);
@@ -2414,7 +2425,7 @@ dump_sample_hits (MonoProfiler *prof, StatBuffer *sbuf)
        g_ptr_array_sort (prof->sorted_sample_events, compare_sample_events);
 
        for (guint sidx = 0; sidx < prof->sorted_sample_events->len; sidx++) {
-               uintptr_t *sample = g_ptr_array_index (prof->sorted_sample_events, sidx);
+               uintptr_t *sample = (uintptr_t *)g_ptr_array_index (prof->sorted_sample_events, sidx);
                int count = sample [0] & 0xff;
                int mbt_count = (sample [0] & 0xff00) >> 8;
                int type = sample [0] >> 16;
@@ -2427,7 +2438,7 @@ dump_sample_hits (MonoProfiler *prof, StatBuffer *sbuf)
                        void *address = (void*)managed_sample_base [i * 4 + 2];
 
                        if (!method) {
-                               MonoJitInfo *ji = mono_jit_info_table_find (domain, address);
+                               MonoJitInfo *ji = mono_jit_info_table_find (domain, (char *)address);
 
                                if (ji)
                                        managed_sample_base [i * 4 + 0] = (uintptr_t)mono_jit_info_get_method (ji);
@@ -2770,7 +2781,7 @@ counters_add_agent (MonoCounter *counter)
        if (!counters_initialized)
                return;
 
-       mono_mutex_lock (&counters_mutex);
+       mono_os_mutex_lock (&counters_mutex);
 
        for (agent = counters; agent; agent = agent->next) {
                if (agent->counter == counter) {
@@ -2779,12 +2790,12 @@ counters_add_agent (MonoCounter *counter)
                                free (agent->value);
                                agent->value = NULL;
                        }
-                       mono_mutex_unlock (&counters_mutex);
+                       mono_os_mutex_unlock (&counters_mutex);
                        return;
                }
        }
 
-       agent = malloc (sizeof (MonoCounterAgent));
+       agent = (MonoCounterAgent *)malloc (sizeof (MonoCounterAgent));
        agent->counter = counter;
        agent->value = NULL;
        agent->value_size = 0;
@@ -2801,7 +2812,7 @@ counters_add_agent (MonoCounter *counter)
                item->next = agent;
        }
 
-       mono_mutex_unlock (&counters_mutex);
+       mono_os_mutex_unlock (&counters_mutex);
 }
 
 static mono_bool
@@ -2816,7 +2827,7 @@ counters_init (MonoProfiler *profiler)
 {
        assert (!counters_initialized);
 
-       mono_mutex_init (&counters_mutex);
+       mono_os_mutex_init (&counters_mutex);
 
        counters_initialized = TRUE;
 
@@ -2838,7 +2849,7 @@ counters_emit (MonoProfiler *profiler)
        if (!counters_initialized)
                return;
 
-       mono_mutex_lock (&counters_mutex);
+       mono_os_mutex_lock (&counters_mutex);
 
        for (agent = counters; agent; agent = agent->next) {
                if (agent->emitted)
@@ -2857,7 +2868,7 @@ counters_emit (MonoProfiler *profiler)
        }
 
        if (!len) {
-               mono_mutex_unlock (&counters_mutex);
+               mono_os_mutex_unlock (&counters_mutex);
                return;
        }
 
@@ -2886,7 +2897,7 @@ counters_emit (MonoProfiler *profiler)
 
        safe_send (profiler, logbuffer);
 
-       mono_mutex_unlock (&counters_mutex);
+       mono_os_mutex_unlock (&counters_mutex);
 }
 
 static void
@@ -2908,7 +2919,7 @@ counters_sample (MonoProfiler *profiler, uint64_t timestamp)
        buffer_size = 8;
        buffer = calloc (1, buffer_size);
 
-       mono_mutex_lock (&counters_mutex);
+       mono_os_mutex_lock (&counters_mutex);
 
        size =
                EVENT_SIZE /* event */ +
@@ -3017,7 +3028,7 @@ counters_sample (MonoProfiler *profiler, uint64_t timestamp)
 
        safe_send (profiler, logbuffer);
 
-       mono_mutex_unlock (&counters_mutex);
+       mono_os_mutex_unlock (&counters_mutex);
 }
 
 typedef struct _PerfCounterAgent PerfCounterAgent;
@@ -3133,7 +3144,7 @@ perfcounters_sample (MonoProfiler *profiler, uint64_t timestamp)
        if (!counters_initialized)
                return;
 
-       mono_mutex_lock (&counters_mutex);
+       mono_os_mutex_lock (&counters_mutex);
 
        /* mark all perfcounters as deleted, foreach will unmark them as necessary */
        for (pcagent = perfcounters; pcagent; pcagent = pcagent->next)
@@ -3183,7 +3194,7 @@ perfcounters_sample (MonoProfiler *profiler, uint64_t timestamp)
 
        safe_send (profiler, logbuffer);
 
-       mono_mutex_unlock (&counters_mutex);
+       mono_os_mutex_unlock (&counters_mutex);
 }
 
 static void
@@ -3264,7 +3275,7 @@ parse_generic_type_names(char *name)
        if (name == NULL || *name == '\0')
                return g_strdup ("");
 
-       if (!(ret = new_name = calloc (strlen (name) * 4 + 1, sizeof (char))))
+       if (!(ret = new_name = (char *)calloc (strlen (name) * 4 + 1, sizeof (char))))
                return NULL;
 
        do {
@@ -3329,7 +3340,7 @@ build_method_buffer (gpointer key, gpointer value, gpointer userdata)
        method_name = mono_method_get_name (method);
 
        if (coverage_data->len != 0) {
-               CoverageEntry *entry = coverage_data->pdata[0];
+               CoverageEntry *entry = (CoverageEntry *)coverage_data->pdata[0];
                first_filename = entry->filename ? entry->filename : "";
        } else
                first_filename = "";
@@ -3366,7 +3377,7 @@ build_method_buffer (gpointer key, gpointer value, gpointer userdata)
        safe_send (prof, logbuffer);
 
        for (i = 0; i < coverage_data->len; i++) {
-               CoverageEntry *entry = coverage_data->pdata[i];
+               CoverageEntry *entry = (CoverageEntry *)coverage_data->pdata[i];
 
                logbuffer = ensure_logbuf (
                        EVENT_SIZE /* event */ +
@@ -3462,7 +3473,7 @@ build_class_buffer (gpointer key, gpointer value, gpointer userdata)
 static void
 get_coverage_for_image (MonoImage *image, int *number_of_methods, guint *fully_covered, int *partially_covered)
 {
-       MonoLockFreeQueue *image_methods = mono_conc_hashtable_lookup (image_to_methods, image);
+       MonoLockFreeQueue *image_methods = (MonoLockFreeQueue *)mono_conc_hashtable_lookup (image_to_methods, image);
 
        *number_of_methods = mono_image_get_table_rows (image, MONO_TABLE_METHOD);
        if (image_methods)
@@ -3527,11 +3538,11 @@ dump_coverage (MonoProfiler *prof)
        COVERAGE_DEBUG(fprintf (stderr, "Coverage: Started dump\n");)
        method_id = 0;
 
-       mono_mutex_lock (&coverage_mutex);
+       mono_os_mutex_lock (&coverage_mutex);
        mono_conc_hashtable_foreach (coverage_assemblies, build_assembly_buffer, prof);
        mono_conc_hashtable_foreach (coverage_classes, build_class_buffer, prof);
        mono_conc_hashtable_foreach (coverage_methods, build_method_buffer, prof);
-       mono_mutex_unlock (&coverage_mutex);
+       mono_os_mutex_unlock (&coverage_mutex);
 
        COVERAGE_DEBUG(fprintf (stderr, "Coverage: Finished dump\n");)
 }
@@ -3551,15 +3562,15 @@ process_method_enter_coverage (MonoProfiler *prof, MonoMethod *method)
        if (mono_conc_hashtable_lookup (suppressed_assemblies, (gpointer) mono_image_get_name (image)))
                return;
 
-       mono_mutex_lock (&coverage_mutex);
+       mono_os_mutex_lock (&coverage_mutex);
        mono_conc_hashtable_insert (entered_methods, method, method);
-       mono_mutex_unlock (&coverage_mutex);
+       mono_os_mutex_unlock (&coverage_mutex);
 }
 
 static MonoLockFreeQueueNode *
 create_method_node (MonoMethod *method)
 {
-       MethodNode *node = g_malloc (sizeof (MethodNode));
+       MethodNode *node = (MethodNode *)g_malloc (sizeof (MethodNode));
        mono_lock_free_queue_node_init ((MonoLockFreeQueueNode *) node, FALSE);
        node->method = method;
 
@@ -3620,7 +3631,7 @@ coverage_filter (MonoProfiler *prof, MonoMethod *method)
                has_positive = FALSE;
                found = FALSE;
                for (guint i = 0; i < prof->coverage_filters->len; ++i) {
-                       char *filter = g_ptr_array_index (prof->coverage_filters, i);
+                       char *filter = (char *)g_ptr_array_index (prof->coverage_filters, i);
 
                        if (filter [0] == '+') {
                                filter = &filter [1];
@@ -3640,9 +3651,9 @@ coverage_filter (MonoProfiler *prof, MonoMethod *method)
                if (has_positive && !found) {
                        COVERAGE_DEBUG(fprintf (stderr, "   Positive match was not found\n");)
 
-                       mono_mutex_lock (&coverage_mutex);
+                       mono_os_mutex_lock (&coverage_mutex);
                        mono_conc_hashtable_insert (filtered_classes, klass, klass);
-                       mono_mutex_unlock (&coverage_mutex);
+                       mono_os_mutex_unlock (&coverage_mutex);
                        g_free (fqn);
                        g_free (classname);
 
@@ -3651,7 +3662,7 @@ coverage_filter (MonoProfiler *prof, MonoMethod *method)
 
                for (guint i = 0; i < prof->coverage_filters->len; ++i) {
                        // FIXME: Is substring search sufficient?
-                       char *filter = g_ptr_array_index (prof->coverage_filters, i);
+                       char *filter = (char *)g_ptr_array_index (prof->coverage_filters, i);
                        if (filter [0] == '+')
                                continue;
 
@@ -3662,9 +3673,9 @@ coverage_filter (MonoProfiler *prof, MonoMethod *method)
                        if (strstr (fqn, filter) != NULL) {
                                COVERAGE_DEBUG(fprintf (stderr, "matched\n");)
 
-                               mono_mutex_lock (&coverage_mutex);
+                               mono_os_mutex_lock (&coverage_mutex);
                                mono_conc_hashtable_insert (filtered_classes, klass, klass);
-                               mono_mutex_unlock (&coverage_mutex);
+                               mono_os_mutex_unlock (&coverage_mutex);
                                g_free (fqn);
                                g_free (classname);
 
@@ -3685,32 +3696,32 @@ coverage_filter (MonoProfiler *prof, MonoMethod *method)
 
        assembly = mono_image_get_assembly (image);
 
-       mono_mutex_lock (&coverage_mutex);
+       mono_os_mutex_lock (&coverage_mutex);
        mono_conc_hashtable_insert (coverage_methods, method, method);
        mono_conc_hashtable_insert (coverage_assemblies, assembly, assembly);
-       mono_mutex_unlock (&coverage_mutex);
+       mono_os_mutex_unlock (&coverage_mutex);
 
-       image_methods = mono_conc_hashtable_lookup (image_to_methods, image);
+       image_methods = (MonoLockFreeQueue *)mono_conc_hashtable_lookup (image_to_methods, image);
 
        if (image_methods == NULL) {
-               image_methods = g_malloc (sizeof (MonoLockFreeQueue));
+               image_methods = (MonoLockFreeQueue *)g_malloc (sizeof (MonoLockFreeQueue));
                mono_lock_free_queue_init (image_methods);
-               mono_mutex_lock (&coverage_mutex);
+               mono_os_mutex_lock (&coverage_mutex);
                mono_conc_hashtable_insert (image_to_methods, image, image_methods);
-               mono_mutex_unlock (&coverage_mutex);
+               mono_os_mutex_unlock (&coverage_mutex);
        }
 
        node = create_method_node (method);
        mono_lock_free_queue_enqueue (image_methods, node);
 
-       class_methods = mono_conc_hashtable_lookup (coverage_classes, klass);
+       class_methods = (MonoLockFreeQueue *)mono_conc_hashtable_lookup (coverage_classes, klass);
 
        if (class_methods == NULL) {
-               class_methods = g_malloc (sizeof (MonoLockFreeQueue));
+               class_methods = (MonoLockFreeQueue *)g_malloc (sizeof (MonoLockFreeQueue));
                mono_lock_free_queue_init (class_methods);
-               mono_mutex_lock (&coverage_mutex);
+               mono_os_mutex_lock (&coverage_mutex);
                mono_conc_hashtable_insert (coverage_classes, klass, class_methods);
-               mono_mutex_unlock (&coverage_mutex);
+               mono_os_mutex_unlock (&coverage_mutex);
        }
 
        node = create_method_node (method);
@@ -3745,7 +3756,7 @@ get_file_content (FILE *stream)
        if (filesize > MAX_FILE_SIZE)
          return NULL;
 
-       buffer = g_malloc ((filesize + 1) * sizeof (char));
+       buffer = (char *)g_malloc ((filesize + 1) * sizeof (char));
        while ((bytes_read = fread (buffer + offset, 1, LINE_BUFFER_SIZE, stream)) > 0)
                offset += bytes_read;
 
@@ -3813,7 +3824,7 @@ coverage_init (MonoProfiler *prof)
 
        COVERAGE_DEBUG(fprintf (stderr, "Coverage initialized\n");)
 
-       mono_mutex_init (&coverage_mutex);
+       mono_os_mutex_init (&coverage_mutex);
        coverage_methods = mono_conc_hashtable_new (NULL, NULL);
        coverage_assemblies = mono_conc_hashtable_new (NULL, NULL);
        coverage_classes = mono_conc_hashtable_new (NULL, NULL);
@@ -3872,7 +3883,7 @@ log_shutdown (MonoProfiler *prof)
                fclose (prof->file);
 
        mono_conc_hashtable_destroy (prof->method_table);
-       mono_mutex_destroy (&prof->method_table_mutex);
+       mono_os_mutex_destroy (&prof->method_table_mutex);
 
        if (coverage_initialized) {
                mono_conc_hashtable_destroy (coverage_methods);
@@ -3883,7 +3894,7 @@ log_shutdown (MonoProfiler *prof)
                mono_conc_hashtable_destroy (entered_methods);
                mono_conc_hashtable_destroy (image_to_methods);
                mono_conc_hashtable_destroy (suppressed_assemblies);
-               mono_mutex_destroy (&coverage_mutex);
+               mono_os_mutex_destroy (&coverage_mutex);
        }
 
        free (prof);
@@ -3921,7 +3932,7 @@ new_filename (const char* filename)
                1900 + ts->tm_year, 1 + ts->tm_mon, ts->tm_mday, ts->tm_hour, ts->tm_min, ts->tm_sec);
        s_date = strlen (time_buf);
        s_pid = strlen (pid_buf);
-       d = res = malloc (strlen (filename) + s_date * count_dates + s_pid * count_pids);
+       d = res = (char *)malloc (strlen (filename) + s_date * count_dates + s_pid * count_pids);
        for (p = filename; *p; p++) {
                if (*p != '%') {
                        *d++ = *p;
@@ -3956,7 +3967,7 @@ extern void mono_threads_attach_tools_thread (void);
 static void*
 helper_thread (void* arg)
 {
-       MonoProfiler* prof = arg;
+       MonoProfiler* prof = (MonoProfiler *)arg;
        int command_socket;
        int len;
        char buf [64];
@@ -4142,7 +4153,7 @@ start_helper_thread (MonoProfiler* prof)
 static void *
 writer_thread (void *arg)
 {
-       MonoProfiler *prof = arg;
+       MonoProfiler *prof = (MonoProfiler *)arg;
 
        mono_threads_attach_tools_thread ();
 
@@ -4164,7 +4175,7 @@ writer_thread (void *arg)
                         * methods have metadata emitted before they're referenced.
                         */
                        for (guint i = 0; i < entry->methods->len; i++) {
-                               MethodInfo *info = g_ptr_array_index (entry->methods, i);
+                               MethodInfo *info = (MethodInfo *)g_ptr_array_index (entry->methods, i);
 
                                if (mono_conc_hashtable_lookup (prof->method_table, info->method))
                                        continue;
@@ -4181,9 +4192,9 @@ writer_thread (void *arg)
                                 * method lists will just be empty for the rest of the
                                 * app's lifetime.
                                 */
-                               mono_mutex_lock (&prof->method_table_mutex);
+                               mono_os_mutex_lock (&prof->method_table_mutex);
                                mono_conc_hashtable_insert (prof->method_table, info->method, info->method);
-                               mono_mutex_unlock (&prof->method_table_mutex);
+                               mono_os_mutex_unlock (&prof->method_table_mutex);
 
                                char *name = mono_method_full_name (info->method, 1);
                                int nlen = strlen (name) + 1;
@@ -4263,7 +4274,7 @@ create_profiler (const char *filename, GPtrArray *filters)
        MonoProfiler *prof;
        char *nf;
        int force_delete = 0;
-       prof = calloc (1, sizeof (MonoProfiler));
+       prof = (MonoProfiler *)calloc (1, sizeof (MonoProfiler));
 
        prof->command_port = command_port;
        if (filename && *filename == '-') {
@@ -4280,7 +4291,7 @@ create_profiler (const char *filename, GPtrArray *filters)
                nf = new_filename (filename);
                if (do_report) {
                        int s = strlen (nf) + 32;
-                       char *p = malloc (s);
+                       char *p = (char *)malloc (s);
                        snprintf (p, s, "|mprof-report '--out=%s' -", nf);
                        free (nf);
                        nf = p;
@@ -4333,7 +4344,7 @@ create_profiler (const char *filename, GPtrArray *filters)
 #endif
 
        mono_lock_free_queue_init (&prof->writer_queue);
-       mono_mutex_init (&prof->method_table_mutex);
+       mono_os_mutex_init (&prof->method_table_mutex);
        prof->method_table = mono_conc_hashtable_new (NULL, NULL);
 
        if (do_coverage)
@@ -4393,7 +4404,7 @@ match_option (const char* p, const char *opt, char **rval)
                                } else {
                                        l = end - opt;
                                }
-                               val = malloc (l + 1);
+                               val = (char *)malloc (l + 1);
                                memcpy (val, opt, l);
                                val [l] = 0;
                                *rval = val;
@@ -4727,7 +4738,7 @@ mono_profiler_startup (const char *desc)
        mono_profiler_install_context (context_loaded, context_unloaded);
        mono_profiler_install_class (NULL, class_loaded, NULL, class_unloaded);
        mono_profiler_install_module (NULL, image_loaded, NULL, image_unloaded);
-       mono_profiler_install_assembly (NULL, assembly_loaded, NULL, assembly_unloaded);
+       mono_profiler_install_assembly (NULL, assembly_loaded, assembly_unloaded, NULL);
        mono_profiler_install_thread (thread_start, thread_end);
        mono_profiler_install_thread_name (thread_name);
        mono_profiler_install_enter_leave (method_enter, method_leave);
@@ -4745,7 +4756,7 @@ mono_profiler_startup (const char *desc)
                mono_profiler_install_statistical (mono_sample_hit);
        }
 
-       mono_profiler_set_events (events);
+       mono_profiler_set_events ((MonoProfileFlags)events);
 
        TLS_INIT (tlsbuffer);
        TLS_INIT (tlsmethodlist);
index 42946608efb263103d2e66368fcabd2c3b76c1ee..fc29b43b26003bb59b2ef5a317daec5066aa38f7 100755 (executable)
@@ -180,7 +180,7 @@ sub emit_nunit_report
        } else {
                $successbool = "True";
        }
-       open (my $nunitxml, '>', 'TestResults_profiler.xml') or die "Could not write to 'TestResults_profiler.xml' $!";
+       open (my $nunitxml, '>', 'TestResult-profiler.xml') or die "Could not write to 'TestResult-profiler.xml' $!";
        print $nunitxml "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n";
        print $nunitxml "<!--This file represents the results of running a test suite-->\n";
        print $nunitxml "<test-results name=\"profiler-tests.dummy\" total=\"$total\" failures=\"$failed\" not-run=\"0\" date=\"" . strftime ("%F", localtime) . "\" time=\"" . strftime ("%T", localtime) . "\">\n";
index 6b8a1a3dda85bab21a230052341e579d1f390806..a609c69d86fdb5e8185662c48775eea22ce5bb87 100644 (file)
@@ -67,7 +67,7 @@ typedef enum {
 
 #define MONO_GC_HANDLE_TYPE_SHIFT (3)
 #define MONO_GC_HANDLE_TYPE_MASK ((1 << MONO_GC_HANDLE_TYPE_SHIFT) - 1)
-#define MONO_GC_HANDLE_TYPE(x) (((x) & MONO_GC_HANDLE_TYPE_MASK) - 1)
+#define MONO_GC_HANDLE_TYPE(x) ((GCHandleType)(((x) & MONO_GC_HANDLE_TYPE_MASK) - 1))
 #define MONO_GC_HANDLE_SLOT(x) ((x) >> MONO_GC_HANDLE_TYPE_SHIFT)
 #define MONO_GC_HANDLE_TYPE_IS_WEAK(x) ((x) <= HANDLE_WEAK_TRACK)
 #define MONO_GC_HANDLE(slot, type) (((slot) << MONO_GC_HANDLE_TYPE_SHIFT) | (((type) & MONO_GC_HANDLE_TYPE_MASK) + 1))
index 413388810f8b4ec8053fe82bd6acd65f235a9af1..ca9d645e6aa78922de22b7aa2fa896e3eb7fbfa3 100644 (file)
@@ -196,7 +196,7 @@ sgen_alloc_obj_nolock (GCVTable vtable, size_t size)
         */
 
        if (real_size > SGEN_MAX_SMALL_OBJ_SIZE) {
-               p = sgen_los_alloc_large_inner (vtable, ALIGN_UP (real_size));
+               p = (void **)sgen_los_alloc_large_inner (vtable, ALIGN_UP (real_size));
        } else {
                /* tlab_next and tlab_temp_end are TLS vars so accessing them might be expensive */
 
@@ -252,7 +252,7 @@ sgen_alloc_obj_nolock (GCVTable vtable, size_t size)
                        available_in_tlab = (int)(TLAB_REAL_END - TLAB_NEXT);//We'll never have tlabs > 2Gb
                        if (size > tlab_size || available_in_tlab > SGEN_MAX_NURSERY_WASTE) {
                                /* Allocate directly from the nursery */
-                               p = sgen_nursery_alloc (size);
+                               p = (void **)sgen_nursery_alloc (size);
                                if (!p) {
                                        /*
                                         * We couldn't allocate from the nursery, so we try
@@ -273,7 +273,7 @@ sgen_alloc_obj_nolock (GCVTable vtable, size_t size)
                                         */
                                        sgen_ensure_free_space (real_size);
                                        if (!degraded_mode)
-                                               p = sgen_nursery_alloc (size);
+                                               p = (void **)sgen_nursery_alloc (size);
                                }
                                if (!p)
                                        return alloc_degraded (vtable, size, FALSE);
@@ -285,12 +285,12 @@ sgen_alloc_obj_nolock (GCVTable vtable, size_t size)
                                        SGEN_LOG (3, "Retire TLAB: %p-%p [%ld]", TLAB_START, TLAB_REAL_END, (long)(TLAB_REAL_END - TLAB_NEXT - size));
                                sgen_nursery_retire_region (p, available_in_tlab);
 
-                               p = sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
+                               p = (void **)sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
                                if (!p) {
                                        /* See comment above in similar case. */
                                        sgen_ensure_free_space (tlab_size);
                                        if (!degraded_mode)
-                                               p = sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
+                                               p = (void **)sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
                                }
                                if (!p)
                                        return alloc_degraded (vtable, size, FALSE);
@@ -304,7 +304,7 @@ sgen_alloc_obj_nolock (GCVTable vtable, size_t size)
                                zero_tlab_if_necessary (TLAB_START, alloc_size);
 
                                /* Allocate from the TLAB */
-                               p = (void*)TLAB_NEXT;
+                               p = (void **)TLAB_NEXT;
                                TLAB_NEXT += size;
                                sgen_set_nursery_scan_start ((char*)p);
                        }
@@ -349,7 +349,7 @@ sgen_try_alloc_obj_nolock (GCVTable vtable, size_t size)
 
        if (G_UNLIKELY (size > tlab_size)) {
                /* Allocate directly from the nursery */
-               p = sgen_nursery_alloc (size);
+               p = (void **)sgen_nursery_alloc (size);
                if (!p)
                        return NULL;
                sgen_set_nursery_scan_start ((char*)p);
@@ -380,7 +380,7 @@ sgen_try_alloc_obj_nolock (GCVTable vtable, size_t size)
                        }
                } else if (available_in_tlab > SGEN_MAX_NURSERY_WASTE) {
                        /* Allocate directly from the nursery */
-                       p = sgen_nursery_alloc (size);
+                       p = (void **)sgen_nursery_alloc (size);
                        if (!p)
                                return NULL;
 
@@ -389,7 +389,7 @@ sgen_try_alloc_obj_nolock (GCVTable vtable, size_t size)
                        size_t alloc_size = 0;
 
                        sgen_nursery_retire_region (p, available_in_tlab);
-                       new_next = sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
+                       new_next = (char *)sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
                        p = (void**)new_next;
                        if (!p)
                                return NULL;
@@ -478,7 +478,7 @@ sgen_alloc_obj_pinned (GCVTable vtable, size_t size)
 
        if (size > SGEN_MAX_SMALL_OBJ_SIZE) {
                /* large objects are always pinned anyway */
-               p = sgen_los_alloc_large_inner (vtable, size);
+               p = (GCObject *)sgen_los_alloc_large_inner (vtable, size);
        } else {
                SGEN_ASSERT (9, sgen_client_vtable_is_inited (vtable), "class %s:%s is not initialized", sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable));
                p = major_collector.alloc_small_pinned_obj (vtable, size, SGEN_VTABLE_HAS_REFERENCES (vtable));
@@ -554,9 +554,6 @@ sgen_init_allocator (void)
 
        mono_tls_key_set_offset (TLS_KEY_SGEN_TLAB_NEXT_ADDR, tlab_next_addr_offset);
        mono_tls_key_set_offset (TLS_KEY_SGEN_TLAB_TEMP_END, tlab_temp_end_offset);
-
-       g_assert (tlab_next_addr_offset != -1);
-       g_assert (tlab_temp_end_offset != -1);
 #endif
 
 #ifdef HEAVY_STATISTICS
index fb18def266d4bd4441db6466c5f782c4bd2b80d9..b6e9479f1479e6a7f65a4acbd2433b470ed9dee1 100644 (file)
@@ -86,8 +86,8 @@ sgen_card_table_wbarrier_set_field (GCObject *obj, gpointer field_ptr, GCObject*
 static void
 sgen_card_table_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int count)
 {
-       gpointer *dest = dest_ptr;
-       gpointer *src = src_ptr;
+       gpointer *dest = (gpointer *)dest_ptr;
+       gpointer *src = (gpointer *)src_ptr;
 
        /*overlapping that required backward copying*/
        if (src < dest && (src + count) > dest) {
@@ -247,7 +247,7 @@ sgen_card_table_mark_range (mword address, mword size)
        SGEN_ASSERT (0, num_cards <= CARD_COUNT_IN_BYTES, "How did we get an object larger than the card table?");
        if (end > SGEN_CARDTABLE_END) {
                memset (start, 1, SGEN_CARDTABLE_END - start);
-               memset (sgen_cardtable, 1, end - sgen_cardtable);
+               memset (sgen_cardtable, 1, end - SGEN_CARDTABLE_END);
                return;
        }
 #endif
@@ -284,7 +284,7 @@ sgen_card_table_find_address (char *addr)
 static gboolean
 sgen_card_table_find_address_with_cards (char *cards_start, guint8 *cards, char *addr)
 {
-       cards_start = sgen_card_table_align_pointer (cards_start);
+       cards_start = (char *)sgen_card_table_align_pointer (cards_start);
        return cards [(addr - cards_start) >> CARD_BITS];
 }
 
@@ -292,15 +292,18 @@ static void
 update_mod_union (guint8 *dest, guint8 *start_card, size_t num_cards)
 {
        int i;
-       for (i = 0; i < num_cards; ++i)
-               dest [i] |= start_card [i];
+       /* Marking from another thread can happen while we mark here */
+       for (i = 0; i < num_cards; ++i) {
+               if (start_card [i])
+                       dest [i] = 1;
+       }
 }
 
 guint8*
 sgen_card_table_alloc_mod_union (char *obj, mword obj_size)
 {
        size_t num_cards = sgen_card_table_number_of_cards_in_range ((mword) obj, obj_size);
-       guint8 *mod_union = sgen_alloc_internal_dynamic (num_cards, INTERNAL_MEM_CARDTABLE_MOD_UNION, TRUE);
+       guint8 *mod_union = (guint8 *)sgen_alloc_internal_dynamic (num_cards, INTERNAL_MEM_CARDTABLE_MOD_UNION, TRUE);
        memset (mod_union, 0, num_cards);
        return mod_union;
 }
@@ -570,10 +573,10 @@ sgen_card_tables_collect_stats (gboolean begin)
 void
 sgen_card_table_init (SgenRememberedSet *remset)
 {
-       sgen_cardtable = sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "card table");
+       sgen_cardtable = (guint8 *)sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, (SgenAllocFlags)(SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE), "card table");
 
 #ifdef SGEN_HAVE_OVERLAPPING_CARDS
-       sgen_shadow_cardtable = sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "shadow card table");
+       sgen_shadow_cardtable = (guint8 *)sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, (SgenAllocFlags)(SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE), "shadow card table");
 #endif
 
 #ifdef HEAVY_STATISTICS
index 368ec5a6d3be6fed582712f113fe1289b69755a6..5a0e871e22fecc779083f53fea42bc4945f6849a 100644 (file)
@@ -185,6 +185,17 @@ typedef mword SgenDescriptor;
 #define SGEN_MIN_ALLOWANCE_NURSERY_SIZE_RATIO 1.0
 #define SGEN_MAX_ALLOWANCE_NURSERY_SIZE_RATIO 10.0
 
+/*
+ * How much more we allow the heap to grow before triggering another major collection
+ */
+#define SGEN_DEFAULT_ALLOWANCE_HEAP_SIZE_RATIO 0.33
+
+/*
+ * How much more we allow the heap to grow, relative to the allowance, while doing
+ * a concurrent collection, before forcing its finish.
+ */
+#define SGEN_DEFAULT_CONCURRENT_HEAP_ALLOWANCE_RATIO 0.25
+
 /*
  * Default ratio of memory we want to release in a major collection in relation to the the current heap size.
  *
index 847269d5d72b575174d6366fd6236e8652b6dc7b..2b7bc60670a3751b20566b5c35f100d1b0d8ecf8 100644 (file)
@@ -50,15 +50,15 @@ par_copy_object_no_checks (char *destination, GCVTable vt, void *obj, mword objs
        obj = destination;
        if (queue) {
                SGEN_LOG (9, "Enqueuing gray object %p (%s)", obj, sgen_client_vtable_get_name (vt));
-               GRAY_OBJECT_ENQUEUE (queue, obj, sgen_vtable_get_descriptor (vt));
+               GRAY_OBJECT_ENQUEUE (queue, (GCObject *)obj, sgen_vtable_get_descriptor (vt));
        }
 }
 
 /*
  * This can return OBJ itself on OOM.
  */
-static MONO_NEVER_INLINE void*
-copy_object_no_checks (void *obj, SgenGrayQueue *queue)
+static MONO_NEVER_INLINE GCObject *
+copy_object_no_checks (GCObject *obj, SgenGrayQueue *queue)
 {
        GCVTable vt = SGEN_LOAD_VTABLE_UNCHECKED (obj);
        gboolean has_references = SGEN_VTABLE_HAS_REFERENCES (vt);
@@ -76,11 +76,11 @@ copy_object_no_checks (void *obj, SgenGrayQueue *queue)
        if (!has_references)
                queue = NULL;
 
-       par_copy_object_no_checks (destination, vt, obj, objsize, queue);
+       par_copy_object_no_checks ((char *)destination, vt, obj, objsize, queue);
        /* FIXME: mark mod union cards if necessary */
 
        /* set the forwarding pointer */
        SGEN_FORWARD_OBJECT (obj, destination);
 
-       return destination;
+       return (GCObject *)destination;
 }
index 79e23ed453bea3003b1ed3947e7fdc786770ec73..a7f61cc8f4eacc5a7ee0f731b0e4ed434193d3a5 100644 (file)
@@ -113,7 +113,7 @@ describe_pointer (char *ptr, gboolean need_setup)
        if (object_is_pinned (ptr))
                printf ("Object is pinned.\n");
 
-       if ((forwarded = object_is_forwarded (ptr))) {
+       if ((forwarded = (char *)object_is_forwarded (ptr))) {
                printf ("Object is forwarded to %p:\n", forwarded);
                ptr = forwarded;
                goto restart;
@@ -334,7 +334,7 @@ static void
 setup_valid_nursery_objects (void)
 {
        if (!valid_nursery_objects)
-               valid_nursery_objects = sgen_alloc_os_memory (DEFAULT_NURSERY_SIZE, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "debugging data");
+               valid_nursery_objects = (GCObject **)sgen_alloc_os_memory (DEFAULT_NURSERY_SIZE, (SgenAllocFlags)(SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE), "debugging data");
        valid_nursery_object_count = 0;
        sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data, setup_mono_sgen_scan_area_with_callback, NULL, FALSE, FALSE);
 }
@@ -542,7 +542,7 @@ find_pinning_reference (char *obj, size_t size)
        RootRecord *root;
        char *endobj = obj + size;
 
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_NORMAL], start, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_NORMAL], char **, start, RootRecord *, root) {
                /* if desc is non-null it has precise info */
                if (!root->root_desc) {
                        while (start < (char**)root->end_root) {
@@ -786,7 +786,7 @@ scan_roots_for_specific_ref (GCObject *key, int root_type)
        RootRecord *root;
        check_key = key;
 
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], void **, start_root, RootRecord *, root) {
                SgenDescriptor desc = root->root_desc;
 
                check_root = root;
@@ -796,13 +796,13 @@ scan_roots_for_specific_ref (GCObject *key, int root_type)
                        desc >>= ROOT_DESC_TYPE_SHIFT;
                        while (desc) {
                                if (desc & 1)
-                                       check_root_obj_specific_ref (root, key, *start_root);
+                                       check_root_obj_specific_ref (root, key, (GCObject *)*start_root);
                                desc >>= 1;
                                start_root++;
                        }
                        return;
                case ROOT_DESC_COMPLEX: {
-                       gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
+                       gsize *bitmap_data = (gsize *)sgen_get_complex_descriptor_bitmap (desc);
                        int bwords = (int) ((*bitmap_data) - 1);
                        void **start_run = start_root;
                        bitmap_data++;
@@ -811,7 +811,7 @@ scan_roots_for_specific_ref (GCObject *key, int root_type)
                                void **objptr = start_run;
                                while (bmap) {
                                        if (bmap & 1)
-                                               check_root_obj_specific_ref (root, key, *objptr);
+                                               check_root_obj_specific_ref (root, key, (GCObject *)*objptr);
                                        bmap >>= 1;
                                        ++objptr;
                                }
@@ -853,9 +853,9 @@ mono_gc_scan_for_specific_ref (GCObject *key, gboolean precise)
        scan_roots_for_specific_ref (key, ROOT_TYPE_NORMAL);
        scan_roots_for_specific_ref (key, ROOT_TYPE_WBARRIER);
 
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_PINNED], ptr, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_PINNED], void **, ptr, RootRecord *, root) {
                while (ptr < (void**)root->end_root) {
-                       check_root_obj_specific_ref (root, *ptr, key);
+                       check_root_obj_specific_ref (root, (GCObject *)*ptr, key);
                        ++ptr;
                }
        } SGEN_HASH_TABLE_FOREACH_END;
@@ -887,7 +887,7 @@ sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type)
        void **start_root;
        RootRecord *root;
        check_domain = domain;
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], void **, start_root, RootRecord *, root) {
                SgenDescriptor desc = root->root_desc;
 
                /* The MonoDomain struct is allowed to hold
@@ -900,13 +900,13 @@ sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type)
                        desc >>= ROOT_DESC_TYPE_SHIFT;
                        while (desc) {
                                if ((desc & 1) && *start_root)
-                                       check_obj_not_in_domain (*start_root);
+                                       check_obj_not_in_domain ((MonoObject **)*start_root);
                                desc >>= 1;
                                start_root++;
                        }
                        break;
                case ROOT_DESC_COMPLEX: {
-                       gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
+                       gsize *bitmap_data = (gsize *)sgen_get_complex_descriptor_bitmap (desc);
                        int bwords = (int)((*bitmap_data) - 1);
                        void **start_run = start_root;
                        bitmap_data++;
@@ -915,7 +915,7 @@ sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type)
                                void **objptr = start_run;
                                while (bmap) {
                                        if ((bmap & 1) && *objptr)
-                                               check_obj_not_in_domain (*objptr);
+                                               check_obj_not_in_domain ((MonoObject **)*objptr);
                                        bmap >>= 1;
                                        ++objptr;
                                }
@@ -985,7 +985,7 @@ check_reference_for_xdomain (GCObject **ptr, GCObject *obj, MonoDomain *domain)
 {
        MonoObject *ref = *ptr;
        size_t offset = (char*)(ptr) - (char*)obj;
-       MonoClass *class;
+       MonoClass *klass;
        MonoClassField *field;
        char *str;
 
@@ -995,12 +995,12 @@ check_reference_for_xdomain (GCObject **ptr, GCObject *obj, MonoDomain *domain)
                return;
 
        field = NULL;
-       for (class = obj->vtable->klass; class; class = class->parent) {
+       for (klass = obj->vtable->klass; klass; klass = klass->parent) {
                int i;
 
-               for (i = 0; i < class->field.count; ++i) {
-                       if (class->fields[i].offset == offset) {
-                               field = &class->fields[i];
+               for (i = 0; i < klass->field.count; ++i) {
+                       if (klass->fields[i].offset == offset) {
+                               field = &klass->fields[i];
                                break;
                        }
                }
@@ -1113,7 +1113,7 @@ dump_object (GCObject *obj, gboolean dump_location)
 #ifndef SGEN_WITHOUT_MONO
        static char class_name [1024];
 
-       MonoClass *class = mono_object_class (obj);
+       MonoClass *klass = mono_object_class (obj);
        int i, j;
 
        /*
@@ -1121,16 +1121,16 @@ dump_object (GCObject *obj, gboolean dump_location)
         * in strings, so we just ignore them;
         */
        i = j = 0;
-       while (class->name [i] && j < sizeof (class_name) - 1) {
-               if (!strchr ("<>\"", class->name [i]))
-                       class_name [j++] = class->name [i];
+       while (klass->name [i] && j < sizeof (class_name) - 1) {
+               if (!strchr ("<>\"", klass->name [i]))
+                       class_name [j++] = klass->name [i];
                ++i;
        }
        g_assert (j < sizeof (class_name));
        class_name [j] = 0;
 
        fprintf (heap_dump_file, "<object class=\"%s.%s\" size=\"%zd\"",
-                       class->name_space, class_name,
+                       klass->name_space, class_name,
                        safe_object_get_size (obj));
        if (dump_location) {
                const char *location;
@@ -1181,7 +1181,7 @@ sgen_debug_dump_heap (const char *type, int num, const char *reason)
        fprintf (heap_dump_file, "<pinned-objects>\n");
        pinned_objects = sgen_pin_stats_get_object_list ();
        for (i = 0; i < pinned_objects->next_slot; ++i)
-               dump_object (pinned_objects->data [i], TRUE);
+               dump_object ((GCObject *)pinned_objects->data [i], TRUE);
        fprintf (heap_dump_file, "</pinned-objects>\n");
 
        sgen_dump_section (nursery_section, "nursery");
@@ -1201,7 +1201,7 @@ static GCObject *found_obj;
 static void
 find_object_for_ptr_callback (GCObject *obj, size_t size, void *user_data)
 {
-       char *ptr = user_data;
+       char *ptr = (char *)user_data;
 
        if (ptr >= (char*)obj && ptr < (char*)obj + size) {
                g_assert (!found_obj);
index 1cae87f4bc201ba3fe8ba2810bedc3bf87a94910..177ba02c8745981eb62ba9ea08f94399681d09d6 100644 (file)
@@ -95,7 +95,7 @@ alloc_complex_descriptor (gsize *bitmap, int numbits)
        }
        if (complex_descriptors_next + nwords > complex_descriptors_size) {
                int new_size = complex_descriptors_size * 2 + nwords;
-               complex_descriptors = g_realloc (complex_descriptors, new_size * sizeof (gsize));
+               complex_descriptors = (gsize *)g_realloc (complex_descriptors, new_size * sizeof (gsize));
                complex_descriptors_size = new_size;
        }
        SGEN_LOG (6, "Complex descriptor %d, size: %d (total desc memory: %d)", res, nwords, complex_descriptors_size);
@@ -293,7 +293,7 @@ mono_gc_make_root_descr_all_refs (int numbits)
        if (numbits < 32 && all_ref_root_descrs [numbits])
                return all_ref_root_descrs [numbits];
 
-       gc_bitmap = g_malloc0 (ALIGN_TO (ALIGN_TO (numbits, 8) + 1, sizeof (gsize)));
+       gc_bitmap = (gsize *)g_malloc0 (ALIGN_TO (ALIGN_TO (numbits, 8) + 1, sizeof (gsize)));
        memset (gc_bitmap, 0xff, num_bytes);
        if (numbits < ((sizeof (*gc_bitmap) * 8) - ROOT_DESC_TYPE_SHIFT)) 
                gc_bitmap[0] = GUINT64_TO_LE(gc_bitmap[0]);
index 9641594483eec65cc456942dfaf37e235916ea16..a8ffed926faca04cd3ac14f5d3138eb7a47b78b1 100644 (file)
@@ -121,7 +121,7 @@ sgen_collect_bridge_objects (int generation, ScanCopyContext ctx)
        if (no_finalize)
                return;
 
-       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
+       SGEN_HASH_TABLE_FOREACH (hash_table, GCObject *, object, gpointer, dummy) {
                int tag = tagged_object_get_tag (object);
                object = tagged_object_get_object (object);
 
@@ -191,7 +191,7 @@ sgen_finalize_in_range (int generation, ScanCopyContext ctx)
 
        if (no_finalize)
                return;
-       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
+       SGEN_HASH_TABLE_FOREACH (hash_table, GCObject *, object, gpointer, dummy) {
                int tag = tagged_object_get_tag (object);
                object = tagged_object_get_object (object);
                if (!major_collector.is_object_live (object)) {
@@ -578,7 +578,7 @@ finalizers_with_predicate (SgenObjectPredicateFunc predicate, void *user_data, G
        if (no_finalize || !out_size || !out_array)
                return 0;
        count = 0;
-       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
+       SGEN_HASH_TABLE_FOREACH (hash_table, GCObject *, object, gpointer, dummy) {
                object = tagged_object_get_object (object);
 
                if (predicate (object, user_data)) {
@@ -634,7 +634,7 @@ sgen_remove_finalizers_if (SgenObjectPredicateFunc predicate, void *user_data, i
        GCObject *object;
        gpointer dummy G_GNUC_UNUSED;
 
-       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
+       SGEN_HASH_TABLE_FOREACH (hash_table, GCObject *, object, gpointer, dummy) {
                object = tagged_object_get_object (object);
 
                if (predicate (object, user_data)) {
index 18960bbc1ca447786f2f24d84b13de226316ca37..b73c1d88ff1d2d1330fccfa95dd7c106ee86724c 100644 (file)
@@ -239,12 +239,6 @@ static gboolean do_concurrent_checks = FALSE;
    each collection */
 static gboolean do_scan_starts_check = FALSE;
 
-/*
- * If the major collector is concurrent and this is FALSE, we will
- * never initiate a synchronous major collection, unless requested via
- * GC.Collect().
- */
-static gboolean allow_synchronous_major = TRUE;
 static gboolean disable_minor_collections = FALSE;
 static gboolean disable_major_collections = FALSE;
 static gboolean do_verify_nursery = FALSE;
@@ -346,7 +340,7 @@ nursery_canaries_enabled (void)
  * ########  Global data.
  * ######################################################################
  */
-LOCK_DECLARE (gc_mutex);
+MonoCoopMutex gc_mutex;
 gboolean sgen_try_free_some_memory;
 
 #define SCAN_START_SIZE        SGEN_SCAN_START_SIZE
@@ -359,7 +353,7 @@ GCMemSection *nursery_section = NULL;
 static volatile mword lowest_heap_address = ~(mword)0;
 static volatile mword highest_heap_address = 0;
 
-LOCK_DECLARE (sgen_interruption_mutex);
+MonoCoopMutex sgen_interruption_mutex;
 
 int current_collection_generation = -1;
 static volatile gboolean concurrent_collection_in_progress = FALSE;
@@ -444,7 +438,7 @@ gray_queue_redirect (SgenGrayQueue *queue)
                GrayQueueSection *section = sgen_gray_object_dequeue_section (queue);
                if (!section)
                        break;
-               sgen_section_gray_queue_enqueue (queue->alloc_prepare_data, section);
+               sgen_section_gray_queue_enqueue ((SgenSectionGrayQueue *)queue->alloc_prepare_data, section);
                wake = TRUE;
        }
 
@@ -477,7 +471,7 @@ sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc
                }
 
                if (allow_flags) {
-                       if (!(obj = SGEN_OBJECT_IS_FORWARDED (start)))
+                       if (!(obj = (char *)SGEN_OBJECT_IS_FORWARDED (start)))
                                obj = start;
                } else {
                        obj = start;
@@ -506,7 +500,7 @@ sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc
  * lock must be held.  For serial collectors that is not necessary.
  */
 void
-sgen_add_to_global_remset (gpointer ptr, gpointer obj)
+sgen_add_to_global_remset (gpointer ptr, GCObject *obj)
 {
        SGEN_ASSERT (5, sgen_ptr_in_nursery (obj), "Target pointer of global remset must be in the nursery");
 
@@ -539,30 +533,25 @@ sgen_add_to_global_remset (gpointer ptr, gpointer obj)
  * frequently after each object is copied, to achieve better locality and cache
  * usage.
  *
- * max_objs is the maximum number of objects to scan, or -1 to scan until the stack is
- * empty.
  */
 gboolean
-sgen_drain_gray_stack (int max_objs, ScanCopyContext ctx)
+sgen_drain_gray_stack (ScanCopyContext ctx)
 {
        ScanObjectFunc scan_func = ctx.ops->scan_object;
        GrayQueue *queue = ctx.queue;
 
-       if (current_collection_generation == GENERATION_OLD && major_collector.drain_gray_stack)
-               return major_collector.drain_gray_stack (ctx);
+       if (ctx.ops->drain_gray_stack)
+               return ctx.ops->drain_gray_stack (queue);
 
-       do {
-               int i;
-               for (i = 0; i != max_objs; ++i) {
-                       GCObject *obj;
-                       SgenDescriptor desc;
-                       GRAY_OBJECT_DEQUEUE (queue, &obj, &desc);
-                       if (!obj)
-                               return TRUE;
-                       SGEN_LOG (9, "Precise gray object scan %p (%s)", obj, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (obj)));
-                       scan_func (obj, desc, queue);
-               }
-       } while (max_objs < 0);
+       for (;;) {
+               GCObject *obj;
+               SgenDescriptor desc;
+               GRAY_OBJECT_DEQUEUE (queue, &obj, &desc);
+               if (!obj)
+                       return TRUE;
+               SGEN_LOG (9, "Precise gray object scan %p (%s)", obj, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (obj)));
+               scan_func (obj, desc, queue);
+       }
        return FALSE;
 }
 
@@ -873,7 +862,7 @@ pin_from_roots (void *start_nursery, void *end_nursery, ScanCopyContext ctx)
        RootRecord *root;
        SGEN_LOG (2, "Scanning pinned roots (%d bytes, %d/%d entries)", (int)roots_size, roots_hash [ROOT_TYPE_NORMAL].num_entries, roots_hash [ROOT_TYPE_PINNED].num_entries);
        /* objects pinned from the API are inside these roots */
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_PINNED], start_root, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_PINNED], void **, start_root, RootRecord *, root) {
                SGEN_LOG (6, "Pinned roots %p-%p", start_root, root->end_root);
                sgen_conservatively_pin_objects_from (start_root, (void**)root->end_root, start_nursery, end_nursery, PIN_TYPE_OTHER);
        } SGEN_HASH_TABLE_FOREACH_END;
@@ -890,7 +879,7 @@ pin_from_roots (void *start_nursery, void *end_nursery, ScanCopyContext ctx)
 static void
 single_arg_user_copy_or_mark (GCObject **obj, void *gc_data)
 {
-       ScanCopyContext *ctx = gc_data;
+       ScanCopyContext *ctx = (ScanCopyContext *)gc_data;
        ctx->ops->copy_or_mark_object (obj, ctx->queue);
 }
 
@@ -921,7 +910,7 @@ precisely_scan_objects_from (void** start_root, void** end_root, char* n_start,
                }
                return;
        case ROOT_DESC_COMPLEX: {
-               gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
+               gsize *bitmap_data = (gsize *)sgen_get_complex_descriptor_bitmap (desc);
                gsize bwords = (*bitmap_data) - 1;
                void **start_run = start_root;
                bitmap_data++;
@@ -997,21 +986,21 @@ alloc_nursery (void)
         * objects in the existing nursery.
         */
        /* FIXME: handle OOM */
-       section = sgen_alloc_internal (INTERNAL_MEM_SECTION);
+       section = (GCMemSection *)sgen_alloc_internal (INTERNAL_MEM_SECTION);
 
        alloc_size = sgen_nursery_size;
 
        /* If there isn't enough space even for the nursery we should simply abort. */
        g_assert (sgen_memgov_try_alloc_space (alloc_size, SPACE_NURSERY));
 
-       data = major_collector.alloc_heap (alloc_size, alloc_size, DEFAULT_NURSERY_BITS);
+       data = (char *)major_collector.alloc_heap (alloc_size, alloc_size, DEFAULT_NURSERY_BITS);
        sgen_update_heap_boundaries ((mword)data, (mword)(data + sgen_nursery_size));
        SGEN_LOG (4, "Expanding nursery size (%p-%p): %lu, total: %lu", data, data + alloc_size, (unsigned long)sgen_nursery_size, (unsigned long)sgen_gc_get_total_heap_allocation ());
        section->data = section->next_data = data;
        section->size = alloc_size;
        section->end_data = data + sgen_nursery_size;
        scan_starts = (alloc_size + SCAN_START_SIZE - 1) / SCAN_START_SIZE;
-       section->scan_starts = sgen_alloc_internal_dynamic (sizeof (char*) * scan_starts, INTERNAL_MEM_SCAN_STARTS, TRUE);
+       section->scan_starts = (char **)sgen_alloc_internal_dynamic (sizeof (char*) * scan_starts, INTERNAL_MEM_SCAN_STARTS, TRUE);
        section->num_scan_start = scan_starts;
 
        nursery_section = section;
@@ -1033,7 +1022,7 @@ scan_finalizer_entries (SgenPointerQueue *fin_queue, ScanCopyContext ctx)
        size_t i;
 
        for (i = 0; i < fin_queue->next_slot; ++i) {
-               GCObject *obj = fin_queue->data [i];
+               GCObject *obj = (GCObject *)fin_queue->data [i];
                if (!obj)
                        continue;
                SGEN_LOG (5, "Scan of fin ready object: %p (%s)\n", obj, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (obj)));
@@ -1080,7 +1069,7 @@ finish_gray_stack (int generation, ScanCopyContext ctx)
         *   To achieve better cache locality and cache usage, we drain the gray stack 
         * frequently, after each object is copied, and just finish the work here.
         */
-       sgen_drain_gray_stack (-1, ctx);
+       sgen_drain_gray_stack (ctx);
        TV_GETTIME (atv);
        SGEN_LOG (2, "%s generation done", generation_name (generation));
 
@@ -1102,7 +1091,7 @@ finish_gray_stack (int generation, ScanCopyContext ctx)
        done_with_ephemerons = 0;
        do {
                done_with_ephemerons = sgen_client_mark_ephemerons (ctx);
-               sgen_drain_gray_stack (-1, ctx);
+               sgen_drain_gray_stack (ctx);
                ++ephemeron_rounds;
        } while (!done_with_ephemerons);
 
@@ -1110,7 +1099,7 @@ finish_gray_stack (int generation, ScanCopyContext ctx)
 
        if (sgen_client_bridge_need_processing ()) {
                /*Make sure the gray stack is empty before we process bridge objects so we get liveness right*/
-               sgen_drain_gray_stack (-1, ctx);
+               sgen_drain_gray_stack (ctx);
                sgen_collect_bridge_objects (generation, ctx);
                if (generation == GENERATION_OLD)
                        sgen_collect_bridge_objects (GENERATION_NURSERY, ctx);
@@ -1134,7 +1123,7 @@ finish_gray_stack (int generation, ScanCopyContext ctx)
        Make sure we drain the gray stack before processing disappearing links and finalizers.
        If we don't make sure it is empty we might wrongly see a live object as dead.
        */
-       sgen_drain_gray_stack (-1, ctx);
+       sgen_drain_gray_stack (ctx);
 
        /*
        We must clear weak links that don't track resurrection before processing object ready for
@@ -1155,7 +1144,7 @@ finish_gray_stack (int generation, ScanCopyContext ctx)
                sgen_finalize_in_range (GENERATION_NURSERY, ctx);
        /* drain the new stack that might have been created */
        SGEN_LOG (6, "Precise scan of gray area post fin");
-       sgen_drain_gray_stack (-1, ctx);
+       sgen_drain_gray_stack (ctx);
 
        /*
         * This must be done again after processing finalizable objects since CWL slots are cleared only after the key is finalized.
@@ -1163,7 +1152,7 @@ finish_gray_stack (int generation, ScanCopyContext ctx)
        done_with_ephemerons = 0;
        do {
                done_with_ephemerons = sgen_client_mark_ephemerons (ctx);
-               sgen_drain_gray_stack (-1, ctx);
+               sgen_drain_gray_stack (ctx);
                ++ephemeron_rounds;
        } while (!done_with_ephemerons);
 
@@ -1194,7 +1183,7 @@ finish_gray_stack (int generation, ScanCopyContext ctx)
                        sgen_null_link_in_range (GENERATION_NURSERY, ctx, TRUE);
                if (sgen_gray_object_queue_is_empty (queue))
                        break;
-               sgen_drain_gray_stack (-1, ctx);
+               sgen_drain_gray_stack (ctx);
        }
 
        g_assert (sgen_gray_object_queue_is_empty (queue));
@@ -1228,7 +1217,7 @@ scan_from_registered_roots (char *addr_start, char *addr_end, int root_type, Sca
 {
        void **start_root;
        RootRecord *root;
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], void **, start_root, RootRecord *, root) {
                SGEN_LOG (6, "Precise root scan %p-%p (desc: %p)", start_root, root->end_root, (void*)root->root_desc);
                precisely_scan_objects_from (start_root, (void**)root->end_root, addr_start, addr_end, root->root_desc, ctx);
        } SGEN_HASH_TABLE_FOREACH_END;
@@ -1336,7 +1325,7 @@ typedef struct {
 static void
 job_remembered_set_scan (void *worker_data_untyped, SgenThreadPoolJob *job)
 {
-       WorkerData *worker_data = worker_data_untyped;
+       WorkerData *worker_data = (WorkerData *)worker_data_untyped;
        ScanJob *job_data = (ScanJob*)job;
        ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
        remset.scan_remsets (ctx);
@@ -1353,7 +1342,7 @@ typedef struct {
 static void
 job_scan_from_registered_roots (void *worker_data_untyped, SgenThreadPoolJob *job)
 {
-       WorkerData *worker_data = worker_data_untyped;
+       WorkerData *worker_data = (WorkerData *)worker_data_untyped;
        ScanFromRegisteredRootsJob *job_data = (ScanFromRegisteredRootsJob*)job;
        ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
 
@@ -1370,7 +1359,7 @@ typedef struct {
 static void
 job_scan_thread_data (void *worker_data_untyped, SgenThreadPoolJob *job)
 {
-       WorkerData *worker_data = worker_data_untyped;
+       WorkerData *worker_data = (WorkerData *)worker_data_untyped;
        ScanThreadDataJob *job_data = (ScanThreadDataJob*)job;
        ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
 
@@ -1386,7 +1375,7 @@ typedef struct {
 static void
 job_scan_finalizer_entries (void *worker_data_untyped, SgenThreadPoolJob *job)
 {
-       WorkerData *worker_data = worker_data_untyped;
+       WorkerData *worker_data = (WorkerData *)worker_data_untyped;
        ScanFinalizerEntriesJob *job_data = (ScanFinalizerEntriesJob*)job;
        ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
 
@@ -1396,7 +1385,7 @@ job_scan_finalizer_entries (void *worker_data_untyped, SgenThreadPoolJob *job)
 static void
 job_scan_major_mod_union_card_table (void *worker_data_untyped, SgenThreadPoolJob *job)
 {
-       WorkerData *worker_data = worker_data_untyped;
+       WorkerData *worker_data = (WorkerData *)worker_data_untyped;
        ScanJob *job_data = (ScanJob*)job;
        ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
 
@@ -1407,7 +1396,7 @@ job_scan_major_mod_union_card_table (void *worker_data_untyped, SgenThreadPoolJo
 static void
 job_scan_los_mod_union_card_table (void *worker_data_untyped, SgenThreadPoolJob *job)
 {
-       WorkerData *worker_data = worker_data_untyped;
+       WorkerData *worker_data = (WorkerData *)worker_data_untyped;
        ScanJob *job_data = (ScanJob*)job;
        ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
 
@@ -1416,15 +1405,15 @@ job_scan_los_mod_union_card_table (void *worker_data_untyped, SgenThreadPoolJob
 }
 
 static void
-init_gray_queue (void)
+init_gray_queue (gboolean use_workers)
 {
-       if (sgen_collection_is_concurrent ())
+       if (use_workers)
                sgen_workers_init_distribute_gray_queue ();
        sgen_gray_object_queue_init (&gray_queue, NULL);
 }
 
 static void
-enqueue_scan_from_roots_jobs (char *heap_start, char *heap_end, SgenObjectOperations *ops)
+enqueue_scan_from_roots_jobs (char *heap_start, char *heap_end, SgenObjectOperations *ops, gboolean enqueue)
 {
        ScanFromRegisteredRootsJob *scrrj;
        ScanThreadDataJob *stdj;
@@ -1437,33 +1426,33 @@ enqueue_scan_from_roots_jobs (char *heap_start, char *heap_end, SgenObjectOperat
        scrrj->heap_start = heap_start;
        scrrj->heap_end = heap_end;
        scrrj->root_type = ROOT_TYPE_NORMAL;
-       sgen_workers_enqueue_job (&scrrj->job);
+       sgen_workers_enqueue_job (&scrrj->job, enqueue);
 
        scrrj = (ScanFromRegisteredRootsJob*)sgen_thread_pool_job_alloc ("scan from registered roots wbarrier", job_scan_from_registered_roots, sizeof (ScanFromRegisteredRootsJob));
        scrrj->ops = ops;
        scrrj->heap_start = heap_start;
        scrrj->heap_end = heap_end;
        scrrj->root_type = ROOT_TYPE_WBARRIER;
-       sgen_workers_enqueue_job (&scrrj->job);
+       sgen_workers_enqueue_job (&scrrj->job, enqueue);
 
        /* Threads */
 
        stdj = (ScanThreadDataJob*)sgen_thread_pool_job_alloc ("scan thread data", job_scan_thread_data, sizeof (ScanThreadDataJob));
        stdj->heap_start = heap_start;
        stdj->heap_end = heap_end;
-       sgen_workers_enqueue_job (&stdj->job);
+       sgen_workers_enqueue_job (&stdj->job, enqueue);
 
        /* Scan the list of objects ready for finalization. */
 
        sfej = (ScanFinalizerEntriesJob*)sgen_thread_pool_job_alloc ("scan finalizer entries", job_scan_finalizer_entries, sizeof (ScanFinalizerEntriesJob));
        sfej->queue = &fin_ready_queue;
        sfej->ops = ops;
-       sgen_workers_enqueue_job (&sfej->job);
+       sgen_workers_enqueue_job (&sfej->job, enqueue);
 
        sfej = (ScanFinalizerEntriesJob*)sgen_thread_pool_job_alloc ("scan critical finalizer entries", job_scan_finalizer_entries, sizeof (ScanFinalizerEntriesJob));
        sfej->queue = &critical_fin_queue;
        sfej->ops = ops;
-       sgen_workers_enqueue_job (&sfej->job);
+       sgen_workers_enqueue_job (&sfej->job, enqueue);
 }
 
 /*
@@ -1527,7 +1516,7 @@ collect_nursery (SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark)
 
        sgen_memgov_minor_collection_start ();
 
-       init_gray_queue ();
+       init_gray_queue (FALSE);
 
        gc_stats.minor_gc_count ++;
 
@@ -1565,7 +1554,7 @@ collect_nursery (SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark)
         */
        sj = (ScanJob*)sgen_thread_pool_job_alloc ("scan remset", job_remembered_set_scan, sizeof (ScanJob));
        sj->ops = object_ops;
-       sgen_workers_enqueue_job (&sj->job);
+       sgen_workers_enqueue_job (&sj->job, FALSE);
 
        /* we don't have complete write barrier yet, so we scan all the old generation sections */
        TV_GETTIME (btv);
@@ -1574,7 +1563,7 @@ collect_nursery (SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark)
 
        sgen_pin_stats_print_class_stats ();
 
-       sgen_drain_gray_stack (-1, ctx);
+       sgen_drain_gray_stack (ctx);
 
        /* FIXME: Why do we do this at this specific, seemingly random, point? */
        sgen_client_collecting_minor (&fin_ready_queue, &critical_fin_queue);
@@ -1582,7 +1571,7 @@ collect_nursery (SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark)
        TV_GETTIME (atv);
        time_minor_scan_pinned += TV_ELAPSED (btv, atv);
 
-       enqueue_scan_from_roots_jobs (sgen_get_nursery_start (), nursery_next, object_ops);
+       enqueue_scan_from_roots_jobs (sgen_get_nursery_start (), nursery_next, object_ops, FALSE);
 
        TV_GETTIME (btv);
        time_minor_scan_roots += TV_ELAPSED (atv, btv);
@@ -1691,7 +1680,7 @@ major_copy_or_mark_from_roots (size_t *old_next_pin_slot, CopyOrMarkFromRootsMod
                sgen_nursery_alloc_prepare_for_major ();
        }
 
-       init_gray_queue ();
+       init_gray_queue (mode == COPY_OR_MARK_FROM_ROOTS_START_CONCURRENT);
 
        TV_GETTIME (atv);
 
@@ -1789,10 +1778,15 @@ major_copy_or_mark_from_roots (size_t *old_next_pin_slot, CopyOrMarkFromRootsMod
         * before pinning has finished.  For the non-concurrent
         * collector we start the workers after pinning.
         */
-       if (mode != COPY_OR_MARK_FROM_ROOTS_SERIAL) {
+       if (mode == COPY_OR_MARK_FROM_ROOTS_START_CONCURRENT) {
                SGEN_ASSERT (0, sgen_workers_all_done (), "Why are the workers not done when we start or finish a major collection?");
                sgen_workers_start_all_workers (object_ops);
                gray_queue_enable_redirect (WORKERS_DISTRIBUTE_GRAY_QUEUE);
+       } else if (mode == COPY_OR_MARK_FROM_ROOTS_FINISH_CONCURRENT) {
+               if (sgen_workers_have_idle_work ()) {
+                       sgen_workers_start_all_workers (object_ops);
+                       sgen_workers_join ();
+               }
        }
 
 #ifdef SGEN_DEBUG_INTERNAL_ALLOC
@@ -1810,7 +1804,7 @@ major_copy_or_mark_from_roots (size_t *old_next_pin_slot, CopyOrMarkFromRootsMod
         * FIXME: is this the right context?  It doesn't seem to contain a copy function
         * unless we're concurrent.
         */
-       enqueue_scan_from_roots_jobs (heap_start, heap_end, object_ops);
+       enqueue_scan_from_roots_jobs (heap_start, heap_end, object_ops, mode == COPY_OR_MARK_FROM_ROOTS_START_CONCURRENT);
 
        TV_GETTIME (btv);
        time_major_scan_roots += TV_ELAPSED (atv, btv);
@@ -1821,11 +1815,11 @@ major_copy_or_mark_from_roots (size_t *old_next_pin_slot, CopyOrMarkFromRootsMod
                /* Mod union card table */
                sj = (ScanJob*)sgen_thread_pool_job_alloc ("scan mod union cardtable", job_scan_major_mod_union_card_table, sizeof (ScanJob));
                sj->ops = object_ops;
-               sgen_workers_enqueue_job (&sj->job);
+               sgen_workers_enqueue_job (&sj->job, FALSE);
 
                sj = (ScanJob*)sgen_thread_pool_job_alloc ("scan LOS mod union cardtable", job_scan_los_mod_union_card_table, sizeof (ScanJob));
                sj->ops = object_ops;
-               sgen_workers_enqueue_job (&sj->job);
+               sgen_workers_enqueue_job (&sj->job, FALSE);
 
                TV_GETTIME (atv);
                time_major_scan_mod_union += TV_ELAPSED (btv, atv);
@@ -1837,8 +1831,7 @@ major_copy_or_mark_from_roots (size_t *old_next_pin_slot, CopyOrMarkFromRootsMod
 static void
 major_finish_copy_or_mark (CopyOrMarkFromRootsMode mode)
 {
-       switch (mode) {
-       case COPY_OR_MARK_FROM_ROOTS_START_CONCURRENT:
+       if (mode == COPY_OR_MARK_FROM_ROOTS_START_CONCURRENT) {
                /*
                 * Prepare the pin queue for the next collection.  Since pinning runs on the worker
                 * threads we must wait for the jobs to finish before we can reset it.
@@ -1850,14 +1843,6 @@ major_finish_copy_or_mark (CopyOrMarkFromRootsMode mode)
 
                if (do_concurrent_checks)
                        sgen_debug_check_nursery_is_clean ();
-               break;
-       case COPY_OR_MARK_FROM_ROOTS_FINISH_CONCURRENT:
-               sgen_workers_wait_for_jobs_finished ();
-               break;
-       case COPY_OR_MARK_FROM_ROOTS_SERIAL:
-               break;
-       default:
-               g_assert_not_reached ();
        }
 }
 
@@ -1922,10 +1907,6 @@ major_finish_collection (const char *reason, size_t old_next_pin_slot, gboolean
 
                major_finish_copy_or_mark (COPY_OR_MARK_FROM_ROOTS_FINISH_CONCURRENT);
 
-               sgen_workers_join ();
-
-               SGEN_ASSERT (0, sgen_gray_object_queue_is_empty (&gray_queue), "Why is the gray queue not empty after workers have finished working?");
-
 #ifdef SGEN_DEBUG_INTERNAL_ALLOC
                main_gc_thread = NULL;
 #endif
@@ -1933,12 +1914,6 @@ major_finish_collection (const char *reason, size_t old_next_pin_slot, gboolean
                object_ops = &major_collector.major_ops_serial;
        }
 
-       /*
-        * The workers have stopped so we need to finish gray queue
-        * work that might result from finalization in the main GC
-        * thread.  Redirection must therefore be turned off.
-        */
-       sgen_gray_object_queue_disable_alloc_prepare (&gray_queue);
        g_assert (sgen_section_gray_queue_is_empty (sgen_workers_get_distribute_section_gray_queue ()));
 
        /* all the objects in the heap */
@@ -2148,12 +2123,11 @@ major_finish_concurrent_collection (gboolean forced)
        binary_protocol_concurrent_finish ();
 
        /*
-        * The major collector can add global remsets which are processed in the finishing
-        * nursery collection, below.  That implies that the workers must have finished
-        * marking before the nursery collection is allowed to run, otherwise we might miss
-        * some remsets.
+        * We need to stop all workers since we're updating the cardtable below.
+        * The workers will be resumed with a finishing pause context to avoid
+        * additional cardtable and object scanning.
         */
-       sgen_workers_wait ();
+       sgen_workers_stop_all_workers ();
 
        SGEN_TV_GETTIME (time_major_conc_collection_end);
        gc_stats.major_gc_time_concurrent += SGEN_TV_ELAPSED (time_major_conc_collection_start, time_major_conc_collection_end);
@@ -2200,7 +2174,7 @@ sgen_ensure_free_space (size_t size)
                                generation_to_collect = GENERATION_OLD;
                        }
                } else if (sgen_need_major_collection (size)) {
-                       reason = "Minor allowance";
+                       reason = concurrent_collection_in_progress ? "Forced finish concurrent collection" : "Minor allowance";
                        generation_to_collect = GENERATION_OLD;
                } else {
                        generation_to_collect = GENERATION_NURSERY;
@@ -2247,34 +2221,23 @@ sgen_perform_collection (size_t requested_size, int generation_to_collect, const
 
        if (concurrent_collection_in_progress) {
                /*
-                * We update the concurrent collection.  If it finished, we're done.  If
-                * not, and we've been asked to do a nursery collection, we do that.
+                * If the concurrent worker is finished or we are asked to do a major collection
+                * then we finish the concurrent collection.
                 */
-               gboolean finish = major_should_finish_concurrent_collection () || (wait_to_finish && generation_to_collect == GENERATION_OLD);
+               gboolean finish = major_should_finish_concurrent_collection () || generation_to_collect == GENERATION_OLD;
 
                if (finish) {
                        major_finish_concurrent_collection (wait_to_finish);
                        oldest_generation_collected = GENERATION_OLD;
                } else {
+                       SGEN_ASSERT (0, generation_to_collect == GENERATION_NURSERY, "Why aren't we finishing the concurrent collection?");
                        major_update_concurrent_collection ();
-                       if (generation_to_collect == GENERATION_NURSERY)
-                               collect_nursery (NULL, FALSE);
+                       collect_nursery (NULL, FALSE);
                }
 
                goto done;
        }
 
-       /*
-        * If we've been asked to do a major collection, and the major collector wants to
-        * run synchronously (to evacuate), we set the flag to do that.
-        */
-       if (generation_to_collect == GENERATION_OLD &&
-                       allow_synchronous_major &&
-                       major_collector.want_synchronous_collection &&
-                       *major_collector.want_synchronous_collection) {
-               wait_to_finish = TRUE;
-       }
-
        SGEN_ASSERT (0, !concurrent_collection_in_progress, "Why did this not get handled above?");
 
        /*
@@ -2469,11 +2432,11 @@ sgen_gc_invoke_finalizers (void)
                if (!sgen_pointer_queue_is_empty (&fin_ready_queue)) {
                        pending_unqueued_finalizer = TRUE;
                        mono_memory_write_barrier ();
-                       obj = sgen_pointer_queue_pop (&fin_ready_queue);
+                       obj = (GCObject *)sgen_pointer_queue_pop (&fin_ready_queue);
                } else if (!sgen_pointer_queue_is_empty (&critical_fin_queue)) {
                        pending_unqueued_finalizer = TRUE;
                        mono_memory_write_barrier ();
-                       obj = sgen_pointer_queue_pop (&critical_fin_queue);
+                       obj = (GCObject *)sgen_pointer_queue_pop (&critical_fin_queue);
                } else {
                        obj = NULL;
                }
@@ -2522,7 +2485,7 @@ sgen_register_root (char *start, size_t size, SgenDescriptor descr, int root_typ
        int i;
        LOCK_GC;
        for (i = 0; i < ROOT_TYPE_NUM; ++i) {
-               RootRecord *root = sgen_hash_table_lookup (&roots_hash [i], start);
+               RootRecord *root = (RootRecord *)sgen_hash_table_lookup (&roots_hash [i], start);
                /* we allow changing the size and the descriptor (for thread statics etc) */
                if (root) {
                        size_t old_size = root->end_root - start;
@@ -2683,7 +2646,7 @@ mono_gc_wbarrier_generic_store_atomic (gpointer ptr, GCObject *value)
 
        SGEN_LOG (8, "Wbarrier atomic store at %p to %p (%s)", ptr, value, value ? sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (value)) : "null");
 
-       InterlockedWritePointer (ptr, value);
+       InterlockedWritePointer ((volatile gpointer *)ptr, value);
 
        if (ptr_in_nursery (value) || concurrent_collection_in_progress)
                mono_gc_wbarrier_generic_nostore (ptr);
@@ -2694,8 +2657,8 @@ mono_gc_wbarrier_generic_store_atomic (gpointer ptr, GCObject *value)
 void
 sgen_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, unsigned bitmap)
 {
-       GCObject **dest = _dest;
-       GCObject **src = _src;
+       GCObject **dest = (GCObject **)_dest;
+       GCObject **src = (GCObject **)_src;
 
        while (size) {
                if (bitmap & 0x1)
@@ -2746,16 +2709,6 @@ sgen_gc_get_used_size (void)
        return tot;
 }
 
-gboolean
-sgen_set_allow_synchronous_major (gboolean flag)
-{
-       if (!major_collector.is_concurrent)
-               return flag;
-
-       allow_synchronous_major = flag;
-       return TRUE;
-}
-
 void
 sgen_env_var_error (const char *env_var, const char *fallback, const char *description_format, ...)
 {
@@ -2827,11 +2780,11 @@ sgen_gc_init (void)
        mono_thread_smr_init ();
 #endif
 
-       LOCK_INIT (gc_mutex);
+       mono_coop_mutex_init (&gc_mutex);
 
        gc_debug_file = stderr;
 
-       LOCK_INIT (sgen_interruption_mutex);
+       mono_coop_mutex_init (&sgen_interruption_mutex);
 
        if ((env = g_getenv (MONO_GC_PARAMS_NAME))) {
                opts = g_strsplit (env, ",", -1);
@@ -2972,23 +2925,6 @@ sgen_gc_init (void)
                                }
                                continue;
                        }
-                       if (g_str_has_prefix (opt, "allow-synchronous-major=")) {
-                               if (!major_collector.is_concurrent) {
-                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Ignoring.", "`allow-synchronous-major` is only valid for the concurrent major collector.");
-                                       continue;
-                               }
-
-                               opt = strchr (opt, '=') + 1;
-
-                               if (!strcmp (opt, "yes")) {
-                                       allow_synchronous_major = TRUE;
-                               } else if (!strcmp (opt, "no")) {
-                                       allow_synchronous_major = FALSE;
-                               } else {
-                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using default value.", "`allow-synchronous-major` must be either `yes' or `no'.");
-                                       continue;
-                               }
-                       }
 
                        if (!strcmp (opt, "cementing")) {
                                cement_enabled = TRUE;
@@ -3021,8 +2957,6 @@ sgen_gc_init (void)
                        fprintf (stderr, "  minor=COLLECTOR (where COLLECTOR is `simple' or `split')\n");
                        fprintf (stderr, "  wbarrier=WBARRIER (where WBARRIER is `remset' or `cardtable')\n");
                        fprintf (stderr, "  [no-]cementing\n");
-                       if (major_collector.is_concurrent)
-                               fprintf (stderr, "  allow-synchronous-major=FLAG (where FLAG is `yes' or `no')\n");
                        if (major_collector.print_gc_param_usage)
                                major_collector.print_gc_param_usage ();
                        if (sgen_minor_collector.print_gc_param_usage)
@@ -3133,7 +3067,7 @@ sgen_gc_init (void)
                        } else if (g_str_has_prefix (opt, "binary-protocol=")) {
                                char *filename = strchr (opt, '=') + 1;
                                char *colon = strrchr (filename, ':');
-                               size_t limit = -1;
+                               size_t limit = 0;
                                if (colon) {
                                        if (!mono_gc_parse_environment_string_extract_number (colon + 1, &limit)) {
                                                sgen_env_var_error (MONO_GC_DEBUG_NAME, "Ignoring limit.", "Binary protocol file size limit must be an integer.");
@@ -3211,7 +3145,7 @@ sgen_get_nursery_clear_policy (void)
 void
 sgen_gc_lock (void)
 {
-       LOCK_GC;
+       mono_coop_mutex_lock (&gc_mutex);
 }
 
 void
@@ -3219,7 +3153,7 @@ sgen_gc_unlock (void)
 {
        gboolean try_free = sgen_try_free_some_memory;
        sgen_try_free_some_memory = FALSE;
-       mono_mutex_unlock (&gc_mutex);
+       mono_coop_mutex_unlock (&gc_mutex);
        if (try_free)
                mono_thread_hazardous_try_free_some ();
 }
index 4cb4edf8bafe8ed5956e2a40c4f4cd72d332fad9..9e022e12ba902d4bac866957dc71ccbfe3c4c1e3 100644 (file)
@@ -39,7 +39,8 @@ typedef struct _SgenThreadInfo SgenThreadInfo;
 #include <stdint.h>
 #include "mono/utils/mono-compiler.h"
 #include "mono/utils/atomic.h"
-#include "mono/utils/mono-mutex.h"
+#include "mono/utils/mono-os-mutex.h"
+#include "mono/utils/mono-coop-mutex.h"
 #include "mono/sgen/sgen-conf.h"
 #include "mono/sgen/sgen-hash-table.h"
 #include "mono/sgen/sgen-protocol.h"
@@ -89,23 +90,14 @@ struct _GCMemSection {
 #define LOCK_DECLARE(name) mono_mutex_t name
 /* if changing LOCK_INIT to something that isn't idempotent, look at
    its use in mono_gc_base_init in sgen-gc.c */
-#define LOCK_INIT(name)        mono_mutex_init (&(name))
-#define LOCK_GC do {                                           \
-               MONO_TRY_BLOCKING       \
-               mono_mutex_lock (&gc_mutex);                    \
-               MONO_FINISH_TRY_BLOCKING        \
-       } while (0)
+#define LOCK_INIT(name)        mono_os_mutex_init (&(name))
+#define LOCK_GC do { sgen_gc_lock (); } while (0)
 #define UNLOCK_GC do { sgen_gc_unlock (); } while (0)
 
-extern LOCK_DECLARE (sgen_interruption_mutex);
-
-#define LOCK_INTERRUPTION do { \
-       MONO_TRY_BLOCKING       \
-       mono_mutex_lock (&sgen_interruption_mutex);     \
-       MONO_FINISH_TRY_BLOCKING        \
-} while (0)
+extern MonoCoopMutex sgen_interruption_mutex;
 
-#define UNLOCK_INTERRUPTION mono_mutex_unlock (&sgen_interruption_mutex)
+#define LOCK_INTERRUPTION mono_coop_mutex_lock (&sgen_interruption_mutex)
+#define UNLOCK_INTERRUPTION mono_coop_mutex_unlock (&sgen_interruption_mutex)
 
 /* FIXME: Use InterlockedAdd & InterlockedAdd64 to reduce the CAS cost. */
 #define SGEN_CAS       InterlockedCompareExchange
@@ -245,8 +237,8 @@ sgen_get_nursery_end (void)
 #define SGEN_POINTER_UNTAG_VTABLE(p)           SGEN_POINTER_UNTAG_ALL((p))
 
 /* returns NULL if not forwarded, or the forwarded address */
-#define SGEN_VTABLE_IS_FORWARDED(vtable) (SGEN_POINTER_IS_TAGGED_FORWARDED ((vtable)) ? SGEN_POINTER_UNTAG_VTABLE ((vtable)) : NULL)
-#define SGEN_OBJECT_IS_FORWARDED(obj) (SGEN_VTABLE_IS_FORWARDED (((mword*)(obj))[0]))
+#define SGEN_VTABLE_IS_FORWARDED(vtable) ((GCVTable *)(SGEN_POINTER_IS_TAGGED_FORWARDED ((vtable)) ? SGEN_POINTER_UNTAG_VTABLE ((vtable)) : NULL))
+#define SGEN_OBJECT_IS_FORWARDED(obj) ((GCObject *)SGEN_VTABLE_IS_FORWARDED (((mword*)(obj))[0]))
 
 #define SGEN_VTABLE_IS_PINNED(vtable) SGEN_POINTER_IS_TAGGED_PINNED ((vtable))
 #define SGEN_OBJECT_IS_PINNED(obj) (SGEN_VTABLE_IS_PINNED (((mword*)(obj))[0]))
@@ -272,7 +264,7 @@ sgen_get_nursery_end (void)
  * Since we set bits in the vtable, use the macro to load it from the pointer to
  * an object that is potentially pinned.
  */
-#define SGEN_LOAD_VTABLE(obj)          ((GCVTable)(SGEN_POINTER_UNTAG_ALL (SGEN_LOAD_VTABLE_UNCHECKED ((obj)))))
+#define SGEN_LOAD_VTABLE(obj)          ((GCVTable)(SGEN_POINTER_UNTAG_ALL (SGEN_LOAD_VTABLE_UNCHECKED ((GCObject *)(obj)))))
 
 /*
 List of what each bit on of the vtable gc bits means. 
@@ -411,11 +403,14 @@ gboolean sgen_is_worker_thread (MonoNativeThreadId thread);
 typedef void (*CopyOrMarkObjectFunc) (GCObject**, SgenGrayQueue*);
 typedef void (*ScanObjectFunc) (GCObject *obj, SgenDescriptor desc, SgenGrayQueue*);
 typedef void (*ScanVTypeFunc) (GCObject *full_object, char *start, SgenDescriptor desc, SgenGrayQueue* BINARY_PROTOCOL_ARG (size_t size));
+typedef gboolean (*DrainGrayStackFunc) (SgenGrayQueue *queue);
 
 typedef struct {
        CopyOrMarkObjectFunc copy_or_mark_object;
        ScanObjectFunc scan_object;
        ScanVTypeFunc scan_vtype;
+       /* Drain stack optimized for the above functions */
+       DrainGrayStackFunc drain_gray_stack;
        /*FIXME add allocation function? */
 } SgenObjectOperations;
 
@@ -446,7 +441,7 @@ void sgen_pin_stats_register_global_remset (GCObject *obj);
 void sgen_pin_stats_print_class_stats (void);
 
 void sgen_sort_addresses (void **array, size_t size);
-void sgen_add_to_global_remset (gpointer ptr, gpointer obj);
+void sgen_add_to_global_remset (gpointer ptr, GCObject *obj);
 
 int sgen_get_current_collection_generation (void);
 gboolean sgen_collection_is_concurrent (void);
@@ -604,13 +599,6 @@ struct _SgenMajorCollector {
        gboolean supports_cardtable;
        gboolean sweeps_lazily;
 
-       /*
-        * This is set to TRUE by the sweep if the next major
-        * collection should be synchronous (for evacuation).  For
-        * non-concurrent collectors, this should be NULL.
-        */
-       gboolean *want_synchronous_collection;
-
        void* (*alloc_heap) (mword nursery_size, mword nursery_align, int nursery_bits);
        gboolean (*is_object_live) (GCObject *obj);
        GCObject* (*alloc_small_pinned_obj) (GCVTable vtable, size_t size, gboolean has_references);
@@ -618,7 +606,6 @@ struct _SgenMajorCollector {
 
        SgenObjectOperations major_ops_serial;
        SgenObjectOperations major_ops_concurrent_start;
-       SgenObjectOperations major_ops_concurrent;
        SgenObjectOperations major_ops_concurrent_finish;
 
        GCObject* (*alloc_object) (GCVTable vtable, size_t size, gboolean has_references);
@@ -648,7 +635,6 @@ struct _SgenMajorCollector {
        void (*finish_nursery_collection) (void);
        void (*start_major_collection) (void);
        void (*finish_major_collection) (ScannedObjectCounts *counts);
-       gboolean (*drain_gray_stack) (ScanCopyContext ctx);
        gboolean (*ptr_is_in_non_pinned_space) (char *ptr, char **start);
        gboolean (*ptr_is_from_pinned_alloc) (char *ptr);
        void (*report_pinned_memory_usage) (void);
@@ -801,7 +787,7 @@ void sgen_register_disappearing_link (GCObject *obj, void **link, gboolean track
 
 GCObject* sgen_weak_link_get (void **link_addr);
 
-gboolean sgen_drain_gray_stack (int max_objs, ScanCopyContext ctx);
+gboolean sgen_drain_gray_stack (ScanCopyContext ctx);
 
 enum {
        SPACE_NURSERY,
@@ -965,7 +951,7 @@ extern guint32 tlab_size;
 extern NurseryClearPolicy nursery_clear_policy;
 extern gboolean sgen_try_free_some_memory;
 
-extern LOCK_DECLARE (gc_mutex);
+extern MonoCoopMutex gc_mutex;
 
 /* Nursery helpers. */
 
index 34d2c0f6ec47e996afd5cd0584e92c18d67980a0..f4b352eac1185d6befd2f9fb5ac8d440d0376a3c 100644 (file)
@@ -105,17 +105,17 @@ static void
 protocol_gchandle_update (int handle_type, gpointer link, gpointer old_value, gpointer new_value)
 {
        gboolean old = MONO_GC_HANDLE_IS_OBJECT_POINTER (old_value);
-       gboolean new = MONO_GC_HANDLE_IS_OBJECT_POINTER (new_value);
+       gboolean new_ = MONO_GC_HANDLE_IS_OBJECT_POINTER (new_value);
        gboolean track = handle_type == HANDLE_WEAK_TRACK;
 
        if (!MONO_GC_HANDLE_TYPE_IS_WEAK (handle_type))
                return;
 
-       if (!old && new)
+       if (!old && new_)
                binary_protocol_dislink_add (link, MONO_GC_REVEAL_POINTER (new_value, TRUE), track);
-       else if (old && !new)
+       else if (old && !new_)
                binary_protocol_dislink_remove (link, track);
-       else if (old && new && old_value != new_value)
+       else if (old && new_ && old_value != new_value)
                binary_protocol_dislink_update (link, MONO_GC_REVEAL_POINTER (new_value, TRUE), track);
 }
 
@@ -123,15 +123,15 @@ protocol_gchandle_update (int handle_type, gpointer link, gpointer old_value, gp
 static inline gpointer
 try_set_slot (volatile gpointer *slot, GCObject *obj, gpointer old, GCHandleType type)
 {
-       gpointer new;
+       gpointer new_;
        if (obj)
-               new = MONO_GC_HANDLE_OBJECT_POINTER (obj, GC_HANDLE_TYPE_IS_WEAK (type));
+               new_ = MONO_GC_HANDLE_OBJECT_POINTER (obj, GC_HANDLE_TYPE_IS_WEAK (type));
        else
-               new = MONO_GC_HANDLE_METADATA_POINTER (sgen_client_default_metadata (), GC_HANDLE_TYPE_IS_WEAK (type));
-       SGEN_ASSERT (0, new, "Why is the occupied bit not set?");
-       if (InterlockedCompareExchangePointer (slot, new, old) == old) {
-               protocol_gchandle_update (type, (gpointer)slot, old, new);
-               return new;
+               new_ = MONO_GC_HANDLE_METADATA_POINTER (sgen_client_default_metadata (), GC_HANDLE_TYPE_IS_WEAK (type));
+       SGEN_ASSERT (0, new_, "Why is the occupied bit not set?");
+       if (InterlockedCompareExchangePointer (slot, new_, old) == old) {
+               protocol_gchandle_update (type, (gpointer)slot, old, new_);
+               return new_;
        }
        return NULL;
 }
@@ -143,7 +143,7 @@ try_occupy_slot (HandleData *handles, guint bucket, guint offset, GCObject *obj,
        volatile gpointer *link_addr = &(handles->entries [bucket] [offset]);
        if (MONO_GC_HANDLE_OCCUPIED (*link_addr))
                return FALSE;
-       return try_set_slot (link_addr, obj, NULL, handles->type) != NULL;
+       return try_set_slot (link_addr, obj, NULL, (GCHandleType)handles->type) != NULL;
 }
 
 static HandleData gc_handles [] = {
@@ -216,7 +216,7 @@ handle_data_grow (HandleData *handles, guint32 old_capacity)
        const size_t new_bucket_size = sizeof (**handles->entries) * growth;
        if (handles->capacity >= new_capacity)
                return;
-       entries = g_malloc0 (new_bucket_size);
+       entries = (gpointer *)g_malloc0 (new_bucket_size);
        if (handles->type == HANDLE_PINNED)
                sgen_register_root ((char *)entries, new_bucket_size, SGEN_DESCRIPTOR_NULL, ROOT_TYPE_PINNED, MONO_ROOT_SOURCE_GC_HANDLE, "pinned gc handles");
        /* The zeroing of the newly allocated bucket must be complete before storing
@@ -260,18 +260,28 @@ retry:
                goto retry;
        }
        handles->slot_hint = index;
-       bucketize (index, &bucket, &offset);
-       if (!try_occupy_slot (handles, bucket, offset, obj, track))
-               goto retry;
-       /* If a GC happens shortly after a new bucket is allocated, the entire
-        * bucket could be scanned even though it's mostly empty. To avoid this, we
-        * track the maximum index seen so far, so that we can skip the empty slots.
+
+       /*
+        * If a GC happens shortly after a new bucket is allocated, the entire
+        * bucket could be scanned even though it's mostly empty. To avoid this,
+        * we track the maximum index seen so far, so that we can skip the empty
+        * slots.
+        *
+        * Note that we update `max_index` before we even try occupying the
+        * slot.  If we did it the other way around and a GC happened in
+        * between, the GC wouldn't know that the slot was occupied.  This is
+        * not a huge deal since `obj` is on the stack and thus pinned anyway,
+        * but hopefully some day it won't be anymore.
         */
        do {
                max_index = handles->max_index;
                if (index <= max_index)
                        break;
-       } while (!InterlockedCompareExchange ((volatile gint32 *)&handles->max_index, index, max_index));
+       } while (InterlockedCompareExchange ((volatile gint32 *)&handles->max_index, index, max_index) != max_index);
+
+       bucketize (index, &bucket, &offset);
+       if (!try_occupy_slot (handles, bucket, offset, obj, track))
+               goto retry;
 #ifdef HEAVY_STATISTICS
        InterlockedIncrement ((volatile gint32 *)&stat_gc_handles_allocated);
        if (stat_gc_handles_allocated > stat_gc_handles_max_allocated)
@@ -436,7 +446,7 @@ GCObject*
 mono_gchandle_get_target (guint32 gchandle)
 {
        guint index = MONO_GC_HANDLE_SLOT (gchandle);
-       guint type = MONO_GC_HANDLE_TYPE (gchandle);
+       GCHandleType type = MONO_GC_HANDLE_TYPE (gchandle);
        HandleData *handles = gc_handles_for_type (type);
        /* Invalid handles are possible; accessing one should produce NULL. (#34276) */
        if (!handles)
@@ -451,7 +461,7 @@ void
 sgen_gchandle_set_target (guint32 gchandle, GCObject *obj)
 {
        guint index = MONO_GC_HANDLE_SLOT (gchandle);
-       guint type = MONO_GC_HANDLE_TYPE (gchandle);
+       GCHandleType type = MONO_GC_HANDLE_TYPE (gchandle);
        HandleData *handles = gc_handles_for_type (type);
        if (!handles)
                return;
@@ -464,7 +474,7 @@ sgen_gchandle_set_target (guint32 gchandle, GCObject *obj)
        do {
                slot = handles->entries [bucket] [offset];
                SGEN_ASSERT (0, MONO_GC_HANDLE_OCCUPIED (slot), "Why are we setting the target on an unoccupied slot?");
-       } while (!try_set_slot (&handles->entries [bucket] [offset], obj, slot, handles->type));
+       } while (!try_set_slot (&handles->entries [bucket] [offset], obj, slot, (GCHandleType)handles->type));
 }
 
 static gpointer
@@ -477,7 +487,7 @@ retry:
        if (!MONO_GC_HANDLE_OCCUPIED (slot))
                return NULL;
        if (MONO_GC_HANDLE_IS_OBJECT_POINTER (slot)) {
-               GCObject *obj = MONO_GC_REVEAL_POINTER (slot, is_weak);
+               GCObject *obj = (GCObject *)MONO_GC_REVEAL_POINTER (slot, is_weak);
                /* See note [dummy use]. */
                sgen_dummy_use (obj);
                /*
@@ -501,7 +511,7 @@ gpointer
 sgen_gchandle_get_metadata (guint32 gchandle)
 {
        guint index = MONO_GC_HANDLE_SLOT (gchandle);
-       guint type = MONO_GC_HANDLE_TYPE (gchandle);
+       GCHandleType type = MONO_GC_HANDLE_TYPE (gchandle);
        HandleData *handles = gc_handles_for_type (type);
        if (!handles)
                return NULL;
@@ -524,7 +534,7 @@ void
 mono_gchandle_free (guint32 gchandle)
 {
        guint index = MONO_GC_HANDLE_SLOT (gchandle);
-       guint type = MONO_GC_HANDLE_TYPE (gchandle);
+       GCHandleType type = MONO_GC_HANDLE_TYPE (gchandle);
        HandleData *handles = gc_handles_for_type (type);
        if (!handles)
                return;
@@ -556,7 +566,7 @@ null_link_if_necessary (gpointer hidden, GCHandleType handle_type, int max_gener
        if (!MONO_GC_HANDLE_VALID (hidden))
                return hidden;
 
-       obj = MONO_GC_REVEAL_POINTER (hidden, MONO_GC_HANDLE_TYPE_IS_WEAK (handle_type));
+       obj = (GCObject *)MONO_GC_REVEAL_POINTER (hidden, MONO_GC_HANDLE_TYPE_IS_WEAK (handle_type));
        SGEN_ASSERT (0, obj, "Why is the hidden pointer NULL?");
 
        if (object_older_than (obj, max_generation))
@@ -597,7 +607,7 @@ null_link_if (gpointer hidden, GCHandleType handle_type, int max_generation, gpo
        if (!MONO_GC_HANDLE_VALID (hidden))
                return hidden;
 
-       obj = MONO_GC_REVEAL_POINTER (hidden, MONO_GC_HANDLE_TYPE_IS_WEAK (handle_type));
+       obj = (GCObject *)MONO_GC_REVEAL_POINTER (hidden, MONO_GC_HANDLE_TYPE_IS_WEAK (handle_type));
        SGEN_ASSERT (0, obj, "Why is the hidden pointer NULL?");
 
        if (object_older_than (obj, max_generation))
index fd561d50ff4319174803a13980ab0c18728609f6..cb6694342fe484cc50bfdff9b940ca12ad0d6e92 100644 (file)
@@ -66,7 +66,7 @@ sgen_gray_object_alloc_queue_section (SgenGrayQueue *queue)
                STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FREE_LIST, GRAY_QUEUE_SECTION_STATE_FLOATING);
        } else {
                /* Allocate a new section */
-               section = sgen_alloc_internal (INTERNAL_MEM_GRAY_QUEUE);
+               section = (GrayQueueSection *)sgen_alloc_internal (INTERNAL_MEM_GRAY_QUEUE);
                STATE_SET (section, GRAY_QUEUE_SECTION_STATE_FLOATING);
        }
 
@@ -292,7 +292,7 @@ lock_section_queue (SgenSectionGrayQueue *queue)
        if (!queue->locked)
                return;
 
-       mono_mutex_lock (&queue->lock);
+       mono_os_mutex_lock (&queue->lock);
 }
 
 static void
@@ -301,7 +301,7 @@ unlock_section_queue (SgenSectionGrayQueue *queue)
        if (!queue->locked)
                return;
 
-       mono_mutex_unlock (&queue->lock);
+       mono_os_mutex_unlock (&queue->lock);
 }
 
 void
@@ -311,7 +311,7 @@ sgen_section_gray_queue_init (SgenSectionGrayQueue *queue, gboolean locked, Gray
 
        queue->locked = locked;
        if (locked) {
-               mono_mutex_init_recursive (&queue->lock);
+               mono_os_mutex_init_recursive (&queue->lock);
        }
 
 #ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
index 61c78e9bf56b703bc1c96edf51de6e0a827338df..42856fc65d846a016638bf1ed9b043792540d17e 100644 (file)
@@ -53,7 +53,7 @@ rehash (SgenHashTable *hash_table)
                new_size = g_spaced_primes_closest (hash_table->num_entries);
        }
 
-       new_hash = sgen_alloc_internal_dynamic (new_size * sizeof (SgenHashTableEntry*), hash_table->table_mem_type, TRUE);
+       new_hash = (SgenHashTableEntry **)sgen_alloc_internal_dynamic (new_size * sizeof (SgenHashTableEntry*), hash_table->table_mem_type, TRUE);
        for (i = 0; i < old_hash_size; ++i) {
                for (entry = old_hash [i]; entry; entry = next) {
                        hash = hash_table->hash_func (entry->key) % new_size;
@@ -132,7 +132,7 @@ sgen_hash_table_replace (SgenHashTable *hash_table, gpointer key, gpointer new_v
                return FALSE;
        }
 
-       entry = sgen_alloc_internal (hash_table->entry_mem_type);
+       entry = (SgenHashTableEntry *)sgen_alloc_internal (hash_table->entry_mem_type);
        entry->key = key;
        memcpy (entry->data, new_value, hash_table->data_size);
 
index e6cfe43a5a051b65ee7408724afa9e84c0a24b85..5144cab12702b55ce432e22ae37c785bbc429fb6 100644 (file)
@@ -42,9 +42,9 @@ void sgen_init_hash_table (void);
 
 #define sgen_hash_table_num_entries(h) ((h)->num_entries)
 
-#define sgen_hash_table_key_for_value_pointer(v)       (((SgenHashTableEntry*)((char*)(v) - G_STRUCT_OFFSET (SgenHashTableEntry, data)))->key)
+#define sgen_hash_table_key_for_value_pointer(v)       ((GCObject *)(((SgenHashTableEntry*)((char*)(v) - G_STRUCT_OFFSET (SgenHashTableEntry, data)))->key))
 
-#define SGEN_HASH_TABLE_FOREACH(h,k,v) do {                            \
+#define SGEN_HASH_TABLE_FOREACH(h,tk,k,tv,v) do {                              \
                SgenHashTable *__hash_table = (h);                      \
                SgenHashTableEntry **__table = __hash_table->table;     \
                guint __i;                                              \
@@ -53,8 +53,8 @@ void sgen_init_hash_table (void);
                        for (__iter = &__table [__i]; *__iter; __iter = __next) {       \
                                SgenHashTableEntry *__entry = *__iter;  \
                                __next = &__entry->next;        \
-                               (k) = __entry->key;                     \
-                               (v) = (gpointer)__entry->data;
+                               (k) = (tk)__entry->key;                 \
+                               (v) = (tv)__entry->data;
 
 /* The loop must be continue'd after using this! */
 #define SGEN_HASH_TABLE_FOREACH_REMOVE(free)   do {                    \
index 4ccff748aef06c97f0e39bee2255358a76611921..e5327399c584f0a83868b64313fb7679b7e2a26b 100644 (file)
@@ -165,7 +165,7 @@ sgen_alloc_internal_dynamic (size_t size, int type, gboolean assert_on_failure)
        void *p;
 
        if (size > allocator_sizes [NUM_ALLOCATORS - 1]) {
-               p = sgen_alloc_os_memory (size, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, NULL);
+               p = sgen_alloc_os_memory (size, (SgenAllocFlags)(SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE), NULL);
                if (!p)
                        sgen_assert_memory_alloc (NULL, size, description_for_type (type));
        } else {
index ea1ba4692ea64a635a639476aba2be9c22ba16d6..2421150fcfb93ba9bf7087d8e5fe9c587ecf16b5 100644 (file)
@@ -238,7 +238,7 @@ get_los_section_memory (size_t size)
        if (!sgen_memgov_try_alloc_space (LOS_SECTION_SIZE, SPACE_LOS))
                return NULL;
 
-       section = sgen_alloc_os_memory_aligned (LOS_SECTION_SIZE, LOS_SECTION_SIZE, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, NULL);
+       section = (LOSSection *)sgen_alloc_os_memory_aligned (LOS_SECTION_SIZE, LOS_SECTION_SIZE, (SgenAllocFlags)(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE), NULL);
 
        if (!section)
                return NULL;
@@ -379,7 +379,7 @@ sgen_los_alloc_large_inner (GCVTable vtable, size_t size)
                alloc_size += pagesize - 1;
                alloc_size &= ~(pagesize - 1);
                if (sgen_memgov_try_alloc_space (alloc_size, SPACE_LOS)) {
-                       obj = sgen_alloc_os_memory (alloc_size, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, NULL);
+                       obj = (LOSObject *)sgen_alloc_os_memory (alloc_size, (SgenAllocFlags)(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE), NULL);
                }
        } else {
                obj = get_los_section_memory (size + sizeof (LOSObject));
@@ -593,7 +593,7 @@ get_cardtable_mod_union_for_object (LOSObject *obj)
        if (mod_union)
                return mod_union;
        mod_union = sgen_card_table_alloc_mod_union ((char*)obj->data, size);
-       other = SGEN_CAS_PTR ((gpointer*)&obj->cardtable_mod_union, mod_union, NULL);
+       other = (guint8 *)SGEN_CAS_PTR ((gpointer*)&obj->cardtable_mod_union, mod_union, NULL);
        if (!other) {
                SGEN_ASSERT (0, obj->cardtable_mod_union == mod_union, "Why did CAS not replace?");
                return mod_union;
index 01d276ad06df9c15d84703b677bf3974505f655b..56efcf2694d669d25ba25535ffa9867d15237ec1 100644 (file)
@@ -52,9 +52,12 @@ COPY_OR_MARK_FUNCTION_NAME (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
 #endif
 
        SGEN_ASSERT (9, obj, "null object from pointer %p", ptr);
+#ifndef COPY_OR_MARK_CONCURRENT
        SGEN_ASSERT (9, current_collection_generation == GENERATION_OLD, "old gen parallel allocator called from a %d collection", current_collection_generation);
+#endif
 
        if (sgen_ptr_in_nursery (obj)) {
+#ifndef COPY_OR_MARK_CONCURRENT
                int word, bit;
                GCObject *forwarded, *old_obj;
                mword vtable_word = *(mword*)obj;
@@ -71,7 +74,7 @@ COPY_OR_MARK_FUNCTION_NAME (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
                        HEAVY_STAT (++stat_optimized_copy_nursery_pinned);
                        return TRUE;
                }
-               if ((forwarded = SGEN_VTABLE_IS_FORWARDED (vtable_word))) {
+               if ((forwarded = (GCObject *)SGEN_VTABLE_IS_FORWARDED (vtable_word))) {
                        HEAVY_STAT (++stat_optimized_copy_nursery_forwarded);
                        SGEN_UPDATE_REFERENCE (ptr, forwarded);
                        return sgen_ptr_in_nursery (forwarded);
@@ -128,6 +131,7 @@ COPY_OR_MARK_FUNCTION_NAME (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
                binary_protocol_mark (obj, (gpointer)LOAD_VTABLE (obj), sgen_safe_object_get_size (obj));
 
                return FALSE;
+#endif
        } else {
                mword vtable_word = *(mword*)obj;
                SgenDescriptor desc;
@@ -138,7 +142,7 @@ COPY_OR_MARK_FUNCTION_NAME (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
 #ifdef COPY_OR_MARK_WITH_EVACUATION
                {
                        GCObject *forwarded;
-                       if ((forwarded = SGEN_VTABLE_IS_FORWARDED (vtable_word))) {
+                       if ((forwarded = (GCObject *)SGEN_VTABLE_IS_FORWARDED (vtable_word))) {
                                HEAVY_STAT (++stat_optimized_copy_major_forwarded);
                                SGEN_UPDATE_REFERENCE (ptr, forwarded);
                                SGEN_ASSERT (9, !sgen_ptr_in_nursery (forwarded), "Cannot be forwarded to nursery.");
@@ -162,16 +166,21 @@ COPY_OR_MARK_FUNCTION_NAME (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
 
                        block = MS_BLOCK_FOR_OBJ (obj);
 
+#ifdef COPY_OR_MARK_CONCURRENT
+                       if (G_UNLIKELY (major_block_is_evacuating (block))) {
+                               /*
+                                * We don't copy within the concurrent phase. These objects will
+                                * be handled below in the finishing pause, by scanning the mod-union
+                                * card table.
+                                */
+                               return FALSE;
+                       }
+#endif
+
 #ifdef COPY_OR_MARK_WITH_EVACUATION
-                       {
-                               int size_index = block->obj_size_index;
-
-                               if (evacuate_block_obj_sizes [size_index] && !block->has_pinned) {
-                                       HEAVY_STAT (++stat_optimized_copy_major_small_evacuate);
-                                       if (block->is_to_space)
-                                               return FALSE;
-                                       goto do_copy_object;
-                               }
+                       if (major_block_is_evacuating (block)) {
+                               HEAVY_STAT (++stat_optimized_copy_major_small_evacuate);
+                               goto do_copy_object;
                        }
 #endif
 
@@ -189,14 +198,14 @@ COPY_OR_MARK_FUNCTION_NAME (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
                }
                return FALSE;
        }
-       SGEN_ASSERT (0, FALSE, "How is this happening?");
-       return FALSE;
+
+       return TRUE;
 }
 
 static void
-SCAN_OBJECT_FUNCTION_NAME (GCObject *obj, SgenDescriptor desc, SgenGrayQueue *queue)
+SCAN_OBJECT_FUNCTION_NAME (GCObject *full_object, SgenDescriptor desc, SgenGrayQueue *queue)
 {
-       char *start = (char*)obj;
+       char *start = (char*)full_object;
 
 #ifdef HEAVY_STATISTICS
        ++stat_optimized_major_scan;
@@ -211,30 +220,52 @@ SCAN_OBJECT_FUNCTION_NAME (GCObject *obj, SgenDescriptor desc, SgenGrayQueue *qu
        /* Now scan the object. */
 
 #undef HANDLE_PTR
+#ifdef COPY_OR_MARK_CONCURRENT
 #define HANDLE_PTR(ptr,obj)    do {                                    \
-               void *__old = *(ptr);                                   \
-               binary_protocol_scan_process_reference ((obj), (ptr), __old); \
+               GCObject *__old = *(ptr);                               \
+               binary_protocol_scan_process_reference ((full_object), (ptr), __old); \
+               if (__old && !sgen_ptr_in_nursery (__old)) {            \
+                       MSBlockInfo *block = MS_BLOCK_FOR_OBJ (__old);  \
+                       if (G_UNLIKELY (!sgen_ptr_in_nursery (ptr) &&   \
+                                       sgen_safe_object_is_small (__old, sgen_obj_get_descriptor (__old) & DESC_TYPE_MASK) && \
+                                       major_block_is_evacuating (block))) { \
+                               mark_mod_union_card ((full_object), (void**)(ptr), __old); \
+                       } else {                                        \
+                               PREFETCH_READ (__old);                  \
+                               COPY_OR_MARK_FUNCTION_NAME ((ptr), __old, queue); \
+                       }                                               \
+               } else {                                                \
+                       if (G_UNLIKELY (sgen_ptr_in_nursery (__old) && !sgen_ptr_in_nursery ((ptr)))) \
+                               mark_mod_union_card ((full_object), (void**)(ptr), __old); \
+                       }                                               \
+               } while (0)
+#else
+#define HANDLE_PTR(ptr,obj)    do {                                    \
+               GCObject *__old = *(ptr);                                       \
+               binary_protocol_scan_process_reference ((full_object), (ptr), __old); \
                if (__old) {                                            \
                        gboolean __still_in_nursery = COPY_OR_MARK_FUNCTION_NAME ((ptr), __old, queue); \
                        if (G_UNLIKELY (__still_in_nursery && !sgen_ptr_in_nursery ((ptr)) && !SGEN_OBJECT_IS_CEMENTED (*(ptr)))) { \
-                               void *__copy = *(ptr);                  \
+                               GCObject *__copy = *(ptr);                      \
                                sgen_add_to_global_remset ((ptr), __copy); \
                        }                                               \
                }                                                       \
        } while (0)
+#endif
 
 #define SCAN_OBJECT_PROTOCOL
 #include "sgen-scan-object.h"
 }
 
 static gboolean
-DRAIN_GRAY_STACK_FUNCTION_NAME (ScanCopyContext ctx)
+DRAIN_GRAY_STACK_FUNCTION_NAME (SgenGrayQueue *queue)
 {
-       SgenGrayQueue *queue = ctx.queue;
-
-       SGEN_ASSERT (0, ctx.ops->scan_object == major_scan_object_with_evacuation, "Wrong scan function");
-
+#ifdef COPY_OR_MARK_CONCURRENT
+       int i;
+       for (i = 0; i < 32; i++) {
+#else
        for (;;) {
+#endif
                GCObject *obj;
                SgenDescriptor desc;
 
@@ -244,8 +275,9 @@ DRAIN_GRAY_STACK_FUNCTION_NAME (ScanCopyContext ctx)
                if (!obj)
                        return TRUE;
 
-               SCAN_OBJECT_FUNCTION_NAME (obj, desc, ctx.queue);
+               SCAN_OBJECT_FUNCTION_NAME (obj, desc, queue);
        }
+       return FALSE;
 }
 
 #undef COPY_OR_MARK_FUNCTION_NAME
index 1ed9eb8a4bb454b793c29918310c8e5970014955..541a0a2b52fec22415a6468147e50a8aec241584 100644 (file)
@@ -19,8 +19,6 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-extern guint64 stat_scan_object_called_major;
-
 /*
  * FIXME: We use the same scanning function in the concurrent collector whether we scan
  * during the starting/finishing collection pause (with the world stopped) or from the
@@ -32,67 +30,14 @@ extern guint64 stat_scan_object_called_major;
  * it because we don't follow into the nursery.
  */
 
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj)    do {                                    \
-               GCObject *__old = *(ptr);                                       \
-               SGEN_OBJECT_LAYOUT_STATISTICS_MARK_BITMAP ((obj), (ptr)); \
-               binary_protocol_scan_process_reference ((obj), (ptr), __old); \
-               if (__old && !sgen_ptr_in_nursery (__old)) {            \
-                       PREFETCH_READ (__old);                  \
-                       major_copy_or_mark_object_concurrent ((ptr), __old, queue); \
-               } else {                                                \
-                       if (G_UNLIKELY (sgen_ptr_in_nursery (__old) && !sgen_ptr_in_nursery ((ptr)))) \
-                               ADD_TO_GLOBAL_REMSET ((full_object), (ptr), __old); \
-               }                                                       \
-       } while (0)
-
-/* FIXME: Unify this with optimized code in sgen-marksweep.c. */
-
-#undef ADD_TO_GLOBAL_REMSET
-#define ADD_TO_GLOBAL_REMSET(object,ptr,target)        mark_mod_union_card ((object), (void**)(ptr))
-
-static void
-major_scan_object_no_mark_concurrent_anywhere (GCObject *full_object, SgenDescriptor desc, SgenGrayQueue *queue)
-{
-       char *start = (char*)full_object;
-
-       SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP;
-
-#ifdef HEAVY_STATISTICS
-       sgen_descriptor_count_scanned_object (desc);
-#endif
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-       add_scanned_object (start);
-#endif
-
-#define SCAN_OBJECT_PROTOCOL
-#include "sgen-scan-object.h"
-
-       SGEN_OBJECT_LAYOUT_STATISTICS_COMMIT_BITMAP;
-       HEAVY_STAT (++stat_scan_object_called_major);
-}
-
-static void
-major_scan_object_no_mark_concurrent_start (GCObject *start, SgenDescriptor desc, SgenGrayQueue *queue)
-{
-       major_scan_object_no_mark_concurrent_anywhere (start, desc, queue);
-}
-
-static void
-major_scan_object_no_mark_concurrent (GCObject *start, SgenDescriptor desc, SgenGrayQueue *queue)
-{
-       SGEN_ASSERT (0, !sgen_ptr_in_nursery (start), "Why are we scanning nursery objects in the concurrent collector?");
-       major_scan_object_no_mark_concurrent_anywhere (start, desc, queue);
-}
-
 #undef HANDLE_PTR
 #define HANDLE_PTR(ptr,obj)     do {                                    \
-                void *__old = *(ptr);                                   \
-                binary_protocol_scan_process_reference ((obj), (ptr), __old); \
+                GCObject *__old = *(ptr);                                   \
+                binary_protocol_scan_process_reference ((full_object), (ptr), __old); \
                 if (__old) {                                            \
-                        gboolean __still_in_nursery = major_copy_or_mark_object_no_evacuation ((ptr), __old, queue); \
+                        gboolean __still_in_nursery = major_copy_or_mark_object_with_evacuation ((ptr), __old, queue); \
                         if (G_UNLIKELY (__still_in_nursery && !sgen_ptr_in_nursery ((ptr)) && !SGEN_OBJECT_IS_CEMENTED (*(ptr)))) { \
-                                void *__copy = *(ptr);                  \
+                                GCObject *__copy = *(ptr);                  \
                                 sgen_add_to_global_remset ((ptr), __copy); \
                         }                                              \
                 }                                                       \
index 55f40aba76e646cf0f18e0f0fbc4627b8c259d5a..62260b42e1a68d64589aff310ad36bcf0fc24f84 100644 (file)
@@ -121,7 +121,7 @@ struct _MSBlockInfo {
 
 #define MS_BLOCK_FOR_BLOCK_INFO(b)     ((char*)(b))
 
-#define MS_BLOCK_OBJ(b,i)              ((void*)(MS_BLOCK_FOR_BLOCK_INFO(b) + MS_BLOCK_SKIP + (b)->obj_size * (i)))
+#define MS_BLOCK_OBJ(b,i)              ((GCObject *)(MS_BLOCK_FOR_BLOCK_INFO(b) + MS_BLOCK_SKIP + (b)->obj_size * (i)))
 #define MS_BLOCK_OBJ_FOR_SIZE(b,i,obj_size)            (MS_BLOCK_FOR_BLOCK_INFO(b) + MS_BLOCK_SKIP + (obj_size) * (i))
 #define MS_BLOCK_DATA_FOR_OBJ(o)       ((char*)((mword)(o) & ~(mword)(MS_BLOCK_SIZE - 1)))
 
@@ -170,8 +170,6 @@ static int fast_block_obj_size_indexes [MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES];
 
 static gboolean *evacuate_block_obj_sizes;
 static float evacuation_threshold = 0.666f;
-static float concurrent_evacuation_threshold = 0.666f;
-static gboolean want_evacuation = FALSE;
 
 static gboolean lazy_sweep = FALSE;
 
@@ -194,7 +192,7 @@ static gboolean concurrent_sweep = TRUE;
 #define BLOCK_IS_TAGGED_CHECKING(bl)           SGEN_POINTER_IS_TAGGED_2 ((bl))
 #define BLOCK_TAG_CHECKING(bl)                 SGEN_POINTER_TAG_2 ((bl))
 
-#define BLOCK_UNTAG(bl)                                SGEN_POINTER_UNTAG_12 ((bl))
+#define BLOCK_UNTAG(bl)                                ((MSBlockInfo *)SGEN_POINTER_UNTAG_12 ((bl)))
 
 #define BLOCK_TAG(bl)                          ((bl)->has_references ? BLOCK_TAG_HAS_REFERENCES ((bl)) : (bl))
 
@@ -216,7 +214,7 @@ static size_t num_empty_blocks = 0;
        size_t __index;                                                 \
        SGEN_ASSERT (0, sgen_is_world_stopped () && !sweep_in_progress (), "Can't iterate blocks while the world is running or sweep is in progress."); \
        for (__index = 0; __index < allocated_blocks.next_slot; ++__index) { \
-               (bl) = allocated_blocks.data [__index];                 \
+               (bl) = (MSBlockInfo *)allocated_blocks.data [__index];                  \
                (hr) = BLOCK_IS_TAGGED_HAS_REFERENCES ((bl));           \
                (bl) = BLOCK_UNTAG ((bl));
 #define END_FOREACH_BLOCK_NO_LOCK      } }
@@ -245,7 +243,6 @@ static MSBlockInfo * volatile *free_block_lists [MS_BLOCK_TYPE_MAX];
 static guint64 stat_major_blocks_alloced = 0;
 static guint64 stat_major_blocks_freed = 0;
 static guint64 stat_major_blocks_lazy_swept = 0;
-static guint64 stat_major_objects_evacuated = 0;
 
 #if SIZEOF_VOID_P != 8
 static guint64 stat_major_blocks_freed_ideal = 0;
@@ -271,9 +268,9 @@ add_scanned_object (void *ptr)
        if (!binary_protocol_is_enabled ())
                return;
 
-       mono_mutex_lock (&scanned_objects_list_lock);
+       mono_os_mutex_lock (&scanned_objects_list_lock);
        sgen_pointer_queue_add (&scanned_objects_list, ptr);
-       mono_mutex_unlock (&scanned_objects_list_lock);
+       mono_os_mutex_unlock (&scanned_objects_list_lock);
 }
 #endif
 
@@ -304,9 +301,9 @@ major_alloc_heap (mword nursery_size, mword nursery_align, int the_nursery_bits)
 {
        char *start;
        if (nursery_align)
-               start = sgen_alloc_os_memory_aligned (nursery_size, nursery_align, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, "nursery");
+               start = (char *)sgen_alloc_os_memory_aligned (nursery_size, nursery_align, (SgenAllocFlags)(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE), "nursery");
        else
-               start = sgen_alloc_os_memory (nursery_size, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, "nursery");
+               start = (char *)sgen_alloc_os_memory (nursery_size, (SgenAllocFlags)(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE), "nursery");
 
        return start;
 }
@@ -336,8 +333,9 @@ ms_get_empty_block (void)
                 */
                int alloc_num = MS_BLOCK_ALLOC_NUM;
                for (;;) {
-                       p = sgen_alloc_os_memory_aligned (MS_BLOCK_SIZE * alloc_num, MS_BLOCK_SIZE, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE,
-                                       alloc_num == 1 ? "major heap section" : NULL);
+                       p = (char *)sgen_alloc_os_memory_aligned (MS_BLOCK_SIZE * alloc_num, MS_BLOCK_SIZE,
+                               (SgenAllocFlags)(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE),
+                               alloc_num == 1 ? "major heap section" : NULL);
                        if (p)
                                break;
                        alloc_num >>= 1;
@@ -502,7 +500,7 @@ add_free_block (MSBlockInfo * volatile *free_blocks, int size_index, MSBlockInfo
        MSBlockInfo *old;
        do {
                block->next_free = old = free_blocks [size_index];
-       } while (SGEN_CAS_PTR ((gpointer)&free_blocks [size_index], block, old) != old);
+       } while (SGEN_CAS_PTR ((volatile gpointer *)&free_blocks [size_index], block, old) != old);
 }
 
 static void major_finish_sweep_checking (void);
@@ -533,10 +531,11 @@ ms_alloc_block (int size_index, gboolean pinned, gboolean has_references)
         * Blocks that are to-space are not evacuated from.  During an major collection
         * blocks are allocated for two reasons: evacuating objects from the nursery and
         * evacuating them from major blocks marked for evacuation.  In both cases we don't
-        * want further evacuation.
+        * want further evacuation. We also don't want to evacuate objects allocated during
+        * the concurrent mark since it would add pointless stress on the finishing pause.
         */
-       info->is_to_space = (sgen_get_current_collection_generation () == GENERATION_OLD);
-       info->state = (info->is_to_space || sgen_concurrent_collection_in_progress ()) ? BLOCK_STATE_MARKING : BLOCK_STATE_SWEPT;
+       info->is_to_space = (sgen_get_current_collection_generation () == GENERATION_OLD) || sgen_concurrent_collection_in_progress ();
+       info->state = info->is_to_space ? BLOCK_STATE_MARKING : BLOCK_STATE_SWEPT;
        SGEN_ASSERT (6, !sweep_in_progress () || info->state == BLOCK_STATE_SWEPT, "How do we add a new block to be swept while sweeping?");
        info->cardtable_mod_union = NULL;
 
@@ -630,12 +629,12 @@ unlink_slot_from_free_list_uncontested (MSBlockInfo * volatile *free_blocks, int
 
        next_free_slot = *(void**)obj;
        if (next_free_slot) {
-               block->free_list = next_free_slot;
+               block->free_list = (gpointer *)next_free_slot;
                return obj;
        }
 
        next_free_block = block->next_free;
-       if (SGEN_CAS_PTR ((gpointer)&free_blocks [size_index], next_free_block, block) != block)
+       if (SGEN_CAS_PTR ((volatile gpointer *)&free_blocks [size_index], next_free_block, block) != block)
                goto retry;
 
        block->free_list = NULL;
@@ -661,7 +660,7 @@ alloc_obj (GCVTable vtable, size_t size, gboolean pinned, gboolean has_reference
        /* FIXME: assumes object layout */
        *(GCVTable*)obj = vtable;
 
-       return obj;
+       return (GCObject *)obj;
 }
 
 static GCObject*
@@ -726,7 +725,7 @@ major_alloc_small_pinned_obj (GCVTable vtable, size_t size, gboolean has_referen
                sgen_perform_collection (0, GENERATION_OLD, "pinned alloc failure", TRUE);
                res = alloc_obj (vtable, size, TRUE, has_references);
         }
-        return res;
+        return (GCObject *)res;
 }
 
 static void
@@ -792,7 +791,7 @@ major_ptr_is_in_non_pinned_space (char *ptr, char **start)
                        *start = NULL;
                        for (i = 0; i <= count; ++i) {
                                if (ptr >= (char*)MS_BLOCK_OBJ (block, i) && ptr < (char*)MS_BLOCK_OBJ (block, i + 1)) {
-                                       *start = MS_BLOCK_OBJ (block, i);
+                                       *start = (char *)MS_BLOCK_OBJ (block, i);
                                        break;
                                }
                        }
@@ -803,16 +802,16 @@ major_ptr_is_in_non_pinned_space (char *ptr, char **start)
 }
 
 static gboolean
-try_set_sweep_state (int new, int expected)
+try_set_sweep_state (int new_, int expected)
 {
-       int old = SGEN_CAS (&sweep_state, new, expected);
+       int old = SGEN_CAS (&sweep_state, new_, expected);
        return old == expected;
 }
 
 static void
-set_sweep_state (int new, int expected)
+set_sweep_state (int new_, int expected)
 {
-       gboolean success = try_set_sweep_state (new, expected);
+       gboolean success = try_set_sweep_state (new_, expected);
        SGEN_ASSERT (0, success, "Could not set sweep state.");
 }
 
@@ -986,8 +985,8 @@ static void
 major_dump_heap (FILE *heap_dump_file)
 {
        MSBlockInfo *block;
-       int *slots_available = alloca (sizeof (int) * num_block_obj_sizes);
-       int *slots_used = alloca (sizeof (int) * num_block_obj_sizes);
+       int *slots_available = (int *)alloca (sizeof (int) * num_block_obj_sizes);
+       int *slots_used = (int *)alloca (sizeof (int) * num_block_obj_sizes);
        int i;
 
        for (i = 0; i < num_block_obj_sizes; ++i)
@@ -1024,7 +1023,7 @@ major_dump_heap (FILE *heap_dump_file)
                                        start = i;
                        } else {
                                if (start >= 0) {
-                                       sgen_dump_occupied (MS_BLOCK_OBJ (block, start), MS_BLOCK_OBJ (block, i), MS_BLOCK_FOR_BLOCK_INFO (block));
+                                       sgen_dump_occupied ((char *)MS_BLOCK_OBJ (block, start), (char *)MS_BLOCK_OBJ (block, i), MS_BLOCK_FOR_BLOCK_INFO (block));
                                        start = -1;
                                }
                        }
@@ -1044,7 +1043,7 @@ get_cardtable_mod_union_for_block (MSBlockInfo *block, gboolean allocate)
        else if (!allocate)
                return NULL;
        mod_union = sgen_card_table_alloc_mod_union (MS_BLOCK_FOR_BLOCK_INFO (block), MS_BLOCK_SIZE);
-       other = SGEN_CAS_PTR ((gpointer*)&block->cardtable_mod_union, mod_union, NULL);
+       other = (guint8 *)SGEN_CAS_PTR ((gpointer*)&block->cardtable_mod_union, mod_union, NULL);
        if (!other) {
                SGEN_ASSERT (0, block->cardtable_mod_union == mod_union, "Why did CAS not replace?");
                return mod_union;
@@ -1067,7 +1066,7 @@ major_get_cardtable_mod_union_for_reference (char *ptr)
  * Mark the mod-union card for `ptr`, which must be a reference within the object `obj`.
  */
 static void
-mark_mod_union_card (GCObject *obj, void **ptr)
+mark_mod_union_card (GCObject *obj, void **ptr, GCObject *value_obj)
 {
        int type = sgen_obj_get_descriptor (obj) & DESC_TYPE_MASK;
        if (sgen_safe_object_is_small (obj, type)) {
@@ -1077,6 +1076,18 @@ mark_mod_union_card (GCObject *obj, void **ptr)
        } else {
                sgen_los_mark_mod_union_card (obj, ptr);
        }
+
+       binary_protocol_mod_union_remset (obj, ptr, value_obj, SGEN_LOAD_VTABLE (value_obj));
+}
+
+static inline gboolean
+major_block_is_evacuating (MSBlockInfo *block)
+{
+       if (evacuate_block_obj_sizes [block->obj_size_index] &&
+                       !block->has_pinned &&
+                       !block->is_to_space)
+               return TRUE;
+       return FALSE;
 }
 
 #define LOAD_VTABLE    SGEN_LOAD_VTABLE
@@ -1120,36 +1131,6 @@ pin_major_object (GCObject *obj, SgenGrayQueue *queue)
 
 #include "sgen-major-copy-object.h"
 
-static void
-major_copy_or_mark_object_concurrent (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
-{
-       SGEN_ASSERT (9, sgen_concurrent_collection_in_progress (), "Why are we scanning concurrently when there's no concurrent collection on?");
-       SGEN_ASSERT (9, !sgen_workers_are_working () || sgen_thread_pool_is_thread_pool_thread (mono_native_thread_id_get ()), "We must not scan from two threads at the same time!");
-
-       g_assert (!SGEN_OBJECT_IS_FORWARDED (obj));
-
-       if (!sgen_ptr_in_nursery (obj)) {
-               mword objsize;
-
-               objsize = SGEN_ALIGN_UP (sgen_safe_object_get_size (obj));
-
-               if (objsize <= SGEN_MAX_SMALL_OBJ_SIZE) {
-                       MSBlockInfo *block = MS_BLOCK_FOR_OBJ (obj);
-                       MS_MARK_OBJECT_AND_ENQUEUE (obj, sgen_obj_get_descriptor (obj), block, queue);
-               } else {
-                       if (sgen_los_object_is_pinned (obj))
-                               return;
-
-                       binary_protocol_mark (obj, SGEN_LOAD_VTABLE (obj), sgen_safe_object_get_size (obj));
-
-                       sgen_los_pin_object (obj);
-                       if (SGEN_OBJECT_HAS_REFERENCES (obj))
-                               GRAY_OBJECT_ENQUEUE (queue, obj, sgen_obj_get_descriptor (obj));
-                       INC_NUM_MAJOR_OBJECTS_MARKED ();
-               }
-       }
-}
-
 static long long
 major_get_and_reset_num_major_objects_marked (void)
 {
@@ -1196,8 +1177,6 @@ static guint64 stat_drain_prefetch_fill_failures;
 static guint64 stat_drain_loops;
 #endif
 
-static void major_scan_object_with_evacuation (GCObject *start, mword desc, SgenGrayQueue *queue);
-
 #define COPY_OR_MARK_FUNCTION_NAME     major_copy_or_mark_object_no_evacuation
 #define SCAN_OBJECT_FUNCTION_NAME      major_scan_object_no_evacuation
 #define DRAIN_GRAY_STACK_FUNCTION_NAME drain_gray_stack_no_evacuation
@@ -1209,8 +1188,15 @@ static void major_scan_object_with_evacuation (GCObject *start, mword desc, Sgen
 #define DRAIN_GRAY_STACK_FUNCTION_NAME drain_gray_stack_with_evacuation
 #include "sgen-marksweep-drain-gray-stack.h"
 
+#undef COPY_OR_MARK_WITH_EVACUATION
+#define COPY_OR_MARK_CONCURRENT
+#define COPY_OR_MARK_FUNCTION_NAME     major_copy_or_mark_object_concurrent
+#define SCAN_OBJECT_FUNCTION_NAME      major_scan_object_concurrent
+#define DRAIN_GRAY_STACK_FUNCTION_NAME drain_gray_stack_concurrent
+#include "sgen-marksweep-drain-gray-stack.h"
+
 static gboolean
-drain_gray_stack (ScanCopyContext ctx)
+drain_gray_stack (SgenGrayQueue *queue)
 {
        gboolean evacuation = FALSE;
        int i;
@@ -1222,9 +1208,9 @@ drain_gray_stack (ScanCopyContext ctx)
        }
 
        if (evacuation)
-               return drain_gray_stack_with_evacuation (ctx);
+               return drain_gray_stack_with_evacuation (queue);
        else
-               return drain_gray_stack_no_evacuation (ctx);
+               return drain_gray_stack_no_evacuation (queue);
 }
 
 #include "sgen-marksweep-scan-object-concurrent.h"
@@ -1244,7 +1230,7 @@ major_copy_or_mark_object_concurrent_canonical (GCObject **ptr, SgenGrayQueue *q
 static void
 major_copy_or_mark_object_concurrent_finish_canonical (GCObject **ptr, SgenGrayQueue *queue)
 {
-       major_copy_or_mark_object_no_evacuation (ptr, *ptr, queue);
+       major_copy_or_mark_object_with_evacuation (ptr, *ptr, queue);
 }
 
 static void
@@ -1298,7 +1284,7 @@ sweep_block_for_size (MSBlockInfo *block, int count, int obj_size)
                                memset (obj, 0, obj_size);
                        }
                        *(void**)obj = block->free_list;
-                       block->free_list = obj;
+                       block->free_list = (void **)obj;
                }
        }
 }
@@ -1378,9 +1364,9 @@ sweep_block (MSBlockInfo *block)
                void *next = *(void**)block->free_list;
                *(void**)block->free_list = reversed;
                reversed = block->free_list;
-               block->free_list = next;
+               block->free_list = (void **)next;
        }
-       block->free_list = reversed;
+       block->free_list = (void **)reversed;
 
        mono_memory_write_barrier ();
 
@@ -1633,8 +1619,6 @@ sweep_job_func (void *thread_data_untyped, SgenThreadPoolJob *job)
 static void
 sweep_finish (void)
 {
-       mword total_evacuate_heap = 0;
-       mword total_evacuate_saved = 0;
        int i;
 
        for (i = 0; i < num_block_obj_sizes; ++i) {
@@ -1648,16 +1632,8 @@ sweep_finish (void)
                } else {
                        evacuate_block_obj_sizes [i] = FALSE;
                }
-               {
-                       mword total_bytes = block_obj_sizes [i] * sweep_slots_available [i];
-                       total_evacuate_heap += total_bytes;
-                       if (evacuate_block_obj_sizes [i])
-                               total_evacuate_saved += total_bytes - block_obj_sizes [i] * sweep_slots_used [i];
-               }
        }
 
-       want_evacuation = (float)total_evacuate_saved / (float)total_evacuate_heap > (1 - concurrent_evacuation_threshold);
-
        set_sweep_state (SWEEP_STATE_SWEPT, SWEEP_STATE_COMPACTING);
 }
 
@@ -1870,13 +1846,6 @@ major_free_swept_blocks (size_t allowance)
 
        SGEN_ASSERT (0, sweep_state == SWEEP_STATE_SWEPT, "Sweeping must have finished before freeing blocks");
 
-#if SIZEOF_VOID_P != 8
-       {
-               int i, num_empty_blocks_orig, num_blocks, arr_length;
-               void *block;
-               void **empty_block_arr;
-               void **rebuild_next;
-
 #ifdef TARGET_WIN32
                /*
                 * sgen_free_os_memory () asserts in mono_vfree () because windows doesn't like freeing the middle of
@@ -1885,6 +1854,13 @@ major_free_swept_blocks (size_t allowance)
                return;
 #endif
 
+#if SIZEOF_VOID_P != 8
+       {
+               int i, num_empty_blocks_orig, num_blocks, arr_length;
+               void *block;
+               void **empty_block_arr;
+               void **rebuild_next;
+
                if (num_empty_blocks <= section_reserve)
                        return;
                SGEN_ASSERT (0, num_empty_blocks > 0, "section reserve can't be negative");
@@ -2403,16 +2379,16 @@ sgen_marksweep_init_internal (SgenMajorCollector *collector, gboolean is_concurr
        sgen_register_fixed_internal_mem_type (INTERNAL_MEM_MS_BLOCK_INFO, sizeof (MSBlockInfo));
 
        num_block_obj_sizes = ms_calculate_block_obj_sizes (MS_BLOCK_OBJ_SIZE_FACTOR, NULL);
-       block_obj_sizes = sgen_alloc_internal_dynamic (sizeof (int) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       block_obj_sizes = (int *)sgen_alloc_internal_dynamic (sizeof (int) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
        ms_calculate_block_obj_sizes (MS_BLOCK_OBJ_SIZE_FACTOR, block_obj_sizes);
 
-       evacuate_block_obj_sizes = sgen_alloc_internal_dynamic (sizeof (gboolean) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       evacuate_block_obj_sizes = (gboolean *)sgen_alloc_internal_dynamic (sizeof (gboolean) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
        for (i = 0; i < num_block_obj_sizes; ++i)
                evacuate_block_obj_sizes [i] = FALSE;
 
-       sweep_slots_available = sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
-       sweep_slots_used = sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
-       sweep_num_blocks = sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       sweep_slots_available = (size_t *)sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       sweep_slots_used = (size_t *)sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       sweep_num_blocks = (size_t *)sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
 
        /*
        {
@@ -2424,7 +2400,7 @@ sgen_marksweep_init_internal (SgenMajorCollector *collector, gboolean is_concurr
        */
 
        for (i = 0; i < MS_BLOCK_TYPE_MAX; ++i)
-               free_block_lists [i] = sgen_alloc_internal_dynamic (sizeof (MSBlockInfo*) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+               free_block_lists [i] = (MSBlockInfo *volatile *)sgen_alloc_internal_dynamic (sizeof (MSBlockInfo*) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
 
        for (i = 0; i < MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES; ++i)
                fast_block_obj_size_indexes [i] = ms_find_block_obj_size_index (i * 8);
@@ -2434,7 +2410,6 @@ sgen_marksweep_init_internal (SgenMajorCollector *collector, gboolean is_concurr
        mono_counters_register ("# major blocks allocated", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_alloced);
        mono_counters_register ("# major blocks freed", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_freed);
        mono_counters_register ("# major blocks lazy swept", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_lazy_swept);
-       mono_counters_register ("# major objects evacuated", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_objects_evacuated);
 #if SIZEOF_VOID_P != 8
        mono_counters_register ("# major blocks freed ideally", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_freed_ideal);
        mono_counters_register ("# major blocks freed less ideally", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_freed_less_ideal);
@@ -2447,10 +2422,6 @@ sgen_marksweep_init_internal (SgenMajorCollector *collector, gboolean is_concurr
        concurrent_mark = is_concurrent;
        collector->is_concurrent = is_concurrent;
        collector->needs_thread_pool = is_concurrent || concurrent_sweep;
-       if (is_concurrent)
-               collector->want_synchronous_collection = &want_evacuation;
-       else
-               collector->want_synchronous_collection = NULL;
        collector->get_and_reset_num_major_objects_marked = major_get_and_reset_num_major_objects_marked;
        collector->supports_cardtable = TRUE;
 
@@ -2497,22 +2468,18 @@ sgen_marksweep_init_internal (SgenMajorCollector *collector, gboolean is_concurr
 
        collector->major_ops_serial.copy_or_mark_object = major_copy_or_mark_object_canonical;
        collector->major_ops_serial.scan_object = major_scan_object_with_evacuation;
+       collector->major_ops_serial.drain_gray_stack = drain_gray_stack;
        if (is_concurrent) {
                collector->major_ops_concurrent_start.copy_or_mark_object = major_copy_or_mark_object_concurrent_canonical;
-               collector->major_ops_concurrent_start.scan_object = major_scan_object_no_mark_concurrent_start;
-
-               collector->major_ops_concurrent.copy_or_mark_object = major_copy_or_mark_object_concurrent_canonical;
-               collector->major_ops_concurrent.scan_object = major_scan_object_no_mark_concurrent;
+               collector->major_ops_concurrent_start.scan_object = major_scan_object_concurrent;
+               collector->major_ops_concurrent_start.drain_gray_stack = drain_gray_stack_concurrent;
 
                collector->major_ops_concurrent_finish.copy_or_mark_object = major_copy_or_mark_object_concurrent_finish_canonical;
-               collector->major_ops_concurrent_finish.scan_object = major_scan_object_no_evacuation;
+               collector->major_ops_concurrent_finish.scan_object = major_scan_object_with_evacuation;
                collector->major_ops_concurrent_finish.scan_vtype = major_scan_vtype_concurrent_finish;
+               collector->major_ops_concurrent_finish.drain_gray_stack = drain_gray_stack;
        }
 
-#if !defined (FIXED_HEAP) && !defined (SGEN_PARALLEL_MARK)
-       if (!is_concurrent)
-               collector->drain_gray_stack = drain_gray_stack;
-
 #ifdef HEAVY_STATISTICS
        mono_counters_register ("Optimized copy", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy);
        mono_counters_register ("Optimized copy nursery", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_nursery);
@@ -2521,6 +2488,7 @@ sgen_marksweep_init_internal (SgenMajorCollector *collector, gboolean is_concurr
        mono_counters_register ("Optimized copy major", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major);
        mono_counters_register ("Optimized copy major small fast", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major_small_fast);
        mono_counters_register ("Optimized copy major small slow", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major_small_slow);
+       mono_counters_register ("Optimized copy major small evacuate", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major_small_evacuate);
        mono_counters_register ("Optimized copy major large", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major_large);
        mono_counters_register ("Optimized major scan", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_major_scan);
        mono_counters_register ("Optimized major scan no refs", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_major_scan_no_refs);
@@ -2529,10 +2497,9 @@ sgen_marksweep_init_internal (SgenMajorCollector *collector, gboolean is_concurr
        mono_counters_register ("Gray stack prefetch fills", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_drain_prefetch_fills);
        mono_counters_register ("Gray stack prefetch failures", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_drain_prefetch_fill_failures);
 #endif
-#endif
 
 #ifdef SGEN_HEAVY_BINARY_PROTOCOL
-       mono_mutex_init (&scanned_objects_list_lock);
+       mono_os_mutex_init (&scanned_objects_list_lock);
 #endif
 
        SGEN_ASSERT (0, SGEN_MAX_SMALL_OBJ_SIZE <= MS_BLOCK_FREE / 2, "MAX_SMALL_OBJ_SIZE must be at most MS_BLOCK_FREE / 2");
index e655347e4a22c51cdbbd15b4c0a7e7bb776fd6f5..ce34f7f4a67a7d304ff038e674c01aa38651e0c5 100644 (file)
@@ -86,7 +86,7 @@ sgen_memgov_calculate_minor_collection_allowance (void)
         * We allow the heap to grow by one third its current size before we start the next
         * major collection.
         */
-       allowance_target = new_heap_size / 3;
+       allowance_target = new_heap_size * SGEN_DEFAULT_ALLOWANCE_HEAP_SIZE_RATIO;
 
        allowance = MAX (allowance_target, MIN_MINOR_COLLECTION_ALLOWANCE);
 
@@ -112,13 +112,32 @@ sgen_memgov_calculate_minor_collection_allowance (void)
        }
 }
 
+static inline size_t
+get_heap_size (void)
+{
+       return major_collector.get_num_major_sections () * major_collector.section_size + los_memory_usage;
+}
+
 gboolean
 sgen_need_major_collection (mword space_needed)
 {
        size_t heap_size;
 
-       if (sgen_concurrent_collection_in_progress ())
+       if (sgen_concurrent_collection_in_progress ()) {
+               heap_size = get_heap_size ();
+
+               if (heap_size <= major_collection_trigger_size)
+                       return FALSE; 
+
+               /* We allow the heap to grow an additional third of the allowance during a concurrent collection */
+               if ((heap_size - major_collection_trigger_size) >
+                               (major_collection_trigger_size
+                               * (SGEN_DEFAULT_ALLOWANCE_HEAP_SIZE_RATIO / (SGEN_DEFAULT_ALLOWANCE_HEAP_SIZE_RATIO + 1))
+                               * SGEN_DEFAULT_CONCURRENT_HEAP_ALLOWANCE_RATIO)) {
+                       return TRUE;
+               }
                return FALSE;
+       }
 
        /* FIXME: This is a cop-out.  We should have some way of figuring this out. */
        if (!major_collector.have_swept ())
@@ -129,7 +148,7 @@ sgen_need_major_collection (mword space_needed)
 
        sgen_memgov_calculate_minor_collection_allowance ();
 
-       heap_size = major_collector.get_num_major_sections () * major_collector.section_size + los_memory_usage;
+       heap_size = get_heap_size ();
 
        return heap_size > major_collection_trigger_size;
 }
@@ -150,7 +169,7 @@ sgen_memgov_major_collection_start (void)
        need_calculate_minor_collection_allowance = TRUE;
 
        if (debug_print_allowance) {
-               SGEN_LOG (0, "Starting collection with heap size %ld bytes", (long)(major_collector.get_num_major_sections () * major_collector.section_size + los_memory_usage));
+               SGEN_LOG (0, "Starting collection with heap size %ld bytes", (long)get_heap_size ());
        }
 }
 
index cda7746a44d8667b4403ae0f59a839b5d24df49c..b1895985dc34e340f32093abfb423f967711f44a 100644 (file)
@@ -38,7 +38,7 @@ extern guint64 stat_scan_object_called_nursery;
 #define HANDLE_PTR(ptr,obj)    do {    \
                void *__old = *(ptr);   \
                SGEN_OBJECT_LAYOUT_STATISTICS_MARK_BITMAP ((obj), (ptr)); \
-               binary_protocol_scan_process_reference ((obj), (ptr), __old); \
+               binary_protocol_scan_process_reference ((full_object), (ptr), __old); \
                if (__old) {    \
                        SERIAL_COPY_OBJECT_FROM_OBJ ((ptr), queue);     \
                        SGEN_COND_LOG (9, __old != *(ptr), "Overwrote field at %p with %p (was: %p)", (ptr), *(ptr), __old); \
@@ -46,9 +46,9 @@ extern guint64 stat_scan_object_called_nursery;
        } while (0)
 
 static void
-SERIAL_SCAN_OBJECT (GCObject *object, SgenDescriptor desc, SgenGrayQueue *queue)
+SERIAL_SCAN_OBJECT (GCObject *full_object, SgenDescriptor desc, SgenGrayQueue *queue)
 {
-       char *start = (char*)object;
+       char *start = (char*)full_object;
 
        SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP;
 
index dc6152c77e77b854cde2b55053d4edf837c4062d..e42e3bf64aa75efc7001025dbb4a124c254d0576 100644 (file)
@@ -253,7 +253,7 @@ sgen_fragment_allocator_alloc (void)
                frag->next = frag->next_in_order = NULL;
                return frag;
        }
-       frag = sgen_alloc_internal (INTERNAL_MEM_FRAGMENT);
+       frag = (SgenFragment *)sgen_alloc_internal (INTERNAL_MEM_FRAGMENT);
        frag->next = frag->next_in_order = NULL;
        return frag;
 }
@@ -267,7 +267,7 @@ sgen_fragment_allocator_add (SgenFragmentAllocator *allocator, char *start, char
        fragment->fragment_start = start;
        fragment->fragment_next = start;
        fragment->fragment_end = end;
-       fragment->next_in_order = fragment->next = unmask (allocator->region_head);
+       fragment->next_in_order = fragment->next = (SgenFragment *)unmask (allocator->region_head);
 
        allocator->region_head = allocator->alloc_head = fragment;
        g_assert (fragment->fragment_end > fragment->fragment_start);
@@ -304,7 +304,7 @@ try_again:
                printf ("retry count for fppf is %d\n", count);
 #endif
 
-       cur = unmask (*prev);
+       cur = (SgenFragment *)unmask (*prev);
 
        while (1) {
                if (cur == NULL)
@@ -326,14 +326,14 @@ try_again:
                                return prev;
                        prev = &cur->next;
                } else {
-                       next = unmask (next);
+                       next = (SgenFragment *)unmask (next);
                        if (InterlockedCompareExchangePointer ((volatile gpointer*)prev, next, cur) != cur)
                                goto try_again;
                        /*we must make sure that the next from cur->next happens after*/
                        mono_memory_write_barrier ();
                }
 
-               cur = unmask (next);
+               cur = (SgenFragment *)unmask (next);
        }
        return NULL;
 }
@@ -448,7 +448,7 @@ sgen_fragment_allocator_par_alloc (SgenFragmentAllocator *allocator, size_t size
 #endif
 
 restart:
-       for (frag = unmask (allocator->alloc_head); unmask (frag); frag = unmask (frag->next)) {
+       for (frag = (SgenFragment *)unmask (allocator->alloc_head); unmask (frag); frag = (SgenFragment *)unmask (frag->next)) {
                HEAVY_STAT (++stat_alloc_iterations);
 
                if (size <= (size_t)(frag->fragment_end - frag->fragment_next)) {
@@ -478,7 +478,7 @@ sgen_fragment_allocator_serial_alloc (SgenFragmentAllocator *allocator, size_t s
        previous = &allocator->alloc_head;
 
        for (frag = *previous; frag; frag = *previous) {
-               char *p = serial_alloc_from_fragment (previous, frag, size);
+               char *p = (char *)serial_alloc_from_fragment (previous, frag, size);
 
                HEAVY_STAT (++stat_alloc_iterations);
 
@@ -558,7 +558,7 @@ restart:
        InterlockedIncrement (&alloc_count);
 #endif
 
-       for (frag = unmask (allocator->alloc_head); frag; frag = unmask (frag->next)) {
+       for (frag = (SgenFragment *)unmask (allocator->alloc_head); frag; frag = (SgenFragment *)unmask (frag->next)) {
                size_t frag_size = frag->fragment_end - frag->fragment_next;
 
                HEAVY_STAT (++stat_alloc_range_iterations);
@@ -618,7 +618,7 @@ sgen_clear_allocator_fragments (SgenFragmentAllocator *allocator)
 {
        SgenFragment *frag;
 
-       for (frag = unmask (allocator->alloc_head); frag; frag = unmask (frag->next)) {
+       for (frag = (SgenFragment *)unmask (allocator->alloc_head); frag; frag = (SgenFragment *)unmask (frag->next)) {
                SGEN_LOG (4, "Clear nursery frag %p-%p", frag->fragment_next, frag->fragment_end);
                sgen_clear_range (frag->fragment_next, frag->fragment_end);
 #ifdef NALLOC_DEBUG
@@ -747,7 +747,7 @@ sgen_build_nursery_fragments (GCMemSection *nursery_section, SgenGrayQueue *unpi
 
                addr0 = addr1 = sgen_nursery_end;
                if (pin_entry < pin_end)
-                       addr0 = *pin_entry;
+                       addr0 = (char *)*pin_entry;
                if (frags_ranges)
                        addr1 = frags_ranges->fragment_start;
 
@@ -802,7 +802,7 @@ sgen_build_nursery_fragments (GCMemSection *nursery_section, SgenGrayQueue *unpi
        if (!unmask (mutator_allocator.alloc_head)) {
                SGEN_LOG (1, "Nursery fully pinned");
                for (pin_entry = pin_start; pin_entry < pin_end; ++pin_entry) {
-                       void *p = *pin_entry;
+                       GCObject *p = (GCObject *)*pin_entry;
                        SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", p, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (p)), sgen_safe_object_get_size (p));
                }
        }
@@ -833,7 +833,7 @@ sgen_can_alloc_size (size_t size)
 
        size = SGEN_ALIGN_UP (size);
 
-       for (frag = unmask (mutator_allocator.alloc_head); frag; frag = unmask (frag->next)) {
+       for (frag = (SgenFragment *)unmask (mutator_allocator.alloc_head); frag; frag = (SgenFragment *)unmask (frag->next)) {
                if ((size_t)(frag->fragment_end - frag->fragment_next) >= size)
                        return TRUE;
        }
@@ -918,7 +918,7 @@ sgen_nursery_allocator_set_nursery_bounds (char *start, char *end)
         * since the nursery size must be a power of 2.
         */
        sgen_space_bitmap_size = (end - start + SGEN_TO_SPACE_GRANULE_IN_BYTES * 8 - 1) / (SGEN_TO_SPACE_GRANULE_IN_BYTES * 8);
-       sgen_space_bitmap = g_malloc0 (sgen_space_bitmap_size);
+       sgen_space_bitmap = (char *)g_malloc0 (sgen_space_bitmap_size);
 
        /* Setup the single first large fragment */
        sgen_minor_collector.init_nursery (&mutator_allocator, start, end);
index 546f895583c44cb8017e67bee75ff895160a19f7..5edccfaabec10720fcb6658f1eb8e7d54b8ccc24 100644 (file)
@@ -107,7 +107,7 @@ sgen_pin_stats_register_address (char *addr, int pin_type)
                        node_ptr = &node->right;
        }
 
-       node = sgen_alloc_internal_dynamic (sizeof (PinStatAddress), INTERNAL_MEM_STATISTICS, TRUE);
+       node = (PinStatAddress *)sgen_alloc_internal_dynamic (sizeof (PinStatAddress), INTERNAL_MEM_STATISTICS, TRUE);
        node->addr = addr;
        node->pin_types = pin_type_bit;
        node->left = node->right = NULL;
@@ -161,7 +161,7 @@ register_vtable (GCVTable vtable, int pin_types)
        int i;
 
        memset (&empty_entry, 0, sizeof (PinnedClassEntry));
-       entry = lookup_vtable_entry (&pinned_class_hash_table, vtable, &empty_entry);
+       entry = (PinnedClassEntry *)lookup_vtable_entry (&pinned_class_hash_table, vtable, &empty_entry);
 
        for (i = 0; i < PIN_TYPE_MAX; ++i) {
                if (pin_types & (1 << i))
@@ -194,7 +194,7 @@ sgen_pin_stats_register_global_remset (GCObject *obj)
                return;
 
        memset (&empty_entry, 0, sizeof (GlobalRemsetClassEntry));
-       entry = lookup_vtable_entry (&global_remset_class_hash_table, SGEN_LOAD_VTABLE (obj), &empty_entry);
+       entry = (GlobalRemsetClassEntry *)lookup_vtable_entry (&global_remset_class_hash_table, SGEN_LOAD_VTABLE (obj), &empty_entry);
 
        ++entry->num_remsets;
 }
@@ -210,7 +210,7 @@ sgen_pin_stats_print_class_stats (void)
                return;
 
        mono_gc_printf (gc_debug_file, "\n%-50s  %10s  %10s  %10s\n", "Class", "Stack", "Static", "Other");
-       SGEN_HASH_TABLE_FOREACH (&pinned_class_hash_table, name, pinned_entry) {
+       SGEN_HASH_TABLE_FOREACH (&pinned_class_hash_table, char *, name, PinnedClassEntry *, pinned_entry) {
                int i;
                mono_gc_printf (gc_debug_file, "%-50s", name);
                for (i = 0; i < PIN_TYPE_MAX; ++i)
@@ -219,7 +219,7 @@ sgen_pin_stats_print_class_stats (void)
        } SGEN_HASH_TABLE_FOREACH_END;
 
        mono_gc_printf (gc_debug_file, "\n%-50s  %10s\n", "Class", "#Remsets");
-       SGEN_HASH_TABLE_FOREACH (&global_remset_class_hash_table, name, remset_entry) {
+       SGEN_HASH_TABLE_FOREACH (&global_remset_class_hash_table, char *, name, GlobalRemsetClassEntry *, remset_entry) {
                mono_gc_printf (gc_debug_file, "%-50s  %10ld\n", name, remset_entry->num_remsets);
        } SGEN_HASH_TABLE_FOREACH_END;
 
index fc0ba0bbdf6c6e977ed1b5a9c33205d90fcdd615..a94af9ddf4494db961697faac801a9273bece46b 100644 (file)
@@ -173,7 +173,7 @@ sgen_dump_pin_queue (void)
        int i;
 
        for (i = 0; i < last_num_pinned; ++i) {
-               void *ptr = pin_queue.data [i];
+               GCObject *ptr = (GCObject *)pin_queue.data [i];
                SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", ptr, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (ptr)), sgen_safe_object_get_size (ptr));
        }
 }
index 0e3fea65318f4973b78fb47040f410f80dfa95d1..196bc3010716ef21708b019d4bddafb2656b4618 100644 (file)
@@ -43,7 +43,7 @@ static void
 realloc_queue (SgenPointerQueue *queue)
 {
        size_t new_size = queue->size ? queue->size + queue->size/2 : 1024;
-       void **new_data = sgen_alloc_internal_dynamic (sizeof (void*) * new_size, queue->mem_type, TRUE);
+       void **new_data = (void **)sgen_alloc_internal_dynamic (sizeof (void*) * new_size, queue->mem_type, TRUE);
 
        memcpy (new_data, queue->data, sizeof (void*) * queue->next_slot);
        sgen_free_internal_dynamic (queue->data, sizeof (void*) * queue->size, queue->mem_type);
index 9f8f9bcd6eb9e82cf87c94235d7d3732dd6e6150..6d76952b0af8a57077aa2cc475916a2209b59a62 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * All binary protocol entries are defined here.  To keep compatibility with past binary
+ * protocol files, new protocol entries need to be defined at the end of the file so that
+ * the sequential numbering is preserved.  We also can't change the types or numbers of
+ * arguments of existing entries.  Instead, a new entry has to be added and the old entry
+ * retired - add a comment to make clear it's not used anymore, but it needs to stay in the
+ * definition file, both to preserve the numbering as well as for the benefit of
+ * `sgen-grep-binprot`, which will still want to read the old entries.
+ *
+ * It might become necessary to add a header protocol entry that includes version
+ * information.  If/when we do that, we should also include word length and endianness.  As
+ * of right now, binary protocol files don't identify themselves as 32 vs 64 bits or big- vs
+ * little-endian.  At that point, `sgen-grep-binprot` should also be made able to read all
+ * combinations of files, regardless of the host.
+ */
+
 BEGIN_PROTOCOL_ENTRY3 (binary_protocol_collection_requested, TYPE_INT, generation, TYPE_SIZE, requested_size, TYPE_BOOL, force)
 DEFAULT_PRINT ()
 IS_ALWAYS_MATCH (TRUE)
@@ -96,7 +112,7 @@ MATCH_INDEX (matches_interval (ptr, entry->addr, entry->size) ? 0 : BINARY_PROTO
 IS_VTABLE_MATCH (FALSE)
 END_PROTOCOL_ENTRY_HEAVY
 
-BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_block_set_state, TYPE_POINTER, addr, TYPE_SIZE, size, TYPE_INT, old, TYPE_INT, new)
+BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_block_set_state, TYPE_POINTER, addr, TYPE_SIZE, size, TYPE_INT, old, TYPE_INT, new_)
 DEFAULT_PRINT ()
 IS_ALWAYS_MATCH (FALSE)
 MATCH_INDEX (matches_interval (ptr, entry->addr, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
@@ -356,6 +372,13 @@ MATCH_INDEX (ptr == entry->cursor ? 1 : ptr == entry->value ? 2 : BINARY_PROTOCO
 IS_VTABLE_MATCH (FALSE)
 END_PROTOCOL_ENTRY_HEAVY
 
+BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_mod_union_remset, TYPE_POINTER, obj, TYPE_POINTER, ptr, TYPE_POINTER, value, TYPE_POINTER, value_vtable)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->obj ? 0 : ptr == entry->ptr ? 1 : ptr == entry->value ? 2 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->value_vtable)
+END_PROTOCOL_ENTRY_HEAVY
+
 #undef BEGIN_PROTOCOL_ENTRY0
 #undef BEGIN_PROTOCOL_ENTRY1
 #undef BEGIN_PROTOCOL_ENTRY2
index 4ea1ac391c9a4e083a5fa3f842d1e8ed3548ff53..5b30cbce11b832f65c640596ba7469f72be9ffb6 100644 (file)
@@ -69,7 +69,7 @@ filename_for_index (int index)
 
        SGEN_ASSERT (0, file_size_limit > 0, "Indexed binary protocol filename must only be used with file size limit");
 
-       filename = sgen_alloc_internal_dynamic (strlen (filename_or_prefix) + 32, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
+       filename = (char *)sgen_alloc_internal_dynamic (strlen (filename_or_prefix) + 32, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
        sprintf (filename, "%s.%d", filename_or_prefix, index);
 
        return filename;
@@ -108,7 +108,7 @@ void
 binary_protocol_init (const char *filename, long long limit)
 {
 #ifdef HAVE_UNISTD_H
-       filename_or_prefix = sgen_alloc_internal_dynamic (strlen (filename) + 1, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
+       filename_or_prefix = (char *)sgen_alloc_internal_dynamic (strlen (filename) + 1, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
        strcpy (filename_or_prefix, filename);
 
        file_size_limit = limit;
@@ -251,7 +251,7 @@ binary_protocol_flush_buffers (gboolean force)
 
        for (buf = binary_protocol_buffers; buf != NULL; buf = buf->next)
                ++num_buffers;
-       bufs = sgen_alloc_internal_dynamic (num_buffers * sizeof (BinaryProtocolBuffer*), INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
+       bufs = (BinaryProtocolBuffer **)sgen_alloc_internal_dynamic (num_buffers * sizeof (BinaryProtocolBuffer*), INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
        for (buf = binary_protocol_buffers, i = 0; buf != NULL; buf = buf->next, i++)
                bufs [i] = buf;
        SGEN_ASSERT (0, i == num_buffers, "Binary protocol buffer count error");
@@ -280,7 +280,7 @@ binary_protocol_get_buffer (int length)
        if (buffer && buffer->index + length <= BINARY_PROTOCOL_BUFFER_SIZE)
                return buffer;
 
-       new_buffer = sgen_alloc_os_memory (sizeof (BinaryProtocolBuffer), SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "debugging memory");
+       new_buffer = (BinaryProtocolBuffer *)sgen_alloc_os_memory (sizeof (BinaryProtocolBuffer), (SgenAllocFlags)(SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE), "debugging memory");
        new_buffer->next = buffer;
        new_buffer->index = 0;
 
index ea427f6a21fee793d5738222aa793cdf3ee52bf8..588651fbc0b67965c946fadc800602c16ca05b0d 100644 (file)
@@ -179,8 +179,8 @@ mark_bit (char *space_bitmap, char *pos)
 static void
 mark_bits_in_range (char *space_bitmap, char *start, char *end)
 {
-       start = align_down (start, SGEN_TO_SPACE_GRANULE_BITS);
-       end = align_up (end, SGEN_TO_SPACE_GRANULE_BITS);
+       start = (char *)align_down (start, SGEN_TO_SPACE_GRANULE_BITS);
+       end = (char *)align_up (end, SGEN_TO_SPACE_GRANULE_BITS);
 
        for (;start < end; start += SGEN_TO_SPACE_GRANULE_IN_BYTES)
                mark_bit (space_bitmap, start);
@@ -244,7 +244,7 @@ alloc_for_promotion_slow_path (int age, size_t objsize)
        size_t allocated_size;
        size_t aligned_objsize = (size_t)align_up (objsize, SGEN_TO_SPACE_GRANULE_BITS);
 
-       p = sgen_fragment_allocator_serial_range_alloc (
+       p = (char *)sgen_fragment_allocator_serial_range_alloc (
                &collector_allocator,
                MAX (aligned_objsize, AGE_ALLOC_BUFFER_DESIRED_SIZE),
                MAX (aligned_objsize, AGE_ALLOC_BUFFER_MIN_SIZE),
@@ -336,8 +336,8 @@ prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size)
        previous = &collector_allocator.alloc_head;
 
        for (frag = *previous; frag; frag = *previous) {
-               char *start = align_up (frag->fragment_next, SGEN_TO_SPACE_GRANULE_BITS);
-               char *end = align_down (frag->fragment_end, SGEN_TO_SPACE_GRANULE_BITS);
+               char *start = (char *)align_up (frag->fragment_next, SGEN_TO_SPACE_GRANULE_BITS);
+               char *end = (char *)align_down (frag->fragment_end, SGEN_TO_SPACE_GRANULE_BITS);
 
                /* Fragment is too small to be usable. */
                if ((end - start) < SGEN_MAX_NURSERY_WASTE) {
@@ -378,12 +378,12 @@ static void
 init_nursery (SgenFragmentAllocator *allocator, char *start, char *end)
 {
        int alloc_quote = (int)((end - start) * alloc_ratio);
-       promotion_barrier = align_down (start + alloc_quote, 3);
+       promotion_barrier = (char *)align_down (start + alloc_quote, 3);
        sgen_fragment_allocator_add (allocator, start, promotion_barrier);
        sgen_fragment_allocator_add (&collector_allocator, promotion_barrier, end);
 
        region_age_size = (end - start) >> SGEN_TO_SPACE_GRANULE_BITS;
-       region_age = g_malloc0 (region_age_size);
+       region_age = (char *)g_malloc0 (region_age_size);
 }
 
 static gboolean
index 629b19a415159e6cf4b56982b271aa18cc0e3b7a..e9706943f847803dc38b88b633b6464aefe85c75 100644 (file)
@@ -23,7 +23,7 @@
 #include "mono/sgen/sgen-gc.h"
 #include "mono/sgen/sgen-thread-pool.h"
 #include "mono/sgen/sgen-pointer-queue.h"
-#include "mono/utils/mono-mutex.h"
+#include "mono/utils/mono-os-mutex.h"
 #ifndef SGEN_WITHOUT_MONO
 #include "mono/utils/mono-threads.h"
 #endif
@@ -52,7 +52,7 @@ static SgenThreadPoolJob*
 get_job_and_set_in_progress (void)
 {
        for (size_t i = 0; i < job_queue.next_slot; ++i) {
-               SgenThreadPoolJob *job = job_queue.data [i];
+               SgenThreadPoolJob *job = (SgenThreadPoolJob *)job_queue.data [i];
                if (job->state == STATE_WAITING) {
                        job->state = STATE_IN_PROGRESS;
                        return job;
@@ -98,7 +98,7 @@ thread_func (void *thread_data)
 {
        thread_init_func (thread_data);
 
-       mono_mutex_lock (&lock);
+       mono_os_mutex_lock (&lock);
        for (;;) {
                /*
                 * It's important that we check the continue idle flag with the lock held.
@@ -115,16 +115,16 @@ thread_func (void *thread_data)
                         * not being signalled, so we have to run this in a loop until we
                         * really have work to do.
                         */
-                       mono_cond_wait (&work_cond, &lock);
+                       mono_os_cond_wait (&work_cond, &lock);
                        continue;
                }
 
-               mono_mutex_unlock (&lock);
+               mono_os_mutex_unlock (&lock);
 
                if (job) {
                        job->func (thread_data, job);
 
-                       mono_mutex_lock (&lock);
+                       mono_os_mutex_lock (&lock);
 
                        SGEN_ASSERT (0, job->state == STATE_IN_PROGRESS, "The job should still be in progress.");
                        job->state = STATE_DONE;
@@ -133,7 +133,7 @@ thread_func (void *thread_data)
                         * Only the main GC thread will ever wait on the done condition, so we don't
                         * have to broadcast.
                         */
-                       mono_cond_signal (&done_cond);
+                       mono_os_cond_signal (&done_cond);
                } else {
                        SGEN_ASSERT (0, do_idle, "Why did we unlock if we still have to wait for idle?");
                        SGEN_ASSERT (0, idle_job_func, "Why do we have idle work when there's no idle job function?");
@@ -142,10 +142,10 @@ thread_func (void *thread_data)
                                do_idle = continue_idle_job ();
                        } while (do_idle && !job_queue.next_slot);
 
-                       mono_mutex_lock (&lock);
+                       mono_os_mutex_lock (&lock);
 
                        if (!do_idle)
-                               mono_cond_signal (&done_cond);
+                               mono_os_cond_signal (&done_cond);
                }
        }
 
@@ -157,9 +157,9 @@ sgen_thread_pool_init (int num_threads, SgenThreadPoolThreadInitFunc init_func,
 {
        SGEN_ASSERT (0, num_threads == 1, "We only support 1 thread pool thread for now.");
 
-       mono_mutex_init (&lock);
-       mono_cond_init (&work_cond, 0);
-       mono_cond_init (&done_cond, 0);
+       mono_os_mutex_init (&lock);
+       mono_os_cond_init (&work_cond);
+       mono_os_cond_init (&done_cond);
 
        thread_init_func = init_func;
        idle_job_func = idle_func;
@@ -171,7 +171,7 @@ sgen_thread_pool_init (int num_threads, SgenThreadPoolThreadInitFunc init_func,
 SgenThreadPoolJob*
 sgen_thread_pool_job_alloc (const char *name, SgenThreadPoolJobFunc func, size_t size)
 {
-       SgenThreadPoolJob *job = sgen_alloc_internal_dynamic (size, INTERNAL_MEM_THREAD_POOL_JOB, TRUE);
+       SgenThreadPoolJob *job = (SgenThreadPoolJob *)sgen_alloc_internal_dynamic (size, INTERNAL_MEM_THREAD_POOL_JOB, TRUE);
        job->name = name;
        job->size = size;
        job->state = STATE_WAITING;
@@ -188,16 +188,16 @@ sgen_thread_pool_job_free (SgenThreadPoolJob *job)
 void
 sgen_thread_pool_job_enqueue (SgenThreadPoolJob *job)
 {
-       mono_mutex_lock (&lock);
+       mono_os_mutex_lock (&lock);
 
        sgen_pointer_queue_add (&job_queue, job);
        /*
         * FIXME: We could check whether there is a job in progress.  If there is, there's
         * no need to signal the condition, at least as long as we have only one thread.
         */
-       mono_cond_signal (&work_cond);
+       mono_os_cond_signal (&work_cond);
 
-       mono_mutex_unlock (&lock);
+       mono_os_mutex_unlock (&lock);
 }
 
 void
@@ -205,12 +205,12 @@ sgen_thread_pool_job_wait (SgenThreadPoolJob *job)
 {
        SGEN_ASSERT (0, job, "Where's the job?");
 
-       mono_mutex_lock (&lock);
+       mono_os_mutex_lock (&lock);
 
        while (find_job_in_queue (job) >= 0)
-               mono_cond_wait (&done_cond, &lock);
+               mono_os_cond_wait (&done_cond, &lock);
 
-       mono_mutex_unlock (&lock);
+       mono_os_mutex_unlock (&lock);
 }
 
 void
@@ -218,12 +218,12 @@ sgen_thread_pool_idle_signal (void)
 {
        SGEN_ASSERT (0, idle_job_func, "Why are we signaling idle without an idle function?");
 
-       mono_mutex_lock (&lock);
+       mono_os_mutex_lock (&lock);
 
        if (continue_idle_job_func ())
-               mono_cond_signal (&work_cond);
+               mono_os_cond_signal (&work_cond);
 
-       mono_mutex_unlock (&lock);
+       mono_os_mutex_unlock (&lock);
 }
 
 void
@@ -231,23 +231,23 @@ sgen_thread_pool_idle_wait (void)
 {
        SGEN_ASSERT (0, idle_job_func, "Why are we waiting for idle without an idle function?");
 
-       mono_mutex_lock (&lock);
+       mono_os_mutex_lock (&lock);
 
        while (continue_idle_job_func ())
-               mono_cond_wait (&done_cond, &lock);
+               mono_os_cond_wait (&done_cond, &lock);
 
-       mono_mutex_unlock (&lock);
+       mono_os_mutex_unlock (&lock);
 }
 
 void
 sgen_thread_pool_wait_for_all_jobs (void)
 {
-       mono_mutex_lock (&lock);
+       mono_os_mutex_lock (&lock);
 
        while (!sgen_pointer_queue_is_empty (&job_queue))
-               mono_cond_wait (&done_cond, &lock);
+               mono_os_cond_wait (&done_cond, &lock);
 
-       mono_mutex_unlock (&lock);
+       mono_os_mutex_unlock (&lock);
 }
 
 gboolean
index 4f096f697f04b0b7d69695a2074de740ae4c7256..8f1af1331299b951daef97af52ceeb1c4d137bb7 100644 (file)
@@ -31,6 +31,7 @@
 #include "mono/sgen/sgen-client.h"
 
 static int workers_num;
+static volatile gboolean forced_stop;
 static WorkerData *workers_data;
 
 static SgenSectionGrayQueue workers_distribute_gray_queue;
@@ -124,16 +125,10 @@ worker_try_finish (void)
        } while (!set_state (old_state, STATE_NOT_WORKING));
 }
 
-static gboolean
-collection_needs_workers (void)
-{
-       return sgen_collection_is_concurrent ();
-}
-
 void
-sgen_workers_enqueue_job (SgenThreadPoolJob *job)
+sgen_workers_enqueue_job (SgenThreadPoolJob *job, gboolean enqueue)
 {
-       if (!collection_needs_workers ()) {
+       if (!enqueue) {
                job->func (NULL, job);
                sgen_thread_pool_job_free (job);
                return;
@@ -196,7 +191,7 @@ init_private_gray_queue (WorkerData *data)
 static void
 thread_pool_init_func (void *data_untyped)
 {
-       WorkerData *data = data_untyped;
+       WorkerData *data = (WorkerData *)data_untyped;
        SgenMajorCollector *major = sgen_get_major_collector ();
 
        sgen_client_thread_register_worker ();
@@ -216,7 +211,7 @@ continue_idle_func (void)
 static void
 marker_idle_func (void *data_untyped)
 {
-       WorkerData *data = data_untyped;
+       WorkerData *data = (WorkerData *)data_untyped;
 
        SGEN_ASSERT (0, continue_idle_func (), "Why are we called when we're not supposed to work?");
        SGEN_ASSERT (0, sgen_concurrent_collection_in_progress (), "The worker should only mark in concurrent collections.");
@@ -226,12 +221,12 @@ marker_idle_func (void *data_untyped)
                SGEN_ASSERT (0, workers_state != STATE_NOT_WORKING, "How did we get from WORK ENQUEUED to NOT WORKING?");
        }
 
-       if (!sgen_gray_object_queue_is_empty (&data->private_gray_queue) || workers_get_work (data)) {
+       if (!forced_stop && (!sgen_gray_object_queue_is_empty (&data->private_gray_queue) || workers_get_work (data))) {
                ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (idle_func_object_ops, &data->private_gray_queue);
 
                SGEN_ASSERT (0, !sgen_gray_object_queue_is_empty (&data->private_gray_queue), "How is our gray queue empty if we just got work?");
 
-               sgen_drain_gray_stack (32, ctx);
+               sgen_drain_gray_stack (ctx);
        } else {
                worker_try_finish ();
        }
@@ -254,7 +249,7 @@ init_distribute_gray_queue (void)
 void
 sgen_workers_init_distribute_gray_queue (void)
 {
-       SGEN_ASSERT (0, sgen_get_major_collector ()->is_concurrent && collection_needs_workers (),
+       SGEN_ASSERT (0, sgen_get_major_collector ()->is_concurrent,
                        "Why should we init the distribute gray queue if we don't need it?");
        init_distribute_gray_queue ();
 }
@@ -263,7 +258,7 @@ void
 sgen_workers_init (int num_workers)
 {
        int i;
-       void **workers_data_ptrs = alloca(num_workers * sizeof(void *));
+       void **workers_data_ptrs = (void **)alloca(num_workers * sizeof(void *));
 
        if (!sgen_get_major_collector ()->is_concurrent) {
                sgen_thread_pool_init (num_workers, thread_pool_init_func, NULL, NULL, NULL);
@@ -274,7 +269,7 @@ sgen_workers_init (int num_workers)
 
        workers_num = num_workers;
 
-       workers_data = sgen_alloc_internal_dynamic (sizeof (WorkerData) * num_workers, INTERNAL_MEM_WORKER_DATA, TRUE);
+       workers_data = (WorkerData *)sgen_alloc_internal_dynamic (sizeof (WorkerData) * num_workers, INTERNAL_MEM_WORKER_DATA, TRUE);
        memset (workers_data, 0, sizeof (WorkerData) * num_workers);
 
        init_distribute_gray_queue ();
@@ -288,11 +283,19 @@ sgen_workers_init (int num_workers)
 }
 
 void
-sgen_workers_start_all_workers (SgenObjectOperations *object_ops)
+sgen_workers_stop_all_workers (void)
 {
-       if (!collection_needs_workers ())
-               return;
+       forced_stop = TRUE;
+
+       sgen_thread_pool_wait_for_all_jobs ();
+       sgen_thread_pool_idle_wait ();
+       SGEN_ASSERT (0, workers_state == STATE_NOT_WORKING, "Can only signal enqueue work when in no work state");
+}
 
+void
+sgen_workers_start_all_workers (SgenObjectOperations *object_ops)
+{
+       forced_stop = FALSE;
        idle_func_object_ops = object_ops;
        mono_memory_write_barrier ();
 
@@ -304,9 +307,6 @@ sgen_workers_join (void)
 {
        int i;
 
-       if (!collection_needs_workers ())
-               return;
-
        sgen_thread_pool_wait_for_all_jobs ();
        sgen_thread_pool_idle_wait ();
        SGEN_ASSERT (0, workers_state == STATE_NOT_WORKING, "Can only signal enqueue work when in no work state");
@@ -318,6 +318,28 @@ sgen_workers_join (void)
                SGEN_ASSERT (0, sgen_gray_object_queue_is_empty (&workers_data [i].private_gray_queue), "Why is there still work left to do?");
 }
 
+/*
+ * Can only be called if the workers are stopped.
+ * If we're stopped, there are also no pending jobs.
+ */
+gboolean
+sgen_workers_have_idle_work (void)
+{
+       int i;
+
+       SGEN_ASSERT (0, forced_stop && sgen_workers_all_done (), "Checking for idle work should only happen if the workers are stopped.");
+
+       if (!sgen_section_gray_queue_is_empty (&workers_distribute_gray_queue))
+               return TRUE;
+
+       for (i = 0; i < workers_num; ++i) {
+               if (!sgen_gray_object_queue_is_empty (&workers_data [i].private_gray_queue))
+                       return TRUE;
+       }
+
+       return FALSE;
+}
+
 gboolean
 sgen_workers_all_done (void)
 {
@@ -331,13 +353,6 @@ sgen_workers_are_working (void)
        return state_is_working_or_enqueued (workers_state);
 }
 
-void
-sgen_workers_wait (void)
-{
-       sgen_thread_pool_idle_wait ();
-       SGEN_ASSERT (0, sgen_workers_all_done (), "Why are the workers not done after we wait for them?");
-}
-
 SgenSectionGrayQueue*
 sgen_workers_get_distribute_section_gray_queue (void)
 {
index 6b549dded153c725c8317d99b83bf21396f8a058..4a3703555ff19613ee1dcc291361ef0c356566ca 100644 (file)
@@ -29,17 +29,18 @@ struct _WorkerData {
 };
 
 void sgen_workers_init (int num_workers);
+void sgen_workers_stop_all_workers (void);
 void sgen_workers_start_all_workers (SgenObjectOperations *object_ops);
 void sgen_workers_ensure_awake (void);
 void sgen_workers_init_distribute_gray_queue (void);
-void sgen_workers_enqueue_job (SgenThreadPoolJob *job);
+void sgen_workers_enqueue_job (SgenThreadPoolJob *job, gboolean enqueue);
 void sgen_workers_wait_for_jobs_finished (void);
 void sgen_workers_distribute_gray_queue_sections (void);
 void sgen_workers_reset_data (void);
 void sgen_workers_join (void);
+gboolean sgen_workers_have_idle_work (void);
 gboolean sgen_workers_all_done (void);
 gboolean sgen_workers_are_working (void);
-void sgen_workers_wait (void);
 SgenSectionGrayQueue* sgen_workers_get_distribute_section_gray_queue (void);
 
 #endif
index dd63ce926c17bc7493eeb4815f96d982e480ce60..2047065c58366da809b70b4c7866853cee0f0a8d 100644 (file)
@@ -1,9 +1,12 @@
 SUBDIRS = assemblyresolve gc-descriptors
 
-check-local: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test-cattr-type-load test-reflection-load-with-context test_platform test-process-exit test-messages test-unhandled-exception-2 test-appdomain-unload rm-empty-logs
+check-local: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test-cattr-type-load test-reflection-load-with-context test_platform test-process-exit test-messages test-env-options test-unhandled-exception-2 test-appdomain-unload rm-empty-logs
 check-full: test-sgen check-local
 check-parallel: compile-tests check-full
 
+check-coreclr:
+       $(MAKE) -C $(mono_build_root)/acceptance-tests check-coreclr
+
 # for backwards compatibility on Wrench
 test-wrench: check-parallel
 
@@ -185,6 +188,7 @@ BASE_TEST_CS_SRC=           \
        delegate10.cs           \
        delegate11.cs           \
        delegate12.cs           \
+       delegate13.cs           \
        remoting1.cs            \
        remoting2.cs            \
        remoting3.cs            \
@@ -359,6 +363,7 @@ BASE_TEST_CS_SRC=           \
        bug-324535.cs   \
        modules.cs      \
        bug-81673.cs    \
+       bug-36848.cs    \
        bug-81691.cs    \
        bug-80307.cs    \
        bug-415577.cs   \
@@ -751,6 +756,9 @@ test-messages: w32message.exe
 endif
 endif
 
+test-env-options:
+       MONO_ENV_OPTIONS="--version" $(RUNTIME) array-init.exe | grep -q Architecture:
+
 if AMD64
 test-sgen : sgen-tests
 else
@@ -861,11 +869,11 @@ runtest: $(TESTSI_CS) $(TESTSI_IL) $(TESTBS) libtest.la $(PREREQSI_IL) $(PREREQS
 
 runtest-managed: test-runner.exe $(TESTSI_CS) $(TESTSI_IL) $(TESTBS) libtest.la $(PREREQSI_IL) $(PREREQSI_CS)
        @if [ "x$$CI" = "x1" ]; then disabled_tests="$(DISABLED_TESTS_WRENCH)"; else disabled_tests="$(DISABLED_TESTS)"; fi; \
-       $(RUNTIME) ./test-runner.exe -j a --disabled "$${disabled_tests}" $(TESTSI_CS) $(TESTBS) $(TESTSI_IL)
+       $(RUNTIME) ./test-runner.exe -j a --testsuite-name "runtime" --disabled "$${disabled_tests}" $(TESTSI_CS) $(TESTBS) $(TESTSI_IL)
 
 runtest-managed-serial: test-runner.exe $(TESTSI_CS) $(TESTSI_IL) $(TESTBS) libtest.la $(PREREQSI_IL) $(PREREQSI_CS)
        @if [ "x$$CI" = "x1" ]; then disabled_tests="$(DISABLED_TESTS_WRENCH)"; else disabled_tests="$(DISABLED_TESTS)"; fi; \
-       $(RUNTIME) ./test-runner.exe -j 1 --disabled "$${disabled_tests}" $(TESTSI_CS) $(TESTBS) $(TESTSI_IL)
+       $(RUNTIME) ./test-runner.exe -j 1 --testsuite-name "runtime" --disabled "$${disabled_tests}" $(TESTSI_CS) $(TESTBS) $(TESTSI_IL)
 
 testjit:
        @if test x$(M) != x0; then $(MAKE) runtest-managed; else $(MAKE) runtest; fi
@@ -1191,6 +1199,12 @@ bug-81673.exe bug-81673-interface.dll: $(srcdir)/bug-81673.cs $(srcdir)/bug-8167
        $(MCS) -out:bug-81673.exe -r:bug-81673-interface.dll $(srcdir)/bug-81673.cs
        $(MCS) -define:WITH_STOP -target:library -out:bug-81673-interface.dll $(srcdir)/bug-81673-interface.cs
 
+EXTRA_DIST += bug-36848-a.cs
+bug-36848.exe bug-36848-a.dll: $(srcdir)/bug-36848.cs $(srcdir)/bug-36848-a.cs
+       $(MCS) -target:library -out:bug-36848-a.dll $(srcdir)/bug-36848-a.cs
+       $(MCS) -r:bug-36848-a.dll -out:bug-36848.exe $(srcdir)/bug-36848.cs
+       $(MCS) -target:library -out:bug-36848-a.dll $(srcdir)/bug-36848-a.cs /define:WITH_STOP
+
 EXTRA_DIST += bug-81691-a.cs bug-81691-b.cs
 bug-81691.exe bug-81691-b.dll: $(srcdir)/bug-81691.cs $(srcdir)/bug-81691-a.cs $(srcdir)/bug-81691-b.cs
        $(MCS) -target:library -out:bug-81691-a.dll $(srcdir)/bug-81691-a.cs
@@ -1309,7 +1323,7 @@ test-generic-sharing-normal: $(GSHARED_TESTS)
        done
 
 test-generic-sharing-managed: test-runner.exe $(GSHARED_TESTS)
-       @$(RUNTIME) ./test-runner.exe -j a --opt-sets "gshared gshared,shared gshared,-inline gshared,-inline,shared" $(GSHARED_TESTS)
+       @$(RUNTIME) ./test-runner.exe -j a --testsuite-name "gshared" --opt-sets "gshared gshared,shared gshared,-inline gshared,-inline,shared" $(GSHARED_TESTS)
 
 if NACL_CODEGEN
 test-generic-sharing:
@@ -1365,15 +1379,25 @@ test-oom: $(OOM_TESTS)
 if HOST_WIN32
 test-unhandled-exception-2:
 else
-test-unhandled-exception-2: unhandled-exception.exe
-       @echo "Testing unhandled-exception_1 ..."; $(RUNTIME) $+ 1 1> unhandled-exception_1.exe.stdout 2> unhandled-exception_1.exe.stderr; if test "x$$?" != "x1";   then exit 1; fi;  \
-        echo "Testing unhandled-exception_2 ..."; $(RUNTIME) $+ 2 1> unhandled-exception_2.exe.stdout 2> unhandled-exception_2.exe.stderr; if test "x$$?" != "x0";   then exit 2; fi;  \
-        echo "Testing unhandled-exception_3 ..."; $(RUNTIME) $+ 3 1> unhandled-exception_3.exe.stdout 2> unhandled-exception_3.exe.stderr; if test "x$$?" != "x0";   then exit 3; fi;  \
-        echo "Testing unhandled-exception_4 ..."; $(RUNTIME) $+ 4 1> unhandled-exception_4.exe.stdout 2> unhandled-exception_4.exe.stderr; if test "x$$?" != "x0";   then exit 4; fi;  \
-        echo "Testing unhandled-exception_5 ..."; $(RUNTIME) $+ 5 1> unhandled-exception_5.exe.stdout 2> unhandled-exception_5.exe.stderr; if test "x$$?" != "x255"; then exit 5; fi;  \
-        echo "Testing unhandled-exception_6 ..."; $(RUNTIME) $+ 6 1> unhandled-exception_6.exe.stdout 2> unhandled-exception_6.exe.stderr; if test "x$$?" != "x0";   then exit 6; fi;  \
-        echo "Testing unhandled-exception_7 ..."; $(RUNTIME) $+ 7 1> unhandled-exception_7.exe.stdout 2> unhandled-exception_7.exe.stderr; if test "x$$?" != "x0";   then exit 7; fi;  \
-        echo "Testing unhandled-exception_8 ..."; $(RUNTIME) $+ 8 1> unhandled-exception_8.exe.stdout 2> unhandled-exception_8.exe.stderr; if test "x$$?" != "x3";   then exit 8; fi
+test-unhandled-exception-2: test-unhandled-exception-2-1 test-unhandled-exception-2-2 test-unhandled-exception-2-3 test-unhandled-exception-2-4        \
+                test-unhandled-exception-2-5 test-unhandled-exception-2-6 test-unhandled-exception-2-7 test-unhandled-exception-2-8
+
+test-unhandled-exception-2-1: unhandled-exception-1.exe test-runner.exe
+       @$(RUNTIME) ./test-runner.exe --testsuite-name $@ --expected-exit-code 1 $<
+test-unhandled-exception-2-2: unhandled-exception-2.exe test-runner.exe
+       @$(RUNTIME) ./test-runner.exe --testsuite-name $@ --expected-exit-code 0 $<
+test-unhandled-exception-2-3: unhandled-exception-3.exe test-runner.exe
+       @$(RUNTIME) ./test-runner.exe --testsuite-name $@ --expected-exit-code 255 $<
+test-unhandled-exception-2-4: unhandled-exception-4.exe test-runner.exe
+       @$(RUNTIME) ./test-runner.exe --testsuite-name $@ --expected-exit-code 0 $<
+test-unhandled-exception-2-5: unhandled-exception-5.exe test-runner.exe
+       @$(RUNTIME) ./test-runner.exe --testsuite-name $@ --expected-exit-code 255 $<
+test-unhandled-exception-2-6: unhandled-exception-6.exe test-runner.exe
+       @$(RUNTIME) ./test-runner.exe --testsuite-name $@ --expected-exit-code 0 $<
+test-unhandled-exception-2-7: unhandled-exception-7.exe test-runner.exe
+       @$(RUNTIME) ./test-runner.exe --testsuite-name $@ --expected-exit-code 0 $<
+test-unhandled-exception-2-8: unhandled-exception-8.exe test-runner.exe
+       @$(RUNTIME) ./test-runner.exe --testsuite-name $@ --expected-exit-code 3 $<
 endif
 
 EXTRA_DIST += appdomain-loader.cs appdomain-tester.cs
@@ -1383,6 +1407,9 @@ test-appdomain-unload: appdomain-loader.exe appdomain-tester.exe
        MONO_DEBUG_ASSEMBLY_UNLOAD=1 $(RUNTIME) -O=gshared appdomain-loader.exe > appdomain-loader.exe.3.stdout || exit 1;
        MONO_DEBUG_ASSEMBLY_UNLOAD=1 $(RUNTIME) appdomain-loader.exe > appdomain-loader.exe.4.stdout || exit 1;
 
+coreclr-gcstress:
+       $(MAKE) -C $(mono_build_root)/acceptance-tests coreclr-gcstress
+
 noinst_LTLIBRARIES = libtest.la
 
 AM_CPPFLAGS = $(GLIB_CFLAGS)
diff --git a/mono/tests/bug-36848-a.cs b/mono/tests/bug-36848-a.cs
new file mode 100644 (file)
index 0000000..5af4354
--- /dev/null
@@ -0,0 +1,12 @@
+using System;
+
+namespace Application
+{
+       public interface IMyInterface
+       {
+               void Run ();
+#if WITH_STOP
+               void Stop ();
+#endif
+       }
+}
diff --git a/mono/tests/bug-36848.cs b/mono/tests/bug-36848.cs
new file mode 100644 (file)
index 0000000..f91447a
--- /dev/null
@@ -0,0 +1,52 @@
+// Load an interface from an invalid DLL and ensure the failure is clean.
+// Notice this is very similar to bug-81673, except the interface is loaded
+// through a transparent proxy instead of directly.
+
+using System;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Proxies;
+using System.Runtime.Remoting.Messaging;
+
+namespace Application
+{
+       public class App
+       {
+               public static void Test ()
+               {
+               RemoteProxy remote2 = new RemoteProxy (typeof(App).Assembly.GetType("Application.Remote"));
+               remote2.GetTransparentProxy ();
+               }
+
+               public static int Main ()
+               {
+                       int numCaught = 0;
+
+                       for (int i = 0; i < 10; ++i) {
+                               try {
+                                       Test ();
+                               } catch (Exception) {
+                                       ++numCaught;
+                               }
+                       }
+                       if (numCaught == 10)
+                               return 0;
+                       return 1;
+               }
+       }
+
+       class Remote : MarshalByRefObject, IMyInterface {
+               public void Run ()
+               {
+               }
+       }
+
+       class RemoteProxy : RealProxy {
+               public RemoteProxy (Type t) : base (t) {
+
+               }
+
+               public override IMessage Invoke (IMessage request) {
+                       return null;
+               }
+       }
+}
diff --git a/mono/tests/delegate13.cs b/mono/tests/delegate13.cs
new file mode 100644 (file)
index 0000000..3a4cfd0
--- /dev/null
@@ -0,0 +1,31 @@
+using System;
+
+public static class Program
+{
+       public static int Main ()
+       {
+               Action d1 = new Action (Method1);
+               Action d2 = new Action (Method2);
+               Action d12 = d1 + d2;
+               Action d21 = d2 + d1;
+
+               if (d1.Method.Name != "Method1")
+                       return 1;
+               if (d2.Method.Name != "Method2")
+                       return 2;
+               if (d12.Method.Name != "Method2")
+                       return 3;
+               if (d21.Method.Name != "Method1")
+                       return 4;
+
+               return 0;
+       }
+
+       public static void Method1 ()
+       {
+       }
+
+       public static void Method2 ()
+       {
+       }
+}
\ No newline at end of file
index a89657a4ba28fdc6b22479091a4683150a152b51..dd3a2a3ea27a4cbebd7ccb25cf428109d8afd7ea 100644 (file)
@@ -16,6 +16,10 @@ class Tests {
                v += 4;
                Console.WriteLine ("Test.F4");
        }
+       static void F8 () {
+               v += 8;
+               Console.WriteLine ("Test.F8");
+       }
 
        public static int Main () {
                return TestDriver.RunTests (typeof (Tests));
@@ -33,6 +37,7 @@ class Tests {
                SimpleDelegate d1 = new SimpleDelegate (F1);
                SimpleDelegate d2 = new SimpleDelegate (F2);
                SimpleDelegate d4 = new SimpleDelegate (F4);
+               SimpleDelegate d8 = new SimpleDelegate (F8);
 
                if (d1 - d1 != null)
                        return 1;
@@ -82,21 +87,21 @@ class Tests {
 
                if (d12 - d12 != null)
                        return 21;
-               if (!check_is_expected_v (d12 - d14, 2))
+               if (!check_is_expected_v (d12 - d14, 3))
                        return 22;
-               if (!check_is_expected_v (d12 - d24, 1))
+               if (!check_is_expected_v (d12 - d24, 3))
                        return 23;
 
-               if (!check_is_expected_v (d14 - d12, 4))
+               if (!check_is_expected_v (d14 - d12, 5))
                        return 24;
                if (d14 - d14 != null)
                        return 25;
-               if (!check_is_expected_v (d14 - d24, 1))
+               if (!check_is_expected_v (d14 - d24, 5))
                        return 26;
 
-               if (!check_is_expected_v (d24 - d12, 4))
+               if (!check_is_expected_v (d24 - d12, 6))
                        return 27;
-               if (!check_is_expected_v (d24 - d14, 2))
+               if (!check_is_expected_v (d24 - d14, 6))
                        return 28;
                if (d24 - d24 != null)
                        return 29;
@@ -112,7 +117,7 @@ class Tests {
 
                if (!check_is_expected_v (d124 - d12, 4))
                        return 34;
-               if (!check_is_expected_v (d124 - d14, 2))
+               if (!check_is_expected_v (d124 - d14, 7))
                        return 35;
                if (!check_is_expected_v (d124 - d24, 1))
                        return 36;
@@ -120,6 +125,35 @@ class Tests {
                if (d124 - d124 != null)
                        return 37;
 
+               SimpleDelegate d1248 = d1 + d2 + d4 + d8;
+
+               if (!check_is_expected_v (d1248 - (d1 + d2), 12))
+                       return 41;
+               if (!check_is_expected_v (d1248 - (d1 + d4), 15))
+                       return 42;
+               if (!check_is_expected_v (d1248 - (d1 + d8), 15))
+                       return 43;
+               if (!check_is_expected_v (d1248 - (d2 + d4), 9))
+                       return 44;
+               if (!check_is_expected_v (d1248 - (d2 + d8), 15))
+                       return 45;
+               if (!check_is_expected_v (d1248 - (d4 + d8), 3))
+                       return 46;
+
+               if (!check_is_expected_v (d1248 - (d1 + d2 + d4), 8))
+                       return 51;
+               if (!check_is_expected_v (d1248 - (d1 + d2 + d8), 15))
+                       return 52;
+               if (!check_is_expected_v (d1248 - (d1 + d4 + d8), 15))
+                       return 53;
+               if (!check_is_expected_v (d1248 - (d2 + d4 + d8), 1))
+                       return 54;
+               if (!check_is_expected_v (d1248 - (d2 + d4 + d8), 1))
+                       return 54;
+
+               if (d1248 - d1248 != null)
+                       return 55;
+
                return 0;
        }
 
index 2f8f55cd53abcc3b48cbbdeee2f1fdfaf677f757..fa65a2c6f74a99808858fae0cd6918c90141726f 100644 (file)
+using System;
+using System.Collections.Generic;
+
 namespace Test {
 
-public enum YaddaYadda {
-       buba,
-       birba,
-       dadoom,
-};
-
-public enum byteenum : byte {
-       zero,
-       one,
-       two,
-       three
-}
+       enum ByteEnum : byte {
+               A = 10
+       }
 
-public enum longenum: long {
-       s0 = 0,
-       s1 = 1
-}
+       enum SByteEnum : sbyte {
+               A = -11
+       }
 
-public enum sbyteenum : sbyte {
-       d0,
-       d1
-}
+       enum ShortEnum : short {
+               A = -12
+       }
+
+       enum UShortEnum : ushort {
+               A = 13
+       }
+
+       enum IntEnum : int {
+               A = -15
+       }
+
+       enum UIntEnum : uint {
+               A = 16
+       }
+
+       enum LongEnum : long {
+               A = -153453525432334L
+       }
+
+       enum ULongEnum : ulong {
+               A = 164923797563459L
+       }
+
+       public enum YaddaYadda {
+               buba,
+               birba,
+               dadoom,
+       };
+
+       public enum byteenum : byte {
+               zero,
+               one,
+               two,
+               three
+       }
+
+       public enum longenum: long {
+               s0 = 0,
+               s1 = 1
+       }
+
+       public enum sbyteenum : sbyte {
+               d0,
+               d1
+       }
+
+       public class Tests {
+               public static int test_0_basic_enum_vals ()
+               {
+                       YaddaYadda val = YaddaYadda.dadoom;
+                       byteenum be = byteenum.one;
+                       if (val != YaddaYadda.dadoom)
+                               return 1;
+                       if (be != (byteenum)1)
+                               return 2;
+                       return 0;
+               }
+
+               public static int test_0_byte_enum_hashcode ()
+               {
+                       if (ByteEnum.A.GetHashCode () != EqualityComparer<ByteEnum>.Default.GetHashCode (ByteEnum.A))
+                               return 1;
+                       if (ByteEnum.A.GetHashCode () != ((byte)ByteEnum.A).GetHashCode () )
+                               return 2;
+                       return 0;
+               }
+
+               public static int test_0_sbyte_enum_hashcode ()
+               {
+                       if (SByteEnum.A.GetHashCode () != EqualityComparer<SByteEnum>.Default.GetHashCode (SByteEnum.A))
+                               return 1;
+                       if (SByteEnum.A.GetHashCode () != ((sbyte)SByteEnum.A).GetHashCode () )
+                               return 2;
+                       return 0;
+               }
+
+               public static int test_0_short_enum_hashcode ()
+               {
+                       if (ShortEnum.A.GetHashCode () != EqualityComparer<ShortEnum>.Default.GetHashCode (ShortEnum.A))
+                               return 1;
+                       if (ShortEnum.A.GetHashCode () != ((short)ShortEnum.A).GetHashCode () )
+                               return 2;
+                       return 0;
+               }
+
+               public static int test_0_ushort_enum_hashcode ()
+               {
+                       if (UShortEnum.A.GetHashCode () != EqualityComparer<UShortEnum>.Default.GetHashCode (UShortEnum.A))
+                               return 1;
+                       if (UShortEnum.A.GetHashCode () != ((ushort)UShortEnum.A).GetHashCode () )
+                               return 2;
+                       return 0;
+               }
+
+               public static int test_0_int_enum_hashcode ()
+               {
+                       if (IntEnum.A.GetHashCode () != EqualityComparer<IntEnum>.Default.GetHashCode (IntEnum.A))
+                               return 1;
+                       if (IntEnum.A.GetHashCode () != ((int)IntEnum.A).GetHashCode () )
+                               return 2;
+                       return 0;
+               }
+
+               public static int test_0_uint_enum_hashcode ()
+               {
+                       if (UIntEnum.A.GetHashCode () != EqualityComparer<UIntEnum>.Default.GetHashCode (UIntEnum.A))
+                               return 1;
+                       if (UIntEnum.A.GetHashCode () != ((uint)UIntEnum.A).GetHashCode () )
+                               return 2;
+                       return 0;
+               }
+
+               public static int test_0_long_enum_hashcode ()
+               {
+                       if (LongEnum.A.GetHashCode () != EqualityComparer<LongEnum>.Default.GetHashCode (LongEnum.A))
+                               return 1;
+                       if (LongEnum.A.GetHashCode () != ((long)LongEnum.A).GetHashCode () )
+                               return 2;
+                       return 0;
+               }
+
+               public static int test_0_ulong_enum_hashcode ()
+               {
+                       if (ULongEnum.A.GetHashCode () != EqualityComparer<ULongEnum>.Default.GetHashCode (ULongEnum.A))
+                               return 1;
+                       if (ULongEnum.A.GetHashCode () != ((ulong)ULongEnum.A).GetHashCode () )
+                               return 2;
+                       return 0;
+               }
+
+               public static int Main (String[] args) {
+                       return TestDriver.RunTests (typeof (Tests), args);
+               }
 
-public class test {
-       public static int Main () {
-               YaddaYadda val = YaddaYadda.dadoom;
-               byteenum be = byteenum.one;
-               if (val != YaddaYadda.dadoom)
-                       return 1;
-               if (be != (byteenum)1)
-                       return 2;
-               return 0;
        }
-}
 
 }
index dde31cbc345b5c5bc1adff7db1d8959454b7234b..7bbfbe38545bd3b0ccef5a7488286416ecead59b 100644 (file)
@@ -2,28 +2,79 @@ using System;
 using System.Threading;
 using System.Runtime.ConstrainedExecution;
 
-class P {
+class P
+{
+       int index;
+       ManualResetEvent mre;
 
-       static public int count = 0;
-       ~P () {
-               // Console.WriteLine ("finalizer done");
-               count++;
+       public static int Count = 0;
+
+       public P (int index, ManualResetEvent mre)
+       {
+               this.index = index;
+               this.mre = mre;
+       }
+
+       ~P ()
+       {
+               mre.Set ();
+
+               Console.Write (String.Format ("[{0}] Finalize\n", index));
+               Count ++;
+               Console.Write (String.Format ("[{0}] Finalize -- end\n", index));
        }
 }
 
-class T {
-       static int Main () {
-               for (int i = 0; i < 1000; ++i) {
-                       var t = new Thread (() => {
-                                       P p = new P ();
-                               });
-                       t.Start ();
-                       t.Join ();
+class Driver
+{
+       static int Main ()
+       {
+               Thread thread;
+               ManualResetEvent mre;
+               int collected, total = 100;
+
+               for (int i = 1; i <= 1000; ++i) {
+                       P.Count = 0;
+
+                       mre = new ManualResetEvent (false);
+
+                       thread = new Thread (() => {
+                               for (int j = 0; j < total; ++j)
+                                       new P (i, mre);
+                       });
+                       thread.Start ();
+                       thread.Join ();
 
                        GC.Collect ();
+
+                       Console.Write (String.Format ("[{0}] Wait for pending finalizers\n", i));
                        GC.WaitForPendingFinalizers ();
-                       if (P.count != i + 1)
-                               return 1;
+                       Console.Write (String.Format ("[{0}] Wait for pending finalizers -- end\n", i));
+
+                       collected = P.Count;
+                       if (collected == 0) {
+                               if (!mre.WaitOne (5000)) {
+                                       Console.Write (String.Format ("[{0}] Finalizer never started\n", i));
+                                       return 1;
+                               }
+
+                               Console.Write (String.Format ("[{0}] Wait for pending finalizers (2)\n", i));
+                               GC.WaitForPendingFinalizers ();
+                               Console.Write (String.Format ("[{0}] Wait for pending finalizers (2) -- end\n", i));
+
+                               collected = P.Count;
+                               if (collected == 0) {
+                                       /* At least 1 finalizer started (as mre has been Set), but P.Count has not been incremented */
+                                       Console.Write (String.Format ("[{0}] Did not wait for finalizers to run\n", i));
+                                       return 2;
+                               }
+                       }
+
+                       if (collected != total) {
+                               /* Not all finalizer finished, before returning from WaitForPendingFinalizers. Or not all objects
+                                * have been garbage collected; this might be due to false pinning */
+                               Console.Write (String.Format ("[{0}] Finalized {1} of {2} objects\n", i, collected, total));
+                       }
                }
                return 0;
        }
index 045c6a1a860656cacdf3a17c08c182e509088c27..de80d9f693f06a8e96a032c2da3cbb9423792e19 100644 (file)
@@ -99,7 +99,7 @@ static gunichar2* marshal_bstr_alloc(const gchar* str)
        int slen = strlen (str);
        gunichar2* temp;
        /* allocate len + 1 utf16 characters plus 4 byte integer for length*/
-       ret = g_malloc ((slen + 1) * sizeof(gunichar2) + sizeof(guint32));
+       ret = (gchar *)g_malloc ((slen + 1) * sizeof(gunichar2) + sizeof(guint32));
        if (ret == NULL)
                return NULL;
        temp = g_utf8_to_utf16 (str, -1, NULL, NULL, NULL);
@@ -129,7 +129,7 @@ test_lpwstr_marshal (unsigned short* chars, long length)
        int i = 0;
        unsigned short *res;
 
-       res = marshal_alloc (2 * (length + 1));
+       res = (unsigned short *)marshal_alloc (2 * (length + 1));
 
        // printf("test_lpwstr_marshal()\n");
        
@@ -152,7 +152,7 @@ test_lpwstr_marshal_out (unsigned short** chars)
        const char abc[] = "ABC";
        glong len = strlen(abc);
 
-       *chars = marshal_alloc (2 * (len + 1));
+       *chars = (unsigned short *)marshal_alloc (2 * (len + 1));
        
        while ( i < len ) {
                (*chars) [i] = abc[i];
@@ -515,7 +515,7 @@ mono_test_marshal_out_byref_array_out_size_param (int **out_arr, int *out_len)
        int i, len;
 
        len = 4;
-       arr = marshal_alloc (sizeof (gint32) * len);
+       arr = (gint32 *)marshal_alloc (sizeof (gint32) * len);
        for (i = 0; i < len; ++i)
                arr [i] = i;
        *out_arr = arr;
@@ -524,6 +524,19 @@ mono_test_marshal_out_byref_array_out_size_param (int **out_arr, int *out_len)
        return 0;
 }
 
+LIBTEST_API int STDCALL
+mono_test_marshal_out_lparray_out_size_param (int *arr, int *out_len)
+{
+       int i, len;
+
+       len = 4;
+       for (i = 0; i < len; ++i)
+               arr [i] = i;
+       *out_len = len;
+
+       return 0;
+}
+
 LIBTEST_API int STDCALL  
 mono_test_marshal_inout_nonblittable_array (gunichar2 *a1)
 {
@@ -610,7 +623,7 @@ LIBTEST_API int STDCALL
 mono_test_marshal_out_struct (int a, simplestruct *ss, int b, OutVTypeDelegate func)
 {
        /* Check that the input pointer is ignored */
-       ss->d = (gpointer)0x12345678;
+       ss->d = (const char *)0x12345678;
 
        func (a, ss, b);
 
@@ -876,6 +889,18 @@ mono_test_marshal_return_delegate (SimpleDelegate delegate)
        return delegate;
 }
 
+typedef int DelegateByrefDelegate (void *);
+
+LIBTEST_API int STDCALL
+mono_test_marshal_delegate_ref_delegate (DelegateByrefDelegate del)
+{
+       int (*ptr) (int i);
+
+       del (&ptr);
+
+       return ptr (54);
+}
+
 static int STDCALL
 return_plus_one (int i)
 {
@@ -993,7 +1018,7 @@ mono_test_marshal_delegate7 (SimpleDelegate7 delegate)
        simplestruct *ptr;
 
        /* Check that the input pointer is ignored */
-       ptr = (gpointer)0x12345678;
+       ptr = (simplestruct *)0x12345678;
 
        res = delegate (&ptr);
        if (res != 0)
@@ -1042,7 +1067,7 @@ typedef int (STDCALL *SimpleDelegate9) (return_int_fnt d);
 LIBTEST_API int STDCALL 
 mono_test_marshal_delegate9 (SimpleDelegate9 delegate, gpointer ftn)
 {
-       return delegate (ftn);
+       return delegate ((return_int_fnt)ftn);
 }
 
 static int STDCALL 
@@ -1147,7 +1172,7 @@ mono_test_marshal_stringbuilder_out (char **s)
        const char m[] = "This is my message.  Isn't it nice?";
        char *str;
 
-       str = marshal_alloc (strlen (m) + 1);
+       str = (char *)marshal_alloc (strlen (m) + 1);
        memcpy (str, m, strlen (m) + 1);
        
        *s = str;
@@ -1163,7 +1188,7 @@ mono_test_marshal_stringbuilder_out_unicode (gunichar2 **s)
        s2 = g_utf8_to_utf16 (m, -1, NULL, &len, NULL);
        
        len = (len * 2) + 2;
-       *s = marshal_alloc (len);
+       *s = (gunichar2 *)marshal_alloc (len);
        memcpy (*s, s2, len);
 
        g_free (s2);
@@ -1180,18 +1205,21 @@ mono_test_marshal_stringbuilder_ref (char **s)
        if (strcmp (*s, "ABC"))
                return 1;
 
-       str = marshal_alloc (strlen (m) + 1);
+       str = (char *)marshal_alloc (strlen (m) + 1);
        memcpy (str, m, strlen (m) + 1);
        
        *s = str;
        return 0;
 }
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++-compat"
 typedef struct {
 #ifndef __GNUC__
     char a;
 #endif
 } EmptyStruct;
+#pragma GCC diagnostic pop
 
 LIBTEST_API int STDCALL 
 mono_test_marshal_empty_string_array (char **array)
@@ -1309,7 +1337,7 @@ mono_test_byvalstr_gen (void)
 {
        ByValStrStruct *ret;
        
-       ret = malloc(sizeof(ByValStrStruct));
+       ret = (ByValStrStruct *)malloc (sizeof (ByValStrStruct));
        memset(ret, 'a', sizeof(ByValStrStruct)-1);
        ret->a[sizeof(ByValStrStruct)-1] = 0;
 
@@ -1465,7 +1493,7 @@ class_marshal_test4 (SimpleObj *obj1)
 LIBTEST_API void STDCALL
 class_marshal_test1 (SimpleObj **obj1)
 {
-       SimpleObj *res = malloc (sizeof (SimpleObj));
+       SimpleObj *res = (SimpleObj *)malloc (sizeof (SimpleObj));
 
        res->str = marshal_strdup ("ABC");
        res->i = 5;
@@ -1708,7 +1736,7 @@ mono_test_asany (void *ptr, int what)
                GError *error = NULL;
                char *s;
 
-               s = g_utf16_to_utf8 (ptr, -1, NULL, NULL, &error);
+               s = g_utf16_to_utf8 ((const gunichar2 *)ptr, -1, NULL, NULL, &error);
 
                if (!s)
                        return 1;
@@ -1740,7 +1768,7 @@ typedef struct
 LIBTEST_API int STDCALL 
 mono_test_marshal_asany_in (void* ptr)
 {
-       AsAnyStruct* asAny = ptr;
+       AsAnyStruct *asAny = (AsAnyStruct *)ptr;
        int res = asAny->i + asAny->j + asAny->k;
 
        return res;
@@ -1749,7 +1777,7 @@ mono_test_marshal_asany_in (void* ptr)
 LIBTEST_API int STDCALL 
 mono_test_marshal_asany_inout (void* ptr)
 {
-       AsAnyStruct* asAny = ptr;
+       AsAnyStruct *asAny = (AsAnyStruct *)ptr;
        int res = asAny->i + asAny->j + asAny->k;
 
        marshal_free (asAny->s);
@@ -1765,7 +1793,7 @@ mono_test_marshal_asany_inout (void* ptr)
 LIBTEST_API int STDCALL 
 mono_test_marshal_asany_out (void* ptr)
 {
-       AsAnyStruct* asAny = ptr;
+       AsAnyStruct *asAny = (AsAnyStruct *)ptr;
        int res = asAny->i + asAny->j + asAny->k;
 
        asAny->i = 10;
@@ -1951,7 +1979,7 @@ mono_test_marshal_pass_return_custom_in_delegate (PassReturnPtrDelegate del)
        buf [0] = 0;
        buf [1] = 10;
 
-       ptr = del (&buf);
+       ptr = (guint32 *)del (&buf);
 
        res = ptr [1];
 
@@ -3545,8 +3573,8 @@ mono_test_marshal_lookup_symbol (const char *symbol_name)
        return lookup_mono_symbol (symbol_name);
 }
 
-#define MONO_BEGIN_EFRAME { void *__region_cookie = mono_threads_enter_gc_unsafe_region ? mono_threads_enter_gc_unsafe_region () : NULL;
-#define MONO_END_EFRAME if (mono_threads_exit_gc_unsafe_region) mono_threads_exit_gc_unsafe_region (__region_cookie); }
+#define MONO_BEGIN_EFRAME { void *__dummy; void *__region_cookie = mono_threads_enter_gc_unsafe_region ? mono_threads_enter_gc_unsafe_region (&__dummy) : NULL;
+#define MONO_END_EFRAME if (mono_threads_exit_gc_unsafe_region) mono_threads_exit_gc_unsafe_region (__region_cookie, &__dummy); }
 
 /**
  * test_method_thunk:
@@ -3561,22 +3589,22 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
        int ret = 0;
 
        gpointer (*mono_method_get_unmanaged_thunk)(gpointer)
-               = lookup_mono_symbol ("mono_method_get_unmanaged_thunk");
+               = (gpointer (*)(gpointer))lookup_mono_symbol ("mono_method_get_unmanaged_thunk");
 
        gpointer (*mono_string_new_wrapper)(const char *)
-               = lookup_mono_symbol ("mono_string_new_wrapper");
+               = (gpointer (*)(const char *))lookup_mono_symbol ("mono_string_new_wrapper");
 
-       char(*mono_string_to_utf8)(gpointer)
-               = lookup_mono_symbol ("mono_string_to_utf8");
+       char *(*mono_string_to_utf8)(gpointer)
+               = (char *(*)(gpointer))lookup_mono_symbol ("mono_string_to_utf8");
 
        gpointer (*mono_object_unbox)(gpointer)
-               = lookup_mono_symbol ("mono_object_unbox");
+               = (gpointer (*)(gpointer))lookup_mono_symbol ("mono_object_unbox");
 
-       gpointer* (*mono_threads_enter_gc_unsafe_region) ()
-               = lookup_mono_symbol ("mono_threads_enter_gc_unsafe_region");
+       gpointer (*mono_threads_enter_gc_unsafe_region) (gpointer)
+               = (gpointer (*)(gpointer))lookup_mono_symbol ("mono_threads_enter_gc_unsafe_region");
 
-       gpointer (*mono_threads_exit_gc_unsafe_region) (gpointer *)
-               = lookup_mono_symbol ("mono_threads_exit_gc_unsafe_region");
+       void (*mono_threads_exit_gc_unsafe_region) (gpointer, gpointer)
+               = (void (*)(gpointer, gpointer))lookup_mono_symbol ("mono_threads_exit_gc_unsafe_region");
 
        
 
@@ -3596,7 +3624,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                goto done;
        }
 
-       CreateObject = mono_method_get_unmanaged_thunk (create_object_method_handle);
+       CreateObject = (gpointer (STDCALL *)(gpointer *))mono_method_get_unmanaged_thunk (create_object_method_handle);
        if (!CreateObject) {
                ret = 3;
                goto done;
@@ -3607,14 +3635,14 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
 
        case 0: {
                /* thunks.cs:Test.Test0 */
-               void (STDCALL *F)(gpointer*) = test_method;
+               void (STDCALL *F)(gpointer *) = (void (STDCALL *)(gpointer *))test_method;
                F (&ex);
                break;
        }
 
        case 1: {
                /* thunks.cs:Test.Test1 */
-               int (STDCALL *F)(gpointer*) = test_method;
+               int (STDCALL *F)(gpointer *) = (int (STDCALL *)(gpointer *))test_method;
                if (F (&ex) != 42) {
                        ret = 4;
                        goto done;
@@ -3624,7 +3652,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
 
        case 2: {
                /* thunks.cs:Test.Test2 */
-               gpointer (STDCALL *F)(gpointer, gpointer*) = test_method;
+               gpointer (STDCALL *F)(gpointer, gpointer*) = (gpointer (STDCALL *)(gpointer, gpointer *))test_method;
                gpointer str = mono_string_new_wrapper ("foo");
                if (str != F (str, &ex)) {
                        ret = 4;
@@ -3639,7 +3667,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                gpointer obj;
                gpointer str;
 
-               F = test_method;
+               F = (gpointer (STDCALL *)(gpointer, gpointer, gpointer *))test_method;
                obj = CreateObject (&ex);
                str = mono_string_new_wrapper ("bar");
 
@@ -3656,7 +3684,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                gpointer obj;
                gpointer str;
 
-               F = test_method;
+               F = (int (STDCALL *)(gpointer, gpointer, int, gpointer *))test_method;
                obj = CreateObject (&ex);
                str = mono_string_new_wrapper ("bar");
 
@@ -3674,7 +3702,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                gpointer obj;
                gpointer str;
 
-               F = test_method;
+               F = (int (STDCALL *)(gpointer, gpointer, int, gpointer *))test_method;
                obj = CreateObject (&ex);
                str = mono_string_new_wrapper ("bar");
 
@@ -3695,7 +3723,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                gpointer str = mono_string_new_wrapper ("Test6");
                int res;
 
-               F = test_method;
+               F = (int (STDCALL *)(gpointer, guint8, gint16, gint32, gint64, float, double, gpointer, gpointer *))test_method;
                obj = CreateObject (&ex);
 
                res = F (obj, 254, 32700, -245378, 6789600, 3.1415, 3.1415, str, &ex);
@@ -3714,7 +3742,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
 
        case 7: {
                /* thunks.cs:Test.Test7 */
-               gint64 (STDCALL *F)(gpointer*) = test_method;
+               gint64 (STDCALL *F)(gpointer*) = (gint64 (STDCALL *)(gpointer *))test_method;
                if (F (&ex) != G_MAXINT64) {
                        ret = 4;
                        goto done;
@@ -3735,7 +3763,8 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                double a6;
                gpointer a7;
 
-               F = test_method;
+               F = (void (STDCALL *)(guint8 *, gint16 *, gint32 *, gint64 *, float *, double *,
+                       gpointer *, gpointer *))test_method;
 
                F (&a1, &a2, &a3, &a4, &a5, &a6, &a7, &ex);
                if (ex) {
@@ -3760,7 +3789,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
        case 9: {
                /* thunks.cs:Test.Test9 */
                void (STDCALL *F)(guint8*, gint16*, gint32*, gint64*, float*, double*,
-                                gpointer*, gpointer*);
+                       gpointer*, gpointer*);
 
                guint8 a1;
                gint16 a2;
@@ -3770,7 +3799,8 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                double a6;
                gpointer a7;
 
-               F = test_method;
+               F = (void (STDCALL *)(guint8 *, gint16 *, gint32 *, gint64 *, float *, double *,
+                       gpointer *, gpointer *))test_method;
 
                F (&a1, &a2, &a3, &a4, &a5, &a6, &a7, &ex);
                if (!ex) {
@@ -3793,7 +3823,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                        goto done;
                }
 
-               F = test_method;
+               F = (void (STDCALL *)(gpointer *, gpointer *))test_method;
 
                F (&obj1, &ex);
                if (ex) {
@@ -3828,7 +3858,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                        goto done;
                }
 
-               a1 = mono_object_unbox (obj);
+               a1 = (TestStruct *)mono_object_unbox (obj);
                if (!a1) {
                        ret = 6;
                        goto done;
@@ -3837,9 +3867,9 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                a1->A = 42;
                a1->B = 3.1415;
 
-               F = test_method;
+               F = (int (STDCALL *)(gpointer *, gpointer *))test_method;
 
-               res = F (obj, &ex);
+               res = F ((gpointer *)obj, &ex);
                if (ex) {
                        ret = 7;
                        goto done;
@@ -3877,13 +3907,13 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                        goto done;
                }
 
-               a1 = mono_object_unbox (obj);
+               a1 = (TestStruct *)mono_object_unbox (obj);
                if (!a1) {
                        ret = 6;
                        goto done;
                }
 
-               F = test_method;
+               F = (void (STDCALL *)(gpointer, gpointer *))test_method;
 
                F (obj, &ex);
                if (ex) {
@@ -3911,7 +3941,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                TestStruct *a1;
                gpointer obj;
 
-               F = test_method;
+               F = (gpointer (STDCALL *)(gpointer *))test_method;
 
                obj = F (&ex);
                if (ex) {
@@ -3924,7 +3954,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                        goto done;
                }
 
-               a1 = mono_object_unbox (obj);
+               a1 = (TestStruct *)mono_object_unbox (obj);
 
                if (a1->A != 42) {
                        ret = 5;
@@ -3957,7 +3987,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                        goto done;
                }
                
-               a1 = mono_object_unbox (obj);
+               a1 = (TestStruct *)mono_object_unbox (obj);
 
                if (!a1) {
                        ret = 6;
@@ -3967,7 +3997,7 @@ test_method_thunk (int test_id, gpointer test_method_handle, gpointer create_obj
                a1->A = 42;
                a1->B = 3.1415;
 
-               F = test_method;
+               F = (void (STDCALL *)(gpointer, gpointer *))test_method;
 
                F (obj, &ex);
                if (ex) {
@@ -5381,7 +5411,7 @@ static int call_managed_res;
 static void
 call_managed (gpointer arg)
 {
-       SimpleDelegate del = arg;
+       SimpleDelegate del = (SimpleDelegate)arg;
 
        call_managed_res = del (42);
 }
@@ -5395,7 +5425,7 @@ mono_test_marshal_thread_attach (SimpleDelegate del)
        int res;
        pthread_t t;
 
-       res = pthread_create (&t, NULL, (gpointer)call_managed, del);
+       res = pthread_create (&t, NULL, (gpointer (*)(gpointer))call_managed, del);
        g_assert (res == 0);
        pthread_join (t, NULL);
 
@@ -5441,7 +5471,7 @@ mono_test_marshal_lpwstr (gunichar2 *str)
 LIBTEST_API char* STDCALL
 mono_test_marshal_return_lpstr (void)
 {
-       char *res = marshal_alloc (4);
+       char *res = (char *)marshal_alloc (4);
        strcpy (res, "XYZ");
        return res;
 }
@@ -5450,7 +5480,7 @@ mono_test_marshal_return_lpstr (void)
 LIBTEST_API gunichar2* STDCALL
 mono_test_marshal_return_lpwstr (void)
 {
-       gunichar2 *res = marshal_alloc (8);
+       gunichar2 *res = (gunichar2 *)marshal_alloc (8);
        gunichar2* tmp = g_utf8_to_utf16 ("XYZ", -1, NULL, NULL, NULL);
 
        memcpy (res, tmp, 8);
index d4d6bebd0db5b76eddf9fcf91acd1f9438413c99..cf87dbd103ebb573474156857868bb06f1522177 100644 (file)
@@ -234,6 +234,9 @@ public class Tests {
        [DllImport ("libtest", EntryPoint="mono_test_marshal_out_byref_array_out_size_param")]
        public static extern int mono_test_marshal_out_byref_array_out_size_param ([Out] [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] out int [] a1, out int n);
 
+       [DllImport ("libtest", EntryPoint="mono_test_marshal_out_lparray_out_size_param")]
+       public static extern int mono_test_marshal_out_lparray_out_size_param ([Out] [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int [] a1, out int n);
+
        [DllImport ("libtest", EntryPoint="mono_test_marshal_inout_nonblittable_array", CharSet = CharSet.Unicode)]
        public static extern int mono_test_marshal_inout_nonblittable_array ([In, Out] char [] a1);
        
@@ -434,6 +437,22 @@ public class Tests {
                return 0;
        }
 
+       public static int test_0_marshal_out_lparray_out_size_param () {
+               int [] a1 = null;
+               int len;
+
+               a1 = new int [10];
+               int res = mono_test_marshal_out_lparray_out_size_param (a1, out len);
+               // Check that a1 was not overwritten
+               a1.GetHashCode ();
+               if (len != 4)
+                       return 1;
+               for (int i = 0; i < len; i++)
+                       if (a1 [i] != i)
+                               return 2;
+               return 0;
+       }
+
        public static int test_0_marshal_inout_nonblittable_array () {
                char [] a1 = new char [10];
                for (int i = 0; i < 10; i++)
index ae64d16e090d7af29dd027197a083e92bb2d7845..4b9a4b7f49a300186eb95ef72be806e21d897bfe 100644 (file)
@@ -188,6 +188,9 @@ public class Tests {
        [DllImport ("libtest", EntryPoint="mono_test_marshal_return_delegate_delegate")]
        public static extern int mono_test_marshal_return_delegate_delegate (ReturnDelegateDelegate d);
 
+       [DllImport ("libtest", EntryPoint="mono_test_marshal_delegate_ref_delegate")]
+       public static extern int mono_test_marshal_delegate_ref_delegate (DelegateByrefDelegate del);
+
        public delegate int TestDelegate (int a, ref SimpleStruct ss, int b);
 
        public delegate SimpleStruct SimpleDelegate2 (SimpleStruct ss);
@@ -210,6 +213,8 @@ public class Tests {
 
        public delegate return_int_delegate ReturnDelegateDelegate ();
 
+       public delegate int DelegateByrefDelegate (ref return_int_delegate del);
+
        public static int Main () {
                return TestDriver.RunTests (typeof (Tests));
        }
@@ -333,6 +338,20 @@ public class Tests {
                return mono_test_marshal_return_delegate_delegate (new ReturnDelegateDelegate (return_delegate));
        }
 
+       public static int return_plus_1 (int i) {
+               return i + 1;
+       }
+
+       public static int ref_delegate_delegate (ref return_int_delegate del) {
+               del = return_plus_1;
+               return 0;
+       }
+
+       public static int test_55_marshal_delegate_ref_delegate () {
+               var del = new DelegateByrefDelegate (ref_delegate_delegate);
+               return mono_test_marshal_delegate_ref_delegate (del);
+       }
+
        /* Passing and returning strings */
 
        public delegate String ReturnStringDelegate (String s);
index 5fc72e67e77bb713e73fc04ff27e723f28ea1eeb..c954ade20b8d539a9e221d41fa0036361391fcd2 100644 (file)
@@ -13,6 +13,9 @@ public class Bridge {
 }
 
 class Driver {
+       static void LogLine (string message) {
+               Console.WriteLine ("[" + DateTime.Now + "] " + message);
+       }
        //we fill 16Mb worth of stuff, eg, 256k objects
        const int major_fill = 1024 * 256;
 
@@ -24,7 +27,7 @@ class Driver {
                for (int i = 0; i < major_fill; ++i)
                        arr [i] = new NonBridge ();
                GC.Collect (1);
-               Console.WriteLine ("major fill done");
+               LogLine ("major fill done");
 
                //induce massive fragmentation
                for (int i = 0; i < major_fill; i += 4) {
@@ -33,7 +36,7 @@ class Driver {
                        arr [i + 3] = null;
                }
                GC.Collect (1);
-               Console.WriteLine ("fragmentation done");
+               LogLine ("fragmentation done");
 
                //since 50% is garbage, do 2 fill passes
                for (int j = 0; j < 2; ++j) {
@@ -44,7 +47,7 @@ class Driver {
                                        arr [i] = new Bridge ();
                        }
                }
-               Console.WriteLine ("done spewing bridges");
+               LogLine ("done spewing bridges");
                
                for (int i = 0; i < major_fill; ++i)
                        arr [i] = null;
@@ -55,10 +58,10 @@ class Driver {
        static void Main () {
                const int loops = 4;
                for (int i = 0; i < loops; ++i) {
-                       Console.WriteLine ("CrashLoop {0}/{1}", i + 1, loops);
+                       LogLine ("CrashLoop " + (i + 1) + "/" + loops);
                        CrashMainLoop ();
                }
-               Console.WriteLine ("done");
+               LogLine ("done");
                GC.Collect ();
                GC.WaitForPendingFinalizers ();
                GC.Collect ();
index 6570842703c7c6377e169578cd24b6062762a33f..f1f6c2f932069f57ae67e85f017d8f47b9f50fc6 100644 (file)
@@ -9,7 +9,6 @@ This is a regression test for a crash in the domain object cleaner code that did
 stop-the-world before walking the heap.
 */
 class Driver {
-
        static void AllocStuff ()
        {
                var x = new object ();
@@ -24,6 +23,8 @@ class Driver {
        }
 
        static void Main () {
+               var testTimeout = new TestTimeout ();
+               testTimeout.Start ();
                for (int i = 0; i < Math.Max (1, Environment.ProcessorCount / 2); ++i) {
                // for (int i = 0; i < 4; ++i) {
                        var t = new Thread (BackgroundNoise);
@@ -31,13 +32,21 @@ class Driver {
                        t.Start ();
                }
                
-               for (int i = 0; i < 100; ++i) {
+               const int TOTAL_ITERATIONS = 100;
+               for (int i = 0; i < TOTAL_ITERATIONS; ++i) {
                        var ad = AppDomain.CreateDomain ("domain_" + i);
                        ad.DoCallBack (new CrossAppDomainDelegate (AllocStuff));
                        AppDomain.Unload (ad);
+
                        Console.Write (".");
                        if (i > 0 && i % 20 == 0) Console.WriteLine ();
+
+                       if (!testTimeout.HaveTimeLeft ()) {
+                               var finishTime = DateTime.UtcNow;
+                               var ranFor = finishTime - testTimeout.StartTime;
+                               Console.WriteLine ("Will run out of time soon. ran for {0}, finished {1}/{2} iterations", ranFor, i+1, TOTAL_ITERATIONS);
+                       }
                }
                Console.WriteLine ("\ndone");
        }
-}
\ No newline at end of file
+}
index b6d0a9b693b87a557298e60566528b2934ef5bf4..966fff5d5b7e0b78ed964690f85846fe68e28f05 100644 (file)
@@ -44,8 +44,11 @@ class T {
     }
 
     static void Main (string[] args) {
-        
-        for (int j = 0; j < 2; j++)
+        var testTimeout = new TestTimeout ();
+        testTimeout.Start ();
+
+        const int TOTAL_ITERATIONS = 2;
+        for (int j = 0; j < TOTAL_ITERATIONS; j++)
         {
             count = 0;
 
@@ -82,6 +85,7 @@ class T {
             {
                 while (count < num_threads)
                 {
+                    Console.Write (".");
                     Monitor.Wait(count_lock);
                 }
             }
@@ -90,6 +94,15 @@ class T {
             {
                 t.Join();
             }
+
+            Console.WriteLine ();
+            if (!testTimeout.HaveTimeLeft ()) {
+                    var finishTime = DateTime.UtcNow;
+                    var ranFor = finishTime - testTimeout.StartTime;
+                    Console.WriteLine ("Will run out of time soon.  ran for {0}, finished {1}/{2} iterations", ranFor, j+1, TOTAL_ITERATIONS);
+            }
         }
+
+       Console.WriteLine ("done");
     }
 }
index b007040a62e95d33de04e626bec61a729dbeef22..a10323bb177a938ff2c311ff9b69e6b4eb812361 100755 (executable)
@@ -27,8 +27,9 @@ if ($test =~ /.*\|.*/) {
        $output = $test;
 
        #This is a silly workaround, but all tests that use extra parameters need a larger timeout.
-       $timeout_in_minutes = 5;
+       $timeout_in_minutes = 15;
 }
+$ENV{'TEST_DRIVER_TIMEOUT_SEC'} = $timeout_in_minutes * 60;
 
 $| = 0;
 print "Testing $test... ";
index 7807c02dd598eac4d78183d46ea0c26d9379e43d..e58e009a269117778ad7472a5b7f780a33221539 100644 (file)
@@ -32,6 +32,7 @@ using System.Diagnostics;
 using System.Collections.Generic;
 using System.Globalization;
 using System.Xml;
+using System.Text.RegularExpressions;
 
 //
 // This is a simple test runner with support for parallel execution
@@ -39,21 +40,13 @@ using System.Xml;
 
 public class TestRunner
 {
+       const string TEST_TIME_FORMAT = "mm\\:ss\\.fff";
+       const string ENV_TIMEOUT = "TEST_DRIVER_TIMEOUT_SEC";
+
        class ProcessData {
                public string test;
                public StreamWriter stdout, stderr;
                public string stdoutFile, stderrFile;
-
-               public void CloseStreams () {
-                       if (stdout != null) {
-                               stdout.Close ();
-                               stdout = null;
-                       }
-                       if (stderr != null) {
-                               stderr.Close ();
-                               stderr = null;
-                       }
-               }
        }
 
        class TestInfo {
@@ -64,8 +57,9 @@ public class TestRunner
                // Defaults
                int concurrency = 1;
                int timeout = 2 * 60; // in seconds
-
-               DateTime test_start_time = DateTime.UtcNow;
+               int expectedExitCode = 0;
+               string testsuiteName = null;
+               string inputFile = null;
 
                // FIXME: Add support for runtime arguments + env variables
 
@@ -78,7 +72,7 @@ public class TestRunner
                while (i < args.Length) {
                        if (args [i].StartsWith ("-")) {
                                if (args [i] == "-j") {
-                                       if (i + i >= args.Length) {
+                                       if (i + 1 >= args.Length) {
                                                Console.WriteLine ("Missing argument to -j command line option.");
                                                return 1;
                                        }
@@ -88,34 +82,55 @@ public class TestRunner
                                                concurrency = Int32.Parse (args [i + 1]);
                                        i += 2;
                                } else if (args [i] == "--timeout") {
-                                       if (i + i >= args.Length) {
+                                       if (i + 1 >= args.Length) {
                                                Console.WriteLine ("Missing argument to --timeout command line option.");
                                                return 1;
                                        }
                                        timeout = Int32.Parse (args [i + 1]);
                                        i += 2;
                                } else if (args [i] == "--disabled") {
-                                       if (i + i >= args.Length) {
+                                       if (i + 1 >= args.Length) {
                                                Console.WriteLine ("Missing argument to --disabled command line option.");
                                                return 1;
                                        }
                                        disabled_tests = args [i + 1];
                                        i += 2;
                                } else if (args [i] == "--runtime") {
-                                       if (i + i >= args.Length) {
+                                       if (i + 1 >= args.Length) {
                                                Console.WriteLine ("Missing argument to --runtime command line option.");
                                                return 1;
                                        }
                                        runtime = args [i + 1];
                                        i += 2;
                                } else if (args [i] == "--opt-sets") {
-                                       if (i + i >= args.Length) {
+                                       if (i + 1 >= args.Length) {
                                                Console.WriteLine ("Missing argument to --opt-sets command line option.");
                                                return 1;
                                        }
                                        foreach (var s in args [i + 1].Split ())
                                                opt_sets.Add (s);
                                        i += 2;
+                               } else if (args [i] == "--expected-exit-code") {
+                                       if (i + 1 >= args.Length) {
+                                               Console.WriteLine ("Missing argument to --expected-exit-code command line option.");
+                                               return 1;
+                                       }
+                                       expectedExitCode = Int32.Parse (args [i + 1]);
+                                       i += 2;
+                               } else if (args [i] == "--testsuite-name") {
+                                       if (i + 1 >= args.Length) {
+                                               Console.WriteLine ("Missing argument to --testsuite-name command line option.");
+                                               return 1;
+                                       }
+                                       testsuiteName = args [i + 1];
+                                       i += 2;
+                               } else if (args [i] == "--input-file") {
+                                       if (i + 1 >= args.Length) {
+                                               Console.WriteLine ("Missing argument to --input-file command line option.");
+                                               return 1;
+                                       }
+                                       inputFile = args [i + 1];
+                                       i += 2;
                                } else {
                                        Console.WriteLine ("Unknown command line option: '" + args [i] + "'.");
                                        return 1;
@@ -125,6 +140,11 @@ public class TestRunner
                        }
                }
 
+               if (String.IsNullOrEmpty (testsuiteName)) {
+                       Console.WriteLine ("Missing the required --testsuite-name command line option.");
+                       return 1;
+               }
+
                var disabled = new Dictionary <string, string> ();
 
                if (disabled_tests != null) {
@@ -132,204 +152,178 @@ public class TestRunner
                                disabled [test] = test;
                }
 
-               // The remaining arguments are the tests
                var tests = new List<string> ();
-               for (int j = i; j < args.Length; ++j)
-                       if (!disabled.ContainsKey (args [j]))
-                               tests.Add (args [j]);
 
-               int npassed = 0;
-               int nfailed = 0;
+               if (!String.IsNullOrEmpty (inputFile)) {
+                       tests.AddRange (File.ReadAllLines (inputFile));
+               } else {
+                       // The remaining arguments are the tests
+                       for (int j = i; j < args.Length; ++j)
+                               if (!disabled.ContainsKey (args [j]))
+                                       tests.Add (args [j]);
+               }
 
-               var processes = new List<Process> ();
                var passed = new List<ProcessData> ();
                var failed = new List<ProcessData> ();
-               var process_data = new Dictionary<Process, ProcessData> ();
+               var timedout = new List<ProcessData> ();
 
                object monitor = new object ();
 
-               var terminated = new List<Process> ();
+               Console.WriteLine ("Running tests: ");
 
-               if (concurrency != 1)
-                       Console.WriteLine ("Running tests: ");
-
-               var test_info = new List<TestInfo> ();
+               var test_info = new Queue<TestInfo> ();
                if (opt_sets.Count == 0) {
                        foreach (string s in tests)
-                               test_info.Add (new TestInfo { test = s });
+                               test_info.Enqueue (new TestInfo { test = s });
                } else {
                        foreach (string opt in opt_sets) {
                                foreach (string s in tests)
-                                       test_info.Add (new TestInfo { test = s, opt_set = opt });
+                                       test_info.Enqueue (new TestInfo { test = s, opt_set = opt });
                        }
-               }               
+               }
 
+               /* compute the max length of test names, to have an optimal output width */
+               int output_width = -1;
                foreach (TestInfo ti in test_info) {
-                       lock (monitor) {
-                               while (processes.Count == concurrency) {
-                                       /* Wait for one process to terminate */
-                                       Monitor.Wait (monitor);
-                               }
-
-                               /* Cleaup terminated processes */
-                               foreach (Process dead in terminated) {
-                                       if (process_data [dead].stdout != null)
-                                               process_data [dead].stdout.Close ();
-                                       if (process_data [dead].stderr != null)
-                                               process_data [dead].stderr.Close ();
-                                       // This is needed to avoid CreateProcess failed errors :(
-                                       dead.Close ();
-                               }
-                               terminated.Clear ();
-                       }
-
-                       string test = ti.test;
-                       string opt_set = ti.opt_set;
-
-                       if (concurrency == 1)
-                               Console.Write ("Testing " + test + "... ");
-
-                       /* Spawn a new process */
-                       string process_args;
-                       if (opt_set == null)
-                               process_args = test;
-                       else
-                               process_args = "-O=" + opt_set + " " + test;
-                       ProcessStartInfo info = new ProcessStartInfo (runtime, process_args);
-                       info.UseShellExecute = false;
-                       info.RedirectStandardOutput = true;
-                       info.RedirectStandardError = true;
-                       Process p = new Process ();
-                       p.StartInfo = info;
-                       p.EnableRaisingEvents = true;
-
-                       ProcessData data = new ProcessData ();
-                       data.test = test;
-
-                       p.Exited += delegate (object sender, EventArgs e) {
-                               // Anon methods share some of their state, so we can't use
-                               // variables which change during the loop (test, p)
-                               Process dead = (Process)sender;
-
-                               lock (monitor) {
-                                       if (dead.ExitCode == 0) {
-                                               if (concurrency == 1)
-                                                       Console.WriteLine ("passed.");
-                                               else
-                                                       Console.Write (".");
-                                               passed.Add(process_data [dead]);
-                                               npassed ++;
-                                       } else {
-                                               if (concurrency == 1)
-                                                       Console.WriteLine ("failed.");
-                                               else
-                                                       Console.Write ("F");
-                                               failed.Add (process_data [dead]);
-                                               nfailed ++;
-                                       }
-                                       processes.Remove (dead);
-                                       terminated.Add (dead);
-                                       Monitor.Pulse (monitor);
-                               }
-                       };
-
-                       string log_prefix = "";
-                       if (opt_set != null)
-                               log_prefix = "." + opt_set.Replace ("-", "no").Replace (",", "_");
-
-                       data.stdoutFile = test + log_prefix + ".stdout";
-                       data.stdout = new StreamWriter (new FileStream (data.stdoutFile, FileMode.Create));
-
-                       data.stderrFile = test + log_prefix + ".stderr";
-                       data.stderr = new StreamWriter (new FileStream (data.stderrFile, FileMode.Create));
+                       if (ti.test.Length > output_width)
+                               output_width = Math.Min (120, ti.test.Length);
+               }
 
-                       p.OutputDataReceived += delegate (object sender, DataReceivedEventArgs e) {
-                               Process p2 = (Process)sender;
+               List<Thread> threads = new List<Thread> (concurrency);
 
-                               StreamWriter fs;
+               DateTime test_start_time = DateTime.UtcNow;
 
-                               lock (monitor) {
-                                       fs = process_data [p2].stdout;
+               for (int j = 0; j < concurrency; ++j) {
+                       Thread thread = new Thread (() => {
+                               while (true) {
+                                       TestInfo ti;
 
-                                       if (e.Data == null)
-                                               process_data [p2].stdout = null;
-                               }
+                                       lock (monitor) {
+                                               if (test_info.Count == 0)
+                                                       break;
+                                               ti = test_info.Dequeue ();
+                                       }
 
-                               if (e.Data == null) {
-                                       fs.Close ();
-                               } else {
-                                       fs.WriteLine (e.Data);
-                                       fs.Flush ();
-                               }
-                       };
+                                       var output = new StringWriter ();
 
-                       p.ErrorDataReceived += delegate (object sender, DataReceivedEventArgs e) {
-                               Process p2 = (Process)sender;
+                                       string test = ti.test;
+                                       string opt_set = ti.opt_set;
 
-                               StreamWriter fs;
+                                       output.Write (String.Format ("{{0,-{0}}} ", output_width), test);
 
-                               lock (monitor) {
-                                       fs = process_data [p2].stderr;
+                                       /* Spawn a new process */
+                                       string process_args;
+                                       if (opt_set == null)
+                                               process_args = test;
+                                       else
+                                               process_args = "-O=" + opt_set + " " + test;
+                                       ProcessStartInfo info = new ProcessStartInfo (runtime, process_args);
+                                       info.UseShellExecute = false;
+                                       info.RedirectStandardOutput = true;
+                                       info.RedirectStandardError = true;
+                                       info.EnvironmentVariables[ENV_TIMEOUT] = timeout.ToString();
+                                       Process p = new Process ();
+                                       p.StartInfo = info;
+
+                                       ProcessData data = new ProcessData ();
+                                       data.test = test;
+
+                                       string log_prefix = "";
+                                       if (opt_set != null)
+                                               log_prefix = "." + opt_set.Replace ("-", "no").Replace (",", "_");
+
+                                       data.stdoutFile = test + log_prefix + ".stdout";
+                                       data.stdout = new StreamWriter (new FileStream (data.stdoutFile, FileMode.Create));
+
+                                       data.stderrFile = test + log_prefix + ".stderr";
+                                       data.stderr = new StreamWriter (new FileStream (data.stderrFile, FileMode.Create));
+
+                                       p.OutputDataReceived += delegate (object sender, DataReceivedEventArgs e) {
+                                               if (e.Data != null) {
+                                                       data.stdout.WriteLine (e.Data);
+                                               } else {
+                                                       data.stdout.Flush ();
+                                                       data.stdout.Close ();
+                                               }
+                                       };
+
+                                       p.ErrorDataReceived += delegate (object sender, DataReceivedEventArgs e) {
+                                               if (e.Data != null) {
+                                                       data.stderr.WriteLine (e.Data);
+                                               } else {
+                                                       data.stderr.Flush ();
+                                                       data.stderr.Close ();
+                                               }
+                                       };
+
+                                       var start = DateTime.UtcNow;
+
+                                       p.Start ();
+
+                                       p.BeginOutputReadLine ();
+                                       p.BeginErrorReadLine ();
+
+                                       if (!p.WaitForExit (timeout * 1000)) {
+                                               lock (monitor) {
+                                                       timedout.Add (data);
+                                               }
+
+                                               output.Write ("timed out");
+
+                                               p.Kill ();
+                                       } else if (p.ExitCode != expectedExitCode) {
+                                               var end = DateTime.UtcNow;
+
+                                               lock (monitor) {
+                                                       failed.Add (data);
+                                               }
+
+                                               output.Write ("failed, time: {0}, exit code: {1}", (end - start).ToString (TEST_TIME_FORMAT), p.ExitCode);
+                                       } else {
+                                               var end = DateTime.UtcNow;
 
-                                       if (e.Data == null)
-                                               process_data [p2].stderr = null;
+                                               lock (monitor) {
+                                                       passed.Add (data);
+                                               }
 
-                               }
+                                               output.Write ("passed, time: {0}", (end - start).ToString (TEST_TIME_FORMAT));
+                                       }
 
-                               if (e.Data == null) {
-                                       fs.Close ();
+                                       p.Close ();
 
                                        lock (monitor) {
-                                               process_data [p2].stderr = null;
+                                               Console.WriteLine (output.ToString ());
                                        }
-                               } else {
-                                       fs.WriteLine (e.Data);
-                                       fs.Flush ();
                                }
-                       };
+                       });
 
-                       lock (monitor) {
-                               processes.Add (p);
-                               process_data [p] = data;
-                       }
-                       p.Start ();
+                       thread.Start ();
 
-                       p.BeginOutputReadLine ();
-                       p.BeginErrorReadLine ();
+                       threads.Add (thread);
                }
 
-               bool timed_out = false;
-
-               /* Wait for all processes to terminate */
-               while (true) {
-                       lock (monitor) {
-                               int nprocesses = processes.Count;
+               for (int j = 0; j < threads.Count; ++j)
+                       threads [j].Join ();
 
-                               if (nprocesses == 0)
-                                       break;
+               TimeSpan test_time = DateTime.UtcNow - test_start_time;
 
-                               bool res = Monitor.Wait (monitor, 1000 * timeout);
-                               if (!res) {
-                                       timed_out = true;
-                                       break;
-                               }
-                       }
-               }
+               int npassed = passed.Count;
+               int nfailed = failed.Count;
+               int ntimedout = timedout.Count;
 
-               TimeSpan test_time = DateTime.UtcNow - test_start_time;
                XmlWriterSettings xmlWriterSettings = new XmlWriterSettings ();
                xmlWriterSettings.NewLineOnAttributes = true;
                xmlWriterSettings.Indent = true;
-               using (XmlWriter writer = XmlWriter.Create ("TestResults_runtime.xml", xmlWriterSettings)) {
+               using (XmlWriter writer = XmlWriter.Create (String.Format ("TestResult-{0}.xml", testsuiteName), xmlWriterSettings)) {
                        // <?xml version="1.0" encoding="utf-8" standalone="no"?>
                        writer.WriteStartDocument ();
                        // <!--This file represents the results of running a test suite-->
                        writer.WriteComment ("This file represents the results of running a test suite");
                        // <test-results name="/home/charlie/Dev/NUnit/nunit-2.5/work/src/bin/Debug/tests/mock-assembly.dll" total="21" errors="1" failures="1" not-run="7" inconclusive="1" ignored="4" skipped="0" invalid="3" date="2010-10-18" time="13:23:35">
                        writer.WriteStartElement ("test-results");
-                       writer.WriteAttributeString ("name", "runtime-tests.dummy");
-                       writer.WriteAttributeString ("total", (npassed + nfailed).ToString());
-                       writer.WriteAttributeString ("failures", nfailed.ToString());
+                       writer.WriteAttributeString ("name", String.Format ("{0}-tests.dummy", testsuiteName));
+                       writer.WriteAttributeString ("total", (npassed + nfailed + ntimedout).ToString());
+                       writer.WriteAttributeString ("failures", (nfailed + ntimedout).ToString());
                        writer.WriteAttributeString ("not-run", "0");
                        writer.WriteAttributeString ("date", DateTime.Now.ToString ("yyyy-MM-dd"));
                        writer.WriteAttributeString ("time", DateTime.Now.ToString ("HH:mm:ss"));
@@ -351,33 +345,33 @@ public class TestRunner
                        writer.WriteEndElement ();
                        //   <test-suite name="corlib_test_net_4_5.dll" success="True" time="114.318" asserts="0">
                        writer.WriteStartElement ("test-suite");
-                       writer.WriteAttributeString ("name","runtime-tests.dummy");
-                       writer.WriteAttributeString ("success", (nfailed == 0).ToString());
+                       writer.WriteAttributeString ("name", String.Format ("{0}-tests.dummy", testsuiteName));
+                       writer.WriteAttributeString ("success", (nfailed + ntimedout == 0).ToString());
                        writer.WriteAttributeString ("time", test_time.Seconds.ToString());
-                       writer.WriteAttributeString ("asserts", nfailed.ToString());
+                       writer.WriteAttributeString ("asserts", (nfailed + ntimedout).ToString());
                        //     <results>
                        writer.WriteStartElement ("results");
                        //       <test-suite name="MonoTests" success="True" time="114.318" asserts="0">
                        writer.WriteStartElement ("test-suite");
                        writer.WriteAttributeString ("name","MonoTests");
-                       writer.WriteAttributeString ("success", (nfailed == 0).ToString());
+                       writer.WriteAttributeString ("success", (nfailed + ntimedout == 0).ToString());
                        writer.WriteAttributeString ("time", test_time.Seconds.ToString());
-                       writer.WriteAttributeString ("asserts", nfailed.ToString());
+                       writer.WriteAttributeString ("asserts", (nfailed + ntimedout).ToString());
                        //         <results>
                        writer.WriteStartElement ("results");
                        //           <test-suite name="MonoTests" success="True" time="114.318" asserts="0">
                        writer.WriteStartElement ("test-suite");
-                       writer.WriteAttributeString ("name","runtime");
-                       writer.WriteAttributeString ("success", (nfailed == 0).ToString());
+                       writer.WriteAttributeString ("name", testsuiteName);
+                       writer.WriteAttributeString ("success", (nfailed + ntimedout == 0).ToString());
                        writer.WriteAttributeString ("time", test_time.Seconds.ToString());
-                       writer.WriteAttributeString ("asserts", nfailed.ToString());
+                       writer.WriteAttributeString ("asserts", (nfailed + ntimedout).ToString());
                        //             <results>
                        writer.WriteStartElement ("results");
                        // Dump all passing tests first
                        foreach (ProcessData pd in passed) {
                                // <test-case name="MonoTests.Microsoft.Win32.RegistryKeyTest.bug79051" executed="True" success="True" time="0.063" asserts="0" />
                                writer.WriteStartElement ("test-case");
-                               writer.WriteAttributeString ("name", "MonoTests.runtime." + pd.test);
+                               writer.WriteAttributeString ("name", String.Format ("MonoTests.{0}.{1}", testsuiteName, pd.test));
                                writer.WriteAttributeString ("executed", "True");
                                writer.WriteAttributeString ("success", "True");
                                writer.WriteAttributeString ("time", "0");
@@ -388,7 +382,26 @@ public class TestRunner
                        foreach (ProcessData pd in failed) {
                                // <test-case name="MonoTests.Microsoft.Win32.RegistryKeyTest.bug79051" executed="True" success="True" time="0.063" asserts="0" />
                                writer.WriteStartElement ("test-case");
-                               writer.WriteAttributeString ("name", "MonoTests.runtime." + pd.test);
+                               writer.WriteAttributeString ("name", String.Format ("MonoTests.{0}.{1}", testsuiteName, pd.test));
+                               writer.WriteAttributeString ("executed", "True");
+                               writer.WriteAttributeString ("success", "False");
+                               writer.WriteAttributeString ("time", "0");
+                               writer.WriteAttributeString ("asserts", "1");
+                               writer.WriteStartElement ("failure");
+                               writer.WriteStartElement ("message");
+                               writer.WriteCData (DumpPseudoTrace (pd.stdoutFile));
+                               writer.WriteEndElement ();
+                               writer.WriteStartElement ("stack-trace");
+                               writer.WriteCData (DumpPseudoTrace (pd.stderrFile));
+                               writer.WriteEndElement ();
+                               writer.WriteEndElement ();
+                               writer.WriteEndElement ();
+                       }
+                       // Then dump all timing out tests
+                       foreach (ProcessData pd in timedout) {
+                               // <test-case name="MonoTests.Microsoft.Win32.RegistryKeyTest.bug79051" executed="True" success="True" time="0.063" asserts="0" />
+                               writer.WriteStartElement ("test-case");
+                               writer.WriteAttributeString ("name", String.Format ("MonoTests.{0}.{1}_timedout", testsuiteName, pd.test));
                                writer.WriteAttributeString ("executed", "True");
                                writer.WriteAttributeString ("success", "False");
                                writer.WriteAttributeString ("time", "0");
@@ -421,35 +434,35 @@ public class TestRunner
                }
 
                Console.WriteLine ();
+               Console.WriteLine ("Time: {0}", test_time.ToString (TEST_TIME_FORMAT));
+               Console.WriteLine ();
+               Console.WriteLine ("{0,4} test(s) passed", npassed);
+               Console.WriteLine ("{0,4} test(s) failed", nfailed);
+               Console.WriteLine ("{0,4} test(s) timed out", ntimedout);
 
-               if (timed_out) {
-                       Console.WriteLine ("\nrunning tests timed out:\n");
-                       Console.WriteLine (npassed + nfailed);
-                       lock (monitor) {
-                               foreach (Process p in processes) {
-                                       ProcessData pd = process_data [p];
-                                       pd.CloseStreams ();
-                                       Console.WriteLine (pd.test);
-                                       p.Kill ();
-                                       DumpFile (pd.stdoutFile);
-                                       DumpFile (pd.stderrFile);
-                               }
+               if (nfailed > 0) {
+                       Console.WriteLine ();
+                       Console.WriteLine ("Failed test(s):");
+                       foreach (ProcessData pd in failed) {
+                               Console.WriteLine ();
+                               Console.WriteLine (pd.test);
+                               DumpFile (pd.stdoutFile);
+                               DumpFile (pd.stderrFile);
                        }
-                       return 1;
                }
 
-               Console.WriteLine ("" + npassed + " test(s) passed. " + nfailed + " test(s) did not pass.");
-               if (nfailed > 0) {
-                       Console.WriteLine ("\nFailed tests:\n");
-                       foreach (ProcessData pd in failed) {
+               if (ntimedout > 0) {
+                       Console.WriteLine ();
+                       Console.WriteLine ("Timed out test(s):");
+                       foreach (ProcessData pd in timedout) {
+                               Console.WriteLine ();
                                Console.WriteLine (pd.test);
                                DumpFile (pd.stdoutFile);
                                DumpFile (pd.stderrFile);
                        }
-                       return 1;
-               } else {
-                       return 0;
                }
+
+               return (ntimedout == 0 && nfailed == 0) ? 0 : 1;
        }
        
        static void DumpFile (string filename) {
@@ -462,8 +475,14 @@ public class TestRunner
 
        static string DumpPseudoTrace (string filename) {
                if (File.Exists (filename))
-                       return File.ReadAllText (filename);
+                       return FilterInvalidXmlChars (File.ReadAllText (filename));
                else
                        return string.Empty;
        }
+
+       static string FilterInvalidXmlChars (string text) {
+               // Spec at http://www.w3.org/TR/2008/REC-xml-20081126/#charsets says only the following chars are valid in XML:
+               // Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]      /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
+               return Regex.Replace (text, @"[^\x09\x0A\x0D\x20-\uD7FF\uE000-\uFFFD\u10000-\u10FFFF]", "");
+       }
 }
index 3186833121dd7540f2d94bf1c27b6327398b9e67..34131596fef0070cf0489478a90f926e90362e0b 100644 (file)
@@ -1,4 +1,5 @@
 using System;
+using System.Runtime.InteropServices;
 
 class Foo {
        [ThreadStatic]
@@ -7,15 +8,54 @@ class Foo {
 
 class X {
 
-        static void Main ()
+        static int Main ()
         {
                Foo.foo = 1;
                new Foo ();
                Bar ();
+
+               return Bug34598 ();
         }
+
+       static int Bug34598 ()
+       {
+               if (Test.Zero.ToString () != "0")
+                       return 1;
+               if (Test.One.ToString () != "1")
+                       return 2;
+               if (Test.Two.ToString () != "2")
+                       return 3;
+
+               if (Test2.Zero.ToString () != "0")
+                       return 4;
+               if (Test2.One.ToString () != "1")
+                       return 5;
+               if (Test2.Two.ToString () != "2")
+                       return 6;
+               return 0;
+       }
        
        static void Bar ()
        {
                Console.WriteLine (Foo.foo);
        }
 }
+
+[StructLayout(LayoutKind.Explicit)]
+public struct Test
+{
+       public static float Zero = 0.0f;
+       [ThreadStatic]
+       public static float One = 1.0f;
+       [ContextStatic]
+       public static float Two = 2.0f;
+}
+
+public struct Test2
+{
+       public static float Zero = 0.0f;
+       [ThreadStatic]
+       public static float One = 1.0f;
+       [ContextStatic]
+       public static float Two = 2.0f;
+}
diff --git a/mono/tests/unhandled-exception-1.cs b/mono/tests/unhandled-exception-1.cs
new file mode 100644 (file)
index 0000000..2e89dcf
--- /dev/null
@@ -0,0 +1,27 @@
+using System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+
+class CustomException : Exception
+{
+}
+
+class Driver
+{
+       /* Expected exit code: 1 */
+       static void Main (string[] args)
+       {
+               ManualResetEvent mre = new ManualResetEvent (false);
+
+               var t = new Thread (new ThreadStart (() => { try { throw new CustomException (); } finally { mre.Set (); } }));
+               t.Start ();
+
+               if (!mre.WaitOne (5000))
+                       Environment.Exit (2);
+
+               t.Join ();
+
+               Environment.Exit (0);
+       }
+}
diff --git a/mono/tests/unhandled-exception-2.cs b/mono/tests/unhandled-exception-2.cs
new file mode 100644 (file)
index 0000000..7c9cc69
--- /dev/null
@@ -0,0 +1,34 @@
+using System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+
+class CustomException : Exception
+{
+}
+
+class Driver
+{
+       /* expected exit code: 0 */
+       static void Main (string[] args)
+       {
+               ManualResetEvent mre = new ManualResetEvent (false);
+
+               var a = new Action (() => { try { throw new CustomException (); } finally { mre.Set (); } });
+               var ares = a.BeginInvoke (null, null);
+
+               if (!mre.WaitOne (5000))
+                       Environment.Exit (2);
+
+               try {
+                       a.EndInvoke (ares);
+                       Environment.Exit (4);
+               } catch (CustomException) {
+               } catch (Exception ex) {
+                       Console.WriteLine (ex);
+                       Environment.Exit (3);
+               }
+
+               Environment.Exit (0);
+       }
+}
diff --git a/mono/tests/unhandled-exception-3.cs b/mono/tests/unhandled-exception-3.cs
new file mode 100644 (file)
index 0000000..2afa9ad
--- /dev/null
@@ -0,0 +1,28 @@
+using System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+
+class CustomException : Exception
+{
+}
+
+class Driver
+{
+       /* expected exit code: 0 */
+       static void Main (string[] args)
+       {
+               ManualResetEvent mre = new ManualResetEvent (false);
+
+               ThreadPool.QueueUserWorkItem (_ => { try { throw new CustomException (); } finally { mre.Set (); } });
+
+               if (!mre.WaitOne (5000))
+                       Environment.Exit (2);
+
+               /* Give a chance to the threadpool thread to finish executing the exception
+                * unwinding after the finally, before we exit with status 0 on the current thread */
+               Thread.Sleep (1000);
+
+               Environment.Exit (0);
+       }
+}
diff --git a/mono/tests/unhandled-exception-4.cs b/mono/tests/unhandled-exception-4.cs
new file mode 100644 (file)
index 0000000..9658316
--- /dev/null
@@ -0,0 +1,35 @@
+using System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+
+class CustomException : Exception
+{
+}
+
+class Driver
+{
+       /* expected exit code: 0 */
+       static void Main (string[] args)
+       {
+               ManualResetEvent mre = new ManualResetEvent (false);
+
+               var t = Task.Factory.StartNew (new Action (() => { try { throw new CustomException (); } finally { mre.Set (); } }));
+
+               if (!mre.WaitOne (5000))
+                       Environment.Exit (2);
+
+               try {
+                       t.Wait ();
+                       Environment.Exit (5);
+               } catch (AggregateException ae) {
+                       if (!(ae.InnerExceptions [0] is CustomException))
+                               Environment.Exit (4);
+               } catch (Exception ex) {
+                       Console.WriteLine (ex);
+                       Environment.Exit (3);
+               }
+
+               Environment.Exit (0);
+       }
+}
diff --git a/mono/tests/unhandled-exception-5.cs b/mono/tests/unhandled-exception-5.cs
new file mode 100644 (file)
index 0000000..33136b3
--- /dev/null
@@ -0,0 +1,39 @@
+using System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+
+class CustomException : Exception
+{
+}
+
+class Driver
+{
+       static ManualResetEvent mre = new ManualResetEvent (false);
+
+       class FinalizedClass
+       {
+               ~FinalizedClass ()
+               {
+                       try {
+                               throw new CustomException ();
+                       } finally {
+                               mre.Set ();
+                       }
+               }
+       }
+
+       /* expected exit code: 255 */
+       static void Main (string[] args)
+       {
+               new FinalizedClass();
+
+               GC.Collect ();
+               GC.WaitForPendingFinalizers ();
+
+               if (!mre.WaitOne (5000))
+                       Environment.Exit (2);
+
+               Environment.Exit (0);
+       }
+}
diff --git a/mono/tests/unhandled-exception-6.cs b/mono/tests/unhandled-exception-6.cs
new file mode 100644 (file)
index 0000000..b9c2549
--- /dev/null
@@ -0,0 +1,41 @@
+using System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+
+class CustomException : Exception
+{
+}
+
+class CustomException2 : Exception
+{
+}
+
+class Driver
+{
+       /* expected exit code: 0 */
+       static void Main (string[] args)
+       {
+               ManualResetEvent mre = new ManualResetEvent (false);
+               ManualResetEvent mre2 = new ManualResetEvent (false);
+
+               var a = new Action (() => { try { throw new CustomException (); } finally { mre.Set (); } });
+               var ares = a.BeginInvoke (_ => { mre2.Set (); throw new CustomException2 (); }, null);
+
+               if (!mre.WaitOne (5000))
+                       Environment.Exit (2);
+               if (!mre2.WaitOne (5000))
+                       Environment.Exit (22);
+
+               try {
+                       a.EndInvoke (ares);
+                       Environment.Exit (4);
+               } catch (CustomException) {
+               } catch (Exception ex) {
+                       Console.WriteLine (ex);
+                       Environment.Exit (3);
+               }
+
+               Environment.Exit (0);
+       }
+}
diff --git a/mono/tests/unhandled-exception-7.cs b/mono/tests/unhandled-exception-7.cs
new file mode 100644 (file)
index 0000000..d31fdf9
--- /dev/null
@@ -0,0 +1,55 @@
+using System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+
+class CustomException : Exception
+{
+}
+
+class CustomException2 : Exception
+{
+}
+
+class CrossDomain : MarshalByRefObject
+{
+       public Action NewDelegateWithTarget ()
+       {
+               return new Action (Bar);
+       }
+
+       public Action NewDelegateWithoutTarget ()
+       {
+               return () => { throw new CustomException (); };
+       }
+
+       public void Bar ()
+       {
+               throw new CustomException ();
+       }
+}
+
+class Driver
+{
+       /* expected exit code: 0 */
+       static void Main (string[] args)
+       {
+               ManualResetEvent mre = new ManualResetEvent (false);
+
+               var cd = (CrossDomain) AppDomain.CreateDomain ("ad").CreateInstanceAndUnwrap (typeof(CrossDomain).Assembly.FullName, "CrossDomain");
+
+               var a = cd.NewDelegateWithoutTarget ();
+               var ares = a.BeginInvoke (delegate { throw new CustomException2 (); }, null);
+
+               try {
+                       a.EndInvoke (ares);
+                       Environment.Exit (4);
+               } catch (CustomException) {
+               } catch (Exception ex) {
+                       Console.WriteLine (ex);
+                       Environment.Exit (3);
+               }
+
+               Environment.Exit (0);
+       }
+}
diff --git a/mono/tests/unhandled-exception-8.cs b/mono/tests/unhandled-exception-8.cs
new file mode 100644 (file)
index 0000000..d02896b
--- /dev/null
@@ -0,0 +1,55 @@
+using System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+
+class CustomException : Exception
+{
+}
+
+class CustomException2 : Exception
+{
+}
+
+class CrossDomain : MarshalByRefObject
+{
+       public Action NewDelegateWithTarget ()
+       {
+               return new Action (Bar);
+       }
+
+       public Action NewDelegateWithoutTarget ()
+       {
+               return () => { throw new CustomException (); };
+       }
+
+       public void Bar ()
+       {
+               throw new CustomException ();
+       }
+}
+
+class Driver
+{
+       /* expected exit code: 3 */
+       static void Main (string[] args)
+       {
+               ManualResetEvent mre = new ManualResetEvent (false);
+
+               var cd = (CrossDomain) AppDomain.CreateDomain ("ad").CreateInstanceAndUnwrap (typeof(CrossDomain).Assembly.FullName, "CrossDomain");
+
+               var a = cd.NewDelegateWithTarget ();
+               var ares = a.BeginInvoke (delegate { throw new CustomException2 (); }, null);
+
+               try {
+                       a.EndInvoke (ares);
+                       Environment.Exit (4);
+               } catch (CustomException) {
+               } catch (Exception ex) {
+                       Console.WriteLine (ex);
+                       Environment.Exit (3);
+               }
+
+               Environment.Exit (0);
+       }
+}
diff --git a/mono/tests/unhandled-exception.cs b/mono/tests/unhandled-exception.cs
deleted file mode 100644 (file)
index 7658e07..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Threading;
-using System.Threading.Tasks;
-
-class CustomException : Exception
-{
-}
-
-class CustomException2 : Exception
-{
-}
-
-
-class CrossDomain : MarshalByRefObject
-{
-       public Action NewDelegateWithTarget ()
-       {
-               return new Action (Bar);
-       }
-
-       public Action NewDelegateWithoutTarget ()
-       {
-               return () => { throw new CustomException (); };
-       }
-
-       public void Bar ()
-       {
-               throw new CustomException ();
-       }
-}
-
-class Driver {
-       static ManualResetEvent mre = new ManualResetEvent (false);
-
-       static void DoTest1 ()
-       {
-               mre.Reset ();
-
-               var t = new Thread (new ThreadStart (() => { try { throw new CustomException (); } finally { mre.Set (); } }));
-               t.Start ();
-
-               if (!mre.WaitOne (5000))
-                       Environment.Exit (2);
-
-               t.Join ();
-       }
-
-       static void DoTest2 ()
-       {
-               mre.Reset ();
-
-               var a = new Action (() => { try { throw new CustomException (); } finally { mre.Set (); } });
-               var ares = a.BeginInvoke (null, null);
-
-               if (!mre.WaitOne (5000))
-                       Environment.Exit (2);
-
-               try {
-                       a.EndInvoke (ares);
-                       throw new Exception ();
-               } catch (CustomException) {                     
-               } catch (Exception) {
-                       Environment.Exit (3);
-               }
-       }
-
-       static void DoTest3 ()
-       {
-               mre.Reset ();
-
-               ThreadPool.QueueUserWorkItem (_ => { try { throw new CustomException (); } finally { mre.Set (); } });
-
-               if (!mre.WaitOne (5000))
-                       Environment.Exit (2);
-       }
-
-       static void DoTest4 ()
-       {
-               mre.Reset ();
-
-               var t = Task.Factory.StartNew (new Action (() => { try { throw new CustomException (); } finally { mre.Set (); } }));
-
-               if (!mre.WaitOne (5000))
-                       Environment.Exit (2);
-
-               try {
-                       t.Wait ();
-                       throw new Exception ();
-               } catch (AggregateException ae) {
-                       if (!(ae.InnerExceptions [0] is CustomException))
-                               Environment.Exit (4);
-               } catch (Exception) {
-                       Environment.Exit (3);
-               }
-       }
-       
-       class FinalizedClass
-       {
-               ~FinalizedClass ()
-               {
-                       try {
-                               throw new CustomException ();
-                       } finally {
-                               mre.Set ();
-                       }
-               }
-       }
-
-       static void DoTest5 ()
-       {
-               mre.Reset ();
-
-               new FinalizedClass();
-
-               GC.Collect ();
-               GC.WaitForPendingFinalizers ();
-
-               if (!mre.WaitOne (5000))
-                       Environment.Exit (2);
-       }
-
-       static void DoTest6 ()
-       {
-               ManualResetEvent mre2 = new ManualResetEvent (false);
-
-               mre.Reset ();
-
-               var a = new Action (() => { try { throw new CustomException (); } finally { mre.Set (); } });
-               var ares = a.BeginInvoke (_ => { mre2.Set (); throw new CustomException2 (); }, null);
-
-               if (!mre.WaitOne (5000))
-                       Environment.Exit (2);
-               if (!mre2.WaitOne (5000))
-                       Environment.Exit (22);
-
-               try {
-                       a.EndInvoke (ares);
-                       throw new Exception ();
-               } catch (CustomException) {
-               } catch (Exception) {
-                       Environment.Exit (3);
-               }
-       }
-
-       static void DoTest7 ()
-       {
-               var cd = (CrossDomain) AppDomain.CreateDomain ("ad").CreateInstanceAndUnwrap (typeof(CrossDomain).Assembly.FullName, "CrossDomain");
-
-               var a = cd.NewDelegateWithoutTarget ();
-               var ares = a.BeginInvoke (delegate { throw new CustomException2 (); }, null);
-
-               try {
-                       a.EndInvoke (ares);
-                       throw new Exception ();
-               } catch (CustomException) {
-               } catch (Exception) {
-                       Environment.Exit (3);
-               }
-       }
-
-       static void DoTest8 ()
-       {
-               var cd = (CrossDomain) AppDomain.CreateDomain ("ad").CreateInstanceAndUnwrap (typeof(CrossDomain).Assembly.FullName, "CrossDomain");
-
-               var a = cd.NewDelegateWithTarget ();
-               var ares = a.BeginInvoke (delegate { throw new CustomException2 (); }, null);
-
-               try {
-                       a.EndInvoke (ares);
-                       throw new Exception ();
-               } catch (CustomException) {
-               } catch (Exception) {
-                       Environment.Exit (3);
-               }
-       }
-
-       static void Main (string[] args)
-       {
-               switch (int.Parse (args [0])) {
-               case 1: DoTest1 (); break;
-               case 2: DoTest2 (); break;
-               case 3: DoTest3 (); break;
-               case 4: DoTest4 (); break;
-               case 5: DoTest5 (); break;
-               case 6: DoTest6 (); break;
-               case 7: DoTest7 (); break;
-               case 8: DoTest8 (); break;
-               default: throw new ArgumentOutOfRangeException ();
-               }
-               Environment.Exit (0);
-       }
-}
index ce9958e5946a0b393e375257ecea4a24e9596c25..1f5427ed6980b31a474bddf927d3e934817b748a 100644 (file)
@@ -9,3 +9,4 @@
 /test-mono-linked-list-set
 /test-sgen-qsort
 /test-conc-hashtable
+/test-mono-handle
\ No newline at end of file
index 10e0da01b2e9a24119c0b45f6eef17afe506e58d..9db0e0c98230823e073ea57b46454c647c01272f 100644 (file)
@@ -35,9 +35,14 @@ test_conc_hashtable_CFLAGS = $(test_cflags)
 test_conc_hashtable_LDADD = $(test_ldadd)
 test_conc_hashtable_LDFLAGS = $(test_ldflags)
 
-noinst_PROGRAMS = test-sgen-qsort test-memfuncs test-mono-linked-list-set test-conc-hashtable
+test_mono_handle_SOURCES = test-mono-handle.c
+test_mono_handle_CFLAGS = $(test_cflags)
+test_mono_handle_LDADD = $(test_ldadd)
+test_mono_handle_LDFLAGS = $(test_ldflags)
 
-TESTS = test-sgen-qsort test-memfuncs test-mono-linked-list-set test-conc-hashtable
+noinst_PROGRAMS = test-sgen-qsort test-memfuncs test-mono-linked-list-set test-conc-hashtable test-mono-handle
+
+TESTS = test-sgen-qsort test-memfuncs test-mono-linked-list-set test-conc-hashtable test-mono-handle
 
 .NOTPARALLEL:
 
index fec63391ed85d337ac078ed81ebcc71014c73bb0..c5303a1a6cd7b3060fae2b5be3aeeaa1815d952b 100644 (file)
@@ -37,24 +37,24 @@ single_writer_single_reader (void)
        MonoConcurrentHashTable *h;
        int res = 0;
 
-       mono_mutex_init (&mutex);
+       mono_os_mutex_init (&mutex);
        h = mono_conc_hashtable_new (NULL, NULL);
 
-       mono_mutex_lock (&mutex);
+       mono_os_mutex_lock (&mutex);
        mono_conc_hashtable_insert (h, GUINT_TO_POINTER (10), GUINT_TO_POINTER (20));
-       mono_mutex_unlock (&mutex);
+       mono_os_mutex_unlock (&mutex);
 
-       mono_mutex_lock (&mutex);
+       mono_os_mutex_lock (&mutex);
        mono_conc_hashtable_insert (h, GUINT_TO_POINTER (30), GUINT_TO_POINTER (40));
-       mono_mutex_unlock (&mutex);
+       mono_os_mutex_unlock (&mutex);
 
-       mono_mutex_lock (&mutex);
+       mono_os_mutex_lock (&mutex);
        mono_conc_hashtable_insert (h, GUINT_TO_POINTER (50), GUINT_TO_POINTER (60));
-       mono_mutex_unlock (&mutex);
+       mono_os_mutex_unlock (&mutex);
 
-       mono_mutex_lock (&mutex);
+       mono_os_mutex_lock (&mutex);
        mono_conc_hashtable_insert (h, GUINT_TO_POINTER (2), GUINT_TO_POINTER (3));
-       mono_mutex_unlock (&mutex);
+       mono_os_mutex_unlock (&mutex);
 
        if (mono_conc_hashtable_lookup (h, GUINT_TO_POINTER (30)) != GUINT_TO_POINTER (40))
                res = 1;
@@ -66,7 +66,7 @@ single_writer_single_reader (void)
                res = 4;
 
        mono_conc_hashtable_destroy (h);
-       mono_mutex_destroy (&mutex);
+       mono_os_mutex_destroy (&mutex);
        if (res)
                printf ("SERIAL TEST FAILED %d\n", res);
        return res;
@@ -82,9 +82,9 @@ pw_sr_thread (void *arg)
        mono_thread_info_attach ((gpointer)&arg);
 
        for (i = 0; i < 1000; ++i) {
-               mono_mutex_lock (&global_mutex);
+               mono_os_mutex_lock (&global_mutex);
                mono_conc_hashtable_insert (hash, GINT_TO_POINTER (i + idx), GINT_TO_POINTER (i + 1));
-               mono_mutex_unlock (&global_mutex);
+               mono_os_mutex_unlock (&global_mutex);
        }
        return NULL;
 }
@@ -95,7 +95,7 @@ parallel_writer_single_reader (void)
        pthread_t a,b,c;
        int i, j, res = 0;
 
-       mono_mutex_init (&global_mutex);
+       mono_os_mutex_init (&global_mutex);
        hash = mono_conc_hashtable_new (NULL, NULL);
 
        pthread_create (&a, NULL, pw_sr_thread, GINT_TO_POINTER (1));
@@ -117,7 +117,7 @@ parallel_writer_single_reader (void)
 
 done:
        mono_conc_hashtable_destroy (hash);
-       mono_mutex_destroy (&global_mutex);
+       mono_os_mutex_destroy (&global_mutex);
        if (res)
                printf ("PAR_WRITER_SINGLE_READER TEST FAILED %d\n", res);
        return res;
@@ -149,7 +149,7 @@ single_writer_parallel_reader (void)
        int i, res = 0;
        ra = rb = rc = GINT_TO_POINTER (1);
 
-       mono_mutex_init (&global_mutex);
+       mono_os_mutex_init (&global_mutex);
        hash = mono_conc_hashtable_new (NULL, NULL);
 
        pthread_create (&a, NULL, pr_sw_thread, GINT_TO_POINTER (0));
@@ -157,17 +157,17 @@ single_writer_parallel_reader (void)
        pthread_create (&c, NULL, pr_sw_thread, GINT_TO_POINTER (2));
 
        for (i = 0; i < 100; ++i) {
-               mono_mutex_lock (&global_mutex);
+               mono_os_mutex_lock (&global_mutex);
                mono_conc_hashtable_insert (hash, GINT_TO_POINTER (i +   0 + 1), GINT_TO_POINTER ((i +   0) * 2 + 1));
-               mono_mutex_unlock (&global_mutex);
+               mono_os_mutex_unlock (&global_mutex);
 
-               mono_mutex_lock (&global_mutex);
+               mono_os_mutex_lock (&global_mutex);
                mono_conc_hashtable_insert (hash, GINT_TO_POINTER (i + 100 + 1), GINT_TO_POINTER ((i + 100) * 2 + 1));
-               mono_mutex_unlock (&global_mutex);
+               mono_os_mutex_unlock (&global_mutex);
 
-               mono_mutex_lock (&global_mutex);
+               mono_os_mutex_lock (&global_mutex);
                mono_conc_hashtable_insert (hash, GINT_TO_POINTER (i + 200 + 1), GINT_TO_POINTER ((i + 200) * 2 + 1));
-               mono_mutex_unlock (&global_mutex);
+               mono_os_mutex_unlock (&global_mutex);
        }
 
        pthread_join (a, &ra);
@@ -176,7 +176,7 @@ single_writer_parallel_reader (void)
        res = GPOINTER_TO_INT (ra) + GPOINTER_TO_INT (rb) + GPOINTER_TO_INT (rc);
 
        mono_conc_hashtable_destroy (hash);
-       mono_mutex_destroy (&global_mutex);
+       mono_os_mutex_destroy (&global_mutex);
        if (res)
                printf ("SINGLE_WRITER_PAR_READER TEST FAILED %d\n", res);
        return res;
@@ -213,9 +213,9 @@ pw_pr_w_add_thread (void *arg)
        mono_thread_info_attach ((gpointer)&arg);
 
        for (i = idx; i < idx + 1000; i++) {
-               mono_mutex_lock (&global_mutex);
+               mono_os_mutex_lock (&global_mutex);
                mono_conc_hashtable_insert (hash, GINT_TO_POINTER (i + 1), GINT_TO_POINTER (i + 1));
-               mono_mutex_unlock (&global_mutex);
+               mono_os_mutex_unlock (&global_mutex);
        }
        return NULL;
 }
@@ -228,9 +228,9 @@ pw_pr_w_del_thread (void *arg)
        mono_thread_info_attach ((gpointer)&arg);
 
        for (i = idx; i < idx + 1000; i++) {
-               mono_mutex_lock (&global_mutex);
+               mono_os_mutex_lock (&global_mutex);
                mono_conc_hashtable_remove (hash, GINT_TO_POINTER (i + 1));
-               mono_mutex_unlock (&global_mutex);
+               mono_os_mutex_unlock (&global_mutex);
        }
        return NULL;
 }
@@ -244,7 +244,7 @@ parallel_writer_parallel_reader (void)
 
        srand(time(NULL));
 
-       mono_mutex_init (&global_mutex);
+       mono_os_mutex_init (&global_mutex);
        hash = mono_conc_hashtable_new (NULL, NULL);
 
        for (i = 0; i < 2; i++) {
@@ -284,7 +284,7 @@ parallel_writer_parallel_reader (void)
                printf ("PAR_WRITER_PAR_READER TEST FAILED %d %d %d\n", GPOINTER_TO_INT (a), GPOINTER_TO_INT (b), GPOINTER_TO_INT (c));
 
        mono_conc_hashtable_destroy (hash);
-       mono_mutex_destroy (&global_mutex);
+       mono_os_mutex_destroy (&global_mutex);
 
        return res;
 }
@@ -328,14 +328,25 @@ benchmark_glib (void)
        g_hash_table_destroy (h);
 }
 
+static void
+thread_state_init (MonoThreadUnwindState *ctx)
+{
+}
+
+
 int
 main (void)
 {
        MonoThreadInfoCallbacks cb = { NULL };
+       MonoThreadInfoRuntimeCallbacks ticallbacks;
        int res = 0;
 
        CHECKED_MONO_INIT ();
        mono_threads_init (&cb, sizeof (MonoThreadInfo));
+       memset (&ticallbacks, 0, sizeof (ticallbacks));
+       ticallbacks.thread_state_init = thread_state_init;
+       mono_threads_runtime_init (&ticallbacks);
+
        mono_thread_info_attach ((gpointer)&cb);
 
        // benchmark_conc ();
index a2b86bbd825a35c59a56ee68e8bc5726d8cc0a30..2fb1498f60995e14dde7add344b9f5722e030ec2 100644 (file)
@@ -40,9 +40,9 @@
 int
 main (void)
 {
-       unsigned char *random_mem = malloc (POOL_SIZE);
-       unsigned char *reference = malloc (POOL_SIZE);
-       unsigned char *playground = malloc (POOL_SIZE);
+       unsigned char *random_mem = (unsigned char *)malloc (POOL_SIZE);
+       unsigned char *reference = (unsigned char *)malloc (POOL_SIZE);
+       unsigned char *playground = (unsigned char *)malloc (POOL_SIZE);
        long *long_random_mem;
        int i, offset, size, src_offset, dest_offset;
 
diff --git a/mono/unit-tests/test-mono-handle.c b/mono/unit-tests/test-mono-handle.c
new file mode 100644 (file)
index 0000000..db620f1
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * test-mono-handle: tests for MonoHandle and MonoHandleArena
+ *
+ * Authors:
+ *   Aleksey Kliger <aleksey@xamarin.com>
+ *
+ * Copyright 2015 Xamarin, Inc. (www.xamarin.com)
+ */
+
+#include <config.h>
+#include <glib.h>
+#include <mono/metadata/handle.h>
+#include <mono/metadata/handle-private.h>
+
+static void
+test1_arena_size ()
+{
+       for (gsize i = 1; i < 10; ++i) {
+               gsize sz = mono_handle_arena_size(i);
+               g_assert(sz >= i*sizeof(MonoHandle));
+       }
+}
+
+static void
+test2_arena_push_pop ()
+{
+       MonoHandleArena *top = NULL;
+
+       const int n_handles = 3;
+       MonoHandleArena *new_arena1 = g_malloc0 (mono_handle_arena_size (n_handles));
+       mono_handle_arena_stack_push (&top, new_arena1, n_handles);
+
+       MonoHandleArena *new_arena2 = g_malloc0 (mono_handle_arena_size (n_handles));
+
+       mono_handle_arena_stack_push (&top, new_arena2, n_handles);
+
+       g_assert (top == new_arena2);
+
+       mono_handle_arena_stack_pop (&top, new_arena2, n_handles);
+
+       g_free (new_arena2);
+
+       g_assert (top == new_arena1);
+
+       mono_handle_arena_stack_pop (&top, new_arena1, n_handles);
+
+       g_assert (top == NULL);
+       
+       g_free (new_arena1);
+}
+
+
+
+int
+main (int argc, const char* argv[])
+{
+       test1_arena_size ();
+       
+       test2_arena_push_pop ();
+
+       return 0;
+}
index 7d5cac53085e4ff5f6148fb3a3095a0a5c4f81cd..a5e01ebe09ec6e5f913e1ad936c822596d39ecde 100644 (file)
@@ -48,7 +48,7 @@ mono_hazard_pointer_clear_all (MonoThreadHazardPointers *hp, int retain)
 static void
 free_node (void *n)
 {
-       node_t *node = n;
+       node_t *node = (node_t *)n;
        assert (node->state == STATE_BUSY);
        node->state = STATE_OUT;
 }
@@ -56,7 +56,7 @@ free_node (void *n)
 static void*
 worker (void *arg)
 {
-       thread_data_t *thread_data = arg;
+       thread_data_t *thread_data = (thread_data_t *)arg;
        MonoThreadHazardPointers *hp;
        int skip = thread_data->skip;
        int i, j;
index 40ca64cb01f1d64db54abc270b47d5c2f652aa07..951b1b7321bb04a0f35ef4d9408308265748ac41 100644 (file)
@@ -100,7 +100,7 @@ compare_sorts2 (void *base, size_t nel)
        memcpy (b2, base, len);
 
        qsort (b1, nel, sizeof (teststruct_t*), compare_teststructs2);
-       qsort_test_struct (b2, nel);
+       qsort_test_struct ((teststruct_t **)b2, nel);
 
        assert (!memcmp (b1, b2, len));
 
index 0b465253d540e4a65129326cf84065755f0927f7..c608c582b555f2b6041d2f8afee13ba3dbe2201e 100644 (file)
@@ -15,7 +15,7 @@ monoutils_sources = \
        mono-md5.c              \
        mono-sha1.c             \
        mono-logger.c           \
-       mono-logger-internal.h  \
+       mono-logger-internals.h \
        mono-codeman.c          \
        dlmalloc.h              \
        dlmalloc.c              \
@@ -36,9 +36,10 @@ monoutils_sources = \
        mono-math.c             \
        mono-mmap.c             \
        mono-mmap.h             \
-       mono-mmap-internal.h    \
-       mono-mutex.c            \
-       mono-mutex.h            \
+       mono-mmap-internals.h   \
+       mono-os-mutex.h         \
+       mono-coop-mutex.h               \
+       mono-once.h             \
        mono-lazy-init.h                \
        mono-networkinterfaces.c                \
        mono-networkinterfaces.h                \
@@ -53,8 +54,8 @@ monoutils_sources = \
        mono-uri.c              \
        mono-poll.c             \
        mono-path.c             \
-       mono-semaphore.c        \
-       mono-semaphore.h        \
+       mono-os-semaphore.h     \
+       mono-coop-semaphore.h           \
        mono-sigcontext.h       \
        mono-stdlib.c           \
        mono-property-hash.h    \
index 9ab8746f299f98ca783767ec8545aea0bab17928..447af4e8995727ef2a353acbeb766b5110127109 100644 (file)
@@ -12,7 +12,6 @@
 #include <glib.h>
 
 #include <mono/utils/atomic.h>
-#include <mono/utils/mono-mutex.h>
 
 #if defined (WAPI_NO_ATOMIC_ASM) || defined (BROKEN_64BIT_ATOMICS_INTRINSIC)
 
index 47be44419ae42b1c98341dd2dc4c4c627dcb6156..399a5c609a9b7ec323b5e3afc7264d3e8a9511c0 100644 (file)
@@ -42,7 +42,7 @@ mono_binary_search (
        size_t member_size,
        BinarySearchComparer comparer)
 {
-       const char *base = array;
+       const char *base = (const char *)array;
        size_t lim;
        int cmp;
        const void *p;
index 7dd659918745bfc7419451f9cc3ab93d117fba25..65bff4d26fba514ac65af3529cc1042adb631e43 100644 (file)
 #include <mono/utils/checked-build.h>
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/mono-tls.h>
+#include <mono/metadata/mempool.h>
+#include <mono/metadata/metadata-internals.h>
+#include <mono/metadata/image-internals.h>
+#include <mono/metadata/class-internals.h>
+#include <mono/metadata/reflection-internals.h>
 #include <glib.h>
 
 #define MAX_NATIVE_BT 6
@@ -76,6 +81,7 @@ translate_backtrace (gpointer native_trace[], int size)
 
 typedef struct {
        GPtrArray *transitions;
+       gboolean in_gc_critical_region;
 } CheckState;
 
 typedef struct {
@@ -225,4 +231,365 @@ assert_gc_neutral_mode (void)
        }
 }
 
+void *
+critical_gc_region_begin(void)
+{
+       CheckState *state = get_state ();
+       state->in_gc_critical_region = TRUE;
+       return state;
+}
+
+
+void
+critical_gc_region_end(void* token)
+{
+       CheckState *state = get_state();
+       g_assert (state == token);
+       state->in_gc_critical_region = FALSE;
+}
+
+void
+assert_not_in_gc_critical_region(void)
+{
+       CheckState *state = get_state();
+       if (state->in_gc_critical_region) {
+               MonoThreadInfo *cur = mono_thread_info_current();
+               state = mono_thread_info_current_state(cur);
+               assertion_fail("Expected GC Unsafe mode, but was in %s state", mono_thread_state_name(state));
+       }
+}
+
+// check_metadata_store et al: The goal of these functions is to verify that if there is a pointer from one mempool into
+// another, that the pointed-to memory is protected by the reference count mechanism for MonoImages.
+//
+// Note: The code below catches only some kinds of failures. Failures outside its scope notably incode:
+// * Code below absolutely assumes that no mempool is ever held as "mempool" member by more than one Image or ImageSet at once
+// * Code below assumes reference counts never underflow (ie: if we have a pointer to something, it won't be deallocated while we're looking at it)
+// Locking strategy is a little slapdash overall.
+
+// Reference audit support
+#define check_mempool_assert_message(...) \
+       g_assertion_message("Mempool reference violation: " __VA_ARGS__)
+
+typedef struct
+{
+       MonoImage *image;
+       MonoImageSet *image_set;
+} MonoMemPoolOwner;
+
+static MonoMemPoolOwner mono_mempool_no_owner = {NULL,NULL};
+
+static gboolean
+check_mempool_owner_eq (MonoMemPoolOwner a, MonoMemPoolOwner b)
+{
+       return a.image == b.image && a.image_set == b.image_set;
+}
+
+// Say image X "references" image Y if X either contains Y in its modules field, or X’s "references" field contains an
+// assembly whose image is Y.
+// Say image X transitively references image Y if there is any chain of images-referencing-images which leads from X to Y.
+// Once the mempools for two pointers have been looked up, there are four possibilities:
+
+// Case 1. Image FROM points to Image TO: Legal if FROM transitively references TO
+
+// We'll do a simple BFS graph search on images. For each image we visit:
+static void
+check_image_search (GHashTable *visited, GPtrArray *next, MonoImage *candidate, MonoImage *goal, gboolean *success)
+{
+       // Image hasn't even been loaded-- ignore it
+       if (!candidate)
+               return;
+
+       // Image has already been visited-- ignore it
+       if (g_hash_table_lookup_extended (visited, candidate, NULL, NULL))
+               return;
+
+       // Image is the target-- mark success
+       if (candidate == goal)
+       {
+               *success = TRUE;
+               return;
+       }
+
+       // Unvisited image, queue it to have its children visited
+       g_hash_table_insert (visited, candidate, NULL);
+       g_ptr_array_add (next, candidate);
+       return;
+}
+
+static gboolean
+check_image_may_reference_image(MonoImage *from, MonoImage *to)
+{
+       if (to == from) // Shortcut
+               return TRUE;
+
+       // Corlib is never unloaded, and all images implicitly reference it.
+       // Some images avoid explicitly referencing it as an optimization, so special-case it here.
+       if (to == mono_defaults.corlib)
+               return TRUE;
+
+       // Non-dynamic images may NEVER reference dynamic images
+       if (to->dynamic && !from->dynamic)
+               return FALSE;
+
+       // FIXME: We currently give a dynamic images a pass on the reference rules.
+       // Dynamic images may ALWAYS reference non-dynamic images.
+       // We allow this because the dynamic image code is known "messy", and in theory it is already
+       // protected because dynamic images can only reference classes their assembly has retained.
+       // However, long term, we should make this rigorous.
+       if (from->dynamic && !to->dynamic)
+               return TRUE;
+
+       gboolean success = FALSE;
+
+       // Images to inspect on this pass, images to inspect on the next pass
+       GPtrArray *current = g_ptr_array_sized_new (1), *next = g_ptr_array_new ();
+
+       // Because in practice the image graph contains cycles, we must track which images we've visited
+       GHashTable *visited = g_hash_table_new (NULL, NULL);
+
+       #define CHECK_IMAGE_VISIT(i) check_image_search (visited, next, (i), to, &success)
+
+       CHECK_IMAGE_VISIT (from); // Initially "next" contains only from node
+
+       // For each pass exhaust the "to check" queue while filling up the "check next" queue
+       while (!success && next->len > 0) // Halt on success or when out of nodes to process
+       {
+               // Swap "current" and "next" and clear next
+               GPtrArray *temp = current;
+               current = next;
+               next = temp;
+               g_ptr_array_set_size (next, 0);
+
+               int current_idx;
+               for(current_idx = 0; current_idx < current->len; current_idx++)
+               {
+                       MonoImage *checking = g_ptr_array_index (current, current_idx); // CAST?
+
+                       mono_image_lock (checking);
+
+                       // For each queued image visit all directly referenced images
+                       int inner_idx;
+
+                       for (inner_idx = 0; !success && inner_idx < checking->module_count; inner_idx++)
+                       {
+                               CHECK_IMAGE_VISIT (checking->modules[inner_idx]);
+                       }
+
+                       for (inner_idx = 0; !success && inner_idx < checking->nreferences; inner_idx++)
+                       {
+                               // References are lazy-loaded and thus allowed to be NULL.
+                               // If they are NULL, we don't care about them for this search, because they haven't impacted ref_count yet.
+                               if (checking->references[inner_idx])
+                               {
+                                       CHECK_IMAGE_VISIT (checking->references[inner_idx]->image);
+                               }
+                       }
+
+                       mono_image_unlock (checking);
+               }
+       }
+
+       g_ptr_array_free (current, TRUE); g_ptr_array_free (next, TRUE); g_hash_table_destroy (visited);
+
+       return success;
+}
+
+// Case 2. ImageSet FROM points to Image TO: One of FROM's "images" either is, or transitively references, TO.
+static gboolean
+check_image_set_may_reference_image (MonoImageSet *from, MonoImage *to)
+{
+       // See above-- All images implicitly reference corlib
+       if (to == mono_defaults.corlib)
+               return TRUE;
+
+       int idx;
+       gboolean success = FALSE;
+       mono_image_set_lock (from);
+       for (idx = 0; !success && idx < from->nimages; idx++)
+       {
+               if (check_image_may_reference_image (from->images[idx], to))
+                       success = TRUE;
+       }
+       mono_image_set_unlock (from);
+
+       return success; // No satisfying image found in from->images
+}
+
+// Case 3. ImageSet FROM points to ImageSet TO: The images in TO are a strict subset of FROM (no transitive relationship is important here)
+static gboolean
+check_image_set_may_reference_image_set (MonoImageSet *from, MonoImageSet *to)
+{
+       if (to == from)
+               return TRUE;
+
+       gboolean valid = TRUE; // Until proven otherwise
+
+       mono_image_set_lock (from); mono_image_set_lock (to);
+
+       int to_idx, from_idx;
+       for (to_idx = 0; valid && to_idx < to->nimages; to_idx++)
+       {
+               gboolean seen = FALSE;
+
+               // If TO set includes corlib, the FROM set may
+               // implicitly reference corlib, even if it's not
+               // present in the set explicitly.
+               if (to->images[to_idx] == mono_defaults.corlib)
+                       seen = TRUE;
+
+               // For each item in to->images, scan over from->images looking for it.
+               for (from_idx = 0; !seen && from_idx < from->nimages; from_idx++)
+               {
+                       if (to->images[to_idx] == from->images[from_idx])
+                               seen = TRUE;
+               }
+
+               // If the to->images item is not found in from->images, the subset check has failed
+               if (!seen)
+                       valid = FALSE;
+       }
+
+       mono_image_set_unlock (from); mono_image_set_unlock (to);
+
+       return valid; // All items in "to" were found in "from"
+}
+
+// Case 4. Image FROM points to ImageSet TO: FROM transitively references *ALL* of the “images” listed in TO
+static gboolean
+check_image_may_reference_image_set (MonoImage *from, MonoImageSet *to)
+{
+       if (to->nimages == 0) // Malformed image_set
+               return FALSE;
+
+       gboolean valid = TRUE;
+
+       mono_image_set_lock (to);
+       int idx;
+       for (idx = 0; valid && idx < to->nimages; idx++)
+       {
+               if (!check_image_may_reference_image (from, to->images[idx]))
+                       valid = FALSE;
+       }
+       mono_image_set_unlock (to);
+
+       return valid; // All images in to->images checked out
+}
+
+// Small helper-- get a descriptive string for a MonoMemPoolOwner
+// Callers are obligated to free buffer with g_free after use
+static const char *
+check_mempool_owner_name (MonoMemPoolOwner owner)
+{
+       GString *result = g_string_new (NULL);
+       if (owner.image)
+       {
+               if (owner.image->dynamic)
+                       g_string_append (result, "(Dynamic)");
+               g_string_append (result, owner.image->name);
+       }
+       else if (owner.image_set)
+       {
+               char *temp = mono_image_set_description (owner.image_set);
+               g_string_append (result, "(Image set)");
+               g_string_append (result, temp);
+               g_free (temp);
+       }
+       else
+       {
+               g_string_append (result, "(Non-image memory)");
+       }
+       return g_string_free (result, FALSE);
+}
+
+// Helper -- surf various image-locating functions looking for the owner of this pointer
+static MonoMemPoolOwner
+mono_find_mempool_owner (void *ptr)
+{
+       MonoMemPoolOwner owner = mono_mempool_no_owner;
+
+       owner.image = mono_find_image_owner (ptr);
+       if (!check_mempool_owner_eq (owner, mono_mempool_no_owner))
+               return owner;
+
+       owner.image_set = mono_find_image_set_owner (ptr);
+       if (!check_mempool_owner_eq (owner, mono_mempool_no_owner))
+               return owner;
+
+       owner.image = mono_find_dynamic_image_owner (ptr);
+
+       return owner;
+}
+
+// Actually perform reference audit
+static void
+check_mempool_may_reference_mempool (void *from_ptr, void *to_ptr, gboolean require_local)
+{
+       // Null pointers are OK
+       if (!to_ptr)
+               return;
+
+       MonoMemPoolOwner from = mono_find_mempool_owner (from_ptr), to = mono_find_mempool_owner (to_ptr);
+
+       if (require_local)
+       {
+               if (!check_mempool_owner_eq (from,to))
+                       check_mempool_assert_message ("Pointer in image %s should have been internal, but instead pointed to image %s", check_mempool_owner_name (from), check_mempool_owner_name (to));
+       }
+
+       // Writing into unknown mempool
+       else if (check_mempool_owner_eq (from, mono_mempool_no_owner))
+       {
+               check_mempool_assert_message ("Non-image memory attempting to write pointer to image %s", check_mempool_owner_name (to));
+       }
+
+       // Reading from unknown mempool
+       else if (check_mempool_owner_eq (to, mono_mempool_no_owner))
+       {
+               check_mempool_assert_message ("Attempting to write pointer from image %s to non-image memory", check_mempool_owner_name (from));
+       }
+
+       // Split out the four cases described above:
+       else if (from.image && to.image)
+       {
+               if (!check_image_may_reference_image (from.image, to.image))
+                       check_mempool_assert_message ("Image %s tried to point to image %s, but does not retain a reference", check_mempool_owner_name (from), check_mempool_owner_name (to));
+       }
+
+       else if (from.image && to.image_set)
+       {
+               if (!check_image_may_reference_image_set (from.image, to.image_set))
+                       check_mempool_assert_message ("Image %s tried to point to image set %s, but does not retain a reference", check_mempool_owner_name (from), check_mempool_owner_name (to));
+       }
+
+       else if (from.image_set && to.image_set)
+       {
+               if (!check_image_set_may_reference_image_set (from.image_set, to.image_set))
+                       check_mempool_assert_message ("Image set %s tried to point to image set %s, but does not retain a reference", check_mempool_owner_name (from), check_mempool_owner_name (to));
+       }
+
+       else if (from.image_set && to.image)
+       {
+               if (!check_image_set_may_reference_image (from.image_set, to.image))
+                       check_mempool_assert_message ("Image set %s tried to point to image %s, but does not retain a reference", check_mempool_owner_name (from), check_mempool_owner_name (to));
+       }
+
+       else
+       {
+               check_mempool_assert_message ("Internal logic error: Unreachable code");
+       }
+}
+
+void
+check_metadata_store (void *from, void *to)
+{
+    check_mempool_may_reference_mempool (from, to, FALSE);
+}
+
+void
+check_metadata_store_local (void *from, void *to)
+{
+    check_mempool_may_reference_mempool (from, to, TRUE);
+}
+
 #endif /* CHECKED_BUILD */
index d2ba9ec1b1b9d716a8f7ef147ac35cac1e79534b..83efd67c054899a2865326e8d65fb9a0b35e34d4 100644 (file)
 #define __CHECKED_BUILD_H__
 
 #include <config.h>
+#include <mono/utils/atomic.h>
+
+// This is for metadata writes which we have chosen not to check at the current time.
+// Because in principle this should never happen, we still use a macro so that the exemptions will be easier to find, and remove, later.
+// The current reason why this is needed is for pointers to constant strings, which the checker cannot verify yet.
+#define CHECKED_METADATA_WRITE_PTR_EXEMPT(ptr, val) do { (ptr) = (val); } while (0)
 
 #ifdef CHECKED_BUILD
 
+#define g_assert_checked g_assert
+
 /*
 GC runtime modes rules:
 
@@ -70,6 +78,42 @@ Functions that can be called from both coop or preept modes.
        assert_gc_neutral_mode ();      \
 } while (0);
 
+/* In a GC critical region, the thread is not allowed to switch to GC safe mode.
+ * For example if the thread is about to call a method that will manipulate managed objects.
+ * The GC critical region must only occur in unsafe mode.
+ */
+#define MONO_PREPARE_GC_CRITICAL_REGION                                        \
+       MON_REQ_GC_UNSAFE_MODE                                          \
+       do {                                                            \
+               void* __critical_gc_region_cookie = critical_gc_region_begin()
+
+#define MONO_FINISH_GC_CRITICAL_REGION                 \
+       critical_gc_region_end(__critical_gc_region_cookie);    \
+       } while(0)
+
+/* Verify that the thread is not currently in a GC critical region. */
+#define MONO_REQ_GC_NOT_CRITICAL do {                  \
+               assert_not_in_gc_critical_region();     \
+       } while(0)
+
+// Use when writing a pointer from one image or imageset to another.
+#define CHECKED_METADATA_WRITE_PTR(ptr, val) do {    \
+    check_metadata_store (&(ptr), (val));    \
+    (ptr) = (val);    \
+} while (0);
+
+// Use when writing a pointer from an image or imageset to itself.
+#define CHECKED_METADATA_WRITE_PTR_LOCAL(ptr, val) do {    \
+    check_metadata_store_local (&(ptr), (val));    \
+    (ptr) = (val);    \
+} while (0);
+
+// Use when writing a pointer from one image or imageset to another (atomic version).
+#define CHECKED_METADATA_WRITE_PTR_ATOMIC(ptr, val) do {    \
+    check_metadata_store (&(ptr), (val));    \
+    mono_atomic_store_release (&(ptr), (val));    \
+} while (0);
+
 /*
 This can be called by embedders
 */
@@ -90,20 +134,39 @@ void assert_gc_safe_mode (void);
 void assert_gc_unsafe_mode (void);
 void assert_gc_neutral_mode (void);
 
+void* critical_gc_region_begin(void);
+void critical_gc_region_end(void* token);
+void assert_not_in_gc_critical_region(void);
+
 void checked_build_init (void);
 void checked_build_thread_transition(const char *transition, void *info, int from_state, int suspend_count, int next_state, int suspend_count_delta);
 
+void check_metadata_store(void *from, void *to);
+void check_metadata_store_local(void *from, void *to);
+
 #else
 
+#define g_assert_checked(...)
+
 #define MONO_REQ_GC_SAFE_MODE
 #define MONO_REQ_GC_UNSAFE_MODE
 #define MONO_REQ_GC_NEUTRAL_MODE
 #define MONO_REQ_API_ENTRYPOINT
 #define MONO_REQ_RUNTIME_ENTRYPOINT
 
+#define MONO_PREPARE_GC_CRITICAL_REGION
+#define MONO_FINISH_GC_CRITICAL_REGION
+
+#define MONO_REQ_GC_NOT_CRITICAL
+
+
 #define CHECKED_MONO_INIT()
 #define CHECKED_BUILD_THREAD_TRANSITION(transition, info, from_state, suspend_count, next_state, suspend_count_delta)
 
+#define CHECKED_METADATA_WRITE_PTR(ptr, val) do { (ptr) = (val); } while (0)
+#define CHECKED_METADATA_WRITE_PTR_LOCAL(ptr, val) do { (ptr) = (val); } while (0)
+#define CHECKED_METADATA_WRITE_PTR_ATOMIC(ptr, val) do { mono_atomic_store_release (&(ptr), (val)); } while (0)
+
 #endif /* CHECKED_BUILD */
 
 #endif
index 11620b3a4254562fd97b205616e09edc6bdc8ccb..a90d27c064f4d60458a09512fc5cdf32ef8a9b82 100644 (file)
@@ -37,6 +37,7 @@
 #       endif
 #      endif
 
+#      define GC_INSIDE_DLL
 #      include <gc.h>
 #      include <gc_typed.h>
 #      include <gc_mark.h>
index 0d7d37ac736c04065cf200e8be8a0ae10ab9a925..606387c073ef9e93a815366808aee01bbe3d0cd6 100644 (file)
@@ -14,7 +14,7 @@
 #include <mono/utils/monobitset.h>
 #include <mono/utils/lock-free-array-queue.h>
 #include <mono/utils/atomic.h>
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-os-mutex.h>
 #ifdef SGEN_WITHOUT_MONO
 #include <mono/sgen/sgen-gc.h>
 #include <mono/sgen/sgen-client.h>
@@ -71,7 +71,7 @@ mono_thread_small_id_alloc (void)
 {
        int i, id = -1;
 
-       mono_mutex_lock (&small_id_mutex);
+       mono_os_mutex_lock (&small_id_mutex);
 
        if (!small_id_table)
                small_id_table = mono_bitset_new (1, 0);
@@ -133,7 +133,7 @@ mono_thread_small_id_alloc (void)
                mono_memory_write_barrier ();
        }
 
-       mono_mutex_unlock (&small_id_mutex);
+       mono_os_mutex_unlock (&small_id_mutex);
 
        return id;
 }
@@ -142,13 +142,13 @@ void
 mono_thread_small_id_free (int id)
 {
        /* MonoBitSet operations are not atomic. */
-       mono_mutex_lock (&small_id_mutex);
+       mono_os_mutex_lock (&small_id_mutex);
 
        g_assert (id >= 0 && id < small_id_table->size);
        g_assert (mono_bitset_test_fast (small_id_table, id));
        mono_bitset_clear_fast (small_id_table, id);
 
-       mono_mutex_unlock (&small_id_mutex);
+       mono_os_mutex_unlock (&small_id_mutex);
 }
 
 static gboolean
@@ -353,7 +353,7 @@ mono_thread_smr_init (void)
 {
        int i;
 
-       mono_mutex_init_recursive(&small_id_mutex);
+       mono_os_mutex_init_recursive(&small_id_mutex);
        mono_counters_register ("Hazardous pointers", MONO_COUNTER_JIT | MONO_COUNTER_INT, &hazardous_pointer_count);
 
        for (i = 0; i < HAZARD_TABLE_OVERFLOW; ++i) {
index c2a39d22b84287af5dbdab56066025cfaf13eb3e..f657b5532ee76999e868360a7dbc69f3e5fe4b0b 100644 (file)
@@ -188,7 +188,7 @@ mono_gc_memmove_aligned (void *dest, const void *src, size_t size)
                        while (p > align_end)
                                *--p = *--s;
 
-                       word_start = align_up (start);
+                       word_start = (char *)align_up (start);
                        bytes_to_memmove = p - word_start;
                        p -= bytes_to_memmove;
                        s -= bytes_to_memmove;
index 30416858d9f0b868ffba274c587a7791558164eb..16dc6f9f65810736b6349ae56d485a9109adcab7 100644 (file)
@@ -26,7 +26,7 @@
 #include <nacl/nacl_dyncode.h>
 #include <mono/mini/mini.h>
 #endif
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-os-mutex.h>
 
 
 static uintptr_t code_memory_used = 0;
@@ -243,14 +243,14 @@ codechunk_valloc (void *preferred, guint32 size)
        GSList *freelist;
 
        if (!valloc_freelists) {
-               mono_mutex_init_recursive (&valloc_mutex);
+               mono_os_mutex_init_recursive (&valloc_mutex);
                valloc_freelists = g_hash_table_new (NULL, NULL);
        }
 
        /*
         * Keep a small freelist of memory blocks to decrease pressure on the kernel memory subsystem to avoid #3321.
         */
-       mono_mutex_lock (&valloc_mutex);
+       mono_os_mutex_lock (&valloc_mutex);
        freelist = (GSList *) g_hash_table_lookup (valloc_freelists, GUINT_TO_POINTER (size));
        if (freelist) {
                ptr = freelist->data;
@@ -262,7 +262,7 @@ codechunk_valloc (void *preferred, guint32 size)
                if (!ptr && preferred)
                        ptr = mono_valloc (NULL, size, MONO_PROT_RWX | ARCH_MAP_FLAGS);
        }
-       mono_mutex_unlock (&valloc_mutex);
+       mono_os_mutex_unlock (&valloc_mutex);
        return ptr;
 }
 
@@ -271,7 +271,7 @@ codechunk_vfree (void *ptr, guint32 size)
 {
        GSList *freelist;
 
-       mono_mutex_lock (&valloc_mutex);
+       mono_os_mutex_lock (&valloc_mutex);
        freelist = (GSList *) g_hash_table_lookup (valloc_freelists, GUINT_TO_POINTER (size));
        if (!freelist || g_slist_length (freelist) < VALLOC_FREELIST_SIZE) {
                freelist = g_slist_prepend (freelist, ptr);
@@ -279,7 +279,7 @@ codechunk_vfree (void *ptr, guint32 size)
        } else {
                mono_vfree (ptr, size);
        }
-       mono_mutex_unlock (&valloc_mutex);
+       mono_os_mutex_unlock (&valloc_mutex);
 }              
 
 static void
index 30521b2af9ef81e221add9051db5cbf3f46a299f..e0b2dcbbb0e36c49e649da110e62f8a6fd87d247 100644 (file)
@@ -48,7 +48,7 @@ conc_table_new (int size)
 static void
 conc_table_free (gpointer ptr)
 {
-       conc_table *table = ptr;
+       conc_table *table = (conc_table *)ptr;
        g_free (table->kvs);
        g_free (table);
 }
@@ -164,7 +164,7 @@ mono_conc_hashtable_lookup (MonoConcurrentHashTable *hash_table, gpointer key)
        hp = mono_hazard_pointer_get ();
 
 retry:
-       table = get_hazardous_pointer ((gpointer volatile*)&hash_table->table, hp, 0);
+       table = (conc_table *)get_hazardous_pointer ((gpointer volatile*)&hash_table->table, hp, 0);
        table_mask = table->table_size - 1;
        kvs = table->kvs;
        i = hash & table_mask;
index a1d20f1b04e7695dafff1b4825eb9a3609dfa887..a8eb927fb35e7161fc4ee2d46efa7c6166465a76 100644 (file)
@@ -12,7 +12,7 @@
 
 #include <mono/utils/mono-publib.h>
 #include <mono/utils/mono-compiler.h>
-#include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-os-mutex.h>
 #include <glib.h>
 
 typedef struct _MonoConcurrentHashTable MonoConcurrentHashTable;
diff --git a/mono/utils/mono-coop-mutex.h b/mono/utils/mono-coop-mutex.h
new file mode 100644 (file)
index 0000000..0a81275
--- /dev/null
@@ -0,0 +1,128 @@
+
+#ifndef __MONO_COOP_MUTEX_H__
+#define __MONO_COOP_MUTEX_H__
+
+#include <config.h>
+#include <glib.h>
+
+#include "mono-os-mutex.h"
+#include "mono-threads.h"
+
+G_BEGIN_DECLS
+
+/* We put the OS sync primitives in struct, so the compiler will warn us if
+ * we use mono_os_(mutex|cond|sem)_... on MonoCoop(Mutex|Cond|Sem) structures */
+
+typedef struct _MonoCoopMutex MonoCoopMutex;
+struct _MonoCoopMutex {
+       mono_mutex_t m;
+};
+
+typedef struct _MonoCoopCond MonoCoopCond;
+struct _MonoCoopCond {
+       mono_cond_t c;
+};
+
+static inline gint
+mono_coop_mutex_init (MonoCoopMutex *mutex)
+{
+       return mono_os_mutex_init (&mutex->m);
+}
+
+static inline gint
+mono_coop_mutex_init_recursive (MonoCoopMutex *mutex)
+{
+       return mono_os_mutex_init_recursive (&mutex->m);
+}
+
+static inline gint
+mono_coop_mutex_destroy (MonoCoopMutex *mutex)
+{
+       return mono_os_mutex_destroy (&mutex->m);
+}
+
+static inline gint
+mono_coop_mutex_lock (MonoCoopMutex *mutex)
+{
+       gint res;
+
+       /* Avoid thread state switch if lock is not contended */
+       if (mono_os_mutex_trylock (&mutex->m) == 0)
+               return 0;
+
+       MONO_PREPARE_BLOCKING;
+
+       res = mono_os_mutex_lock (&mutex->m);
+
+       MONO_FINISH_BLOCKING;
+
+       return res;
+}
+
+static inline gint
+mono_coop_mutex_trylock (MonoCoopMutex *mutex)
+{
+       return mono_os_mutex_trylock (&mutex->m);
+}
+
+static inline gint
+mono_coop_mutex_unlock (MonoCoopMutex *mutex)
+{
+       return mono_os_mutex_unlock (&mutex->m);
+}
+
+static inline gint
+mono_coop_cond_init (MonoCoopCond *cond)
+{
+       return mono_os_cond_init (&cond->c);
+}
+
+static inline gint
+mono_coop_cond_destroy (MonoCoopCond *cond)
+{
+       return mono_os_cond_destroy (&cond->c);
+}
+
+static inline gint
+mono_coop_cond_wait (MonoCoopCond *cond, MonoCoopMutex *mutex)
+{
+       gint res;
+
+       MONO_PREPARE_BLOCKING;
+
+       res = mono_os_cond_wait (&cond->c, &mutex->m);
+
+       MONO_FINISH_BLOCKING;
+
+       return res;
+}
+
+static inline gint
+mono_coop_cond_timedwait (MonoCoopCond *cond, MonoCoopMutex *mutex, guint32 timeout_ms)
+{
+       gint res;
+
+       MONO_PREPARE_BLOCKING;
+
+       res = mono_os_cond_timedwait (&cond->c, &mutex->m, timeout_ms);
+
+       MONO_FINISH_BLOCKING;
+
+       return res;
+}
+
+static inline gint
+mono_coop_cond_signal (MonoCoopCond *cond)
+{
+       return mono_os_cond_signal (&cond->c);
+}
+
+static inline gint
+mono_coop_cond_broadcast (MonoCoopCond *cond)
+{
+       return mono_os_cond_broadcast (&cond->c);
+}
+
+G_END_DECLS
+
+#endif /* __MONO_COOP_MUTEX_H__ */
diff --git a/mono/utils/mono-coop-semaphore.h b/mono/utils/mono-coop-semaphore.h
new file mode 100644 (file)
index 0000000..bcf45a2
--- /dev/null
@@ -0,0 +1,69 @@
+
+#ifndef __MONO_COOP_SEMAPHORE_H__
+#define __MONO_COOP_SEMAPHORE_H__
+
+#include <config.h>
+#include <glib.h>
+
+#include "mono-os-semaphore.h"
+#include "mono-threads.h"
+
+G_BEGIN_DECLS
+
+/* We put the OS sync primitives in struct, so the compiler will warn us if
+ * we use mono_os_(mutex|cond|sem)_... on MonoCoop(Mutex|Cond|Sem) structures */
+
+typedef struct _MonoCoopSem MonoCoopSem;
+struct _MonoCoopSem {
+       MonoSemType s;
+};
+
+static inline gint
+mono_coop_sem_init (MonoCoopSem *sem, int value)
+{
+       return mono_os_sem_init (&sem->s, value);
+}
+
+static inline gint
+mono_coop_sem_destroy (MonoCoopSem *sem)
+{
+       return mono_os_sem_destroy (&sem->s);
+}
+
+static inline gint
+mono_coop_sem_wait (MonoCoopSem *sem, MonoSemFlags flags)
+{
+       gint res;
+
+       MONO_PREPARE_BLOCKING;
+
+       res = mono_os_sem_wait (&sem->s, flags);
+
+       MONO_FINISH_BLOCKING;
+
+       return res;
+}
+
+static inline gint
+mono_coop_sem_timedwait (MonoCoopSem *sem, guint timeout_ms, MonoSemFlags flags)
+{
+       gint res;
+
+       MONO_PREPARE_BLOCKING;
+
+       res = mono_os_sem_timedwait (&sem->s, timeout_ms, flags);
+
+       MONO_FINISH_BLOCKING;
+
+       return res;
+}
+
+static inline gint
+mono_coop_sem_post (MonoCoopSem *sem)
+{
+       return mono_os_sem_post (&sem->s);
+}
+
+G_END_DECLS
+
+#endif /* __MONO_COOP_SEMAPHORE_H__ */
index 2c7dd19eb9fdbe645bd24c523eff158f5fa05048..17170a40ed2bec07c33b774255203416740f5543 100644 (file)
@@ -8,7 +8,7 @@
 #include "config.h"
 #include "mono-counters.h"
 #include "mono-proclib.h"
-#include "mono-mutex.h"
+#include "mono-os-mutex.h"
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
@@ -138,7 +138,7 @@ mono_counters_init (void)
        if (initialized)
                return;
 
-       mono_mutex_init (&counters_mutex);
+       mono_os_mutex_init (&counters_mutex);
 
        initialize_system_counters ();
 
@@ -155,19 +155,19 @@ register_internal (const char *name, int type, void *addr, int size)
        if ((type & MONO_COUNTER_VARIANCE_MASK) == 0)
                type |= MONO_COUNTER_MONOTONIC;
 
-       mono_mutex_lock (&counters_mutex);
+       mono_os_mutex_lock (&counters_mutex);
 
        for (counter = counters; counter; counter = counter->next) {
                if (counter->addr == addr) {
                        g_warning ("you are registering twice the same counter address");
-                       mono_mutex_unlock (&counters_mutex);
+                       mono_os_mutex_unlock (&counters_mutex);
                        return;
                }
        }
 
        counter = (MonoCounter *) malloc (sizeof (MonoCounter));
        if (!counter) {
-               mono_mutex_unlock (&counters_mutex);
+               mono_os_mutex_unlock (&counters_mutex);
                return;
        }
        counter->name = g_strdup (name);
@@ -191,7 +191,7 @@ register_internal (const char *name, int type, void *addr, int size)
        for (register_callback = register_callbacks; register_callback; register_callback = register_callback->next)
                ((MonoCounterRegisterCallback)register_callback->data) (counter);
 
-       mono_mutex_unlock (&counters_mutex);
+       mono_os_mutex_unlock (&counters_mutex);
 }
 
 /**
@@ -291,9 +291,9 @@ mono_counters_on_register (MonoCounterRegisterCallback callback)
                return;
        }
 
-       mono_mutex_lock (&counters_mutex);
+       mono_os_mutex_lock (&counters_mutex);
        register_callbacks = g_slist_append (register_callbacks, (gpointer) callback);
-       mono_mutex_unlock (&counters_mutex);
+       mono_os_mutex_unlock (&counters_mutex);
 }
 
 typedef int (*IntFunc) (void);
@@ -437,16 +437,16 @@ mono_counters_foreach (CountersEnumCallback cb, gpointer user_data)
                return;
        }
 
-       mono_mutex_lock (&counters_mutex);
+       mono_os_mutex_lock (&counters_mutex);
 
        for (counter = counters; counter; counter = counter->next) {
                if (!cb (counter, user_data)) {
-                       mono_mutex_unlock (&counters_mutex);
+                       mono_os_mutex_unlock (&counters_mutex);
                        return;
                }
        }
 
-       mono_mutex_unlock (&counters_mutex);
+       mono_os_mutex_unlock (&counters_mutex);
 }
 
 #define COPY_COUNTER(type,functype) do {       \
@@ -600,10 +600,10 @@ mono_counters_dump (int section_mask, FILE *outfile)
        if (!initialized)
                return;
 
-       mono_mutex_lock (&counters_mutex);
+       mono_os_mutex_lock (&counters_mutex);
 
        if (!counters) {
-               mono_mutex_unlock (&counters_mutex);
+               mono_os_mutex_unlock (&counters_mutex);
                return;
        }
 
@@ -622,7 +622,7 @@ mono_counters_dump (int section_mask, FILE *outfile)
        }
 
        fflush (outfile);
-       mono_mutex_unlock (&counters_mutex);
+       mono_os_mutex_unlock (&counters_mutex);
 }
 
 /**
@@ -638,7 +638,7 @@ mono_counters_cleanup (void)
        if (!initialized)
                return;
 
-       mono_mutex_lock (&counters_mutex);
+       mono_os_mutex_lock (&counters_mutex);
 
        counter = counters;
        counters = NULL;
@@ -649,7 +649,7 @@ mono_counters_cleanup (void)
                free (tmp);
        }
 
-       mono_mutex_unlock (&counters_mutex);
+       mono_os_mutex_unlock (&counters_mutex);
 }
 
 static MonoResourceCallback limit_reached = NULL;
index 8f609d0e44d4e618e927e6b253902cd29a86449e..0abcee98f15730a8d73b7a2f4dec99dc81409b06 100644 (file)
@@ -71,7 +71,7 @@ Requires the world to be stoped
 
 #define MONO_LLS_FOREACH_FILTERED(list, element, filter_func, type) {\
        MonoLinkedListSetNode *__cur;   \
-       for (__cur = (list)->head; __cur; __cur = mono_lls_pointer_unmask (__cur->next)) \
+       for (__cur = (list)->head; __cur; __cur = (MonoLinkedListSetNode *)mono_lls_pointer_unmask (__cur->next)) \
                if (!mono_lls_pointer_get_mark (__cur->next)) { \
                        (element) = (type)__cur;                        \
                        if (!filter_func (element)) continue;
diff --git a/mono/utils/mono-logger-internal.h b/mono/utils/mono-logger-internal.h
deleted file mode 100644 (file)
index ee88665..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-#ifndef __MONO_LOGGER_INTERNAL_H__
-#define __MONO_LOGGER_INTERNAL_H__
-
-#include <glib.h>
-#include "mono-logger.h"
-
-G_BEGIN_DECLS
-
-typedef enum {
-       MONO_TRACE_ASSEMBLY             = (1<<0),
-       MONO_TRACE_TYPE                 = (1<<1),
-       MONO_TRACE_DLLIMPORT            = (1<<2),
-       MONO_TRACE_GC                   = (1<<3),
-        MONO_TRACE_CONFIG              = (1<<4),
-       MONO_TRACE_AOT                  = (1<<5),
-       MONO_TRACE_SECURITY             = (1<<6),
-       MONO_TRACE_THREADPOOL           = (1<<7),
-       MONO_TRACE_IO_THREADPOOL        = (1<<8),
-       MONO_TRACE_ALL                  = MONO_TRACE_ASSEMBLY |
-                                         MONO_TRACE_TYPE |
-                                         MONO_TRACE_DLLIMPORT |
-                                         MONO_TRACE_GC |
-                                         MONO_TRACE_CONFIG |
-                                         MONO_TRACE_AOT |
-                                         MONO_TRACE_SECURITY |
-                                         MONO_TRACE_THREADPOOL |
-                                         MONO_TRACE_IO_THREADPOOL
-} MonoTraceMask;
-
-void 
-mono_trace_cleanup (void);
-
-void 
-mono_trace (GLogLevelFlags level, MonoTraceMask mask, const char *format, ...);
-
-void 
-mono_tracev (GLogLevelFlags level, MonoTraceMask mask, const char *format, va_list args);
-
-void 
-mono_trace_set_level (GLogLevelFlags level);
-
-void 
-mono_trace_set_mask (MonoTraceMask mask);
-
-void 
-mono_trace_push (GLogLevelFlags level, MonoTraceMask mask);
-
-void 
-mono_trace_pop (void);
-
-gboolean
-mono_trace_is_traced (GLogLevelFlags level, MonoTraceMask mask);
-
-#ifdef G_HAVE_ISO_VARARGS
-#define mono_trace_error(...)  mono_trace(G_LOG_LEVEL_ERROR, \
-                                                                                       __VA_ARGS__)
-#define mono_trace_warning(...) mono_trace(G_LOG_LEVEL_WARNING, \
-                                                                                       __VA_ARGS__)
-#define mono_trace_message(...) mono_trace(G_LOG_LEVEL_MESSAGE, \
-                                                                                       __VA_ARGS__)
-#elif defined(G_HAVE_GNUC_VARARGS)
-#define mono_trace_error(format...)    mono_trace(G_LOG_LEVEL_ERROR, \
-                                                                                       format)
-#define mono_trace_warning(format...) mono_trace(G_LOG_LEVEL_WARNING, \
-                                                                                       format)
-#define mono_trace_message(format...) mono_trace(G_LOG_LEVEL_MESSAGE, \
-                                                                                       format)
-#else /* no varargs macros */
-G_GNUC_UNUSED static void
-mono_trace_error(MonoTraceMask mask, const char *format, ...)
-{
-       va_list args;
-       va_start (args, format);
-       mono_tracev(G_LOG_LEVEL_ERROR, mask, format, args);
-       va_end (args);
-}
-
-G_GNUC_UNUSED static void
-mono_trace_warning(MonoTraceMask mask, const char *format, ...)
-{
-       va_list args;
-       va_start (args, format);
-       mono_tracev(G_LOG_LEVEL_WARNING, mask, format, args);
-       va_end (args);
-}
-
-G_GNUC_UNUSED static void
-mono_trace_message(MonoTraceMask mask, const char *format, ...)
-{
-       va_list args;
-       va_start (args, format);
-       mono_tracev(G_LOG_LEVEL_MESSAGE, mask, format, args);
-       va_end (args);
-}
-
-#endif /* !__GNUC__ */
-
-#if defined (PLATFORM_ANDROID) || (defined (TARGET_IOS) && defined (TARGET_IOS))
-
-#define mono_gc_printf(gc_log_file, format, ...) g_log ("mono-gc", G_LOG_LEVEL_MESSAGE, format, ##__VA_ARGS__)
-#define mono_runtime_printf(format, ...) g_log ("mono-rt", G_LOG_LEVEL_MESSAGE, format "\n", ##__VA_ARGS__)
-#define mono_runtime_printf_err(format, ...) g_log ("mono-rt", G_LOG_LEVEL_CRITICAL, format "\n", ##__VA_ARGS__)
-#define mono_runtime_stdout_fflush() do { } while (0)
-
-#else
-
-#define mono_gc_printf(gc_log_file, format, ...) do {  \
-       fprintf (gc_log_file, format, ##__VA_ARGS__);   \
-       fflush (gc_log_file);   \
-} while (0)
-
-#define mono_runtime_printf(format, ...) fprintf (stdout, format "\n", ##__VA_ARGS__)
-#define mono_runtime_printf_err(format, ...) fprintf (stderr, format "\n", ##__VA_ARGS__)
-#define mono_runtime_stdout_fflush() do { fflush (stdout); } while (0)
-
-#endif
-
-
-G_END_DECLS
-
-#endif /* __MONO_LOGGER_INTERNAL_H__ */
diff --git a/mono/utils/mono-logger-internals.h b/mono/utils/mono-logger-internals.h
new file mode 100644 (file)
index 0000000..ee88665
--- /dev/null
@@ -0,0 +1,121 @@
+#ifndef __MONO_LOGGER_INTERNAL_H__
+#define __MONO_LOGGER_INTERNAL_H__
+
+#include <glib.h>
+#include "mono-logger.h"
+
+G_BEGIN_DECLS
+
+typedef enum {
+       MONO_TRACE_ASSEMBLY             = (1<<0),
+       MONO_TRACE_TYPE                 = (1<<1),
+       MONO_TRACE_DLLIMPORT            = (1<<2),
+       MONO_TRACE_GC                   = (1<<3),
+        MONO_TRACE_CONFIG              = (1<<4),
+       MONO_TRACE_AOT                  = (1<<5),
+       MONO_TRACE_SECURITY             = (1<<6),
+       MONO_TRACE_THREADPOOL           = (1<<7),
+       MONO_TRACE_IO_THREADPOOL        = (1<<8),
+       MONO_TRACE_ALL                  = MONO_TRACE_ASSEMBLY |
+                                         MONO_TRACE_TYPE |
+                                         MONO_TRACE_DLLIMPORT |
+                                         MONO_TRACE_GC |
+                                         MONO_TRACE_CONFIG |
+                                         MONO_TRACE_AOT |
+                                         MONO_TRACE_SECURITY |
+                                         MONO_TRACE_THREADPOOL |
+                                         MONO_TRACE_IO_THREADPOOL
+} MonoTraceMask;
+
+void 
+mono_trace_cleanup (void);
+
+void 
+mono_trace (GLogLevelFlags level, MonoTraceMask mask, const char *format, ...);
+
+void 
+mono_tracev (GLogLevelFlags level, MonoTraceMask mask, const char *format, va_list args);
+
+void 
+mono_trace_set_level (GLogLevelFlags level);
+
+void 
+mono_trace_set_mask (MonoTraceMask mask);
+
+void 
+mono_trace_push (GLogLevelFlags level, MonoTraceMask mask);
+
+void 
+mono_trace_pop (void);
+
+gboolean
+mono_trace_is_traced (GLogLevelFlags level, MonoTraceMask mask);
+
+#ifdef G_HAVE_ISO_VARARGS
+#define mono_trace_error(...)  mono_trace(G_LOG_LEVEL_ERROR, \
+                                                                                       __VA_ARGS__)
+#define mono_trace_warning(...) mono_trace(G_LOG_LEVEL_WARNING, \
+                                                                                       __VA_ARGS__)
+#define mono_trace_message(...) mono_trace(G_LOG_LEVEL_MESSAGE, \
+                                                                                       __VA_ARGS__)
+#elif defined(G_HAVE_GNUC_VARARGS)
+#define mono_trace_error(format...)    mono_trace(G_LOG_LEVEL_ERROR, \
+                                                                                       format)
+#define mono_trace_warning(format...) mono_trace(G_LOG_LEVEL_WARNING, \
+                                                                                       format)
+#define mono_trace_message(format...) mono_trace(G_LOG_LEVEL_MESSAGE, \
+                                                                                       format)
+#else /* no varargs macros */
+G_GNUC_UNUSED static void
+mono_trace_error(MonoTraceMask mask, const char *format, ...)
+{
+       va_list args;
+       va_start (args, format);
+       mono_tracev(G_LOG_LEVEL_ERROR, mask, format, args);
+       va_end (args);
+}
+
+G_GNUC_UNUSED static void
+mono_trace_warning(MonoTraceMask mask, const char *format, ...)
+{
+       va_list args;
+       va_start (args, format);
+       mono_tracev(G_LOG_LEVEL_WARNING, mask, format, args);
+       va_end (args);
+}
+
+G_GNUC_UNUSED static void
+mono_trace_message(MonoTraceMask mask, const char *format, ...)
+{
+       va_list args;
+       va_start (args, format);
+       mono_tracev(G_LOG_LEVEL_MESSAGE, mask, format, args);
+       va_end (args);
+}
+
+#endif /* !__GNUC__ */
+
+#if defined (PLATFORM_ANDROID) || (defined (TARGET_IOS) && defined (TARGET_IOS))
+
+#define mono_gc_printf(gc_log_file, format, ...) g_log ("mono-gc", G_LOG_LEVEL_MESSAGE, format, ##__VA_ARGS__)
+#define mono_runtime_printf(format, ...) g_log ("mono-rt", G_LOG_LEVEL_MESSAGE, format "\n", ##__VA_ARGS__)
+#define mono_runtime_printf_err(format, ...) g_log ("mono-rt", G_LOG_LEVEL_CRITICAL, format "\n", ##__VA_ARGS__)
+#define mono_runtime_stdout_fflush() do { } while (0)
+
+#else
+
+#define mono_gc_printf(gc_log_file, format, ...) do {  \
+       fprintf (gc_log_file, format, ##__VA_ARGS__);   \
+       fflush (gc_log_file);   \
+} while (0)
+
+#define mono_runtime_printf(format, ...) fprintf (stdout, format "\n", ##__VA_ARGS__)
+#define mono_runtime_printf_err(format, ...) fprintf (stderr, format "\n", ##__VA_ARGS__)
+#define mono_runtime_stdout_fflush() do { fflush (stdout); } while (0)
+
+#endif
+
+
+G_END_DECLS
+
+#endif /* __MONO_LOGGER_INTERNAL_H__ */
index 0b2c8a7f69b4e070157089cf25bb0d0b42a68a8f..09d72dd2f008325724e2bf60c4d25b499a1eeed5 100644 (file)
@@ -4,7 +4,7 @@
 #include <glib.h>
 
 #include "mono-compiler.h"
-#include "mono-logger-internal.h"
+#include "mono-logger-internals.h"
 
 typedef struct {
        GLogLevelFlags  level;
diff --git a/mono/utils/mono-mmap-internal.h b/mono/utils/mono-mmap-internal.h
deleted file mode 100644 (file)
index b23ba16..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * mono-mmap-internal.h: Internal virtual memory stuff.
- *
- * Copyright (C) 2014 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef __MONO_UTILS_MMAP_INTERNAL_H__
-#define __MONO_UTILS_MMAP_INTERNAL_H__
-
-#include "mono-compiler.h"
-
-int mono_pages_not_faulted (void *addr, size_t length);
-
-#endif /* __MONO_UTILS_MMAP_INTERNAL_H__ */
-
diff --git a/mono/utils/mono-mmap-internals.h b/mono/utils/mono-mmap-internals.h
new file mode 100644 (file)
index 0000000..ed6f015
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * mono-mmap-internals.h: Internal virtual memory stuff.
+ *
+ * Copyright (C) 2014 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __MONO_UTILS_MMAP_INTERNAL_H__
+#define __MONO_UTILS_MMAP_INTERNAL_H__
+
+#include "mono-compiler.h"
+
+int mono_pages_not_faulted (void *addr, size_t length);
+
+#endif /* __MONO_UTILS_MMAP_INTERNAL_H__ */
+
index bb1ec15d4742a387436eb28771c3304a6b68a7b7..f3b4d17c77bd9104d49c742c56b84d70a1d63eb7 100644 (file)
@@ -31,7 +31,7 @@
 #endif
 
 #include "mono-mmap.h"
-#include "mono-mmap-internal.h"
+#include "mono-mmap-internals.h"
 #include "mono-proclib.h"
 #include <mono/utils/mono-threads.h>
 
diff --git a/mono/utils/mono-mutex.c b/mono/utils/mono-mutex.c
deleted file mode 100644 (file)
index 51dee23..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * mono-mutex.h: Portability wrappers around POSIX Mutexes
- *
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2002 Ximian, Inc. (www.ximian.com)
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <assert.h>
-#include <mono/utils/mono-memory-model.h>
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-
-#include "mono-mutex.h"
-
-#ifndef HOST_WIN32
-
-#if defined(__APPLE__)
-#define _DARWIN_C_SOURCE
-#include <pthread_spis.h>
-#include <dlfcn.h>
-#endif
-
-#ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK
-/* Android does not implement pthread_mutex_timedlock(), but does provide an
- * unusual declaration: http://code.google.com/p/android/issues/detail?id=7807
- */
-#ifdef PLATFORM_ANDROID
-#define CONST_NEEDED
-#else
-#define CONST_NEEDED const
-#endif
-
-int pthread_mutex_timedlock (pthread_mutex_t *mutex,
-                           CONST_NEEDED struct timespec *timeout);
-int
-pthread_mutex_timedlock (pthread_mutex_t *mutex, CONST_NEEDED struct timespec *timeout)
-{
-       struct timeval timenow;
-       struct timespec sleepytime;
-       int retcode;
-       
-       /* This is just to avoid a completely busy wait */
-       sleepytime.tv_sec = 0;
-       sleepytime.tv_nsec = 10000000;  /* 10ms */
-       
-       while ((retcode = pthread_mutex_trylock (mutex)) == EBUSY) {
-               gettimeofday (&timenow, NULL);
-               
-               if (timenow.tv_sec >= timeout->tv_sec &&
-                   (timenow.tv_usec * 1000) >= timeout->tv_nsec) {
-                       return ETIMEDOUT;
-               }
-               
-               nanosleep (&sleepytime, NULL);
-       }
-       
-       return retcode;
-}
-#endif /* HAVE_PTHREAD_MUTEX_TIMEDLOCK */
-
-
-int
-mono_once (mono_once_t *once, void (*once_init) (void))
-{
-       int thr_ret;
-       
-       if (!once->complete) {
-               pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
-                                     (void *)&once->mutex);
-               thr_ret = pthread_mutex_lock (&once->mutex);
-               g_assert (thr_ret == 0);
-               
-               if (!once->complete) {
-                       once_init ();
-                       once->complete = TRUE;
-               }
-               thr_ret = pthread_mutex_unlock (&once->mutex);
-               g_assert (thr_ret == 0);
-               
-               pthread_cleanup_pop (0);
-       }
-       
-       return 0;
-}
-
-#endif
-
-/*
-Returns a recursive mutex that is safe under suspension.
-
-A suspension safe mutex means one that can handle this scenario:
-
-mutex M
-
-thread 1:
-1)lock M
-2)suspend thread 2
-3)unlock M
-4)lock M
-
-thread 2:
-5)lock M
-
-Say (1) happens before (5) and (5) happens before (2).
-This means that thread 2 was suspended by the kernel because
-it's waiting on mutext M.
-
-Thread 1 then proceed to suspend thread 2 and unlock/lock the
-mutex.
-
-If the kernel implements mutexes with FIFO wait lists, this means
-that thread 1 will be blocked waiting for thread 2 acquire the lock.
-Since thread 2 is suspended, we have a deadlock.
-
-A suspend safe mutex is an unfair lock but will schedule any runable
-thread that is waiting for a the lock.
-
-This problem was witnessed on OSX in mono/tests/thread-exit.cs.
-
-*/
-int
-mono_mutex_init_suspend_safe (mono_mutex_t *mutex)
-{
-#if defined(__APPLE__)
-       int res;
-       pthread_mutexattr_t attr;
-       static gboolean inited;
-       static int (*setpolicy_np) (pthread_mutexattr_t *, int);
-
-       if (!inited) {
-               setpolicy_np = (int (*) (pthread_mutexattr_t *, int)) dlsym (RTLD_NEXT, "pthread_mutexattr_setpolicy_np");
-               mono_atomic_store_release (&inited, TRUE);
-       }
-
-       pthread_mutexattr_init (&attr);
-       pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
-       if (setpolicy_np)
-               setpolicy_np (&attr, _PTHREAD_MUTEX_POLICY_FIRSTFIT);
-       res = pthread_mutex_init (mutex, &attr);
-       pthread_mutexattr_destroy (&attr);
-
-       return res;
-#else
-       return mono_mutex_init (mutex);
-#endif
-}
-
-#ifndef HOST_WIN32
-int
-mono_cond_timedwait_ms (mono_cond_t *cond, mono_mutex_t *mutex, int timeout_ms)
-{
-       struct timeval tv;
-       struct timespec ts;
-       gint64 usecs;
-       int res;
-
-       /* ms = 10^-3, us = 10^-6, ns = 10^-9 */
-
-       gettimeofday (&tv, NULL);
-       tv.tv_sec += timeout_ms / 1000;
-       usecs = tv.tv_usec + ((timeout_ms % 1000) * 1000);
-       if (usecs >= 1000000) {
-               usecs -= 1000000;
-               tv.tv_sec ++;
-       }
-       ts.tv_sec = tv.tv_sec;
-       ts.tv_nsec = usecs * 1000;
-
-       res = pthread_cond_timedwait (cond, mutex, &ts);
-       g_assert (res != EINVAL);
-       return res;
-}
-
-#endif
diff --git a/mono/utils/mono-mutex.h b/mono/utils/mono-mutex.h
deleted file mode 100644 (file)
index 78a4f14..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * mono-mutex.h: Portability wrappers around POSIX Mutexes
- *
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2002 Ximian, Inc. (www.ximian.com)
- */
-
-#ifndef __MONO_MUTEX_H__
-#define __MONO_MUTEX_H__
-
-#include <config.h>
-
-#include <glib.h>
-#ifdef HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
-#include <time.h>
-
-#ifdef HOST_WIN32
-#include <winsock2.h>
-#include <windows.h>
-
-/* Vanilla MinGW is missing some defs, loan them from MinGW-w64. */
-#if defined __MINGW32__ && !defined __MINGW64_VERSION_MAJOR
-
-#if (_WIN32_WINNT >= 0x0600)
-/* Fixme: Opaque structs */
-typedef PVOID RTL_CONDITION_VARIABLE;
-typedef PVOID RTL_SRWLOCK;
-
-#ifndef _RTL_RUN_ONCE_DEF
-#define _RTL_RUN_ONCE_DEF 1
-typedef PVOID RTL_RUN_ONCE, *PRTL_RUN_ONCE;
-typedef DWORD (WINAPI *PRTL_RUN_ONCE_INIT_FN)(PRTL_RUN_ONCE, PVOID, PVOID *);
-#define RTL_RUN_ONCE_INIT 0
-#define RTL_RUN_ONCE_CHECK_ONLY 1UL
-#define RTL_RUN_ONCE_ASYNC 2UL
-#define RTL_RUN_ONCE_INIT_FAILED 4UL
-#define RTL_RUN_ONCE_CTX_RESERVED_BITS 2
-#endif
-#define RTL_SRWLOCK_INIT 0
-#define RTL_CONDITION_VARIABLE_INIT 0
-#define RTL_CONDITION_VARIABLE_LOCKMODE_SHARED 1
-
-#define CONDITION_VARIABLE_INIT RTL_CONDITION_VARIABLE_INIT
-#define CONDITION_VARIABLE_LOCKMODE_SHARED RTL_CONDITION_VARIABLE_LOCKMODE_SHARED
-#define SRWLOCK_INIT RTL_SRWLOCK_INIT
-#endif
-
-#if (_WIN32_WINNT >= 0x0600)
-/*Condition Variables http://msdn.microsoft.com/en-us/library/ms682052%28VS.85%29.aspx*/
-typedef RTL_CONDITION_VARIABLE CONDITION_VARIABLE, *PCONDITION_VARIABLE;
-typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK;
-
-WINBASEAPI VOID WINAPI InitializeConditionVariable(PCONDITION_VARIABLE ConditionVariable);
-WINBASEAPI WINBOOL WINAPI SleepConditionVariableCS(PCONDITION_VARIABLE ConditionVariable, PCRITICAL_SECTION CriticalSection, DWORD dwMilliseconds);
-WINBASEAPI WINBOOL WINAPI SleepConditionVariableSRW(PCONDITION_VARIABLE ConditionVariable, PSRWLOCK SRWLock, DWORD dwMilliseconds, ULONG Flags);
-WINBASEAPI VOID WINAPI WakeAllConditionVariable(PCONDITION_VARIABLE ConditionVariable);
-WINBASEAPI VOID WINAPI WakeConditionVariable(PCONDITION_VARIABLE ConditionVariable);
-
-/*Slim Reader/Writer (SRW) Locks http://msdn.microsoft.com/en-us/library/aa904937%28VS.85%29.aspx*/
-WINBASEAPI VOID WINAPI AcquireSRWLockExclusive(PSRWLOCK SRWLock);
-WINBASEAPI VOID WINAPI AcquireSRWLockShared(PSRWLOCK SRWLock);
-WINBASEAPI VOID WINAPI InitializeSRWLock(PSRWLOCK SRWLock);
-WINBASEAPI VOID WINAPI ReleaseSRWLockExclusive(PSRWLOCK SRWLock);
-WINBASEAPI VOID WINAPI ReleaseSRWLockShared(PSRWLOCK SRWLock);
-
-WINBASEAPI BOOLEAN TryAcquireSRWLockExclusive(PSRWLOCK SRWLock);
-WINBASEAPI BOOLEAN TryAcquireSRWLockShared(PSRWLOCK SRWLock);
-
-/*One-Time Initialization http://msdn.microsoft.com/en-us/library/aa363808(VS.85).aspx*/
-#define INIT_ONCE_ASYNC 0x00000002UL
-#define INIT_ONCE_INIT_FAILED 0x00000004UL
-
-typedef PRTL_RUN_ONCE PINIT_ONCE;
-typedef PRTL_RUN_ONCE LPINIT_ONCE;
-typedef WINBOOL CALLBACK (*PINIT_ONCE_FN) (PINIT_ONCE InitOnce, PVOID Parameter, PVOID *Context);
-
-WINBASEAPI WINBOOL WINAPI InitOnceBeginInitialize(LPINIT_ONCE lpInitOnce, DWORD dwFlags, PBOOL fPending, LPVOID *lpContext);
-WINBASEAPI WINBOOL WINAPI InitOnceComplete(LPINIT_ONCE lpInitOnce, DWORD dwFlags, LPVOID lpContext);
-WINBASEAPI WINBOOL WINAPI InitOnceExecuteOnce(PINIT_ONCE InitOnce, PINIT_ONCE_FN InitFn, PVOID Parameter, LPVOID *Context);
-#endif
-
-#endif /* defined __MINGW32__ && !defined __MINGW64_VERSION_MAJOR */
-#endif /* HOST_WIN32 */
-
-G_BEGIN_DECLS
-
-#ifndef HOST_WIN32
-
-typedef struct {
-       pthread_mutex_t mutex;
-       gboolean complete;
-} mono_once_t;
-
-#define MONO_ONCE_INIT { PTHREAD_MUTEX_INITIALIZER, FALSE }
-
-int mono_once (mono_once_t *once, void (*once_init) (void));
-
-typedef pthread_mutex_t mono_mutex_t;
-typedef pthread_cond_t mono_cond_t;
-
-#define mono_mutex_init(mutex) pthread_mutex_init (mutex, NULL)
-#define mono_mutex_lock(mutex) pthread_mutex_lock (mutex)
-#define mono_mutex_trylock(mutex) pthread_mutex_trylock (mutex)
-#define mono_mutex_timedlock(mutex,timeout) pthread_mutex_timedlock (mutex, timeout)
-#define mono_mutex_unlock(mutex) pthread_mutex_unlock (mutex)
-#define mono_mutex_destroy(mutex) pthread_mutex_destroy (mutex)
-
-#define mono_cond_init(cond,attr) pthread_cond_init (cond,attr)
-#define mono_cond_wait(cond,mutex) pthread_cond_wait (cond, mutex)
-#define mono_cond_timedwait(cond,mutex,timeout) pthread_cond_timedwait (cond, mutex, timeout)
-#define mono_cond_signal(cond) pthread_cond_signal (cond)
-#define mono_cond_broadcast(cond) pthread_cond_broadcast (cond)
-#define mono_cond_destroy(cond) pthread_cond_destroy (cond)
-
-/*
- * This should be used instead of mono_cond_timedwait, since that function is not implemented on windows.
- */
-int mono_cond_timedwait_ms (mono_cond_t *cond, mono_mutex_t *mutex, int timeout_ms);
-
-/* This is a function so it can be passed to pthread_cleanup_push -
- * that is a macro and giving it a macro as a parameter breaks.
- */
-G_GNUC_UNUSED
-static inline int mono_mutex_unlock_in_cleanup (mono_mutex_t *mutex)
-{
-       return(mono_mutex_unlock (mutex));
-}
-
-/* Returns zero on success. */
-static inline int
-mono_mutex_init_recursive (mono_mutex_t *mutex)
-{
-       int res;
-       pthread_mutexattr_t attr;
-
-       pthread_mutexattr_init (&attr);
-       pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
-       res = pthread_mutex_init (mutex, &attr);
-       pthread_mutexattr_destroy (&attr);
-
-       return res;
-}
-
-#else
-
-typedef CRITICAL_SECTION mono_mutex_t;
-typedef CONDITION_VARIABLE mono_cond_t;
-
-#define mono_mutex_init(mutex) (InitializeCriticalSection((mutex)), 0)
-#define mono_mutex_init_recursive(mutex) (InitializeCriticalSection((mutex)), 0)
-#define mono_mutex_lock(mutex) EnterCriticalSection((mutex))
-#define mono_mutex_trylock(mutex) (!TryEnterCriticalSection((mutex)))
-#define mono_mutex_unlock(mutex)  LeaveCriticalSection((mutex))
-#define mono_mutex_destroy(mutex) DeleteCriticalSection((mutex))
-
-static inline int
-mono_cond_init (mono_cond_t *cond, int attr)
-{
-       InitializeConditionVariable (cond);
-       return 0;
-}
-
-static inline int
-mono_cond_wait (mono_cond_t *cond, mono_mutex_t *mutex)
-{
-       return SleepConditionVariableCS (cond, mutex, INFINITE) ? 0 : 1;
-}
-
-static inline int
-mono_cond_timedwait (mono_cond_t *cond, mono_mutex_t *mutex, struct timespec *timeout)
-{
-       // FIXME:
-       g_assert_not_reached ();
-       return 0;
-}
-
-static inline int
-mono_cond_signal (mono_cond_t *cond)
-{
-       WakeConditionVariable (cond);
-       return 0;
-}
-
-static inline int
-mono_cond_broadcast (mono_cond_t *cond)
-{
-       WakeAllConditionVariable (cond);
-       return 0;
-}
-
-static inline int
-mono_cond_destroy (mono_cond_t *cond)
-{
-       return 0;
-}
-
-static inline int
-mono_cond_timedwait_ms (mono_cond_t *cond, mono_mutex_t *mutex, int timeout_ms)
-{
-       return SleepConditionVariableCS (cond, mutex, timeout_ms) ? 0 : 1;
-}
-
-#endif
-
-int mono_mutex_init_suspend_safe (mono_mutex_t *mutex);
-
-G_END_DECLS
-
-#endif /* __MONO_MUTEX_H__ */
diff --git a/mono/utils/mono-once.h b/mono/utils/mono-once.h
new file mode 100644 (file)
index 0000000..0021ac3
--- /dev/null
@@ -0,0 +1,17 @@
+
+#ifndef __MONO_ONCE_H__
+#define __MONO_ONCE_H__
+
+#include "mono-lazy-init.h"
+
+typedef mono_lazy_init_t mono_once_t;
+
+#define MONO_ONCE_INIT MONO_LAZY_INIT_STATUS_NOT_INITIALIZED
+
+static inline void
+mono_once (mono_once_t *once, void (*once_init) (void))
+{
+       mono_lazy_initialize (once, once_init);
+}
+
+#endif /* __MONO_ONCE_H__ */
diff --git a/mono/utils/mono-os-mutex.h b/mono/utils/mono-os-mutex.h
new file mode 100644 (file)
index 0000000..5366405
--- /dev/null
@@ -0,0 +1,301 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * mono-os-mutex.h: Portability wrappers around POSIX Mutexes
+ *
+ * Authors: Jeffrey Stedfast <fejj@ximian.com>
+ *
+ * Copyright 2002 Ximian, Inc. (www.ximian.com)
+ */
+
+#ifndef __MONO_OS_MUTEX_H__
+#define __MONO_OS_MUTEX_H__
+
+#include <config.h>
+#include <glib.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#if !defined(HOST_WIN32)
+#include <pthread.h>
+#include <errno.h>
+#else
+#include <winsock2.h>
+#include <windows.h>
+#endif
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+G_BEGIN_DECLS
+
+#if !defined(HOST_WIN32)
+
+typedef pthread_mutex_t mono_mutex_t;
+typedef pthread_cond_t mono_cond_t;
+
+static inline int
+mono_os_mutex_init (mono_mutex_t *mutex)
+{
+       return pthread_mutex_init (mutex, NULL);
+}
+
+static inline int
+mono_os_mutex_init_recursive (mono_mutex_t *mutex)
+{
+       int res;
+       pthread_mutexattr_t attr;
+
+       pthread_mutexattr_init (&attr);
+       pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
+       res = pthread_mutex_init (mutex, &attr);
+       pthread_mutexattr_destroy (&attr);
+
+       return res;
+}
+
+static inline int
+mono_os_mutex_destroy (mono_mutex_t *mutex)
+{
+       return pthread_mutex_destroy (mutex);
+}
+
+static inline int
+mono_os_mutex_lock (mono_mutex_t *mutex)
+{
+       int res;
+
+       res = pthread_mutex_lock (mutex);
+       g_assert (res != EINVAL);
+
+       return res;
+}
+
+static inline int
+mono_os_mutex_trylock (mono_mutex_t *mutex)
+{
+       return pthread_mutex_trylock (mutex);
+}
+
+static inline int
+mono_os_mutex_unlock (mono_mutex_t *mutex)
+{
+       return pthread_mutex_unlock (mutex);
+}
+
+static inline int
+mono_os_cond_init (mono_cond_t *cond)
+{
+       return pthread_cond_init (cond, NULL);
+}
+
+static inline int
+mono_os_cond_destroy (mono_cond_t *cond)
+{
+       return pthread_cond_destroy (cond);
+}
+
+static inline int
+mono_os_cond_wait (mono_cond_t *cond, mono_mutex_t *mutex)
+{
+       int res;
+
+       res = pthread_cond_wait (cond, mutex);
+       g_assert (res != EINVAL);
+
+       return res;
+}
+
+static inline int
+mono_os_cond_timedwait (mono_cond_t *cond, mono_mutex_t *mutex, guint32 timeout_ms)
+{
+       struct timeval tv;
+       struct timespec ts;
+       gint64 usecs;
+       int res;
+
+       if (timeout_ms == (guint32) 0xFFFFFFFF)
+               return mono_os_cond_wait (cond, mutex);
+
+       /* ms = 10^-3, us = 10^-6, ns = 10^-9 */
+
+       gettimeofday (&tv, NULL);
+       tv.tv_sec += timeout_ms / 1000;
+       usecs = tv.tv_usec + ((timeout_ms % 1000) * 1000);
+       if (usecs >= 1000000) {
+               usecs -= 1000000;
+               tv.tv_sec ++;
+       }
+       ts.tv_sec = tv.tv_sec;
+       ts.tv_nsec = usecs * 1000;
+
+       res = pthread_cond_timedwait (cond, mutex, &ts);
+       g_assert (res != EINVAL);
+
+       return res;
+}
+
+static inline int
+mono_os_cond_signal (mono_cond_t *cond)
+{
+       return pthread_cond_signal (cond);
+}
+
+static inline int
+mono_os_cond_broadcast (mono_cond_t *cond)
+{
+       return pthread_cond_broadcast (cond);
+}
+
+#else
+
+/* Vanilla MinGW is missing some defs, load them from MinGW-w64. */
+#if defined __MINGW32__ && !defined __MINGW64_VERSION_MAJOR && (_WIN32_WINNT >= 0x0600)
+
+/* Fixme: Opaque structs */
+typedef PVOID RTL_CONDITION_VARIABLE;
+typedef PVOID RTL_SRWLOCK;
+
+#ifndef _RTL_RUN_ONCE_DEF
+#define _RTL_RUN_ONCE_DEF 1
+typedef PVOID RTL_RUN_ONCE, *PRTL_RUN_ONCE;
+typedef DWORD (WINAPI *PRTL_RUN_ONCE_INIT_FN)(PRTL_RUN_ONCE, PVOID, PVOID *);
+#define RTL_RUN_ONCE_INIT 0
+#define RTL_RUN_ONCE_CHECK_ONLY 1UL
+#define RTL_RUN_ONCE_ASYNC 2UL
+#define RTL_RUN_ONCE_INIT_FAILED 4UL
+#define RTL_RUN_ONCE_CTX_RESERVED_BITS 2
+#endif /* _RTL_RUN_ONCE_DEF */
+#define RTL_SRWLOCK_INIT 0
+#define RTL_CONDITION_VARIABLE_INIT 0
+#define RTL_CONDITION_VARIABLE_LOCKMODE_SHARED 1
+
+#define CONDITION_VARIABLE_INIT RTL_CONDITION_VARIABLE_INIT
+#define CONDITION_VARIABLE_LOCKMODE_SHARED RTL_CONDITION_VARIABLE_LOCKMODE_SHARED
+#define SRWLOCK_INIT RTL_SRWLOCK_INIT
+
+/*Condition Variables http://msdn.microsoft.com/en-us/library/ms682052%28VS.85%29.aspx*/
+typedef RTL_CONDITION_VARIABLE CONDITION_VARIABLE, *PCONDITION_VARIABLE;
+typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK;
+
+WINBASEAPI VOID WINAPI InitializeConditionVariable(PCONDITION_VARIABLE ConditionVariable);
+WINBASEAPI WINBOOL WINAPI SleepConditionVariableCS(PCONDITION_VARIABLE ConditionVariable, PCRITICAL_SECTION CriticalSection, DWORD dwMilliseconds);
+WINBASEAPI WINBOOL WINAPI SleepConditionVariableSRW(PCONDITION_VARIABLE ConditionVariable, PSRWLOCK SRWLock, DWORD dwMilliseconds, ULONG Flags);
+WINBASEAPI VOID WINAPI WakeAllConditionVariable(PCONDITION_VARIABLE ConditionVariable);
+WINBASEAPI VOID WINAPI WakeConditionVariable(PCONDITION_VARIABLE ConditionVariable);
+
+/*Slim Reader/Writer (SRW) Locks http://msdn.microsoft.com/en-us/library/aa904937%28VS.85%29.aspx*/
+WINBASEAPI VOID WINAPI AcquireSRWLockExclusive(PSRWLOCK SRWLock);
+WINBASEAPI VOID WINAPI AcquireSRWLockShared(PSRWLOCK SRWLock);
+WINBASEAPI VOID WINAPI InitializeSRWLock(PSRWLOCK SRWLock);
+WINBASEAPI VOID WINAPI ReleaseSRWLockExclusive(PSRWLOCK SRWLock);
+WINBASEAPI VOID WINAPI ReleaseSRWLockShared(PSRWLOCK SRWLock);
+
+WINBASEAPI BOOLEAN TryAcquireSRWLockExclusive(PSRWLOCK SRWLock);
+WINBASEAPI BOOLEAN TryAcquireSRWLockShared(PSRWLOCK SRWLock);
+
+/*One-Time Initialization http://msdn.microsoft.com/en-us/library/aa363808(VS.85).aspx*/
+#define INIT_ONCE_ASYNC 0x00000002UL
+#define INIT_ONCE_INIT_FAILED 0x00000004UL
+
+typedef PRTL_RUN_ONCE PINIT_ONCE;
+typedef PRTL_RUN_ONCE LPINIT_ONCE;
+typedef WINBOOL CALLBACK (*PINIT_ONCE_FN) (PINIT_ONCE InitOnce, PVOID Parameter, PVOID *Context);
+
+WINBASEAPI WINBOOL WINAPI InitOnceBeginInitialize(LPINIT_ONCE lpInitOnce, DWORD dwFlags, PBOOL fPending, LPVOID *lpContext);
+WINBASEAPI WINBOOL WINAPI InitOnceComplete(LPINIT_ONCE lpInitOnce, DWORD dwFlags, LPVOID lpContext);
+WINBASEAPI WINBOOL WINAPI InitOnceExecuteOnce(PINIT_ONCE InitOnce, PINIT_ONCE_FN InitFn, PVOID Parameter, LPVOID *Context);
+
+#endif /* defined __MINGW32__ && !defined __MINGW64_VERSION_MAJOR && (_WIN32_WINNT >= 0x0600) */
+
+typedef CRITICAL_SECTION mono_mutex_t;
+typedef CONDITION_VARIABLE mono_cond_t;
+
+static inline int
+mono_os_mutex_init (mono_mutex_t *mutex)
+{
+       InitializeCriticalSection (mutex);
+       return 0;
+}
+
+static inline int
+mono_os_mutex_init_recursive (mono_mutex_t *mutex)
+{
+       InitializeCriticalSection (mutex);
+       return 0;
+}
+
+static inline int
+mono_os_mutex_destroy (mono_mutex_t *mutex)
+{
+       DeleteCriticalSection (mutex);
+       return 0;
+}
+
+static inline int
+mono_os_mutex_lock (mono_mutex_t *mutex)
+{
+       EnterCriticalSection (mutex);
+       return 0;
+}
+
+static inline int
+mono_os_mutex_trylock (mono_mutex_t *mutex)
+{
+       return TryEnterCriticalSection (mutex) != 0 ? 0 : 1;
+}
+
+static inline int
+mono_os_mutex_unlock (mono_mutex_t *mutex)
+{
+       LeaveCriticalSection (mutex);
+       return 0;
+}
+
+static inline int
+mono_os_cond_init (mono_cond_t *cond)
+{
+       InitializeConditionVariable (cond);
+       return 0;
+}
+
+static inline int
+mono_os_cond_destroy (mono_cond_t *cond)
+{
+       /* Beauty of win32 API: do not destroy it */
+       return 0;
+}
+
+static inline int
+mono_os_cond_wait (mono_cond_t *cond, mono_mutex_t *mutex)
+{
+       return SleepConditionVariableCS (cond, mutex, INFINITE) ? 0 : 1;
+}
+
+static inline int
+mono_os_cond_timedwait (mono_cond_t *cond, mono_mutex_t *mutex, guint32 timeout_ms)
+{
+       return SleepConditionVariableCS (cond, mutex, timeout_ms) ? 0 : 1;
+}
+
+static inline int
+mono_os_cond_signal (mono_cond_t *cond)
+{
+       WakeConditionVariable (cond);
+       return 0;
+}
+
+static inline int
+mono_os_cond_broadcast (mono_cond_t *cond)
+{
+       WakeAllConditionVariable (cond);
+       return 0;
+}
+
+#endif
+
+G_END_DECLS
+
+#endif /* __MONO_OS_MUTEX_H__ */
diff --git a/mono/utils/mono-os-semaphore.h b/mono/utils/mono-os-semaphore.h
new file mode 100644 (file)
index 0000000..7ab1b9d
--- /dev/null
@@ -0,0 +1,277 @@
+/*
+ * mono-os-semaphore.h:  Definitions for generic semaphore usage
+ *
+ * Author:
+ *     Geoff Norton  <gnorton@novell.com>
+ *
+ * (C) 2009 Novell, Inc.
+ */
+
+#ifndef _MONO_SEMAPHORE_H_
+#define _MONO_SEMAPHORE_H_
+
+#include <config.h>
+#include <glib.h>
+
+#include <errno.h>
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#if defined(USE_MACH_SEMA)
+#include <mach/mach_init.h>
+#include <mach/task.h>
+#include <mach/semaphore.h>
+#elif !defined(HOST_WIN32) && defined(HAVE_SEMAPHORE_H)
+#include <semaphore.h>
+#else
+#include <winsock2.h>
+#include <windows.h>
+#endif
+
+#define MONO_HAS_SEMAPHORES 1
+
+#ifndef NSEC_PER_SEC
+#define NSEC_PER_SEC (1000 * 1000 * 1000)
+#endif
+
+G_BEGIN_DECLS
+
+typedef enum {
+       MONO_SEM_FLAGS_NONE      = 0,
+       MONO_SEM_FLAGS_ALERTABLE = 1 << 0,
+} MonoSemFlags;
+
+#if defined(USE_MACH_SEMA)
+
+typedef semaphore_t MonoSemType;
+
+static inline int
+mono_os_sem_init (MonoSemType *sem, int value)
+{
+       return semaphore_create (current_task (), sem, SYNC_POLICY_FIFO, value) != KERN_SUCCESS ? -1 : 0;
+}
+
+static inline int
+mono_os_sem_destroy (MonoSemType *sem)
+{
+       return semaphore_destroy (current_task (), *sem) != KERN_SUCCESS ? -1 : 0;
+}
+
+static inline int
+mono_os_sem_wait (MonoSemType *sem, MonoSemFlags flags)
+{
+       int res;
+
+retry:
+       res = semaphore_wait (*sem);
+       g_assert (res != KERN_INVALID_ARGUMENT);
+
+       if (res == KERN_ABORTED && !(flags & MONO_SEM_FLAGS_ALERTABLE))
+               goto retry;
+
+       return res != KERN_SUCCESS ? -1 : 0;
+}
+
+static inline int
+mono_os_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, MonoSemFlags flags)
+{
+       mach_timespec_t ts, copy;
+       struct timeval start, current;
+       int res = 0;
+
+       if (timeout_ms == (guint32) 0xFFFFFFFF)
+               return mono_os_sem_wait (sem, flags);
+
+       ts.tv_sec = timeout_ms / 1000;
+       ts.tv_nsec = (timeout_ms % 1000) * 1000000;
+       while (ts.tv_nsec >= NSEC_PER_SEC) {
+               ts.tv_nsec -= NSEC_PER_SEC;
+               ts.tv_sec++;
+       }
+
+       copy = ts;
+       gettimeofday (&start, NULL);
+
+retry:
+       res = semaphore_timedwait (*sem, ts);
+       g_assert (res != KERN_INVALID_ARGUMENT);
+
+       if (res == KERN_ABORTED && !(flags & MONO_SEM_FLAGS_ALERTABLE)) {
+               ts = copy;
+
+               gettimeofday (&current, NULL);
+               ts.tv_sec -= (current.tv_sec - start.tv_sec);
+               ts.tv_nsec -= (current.tv_usec - start.tv_usec) * 1000;
+               if (ts.tv_nsec < 0) {
+                       if (ts.tv_sec <= 0) {
+                               ts.tv_nsec = 0;
+                       } else {
+                               ts.tv_sec--;
+                               ts.tv_nsec += NSEC_PER_SEC;
+                       }
+               }
+               if (ts.tv_sec < 0) {
+                       ts.tv_sec = 0;
+                       ts.tv_nsec = 0;
+               }
+
+               goto retry;
+       }
+
+       return res != KERN_SUCCESS ? -1 : 0;
+}
+
+static inline int
+mono_os_sem_post (MonoSemType *sem)
+{
+       int res;
+
+       res = semaphore_signal (*sem);
+       g_assert (res != KERN_INVALID_ARGUMENT);
+
+       return res != KERN_SUCCESS ? -1 : 0;
+}
+
+#elif !defined(HOST_WIN32) && defined(HAVE_SEMAPHORE_H)
+
+typedef sem_t MonoSemType;
+
+static inline int
+mono_os_sem_init (MonoSemType *sem, int value)
+{
+       return sem_init (sem, 0, value);
+}
+
+static inline int
+mono_os_sem_destroy (MonoSemType *sem)
+{
+       return sem_destroy (sem);
+}
+
+static inline int
+mono_os_sem_wait (MonoSemType *sem, MonoSemFlags flags)
+{
+       int res;
+
+retry:
+       res = sem_wait (sem);
+       if (res == -1)
+               g_assert (errno != EINVAL);
+
+       if (res == -1 && errno == EINTR && !(flags & MONO_SEM_FLAGS_ALERTABLE))
+               goto retry;
+
+       return res != 0 ? -1 : 0;
+}
+
+static inline int
+mono_os_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, MonoSemFlags flags)
+{
+       struct timespec ts, copy;
+       struct timeval t;
+       int res = 0;
+
+       if (timeout_ms == 0) {
+               res = sem_trywait (sem) != 0 ? -1 : 0;
+               if (res == -1)
+                       g_assert (errno != EINVAL);
+
+               return res != 0 ? -1 : 0;
+       }
+
+       if (timeout_ms == (guint32) 0xFFFFFFFF)
+               return mono_os_sem_wait (sem, flags);
+
+       gettimeofday (&t, NULL);
+       ts.tv_sec = timeout_ms / 1000 + t.tv_sec;
+       ts.tv_nsec = (timeout_ms % 1000) * 1000000 + t.tv_usec * 1000;
+       while (ts.tv_nsec >= NSEC_PER_SEC) {
+               ts.tv_nsec -= NSEC_PER_SEC;
+               ts.tv_sec++;
+       }
+
+       copy = ts;
+
+retry:
+#if defined(__native_client__) && defined(USE_NEWLIB)
+       res = sem_trywait (sem);
+#else
+       res = sem_timedwait (sem, &ts);
+#endif
+       if (res == -1)
+               g_assert (errno != EINVAL);
+
+       if (res == -1 && errno == EINTR && !(flags & MONO_SEM_FLAGS_ALERTABLE)) {
+               ts = copy;
+               goto retry;
+       }
+
+       return res != 0 ? -1 : 0;
+}
+
+static inline int
+mono_os_sem_post (MonoSemType *sem)
+{
+       int res;
+
+       res = sem_post (sem);
+       if (res == -1)
+               g_assert (errno != EINVAL);
+
+       return res;
+}
+
+#else
+
+typedef HANDLE MonoSemType;
+
+static inline int
+mono_os_sem_init (MonoSemType *sem, int value)
+{
+       *sem = CreateSemaphore (NULL, value, 0x7FFFFFFF, NULL);
+       return *sem == NULL ? -1 : 0;
+}
+
+static inline int
+mono_os_sem_destroy (MonoSemType *sem)
+{
+       return !CloseHandle (*sem) ? -1 : 0;
+}
+
+static inline int
+mono_os_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, MonoSemFlags flags)
+{
+       gboolean res;
+
+retry:
+       res = WaitForSingleObjectEx (*sem, timeout_ms, flags & MONO_SEM_FLAGS_ALERTABLE);
+
+       if (res == WAIT_IO_COMPLETION && !(flags & MONO_SEM_FLAGS_ALERTABLE))
+               goto retry;
+
+       return res != WAIT_OBJECT_0 ? -1 : 0;
+}
+
+static inline int
+mono_os_sem_wait (MonoSemType *sem, MonoSemFlags flags)
+{
+       return mono_os_sem_timedwait (sem, INFINITE, flags);
+}
+
+static inline int
+mono_os_sem_post (MonoSemType *sem)
+{
+       return !ReleaseSemaphore (*sem, 1, NULL) ? -1 : 0;
+}
+
+#endif
+
+G_END_DECLS
+
+#endif /* _MONO_SEMAPHORE_H_ */
index 7766729c65552e301e146a025fe8382c80f6bd9a..c4e20e4ed42400bad8e38c6ddb3a8ff100d13b87 100644 (file)
@@ -161,7 +161,7 @@ mono_process_list (int *size)
                                count = 16;
                        else
                                count *= 2;
-                       buf = g_realloc (buf, count * sizeof (void*));
+                       buf = (void **)g_realloc (buf, count * sizeof (void*));
                }
                buf [i++] = GINT_TO_POINTER (pid);
        }
diff --git a/mono/utils/mono-semaphore.c b/mono/utils/mono-semaphore.c
deleted file mode 100644 (file)
index 6c857fe..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * mono-semaphore.c: mono-semaphore functions
- *
- * Author:
- *     Gonzalo Paniagua Javier  <gonzalo@novell.com>
- *
- * (C) 2010 Novell, Inc.
- */
-
-#include <config.h>
-#include <errno.h>
-#include "utils/mono-semaphore.h"
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#if (defined (HAVE_SEMAPHORE_H) || defined (USE_MACH_SEMA)) && !defined(HOST_WIN32)
-/* sem_* or semaphore_* functions in use */
-#  ifdef USE_MACH_SEMA
-#    define TIMESPEC mach_timespec_t
-#    define WAIT_BLOCK(a,b) semaphore_timedwait (*(a), *(b))
-#  elif defined(__native_client__) && defined(USE_NEWLIB)
-#    define TIMESPEC struct timespec
-#    define WAIT_BLOCK(a, b) sem_trywait(a)
-#  else
-#    define TIMESPEC struct timespec
-#    define WAIT_BLOCK(a,b) sem_timedwait (a, b)
-#  endif
-
-#ifndef NSEC_PER_SEC
-#define NSEC_PER_SEC 1000000000
-#endif
-
-int
-mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable)
-{
-       TIMESPEC ts, copy;
-       struct timeval t;
-       int res = 0;
-
-#ifndef USE_MACH_SEMA
-       if (timeout_ms == 0)
-               return sem_trywait (sem);
-#endif
-       if (timeout_ms == (guint32) 0xFFFFFFFF)
-               return mono_sem_wait (sem, alertable);
-
-#ifdef USE_MACH_SEMA
-       memset (&t, 0, sizeof (t));
-#else
-       gettimeofday (&t, NULL);
-#endif
-       ts.tv_sec = timeout_ms / 1000 + t.tv_sec;
-       ts.tv_nsec = (timeout_ms % 1000) * 1000000 + t.tv_usec * 1000;
-       while (ts.tv_nsec >= NSEC_PER_SEC) {
-               ts.tv_nsec -= NSEC_PER_SEC;
-               ts.tv_sec++;
-       }
-
-       copy = ts;
-#ifdef USE_MACH_SEMA
-       gettimeofday (&t, NULL);
-       while ((res = WAIT_BLOCK (sem, &ts)) == KERN_ABORTED)
-#else
-       while ((res = WAIT_BLOCK (sem, &ts)) == -1 && errno == EINTR)
-#endif
-       {
-#ifdef USE_MACH_SEMA
-               struct timeval current;
-#endif
-               if (alertable)
-                       return -1;
-               ts = copy;
-#ifdef USE_MACH_SEMA
-               gettimeofday (&current, NULL);
-               ts.tv_sec -= (current.tv_sec - t.tv_sec);
-               ts.tv_nsec -= (current.tv_usec - t.tv_usec) * 1000;
-               if (ts.tv_nsec < 0) {
-                       if (ts.tv_sec <= 0) {
-                               ts.tv_nsec = 0;
-                       } else {
-                               ts.tv_sec--;
-                               ts.tv_nsec += NSEC_PER_SEC;
-                       }
-               }
-               if (ts.tv_sec < 0) {
-                       ts.tv_sec = 0;
-                       ts.tv_nsec = 0;
-               }
-#endif
-       }
-
-       /* OSX might return > 0 for error */
-       if (res != 0)
-               res = -1;
-       return res;
-}
-
-int
-mono_sem_wait (MonoSemType *sem, gboolean alertable)
-{
-       int res;
-#ifndef USE_MACH_SEMA
-       while ((res = sem_wait (sem)) == -1 && errno == EINTR)
-#else
-       while ((res = semaphore_wait (*sem)) == KERN_ABORTED)
-#endif
-       {
-               if (alertable)
-                       return -1;
-       }
-       /* OSX might return > 0 for error */
-       if (res != 0)
-               res = -1;
-       return res;
-}
-
-int
-mono_sem_post (MonoSemType *sem)
-{
-       int res;
-#ifndef USE_MACH_SEMA
-       while ((res = sem_post (sem)) == -1 && errno == EINTR);
-#else
-       res = semaphore_signal (*sem);
-       /* OSX might return > 0 for error */
-       if (res != KERN_SUCCESS)
-               res = -1;
-#endif
-       return res;
-}
-
-#else
-/* Windows or io-layer functions in use */
-int
-mono_sem_wait (MonoSemType *sem, gboolean alertable)
-{
-       return mono_sem_timedwait (sem, INFINITE, alertable);
-}
-
-int
-mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable)
-{
-       gboolean res;
-
-       while ((res = WaitForSingleObjectEx (*sem, timeout_ms, alertable)) == WAIT_IO_COMPLETION) {
-               if (alertable) {
-                       errno = EINTR;
-                       return -1;
-               }
-       }
-       switch (res) {
-       case WAIT_OBJECT_0:
-               return 0;    
-       // WAIT_TIMEOUT and WAIT_FAILED
-       default:
-               return -1;
-       }
-}
-
-int
-mono_sem_post (MonoSemType *sem)
-{
-       if (!ReleaseSemaphore (*sem, 1, NULL))
-               return -1;
-       return 0;
-}
-#endif
-
diff --git a/mono/utils/mono-semaphore.h b/mono/utils/mono-semaphore.h
deleted file mode 100644 (file)
index b4e9f26..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * mono-semaphore.h:  Definitions for generic semaphore usage
- *
- * Author:
- *     Geoff Norton  <gnorton@novell.com>
- *
- * (C) 2009 Novell, Inc.
- */
-
-#ifndef _MONO_SEMAPHORE_H_
-#define _MONO_SEMAPHORE_H_
-
-#include <config.h>
-#include <glib.h>
-#include <time.h>
-#if defined(HAVE_SEMAPHORE_H) && !defined(HOST_WIN32)
-#include <semaphore.h>
-#endif
-#include <mono/io-layer/io-layer.h>
-#include <mono/utils/mono-publib.h>
-
-#if (defined (HAVE_SEMAPHORE_H) || defined (USE_MACH_SEMA)) && !defined(HOST_WIN32)
-#  define MONO_HAS_SEMAPHORES
-
-#  if defined (USE_MACH_SEMA)
-#    include <mach/mach_init.h>
-#    include <mach/task.h>
-#    include <mach/semaphore.h>
-typedef semaphore_t MonoSemType;
-#    define MONO_SEM_INIT(addr,value) semaphore_create (current_task (), (addr), SYNC_POLICY_FIFO, (value))
-#    define MONO_SEM_DESTROY(sem) semaphore_destroy (current_task (), *(sem))
-#  else
-typedef sem_t MonoSemType;
-#    define MONO_SEM_INIT(addr,value) sem_init ((addr), 0, (value))
-#    define MONO_SEM_DESTROY(sem) sem_destroy ((sem))
-#  endif
-#else
-#  define MONO_HAS_SEMAPHORES
-typedef HANDLE MonoSemType;
-#    define MONO_SEM_INIT(addr,initial) do {*(addr) = CreateSemaphore ( NULL,(initial),0x7FFFFFFF,NULL);} while(0)
-#    define MONO_SEM_DESTROY(sem) do { CloseHandle (*(sem)); (*(sem))=0; } while(0)
-#endif
-
-#define MONO_SEM_WAIT(sem) MONO_SEM_WAIT_ALERTABLE(sem, FALSE)
-#define MONO_SEM_WAIT_ALERTABLE(sem,alertable) mono_sem_wait ((sem), alertable)
-#define MONO_SEM_POST(sem) mono_sem_post ((sem))
-#define MONO_SEM_TIMEDWAIT(sem, timeout_ms) MONO_SEM_TIMEDWAIT_ALERTABLE(sem, timeout_ms, FALSE)
-#define MONO_SEM_TIMEDWAIT_ALERTABLE(sem, timeout_ms, alertable) mono_sem_timedwait ((sem), (timeout_ms), alertable) 
-
-#define MONO_SEM_WAIT_UNITERRUPTIBLE(sem) do { \
-       while (MONO_SEM_WAIT ((sem)) != 0) {    \
-               /*if (EINTR != errno) ABORT("sem_wait failed"); */      \
-       }       \
-} while (0)
-
-G_BEGIN_DECLS
-
-MONO_API int mono_sem_wait (MonoSemType *sem, gboolean alertable);
-MONO_API int mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable);
-MONO_API int mono_sem_post (MonoSemType *sem);
-
-G_END_DECLS
-#endif /* _MONO_SEMAPHORE_H_ */
index de4f6c45b755260ea5ac0bf28b249cd2b9688ef9..15106129b7212e85ba809c4a9a13b16332e0d18e 100644 (file)
@@ -224,7 +224,7 @@ typedef struct ucontext {
        #define UCONTEXT_REG_R13(ctx) (((ucontext_t*)(ctx))->sc_r13)
        #define UCONTEXT_REG_R14(ctx) (((ucontext_t*)(ctx))->sc_r14)
        #define UCONTEXT_REG_R15(ctx) (((ucontext_t*)(ctx))->sc_r15)
-#else
+#elif !defined(HOST_WIN32)
 #define UCONTEXT_GREGS(ctx)    ((guint64*)&(((ucontext_t*)(ctx))->uc_mcontext.gregs))
 #endif
 
index cfeb19d31b9f5960698c4925ba8ecb13e711c757..35f7bd0141136dee83f41562195dcc9c88753485 100644 (file)
@@ -94,6 +94,8 @@ typedef struct {
        MonoContext ctx;
        gpointer unwind_data [3]; /*right now: domain, lmf and jit_tls*/
        gboolean valid;
+       void *gc_stackdata;
+       int gc_stackdata_size;
 } MonoThreadUnwindState;
 
 
index f94fd66e35b8f7832a6d9386117caf56b072420a..b0940d17cef4a0de25ba20d0904ff4c5ae542e1f 100644 (file)
@@ -20,8 +20,8 @@ This API is experimental. It will eventually be required to properly use the res
 */
 
 /* Don't use those directly, use the MONO_(BEGIN|END)_EFRAME */
-MONO_API void* mono_threads_enter_gc_unsafe_region (void);
-MONO_API void mono_threads_exit_gc_unsafe_region (void *region_cookie);
+MONO_API void* mono_threads_enter_gc_unsafe_region (void* stackdata);
+MONO_API void mono_threads_exit_gc_unsafe_region (void *region_cookie, void* stackdata);
 
 /*
 Use those macros to limit regions of code that interact with managed memory or use the embedding API.
@@ -31,8 +31,8 @@ For further explanation of what can and can't be done in GC unsafe mode:
 http://www.mono-project.com/docs/advanced/runtime/docs/coop-suspend/#gc-unsafe-mode
 
 */
-#define MONO_BEGIN_EFRAME { void *__region_cookie = mono_threads_enter_gc_unsafe_region ();
-#define MONO_END_EFRAME mono_threads_exit_gc_unsafe_region (__region_cookie); }
+#define MONO_BEGIN_EFRAME { void *__dummy; void *__region_cookie = mono_threads_enter_gc_unsafe_region (&__dummy);
+#define MONO_END_EFRAME mono_threads_exit_gc_unsafe_region (__region_cookie, &__dummy); }
 
 
 MONO_END_DECLS
index c1a8cad7473ff0f75dfe914d9570e7c7afdea5e5..dcf1a786e40b458bd0a67de0cd9a5175b5cf7699 100644 (file)
@@ -15,7 +15,6 @@
 #endif
 
 #include <mono/utils/mono-compiler.h>
-#include <mono/utils/mono-semaphore.h>
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/mono-tls.h>
 #include <mono/utils/hazard-pointer.h>
 #include <mono/utils/atomic.h>
 #include <mono/utils/mono-time.h>
 #include <mono/utils/mono-counters.h>
+#include <mono/utils/mono-threads-coop.h>
 
 #ifdef TARGET_OSX
 #include <mono/utils/mach-support.h>
 #endif
 
-#ifdef USE_COOP_BACKEND
+#ifdef _MSC_VER
+// TODO: Find MSVC replacement for __builtin_unwind_init
+#define SAVE_REGS_ON_STACK g_assert_not_reached ();
+#else 
+#define SAVE_REGS_ON_STACK __builtin_unwind_init ();
+#endif
 
 volatile size_t mono_polling_required;
 
-static int coop_reset_blocking_count, coop_try_blocking_count, coop_do_blocking_count, coop_do_polling_count, coop_save_count;
+static int coop_reset_blocking_count;
+static int coop_try_blocking_count;
+static int coop_do_blocking_count;
+static int coop_do_polling_count;
+static int coop_save_count;
 
 void
 mono_threads_state_poll (void)
 {
        MonoThreadInfo *info;
+
+       g_assert (mono_threads_is_coop_enabled ());
+
        ++coop_do_polling_count;
 
        info = mono_thread_info_current_unchecked ();
@@ -67,10 +79,49 @@ mono_threads_state_poll (void)
        }
 }
 
+static void *
+return_stack_ptr ()
+{
+       gpointer i;
+       return &i;
+}
+
+static void
+copy_stack_data (MonoThreadInfo *info, void* stackdata_begin)
+{
+       MonoThreadUnwindState *state;
+       int stackdata_size;
+       void* stackdata_end = return_stack_ptr ();
+
+       SAVE_REGS_ON_STACK;
+
+       state = &info->thread_saved_state [SELF_SUSPEND_STATE_INDEX];
+
+       stackdata_size = (char*)stackdata_begin - (char*)stackdata_end;
+
+       if (((gsize) stackdata_begin & (SIZEOF_VOID_P - 1)) != 0)
+               g_error ("stackdata_begin (%p) must be %d-byte aligned", stackdata_begin, SIZEOF_VOID_P);
+       if (((gsize) stackdata_end & (SIZEOF_VOID_P - 1)) != 0)
+               g_error ("stackdata_end (%p) must be %d-byte aligned", stackdata_end, SIZEOF_VOID_P);
+
+       if (stackdata_size <= 0)
+               g_error ("stackdata_size = %d, but must be > 0, stackdata_begin = %p, stackdata_end = %p", stackdata_size, stackdata_begin, stackdata_end);
+
+       g_byte_array_set_size (info->stackdata, stackdata_size);
+       state->gc_stackdata = info->stackdata->data;
+       memcpy (state->gc_stackdata, stackdata_end, stackdata_size);
+
+       state->gc_stackdata_size = stackdata_size;
+}
+
 void*
-mono_threads_prepare_blocking (void)
+mono_threads_prepare_blocking (void* stackdata)
 {
        MonoThreadInfo *info;
+
+       if (!mono_threads_is_coop_enabled ())
+               return NULL;
+
        ++coop_do_blocking_count;
 
        info = mono_thread_info_current_unchecked ();
@@ -80,6 +131,8 @@ mono_threads_prepare_blocking (void)
                return NULL;
        }
 
+       copy_stack_data (info, stackdata);
+
 retry:
        ++coop_save_count;
        mono_threads_get_runtime_callbacks ()->thread_state_init (&info->thread_saved_state [SELF_SUSPEND_STATE_INDEX]);
@@ -96,11 +149,15 @@ retry:
 }
 
 void
-mono_threads_finish_blocking (void *cookie)
+mono_threads_finish_blocking (void *cookie, void* stackdata)
 {
        static gboolean warned_about_bad_transition;
-       MonoThreadInfo *info = cookie;
+       MonoThreadInfo *info;
+
+       if (!mono_threads_is_coop_enabled ())
+               return;
 
+       info = (MonoThreadInfo *)cookie;
        if (!info)
                return;
 
@@ -128,15 +185,22 @@ mono_threads_finish_blocking (void *cookie)
 
 
 void*
-mono_threads_reset_blocking_start (void)
+mono_threads_reset_blocking_start (void* stackdata)
 {
-       MonoThreadInfo *info = mono_thread_info_current_unchecked ();
+       MonoThreadInfo *info;
+
+       if (!mono_threads_is_coop_enabled ())
+               return NULL;
+
        ++coop_reset_blocking_count;
 
+       info = mono_thread_info_current_unchecked ();
        /* If the thread is not attached, it doesn't make sense prepare for suspend. */
        if (!info || !mono_thread_info_is_live (info))
                return NULL;
 
+       copy_stack_data (info, stackdata);
+
        switch (mono_threads_transition_abort_blocking (info)) {
        case AbortBlockingIgnore:
                info->thread_saved_state [SELF_SUSPEND_STATE_INDEX].valid = FALSE;
@@ -156,76 +220,27 @@ mono_threads_reset_blocking_start (void)
 }
 
 void
-mono_threads_reset_blocking_end (void *cookie)
+mono_threads_reset_blocking_end (void *cookie, void* stackdata)
 {
-       MonoThreadInfo *info = cookie;
+       MonoThreadInfo *info;
+
+       if (!mono_threads_is_coop_enabled ())
+               return;
 
+       info = (MonoThreadInfo *)cookie;
        if (!info)
                return;
 
        g_assert (info == mono_thread_info_current_unchecked ());
-       mono_threads_prepare_blocking ();
-}
-
-void*
-mono_threads_try_prepare_blocking (void)
-{
-       MonoThreadInfo *info;
-       ++coop_try_blocking_count;
-
-       info = mono_thread_info_current_unchecked ();
-       /* If the thread is not attached, it doesn't make sense prepare for suspend. */
-       if (!info || !mono_thread_info_is_live (info) || mono_thread_info_current_state (info) == STATE_BLOCKING) {
-               THREADS_SUSPEND_DEBUG ("PREPARE-TRY-BLOCKING failed %p\n", mono_thread_info_get_tid (info));
-               return NULL;
-       }
-
-retry:
-       ++coop_save_count;
-       mono_threads_get_runtime_callbacks ()->thread_state_init (&info->thread_saved_state [SELF_SUSPEND_STATE_INDEX]);
-
-       switch (mono_threads_transition_do_blocking (info)) {
-       case DoBlockingContinue:
-               break;
-       case DoBlockingPollAndRetry:
-               mono_threads_state_poll ();
-               goto retry;
-       }
-
-       return info;
+       mono_threads_prepare_blocking (stackdata);
 }
 
 void
-mono_threads_finish_try_blocking (void* cookie)
-{
-       mono_threads_finish_blocking (cookie);
-}
-
-gboolean
-mono_threads_core_begin_async_resume (MonoThreadInfo *info)
-{
-       g_error ("FIXME");
-       return FALSE;
-}
-
-gboolean
-mono_threads_core_begin_async_suspend (MonoThreadInfo *info, gboolean interrupt_kernel)
+mono_threads_init_coop (void)
 {
-       mono_threads_add_to_pending_operation_set (info);
-       /* There's nothing else to do after we async request the thread to suspend */
-       return TRUE;
-}
-
-gboolean
-mono_threads_core_check_suspend_result (MonoThreadInfo *info)
-{
-       /* Async suspend can't async fail on coop */
-       return TRUE;
-}
+       if (!mono_threads_is_coop_enabled ())
+               return;
 
-void
-mono_threads_init_platform (void)
-{
        mono_counters_register ("Coop Reset Blocking", MONO_COUNTER_GC | MONO_COUNTER_INT, &coop_reset_blocking_count);
        mono_counters_register ("Coop Try Blocking", MONO_COUNTER_GC | MONO_COUNTER_INT, &coop_try_blocking_count);
        mono_counters_register ("Coop Do Blocking", MONO_COUNTER_GC | MONO_COUNTER_INT, &coop_do_blocking_count);
@@ -235,64 +250,33 @@ mono_threads_init_platform (void)
 }
 
 void
-mono_threads_platform_free (MonoThreadInfo *info)
+mono_threads_coop_begin_global_suspend (void)
 {
-#ifdef TARGET_MACH
-       mach_port_deallocate (current_task (), info->native_handle);
-#endif
-
-       //See the above for what's wrong here.
+       if (mono_threads_is_coop_enabled ())
+               mono_polling_required = 1;
 }
 
 void
-mono_threads_platform_register (MonoThreadInfo *info)
+mono_threads_coop_end_global_suspend (void)
 {
-#ifdef TARGET_MACH
-       char thread_name [64];
-
-       info->native_handle = mach_thread_self ();
-       snprintf (thread_name, 64, "tid_%x", (int)info->native_handle);
-       pthread_setname_np (thread_name);
-#endif
-
-       //See the above for what's wrong here.
-}
-
-void
-mono_threads_core_begin_global_suspend (void)
-{
-       mono_polling_required = 1;
-}
-
-void
-mono_threads_core_end_global_suspend (void)
-{
-       mono_polling_required = 0;
+       if (mono_threads_is_coop_enabled ())
+               mono_polling_required = 0;
 }
 
 void*
-mono_threads_enter_gc_unsafe_region (void)
+mono_threads_enter_gc_unsafe_region (void* stackdata)
 {
-       return mono_threads_reset_blocking_start ();
-}
-
-void
-mono_threads_exit_gc_unsafe_region (void *regions_cookie)
-{
-       mono_threads_reset_blocking_end (regions_cookie);
-}
-
-#else
+       if (!mono_threads_is_coop_enabled ())
+               return NULL;
 
-void*
-mono_threads_enter_gc_unsafe_region (void)
-{
-       return NULL;
+       return mono_threads_reset_blocking_start (stackdata);
 }
 
 void
-mono_threads_exit_gc_unsafe_region (void *regions_cookie)
+mono_threads_exit_gc_unsafe_region (void *regions_cookie, void* stackdata)
 {
-}
+       if (!mono_threads_is_coop_enabled ())
+               return;
 
-#endif
\ No newline at end of file
+       mono_threads_reset_blocking_end (regions_cookie, stackdata);
+}
index 88ae40aee8769cbf4005a79d8196d5ceaac6d88e..52efd8309f3523ea7e5bfa86530ec563ce5e5e43 100644 (file)
 #define __MONO_THREADS_COOP_H__
 
 #include <config.h>
+#include <glib.h>
 
-#ifdef USE_COOP_GC
+#include "checked-build.h"
 
-/* Runtime consumable API */
+G_BEGIN_DECLS
 
-#define MONO_SUSPEND_CHECK() do {      \
-       if (G_UNLIKELY (mono_polling_required)) mono_threads_state_poll ();     \
-} while (0);
+/* JIT specific interface */
+extern volatile size_t mono_polling_required;
 
-#define MONO_PREPARE_BLOCKING  \
-{      \
-       void *__blocking_cookie = mono_threads_prepare_blocking ();
+/* Runtime consumable API */
 
-#define MONO_FINISH_BLOCKING \
-       mono_threads_finish_blocking (__blocking_cookie);       \
+static gboolean G_GNUC_UNUSED
+mono_threads_is_coop_enabled (void)
+{
+#if defined(USE_COOP_GC)
+       return TRUE;
+#else
+       static gboolean is_coop_enabled = -1;
+       if (G_UNLIKELY (is_coop_enabled == -1))
+               is_coop_enabled = g_getenv ("MONO_ENABLE_COOP") != NULL ? TRUE : FALSE;
+       return is_coop_enabled;
+#endif
 }
 
-#define MONO_PREPARE_RESET_BLOCKING    \
-{      \
-       void *__reset_cookie = mono_threads_reset_blocking_start ();
-
-#define MONO_FINISH_RESET_BLOCKING \
-       mono_threads_reset_blocking_end (__reset_cookie);       \
-}
+/* Internal API */
 
-#define MONO_TRY_BLOCKING      \
-{      \
-       void *__try_block_cookie = mono_threads_try_prepare_blocking ();
+void
+mono_threads_state_poll (void);
 
-#define MONO_FINISH_TRY_BLOCKING \
-       mono_threads_finish_try_blocking (__try_block_cookie);  \
-}
+gpointer
+mono_threads_prepare_blocking (gpointer stackdata);
 
-/* Internal API */
+void
+mono_threads_finish_blocking (gpointer cookie, gpointer stackdata);
 
-void mono_threads_state_poll (void);
-void* mono_threads_prepare_blocking (void);
-void mono_threads_finish_blocking (void* cookie);
+gpointer
+mono_threads_reset_blocking_start (gpointer stackdata);
 
-void* mono_threads_reset_blocking_start (void);
-void mono_threads_reset_blocking_end (void* cookie);
+void
+mono_threads_reset_blocking_end (gpointer cookie, gpointer stackdata);
 
-void* mono_threads_try_prepare_blocking (void);
-void mono_threads_finish_try_blocking (void* cookie);
+static inline void
+mono_threads_safepoint (void)
+{
+       if (G_UNLIKELY (mono_polling_required))
+               mono_threads_state_poll ();
+}
 
-/* JIT specific interface */
-extern volatile size_t mono_polling_required;
+#define MONO_PREPARE_BLOCKING  \
+       MONO_REQ_GC_NOT_CRITICAL;               \
+       do {    \
+               gpointer __dummy;       \
+               gpointer __blocking_cookie = mono_threads_prepare_blocking (&__dummy)
 
-#else
+#define MONO_FINISH_BLOCKING \
+               mono_threads_finish_blocking (__blocking_cookie, &__dummy);     \
+       } while (0)
 
-#define MONO_SUSPEND_CHECK() do {      } while (0);
-#define MONO_PREPARE_BLOCKING {
-#define MONO_FINISH_BLOCKING }
-#define MONO_PREPARE_RESET_BLOCKING {
-#define MONO_FINISH_RESET_BLOCKING }
-#define MONO_TRY_BLOCKING {
-#define MONO_FINISH_TRY_BLOCKING }
+#define MONO_PREPARE_RESET_BLOCKING    \
+       do {    \
+               gpointer __dummy;       \
+               gpointer __reset_cookie = mono_threads_reset_blocking_start (&__dummy)
 
-#endif /* USE_COOP_GC */
+#define MONO_FINISH_RESET_BLOCKING \
+               mono_threads_reset_blocking_end (__reset_cookie, &__dummy);     \
+       } while (0)
 
+G_END_DECLS
 
 #endif
index 4c30f6672bc3c271cda36d9c49a962521066901d..056a88f150a1cd72b8b5a1fb9d771ae8495c8845 100644 (file)
@@ -16,7 +16,7 @@
 
 #include <mono/utils/mono-threads.h>
 
-#if defined(USE_MACH_SYSCALL_ABORT)
+#if defined(USE_MACH_BACKEND)
 
 #if defined(HOST_WATCHOS) || defined(HOST_TVOS)
 
index 1a0bcd8242179a05d4dbc3e4ee697d56876fcd7b..6f2ddfa78af52357be210b50a2a43c3a73526b52 100644 (file)
@@ -21,7 +21,6 @@
 
 #include <mono/utils/mach-support.h>
 #include <mono/utils/mono-compiler.h>
-#include <mono/utils/mono-semaphore.h>
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/hazard-pointer.h>
 
@@ -31,6 +30,28 @@ mono_threads_init_platform (void)
        mono_threads_init_dead_letter ();
 }
 
+#if defined(HOST_WATCHOS) || defined(HOST_TVOS)
+
+gboolean
+mono_threads_core_begin_async_suspend (MonoThreadInfo *info, gboolean interrupt_kernel)
+{
+       g_assert_not_reached ();
+}
+
+gboolean
+mono_threads_core_check_suspend_result (MonoThreadInfo *info)
+{
+       g_assert_not_reached ();
+}
+
+gboolean
+mono_threads_core_begin_async_resume (MonoThreadInfo *info)
+{
+       g_assert_not_reached ();
+}
+
+#else /* defined(HOST_WATCHOS) || defined(HOST_TVOS) */
+
 gboolean
 mono_threads_core_begin_async_suspend (MonoThreadInfo *info, gboolean interrupt_kernel)
 {
@@ -96,11 +117,7 @@ mono_threads_core_begin_async_resume (MonoThreadInfo *info)
                        return FALSE;
 
                mono_mach_arch_thread_state_to_mcontext (state, mctx);
-#ifdef TARGET_ARM64
-               g_assert_not_reached ();
-#else
                uctx.uc_mcontext = mctx;
-#endif
                mono_monoctx_to_sigctx (&tmp, &uctx);
 
                mono_mach_arch_mcontext_to_thread_state (mctx, state);
@@ -116,10 +133,18 @@ mono_threads_core_begin_async_resume (MonoThreadInfo *info)
        return ret == KERN_SUCCESS;
 }
 
+#endif /* defined(HOST_WATCHOS) || defined(HOST_TVOS) */
+
 void
 mono_threads_platform_register (MonoThreadInfo *info)
 {
+       char thread_name [64];
+
        info->native_handle = mach_thread_self ();
+
+       snprintf (thread_name, sizeof (thread_name), "tid_%x", (int) info->native_handle);
+       pthread_setname_np (thread_name);
+
        mono_threads_install_dead_letter ();
 }
 
@@ -129,16 +154,6 @@ mono_threads_platform_free (MonoThreadInfo *info)
        mach_port_deallocate (current_task (), info->native_handle);
 }
 
-void
-mono_threads_core_begin_global_suspend (void)
-{
-}
-
-void
-mono_threads_core_end_global_suspend (void)
-{
-}
-
 #endif /* USE_MACH_BACKEND */
 
 #ifdef __MACH__
index 4935bd1b3686ba986ee364e3e15ef1c9ea37de88..7e836163d67856cd520d26234228d9cebb627a90 100644 (file)
@@ -17,7 +17,7 @@
 #include "mono-threads.h"
 #include "mono-threads-posix-signals.h"
 
-#if defined(USE_POSIX_SYSCALL_ABORT)
+#if defined(USE_POSIX_BACKEND)
 
 void
 mono_threads_init_abort_syscall (void)
index 1dfdd38b571102da804e09351499527d0c5c910b..155f830a0fa15bcda4b9e803617f938c6c513889 100644 (file)
 
 #include "mono-threads.h"
 
-#if defined(USE_POSIX_BACKEND) || defined(USE_POSIX_SYSCALL_ABORT)
+#if defined(USE_POSIX_BACKEND)
 
 #include <errno.h>
 #include <signal.h>
 
-#include "mono-semaphore.h"
 #include "mono-threads-posix-signals.h"
 
 #if defined(__APPLE__) || defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
@@ -34,6 +33,9 @@ static int abort_signal_num;
 static sigset_t suspend_signal_mask;
 static sigset_t suspend_ack_signal_mask;
 
+//Can't avoid the circular dep on this. Will be gone pretty soon
+extern int mono_gc_get_suspend_signal (void);
+
 static int
 signal_search_alternative (int min_signal)
 {
@@ -62,7 +64,7 @@ signal_add_handler (int signo, gpointer handler, int flags)
        struct sigaction previous_sa;
        int ret;
 
-       sa.sa_sigaction = handler;
+       sa.sa_sigaction = (void (*)(int, siginfo_t *, void *))handler;
        sigfillset (&sa.sa_mask);
 
        sa.sa_flags = SA_SIGINFO | flags;
@@ -178,7 +180,6 @@ suspend_signal_handler (int _dummy, siginfo_t *info, void *context)
        /* thread_state_init_from_sigctx return FALSE if the current thread is detaching and suspend can't continue. */
        current->suspend_can_continue = ret;
 
-
        /*
        Block the restart signal.
        We need to block the restart signal while posting to the suspend_ack semaphore or we race to sigsuspend,
@@ -186,19 +187,23 @@ suspend_signal_handler (int _dummy, siginfo_t *info, void *context)
        */
        pthread_sigmask (SIG_BLOCK, &suspend_ack_signal_mask, NULL);
 
-       /* We're done suspending */
-       mono_threads_notify_initiator_of_suspend (current);
-
        /* This thread is doomed, all we can do is give up and let the suspender recover. */
        if (!ret) {
                THREADS_SUSPEND_DEBUG ("\tThread is dying, failed to capture state %p\n", current);
                mono_threads_transition_async_suspend_compensation (current);
+
+               /* We're done suspending */
+               mono_threads_notify_initiator_of_suspend (current);
+
                /* Unblock the restart signal. */
                pthread_sigmask (SIG_UNBLOCK, &suspend_ack_signal_mask, NULL);
 
                goto done;
        }
 
+       /* We're done suspending */
+       mono_threads_notify_initiator_of_suspend (current);
+
        do {
                current->signal = 0;
                sigsuspend (&suspend_signal_mask);
@@ -211,7 +216,8 @@ suspend_signal_handler (int _dummy, siginfo_t *info, void *context)
 #if MONO_ARCH_HAS_MONO_CONTEXT
                MonoContext tmp = current->thread_saved_state [ASYNC_SUSPEND_STATE_INDEX].ctx;
                mono_threads_get_runtime_callbacks ()->setup_async_callback (&tmp, current->async_target, current->user_data);
-               current->async_target = current->user_data = NULL;
+               current->user_data = NULL;
+               current->async_target = NULL;
                mono_monoctx_to_sigctx (&tmp, context);
 #else
                g_error ("The new interruption machinery requires a working mono-context");
@@ -258,6 +264,8 @@ mono_threads_posix_init_signals (MonoThreadPosixInitSignals signals)
 
                sigfillset (&suspend_signal_mask);
                sigdelset (&suspend_signal_mask, restart_signal_num);
+               if (!mono_thread_info_unified_management_enabled ())
+                       sigdelset (&suspend_signal_mask, mono_gc_get_suspend_signal ());
 
                sigemptyset (&suspend_ack_signal_mask);
                sigaddset (&suspend_ack_signal_mask, restart_signal_num);
@@ -304,4 +312,4 @@ mono_threads_posix_get_abort_signal (void)
        return abort_signal_num;
 }
 
-#endif /* defined(USE_POSIX_BACKEND) || defined(USE_POSIX_SYSCALL_ABORT) */
+#endif /* defined(USE_POSIX_BACKEND) */
index ccbd7606b3d35e1694b0158fe28bb4c454e402c1..54f183e58f03659937730f70797d3de5b411c0db 100644 (file)
@@ -16,7 +16,8 @@
 
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/mono-threads-posix-signals.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/utils/mono-coop-semaphore.h>
+#include <mono/metadata/gc-internals.h>
 
 #include <errno.h>
 
@@ -40,7 +41,7 @@ typedef struct {
        void *(*start_routine)(void*);
        void *arg;
        int flags;
-       MonoSemType registered;
+       MonoCoopSem registered;
        HANDLE handle;
 } StartInfo;
 
@@ -59,35 +60,34 @@ inner_start_thread (void *arg)
        /* Register the thread with the io-layer */
        handle = wapi_create_thread_handle ();
        if (!handle) {
-               res = MONO_SEM_POST (&(start_info->registered));
+               res = mono_coop_sem_post (&(start_info->registered));
                g_assert (!res);
                return NULL;
        }
        start_info->handle = handle;
 
        info = mono_thread_info_attach (&result);
-       MONO_PREPARE_BLOCKING;
 
        info->runtime_thread = TRUE;
        info->handle = handle;
 
        if (flags & CREATE_SUSPENDED) {
                info->create_suspended = TRUE;
-               MONO_SEM_INIT (&info->create_suspended_sem, 0);
+               mono_coop_sem_init (&info->create_suspended_sem, 0);
        }
 
        /* start_info is not valid after this */
-       res = MONO_SEM_POST (&(start_info->registered));
+       res = mono_coop_sem_post (&(start_info->registered));
        g_assert (!res);
        start_info = NULL;
 
        if (flags & CREATE_SUSPENDED) {
-               while (MONO_SEM_WAIT (&info->create_suspended_sem) != 0 &&
-                          errno == EINTR);
-               MONO_SEM_DESTROY (&info->create_suspended_sem);
+               res = mono_coop_sem_wait (&info->create_suspended_sem, MONO_SEM_FLAGS_NONE);
+               g_assert (res != -1);
+
+               mono_coop_sem_destroy (&info->create_suspended_sem);
        }
 
-       MONO_FINISH_BLOCKING;
        /* Run the actual main function of the thread */
        result = start_func (t_arg);
 
@@ -131,23 +131,20 @@ mono_threads_core_create_thread (LPTHREAD_START_ROUTINE start_routine, gpointer
        start_info.start_routine = (void *(*)(void *)) start_routine;
        start_info.arg = arg;
        start_info.flags = creation_flags;
-       MONO_SEM_INIT (&(start_info.registered), 0);
+       mono_coop_sem_init (&(start_info.registered), 0);
 
        /* Actually start the thread */
        res = mono_gc_pthread_create (&thread, &attr, inner_start_thread, &start_info);
        if (res) {
-               MONO_SEM_DESTROY (&(start_info.registered));
+               mono_coop_sem_destroy (&(start_info.registered));
                return NULL;
        }
 
-       MONO_TRY_BLOCKING;
        /* Wait until the thread register itself in various places */
-       while (MONO_SEM_WAIT (&(start_info.registered)) != 0) {
-               /*if (EINTR != errno) ABORT("sem_wait failed"); */
-       }
-       MONO_FINISH_TRY_BLOCKING;
+       res = mono_coop_sem_wait (&start_info.registered, MONO_SEM_FLAGS_NONE);
+       g_assert (res != -1);
 
-       MONO_SEM_DESTROY (&(start_info.registered));
+       mono_coop_sem_destroy (&(start_info.registered));
 
        if (out_tid)
                *out_tid = thread;
@@ -163,7 +160,7 @@ mono_threads_core_create_thread (LPTHREAD_START_ROUTINE start_routine, gpointer
 void
 mono_threads_core_resume_created (MonoThreadInfo *info, MonoNativeThreadId tid)
 {
-       MONO_SEM_POST (&info->create_suspended_sem);
+       mono_coop_sem_post (&info->create_suspended_sem);
 }
 
 gboolean
@@ -343,16 +340,6 @@ mono_threads_platform_free (MonoThreadInfo *info)
 {
 }
 
-void
-mono_threads_core_begin_global_suspend (void)
-{
-}
-
-void
-mono_threads_core_end_global_suspend (void)
-{
-}
-
 void
 mono_threads_init_platform (void)
 {
index 13d0b3dec9180ba7c3530df5aea1619d22db3331..bf3cf242f65e9fdea3656cbbf3ea61ea4815b52c 100644 (file)
@@ -12,7 +12,7 @@
 
 #include <mono/utils/mono-threads.h>
 
-#if defined(USE_WINDOWS_SYSCALL_ABORT)
+#if defined(USE_WINDOWS_BACKEND)
 
 #include <limits.h>
 
index 29703b11f6f8a8aaeb7142eda3cdf817ff38a3b8..86275a53833ab5028b682df6386b79015b419ec2 100644 (file)
@@ -132,16 +132,6 @@ mono_threads_platform_free (MonoThreadInfo *info)
 {
 }
 
-void
-mono_threads_core_begin_global_suspend (void)
-{
-}
-
-void
-mono_threads_core_end_global_suspend (void)
-{
-}
-
 #endif
 
 #if defined (HOST_WIN32)
@@ -149,7 +139,7 @@ mono_threads_core_end_global_suspend (void)
 typedef struct {
        LPTHREAD_START_ROUTINE start_routine;
        void *arg;
-       MonoSemType registered;
+       MonoCoopSem registered;
        gboolean suspend;
        HANDLE suspend_event;
 } ThreadStartInfo;
@@ -170,7 +160,7 @@ inner_start_thread (LPVOID arg)
        info->runtime_thread = TRUE;
        info->create_suspended = suspend;
 
-       post_result = MONO_SEM_POST (&(start_info->registered));
+       post_result = mono_coop_sem_post (&(start_info->registered));
        g_assert (!post_result);
 
        if (suspend) {
@@ -191,11 +181,12 @@ mono_threads_core_create_thread (LPTHREAD_START_ROUTINE start_routine, gpointer
        ThreadStartInfo *start_info;
        HANDLE result;
        DWORD thread_id;
+       int res;
 
        start_info = g_malloc0 (sizeof (ThreadStartInfo));
        if (!start_info)
                return NULL;
-       MONO_SEM_INIT (&(start_info->registered), 0);
+       mono_coop_sem_init (&(start_info->registered), 0);
        start_info->arg = arg;
        start_info->start_routine = start_routine;
        start_info->suspend = creation_flags & CREATE_SUSPENDED;
@@ -208,9 +199,9 @@ mono_threads_core_create_thread (LPTHREAD_START_ROUTINE start_routine, gpointer
 
        result = CreateThread (NULL, stack_size, inner_start_thread, start_info, creation_flags, &thread_id);
        if (result) {
-               while (MONO_SEM_WAIT (&(start_info->registered)) != 0) {
-                       /*if (EINTR != errno) ABORT("sem_wait failed"); */
-               }
+               res = mono_coop_sem_wait (&(start_info->registered), MONO_SEM_FLAGS_NONE);
+               g_assert (res != -1);
+
                if (start_info->suspend) {
                        g_assert (SuspendThread (result) != (DWORD)-1);
                        SetEvent (start_info->suspend_event);
@@ -220,7 +211,7 @@ mono_threads_core_create_thread (LPTHREAD_START_ROUTINE start_routine, gpointer
        }
        if (out_tid)
                *out_tid = thread_id;
-       MONO_SEM_DESTROY (&(start_info->registered));
+       mono_coop_sem_destroy (&(start_info->registered));
        g_free (start_info);
        return result;
 }
index b1d5da9b917e85ca0aeca67f7abf4d2c87214874..e677ada8457e84592b1d7a4c61273de6635e71f9 100644 (file)
@@ -16,7 +16,7 @@
 #endif
 
 #include <mono/utils/mono-compiler.h>
-#include <mono/utils/mono-semaphore.h>
+#include <mono/utils/mono-os-semaphore.h>
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/mono-tls.h>
 #include <mono/utils/hazard-pointer.h>
@@ -24,7 +24,9 @@
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/atomic.h>
 #include <mono/utils/mono-time.h>
-
+#include <mono/utils/mono-lazy-init.h>
+#include <mono/utils/mono-coop-mutex.h>
+#include <mono/utils/mono-coop-semaphore.h>
 
 #include <errno.h>
 
@@ -44,7 +46,7 @@ The GC has to acquire this lock before starting a STW to make sure
 a runtime suspend won't make it wronly see a thread in a safepoint
 when it is in fact not.
 */
-static MonoSemType global_suspend_semaphore;
+static MonoCoopSem global_suspend_semaphore;
 
 static size_t thread_info_size;
 static MonoThreadInfoCallbacks threads_callbacks;
@@ -76,7 +78,7 @@ mono_threads_notify_initiator_of_abort (MonoThreadInfo* info)
 {
        THREADS_SUSPEND_DEBUG ("[INITIATOR-NOTIFY-ABORT] %p\n", mono_thread_info_get_tid (info));
        InterlockedIncrement (&abort_posts);
-       MONO_SEM_POST (&suspend_semaphore);
+       mono_os_sem_post (&suspend_semaphore);
 }
 
 void
@@ -84,7 +86,7 @@ mono_threads_notify_initiator_of_suspend (MonoThreadInfo* info)
 {
        THREADS_SUSPEND_DEBUG ("[INITIATOR-NOTIFY-SUSPEND] %p\n", mono_thread_info_get_tid (info));
        InterlockedIncrement (&suspend_posts);
-       MONO_SEM_POST (&suspend_semaphore);
+       mono_os_sem_post (&suspend_semaphore);
 }
 
 void
@@ -92,12 +94,38 @@ mono_threads_notify_initiator_of_resume (MonoThreadInfo* info)
 {
        THREADS_SUSPEND_DEBUG ("[INITIATOR-NOTIFY-RESUME] %p\n", mono_thread_info_get_tid (info));
        InterlockedIncrement (&resume_posts);
-       MONO_SEM_POST (&suspend_semaphore);
+       mono_os_sem_post (&suspend_semaphore);
+}
+
+static gboolean
+begin_async_suspend (MonoThreadInfo *info, gboolean interrupt_kernel)
+{
+       if (mono_threads_is_coop_enabled ()) {
+               /* There's nothing else to do after we async request the thread to suspend */
+               mono_threads_add_to_pending_operation_set (info);
+               return TRUE;
+       }
+
+       return mono_threads_core_begin_async_suspend (info, interrupt_kernel);
+}
+
+static gboolean
+check_async_suspend (MonoThreadInfo *info)
+{
+       if (mono_threads_is_coop_enabled ()) {
+               /* Async suspend can't async fail on coop */
+               return TRUE;
+       }
+
+       return mono_threads_core_check_suspend_result (info);
 }
 
 static void
 resume_async_suspended (MonoThreadInfo *info)
 {
+       if (mono_threads_is_coop_enabled ())
+               g_assert_not_reached ();
+
        g_assert (mono_threads_core_begin_async_resume (info));
 }
 
@@ -105,21 +133,23 @@ static void
 resume_self_suspended (MonoThreadInfo* info)
 {
        THREADS_SUSPEND_DEBUG ("**BEGIN self-resume %p\n", mono_thread_info_get_tid (info));
-       MONO_SEM_POST (&info->resume_semaphore);
+       mono_os_sem_post (&info->resume_semaphore);
 }
 
 void
 mono_thread_info_wait_for_resume (MonoThreadInfo* info)
 {
+       int res;
        THREADS_SUSPEND_DEBUG ("**WAIT self-resume %p\n", mono_thread_info_get_tid (info));
-       MONO_SEM_WAIT_UNITERRUPTIBLE (&info->resume_semaphore);
+       res = mono_os_sem_wait (&info->resume_semaphore, MONO_SEM_FLAGS_NONE);
+       g_assert (res != -1);
 }
 
 static void
 resume_blocking_suspended (MonoThreadInfo* info)
 {
        THREADS_SUSPEND_DEBUG ("**BEGIN blocking-resume %p\n", mono_thread_info_get_tid (info));
-       MONO_SEM_POST (&info->resume_semaphore);
+       mono_os_sem_post (&info->resume_semaphore);
 }
 
 void
@@ -133,21 +163,25 @@ mono_threads_add_to_pending_operation_set (MonoThreadInfo* info)
 void
 mono_threads_begin_global_suspend (void)
 {
-       g_assert (pending_suspends == 0);
+       size_t ps = pending_suspends;
+       if (G_UNLIKELY (ps != 0))
+               g_error ("pending_suspends = %d, but must be 0", ps);
        THREADS_SUSPEND_DEBUG ("------ BEGIN GLOBAL OP sp %d rp %d ap %d wd %d po %d (sp + rp + ap == wd) (wd == po)\n", suspend_posts, resume_posts,
                abort_posts, waits_done, pending_ops);
        g_assert ((suspend_posts + resume_posts + abort_posts) == waits_done);
-       mono_threads_core_begin_global_suspend ();
+       mono_threads_coop_begin_global_suspend ();
 }
 
 void
 mono_threads_end_global_suspend (void) 
 {
-       g_assert (pending_suspends == 0);
+       size_t ps = pending_suspends;
+       if (G_UNLIKELY (ps != 0))
+               g_error ("pending_suspends = %d, but must be 0", ps);
        THREADS_SUSPEND_DEBUG ("------ END GLOBAL OP sp %d rp %d ap %d wd %d po %d\n", suspend_posts, resume_posts,
                abort_posts, waits_done, pending_ops);
        g_assert ((suspend_posts + resume_posts + abort_posts) == waits_done);
-       mono_threads_core_end_global_suspend ();
+       mono_threads_coop_end_global_suspend ();
 }
 
 static void
@@ -194,7 +228,7 @@ mono_threads_wait_pending_operations (void)
                for (i = 0; i < pending_suspends; ++i) {
                        THREADS_SUSPEND_DEBUG ("[INITIATOR-WAIT-WAITING]\n");
                        InterlockedIncrement (&waits_done);
-                       if (!MONO_SEM_TIMEDWAIT (&suspend_semaphore, SLEEP_DURATION_BEFORE_ABORT))
+                       if (!mono_os_sem_timedwait (&suspend_semaphore, SLEEP_DURATION_BEFORE_ABORT, MONO_SEM_FLAGS_NONE))
                                continue;
                        mono_stopwatch_stop (&suspension_time);
 
@@ -277,7 +311,7 @@ free_thread_info (gpointer mem)
 {
        MonoThreadInfo *info = (MonoThreadInfo *) mem;
 
-       MONO_SEM_DESTROY (&info->resume_semaphore);
+       mono_os_sem_destroy (&info->resume_semaphore);
        mono_threads_platform_free (info);
 
        g_free (info);
@@ -305,7 +339,7 @@ register_thread (MonoThreadInfo *info, gpointer baseptr)
        mono_thread_info_set_tid (info, mono_native_thread_id_get ());
        info->small_id = small_id;
 
-       MONO_SEM_INIT (&info->resume_semaphore, 0);
+       mono_os_sem_init (&info->resume_semaphore, 0);
 
        /*set TLS early so SMR works */
        mono_native_tls_set_value (thread_info_key, info);
@@ -326,6 +360,8 @@ register_thread (MonoThreadInfo *info, gpointer baseptr)
        info->stack_start_limit = staddr;
        info->stack_end = staddr + stsize;
 
+       info->stackdata = g_byte_array_new ();
+
        mono_threads_platform_register (info);
 
        /*
@@ -387,6 +423,8 @@ unregister_thread (void *arg)
 
        mono_thread_info_suspend_unlock ();
 
+       g_byte_array_free (info->stackdata, /*free_segment=*/TRUE);
+
        /*now it's safe to free the thread info.*/
        mono_thread_hazardous_free_or_queue (info, free_thread_info, TRUE, FALSE);
        mono_thread_small_id_free (small_id);
@@ -594,14 +632,15 @@ mono_threads_init (MonoThreadInfoCallbacks *callbacks, size_t info_size)
 #endif
        g_assert (res);
 
-       unified_suspend_enabled = g_getenv ("MONO_ENABLE_UNIFIED_SUSPEND") != NULL || MONO_THREADS_PLATFORM_REQUIRES_UNIFIED_SUSPEND;
+       unified_suspend_enabled = g_getenv ("MONO_ENABLE_UNIFIED_SUSPEND") != NULL || mono_threads_is_coop_enabled ();
 
-       MONO_SEM_INIT (&global_suspend_semaphore, 1);
-       MONO_SEM_INIT (&suspend_semaphore, 0);
+       mono_coop_sem_init (&global_suspend_semaphore, 1);
+       mono_os_sem_init (&suspend_semaphore, 0);
 
        mono_lls_init (&thread_list, NULL);
        mono_thread_smr_init ();
        mono_threads_init_platform ();
+       mono_threads_init_coop ();
        mono_threads_init_abort_syscall ();
 
 #if defined(__MACH__)
@@ -625,46 +664,6 @@ mono_threads_get_runtime_callbacks (void)
        return &runtime_callbacks;
 }
 
-/*
-The return value is only valid until a matching mono_thread_info_resume is called
-*/
-static MonoThreadInfo*
-mono_thread_info_suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel, const char **error_condition)
-{
-       MonoThreadHazardPointers *hp = mono_hazard_pointer_get ();      
-       MonoThreadInfo *info = mono_thread_info_lookup (tid); /*info on HP1*/
-       if (!info) {
-               *error_condition = "Thread not found";
-               return NULL;
-       }
-
-       switch (mono_threads_transition_request_async_suspension (info)) {
-       case AsyncSuspendAlreadySuspended:
-               mono_hazard_pointer_clear (hp, 1); //XXX this is questionable we got to clean the suspend/resume nonsense of critical sections
-               return info;
-       case AsyncSuspendWait:
-               mono_threads_add_to_pending_operation_set (info);
-               break;
-       case AsyncSuspendInitSuspend:
-               if (!mono_threads_core_begin_async_suspend (info, interrupt_kernel)) {
-                       mono_hazard_pointer_clear (hp, 1);
-                       *error_condition = "Could not suspend thread";
-                       return NULL;
-               }
-       }
-
-       //Wait for the pending suspend to finish
-       mono_threads_wait_pending_operations ();
-
-       if (!mono_threads_core_check_suspend_result (info)) {
-
-               mono_hazard_pointer_clear (hp, 1);
-               *error_condition = "Post suspend failed";
-               return NULL;
-       }
-       return info;
-}
-
 /*
 Signal that the current thread wants to be suspended.
 This function can be called without holding the suspend lock held.
@@ -782,7 +781,7 @@ mono_thread_info_begin_suspend (MonoThreadInfo *info, gboolean interrupt_kernel)
                mono_threads_add_to_pending_operation_set (info);
                return TRUE;
        case AsyncSuspendInitSuspend:
-               return mono_threads_core_begin_async_suspend (info, interrupt_kernel);
+               return begin_async_suspend (info, interrupt_kernel);
        default:
                g_assert_not_reached ();
        }
@@ -794,6 +793,12 @@ mono_thread_info_begin_resume (MonoThreadInfo *info)
        return mono_thread_info_core_resume (info);
 }
 
+gboolean
+mono_thread_info_check_suspend_result (MonoThreadInfo *info)
+{
+       return check_async_suspend (info);
+}
+
 /*
 FIXME fix cardtable WB to be out of line and check with the runtime if the target is not the
 WB trampoline. Another option is to encode wb ranges in MonoJitInfo, but that is somewhat hard.
@@ -843,14 +848,48 @@ mono_thread_info_in_critical_location (MonoThreadInfo *info)
        return is_thread_in_critical_region (info);
 }
 
+/*
+The return value is only valid until a matching mono_thread_info_resume is called
+*/
+static MonoThreadInfo*
+suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel)
+{
+       MonoThreadHazardPointers *hp = mono_hazard_pointer_get ();
+       MonoThreadInfo *info = mono_thread_info_lookup (tid); /*info on HP1*/
+       if (!info)
+               return NULL;
+
+       switch (mono_threads_transition_request_async_suspension (info)) {
+       case AsyncSuspendAlreadySuspended:
+               mono_hazard_pointer_clear (hp, 1); //XXX this is questionable we got to clean the suspend/resume nonsense of critical sections
+               return info;
+       case AsyncSuspendWait:
+               mono_threads_add_to_pending_operation_set (info);
+               break;
+       case AsyncSuspendInitSuspend:
+               if (!begin_async_suspend (info, interrupt_kernel)) {
+                       mono_hazard_pointer_clear (hp, 1);
+                       return NULL;
+               }
+       }
+
+       //Wait for the pending suspend to finish
+       mono_threads_wait_pending_operations ();
+
+       if (!check_async_suspend (info)) {
+               mono_hazard_pointer_clear (hp, 1);
+               return NULL;
+       }
+       return info;
+}
+
 static MonoThreadInfo*
 suspend_sync_nolock (MonoNativeThreadId id, gboolean interrupt_kernel)
 {
        MonoThreadInfo *info = NULL;
        int sleep_duration = 0;
        for (;;) {
-               const char *suspend_error = "Unknown error";
-               if (!(info = mono_thread_info_suspend_sync (id, interrupt_kernel, &suspend_error))) {
+               if (!(info = suspend_sync (id, interrupt_kernel))) {
                        mono_hazard_pointer_clear (mono_hazard_pointer_get (), 1);
                        return NULL;
                }
@@ -868,16 +907,11 @@ suspend_sync_nolock (MonoNativeThreadId id, gboolean interrupt_kernel)
                /* Wait for the pending resume to finish */
                mono_threads_wait_pending_operations ();
 
-               if (!sleep_duration) {
-#ifdef HOST_WIN32
-                       SwitchToThread ();
-#else
-                       sched_yield ();
-#endif
-               }
-               else {
+               if (sleep_duration == 0)
+                       mono_thread_info_yield ();
+               else
                        g_usleep (sleep_duration);
-               }
+
                sleep_duration += 10;
        }
        return info;
@@ -920,38 +954,6 @@ done:
        mono_thread_info_suspend_unlock ();
 }
 
-/*
-WARNING:
-If we are trying to suspend a target that is on a critical region
-and running a syscall we risk looping forever if @interrupt_kernel is FALSE.
-So, be VERY carefull in calling this with @interrupt_kernel == FALSE.
-
-Info is not put on a hazard pointer as a suspended thread cannot exit and be freed.
-
-This function MUST be matched with mono_thread_info_finish_suspend or mono_thread_info_finish_suspend_and_resume
-*/
-MonoThreadInfo*
-mono_thread_info_safe_suspend_sync (MonoNativeThreadId id, gboolean interrupt_kernel)
-{
-       MonoThreadInfo *info = NULL;
-
-       THREADS_SUSPEND_DEBUG ("SUSPENDING tid %p\n", (void*)id);
-       /*FIXME: unify this with self-suspend*/
-       g_assert (id != mono_native_thread_id_get ());
-
-       mono_thread_info_suspend_lock ();
-       mono_threads_begin_global_suspend ();
-
-       info = suspend_sync_nolock (id, interrupt_kernel);
-
-       /* XXX this clears HP 1, so we restated it again */
-       // mono_atomic_store_release (&mono_thread_info_current ()->inside_critical_region, TRUE);
-       mono_threads_end_global_suspend ();
-       mono_thread_info_suspend_unlock ();
-
-       return info;
-}
-
 /**
 Inject an assynchronous call into the target thread. The target thread must be suspended and
 only a single async call can be setup for a given suspend cycle.
@@ -979,15 +981,14 @@ STW to make sure no unsafe pending suspend is in progress.
 void
 mono_thread_info_suspend_lock (void)
 {
-       MONO_TRY_BLOCKING;
-       MONO_SEM_WAIT_UNITERRUPTIBLE (&global_suspend_semaphore);
-       MONO_FINISH_TRY_BLOCKING;
+       int res = mono_coop_sem_wait (&global_suspend_semaphore, MONO_SEM_FLAGS_NONE);
+       g_assert (res != -1);
 }
 
 void
 mono_thread_info_suspend_unlock (void)
 {
-       MONO_SEM_POST (&global_suspend_semaphore);
+       mono_coop_sem_post (&global_suspend_semaphore);
 }
 
 /*
@@ -1005,16 +1006,16 @@ mono_thread_info_abort_socket_syscall_for_close (MonoNativeThreadId tid)
 {
        MonoThreadHazardPointers *hp;
        MonoThreadInfo *info;
-       
+
        if (tid == mono_native_thread_id_get () || !mono_threads_core_needs_abort_syscall ())
                return;
 
-       hp = mono_hazard_pointer_get ();        
-       info = mono_thread_info_lookup (tid); /*info on HP1*/
+       hp = mono_hazard_pointer_get ();
+       info = mono_thread_info_lookup (tid);
        if (!info)
                return;
 
-       if (mono_thread_info_run_state (info) > STATE_RUNNING) {
+       if (mono_thread_info_run_state (info) == STATE_DETACHED) {
                mono_hazard_pointer_clear (hp, 1);
                return;
        }
@@ -1101,6 +1102,148 @@ mono_thread_info_yield (void)
 {
        return mono_threads_core_yield ();
 }
+static mono_lazy_init_t sleep_init = MONO_LAZY_INIT_STATUS_NOT_INITIALIZED;
+static MonoCoopMutex sleep_mutex;
+static MonoCoopCond sleep_cond;
+
+static void
+sleep_initialize (void)
+{
+       mono_coop_mutex_init (&sleep_mutex);
+       mono_coop_cond_init (&sleep_cond);
+}
+
+static void
+sleep_interrupt (gpointer data)
+{
+       mono_coop_mutex_lock (&sleep_mutex);
+       mono_coop_cond_broadcast (&sleep_cond);
+       mono_coop_mutex_unlock (&sleep_mutex);
+}
+
+static inline guint32
+sleep_interruptable (guint32 ms, gboolean *alerted)
+{
+       guint32 start, now, end;
+
+       g_assert (INFINITE == G_MAXUINT32);
+
+       g_assert (alerted);
+       *alerted = FALSE;
+
+       start = mono_msec_ticks ();
+
+       if (start < G_MAXUINT32 - ms) {
+               end = start + ms;
+       } else {
+               /* start + ms would overflow guint32 */
+               end = G_MAXUINT32;
+       }
+
+       mono_lazy_initialize (&sleep_init, sleep_initialize);
+
+       mono_coop_mutex_lock (&sleep_mutex);
+
+       for (now = mono_msec_ticks (); ms == INFINITE || now - start < ms; now = mono_msec_ticks ()) {
+               mono_thread_info_install_interrupt (sleep_interrupt, NULL, alerted);
+               if (*alerted) {
+                       mono_coop_mutex_unlock (&sleep_mutex);
+                       return WAIT_IO_COMPLETION;
+               }
+
+               if (ms < INFINITE)
+                       mono_coop_cond_timedwait (&sleep_cond, &sleep_mutex, end - now);
+               else
+                       mono_coop_cond_wait (&sleep_cond, &sleep_mutex);
+
+               mono_thread_info_uninstall_interrupt (alerted);
+               if (*alerted) {
+                       mono_coop_mutex_unlock (&sleep_mutex);
+                       return WAIT_IO_COMPLETION;
+               }
+       }
+
+       mono_coop_mutex_unlock (&sleep_mutex);
+
+       return 0;
+}
+
+gint
+mono_thread_info_sleep (guint32 ms, gboolean *alerted)
+{
+       if (ms == 0) {
+               MonoThreadInfo *info;
+
+               mono_thread_info_yield ();
+
+               info = mono_thread_info_current ();
+               if (info && mono_thread_info_is_interrupt_state (info))
+                       return WAIT_IO_COMPLETION;
+
+               return 0;
+       }
+
+       if (alerted)
+               return sleep_interruptable (ms, alerted);
+
+       MONO_PREPARE_BLOCKING;
+
+       if (ms == INFINITE) {
+               do {
+#ifdef HOST_WIN32
+                       Sleep (G_MAXUINT32);
+#else
+                       sleep (G_MAXUINT32);
+#endif
+               } while (1);
+       } else {
+               int ret;
+#if defined (__linux__) && !defined(PLATFORM_ANDROID)
+               struct timespec start, target;
+
+               /* Use clock_nanosleep () to prevent time drifting problems when nanosleep () is interrupted by signals */
+               ret = clock_gettime (CLOCK_MONOTONIC, &start);
+               g_assert (ret == 0);
+
+               target = start;
+               target.tv_sec += ms / 1000;
+               target.tv_nsec += (ms % 1000) * 1000000;
+               if (target.tv_nsec > 999999999) {
+                       target.tv_nsec -= 999999999;
+                       target.tv_sec ++;
+               }
+
+               do {
+                       ret = clock_nanosleep (CLOCK_MONOTONIC, TIMER_ABSTIME, &target, NULL);
+               } while (ret != 0);
+#elif HOST_WIN32
+               Sleep (ms);
+#else
+               struct timespec req, rem;
+
+               req.tv_sec = ms / 1000;
+               req.tv_nsec = (ms % 1000) * 1000000;
+
+               do {
+                       memset (&rem, 0, sizeof (rem));
+                       ret = nanosleep (&req, &rem);
+               } while (ret != 0);
+#endif /* __linux__ */
+       }
+
+       MONO_FINISH_BLOCKING;
+
+       return 0;
+}
+
+gint
+mono_thread_info_usleep (guint64 us)
+{
+       MONO_PREPARE_BLOCKING;
+       g_usleep (us);
+       MONO_FINISH_BLOCKING;
+       return 0;
+}
 
 gpointer
 mono_thread_info_tls_get (THREAD_INFO_TYPE *info, MonoTlsKey key)
@@ -1204,7 +1347,7 @@ mono_thread_info_install_interrupt (void (*callback) (gpointer data), gpointer d
        token->callback = callback;
        token->data = data;
 
-       previous_token = InterlockedCompareExchangePointer ((gpointer*) &info->interrupt_token, token, NULL);
+       previous_token = (MonoThreadInfoInterruptToken *)InterlockedCompareExchangePointer ((gpointer*) &info->interrupt_token, token, NULL);
 
        if (previous_token) {
                if (previous_token != INTERRUPT_STATE)
@@ -1231,7 +1374,7 @@ mono_thread_info_uninstall_interrupt (gboolean *interrupted)
        info = mono_thread_info_current ();
        g_assert (info);
 
-       previous_token = InterlockedExchangePointer ((gpointer*) &info->interrupt_token, NULL);
+       previous_token = (MonoThreadInfoInterruptToken *)InterlockedExchangePointer ((gpointer*) &info->interrupt_token, NULL);
 
        /* only the installer can uninstall the token */
        g_assert (previous_token);
@@ -1340,7 +1483,7 @@ mono_thread_info_clear_self_interrupt ()
        info = mono_thread_info_current ();
        g_assert (info);
 
-       previous_token = InterlockedCompareExchangePointer ((gpointer*) &info->interrupt_token, NULL, INTERRUPT_STATE);
+       previous_token = (MonoThreadInfoInterruptToken *)InterlockedCompareExchangePointer ((gpointer*) &info->interrupt_token, NULL, INTERRUPT_STATE);
        g_assert (previous_token == NULL || previous_token == INTERRUPT_STATE);
 
        THREADS_INTERRUPT_DEBUG ("interrupt clear self tid %p previous_token %p\n", mono_thread_info_get_tid (info), previous_token);
index d153ca83c4e73635aaaea4cf63e2d080d76a0aed..5fe411dbe1ae05f60bfcd355b1b436204d57ae5a 100644 (file)
 #ifndef __MONO_THREADS_H__
 #define __MONO_THREADS_H__
 
-#include <mono/utils/mono-semaphore.h>
+#include <mono/utils/mono-os-semaphore.h>
 #include <mono/utils/mono-stack-unwinding.h>
 #include <mono/utils/mono-linked-list-set.h>
-#include <mono/utils/mono-mutex.h>
 #include <mono/utils/mono-tls.h>
 #include <mono/utils/mono-threads-coop.h>
 #include <mono/utils/mono-threads-api.h>
+#include <mono/utils/mono-coop-semaphore.h>
+
+#include <mono/io-layer/io-layer.h>
 
 #include <glib.h>
 #include <config.h>
@@ -127,40 +129,16 @@ and reduce the number of casts drastically.
 /* If this is defined, use the signals backed on Mach. Debug only as signals can't be made usable on OSX. */
 // #define USE_SIGNALS_ON_MACH
 
-
-#if defined (USE_COOP_GC)
-#define USE_COOP_BACKEND
-#define MONO_THREADS_PLATFORM_REQUIRES_UNIFIED_SUSPEND 1
-
-#elif defined (_POSIX_VERSION) || defined (__native_client__)
-#define MONO_THREADS_PLATFORM_REQUIRES_UNIFIED_SUSPEND 0
-
+#if defined (_POSIX_VERSION) || defined (__native_client__)
 #if defined (__MACH__) && !defined (USE_SIGNALS_ON_MACH)
 #define USE_MACH_BACKEND
 #else
 #define USE_POSIX_BACKEND
 #endif
-
 #elif HOST_WIN32
-#define MONO_THREADS_PLATFORM_REQUIRES_UNIFIED_SUSPEND 0
 #define USE_WINDOWS_BACKEND
-
 #else
 #error "no backend support for current platform"
-#endif /* defined (USE_COOP_GC) */
-
-#if defined (_POSIX_VERSION) || defined (__native_client__)
-#if defined (__MACH__) && !defined (USE_SIGNALS_ON_MACH)
-#define USE_MACH_SYSCALL_ABORT
-#else
-#define USE_POSIX_SYSCALL_ABORT
-#endif
-
-#elif HOST_WIN32
-#define USE_WINDOWS_SYSCALL_ABORT
-
-#else
-#error "no syscall abort support for current platform"
 #endif /* defined (_POSIX_VERSION) || defined (__native_client__) */
 
 enum {
@@ -217,13 +195,16 @@ typedef struct {
        MonoSemType resume_semaphore;
 
        /* only needed by the posix backend */
-#if defined(USE_POSIX_BACKEND) || defined(USE_POSIX_SYSCALL_ABORT)
+#if defined(USE_POSIX_BACKEND)
        MonoSemType finish_resume_semaphore;
        gboolean syscall_break_signal;
        gboolean suspend_can_continue;
        int signal;
 #endif
 
+       /* This memory pool is used by coop GC to save stack data roots between GC unsafe regions */
+       GByteArray *stackdata;
+
        /*In theory, only the posix backend needs this, but having it on mach/win32 simplifies things a lot.*/
        MonoThreadUnwindState thread_saved_state [2]; //0 is self suspend, 1 is async suspend.
 
@@ -247,7 +228,7 @@ typedef struct {
        gboolean create_suspended;
 
        /* Semaphore used to implement CREATE_SUSPENDED */
-       MonoSemType create_suspended_sem;
+       MonoCoopSem create_suspended_sem;
 
        /*
         * Values of TLS variables for this thread.
@@ -325,8 +306,17 @@ Snapshot iteration.
 #define FOREACH_THREAD_SAFE(thread) MONO_LLS_FOREACH_FILTERED_SAFE (mono_thread_info_list_head (), thread, mono_threads_filter_tools_threads, THREAD_INFO_TYPE*)
 #define END_FOREACH_THREAD_SAFE MONO_LLS_END_FOREACH_SAFE
 
-#define mono_thread_info_get_tid(info) ((MonoNativeThreadId)((MonoThreadInfo*)info)->node.key)
-#define mono_thread_info_set_tid(info, val) do { ((MonoThreadInfo*)(info))->node.key = (uintptr_t)(val); } while (0)
+static inline MonoNativeThreadId
+mono_thread_info_get_tid (THREAD_INFO_TYPE *info)
+{
+       return MONO_UINT_TO_NATIVE_THREAD_ID (((MonoThreadInfo*) info)->node.key);
+}
+
+static inline void
+mono_thread_info_set_tid (THREAD_INFO_TYPE *info, MonoNativeThreadId tid)
+{
+       ((MonoThreadInfo*) info)->node.key = (uintptr_t) MONO_NATIVE_THREAD_ID_TO_UINT (tid);
+}
 
 /*
  * @thread_info_size is sizeof (GcThreadInfo), a struct the GC defines to make it possible to have
@@ -368,9 +358,6 @@ mono_thread_info_list_head (void);
 THREAD_INFO_TYPE*
 mono_thread_info_lookup (MonoNativeThreadId id);
 
-THREAD_INFO_TYPE*
-mono_thread_info_safe_suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel);
-
 gboolean
 mono_thread_info_resume (MonoNativeThreadId tid);
 
@@ -416,6 +403,12 @@ mono_thread_info_get_stack_bounds (guint8 **staddr, size_t *stsize);
 gboolean
 mono_thread_info_yield (void);
 
+gint
+mono_thread_info_sleep (guint32 ms, gboolean *alerted);
+
+gint
+mono_thread_info_usleep (guint64 us);
+
 gpointer
 mono_thread_info_tls_get (THREAD_INFO_TYPE *info, MonoTlsKey key);
 
@@ -496,6 +489,8 @@ This is called very early in the runtime, it cannot access any runtime facilitie
 */
 void mono_threads_init_platform (void); //ok
 
+void mono_threads_init_coop (void);
+
 void mono_threads_init_abort_syscall (void);
 
 /*
@@ -540,12 +535,14 @@ HANDLE mono_threads_core_open_handle (void);
 HANDLE mono_threads_core_open_thread_handle (HANDLE handle, MonoNativeThreadId tid);
 void mono_threads_core_set_name (MonoNativeThreadId tid, const char *name);
 
-void mono_threads_core_begin_global_suspend (void);
-void mono_threads_core_end_global_suspend (void);
+void mono_threads_coop_begin_global_suspend (void);
+void mono_threads_coop_end_global_suspend (void);
 
-MonoNativeThreadId mono_native_thread_id_get (void);
+MonoNativeThreadId
+mono_native_thread_id_get (void);
 
-gboolean mono_native_thread_id_equals (MonoNativeThreadId id1, MonoNativeThreadId id2);
+gboolean
+mono_native_thread_id_equals (MonoNativeThreadId id1, MonoNativeThreadId id2);
 
 gboolean
 mono_native_thread_create (MonoNativeThreadId *tid, gpointer func, gpointer arg);
@@ -638,6 +635,8 @@ gboolean mono_thread_info_in_critical_location (THREAD_INFO_TYPE *info);
 gboolean mono_thread_info_begin_suspend (THREAD_INFO_TYPE *info, gboolean interrupt_kernel);
 gboolean mono_thread_info_begin_resume (THREAD_INFO_TYPE *info);
 
+gboolean
+mono_thread_info_check_suspend_result (THREAD_INFO_TYPE *info);
 
 void mono_threads_add_to_pending_operation_set (THREAD_INFO_TYPE* info); //XXX rename to something to reflect the fact that this is used for both suspend and resume
 gboolean mono_threads_wait_pending_operations (void);
index 2fe8da9d9f8fa855d4ba6b1dfbdc189f9d8709a4..58ab1378a90ab147b5794d7e8752e545cbf46053 100644 (file)
@@ -76,11 +76,6 @@ mono_get_address_info (const char *hostname, int port, int flags, MonoAddressInf
 
        while (res) {
                cur = g_new0 (MonoAddressEntry, 1);
-               if (prev)
-                       prev->next = cur;
-               else
-                       addr_info->entries = cur;
-
                cur->family = res->ai_family;
                cur->socktype = res->ai_socktype;
                cur->protocol = res->ai_protocol;
@@ -91,12 +86,20 @@ mono_get_address_info (const char *hostname, int port, int flags, MonoAddressInf
                        cur->address_len = sizeof (struct in6_addr);
                        cur->address.v6 = ((struct sockaddr_in6*)res->ai_addr)->sin6_addr;
                } else {
-                       g_error ("Cannot handle address family %d", cur->family);
+                       g_warning ("Cannot handle address family %d", cur->family);
+                       res = res->ai_next;
+                       g_free (cur);
+                       continue;
                }
 
                if (res->ai_canonname)
                        cur->canonical_name = g_strdup (res->ai_canonname);
 
+               if (prev)
+                       prev->next = cur;
+               else
+                       addr_info->entries = cur;
+                       
                prev = cur;
                res = res->ai_next;
        }
@@ -179,7 +182,7 @@ mono_get_local_interfaces (int family, int *interface_count)
 
        memset (&ifc, 0, sizeof (ifc));
        ifc.ifc_len = IFCONF_BUFF_SIZE;
-       ifc.ifc_buf = g_malloc (IFCONF_BUFF_SIZE); /* We can't have such huge buffers on the stack. */
+       ifc.ifc_buf = (char *)g_malloc (IFCONF_BUFF_SIZE); /* We can't have such huge buffers on the stack. */
        if (ioctl (fd, SIOCGIFCONF, &ifc) < 0)
                goto done;
 
@@ -216,7 +219,8 @@ mono_get_local_interfaces (int family, int *interface_count)
                ++if_count;
        }
 
-       result_ptr = result = g_malloc (if_count * mono_address_size_for_family (family));
+       result = (char *)g_malloc (if_count * mono_address_size_for_family (family));
+       result_ptr = (char *)result;
        FOREACH_IFR (ifr, ifc) {
                if (ifr->ifr_name [0] == '\0')
                        continue;
@@ -339,4 +343,4 @@ mono_networking_shutdown (void)
 {
        //nothing really
 }
-#endif
\ No newline at end of file
+#endif
index 13fa9cfd9ef4a5bf862dab11a461941741707644..486f7866be2d0b45c247cbe011dae9bbe459afc0 100644 (file)
@@ -6,4 +6,5 @@
 /*.opensdf
 /ipch/
 /Win32/
-/x64/
\ No newline at end of file
+/x64/
+/include/
\ No newline at end of file
index d7f4e0787414dc902e880f04a0be6cfc8fe76f30..1a541ddea20e453728d1a57dadbdfe178684e2ea 100644 (file)
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
     </Link>\r
     <PostBuildEvent>\r
-      <Command>xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
     </PostBuildEvent>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">\r
@@ -347,14 +347,14 @@ xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\m
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
     </Link>\r
     <PostBuildEvent>\r
-      <Command>xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
     </PostBuildEvent>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
@@ -399,14 +399,14 @@ xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\m
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
     <PostBuildEvent>\r
-      <Command>xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
     </PostBuildEvent>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">\r
@@ -443,7 +443,7 @@ xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\m
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>libgc.lib;libmonoruntimesgen.lib;libmonoutils.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ModuleDefinitionFile>monosgen.def</ModuleDefinitionFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
@@ -451,14 +451,14 @@ xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\m
       <TargetMachine>MachineX64</TargetMachine>\r
     </Link>\r
     <PostBuildEvent>\r
-      <Command>xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
     </PostBuildEvent>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
@@ -499,14 +499,14 @@ xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\m
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
     </Link>\r
     <PostBuildEvent>\r
-      <Command>xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
     </PostBuildEvent>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">\r
@@ -548,14 +548,14 @@ xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\m
       <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
     </Link>\r
     <PostBuildEvent>\r
-      <Command>xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
     </PostBuildEvent>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
@@ -597,14 +597,14 @@ xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\m
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
     </Link>\r
     <PostBuildEvent>\r
-      <Command>xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
     </PostBuildEvent>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">\r
@@ -646,14 +646,14 @@ xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\m
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
     </Link>\r
     <PostBuildEvent>\r
-      <Command>xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
-xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"\r
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>\r
     </PostBuildEvent>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
index c2791b7f497c0832067bef443cd24e6ce5f76396..f4be234ee2e1d035a49b4ca78acb097f950f650a 100644 (file)
     <ClInclude Include="..\mono\metadata\exception.h" />\r
     <ClInclude Include="..\mono\metadata\file-io.h" />\r
     <ClInclude Include="..\mono\metadata\filewatcher.h" />\r
-    <ClInclude Include="..\mono\metadata\gc-internal.h" />\r
+    <ClInclude Include="..\mono\metadata\gc-internals.h" />\r
     <ClInclude Include="..\mono\metadata\number-ms.h" />\r
     <ClInclude Include="..\mono\metadata\seq-points-data.h" />\r
     <ClInclude Include="..\mono\metadata\threadpool-ms-io.h" />\r
index 939f52048d73e8025bf515d850da7fb8096683c0..5daad9472621c95d4b94c98809d6f0ab2a74ff50 100644 (file)
@@ -45,7 +45,6 @@
     <ClCompile Include="..\mono\utils\mono-math.c" />\r
     <ClCompile Include="..\mono\utils\mono-md5.c" />\r
     <ClCompile Include="..\mono\utils\mono-mmap.c" />\r
-    <ClCompile Include="..\mono\utils\mono-mutex.c" />\r
     <ClCompile Include="..\mono\utils\mono-networkinterfaces.c" />\r
     <ClCompile Include="..\mono\utils\mono-rand.c" />\r
     <ClCompile Include="..\mono\utils\mono-threads-state-machine.c" />\r
@@ -58,7 +57,6 @@
     <ClCompile Include="..\mono\utils\mono-proclib.c" />\r
     <ClCompile Include="..\mono\utils\mono-property-hash.c" />\r
     <ClCompile Include="..\mono\utils\mono-publib.c" />\r
-    <ClCompile Include="..\mono\utils\mono-semaphore.c" />\r
     <ClCompile Include="..\mono\utils\mono-sha1.c" />\r
     <ClCompile Include="..\mono\utils\mono-stdlib.c" />\r
     <ClCompile Include="..\mono\utils\mono-threads-mach.c" />\r
@@ -66,6 +64,7 @@
     <ClCompile Include="..\mono\utils\mono-threads-posix-signals.c" />\r
     <ClCompile Include="..\mono\utils\mono-threads-windows.c" />\r
     <ClCompile Include="..\mono\utils\mono-threads.c" />\r
+    <ClCompile Include="..\mono\utils\mono-threads-coop.c" />\r
     <ClCompile Include="..\mono\utils\mono-threads-posix-abort-syscall.c" />\r
     <ClCompile Include="..\mono\utils\mono-threads-mach-abort-syscall.c" />\r
     <ClCompile Include="..\mono\utils\mono-threads-windows-abort-syscall.c" />\r
     <ClInclude Include="..\mono\utils\mono-complex.h" />\r
     <ClInclude Include="..\mono\utils\mono-conc-hashtable.h" />\r
     <ClInclude Include="..\mono\utils\mono-context.h" />\r
+    <ClInclude Include="..\mono\utils\mono-coop-mutex.h" />\r
+    <ClInclude Include="..\mono\utils\mono-coop-semaphore.h" />\r
     <ClInclude Include="..\mono\utils\mono-counters.h" />\r
     <ClInclude Include="..\mono\utils\mono-digest.h" />\r
     <ClInclude Include="..\mono\utils\mono-dl-fallback.h" />\r
     <ClInclude Include="..\mono\utils\mono-internal-hash.h" />\r
     <ClInclude Include="..\mono\utils\mono-io-portability.h" />\r
     <ClInclude Include="..\mono\utils\mono-linked-list-set.h" />\r
-    <ClInclude Include="..\mono\utils\mono-logger-internal.h" />\r
+    <ClInclude Include="..\mono\utils\mono-logger-internals.h" />\r
     <ClInclude Include="..\mono\utils\mono-logger.h" />\r
     <ClInclude Include="..\mono\utils\mono-machine.h" />\r
     <ClInclude Include="..\mono\utils\mono-math.h" />\r
     <ClInclude Include="..\mono\utils\mono-membar.h" />\r
     <ClInclude Include="..\mono\utils\mono-memory-model.h" />\r
     <ClInclude Include="..\mono\utils\mono-mmap.h" />\r
-    <ClInclude Include="..\mono\utils\mono-mutex.h" />\r
     <ClInclude Include="..\mono\utils\mono-networkinterfaces.h" />\r
+    <ClInclude Include="..\mono\utils\mono-once.h" />\r
+    <ClInclude Include="..\mono\utils\mono-os-mutex.h" />\r
+    <ClInclude Include="..\mono\utils\mono-os-semaphore.h" />\r
     <ClInclude Include="..\mono\utils\mono-path.h" />\r
     <ClInclude Include="..\mono\utils\mono-poll.h" />\r
     <ClInclude Include="..\mono\utils\mono-proclib.h" />\r
     <ClInclude Include="..\mono\utils\mono-property-hash.h" />\r
     <ClInclude Include="..\mono\utils\mono-publib.h" />\r
     <ClInclude Include="..\mono\utils\mono-rand.h" />\r
-    <ClInclude Include="..\mono\utils\mono-semaphore.h" />\r
     <ClInclude Include="..\mono\utils\mono-sigcontext.h" />\r
     <ClInclude Include="..\mono\utils\mono-stack-unwinding.h" />\r
     <ClInclude Include="..\mono\utils\mono-stdlib.h" />\r
     <ClInclude Include="..\mono\utils\mono-string.h" />\r
     <ClInclude Include="..\mono\utils\mono-threads.h" />\r
-    <ClCompile Include="..\mono\utils\mono-threads-posix-signals.h" />\r
+    <ClInclude Include="..\mono\utils\mono-threads-api.h" />\r
+    <ClInclude Include="..\mono\utils\mono-threads-coop.h" />\r
+    <ClInclude Include="..\mono\utils\mono-threads-posix-signals.h" />\r
     <ClInclude Include="..\mono\utils\mono-time.h" />\r
     <ClInclude Include="..\mono\utils\mono-tls.h" />\r
     <ClInclude Include="..\mono\utils\mono-uri.h" />\r
index 4bfa79226eb71e718f2eb42d4c7dd147a359cb83..8088a22fba0a01b869db13e3f2ce17023d2ac609 100644 (file)
@@ -16,7 +16,7 @@
       <CallingConvention>0</CallingConvention>
       <ErrorReporting>0</ErrorReporting>
       <CommandLineTemplate Condition="'$(Platform)' == 'Win32'">"$(VCInstallDir)bin\ml.exe" /c [AllOptions] [AdditionalOptions] /Ta[Inputs]</CommandLineTemplate>
-      <CommandLineTemplate Condition="'$(Platform)' == 'X64'">"$(VCInstallDir)bin\ml64.exe" /c [AllOptions] [AdditionalOptions] /Ta[Inputs]</CommandLineTemplate>
+      <CommandLineTemplate Condition="'$(Platform)' == 'X64'">"$(VCInstallDir)bin\amd64\ml64.exe" /c [AllOptions] [AdditionalOptions] /Ta[Inputs]</CommandLineTemplate>
       <CommandLineTemplate Condition="'$(Platform)' != 'Win32' and '$(Platform)' != 'X64'">echo MASM not supported on this platform</CommandLineTemplate>
       <ExecutionDescription>Assembling %(Identity)...</ExecutionDescription>
     </MASM>
diff --git a/msvc/mono-profiler-codeanalyst.def b/msvc/mono-profiler-codeanalyst.def
deleted file mode 100644 (file)
index 3310145..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-; file generated by create-windef.pl
-LIBRARY mono-profiler-codeanalyst.dll
-EXPORTS
-mono_profiler_startup
\ No newline at end of file
index 97aa760a07e65fd67418ee0d363a6a711c28c060..615886ddf32aa4117566c9f825dddb2169723044 100644 (file)
@@ -3,7 +3,7 @@ LIBRARY mono-2.0.dll
 EXPORTS
 MonoFixupCorEE
 mono_add_internal_call
-mono_aot_register_globals
+mono_aot_get_method
 mono_aot_register_module
 mono_array_addr_with_size
 mono_array_class_get
@@ -21,6 +21,7 @@ mono_assembly_foreach
 mono_assembly_get_assemblyref
 mono_assembly_get_image
 mono_assembly_get_main
+mono_assembly_get_name
 mono_assembly_get_object
 mono_assembly_getrootdir
 mono_assembly_invoke_load_hook
@@ -46,7 +47,6 @@ mono_assembly_open
 mono_assembly_open_full
 mono_assembly_set_main
 mono_assembly_setrootdir
-mono_binary_search
 mono_bitset_alloc_size
 mono_bitset_clear
 mono_bitset_clear_all
@@ -87,7 +87,6 @@ mono_class_from_typeref
 mono_class_from_typeref_checked
 mono_class_get
 mono_class_get_byref_type
-mono_class_get_com_object_class
 mono_class_get_element_class
 mono_class_get_event_token
 mono_class_get_events
@@ -97,11 +96,8 @@ mono_class_get_field_token
 mono_class_get_fields
 mono_class_get_flags
 mono_class_get_full
-mono_class_get_idispatch_class
 mono_class_get_image
 mono_class_get_interfaces
-mono_class_get_interop_proxy_class
-mono_class_get_iunknown_class
 mono_class_get_method_from_name
 mono_class_get_method_from_name_flags
 mono_class_get_methods
@@ -116,7 +112,6 @@ mono_class_get_property_token
 mono_class_get_rank
 mono_class_get_type
 mono_class_get_type_token
-mono_class_get_variant_class
 mono_class_implements_interface
 mono_class_inflate_generic_method
 mono_class_inflate_generic_type
@@ -141,7 +136,6 @@ mono_cli_rva_image_map
 mono_code_manager_cleanup
 mono_code_manager_commit
 mono_code_manager_destroy
-mono_code_manager_foreach
 mono_code_manager_init
 mono_code_manager_invalidate
 mono_code_manager_new
@@ -151,6 +145,13 @@ mono_code_manager_reserve_align
 mono_code_manager_set_read_only
 mono_code_manager_size
 mono_compile_method
+mono_conc_hashtable_destroy
+mono_conc_hashtable_foreach
+mono_conc_hashtable_insert
+mono_conc_hashtable_lookup
+mono_conc_hashtable_new
+mono_conc_hashtable_new_full
+mono_conc_hashtable_remove
 mono_config_cleanup
 mono_config_for_assembly
 mono_config_is_server_mode
@@ -160,6 +161,8 @@ mono_config_set_server_mode
 mono_config_string_for_assembly_file
 mono_context_get
 mono_context_get_desc
+mono_context_get_domain_id
+mono_context_get_id
 mono_context_init
 mono_context_set
 mono_counter_get_name
@@ -198,10 +201,10 @@ mono_debug_domain_create
 mono_debug_domain_unload
 mono_debug_enabled
 mono_debug_find_method
+mono_debug_free_locals
 mono_debug_free_method_jit_info
 mono_debug_free_source_location
 mono_debug_il_offset_from_address
-mono_debug_image_has_debug_info
 mono_debug_init
 mono_debug_lookup_locals
 mono_debug_lookup_method
@@ -217,13 +220,12 @@ mono_debug_symfile_is_loaded
 mono_debug_symfile_lookup_locals
 mono_debug_symfile_lookup_location
 mono_debug_symfile_lookup_method
+mono_debugger_agent_parse_options
 mono_debugger_agent_register_transport
+mono_debugger_agent_transport_handshake
 mono_debugger_insert_breakpoint
 mono_debugger_method_has_breakpoint
 mono_debugger_run_finally
-mono_decimal_addsub
-mono_decimal_divide
-mono_decimal_from_number
 mono_declsec_flags_from_assembly
 mono_declsec_flags_from_class
 mono_declsec_flags_from_method
@@ -250,6 +252,7 @@ mono_domain_free
 mono_domain_from_appdomain
 mono_domain_get
 mono_domain_get_by_id
+mono_domain_get_friendly_name
 mono_domain_get_id
 mono_domain_has_type_resolve
 mono_domain_is_unloading
@@ -260,9 +263,7 @@ mono_domain_set_internal
 mono_domain_try_type_resolve
 mono_domain_try_unload
 mono_domain_unload
-mono_dwarf_escape_path
 mono_emit_native_call
-mono_enable_debug_domain_unload
 mono_environment_exitcode_get
 mono_environment_exitcode_set
 mono_error_cleanup
@@ -333,6 +334,7 @@ mono_gc_reference_queue_add
 mono_gc_reference_queue_free
 mono_gc_reference_queue_new
 mono_gc_register_finalizer_callbacks
+mono_gc_register_root
 mono_gc_toggleref_add
 mono_gc_toggleref_register_callback
 mono_gc_walk_heap
@@ -403,6 +405,7 @@ mono_get_int16_class
 mono_get_int32_class
 mono_get_int64_class
 mono_get_intptr_class
+mono_get_jit_info_from_method
 mono_get_machine_config
 mono_get_method
 mono_get_method_constrained
@@ -414,7 +417,6 @@ mono_get_sbyte_class
 mono_get_single_class
 mono_get_string_class
 mono_get_thread_class
-mono_get_trampoline_func
 mono_get_uint16_class
 mono_get_uint32_class
 mono_get_uint64_class
@@ -470,7 +472,7 @@ mono_install_assembly_refonly_preload_hook
 mono_install_assembly_refonly_search_hook
 mono_install_assembly_search_hook
 mono_install_runtime_cleanup
-mono_invoke_unhandled_exception_hook
+mono_install_unhandled_exception_hook
 mono_is_debugger_attached
 mono_jit_cleanup
 mono_jit_exec
@@ -481,16 +483,20 @@ mono_jit_info_table_find
 mono_jit_init
 mono_jit_init_version
 mono_jit_parse_options
+mono_jit_set_aot_mode
 mono_jit_set_aot_only
 mono_jit_set_domain
 mono_jit_set_trace_options
 mono_jit_thread_attach
 mono_ldstr
 mono_ldtoken
-mono_lls_init
 mono_load_remote_field
 mono_load_remote_field_new
-mono_local_deadce
+mono_lock_free_queue_dequeue
+mono_lock_free_queue_enqueue
+mono_lock_free_queue_init
+mono_lock_free_queue_node_free
+mono_lock_free_queue_node_init
 mono_locks_dump
 mono_lookup_icall_symbol
 mono_lookup_internal_call
@@ -506,7 +512,6 @@ mono_mempool_alloc
 mono_mempool_alloc0
 mono_mempool_contains_addr
 mono_mempool_destroy
-mono_mempool_empty
 mono_mempool_get_allocated
 mono_mempool_invalidate
 mono_mempool_new
@@ -609,6 +614,7 @@ mono_method_header_get_clauses
 mono_method_header_get_code
 mono_method_header_get_locals
 mono_method_header_get_num_clauses
+mono_method_print_code
 mono_method_signature
 mono_method_verify
 mono_mlist_alloc
@@ -628,9 +634,7 @@ mono_monitor_enter_v4
 mono_monitor_exit
 mono_monitor_try_enter
 mono_mprotect
-mono_mutex_init_suspend_safe
 mono_object_castclass_mbyref
-mono_object_castclass_with_cache
 mono_object_clone
 mono_object_describe
 mono_object_describe_fields
@@ -641,7 +645,6 @@ mono_object_get_virtual_method
 mono_object_hash
 mono_object_isinst
 mono_object_isinst_mbyref
-mono_object_isinst_with_cache
 mono_object_new
 mono_object_new_alloc_specific
 mono_object_new_fast
@@ -649,17 +652,18 @@ mono_object_new_from_token
 mono_object_new_specific
 mono_object_to_string
 mono_object_unbox
-mono_op_to_op_imm_noemul
 mono_opcode_name
 mono_opcode_value
 mono_pagesize
 mono_param_get_objects
 mono_parse_default_optimizations
+mono_parse_env_options
 mono_path_canonicalize
 mono_path_resolve_symlinks
 mono_pe_file_open
 mono_perfcounter_foreach
 mono_perfcounters_init
+mono_personality
 mono_pmip
 mono_poll
 mono_print_method_from_ip
@@ -671,11 +675,13 @@ mono_profiler_get_events
 mono_profiler_install
 mono_profiler_install_allocation
 mono_profiler_install_appdomain
+mono_profiler_install_appdomain_name
 mono_profiler_install_assembly
 mono_profiler_install_class
 mono_profiler_install_code_buffer_new
 mono_profiler_install_code_chunk_destroy
 mono_profiler_install_code_chunk_new
+mono_profiler_install_context
 mono_profiler_install_coverage_filter
 mono_profiler_install_enter_leave
 mono_profiler_install_exception
@@ -713,7 +719,6 @@ mono_property_hash_remove_object
 mono_property_set_value
 mono_ptr_class_get
 mono_raise_exception
-mono_realloc_native_code
 mono_reflection_assembly_get_assembly
 mono_reflection_free_type_info
 mono_reflection_get_custom_attrs
@@ -749,15 +754,11 @@ mono_runtime_resource_set_callback
 mono_runtime_run_main
 mono_runtime_set_main_args
 mono_runtime_set_shutting_down
-mono_save_seq_point_info
 mono_security_core_clr_get_options
 mono_security_core_clr_require_elevated_permissions
 mono_security_core_clr_set_options
 mono_security_enable_core_clr
 mono_security_set_core_clr_platform_callback
-mono_sem_post
-mono_sem_timedwait
-mono_sem_wait
 mono_set_assemblies_path
 mono_set_break_policy
 mono_set_config_dir
@@ -824,14 +825,6 @@ mono_thread_detach_if_exiting
 mono_thread_exit
 mono_thread_get_main
 mono_thread_get_undeniable_exception
-mono_thread_info_exit
-mono_thread_info_finish_interrupt
-mono_thread_info_get_stack_bounds
-mono_thread_info_open_handle
-mono_thread_info_prepare_interrupt
-mono_thread_info_self_interrupt
-mono_thread_info_tls_get
-mono_thread_info_tls_set
 mono_thread_init
 mono_thread_is_foreign
 mono_thread_manage
@@ -840,12 +833,11 @@ mono_thread_set_main
 mono_thread_set_manage_callback
 mono_thread_stop
 mono_threads_attach_tools_thread
-mono_threads_create_thread
+mono_threads_enter_gc_unsafe_region
+mono_threads_exit_gc_unsafe_region
 mono_threads_get_default_stacksize
 mono_threads_request_thread_dump
 mono_threads_set_default_stacksize
-mono_tls_key_get_offset
-mono_tls_key_set_offset
 mono_trace_set_level_string
 mono_trace_set_log_handler
 mono_trace_set_mask_string
index d1114019bdf653f49b1a090f928816887ebdd3d2..b1fd77c0f3ad8ad2fd615f6d894baf4230198d8b 100644 (file)
@@ -31,8 +31,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodis", "monodis.vcxproj"
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pedump", "pedump.vcxproj", "{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}"\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodiet", "monodiet.vcxproj", "{8F90007F-8019-4191-8808-891E4762D958}"\r
-EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monograph", "monograph.vcxproj", "{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}"\r
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-metadata", "test-metadata.vcxproj", "{C2EB666E-9146-4B7A-85F6-25F9EA313770}"\r
@@ -45,26 +43,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtest", "libtest.vcxproj"
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monoposixhelper", "monoposixhelper.vcxproj", "{33014734-0F46-4099-9A21-0C989E428681}"\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-logging", "profiler-logging.vcxproj", "{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
-               {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
-       EndProjectSection\r
-EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-cov", "profiler-cov.vcxproj", "{83D4D926-2983-4770-BA92-EB9CB8828C95}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
-               {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
-       EndProjectSection\r
-EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jay", "..\mcs\jay\jay.vcxproj", "{5D485D32-3B9F-4287-AB24-C8DA5B89F537}"\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-codeanalyst", "profiler-codeanalyst.vcxproj", "{8FEF7F9E-F5F3-470E-91F4-404B7D6BC1BB}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
-               {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
-       EndProjectSection\r
-EndProject\r
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Profilers", "Profilers", "{4CFD7702-60B2-4E82-BFAD-FCBB53EB4DA2}"\r
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-vtune", "profiler-vtune.vcxproj", "{F51017F9-B7FB-4F87-B7B5-12799D965783}"\r
@@ -135,6 +115,7 @@ Global
                {6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|Win32.ActiveCfg = Release|Win32\r
                {6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|x64.ActiveCfg = Release|x64\r
                {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_SGen|Win32.ActiveCfg = Debug_SGen|Win32\r
+               {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_SGen|Win32.Build.0 = Debug_SGen|Win32\r
                {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_SGen|x64.ActiveCfg = Debug_SGen|x64\r
                {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_SGen|x64.Build.0 = Debug_SGen|x64\r
                {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|Win32.ActiveCfg = Debug|Win32\r
@@ -182,16 +163,6 @@ Global
                {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release_SGen|x64.ActiveCfg = Release|x64\r
                {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|Win32.ActiveCfg = Release|Win32\r
                {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|x64.ActiveCfg = Release|x64\r
-               {8F90007F-8019-4191-8808-891E4762D958}.Debug_SGen|Win32.ActiveCfg = Debug|Win32\r
-               {8F90007F-8019-4191-8808-891E4762D958}.Debug_SGen|x64.ActiveCfg = Debug|x64\r
-               {8F90007F-8019-4191-8808-891E4762D958}.Debug_SGen|x64.Build.0 = Debug|x64\r
-               {8F90007F-8019-4191-8808-891E4762D958}.Debug|Win32.ActiveCfg = Debug|Win32\r
-               {8F90007F-8019-4191-8808-891E4762D958}.Debug|x64.ActiveCfg = Debug|x64\r
-               {8F90007F-8019-4191-8808-891E4762D958}.Release_SGen|Win32.ActiveCfg = Release|Win32\r
-               {8F90007F-8019-4191-8808-891E4762D958}.Release_SGen|x64.ActiveCfg = Release|x64\r
-               {8F90007F-8019-4191-8808-891E4762D958}.Release_SGen|x64.Build.0 = Release|x64\r
-               {8F90007F-8019-4191-8808-891E4762D958}.Release|Win32.ActiveCfg = Release|Win32\r
-               {8F90007F-8019-4191-8808-891E4762D958}.Release|x64.ActiveCfg = Release|x64\r
                {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug_SGen|Win32.ActiveCfg = Debug|Win32\r
                {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug_SGen|x64.ActiveCfg = Debug|x64\r
                {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug_SGen|x64.Build.0 = Debug|x64\r
@@ -264,30 +235,6 @@ Global
                {33014734-0F46-4099-9A21-0C989E428681}.Release|Win32.Build.0 = Release|Win32\r
                {33014734-0F46-4099-9A21-0C989E428681}.Release|x64.ActiveCfg = Release|x64\r
                {33014734-0F46-4099-9A21-0C989E428681}.Release|x64.Build.0 = Release|x64\r
-               {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug_SGen|Win32.ActiveCfg = Debug|Win32\r
-               {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug_SGen|x64.ActiveCfg = Debug|x64\r
-               {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug_SGen|x64.Build.0 = Debug|x64\r
-               {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug|Win32.ActiveCfg = Debug|Win32\r
-               {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug|x64.ActiveCfg = Debug|x64\r
-               {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release_SGen|Win32.ActiveCfg = Release|Win32\r
-               {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release_SGen|x64.ActiveCfg = Release|x64\r
-               {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release|Win32.ActiveCfg = Release|Win32\r
-               {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release|x64.ActiveCfg = Release|x64\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug_SGen|Win32.ActiveCfg = Debug|Win32\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug_SGen|x64.ActiveCfg = Debug|x64\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug_SGen|x64.Build.0 = Debug|x64\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug|Win32.ActiveCfg = Debug|Win32\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug|Win32.Build.0 = Debug|Win32\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug|x64.ActiveCfg = Debug|x64\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug|x64.Build.0 = Debug|x64\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Release_SGen|Win32.ActiveCfg = Release|Win32\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Release_SGen|Win32.Build.0 = Release|Win32\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Release_SGen|x64.ActiveCfg = Release|x64\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Release_SGen|x64.Build.0 = Release|x64\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Release|Win32.ActiveCfg = Release|Win32\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Release|Win32.Build.0 = Release|Win32\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Release|x64.ActiveCfg = Release|x64\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95}.Release|x64.Build.0 = Release|x64\r
                {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_SGen|Win32.ActiveCfg = Debug|Win32\r
                {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_SGen|Win32.Build.0 = Debug|Win32\r
                {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_SGen|x64.ActiveCfg = Debug|Win32\r
@@ -300,18 +247,8 @@ Global
                {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.ActiveCfg = Release|Win32\r
                {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.Build.0 = Release|Win32\r
                {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|x64.ActiveCfg = Release|Win32\r
-               {8FEF7F9E-F5F3-470E-91F4-404B7D6BC1BB}.Debug_SGen|Win32.ActiveCfg = Debug|Win32\r
-               {8FEF7F9E-F5F3-470E-91F4-404B7D6BC1BB}.Debug_SGen|x64.ActiveCfg = Debug|x64\r
-               {8FEF7F9E-F5F3-470E-91F4-404B7D6BC1BB}.Debug_SGen|x64.Build.0 = Debug|x64\r
-               {8FEF7F9E-F5F3-470E-91F4-404B7D6BC1BB}.Debug|Win32.ActiveCfg = Debug|Win32\r
-               {8FEF7F9E-F5F3-470E-91F4-404B7D6BC1BB}.Debug|x64.ActiveCfg = Debug|x64\r
-               {8FEF7F9E-F5F3-470E-91F4-404B7D6BC1BB}.Release_SGen|Win32.ActiveCfg = Release|Win32\r
-               {8FEF7F9E-F5F3-470E-91F4-404B7D6BC1BB}.Release_SGen|x64.ActiveCfg = Release|x64\r
-               {8FEF7F9E-F5F3-470E-91F4-404B7D6BC1BB}.Release|Win32.ActiveCfg = Release|Win32\r
-               {8FEF7F9E-F5F3-470E-91F4-404B7D6BC1BB}.Release|x64.ActiveCfg = Release|x64\r
                {F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug_SGen|Win32.ActiveCfg = Debug|Win32\r
                {F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug_SGen|x64.ActiveCfg = Debug|x64\r
-               {F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug_SGen|x64.Build.0 = Debug|x64\r
                {F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug|Win32.ActiveCfg = Debug|Win32\r
                {F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug|x64.ActiveCfg = Debug|x64\r
                {F51017F9-B7FB-4F87-B7B5-12799D965783}.Release_SGen|Win32.ActiveCfg = Release|Win32\r
@@ -361,7 +298,6 @@ Global
                {B7098DFA-31E6-4006-8A15-1C9A4E925149} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}\r
                {37F50E5A-4818-46CF-81FE-4BB06DE5D42E} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}\r
                {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}\r
-               {8F90007F-8019-4191-8808-891E4762D958} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}\r
                {CA2A69D6-3B9D-45A5-8BF7-4E242E683122} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}\r
                {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}\r
                {EB56000B-C80B-4E8B-908D-D84D31B517D3} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}\r
@@ -371,9 +307,6 @@ Global
                {C36612BD-22D3-4B95-85E2-7FDC4FC5D739} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}\r
                {80A0620A-3478-4E1A-AA7C-0D2387B892AB} = {ECA11C76-E192-4F67-A8FA-28B637D9716F}\r
                {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4} = {ECA11C76-E192-4F67-A8FA-28B637D9716F}\r
-               {83D4D926-2983-4770-BA92-EB9CB8828C95} = {4CFD7702-60B2-4E82-BFAD-FCBB53EB4DA2}\r
-               {8FEF7F9E-F5F3-470E-91F4-404B7D6BC1BB} = {4CFD7702-60B2-4E82-BFAD-FCBB53EB4DA2}\r
-               {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6} = {4CFD7702-60B2-4E82-BFAD-FCBB53EB4DA2}\r
                {F51017F9-B7FB-4F87-B7B5-12799D965783} = {4CFD7702-60B2-4E82-BFAD-FCBB53EB4DA2}\r
        EndGlobalSection\r
        GlobalSection(ExtensibilityGlobals) = postSolution\r
index 84edfbbe9333ad20aba79b038b5ad20c425c1397..66f1f0ef99cc5a6ad402271dc976c8b89febc524 100644 (file)
   <PropertyGroup Label="UserMacros" />\r
   <PropertyGroup>\r
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\bin\$(Configuration)</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\bin\$(Configuration)</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\bin\$(Configuration)</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\bin\$(Configuration)</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\bin\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\bin\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(ProjectName)-sgen</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(ProjectName)-sgen</TargetName>\r
     <TargetName Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(ProjectName)-sgen</TargetName>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>monosgen-2.0.lib;libgc.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>monosgen-2.0.lib;libgc.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
diff --git a/msvc/monodiet.vcxproj b/msvc/monodiet.vcxproj
deleted file mode 100644 (file)
index 8f63207..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{8F90007F-8019-4191-8808-891E4762D958}</ProjectGuid>\r
-    <RootNamespace>monodiet</RootNamespace>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\;..\libgc\include;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;__WIN32__;HAVE_CONFIG_H;__i386__;TARGET_X86;HOST_WIN32;TARGET_WIN32;GC_NOT_DLL;GC_GCJ_SUPPORT;GC_WIN32_THREADS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <ObjectFileName>$(IntDir)monodiet/</ObjectFileName>\r
-      <ProgramDataBaseFileName>$(IntDir)monodiet/vc80.pdb</ProgramDataBaseFileName>\r
-      <XMLDocumentationFileName>$(IntDir)monodiet/</XMLDocumentationFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
-      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
-    </ClCompile>\r
-    <ProjectReference>\r
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
-    </ProjectReference>\r
-    <Link>\r
-      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;mono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ProjectReference>\r
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
-    </ProjectReference>\r
-    <Link>\r
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-      <DataExecutionPrevention>\r
-      </DataExecutionPrevention>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\;..\libgc\include;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <ObjectFileName>$(IntDir)monodiet/</ObjectFileName>\r
-      <ProgramDataBaseFileName>$(IntDir)monodiet/vc80.pdb</ProgramDataBaseFileName>\r
-      <XMLDocumentationFileName>$(IntDir)monodiet/</XMLDocumentationFileName>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <CompileAs>CompileAsC</CompileAs>\r
-      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
-    </ClCompile>\r
-    <ProjectReference>\r
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
-    </ProjectReference>\r
-    <Link>\r
-      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MinSpace</Optimization>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <BufferSecurityCheck>true</BufferSecurityCheck>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ProjectReference>\r
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
-    </ProjectReference>\r
-    <Link>\r
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Console</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\mono\metadata\monodiet.c" />\r
-    <ClCompile Include="..\mono\metadata\opcodes.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="libmono.vcxproj">\r
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
index 215e64142f1f1bcd82fc1549991954e4b191a10b..66fea4dae387430ad2ff31fa8ffc70259f883226 100644 (file)
@@ -3,7 +3,7 @@ LIBRARY monosgen-2.0.dll
 EXPORTS
 MonoFixupCorEE
 mono_add_internal_call
-mono_aot_register_globals
+mono_aot_get_method
 mono_aot_register_module
 mono_array_addr_with_size
 mono_array_class_get
@@ -21,6 +21,7 @@ mono_assembly_foreach
 mono_assembly_get_assemblyref
 mono_assembly_get_image
 mono_assembly_get_main
+mono_assembly_get_name
 mono_assembly_get_object
 mono_assembly_getrootdir
 mono_assembly_invoke_load_hook
@@ -46,7 +47,6 @@ mono_assembly_open
 mono_assembly_open_full
 mono_assembly_set_main
 mono_assembly_setrootdir
-mono_binary_search
 mono_bitset_alloc_size
 mono_bitset_clear
 mono_bitset_clear_all
@@ -87,7 +87,6 @@ mono_class_from_typeref
 mono_class_from_typeref_checked
 mono_class_get
 mono_class_get_byref_type
-mono_class_get_com_object_class
 mono_class_get_element_class
 mono_class_get_event_token
 mono_class_get_events
@@ -97,11 +96,8 @@ mono_class_get_field_token
 mono_class_get_fields
 mono_class_get_flags
 mono_class_get_full
-mono_class_get_idispatch_class
 mono_class_get_image
 mono_class_get_interfaces
-mono_class_get_interop_proxy_class
-mono_class_get_iunknown_class
 mono_class_get_method_from_name
 mono_class_get_method_from_name_flags
 mono_class_get_methods
@@ -116,7 +112,6 @@ mono_class_get_property_token
 mono_class_get_rank
 mono_class_get_type
 mono_class_get_type_token
-mono_class_get_variant_class
 mono_class_implements_interface
 mono_class_inflate_generic_method
 mono_class_inflate_generic_type
@@ -141,7 +136,6 @@ mono_cli_rva_image_map
 mono_code_manager_cleanup
 mono_code_manager_commit
 mono_code_manager_destroy
-mono_code_manager_foreach
 mono_code_manager_init
 mono_code_manager_invalidate
 mono_code_manager_new
@@ -151,6 +145,13 @@ mono_code_manager_reserve_align
 mono_code_manager_set_read_only
 mono_code_manager_size
 mono_compile_method
+mono_conc_hashtable_destroy
+mono_conc_hashtable_foreach
+mono_conc_hashtable_insert
+mono_conc_hashtable_lookup
+mono_conc_hashtable_new
+mono_conc_hashtable_new_full
+mono_conc_hashtable_remove
 mono_config_cleanup
 mono_config_for_assembly
 mono_config_is_server_mode
@@ -160,6 +161,8 @@ mono_config_set_server_mode
 mono_config_string_for_assembly_file
 mono_context_get
 mono_context_get_desc
+mono_context_get_domain_id
+mono_context_get_id
 mono_context_init
 mono_context_set
 mono_counter_get_name
@@ -198,10 +201,10 @@ mono_debug_domain_create
 mono_debug_domain_unload
 mono_debug_enabled
 mono_debug_find_method
+mono_debug_free_locals
 mono_debug_free_method_jit_info
 mono_debug_free_source_location
 mono_debug_il_offset_from_address
-mono_debug_image_has_debug_info
 mono_debug_init
 mono_debug_lookup_locals
 mono_debug_lookup_method
@@ -217,13 +220,12 @@ mono_debug_symfile_is_loaded
 mono_debug_symfile_lookup_locals
 mono_debug_symfile_lookup_location
 mono_debug_symfile_lookup_method
+mono_debugger_agent_parse_options
 mono_debugger_agent_register_transport
+mono_debugger_agent_transport_handshake
 mono_debugger_insert_breakpoint
 mono_debugger_method_has_breakpoint
 mono_debugger_run_finally
-mono_decimal_addsub
-mono_decimal_divide
-mono_decimal_from_number
 mono_declsec_flags_from_assembly
 mono_declsec_flags_from_class
 mono_declsec_flags_from_method
@@ -250,6 +252,7 @@ mono_domain_free
 mono_domain_from_appdomain
 mono_domain_get
 mono_domain_get_by_id
+mono_domain_get_friendly_name
 mono_domain_get_id
 mono_domain_has_type_resolve
 mono_domain_is_unloading
@@ -260,9 +263,7 @@ mono_domain_set_internal
 mono_domain_try_type_resolve
 mono_domain_try_unload
 mono_domain_unload
-mono_dwarf_escape_path
 mono_emit_native_call
-mono_enable_debug_domain_unload
 mono_environment_exitcode_get
 mono_environment_exitcode_set
 mono_error_cleanup
@@ -334,6 +335,7 @@ mono_gc_reference_queue_free
 mono_gc_reference_queue_new
 mono_gc_register_bridge_callbacks
 mono_gc_register_finalizer_callbacks
+mono_gc_register_root
 mono_gc_toggleref_add
 mono_gc_toggleref_register_callback
 mono_gc_wait_for_bridge_processing
@@ -405,6 +407,7 @@ mono_get_int16_class
 mono_get_int32_class
 mono_get_int64_class
 mono_get_intptr_class
+mono_get_jit_info_from_method
 mono_get_machine_config
 mono_get_method
 mono_get_method_constrained
@@ -416,7 +419,6 @@ mono_get_sbyte_class
 mono_get_single_class
 mono_get_string_class
 mono_get_thread_class
-mono_get_trampoline_func
 mono_get_uint16_class
 mono_get_uint32_class
 mono_get_uint64_class
@@ -473,7 +475,6 @@ mono_install_assembly_refonly_search_hook
 mono_install_assembly_search_hook
 mono_install_runtime_cleanup
 mono_install_unhandled_exception_hook
-mono_invoke_unhandled_exception_hook
 mono_is_debugger_attached
 mono_jit_cleanup
 mono_jit_exec
@@ -484,16 +485,20 @@ mono_jit_info_table_find
 mono_jit_init
 mono_jit_init_version
 mono_jit_parse_options
+mono_jit_set_aot_mode
 mono_jit_set_aot_only
 mono_jit_set_domain
 mono_jit_set_trace_options
 mono_jit_thread_attach
 mono_ldstr
 mono_ldtoken
-mono_lls_init
 mono_load_remote_field
 mono_load_remote_field_new
-mono_local_deadce
+mono_lock_free_queue_dequeue
+mono_lock_free_queue_enqueue
+mono_lock_free_queue_init
+mono_lock_free_queue_node_free
+mono_lock_free_queue_node_init
 mono_locks_dump
 mono_lookup_icall_symbol
 mono_lookup_internal_call
@@ -509,7 +514,6 @@ mono_mempool_alloc
 mono_mempool_alloc0
 mono_mempool_contains_addr
 mono_mempool_destroy
-mono_mempool_empty
 mono_mempool_get_allocated
 mono_mempool_invalidate
 mono_mempool_new
@@ -612,6 +616,7 @@ mono_method_header_get_clauses
 mono_method_header_get_code
 mono_method_header_get_locals
 mono_method_header_get_num_clauses
+mono_method_print_code
 mono_method_signature
 mono_method_verify
 mono_mlist_alloc
@@ -631,9 +636,7 @@ mono_monitor_enter_v4
 mono_monitor_exit
 mono_monitor_try_enter
 mono_mprotect
-mono_mutex_init_suspend_safe
 mono_object_castclass_mbyref
-mono_object_castclass_with_cache
 mono_object_clone
 mono_object_describe
 mono_object_describe_fields
@@ -644,7 +647,6 @@ mono_object_get_virtual_method
 mono_object_hash
 mono_object_isinst
 mono_object_isinst_mbyref
-mono_object_isinst_with_cache
 mono_object_new
 mono_object_new_alloc_specific
 mono_object_new_fast
@@ -652,17 +654,18 @@ mono_object_new_from_token
 mono_object_new_specific
 mono_object_to_string
 mono_object_unbox
-mono_op_to_op_imm_noemul
 mono_opcode_name
 mono_opcode_value
 mono_pagesize
 mono_param_get_objects
 mono_parse_default_optimizations
+mono_parse_env_options
 mono_path_canonicalize
 mono_path_resolve_symlinks
 mono_pe_file_open
 mono_perfcounter_foreach
 mono_perfcounters_init
+mono_personality
 mono_pmip
 mono_poll
 mono_print_method_from_ip
@@ -674,11 +677,13 @@ mono_profiler_get_events
 mono_profiler_install
 mono_profiler_install_allocation
 mono_profiler_install_appdomain
+mono_profiler_install_appdomain_name
 mono_profiler_install_assembly
 mono_profiler_install_class
 mono_profiler_install_code_buffer_new
 mono_profiler_install_code_chunk_destroy
 mono_profiler_install_code_chunk_new
+mono_profiler_install_context
 mono_profiler_install_coverage_filter
 mono_profiler_install_enter_leave
 mono_profiler_install_exception
@@ -716,7 +721,6 @@ mono_property_hash_remove_object
 mono_property_set_value
 mono_ptr_class_get
 mono_raise_exception
-mono_realloc_native_code
 mono_reflection_assembly_get_assembly
 mono_reflection_free_type_info
 mono_reflection_get_custom_attrs
@@ -752,15 +756,11 @@ mono_runtime_resource_set_callback
 mono_runtime_run_main
 mono_runtime_set_main_args
 mono_runtime_set_shutting_down
-mono_save_seq_point_info
 mono_security_core_clr_get_options
 mono_security_core_clr_require_elevated_permissions
 mono_security_core_clr_set_options
 mono_security_enable_core_clr
 mono_security_set_core_clr_platform_callback
-mono_sem_post
-mono_sem_timedwait
-mono_sem_wait
 mono_set_assemblies_path
 mono_set_break_policy
 mono_set_config_dir
@@ -827,13 +827,6 @@ mono_thread_detach_if_exiting
 mono_thread_exit
 mono_thread_get_main
 mono_thread_get_undeniable_exception
-mono_thread_info_exit
-mono_thread_info_get_stack_bounds
-mono_thread_info_open_handle
-mono_thread_info_prepare_interrupt
-mono_thread_info_self_interrupt
-mono_thread_info_tls_get
-mono_thread_info_tls_set
 mono_thread_init
 mono_thread_is_foreign
 mono_thread_manage
@@ -842,12 +835,11 @@ mono_thread_set_main
 mono_thread_set_manage_callback
 mono_thread_stop
 mono_threads_attach_tools_thread
-mono_threads_create_thread
+mono_threads_enter_gc_unsafe_region
+mono_threads_exit_gc_unsafe_region
 mono_threads_get_default_stacksize
 mono_threads_request_thread_dump
 mono_threads_set_default_stacksize
-mono_tls_key_get_offset
-mono_tls_key_set_offset
 mono_trace_set_level_string
 mono_trace_set_log_handler
 mono_trace_set_mask_string
diff --git a/msvc/profiler-codeanalyst.vcxproj b/msvc/profiler-codeanalyst.vcxproj
deleted file mode 100644 (file)
index d9d013c..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{8FEF7F9E-F5F3-470E-91F4-404B7D6BC1BB}</ProjectGuid>\r
-    <RootNamespace>profilercodeanalyst</RootNamespace>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mono-profiler-codeanalyst</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mono-profiler-codeanalyst</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mono-profiler-codeanalyst</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mono-profiler-codeanalyst</TargetName>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;C:\Program Files (x86)\AMD\CodeAnalyst\API\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ClCompile>\r
-    <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <ModuleDefinitionFile>mono-profiler-codeanalyst.def</ModuleDefinitionFile>\r
-      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;CAJitNtfyLib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>$(Platform)\lib;C:\Program Files (x86)\AMD\CodeAnalyst\API\lib\32-bit;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;C:\Program Files (x86)\AMD\CodeAnalyst\API\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ClCompile>\r
-    <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <ModuleDefinitionFile>mono-profiler-codeanalyst.def</ModuleDefinitionFile>\r
-      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;CAJitNtfyLib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>$(Platform)\lib;C:\Program Files (x86)\AMD\CodeAnalyst\API\lib\64-bit;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;C:\Program Files (x86)\AMD\CodeAnalyst\API\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;CAJitNtfyLib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>$(Platform)\lib;C:\Program Files (x86)\AMD\CodeAnalyst\API\lib\32-bit;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <ModuleDefinitionFile>mono-profiler-codeanalyst.def</ModuleDefinitionFile>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;C:\Program Files (x86)\AMD\CodeAnalyst\API\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;CAJitNtfyLib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>$(Platform)\lib;C:\Program Files (x86)\AMD\CodeAnalyst\API\lib\64-bit;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <ModuleDefinitionFile>mono-profiler-codeanalyst.def</ModuleDefinitionFile>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\mono\profiler\mono-codeanalyst.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="mono-profiler-codeanalyst.def" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
diff --git a/msvc/profiler-cov.vcxproj b/msvc/profiler-cov.vcxproj
deleted file mode 100644 (file)
index da7aaa3..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{83D4D926-2983-4770-BA92-EB9CB8828C95}</ProjectGuid>\r
-    <RootNamespace>profilercov</RootNamespace>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mono-profiler-cov</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mono-profiler-cov</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mono-profiler-cov</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mono-profiler-cov</TargetName>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PROFILERCOV_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ClCompile>\r
-    <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PROFILERCOV_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ClCompile>\r
-    <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PROFILERCOV_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PROFILERCOV_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\mono\profiler\mono-cov.c" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
diff --git a/msvc/profiler-logging.vcxproj b/msvc/profiler-logging.vcxproj
deleted file mode 100644 (file)
index 9ec7432..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="Debug|Win32">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Debug|x64">\r
-      <Configuration>Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|Win32">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="Release|x64">\r
-      <Configuration>Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}</ProjectGuid>\r
-    <RootNamespace>profilerlogging</RootNamespace>\r
-    <Keyword>Win32Proj</Keyword>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PROFILERLOGGING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <IntrinsicFunctions>true</IntrinsicFunctions>\r
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PROFILERLOGGING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <Link>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>TARGET_X86;_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-      <ShowIncludes>true</ShowIncludes>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>TARGET_X86;_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <PrecompiledHeader>\r
-      </PrecompiledHeader>\r
-      <WarningLevel>Level3</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-      <ShowIncludes>true</ShowIncludes>\r
-    </ClCompile>\r
-    <Link>\r
-      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <SubSystem>Windows</SubSystem>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\mono\profiler\mono-profiler-logging.c" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>
\ No newline at end of file
diff --git a/msvc/scripts/.gitignore b/msvc/scripts/.gitignore
new file mode 100644 (file)
index 0000000..ddab2ab
--- /dev/null
@@ -0,0 +1 @@
+*.mdb
\ No newline at end of file
index eae93d57b545a59c24c7617daddec6045ffc04c2..e73eab7fc0b09ee6bd5479406d0427f15a0af8f2 100644 (file)
@@ -54,10 +54,10 @@ necessary to build the Mono class libraries.
           On Mac:
                cd msvc/scripts/
                make genproj.exe
-               mono genproj.
+               mono genproj.exe
                
        One output of genproj is the solutions for the successive profiles, 
-       from net_2_0.sln to from net_4.5.sln 
+       like net_4_x.sln.
 
        The command
                ./genproj.exe -h 
index 035004a84d4400ea72231302c9375a75b21ea53b..732e14aa11a1344e8800140db5b92cfee0937c83 100644 (file)
@@ -27,6 +27,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_4_x", "..\.
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-plaincore-net_4_x", "..\..\mcs\class/System.Core\System.Core-plaincore-net_4_x.csproj", "{1EC0EBC0-0B35-454C-89AE-3F8F0FDD9705}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.Compression-net_4_x", "..\..\mcs\class/System.IO.Compression\System.IO.Compression-net_4_x.csproj", "{6187D26C-54C8-4298-829E-A99B0E6036B1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.Compression.FileSystem-net_4_x", "..\..\mcs\class/System.IO.Compression.FileSystem\System.IO.Compression.FileSystem-net_4_x.csproj", "{9E61FF2E-493E-4CA0-BBDA-2EF96A4CB058}"
+EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_4_x", "..\..\mcs\class/System.Drawing\System.Drawing-net_4_x.csproj", "{584A5E46-2958-4CB2-8DF9-188B420D0BB0}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_4_x", "..\..\mcs\class/System.Transactions\System.Transactions-net_4_x.csproj", "{3821C69F-220D-4231-992C-0FE05311A005}"
@@ -267,14 +271,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Data
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.Composition-net_4_x", "..\..\mcs\class/System.ComponentModel.Composition.4.5\System.ComponentModel.Composition-net_4_x.csproj", "{9091B5ED-8AFF-4B93-801A-9A33E0895A2B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.Compression-net_4_x", "..\..\mcs\class/System.IO.Compression\System.IO.Compression-net_4_x.csproj", "{6187D26C-54C8-4298-829E-A99B0E6036B1}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.Compression.FileSystem-net_4_x", "..\..\mcs\class/System.IO.Compression.FileSystem\System.IO.Compression.FileSystem-net_4_x.csproj", "{9E61FF2E-493E-4CA0-BBDA-2EF96A4CB058}"
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows-net_4_x", "..\..\mcs\class/System.Windows\System.Windows-net_4_x.csproj", "{3F6EB6D4-602E-43C2-A3E1-4AD98E8C86EE}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.Serialization-net_4_x", "..\..\mcs\class/System.Xml.Serialization\System.Xml.Serialization-net_4_x.csproj", "{2210873E-99FC-48A2-A261-D650BAE33A1C}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security.Providers.DotNet-net_4_x", "..\..\mcs\class/Mono.Security.Providers.DotNet\Mono.Security.Providers.DotNet-net_4_x.csproj", "{391EDD2B-85AC-4FCA-B607-AAD6C51E6799}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security.Providers.OldTls-net_4_x", "..\..\mcs\class/Mono.Security.Providers.OldTls\Mono.Security.Providers.OldTls-net_4_x.csproj", "{E485E885-59B1-4081-BC66-56AAAFD8771A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security.Providers.NewSystemSource-net_4_x", "..\..\mcs\class/Mono.Security.Providers.NewSystemSource\Mono.Security.Providers.NewSystemSource-net_4_x.csproj", "{0BB4541F-9B1A-4CBC-BEB1-00B31B37F74E}"
+EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.DirectoryServices.Protocols-net_4_x", "..\..\mcs\class/System.DirectoryServices.Protocols\System.DirectoryServices.Protocols-net_4_x.csproj", "{EF08F249-31A1-4E62-8391-ECBA5227B686}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.VisualC-net_4_x", "..\..\mcs\class/Microsoft.VisualC\Microsoft.VisualC-net_4_x.csproj", "{ACA2694D-9F07-4AE2-9171-9AB5DD1A8C18}"
@@ -341,6 +347,14 @@ Global
                {1EC0EBC0-0B35-454C-89AE-3F8F0FDD9705}.Debug|Any CPU.Build.0 = Debug|Any CPU
                {1EC0EBC0-0B35-454C-89AE-3F8F0FDD9705}.Release|Any CPU.ActiveCfg = Release|Any CPU
                {1EC0EBC0-0B35-454C-89AE-3F8F0FDD9705}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6187D26C-54C8-4298-829E-A99B0E6036B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6187D26C-54C8-4298-829E-A99B0E6036B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6187D26C-54C8-4298-829E-A99B0E6036B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6187D26C-54C8-4298-829E-A99B0E6036B1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9E61FF2E-493E-4CA0-BBDA-2EF96A4CB058}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9E61FF2E-493E-4CA0-BBDA-2EF96A4CB058}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9E61FF2E-493E-4CA0-BBDA-2EF96A4CB058}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9E61FF2E-493E-4CA0-BBDA-2EF96A4CB058}.Release|Any CPU.Build.0 = Release|Any CPU
                {584A5E46-2958-4CB2-8DF9-188B420D0BB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {584A5E46-2958-4CB2-8DF9-188B420D0BB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
                {584A5E46-2958-4CB2-8DF9-188B420D0BB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -821,14 +835,6 @@ Global
                {9091B5ED-8AFF-4B93-801A-9A33E0895A2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
                {9091B5ED-8AFF-4B93-801A-9A33E0895A2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
                {9091B5ED-8AFF-4B93-801A-9A33E0895A2B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6187D26C-54C8-4298-829E-A99B0E6036B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6187D26C-54C8-4298-829E-A99B0E6036B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6187D26C-54C8-4298-829E-A99B0E6036B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6187D26C-54C8-4298-829E-A99B0E6036B1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9E61FF2E-493E-4CA0-BBDA-2EF96A4CB058}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9E61FF2E-493E-4CA0-BBDA-2EF96A4CB058}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9E61FF2E-493E-4CA0-BBDA-2EF96A4CB058}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9E61FF2E-493E-4CA0-BBDA-2EF96A4CB058}.Release|Any CPU.Build.0 = Release|Any CPU
                {3F6EB6D4-602E-43C2-A3E1-4AD98E8C86EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {3F6EB6D4-602E-43C2-A3E1-4AD98E8C86EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
                {3F6EB6D4-602E-43C2-A3E1-4AD98E8C86EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -837,6 +843,18 @@ Global
                {2210873E-99FC-48A2-A261-D650BAE33A1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
                {2210873E-99FC-48A2-A261-D650BAE33A1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
                {2210873E-99FC-48A2-A261-D650BAE33A1C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {391EDD2B-85AC-4FCA-B607-AAD6C51E6799}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {391EDD2B-85AC-4FCA-B607-AAD6C51E6799}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {391EDD2B-85AC-4FCA-B607-AAD6C51E6799}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {391EDD2B-85AC-4FCA-B607-AAD6C51E6799}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E485E885-59B1-4081-BC66-56AAAFD8771A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E485E885-59B1-4081-BC66-56AAAFD8771A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E485E885-59B1-4081-BC66-56AAAFD8771A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E485E885-59B1-4081-BC66-56AAAFD8771A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0BB4541F-9B1A-4CBC-BEB1-00B31B37F74E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0BB4541F-9B1A-4CBC-BEB1-00B31B37F74E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0BB4541F-9B1A-4CBC-BEB1-00B31B37F74E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0BB4541F-9B1A-4CBC-BEB1-00B31B37F74E}.Release|Any CPU.Build.0 = Release|Any CPU
                {EF08F249-31A1-4E62-8391-ECBA5227B686}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {EF08F249-31A1-4E62-8391-ECBA5227B686}.Debug|Any CPU.Build.0 = Debug|Any CPU
                {EF08F249-31A1-4E62-8391-ECBA5227B686}.Release|Any CPU.ActiveCfg = Release|Any CPU
index 587a99b1c467f9a4d976a9092c811da2d222f102..f0c7af522a98eb721cd83583774b3b2ad8eb1507 100644 (file)
@@ -2,7 +2,7 @@
 <root>
     <project dir="mcs" library="basic-basic">
       <boot></boot>
-      <flags>/codepage:65001 -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE -d:NET_4_0 -d:NET_4_5 -d:MONO -d:BOOTSTRAP_BASIC -nowarn:1699 -d:DISABLE_CAS_USE -lib:./../class/lib/basic -optimize /noconfig -r:System -r:System.Core -r:System.Xml</flags>
+      <flags>/codepage:65001 -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_PROCESS_START -d:NET_4_0 -d:NET_4_5 -d:MONO -d:BOOTSTRAP_BASIC -nowarn:1699 -d:DISABLE_CAS_USE -lib:./../class/lib/basic -optimize /noconfig -r:System -r:System.Core -r:System.Xml</flags>
       <output>basic.exe</output>
       <built_sources></built_sources>
       <library_output>./../class/lib/basic/basic.exe</library_output>
@@ -12,7 +12,7 @@
     </project>
     <project dir="class/corlib" library="corlib-basic">
       <boot>true</boot>
-      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618,1635 -d:INSIDE_CORLIB,MONO_CULTURE_DATA -d:LIBC -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -d:NET_4_0 -d:NET_4_5 -d:MONO -d:BOOTSTRAP_BASIC -nowarn:1699 -d:DISABLE_CAS_USE -lib:./../../class/lib/basic -optimize /noconfig -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -resource:resources/charinfo.nlp -resource:resources/collation.core.bin -resource:resources/collation.tailoring.bin -resource:resources/collation.cjkCHS.bin -resource:resources/collation.cjkCHT.bin -resource:resources/collation.cjkJA.bin -resource:resources/collation.cjkKO.bin -resource:resources/collation.cjkKOlv2.bin --runtime:v4</flags>
+      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618,1635 -d:INSIDE_CORLIB,MONO_CULTURE_DATA -d:LIBC -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:NET_4_0 -d:NET_4_5 -d:MONO -d:BOOTSTRAP_BASIC -nowarn:1699 -d:DISABLE_CAS_USE -lib:./../../class/lib/basic -optimize /noconfig -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -resource:resources/charinfo.nlp -resource:resources/collation.core.bin -resource:resources/collation.tailoring.bin -resource:resources/collation.cjkCHS.bin -resource:resources/collation.cjkCHT.bin -resource:resources/collation.cjkJA.bin -resource:resources/collation.cjkKO.bin -resource:resources/collation.cjkKOlv2.bin --runtime:v4</flags>
       <output>mscorlib.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/basic/mscorlib.dll</library_output>
@@ -22,7 +22,7 @@
     </project>
     <project dir="class/System" library="System-basic">
       <boot>true</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:BOOTSTRAP_BASIC -nowarn:1699 -d:DISABLE_CAS_USE -lib:./../../class/lib/basic -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/basic/secxml/System.dll -r:System.Configuration.dll -d:CONFIGURATION_DEP -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:BOOTSTRAP_BASIC -nowarn:1699 -d:DISABLE_CAS_USE -lib:./../../class/lib/basic -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/basic/secxml/System.dll -d:MONO_SECURITY_ALIAS -d:MONO_X509_ALIAS -r:System.Configuration.dll -d:CONFIGURATION_DEP -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/basic/System.dll</library_output>
@@ -42,7 +42,7 @@
     </project>
     <project dir="class/System" library="System-basic">
       <boot>true</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:BOOTSTRAP_BASIC -nowarn:1699 -d:DISABLE_CAS_USE -lib:./../../class/lib/basic -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/basic/secxml/System.dll -r:System.Configuration.dll -d:CONFIGURATION_DEP -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:BOOTSTRAP_BASIC -nowarn:1699 -d:DISABLE_CAS_USE -lib:./../../class/lib/basic -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/basic/secxml/System.dll -d:MONO_SECURITY_ALIAS -d:MONO_X509_ALIAS -r:System.Configuration.dll -d:CONFIGURATION_DEP -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/basic/System.dll</library_output>
@@ -72,7 +72,7 @@
     </project>
     <project dir="class/corlib" library="corlib-build">
       <boot>true</boot>
-      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618,1635 -d:INSIDE_CORLIB,MONO_CULTURE_DATA -d:LIBC -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -optimize /noconfig -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -resource:resources/charinfo.nlp -resource:resources/collation.core.bin -resource:resources/collation.tailoring.bin -resource:resources/collation.cjkCHS.bin -resource:resources/collation.cjkCHT.bin -resource:resources/collation.cjkJA.bin -resource:resources/collation.cjkKO.bin -resource:resources/collation.cjkKOlv2.bin --runtime:v4</flags>
+      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618,1635 -d:INSIDE_CORLIB,MONO_CULTURE_DATA -d:LIBC -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -optimize /noconfig -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -resource:resources/charinfo.nlp -resource:resources/collation.core.bin -resource:resources/collation.tailoring.bin -resource:resources/collation.cjkCHS.bin -resource:resources/collation.cjkCHT.bin -resource:resources/collation.cjkJA.bin -resource:resources/collation.cjkKO.bin -resource:resources/collation.cjkKOlv2.bin --runtime:v4</flags>
       <output>mscorlib.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/build/mscorlib.dll</library_output>
@@ -82,7 +82,7 @@
     </project>
     <project dir="class/System" library="System-build">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/build/secxml/System.dll -r:System.Configuration.dll -d:CONFIGURATION_DEP -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/build/secxml/System.dll -d:MONO_SECURITY_ALIAS -d:MONO_X509_ALIAS -r:System.Configuration.dll -d:CONFIGURATION_DEP -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/build/System.dll</library_output>
@@ -92,7 +92,7 @@
     </project>
     <project dir="class/System" library="System-bare-build">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/build/bare/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-secxml-build">
       <boot>false</boot>
-      <flags>/codepage:65001 -lib:./../../class/lib/build/bare -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/build/bare/System.dll -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
+      <flags>/codepage:65001 -lib:./../../class/lib/build/bare -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/build/bare/System.dll -d:MONO_SECURITY_ALIAS -d:MONO_X509_ALIAS -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/build/secxml/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-build">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/build/secxml/System.dll -r:System.Configuration.dll -d:CONFIGURATION_DEP -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/build/secxml/System.dll -d:MONO_SECURITY_ALIAS -d:MONO_X509_ALIAS -r:System.Configuration.dll -d:CONFIGURATION_DEP -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/build/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-bare-build">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/build/bare/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-secxml-build">
       <boot>false</boot>
-      <flags>/codepage:65001 -lib:./../../class/lib/build/bare -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/build/bare/System.dll -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
+      <flags>/codepage:65001 -lib:./../../class/lib/build/bare -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/build -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/build/bare/System.dll -d:MONO_SECURITY_ALIAS -d:MONO_X509_ALIAS -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/build/secxml/System.dll</library_output>
     </project>
     <project dir="mcs" library="mcs-build">
       <boot></boot>
-      <flags>/codepage:65001 -lib:./../class/lib/build -debug -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../class/lib/build -r:mscorlib.dll -optimize /noconfig -r:System -r:System.Core -r:System.Xml</flags>
+      <flags>/codepage:65001 -lib:./../class/lib/build -debug -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_PROCESS_START -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../class/lib/build -r:mscorlib.dll -optimize /noconfig -r:System -r:System.Core -r:System.Xml</flags>
       <output>mcs.exe</output>
       <built_sources></built_sources>
       <library_output>mcs.exe</library_output>
     </project>
     <project dir="mcs" library="mcs-net_4_x">
       <boot></boot>
-      <flags>/codepage:65001 -lib:./../class/lib/build -debug -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -r:System -r:System.Core -r:System.Xml</flags>
+      <flags>/codepage:65001 -lib:./../class/lib/build -debug -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_PROCESS_START -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -r:System -r:System.Core -r:System.Xml</flags>
       <output>mcs.exe</output>
       <built_sources></built_sources>
       <library_output>mcs.exe</library_output>
     </project>
     <project dir="class/corlib" library="corlib-net_4_x">
       <boot>true</boot>
-      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618,1635 -d:INSIDE_CORLIB,MONO_CULTURE_DATA -d:LIBC -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -debug -optimize /noconfig -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -resource:resources/charinfo.nlp -resource:resources/collation.core.bin -resource:resources/collation.tailoring.bin -resource:resources/collation.cjkCHS.bin -resource:resources/collation.cjkCHT.bin -resource:resources/collation.cjkJA.bin -resource:resources/collation.cjkKO.bin -resource:resources/collation.cjkKOlv2.bin --runtime:v4</flags>
+      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618,1635 -d:INSIDE_CORLIB,MONO_CULTURE_DATA -d:LIBC -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -debug -optimize /noconfig -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -resource:resources/charinfo.nlp -resource:resources/collation.core.bin -resource:resources/collation.tailoring.bin -resource:resources/collation.cjkCHS.bin -resource:resources/collation.cjkCHT.bin -resource:resources/collation.cjkJA.bin -resource:resources/collation.cjkKO.bin -resource:resources/collation.cjkKOlv2.bin --runtime:v4</flags>
       <output>mscorlib.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_x/mscorlib.dll</library_output>
     </project>
     <project dir="class/corlib" library="corlib-tests-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618,1635 -d:INSIDE_CORLIB,MONO_CULTURE_DATA -d:LIBC -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -debug -optimize -r:./../../class/lib/net_4_x/mscorlib.dll -debug -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS -resource:Test/resources/Resources.resources</flags>
+      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618,1635 -d:INSIDE_CORLIB,MONO_CULTURE_DATA -d:LIBC -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -debug -optimize -r:./../../class/lib/net_4_x/mscorlib.dll -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -debug -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS -resource:Test/resources/Resources.resources</flags>
       <output>corlib_test_net_4_x.dll</output>
       <built_sources></built_sources>
       <library_output>corlib_test_net_4_x.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/net_4_x/secxml/System.dll -r:System.Configuration.dll -d:CONFIGURATION_DEP -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/net_4_x/secxml/System.dll -d:MONO_SECURITY_ALIAS -d:MONO_X509_ALIAS -r:System.Configuration.dll -d:CONFIGURATION_DEP -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_x/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -lib:./../../class/lib/net_4_x/bare -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -lib:./../../class/lib/net_4_x/bare -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -r:System.Configuration -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME</flags>
       <output>System_test_net_4_x.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_x.dll</library_output>
     </project>
     <project dir="class/System" library="System-bare-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_x/bare/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -lib:./../../class/lib/net_4_x/bare -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -lib:./../../class/lib/net_4_x/bare -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -r:System.Configuration -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME</flags>
       <output>System_test_net_4_x.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_x.dll</library_output>
     </project>
     <project dir="class/System" library="System-secxml-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -lib:./../../class/lib/net_4_x/bare -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/net_4_x/bare/System.dll -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
+      <flags>/codepage:65001 -lib:./../../class/lib/net_4_x/bare -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -r:PrebuiltSystem=./../../class/lib/net_4_x/bare/System.dll -d:MONO_SECURITY_ALIAS -d:MONO_X509_ALIAS -r:System.Xml -r:MonoSecurity=Mono.Security</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_x/secxml/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -lib:./../../class/lib/net_4_x/bare -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -lib:./../../class/lib/net_4_x/bare -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -r:System.Configuration -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME</flags>
       <output>System_test_net_4_x.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_x.dll</library_output>
       <profile>net_4_x</profile>
       <response>resgen.exe.sources</response>
     </project>
+    <project dir="class/System.IO.Compression" library="System.IO.Compression-net_4_x">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig /unsafe -r:System -r:System.Core</flags>
+      <output>System.IO.Compression.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_x/System.IO.Compression.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_x</profile>
+      <response>System.IO.Compression.dll.sources</response>
+    </project>
+    <project dir="class/System.IO.Compression" library="System.IO.Compression-tests-net_4_x">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/System.IO.Compression.dll /r:System /r:System.Core</flags>
+      <output>System.IO.Compression_test_net_4_x.dll</output>
+      <built_sources></built_sources>
+      <library_output>System.IO.Compression_test_net_4_x.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_x</profile>
+      <response>./../../build/deps/System.IO.Compression_test_net_4_x.dll.response</response>
+    </project>
+    <project dir="class/System.IO.Compression.FileSystem" library="System.IO.Compression.FileSystem-net_4_x">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -r:System -r:System.IO.Compression</flags>
+      <output>System.IO.Compression.FileSystem.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_x/System.IO.Compression.FileSystem.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_x</profile>
+      <response>System.IO.Compression.FileSystem.dll.sources</response>
+    </project>
+    <project dir="class/System.IO.Compression.FileSystem" library="System.IO.Compression.FileSystem-tests-net_4_x">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/System.IO.Compression.FileSystem.dll /r:System /r:System.Core /r:System.IO.Compression.dll</flags>
+      <output>System.IO.Compression.FileSystem_test_net_4_x.dll</output>
+      <built_sources></built_sources>
+      <library_output>System.IO.Compression.FileSystem_test_net_4_x.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_x</profile>
+      <response>./../../build/deps/System.IO.Compression.FileSystem_test_net_4_x.dll.response</response>
+    </project>
     <project dir="class/System.Drawing" library="System.Drawing-net_4_x">
       <boot>false</boot>
       <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig /unsafe /r:mscorlib.dll -resource:Assembly/Mono.ico,Mono.ico -resource:Assembly/Information.ico,Information.ico -resource:Assembly/Error.ico,Error.ico -resource:Assembly/Warning.ico,Warning.ico -resource:Assembly/Question.ico,Question.ico -resource:Assembly/Shield.ico,Shield.ico -r:System</flags>
     </project>
     <project dir="class/System.Web.Services" library="System.Web.Services-tests-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -lib:./../../class/lib/net_4_x/plainweb -lib:./../../class/lib/net_4_x/plaindesign -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/System.Web.Services.dll -nowarn:168,169,219,414,612,649 -d:MONO_BROKEN_CONFIGURATION_DLL -resource:System.Web.Services.Description/wsdl-1.1.xsd,wsdl-1.1.xsd -resource:System.Web.Services.Description/wsdl-1.1-soap.xsd,wsdl-1.1-soap.xsd -resource:System.Web.Services.Description/web-reference.xsd,web-reference.xsd -r:System -r:System.EnterpriseServices -r:System.Xml -r:System.Data -r:System.Web -r:System.Design -r:System.DirectoryServices -r:System.Configuration -nowarn:618</flags>
+      <flags>/codepage:65001 -lib:./../../class/lib/net_4_x/plainweb -lib:./../../class/lib/net_4_x/plaindesign -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/System.Web.Services.dll -nowarn:168,169,219,414,612,649 -d:MONO_BROKEN_CONFIGURATION_DLL -resource:System.Web.Services.Description/wsdl-1.1.xsd,wsdl-1.1.xsd -resource:System.Web.Services.Description/wsdl-1.1-soap.xsd,wsdl-1.1-soap.xsd -resource:System.Web.Services.Description/web-reference.xsd,web-reference.xsd -r:System -r:System.EnterpriseServices -r:System.Xml -r:System.Data -r:System.Web -r:System.Design -r:System.DirectoryServices -r:System.Configuration -nowarn:618 -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME</flags>
       <output>System.Web.Services_test_net_4_x.dll</output>
       <built_sources></built_sources>
       <library_output>System.Web.Services_test_net_4_x.dll</library_output>
     </project>
     <project dir="class/Mono.CSharp" library="Mono.CSharp-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -r:System.Core -r:System.Xml -r:System</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -d:MONO_FEATURE_THREAD_ABORT -r:System.Core -r:System.Xml -r:System</flags>
       <output>Mono.CSharp.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_x/Mono.CSharp.dll</library_output>
     </project>
     <project dir="class/System.Threading.Tasks.Dataflow" library="System.Threading.Tasks.Dataflow-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -r:System.Core -r:System -r:mscorlib.dll</flags>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -r:System.Core -r:System -r:mscorlib.dll -d:CONCURRENT_COLLECTIONS</flags>
       <output>System.Threading.Tasks.Dataflow.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_x/System.Threading.Tasks.Dataflow.dll</library_output>
       <profile>net_4_x</profile>
       <response>System.ComponentModel.Composition.dll.sources</response>
     </project>
-    <project dir="class/System.IO.Compression" library="System.IO.Compression-net_4_x">
-      <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig /unsafe -r:System -r:System.Core</flags>
-      <output>System.IO.Compression.dll</output>
-      <built_sources></built_sources>
-      <library_output>./../../class/lib/net_4_x/System.IO.Compression.dll</library_output>
-      <fx_version>4.5</fx_version>
-      <profile>net_4_x</profile>
-      <response>System.IO.Compression.dll.sources</response>
-    </project>
-    <project dir="class/System.IO.Compression" library="System.IO.Compression-tests-net_4_x">
+    <project dir="class/System.Windows" library="System.Windows-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/System.IO.Compression.dll /r:System /r:System.Core</flags>
-      <output>System.IO.Compression_test_net_4_x.dll</output>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -optimize /noconfig -r:System</flags>
+      <output>System.Windows.dll</output>
       <built_sources></built_sources>
-      <library_output>System.IO.Compression_test_net_4_x.dll</library_output>
+      <library_output>./../../class/lib/net_4_x/System.Windows.dll</library_output>
       <fx_version>4.5</fx_version>
       <profile>net_4_x</profile>
-      <response>./../../build/deps/System.IO.Compression_test_net_4_x.dll.response</response>
+      <response>System.Windows.dll.sources</response>
     </project>
-    <project dir="class/System.IO.Compression.FileSystem" library="System.IO.Compression.FileSystem-net_4_x">
+    <project dir="class/System.Xml.Serialization" library="System.Xml.Serialization-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -r:System -r:System.IO.Compression</flags>
-      <output>System.IO.Compression.FileSystem.dll</output>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -optimize /noconfig -r:System.Xml -r:System.ServiceModel</flags>
+      <output>System.Xml.Serialization.dll</output>
       <built_sources></built_sources>
-      <library_output>./../../class/lib/net_4_x/System.IO.Compression.FileSystem.dll</library_output>
+      <library_output>./../../class/lib/net_4_x/System.Xml.Serialization.dll</library_output>
       <fx_version>4.5</fx_version>
       <profile>net_4_x</profile>
-      <response>System.IO.Compression.FileSystem.dll.sources</response>
+      <response>System.Xml.Serialization.dll.sources</response>
     </project>
-    <project dir="class/System.IO.Compression.FileSystem" library="System.IO.Compression.FileSystem-tests-net_4_x">
+    <project dir="class/Mono.Security.Providers.DotNet" library="Mono.Security.Providers.DotNet-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/System.IO.Compression.FileSystem.dll /r:System /r:System.Core /r:System.IO.Compression.dll</flags>
-      <output>System.IO.Compression.FileSystem_test_net_4_x.dll</output>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -unsafe -nowarn:1030 -keyfile:../mono.pub -delaysign -r:System -r:Mono.Security</flags>
+      <output>Mono.Security.Providers.DotNet.dll</output>
       <built_sources></built_sources>
-      <library_output>System.IO.Compression.FileSystem_test_net_4_x.dll</library_output>
+      <library_output>./../../class/lib/net_4_x/Mono.Security.Providers.DotNet.dll</library_output>
       <fx_version>4.5</fx_version>
       <profile>net_4_x</profile>
-      <response>./../../build/deps/System.IO.Compression.FileSystem_test_net_4_x.dll.response</response>
+      <response>Mono.Security.Providers.DotNet.dll.sources</response>
     </project>
-    <project dir="class/System.Windows" library="System.Windows-net_4_x">
+    <project dir="class/Mono.Security.Providers.OldTls" library="Mono.Security.Providers.OldTls-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -optimize /noconfig -r:System</flags>
-      <output>System.Windows.dll</output>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -unsafe -nowarn:1030 -keyfile:../mono.pub -delaysign -d:SECURITY_DEP -r:System -r:Mono.Security</flags>
+      <output>Mono.Security.Providers.OldTls.dll</output>
       <built_sources></built_sources>
-      <library_output>./../../class/lib/net_4_x/System.Windows.dll</library_output>
+      <library_output>./../../class/lib/net_4_x/Mono.Security.Providers.OldTls.dll</library_output>
       <fx_version>4.5</fx_version>
       <profile>net_4_x</profile>
-      <response>System.Windows.dll.sources</response>
+      <response>Mono.Security.Providers.OldTls.dll.sources</response>
     </project>
-    <project dir="class/System.Xml.Serialization" library="System.Xml.Serialization-net_4_x">
+    <project dir="class/Mono.Security.Providers.NewSystemSource" library="Mono.Security.Providers.NewSystemSource-net_4_x">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -optimize /noconfig -r:System.Xml -r:System.ServiceModel</flags>
-      <output>System.Xml.Serialization.dll</output>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig -d:SECURITY_DEP -d:MONO_SECURITY_ALIAS -r:MonoSecurity=Mono.Security -unsafe -nowarn:1030 -keyfile:../mono.pub -delaysign -d:MONO -d:FEATURE_PAL -d:MONO_FEATURE_NEW_TLS -d:MONO_FEATURE_NEW_SYSTEM_SOURCE -d:DISABLE_CAS_USE -r:System</flags>
+      <output>Mono.Security.Providers.NewSystemSource.dll</output>
       <built_sources></built_sources>
-      <library_output>./../../class/lib/net_4_x/System.Xml.Serialization.dll</library_output>
+      <library_output>./../../class/lib/net_4_x/Mono.Security.Providers.NewSystemSource.dll</library_output>
       <fx_version>4.5</fx_version>
       <profile>net_4_x</profile>
-      <response>System.Xml.Serialization.dll.sources</response>
+      <response>Mono.Security.Providers.NewSystemSource.dll.sources</response>
     </project>
     <project dir="class/System.DirectoryServices.Protocols" library="System.DirectoryServices.Protocols-net_4_x">
       <boot>false</boot>
       <profile>net_4_x</profile>
       <response>System.Globalization.Calendars.dll.sources</response>
     </project>
-    <project dir="class/Facades/System.IO.Compression" library="Facades_System.IO.Compression-net_4_x">
-      <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_x -r:mscorlib.dll -optimize /noconfig /delaysign /keyfile:../../msfinal.pub /nowarn:1616,1699 /r:mscorlib /r:System.IO.Compression.dll -r:System</flags>
-      <output>System.IO.Compression.dll</output>
-      <built_sources></built_sources>
-      <library_output>./../../../class/lib/net_4_x/Facades/System.IO.Compression.dll</library_output>
-      <fx_version>4.5</fx_version>
-      <profile>net_4_x</profile>
-      <response>System.IO.Compression.dll.sources</response>
-    </project>
     <project dir="class/Facades/System.IO.Compression.ZipFile" library="Facades_System.IO.Compression.ZipFile-net_4_x">
       <boot>false</boot>
       <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_x -r:mscorlib.dll -optimize /noconfig /delaysign /keyfile:../../msfinal.pub /nowarn:1616,1699 /r:mscorlib /r:System.IO.Compression.FileSystem.dll -r:System</flags>
       <profile>net_4_x</profile>
       <response>mono-symbolicate.exe.sources</response>
     </project>
+    <project dir="tools/linker-analyzer" library="linkeranalyzer-net_4_x">
+      <boot></boot>
+      <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_x -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>linkeranalyzer.exe</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_x/linkeranalyzer.exe</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_x</profile>
+      <response>linkeranalyzer.exe.sources</response>
+    </project>
     <project dir="class/Microsoft.Build.Framework" library="Microsoft.Build.Framework-xbuild_12">
       <boot>false</boot>
       <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -lib:./../../class/lib/xbuild_12 -r:mscorlib.dll -debug -d:XBUILD_12 -d:MONO -d:DISABLE_CAS_USE -lib:./../../class/lib/net_4_x -optimize /noconfig /r:mscorlib.dll /r:System.dll -r:System</flags>
index f67a854569327dcbd8fb0d344ea2ed97de89c1f3..336778204f2a5dc3507a880bef2062e5bd669801 100755 (executable)
@@ -4,6 +4,7 @@ if exist config.h if not exist cygconfig.h copy config.h cygconfig.h
 if exist eglib\config.h if not exist eglib\cygconfig.h copy eglib\config.h eglib\cygconfig.h
 copy winconfig.h config.h
 copy eglib\winconfig.h eglib\config.h
+powershell -Command "(Get-Content config.h) -replace '#MONO_VERSION#', (Select-String -path configure.ac -pattern 'AC_INIT\(mono, \[(.*)\]').Matches[0].Groups[1].Value | Set-Content config.h"
 goto end
 :error
 echo fatal error: the VSDepenancies directory was not found in the "mono" directory
index f2e02e28cbc972cb0b2a5572971a885ac23bbeaa..3e9251af29e941e13deebecaa275ca3e87c50f2c 100644 (file)
@@ -41,11 +41,11 @@ build_profiles += monotouch monotouch_runtime
 endif
 
 if INSTALL_MONOTOUCH_WATCH
-build_profiles += monotouch_watch
+build_profiles += monotouch_watch monotouch_watch_runtime
 endif
 
 if INSTALL_MONOTOUCH_TV
-build_profiles += monotouch_tv
+build_profiles += monotouch_tv monotouch_tv_runtime
 endif
 
 if INSTALL_XAMMAC
index 0ec4811fb5d03657a1bd71f85d6dad373891235f..7c2822f4b996ef75426ccfdb805e0f56e6a5b8d7 100644 (file)
@@ -2,6 +2,7 @@
 r='@mono_build_root@'
 MONO_CFG_DIR='@mono_cfg_dir@'
 PATH="$r/runtime/_tmpinst/bin:$PATH"
+MONO_EXECUTABLE=${MONO_EXECUTABLE:-"$r/@mono_runtime@"}
 export MONO_CFG_DIR PATH
 if [ -n "@nacl_self_host@" ]; then
   case "$@" in
@@ -12,4 +13,4 @@ if [ -n "@nacl_self_host@" ]; then
     */mcs.exe* | */gacutil.exe* | */mdoc.exe* ) exec /usr/local/bin/mono "$@";;
   esac
 fi
-exec "$r/libtool" --mode=execute "$r/@mono_runtime@" --config "@mono_cfg_dir@/mono/config" "$@"
+exec "$r/libtool" --mode=execute "${MONO_EXECUTABLE}" --config "@mono_cfg_dir@/mono/config" "$@"
diff --git a/samples/embed/testi.c b/samples/embed/testi.c
deleted file mode 100644 (file)
index a1ea82b..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#include <mono/interpreter/embed.h>
-#include <mono/metadata/environment.h>
-
-/*
- * Very simple mint embedding example.
- * Compile with: 
- *     gcc -o testi testi.c `pkg-config --cflags --libs mint` -lm
- *     mcs test.cs
- * Run with:
- *     ./testi test.exe
- */
-
-static MonoString*
-gimme () {
-       return mono_string_new (mono_domain_get (), "All your monos are belong to us!");
-}
-
-typedef struct
-{
-       MonoDomain *domain;
-       const char *file;
-       int argc;
-       char **argv;
-} MainThreadArgs;
-
-static void main_thread_handler (gpointer user_data)
-{
-       MainThreadArgs *main_args=(MainThreadArgs *)user_data;
-       MonoAssembly *assembly;
-
-       assembly = mono_domain_assembly_open (main_args->domain,
-                                             main_args->file);
-       if (!assembly)
-               exit (2);
-       /*
-        * mono_jit_exec() will run the Main() method in the assembly.
-        * The return value needs to be looked up from
-        * System.Environment.ExitCode.
-        */
-       mono_interp_exec (main_args->domain, assembly, main_args->argc,
-                      main_args->argv);
-}
-
-
-int 
-main(int argc, char* argv[]) {
-       MonoDomain *domain;
-       const char *file;
-       int retval;
-       MainThreadArgs main_args;
-       
-       if (argc < 2){
-               fprintf (stderr, "Please provide an assembly to load\n");
-               return 1;
-       }
-       file = argv [1];
-       /*
-        * mono_jit_init() creates a domain: each assembly is
-        * loaded and run in a MonoDomain.
-        */
-       domain = mono_interp_init (file);
-       /*
-        * We add our special internal call, so that C# code
-        * can call us back.
-        */
-       mono_add_internal_call ("MonoEmbed::gimme", gimme);
-
-       main_args.domain=domain;
-       main_args.file=file;
-       main_args.argc=argc-1;
-       main_args.argv=argv+1;
-       
-       mono_runtime_exec_managed_code (domain, main_thread_handler,
-                                       &main_args);
-
-       retval=mono_environment_exitcode_get ();
-       
-       mono_interp_cleanup (domain);
-       return retval;
-}
-
diff --git a/scripts/babysitter b/scripts/babysitter
new file mode 100755 (executable)
index 0000000..f8b5a6c
--- /dev/null
@@ -0,0 +1,409 @@
+#!/usr/bin/env python
+
+# Mimics GNU timeout, but does some fancy tracking based on custom features in mono nunit24.
+
+import argparse
+import subprocess
+import re
+import signal
+import time
+import sys
+import os.path
+import copy
+import tempfile
+import calendar
+import json
+
+### Constants
+
+# Here is how the communication with nunit works. It has to work with two constraints:
+# - We don't invoke nunit directly. We invoke some Makefile which invokes some other Makefile
+#   and at some point down the line someone calls nunit.
+# - nunit has to be able to report back to us even if (especially if) it terminates improperly.
+# To deal with all this, communication babysitter->nunit is done by environment variables,
+# and communication nunit->babysitter is done by leaving behind files in known locations.
+
+# Filenames
+
+CURRENT_TEST_FILE = "babysitter_report_current_test_file.txt"
+RAN_TEST_FILE     = "babysitter_report_ran_test_file.txt"
+FAILED_TEST_FILE  = "babysitter_report_failed_test_file.txt"
+LOGGING_FILE      = "babysitter_report.json_lines"
+
+# Environment keys
+
+# Keys used for Babysitter<->Nunit IPC
+CURRENT_TEST_KEY  = 'MONO_BABYSITTER_NUNIT_CURRENT_TEST_FILE' # Tell nunit where to leave files
+RAN_TEST_KEY      = 'MONO_BABYSITTER_NUNIT_RAN_TEST_FILE'
+FAILED_TEST_KEY   = 'MONO_BABYSITTER_NUNIT_FAILED_TEST_FILE'
+RUN_KEY           = 'MONO_BABYSITTER_NUNIT_RUN_TEST' # Semicolon-separated list of test names
+RUN_MODE_KEY      = 'MONO_BABYSITTER_NUNIT_RUN_MODE' # Equal to either RUN or AFTER
+
+# Keys used for script configuration (see --help text)
+LOG_FILE_KEY      = 'MONO_BABYSITTER_LOG_FILE'       # Path
+RETRY_KEY         = 'MONO_BABYSITTER_RETRY'          # Equal to an integer
+VERBOSE_KEY       = 'MONO_BABYSITTER_VERBOSE'        # "Undocumented"-- used for debugging babysitter
+
+# JSON keys
+
+DATE_JSON       = 'date'          # POSIX timestamp of test suite run
+INVOKE_JSON     = 'invocation'
+COUNT_JSON      = 'iteration'        # How many times was command executed?
+LIMIT_JSON      = 'failure_max'
+SUPPORT_JSON    = 'babysitter_protocol' # Was the test suite running with a babysitter-aware nunit?
+FINAL_CODE_JSON = 'final_code'
+TESTS_JSON      = 'tests'         # Holds dictionary of (test case name)->(dict with TEST_ keys below)
+TEST_FAILURES         = 'normal_failures'
+TEST_CRASH_FAILURES   = 'crash_failures'
+TEST_TIMEOUT_FAILURES = 'timeout_failures'
+
+### Interpret arguments
+
+scriptname = sys.argv[0]
+
+# This is very silly: This program needs to switch from argparse to manual parsing
+# after the second positional argument, but argparse doesn't let you do this.
+# I work around this with a custom subclass which can selectively swallow errors:
+class Hesitate(Exception):
+       pass
+class HesitantParser(argparse.ArgumentParser):
+       def __init__(s, *args, **kwargs):
+               s.hesitating = True  # Errors will be swallowed until this is set false
+               argparse.ArgumentParser.__init__(s, *args, **kwargs)
+       def error(s, *args, **kwargs):
+               if s.hesitating:
+                       raise Hesitate() # Bail out before errors are printed.
+               argparse.ArgumentParser.error(s, *args, **kwargs)
+
+# Define args
+argparser = HesitantParser(description="""\
+Run a test suite with a timeout.\n
+Durations are floating point numbers followed by an optional unit:\n
+'s' for seconds (the default)
+'m' for minutes
+'h' for hours
+'d' for days\n
+supported environment variables:
+  %s: File to write logs to (as line-delimited JSON)
+  %s: If set to a number, failed test cases will be rerun this many times (NUnit test suites only)""" %
+               (LOG_FILE_KEY, RETRY_KEY),
+       formatter_class=argparse.RawTextHelpFormatter)
+argparser.add_argument('-s', '--signal', dest='signal', metavar='signal', default='TERM',
+       help="Send this signal to the command on timeout, instead of TERM.")
+argparser.add_argument('-k', '--kill-after-duration', dest='kill_after', metavar='duration',
+       help="If process continues running after signal, send KILL after this duration.")
+argparser.add_argument('duration',
+       help="Time to run before sending signal.")
+argparser.add_argument('command', nargs="+", help="Command+args to run.")
+
+# Repeatedly parse the given args until we find the shortest prefix for which parsing succeeds.
+argc = len(sys.argv)
+extra_args = []
+for limit in range(1,argc+1):
+       try:
+               if limit == argc: # On the final pass, parse for real
+                       argparser.hesitating = False
+               args = argparser.parse_args(sys.argv[1:limit])
+               # If we're still here, parse_args succeeded.
+               # The final parsed arg is the command; remaining argv items are its args.
+               extra_args = sys.argv[limit:]
+               break
+       except Hesitate: # Before the final pass, if parse_args fails, skip
+               pass
+
+argparser.hesitating = False # Just act like a normal argparser from here
+
+durationre = re.compile(r'(\d+)([smhd]?)')
+def parse_duration(duration): # Accept units
+       match = durationre.match(duration)
+       if not match:
+               argparser.error("Could not understand duration %s" % duration)
+       time, units = match.group(1), match.group(2)
+       time = int(time)
+       if units == 'm':
+               time *= 60
+       elif units == 'h':
+               time *= 60*60
+       elif units == 'd':
+               time *= 60*60*24
+       return time
+
+def parse_signal(sig):        # Accept names
+       if sig.isdigit():
+               return int(sig)
+       for k,v in signal.__dict__.iteritems():
+               if k == ("SIG%s" % sig):
+                       return v
+       argparser.error("Could not understand signal name %s" % sig)
+
+# Final interpretation of arguments
+duration = parse_duration(args.duration)
+kill_after = parse_duration(args.kill_after) if args.kill_after is not None else None
+timeout_signal = parse_signal(args.signal)
+command = args.command + extra_args
+
+# Process environment
+global_env = copy.deepcopy( os.environ )
+
+verbose = VERBOSE_KEY in global_env
+logging = LOG_FILE_KEY in global_env
+logfile = global_env[LOG_FILE_KEY] if logging else None
+crash_resuming = True # TODO: Consider exposing this option, or adding a retry_on_crash option.
+failmax = int(global_env[RETRY_KEY]) if RETRY_KEY in global_env else 0
+babysitting = True # If false, babysitter becomes a timeout clone with no env manipulation or anything.
+if babysitting:
+       babysitter_dir = tempfile.mkdtemp()
+       global_env[CURRENT_TEST_KEY] = os.path.join(babysitter_dir, CURRENT_TEST_FILE)
+       global_env[RAN_TEST_KEY]     = os.path.join(babysitter_dir, RAN_TEST_FILE)
+       global_env[FAILED_TEST_KEY]  = os.path.join(babysitter_dir, FAILED_TEST_FILE)
+
+have_unix_process_groups = 'killpg' in os.__dict__
+have_windows_process_groups = 'CREATE_NEW_PROCESS_GROUP' in subprocess.__dict__
+
+### Timeout implementation
+
+def wait(proc, duration):
+       # TODO: If we detect Python 3.3, Popen objects have a wait(timeout) method we can use
+       start = time.time()
+       while True:
+               code = proc.poll()
+               if code is not None:
+                       return code
+               if time.time()-start > duration:
+                       return None
+               time.sleep(0.05)
+
+# Popen and send_signal can't be called in their basic forms because we want to
+# send signals to all children, not just to the immediately spawned process.
+# Unfortunately the way to do this varies by operating system.
+def popen(*args, **kwargs):
+       if have_unix_process_groups: # Call function on spawn to become process group leader
+               kwargs['preexec_fn'] = os.setsid
+       elif have_windows_process_groups: # Set magic flag for Windows process groups
+               kwargs['creationflags'] = subprocess.CREATE_NEW_PROCESS_GROUP
+       return subprocess.Popen(*args, **kwargs)
+
+def send_signal(proc, sig):
+       if have_unix_process_groups: # UNIX
+               # For compatibility with GNU timeout, pre-send the signal to just the monitored process
+               os.kill(proc.pid, sig)
+               # Send signal to entire group
+               os.killpg(proc.pid, sig)
+               # For compatibility with GNU Timeout, send a SIGCONT after the signal
+               # (so delivery has a chance to occur even for stopped processes)
+               if sig != signal.SIGKILL and sig != signal.SIGCONT:
+                       os.kill(proc.pid, signal.SIGCONT)
+       elif have_windows_process_groups: # Windows with Python 2.7 or better
+               os.kill(proc.pid, sig) # Becuase CREATE_NEW_PROCESS_GROUP, will go to entire group
+       else: # Windows with Python 2.6-- CREATE_NEW_PROCESS_GROUP not supported
+               proc.send_signal(sig) # No way to contact group, just kill process
+
+### Utility functions
+
+def attemptDelete(path):
+       try:
+               os.remove(path)
+       except OSError:
+               pass
+
+def attemptLines(path):
+       try:
+               with open(path) as f:
+                       return map(lambda s: s.strip('\r\n'), f.readlines())
+       except (OSError, IOError):
+               return []
+
+def attemptFirstLine(path):
+       lines = attemptLines(path)
+       if lines:
+               return lines[0]
+       return None
+
+def posixtime(): # Amazingly, time.time() does not guarantee an epoch in the docs. However this does:
+       return calendar.timegm(time.gmtime())
+
+failcount = {}
+def failure_may_retry(test):
+       if test not in failcount:
+               failcount[test] = 0
+       failcount[test] += 1
+       return failcount[test] < failmax
+
+def verbose_print(arg):
+       if (verbose):
+               print(arg)
+
+def failure_annotate(test):
+       return "%s (failure #%d of %d allowed)" % (test, failcount[test], failmax)
+
+def pluralize(lst):
+       return "s" if len(lst) > 1 else ""
+
+### Run command
+
+def run(): # Returns exit code
+       resume_after = []
+       retry_these = []
+       ever_completed = False
+       died_politely = False
+       proc = None
+       code = None
+
+       # Set up logging
+       log = {DATE_JSON: posixtime(), COUNT_JSON:0, LIMIT_JSON:failmax, SUPPORT_JSON:False,
+               INVOKE_JSON: " ".join(command)}
+
+       def log_value(key, set=None, add=None, target=log): # Call to add toplevel value to log
+               if add is not None:
+                       if key not in target:
+                               target[key] = 0
+                       target[key] += add
+               else:
+                       target[key] = set
+
+       def log_test(testname, key, set=None, add=None):   # Call to add test-case-level value to log
+               if TESTS_JSON not in log:
+                       log[TESTS_JSON] = {}
+               if testname not in log[TESTS_JSON]:
+                       log[TESTS_JSON][testname] = {}
+               log_value(key, set=set, add=add, target=log[TESTS_JSON][testname])
+
+       # Ready to run tests
+       try:
+               while True:
+                       env = copy.copy(global_env)
+                       if ever_completed:
+                               retry_next = []
+                       else: # Persist reported failures list until first non-crash run
+                               retry_next = retry_these
+
+                       log_value(COUNT_JSON, add=1)
+
+                       # Prepare environment/filesystem
+                       if babysitting:
+                               for key in [CURRENT_TEST_KEY, RAN_TEST_KEY, FAILED_TEST_KEY]:
+                                       attemptDelete(env[key])
+                               if resume_after:
+                                       env[RUN_KEY] = ";".join(resume_after)
+                                       env[RUN_MODE_KEY] = "EXCLUDE"
+                               elif retry_these:
+                                       env[RUN_KEY] = ";".join(retry_these)
+                                       env[RUN_MODE_KEY] = "RUN"
+
+                       # Run test suite
+                       try:
+                               proc = popen(command, env=env)
+                       except OSError:
+                               died_politely = True
+                               sys.stderr.write("%s: Could not execute command `%s`\n" % (scriptname, command[0]))
+                               sys.exit(127)
+
+                       code = wait(proc, duration)
+                       timed_out = code is None
+                       if timed_out:                  # Initial timeout
+                               send_signal(proc, timeout_signal)
+                               if kill_after is not None: # Kill-after timeout
+                                       code = wait(proc, kill_after)
+                                       if code is None:
+                                               send_signal(proc, signal.SIGKILL)
+                               code = proc.wait()         # Waits forever
+                               sys.stderr.write("%s: Command `%s` timed out\n" % (scriptname, command[0]))
+                       died_politely = True
+
+                       # The test suite has now run, and what happens next varies:
+                       # 1. The suite either completed fully without failures, or timed out: Just quit.
+                       # 2. The suite crashed (halted without completing):
+                       #   Remember any failures for later and rerun, using a blacklist of testcases we have completed.
+                       # 3. The suite completed, but there were failures reported:
+                       #   Rerun, using a whitelist of only reported-failed testcases.
+                       # 4. The suite crashed partway through a run with a whitelist:
+                       #   Rerun, using a whitelist consisting of the previous whitelist minus successful testcases.
+
+                       crashed_at = attemptFirstLine(env[CURRENT_TEST_KEY])
+                       failed_tests = attemptLines(env[FAILED_TEST_KEY])
+                       ran_tests = attemptLines(env[RAN_TEST_KEY])
+                       bailout = False
+
+                       if crashed_at or failed_tests or ran_tests: # Test suite follows the babysitter protocol
+                               log_value(SUPPORT_JSON, True)
+
+                       if not crashed_at and not ever_completed:  # The resume_after whitelist is only
+                               resume_after = []                      # used before the first noncrashing run
+                               ever_completed = True
+
+                       if timed_out:       # Currently no retries after timeout
+                               bailout = True
+                               code = 124      # See GNU timeout manpage
+
+                       if code or crashed_at: # Process failures
+                               # Handle crash failures
+                               if crashed_at and not timed_out:
+                                       log_test(crashed_at, TEST_CRASH_FAILURES, add=1)
+                                       if not crash_resuming:
+                                               bailout = True
+
+                                       if failure_may_retry(crashed_at):
+                                               if ever_completed:           # Rerun with whitelist next time
+                                                       for test in retry_these: # Prepopulate with last whitelist minus run testcases
+                                                               if test == crashed_at or test not in ran_tests: # (plus crashed testcase)
+                                                                       retry_next.append(test)
+                                               else:                            # Rerun with blacklist next time
+                                                       for test in ran_tests:       # Add testcases we just ran to blacklist
+                                                               if test != crashed_at:   # (except for the crashed testcase)
+                                                                       resume_after.append(test)
+                                       else:
+                                               bailout = True
+
+                               # Handle reported failures
+                               for test in failed_tests:
+                                       log_test(test, TEST_FAILURES, add=1)
+                                       if failure_may_retry(test):
+                                               retry_next.append(test)
+                                       else:
+                                               bailout = True
+
+                               # Report human-readable failures for stdout log.
+                               message = "%s:" % (scriptname)
+                               if timed_out:
+                                       message += " Saw timeout in test case %s (never allowed)." % (crashed_at)
+                               elif crashed_at:
+                                       message += " Saw crash in test case %s." % (failure_annotate(crashed_at))
+                               if failed_tests:
+                                       message += " Saw test failure in test case%s %s." % (pluralize(failed_tests), "; ".join(map(failure_annotate, failed_tests)))
+                               if not (timed_out or crashed_at or failed_tests):
+                                       message += " Test suite terminated with code %d, " % (code)
+                                       if log[SUPPORT_JSON]:
+                                               message += "but failure did not occur during a test case. Halting."
+                                       else:
+                                               message += "and suite cannot report test case data. Halting."
+                               elif bailout:
+                                       message += " Will halt testing."
+                               print(message)
+
+                       if bailout or not (resume_after or retry_next): # If not retrying
+                               return code
+
+                       # If we got here, a retry is occurring
+                       retry_these = retry_next
+
+                       # Report human-readable retry notice for stdout log.
+                       message = "%s: Will rerun test suite" % (scriptname)
+                       if log[COUNT_JSON] > 1:
+                               message += " (iteration #%d)" % (log[COUNT_JSON])
+                       if resume_after:
+                               message += ", resuming at crashed testcase %s." % (crashed_at)
+                       else:
+                               message += ", running previously failed testcase%s: %s." % (pluralize(retry_these), "; ".join(retry_these))
+                       print(message)
+       finally:
+               # Emergency: Ensure command does not outlive this script
+               if proc is not None and not died_politely:
+                       send_signal(proc, signal.SIGKILL)
+
+               # Write out logs
+               log_value(FINAL_CODE_JSON, "EXCEPTION" if code is None else code)
+               if logging:
+                       with open(logfile, "a") as f:
+                               f.write(json.dumps(log) + os.linesep)
+
+sys.exit( run() )
index bbaac3d85d83fb77666c534ed51697a713a5f1f7..e615aef425d006ff1b3657a161234b3dd45638d2 100644 (file)
@@ -1,2 +1,2 @@
 #!/bin/sh
-exec @bindir@/mono $MONO_OPTIONS @mono_instdir@/xbuild/12.0/bin/xbuild.exe "$@"
+exec @bindir@/mono $MONO_OPTIONS @mono_instdir@/xbuild/14.0/bin/xbuild.exe "$@"
index 34cdb68ab4da8bab5ff81cddbf5c53e4e976b712..9f89fcde93b94c6326a863c767ea2ff2b4b877c7 100644 (file)
@@ -2018,8 +2018,9 @@ struct Mono_Unix_UnixSignal_SignalInfo {
        int   count;
        int   read_fd;
        int   write_fd;
-       int   have_handler;
        int   pipecnt;
+       int   pipelock;
+       int   have_handler;
        void* handler;
 };
 
@@ -2049,6 +2050,7 @@ int Mono_Posix_Stdlib_clearerr (void* stream);
 void* Mono_Posix_Stdlib_CreateFilePosition (void);
 int Mono_Posix_Stdlib_DumpFilePosition (char* buf, void* handle, int len);
 int Mono_Posix_Stdlib_EOF (void);
+const char* Mono_Unix_VersionString (void);
 int Mono_Posix_Stdlib_EXIT_FAILURE (void);
 int Mono_Posix_Stdlib_EXIT_SUCCESS (void);
 int Mono_Posix_Stdlib_fgetpos (void* stream, void* pos);
index 6adf5463878ef2693b8d3ecc101ea5809b88cb28..993e2e216618b3c0aa0a9773707f48eef836873d 100644 (file)
@@ -107,23 +107,28 @@ int Mono_Posix_FromRealTimeSignum (int offset, int *r)
 
 #ifndef HOST_WIN32
 
+// Atomicity rules: Fields of signal_info read or written by the signal handler
+// (see UnixSignal.cs) should be read and written using atomic functions.
+// (For simplicity, we're protecting some things we don't strictly need to.)
+
+// Because we are in MonoPosixHelper, we are banned from linking mono.
+// We can still use atomic.h because that's all inline functions--
+// unless WAPI_NO_ATOMIC_ASM is defined, in which case atomic.h calls linked functions.
 #ifndef WAPI_NO_ATOMIC_ASM
        #define mph_int_get(p)     InterlockedExchangeAdd ((p), 0)
        #define mph_int_inc(p)     InterlockedIncrement ((p))
        #define mph_int_dec_test(p)     (InterlockedDecrement ((p)) == 0)
-       #define mph_int_set(p,o,n) InterlockedExchange ((p), (n))
+       #define mph_int_set(p,n) InterlockedExchange ((p), (n))
+       // Pointer, original, new
+       #define mph_int_test_and_set(p,o,n) (o == InterlockedCompareExchange ((p), (n), (o)))
 #elif GLIB_CHECK_VERSION(2,4,0)
        #define mph_int_get(p) g_atomic_int_get ((p))
        #define mph_int_inc(p) do {g_atomic_int_inc ((p));} while (0)
        #define mph_int_dec_test(p) g_atomic_int_dec_and_test ((p))
-       #define mph_int_set(p,o,n) do {                                 \
-               while (!g_atomic_int_compare_and_exchange ((p), (o), (n))) {} \
-       } while (0)
+       #define mph_int_set(p,n) g_atomic_int_set ((p),(n))
+       #define mph_int_test_and_set(p,o,n) g_atomic_int_compare_and_exchange ((p), (o), (n))
 #else
-       #define mph_int_get(p) (*(p))
-       #define mph_int_inc(p) do { (*(p))++; } while (0)
-       #define mph_int_dec_test(p) (--(*(p)) == 0)
-       #define mph_int_set(p,o,n) do { *(p) = n; } while (0)
+       #error "GLIB 2.4 required because building without ASM atomics"
 #endif
 
 #if HAVE_PSIGNAL
@@ -166,6 +171,90 @@ keep_trying (int r)
        return r == -1 && errno == EINTR;
 }
 
+// This tiny ad-hoc read/write lock is needed because of the very specific
+// synchronization needed between default_handler and teardown_pipes:
+// - Many default_handlers can be running at once
+// - The signals_mutex already ensures only one teardown_pipes runs at once
+// - If teardown_pipes starts while a default_handler is ongoing, it must block
+// - If default_handler starts while a teardown_pipes is ongoing, it must *not* block
+// Locks are implemented as ints.
+
+// The lock is split into a teardown bit and a handler count (sign bit unused).
+// There is a teardown running or waiting to run if the teardown bit is set.
+// There is a handler running if the handler count is nonzero.
+#define PIPELOCK_TEARDOWN_BIT (  (int)0x40000000 )
+#define PIPELOCK_COUNT_MASK   (~((int)0xC0000000))
+#define PIPELOCK_GET_COUNT(x)      ((x) & PIPELOCK_COUNT_MASK)
+#define PIPELOCK_INCR_COUNT(x, by) (((x) & PIPELOCK_TEARDOWN_BIT) | (PIPELOCK_GET_COUNT (PIPELOCK_GET_COUNT (x) + (by))))
+
+static inline void
+acquire_pipelock_teardown (int *lock)
+{
+       int lockvalue_draining;
+       // First mark that a teardown is occurring, so handlers will stop entering the lock.
+       while (1) {
+               int lockvalue = mph_int_get (lock);
+               lockvalue_draining = lockvalue | PIPELOCK_TEARDOWN_BIT;
+               if (mph_int_test_and_set (lock, lockvalue, lockvalue_draining))
+                       break;
+       }
+       // Now wait for all handlers to complete.
+       while (1) {
+               if (0 == PIPELOCK_GET_COUNT (lockvalue_draining))
+                       break; // We now hold the lock.
+               // Handler is still running, spin until it completes.
+               sched_yield (); // We can call this because !defined(HOST_WIN32)
+               lockvalue_draining = mph_int_get (lock);
+       }
+}
+
+static inline void
+release_pipelock_teardown (int *lock)
+{
+       while (1) {
+               int lockvalue = mph_int_get (lock);
+               int lockvalue_new = lockvalue & ~PIPELOCK_TEARDOWN_BIT;
+               // Technically this can't fail, because we hold both the pipelock and the mutex, but
+               if (mph_int_test_and_set (lock, lockvalue, lockvalue_new))
+                       return;
+       }
+}
+
+// Return 1 for success
+static inline int
+acquire_pipelock_handler (int *lock)
+{
+       while (1) {
+               int lockvalue = mph_int_get (lock);
+               if (lockvalue & PIPELOCK_TEARDOWN_BIT) // Final lock is being torn down
+                       return 0;
+               int lockvalue_new = PIPELOCK_INCR_COUNT (lockvalue, 1);
+               if (mph_int_test_and_set (lock, lockvalue, lockvalue_new))
+                       return 1;
+       }
+}
+
+static inline void
+release_pipelock_handler (int *lock)
+{
+       while (1) {
+               int lockvalue = mph_int_get (lock);
+               int lockvalue_new = PIPELOCK_INCR_COUNT (lockvalue, -1);
+               if (mph_int_test_and_set (lock, lockvalue, lockvalue_new))
+                       return;
+       }
+}
+
+// This handler is registered once for each UnixSignal object. A pipe is maintained
+// for each one; Wait users read at one end of this pipe, and default_handler sends
+// a write on the pipe for each signal received while the Wait is ongoing.
+//
+// Notice a fairly unlikely race condition exists here: Because we synchronize with
+// pipe teardown, but not install/uninstall (in other words, we are only trying to
+// protect against writing on a closed pipe) it is technically possible a full
+// uninstall and then an install could complete after signum is checked but before
+// the remaining instructions execute. In this unlikely case count could be
+// incremented or a byte written on the wrong signal handler.
 static void
 default_handler (int signum)
 {
@@ -175,30 +264,36 @@ default_handler (int signum)
                signal_info* h = &signals [i];
                if (mph_int_get (&h->signum) != signum)
                        continue;
+
                mph_int_inc (&h->count);
+
+               if (!acquire_pipelock_handler (&h->pipelock))
+                       continue; // Teardown is occurring on this object, no one to send to.
+
                fd = mph_int_get (&h->write_fd);
-               if (fd > 0) {
+               if (fd > 0) { // If any listener exists to write to
                        int j,pipecounter;
-                       char c = signum;
-                       pipecounter = mph_int_get (&h->pipecnt);
+                       char c = signum; // (Value is meaningless)
+                       pipecounter = mph_int_get (&h->pipecnt); // Write one byte per pipe listener
                        for (j = 0; j < pipecounter; ++j) {
                                int r;
                                do { r = write (fd, &c, 1); } while (keep_trying (r));
-                               fsync (fd); /* force */
                        }
                }
+               release_pipelock_handler (&h->pipelock);
        }
 }
 
 static pthread_mutex_t signals_mutex = PTHREAD_MUTEX_INITIALIZER;
 
+// A UnixSignal object is being constructed
 void*
 Mono_Unix_UnixSignal_install (int sig)
 {
 #if defined(HAVE_SIGNAL)
        int i;
-       signal_info* h = NULL; 
-       int have_handler = 0;
+       signal_info* h = NULL;        // signals[] slot to install to
+       int have_handler = 0;         // Candidates for signal_info handler fields
        void* handler = NULL;
 
        if (acquire_mutex (&signals_mutex) == -1)
@@ -212,13 +307,16 @@ Mono_Unix_UnixSignal_install (int sig)
                if (sinfo.sa_handler != SIG_DFL || (void*)sinfo.sa_sigaction != (void*)SIG_DFL) {
                        pthread_mutex_unlock (&signals_mutex);
                        errno = EADDRINUSE;
-                       return NULL;
+                       return NULL; // This is an rt signal with an existing handler. Bail out.
                }
        }
 #endif /*defined (SIGRTMIN) && defined (SIGRTMAX)*/
 
+       // Scan through signals list looking for (1) an unused spot (2) a usable value for handler
        for (i = 0; i < NUM_SIGNALS; ++i) {
-               if (h == NULL && signals [i].signum == 0) {
+               int just_installed = 0;
+               // We're still looking for a signal_info spot, and this one is available:
+               if (h == NULL && mph_int_get (&signals [i].signum) == 0) {
                        h = &signals [i];
                        h->handler = signal (sig, default_handler);
                        if (h->handler == SIG_ERR) {
@@ -227,27 +325,32 @@ Mono_Unix_UnixSignal_install (int sig)
                                break;
                        }
                        else {
-                               h->have_handler = 1;
+                               just_installed = 1;
                        }
                }
-               if (!have_handler && signals [i].signum == sig &&
+               // Check if this slot has a "usable" (not installed by this file) handler-to-restore-later:
+               // (On the first signal to be installed, signals [i] will be == h when this happens.)
+               if (!have_handler && (just_installed || mph_int_get (&signals [i].signum) == sig) &&
                                signals [i].handler != default_handler) {
                        have_handler = 1;
                        handler = signals [i].handler;
                }
-               if (h && have_handler)
+               if (h && have_handler) // We have everything we need
                        break;
        }
 
-       if (h && have_handler) {
+       if (h) {
+               // If we reached here without have_handler, this means that default_handler
+               // was set as the signal handler before the first UnixSignal object was installed.
+               g_assert (have_handler);
+
+               // Overwrite the tenative handler we set a moment ago with a known-usable one
+               h->handler = handler;
                h->have_handler = 1;
-               h->handler      = handler;
-       }
 
-       if (h) {
-               mph_int_set (&h->count, h->count, 0);
-               mph_int_set (&h->signum, h->signum, sig);
-               mph_int_set (&h->pipecnt, h->pipecnt, 0);
+               mph_int_set (&h->count, 0);
+               mph_int_set (&h->pipecnt, 0);
+               mph_int_set (&h->signum, sig);
        }
 
        release_mutex (&signals_mutex);
@@ -265,16 +368,17 @@ count_handlers (int signum)
        int i;
        int count = 0;
        for (i = 0; i < NUM_SIGNALS; ++i) {
-               if (signals [i].signum == signum)
+               if (mph_int_get (&signals [i].signum) == signum)
                        ++count;
        }
        return count;
 }
 
+// A UnixSignal object is being Disposed
 int
 Mono_Unix_UnixSignal_uninstall (void* info)
 {
-#if defined(HAVE_SIGNAL)       
+#if defined(HAVE_SIGNAL)
        signal_info* h;
        int r = -1;
 
@@ -287,14 +391,15 @@ Mono_Unix_UnixSignal_uninstall (void* info)
                errno = EINVAL;
        else {
                /* last UnixSignal -- we can unregister */
-               if (h->have_handler && count_handlers (h->signum) == 1) {
-                       mph_sighandler_t p = signal (h->signum, h->handler);
+               int signum = mph_int_get (&h->signum);
+               if (h->have_handler && count_handlers (signum) == 1) {
+                       mph_sighandler_t p = signal (signum, h->handler);
                        if (p != SIG_ERR)
                                r = 0;
                        h->handler      = NULL;
                        h->have_handler = 0;
                }
-               h->signum = 0;
+               mph_int_set (&h->signum, 0);
        }
 
        release_mutex (&signals_mutex);
@@ -306,6 +411,7 @@ Mono_Unix_UnixSignal_uninstall (void* info)
 #endif
 }
 
+// Set up a signal_info to begin waiting for signal
 static int
 setup_pipes (signal_info** signals, int count, struct pollfd *fd_structs, int *currfd)
 {
@@ -317,21 +423,22 @@ setup_pipes (signal_info** signals, int count, struct pollfd *fd_structs, int *c
 
                h = signals [i];
 
-               if (mph_int_get (&h->pipecnt) == 0) {
+               if (mph_int_get (&h->pipecnt) == 0) { // First listener for this signal_info
                        if ((r = pipe (filedes)) != 0) {
                                break;
                        }
-                       h->read_fd  = filedes [0];
-                       h->write_fd = filedes [1];
+                       mph_int_set (&h->read_fd,  filedes [0]);
+                       mph_int_set (&h->write_fd, filedes [1]);
                }
                mph_int_inc (&h->pipecnt);
-               fd_structs[*currfd].fd = h->read_fd;
+               fd_structs[*currfd].fd = mph_int_get (&h->read_fd);
                fd_structs[*currfd].events = POLLIN;
-               ++(*currfd);
+               ++(*currfd); // count is verified less than NUM_SIGNALS by caller
        }
        return r;
 }
 
+// Cleanup a signal_info after waiting for signal
 static void
 teardown_pipes (signal_info** signals, int count)
 {
@@ -339,21 +446,28 @@ teardown_pipes (signal_info** signals, int count)
        for (i = 0; i < count; ++i) {
                signal_info* h = signals [i];
 
-               if (mph_int_dec_test (&h->pipecnt)) {
-                       if (h->read_fd != 0)
-                               close (h->read_fd);
-                       if (h->write_fd != 0)
-                               close (h->write_fd);
-                       h->read_fd  = 0;
-                       h->write_fd = 0;
+               if (mph_int_dec_test (&h->pipecnt)) { // Final listener for this signal_info
+                       acquire_pipelock_teardown (&h->pipelock);
+                       int read_fd = mph_int_get (&h->read_fd);
+                       int write_fd = mph_int_get (&h->write_fd);
+                       if (read_fd != 0)
+                               close (read_fd);
+                       if (write_fd != 0)
+                               close (write_fd);
+                       mph_int_set (&h->read_fd, 0);
+                       mph_int_set (&h->write_fd, 0);
+                       release_pipelock_teardown (&h->pipelock);
                }
        }
 }
 
+// Given pipes set up, wait for a byte to arrive on one of them
 static int
 wait_for_any (signal_info** signals, int count, int *currfd, struct pollfd* fd_structs, int timeout, Mono_Posix_RuntimeIsShuttingDown shutting_down)
 {
        int r, idx;
+       // Poll until one of this signal_info's pipes is ready to read.
+       // Once a second, stop to check if the VM is shutting down.
        do {
                struct timeval tv;
                struct timeval *ptv = NULL;
@@ -368,7 +482,7 @@ wait_for_any (signal_info** signals, int count, int *currfd, struct pollfd* fd_s
        idx = -1;
        if (r == 0)
                idx = timeout;
-       else if (r > 0) {
+       else if (r > 0) { // The pipe[s] are ready to read.
                int i;
                for (i = 0; i < count; ++i) {
                        signal_info* h = signals [i];
@@ -376,7 +490,7 @@ wait_for_any (signal_info** signals, int count, int *currfd, struct pollfd* fd_s
                                int r;
                                char c;
                                do {
-                                       r = read (h->read_fd, &c, 1);
+                                       r = read (mph_int_get (&h->read_fd), &c, 1);
                                } while (keep_trying (r) && !shutting_down ());
                                if (idx == -1)
                                        idx = i;
index 56df107016f6d1c4affdf29d4d81ecf3ab27e4a7..523ae92482899dca3582cb5103d2e085506530d6 100644 (file)
 
 G_BEGIN_DECLS
 
+// See Stdlib.cs
+const char *
+Mono_Unix_VersionString ()
+{
+       return "MonoProject-2015-12-1";
+}
+
 gint32
 Mono_Posix_Stdlib_EXIT_FAILURE (void)
 {
index 52ab1cf46898e6a3f810341b656e6e211f453d40..d71d555b4d1b1c6f97f121d507356c06d35808b8 100644 (file)
@@ -30,9 +30,13 @@ Mono_Posix_FromStat (struct Mono_Posix_Stat *from, void *_to)
 
        to->st_dev         = from->st_dev;
        to->st_ino         = from->st_ino;
-       if (Mono_Posix_FromFilePermissions (from->st_mode, &to->st_mode) != 0) {
+
+       unsigned int to_st_mode;
+       if (Mono_Posix_FromFilePermissions (from->st_mode, &to_st_mode) != 0) {
                return -1;
        }
+
+       to->st_mode        = to_st_mode;
        to->st_nlink       = from->st_nlink;
        to->st_uid         = from->st_uid;
        to->st_gid         = from->st_gid;
diff --git a/tools/crash-bisector/Program.cs b/tools/crash-bisector/Program.cs
new file mode 100644 (file)
index 0000000..86cc8f0
--- /dev/null
@@ -0,0 +1,238 @@
+using System;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading.Tasks;
+using System.IO;
+using System.Text.RegularExpressions;
+using System.Collections.Generic;
+
+namespace crashbisector
+{
+       class BisectInfo {
+               const int timeout = 60;
+
+               public string MonoPath { get; set; }
+               public string OptName { get; set; }
+               public IEnumerable<string> Args { get; set; }
+               Random rand;
+
+               public BisectInfo () {
+                       rand = new Random ();
+               }
+
+               string Run (string bisectArg) {
+                       var args = Args;
+
+                       if (bisectArg == null) {
+                               args = new string[] { "-v" }.Concat (args);
+                       } else {
+                               args = new string[] { bisectArg }.Concat (args);
+                       }
+                       var startInfo = new ProcessStartInfo {
+                               FileName = MonoPath,
+                               Arguments = string.Join (" ", args),
+                               UseShellExecute = false,
+                               RedirectStandardOutput = true,
+                               RedirectStandardError = true
+                       };
+                       startInfo.EnvironmentVariables.Add ("MONO_DEBUG", "no-gdb-backtrace");
+
+                       using (var process = Process.Start (startInfo)) {
+                               var stdoutTask = Task.Factory.StartNew (() => new StreamReader (process.StandardOutput.BaseStream).ReadToEnd (), TaskCreationOptions.LongRunning);
+                               var stderrTask = Task.Factory.StartNew (() => new StreamReader (process.StandardError.BaseStream).ReadToEnd (), TaskCreationOptions.LongRunning);
+
+                               var success = process.WaitForExit (timeout < 0 ? -1 : (Math.Min (Int32.MaxValue / 1000, timeout) * 1000));
+                               if (!success || process.ExitCode != 0) {
+                                       return null;
+                               }
+
+                               var stdout = stdoutTask.Result;
+
+                               return stdout;
+                       }
+               }
+
+               bool RunWithMethods (IEnumerable<string> methods) {
+                       var path = Path.GetTempFileName ();
+                       File.WriteAllLines (path, methods);
+                       var stdout = Run (String.Format ("--bisect={0}:{1}", OptName, path));
+                       File.Delete (path);
+                       return stdout != null;
+               }
+
+               IEnumerable<int> EliminationOrder (int numChunks) {
+                       var chunks = new int [numChunks];
+                       for (var i = 0; i < numChunks; ++i)
+                               chunks [i] = i;
+                       for (var i = 0; i < numChunks; ++i) {
+                               var j = rand.Next (i, numChunks);
+                               var tmp = chunks [i];
+                               chunks [i] = chunks [j];
+                               chunks [j] = tmp;
+                       }
+                       return chunks;
+               }
+
+               bool TryEliminate (IEnumerable<string> methods, int chunkSize) {
+                       var count = methods.Count ();
+                       if (chunkSize < 1 || chunkSize > count)
+                               throw new Exception ("I can't do math.");
+
+                       var numChunks = (count + chunkSize - 1) / chunkSize;
+                       foreach (var i in EliminationOrder (numChunks)) {
+                               var firstIndex = i * chunkSize;
+                               var lastPlusOneIndex = (i + 1) * chunkSize;
+                               var methodsLeft = methods.Take (firstIndex).Concat (methods.Skip (lastPlusOneIndex));
+
+                               if (chunkSize == 1)
+                                       Console.WriteLine ("Running without method at position {0}", firstIndex);
+                               else
+                                       Console.WriteLine ("Running without methods at positions {0} to {1}", firstIndex, lastPlusOneIndex - 1);
+                               var success = RunWithMethods (methodsLeft);
+                               Console.WriteLine ("Crashed: {0}", !success);
+
+                               if (!success) {
+                                       Console.WriteLine ("Eliminating further from {0} methods.", methodsLeft.Count ());
+                                       return EliminationStep (methodsLeft);
+                               }
+                       }
+
+                       return false;
+               }
+
+               bool EliminationStep (IEnumerable<string> methods) {
+                       var count = methods.Count ();
+
+                       if (count < 2) {
+                               Console.WriteLine ("Can't eliminate further.  Methods required to crash are:\n{0}",
+                                       string.Join ("\n", methods));
+                               return true;
+                       }
+
+                       if (count >= 9) {
+                               var chunkSize = (int)Math.Floor (Math.Sqrt (count));
+                               Console.WriteLine ("Trying eliminating chunks of {0}.", chunkSize);
+                               if (TryEliminate (methods, chunkSize))
+                                       return true;
+                               Console.WriteLine ("Chunks didn't succeed, eliminating individual methods.");
+                       }
+
+                       if (TryEliminate (methods, 1))
+                               return true;
+
+                       Console.WriteLine ("Couldn't eliminate any method.  Methods required to crash are:\n{0}",
+                               string.Join ("\n", methods));
+                       return true;
+               }
+
+               bool BisectStep (IEnumerable<string> methods) {
+                       var count = methods.Count ();
+
+                       if (count == 0) {
+                               Console.WriteLine ("Error: No methods left - what happened?");
+                               return false;
+                       }
+                       if (count == 1) {
+                               Console.WriteLine ("Found the offending method: {0}", methods.First ());
+                               return true;
+                       }
+
+                       var half = count / 2;
+                       var firstHalf = methods.Take (half);
+                       var secondHalf = methods.Skip (half);
+                       Console.WriteLine ("Splitting into two halves: {0} and {1} methods.", firstHalf.Count (), secondHalf.Count ());
+
+                       Console.WriteLine ("Running first half.");
+                       var firstSuccess = RunWithMethods (firstHalf);
+                       Console.WriteLine ("Crashed: {0}", !firstSuccess);
+
+                       if (!firstSuccess) {
+                               Console.WriteLine ("Continuing with first half.");
+                               return BisectStep (firstHalf);
+                       }
+
+                       Console.WriteLine ("Running second half.");
+                       var secondSuccess = RunWithMethods (secondHalf);
+                       Console.WriteLine ("Crashed: {0}", !secondSuccess);
+
+                       if (!secondSuccess) {
+                               Console.WriteLine ("Continuing with second half.");
+                               return BisectStep (secondHalf);
+                       }
+
+                       Console.WriteLine ("Error: Both halves succeeded, can't bisect.  Trying elimination.");
+                       return EliminationStep (methods);
+               }
+
+               public bool Bisect () {
+                       Console.WriteLine ("Running to gather methods.");
+                       var stdout = Run (null);
+                       if (stdout == null) {
+                               Console.Error.WriteLine ("Error: Failed to execute without optimization.");
+                               Environment.Exit (1);
+                       }
+
+                       var regex = new Regex ("converting[^\n]* method ([^\n]+)\n");
+                       var matches = regex.Matches (stdout);
+                       var methods = new List<string> ();
+                       foreach (Match match in matches) {
+                               var method = match.Groups [1].Value;
+                               methods.Add (method);
+                       }
+
+                       Console.WriteLine ("Bisecting {0} methods.", methods.Count);
+
+                       Console.WriteLine ("Running with all methods, just to make sure.");
+                       var success = RunWithMethods (methods);
+                       if (success) {
+                               Console.WriteLine ("Error: Ran successfully with all methods optimized.  Nothing to bisect.");
+                               return false;
+                       }
+                       Console.WriteLine ("Crashed.  Bisecting.");
+                       return BisectStep (methods);
+               }
+       }
+
+       class MainClass
+       {
+               static void UsageAndExit (int exitCode) {
+                       Console.Error.WriteLine ("Usage: crash-bisector.exe --mono MONO-EXECUTABLE --opt OPTION-NAME -- MONO-ARG ...");
+                       Environment.Exit (exitCode);
+               }
+                       
+               public static void Main (string[] args)
+               {
+                       string monoPath = null;
+                       string optName = null;
+
+                       var argIndex = 0;
+                       while (argIndex < args.Length) {
+                               if (args [argIndex] == "--mono") {
+                                       monoPath = args [argIndex + 1];
+                                       argIndex += 2;
+                               } else if (args [argIndex] == "--opt") {
+                                       optName = args [argIndex + 1];
+                                       argIndex += 2;
+                               } else if (args [argIndex] == "--help") {
+                                       UsageAndExit (0);
+                               } else if (args [argIndex] == "--") {
+                                       argIndex += 1;
+                                       break;
+                               } else {
+                                       UsageAndExit (1);
+                               }
+                       }
+
+                       if (monoPath == null || optName == null || argIndex == args.Length)
+                               UsageAndExit (1);
+
+                       var bisectInfo = new BisectInfo {
+                               MonoPath = monoPath,
+                               OptName = optName,
+                               Args = args.Skip (argIndex)
+                       };
+                       var success = bisectInfo.Bisect ();
+                       Environment.Exit (success ? 0 : 1);
+               }
+       }
+}
diff --git a/tools/crash-bisector/Properties/AssemblyInfo.cs b/tools/crash-bisector/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..c9d6924
--- /dev/null
@@ -0,0 +1,27 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+// Information about this assembly is defined by the following attributes.
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle ("crash-bisector")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("")]
+[assembly: AssemblyProduct ("")]
+[assembly: AssemblyCopyright ("schani")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// The form "{Major}.{Minor}.*" will automatically update the build and revision,
+// and "{Major}.{Minor}.{Build}.*" will update just the revision.
+
+[assembly: AssemblyVersion ("1.0.*")]
+
+// The following attributes are used to specify the signing key for the assembly,
+// if desired. See the Mono documentation for more information about signing.
+
+//[assembly: AssemblyDelaySign(false)]
+//[assembly: AssemblyKeyFile("")]
+
diff --git a/tools/crash-bisector/README.md b/tools/crash-bisector/README.md
new file mode 100644 (file)
index 0000000..96424f5
--- /dev/null
@@ -0,0 +1,51 @@
+# Crash Bisector
+
+It is often difficult finding a bug in an optimization pass.  The test
+case for which the optimization produces incorrect results or crashes
+the program might have thousands of methods compiled, and the bug
+might only show up in one or a handful of them.  It would be much
+easier if you knew which methods specifically trigger the bug.
+
+This tool automates the search for those methods.  Given some
+reasonable conditions it will find a (locally) minimal set of methods
+for which, if a given optimization is applied to them, a test case
+will fail or crash.
+
+You will need a test case for which Mono either crashes with your
+optimization, or returns a non-zero exit status.  The bisector will
+then run the test case without your optimization, gathering a list of
+all the methods that are compiled.  It will then start bisecting this
+list, applying the optimization to only one half of the methods,
+checking whether the test still fails.
+
+At some point bisecting will either terminate with a single method
+that still makes the test fail, or it will come to a point where a set
+of methods makes the test fail, but either half of that set will not.
+In that case it will start trying to remove smaller subsets of
+methods, until at some point no single method can be removed anymore,
+i.e., all the methods in the set must be optimized for the test to
+fail.
+
+## Usage
+
+You run it like so:
+
+    mono crash-bisector.exe --mono ../mini/mono-sgen --opt free-regions -- generics-sharing.2.exe
+
+Here the optimization is `free-regions` and the test case is
+`generics-sharing.2.exe`.
+
+Note that if the optimization you're debugging is turned on by default
+you'll have to pass a `-O` option to Mono to turn it off, like so:
+
+    mono crash-bisector.exe --mono ../mini/mono-sgen --opt intrins -- -O=-intrins generics-sharing.2.exe
+
+## Assumptions
+
+The bisector assumes that each run of your test case compiles the same
+methods, and that applying your optimization to some of them doesn't
+change which methods are compiled.
+
+The test case is assumed to succeed or fail deterministically.
+
+The optimization bug must also be deterministic.
diff --git a/tools/crash-bisector/crash-bisector.csproj b/tools/crash-bisector/crash-bisector.csproj
new file mode 100644 (file)
index 0000000..69ac6cd
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProjectGuid>{5726F59B-A5CF-4DE1-9E55-4F9188A00CBA}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>crashbisector</RootNamespace>
+    <AssemblyName>crash-bisector</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Externalconsole>true</Externalconsole>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <DebugType>full</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Externalconsole>true</Externalconsole>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+</Project>
\ No newline at end of file
diff --git a/tools/crash-bisector/crash-bisector.sln b/tools/crash-bisector/crash-bisector.sln
new file mode 100644 (file)
index 0000000..5f10c69
--- /dev/null
@@ -0,0 +1,17 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 2012\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "crash-bisector", "crash-bisector.csproj", "{5726F59B-A5CF-4DE1-9E55-4F9188A00CBA}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|x86 = Debug|x86\r
+               Release|x86 = Release|x86\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {5726F59B-A5CF-4DE1-9E55-4F9188A00CBA}.Debug|x86.ActiveCfg = Debug|x86\r
+               {5726F59B-A5CF-4DE1-9E55-4F9188A00CBA}.Debug|x86.Build.0 = Debug|x86\r
+               {5726F59B-A5CF-4DE1-9E55-4F9188A00CBA}.Release|x86.ActiveCfg = Release|x86\r
+               {5726F59B-A5CF-4DE1-9E55-4F9188A00CBA}.Release|x86.Build.0 = Release|x86\r
+       EndGlobalSection\r
+EndGlobal\r
index b9aa3822f6989b509a2ff04113928e1fd3d70a7f..b9fa1ae43f106775d7e78f336f6230981cb2991e 100644 (file)
@@ -48,16 +48,11 @@ namespace Mono.Tools.LocaleBuilder
                public string[] DayNames = new string[Constants.NUM_DAYS];
                public int? FirstDayOfWeek;
                public string RawFullDateTimePattern;
-               public string LongDatePattern;
-               public string LongTimePattern;
                public string MonthDayPattern;
                public string[] MonthGenitiveNames = new string[Constants.NUM_MONTHS];
                public string[] MonthNames = new string[Constants.NUM_MONTHS];
                public string PMDesignator;
-               public string ShortDatePattern;
-               public string ShortTimePattern;
                public string TimeSeparator;
-               public string YearMonthPattern;
                public string[] ShortDatePatterns = new string[Constants.NUM_SHORT_DATE_PATTERNS];
                public string[] LongDatePatterns = new string[Constants.NUM_LONG_DATE_PATTERNS];
                public string[] ShortTimePatterns = new string[Constants.NUM_SHORT_TIME_PATTERNS];
index 3907485baf297ebbf7bac4d6c0a66c013e42ff3d..9c100dd18db568d4a00c579c30f7516f33676cce 100644 (file)
@@ -133,18 +133,18 @@ namespace Mono.Tools.LocaleBuilder
                                Dump (writer, df.DayNames, "DayNames");
                                writer.WriteLine ("{0}: {1}", "FirstDayOfWeek", (DayOfWeek) df.FirstDayOfWeek);
 //                             Dump (writer, df.GetAllDateTimePatterns (), "GetAllDateTimePatterns");
-                               writer.WriteLine ("{0}: {1}", "LongDatePattern", df.LongDatePattern);
-                               writer.WriteLine ("{0}: {1}", "LongTimePattern", df.LongTimePattern);
+//                             writer.WriteLine ("{0}: {1}", "LongDatePattern", df.LongDatePattern);
+//                             writer.WriteLine ("{0}: {1}", "LongTimePattern", df.LongTimePattern);
                                writer.WriteLine ("{0}: {1}", "MonthDayPattern", df.MonthDayPattern);
                                Dump (writer, df.MonthGenitiveNames, "MonthGenitiveNames");
                                Dump (writer, df.MonthNames, "MonthNames");
                                writer.WriteLine ("{0}: {1}", "NativeCalendarName", df.NativeCalendarName);
                                writer.WriteLine ("{0}: {1}", "PMDesignator", df.PMDesignator);
-                               writer.WriteLine ("{0}: {1}", "ShortDatePattern", df.ShortDatePattern);
+//                             writer.WriteLine ("{0}: {1}", "ShortDatePattern", df.ShortDatePattern);
                                Dump (writer, df.ShortestDayNames, "ShortestDayNames");
-                               writer.WriteLine ("{0}: {1}", "ShortTimePattern", df.ShortTimePattern);
+//                             writer.WriteLine ("{0}: {1}", "ShortTimePattern", df.ShortTimePattern);
                                writer.WriteLine ("{0}: {1}", "TimeSeparator", df.TimeSeparator);
-                               writer.WriteLine ("{0}: {1}", "YearMonthPattern", df.YearMonthPattern);
+//                             writer.WriteLine ("{0}: {1}", "YearMonthPattern", df.YearMonthPattern);
 
                                var ti = c.TextInfoEntry;
                                writer.WriteLine ("-- TextInfo --");
@@ -924,9 +924,6 @@ namespace Mono.Tools.LocaleBuilder
                                }
                        }
 
-                       // It looks like it never changes
-                       data.DateTimeFormatEntry.TimeSeparator = ":";
-
                        // TODO: Don't have input data available but most values are 2 with few exceptions for 1 and 3
                        // We don't add 3 as it's for some arabic states only
                        switch (data.ThreeLetterISOLanguageName) {
index 5acbc5535da9977890582be2151836a36f5070c6..7127286033736426a6427b3c01db2e6f7bc69a2b 100644 (file)
@@ -32,814 +32,435 @@ namespace Mono.Tools.LocaleBuilder
 {
        static class Patterns
        {
-               static readonly Dictionary<int, string[]> DateTime = new Dictionary<int, string[]> {
-                       { 0x0001, new [] { "/", "dd/MMMM/yyyy", "hh:mm:ss tt", "dd/MM/yy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0002, new [] { ".", "dd MMMM yyyy 'г.'", "H:mm:ss", "d.M.yyyy 'г.'", "H:mm", "d MMMM", "MMMM yyyy 'г.'" } },
-                       { 0x0003, new [] { "/", "dddd, d MMMM' de 'yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "d MMMM", "MMMM' de 'yyyy" } },
-                       { 0x0004, new [] { "/", "yyyy'年'M'月'd'日'", "H:mm:ss", "yyyy/M/d", "H:mm", "M'月'd'日'", "yyyy'年'M'月'" } },
-                       { 0x0005, new [] { ". ", "d. MMMM yyyy", "H:mm:ss", "d. M. yyyy", "H:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0006, new [] { "-", "d. MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0007, new [] { ".", "dddd, d. MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0008, new [] { "/", "dddd, d MMMM yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0009, new [] { "/", "dddd, MMMM d, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MMMM d", "MMMM yyyy" } },
-                       { 0x000a, new [] { "/", "dddd, d' de 'MMMM' de 'yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x000b, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "d'.' MMMM", "MMMM yyyy" } },
-                       { 0x000c, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x000d, new [] { "/", "dddd dd MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x000e, new [] { ".", "yyyy. MMMM d.", "H:mm:ss", "yyyy.MM.dd.", "H:mm", "MMMM d.", "yyyy. MMMM" } },
-                       { 0x000f, new [] { ".", "d. MMMM yyyy", "HH:mm:ss", "d.M.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0010, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0011, new [] { "/", "yyyy'年'M'月'd'日'", "H:mm:ss", "yyyy/MM/dd", "H:mm", "M'月'd'日'", "yyyy'年'M'月'" } },
-                       { 0x0012, new [] { "-", "yyyy'년' M'월' d'일' dddd", "tt h:mm:ss", "yyyy-MM-dd", "tt h:mm", "M'월' d'일'", "yyyy'년' M'월'" } },
-                       { 0x0013, new [] { "-", "dddd d MMMM yyyy", "HH:mm:ss", "d-M-yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0014, new [] { ".", "d. MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0015, new [] { "-", "d MMMM yyyy", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0016, new [] { "/", "dddd, d' de 'MMMM' de 'yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x0017, new [] { "-", "dddd, 'ils’' d. MMMM, yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0018, new [] { ".", "d MMMM yyyy", "H:mm:ss", "dd.MM.yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0019, new [] { ".", "d MMMM yyyy 'г.'", "H:mm:ss", "dd.MM.yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x001a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM, yyyy" } },
-                       { 0x001b, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x001c, new [] { ".", "dddd, d MMMM yyyy", "HH:mm:ss", "d.M.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x001d, new [] { "-", "'den 'd MMMM yyyy", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "'den 'd MMMM", "MMMM yyyy" } },
-                       { 0x001e, new [] { "/", "d MMMM yyyy", "H:mm:ss", "d/M/yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x001f, new [] { ".", "d MMMM yyyy dddd", "HH:mm:ss", "d.M.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0020, new [] { "/", "dd MMMM, yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0021, new [] { "/", "dd MMMM yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x0022, new [] { ".", "d MMMM yyyy' р.'", "H:mm:ss", "dd.MM.yyyy", "H:mm", "d MMMM", "MMMM yyyy' р.'" } },
-                       { 0x0023, new [] { ".", "d MMMM yyyy", "HH:mm:ss", "dd.MM.yy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0024, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0025, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.MM.yyyy", "H:mm", "dd. MMMM", "MMMM yyyy" } },
-                       { 0x0026, new [] { ".", "dddd, yyyy'. gada 'd. MMMM", "H:mm:ss", "dd.MM.yyyy.", "H:mm", "d. MMMM", "yyyy'. gada 'MMMM" } },
-                       { 0x0027, new [] { "-", "yyyy 'm.' MMMM d 'd.'", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d 'd.'", "yyyy 'm.' MMMM" } },
-                       { 0x0028, new [] { ".", "d MMMM yyyy' с.'", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x0029, new [] { "/", "dddd, dd MMMM yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x002a, new [] { "/", "dd MMMM yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "dd MMMM", "MMMM yyyy" } },
-                       { 0x002b, new [] { ".", "d MMMM, yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM, yyyy" } },
-                       { 0x002c, new [] { ".", "dd MMMM yyyy'-cü il'", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x002d, new [] { "/", "dddd, yyyy'(e)ko' MMMM'ren' d'a'", "H:mm:ss", "yyyy/MM/dd", "H:mm", "MMMM'ren' d'a'", "yyyy'(e)ko' MMMM" } },
-                       { 0x002e, new [] { ". ", "dddd, 'dnja' d. MMMM yyyy", "H.mm.ss", "d. M. yyyy", "H.mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x002f, new [] { ".", "dddd, dd MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0030, new [] { "-", "yyyy MMMM d, dddd", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d", "yyyy MMMM" } },
-                       { 0x0031, new [] { "-", "yyyy MMMM d, dddd", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d", "yyyy MMMM" } },
-                       { 0x0032, new [] { "/", "dd MMMM yyyy", "hh:mm:ss tt", "dd/MM/yy", "hh:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0034, new [] { "/", "dd MMMM yyyy", "hh:mm:ss tt", "yyyy/MM/dd", "hh:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0035, new [] { "-", "dd MMMM yyyy", "hh:mm:ss tt", "dd-MM-yyyy", "hh:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0036, new [] { "/", "dd MMMM yyyy", "hh:mm:ss tt", "yyyy/MM/dd", "hh:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0037, new [] { ".", "dddd, d MMMM, yyyy 'წელი'", "H:mm:ss", "dd.MM.yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0038, new [] { "-", "d. MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0039, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x003a, new [] { "/", "dddd, d' ta\\' 'MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d' ta\\' 'MMMM", "MMMM yyyy" } },
-                       { 0x003b, new [] { ".", "dddd, MMMM d'. b. 'yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "MMMM d'. b.'", "MMMM yyyy" } },
-                       { 0x003c, new [] { "/", "d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x003e, new [] { "/", "dd MMMM yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x003f, new [] { "-", "d MMMM yyyy 'ж.'", "HH:mm:ss", "d-MMM-yy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0040, new [] { "-", "dd'-'MMMM yyyy'-ж.'", "HH:mm:ss", "d-MMM yy", "HH:mm", "d'-'MMMM", "MMMM yyyy'-ж.'" } },
-                       { 0x0041, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MMMM dd", "MMMM, yyyy" } },
-                       { 0x0042, new [] { ".", "yyyy'-nji ýylyň 'd'-nji 'MMMM", "HH:mm:ss", "dd.MM.yy 'ý.'", "HH:mm", "d MMMM", "yyyy 'ý.' MMMM" } },
-                       { 0x0043, new [] { ".", "yyyy 'yil' d-MMMM", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d-MMMM", "MMMM yyyy" } },
-                       { 0x0044, new [] { ".", "dd MMMM yyyy' ел'", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0045, new [] { "-", "dd MMMM yyyy", "HH.mm.ss", "dd-MM-yy", "HH.mm", "d MMMM", "MMMM, yyyy" } },
-                       { 0x0046, new [] { "-", "dd MMMM yyyy dddd", "tt hh:mm:ss", "dd-MM-yy", "tt hh:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0047, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0048, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0049, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x004a, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yy", "HH:mm", "MMMM d", "MMMM, yyyy" } },
-                       { 0x004b, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yy", "HH:mm", "MMMM d", "MMMM, yyyy" } },
-                       { 0x004c, new [] { "-", "dd MMMM yyyy", "HH.mm.ss", "dd-MM-yy", "HH.mm", "MMMM dd", "MMMM, yyyy" } },
-                       { 0x004d, new [] { "-", "yyyy,MMMM dd, dddd", "tt h:mm:ss", "dd-MM-yyyy", "tt h:mm", "d MMMM", "MMMM,yy" } },
-                       { 0x004e, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x004f, new [] { "-", "dd MMMM yyyy dddd", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0050, new [] { "-", "yyyy 'оны' M'-р сарын' d. dddd 'гариг'.", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d.", "yyyy 'оны' MMMM" } },
-                       { 0x0051, new [] { "/", "yyyy'ལོའི་ཟླ' M'ཚེས' d", "HH:mm:ss", "yyyy/M/d", "HH:mm", "ཟླ་Mཚེས་d", "yyyy'ལོའི་ཟླ་' M" } },
-                       { 0x0052, new [] { "/", "d MMMM yyyy", "HH:mm:ss", "dd/MM/yy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0053, new [] { "/", "d MMMM yyyy", "HH:mm:ss", "dd/MM/yy", "H:mm", "d MMMM", "'ខែ' MM 'ឆ្នាំ' yyyy" } },
-                       { 0x0054, new [] { "/", "dd MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0055, new [] { "-", "yyyy MMMM d", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "MMMM d", "yyyy MMMM" } },
-                       { 0x0056, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x0057, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0059, new [] { "/", "dddd, dd MMMM, yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x005a, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "MMMM dd", "MMMM, yyyy" } },
-                       { 0x005b, new [] { "-", "yyyy MMMM' මස 'dd' වැනිදා 'dddd", "tt h:mm:ss", "yyyy-MM-dd", "tt h:mm", "MMMM dd", "yyyy MMMM" } },
-                       { 0x005c, new [] { "/", "dddd, MMMM dd,yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MMMM d", "MMMM, yyyy" } },
-                       { 0x005d, new [] { "/", "dddd, dd MMMM, yyyy", "h:mm:ss tt", "d/MM/yyyy", "h:mm tt", "MMMM d", "MMMM, yyyy" } },
-                       { 0x005e, new [] { "/", "dddd '፣' MMMM d 'ቀን' yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "MMMM d' ቀን'", "MMMM yyyy" } },
-                       { 0x005f, new [] { "-", "dd MMMM, yyyy", "H:mm:ss", "dd-MM-yyyy", "H:mm", "d MMMM", "MMMM, yyyy" } },
-                       { 0x0061, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "dd MMMM", "MMMM,yyyy" } },
-                       { 0x0062, new [] { "-", "dddd d MMMM yyyy", "H:mm:ss", "d-M-yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0063, new [] { "/", "yyyy, dd, MMMM, dddd", "h:mm:ss tt", "yyyy/M/d", "h:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0064, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MM/dd", "MMMM, yyyy" } },
-                       { 0x0065, new [] { "/", "ddd, yyyy MMMM dd", "HH:mm:ss", "dd/MM/yy", "HH:mm", "MMMM dd", "yyyy, MMMM" } },
-                       { 0x0067, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x0068, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x006a, new [] { "/", "dddd, dd MMMM, yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "dd MMMM", "MMMM,yyyy" } },
-                       { 0x006b, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x006c, new [] { "/", "dd MMMM yyyy", "hh:mm:ss tt", "dd/MM/yy", "hh:mm tt", "MMMM d", "MMMM yyyy" } },
-                       { 0x006d, new [] { ".", "d MMMM yyyy 'й'", "H:mm:ss", "dd.MM.yy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x006e, new [] { ".", "d. MMMM yyyy", "HH:mm:ss", "dd.MM.yy", "HH:mm", "dd. MMMM", "MMMM yyyy" } },
-                       { 0x006f, new [] { "-", "MMMM d'.-at, 'yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "MMMM d'.-at'", "MMMM yyyy" } },
-                       { 0x0070, new [] { "/", "dddd, MMMM dd, yyyy", "h.mm.ss tt", "d/M/yyyy", "h.mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x0072, new [] { "/", "dddd, MMMM d, yyyy", "h:mm:ss tt", "dd/MM/yy", "h:mm tt", "dd MMMM", "MMMM yyyy" } },
-                       { 0x0073, new [] { "/", "dddd '፣' MMMM d 'መዓልቲ' yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "MMMM d", "MMMM yyyy" } },
-                       { 0x0074, new [] { "/", "dddd, dd MMMM, yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0075, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x0077, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "dd/MM/yy", "h:mm tt", "MMMM d", "MMMM yyyy" } },
-                       { 0x0078, new [] { "/", "yyyy'ꈎ' M'ꆪ' d'ꑍ'", "tt h:mm:ss", "yyyy/M/d", "tt h:mm", "M'’ ꆪ’'d'’ ꑍ’'", "yyyy'ꈎ' M'ꆪ'" } },
-                       { 0x007a, new [] { "-", "dddd, dd' de 'MMMM' de 'yyyy", "H:mm:ss", "dd-MM-yyyy", "H:mm", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x007c, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MMMM dd", "MMMM, yyyy" } },
-                       { 0x007e, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0080, new [] { "-", "yyyy-'يىل' d-MMMM", "H:mm:ss", "yyyy-M-d", "H:mm", "d-MMMM", "yyyy-'يىلى' MMMM" } },
-                       { 0x0081, new [] { "/", "dddd, dd MMMM, yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "d MMMM", "MMMM, yy" } },
-                       { 0x0082, new [] { "/", "dddd d MMMM' de 'yyyy", "HH.mm.ss", "dd/MM/yyyy", "HH' h 'mm", "d MMMM", "MMMM' de 'yyyy" } },
-                       { 0x0083, new [] { "/", "dddd d MMMM yyyy", "H:mm:ss", "dd/MM/yyyy", "HH:mm", "d' di 'MMMM", "MMMM' di u 'yyyy" } },
-                       { 0x0084, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0085, new [] { ".", "dddd, yyyy 'с.' MMMM d 'күнэ'", "H:mm:ss", "dd.MM.yyyy", "H:mm", "MMMM d 'күнэ'", "yyyy 'с.' MMMM" } },
-                       { 0x0086, new [] { "/", "dddd, dd' rech 'MMMM' rech 'yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "d' rech 'MMMM", "MMMM' rech 'yyyy" } },
-                       { 0x0087, new [] { "/", "d ' ' MMMM ' ' yyyy", "H:mm:ss", "d/MM/yyyy", "H:mm", "MMMM dd", "MMMM yyyy" } },
-                       { 0x0088, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x008c, new [] { "/", "yyyy, dd, MMMM, dddd", "h:mm:ss tt", "yyyy/M/d", "h:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0091, new [] { "/", "dd MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0092, new [] { "/", "dddd, dd MMMM, yyyy", "hh:mm:ss tt", "yyyy/MM/dd", "hh:mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x0401, new [] { "/", "dd/MMMM/yyyy", "hh:mm:ss tt", "dd/MM/yy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0402, new [] { ".", "dd MMMM yyyy 'г.'", "H:mm:ss", "d.M.yyyy 'г.'", "H:mm", "d MMMM", "MMMM yyyy 'г.'" } },
-                       { 0x0403, new [] { "/", "dddd, d MMMM' de 'yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "d MMMM", "MMMM' de 'yyyy" } },
-                       { 0x0404, new [] { "/", "yyyy'年'M'月'd'日'", "tt hh:mm:ss", "yyyy/M/d", "tt hh:mm", "M'月'd'日'", "yyyy'年'M'月'" } },
-                       { 0x0405, new [] { ". ", "d. MMMM yyyy", "H:mm:ss", "d. M. yyyy", "H:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0406, new [] { "-", "d. MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0407, new [] { ".", "dddd, d. MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0408, new [] { "/", "dddd, d MMMM yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0409, new [] { "/", "dddd, MMMM d, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MMMM d", "MMMM yyyy" } },
-                       { 0x040b, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "d'.' MMMM", "MMMM yyyy" } },
-                       { 0x040c, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x040d, new [] { "/", "dddd dd MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x040e, new [] { ".", "yyyy. MMMM d.", "H:mm:ss", "yyyy.MM.dd.", "H:mm", "MMMM d.", "yyyy. MMMM" } },
-                       { 0x040f, new [] { ".", "d. MMMM yyyy", "HH:mm:ss", "d.M.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0410, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0411, new [] { "/", "yyyy'年'M'月'd'日'", "H:mm:ss", "yyyy/MM/dd", "H:mm", "M'月'd'日'", "yyyy'年'M'月'" } },
-                       { 0x0412, new [] { "-", "yyyy'년' M'월' d'일' dddd", "tt h:mm:ss", "yyyy-MM-dd", "tt h:mm", "M'월' d'일'", "yyyy'년' M'월'" } },
-                       { 0x0413, new [] { "-", "dddd d MMMM yyyy", "HH:mm:ss", "d-M-yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0414, new [] { ".", "d. MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0415, new [] { "-", "d MMMM yyyy", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0416, new [] { "/", "dddd, d' de 'MMMM' de 'yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x0417, new [] { "-", "dddd, 'ils’' d. MMMM, yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0418, new [] { ".", "d MMMM yyyy", "H:mm:ss", "dd.MM.yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0419, new [] { ".", "d MMMM yyyy 'г.'", "H:mm:ss", "dd.MM.yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x041a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM, yyyy" } },
-                       { 0x041b, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x041c, new [] { ".", "dddd, d MMMM yyyy", "HH:mm:ss", "d.M.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x041d, new [] { "-", "'den 'd MMMM yyyy", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "'den 'd MMMM", "MMMM yyyy" } },
-                       { 0x041e, new [] { "/", "d MMMM yyyy", "H:mm:ss", "d/M/yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x041f, new [] { ".", "d MMMM yyyy dddd", "HH:mm:ss", "d.M.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0420, new [] { "/", "dd MMMM, yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0421, new [] { "/", "dd MMMM yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x0422, new [] { ".", "d MMMM yyyy' р.'", "H:mm:ss", "dd.MM.yyyy", "H:mm", "d MMMM", "MMMM yyyy' р.'" } },
-                       { 0x0423, new [] { ".", "d MMMM yyyy", "HH:mm:ss", "dd.MM.yy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0424, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0425, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.MM.yyyy", "H:mm", "dd. MMMM", "MMMM yyyy" } },
-                       { 0x0426, new [] { ".", "dddd, yyyy'. gada 'd. MMMM", "H:mm:ss", "dd.MM.yyyy.", "H:mm", "d. MMMM", "yyyy'. gada 'MMMM" } },
-                       { 0x0427, new [] { "-", "yyyy 'm.' MMMM d 'd.'", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d 'd.'", "yyyy 'm.' MMMM" } },
-                       { 0x0428, new [] { ".", "d MMMM yyyy' с.'", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x0429, new [] { "/", "dddd, dd MMMM yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x042a, new [] { "/", "dd MMMM yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "dd MMMM", "MMMM yyyy" } },
-                       { 0x042b, new [] { ".", "d MMMM, yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM, yyyy" } },
-                       { 0x042c, new [] { ".", "dd MMMM yyyy'-cü il'", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x042d, new [] { "/", "dddd, yyyy'(e)ko' MMMM'ren' d'a'", "H:mm:ss", "yyyy/MM/dd", "H:mm", "MMMM'ren' d'a'", "yyyy'(e)ko' MMMM" } },
-                       { 0x042e, new [] { ". ", "dddd, 'dnja' d. MMMM yyyy", "H.mm.ss", "d. M. yyyy", "H.mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x042f, new [] { ".", "dddd, dd MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0430, new [] { "-", "yyyy MMMM d, dddd", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d", "yyyy MMMM" } },
-                       { 0x0431, new [] { "-", "yyyy MMMM d, dddd", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d", "yyyy MMMM" } },
-                       { 0x0432, new [] { "/", "dd MMMM yyyy", "hh:mm:ss tt", "dd/MM/yy", "hh:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0434, new [] { "/", "dd MMMM yyyy", "hh:mm:ss tt", "yyyy/MM/dd", "hh:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0435, new [] { "-", "dd MMMM yyyy", "hh:mm:ss tt", "dd-MM-yyyy", "hh:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0436, new [] { "/", "dd MMMM yyyy", "hh:mm:ss tt", "yyyy/MM/dd", "hh:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0437, new [] { ".", "dddd, d MMMM, yyyy 'წელი'", "H:mm:ss", "dd.MM.yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0438, new [] { "-", "d. MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0439, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x043a, new [] { "/", "dddd, d' ta\\' 'MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d' ta\\' 'MMMM", "MMMM yyyy" } },
-                       { 0x043b, new [] { ".", "dddd, MMMM d'. b. 'yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "MMMM d'. b.'", "MMMM yyyy" } },
-                       { 0x043e, new [] { "/", "dd MMMM yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x043f, new [] { "-", "d MMMM yyyy 'ж.'", "HH:mm:ss", "d-MMM-yy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0440, new [] { "-", "dd'-'MMMM yyyy'-ж.'", "HH:mm:ss", "d-MMM yy", "HH:mm", "d'-'MMMM", "MMMM yyyy'-ж.'" } },
-                       { 0x0441, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MMMM dd", "MMMM, yyyy" } },
-                       { 0x0442, new [] { ".", "yyyy'-nji ýylyň 'd'-nji 'MMMM", "HH:mm:ss", "dd.MM.yy 'ý.'", "HH:mm", "d MMMM", "yyyy 'ý.' MMMM" } },
-                       { 0x0443, new [] { ".", "yyyy 'yil' d-MMMM", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d-MMMM", "MMMM yyyy" } },
-                       { 0x0444, new [] { ".", "dd MMMM yyyy' ел'", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0445, new [] { "-", "dd MMMM yyyy", "HH.mm.ss", "dd-MM-yy", "HH.mm", "d MMMM", "MMMM, yyyy" } },
-                       { 0x0446, new [] { "-", "dd MMMM yyyy dddd", "tt hh:mm:ss", "dd-MM-yy", "tt hh:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0447, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0448, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0449, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x044a, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yy", "HH:mm", "MMMM d", "MMMM, yyyy" } },
-                       { 0x044b, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yy", "HH:mm", "MMMM d", "MMMM, yyyy" } },
-                       { 0x044c, new [] { "-", "dd MMMM yyyy", "HH.mm.ss", "dd-MM-yy", "HH.mm", "MMMM dd", "MMMM, yyyy" } },
-                       { 0x044d, new [] { "-", "yyyy,MMMM dd, dddd", "tt h:mm:ss", "dd-MM-yyyy", "tt h:mm", "d MMMM", "MMMM,yy" } },
-                       { 0x044e, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x044f, new [] { "-", "dd MMMM yyyy dddd", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0450, new [] { "-", "yyyy 'оны' M'-р сарын' d. dddd 'гариг'.", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d.", "yyyy 'оны' MMMM" } },
-                       { 0x0451, new [] { "/", "yyyy'ལོའི་ཟླ' M'ཚེས' d", "HH:mm:ss", "yyyy/M/d", "HH:mm", "ཟླ་Mཚེས་d", "yyyy'ལོའི་ཟླ་' M" } },
-                       { 0x0452, new [] { "/", "d MMMM yyyy", "HH:mm:ss", "dd/MM/yy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0453, new [] { "/", "d MMMM yyyy", "HH:mm:ss", "dd/MM/yy", "H:mm", "d MMMM", "'ខែ' MM 'ឆ្នាំ' yyyy" } },
-                       { 0x0454, new [] { "/", "dd MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0455, new [] { "-", "yyyy MMMM d", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "MMMM d", "yyyy MMMM" } },
-                       { 0x0456, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x0457, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x045a, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "MMMM dd", "MMMM, yyyy" } },
-                       { 0x045b, new [] { "-", "yyyy MMMM' මස 'dd' වැනිදා 'dddd", "tt h:mm:ss", "yyyy-MM-dd", "tt h:mm", "MMMM dd", "yyyy MMMM" } },
-                       { 0x045c, new [] { "/", "dddd, MMMM dd,yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MMMM d", "MMMM, yyyy" } },
-                       { 0x045d, new [] { "/", "dddd,MMMM dd,yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "d MMMM", "MMMM,yyyy" } },
-                       { 0x045e, new [] { "/", "dddd '፣' MMMM d 'ቀን' yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "MMMM d' ቀን'", "MMMM yyyy" } },
-                       { 0x0461, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "dd MMMM", "MMMM,yyyy" } },
-                       { 0x0462, new [] { "-", "dddd d MMMM yyyy", "H:mm:ss", "d-M-yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0463, new [] { "/", "yyyy, dd, MMMM, dddd", "h:mm:ss tt", "yyyy/M/d", "h:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0464, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MM/dd", "MMMM, yyyy" } },
-                       { 0x0465, new [] { "/", "ddd, yyyy MMMM dd", "HH:mm:ss", "dd/MM/yy", "HH:mm", "MMMM dd", "yyyy, MMMM" } },
-                       { 0x0468, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x046a, new [] { "/", "dddd, dd MMMM, yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "dd MMMM", "MMMM,yyyy" } },
-                       { 0x046b, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x046c, new [] { "/", "dd MMMM yyyy", "hh:mm:ss tt", "dd/MM/yy", "hh:mm tt", "MMMM d", "MMMM yyyy" } },
-                       { 0x046d, new [] { ".", "d MMMM yyyy 'й'", "H:mm:ss", "dd.MM.yy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x046e, new [] { ".", "d. MMMM yyyy", "HH:mm:ss", "dd.MM.yy", "HH:mm", "dd. MMMM", "MMMM yyyy" } },
-                       { 0x046f, new [] { "-", "MMMM d'.-at, 'yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "MMMM d'.-at'", "MMMM yyyy" } },
-                       { 0x0470, new [] { "/", "dddd, MMMM dd, yyyy", "h.mm.ss tt", "d/M/yyyy", "h.mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x0472, new [] { "/", "dddd, MMMM d, yyyy", "h:mm:ss tt", "dd/MM/yy", "h:mm tt", "dd MMMM", "MMMM yyyy" } },
-                       { 0x0473, new [] { "/", "dddd '፣' MMMM d 'መዓልቲ' yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "MMMM d", "MMMM yyyy" } },
-                       { 0x0474, new [] { "/", "dddd, dd MMMM, yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0475, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x0477, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "dd/MM/yy", "h:mm tt", "MMMM d", "MMMM yyyy" } },
-                       { 0x0478, new [] { "/", "yyyy'ꈎ' M'ꆪ' d'ꑍ'", "tt h:mm:ss", "yyyy/M/d", "tt h:mm", "M'’ ꆪ’'d'’ ꑍ’'", "yyyy'ꈎ' M'ꆪ'" } },
-                       { 0x047a, new [] { "-", "dddd, dd' de 'MMMM' de 'yyyy", "H:mm:ss", "dd-MM-yyyy", "H:mm", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x047c, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MMMM dd", "MMMM, yyyy" } },
-                       { 0x047e, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0480, new [] { "-", "yyyy-'يىل' d-MMMM", "H:mm:ss", "yyyy-M-d", "H:mm", "d-MMMM", "yyyy-'يىلى' MMMM" } },
-                       { 0x0481, new [] { "/", "dddd, dd MMMM, yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "d MMMM", "MMMM, yy" } },
-                       { 0x0482, new [] { "/", "dddd d MMMM' de 'yyyy", "HH.mm.ss", "dd/MM/yyyy", "HH' h 'mm", "d MMMM", "MMMM' de 'yyyy" } },
-                       { 0x0483, new [] { "/", "dddd d MMMM yyyy", "H:mm:ss", "dd/MM/yyyy", "HH:mm", "d' di 'MMMM", "MMMM' di u 'yyyy" } },
-                       { 0x0484, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0485, new [] { ".", "dddd, yyyy 'с.' MMMM d 'күнэ'", "H:mm:ss", "dd.MM.yyyy", "H:mm", "MMMM d 'күнэ'", "yyyy 'с.' MMMM" } },
-                       { 0x0486, new [] { "/", "dddd, dd' rech 'MMMM' rech 'yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "d' rech 'MMMM", "MMMM' rech 'yyyy" } },
-                       { 0x0487, new [] { "/", "d ' ' MMMM ' ' yyyy", "H:mm:ss", "d/MM/yyyy", "H:mm", "MMMM dd", "MMMM yyyy" } },
-                       { 0x0488, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x048c, new [] { "/", "yyyy, dd, MMMM, dddd", "h:mm:ss tt", "yyyy/M/d", "h:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x0491, new [] { "/", "dd MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0492, new [] { "/", "dddd, dd MMMM, yyyy", "hh:mm:ss tt", "yyyy/MM/dd", "hh:mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x0801, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0803, new [] { "/", "dddd, d MMMM' del 'yyyy", "HH:mm:ss", "dd/MM/yy", "HH:mm", "d MMMM", "MM/yy" } },
-                       { 0x0804, new [] { "/", "yyyy'年'M'月'd'日'", "H:mm:ss", "yyyy/M/d", "H:mm", "M'月'd'日'", "yyyy'年'M'月'" } },
-                       { 0x0807, new [] { ".", "dddd, d. MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0809, new [] { "/", "dd MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x080a, new [] { "/", "dddd, d' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x080c, new [] { "-", "dddd d MMMM yyyy", "HH:mm:ss", "dd-MM-yy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0810, new [] { ".", "dddd, d. MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0813, new [] { "/", "dddd d MMMM yyyy", "H:mm:ss", "d/MM/yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0814, new [] { ".", "d. MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0816, new [] { "/", "d' de 'MMMM' de 'yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x0818, new [] { ".", "dddd, d MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x081a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM yyyy." } },
-                       { 0x081d, new [] { ".", "'den 'd MMMM yyyy", "HH:mm:ss", "d.M.yyyy", "HH:mm", "'den 'd MMMM", "MMMM yyyy" } },
-                       { 0x0820, new [] { "/", "dddd, d MMMM, yyyy", "h:mm:ss tt", "d/M/yy", "h:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x082c, new [] { ".", "d MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x082e, new [] { ". ", "dddd, d. MMMM yyyy", "HH:mm:ss", "d. M. yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0832, new [] { "/", "dd MMMM yyyy", "hh:mm:ss tt", "dd/MM/yy", "hh:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x083b, new [] { "-", "dddd, MMMM d'. b. 'yyyy", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d'. b.'", "MMMM yyyy" } },
-                       { 0x083c, new [] { "/", "d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x083e, new [] { "/", "dd MMMM yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x0843, new [] { ".", "yyyy 'йил' d-MMMM", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0845, new [] { "-", "dd MMMM yyyy", "HH.mm.ss", "dd-MM-yy", "HH.mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0846, new [] { "-", "dd MMMM yyyy dddd", "h.mm.ss tt", "dd-MM-yy", "h.mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0849, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x0850, new [] { "/", "yyyyᠣᠨ MMMM dᠡᠳᠦᠷ᠂ dddd", "H:mm:ss", "yyyy/M/d", "H:mm", "MMMM dᠡᠳᠦᠷ", "yyyyᠣᠨ MMMM" } },
-                       { 0x0859, new [] { "/", "dddd, dd MMMM, yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x085d, new [] { "/", "dddd, dd MMMM, yyyy", "h:mm:ss tt", "d/MM/yyyy", "h:mm tt", "MMMM d", "MMMM, yyyy" } },
-                       { 0x085f, new [] { "-", "dd MMMM, yyyy", "H:mm:ss", "dd-MM-yyyy", "H:mm", "d MMMM", "MMMM, yyyy" } },
-                       { 0x0861, new [] { "-", "yyyy MMMM d, dddd", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d", "yyyy MMMM" } },
-                       { 0x0867, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x086b, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x0873, new [] { "/", "dddd '፣' MMMM d 'መዓልቲ' yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "MMMM d", "MMMM yyyy" } },
-                       { 0x0c01, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x0c04, new [] { "/", "yyyy'年'M'月'd'日'", "H:mm:ss", "d/M/yyyy", "H:mm", "M'月'd'日'", "yyyy'年'M'月'" } },
-                       { 0x0c07, new [] { ".", "dddd, dd. MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x0c09, new [] { "/", "dddd, d MMMM yyyy", "h:mm:ss tt", "d/MM/yyyy", "h:mm tt", "MMMM d", "MMMM yyyy" } },
-                       { 0x0c0a, new [] { "/", "dddd, d' de 'MMMM' de 'yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x0c0c, new [] { "-", "d MMMM yyyy", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "d MMMM", "MMMM, yyyy" } },
-                       { 0x0c1a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM yyyy." } },
-                       { 0x0c3b, new [] { ".", "dddd', 'MMMM d'. b. 'yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "MMMM d'. b.'", "MMMM yyyy" } },
-                       { 0x0c50, new [] { "/", "yyyyᠣᠨ MMMM dᠡᠳᠦᠷ᠂ dddd", "H:mm:ss", "yyyy/M/d", "H:mm", "MMMM dᠡᠳᠦᠷ", "yyyyᠣᠨ MMMM" } },
-                       { 0x0c6b, new [] { "/", "dddd, d MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d MMMM", "MMMM' de 'yyyy" } },
-                       { 0x1000, new [] { "/", "dd MMMM yyyy", "HH.mm.ss", "dd/MM/yyyy", "HH.mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x1001, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x1004, new [] { "/", "yyyy'年'M'月'd'日'", "tt h:mm:ss", "d/M/yyyy", "tt h:mm", "M'月'd'日'", "yyyy'年'M'月'" } },
-                       { 0x1007, new [] { ".", "dddd' den 'd'.' MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x1009, new [] { "-", "MMMM d, yyyy", "h:mm:ss tt", "yyyy-MM-dd", "h:mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x100a, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x100c, new [] { ".", "dddd d MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x101a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM, yyyy" } },
-                       { 0x103b, new [] { ".", "dddd, MMMM d'. b. 'yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "MMMM d'. b.'", "MMMM yyyy" } },
-                       { 0x105f, new [] { "-", "dddd, dd MMMM, yyyy", "H:mm:ss", "dd-MM-yyyy", "H:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x1401, new [] { "-", "dd MMMM, yyyy", "H:mm:ss", "dd-MM-yyyy", "H:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x1404, new [] { "/", "yyyy'年'M'月'd'日'", "H:mm:ss", "d/M/yyyy", "H:mm", "M'月'd'日'", "yyyy'年'M'月'" } },
-                       { 0x1407, new [] { ".", "dddd, d. MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x1409, new [] { "/", "dddd, d MMMM yyyy", "h:mm:ss tt", "d/MM/yyyy", "h:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x140a, new [] { "/", "dddd d' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x140c, new [] { "/", "dddd', le 'd MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x141a, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "dd. MMMM", "MMMM yyyy" } },
-                       { 0x143b, new [] { "-", "dddd, MMMM d'. b. 'yyyy", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d'. b.'", "MMMM yyyy" } },
-                       { 0x1801, new [] { "-", "dd MMMM, yyyy", "H:mm:ss", "dd-MM-yyyy", "H:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x1809, new [] { "/", "dd MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x180a, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "h:mm:ss tt", "d/M/yy", "h:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x180c, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x181a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM yyyy." } },
-                       { 0x183b, new [] { ".", "dddd, MMMM d'. b. 'yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "MMMM d'. b.'", "MMMM yyyy" } },
-                       { 0x1c01, new [] { "-", "dd MMMM, yyyy", "H:mm:ss", "dd-MM-yyyy", "H:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x1c09, new [] { "-", "dd MMMM yyyy", "hh:mm:ss tt", "yyyy-MM-dd", "hh:mm tt", "MMMM d", "MMMM yyyy" } },
-                       { 0x1c0a, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "h:mm:ss tt", "d/M/yy", "h:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x1c1a, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM, yyyy" } },
-                       { 0x1c3b, new [] { "-", "dddd, MMMM d'. b. 'yyyy", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d'. b.'", "MMMM yyyy" } },
-                       { 0x2001, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x2009, new [] { "/", "dd MMMM, yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM, yyyy" } },
-                       { 0x200a, new [] { "-", "dddd, dd' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd-MM-yyyy", "hh:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x200c, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x201a, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "MMMM dd", "MMMM, yyyy" } },
-                       { 0x203b, new [] { ".", "MMMM d'. p. 'yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "MMMM d'. p. '", "MMMM yyyy" } },
-                       { 0x2401, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x2409, new [] { "/", "dddd, dd MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM, yyyy" } },
-                       { 0x240a, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x240c, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x241a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM yyyy." } },
-                       { 0x243b, new [] { ".", "MMMM d'. p. 'yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "MMMM d'. p. '", "MMMM yyyy" } },
-                       { 0x2801, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x2809, new [] { "/", "dddd, dd MMMM yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x280a, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x280c, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x281a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM yyyy." } },
-                       { 0x2c01, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x2c09, new [] { "/", "dddd, dd MMMM yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x2c0a, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x2c0c, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x2c1a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM yyyy." } },
-                       { 0x3001, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x3009, new [] { "/", "dddd, d MMMM yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "d MMMM", "MMMM/yyyy" } },
-                       { 0x300a, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x300c, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x301a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM yyyy." } },
-                       { 0x3401, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x3409, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MMMM d", "MMMM, yyyy" } },
-                       { 0x340a, new [] { "-", "dddd, dd' de 'MMMM' de 'yyyy", "H:mm:ss", "dd-MM-yyyy", "H:mm", "d' de 'MMM", "MMMM' de 'yyyy" } },
-                       { 0x340c, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x3801, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x380a, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "H:mm:ss", "dd/MM/yyyy", "H:mm", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x380c, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x3c01, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x3c09, new [] { "/", "dddd, d MMMM, yyyy", "h:mm:ss tt", "d/M/yy", "h:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x3c0a, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x3c0c, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x4001, new [] { "/", "dd MMMM, yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x4009, new [] { "-", "dd MMMM yyyy", "HH:mm:ss", "dd-MM-yyyy", "HH:mm", "d MMMM", "MMMM, yyyy" } },
-                       { 0x400a, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d' de 'MMM", "MMMM' de 'yyyy" } },
-                       { 0x4409, new [] { "/", "dddd, d MMMM, yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x440a, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x4809, new [] { "/", "dddd, d MMMM yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "d MMMM", "MMMM yyyy" } },
-                       { 0x480a, new [] { "/", "dddd, d' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x4c0a, new [] { "/", "dddd, d' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d' de 'MMMM", "MMMM' del 'yyyy" } },
-                       { 0x500a, new [] { "/", "dddd, dd' de 'MMMM' de 'yyyy", "hh:mm:ss tt", "dd/MM/yyyy", "hh:mm tt", "d' de 'MMMM", "MMMM' de 'yyyy" } },
-                       { 0x540a, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MMMM d", "MMMM' de 'yyyy" } },
-                       { 0x580a, new [] { "/", "dddd, d 'de' MMMM 'de' yyyy", "HH:mm:ss", "dd/MM/yy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x641a, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "MMMM dd", "MMMM, yyyy" } },
-                       { 0x681a, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "dd. MMMM", "MMMM yyyy" } },
-                       { 0x6c1a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM yyyy." } },
-                       { 0x701a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM yyyy." } },
-                       { 0x703b, new [] { ".", "MMMM d'. p. 'yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "MMMM d'. p. '", "MMMM yyyy" } },
-                       { 0x742c, new [] { ".", "d MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "H:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x743b, new [] { ".", "MMMM d'. p. 'yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "MMMM d'. p. '", "MMMM yyyy" } },
-                       { 0x7804, new [] { "/", "yyyy'年'M'月'd'日'", "H:mm:ss", "yyyy/M/d", "H:mm", "M'月'd'日'", "yyyy'年'M'月'" } },
-                       { 0x7814, new [] { ".", "d. MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x781a, new [] { ".", "d. MMMM yyyy", "H:mm:ss", "d.M.yyyy", "H:mm", "dd. MMMM", "MMMM yyyy" } },
-                       { 0x782c, new [] { ".", "dd MMMM yyyy'-cü il'", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x783b, new [] { "-", "dddd, MMMM d'. b. 'yyyy", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d'. b.'", "MMMM yyyy" } },
-                       { 0x7843, new [] { ".", "yyyy 'йил' d-MMMM", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d MMMM", "MMMM yyyy" } },
-                       { 0x7850, new [] { "-", "yyyy 'оны' M'-р сарын' d. dddd 'гариг'.", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d.", "yyyy 'оны' MMMM" } },
-                       { 0x785d, new [] { "/", "dddd,MMMM dd,yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "d MMMM", "MMMM,yyyy" } },
-                       { 0x785f, new [] { "-", "dddd, dd MMMM, yyyy", "H:mm:ss", "dd-MM-yyyy", "H:mm", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x7c04, new [] { "/", "yyyy'年'M'月'd'日'", "H:mm:ss", "d/M/yyyy", "H:mm", "M'月'd'日'", "yyyy'年'M'月'" } },
-                       { 0x7c14, new [] { ".", "d. MMMM yyyy", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x7c1a, new [] { ".", "d. MMMM yyyy.", "H:mm:ss", "d.M.yyyy.", "H:mm", "d. MMMM", "MMMM yyyy." } },
-                       { 0x7c28, new [] { ".", "d MMMM yyyy' с.'", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x7c2e, new [] { ". ", "dddd, d. MMMM yyyy", "HH:mm:ss", "d. M. yyyy", "HH:mm", "d. MMMM", "MMMM yyyy" } },
-                       { 0x7c3b, new [] { "-", "dddd, MMMM d'. b. 'yyyy", "HH:mm:ss", "yyyy-MM-dd", "HH:mm", "MMMM d'. b.'", "MMMM yyyy" } },
-                       { 0x7c43, new [] { ".", "yyyy 'yil' d-MMMM", "HH:mm:ss", "dd.MM.yyyy", "HH:mm", "d-MMMM", "MMMM yyyy" } },
-                       { 0x7c46, new [] { "-", "dd MMMM yyyy dddd", "h.mm.ss tt", "dd-MM-yy", "h.mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x7c50, new [] { "/", "yyyyᠣᠨ MMMM dᠡᠳᠦᠷ᠂ dddd", "H:mm:ss", "yyyy/M/d", "H:mm", "MMMM dᠡᠳᠦᠷ", "yyyyᠣᠨ MMMM" } },
-                       { 0x7c59, new [] { "/", "dddd, dd MMMM, yyyy", "h:mm:ss tt", "dd/MM/yyyy", "h:mm tt", "dd MMMM", "MMMM, yyyy" } },
-                       { 0x7c5c, new [] { "/", "dddd, MMMM dd,yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MMMM d", "MMMM, yyyy" } },
-                       { 0x7c5d, new [] { "/", "dddd, dd MMMM, yyyy", "h:mm:ss tt", "d/MM/yyyy", "h:mm tt", "MMMM d", "MMMM, yyyy" } },
-                       { 0x7c5f, new [] { "-", "dd MMMM, yyyy", "H:mm:ss", "dd-MM-yyyy", "H:mm", "d MMMM", "MMMM, yyyy" } },
-                       { 0x7c67, new [] { "/", "dddd d MMMM yyyy", "HH:mm:ss", "dd/MM/yyyy", "HH:mm", "dd MMMM", "MMMM yyyy" } },
-                       { 0x7c68, new [] { "/", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "d/M/yyyy", "h:mm tt", "d MMMM", "MMMM, yyyy" } },
-                       { 0x7c92, new [] { "/", "dddd, dd MMMM, yyyy", "hh:mm:ss tt", "yyyy/MM/dd", "hh:mm tt", "d MMMM", "MMMM, yyyy" } }
-               };
-
                static readonly Dictionary<int, string[][]> DateTime2 = new Dictionary<int, string[][]> {
-                       { 0x0001, new [] { new[] { "dd/MM/yy","dd/MM/yyyy" }, new[] { "dd/MMMM/yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0002, new [] { new[] { "d.M.yyyy \'г.\'","dd.M.yyyy \'г.\'","d.MM.yyyy \'г.\'","dd.MM.yyyy \'г.\'" }, new[] { "dd MMMM yyyy \'г.\'","d MMMM yyyy \'г.\'","dddd, dd MMMM yyyy \'г.\'","dddd, d MMMM yyyy \'г.\'" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy \'г.\'" } } },
-                       { 0x0003, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/MM/yy","dd-MM-yyyy","dd-MM-yy","d-MM-yy","dd.MM.yyyy","dd.MM.yy","d.MM.yy" }, new[] { "dddd, d MMMM\' de \'yyyy","dddd, d MMMM yyyy","d MMMM\' de \'yyyy","d MMMM yyyy","d\'-\'MMMM\'-\'yyyy","ddd, d MMM yyyy" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM\' de \'yyyy","MMMM yyyy","MMM yyyy","MMM yy" } } },
-                       { 0x0004, new [] { new[] { "yyyy/M/d","yyyy-M-d","yyyy.M.d","yyyy/MM/dd","yyyy-MM-dd","yyyy.MM.dd","yy/M/d","yy-M-d","yy.M.d","yy/MM/dd" }, new[] { "yyyy\'年\'M\'月\'d\'日\'","yyyy\'年\'M\'月\'d\'日\', dddd","dddd, yyyy\'年\'M\'月\'d\'日\'","yyyy年MMMd日","yyyy年MMMd日, dddd" }, new[] { "H:mm","HH:mm","tt h:mm","tt hh:mm" }, new[] { "H:mm:ss","HH:mm:ss","tt h:mm:ss","tt hh:mm:ss" }, new[] { "yyyy\'年\'M\'月\'","yyyy.M" } } },
-                       { 0x0005, new [] { new[] { "d. M. yyyy","d/M/yyyy","dd/MM/yyyy","d/M/yy","dd/MM/yy","d-M-yy","yyyy-MM-dd","yyyy-M-d","yy-M-d" }, new[] { "d. MMMM yyyy" }, new[] { "H:mm","HH:mm","h.mm tt","H.mm" }, new[] { "H:mm:ss","HH:mm:ss","h.mm.ss tt","H.mm.ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0006, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd","yyyy MM dd" }, new[] { "d. MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0007, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd","dd. MMM. yyyy" }, new[] { "dddd, d. MMMM yyyy","d. MMMM yyyy","d. MMM. yyyy" }, new[] { "HH:mm","HH:mm\' Uhr\'" }, new[] { "HH:mm:ss","HH:mm:ss\' Uhr\'" }, new[] { "MMMM yyyy" } } },
-                       { 0x0008, new [] { new[] { "d/M/yyyy","dd/MM/yyyy","d/M/yy","dd/MM/yy","dd/MMM/yyyy","yyyy-MM-dd" }, new[] { "dddd, d MMMM yyyy","d MMMM yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0009, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM d, yyyy","MMMM d, yyyy","dddd, d MMMM, yyyy","d MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x000a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/MM/yy","d/M/yy","d-M-yy","dd-MM-yy","dd.MM.yy","yyyy-MM-dd" }, new[] { "dddd, d\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "H:mm","HH:mm","H.mm","HH.mm","HH\'H\'mm" }, new[] { "H:mm:ss","HH:mm:ss","H.mm.ss","HH.mm.ss","HH\'H\'mm.ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x000b, new [] { new[] { "d.M.yyyy","dd.MM.yyyy","d.M.yy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd, d. MMMM yyyy" }, new[] { "H:mm","H.mm" }, new[] { "H:mm:ss","H.mm.ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x000c, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy","d MMM yy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm","HH\'h\'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x000d, new [] { new[] { "dd/MM/yyyy","dd MMMM yyyy","dd/MM/yy","dd/MMMM/yyyy","dd-MM-yy","dd-MM-yyyy","dd-MMMM-yyyy","yyyy-MM-dd","dd \'ב\'MMMM yyyy","dd MMM yy" }, new[] { "dddd dd MMMM yyyy","dd MMMM yyyy","dddd dd \'ב\'MMMM yyyy","ddd dd \'ב\'MMMM yyyy","dd \'ב\'MMMM yyyy" }, new[] { "HH:mm","hh:mm tt" }, new[] { "HH:mm:ss","hh:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x000e, new [] { new[] { "yyyy.MM.dd.","yyyy. MM. dd.","yyyy-MM-dd","yy-MM-dd" }, new[] { "yyyy. MMMM d." }, new[] { "H:mm","HH:mm","h:mm tt" }, new[] { "H:mm:ss","HH:mm:ss","h:mm:ss tt" }, new[] { "yyyy. MMMM" } } },
-                       { 0x000f, new [] { new[] { "d.M.yyyy","dd.MM.yy","d. M. yyyy.","d. M. \'\\'\'yy.","yyyy-MM-dd","yy MM dd","dd/MM/yy" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd d. MMMM  yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0010, new [] { new[] { "dd/MM/yyyy","dd/MMM/yyyy","dd/MM/yy","dd.M.yy","d/M/yy" }, new[] { "dddd d MMMM yyyy","d-MMM-yy","d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0011, new [] { new[] { "yyyy/MM/dd","yy/MM/dd","yy/M/d","yyyy/M/d","yyyy-MM-dd" }, new[] { "yyyy\'年\'M\'月\'d\'日\'","yyyy\'年\'MM\'月\'dd\'日\'","yyyy\'年\'M\'月\'d\'日 \'dddd","yyyy\'年\'MM\'月\'dd\'日 \'dddd","yyyy\'年\'MMM\'月\'d\'日\'","yyyy\'年\'MMM\'月\'d\'日 \'dddd","yyyy\'年\'MMMMd\'日\'","yyyy\'年\'MMMMd\'日 \'dddd" }, new[] { "H:mm","HH:mm","tt h:mm","tt hh:mm" }, new[] { "H:mm:ss","HH:mm:ss","tt h:mm:ss","tt hh:mm:ss" }, new[] { "yyyy\'年\'M\'月\'" } } },
-                       { 0x0012, new [] { new[] { "yyyy-MM-dd","yy-MM-dd","yy-M-d","yyyy-M-d" }, new[] { "yyyy\'년\' M\'월\' d\'일\' dddd","yyyy\'년\' M\'월\' d\'일\'","yy\'년\' M\'월\' d\'일\' dddd","yy\'년\' M\'월\' d\'일\'","yyyy\'년\' MM\'월\' dd\'일\' dddd","yyyy\'년\' MM\'월\' dd\'일\'","yyyy\'년 \'MMM\'월 \'d\'일 \'dddd","yyyy\'년 \'MMM\'월 \'d\'일\'","yyyy\'년 \'MMMM d\'일 \'dddd","yyyy\'년 \'MMMM d\'일\'" }, new[] { "tt h:mm","tt hh:mm","H:mm","HH:mm" }, new[] { "tt h:mm:ss","tt hh:mm:ss","H:mm:ss","HH:mm:ss" }, new[] { "yyyy\'년\' M\'월\'" } } },
-                       { 0x0013, new [] { new[] { "d-M-yyyy","d-M-yy","dd-MM-yy","dd/MM/yy","dd.MM.yy","dd.MMM.yyyy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d-MMM-yy","d MMMM yyyy","d MMM yy" }, new[] { "HH:mm","H:mm","H.mm","HH.mm\' uur\'","HH:mm\' uur\'" }, new[] { "HH:mm:ss","H:mm:ss","HH.mm.ss\' uur\'","HH:mm:ss\' uur\'" }, new[] { "MMMM yyyy" } } },
-                       { 0x0014, new [] { new[] { "dd.MM.yyyy","d.MM.yyyy","dd.MM.yy","d.M.yy","dd. MMM. yyyy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy" }, new[] { "HH:mm","H:mm","\'kl \'H:mm","\'kl \'HH:mm","HH.mm","H.mm","\'kl \'HH.mm","\'kl \'H.mm" }, new[] { "HH:mm:ss","H:mm:ss","\'kl \'HH:mm:ss","\'kl \'H:mm:ss","HH.mm.ss","H.mm.ss","\'kl \'HH.mm.ss","\'kl \'H.mm.ss" }, new[] { "MMMM yyyy","MMM. yyyy","MM.yyyy" } } },
-                       { 0x0015, new [] { new[] { "yyyy-MM-dd","yy-MM-dd" }, new[] { "d MMMM yyyy","dd MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0016, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yyyy","d/M/yy","dd-MM-yy","dd-MM-yyyy","d-M-yy","d-M-yyyy","dd.MM.yy","dd.MM.yyyy","dd.MMM.yyyy","d.M.yy","d.M.yyyy","yyyy-MM-dd" }, new[] { "dddd, d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x0017, new [] { new[] { "dd-MM-yyyy","dd-MM-yy" }, new[] { "dddd, \'ils’\' d. MMMM, yyyy" }, new[] { "HH:mm","H:mm","HH" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0018, new [] { new[] { "dd.MM.yyyy","d.M.yyyy","d.MM.yy","dd-MM-yyyy","dd-MM-yy","dd\'/\'MM\'/\'yyyy","dd\'/\'MM\'/\'yy","yyyy-MM-dd","yyyy\'/\'MM\'/\'dd" }, new[] { "d MMMM yyyy","dddd, d MMMM yyyy","dddd d MMMM yyyy","d MMM yyyy" }, new[] { "H:mm","HH:mm","h:mm tt","hh:mm tt" }, new[] { "H:mm:ss","HH:mm:ss","h:mm:ss tt","hh:mm:ss tt" }, new[] { "MMMM yyyy","MMM yyyy","MMMM yy","MMM yy","MM.yyyy","MM.yy","MM\'/\'yyyy","MM\'/\'yy" } } },
-                       { 0x0019, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","dd-MM-yyyy","dd/MM/yy" }, new[] { "d MMMM yyyy \'г.\'","dd MMMM yyyy \'г.\'" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x001a, new [] { new[] { "d.M.yyyy.","d.M.yy.","d. M. yyyy.","dd.MM.yyyy.","d. M. yy.","dd.MM.yy.","dd. MM. yy.","yyyy-MM-dd" }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x001b, new [] { new[] { "d.M.yyyy","dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd","yy-MM-dd","dd. MM. yyyy","d/MM/yyyy","dd. MM. yy" }, new[] { "d. MMMM yyyy" }, new[] { "H:mm","HH:mm","H.mm" }, new[] { "H:mm:ss","HH:mm:ss","H.mm.ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x001c, new [] { new[] { "d.M.yyyy","d.M.yy" }, new[] { "dddd, d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x001d, new [] { new[] { "yyyy-MM-dd","yy-MM-dd" }, new[] { "\'den \'d MMMM yyyy","dddd\' den \'d MMMM yyyy" }, new[] { "HH:mm","H:mm","\'kl \'H:mm" }, new[] { "HH:mm:ss","H:mm:ss","\'kl \'H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x001e, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","dd/MM/yyyy","d MMM yyyy","dd MMM yyyy","yyyy-MM-dd" }, new[] { "d MMMM yyyy","ddd d MMMM yyyy","\'วัน\'dddd\'ที่\' d MMMM gg yyyy" }, new[] { "H:mm","HH:mm","h:mm tt","hh:mm tt" }, new[] { "H:mm:ss","HH:mm:ss","h:mm:ss tt","hh:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x001f, new [] { new[] { "d.M.yyyy","d.M.yy","dd.MM.yyyy","dd.MM.yy" }, new[] { "d MMMM yyyy dddd","d MMMM yyyy","dd MMMM yyyy dddd","dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0020, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0021, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd-MM-yyyy" }, new[] { "dd MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0022, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd" }, new[] { "d MMMM yyyy\' р.\'" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy\' р.\'" } } },
-                       { 0x0023, new [] { new[] { "dd.MM.yy" }, new[] { "d MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0024, new [] { new[] { "d.M.yyyy","d.M.yy","d. M. yyyy","dd.MM.yyyy","d.  M. yy","dd.MM.yy","dd. MM. yy" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd, d. MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0025, new [] { new[] { "d.MM.yyyy","dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd, d. MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0026, new [] { new[] { "dd.MM.yyyy.","dd.MM.yy.","dd-MM-yyyy." }, new[] { "dddd, yyyy\'. gada \'d. MMMM" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "yyyy\'. gada \'MMMM" } } },
-                       { 0x0027, new [] { new[] { "yyyy-MM-dd","yyyy MM dd" }, new[] { "yyyy \'m.\' MMMM d \'d.\'" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy \'m.\' MMMM" } } },
-                       { 0x0028, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","dd-MM-yyyy","dd/MM/yy" }, new[] { "d MMMM yyyy\' с.\'","dd MMMM yyyy\' с.\'" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0029, new [] { new[] { "dd/MM/yyyy","dd/MM/yy" }, new[] { "dddd, dd MMMM yyyy","dd MMMM yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x002a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd-MM-yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x002b, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d/MM/yyyy","dd/MM/yyyy","d/MMM/yyyy","dd/MMM/yyyy","yyyy-MM-dd" }, new[] { "d MMMM, yyyy","dddd, d MMMM yyyy","dddd, dd MMMM yyyy","dd MMMM yyyy","d-MMM-yyyy","dd-MMM-yyyy","ddd, d-MMMM-yyyy","ddd, dd-MMMM-yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x002c, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy\'-cü il\'" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x002d, new [] { new[] { "yyyy/MM/dd","yyyy-MM-dd" }, new[] { "dddd, yyyy\'(e)ko\' MMMM\'ren\' d\'a\'" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "yyyy\'(e)ko\' MMMM" } } },
-                       { 0x002e, new [] { new[] { "d. M. yyyy","d. M. yy","dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd" }, new[] { "dddd, \'dnja\' d. MMMM yyyy","dddd, d. MMMM yyyy","d. MMMM yyyy","d. M. yyyy" }, new[] { "H.mm","H.mm \'hodź.\'","HH:mm" }, new[] { "H.mm.ss","H.mm.ss \'hodź.\'","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x002f, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d. M. yyyy \'г.\'" }, new[] { "dddd, dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0030, new [] { new[] { "yyyy-MM-dd","yyyy MMM d" }, new[] { "yyyy MMMM d, dddd","yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" } } },
-                       { 0x0031, new [] { new[] { "yyyy-MM-dd","yyyy MMM d" }, new[] { "yyyy MMMM d, dddd","yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" } } },
-                       { 0x0032, new [] { new[] { "dd/MM/yy","yyyy/MM/dd","yy/MM/dd","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt","h:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0034, new [] { new[] { "yyyy/MM/dd","yy/MM/dd","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt","h:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0035, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","dd/MM/yy","yyyy/MM/dd","yy/MM/dd","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt","h:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0036, new [] { new[] { "yyyy/MM/dd","yy/MM/dd","yyyy-MM-dd","yyyy/MMM/dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt","h:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0037, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","dd.MMM.yyyy","d.MM.yy","d.M.yy","d.M.yyyy","yyyy-MM-dd" }, new[] { "dddd, d MMMM, yyyy \'წელი\'","yyyy \'წლის\' d MMMM, dddd","d MMMM, yyyy \'წელი\', dddd","d MMMM, yyyy","d MMM. yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0038, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy" }, new[] { "HH:mm","HH.mm" }, new[] { "HH:mm:ss","HH.mm.ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0039, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","d-M-yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x003a, new [] { new[] { "dd/MM/yyyy","yyyy-MM-dd","ddMMyyyy","d-M-yyyy","d/M/yyyy" }, new[] { "dddd, d\' ta\\' \'MMMM yyyy","d\' ta\\' \'MMMM yyyy","dd MMM yyyy" }, new[] { "HH:mm","h:mm tt","H:mm" }, new[] { "HH:mm:ss","h:mm:ss tt","H:mm:ss","h:mm tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x003b, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","yyyy-MM-dd" }, new[] { "dddd, MMMM d\'. b. \'yyyy","MMMM d\'. b. \'yyyy" }, new[] { "HH:mm","H:mm","HH.mm" }, new[] { "HH:mm:ss","H:mm:ss","HH.mm.ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x003c, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","d.M.yy","yyyy-MM-dd" }, new[] { "d MMMM yyyy","dd MMMM yyyy","dd MMM yyyy","d MMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x003e, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x003f, new [] { new[] { "d-MMM-yy" }, new[] { "d MMMM yyyy \'ж.\'","dd MMMM yyyy \'ж.\'" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0040, new [] { new[] { "d-MMM yy" }, new[] { "dd\'-\'MMMM yyyy\'-ж.\'" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy\'-ж.\'" } } },
-                       { 0x0041, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0042, new [] { new[] { "dd.MM.yy \'ý.\'","dd.MM.yyyy" }, new[] { "yyyy\'-nji ýylyň \'d\'-nji \'MMMM" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "yyyy \'ý.\' MMMM" } } },
-                       { 0x0043, new [] { new[] { "dd.MM.yyyy" }, new[] { "yyyy \'yil\' d-MMMM","d MMMM yyyy","dd MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0044, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","dd/MM/yy","yyyy-MM-dd","dd MMMM yyyy\' ел\'" }, new[] { "dd MMMM yyyy\' ел\'" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy","MMMM yyyy\' ел\'" } } },
-                       { 0x0045, new [] { new[] { "dd-MM-yy","d-M-yy","dd-MM-yyyy","dd\'-\'MM\'-\'yy","dd\'-\'MM\'-\'yyyy" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH.mm","H.mm","tt hh.mm","tt h.mm" }, new[] { "HH.mm.ss","H.mm.ss","tt hh.mm.ss","tt h.mm.ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0046, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy dddd","d MMMM yyyy" }, new[] { "tt hh:mm","tt h:mm","H:mm","HH:mm" }, new[] { "tt hh:mm:ss","tt h:mm:ss","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0047, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0048, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0049, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","d-M-yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x004a, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x004b, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x004c, new [] { new[] { "dd-MM-yy","d-M-yy","dd.MM.yy","d.M.yy" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH.mm","H.mm","tt hh.mm","tt h.mm" }, new[] { "HH.mm.ss","H.mm.ss","tt hh.mm.ss","tt h.mm.ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x004d, new [] { new[] { "dd-MM-yyyy" }, new[] { "yyyy,MMMM dd, dddd" }, new[] { "tt h:mm","tt hh:mm" }, new[] { "tt h:mm:ss","tt hh:mm:ss" }, new[] { "MMMM,yy","MMMM,yyyy" } } },
-                       { 0x004e, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","d-M-yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x004f, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","d-M-yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy dddd","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0050, new [] { new[] { "yyyy-MM-dd" }, new[] { "yyyy \'оны\' M\'-р сарын\' d. dddd \'гариг\'.","yyyy оны MMM d. dddd гариг." }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "yyyy \'оны\' MMMM" } } },
-                       { 0x0051, new [] { new[] { "yyyy/M/d","yyyy-M-d","yyyy.M.d","yyyy.MM.dd","yyyy-MM-dd","yyyy/MM/dd","yy-M-d","yy/M/d","yy.M.d" }, new[] { "yyyy\'ལོའི་ཟླ\' M\'ཚེས\' d","yyyy\'ལོའི་ཟླ\' M\'ཚེས\' d dddd","yyyyལོའི་ཟླ MMM d","yyyyལོའི་ཟླ MMM d dddd" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy\'ལོའི་ཟླ་\' M","yyyy.M" } } },
-                       { 0x0052, new [] { new[] { "dd/MM/yy","dd/MM/yyyy","d MMM yy","d MMM yyyy" }, new[] { "d MMMM yyyy","dddd, d MMMM yyyy" }, new[] { "HH:mm","H:mm","hh:mm tt","h:mm tt" }, new[] { "HH:mm:ss","H:mm:ss","hh:mm:ss tt","h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x0053, new [] { new[] { "dd/MM/yy","yyyy-MM-dd" }, new[] { "d MMMM yyyy","ddd d MMMM yyyy" }, new[] { "H:mm" }, new[] { "HH:mm:ss" }, new[] { "\'ខែ\' MM \'ឆ្នាំ\' yyyy" } } },
-                       { 0x0054, new [] { new[] { "dd/MM/yyyy","dd.M.yyyy","dd.M.yy" }, new[] { "dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0055, new [] { new[] { "dd-MM-yyyy","dd-MM-yy" }, new[] { "yyyy MMMM d","yyyy MMMM d dddd" }, new[] { "HH:mm","tt h:mm" }, new[] { "HH:mm:ss","tt h:mm:ss" }, new[] { "yyyy MMMM" } } },
-                       { 0x0056, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/MM/yy","d/M/yy","dd-MM-yy","dd.MM.yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy","d MMMM yyyy" }, new[] { "H:mm","HH:mm","hh:mm tt","HH\'H\'mm\'\\'\'" }, new[] { "H:mm:ss","HH:mm:ss","hh:mm:ss tt","HH\'H\'mm\'\\'\'ss\'\\'\\'\'" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x0057, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","d-M-yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0059, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dddd, dd MMMM, yyyy","dd MMMM yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x005a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x005b, new [] { new[] { "yyyy-MM-dd","yyyy/MM/dd","yy/MM/dd","dd/MM/yyyy","dd/MM/yy" }, new[] { "yyyy MMMM\' මස \'dd\' වැනිදා \'dddd" }, new[] { "tt h:mm","tt hh:mm","H:mm","HH:mm" }, new[] { "tt h:mm:ss","tt hh:mm:ss","H:mm:ss","HH:mm:ss" }, new[] { "yyyy MMMM" } } },
-                       { 0x005c, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd,yyyy","MMMM dd,yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x005d, new [] { new[] { "d/MM/yyyy","d/M/yy","yy-MM-dd","dd/MM/yyyy","yy-MM-dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, dd MMMM, yyyy","ddd, MMMM dd,yyyy","MMMM dd,yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","HH:mm","H:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x005e, new [] { new[] { "d/M/yyyy","yyyy-MM-dd" }, new[] { "dddd \'፣\' MMMM d \'ቀን\' yyyy" }, new[] { "h:mm tt" }, new[] { "h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x005f, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0061, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM,yyyy" } } },
-                       { 0x0062, new [] { new[] { "d-M-yyyy","d-M-yy","dd-MM-yy","dd/MM/yy","dd.MM.yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d-MMM-yy","d MMMM yyyy","d MMM yy" }, new[] { "H:mm","HH:mm","H:mm","H.mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0063, new [] { new[] { "yyyy/M/d","yyyy-MM-dd" }, new[] { "yyyy, dd, MMMM, dddd","yyyy, dd, MMMM" }, new[] { "h:mm tt","H:mm" }, new[] { "h:mm:ss tt","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0064, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0065, new [] { new[] { "dd/MM/yy" }, new[] { "ddd, yyyy MMMM dd" }, new[] { "HH:mm","hh:mm tt" }, new[] { "HH:mm:ss","hh:mm:ss tt" }, new[] { "yyyy, MMMM" } } },
-                       { 0x0067, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMM yy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0068, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","dd/MM/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x006a, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","dd/MM/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, dd MMMM, yyyy","dddd, MMMM dd, yyyy","MMMM dd, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM,yyyy" } } },
-                       { 0x006b, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "hh:mm tt","h:mm tt","H:mm","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x006c, new [] { new[] { "dd/MM/yy","yyyy/MM/dd","yy/MM/dd","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt","h:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x006d, new [] { new[] { "dd.MM.yy","yyyy-MM-dd" }, new[] { "d MMMM yyyy \'й\'" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x006e, new [] { new[] { "dd.MM.yy","dd/MM/yy","dd-MM-yy" }, new[] { "d. MMMM yyyy","dd. MMMMyyyy","dddd, d. MMMM yyyy","dddd, dd. MMMM yyyy","dddd,\' den \'d. MMMM yyyy","dddd,\' den \'dd. MMMM yyyy" }, new[] { "HH:mm","H:mm","H.mm","H.mm\' Auer\'" }, new[] { "HH:mm:ss","H:mm:ss\' Auer\'","HH:mm:ss\' Auer\'" }, new[] { "MMMM yyyy" } } },
-                       { 0x006f, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd","yyyy MM dd" }, new[] { "MMMM d\'.-at, \'yyyy","d. MMMM yyyy","dd. MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0070, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","dd/MM/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h.mm tt" }, new[] { "h.mm.ss tt" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0072, new [] { new[] { "dd/MM/yy","dd-MMM-yyyy" }, new[] { "dddd, MMMM d, yyyy","dd MMMM yyyy" }, new[] { "h:mm tt" }, new[] { "h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x0073, new [] { new[] { "d/M/yyyy","yyyy-MM-dd" }, new[] { "dddd \'፣\' MMMM d \'መዓልቲ\' yyyy" }, new[] { "h:mm tt" }, new[] { "h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x0074, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd-MM-yyyy","dd-MM-yy" }, new[] { "dddd, dd MMMM, yyyy","dddd, d MMMM, yyyy","dd/MMMM/yyyy","d/MMMM/yyyy","dd MMMM, yyyy","d MMMM, yyyy" }, new[] { "HH:mm","H:mm","hh:mm tt" }, new[] { "HH:mm:ss","H:mm:ss","hh:mm:ss tt" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0075, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0077, new [] { new[] { "dd/MM/yy","dd-MMM-yyyy" }, new[] { "dddd, MMMM dd, yyyy","dd MMMM yyyy" }, new[] { "h:mm tt" }, new[] { "h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x0078, new [] { new[] { "yyyy/M/d","yyyy-M-d","yyyy.M.d","yyyy.MM.dd","yyyy-MM-dd","yyyy/MM/dd" }, new[] { "yyyy\'ꈎ\' M\'ꆪ\' d\'ꑍ\'","dddd, yyyy\'ꈎ\' M\'ꆪ\' d\'ꑍ\'","yyyy\'ꈎ\' M\'ꆪ\' d\'ꑍ\', dddd","yyyyꈎ MMM dꑍ","dddd, yyyyꈎ MMM dꑍ" }, new[] { "tt h:mm","H:mm","HH:mm" }, new[] { "tt h:mm:ss","H:mm:ss","HH:mm:ss" }, new[] { "yyyy\'ꈎ\' M\'ꆪ\'","yyyy.M" } } },
-                       { 0x007a, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","dd/MM/yy","d/M/yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x007c, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","HH:mm","H:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x007e, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMM yy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm","HH\'h\'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0080, new [] { new[] { "yyyy-M-d","yyyy.M.d","yyyy-MM-dd","yyyy.MM.dd" }, new[] { "yyyy-\'يىل\' d-MMMM","yyyy-\'يىل\' d-MMMM dddd","yyyy-\'يىلى\' MMM\'نىڭ\' d\'-كۈنى\'","yyyy-\'يىلى\' MMM\'نىڭ\' d\'-كۈنى\' dddd","yyyy-M-d dddd" }, new[] { "H:mm","HH:mm","tt h:mm","tt hh:mm" }, new[] { "H:mm:ss","HH:mm:ss","tt h:mm:ss","tt hh:mm:ss" }, new[] { "yyyy-\'يىلى\' MMMM","yyyy MMMM","yyyy.M" } } },
-                       { 0x0081, new [] { new[] { "dd/MM/yyyy","d/MM/yy","dd/MM/yy","d.MM.yy","yyyy-MM-dd" }, new[] { "dddd, dd MMMM, yyyy","d MMMM yyyy" }, new[] { "h:mm tt","hh:mm tt","HH:mm","H:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yy","MMMM yyyy" } } },
-                       { 0x0082, new [] { new[] { "dd/MM/yyyy","dd/MM/yy" }, new[] { "dddd d MMMM\' de \'yyyy","d MMMM\' de \'yyyy" }, new[] { "HH\' h \'mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x0083, new [] { new[] { "dd/MM/yyyy","dd/MM/yy" }, new[] { "dddd d MMMM yyyy","d MMM yy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' di u \'yyyy" } } },
-                       { 0x0084, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMM yy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm","HH\'h\'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0085, new [] { new[] { "dd.MM.yyyy","d.M.yyyy","yyyy-MM-dd","yyyy MM d","dd yyyy MM d" }, new[] { "dddd, yyyy \'с.\' MMMM d \'күнэ\'","yyyy \'с.\' MMMM d \'күнэ\'","dddd, MMMM d \'күнэ\' yyyy \'с.\'" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "yyyy \'с.\' MMMM" } } },
-                       { 0x0086, new [] { new[] { "dd/MM/yyyy","d/MM/yyyy" }, new[] { "dddd, dd\' rech \'MMMM\' rech \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "h:mm tt","HH:mm" }, new[] { "h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM\' rech \'yyyy" } } },
-                       { 0x0087, new [] { new[] { "d/MM/yyyy","d/M/yy" }, new[] { "d \' \' MMMM \' \' yyyy","dddd, d MMMM yyyy" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0088, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMM yy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x008c, new [] { new[] { "yyyy/M/d","yyyy-MM-dd" }, new[] { "yyyy, dd, MMMM, dddd","yyyy, dd, MMMM" }, new[] { "h:mm tt","H:mm" }, new[] { "h:mm:ss tt","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0091, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","hh:mm tt","h:mm tt" }, new[] { "HH:mm:ss","H:mm:ss","hh:mm:ss tt","h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x0092, new [] { new[] { "yyyy/MM/dd" }, new[] { "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0401, new [] { new[] { "dd/MM/yy","dd/MM/yyyy" }, new[] { "dd/MMMM/yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0402, new [] { new[] { "d.M.yyyy \'г.\'","dd.M.yyyy \'г.\'","d.MM.yyyy \'г.\'","dd.MM.yyyy \'г.\'" }, new[] { "dd MMMM yyyy \'г.\'","d MMMM yyyy \'г.\'","dddd, dd MMMM yyyy \'г.\'","dddd, d MMMM yyyy \'г.\'" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy \'г.\'" } } },
-                       { 0x0403, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/MM/yy","dd-MM-yyyy","dd-MM-yy","d-MM-yy","dd.MM.yyyy","dd.MM.yy","d.MM.yy" }, new[] { "dddd, d MMMM\' de \'yyyy","dddd, d MMMM yyyy","d MMMM\' de \'yyyy","d MMMM yyyy","d\'-\'MMMM\'-\'yyyy","ddd, d MMM yyyy" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM\' de \'yyyy","MMMM yyyy","MMM yyyy","MMM yy" } } },
-                       { 0x0404, new [] { new[] { "yyyy/M/d","yyyy/MM/dd","yyyy-MM-dd" }, new[] { "yyyy\'年\'M\'月\'d\'日\'","yyyy\'年\'MM\'月\'dd\'日\'","yyyy年MMMd日","dddd yyyy年MMMd日" }, new[] { "tt hh:mm","tt h:mm","HH:mm","H:mm" }, new[] { "tt hh:mm:ss","tt h:mm:ss","HH:mm:ss","H:mm:ss" }, new[] { "yyyy\'年\'M\'月\'" } } },
-                       { 0x0405, new [] { new[] { "d. M. yyyy","d/M/yyyy","dd/MM/yyyy","d/M/yy","dd/MM/yy","d-M-yy","yyyy-MM-dd","yyyy-M-d","yy-M-d" }, new[] { "d. MMMM yyyy" }, new[] { "H:mm","HH:mm","h.mm tt","H.mm" }, new[] { "H:mm:ss","HH:mm:ss","h.mm.ss tt","H.mm.ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0406, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd","yyyy MM dd" }, new[] { "d. MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0407, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd","dd. MMM. yyyy" }, new[] { "dddd, d. MMMM yyyy","d. MMMM yyyy","d. MMM. yyyy" }, new[] { "HH:mm","HH:mm\' Uhr\'" }, new[] { "HH:mm:ss","HH:mm:ss\' Uhr\'" }, new[] { "MMMM yyyy" } } },
-                       { 0x0408, new [] { new[] { "d/M/yyyy","dd/MM/yyyy","d/M/yy","dd/MM/yy","dd/MMM/yyyy","yyyy-MM-dd" }, new[] { "dddd, d MMMM yyyy","d MMMM yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0409, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM d, yyyy","MMMM d, yyyy","dddd, d MMMM, yyyy","d MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x040b, new [] { new[] { "d.M.yyyy","dd.MM.yyyy","d.M.yy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd, d. MMMM yyyy" }, new[] { "H:mm","H.mm" }, new[] { "H:mm:ss","H.mm.ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x040c, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy","d MMM yy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm","HH\'h\'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x040d, new [] { new[] { "dd/MM/yyyy","dd MMMM yyyy","dd/MM/yy","dd/MMMM/yyyy","dd-MM-yy","dd-MM-yyyy","dd-MMMM-yyyy","yyyy-MM-dd","dd \'ב\'MMMM yyyy","dd MMM yy" }, new[] { "dddd dd MMMM yyyy","dd MMMM yyyy","dddd dd \'ב\'MMMM yyyy","ddd dd \'ב\'MMMM yyyy","dd \'ב\'MMMM yyyy" }, new[] { "HH:mm","hh:mm tt" }, new[] { "HH:mm:ss","hh:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x040e, new [] { new[] { "yyyy.MM.dd.","yyyy. MM. dd.","yyyy-MM-dd","yy-MM-dd" }, new[] { "yyyy. MMMM d." }, new[] { "H:mm","HH:mm","h:mm tt" }, new[] { "H:mm:ss","HH:mm:ss","h:mm:ss tt" }, new[] { "yyyy. MMMM" } } },
-                       { 0x040f, new [] { new[] { "d.M.yyyy","dd.MM.yy","d. M. yyyy.","d. M. \'\\'\'yy.","yyyy-MM-dd","yy MM dd","dd/MM/yy" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd d. MMMM  yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0410, new [] { new[] { "dd/MM/yyyy","dd/MMM/yyyy","dd/MM/yy","dd.M.yy","d/M/yy" }, new[] { "dddd d MMMM yyyy","d-MMM-yy","d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0411, new [] { new[] { "yyyy/MM/dd","yy/MM/dd","yy/M/d","yyyy/M/d","yyyy-MM-dd" }, new[] { "yyyy\'年\'M\'月\'d\'日\'","yyyy\'年\'MM\'月\'dd\'日\'","yyyy\'年\'M\'月\'d\'日 \'dddd","yyyy\'年\'MM\'月\'dd\'日 \'dddd","yyyy\'年\'MMM\'月\'d\'日\'","yyyy\'年\'MMM\'月\'d\'日 \'dddd","yyyy\'年\'MMMMd\'日\'","yyyy\'年\'MMMMd\'日 \'dddd" }, new[] { "H:mm","HH:mm","tt h:mm","tt hh:mm" }, new[] { "H:mm:ss","HH:mm:ss","tt h:mm:ss","tt hh:mm:ss" }, new[] { "yyyy\'年\'M\'月\'" } } },
-                       { 0x0412, new [] { new[] { "yyyy-MM-dd","yy-MM-dd","yy-M-d","yyyy-M-d" }, new[] { "yyyy\'년\' M\'월\' d\'일\' dddd","yyyy\'년\' M\'월\' d\'일\'","yy\'년\' M\'월\' d\'일\' dddd","yy\'년\' M\'월\' d\'일\'","yyyy\'년\' MM\'월\' dd\'일\' dddd","yyyy\'년\' MM\'월\' dd\'일\'","yyyy\'년 \'MMM\'월 \'d\'일 \'dddd","yyyy\'년 \'MMM\'월 \'d\'일\'","yyyy\'년 \'MMMM d\'일 \'dddd","yyyy\'년 \'MMMM d\'일\'" }, new[] { "tt h:mm","tt hh:mm","H:mm","HH:mm" }, new[] { "tt h:mm:ss","tt hh:mm:ss","H:mm:ss","HH:mm:ss" }, new[] { "yyyy\'년\' M\'월\'" } } },
-                       { 0x0413, new [] { new[] { "d-M-yyyy","d-M-yy","dd-MM-yy","dd/MM/yy","dd.MM.yy","dd.MMM.yyyy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d-MMM-yy","d MMMM yyyy","d MMM yy" }, new[] { "HH:mm","H:mm","H.mm","HH.mm\' uur\'","HH:mm\' uur\'" }, new[] { "HH:mm:ss","H:mm:ss","HH.mm.ss\' uur\'","HH:mm:ss\' uur\'" }, new[] { "MMMM yyyy" } } },
-                       { 0x0414, new [] { new[] { "dd.MM.yyyy","d.MM.yyyy","dd.MM.yy","d.M.yy","dd. MMM. yyyy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy" }, new[] { "HH:mm","H:mm","\'kl \'H:mm","\'kl \'HH:mm","HH.mm","H.mm","\'kl \'HH.mm","\'kl \'H.mm" }, new[] { "HH:mm:ss","H:mm:ss","\'kl \'HH:mm:ss","\'kl \'H:mm:ss","HH.mm.ss","H.mm.ss","\'kl \'HH.mm.ss","\'kl \'H.mm.ss" }, new[] { "MMMM yyyy","MMM. yyyy","MM.yyyy" } } },
-                       { 0x0415, new [] { new[] { "yyyy-MM-dd","yy-MM-dd" }, new[] { "d MMMM yyyy","dd MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0416, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yyyy","d/M/yy","dd-MM-yy","dd-MM-yyyy","d-M-yy","d-M-yyyy","dd.MM.yy","dd.MM.yyyy","dd.MMM.yyyy","d.M.yy","d.M.yyyy","yyyy-MM-dd" }, new[] { "dddd, d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x0417, new [] { new[] { "dd-MM-yyyy","dd-MM-yy" }, new[] { "dddd, \'ils’\' d. MMMM, yyyy" }, new[] { "HH:mm","H:mm","HH" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0418, new [] { new[] { "dd.MM.yyyy","d.M.yyyy","d.MM.yy","dd-MM-yyyy","dd-MM-yy","dd\'/\'MM\'/\'yyyy","dd\'/\'MM\'/\'yy","yyyy-MM-dd","yyyy\'/\'MM\'/\'dd" }, new[] { "d MMMM yyyy","dddd, d MMMM yyyy","dddd d MMMM yyyy","d MMM yyyy" }, new[] { "H:mm","HH:mm","h:mm tt","hh:mm tt" }, new[] { "H:mm:ss","HH:mm:ss","h:mm:ss tt","hh:mm:ss tt" }, new[] { "MMMM yyyy","MMM yyyy","MMMM yy","MMM yy","MM.yyyy","MM.yy","MM\'/\'yyyy","MM\'/\'yy" } } },
-                       { 0x0419, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","dd-MM-yyyy","dd/MM/yy" }, new[] { "d MMMM yyyy \'г.\'","dd MMMM yyyy \'г.\'" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x041a, new [] { new[] { "d.M.yyyy.","d.M.yy.","d. M. yyyy.","dd.MM.yyyy.","d. M. yy.","dd.MM.yy.","dd. MM. yy.","yyyy-MM-dd" }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x041b, new [] { new[] { "d.M.yyyy","dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd","yy-MM-dd","dd. MM. yyyy","d/MM/yyyy","dd. MM. yy" }, new[] { "d. MMMM yyyy" }, new[] { "H:mm","HH:mm","H.mm" }, new[] { "H:mm:ss","HH:mm:ss","H.mm.ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x041c, new [] { new[] { "d.M.yyyy","d.M.yy" }, new[] { "dddd, d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x041d, new [] { new[] { "yyyy-MM-dd","yy-MM-dd" }, new[] { "\'den \'d MMMM yyyy","dddd\' den \'d MMMM yyyy" }, new[] { "HH:mm","H:mm","\'kl \'H:mm" }, new[] { "HH:mm:ss","H:mm:ss","\'kl \'H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x041e, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","dd/MM/yyyy","d MMM yyyy","dd MMM yyyy","yyyy-MM-dd" }, new[] { "d MMMM yyyy","ddd d MMMM yyyy","\'วัน\'dddd\'ที่\' d MMMM gg yyyy" }, new[] { "H:mm","HH:mm","h:mm tt","hh:mm tt" }, new[] { "H:mm:ss","HH:mm:ss","h:mm:ss tt","hh:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x041f, new [] { new[] { "d.M.yyyy","d.M.yy","dd.MM.yyyy","dd.MM.yy" }, new[] { "d MMMM yyyy dddd","d MMMM yyyy","dd MMMM yyyy dddd","dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0420, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0421, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd-MM-yyyy" }, new[] { "dd MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0422, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd" }, new[] { "d MMMM yyyy\' р.\'" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy\' р.\'" } } },
-                       { 0x0423, new [] { new[] { "dd.MM.yy" }, new[] { "d MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0424, new [] { new[] { "d.M.yyyy","d.M.yy","d. M. yyyy","dd.MM.yyyy","d.  M. yy","dd.MM.yy","dd. MM. yy" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd, d. MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0425, new [] { new[] { "d.MM.yyyy","dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd, d. MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0426, new [] { new[] { "dd.MM.yyyy.","dd.MM.yy.","dd-MM-yyyy." }, new[] { "dddd, yyyy\'. gada \'d. MMMM" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "yyyy\'. gada \'MMMM" } } },
-                       { 0x0427, new [] { new[] { "yyyy-MM-dd","yyyy MM dd" }, new[] { "yyyy \'m.\' MMMM d \'d.\'" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy \'m.\' MMMM" } } },
-                       { 0x0428, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","dd-MM-yyyy","dd/MM/yy" }, new[] { "d MMMM yyyy\' с.\'","dd MMMM yyyy\' с.\'" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0429, new [] { new[] { "dd/MM/yyyy","dd/MM/yy" }, new[] { "dddd, dd MMMM yyyy","dd MMMM yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x042a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd-MM-yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x042b, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d/MM/yyyy","dd/MM/yyyy","d/MMM/yyyy","dd/MMM/yyyy","yyyy-MM-dd" }, new[] { "d MMMM, yyyy","dddd, d MMMM yyyy","dddd, dd MMMM yyyy","dd MMMM yyyy","d-MMM-yyyy","dd-MMM-yyyy","ddd, d-MMMM-yyyy","ddd, dd-MMMM-yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x042c, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy\'-cü il\'" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x042d, new [] { new[] { "yyyy/MM/dd","yyyy-MM-dd" }, new[] { "dddd, yyyy\'(e)ko\' MMMM\'ren\' d\'a\'" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "yyyy\'(e)ko\' MMMM" } } },
-                       { 0x042e, new [] { new[] { "d. M. yyyy","d. M. yy","dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd" }, new[] { "dddd, \'dnja\' d. MMMM yyyy","dddd, d. MMMM yyyy","d. MMMM yyyy","d. M. yyyy" }, new[] { "H.mm","H.mm \'hodź.\'","HH:mm" }, new[] { "H.mm.ss","H.mm.ss \'hodź.\'","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x042f, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d. M. yyyy \'г.\'" }, new[] { "dddd, dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0430, new [] { new[] { "yyyy-MM-dd","yyyy MMM d" }, new[] { "yyyy MMMM d, dddd","yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" } } },
-                       { 0x0431, new [] { new[] { "yyyy-MM-dd","yyyy MMM d" }, new[] { "yyyy MMMM d, dddd","yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" } } },
-                       { 0x0432, new [] { new[] { "dd/MM/yy","yyyy/MM/dd","yy/MM/dd","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt","h:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0434, new [] { new[] { "yyyy/MM/dd","yy/MM/dd","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt","h:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0435, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","dd/MM/yy","yyyy/MM/dd","yy/MM/dd","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt","h:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0436, new [] { new[] { "yyyy/MM/dd","yy/MM/dd","yyyy-MM-dd","yyyy/MMM/dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt","h:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0437, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","dd.MMM.yyyy","d.MM.yy","d.M.yy","d.M.yyyy","yyyy-MM-dd" }, new[] { "dddd, d MMMM, yyyy \'წელი\'","yyyy \'წლის\' d MMMM, dddd","d MMMM, yyyy \'წელი\', dddd","d MMMM, yyyy","d MMM. yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0438, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy" }, new[] { "HH:mm","HH.mm" }, new[] { "HH:mm:ss","HH.mm.ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0439, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","d-M-yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x043a, new [] { new[] { "dd/MM/yyyy","yyyy-MM-dd","ddMMyyyy","d-M-yyyy","d/M/yyyy" }, new[] { "dddd, d\' ta\\' \'MMMM yyyy","d\' ta\\' \'MMMM yyyy","dd MMM yyyy" }, new[] { "HH:mm","h:mm tt","H:mm" }, new[] { "HH:mm:ss","h:mm:ss tt","H:mm:ss","h:mm tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x043b, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","yyyy-MM-dd" }, new[] { "dddd, MMMM d\'. b. \'yyyy","MMMM d\'. b. \'yyyy" }, new[] { "HH:mm","H:mm","HH.mm" }, new[] { "HH:mm:ss","H:mm:ss","HH.mm.ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x043e, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x043f, new [] { new[] { "d-MMM-yy" }, new[] { "d MMMM yyyy \'ж.\'","dd MMMM yyyy \'ж.\'" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0440, new [] { new[] { "d-MMM yy" }, new[] { "dd\'-\'MMMM yyyy\'-ж.\'" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy\'-ж.\'" } } },
-                       { 0x0441, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0442, new [] { new[] { "dd.MM.yy \'ý.\'","dd.MM.yyyy" }, new[] { "yyyy\'-nji ýylyň \'d\'-nji \'MMMM" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "yyyy \'ý.\' MMMM" } } },
-                       { 0x0443, new [] { new[] { "dd.MM.yyyy" }, new[] { "yyyy \'yil\' d-MMMM","d MMMM yyyy","dd MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0444, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","dd/MM/yy","yyyy-MM-dd","dd MMMM yyyy\' ел\'" }, new[] { "dd MMMM yyyy\' ел\'" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy","MMMM yyyy\' ел\'" } } },
-                       { 0x0445, new [] { new[] { "dd-MM-yy","d-M-yy","dd-MM-yyyy","dd\'-\'MM\'-\'yy","dd\'-\'MM\'-\'yyyy" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH.mm","H.mm","tt hh.mm","tt h.mm" }, new[] { "HH.mm.ss","H.mm.ss","tt hh.mm.ss","tt h.mm.ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0446, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy dddd","d MMMM yyyy" }, new[] { "tt hh:mm","tt h:mm","H:mm","HH:mm" }, new[] { "tt hh:mm:ss","tt h:mm:ss","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0447, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0448, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0449, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","d-M-yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x044a, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x044b, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x044c, new [] { new[] { "dd-MM-yy","d-M-yy","dd.MM.yy","d.M.yy" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH.mm","H.mm","tt hh.mm","tt h.mm" }, new[] { "HH.mm.ss","H.mm.ss","tt hh.mm.ss","tt h.mm.ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x044d, new [] { new[] { "dd-MM-yyyy" }, new[] { "yyyy,MMMM dd, dddd" }, new[] { "tt h:mm","tt hh:mm" }, new[] { "tt h:mm:ss","tt hh:mm:ss" }, new[] { "MMMM,yy","MMMM,yyyy" } } },
-                       { 0x044e, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","d-M-yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x044f, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","d-M-yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy dddd","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0450, new [] { new[] { "yyyy-MM-dd" }, new[] { "yyyy \'оны\' M\'-р сарын\' d. dddd \'гариг\'.","yyyy оны MMM d. dddd гариг." }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "yyyy \'оны\' MMMM" } } },
-                       { 0x0451, new [] { new[] { "yyyy/M/d","yyyy-M-d","yyyy.M.d","yyyy.MM.dd","yyyy-MM-dd","yyyy/MM/dd","yy-M-d","yy/M/d","yy.M.d" }, new[] { "yyyy\'ལོའི་ཟླ\' M\'ཚེས\' d","yyyy\'ལོའི་ཟླ\' M\'ཚེས\' d dddd","yyyyལོའི་ཟླ MMM d","yyyyལོའི་ཟླ MMM d dddd" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy\'ལོའི་ཟླ་\' M","yyyy.M" } } },
-                       { 0x0452, new [] { new[] { "dd/MM/yy","dd/MM/yyyy","d MMM yy","d MMM yyyy" }, new[] { "d MMMM yyyy","dddd, d MMMM yyyy" }, new[] { "HH:mm","H:mm","hh:mm tt","h:mm tt" }, new[] { "HH:mm:ss","H:mm:ss","hh:mm:ss tt","h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x0453, new [] { new[] { "dd/MM/yy","yyyy-MM-dd" }, new[] { "d MMMM yyyy","ddd d MMMM yyyy" }, new[] { "H:mm" }, new[] { "HH:mm:ss" }, new[] { "\'ខែ\' MM \'ឆ្នាំ\' yyyy" } } },
-                       { 0x0454, new [] { new[] { "dd/MM/yyyy","dd.M.yyyy","dd.M.yy" }, new[] { "dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0455, new [] { new[] { "dd-MM-yyyy","dd-MM-yy" }, new[] { "yyyy MMMM d","yyyy MMMM d dddd" }, new[] { "HH:mm","tt h:mm" }, new[] { "HH:mm:ss","tt h:mm:ss" }, new[] { "yyyy MMMM" } } },
-                       { 0x0456, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/MM/yy","d/M/yy","dd-MM-yy","dd.MM.yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy","d MMMM yyyy" }, new[] { "H:mm","HH:mm","hh:mm tt","HH\'H\'mm\'\\'\'" }, new[] { "H:mm:ss","HH:mm:ss","hh:mm:ss tt","HH\'H\'mm\'\\'\'ss\'\\'\\'\'" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x0457, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","d-M-yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x045a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x045b, new [] { new[] { "yyyy-MM-dd","yyyy/MM/dd","yy/MM/dd","dd/MM/yyyy","dd/MM/yy" }, new[] { "yyyy MMMM\' මස \'dd\' වැනිදා \'dddd" }, new[] { "tt h:mm","tt hh:mm","H:mm","HH:mm" }, new[] { "tt h:mm:ss","tt hh:mm:ss","H:mm:ss","HH:mm:ss" }, new[] { "yyyy MMMM" } } },
-                       { 0x045c, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd,yyyy","MMMM dd,yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x045d, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd,MMMM dd,yyyy","MMMM dd,yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM,yyyy" } } },
-                       { 0x045e, new [] { new[] { "d/M/yyyy","yyyy-MM-dd" }, new[] { "dddd \'፣\' MMMM d \'ቀን\' yyyy" }, new[] { "h:mm tt" }, new[] { "h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x0461, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM,yyyy" } } },
-                       { 0x0462, new [] { new[] { "d-M-yyyy","d-M-yy","dd-MM-yy","dd/MM/yy","dd.MM.yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d-MMM-yy","d MMMM yyyy","d MMM yy" }, new[] { "H:mm","HH:mm","H:mm","H.mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0463, new [] { new[] { "yyyy/M/d","yyyy-MM-dd" }, new[] { "yyyy, dd, MMMM, dddd","yyyy, dd, MMMM" }, new[] { "h:mm tt","H:mm" }, new[] { "h:mm:ss tt","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0464, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0465, new [] { new[] { "dd/MM/yy" }, new[] { "ddd, yyyy MMMM dd" }, new[] { "HH:mm","hh:mm tt" }, new[] { "HH:mm:ss","hh:mm:ss tt" }, new[] { "yyyy, MMMM" } } },
-                       { 0x0468, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","dd/MM/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x046a, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","dd/MM/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, dd MMMM, yyyy","dddd, MMMM dd, yyyy","MMMM dd, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM,yyyy" } } },
-                       { 0x046b, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "hh:mm tt","h:mm tt","H:mm","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x046c, new [] { new[] { "dd/MM/yy","yyyy/MM/dd","yy/MM/dd","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt","h:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x046d, new [] { new[] { "dd.MM.yy","yyyy-MM-dd" }, new[] { "d MMMM yyyy \'й\'" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x046e, new [] { new[] { "dd.MM.yy","dd/MM/yy","dd-MM-yy" }, new[] { "d. MMMM yyyy","dd. MMMMyyyy","dddd, d. MMMM yyyy","dddd, dd. MMMM yyyy","dddd,\' den \'d. MMMM yyyy","dddd,\' den \'dd. MMMM yyyy" }, new[] { "HH:mm","H:mm","H.mm","H.mm\' Auer\'" }, new[] { "HH:mm:ss","H:mm:ss\' Auer\'","HH:mm:ss\' Auer\'" }, new[] { "MMMM yyyy" } } },
-                       { 0x046f, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd","yyyy MM dd" }, new[] { "MMMM d\'.-at, \'yyyy","d. MMMM yyyy","dd. MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0470, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","dd/MM/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h.mm tt" }, new[] { "h.mm.ss tt" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0472, new [] { new[] { "dd/MM/yy","dd-MMM-yyyy" }, new[] { "dddd, MMMM d, yyyy","dd MMMM yyyy" }, new[] { "h:mm tt" }, new[] { "h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x0473, new [] { new[] { "d/M/yyyy","yyyy-MM-dd" }, new[] { "dddd \'፣\' MMMM d \'መዓልቲ\' yyyy" }, new[] { "h:mm tt" }, new[] { "h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x0474, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd-MM-yyyy","dd-MM-yy" }, new[] { "dddd, dd MMMM, yyyy","dddd, d MMMM, yyyy","dd/MMMM/yyyy","d/MMMM/yyyy","dd MMMM, yyyy","d MMMM, yyyy" }, new[] { "HH:mm","H:mm","hh:mm tt" }, new[] { "HH:mm:ss","H:mm:ss","hh:mm:ss tt" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0475, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0477, new [] { new[] { "dd/MM/yy","dd-MMM-yyyy" }, new[] { "dddd, MMMM dd, yyyy","dd MMMM yyyy" }, new[] { "h:mm tt" }, new[] { "h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x0478, new [] { new[] { "yyyy/M/d","yyyy-M-d","yyyy.M.d","yyyy.MM.dd","yyyy-MM-dd","yyyy/MM/dd" }, new[] { "yyyy\'ꈎ\' M\'ꆪ\' d\'ꑍ\'","dddd, yyyy\'ꈎ\' M\'ꆪ\' d\'ꑍ\'","yyyy\'ꈎ\' M\'ꆪ\' d\'ꑍ\', dddd","yyyyꈎ MMM dꑍ","dddd, yyyyꈎ MMM dꑍ" }, new[] { "tt h:mm","H:mm","HH:mm" }, new[] { "tt h:mm:ss","H:mm:ss","HH:mm:ss" }, new[] { "yyyy\'ꈎ\' M\'ꆪ\'","yyyy.M" } } },
-                       { 0x047a, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","dd/MM/yy","d/M/yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x047c, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","HH:mm","H:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x047e, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMM yy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm","HH\'h\'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0480, new [] { new[] { "yyyy-M-d","yyyy.M.d","yyyy-MM-dd","yyyy.MM.dd" }, new[] { "yyyy-\'يىل\' d-MMMM","yyyy-\'يىل\' d-MMMM dddd","yyyy-\'يىلى\' MMM\'نىڭ\' d\'-كۈنى\'","yyyy-\'يىلى\' MMM\'نىڭ\' d\'-كۈنى\' dddd","yyyy-M-d dddd" }, new[] { "H:mm","HH:mm","tt h:mm","tt hh:mm" }, new[] { "H:mm:ss","HH:mm:ss","tt h:mm:ss","tt hh:mm:ss" }, new[] { "yyyy-\'يىلى\' MMMM","yyyy MMMM","yyyy.M" } } },
-                       { 0x0481, new [] { new[] { "dd/MM/yyyy","d/MM/yy","dd/MM/yy","d.MM.yy","yyyy-MM-dd" }, new[] { "dddd, dd MMMM, yyyy","d MMMM yyyy" }, new[] { "h:mm tt","hh:mm tt","HH:mm","H:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yy","MMMM yyyy" } } },
-                       { 0x0482, new [] { new[] { "dd/MM/yyyy","dd/MM/yy" }, new[] { "dddd d MMMM\' de \'yyyy","d MMMM\' de \'yyyy" }, new[] { "HH\' h \'mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x0483, new [] { new[] { "dd/MM/yyyy","dd/MM/yy" }, new[] { "dddd d MMMM yyyy","d MMM yy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' di u \'yyyy" } } },
-                       { 0x0484, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMM yy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm","HH\'h\'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0485, new [] { new[] { "dd.MM.yyyy","d.M.yyyy","yyyy-MM-dd","yyyy MM d","dd yyyy MM d" }, new[] { "dddd, yyyy \'с.\' MMMM d \'күнэ\'","yyyy \'с.\' MMMM d \'күнэ\'","dddd, MMMM d \'күнэ\' yyyy \'с.\'" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "yyyy \'с.\' MMMM" } } },
-                       { 0x0486, new [] { new[] { "dd/MM/yyyy","d/MM/yyyy" }, new[] { "dddd, dd\' rech \'MMMM\' rech \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "h:mm tt","HH:mm" }, new[] { "h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM\' rech \'yyyy" } } },
-                       { 0x0487, new [] { new[] { "d/MM/yyyy","d/M/yy" }, new[] { "d \' \' MMMM \' \' yyyy","dddd, d MMMM yyyy" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0488, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMM yy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x048c, new [] { new[] { "yyyy/M/d","yyyy-MM-dd" }, new[] { "yyyy, dd, MMMM, dddd","yyyy, dd, MMMM" }, new[] { "h:mm tt","H:mm" }, new[] { "h:mm:ss tt","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0491, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","hh:mm tt","h:mm tt" }, new[] { "HH:mm:ss","H:mm:ss","hh:mm:ss tt","h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x0492, new [] { new[] { "yyyy/MM/dd" }, new[] { "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0801, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0803, new [] { new[] { "dd/MM/yy","dd/MM/yyyy","dd.MM.yy","dd.MM.yyyy","dd-MM-yy","dd-MM-yyyy" }, new[] { "dddd, d MMMM\' del \'yyyy","d MMMM\' del \'yyyy","ddd, d MMM yyyy","d MMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MM/yy","MM/yyyy","MMMM-yyyy","MMM-yyyy","MM-yyyy" } } },
-                       { 0x0804, new [] { new[] { "yyyy/M/d","yyyy-M-d","yyyy.M.d","yyyy/MM/dd","yyyy-MM-dd","yyyy.MM.dd","yy/M/d","yy-M-d","yy.M.d","yy/MM/dd" }, new[] { "yyyy\'年\'M\'月\'d\'日\'","yyyy\'年\'M\'月\'d\'日\', dddd","dddd, yyyy\'年\'M\'月\'d\'日\'","yyyy年MMMd日","yyyy年MMMd日, dddd" }, new[] { "H:mm","HH:mm","tt h:mm","tt hh:mm" }, new[] { "H:mm:ss","HH:mm:ss","tt h:mm:ss","tt hh:mm:ss" }, new[] { "yyyy\'年\'M\'月\'","yyyy.M" } } },
-                       { 0x0807, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.MM.yy","dd. M. yy","d.M.yy","yyyy-MM-dd" }, new[] { "dddd, d. MMMM yyyy","d. MMMM yyyy","d. MMM yy" }, new[] { "HH:mm","H:mm","H.mm\' h\'","HH.mm\' h\'","H.mm\' Uhr\'","HHmm","HH","H\' h\'","H\' Uhr\'" }, new[] { "HH:mm:ss","H:mm:ss","HH:mm:ss\' h\'","H:mm:ss\' h\'","HH:mm:ss\' Uhr\'","H:mm:ss\' Uhr\'","HHmmss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0809, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy","dddd, d MMMM yyyy","dddd, dd MMMM yyyy" }, new[] { "HH:mm","H:mm","hh:mm tt","h:mm tt" }, new[] { "HH:mm:ss","H:mm:ss","hh:mm:ss tt","h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x080a, new [] { new[] { "dd/MM/yyyy","dd/MMM/yyyy","dd/MM/yy","d/MM/yy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "hh:mm tt","h:mm tt","H:mm","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x080c, new [] { new[] { "dd-MM-yy","dd/MM/yyyy","dd/MM/yy","dd-MM-yyyy" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm","HH\'h\'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0810, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","dd. MM. yy","d/M/yy","dd.M.yy" }, new[] { "dddd, d. MMMM yyyy","d MMMM yyyy","dddd, d MMMM yyyy" }, new[] { "HH:mm","H:mm","H.mm\' h\'" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0813, new [] { new[] { "d/MM/yyyy","d/MM/yy","dd-MM-yy","dd.MM.yy","dd.MMM.yyyy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","dd-MMM-yy","d MMMM yyyy","dd MMM yy" }, new[] { "H:mm","HH:mm","H.mm\' u.\'" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0814, new [] { new[] { "dd.MM.yyyy","d.MM.yyyy","dd.MM.yy","d.M.yy","dd. MMM. yyyy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy" }, new[] { "HH:mm","H:mm","\'kl \'H:mm","\'kl \'HH:mm","HH.mm","H.mm","\'kl \'HH.mm","\'kl \'H.mm" }, new[] { "HH:mm:ss","H:mm:ss","\'kl \'HH:mm:ss","\'kl \'H:mm:ss","HH.mm.ss","H.mm.ss","\'kl \'HH.mm.ss","\'kl \'H.mm.ss" }, new[] { "MMMM yyyy","MMM. yyyy","MM.yyyy" } } },
-                       { 0x0816, new [] { new[] { "dd/MM/yyyy","dd.MM.yyyy","dd-MM-yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy/MM/dd","yyyy.MM.dd","yyyy-MM-dd","yy/MM/dd","yy.MM.dd","yy-MM-dd" }, new[] { "d\' de \'MMMM\' de \'yyyy","dddd, d\' de \'MMMM\' de \'yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x0818, new [] { new[] { "dd.MM.yyyy","dd.MM.yyyy" }, new[] { "dddd, d MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x081a, new [] { new[] { "d.M.yyyy.","dd.MM.yyyy." }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy." } } },
-                       { 0x081d, new [] { new[] { "d.M.yyyy","dd.MM.yyyy","d.M.yy","yyyy-MM-dd" }, new[] { "\'den \'d MMMM yyyy","dddd\' den \'d MMMM yyyy" }, new[] { "HH:mm","H:mm","\'kl \'H:mm" }, new[] { "HH:mm:ss","H:mm:ss","\'kl \'H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0820, new [] { new[] { "d/M/yy","d MMM, yyyy" }, new[] { "dddd, d MMMM, yyyy","d MMMM, yyyy" }, new[] { "h:mm tt" }, new[] { "h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x082c, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","dd/MM/yy","yyyy-MM-dd" }, new[] { "d MMMM yyyy","dd MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x082e, new [] { new[] { "d. M. yyyy","d. M. yy","dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd" }, new[] { "dddd, d. MMMM yyyy","d. MMMM yyyy","d. M. yyyy" }, new[] { "HH:mm","H:mm","H:mm\' góź.\'","\'zeger \'H:mm" }, new[] { "HH:mm:ss","H:mm:ss\' góź.\'","\'zeger \'H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0832, new [] { new[] { "dd/MM/yy","yyyy/MM/dd","yy/MM/dd","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt","h:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x083b, new [] { new[] { "yyyy-MM-dd","yy-MM-dd" }, new[] { "dddd, MMMM d\'. b. \'yyyy","MMMM d\'. b. \'yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x083c, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","d.M.yy","yyyy-MM-dd" }, new[] { "d MMMM yyyy","dd MMMM yyyy","dd MMM yyyy","d MMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x083e, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0843, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","dd/MM yyyy","d.M.yy","dd/MM/yy","yyyy-MM-dd" }, new[] { "yyyy \'йил\' d-MMMM","d MMMM yyyy","dd MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0845, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH.mm","H.mm","tt hh.mm","tt h.mm" }, new[] { "HH.mm.ss","H.mm.ss","tt hh.mm.ss","tt h.mm.ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0846, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy dddd","d MMMM yyyy" }, new[] { "h.mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h.mm.ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0849, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","d-M-yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","tt hh:mm","tt h:mm" }, new[] { "HH:mm:ss","H:mm:ss","tt hh:mm:ss","tt h:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0850, new [] { new[] { "yyyy/M/d","yyyy-M-d","yyyy.M.d","yyyy.MM.dd","yyyy-MM-dd","yyyy/MM/dd","yy-M-d","yy/M/d","yy.M.d","yy/MM/dd" }, new[] { "yyyyᠣᠨ MMMM dᠡᠳᠦᠷ᠂ dddd","yyyyᠣᠨ MMMM dᠡᠳᠦᠷ" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "yyyyᠣᠨ MMMM","yyyy.M" } } },
-                       { 0x0859, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dddd, dd MMMM, yyyy","dd MMMM yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x085d, new [] { new[] { "d/MM/yyyy","d/M/yy","yy-MM-dd","dd/MM/yyyy","yy-MM-dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, dd MMMM, yyyy","ddd, MMMM dd,yyyy","MMMM dd,yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","HH:mm","H:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x085f, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0861, new [] { new[] { "yyyy-MM-dd","yyyy MMM d" }, new[] { "yyyy MMMM d, dddd","yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" } } },
-                       { 0x0867, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMM yy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x086b, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x0873, new [] { new[] { "d/M/yyyy","yyyy-MM-dd" }, new[] { "dddd \'፣\' MMMM d \'መዓልቲ\' yyyy" }, new[] { "h:mm tt" }, new[] { "h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x0c01, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0c04, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","yy/M/d","yy/MM/dd","yyyy/M/d","yyyy/MM/dd","yyyy-MM-dd" }, new[] { "yyyy\'年\'M\'月\'d\'日\'","yyyy\'年\'MM\'月\'dd\'日\'","yyyy年MMMd日","yyyy年MMMd日, dddd" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "yyyy\'年\'M\'月\'","yyyy.M" } } },
-                       { 0x0c07, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd","dd.MMM.yy","dd.MMM.yyyy" }, new[] { "dddd, dd. MMMM yyyy","d.MMMM yyyy" }, new[] { "HH:mm","H:mm","HH:mm\' Uhr\'","H:mm\' Uhr\'","HHmm","HH","H\' Uhr\'" }, new[] { "HH:mm:ss","H:mm:ss","HH:mm:ss\' Uhr\'","H:mm:ss\' Uhr\'","HHmmss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0c09, new [] { new[] { "d/MM/yyyy","d/MM/yy","d/M/yy","d/M/yyyy","dd/MM/yy","dd/MM/yyyy","dd-MMM-yy","dd-MMMM-yyyy","yyyy-MM-dd","yy/MM/dd","yyyy/MM/dd" }, new[] { "dddd, d MMMM yyyy","d MMMM yyyy" }, new[] { "h:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0c0a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/MM/yy","d/M/yy","d-M-yy","dd-MM-yy","dd.MM.yy","yyyy-MM-dd" }, new[] { "dddd, d\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "H:mm","HH:mm","H.mm","HH.mm","HH\'H\'mm" }, new[] { "H:mm:ss","HH:mm:ss","H.mm.ss","HH.mm.ss","HH\'H\'mm.ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x0c0c, new [] { new[] { "yyyy-MM-dd","yy-MM-dd","dd-MM-yy","yy MM dd","dd/MM/yy","dd/MMM/yyyy" }, new[] { "d MMMM yyyy","d MMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm","HH\'h\'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x0c1a, new [] { new[] { "d.M.yyyy.","dd.MM.yyyy.","d. M. yyyy" }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy." } } },
-                       { 0x0c3b, new [] { new[] { "d.M.yyyy","dd.MM.yyyy","d.M.yy","yyyy-MM-dd" }, new[] { "dddd\', \'MMMM d\'. b. \'yyyy","MMMM d\'. b. \'yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x0c50, new [] { new[] { "yyyy/M/d","yyyy-M-d","yyyy.M.d","yyyy.MM.dd","yyyy-MM-dd","yyyy/MM/dd","yy-M-d","yy/M/d","yy.M.d","yy/MM/dd" }, new[] { "yyyyᠣᠨ MMMM dᠡᠳᠦᠷ᠂ dddd","yyyyᠣᠨ MMMM dᠡᠳᠦᠷ" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "yyyyᠣᠨ MMMM","yyyy.M" } } },
-                       { 0x0c6b, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, d MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x1000, new [] { new[] { "dd/MM/yyyy","dd/MM/yy" }, new[] { "dd MMMM yyyy","dddd, dd MMMM yyyy" }, new[] { "HH.mm","H.mm" }, new[] { "HH.mm.ss","H.mm.ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x1001, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x1004, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","yy/M/d","yy/MM/dd","yyyy/M/d","yyyy/MM/dd","yyyy-MM-dd" }, new[] { "yyyy\'年\'M\'月\'d\'日\'","yyyy\'年\'MM\'月\'dd\'日\'","yyyy年MMMd日","dddd yyyy年MMMd日" }, new[] { "tt h:mm","tt hh:mm","H:mm","HH:mm" }, new[] { "tt h:mm:ss","tt hh:mm:ss","H:mm:ss","HH:mm:ss" }, new[] { "yyyy\'年\'M\'月\'" } } },
-                       { 0x1007, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.MM.yy","d.M.yy","d.M.yyyy","yyyy-MM-dd" }, new[] { "dddd\' den \'d\'.\' MMMM yyyy","dddd, d. MMMM yyyy","d\'.\' MMMM yyyy","d\'. \'MMM yyyy" }, new[] { "HH:mm","H:mm","H.mm","H.mm\' Uhr\'" }, new[] { "HH:mm:ss","H:mm:ss\' Uhr\'","HH:mm:ss\' Uhr\'","HHmmss" }, new[] { "MMMM yyyy" } } },
-                       { 0x1009, new [] { new[] { "yyyy-MM-dd","dd/MM/yyyy","dd/MM/yy","d/M/yy","yy-MM-dd","M/dd/yy","dd-MMM-yy","dd-MMM-yyyy","yyyy-MM-dd" }, new[] { "MMMM d, yyyy","dddd, MMMM dd, yyyy","MMMM-dd-yy","d-MMM-yy" }, new[] { "h:mm tt","hh:mm tt","HH:mm","H:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x100a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/MM/yyyy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "h:mm tt","H:mm" }, new[] { "h:mm:ss tt","H:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x100c, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy","d MMM yy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm","HH\'h\'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x101a, new [] { new[] { "d.M.yyyy.","d.M.yy.","d. M. yyyy.","dd.MM.yyyy.","d. M. yy.","dd.MM.yy.","dd. MM. yy.","yyyy-MM-dd" }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x103b, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","yyyy-MM-dd" }, new[] { "dddd, MMMM d\'. b. \'yyyy","MMMM d\'. b. \'yyyy" }, new[] { "HH:mm","H:mm","HH.mm" }, new[] { "HH:mm:ss","H:mm:ss","HH.mm.ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x105f, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd","dd.MMM.yyyy" }, new[] { "dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy","MMMM yyyy" } } },
-                       { 0x1401, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "H:mm","HH:mm","hh:mm tt" }, new[] { "H:mm:ss","HH:mm:ss","hh:mm:ss tt" }, new[] { "MMMM, yyyy" } } },
-                       { 0x1404, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","yy/M/d","yy/MM/dd","yyyy/M/d","yyyy/MM/dd","yyyy-MM-dd" }, new[] { "yyyy\'年\'M\'月\'d\'日\'","dddd yyyy\'年\'M\'月\'d\'日\'","dddd yyyy MM dd","yyyy MM dd","yyyy年MMMd日","dddd yyyy年MMMd日" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "yyyy\'年\'M\'月\'","yyyy.M" } } },
-                       { 0x1407, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.MM.yy","dd. M. yy","d.M.yy","yyyy-MM-dd","dd.MMM.yyyy","d.M.yyyy" }, new[] { "dddd, d. MMMM yyyy","d. MMMM yyyy","d. MMM yyyy" }, new[] { "HH:mm","H:mm","H.mm\' Uhr\'","HHmm","H.mm" }, new[] { "HH:mm:ss","H:mm:ss","HH:mm:ss\' Uhr\'","H:mm:ss\' Uhr\'","HHmmss" }, new[] { "MMMM yyyy" } } },
-                       { 0x1409, new [] { new[] { "d/MM/yyyy","d/MM/yy","dd/MM/yy","d.MM.yy","yyyy-MM-dd" }, new[] { "dddd, d MMMM yyyy","d MMMM yyyy" }, new[] { "h:mm tt","hh:mm tt","HH:mm","H:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x140a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","dd-MM-yy" }, new[] { "dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy","dd-MMM-yy","d/MMM/yy","d-MMM-yyyy" }, new[] { "hh:mm tt","h:mm tt","H:mm","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x140c, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd\', le \'d MMMM yyyy","dddd d MMMM yyyy","d MMM yy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm","HH\'h\'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x141a, new [] { new[] { "d.M.yyyy","d.M.yy","d. M. yyyy","dd.MM.yyyy","d. M. yy","dd.MM.yy","dd. MM. yy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd, d. MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x143b, new [] { new[] { "yyyy-MM-dd","yy-MM-dd" }, new[] { "dddd, MMMM d\'. b. \'yyyy","MMMM d\'. b. \'yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x1801, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "H:mm","HH:mm","hh:mm tt" }, new[] { "H:mm:ss","HH:mm:ss","hh:mm:ss tt" }, new[] { "MMMM, yyyy" } } },
-                       { 0x1809, new [] { new[] { "dd/MM/yyyy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x180a, new [] { new[] { "d/M/yy","dd/MM/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "h:mm tt","H:mm" }, new[] { "h:mm:ss tt","H:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x180c, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy","d MMM yy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm","HH\'h\'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x181a, new [] { new[] { "d.M.yyyy.","dd.MM.yyyy." }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy." } } },
-                       { 0x183b, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","yyyy-MM-dd" }, new[] { "dddd, MMMM d\'. b. \'yyyy","MMMM d\'. b. \'yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x1c01, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "H:mm","HH:mm","hh:mm tt" }, new[] { "H:mm:ss","HH:mm:ss","hh:mm:ss tt" }, new[] { "MMMM, yyyy" } } },
-                       { 0x1c09, new [] { new[] { "yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x1c0a, new [] { new[] { "d/M/yy","d/M/yyyy","d-M-yy","d-M-yyyy","d.M.yy","d.M.yyyy" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "h:mm tt","H:mm" }, new[] { "h:mm:ss tt","H:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x1c1a, new [] { new[] { "d.M.yyyy.","dd.MM.yyyy." }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd, d. MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x1c3b, new [] { new[] { "yyyy-MM-dd","yy-MM-dd" }, new[] { "dddd, MMMM d\'. b. \'yyyy","MMMM d\'. b. \'yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x2001, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm","H:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x2009, new [] { new[] { "dd/MM/yyyy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dd-MMM-yyyy","dd-MM-yyyy","dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy" }, new[] { "HH:mm","hh:mm tt","h:mm tt","H:mm" }, new[] { "HH:mm:ss","hh:mm:ss tt","h:mm:ss tt","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x200a, new [] { new[] { "dd-MM-yyyy","dd/MM/yyyy","dd/MM/yy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "hh:mm tt","h:mm tt","H:mm","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x200c, new [] { new[] { "dd/MM/yyyy","d MMM yyyy" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x201a, new [] { new[] { "d.M.yyyy","d.M.yy","d. M. yyyy","dd.MM.yyyy","d. M. yy","dd.MM.yy","dd. MM. yy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd, d. MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x203b, new [] { new[] { "d.M.yyyy","dd.MM.yyyy","d.M.yy","yyyy-MM-dd" }, new[] { "MMMM d\'. p. \'yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x2401, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm","H:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x2409, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/MM/yy","d/M/yyyy","dd/M/yy","d/MM/yyyy","d/M/yy" }, new[] { "dddd, dd MMMM yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy","dddd, d MMMM yyyy","d MMMM yyyy","dddd d MMMM yyyy","d MMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","hh:mm tt","h:mm tt" }, new[] { "HH:mm:ss","H:mm:ss","HH.mm.ss","H.mm.ss","hh:mm:ss tt","h:mm:ss tt" }, new[] { "MMMM, yyyy" } } },
-                       { 0x240a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/MM/yyyy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "h:mm tt","H:mm" }, new[] { "h:mm:ss tt","H:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x240c, new [] { new[] { "dd/MM/yyyy","d MMM yyyy" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x241a, new [] { new[] { "d.M.yyyy.","dd.MM.yyyy." }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy." } } },
-                       { 0x243b, new [] { new[] { "d.M.yyyy","dd.MM.yyyy","d.M.yy","yyyy-MM-dd" }, new[] { "MMMM d\'. p. \'yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x2801, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm","H:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x2809, new [] { new[] { "dd/MM/yyyy","yyyy-MM-dd" }, new[] { "dddd, dd MMMM yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x280a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "hh:mm tt","h:mm tt","H:mm","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x280c, new [] { new[] { "dd/MM/yyyy","d MMM yyyy" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x281a, new [] { new[] { "d.M.yyyy.","dd.MM.yyyy." }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy." } } },
-                       { 0x2c01, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm","H:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x2c09, new [] { new[] { "dd/MM/yyyy","yyyy-MM-dd" }, new[] { "dddd, dd MMMM yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x2c0a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "hh:mm tt","h:mm tt","HH:mm","H:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x2c0c, new [] { new[] { "dd/MM/yyyy","d MMM yyyy" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x2c1a, new [] { new[] { "d.M.yyyy.","d.M.yy.","d. M. yyyy.","dd.MM.yyyy.","d. M. yy.","dd.MM.yy.","dd. MM. yy.","yyyy-MM-dd" }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy." } } },
-                       { 0x3001, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm","H:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x3009, new [] { new[] { "dd/MM/yyyy","d/M/yyyy" }, new[] { "dddd, d MMMM yyyy","d MMMM yyyy","d MMM yy","ddd d MMMM yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM/yyyy" } } },
-                       { 0x300a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x300c, new [] { new[] { "dd/MM/yyyy","d MMM yyyy" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x301a, new [] { new[] { "d.M.yyyy.","d.M.yy.","d. M. yyyy.","dd.MM.yyyy.","d. M. yy.","dd.MM.yy.","dd. MM. yy.","yyyy-MM-dd." }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy." } } },
-                       { 0x3401, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm","H:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x3409, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yyyy-MM-dd","yy/MM/dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x340a, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","dd/MM/yy","d/M/yy" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x340c, new [] { new[] { "dd/MM/yyyy","d MMM yyyy" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x3801, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm","H:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x380a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "H:mm","HH:mm","hh:mm tt","h:mm tt" }, new[] { "H:mm:ss","HH:mm:ss","hh:mm:ss tt","h:mm:ss tt" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x380c, new [] { new[] { "dd/MM/yyyy","d MMM yyyy" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x3c01, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm","H:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x3c09, new [] { new[] { "d/M/yy","d MMM, yyyy" }, new[] { "dddd, d MMMM, yyyy","d MMMM, yyyy" }, new[] { "h:mm tt" }, new[] { "h:mm:ss tt" }, new[] { "MMMM yyyy" } } },
-                       { 0x3c0a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","dddd d\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "hh:mm tt","h:mm tt","H:mm","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy","MMMM, yyyy" } } },
-                       { 0x3c0c, new [] { new[] { "dd/MM/yyyy","d MMM yyyy" }, new[] { "dddd d MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x4001, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm","H:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x4009, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","d-M-yy","d.M.yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","hh:mm tt" }, new[] { "HH:mm:ss","H:mm:ss","h.mm.ss tt","hh:mm:ss tt" }, new[] { "MMMM, yyyy" } } },
-                       { 0x400a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","d/M/yy","dd-MM-yy" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy","d\' de \'MMMM\' de \'yyyy" }, new[] { "hh:mm tt","h:mm tt","H:mm","HH:mm" }, new[] { "hh:mm:ss tt","h:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x4409, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dddd, d MMMM, yyyy","d MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy","MMMM yyyy" } } },
-                       { 0x440a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","MM-dd-yyyy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x4809, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dddd, d MMMM yyyy","d MMMM yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x480a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","MM-dd-yyyy","yyyy-MM-dd" }, new[] { "dddd, d\' de \'MMMM\' de \'yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x4c0a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","MM-dd-yyyy","yyyy-MM-dd" }, new[] { "dddd, d\' de \'MMMM\' de \'yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM\' del \'yyyy" } } },
-                       { 0x500a, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","MM-dd-yyyy","yyyy-MM-dd" }, new[] { "dddd, dd\' de \'MMMM\' de \'yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x540a, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM\' de \'yyyy" } } },
-                       { 0x580a, new [] { new[] { "dd/MM/yy","dd/MM/yyyy" }, new[] { "dddd, d \'de\' MMMM \'de\' yyyy","d \'de\' MMMM \'de\' yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x641a, new [] { new[] { "d.M.yyyy","d.M.yy","d. M. yyyy","dd.MM.yyyy","d. M. yy","dd.MM.yy","dd. MM. yy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd, d. MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x681a, new [] { new[] { "d.M.yyyy","d.M.yy","d. M. yyyy","dd.MM.yyyy","d. M. yy","dd.MM.yy","dd. MM. yy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd, d. MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x6c1a, new [] { new[] { "d.M.yyyy.","dd.MM.yyyy." }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy." } } },
-                       { 0x701a, new [] { new[] { "d.M.yyyy.","dd.MM.yyyy." }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy." } } },
-                       { 0x703b, new [] { new[] { "d.M.yyyy","dd.MM.yyyy","d.M.yy","yyyy-MM-dd" }, new[] { "MMMM d\'. p. \'yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x742c, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","dd/MM/yy","yyyy-MM-dd" }, new[] { "d MMMM yyyy","dd MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x743b, new [] { new[] { "d.M.yyyy","dd.MM.yyyy","d.M.yy","yyyy-MM-dd" }, new[] { "MMMM d\'. p. \'yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x7804, new [] { new[] { "yyyy/M/d","yyyy-M-d","yyyy.M.d","yyyy/MM/dd","yyyy-MM-dd","yyyy.MM.dd","yy/M/d","yy-M-d","yy.M.d","yy/MM/dd" }, new[] { "yyyy\'年\'M\'月\'d\'日\'","yyyy\'年\'M\'月\'d\'日\', dddd","dddd, yyyy\'年\'M\'月\'d\'日\'","yyyy年MMMd日","yyyy年MMMd日, dddd" }, new[] { "H:mm","HH:mm","tt h:mm","tt hh:mm" }, new[] { "H:mm:ss","HH:mm:ss","tt h:mm:ss","tt hh:mm:ss" }, new[] { "yyyy\'年\'M\'月\'","yyyy.M" } } },
-                       { 0x7814, new [] { new[] { "dd.MM.yyyy","d.MM.yyyy","dd.MM.yy","d.M.yy","dd. MMM. yyyy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy" }, new[] { "HH:mm","H:mm","\'kl \'H:mm","\'kl \'HH:mm","HH.mm","H.mm","\'kl \'HH.mm","\'kl \'H.mm" }, new[] { "HH:mm:ss","H:mm:ss","\'kl \'HH:mm:ss","\'kl \'H:mm:ss","HH.mm.ss","H.mm.ss","\'kl \'HH.mm.ss","\'kl \'H.mm.ss" }, new[] { "MMMM yyyy","MMM. yyyy","MM.yyyy" } } },
-                       { 0x781a, new [] { new[] { "d.M.yyyy","d.M.yy","d. M. yyyy","dd.MM.yyyy","d. M. yy","dd.MM.yy","dd. MM. yy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy","dddd, d. MMMM yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x782c, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy\'-cü il\'" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x783b, new [] { new[] { "yyyy-MM-dd","yy-MM-dd" }, new[] { "dddd, MMMM d\'. b. \'yyyy","MMMM d\'. b. \'yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x7843, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","dd/MM yyyy","d.M.yy","dd/MM/yy","yyyy-MM-dd" }, new[] { "yyyy \'йил\' d-MMMM","d MMMM yyyy","dd MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x7850, new [] { new[] { "yyyy-MM-dd" }, new[] { "yyyy \'оны\' M\'-р сарын\' d. dddd \'гариг\'.","yyyy оны MMM d. dddd гариг." }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "yyyy \'оны\' MMMM" } } },
-                       { 0x785d, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd,MMMM dd,yyyy","MMMM dd,yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM,yyyy" } } },
-                       { 0x785f, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd","dd.MMM.yyyy" }, new[] { "dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy","MMMM yyyy" } } },
-                       { 0x7c04, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","yy/M/d","yy/MM/dd","yyyy/M/d","yyyy/MM/dd","yyyy-MM-dd" }, new[] { "yyyy\'年\'M\'月\'d\'日\'","yyyy\'年\'MM\'月\'dd\'日\'","yyyy年MMMd日","yyyy年MMMd日, dddd" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "yyyy\'年\'M\'月\'","yyyy.M" } } },
-                       { 0x7c14, new [] { new[] { "dd.MM.yyyy","d.MM.yyyy","dd.MM.yy","d.M.yy","dd. MMM. yyyy","yyyy-MM-dd" }, new[] { "d. MMMM yyyy","dd. MMMM yyyy" }, new[] { "HH:mm","H:mm","\'kl \'H:mm","\'kl \'HH:mm","HH.mm","H.mm","\'kl \'HH.mm","\'kl \'H.mm" }, new[] { "HH:mm:ss","H:mm:ss","\'kl \'HH:mm:ss","\'kl \'H:mm:ss","HH.mm.ss","H.mm.ss","\'kl \'HH.mm.ss","\'kl \'H.mm.ss" }, new[] { "MMMM yyyy","MMM. yyyy","MM.yyyy" } } },
-                       { 0x7c1a, new [] { new[] { "d.M.yyyy.","dd.MM.yyyy." }, new[] { "d. MMMM yyyy.","dd. MMMM yyyy.","dddd, d. MMMM yyyy." }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM yyyy." } } },
-                       { 0x7c28, new [] { new[] { "dd.MM.yyyy","dd.MM.yy","d.M.yy","dd-MM-yyyy","dd/MM/yy" }, new[] { "d MMMM yyyy\' с.\'","dd MMMM yyyy\' с.\'" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x7c2e, new [] { new[] { "d. M. yyyy","d. M. yy","dd.MM.yyyy","dd.MM.yy","yyyy-MM-dd" }, new[] { "dddd, d. MMMM yyyy","d. MMMM yyyy","d. M. yyyy" }, new[] { "HH:mm","H:mm","H:mm\' góź.\'","\'zeger \'H:mm" }, new[] { "HH:mm:ss","H:mm:ss\' góź.\'","\'zeger \'H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x7c3b, new [] { new[] { "yyyy-MM-dd","yy-MM-dd" }, new[] { "dddd, MMMM d\'. b. \'yyyy","MMMM d\'. b. \'yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x7c43, new [] { new[] { "dd.MM.yyyy" }, new[] { "yyyy \'yil\' d-MMMM","d MMMM yyyy","dd MMMM yyyy" }, new[] { "HH:mm","H:mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x7c46, new [] { new[] { "dd-MM-yy","d-M-yy","d.M.yy","dd-MM-yyyy","yyyy-MM-dd" }, new[] { "dd MMMM yyyy dddd","d MMMM yyyy" }, new[] { "h.mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h.mm.ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x7c50, new [] { new[] { "yyyy/M/d","yyyy-M-d","yyyy.M.d","yyyy.MM.dd","yyyy-MM-dd","yyyy/MM/dd","yy-M-d","yy/M/d","yy.M.d","yy/MM/dd" }, new[] { "yyyyᠣᠨ MMMM dᠡᠳᠦᠷ᠂ dddd","yyyyᠣᠨ MMMM dᠡᠳᠦᠷ" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "yyyyᠣᠨ MMMM","yyyy.M" } } },
-                       { 0x7c59, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","yyyy-MM-dd" }, new[] { "dddd, dd MMMM, yyyy","dd MMMM yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x7c5c, new [] { new[] { "M/d/yyyy","M/d/yy","MM/dd/yy","MM/dd/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd,yyyy","MMMM dd,yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x7c5d, new [] { new[] { "d/MM/yyyy","d/M/yy","yy-MM-dd","dd/MM/yyyy","yy-MM-dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, dd MMMM, yyyy","ddd, MMMM dd,yyyy","MMMM dd,yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","HH:mm","H:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","HH:mm:ss","H:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x7c5f, new [] { new[] { "dd-MM-yyyy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dd MMMM, yyyy","dddd, dd MMMM, yyyy" }, new[] { "H:mm","HH:mm" }, new[] { "H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x7c67, new [] { new[] { "dd/MM/yyyy","dd/MM/yy","dd.MM.yy","dd-MM-yy","yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy","d MMM yy","d MMMM yyyy" }, new[] { "HH:mm","H:mm","HH.mm","HH\' h \'mm" }, new[] { "HH:mm:ss","H:mm:ss" }, new[] { "MMMM yyyy" } } },
-                       { 0x7c68, new [] { new[] { "d/M/yyyy","d/M/yy","dd/MM/yy","dd/MM/yyyy","yy/MM/dd","yyyy-MM-dd","dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy","MMMM dd, yyyy","dddd, dd MMMM, yyyy","dd MMMM, yyyy" }, new[] { "h:mm tt","hh:mm tt","H:mm","HH:mm" }, new[] { "h:mm:ss tt","hh:mm:ss tt","H:mm:ss","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
-                       { 0x7c92, new [] { new[] { "yyyy/MM/dd" }, new[] { "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt","HH:mm" }, new[] { "hh:mm:ss tt","HH:mm:ss" }, new[] { "MMMM, yyyy" } } },
+                       { 0x0001, new [] { new[] { "dd/MM/yy", "dd/MM/yyyy" }, new[] { "dd/MMMM/yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0002, new [] { new[] { "d.M.yyyy 'г.'", "dd.M.yyyy 'г.'", "d.MM.yyyy 'г.'", "dd.MM.yyyy 'г.'" }, new[] { "dd MMMM yyyy 'г.'", "d MMMM yyyy 'г.'", "dddd, dd MMMM yyyy 'г.'", "dddd, d MMMM yyyy 'г.'" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy 'г.'" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0003, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM 'de' yyyy", "d MMMM 'de' yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0004, new [] { new[] { "yyyy/M/d", "yyyy-M-d", "yyyy.M.d", "yyyy/MM/dd", "yyyy-MM-dd", "yyyy.MM.dd", "yy/M/d", "yy-M-d", "yy.M.d", "yy/MM/dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'M'月'd'日', dddd", "dddd, yyyy'年'M'月'd'日'", "yyyy年MMMd日", "yyyy年MMMd日, dddd" }, new[] { "H:mm", "HH:mm", "tt h:mm", "tt hh:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "tt h:mm:ss", "tt hh:mm:ss" }, new[] { "yyyy'年'M'月'", "yyyy'年'MMM", "yyyy'年'MMMM", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "M月d日" } } },
+                       { 0x0005, new [] { new[] { "dd.MM.yyyy", "d. M. yyyy" }, new[] { "dddd d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0006, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd", "yyyy MM dd" }, new[] { "d. MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0007, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "yyyy-MM-dd", "dd. MMM. yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy", "d. MMM. yyyy" }, new[] { "HH:mm", "HH:mm' Uhr'" }, new[] { "HH:mm:ss", "HH:mm:ss' Uhr'" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0008, new [] { new[] { "d/M/yyyy", "dd/MM/yyyy", "d/M/yy", "dd/MM/yy", "dd/MMM/yyyy", "yyyy-MM-dd" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0009, new [] { new[] { "M/d/yyyy", "M/d/yy", "MM/dd/yy", "MM/dd/yyyy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, MMMM d, yyyy", "MMMM d, yyyy", "dddd, d MMMM, yyyy", "d MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x000a, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/MM/yy", "d/M/yy", "d-M-yy", "dd-MM-yy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, d' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm", "H.mm", "HH.mm", "HH'H'mm" }, new[] { "H:mm:ss", "HH:mm:ss", "H.mm.ss", "HH.mm.ss", "HH'H'mm.ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d 'de' MMMM" } } },
+                       { 0x000b, new [] { new[] { "d.M.yyyy" }, new[] { "dddd d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "H.mm" }, new[] { "H.mm.ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { "." }, new[] { "d. MMMM" } } },
+                       { 0x000c, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd.MM.yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy", "d MMM yy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm", "HH'h'mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x000d, new [] { new[] { "dd/MM/yyyy", "dd MMMM yyyy", "dd/MM/yy", "dd/MMMM/yyyy", "dd-MM-yy", "dd-MM-yyyy", "dd-MMMM-yyyy", "yyyy-MM-dd", "dd 'ב'MMMM yyyy", "dd MMM yy" }, new[] { "dddd dd MMMM yyyy", "dd MMMM yyyy", "dddd dd 'ב'MMMM yyyy", "ddd dd 'ב'MMMM yyyy", "dd 'ב'MMMM yyyy" }, new[] { "HH:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "hh:mm:ss tt" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x000e, new [] { new[] { "yyyy. MM. dd.", "yyyy. MMM d." }, new[] { "yyyy. MMMM d., dddd", "yyyy. MMMM d." }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "yyyy. MMMM" }, new[] { ". " }, new[] { ":" }, new[] { "MMMM d." } } },
+                       { 0x000f, new [] { new[] { "d.M.yyyy", "d. MMM yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0010, new [] { new[] { "dd/MM/yyyy", "dd/MMM/yyyy", "dd/MM/yy", "dd.M.yy", "d/M/yy" }, new[] { "dddd d MMMM yyyy", "d-MMM-yy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0011, new [] { new[] { "yyyy/MM/dd", "yy/MM/dd", "yy/M/d", "yyyy/M/d", "yyyy-MM-dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'MM'月'dd'日'", "yyyy'年'M'月'd'日 'dddd", "yyyy'年'MM'月'dd'日 'dddd", "yyyy'年'MMM'月'd'日'", "yyyy'年'MMM'月'd'日 'dddd", "yyyy'年'MMMMd'日'", "yyyy'年'MMMMd'日 'dddd" }, new[] { "H:mm", "HH:mm", "tt h:mm", "tt hh:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "tt h:mm:ss", "tt hh:mm:ss" }, new[] { "yyyy'年'M'月'", "yyyy'年'MMM'月'", "yyyy'年'MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "M月d日" } } },
+                       { 0x0012, new [] { new[] { "yyyy-MM-dd", "yy-MM-dd", "yy-M-d", "yyyy-M-d" }, new[] { "yyyy'년' M'월' d'일' dddd", "yyyy'년' M'월' d'일'", "yy'년' M'월' d'일' dddd", "yy'년' M'월' d'일'", "yyyy'년' MM'월' dd'일' dddd", "yyyy'년' MM'월' dd'일'", "yyyy'년 'MMM'월 'd'일 'dddd", "yyyy'년 'MMM'월 'd'일'", "yyyy'년 'MMMM d'일 'dddd", "yyyy'년 'MMMM d'일'" }, new[] { "tt h:mm", "tt hh:mm", "H:mm", "HH:mm" }, new[] { "tt h:mm:ss", "tt hh:mm:ss", "H:mm:ss", "HH:mm:ss" }, new[] { "yyyy'년' M'월'", "yyyy'년' MMM'월'", "yyyy'년' MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "M월 d일" } } },
+                       { 0x0013, new [] { new[] { "d-M-yyyy", "d-M-yy", "dd-MM-yy", "dd/MM/yy", "dd.MM.yy", "dd.MMM.yyyy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d-MMM-yy", "d MMMM yyyy", "d MMM yy" }, new[] { "HH:mm", "H:mm", "H.mm", "HH.mm' uur'", "HH:mm' uur'" }, new[] { "HH:mm:ss", "H:mm:ss", "HH.mm.ss' uur'", "HH:mm:ss' uur'" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0014, new [] { new[] { "dd.MM.yyyy", "d. MMM yyyy" }, new[] { "dddd d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "HH.mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { "." }, new[] { "d.MMMM." } } },
+                       { 0x0015, new [] { new[] { "dd.MM.yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0016, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/M/yyyy", "d/M/yy", "dd-MM-yy", "dd-MM-yyyy", "d-M-yy", "d-M-yyyy", "dd.MM.yy", "dd.MM.yyyy", "dd.MMM.yyyy", "d.M.yy", "d.M.yyyy", "yyyy-MM-dd" }, new[] { "dddd, d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d 'de' MMMM" } } },
+                       { 0x0017, new [] { new[] { "dd-MM-yyyy" }, new[] { "dddd, 'ils' d 'da' MMMM yyyy", "d 'da' MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0018, new [] { new[] { "dd.MM.yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0019, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd-MM-yyyy", "dd/MM/yy" }, new[] { "d MMMM yyyy 'г.'", "dd MMMM yyyy 'г.'" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x001a, new [] { new[] { "d.M.yyyy.", "d.M.yy.", "d. M. yyyy.", "dd.MM.yyyy.", "d. M. yy.", "dd.MM.yy.", "dd. MM. yy.", "yyyy-MM-dd" }, new[] { "d. MMMM yyyy.", "dd. MMMM yyyy.", "dddd, d. MMMM yyyy." }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x001b, new [] { new[] { "dd.MM.yyyy", "d. M. yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x001c, new [] { new[] { "d.M.yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x001d, new [] { new[] { "yyyy-MM-dd", "yy-MM-dd" }, new[] { "'den 'd MMMM yyyy", "dddd' den 'd MMMM yyyy" }, new[] { "HH:mm", "H:mm", "'kl 'H:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "'kl 'H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "'den 'd MMMM" } } },
+                       { 0x001e, new [] { new[] { "d/M/yyyy", "d/M/yy", "dd/MM/yy", "dd/MM/yyyy", "d MMM yyyy", "dd MMM yyyy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "ddd d MMMM yyyy", "'วัน'dddd'ที่' d MMMM gg yyyy" }, new[] { "H:mm", "HH:mm", "h:mm tt", "hh:mm tt" }, new[] { "H:mm:ss", "HH:mm:ss", "h:mm:ss tt", "hh:mm:ss tt" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x001f, new [] { new[] { "d.MM.yyyy", "d MMM yyyy" }, new[] { "d MMMM yyyy dddd", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0020, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0021, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH.mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { "." }, new[] { "d MMMM" } } },
+                       { 0x0022, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy' р.'" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy' р.'" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0023, new [] { new[] { "dd.MM.yy" }, new[] { "d MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy г." }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0024, new [] { new[] { "d. MM. yyyy", "d. MMM yyyy" }, new[] { "dddd, dd. MMMM yyyy", "dd. MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { ". " }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0025, new [] { new[] { "dd.MM.yyyy", "d. MMM yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm.ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0026, new [] { new[] { "dd.MM.yyyy", "yyyy. 'gada' d. MMM" }, new[] { "dddd, yyyy. 'gada' d. MMMM", "yyyy. 'gada' d. MMMM" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy. 'g'. MMMM" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0027, new [] { new[] { "yyyy-MM-dd" }, new[] { "yyyy 'm'. MMMM d 'd'., dddd", "yyyy 'm'. MMMM d 'd'." }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0028, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd-MM-yyyy", "dd/MM/yy" }, new[] { "d MMMM yyyy' с.'", "dd MMMM yyyy' с.'" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0029, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x002a, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd-MM-yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x002b, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d/MM/yyyy", "dd/MM/yyyy", "d/MMM/yyyy", "dd/MMM/yyyy", "yyyy-MM-dd" }, new[] { "d MMMM, yyyy", "dddd, d MMMM yyyy", "dddd, dd MMMM yyyy", "dd MMMM yyyy", "d-MMM-yyyy", "dd-MMM-yyyy", "ddd, d-MMMM-yyyy", "ddd, dd-MMMM-yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x002c, new [] { new[] { "dd.MM.yyyy", "d MMM yyyy" }, new[] { "d MMMM yyyy, dddd", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x002d, new [] { new[] { "yyyy/MM/dd", "yyyy MMM d" }, new[] { "yyyy('e')'ko' MMMM d, dddd", "yyyy('e')'ko' MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy('e')'ko' MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x002e, new [] { new[] { "d.M.yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "H:mm 'hodź'." }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x002f, new [] { new[] { "dd.M.yyyy" }, new[] { "dddd, dd MMMM yyyy", "dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy 'г'." }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0030, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0031, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0032, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0033, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0034, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0035, new [] { new[] { "M/d/yyyy", "MMM d, yyyy" }, new[] { "dddd, MMMM d, yyyy", "MMMM d, yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0036, new [] { new[] { "yyyy-MM-dd", "dd MMM yyyy" }, new[] { "dddd, dd MMMM yyyy", "dd MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0037, new [] { new[] { "dd.MM.yyyy", "d MMM, yyyy" }, new[] { "dddd, dd MMMM, yyyy", "d MMMM, yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0038, new [] { new[] { "dd-MM-yyyy" }, new[] { "dddd dd MMMM yyyy", "d. MMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0039, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x003a, new [] { new[] { "dd/MM/yyyy", "dd MMM yyyy" }, new[] { "dddd, d 'ta'’ MMMM yyyy", "d 'ta'’ MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM 'ta'’ yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d 'ta'’ MMMM" } } },
+                       { 0x003b, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x003c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x003d, new [] { new[] { "dd/MM/yyyy", "dטן MMM yyyy" }, new[] { "dddd, dטן MMMM yyyy", "dטן MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d בMMMM" } } },
+                       { 0x003e, new [] { new[] { "d/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x003f, new [] { new[] { "dd/MM/yyyy", "yyyy, dd-MMM" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0040, new [] { new[] { "d-MMM yy" }, new[] { "dd-MMMM yyyy'-ж.'" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy'-ж.'" }, new[] { "-" }, new[] { ":" }, new[] { "d-MMMM" } } },
+                       { 0x0041, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0042, new [] { new[] { "dd.MM.yy 'ý.'", "dd.MM.yyyy" }, new[] { "yyyy'-nji ýylyň 'd'-nji 'MMMM" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "yyyy 'ý.' MMMM" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0043, new [] { new[] { "yyyy/MM/dd", "yyyy MMM d" }, new[] { "dddd, yyyy MMMM dd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0044, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd/MM/yy", "yyyy-MM-dd", "dd MMMM yyyy' ел'" }, new[] { "dd MMMM yyyy' ел'" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy", "MMMM yyyy' ел'" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0045, new [] { new[] { "dd-MM-yy", "d-M-yy", "dd-MM-yyyy", "dd-MM-yy", "dd-MM-yyyy" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH.mm", "H.mm", "tt hh.mm", "tt h.mm" }, new[] { "HH.mm.ss", "H.mm.ss", "tt hh.mm.ss", "tt h.mm.ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { "." }, new[] { "d MMMM" } } },
+                       { 0x0046, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy dddd", "d MMMM yyyy" }, new[] { "tt hh:mm", "tt h:mm", "H:mm", "HH:mm" }, new[] { "tt hh:mm:ss", "tt h:mm:ss", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0047, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0048, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0049, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x004a, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x004b, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x004c, new [] { new[] { "dd-MM-yy", "d-M-yy", "dd.MM.yy", "d.M.yy" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH.mm", "H.mm", "tt hh.mm", "tt h.mm" }, new[] { "HH.mm.ss", "H.mm.ss", "tt hh.mm.ss", "tt h.mm.ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { "." }, new[] { "MMMM dd" } } },
+                       { 0x004d, new [] { new[] { "dd-MM-yyyy" }, new[] { "yyyy,MMMM dd, dddd" }, new[] { "tt h:mm", "tt hh:mm", "H:mm" }, new[] { "tt h:mm:ss", "tt hh:mm:ss", "H:mm:ss" }, new[] { "MMMM,yy", "MMMM,yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x004e, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x004f, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy dddd", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0050, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "dddd, yyyy 'оны' MM 'сарын' d", "yyyy 'оны' MM 'сарын' d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0051, new [] { new[] { "yyyy/M/d", "yyyy-M-d", "yyyy.M.d", "yyyy.MM.dd", "yyyy-MM-dd", "yyyy/MM/dd", "yy-M-d", "yy/M/d", "yy.M.d" }, new[] { "yyyy'ལོའི་ཟླ' M'ཚེས' d", "yyyy'ལོའི་ཟླ' M'ཚེས' d dddd", "yyyyལོའི་ཟླ MMM d", "yyyyལོའི་ཟླ MMM d dddd" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy'ལོའི་ཟླ་' M", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "ཟླ་Mཚེས་d" } } },
+                       { 0x0052, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0053, new [] { new[] { "dd/MM/yy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "ddd d MMMM yyyy" }, new[] { "H:mm" }, new[] { "HH:mm:ss" }, new[] { "'ខែ' MM 'ឆ្នាំ' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0054, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd ທີ d MMMM gg yyyy", "d MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0055, new [] { new[] { "dd-MM-yyyy", "d MMM yyyy" }, new[] { "dddd၊ dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0056, new [] { new[] { "dd/MM/yyyy", "d MMM, yyyy" }, new[] { "dddd dd MMMM yyyy", "dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0057, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0058, new [] { new[] { "dd/MM/yyyy" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0059, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dddd, dd MMMM, yyyy", "dd MMMM yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x005a, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x005b, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "tt h.mm", "HH:mm" }, new[] { "tt h.mm.ss", "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { "." }, new[] { "MMMM d" } } },
+                       { 0x005c, new [] { new[] { "M/d/yyyy", "M/d/yy", "MM/dd/yy", "MM/dd/yyyy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, MMMM dd,yyyy", "MMMM dd,yyyy", "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x005d, new [] { new[] { "d/MM/yyyy", "d/M/yy", "yy-MM-dd", "dd/MM/yyyy", "yy-MM-dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, dd MMMM, yyyy", "ddd, MMMM dd,yyyy", "MMMM dd,yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "HH:mm", "H:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x005e, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x005f, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0060, new [] { new[] { "M/d/yyyy", "MMM d, yyyy" }, new[] { "dddd, MMMM d, yyyy", "MMMM d, yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0061, new [] { new[] { "M/d/yyyy", "M/d/yy", "MM/dd/yy", "MM/dd/yyyy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy", "MMMM dd, yyyy", "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM,yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0062, new [] { new[] { "dd-MM-yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0063, new [] { new[] { "yyyy/M/d", "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "dddd d MMMM yyyy" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0064, new [] { new[] { "M/d/yyyy", "MMM d, yyyy" }, new[] { "dddd, MMMM d, yyyy", "MMMM d, yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0065, new [] { new[] { "dd/MM/yy" }, new[] { "ddd, yyyy MMMM dd" }, new[] { "HH:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "hh:mm:ss tt" }, new[] { "yyyy, MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x0066, new [] { new[] { "d/M/yyyy" }, new[] { "dddd, MMMM dd, yyyy" }, new[] { "h:mmt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x0067, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd.MM.yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d MMM yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0068, new [] { new[] { "d/M/yyyy", "d MMM, yyyy" }, new[] { "dddd, d MMMM, yyyy", "d MMMM, yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0069, new [] { new[] { "d/M/yyyy" }, new[] { "dddd, MMMM dd, yyyy" }, new[] { "h:mmt", "H:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x006a, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x006b, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/M/yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "hh:mm tt", "h:mm tt", "H:mm", "HH:mm" }, new[] { "hh:mm:ss tt", "h:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d 'de' MMMM" } } },
+                       { 0x006c, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x006d, new [] { new[] { "dd.MM.yy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy 'й'" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x006e, new [] { new[] { "dd.MM.yy", "dd/MM/yy", "dd-MM-yy" }, new[] { "d. MMMM yyyy", "dd. MMMMyyyy", "dddd, d. MMMM yyyy", "dddd, dd. MMMM yyyy", "dddd,' den 'd. MMMM yyyy", "dddd,' den 'dd. MMMM yyyy" }, new[] { "HH:mm", "H:mm", "H.mm", "H.mm' Auer'" }, new[] { "HH:mm:ss", "H:mm:ss' Auer'", "HH:mm:ss' Auer'" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd. MMMM" } } },
+                       { 0x006f, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd", "yyyy MM dd" }, new[] { "MMMM d'.-at, 'yyyy", "d. MMMM yyyy", "dd. MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d'.-at'" } } },
+                       { 0x0070, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0071, new [] { new[] { "d/M/yyyy" }, new[] { "dddd, MMMM dd, yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x0072, new [] { new[] { "dd/MM/yyyy", "dd-MMM-yyyy" }, new[] { "dddd, MMMM d, yyyy", "dd MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0073, new [] { new[] { "dd/MM/yyyy", "dd-MMM-yyyy" }, new[] { "dddd፡ dd MMMM መዓልቲ yyyy gg", "dd MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0074, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd-MM-yyyy", "dd-MM-yy" }, new[] { "dddd, dd MMMM, yyyy", "dddd, d MMMM, yyyy", "dd/MMMM/yyyy", "d/MMMM/yyyy", "dd MMMM, yyyy", "d MMMM, yyyy" }, new[] { "HH:mm", "H:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "H:mm:ss", "hh:mm:ss tt" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0075, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0076, new [] { new[] { "dd/MM/yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "H:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x0077, new [] { new[] { "dd/MM/yyyy", "dd-MMM-yyyy" }, new[] { "dddd, MMMM dd, yyyy", "dd MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0078, new [] { new[] { "yyyy/M/d", "yyyy-M-d", "yyyy.M.d", "yyyy.MM.dd", "yyyy-MM-dd", "yyyy/MM/dd" }, new[] { "yyyy'ꈎ' M'ꆪ' d'ꑍ'", "dddd, yyyy'ꈎ' M'ꆪ' d'ꑍ'", "yyyy'ꈎ' M'ꆪ' d'ꑍ', dddd", "yyyyꈎ MMM dꑍ", "dddd, yyyyꈎ MMM dꑍ" }, new[] { "tt h:mm", "H:mm", "HH:mm" }, new[] { "tt h:mm:ss", "H:mm:ss", "HH:mm:ss" }, new[] { "yyyy'ꈎ' M'ꆪ'", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "M’ ꆪ’d’ ꑍ’" } } },
+                       { 0x0079, new [] { new[] { "d-M-yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy", "d MMM yy", "d-MMM-yy" }, new[] { "H:mm", "HH:mm", "H.mm", "HH.mm' uur'", "HH:mm' uur'" }, new[] { "H:mm:ss", "HH:mm:ss", "H:mm", "H.mm", "HH.mm.ss' uur'", "HH:mm:ss' uur'" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x007a, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "dd/MM/yy", "d/M/yy", "yyyy-MM-dd" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d 'de' MMMM" } } },
+                       { 0x007c, new [] { new[] { "M/d/yyyy", "M/d/yy", "MM/dd/yy", "MM/dd/yyyy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy", "MMMM dd, yyyy", "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "HH:mm", "H:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x007e, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0080, new [] { new[] { "yyyy-M-d", "yyyy.M.d", "yyyy-MM-dd", "yyyy.MM.dd" }, new[] { "yyyy-'يىل' d-MMMM", "yyyy-'يىل' d-MMMM dddd", "yyyy-'يىلى' MMM'نىڭ' d'-كۈنى'", "yyyy-'يىلى' MMM'نىڭ' d'-كۈنى' dddd", "yyyy-M-d dddd" }, new[] { "H:mm", "HH:mm", "tt h:mm", "tt hh:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "tt h:mm:ss", "tt hh:mm:ss" }, new[] { "yyyy-'يىلى' MMMM", "yyyy MMMM", "yyyy.M" }, new[] { "-" }, new[] { ":" }, new[] { "d-MMMM" } } },
+                       { 0x0081, new [] { new[] { "dd/MM/yyyy", "d/MM/yy", "dd/MM/yy", "d.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, dd MMMM, yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "hh:mm tt", "HH:mm", "H:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yy", "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0082, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy" }, new[] { "dddd d MMMM' de 'yyyy", "d MMMM' de 'yyyy" }, new[] { "HH' h 'mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { "." }, new[] { "d MMMM" } } },
+                       { 0x0083, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy" }, new[] { "dddd d MMMM yyyy", "d MMM yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM' di u 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d' di 'MMMM" } } },
+                       { 0x0084, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd.MM.yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d MMM yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm", "HH'h'mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0085, new [] { new[] { "dd.MM.yyyy", "d.M.yyyy", "yyyy-MM-dd", "yyyy MM d", "dd yyyy MM d" }, new[] { "dddd, yyyy 'с.' MMMM d 'күнэ'", "yyyy 'с.' MMMM d 'күнэ'", "dddd, MMMM d 'күнэ' yyyy 'с.'" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "yyyy 'с.' MMMM" }, new[] { "." }, new[] { ":" }, new[] { "MMMM d күнэ" } } },
+                       { 0x0086, new [] { new[] { "dd/MM/yyyy", "d/MM/yyyy" }, new[] { "dddd, dd' rech 'MMMM' rech 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM' rech 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d' rech 'MMMM" } } },
+                       { 0x0087, new [] { new[] { "yyyy/MM/dd", "yyyy MMM d" }, new[] { "dddd, yyyy MMMM dd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0088, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd.MM.yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d MMM yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x008c, new [] { new[] { "yyyy/M/d", "yyyy-MM-dd" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "H:mm" }, new[] { "h:mm:ss tt", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0091, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d'mh' MMMM yyyy", "d'mh' MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d'mh' MMMM" } } },
+                       { 0x0092, new [] { new[] { "yyyy/MM/dd" }, new[] { "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0401, new [] { new[] { "dd/MM/yy", "dd/MM/yyyy" }, new[] { "dd/MMMM/yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0402, new [] { new[] { "d.M.yyyy 'г.'", "dd.M.yyyy 'г.'", "d.MM.yyyy 'г.'", "dd.MM.yyyy 'г.'" }, new[] { "dd MMMM yyyy 'г.'", "d MMMM yyyy 'г.'", "dddd, dd MMMM yyyy 'г.'", "dddd, d MMMM yyyy 'г.'" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy 'г.'" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0403, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM 'de' yyyy", "d MMMM 'de' yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0404, new [] { new[] { "yyyy/M/d", "yyyy/MM/dd", "yyyy-MM-dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'MM'月'dd'日'", "yyyy年MMMd日", "dddd yyyy年MMMd日" }, new[] { "tt hh:mm", "tt h:mm", "HH:mm", "H:mm" }, new[] { "tt hh:mm:ss", "tt h:mm:ss", "HH:mm:ss", "H:mm:ss" }, new[] { "yyyy'年'M'月'", "yyyy'年'MMM", "yyyy'年'MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "M月d日" } } },
+                       { 0x0405, new [] { new[] { "dd.MM.yyyy", "d. M. yyyy" }, new[] { "dddd d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0406, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd", "yyyy MM dd" }, new[] { "d. MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0407, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "yyyy-MM-dd", "dd. MMM. yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy", "d. MMM. yyyy" }, new[] { "HH:mm", "HH:mm' Uhr'" }, new[] { "HH:mm:ss", "HH:mm:ss' Uhr'" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0408, new [] { new[] { "d/M/yyyy", "dd/MM/yyyy", "d/M/yy", "dd/MM/yy", "dd/MMM/yyyy", "yyyy-MM-dd" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0409, new [] { new[] { "M/d/yyyy", "M/d/yy", "MM/dd/yy", "MM/dd/yyyy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, MMMM d, yyyy", "MMMM d, yyyy", "dddd, d MMMM, yyyy", "d MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x040b, new [] { new[] { "d.M.yyyy" }, new[] { "dddd d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "H.mm" }, new[] { "H.mm.ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { "." }, new[] { "d. MMMM" } } },
+                       { 0x040c, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd.MM.yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy", "d MMM yy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm", "HH'h'mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x040d, new [] { new[] { "dd/MM/yyyy", "dd MMMM yyyy", "dd/MM/yy", "dd/MMMM/yyyy", "dd-MM-yy", "dd-MM-yyyy", "dd-MMMM-yyyy", "yyyy-MM-dd", "dd 'ב'MMMM yyyy", "dd MMM yy" }, new[] { "dddd dd MMMM yyyy", "dd MMMM yyyy", "dddd dd 'ב'MMMM yyyy", "ddd dd 'ב'MMMM yyyy", "dd 'ב'MMMM yyyy" }, new[] { "HH:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "hh:mm:ss tt" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x040e, new [] { new[] { "yyyy. MM. dd.", "yyyy. MMM d." }, new[] { "yyyy. MMMM d., dddd", "yyyy. MMMM d." }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "yyyy. MMMM" }, new[] { ". " }, new[] { ":" }, new[] { "MMMM d." } } },
+                       { 0x040f, new [] { new[] { "d.M.yyyy", "d. MMM yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0410, new [] { new[] { "dd/MM/yyyy", "dd/MMM/yyyy", "dd/MM/yy", "dd.M.yy", "d/M/yy" }, new[] { "dddd d MMMM yyyy", "d-MMM-yy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0411, new [] { new[] { "yyyy/MM/dd", "yy/MM/dd", "yy/M/d", "yyyy/M/d", "yyyy-MM-dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'MM'月'dd'日'", "yyyy'年'M'月'd'日 'dddd", "yyyy'年'MM'月'dd'日 'dddd", "yyyy'年'MMM'月'd'日'", "yyyy'年'MMM'月'd'日 'dddd", "yyyy'年'MMMMd'日'", "yyyy'年'MMMMd'日 'dddd" }, new[] { "H:mm", "HH:mm", "tt h:mm", "tt hh:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "tt h:mm:ss", "tt hh:mm:ss" }, new[] { "yyyy'年'M'月'", "yyyy'年'MMM'月'", "yyyy'年'MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "M月d日" } } },
+                       { 0x0412, new [] { new[] { "yyyy-MM-dd", "yy-MM-dd", "yy-M-d", "yyyy-M-d" }, new[] { "yyyy'년' M'월' d'일' dddd", "yyyy'년' M'월' d'일'", "yy'년' M'월' d'일' dddd", "yy'년' M'월' d'일'", "yyyy'년' MM'월' dd'일' dddd", "yyyy'년' MM'월' dd'일'", "yyyy'년 'MMM'월 'd'일 'dddd", "yyyy'년 'MMM'월 'd'일'", "yyyy'년 'MMMM d'일 'dddd", "yyyy'년 'MMMM d'일'" }, new[] { "tt h:mm", "tt hh:mm", "H:mm", "HH:mm" }, new[] { "tt h:mm:ss", "tt hh:mm:ss", "H:mm:ss", "HH:mm:ss" }, new[] { "yyyy'년' M'월'", "yyyy'년' MMM'월'", "yyyy'년' MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "M월 d일" } } },
+                       { 0x0413, new [] { new[] { "d-M-yyyy", "d-M-yy", "dd-MM-yy", "dd/MM/yy", "dd.MM.yy", "dd.MMM.yyyy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d-MMM-yy", "d MMMM yyyy", "d MMM yy" }, new[] { "HH:mm", "H:mm", "H.mm", "HH.mm' uur'", "HH:mm' uur'" }, new[] { "HH:mm:ss", "H:mm:ss", "HH.mm.ss' uur'", "HH:mm:ss' uur'" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0414, new [] { new[] { "dd.MM.yyyy", "d. MMM yyyy" }, new[] { "dddd d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "HH.mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { "." }, new[] { "d.MMMM." } } },
+                       { 0x0415, new [] { new[] { "dd.MM.yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0416, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/M/yyyy", "d/M/yy", "dd-MM-yy", "dd-MM-yyyy", "d-M-yy", "d-M-yyyy", "dd.MM.yy", "dd.MM.yyyy", "dd.MMM.yyyy", "d.M.yy", "d.M.yyyy", "yyyy-MM-dd" }, new[] { "dddd, d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d 'de' MMMM" } } },
+                       { 0x0417, new [] { new[] { "dd-MM-yyyy" }, new[] { "dddd, 'ils' d 'da' MMMM yyyy", "d 'da' MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0418, new [] { new[] { "dd.MM.yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0419, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd-MM-yyyy", "dd/MM/yy" }, new[] { "d MMMM yyyy 'г.'", "dd MMMM yyyy 'г.'" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x041a, new [] { new[] { "d.M.yyyy.", "d.M.yy.", "d. M. yyyy.", "dd.MM.yyyy.", "d. M. yy.", "dd.MM.yy.", "dd. MM. yy.", "yyyy-MM-dd" }, new[] { "d. MMMM yyyy.", "dd. MMMM yyyy.", "dddd, d. MMMM yyyy." }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x041b, new [] { new[] { "dd.MM.yyyy", "d. M. yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x041c, new [] { new[] { "d.M.yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x041d, new [] { new[] { "yyyy-MM-dd", "yy-MM-dd" }, new[] { "'den 'd MMMM yyyy", "dddd' den 'd MMMM yyyy" }, new[] { "HH:mm", "H:mm", "'kl 'H:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "'kl 'H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "'den 'd MMMM" } } },
+                       { 0x041e, new [] { new[] { "d/M/yyyy", "d/M/yy", "dd/MM/yy", "dd/MM/yyyy", "d MMM yyyy", "dd MMM yyyy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "ddd d MMMM yyyy", "'วัน'dddd'ที่' d MMMM gg yyyy" }, new[] { "H:mm", "HH:mm", "h:mm tt", "hh:mm tt" }, new[] { "H:mm:ss", "HH:mm:ss", "h:mm:ss tt", "hh:mm:ss tt" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x041f, new [] { new[] { "d.MM.yyyy", "d MMM yyyy" }, new[] { "d MMMM yyyy dddd", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0420, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0421, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH.mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { "." }, new[] { "d MMMM" } } },
+                       { 0x0422, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy' р.'" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy' р.'" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0423, new [] { new[] { "dd.MM.yy" }, new[] { "d MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy г." }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0424, new [] { new[] { "d. MM. yyyy", "d. MMM yyyy" }, new[] { "dddd, dd. MMMM yyyy", "dd. MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { ". " }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0425, new [] { new[] { "dd.MM.yyyy", "d. MMM yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm.ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0426, new [] { new[] { "dd.MM.yyyy", "yyyy. 'gada' d. MMM" }, new[] { "dddd, yyyy. 'gada' d. MMMM", "yyyy. 'gada' d. MMMM" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy. 'g'. MMMM" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0427, new [] { new[] { "yyyy-MM-dd" }, new[] { "yyyy 'm'. MMMM d 'd'., dddd", "yyyy 'm'. MMMM d 'd'." }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0428, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd-MM-yyyy", "dd/MM/yy" }, new[] { "d MMMM yyyy' с.'", "dd MMMM yyyy' с.'" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0429, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x042a, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd-MM-yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x042b, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d/MM/yyyy", "dd/MM/yyyy", "d/MMM/yyyy", "dd/MMM/yyyy", "yyyy-MM-dd" }, new[] { "d MMMM, yyyy", "dddd, d MMMM yyyy", "dddd, dd MMMM yyyy", "dd MMMM yyyy", "d-MMM-yyyy", "dd-MMM-yyyy", "ddd, d-MMMM-yyyy", "ddd, dd-MMMM-yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x042c, new [] { new[] { "dd.MM.yyyy", "d MMM yyyy" }, new[] { "d MMMM yyyy, dddd", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x042d, new [] { new[] { "yyyy/MM/dd", "yyyy MMM d" }, new[] { "yyyy('e')'ko' MMMM d, dddd", "yyyy('e')'ko' MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy('e')'ko' MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x042e, new [] { new[] { "d.M.yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "H:mm 'hodź'." }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x042f, new [] { new[] { "dd.M.yyyy" }, new[] { "dddd, dd MMMM yyyy", "dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy 'г'." }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0430, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0431, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0432, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0433, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0434, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0435, new [] { new[] { "M/d/yyyy", "MMM d, yyyy" }, new[] { "dddd, MMMM d, yyyy", "MMMM d, yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0436, new [] { new[] { "yyyy-MM-dd", "dd MMM yyyy" }, new[] { "dddd, dd MMMM yyyy", "dd MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0437, new [] { new[] { "dd.MM.yyyy", "d MMM, yyyy" }, new[] { "dddd, dd MMMM, yyyy", "d MMMM, yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0438, new [] { new[] { "dd-MM-yyyy" }, new[] { "dddd dd MMMM yyyy", "d. MMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0439, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x043a, new [] { new[] { "dd/MM/yyyy", "dd MMM yyyy" }, new[] { "dddd, d 'ta'’ MMMM yyyy", "d 'ta'’ MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM 'ta'’ yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d 'ta'’ MMMM" } } },
+                       { 0x043b, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x043d, new [] { new[] { "dd/MM/yyyy", "dטן MMM yyyy" }, new[] { "dddd, dטן MMMM yyyy", "dטן MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d בMMMM" } } },
+                       { 0x043e, new [] { new[] { "d/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x043f, new [] { new[] { "dd/MM/yyyy", "yyyy, dd-MMM" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0440, new [] { new[] { "d-MMM yy" }, new[] { "dd-MMMM yyyy'-ж.'" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy'-ж.'" }, new[] { "-" }, new[] { ":" }, new[] { "d-MMMM" } } },
+                       { 0x0441, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0442, new [] { new[] { "dd.MM.yy 'ý.'", "dd.MM.yyyy" }, new[] { "yyyy'-nji ýylyň 'd'-nji 'MMMM" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "yyyy 'ý.' MMMM" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0443, new [] { new[] { "yyyy/MM/dd", "yyyy MMM d" }, new[] { "dddd, yyyy MMMM dd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0444, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd/MM/yy", "yyyy-MM-dd", "dd MMMM yyyy' ел'" }, new[] { "dd MMMM yyyy' ел'" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy", "MMMM yyyy' ел'" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0445, new [] { new[] { "dd-MM-yy", "d-M-yy", "dd-MM-yyyy", "dd-MM-yy", "dd-MM-yyyy" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH.mm", "H.mm", "tt hh.mm", "tt h.mm" }, new[] { "HH.mm.ss", "H.mm.ss", "tt hh.mm.ss", "tt h.mm.ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { "." }, new[] { "d MMMM" } } },
+                       { 0x0446, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy dddd", "d MMMM yyyy" }, new[] { "tt hh:mm", "tt h:mm", "H:mm", "HH:mm" }, new[] { "tt hh:mm:ss", "tt h:mm:ss", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0447, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0448, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0449, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x044a, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x044b, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x044c, new [] { new[] { "dd-MM-yy", "d-M-yy", "dd.MM.yy", "d.M.yy" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH.mm", "H.mm", "tt hh.mm", "tt h.mm" }, new[] { "HH.mm.ss", "H.mm.ss", "tt hh.mm.ss", "tt h.mm.ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { "." }, new[] { "MMMM dd" } } },
+                       { 0x044d, new [] { new[] { "dd-MM-yyyy" }, new[] { "yyyy,MMMM dd, dddd" }, new[] { "tt h:mm", "tt hh:mm", "H:mm" }, new[] { "tt h:mm:ss", "tt hh:mm:ss", "H:mm:ss" }, new[] { "MMMM,yy", "MMMM,yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x044e, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x044f, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy dddd", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0450, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "dddd, yyyy 'оны' MM 'сарын' d", "yyyy 'оны' MM 'сарын' d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0451, new [] { new[] { "yyyy/M/d", "yyyy-M-d", "yyyy.M.d", "yyyy.MM.dd", "yyyy-MM-dd", "yyyy/MM/dd", "yy-M-d", "yy/M/d", "yy.M.d" }, new[] { "yyyy'ལོའི་ཟླ' M'ཚེས' d", "yyyy'ལོའི་ཟླ' M'ཚེས' d dddd", "yyyyལོའི་ཟླ MMM d", "yyyyལོའི་ཟླ MMM d dddd" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy'ལོའི་ཟླ་' M", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "ཟླ་Mཚེས་d" } } },
+                       { 0x0452, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0453, new [] { new[] { "dd/MM/yy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "ddd d MMMM yyyy" }, new[] { "H:mm" }, new[] { "HH:mm:ss" }, new[] { "'ខែ' MM 'ឆ្នាំ' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0454, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd ທີ d MMMM gg yyyy", "d MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0455, new [] { new[] { "dd-MM-yyyy", "d MMM yyyy" }, new[] { "dddd၊ dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0456, new [] { new[] { "dd/MM/yyyy", "d MMM, yyyy" }, new[] { "dddd dd MMMM yyyy", "dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0457, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "tt hh:mm", "tt h:mm" }, new[] { "HH:mm:ss", "H:mm:ss", "tt hh:mm:ss", "tt h:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0458, new [] { new[] { "dd/MM/yyyy" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0459, new [] { new[] { "dd/MM/yyyy" }, new[] { "dd MMMM yyyy", "d MMMM yyyy", "dddd, dd MMMM, yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x045a, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x045b, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "tt h.mm", "HH:mm" }, new[] { "tt h.mm.ss", "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { "." }, new[] { "MMMM d" } } },
+                       { 0x045c, new [] { new[] { "M/d/yyyy", "M/d/yy", "MM/dd/yy", "MM/dd/yyyy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, MMMM dd,yyyy", "MMMM dd,yyyy", "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x045d, new [] { new[] { "d/M/yyyy", "d/M/yy", "dd/MM/yy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd,MMMM dd,yyyy", "MMMM dd,yyyy", "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM,yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x045e, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x045f, new [] { new[] { "d/M/yyyy", "dd/MM/yyyy" }, new[] { "dddd، d MMMM، yyyy", "d MMMM، yyyy" }, new[] { "H:mm", "h:mm tt" }, new[] { "HH:mm:ss", "h:mm:ss tt" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0460, new [] { new[] { "M/d/yyyy", "MMM d, yyyy" }, new[] { "dddd, MMMM d, yyyy", "MMMM d, yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0461, new [] { new[] { "M/d/yyyy", "M/d/yy", "MM/dd/yy", "MM/dd/yyyy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy", "MMMM dd, yyyy", "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM,yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0462, new [] { new[] { "dd-MM-yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0463, new [] { new[] { "yyyy/M/d", "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "dddd d MMMM yyyy" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0464, new [] { new[] { "M/d/yyyy", "MMM d, yyyy" }, new[] { "dddd, MMMM d, yyyy", "MMMM d, yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0465, new [] { new[] { "dd/MM/yy" }, new[] { "ddd, yyyy MMMM dd" }, new[] { "HH:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "hh:mm:ss tt" }, new[] { "yyyy, MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x0466, new [] { new[] { "d/M/yyyy" }, new[] { "dddd, MMMM dd, yyyy" }, new[] { "h:mmt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x0467, new [] { new[] { "d/M/yyyy", "dd/MM/yyyy" }, new[] { "dddd, MMMM dd, yyyy", "dddd d MMMM yyyy" }, new[] { "h:mmt", "H:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0468, new [] { new[] { "d/M/yyyy", "d MMM, yyyy" }, new[] { "dddd, d MMMM, yyyy", "d MMMM, yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0469, new [] { new[] { "d/M/yyyy" }, new[] { "dddd, MMMM dd, yyyy" }, new[] { "h:mmt", "H:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x046a, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x046b, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/M/yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "hh:mm tt", "h:mm tt", "H:mm", "HH:mm" }, new[] { "hh:mm:ss tt", "h:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d 'de' MMMM" } } },
+                       { 0x046c, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x046d, new [] { new[] { "dd.MM.yy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy 'й'" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x046e, new [] { new[] { "dd.MM.yy", "dd/MM/yy", "dd-MM-yy" }, new[] { "d. MMMM yyyy", "dd. MMMMyyyy", "dddd, d. MMMM yyyy", "dddd, dd. MMMM yyyy", "dddd,' den 'd. MMMM yyyy", "dddd,' den 'dd. MMMM yyyy" }, new[] { "HH:mm", "H:mm", "H.mm", "H.mm' Auer'" }, new[] { "HH:mm:ss", "H:mm:ss' Auer'", "HH:mm:ss' Auer'" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd. MMMM" } } },
+                       { 0x046f, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd", "yyyy MM dd" }, new[] { "MMMM d'.-at, 'yyyy", "d. MMMM yyyy", "dd. MMMM yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d'.-at'" } } },
+                       { 0x0470, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0471, new [] { new[] { "d/M/yyyy" }, new[] { "dddd, MMMM dd, yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x0472, new [] { new[] { "dd/MM/yyyy", "dd-MMM-yyyy" }, new[] { "dddd, MMMM d, yyyy", "dd MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0473, new [] { new[] { "dd/MM/yyyy", "dd-MMM-yyyy" }, new[] { "dddd፣ dd MMMM መዓልቲ yyyy gg", "dd MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0474, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd-MM-yyyy", "dd-MM-yy" }, new[] { "dddd, dd MMMM, yyyy", "dddd, d MMMM, yyyy", "dd/MMMM/yyyy", "d/MMMM/yyyy", "dd MMMM, yyyy", "d MMMM, yyyy" }, new[] { "HH:mm", "H:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "H:mm:ss", "hh:mm:ss tt" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0475, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0476, new [] { new[] { "dd/MM/yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "H:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x0477, new [] { new[] { "dd/MM/yyyy", "dd-MMM-yyyy" }, new[] { "dddd, MMMM dd, yyyy", "dd MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0478, new [] { new[] { "yyyy/M/d", "yyyy-M-d", "yyyy.M.d", "yyyy.MM.dd", "yyyy-MM-dd", "yyyy/MM/dd" }, new[] { "yyyy'ꈎ' M'ꆪ' d'ꑍ'", "dddd, yyyy'ꈎ' M'ꆪ' d'ꑍ'", "yyyy'ꈎ' M'ꆪ' d'ꑍ', dddd", "yyyyꈎ MMM dꑍ", "dddd, yyyyꈎ MMM dꑍ" }, new[] { "tt h:mm", "H:mm", "HH:mm" }, new[] { "tt h:mm:ss", "H:mm:ss", "HH:mm:ss" }, new[] { "yyyy'ꈎ' M'ꆪ'", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "M’ ꆪ’d’ ꑍ’" } } },
+                       { 0x0479, new [] { new[] { "d-M-yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy", "d MMM yy", "d-MMM-yy" }, new[] { "H:mm", "HH:mm", "H.mm", "HH.mm' uur'", "HH:mm' uur'" }, new[] { "H:mm:ss", "HH:mm:ss", "H:mm", "H.mm", "HH.mm.ss' uur'", "HH:mm:ss' uur'" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x047a, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "dd/MM/yy", "d/M/yy", "yyyy-MM-dd" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d 'de' MMMM" } } },
+                       { 0x047c, new [] { new[] { "M/d/yyyy", "M/d/yy", "MM/dd/yy", "MM/dd/yyyy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy", "MMMM dd, yyyy", "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "HH:mm", "H:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x047e, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0480, new [] { new[] { "yyyy-M-d", "yyyy.M.d", "yyyy-MM-dd", "yyyy.MM.dd" }, new[] { "yyyy-'يىل' d-MMMM", "yyyy-'يىل' d-MMMM dddd", "yyyy-'يىلى' MMM'نىڭ' d'-كۈنى'", "yyyy-'يىلى' MMM'نىڭ' d'-كۈنى' dddd", "yyyy-M-d dddd" }, new[] { "H:mm", "HH:mm", "tt h:mm", "tt hh:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "tt h:mm:ss", "tt hh:mm:ss" }, new[] { "yyyy-'يىلى' MMMM", "yyyy MMMM", "yyyy.M" }, new[] { "-" }, new[] { ":" }, new[] { "d-MMMM" } } },
+                       { 0x0481, new [] { new[] { "dd/MM/yyyy", "d/MM/yy", "dd/MM/yy", "d.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, dd MMMM, yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "hh:mm tt", "HH:mm", "H:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yy", "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0482, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy" }, new[] { "dddd d MMMM' de 'yyyy", "d MMMM' de 'yyyy" }, new[] { "HH' h 'mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { "." }, new[] { "d MMMM" } } },
+                       { 0x0483, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy" }, new[] { "dddd d MMMM yyyy", "d MMM yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM' di u 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d' di 'MMMM" } } },
+                       { 0x0484, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd.MM.yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d MMM yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm", "HH'h'mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0485, new [] { new[] { "dd.MM.yyyy", "d.M.yyyy", "yyyy-MM-dd", "yyyy MM d", "dd yyyy MM d" }, new[] { "dddd, yyyy 'с.' MMMM d 'күнэ'", "yyyy 'с.' MMMM d 'күнэ'", "dddd, MMMM d 'күнэ' yyyy 'с.'" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "yyyy 'с.' MMMM" }, new[] { "." }, new[] { ":" }, new[] { "MMMM d күнэ" } } },
+                       { 0x0486, new [] { new[] { "dd/MM/yyyy", "d/MM/yyyy" }, new[] { "dddd, dd' rech 'MMMM' rech 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM' rech 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d' rech 'MMMM" } } },
+                       { 0x0487, new [] { new[] { "yyyy/MM/dd", "yyyy MMM d" }, new[] { "dddd, yyyy MMMM dd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0488, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd.MM.yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d MMM yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x048c, new [] { new[] { "yyyy/M/d", "yyyy-MM-dd" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "H:mm" }, new[] { "h:mm:ss tt", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0491, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d'mh' MMMM yyyy", "d'mh' MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d'mh' MMMM" } } },
+                       { 0x0492, new [] { new[] { "yyyy/MM/dd" }, new[] { "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0801, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0803, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM 'de' yyyy", "d MMMM 'de' yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0804, new [] { new[] { "yyyy/M/d", "yyyy-M-d", "yyyy.M.d", "yyyy/MM/dd", "yyyy-MM-dd", "yyyy.MM.dd", "yy/M/d", "yy-M-d", "yy.M.d", "yy/MM/dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'M'月'd'日', dddd", "dddd, yyyy'年'M'月'd'日'", "yyyy年MMMd日", "yyyy年MMMd日, dddd" }, new[] { "H:mm", "HH:mm", "tt h:mm", "tt hh:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "tt h:mm:ss", "tt hh:mm:ss" }, new[] { "yyyy'年'M'月'", "yyyy'年'MMM", "yyyy'年'MMMM", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "M月d日" } } },
+                       { 0x0807, new [] { new[] { "dd.MM.yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd.MMMM." } } },
+                       { 0x0809, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/M/yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy", "dddd, d MMMM yyyy", "dddd, dd MMMM yyyy" }, new[] { "HH:mm", "H:mm", "hh:mm tt", "h:mm tt" }, new[] { "HH:mm:ss", "H:mm:ss", "hh:mm:ss tt", "h:mm:ss tt" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x080a, new [] { new[] { "dd/MM/yyyy", "dd/MMM/yyyy", "dd/MM/yy", "d/MM/yy", "d/M/yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd, d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "hh:mm tt", "h:mm tt", "H:mm", "HH:mm" }, new[] { "hh:mm:ss tt", "h:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d 'de' MMMM" } } },
+                       { 0x080c, new [] { new[] { "dd-MM-yy", "dd/MM/yyyy", "dd/MM/yy", "dd-MM-yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm", "HH'h'mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0810, new [] { new[] { "dd.MM.yyyy", "d-MMM-yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM.yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd.MMMM" } } },
+                       { 0x0813, new [] { new[] { "d/MM/yyyy", "d/MM/yy", "dd-MM-yy", "dd.MM.yy", "dd.MMM.yyyy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "dd-MMM-yy", "d MMMM yyyy", "dd MMM yy" }, new[] { "H:mm", "HH:mm", "H.mm' u.'" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0814, new [] { new[] { "dd.MM.yyyy", "d. MMM yyyy" }, new[] { "dddd d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0816, new [] { new[] { "dd/MM/yyyy", "dd.MM.yyyy", "dd-MM-yyyy", "dd/MM/yy", "dd.MM.yy", "dd-MM-yy", "yyyy/MM/dd", "yyyy.MM.dd", "yyyy-MM-dd", "yy/MM/dd", "yy.MM.dd", "yy-MM-dd" }, new[] { "d' de 'MMMM' de 'yyyy", "dddd, d' de 'MMMM' de 'yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d 'de' MMMM" } } },
+                       { 0x0818, new [] { new[] { "dd.MM.yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0819, new [] { new[] { "dd.MM.yyyy", "d MMM yyyy 'г'." }, new[] { "dddd, d MMMM yyyy 'г'.", "d MMMM yyyy 'г'." }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd.MMMM" } } },
+                       { 0x081d, new [] { new[] { "dd-MM-yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0820, new [] { new[] { "d/M/yy", "d MMM, yyyy" }, new[] { "dddd, d MMMM, yyyy", "d MMMM, yyyy" }, new[] { "h:mm tt", "H:mm" }, new[] { "h:mm:ss tt", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x082c, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "dd MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x082e, new [] { new[] { "d. M. yyyy", "d. M. yy", "dd.MM.yyyy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy", "d. M. yyyy" }, new[] { "HH:mm", "H:mm", "H:mm' góź.'", "'zeger 'H:mm" }, new[] { "HH:mm:ss", "H:mm:ss' góź.'", "'zeger 'H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { ". " }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x0832, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x083b, new [] { new[] { "yyyy-MM-dd", "yy-MM-dd" }, new[] { "dddd, MMMM d'. b. 'yyyy", "MMMM d'. b. 'yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d'. b.'" } } },
+                       { 0x083c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x083e, new [] { new[] { "d/MM/yyyy", "d MMM yyyy" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0843, new [] { new[] { "yyyy/MM/dd", "yyyy MMM d" }, new[] { "dddd, yyyy MMMM dd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0845, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH.mm", "H.mm", "tt hh.mm", "tt h.mm" }, new[] { "HH.mm.ss", "H.mm.ss", "tt hh.mm.ss", "tt h.mm.ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { "." }, new[] { "dd MMMM" } } },
+                       { 0x0846, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy dddd", "d MMMM yyyy" }, new[] { "h.mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h.mm.ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { "." }, new[] { "dd MMMM" } } },
+                       { 0x0849, new [] { new[] { "d-M-yyyy", "d MMM, yyyy" }, new[] { "dddd, d MMMM, yyyy", "d MMMM, yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0850, new [] { new[] { "yyyy/M/d", "yyyy-M-d", "yyyy.M.d", "yyyy.MM.dd", "yyyy-MM-dd", "yyyy/MM/dd", "yy-M-d", "yy/M/d", "yy.M.d", "yy/MM/dd" }, new[] { "yyyyᠣᠨ MMMM dᠡᠳᠦᠷ᠂ dddd", "yyyyᠣᠨ MMMM dᠡᠳᠦᠷ" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "yyyyᠣᠨ MMMM", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dᠡᠳᠦᠷ" } } },
+                       { 0x0859, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dddd, dd MMMM, yyyy", "dd MMMM yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x085d, new [] { new[] { "d/MM/yyyy", "d/M/yy", "yy-MM-dd", "dd/MM/yyyy", "yy-MM-dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, dd MMMM, yyyy", "ddd, MMMM dd,yyyy", "MMMM dd,yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "HH:mm", "H:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x085f, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0860, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dddd, MMMM dd, yyyy" }, new[] { "H:mm", "h:mmt" }, new[] { "HH:mm:ss", "H:mm:ss", "h.mm.ss tt", "hh:mm:ss tt" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0861, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "yyyy MMMM d, dddd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x0867, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd.MM.yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d MMM yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x086b, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/M/yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd, dd' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d 'de' MMMM" } } },
+                       { 0x0873, new [] { new[] { "dd/MM/yyyy", "dd-MMM-yyyy" }, new[] { "dddd፡ dd MMMM መዓልቲ yyyy gg", "dd MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0c01, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x0c04, new [] { new[] { "d/M/yyyy", "d/M/yy", "dd/MM/yy", "yy/M/d", "yy/MM/dd", "yyyy/M/d", "yyyy/MM/dd", "yyyy-MM-dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'MM'月'dd'日'", "yyyy年MMMd日", "yyyy年MMMd日, dddd" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "yyyy'年'M'月'", "yyyy'年'MMM", "yyyy'年'MMMM", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "M月d日" } } },
+                       { 0x0c07, new [] { new[] { "dd.MM.yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd.MMMM." } } },
+                       { 0x0c09, new [] { new[] { "d/MM/yyyy", "d/MM/yy", "d/M/yy", "d/M/yyyy", "dd/MM/yy", "dd/MM/yyyy", "dd-MMM-yy", "dd-MMMM-yyyy", "yyyy-MM-dd", "yy/MM/dd", "yyyy/MM/dd" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0c0a, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/MM/yy", "d/M/yy", "d-M-yy", "dd-MM-yy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, d' de 'MMMM' de 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "H:mm", "HH:mm", "H.mm", "HH.mm", "HH'H'mm" }, new[] { "H:mm:ss", "HH:mm:ss", "H.mm.ss", "HH.mm.ss", "HH'H'mm.ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d 'de' MMMM" } } },
+                       { 0x0c0c, new [] { new[] { "yyyy-MM-dd", "yy-MM-dd", "dd-MM-yy", "yy MM dd", "dd/MM/yy", "dd/MMM/yyyy" }, new[] { "d MMMM yyyy", "d MMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm", "HH'h'mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x0c3b, new [] { new[] { "d.M.yyyy", "dd.MM.yyyy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dddd', 'MMMM d'. b. 'yyyy", "MMMM d'. b. 'yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "MMMM d'. b.'" } } },
+                       { 0x0c50, new [] { new[] { "yyyy/M/d", "yyyy-M-d", "yyyy.M.d", "yyyy.MM.dd", "yyyy-MM-dd", "yyyy/MM/dd", "yy-M-d", "yy/M/d", "yy.M.d", "yy/MM/dd" }, new[] { "yyyyᠣᠨ MMMM dᠡᠳᠦᠷ᠂ dddd", "yyyyᠣᠨ MMMM dᠡᠳᠦᠷ" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "yyyyᠣᠨ MMMM", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dᠡᠳᠦᠷ" } } },
+                       { 0x0c51, new [] { new[] { "yyyy-MM-dd", "སྤྱི་ལོ་yyyy ཟླ་MMM ཚེས་dd" }, new[] { "dddd, སྤྱི་ལོ་yyyy MMMM ཚེས་dd", "སྤྱི་ལོ་yyyy MMMM ཚེས་ dd" }, new[] { "ཆུ་ཚོད་ h སྐར་མ་ mm tt", "HH:mm" }, new[] { "ཆུ་ཚོད་h:mm:ss tt", "HH:mm:ss" }, new[] { "yyyy སྤྱི་ཟླ་MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "སྤྱི་MMMM ཚེ་d" } } },
+                       { 0x0c6b, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/M/yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd, d MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x1000, new [] { new[] { "dd/MM/yyyy", "dd-MMM-yyyy" }, new[] { "dddd, MMMM dd, yyyy", "dd MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x1001, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x1004, new [] { new[] { "d/M/yyyy", "d/M/yy", "dd/MM/yy", "yy/M/d", "yy/MM/dd", "yyyy/M/d", "yyyy/MM/dd", "yyyy-MM-dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'MM'月'dd'日'", "yyyy年MMMd日", "dddd yyyy年MMMd日" }, new[] { "tt h:mm", "tt hh:mm", "H:mm", "HH:mm" }, new[] { "tt h:mm:ss", "tt hh:mm:ss", "H:mm:ss", "HH:mm:ss" }, new[] { "yyyy'年'M'月'", "yyyy'年'MMM", "yyyy'年'MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "M月d日" } } },
+                       { 0x1007, new [] { new[] { "dd.MM.yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd.MMMM." } } },
+                       { 0x1009, new [] { new[] { "yyyy-MM-dd", "dd/MM/yyyy", "dd/MM/yy", "d/M/yy", "yy-MM-dd", "M/dd/yy", "dd-MMM-yy", "dd-MMM-yyyy", "yyyy-MM-dd" }, new[] { "MMMM d, yyyy", "dddd, MMMM dd, yyyy", "MMMM-dd-yy", "d-MMM-yy" }, new[] { "h:mm tt", "hh:mm tt", "HH:mm", "H:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x100a, new [] { new[] { "d/MM/yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x100c, new [] { new[] { "dd.MM.yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM.yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd.MMMM" } } },
+                       { 0x101a, new [] { new[] { "dd.MM.yyyy.", "d. MMM yyyy." }, new[] { "dddd, d. MMMM yyyy.", "d. MMMM yyyy." }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy." }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x103b, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dddd, MMMM d'. b. 'yyyy", "MMMM d'. b. 'yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm" }, new[] { "HH:mm:ss", "H:mm:ss", "HH.mm.ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "MMMM d'. b.'" } } },
+                       { 0x105f, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd", "dd.MMM.yyyy" }, new[] { "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy", "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x1401, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "H:mm", "HH:mm", "hh:mm tt" }, new[] { "H:mm:ss", "HH:mm:ss", "hh:mm:ss tt" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x1404, new [] { new[] { "d/M/yyyy", "d/M/yy", "dd/MM/yy", "yy/M/d", "yy/MM/dd", "yyyy/M/d", "yyyy/MM/dd", "yyyy-MM-dd" }, new[] { "yyyy'年'M'月'd'日'", "dddd yyyy'年'M'月'd'日'", "dddd yyyy MM dd", "yyyy MM dd", "yyyy年MMMd日", "dddd yyyy年MMMd日" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "yyyy'年'M'月'", "yyyy'年'MMM", "yyyy'年'MMMM", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "M月d日" } } },
+                       { 0x1407, new [] { new[] { "dd.MM.yyyy" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd.MMMM." } } },
+                       { 0x1409, new [] { new[] { "d/MM/yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM/yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d/MMMM" } } },
+                       { 0x140a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x140c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x141a, new [] { new[] { "dd.MM.yyyy.", "dd. MMM. yyyy." }, new[] { "dddd, dd. MMMM yyyy.", "dd. MMMM yyyy." }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy." }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x143b, new [] { new[] { "yyyy-MM-dd", "yy-MM-dd" }, new[] { "dddd, MMMM d'. b. 'yyyy", "MMMM d'. b. 'yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d'. b.'" } } },
+                       { 0x1801, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "H:mm", "HH:mm", "hh:mm tt" }, new[] { "H:mm:ss", "HH:mm:ss", "hh:mm:ss tt" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x1809, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "h:mm tt" }, new[] { "HH:mm:ss", "h:mm:ss tt" }, new[] { "MMMM/yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d/MMMM" } } },
+                       { 0x180a, new [] { new[] { "MM/dd/yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM/yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM/dd" } } },
+                       { 0x180c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x181a, new [] { new[] { "d.M.yyyy.", "dd.MM.yyyy." }, new[] { "dddd, dd. MMMM yyyy.", "dd. MMMM yyyy." }, new[] { "HH:mm", "HH.mm" }, new[] { "HH:mm:ss", "HH.mm.ss" }, new[] { "MMMM yyyy." }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x183b, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dddd, MMMM d'. b. 'yyyy", "MMMM d'. b. 'yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "MMMM d'. b.'" } } },
+                       { 0x1c01, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "H:mm", "HH:mm", "hh:mm tt" }, new[] { "H:mm:ss", "HH:mm:ss", "hh:mm:ss tt" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x1c09, new [] { new[] { "yyyy/MM/dd", "dd MMM yyyy" }, new[] { "dddd, dd MMMM yyyy", "dd MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM/yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x1c0a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x1c0c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x1c1a, new [] { new[] { "d.M.yyyy.", "dd.MM.yyyy." }, new[] { "d. MMMM yyyy", "dd. MMMM yyyy", "dddd, d. MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x1c3b, new [] { new[] { "yyyy-MM-dd", "yy-MM-dd" }, new[] { "dddd, MMMM d'. b. 'yyyy", "MMMM d'. b. 'yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d'. b.'" } } },
+                       { 0x2001, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm", "H:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x2009, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM/yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d/MMMM" } } },
+                       { 0x200a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x200c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x201a, new [] { new[] { "d.M.yyyy", "d.M.yy", "d. M. yyyy", "dd.MM.yyyy", "d. M. yy", "dd.MM.yy", "dd. MM. yy", "yyyy-MM-dd" }, new[] { "d. MMMM yyyy", "dd. MMMM yyyy", "dddd, d. MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "." }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x203b, new [] { new[] { "d.M.yyyy", "dd.MM.yyyy", "d.M.yy", "yyyy-MM-dd" }, new[] { "MMMM d'. p. 'yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "MMMM d'. p. '" } } },
+                       { 0x2401, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm", "H:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x2409, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "d/MM/yy", "d/M/yyyy", "dd/M/yy", "d/MM/yyyy", "d/M/yy" }, new[] { "dddd, dd MMMM yyyy", "dddd, dd MMMM, yyyy", "dd MMMM, yyyy", "dddd, d MMMM yyyy", "d MMMM yyyy", "dddd d MMMM yyyy", "d MMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "hh:mm tt", "h:mm tt" }, new[] { "HH:mm:ss", "H:mm:ss", "HH.mm.ss", "H.mm.ss", "hh:mm:ss tt", "h:mm:ss tt" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x240a, new [] { new[] { "d/MM/yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x240c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x241a, new [] { new[] { "d.M.yyyy.", "dd.MM.yyyy." }, new[] { "dddd, dd. MMMM yyyy.", "dd. MMMM yyyy." }, new[] { "HH.mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM yyyy." }, new[] { "." }, new[] { "." }, new[] { "d. MMMM" } } },
+                       { 0x243b, new [] { new[] { "d.M.yyyy", "dd.MM.yyyy", "d.M.yy", "yyyy-MM-dd" }, new[] { "MMMM d'. p. 'yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "MMMM d'. p. '" } } },
+                       { 0x2801, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm", "H:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x2809, new [] { new[] { "dd/MM/yyyy", "dd-MMM-yyyy" }, new[] { "dddd, dd MMMM yyyy", "dd MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM/yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x280a, new [] { new[] { "d/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x280c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x281a, new [] { new[] { "dd.MM.yyyy." }, new[] { "d. MMMM yyyy.", "dd. MMMM yyyy.", "dddd, d. MMMM yyyy." }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy." }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x2c01, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm", "H:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x2c09, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM/yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x2c0a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM-yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x2c0c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x2c1a, new [] { new[] { "d.M.yyyy.", "dd.MM.yyyy." }, new[] { "dddd, dd. MMMM yyyy.", "dd. MMMM yyyy." }, new[] { "HH.mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM yyyy." }, new[] { "." }, new[] { "." }, new[] { "d. MMMM" } } },
+                       { 0x3001, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm", "H:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x3009, new [] { new[] { "d/M/yyyy", "dd MMM,yyyy" }, new[] { "dddd, dd MMMM yyyy", "dd MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM/yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x300a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x300c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x301a, new [] { new[] { "d.M.yyyy.", "d.M.yy.", "d. M. yyyy.", "dd.MM.yyyy.", "d. M. yy.", "dd.MM.yy.", "dd. MM. yy.", "yyyy-MM-dd." }, new[] { "d. MMMM yyyy.", "dd. MMMM yyyy.", "dddd, d. MMMM yyyy." }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy." }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x3401, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm", "H:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x3409, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM/yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x340a, new [] { new[] { "dd-MM-yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM-yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x340c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x3801, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm", "H:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x3809, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy" }, new[] { "dd MMMM yyyy", "dddd, dd MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x380a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "H:mm", "HH:mm", "hh:mm tt", "h:mm tt" }, new[] { "H:mm:ss", "HH:mm:ss", "hh:mm:ss tt", "h:mm:ss tt" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x380c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x3c01, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm", "H:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x3c09, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM/yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d/MMMM" } } },
+                       { 0x3c0a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x3c0c, new [] { new[] { "dd/MM/yyyy", "d MMM yyyy" }, new[] { "dddd d MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x4001, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm", "H:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x4009, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "d-M-yy", "d.M.yy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "hh:mm tt" }, new[] { "HH:mm:ss", "H:mm:ss", "h.mm.ss tt", "hh:mm:ss tt" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x400a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x4409, new [] { new[] { "d/M/yyyy", "d/M/yy", "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dddd, d MMMM, yyyy", "d MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy", "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x440a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x4809, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d MMMM yyyy", "d MMMM yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM/yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x480a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd dd 'de' MMMM 'de' yyyy", "dd 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x4c0a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x500a, new [] { new[] { "MM/dd/yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM/yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM/dd" } } },
+                       { 0x540a, new [] { new[] { "M/d/yyyy", "M/d/yy", "MM/dd/yy", "MM/dd/yyyy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, MMMM dd, yyyy", "MMMM dd, yyyy", "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM' de 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x580a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x5c0a, new [] { new[] { "d/M/yyyy", "d MMM yyyy" }, new[] { "dddd, d 'de' MMMM 'de' yyyy", "d 'de' MMMM 'de' yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM 'de' yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd-MMMM" } } },
+                       { 0x641a, new [] { new[] { "d.M.yyyy", "d.M.yy", "d. M. yyyy", "dd.MM.yyyy", "d. M. yy", "dd.MM.yy", "dd. MM. yy", "yyyy-MM-dd" }, new[] { "d. MMMM yyyy", "dd. MMMM yyyy", "dddd, d. MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "." }, new[] { ":" }, new[] { "MMMM dd" } } },
+                       { 0x681a, new [] { new[] { "dd.MM.yyyy.", "dd. MMM. yyyy." }, new[] { "dddd, dd. MMMM yyyy.", "dd. MMMM yyyy." }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy." }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x6c1a, new [] { new[] { "dd.MM.yyyy." }, new[] { "d. MMMM yyyy.", "dd. MMMM yyyy.", "dddd, d. MMMM yyyy." }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy." }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x701a, new [] { new[] { "d.M.yyyy.", "dd.MM.yyyy." }, new[] { "dddd, dd. MMMM yyyy.", "dd. MMMM yyyy." }, new[] { "HH.mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM yyyy." }, new[] { "." }, new[] { "." }, new[] { "d. MMMM" } } },
+                       { 0x703b, new [] { new[] { "d.M.yyyy", "dd.MM.yyyy", "d.M.yy", "yyyy-MM-dd" }, new[] { "MMMM d'. p. 'yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "MMMM d'. p. '" } } },
+                       { 0x742c, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "d MMMM yyyy", "dd MMMM yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x743b, new [] { new[] { "d.M.yyyy", "dd.MM.yyyy", "d.M.yy", "yyyy-MM-dd" }, new[] { "MMMM d'. p. 'yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "MMMM d'. p. '" } } },
+                       { 0x7804, new [] { new[] { "yyyy/M/d", "yyyy-M-d", "yyyy.M.d", "yyyy/MM/dd", "yyyy-MM-dd", "yyyy.MM.dd", "yy/M/d", "yy-M-d", "yy.M.d", "yy/MM/dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'M'月'd'日', dddd", "dddd, yyyy'年'M'月'd'日'", "yyyy年MMMd日", "yyyy年MMMd日, dddd" }, new[] { "H:mm", "HH:mm", "tt h:mm", "tt hh:mm" }, new[] { "H:mm:ss", "HH:mm:ss", "tt h:mm:ss", "tt hh:mm:ss" }, new[] { "yyyy'年'M'月'", "yyyy'年'MMM", "yyyy'年'MMMM", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "M月d日" } } },
+                       { 0x7814, new [] { new[] { "dd.MM.yyyy", "d. MMM yyyy" }, new[] { "dddd d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x781a, new [] { new[] { "dd.MM.yyyy.", "dd. MMM. yyyy." }, new[] { "dddd, dd. MMMM yyyy.", "dd. MMMM yyyy." }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy." }, new[] { "." }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x782c, new [] { new[] { "dd.MM.yyyy", "d MMM yyyy" }, new[] { "d MMMM yyyy, dddd", "d MMMM yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x783b, new [] { new[] { "yyyy-MM-dd", "yy-MM-dd" }, new[] { "dddd, MMMM d'. b. 'yyyy", "MMMM d'. b. 'yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d'. b.'" } } },
+                       { 0x7843, new [] { new[] { "yyyy/MM/dd", "yyyy MMM d" }, new[] { "dddd, yyyy MMMM dd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x7850, new [] { new[] { "yyyy-MM-dd", "yyyy MMM d" }, new[] { "dddd, yyyy 'оны' MM 'сарын' d", "yyyy 'оны' MM 'сарын' d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x785d, new [] { new[] { "d/M/yyyy", "d/M/yy", "dd/MM/yy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd,MMMM dd,yyyy", "MMMM dd,yyyy", "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM,yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x785f, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd", "dd.MMM.yyyy" }, new[] { "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy", "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x7c04, new [] { new[] { "d/M/yyyy", "d/M/yy", "dd/MM/yy", "yy/M/d", "yy/MM/dd", "yyyy/M/d", "yyyy/MM/dd", "yyyy-MM-dd" }, new[] { "yyyy'年'M'月'd'日'", "yyyy'年'MM'月'dd'日'", "yyyy年MMMd日", "yyyy年MMMd日, dddd" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "yyyy'年'M'月'", "yyyy'年'MMM", "yyyy'年'MMMM", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "M月d日" } } },
+                       { 0x7c14, new [] { new[] { "dd.MM.yyyy", "d. MMM yyyy" }, new[] { "dddd d. MMMM yyyy", "d. MMMM yyyy" }, new[] { "HH.mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { "." }, new[] { "d.MMMM." } } },
+                       { 0x7c1a, new [] { new[] { "d.M.yyyy.", "dd.MM.yyyy." }, new[] { "dddd, dd. MMMM yyyy.", "dd. MMMM yyyy." }, new[] { "HH.mm" }, new[] { "HH.mm.ss" }, new[] { "MMMM yyyy." }, new[] { "." }, new[] { "." }, new[] { "d. MMMM" } } },
+                       { 0x7c28, new [] { new[] { "dd.MM.yyyy", "dd.MM.yy", "d.M.yy", "dd-MM-yyyy", "dd/MM/yy" }, new[] { "d MMMM yyyy' с.'", "dd MMMM yyyy' с.'" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "." }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x7c2e, new [] { new[] { "d. M. yyyy", "d. M. yy", "dd.MM.yyyy", "dd.MM.yy", "yyyy-MM-dd" }, new[] { "dddd, d. MMMM yyyy", "d. MMMM yyyy", "d. M. yyyy" }, new[] { "HH:mm", "H:mm", "H:mm' góź.'", "'zeger 'H:mm" }, new[] { "HH:mm:ss", "H:mm:ss' góź.'", "'zeger 'H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { ". " }, new[] { ":" }, new[] { "d. MMMM" } } },
+                       { 0x7c3b, new [] { new[] { "yyyy-MM-dd", "yy-MM-dd" }, new[] { "dddd, MMMM d'. b. 'yyyy", "MMMM d'. b. 'yyyy" }, new[] { "HH:mm", "H:mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "MMMM d'. b.'" } } },
+                       { 0x7c43, new [] { new[] { "yyyy/MM/dd", "yyyy MMM d" }, new[] { "dddd, yyyy MMMM dd", "yyyy MMMM d" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "yyyy MMMM" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x7c46, new [] { new[] { "dd-MM-yy", "d-M-yy", "d.M.yy", "dd-MM-yyyy", "yyyy-MM-dd" }, new[] { "dd MMMM yyyy dddd", "d MMMM yyyy" }, new[] { "h.mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h.mm.ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { "." }, new[] { "dd MMMM" } } },
+                       { 0x7c50, new [] { new[] { "yyyy/M/d", "yyyy-M-d", "yyyy.M.d", "yyyy.MM.dd", "yyyy-MM-dd", "yyyy/MM/dd", "yy-M-d", "yy/M/d", "yy.M.d", "yy/MM/dd" }, new[] { "yyyyᠣᠨ MMMM dᠡᠳᠦᠷ᠂ dddd", "yyyyᠣᠨ MMMM dᠡᠳᠦᠷ" }, new[] { "H:mm" }, new[] { "H:mm:ss" }, new[] { "yyyyᠣᠨ MMMM", "yyyy.M" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM dᠡᠳᠦᠷ" } } },
+                       { 0x7c59, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "yyyy-MM-dd" }, new[] { "dddd, dd MMMM, yyyy", "dd MMMM yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x7c5c, new [] { new[] { "M/d/yyyy", "M/d/yy", "MM/dd/yy", "MM/dd/yyyy", "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, MMMM dd,yyyy", "MMMM dd,yyyy", "dddd, dd MMMM, yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "H:mm", "HH:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x7c5d, new [] { new[] { "d/MM/yyyy", "d/M/yy", "yy-MM-dd", "dd/MM/yyyy", "yy-MM-dd", "yyyy-MM-dd", "dd-MMM-yy" }, new[] { "dddd, dd MMMM, yyyy", "ddd, MMMM dd,yyyy", "MMMM dd,yyyy", "dd MMMM, yyyy" }, new[] { "h:mm tt", "hh:mm tt", "HH:mm", "H:mm" }, new[] { "h:mm:ss tt", "hh:mm:ss tt", "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x7c5f, new [] { new[] { "dd-MM-yyyy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dd MMMM, yyyy", "dddd, dd MMMM, yyyy" }, new[] { "H:mm", "HH:mm" }, new[] { "H:mm:ss", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "-" }, new[] { ":" }, new[] { "d MMMM" } } },
+                       { 0x7c67, new [] { new[] { "dd/MM/yyyy", "dd/MM/yy", "dd.MM.yy", "dd-MM-yy", "yyyy-MM-dd" }, new[] { "dddd d MMMM yyyy", "d MMM yy", "d MMMM yyyy" }, new[] { "HH:mm", "H:mm", "HH.mm", "HH' h 'mm" }, new[] { "HH:mm:ss", "H:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "dd MMMM" } } },
+                       { 0x7c68, new [] { new[] { "d/M/yyyy", "d MMM, yyyy" }, new[] { "dddd, d MMMM, yyyy", "d MMMM, yyyy" }, new[] { "HH:mm" }, new[] { "HH:mm:ss" }, new[] { "MMMM yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "MMMM d" } } },
+                       { 0x7c86, new [] { new[] { "dd/MM/yyyy", "d/MM/yyyy" }, new[] { "dddd, dd' rech 'MMMM' rech 'yyyy", "dddd d' de 'MMMM' de 'yyyy", "d' de 'MMMM' de 'yyyy" }, new[] { "h:mm tt", "HH:mm" }, new[] { "h:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM' rech 'yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d' rech 'MMMM" } } },
+                       { 0x7c92, new [] { new[] { "yyyy/MM/dd" }, new[] { "dddd, dd MMMM, yyyy" }, new[] { "hh:mm tt", "HH:mm" }, new[] { "hh:mm:ss tt", "HH:mm:ss" }, new[] { "MMMM, yyyy" }, new[] { "/" }, new[] { ":" }, new[] { "d MMMM" } } },
                };
 
                static readonly Dictionary<int, string[][]> GroupSizes = new Dictionary<int, string[][]> {
@@ -1880,15 +1501,7 @@ namespace Mono.Tools.LocaleBuilder
 
                public static void FillValues (int lcid, CultureInfoEntry ci)
                {
-                       var entry = DateTime[lcid];
                        var dfe = ci.DateTimeFormatEntry;
-                       dfe.DateSeparator = entry[0];
-                       dfe.LongDatePattern = entry[1];
-                       dfe.LongTimePattern = entry[2];
-                       dfe.ShortDatePattern = entry[3];
-                       dfe.ShortTimePattern = entry[4];
-                       dfe.MonthDayPattern = entry[5];
-                       dfe.YearMonthPattern = entry[6];
 
                        var entry_dt = DateTime2[lcid];
                        entry_dt[0].CopyTo (dfe.ShortDatePatterns, 0);
@@ -1896,6 +1509,9 @@ namespace Mono.Tools.LocaleBuilder
                        entry_dt[2].CopyTo (dfe.ShortTimePatterns, 0);
                        entry_dt[3].CopyTo (dfe.LongTimePatterns, 0);
                        entry_dt[4].CopyTo (dfe.YearMonthPatterns, 0);
+                       dfe.DateSeparator = entry_dt[5][0];
+                       dfe.TimeSeparator = entry_dt[6][0];
+                       dfe.MonthDayPattern = entry_dt[7][0];
 
                        var entry_te = Text[lcid];
                        var te = ci.TextInfoEntry;
index 71555cecf19cb644d73abd4909edb5fdf349616d..1a9a35eb18ae5136db406fb8c8770e462c39d4e3 100644 (file)
@@ -7,11 +7,11 @@
 
 /* The architecture this is running on */
 #if defined(_M_IA64)
-#define ARCHITECTURE "ia64"
+#define MONO_ARCHITECTURE "ia64"
 #elif defined(_M_AMD64)
-#define ARCHITECTURE "amd64"
+#define MONO_ARCHITECTURE "amd64"
 #elif defined(_M_IX86)
-#define ARCHITECTURE "x86"
+#define MONO_ARCHITECTURE "x86"
 #else
 #error Unknown architecture
 #endif
@@ -67,9 +67,6 @@
 /* Disable reflection emit support */
 /* #undef DISABLE_REFLECTION_EMIT */
 
-/* Disable inter-process shared handles */
-/* #undef DISABLE_SHARED_HANDLES */
-
 /* Disable advanced SSA JIT optimizations */
 /* #undef DISABLE_SSA */
 
 /* #undef USE_MONO_MUTEX */
 
 /* Version number of package */
-#define VERSION "4.1.0"
+#define VERSION "#MONO_VERSION#"
 #endif